From c1e189916b163f049cd4d9f43682f6bc37092458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=99=93=E9=98=B3?= <13879686+ma-xiaoyang111@user.noreply.gitee.com> Date: Wed, 9 Jul 2025 09:30:58 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feature:=20=E5=B0=86=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E7=BB=84=E7=BB=84=E4=BB=B6tags=E9=9B=86=E6=88=90=E5=88=B0?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=AE=B1=E4=B8=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- packages/designer/src/app-providers.ts | 4 ++- .../form-designer/form-designer.component.tsx | 5 ++- .../components/types/toolbox/pc-toolbox.json | 34 +++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3369ab02aee..80c88b15655 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "fs-extra": "^11.2.0", "happy-dom": "^14.12.0", "highlight.js": "^11.9.0", - "husky": "^8.0.0", + "husky": "^9.0.0", "inquirer": "^9.1.1", "intersection-observer": "^0.12.2", "jest": "^29.0.0", diff --git a/packages/designer/src/app-providers.ts b/packages/designer/src/app-providers.ts index c621b690c56..c8bab6d241a 100644 --- a/packages/designer/src/app-providers.ts +++ b/packages/designer/src/app-providers.ts @@ -1,12 +1,14 @@ import { FLoadingService, FTooltipDirective, FMessageBoxService, F_MODAL_SERVICE_TOKEN, FModalService, LookupSchemaRepositoryToken, FieldSelectorRepositoryToken, F_NOTIFY_SERVICE_TOKEN, FNotifyService, ControllerSchemaRepositorySymbol, FormSchemaRepositorySymbol } from "@farris/ui-vue/components"; import { App } from "vue"; +import { useDesignerContext } from "./components/composition/designer-context/use-designer-context"; +const designerContext = useDesignerContext(); export default { install(app: App): void { app.provide(F_MODAL_SERVICE_TOKEN, new FModalService(app)); app.provide('FLoadingService', FLoadingService); - + app.provide('designerContext', designerContext); // const metadataPath = metadataService.getMetadataPath(); // app.provide(MetadataPathToken, metadataPath); diff --git a/packages/designer/src/components/components/form-designer/form-designer.component.tsx b/packages/designer/src/components/components/form-designer/form-designer.component.tsx index ba93c316964..8933c61a0d4 100644 --- a/packages/designer/src/components/components/form-designer/form-designer.component.tsx +++ b/packages/designer/src/components/components/form-designer/form-designer.component.tsx @@ -7,6 +7,7 @@ import MonacoEditor from '../monaco-editor/monaco-editor.component'; import FEntityTreeView from '../entity-tree-view/components/entity-tree-view.component'; import FCustomClassEditor from './components/custom-class-editor/custom-class-editor.component'; import modulePropertyConfig from '../../types/form-property-config.json'; +import { UseDesignerContext } from "../../types/designer-context"; export default defineComponent({ name: 'FFormDesigner', @@ -24,6 +25,8 @@ export default defineComponent({ const monacoEditorRef = ref(); const customClassEditorRef = ref(); const designerHostService = inject('designer-host-service') as DesignerHost; + const designerContext = inject('designerContext') as UseDesignerContext; + const { toolboxItems, componentsToRegister, designerMode } = designerContext; function onCanvasInitialized(dragula: any) { @@ -190,7 +193,7 @@ export default defineComponent({ - + diff --git a/packages/designer/src/components/types/toolbox/pc-toolbox.json b/packages/designer/src/components/types/toolbox/pc-toolbox.json index 75acc33f0a4..f4f860b591d 100644 --- a/packages/designer/src/components/types/toolbox/pc-toolbox.json +++ b/packages/designer/src/components/types/toolbox/pc-toolbox.json @@ -129,6 +129,32 @@ "name": "外部容器", "category": "container", "icon":"content-container" + }, + { + "id":"Tag", + "type":"tags", + "name":"标签", + "category":"container", + "icon":"tag" + } + ] + }, + { + "type": "form", + "name": "表单类控件", + "items": [ + { + "id": "Input", + "type": "input", + "name": "输入框", + "category": "form" + + }, + { + "id":"Rate", + "type":"rate", + "name":"评分", + "category":"form" } ] }, @@ -147,7 +173,15 @@ "type": "page-header", "name": "页头", "category": "container" + }, + { + "id": "Step", + "type": "step", + "name": "步骤条", + "category": "container", + "icon": "step" } + ] }, { -- Gitee From 78a630dd7732419a611124ecb54ab8dbab7865d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=99=93=E9=98=B3?= <13879686+ma-xiaoyang111@user.noreply.gitee.com> Date: Wed, 9 Jul 2025 10:00:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feature:=20=E5=8F=AF=E4=BB=A5=E5=9C=A8?= =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E5=B1=9E=E6=80=A7=E6=A0=8F=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E7=9A=84=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../property-config/step.property-config.ts | 66 ++ .../src/designer/tags.design.component.tsx | 5 +- .../tags/src/designer/use-designer-rules.ts | 43 ++ .../property-config/tags.proprety-config.ts | 110 ++++ .../tags/src/schema/schema-resolver.ts | 4 + .../tags/src/schema/tags.schema.json | 15 + .../ui-vue/components/tags/src/tags.props.ts | 4 +- pnpm-lock.yaml | 603 ++++++++++++------ 8 files changed, 646 insertions(+), 204 deletions(-) create mode 100644 packages/ui-vue/components/step/src/property-config/step.property-config.ts create mode 100644 packages/ui-vue/components/tags/src/designer/use-designer-rules.ts create mode 100644 packages/ui-vue/components/tags/src/property-config/tags.proprety-config.ts diff --git a/packages/ui-vue/components/step/src/property-config/step.property-config.ts b/packages/ui-vue/components/step/src/property-config/step.property-config.ts new file mode 100644 index 00000000000..8df3d61df8c --- /dev/null +++ b/packages/ui-vue/components/step/src/property-config/step.property-config.ts @@ -0,0 +1,66 @@ +import { BaseControlProperty } from "../../../property-panel/src/composition/entity/base-property"; + +export class TagProperty extends BaseControlProperty { + constructor(componentId: string, designerHostService: any) { + super(componentId, designerHostService); + } + + getPropertyConfig(propertyData: any) { + // 基本信息(假设由基类提供,这里可以不重复定义) + this.propertyConfig.categories['basic'] = this.getBasicPropConfig(propertyData); + + // 外观配置(自定义) + this.propertyConfig.categories['appearance'] = this.getAppearanceProperties(propertyData); + + // (可选)如果需要模板配置,可以仿照 PageHeader 添加 getTemplateConfig + // 但 Tag 通常不需要复杂模板,这里暂不实现 + + // 行为配置(假设由基类提供,如事件绑定等) + this.propertyConfig.categories['behavior'] = this.getBehaviorConfig(propertyData); + + return this.propertyConfig; + } + + /** + * 定义“外观”分类下的属性 + */ + private getAppearanceProperties(propertyData: any) { + return { + title: '外观', + description: '配置标签的外观样式', + properties: { + text: { + title: '标签文字', + type: 'string', + description: '标签显示的文本内容', + defaultValue: '标签' // 默认值 + }, + color: { + title: '标签颜色', + type: 'string', + description: '标签的背景颜色', + defaultValue: 'blue' // 默认颜色 + }, + size: { + title: '标签尺寸', + type: 'string', + description: '标签的大小(如 small / medium / large)', + defaultValue: 'medium' // 默认尺寸 + }, + closable: { + title: '是否可关闭', + type: 'boolean', + description: '是否显示关闭按钮', + defaultValue: false // 默认不可关闭 + } + }, + setPropertyRelates(changeObject, prop) { + // 可以在这里定义属性变更时的联动逻辑 + // 例如:修改颜色后需要刷新控件样式 + if (changeObject && changeObject.propertyID === 'color') { + changeObject.needRefreshStyle = true; // 假设基类支持样式刷新标记 + } + } + }; + } +} \ No newline at end of file diff --git a/packages/ui-vue/components/tags/src/designer/tags.design.component.tsx b/packages/ui-vue/components/tags/src/designer/tags.design.component.tsx index fc16478c75b..dad1756390b 100644 --- a/packages/ui-vue/components/tags/src/designer/tags.design.component.tsx +++ b/packages/ui-vue/components/tags/src/designer/tags.design.component.tsx @@ -1,6 +1,7 @@ import { computed, defineComponent, inject, nextTick, onMounted, ref, SetupContext, watch } from 'vue'; import { Tag, TagsProps, tagsProps } from '../tags.props'; import { useDraggable } from '../composition/use-draggable'; +import { useTagDesignerRules } from '../designer/use-designer-rules'; import { TagsInnerElement } from '../composition/types'; import { useDesignerComponent } from '../../../designer-canvas/src/composition/function/use-designer-component'; import { DesignerItemContext } from '../../../designer-canvas/src/types'; @@ -31,8 +32,10 @@ export default defineComponent({ const inputBoxRef = ref(); const elementRef = ref(); + const designerHostService = inject('designer-host-service'); const designItemContext = inject('design-item-context') as DesignerItemContext; - const componentInstance = useDesignerComponent(elementRef, designItemContext); + const designerRulesComposition = useTagDesignerRules(designItemContext.schema, designerHostService); + const componentInstance = useDesignerComponent(elementRef, designItemContext,designerRulesComposition); onMounted(() => { elementRef.value.componentInstance = componentInstance; diff --git a/packages/ui-vue/components/tags/src/designer/use-designer-rules.ts b/packages/ui-vue/components/tags/src/designer/use-designer-rules.ts new file mode 100644 index 00000000000..75c497a283c --- /dev/null +++ b/packages/ui-vue/components/tags/src/designer/use-designer-rules.ts @@ -0,0 +1,43 @@ +import { DraggingResolveContext, UseDesignerRules } from "../../../designer-canvas/src/composition/types"; +import { ComponentSchema } from "../../../designer-canvas/src/types"; +import { TagProperty } from '../property-config/tags.proprety-config'; // 假设存在这个类 + +export function useTagDesignerRules(schema: ComponentSchema, designerHostService): UseDesignerRules { + /** + * 判断是否可以接收拖拽新增的子级控件 + */ + function canAccepts(draggingContext: DraggingResolveContext): boolean { + // 假设 Tag 组件可以接受子组件(比如可以嵌套其他简单组件) + return false; + } + + function checkCanDeleteComponent() { + // Tag 组件可以被删除 + return true; + } + + function checkCanMoveComponent() { + // Tag 组件可以被移动 + return true; + } + + function hideNestedPaddingInDesginerView() { + // 不隐藏嵌套内边距 + return false; + } + + // 构造属性配置方法 + function getPropsConfig(componentId: string) { + const tagProp = new TagProperty(componentId, designerHostService); + + return tagProp.getPropertyConfig(schema); + } + + return { + canAccepts, + hideNestedPaddingInDesginerView, + getPropsConfig, + checkCanDeleteComponent, + checkCanMoveComponent + }; +} \ No newline at end of file diff --git a/packages/ui-vue/components/tags/src/property-config/tags.proprety-config.ts b/packages/ui-vue/components/tags/src/property-config/tags.proprety-config.ts new file mode 100644 index 00000000000..139b39c9a52 --- /dev/null +++ b/packages/ui-vue/components/tags/src/property-config/tags.proprety-config.ts @@ -0,0 +1,110 @@ + +import { BaseControlProperty } from "../../../property-panel/src/composition/entity/base-property"; + + +export class TagProperty extends BaseControlProperty { + constructor(componentId: string, designerHostService: any) { + super(componentId, designerHostService); + } + + getPropertyConfig(propertyData: any) { + // 基本信息(假设由基类提供,这里可以不重复定义) + this.propertyConfig.categories['basic'] = this.getBasicPropConfig(propertyData); + + // 外观配置(自定义) + this.propertyConfig.categories['appearance'] = this.getAppearanceProperties(propertyData); + + // (可选)如果需要模板配置,可以仿照 PageHeader 添加 getTemplateConfig + // 但 Tag 通常不需要复杂模板,这里暂不实现 + + // 行为配置(假设由基类提供,如事件绑定等) + this.propertyConfig.categories['behavior'] = this.getBehaviorConfig(propertyData); + + return this.propertyConfig; + } + + /** + * 定义“外观”分类下的属性 + */ + private getAppearanceProperties(propertyData: any) { + return { + title: '外观', + description: '配置标签的外观样式', + properties: { + data: { + title: '标签文字', + type: "array", + description: '标签显示的文本内容', + editor: { + columns:[ + { field : 'id', title: '标签ID', dataType: 'string'}, + { field: 'name', title: '标签名称', dataType: 'string' }, + + ], + type:'item-collection-editor', + valueField: 'id', + nameField: 'name', + requiredFields:['id','name'], + uniqueFields: ['id','name'] + + }, + defaultValue: [{ name: '示例1' },] // 正确的默认值(数组) // 默认值 + }, + tagType: { + title: '颜色类型', + type: 'select', + editor: { + type: 'combo-list', + textField: 'name', + valueField: 'value', + idField: 'value', + editable: false, + data: [ + { value: 'default', name: '默认' }, + { value: 'warning', name: '警告' }, + { value: 'success', name: '成功' }, + { value: 'info', name: '消息' }, + { value: 'error', name: '异常' } + ] + }, + defaultValue: 'default' + }, + tagStyle: { + title: '显示类型', + type: 'select', + editor: { + type: 'combo-list', + textField: 'name', + valueField: 'value', + idField: 'value', + editable: false, + data: [ + { value: 'default', name: '默认' }, + { value: 'capsule', name: '胶囊体' } + ] + }, + defaultValue: 'default' + }, + + }, + setPropertyRelates(changeObject, prop) { + // 可以在这里定义属性变更时的联动逻辑 + // 例如:修改颜色后需要刷新控件样式 + switch (changeObject && changeObject.propertyID) { + case 'data': { + changeObject.needRefreshControlTree = true; + break; + } + case 'tagType': { + changeObject.needRefreshControlTree = true; + break; + } + case 'tagStyle':{ + changeObject.needRefreshControlTree = true; + break; + } + } + } + }; + } +} \ No newline at end of file diff --git a/packages/ui-vue/components/tags/src/schema/schema-resolver.ts b/packages/ui-vue/components/tags/src/schema/schema-resolver.ts index b02bdf93eec..d2c54a0bb72 100644 --- a/packages/ui-vue/components/tags/src/schema/schema-resolver.ts +++ b/packages/ui-vue/components/tags/src/schema/schema-resolver.ts @@ -1,5 +1,9 @@ import { DynamicResolver } from "../../../dynamic-resolver"; export function schemaResolver(resolver: DynamicResolver, schema: Record, context: Record): Record { + schema.data = [{ + name: '示例1' + } + ] return schema; } diff --git a/packages/ui-vue/components/tags/src/schema/tags.schema.json b/packages/ui-vue/components/tags/src/schema/tags.schema.json index ee7db4d8ba1..f162aec89f6 100644 --- a/packages/ui-vue/components/tags/src/schema/tags.schema.json +++ b/packages/ui-vue/components/tags/src/schema/tags.schema.json @@ -65,6 +65,21 @@ "description": "", "type": "boolean", "default": true + }, + "tagType": { + "description": "", + "type": "string", + "default": "default" + }, + "data": { + "description": "", + "type": "array", + "default": [] + }, + "tagStyle": { + "description": "", + "type": "string", + "default": "default" } }, "required": [ diff --git a/packages/ui-vue/components/tags/src/tags.props.ts b/packages/ui-vue/components/tags/src/tags.props.ts index 04dcdb91d4b..3a173fca1dc 100644 --- a/packages/ui-vue/components/tags/src/tags.props.ts +++ b/packages/ui-vue/components/tags/src/tags.props.ts @@ -2,7 +2,7 @@ import { ExtractPropTypes, PropType } from 'vue'; import { schemaResolver } from './schema/schema-resolver'; import { schemaMapper } from './schema/schema-mapper'; -import propertyConfig from './property-config/tags.property-config.json'; +// import propertyConfig from './property-config/tags.proprety-config'; import { createPropsResolver } from '../../dynamic-resolver/src/props-resolver'; import tagsSchema from './schema/tags.schema.json'; @@ -39,4 +39,4 @@ export const tagsProps = { } as Record; export type TagsProps = ExtractPropTypes; -export const propsResolver = createPropsResolver(tagsProps, tagsSchema, schemaMapper, schemaResolver, propertyConfig); +export const propsResolver = createPropsResolver(tagsProps, tagsSchema, schemaMapper, schemaResolver); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ece67acf76..d732b1293a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,7 +287,7 @@ importers: version: 3.9.1(@types/node@18.19.57)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.21.5 - version: 0.21.5(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) + version: 0.21.5(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.5.12(typescript@5.6.3)) @@ -473,6 +473,178 @@ importers: specifier: ^1.2.0 version: 1.8.27(typescript@4.9.5) + packages/charts-vue: + dependencies: + '@docsearch/js': + specifier: 3.6.0 + version: 3.6.0(@algolia/client-search@4.24.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(search-insights@2.17.2) + '@types/lodash-es': + specifier: ^4.17.4 + version: 4.17.12 + '@vue/shared': + specifier: ^3.2.0 + version: 3.5.12 + '@vueuse/core': + specifier: ^9.2.0 + version: 9.2.0(vue@3.5.12(typescript@5.6.3)) + async-validator: + specifier: ^4.2.0 + version: 4.2.5 + bignumber.js: + specifier: ^9.1.2 + version: 9.1.2 + date-fns: + specifier: ^3.6.0 + version: 3.6.0 + echarts: + specifier: ^5.5.0 + version: 5.5.1 + jsonp: + specifier: ^0.2.1 + version: 0.2.1 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + lodash-es: + specifier: ^4.17.20 + version: 4.17.21 + rxjs: + specifier: ^7.4.0 + version: 7.8.1 + vite-plugin-dts: + specifier: ^2.1.0 + version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) + vue: + specifier: ^3.2.37 + version: 3.5.12(typescript@5.6.3) + vue3-grid-layout: + specifier: ^1.0.0 + version: 1.0.0(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)(typescript@5.6.3) + devDependencies: + '@babel/parser': + specifier: ^7.19.0 + version: 7.25.8 + '@babel/preset-env': + specifier: ^7.19.0 + version: 7.25.8(@babel/core@7.25.8) + '@babel/preset-typescript': + specifier: ^7.18.0 + version: 7.25.7(@babel/core@7.25.8) + '@babel/traverse': + specifier: ^7.19.0 + version: 7.25.7 + '@commitlint/cli': + specifier: ^17.1.0 + version: 17.8.1 + '@commitlint/config-conventional': + specifier: ^17.1.0 + version: 17.8.1 + '@farris/cli': + specifier: workspace:* + version: link:../cli + '@farris/designer-dragula': + specifier: 0.0.5 + version: 0.0.5 + '@testing-library/vue': + specifier: ^7.0.0 + version: 7.0.0(@vue/compiler-sfc@3.5.12)(vue@3.5.12(typescript@5.6.3)) + '@types/jest': + specifier: ^26.0.24 + version: 26.0.24 + '@types/jsonp': + specifier: ^0.2.3 + version: 0.2.3 + '@types/lodash.debounce': + specifier: ^4.0.7 + version: 4.0.9 + '@typescript-eslint/eslint-plugin': + specifier: ^7.15.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.19.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^7.15.0 + version: 7.18.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.6.3) + '@vitejs/plugin-vue': + specifier: ^4.2.3 + version: 4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) + '@vitejs/plugin-vue-jsx': + specifier: ^3.0.1 + version: 3.1.0(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) + '@vue/babel-plugin-jsx': + specifier: ^1.1.1 + version: 1.2.5(@babel/core@7.25.8) + '@vue/compiler-sfc': + specifier: ^3.2.0 + version: 3.5.12 + '@vue/test-utils': + specifier: ^2.0.0 + version: 2.4.6 + '@vuedx/typecheck': + specifier: ^0.7.5 + version: 0.7.6 + '@vuedx/typescript-plugin-vue': + specifier: ^0.7.5 + version: 0.7.6 + babel-jest: + specifier: ^29.0.3 + version: 29.7.0(@babel/core@7.25.8) + chalk: + specifier: ^5.0.0 + version: 5.3.0 + commander: + specifier: ^9.4.0 + version: 9.5.0 + conventional-changelog-cli: + specifier: ^2.2.2 + version: 2.2.2 + happy-dom: + specifier: ^8.9.0 + version: 8.9.0 + inquirer: + specifier: ^9.1.1 + version: 9.3.7 + jest: + specifier: ^29.0.0 + version: 29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.6.3)) + ora: + specifier: ^6.1.2 + version: 6.3.1 + patch-vue-directive-ssr: + specifier: ^0.0.1 + version: 0.0.1 + sass: + specifier: ^1.32.2 + version: 1.80.3 + shelljs: + specifier: ^0.8.4 + version: 0.8.5 + typescript: + specifier: ^5.5.0 + version: 5.6.3 + vite: + specifier: ^5.3.3 + version: 5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) + vite-plugin-banner: + specifier: ^0.8.0 + version: 0.8.0 + vite-plugin-md: + specifier: ^0.21.5 + version: 0.21.5(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) + vite-svg-loader: + specifier: ^5.1.0 + version: 5.1.0(vue@3.5.12(typescript@5.6.3)) + vitepress: + specifier: ^1.0.0-alpha.8 + version: 1.0.0-alpha.10(@algolia/client-search@4.24.0)(@types/node@20.5.1)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(sass@1.80.3)(search-insights@2.17.2)(terser@5.36.0)(typescript@5.6.3) + vitepress-theme-demoblock: + specifier: 1.4.2 + version: 1.4.2(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(sass@1.80.3)(typescript@5.6.3) + vitest: + specifier: ^1.4.0 + version: 1.6.0(@types/node@20.5.1)(happy-dom@8.9.0)(jsdom@20.0.3)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) + vue-tsc: + specifier: ^2.0.0 + version: 2.1.6(typescript@5.6.3) + packages/cli: dependencies: '@types/inquirer': @@ -668,7 +840,7 @@ importers: version: 3.9.1(@types/node@20.5.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.21.5 - version: 0.21.5(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) + version: 0.21.5(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.5.12(typescript@5.6.3)) @@ -901,7 +1073,7 @@ importers: version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.20.0 - version: 0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) + version: 0.20.6(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) vite-svg-loader: specifier: ^4.0.0 version: 4.0.0 @@ -1079,7 +1251,7 @@ importers: version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.20.0 - version: 0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) + version: 0.20.6(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) vite-svg-loader: specifier: ^4.0.0 version: 4.0.0 @@ -1309,7 +1481,7 @@ importers: version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.20.0 - version: 0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) + version: 0.20.6(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) vite-svg-loader: specifier: ^4.0.0 version: 4.0.0 @@ -1530,7 +1702,7 @@ importers: version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.20.0 - version: 0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) + version: 0.20.6(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) vite-svg-loader: specifier: ^4.0.0 version: 4.0.0 @@ -1594,16 +1766,7 @@ importers: version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.19.0(jiti@1.21.6))(typescript@4.9.5))(eslint@9.19.0(jiti@1.21.6))(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^7.15.0 - version: 7.18.0(eslint@8.57.1)(typescript@4.9.5) - '@vitejs/plugin-vue': - specifier: ^4.0.0 - version: 4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)) - '@vitejs/plugin-vue-jsx': - specifier: ^3.0.0 - version: 3.1.0(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)) - '@vue/babel-plugin-jsx': - specifier: ^1.1.1 - version: 1.2.5(@babel/core@7.25.8) + version: 7.18.0(eslint@9.19.0(jiti@1.21.6))(typescript@4.9.5) '@vue/compiler-sfc': specifier: ^3.2.0 version: 3.5.12 @@ -1631,12 +1794,6 @@ importers: jest: specifier: ^29.0.0 version: 29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@4.9.5)) - ora: - specifier: ^6.1.2 - version: 6.3.1 - patch-vue-directive-ssr: - specifier: ^0.0.1 - version: 0.0.1 prettier: specifier: ^3.2.5 version: 3.5.3 @@ -1646,27 +1803,6 @@ importers: typescript: specifier: ^4.6.4 version: 4.9.5 - vite: - specifier: ^4.1.4 - version: 4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0) - vite-plugin-banner: - specifier: ^0.8.0 - version: 0.8.0 - vite-plugin-dts: - specifier: ^2.1.0 - version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) - vite-plugin-md: - specifier: ^0.20.0 - version: 0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) - vite-svg-loader: - specifier: ^4.0.0 - version: 4.0.0 - vitepress: - specifier: 1.0.0-alpha.8 - version: 1.0.0-alpha.8(@algolia/client-search@4.24.0)(@types/node@20.5.1)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(sass@1.80.3)(search-insights@2.17.2)(terser@5.36.0)(typescript@4.9.5) - vitepress-theme-demoblock: - specifier: 1.4.2 - version: 1.4.2(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(sass@1.80.3)(typescript@4.9.5) vitest: specifier: ^0.29.2 version: 0.29.8(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) @@ -1920,7 +2056,7 @@ importers: version: 2.3.0(@types/node@20.5.1)(rollup@4.24.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) vite-plugin-md: specifier: ^0.20.0 - version: 0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) + version: 0.20.6(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) vite-svg-loader: specifier: ^4.0.0 version: 4.0.0 @@ -2024,6 +2160,9 @@ importers: '@docsearch/js': specifier: 3.6.0 version: 3.6.0(@algolia/client-search@4.24.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(search-insights@2.17.2) + '@farris/designer-dragula': + specifier: 0.0.5 + version: 0.0.5 '@monaco-editor/loader': specifier: ^1.4.0 version: 1.4.0(monaco-editor@0.52.2) @@ -2088,9 +2227,6 @@ importers: '@farris/cli': specifier: workspace:* version: link:../cli - '@farris/designer-dragula': - specifier: 0.0.5 - version: 0.0.5 '@testing-library/vue': specifier: ^7.0.0 version: 7.0.0(@vue/compiler-sfc@3.5.12)(vue@3.5.12(typescript@5.6.3)) @@ -2174,7 +2310,7 @@ importers: version: 0.8.0 vite-plugin-md: specifier: ^0.21.5 - version: 0.21.5(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) + version: 0.21.5(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.5.12(typescript@5.6.3)) @@ -3685,9 +3821,6 @@ packages: '@farris/devkit-vue@0.0.5': resolution: {integrity: sha512-YFBsFNK63FErbqbIinWCJEgXvosySNCExp75tgila3VSDA0S2zRCXjgK8f3T0dStOFYXgGkHRIeW3xwZ64XmGQ==} - '@farris/mobile-ui-vue@0.0.1-beta.3': - resolution: {integrity: sha512-499FnKEf5OwEX+5w++AEi7KqpCASNJ0aVoLO6TOW82Rin9UKh8u36+4GdDwLjQiqW/qjoYXFItP21dZXcA/kCA==} - '@farris/ui-vue@1.5.3': resolution: {integrity: sha512-36IAUj2KLd4kLtzMYRZFx/qWTeXueefMfhf+pmMWIt/I8Ni1X+X1T6EkqaBUYA3S5ltnWf4gHG/Z2YePfgHKWg==} @@ -3741,6 +3874,79 @@ packages: resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} engines: {node: '>=18'} + '@interactjs/actions@1.10.27': + resolution: {integrity: sha512-FCRg5KwB+stkPcAMx/Cn0fgGP6p4LyMX9S/Upcn/W+hpYme31bPi54PCqmOebzz6myTthN6zFf9jMyLOqtI/gg==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/auto-scroll@1.10.27': + resolution: {integrity: sha512-zPg5TnVsZv+9Hnt4qnbxLvBMf+rIWHkoJVoSETEbLNaj90C8hIyr0pVwukSUySSgDhCgQ7np0f3pg4INLq9beQ==} + peerDependencies: + '@interactjs/utils': 1.10.27 + + '@interactjs/auto-start@1.10.27': + resolution: {integrity: sha512-ECLBO/nxmaF1knncJKIE5F7la3KKRgEkn0Cu2JTPOYj9xy/LpfYElo3wkRHsodgOqF651nR70GK2/IzPR2lO9A==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/core@1.10.27': + resolution: {integrity: sha512-SliUr/3ZbLAdED8LokzYzWHWMdCB5Cq+UnpXuRy+BIod1j97m4IUFf/D1iIKUBBjBcucgXbz28z96WnenVCB7Q==} + peerDependencies: + '@interactjs/utils': 1.10.27 + + '@interactjs/dev-tools@1.10.27': + resolution: {integrity: sha512-YolmBwRaKH1gWbvyLeV3m5QSwtD38lOZnCBA87PCAlcd9PQAC2gb03fEPeEyD336bE20oLB8f0WZt4Wre+afiw==} + peerDependencies: + '@interactjs/modifiers': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/inertia@1.10.27': + resolution: {integrity: sha512-S/SVj/M0D+wWWPVXHcXN/YUWOK51LFJsEA+CTgVnFhlSU04+1FUvNLwilCZcHgECu1RJxZNKDwZysDATg+r8jQ==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/modifiers': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/interact@1.10.27': + resolution: {integrity: sha512-XdH3A2UUzjEFGGJgFuJlhiz99tE8jB8xNh/DmnoMuL6uOQPxNA+sWRnzEVjG0+zY2P3/dbhEpi4Cn3FLPzydwA==} + + '@interactjs/interactjs@1.10.27': + resolution: {integrity: sha512-UwhfUZMZVXUY72efPABuKSBz1sUY+r+49v8t6Ku9o5Jq76AKg9mwmdGszIlOn3ppnFDDjvtzK/8TL+Sbd0EQEA==} + + '@interactjs/modifiers@1.10.27': + resolution: {integrity: sha512-ei/qfoQ+9/8k6WzNzdNqHI6cWkIV576N4Ap16r5CoqOWwhA6Xzj3OMHf1g0t1O4eSq2HdJsVJn3eLNfw9HsbeQ==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/offset@1.10.27': + resolution: {integrity: sha512-AezsLiuK+Qv4jXdYuRa65HJ2pMFMZPlqiAep6ZRLwhP9HE7O75c0EAm+gfx+dpPrHNHs6J9LaiKSZl+B+A2qAw==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/pointer-events@1.10.27': + resolution: {integrity: sha512-Yo5SS6PhWfC93gHNxnwwW0wvebo5hSYJKGaSnAHO4f9Lh25yibecMnmPBmiEfWVcdMboK/kXrme43mHQaRegVg==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/reflow@1.10.27': + resolution: {integrity: sha512-Msm0QdYFr40oSsPFxyCR3dHN/pQx34k7QSkdN1uIsUn/drrm+YSFvrvVOu99DFOwr7gTThr5vNe06Sz4vubTSA==} + peerDependencies: + '@interactjs/core': 1.10.27 + '@interactjs/utils': 1.10.27 + + '@interactjs/snappers@1.10.27': + resolution: {integrity: sha512-HZLZ0XSi6HI08OmTv/HKG6AltQoaKAALLQ+KDW92utj3XSgw7oren0KsWUKPhaPg3Av7R1jFQd08s+uafqIlLw==} + peerDependencies: + '@interactjs/utils': 1.10.27 + + '@interactjs/utils@1.10.27': + resolution: {integrity: sha512-+qfLOio2OxQqg1cXSnRaCl+N8MQDQLDS9w+aOGxH8YLAhIMyt7Asxx/46//sT8orgsi16pmlBPtngPHT9s8zKw==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3853,6 +4059,7 @@ packages: '@ls-lint/ls-lint@2.2.3': resolution: {integrity: sha512-ekM12jNm/7O2I/hsRv9HvYkRdfrHpiV1epVuI2NP+eTIcEgdIdKkKCs9KgQydu/8R5YXTov9aHdOgplmCHLupw==} + cpu: [x64, arm64, s390x] os: [darwin, linux, win32] hasBin: true @@ -5261,6 +5468,9 @@ packages: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} + batch-processor@1.0.0: + resolution: {integrity: sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==} + beeper@1.1.1: resolution: {integrity: sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==} engines: {node: '>=0.10.0'} @@ -6322,6 +6532,9 @@ packages: electron-to-chromium@1.5.41: resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} + element-resize-detector@1.2.4: + resolution: {integrity: sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==} + emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -11425,6 +11638,9 @@ packages: peerDependencies: typescript: '>=5.0.0' + vue3-grid-layout@1.0.0: + resolution: {integrity: sha512-rFiHnlBFxkY9ojh0YB+cSKCE9A9/mhdbgaPARWD7r2yHPWxV9tHDPbMAN+uycsIDF7ikBpNgeQ9PfeiGaXHUWw==} + vue@3.5.12: resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} peerDependencies: @@ -12811,7 +13027,7 @@ snapshots: '@types/node': 20.5.1 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.6.3) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.6.3))(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.6.3))(typescript@5.6.3) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.6.3))(ts-node@10.9.2(@types/node@18.19.57)(typescript@4.9.5))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -13390,12 +13606,6 @@ snapshots: - debug - typescript - '@farris/mobile-ui-vue@0.0.1-beta.3(typescript@4.9.5)': - dependencies: - vue: 3.5.12(typescript@4.9.5) - transitivePeerDependencies: - - typescript - '@farris/ui-vue@1.5.3(@algolia/client-search@4.24.0)(@types/node@20.5.1)(monaco-editor@0.52.2)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(rollup@4.24.0)(search-insights@2.17.2)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5))': dependencies: '@docsearch/js': 3.6.0(@algolia/client-search@4.24.0)(react-dom@16.14.0(react@16.14.0))(react@16.14.0)(search-insights@2.17.2) @@ -13491,6 +13701,108 @@ snapshots: '@inquirer/figures@1.0.7': {} + '@interactjs/actions@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/auto-scroll@1.10.27(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/auto-start@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/core@1.10.27(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/utils': 1.10.27 + + '@interactjs/dev-tools@1.10.27(@interactjs/modifiers@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)(typescript@5.6.3)': + dependencies: + '@interactjs/modifiers': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + vue: 3.5.12(typescript@5.6.3) + transitivePeerDependencies: + - typescript + + '@interactjs/inertia@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/modifiers@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/modifiers': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/offset': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/interact@1.10.27': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + + '@interactjs/interactjs@1.10.27(typescript@5.6.3)': + dependencies: + '@interactjs/actions': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/auto-scroll': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/auto-start': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/dev-tools': 1.10.27(@interactjs/modifiers@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)(typescript@5.6.3) + '@interactjs/inertia': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/modifiers@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/interact': 1.10.27 + '@interactjs/modifiers': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/offset': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/pointer-events': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/reflow': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + transitivePeerDependencies: + - typescript + + '@interactjs/modifiers@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/snappers': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/offset@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/pointer-events@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/reflow@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/core': 1.10.27(@interactjs/utils@1.10.27) + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/snappers@1.10.27(@interactjs/utils@1.10.27)': + dependencies: + '@interactjs/utils': 1.10.27 + optionalDependencies: + '@interactjs/interact': 1.10.27 + + '@interactjs/utils@1.10.27': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -14788,8 +15100,6 @@ snapshots: '@typescript-eslint/types': 8.18.0 eslint-visitor-keys: 4.2.0 - '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue-jsx@2.1.1(vite@3.2.11(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5))': dependencies: '@babel/core': 7.25.8 @@ -15315,71 +15625,19 @@ snapshots: - terser - vite - '@yankeeinlondon/builder-api@1.4.1(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))': - dependencies: - '@types/markdown-it': 12.2.3 - '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - fp-ts: 2.16.9 - inferred-types: 0.37.6(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - markdown-it: 13.0.2 - vite-plugin-md: 0.22.5(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@vitejs/plugin-vue' - - '@vitest/browser' - - '@vitest/ui' - - encoding - - happy-dom - - jsdom - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite - - '@yankeeinlondon/builder-api@1.4.1(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))': - dependencies: - '@types/markdown-it': 12.2.3 - '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - fp-ts: 2.16.9 - inferred-types: 0.37.6(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - markdown-it: 13.0.2 - vite-plugin-md: 0.22.5(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@vitejs/plugin-vue' - - '@vitest/browser' - - '@vitest/ui' - - encoding - - happy-dom - - jsdom - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite - - '@yankeeinlondon/builder-api@1.4.1(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))': + '@yankeeinlondon/builder-api@1.4.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)': dependencies: '@types/markdown-it': 12.2.3 '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) fp-ts: 2.16.9 inferred-types: 0.37.6(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) markdown-it: 13.0.2 - vite-plugin-md: 0.22.5(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) + vite-plugin-md: 0.22.5(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@18.19.57)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@18.19.57)(sass@1.80.3)(terser@5.36.0)) transitivePeerDependencies: - '@edge-runtime/vm' - - '@vitejs/plugin-vue' - '@vitest/browser' - '@vitest/ui' - encoding - - happy-dom - jsdom - less - lightningcss @@ -15388,7 +15646,6 @@ snapshots: - sugarss - supports-color - terser - - vite '@yankeeinlondon/gray-matter@6.2.1(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)': dependencies: @@ -16038,6 +16295,8 @@ snapshots: mixin-deep: 1.3.2 pascalcase: 0.1.1 + batch-processor@1.0.0: {} + beeper@1.1.1: {} better-path-resolve@1.0.0: @@ -17364,6 +17623,10 @@ snapshots: electron-to-chromium@1.5.41: {} + element-resize-detector@1.2.4: + dependencies: + batch-processor: 1.0.0 + emittery@0.13.1: {} emoji-regex@10.4.0: {} @@ -23252,20 +23515,18 @@ snapshots: - terser - vite - vite-plugin-md@0.20.6(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)): + vite-plugin-md@0.20.6(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0): dependencies: - '@yankeeinlondon/builder-api': 1.4.1(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) + '@yankeeinlondon/builder-api': 1.4.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) gray-matter: 4.0.3 markdown-it: 13.0.2 source-map-js: 1.2.1 transitivePeerDependencies: - '@edge-runtime/vm' - - '@vitejs/plugin-vue' - '@vitest/browser' - '@vitest/ui' - encoding - - happy-dom - jsdom - less - lightningcss @@ -23274,19 +23535,17 @@ snapshots: - sugarss - supports-color - terser - - vite - vite-plugin-md@0.21.5(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)): + vite-plugin-md@0.21.5(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)): dependencies: - '@yankeeinlondon/builder-api': 1.4.1(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) - '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) + '@yankeeinlondon/builder-api': 1.4.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) + '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) markdown-it: 13.0.2 source-map-js: 1.2.1 - vite: 5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) + vite: 5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) transitivePeerDependencies: - '@edge-runtime/vm' - - '@vitejs/plugin-vue' - '@vitest/browser' - '@vitest/ui' - encoding @@ -23300,17 +23559,16 @@ snapshots: - supports-color - terser - vite-plugin-md@0.21.5(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)): + vite-plugin-md@0.21.5(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)): dependencies: - '@yankeeinlondon/builder-api': 1.4.1(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) - '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) + '@yankeeinlondon/builder-api': 1.4.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) + '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) markdown-it: 13.0.2 source-map-js: 1.2.1 - vite: 5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) + vite: 5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) transitivePeerDependencies: - '@edge-runtime/vm' - - '@vitejs/plugin-vue' - '@vitest/browser' - '@vitest/ui' - encoding @@ -23348,77 +23606,6 @@ snapshots: - supports-color - terser - vite-plugin-md@0.22.5(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)): - dependencies: - '@vitejs/plugin-vue': 4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)) - '@yankeeinlondon/builder-api': 1.4.1(@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@4.9.5)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0)) - '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - markdown-it: 13.0.2 - source-map-js: 1.2.1 - vite: 4.5.5(@types/node@20.5.1)(sass@1.80.3)(terser@5.36.0) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@vitest/browser' - - '@vitest/ui' - - encoding - - happy-dom - - jsdom - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-plugin-md@0.22.5(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)): - dependencies: - '@vitejs/plugin-vue': 4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) - '@yankeeinlondon/builder-api': 1.4.1(@vitejs/plugin-vue@4.6.2(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) - '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@8.9.0)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - markdown-it: 13.0.2 - source-map-js: 1.2.1 - vite: 5.4.9(@types/node@20.5.1)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@vitest/browser' - - '@vitest/ui' - - encoding - - happy-dom - - jsdom - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-plugin-md@0.22.5(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)): - dependencies: - '@vitejs/plugin-vue': 5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) - '@yankeeinlondon/builder-api': 1.4.1(@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)))(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0)(vite@5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0)) - '@yankeeinlondon/gray-matter': 6.2.1(happy-dom@14.12.3)(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - '@yankeeinlondon/happy-wrapper': 2.10.1(jsdom@20.0.3)(sass@1.80.3)(terser@5.36.0) - markdown-it: 13.0.2 - source-map-js: 1.2.1 - vite: 5.4.9(@types/node@18.19.57)(sass-embedded@1.80.3)(sass@1.80.3)(terser@5.36.0) - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@vitest/browser' - - '@vitest/ui' - - encoding - - jsdom - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - vite-svg-loader@4.0.0: dependencies: '@vue/compiler-sfc': 3.5.12 @@ -24032,6 +24219,20 @@ snapshots: semver: 7.6.3 typescript: 5.6.3 + vue3-grid-layout@1.0.0(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)(typescript@5.6.3): + dependencies: + '@interactjs/actions': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/auto-start': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + '@interactjs/dev-tools': 1.10.27(@interactjs/modifiers@1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27)(typescript@5.6.3) + '@interactjs/interactjs': 1.10.27(typescript@5.6.3) + '@interactjs/modifiers': 1.10.27(@interactjs/core@1.10.27(@interactjs/utils@1.10.27))(@interactjs/utils@1.10.27) + element-resize-detector: 1.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - '@interactjs/core' + - '@interactjs/utils' + - typescript + vue@3.5.12(typescript@4.9.5): dependencies: '@vue/compiler-dom': 3.5.12 -- Gitee From e3ffdf8ff18db2b7f402e9f12765a7a1b3dae015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=99=93=E9=98=B3?= <13879686+ma-xiaoyang111@user.noreply.gitee.com> Date: Thu, 10 Jul 2025 14:26:01 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feature:=20=E4=BC=98=E5=8C=96PC=E7=AB=AF?= =?UTF-8?q?=E8=AF=84=E5=88=86=E7=BB=84=E4=BB=B6=EF=BC=88rate=EF=BC=89?= =?UTF-8?q?=E7=9A=84=E5=B1=9E=E6=80=A7=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/types/toolbox/pc-toolbox.json | 3 +- packages/ui-vue/components/rate/index.ts | 2 + .../src/designer/rate.design.component.tsx | 13 +- .../rate/src/designer/use-designer-rules.ts | 41 +++++ .../property-config/rate.property-config.json | 5 +- .../property-config/rate.property-config.ts | 156 ++++++++++++++++++ .../ui-vue/components/rate/src/rate.props.ts | 14 +- .../rate/src/schema/rate.schema.json | 87 +++++++++- 8 files changed, 304 insertions(+), 17 deletions(-) create mode 100644 packages/ui-vue/components/rate/src/designer/use-designer-rules.ts create mode 100644 packages/ui-vue/components/rate/src/property-config/rate.property-config.ts diff --git a/packages/designer/src/components/types/toolbox/pc-toolbox.json b/packages/designer/src/components/types/toolbox/pc-toolbox.json index 57d0ba4a510..f55551a8883 100644 --- a/packages/designer/src/components/types/toolbox/pc-toolbox.json +++ b/packages/designer/src/components/types/toolbox/pc-toolbox.json @@ -154,7 +154,8 @@ "id":"Rate", "type":"rate", "name":"评分", - "category":"form" + "category":"form", + "icon" : "rate" } ] }, diff --git a/packages/ui-vue/components/rate/index.ts b/packages/ui-vue/components/rate/index.ts index 51b621dc498..f05b2a1403c 100644 --- a/packages/ui-vue/components/rate/index.ts +++ b/packages/ui-vue/components/rate/index.ts @@ -19,12 +19,14 @@ import FRate from './src/rate.component'; import FRateDesign from './src/designer/rate.design.component'; import { propsResolver } from './src/rate.props'; import { withInstall } from '@farris/ui-vue/components/common'; +import { RateProperty } from './src/property-config/rate.property-config'; export * from './src/rate.props'; FRate.register = (componentMap: Record, propsResolverMap: Record, configResolverMap: Record, resolverMap: Record) => { componentMap.rate = FRate; propsResolverMap.rate = propsResolver; + }; FRate.registerDesigner = (componentMap: Record, propsResolverMap: Record, configResolverMap: Record) => { componentMap.rate = FRateDesign; diff --git a/packages/ui-vue/components/rate/src/designer/rate.design.component.tsx b/packages/ui-vue/components/rate/src/designer/rate.design.component.tsx index 3bf4142b77c..abc44575be9 100644 --- a/packages/ui-vue/components/rate/src/designer/rate.design.component.tsx +++ b/packages/ui-vue/components/rate/src/designer/rate.design.component.tsx @@ -16,8 +16,9 @@ */ import { computed, defineComponent, SetupContext, ref, withModifiers, onMounted, inject } from 'vue'; import { RateProps, rateProps } from '../rate.props'; -import { DesignerItemContext } from '../../../designer-canvas/src/types'; +import { ComponentSchema, DesignerItemContext } from '../../../designer-canvas/src/types'; import { useDesignerComponent } from '../../../designer-canvas/src/composition/function/use-designer-component'; +import { useDesignerRules } from './use-designer-rules'; export default defineComponent({ name: 'FRateDesign', @@ -25,7 +26,7 @@ export default defineComponent({ emits: ['selectedValue'] as (string[] & ThisType) | undefined, setup(props: RateProps, context: SetupContext) { /** 星星大小 */ - const size = ref(props.size); + const size = computed(() => props.size); /** 启用半颗星模式 */ const enableHalf = ref(props.enableHalf); /** 启用再次点击后清除 */ @@ -72,8 +73,10 @@ export default defineComponent({ const distance = 4; const elementRef = ref(); + const designerHostService = inject('designer-host-service') const designItemContext = inject('design-item-context') as DesignerItemContext; - const componentInstance = useDesignerComponent(elementRef, designItemContext); + const designerRulesComposition = useDesignerRules(designItemContext.schema, designerHostService); + const componentInstance = useDesignerComponent(elementRef, designItemContext,designerRulesComposition); onMounted(() => { elementRef.value.componentInstance = componentInstance; @@ -273,3 +276,7 @@ export default defineComponent({ }; } }); +function useRateDesignerRules(schema: ComponentSchema, schema1: ComponentSchema | undefined) { + throw new Error('Function not implemented.'); +} + diff --git a/packages/ui-vue/components/rate/src/designer/use-designer-rules.ts b/packages/ui-vue/components/rate/src/designer/use-designer-rules.ts new file mode 100644 index 00000000000..e53cbbd9fb8 --- /dev/null +++ b/packages/ui-vue/components/rate/src/designer/use-designer-rules.ts @@ -0,0 +1,41 @@ +import { DraggingResolveContext, UseDesignerRules } from "../../../designer-canvas/src/composition/types"; +import { ComponentSchema } from "../../../designer-canvas/src/types"; +import { RateProperty } from "../property-config/rate.property-config"; + +/** + * 评分组件设计时的规则定义 + */ +export function useDesignerRules(schema: ComponentSchema, designerHostService): UseDesignerRules { + /** + * 判断是否可以接收子组件(评分组件是叶子组件,不接收子元素) + */ + function canAccepts(draggingContext: DraggingResolveContext): boolean { + return false; + } + function checkCanDeleteComponent() { + return true; + } + + function checkCanMoveComponent() { + return true; + } + function hideNestedPaddingInDesginerView() { + return true; + } + + /** + * 返回右侧属性面板配置 + */ + function getPropsConfig(componentId: string) { + const rateProp = new RateProperty(componentId, designerHostService); + return rateProp.getPropertyConfig(schema); + } + + return { + canAccepts, + hideNestedPaddingInDesginerView, + getPropsConfig, + checkCanDeleteComponent, + checkCanMoveComponent, + }; +} diff --git a/packages/ui-vue/components/rate/src/property-config/rate.property-config.json b/packages/ui-vue/components/rate/src/property-config/rate.property-config.json index 6be5bac5dad..b369fd36db5 100644 --- a/packages/ui-vue/components/rate/src/property-config/rate.property-config.json +++ b/packages/ui-vue/components/rate/src/property-config/rate.property-config.json @@ -11,14 +11,15 @@ "description": "组件标识", "title": "标识", "type": "string", - "readonly": true + "readonly": true, + "defaut":"rate" }, "type": { "description": "组件类型", "title": "控件类型", "type": "select", "editor": { - "type": "waiting for modification", + "type": "select", "enum": [] } } diff --git a/packages/ui-vue/components/rate/src/property-config/rate.property-config.ts b/packages/ui-vue/components/rate/src/property-config/rate.property-config.ts new file mode 100644 index 00000000000..ca5a397e19d --- /dev/null +++ b/packages/ui-vue/components/rate/src/property-config/rate.property-config.ts @@ -0,0 +1,156 @@ + +import { valueObjectSchemaRepositorySymbol } from "@/demos/schema-selector/mock_repository"; +import { BaseControlProperty } from "../../../property-panel/src/composition/entity/base-property"; + + +export class RateProperty extends BaseControlProperty { + + constructor(componentId: string, designerHostService: any) { + super(componentId, designerHostService); + } + + /** + * 获取评分组件属性配置 + */ + getPropertyConfig(propertyData: any) { + this.propertyConfig.categories['basic'] = this.getBasicPropConfig(propertyData); + this.propertyConfig.categories['appearance'] = this.getAppearanceProperties(propertyData); + this.propertyConfig.categories['behavior'] = this.getBehaviorConfig(propertyData); + return this.propertyConfig; + } + + /** + * 外观配置 + */ + private getAppearanceProperties(propertyData: any) { + return { + title: '外观', + description: '', + properties: { + size: { + title: '组件大小', + type: 'enum', + description: '设置组件显示尺寸', + default:'large', + editor: { + type: 'combo-list', + textField: 'value', + valueField: 'key', + idField: 'key', + editable: false, + data: [ + { + key: 'small', + value: '小号' + }, + { + key: 'mid', + value: '中号' + }, + { + key: 'large', + value: '大号' + }, + { + key: 'extraLarge', + value: '超大号' + } + ] + } + +}, + +// 注释示例: +// 此处配置控制组件的基本显示属性 +// 修改后需要刷新页面才能生效, + numOfStar: { + title: '星星数量', + type: 'number', + minimum: 1, + maximum: 5, + default: 5, + description: '设置评分组件的总星星数量' + }, + enableHalf: { + title: '允许半星', + type: 'boolean', + default: true, + description: '是否支持半星评分' + }, + disabled: { + title: '禁用评分', + type: 'boolean', + default: false, + description: '是否禁用评分' + }, + pointSystem: { + title: '分制系统', + type: 'number', + default: 5, + description: '分制系统' + }, + enableClear: { + title: '清除评分', + type: 'boolean', + default: false, + description: '是否启用再次点击后清除' + }, + lightColor: { + title: '星星亮色', + type: 'string', + default: '', + description:'星星亮色' + }, + darkColor: { + title: '星星暗色', + type: 'string', + default: '', + description: '星星暗色' + }, + iconClass: { + title: '评分图标样式', + type: 'string', + default: 'f-icon-star', + description: '设置评分图标样式' + }, + toolTipContents: { + title: '满意度', + type: 'Array as PropType', + default: ['很不满意', '不满意', '一般', '满意', '非常满意'], + description: '默认满意度文案' + }, + enableSatisfaction:{ + title:'显示满意度文案', + type: 'boolean', + default: false, + description: '是否显示满意度文案' + }, + modelValue: { + title: '绑定值', + type: 'number', + default: 0, + description: '绑定值' + }, + enableScore: { + title: '启用评分', + type: 'boolean', + default: true, + description: '启用评分' + } + + }, + /** + * 响应属性变化时的行为设置 + */ + setPropertyRelates(changeObject, prop) { + if (!changeObject) {return}; + switch (changeObject.propertyID) { + case 'numOfStar': + case 'size': + changeObject.needRefreshControlTree = true; + break; + } + } + }; + } +} diff --git a/packages/ui-vue/components/rate/src/rate.props.ts b/packages/ui-vue/components/rate/src/rate.props.ts index a10474f5643..8d0440a03c9 100644 --- a/packages/ui-vue/components/rate/src/rate.props.ts +++ b/packages/ui-vue/components/rate/src/rate.props.ts @@ -18,7 +18,7 @@ import { createPropsResolver } from '../../dynamic-resolver/src/props-resolver'; import { schemaMapper } from './schema/schema-mapper'; import { schemaResolver } from './schema/schema-resolver'; import rateSchema from './schema/rate.schema.json'; -import propertyConfig from './property-config/rate.property-config.json'; +// import propertyConfig from './property-config/rate.property-config.json'; const toolTipContents = ['很不满意', '不满意', '一般', '满意', '非常满意']; @@ -26,7 +26,7 @@ export const rateProps = { /** 星星大小 */ size: { type: String, default: 'large' }, /** 启用半颗星模式 */ - enableHalf: { type: Boolean, default: false }, + enableHalf: { type: Boolean, default: true }, /** 启用再次点击后清除 */ enableClear: { type: Boolean, default: false }, /** 只读 */ @@ -34,9 +34,9 @@ export const rateProps = { /** 分制 */ pointSystem: { type: Number, default: 5 }, /** 星星亮色 */ - lightColor: { type: String, default: '' }, - /** 星星暗色(底色) */ - darkColor: { type: String, default: '' }, + lightColor: {type: String,default: '#ffd700' }, + darkColor: {type: String,default: '#dcdcdc'}, + /** 图案样式 */ iconClass: { type: String, default: 'f-icon-star' }, /** 星星个数 */ @@ -44,7 +44,7 @@ export const rateProps = { /** 禁用单个星星的文字提示 */ toolTipDisabled: { type: Boolean, default: true }, /** 默认的满意度文案 */ - toolTipContents: { type: Array as PropType, default: toolTipContents }, + toolTipContents: { type: Array as PropType, default: ['很不满意', '不满意', '一般', '满意', '非常满意'] }, /** 启用评分 */ enableScore: { type: Boolean, default: true }, /** 启用满意度 */ @@ -57,4 +57,4 @@ export const rateProps = { } as Record; export type RateProps = ExtractPropTypes; -export const propsResolver = createPropsResolver(rateProps, rateSchema, schemaMapper, schemaResolver, propertyConfig); +export const propsResolver = createPropsResolver(rateProps, rateSchema, schemaMapper, schemaResolver); diff --git a/packages/ui-vue/components/rate/src/schema/rate.schema.json b/packages/ui-vue/components/rate/src/schema/rate.schema.json index 312d00b3f4e..c2d8f738b3c 100644 --- a/packages/ui-vue/components/rate/src/schema/rate.schema.json +++ b/packages/ui-vue/components/rate/src/schema/rate.schema.json @@ -32,9 +32,10 @@ "type": "object", "default": {} }, - "disable": { - "type": "string", - "default": false + "disabled": { + "type": "boolean", + "default": false, + "description": "" }, "editable": { "description": "", @@ -65,7 +66,85 @@ "description": "", "type": "boolean", "default": true - } + }, + "size": { + "title": "组件大小", + "type": "string", + "description": "", + "default": "large", + "enum": ["small", "middle", "large", "extraLarge"], + "x-display-value": { + "small": "小号", + "middle": "中号", + "large": "大号", + "extraLarge": "超大号" + } + }, + "numOfStar": { + "type": "number", + "minimum": 1, + "maximum": 5, + "default": 5, + "description": "" + }, + "pointSystem": { + "type": "number", + "default": 5, + "description": "" + }, + "enableClear": { + "type": "boolean", + "default": false, + "description": "" + }, + "lightColor": { + "type": "string", + "default": "", + "description": "" + }, + "darkColor": { + "type": "string", + "default": "", + "description": "" + }, + "iconClass": { + "type": "string", + "default": "f-icon-star", + "description": "" + }, + "toolTipContents": { + "type": "array", + "items": { "type": "string" }, + "default": ["很不满意", "不满意", "一般", "满意", "非常满意"], + "description": "" + }, + "enableSatisfaction":{ + "type": "boolean", + "default": false, + "description": "" + }, + "modelValue": { + "type": "number", + "default": 0, + "description": "" + }, + "enableScore": { + "type": "boolean", + "default": true, + "description": "" + }, + "enableHalf":{ + "type":"boolean", + "default": true, + "description": "" + }, + "disable": { + "type": "boolean", + "default": false, + "description": "" + } + + }, "required": [ "id", -- Gitee