@jnrs/lingshu-smart 2.2.38 → 2.2.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/AGENTS.md +27 -25
  2. package/README.md +10 -10
  3. package/dist/components/debug/ScriptRunner/StressPanel.vue.d.ts +63 -0
  4. package/dist/components/debug/WsProxy/ConfigEditor.vue.d.ts +5 -3
  5. package/dist/components/debug/WsProxy/ConnPanel.vue.d.ts +10 -0
  6. package/dist/components/debug/WsProxy/MappingGrid.vue.d.ts +2 -0
  7. package/dist/components/debug/WsProxy/index.vue.d.ts +33 -4
  8. package/dist/components/debug/WsProxy/proxy.d.ts +65 -19
  9. package/dist/components/editor/ControlBar/CaseTitleEdit.vue.d.ts +16 -16
  10. package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupDialog.vue.d.ts +1 -1
  11. package/dist/components/index.js +5609 -4079
  12. package/dist/components/preview/index.vue.d.ts +439 -30
  13. package/dist/controller/AppController.d.ts +12 -0
  14. package/dist/index-DKL_kTJG.js +11441 -0
  15. package/dist/index.js +42 -38
  16. package/dist/lingshu-smart/cases.json +12818 -211
  17. package/dist/lingshu-smart/wsProxyConfig.json +1026 -520
  18. package/dist/locales/en.d.ts +2 -0
  19. package/dist/locales/i18next.d.ts +4 -0
  20. package/dist/locales/index.js +12 -8
  21. package/dist/locales/zhCn.d.ts +2 -0
  22. package/dist/playground/ViewPageDemo.vue.d.ts +1025 -159
  23. package/dist/stores/index.js +1 -1
  24. package/dist/stores/useAppStore.d.ts +1491 -264
  25. package/dist/stores/useDataStore.d.ts +2143 -262
  26. package/dist/stores/useDebugStore.d.ts +38 -557
  27. package/dist/types/components/config.types.d.ts +3 -1
  28. package/dist/types/enums.d.ts +3 -1
  29. package/dist/types/models/config.types.d.ts +34 -2
  30. package/dist/types/models/operating.types.d.ts +36 -4
  31. package/dist/ui/abstract/ModelAbs.d.ts +6 -0
  32. package/dist/ui/components/StationSlot.d.ts +15 -0
  33. package/dist/ui/components/StationSlotGroup.d.ts +6 -0
  34. package/dist/ui/models/MaterialTrack.d.ts +29 -0
  35. package/dist/ui/models/ResourceOperationWindow.d.ts +39 -0
  36. package/dist/ui/models/ShuttleStation.d.ts +3 -3
  37. package/dist/useAppStore-DvXV4vGj.js +15736 -0
  38. package/dist/utils/caseCompact.d.ts +17 -0
  39. package/dist/utils/index.d.ts +1 -0
  40. package/package.json +1 -1
  41. package/dist/index-YxSpi9Af.js +0 -131
  42. package/dist/useAppStore-CIFewItb.js +0 -26105
  43. /package/dist/components/debug/{DebugPanel.vue.d.ts → GlobalSetting.vue.d.ts} +0 -0
package/AGENTS.md CHANGED
@@ -489,19 +489,19 @@ type ILayerOperating =
489
489
 
490
490
  ### 子类型一览
491
491
 
492
- | 类型 | className | 特有属性 | 子组件能力 | 典型 payload.type |
493
- | ---------------------------- | -------------------- | ------------------------------------------------------------------ | -------------------------------------------------- | ------------------ |
494
- | `IMachineToolOperating` | `MACHINE_TOOL` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(含旋转)、进度条、出入口、工位槽 | `MachineTool` |
495
- | `ILoadingStationOperating` | `LOADING_STATION` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(无旋转)、进度条、出入口、工位槽 | `LoadingStation` |
496
- | `IShuttleStationOperating` | `SHUTTLE_STATION` | `light?`, `layerStatus?` | 状态灯、多工位层状态灯 | `ShuttleStation` |
497
- | `IMarkingMachineOperating` | `MARKING_MACHINE` | `light?`, `progress?`, `entrance?`, `laserSiteNumberArray?` | 状态灯、进度条、出入口、工位槽、激光工位指示 | `MarkingMachine` |
498
- | `ICleaningMachineOperating` | `CLEANING_MACHINE` | `light?`, `progress?`, `entrance?` | 状态灯、进度条、出入口、工位槽 | `CleaningMachine` |
499
- | `ISingleJointRobotOperating` | `SINGLE_JOINT_ROBOT` | `light?`, `x?`, `y?`, `j1?`, `currentFixture?`, `resource?` | 双状态灯、轨道位移、关节旋转、夹具切换、双工位槽 | `SingleJointRobot` |
500
- | `IDoubleJointRobotOperating` | `DOUBLE_JOINT_ROBOT` | `light?`, `x?`, `y?`, `j1?`, `j2?`, `currentFixture?`, `resource?` | 双状态灯、轨道位移、双关节旋转、夹具切换、双工位槽 | `DoubleJointRobot` |
501
- | `IRGVOperating` | `RGV` | `light?`, `x?`, `j1?`, `forkXY?`, `forkZ?`, `resource?` | 双状态灯、轨道位移、旋转、货叉 XY/Z、双工位槽 | `Rgv` |
502
- | `IRailOperating` | `RAIL` | `x?`, `botId?` | 拖链动画(关联 botId 的设备移动时拖链跟随) | `Rail` |
503
- | `IResourceStoreOperating` | `RESOURCE_STORE` | `light?`, `x?`, `resource?` | 状态灯、轨道位移、托盘/刀具工位槽 | `ResourceStore` |
504
- | `IPalletOperating` | `PALLET` | `light?`, `x?`, `y?`, `resource?` | 状态灯、X/Y 位移、托盘/刀具工位槽 | `Pallet` |
492
+ | 类型 | className | 特有属性 | 子组件能力 | 典型 payload.type |
493
+ | ---------------------------- | -------------------- | -------------------------------------------------------------------- | -------------------------------------------------- | ------------------ |
494
+ | `IMachineToolOperating` | `MACHINE_TOOL` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(含旋转)、进度条、出入口、工位槽 | `MachineTool` |
495
+ | `ILoadingStationOperating` | `LOADING_STATION` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(无旋转)、进度条、出入口、工位槽 | `LoadingStation` |
496
+ | `IShuttleStationOperating` | `SHUTTLE_STATION` | `light?`, `layerLightColor?`, `layerLightBlinking?`, `layerVisible?` | 状态灯、多工位层状态灯/显隐 | `ShuttleStation` |
497
+ | `IMarkingMachineOperating` | `MARKING_MACHINE` | `light?`, `progress?`, `entrance?`, `laserSiteNumberArray?` | 状态灯、进度条、出入口、工位槽、激光工位指示 | `MarkingMachine` |
498
+ | `ICleaningMachineOperating` | `CLEANING_MACHINE` | `light?`, `progress?`, `entrance?` | 状态灯、进度条、出入口、工位槽 | `CleaningMachine` |
499
+ | `ISingleJointRobotOperating` | `SINGLE_JOINT_ROBOT` | `light?`, `x?`, `y?`, `j1?`, `currentFixture?`, `resource?` | 双状态灯、轨道位移、关节旋转、夹具切换、双工位槽 | `SingleJointRobot` |
500
+ | `IDoubleJointRobotOperating` | `DOUBLE_JOINT_ROBOT` | `light?`, `x?`, `y?`, `j1?`, `j2?`, `currentFixture?`, `resource?` | 双状态灯、轨道位移、双关节旋转、夹具切换、双工位槽 | `DoubleJointRobot` |
501
+ | `IRGVOperating` | `RGV` | `light?`, `x?`, `j1?`, `forkXY?`, `forkZ?`, `resource?` | 双状态灯、轨道位移、旋转、货叉 XY/Z、双工位槽 | `Rgv` |
502
+ | `IRailOperating` | `RAIL` | `x?`, `botId?` | 拖链动画(关联 botId 的设备移动时拖链跟随) | `Rail` |
503
+ | `IResourceStoreOperating` | `RESOURCE_STORE` | `light?`, `x?`, `resource?` | 状态灯、轨道位移、托盘/刀具工位槽 | `ResourceStore` |
504
+ | `IPalletOperating` | `PALLET` | `light?`, `x?`, `y?`, `resource?` | 状态灯、X/Y 位移、托盘/刀具工位槽 | `Pallet` |
505
505
 
506
506
  ### 子类型字段详情
507
507
 
@@ -527,12 +527,14 @@ type ILayerOperating =
527
527
 
528
528
  #### IShuttleStationOperating
529
529
 
530
- | 属性 | 类型 | 说明 |
531
- | ------------- | ----------------------------------- | --------------------------------------------------------------- |
532
- | `light` | `Omit<ILightOperating, 'rotating'>` | 状态灯(不支持旋转灯效) |
533
- | `layerStatus` | `Record<number, number \| string>` | 各层工位组状态灯:键为层索引(1-based),值为状态码或颜色字符串 |
530
+ | 属性 | 类型 | 说明 |
531
+ | -------------------- | ----------------------------------- | ------------------------------------------------------------------- |
532
+ | `light` | `Omit<ILightOperating, 'rotating'>` | 状态灯(不支持旋转灯效) |
533
+ | `layerLightColor` | `Record<number, number \| string>` | 各层工位组状态灯颜色:键为层索引(1-based),值为状态码或颜色字符串 |
534
+ | `layerLightBlinking` | `Record<number, boolean>` | 各层工位组状态灯闪烁:键为层索引(1-based),值为是否闪烁 |
535
+ | `layerVisible` | `Record<number, boolean>` | 各层工位组显示状态:键为层索引(1-based),值为是否可见 |
534
536
 
535
- > `layerStatus` 在代理器中通过 `dictColorMap` 转换后值为颜色字符串;未转换时值为状态数字码。
537
+ > `layerLightColor` 在代理器中通过 `dictColorMap` / `objDict` 转换后值为颜色字符串;未转换时值为状态数字码。
536
538
 
537
539
  #### IMarkingMachineOperating
538
540
 
@@ -633,12 +635,12 @@ type ILayerOperating =
633
635
 
634
636
  ## 📦 模块总览
635
637
 
636
- | 模块路径 | 说明 |
637
- | -------------------------------- | ------------------------------ |
638
- | `@jnrs/lingshu-smart` | 主模块,包含类型定义和工具函数 |
639
- | `@jnrs/lingshu-smart/components` | Vue 组件库(编辑器、预览器) |
638
+ | 模块路径 | 说明 |
639
+ | -------------------------------- | ------------------------------------- |
640
+ | `@jnrs/lingshu-smart` | 主模块,包含类型定义和工具函数 |
641
+ | `@jnrs/lingshu-smart/components` | Vue 组件库(编辑器、预览器) |
640
642
  | `@jnrs/lingshu-smart/stores` | Pinia stores(data/editor/app/debug) |
641
- | `@jnrs/lingshu-smart/locales` | 国际化配置 |
643
+ | `@jnrs/lingshu-smart/locales` | 国际化配置 |
642
644
 
643
645
  ---
644
646
 
@@ -727,9 +729,9 @@ type ILayerOperating =
727
729
  | `utils/logger.ts` | 统一日志工具,支持 tag 着色、LogLevel 过滤、`operating` 追踪级别 |
728
730
  | `utils/debug-flags.ts` | 模块级动画标志位,供 UI 组件直接导入控制循环动画 |
729
731
  | `utils/performance-stats.ts` | 性能统计工具,记录运行时长和 WebSocket 数据接收量 |
730
- | `stores/useDebugStore.ts` | 全局调试配置 Pinia store,localStorage 持久化 |
732
+ | `stores/useDebugStore.ts` | 全局设置 Pinia store(facade):响应式读写 `useDataStore.globalSetting` / `scriptRunner`,持久化统一在 `@jnrs/lingshu-smart` |
731
733
  | `composables/useDebugEasterEgg.ts` | 调试触发检测:500ms 内 10 次点击打开面板 |
732
- | `components/debug/DebugPanel.vue` | 调试配置对话框 UI |
734
+ | `components/debug/GlobalSetting.vue` | 全局设置对话框 UI(原 DebugPanel,含语言/日志等级/FPS/阴影/动画等开关) |
733
735
  | `components/debug/ScriptRunner/` | Socket 脚本模拟器:脚本步骤编排、断点调试、消息结构配置(code/msg、payload 字段名、type)、日志查看 |
734
736
  | `components/debug/WsProxy/` | WebSocket 代理器:声明式字段映射将后端 socket 结构桥接为 operating,支持连接/断开/重连、日志、配置导出/导入、场景像素换算(percentToPixel 百分比/ runtimeToPixel 运行时坐标)、standalone 独立标签页模式 / remote 远程接收模式(BroadcastChannel 跨标签页流转数据) |
735
737
  | `components/debug/WsProxy/WsProxyPage.vue` | `WsProxy` 独立路由页面组件:以独立 URL/标签页运行代理器配置,将 operating/raw/状态广播给预览页驱动图形运转 |
package/README.md CHANGED
@@ -6,14 +6,14 @@
6
6
 
7
7
  ### 核心功能
8
8
 
9
- | 功能 | 说明 |
10
- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
- | 编辑器模式 | `LingshuSmartEditor` — 方案可视化编辑,支持拖拽布局、设备配置、图层管理、方案保存/预览 |
12
- | 运行看板 | `LingshuSmartPreview` — 方案运行看板,支持 WebSocket 实时驱动设备动画、交互事件(点击/拖拽/右键菜单) |
13
- | 设备模型 | 机床、机器人(单关节/双关节)、RGV、装载站、打标机、清洗机、轨道拖链、资源库、托盘等 |
14
- | 设备运转 | 灯光、进度条、入口动画、工位槽资源增删、坐标/角度/货叉控制 |
15
- | 坐标转换 | `transRuntimeToPixel` / `transPercentToPixel` — 物理坐标与像素坐标互转 |
16
- | WebSocket 代理器 | `WsProxy` — 声明式字段映射将后端 socket 数据桥接为 operating 驱动设备动画;支持内置请求器/外接注入两种数据源、direct/proxy 请求模式、自动连接开关、按 type 分类代理配置及配置导出/导入 |
9
+ | 功能 | 说明 |
10
+ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
11
+ | 编辑器模式 | `LingshuSmartEditor` — 方案可视化编辑,支持拖拽布局、设备配置、图层管理、方案保存/预览 |
12
+ | 运行看板 | `LingshuSmartPreview` — 方案运行看板,支持 WebSocket 实时驱动设备动画、交互事件(点击/拖拽/右键菜单) |
13
+ | 设备模型 | 机床、机器人(单关节/双关节)、RGV、装载站、打标机、清洗机、轨道拖链、资源库、托盘等 |
14
+ | 设备运转 | 灯光、进度条、入口动画、工位槽资源增删、坐标/角度/货叉控制 |
15
+ | 坐标转换 | `transRuntimeToPixel` / `transPercentToPixel` — 物理坐标与像素坐标互转 |
16
+ | WebSocket 代理器 | `WsProxy` — 声明式字段映射将后端 socket 数据桥接为 operating 驱动设备动画;支持内置请求器/外接注入两种数据源、direct/proxy 请求模式、自动连接开关、按 type 分类代理配置及配置导出/导入;特殊处理支持固定值、像素转换、字典转换、对象值映射、模型映射表、条件判断,「始终记录」可关闭显示仍持续收集日志 |
17
17
 
18
18
  ## 💻 技术栈
19
19
 
@@ -112,7 +112,7 @@ ws.onmessage = (event) => {
112
112
 
113
113
  ### 配置持久化
114
114
 
115
- 所有调试配置通过 `localStorage` 持久化存储,key `@jnrs/lingshu-smart/debug`:
115
+ 所有配置通过 `localStorage` 统一持久化到单一 key `@jnrs/lingshu-smart`(`cases` / `wsProxyConfig` / `globalSetting` / `scriptRunner` 四个字段平级),旧版独立 key(`@jnrs/lingshu-smart/debug`、`@jnrs/lingshu-smart/script-steps`、`@jnrs/lingshu-smart/ws-proxy-config`)首次访问时自动迁移合并后删除。全局设置存放于 `globalSetting` 字段:
116
116
 
117
117
  ```json
118
118
  {
@@ -125,7 +125,7 @@ ws.onmessage = (event) => {
125
125
  }
126
126
  ```
127
127
 
128
- 页面刷新后自动恢复上次配置。如需重置,点击调试面板中的"恢复默认"按钮。
128
+ 页面刷新后自动恢复上次配置。如需重置,点击全局设置面板中的"恢复默认"按钮。
129
129
 
130
130
  ## 🌐 国际化
131
131
 
@@ -0,0 +1,63 @@
1
+ /** 设备下拉选项(与 index.vue 的 DeviceOption 同构) */
2
+ interface StressDeviceOption {
3
+ label: string;
4
+ value: string;
5
+ className: string;
6
+ nameplate: string;
7
+ }
8
+ type __VLS_Props = {
9
+ /** 测试模式:move 位移压测 / resource 资源流转 */
10
+ mode: 'move' | 'resource';
11
+ deviceOptions: StressDeviceOption[];
12
+ deviceValue: StressDeviceOption | null;
13
+ frequency: number;
14
+ amplitude: number;
15
+ period: number;
16
+ /** 资源流转:搬运设备(机器人/RGV) */
17
+ carrierOptions: StressDeviceOption[];
18
+ carrierValue: StressDeviceOption | null;
19
+ /** 资源流转:库设备(资源库/托盘) */
20
+ storeOptions: StressDeviceOption[];
21
+ storeValue: StressDeviceOption | null;
22
+ /** 资源流转:资源类型 Pallet/Tool */
23
+ resourceType: string;
24
+ /** 资源流转:同时搬运的资源数量 */
25
+ resourceCount: number;
26
+ /** 资源流转:每步间隔(ms) */
27
+ resourceInterval: number;
28
+ running: boolean;
29
+ sentCount: number;
30
+ actualHz: number;
31
+ elapsed: number;
32
+ sampleLog: boolean;
33
+ };
34
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
35
+ start: () => any;
36
+ stop: () => any;
37
+ "update:mode": (value: "resource" | "move") => any;
38
+ "update:deviceValue": (value: "" | StressDeviceOption) => any;
39
+ "update:frequency": (value: number) => any;
40
+ "update:amplitude": (value: number) => any;
41
+ "update:period": (value: number) => any;
42
+ "update:carrierValue": (value: "" | StressDeviceOption) => any;
43
+ "update:storeValue": (value: "" | StressDeviceOption) => any;
44
+ "update:resourceType": (value: string) => any;
45
+ "update:resourceCount": (value: number) => any;
46
+ "update:resourceInterval": (value: number) => any;
47
+ "update:sampleLog": (value: boolean) => any;
48
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
49
+ onStart?: (() => any) | undefined;
50
+ onStop?: (() => any) | undefined;
51
+ "onUpdate:mode"?: ((value: "resource" | "move") => any) | undefined;
52
+ "onUpdate:deviceValue"?: ((value: "" | StressDeviceOption) => any) | undefined;
53
+ "onUpdate:frequency"?: ((value: number) => any) | undefined;
54
+ "onUpdate:amplitude"?: ((value: number) => any) | undefined;
55
+ "onUpdate:period"?: ((value: number) => any) | undefined;
56
+ "onUpdate:carrierValue"?: ((value: "" | StressDeviceOption) => any) | undefined;
57
+ "onUpdate:storeValue"?: ((value: "" | StressDeviceOption) => any) | undefined;
58
+ "onUpdate:resourceType"?: ((value: string) => any) | undefined;
59
+ "onUpdate:resourceCount"?: ((value: number) => any) | undefined;
60
+ "onUpdate:resourceInterval"?: ((value: number) => any) | undefined;
61
+ "onUpdate:sampleLog"?: ((value: boolean) => any) | undefined;
62
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
63
+ export default _default;
@@ -1,4 +1,4 @@
1
- import { WsProxyConfig } from './proxy';
1
+ import { WsProxyConfig, WsProxyCaseConfig } from './proxy';
2
2
  type __VLS_Props = {
3
3
  config: WsProxyConfig;
4
4
  /** 配置来源:localFile 本地文件 / store 持久化配置(含用户手动修改场景) */
@@ -9,10 +9,12 @@ type __VLS_Props = {
9
9
  hasDictFn?: boolean;
10
10
  };
11
11
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
- reset: (value: WsProxyConfig) => any;
12
+ reset: (value: WsProxyCaseConfig[]) => any;
13
13
  "update:config": (value: WsProxyConfig) => any;
14
+ "exported-all": () => any;
14
15
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
15
- onReset?: ((value: WsProxyConfig) => any) | undefined;
16
+ onReset?: ((value: WsProxyCaseConfig[]) => any) | undefined;
16
17
  "onUpdate:config"?: ((value: WsProxyConfig) => any) | undefined;
18
+ "onExported-all"?: (() => any) | undefined;
17
19
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
18
20
  export default _default;
@@ -10,6 +10,12 @@ type __VLS_Props = {
10
10
  stateInfo: string;
11
11
  /** 心跳检测间隔(秒):0=关闭 */
12
12
  heartbeatInterval: number;
13
+ /** 是否在请求时携带 Token */
14
+ carryToken: boolean;
15
+ /** 认证 Token 值(输入框自动回填) */
16
+ token: string;
17
+ /** 父组件是否传入了 token(未传入时输入框下方显示红色提示) */
18
+ tokenProvided: boolean;
13
19
  };
14
20
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
21
  disconnect: () => any;
@@ -18,6 +24,8 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
18
24
  "update:requestMode": (value: WsProxyRequestMode) => any;
19
25
  "update:autoConnect": (value: boolean) => any;
20
26
  "update:heartbeatInterval": (value: number) => any;
27
+ "update:carryToken": (value: boolean) => any;
28
+ "update:token": (value: string) => any;
21
29
  connect: () => any;
22
30
  reconnect: () => any;
23
31
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
@@ -27,6 +35,8 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
27
35
  "onUpdate:requestMode"?: ((value: WsProxyRequestMode) => any) | undefined;
28
36
  "onUpdate:autoConnect"?: ((value: boolean) => any) | undefined;
29
37
  "onUpdate:heartbeatInterval"?: ((value: number) => any) | undefined;
38
+ "onUpdate:carryToken"?: ((value: boolean) => any) | undefined;
39
+ "onUpdate:token"?: ((value: string) => any) | undefined;
30
40
  onConnect?: (() => any) | undefined;
31
41
  onReconnect?: (() => any) | undefined;
32
42
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
@@ -17,12 +17,14 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
17
17
  update: () => any;
18
18
  "update:targetFieldEditable": (value: boolean) => any;
19
19
  "open-condition": (mapper: FieldMapper) => any;
20
+ "open-valuemap": (mapper: FieldMapper) => any;
20
21
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
21
22
  onAdd?: (() => any) | undefined;
22
23
  onRemove?: ((idx: number) => any) | undefined;
23
24
  onUpdate?: (() => any) | undefined;
24
25
  "onUpdate:targetFieldEditable"?: ((value: boolean) => any) | undefined;
25
26
  "onOpen-condition"?: ((mapper: FieldMapper) => any) | undefined;
27
+ "onOpen-valuemap"?: ((mapper: FieldMapper) => any) | undefined;
26
28
  }>, {
27
29
  targetFieldEditable: boolean;
28
30
  hasDictFn: boolean;
@@ -3,10 +3,27 @@ import { WsProxyConfig, ProxyRule, DictFn } from './proxy';
3
3
  type __VLS_Props = {
4
4
  /** 是否自动应用注入的消息(父组件调用 expose 的 feedMessage 时) */
5
5
  autoApply?: boolean;
6
- /** 初始配置 */
6
+ /** 初始配置(单套,可省略;多方案模式下由当前方案自动匹配/新建) */
7
7
  config?: WsProxyConfig;
8
- /** 场景信息:用于字段映射中 percentToPixel 换算(如 currentCase.scene) */
8
+ /** 场景信息:用于字段映射中 percentToPixel 换算(如 currentCase.scene)
9
+ * 兼容旧用法:new 用法下由 currentCase.scene 派生,仅当 currentCase 缺失时回退此 prop */
9
10
  scene?: IScene | null;
11
+ /** 当前方案 uuid:按方案自动匹配代理配置,未匹配则新建并绑定
12
+ * 兼容旧用法:new 用法下由 currentCase.uuid 派生,仅当 currentCase 缺失时回退此 prop */
13
+ currentCaseId?: string;
14
+ /** 当前方案(含 uuid/scene/title/layers):作为唯一权威来源,
15
+ * 内部派生 caseId 与 scene,并据此动态生成「画布模型类」列表 */
16
+ currentCase?: {
17
+ uuid?: string;
18
+ title?: string;
19
+ scene?: IScene | null;
20
+ layers?: Array<{
21
+ className?: string;
22
+ children?: Array<{
23
+ className?: string;
24
+ }>;
25
+ }>;
26
+ } | null;
10
27
  /** 字典转换函数:用于「字典 Label / 字典 Color」特殊处理
11
28
  * 入参 (name: string, value?: string|number, type: 'label'|'color'),返回 string 赋给画布字段 */
12
29
  dictFn?: DictFn;
@@ -28,9 +45,21 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
28
45
  onRaw?: ((data: unknown) => any) | undefined;
29
46
  "onStatus-change"?: ((connected: boolean) => any) | undefined;
30
47
  }>, {
31
- scene: IScene | null;
32
48
  config: WsProxyConfig;
33
- autoApply: boolean;
49
+ scene: IScene | null;
50
+ currentCase: {
51
+ uuid?: string;
52
+ title?: string;
53
+ scene?: IScene | null;
54
+ layers?: Array<{
55
+ className?: string;
56
+ children?: Array<{
57
+ className?: string;
58
+ }>;
59
+ }>;
60
+ } | null;
34
61
  token: string;
62
+ autoApply: boolean;
63
+ currentCaseId: string;
35
64
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
36
65
  export default _default;
@@ -14,7 +14,7 @@ export interface FieldMapper {
14
14
  target: string;
15
15
  /** payload 源字段路径(支持点号嵌套,如 displayColor) */
16
16
  source?: string;
17
- /** 常量值(与 source 互斥,优先级最高) */
17
+ /** 常量值(与 source 互斥,优先级最高;「固定值」特殊处理时由输入框写入,直接赋给画布字段) */
18
18
  constant?: boolean | number | string;
19
19
  /** 值映射:把源字段的取值映射为指定值(键为源值字符串,如 { '1': true }) */
20
20
  valueMap?: Record<string, boolean | number | string>;
@@ -22,15 +22,17 @@ export interface FieldMapper {
22
22
  defaultValue?: boolean | number | string | Record<string, unknown>;
23
23
  /** 是否启用该映射(默认 true) */
24
24
  enabled?: boolean;
25
- /** 特殊处理:'percentToPixel' 百分比转像素 / 'runtimeToPixel' 运行时坐标转像素 / 'dictLabel' 字典Label / 'dictColor' 字典Color / 'dictColorMap' 对象值批量字典Color / 'condition' 条件判断;为空表示不处理 */
26
- transform?: 'percentToPixel' | 'runtimeToPixel' | 'dictLabel' | 'dictColor' | 'dictColorMap' | 'condition';
25
+ /** 特殊处理:'constant' 固定值 / 'percentToPixel' 百分比转像素 / 'runtimeToPixel' 运行时坐标转像素 / 'dictLabel' 字典Label / 'dictColor' 字典Color / 'dictColorMap' 对象值批量字典Color / 'objDict' 对象值批量映射 / 'modelMap' 模型映射表 / 'condition' 条件判断;为空表示不处理 */
26
+ transform?: 'constant' | 'percentToPixel' | 'runtimeToPixel' | 'dictLabel' | 'dictColor' | 'dictColorMap' | 'objDict' | 'modelMap' | 'condition';
27
27
  /** 换算维度(transform 为 percentToPixel / runtimeToPixel 时必填):'width' 横向 / 'height' 纵向 */
28
28
  transformType?: 'width' | 'height';
29
29
  /** 换算精度(transform 为 percentToPixel 时生效,默认 2) */
30
30
  transformPrecision?: number;
31
- /** 字典名称(transform 为 dictLabel / dictColor 时生效,传给 dictFn 的 name 入参) */
31
+ /** 字典名称(transform 为 dictLabel / dictColor / dictColorMap / objDict 时生效,传给 dictFn 的 name 入参) */
32
32
  dictName?: string;
33
- /** 条件判断列表(transform 为 'condition' 时生效,按顺序匹配首个为 true 的条件,赋其 value 给画布字段;无匹配时保持源值) */
33
+ /** 输出目标类型(transform 为 'objDict' 时生效):'string' 默认 / 'number' 转数字 / 'boolean' 布尔标准化;未命中映射保持原值 */
34
+ transformTargetType?: 'string' | 'number' | 'boolean';
35
+ /** 条件判断列表(transform 为 'condition' 时生效,按顺序匹配首个为 true 的条件,赋其 value 给画布字段;无匹配时回退 defaultValue,未配置则保持源值) */
34
36
  conditions?: ConditionRule[];
35
37
  }
36
38
  /** 字典转换函数:将「源业务数据」字段值按字典名称转换为「画布字段」值
@@ -71,6 +73,8 @@ export interface ProxyRule {
71
73
  resourceMappings?: ResourceFieldMap;
72
74
  /** 全局操作字段映射(operate: 'global' 时生效) */
73
75
  globalFields?: GlobalFieldConfig;
76
+ /** 手动新增标记:「+ 新增」手动添加的规则不随方案设备类型自动移除 */
77
+ custom?: boolean;
74
78
  }
75
79
  /** 请求模式:direct 直接请求(完整 ws/wss 地址);proxy 代理请求(仅 path,通过 vite/nginx 代理转发) */
76
80
  export type WsProxyRequestMode = 'direct' | 'proxy';
@@ -78,10 +82,10 @@ export type WsProxyRequestMode = 'direct' | 'proxy';
78
82
  export type WsProxyDataSource = 'builtin' | 'external';
79
83
  /** WsProxy 代理配置(可导出为 JSON) */
80
84
  export interface WsProxyConfig {
81
- /** 配置文件相对路径(不含 .json,支持嵌套如 lingshu-smart/wsProxyConfig) */
82
- name: string;
83
- /** 配置版本 */
84
- version: number;
85
+ /** 配置文件完整路径(public 起始,含 .json),用于定位与加载本地配置文件 */
86
+ fileUrl?: string;
87
+ /** 配置版本(字符串,如 '1' / '1.0.0') */
88
+ version: string;
85
89
  /** 数据源:builtin 内置模式(组件内置 WebSocket 请求器);external 外接模式(feedMessage 注入);默认 builtin */
86
90
  dataSource?: WsProxyDataSource;
87
91
  /** 默认 WebSocket 地址(可选)
@@ -98,22 +102,40 @@ export interface WsProxyConfig {
98
102
  sourceTypeField?: string;
99
103
  /** 心跳检测间隔(秒):0=关闭;>0=开启,定期发送心跳消息检测连接活性 */
100
104
  heartbeatInterval?: number;
105
+ /** 是否在连接请求时携带 Token(作为 WebSocket 子协议);默认 false */
106
+ carryToken?: boolean;
107
+ /** 模型映射表:源业务数据值 → 画布模型 className(如 { '1': 'MachineTool' })
108
+ * 供字段映射的「模型映射表」特殊处理引用,将源值转换为对应模型的 className */
109
+ modelMap?: Record<string, string>;
101
110
  /** 各消息类型的代理规则 */
102
111
  rules: ProxyRule[];
103
112
  }
113
+ /** 绑定到某一方案的代理器配置:在 WsProxyConfig 基础上增加方案绑定标识 */
114
+ export interface WsProxyCaseConfig extends WsProxyConfig {
115
+ /** 绑定的方案 uuid(currentCase.uuid),用于按方案自动匹配 */
116
+ caseId: string;
117
+ /** 方案名称(currentCase.title),用于方案切换下拉左侧展示;可缺省,缺省时回退 uuid */
118
+ caseName?: string;
119
+ }
120
+ /** 默认本地配置文件完整路径(public 起始,含 .json,用于定位/加载/导出的固定 fileUrl) */
121
+ export declare const DEFAULT_CONFIG_FILE_URL = "public/lingshu-smart/wsProxyConfig.json";
122
+ /** 由 fileUrl 推导实际 fetch 路径:去掉开头多余 / 与 public/ 前缀,补全 .json 扩展名,
123
+ * 并追加时间戳参数以禁用浏览器缓存(保证「重新应用此配置」始终读取最新文件内容) */
124
+ export declare function resolveConfigFetchPath(fileUrl?: string): string;
104
125
  /** 按点号路径从对象取值 */
105
126
  export declare function getPath(obj: unknown, path: string): unknown;
106
127
  /** 按点号路径在对象上设值(自动创建中间对象) */
107
128
  export declare function setPath(obj: Record<string, unknown>, path: string, value: unknown): void;
108
129
  /** 解析单个字段映射:常量 > 值映射 > 源字段 > 默认值
109
- * @param dictFn 字典转换函数(可选,未传入时按默认规则:label 原样返回 value,color 返回 '#fff') */
110
- export declare function resolveMapper(payload: Record<string, unknown>, mapper: FieldMapper, scene?: IScene | null, dictFn?: DictFn): unknown;
130
+ * @param dictFn 字典转换函数(可选,未传入时按默认规则:label 原样返回 value,color 返回 '#fff')
131
+ * @param modelMap 模型映射表(可选,transform 'modelMap' 时引用,将源值转换为画布模型 className) */
132
+ export declare function resolveMapper(payload: Record<string, unknown>, mapper: FieldMapper, scene?: IScene | null, dictFn?: DictFn, modelMap?: Record<string, string>): unknown;
111
133
  /** 根据单条规则构建 operating 对象(operate: 'single') */
112
- export declare function buildOperating(payload: Record<string, unknown>, rule: ProxyRule, scene?: IScene | null, dictFn?: DictFn): ILayerOperating | null;
134
+ export declare function buildOperating(payload: Record<string, unknown>, rule: ProxyRule, scene?: IScene | null, dictFn?: DictFn, modelMap?: Record<string, string>): ILayerOperating | null;
113
135
  /** 根据 Resource 规则构建资源增删 operating 列表(operate: 'resource')
114
136
  * 字段来源由 rule.resourceMappings.add / remove 动态映射配置,未配置时使用内置默认映射。
115
137
  * target 支持点号嵌套:className / id 为目标设备匹配字段,resource.* 为资源对象字段。 */
116
- export declare function buildResourceOperating(payload: Record<string, unknown>, rule: ProxyRule, scene?: IScene | null, dictFn?: DictFn): ILayerOperating[];
138
+ export declare function buildResourceOperating(payload: Record<string, unknown>, rule: ProxyRule, scene?: IScene | null, dictFn?: DictFn, modelMap?: Record<string, string>): ILayerOperating[];
117
139
  /** 根据全局操作规则构建 operating(operate: 'global')
118
140
  * resourceIds 从源消息中按 globalFields.resourceIds 路径提取,为空时使用 payloadKey */
119
141
  export declare function buildGlobalOperating(msg: Record<string, unknown>, rule: ProxyRule, payloadKey: string): ILayerOperating[];
@@ -126,19 +148,40 @@ export declare function buildGlobalOperating(msg: Record<string, unknown>, rule:
126
148
  * @param payloadKey 业务数据字段名:源消息下该字段的数据作为画布运行 payload(默认 data,回退到 payload)
127
149
  * @param sourceTypeField 源类型字段名:从源消息中提取设备类型的字段路径(默认 type)
128
150
  * @param dictFn 字典转换函数(可选,用于 dictLabel / dictColor 特殊处理)
151
+ * @param modelMap 模型映射表(可选,用于 modelMap 特殊处理:源业务数据值 → 画布模型 className)
129
152
  * @returns operating 列表(可能为空数组;非标准数组数据返回空数组由 @raw 处理)
130
153
  */
131
- export declare function applyProxy(rawMessage: unknown, rules: ProxyRule[], scene?: IScene | null, payloadKey?: string, sourceTypeField?: string, dictFn?: DictFn): ILayerOperating[];
154
+ export declare function applyProxy(rawMessage: unknown, rules: ProxyRule[], scene?: IScene | null, payloadKey?: string, sourceTypeField?: string, dictFn?: DictFn, modelMap?: Record<string, string>): ILayerOperating[];
132
155
  /** 资源新增字段默认映射(target 取自 IModelOperating + IResourceOperating,源字段名取自 ViewPageDemo.vue 中 Resource 操作的标准 payload 字段) */
133
156
  export declare const DEFAULT_RESOURCE_ADD_MAPPERS: FieldMapper[];
134
157
  /** 资源移除字段默认映射 */
135
158
  export declare const DEFAULT_RESOURCE_REMOVE_MAPPERS: FieldMapper[];
136
- /** 默认代理配置 */
159
+ /** 默认代理配置(含全部已知设备类型) */
137
160
  export declare function createDefaultConfig(): WsProxyConfig;
138
- /** 校验导入的配置结构是否合法 */
161
+ /** 返回某设备类型的默认代理规则;未知类型返回 null(供「画布模型类」按 currentCase 缺型兜底) */
162
+ export declare function getDefaultDeviceRule(className: string): ProxyRule | null;
163
+ /**
164
+ * 为指定方案构建代理配置:仅包含该方案当前存在的设备类型(deviceClassNames)的默认映射,
165
+ * 外加始终保留的 Resource / BatchRemove 操作规则。供「画布模型类」按 currentCase 动态生成使用。
166
+ * @param caseId 绑定的方案 uuid
167
+ * @param deviceClassNames 方案中实际存在的设备类型 className 列表(去重后)
168
+ */
169
+ export declare function createDefaultConfigForCase(caseId: string, deviceClassNames: string[]): WsProxyCaseConfig;
170
+ /** 校验导入的配置结构是否合法(单个配置对象)
171
+ * 兼容旧配置:仅有 name(相对路径,如 lingshu-smart/wsProxyConfig)时,自动推导为 fileUrl 并删除 name */
139
172
  export declare function validateConfig(raw: unknown): WsProxyConfig | null;
140
- /** 将配置序列化为 JSON 字符串 */
173
+ /** 校验代理器配置数组是否合法 */
174
+ export declare function validateCaseConfigArray(raw: unknown): WsProxyCaseConfig[] | null;
175
+ /** 将配置序列化为 JSON 字符串
176
+ * 字段顺序:caseId / caseName(方案绑定,置于最前)→ fileUrl → 其余配置 */
141
177
  export declare function serializeConfig(config: WsProxyConfig): string;
178
+ /** 将代理器配置数组序列化为 JSON 字符串 */
179
+ export declare function serializeCaseConfigArray(configs: WsProxyCaseConfig[]): string;
180
+ /**
181
+ * 兼容旧版单配置:若读取到的数据是单个配置对象(含 name + rules 数组),
182
+ * 则包装为数组并赋予空 caseId(由调用方按需绑定方案)。
183
+ */
184
+ export declare function normalizeToCaseConfigArray(raw: unknown): WsProxyCaseConfig[];
142
185
  /** 触发浏览器下载 JSON 配置文件(文件名:wsProxyConfig_ + 年月日时分秒) */
143
186
  export declare function downloadConfig(config: WsProxyConfig): void;
144
187
  /** 生成导出文件名:wsProxyConfig_yyyy_MM_dd_HH_mm_ss */
@@ -147,6 +190,7 @@ export declare function timestampName(): string;
147
190
  export type LocalFileConfigResult = {
148
191
  status: 'ok';
149
192
  config: WsProxyConfig;
193
+ configs: WsProxyCaseConfig[];
150
194
  } | {
151
195
  status: 'missing';
152
196
  reason: string;
@@ -157,5 +201,7 @@ export type LocalFileConfigResult = {
157
201
  status: 'unknown';
158
202
  reason: string;
159
203
  };
160
- /** 从业务工程 public 目录读取配置文件(name 为相对路径,如 lingshu-smart/wsProxyConfig) */
161
- export declare function loadLocalFileConfig(name: string): Promise<LocalFileConfigResult>;
204
+ /** 从业务工程 public 目录读取配置文件(fileUrl 为完整路径,如 public/lingshu-smart/wsProxyConfig.json
205
+ * 支持数组格式(每套配置绑定一个方案 caseId);非数组为旧版单配置(无 uuid 匹配概念,直接返回)。
206
+ * 传入 caseId 且为数组格式时,必须匹配到该 uuid 才算加载成功,否则返回 invalid(未匹配到 uuid)。 */
207
+ export declare function loadLocalFileConfig(fileUrl: string, caseId?: string): Promise<LocalFileConfigResult>;
@@ -27,8 +27,8 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
27
27
  readonly name?: string | undefined;
28
28
  readonly disabled?: boolean | undefined;
29
29
  readonly id?: string | undefined;
30
- readonly placeholder?: string | undefined;
31
30
  readonly form?: string | undefined;
31
+ readonly placeholder?: string | undefined;
32
32
  readonly size?: import('element-plus').ComponentSize | undefined;
33
33
  readonly resize?: "none" | "both" | "horizontal" | "vertical" | undefined;
34
34
  readonly ariaLabel?: string | undefined;
@@ -37,7 +37,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
37
37
  readonly suffixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
38
38
  readonly autofocus?: boolean | undefined;
39
39
  readonly readonly?: boolean | undefined;
40
- readonly inputmode?: "none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal" | undefined;
40
+ readonly inputmode?: "none" | "text" | "search" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined;
41
41
  readonly maxlength?: string | number | undefined;
42
42
  readonly minlength?: string | number | undefined;
43
43
  readonly autosize?: import('element-plus').InputAutoSize | undefined;
@@ -72,7 +72,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
72
72
  $root: import('vue').ComponentPublicInstance | null;
73
73
  $parent: import('vue').ComponentPublicInstance | null;
74
74
  $host: Element | null;
75
- $emit: ((event: "blur", evt: FocusEvent) => void) & ((event: "focus", evt: FocusEvent) => void) & ((event: "clear") => void) & ((event: "input", value: string) => void) & ((event: "change", value: string, evt?: Event | undefined) => void) & ((event: "compositionend", evt: CompositionEvent) => void) & ((event: "compositionstart", evt: CompositionEvent) => void) & ((event: "compositionupdate", evt: CompositionEvent) => void) & ((event: "keydown", evt: Event | KeyboardEvent) => void) & ((event: "mouseenter", evt: MouseEvent) => void) & ((event: "mouseleave", evt: MouseEvent) => void) & ((event: "update:modelValue", value: string) => void);
75
+ $emit: ((event: "blur", evt: FocusEvent) => void) & ((event: "input", value: string) => void) & ((event: "focus", evt: FocusEvent) => void) & ((event: "clear") => void) & ((event: "change", value: string, evt?: Event | undefined) => void) & ((event: "compositionend", evt: CompositionEvent) => void) & ((event: "compositionstart", evt: CompositionEvent) => void) & ((event: "compositionupdate", evt: CompositionEvent) => void) & ((event: "keydown", evt: Event | KeyboardEvent) => void) & ((event: "mouseenter", evt: MouseEvent) => void) & ((event: "mouseleave", evt: MouseEvent) => void) & ((event: "update:modelValue", value: string) => void);
76
76
  $el: any;
77
77
  $options: import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
78
78
  name: {
@@ -82,21 +82,21 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
82
82
  type: import('vue').PropType<boolean>;
83
83
  default: undefined;
84
84
  };
85
+ id: {
86
+ type: import('vue').PropType<string>;
87
+ };
85
88
  type: {
86
89
  type: import('vue').PropType<import('element-plus').InputType>;
87
90
  default: import('element-plus').InputType;
88
91
  };
89
- id: {
92
+ form: {
90
93
  type: import('vue').PropType<string>;
91
94
  };
92
95
  placeholder: {
93
96
  type: import('vue').PropType<string>;
94
97
  };
95
- form: {
96
- type: import('vue').PropType<string>;
97
- };
98
98
  size: {
99
- type: import('vue').PropType<"" | "small" | "default" | "large">;
99
+ type: import('vue').PropType<"" | "default" | "small" | "large">;
100
100
  };
101
101
  resize: {
102
102
  type: import('vue').PropType<"horizontal" | "vertical" | "none" | "both">;
@@ -141,7 +141,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
141
141
  type: import('vue').PropType<boolean>;
142
142
  };
143
143
  inputmode: {
144
- type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
144
+ type: import('vue').PropType<"none" | "text" | "search" | "url" | "email" | "tel" | "numeric" | "decimal">;
145
145
  };
146
146
  modelModifiers: {
147
147
  type: import('vue').PropType<import('element-plus').InputModelModifiers>;
@@ -272,21 +272,21 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
272
272
  type: import('vue').PropType<boolean>;
273
273
  default: undefined;
274
274
  };
275
+ id: {
276
+ type: import('vue').PropType<string>;
277
+ };
275
278
  type: {
276
279
  type: import('vue').PropType<import('element-plus').InputType>;
277
280
  default: import('element-plus').InputType;
278
281
  };
279
- id: {
282
+ form: {
280
283
  type: import('vue').PropType<string>;
281
284
  };
282
285
  placeholder: {
283
286
  type: import('vue').PropType<string>;
284
287
  };
285
- form: {
286
- type: import('vue').PropType<string>;
287
- };
288
288
  size: {
289
- type: import('vue').PropType<"" | "small" | "default" | "large">;
289
+ type: import('vue').PropType<"" | "default" | "small" | "large">;
290
290
  };
291
291
  resize: {
292
292
  type: import('vue').PropType<"horizontal" | "vertical" | "none" | "both">;
@@ -331,7 +331,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
331
331
  type: import('vue').PropType<boolean>;
332
332
  };
333
333
  inputmode: {
334
- type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
334
+ type: import('vue').PropType<"none" | "text" | "search" | "url" | "email" | "tel" | "numeric" | "decimal">;
335
335
  };
336
336
  modelModifiers: {
337
337
  type: import('vue').PropType<import('element-plus').InputModelModifiers>;
@@ -385,7 +385,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
385
385
  onMouseenter?: ((evt: MouseEvent) => any) | undefined;
386
386
  onMouseleave?: ((evt: MouseEvent) => any) | undefined;
387
387
  onClear?: (() => any) | undefined;
388
- }, "disabled" | "type" | "blur" | "focus" | "clear" | "input" | "select" | "textarea" | "modelValue" | "autocomplete" | "clearIcon" | "validateEvent" | "tabindex" | "inputStyle" | "ref" | "modelModifiers" | "autosize" | "wordLimitPosition" | "rows" | "textareaStyle" | "isComposing" | "resizeTextarea"> & import('vue').ShallowUnwrapRef<{
388
+ }, "disabled" | "blur" | "type" | "input" | "select" | "textarea" | "focus" | "clear" | "modelValue" | "autocomplete" | "clearIcon" | "validateEvent" | "tabindex" | "inputStyle" | "ref" | "modelModifiers" | "autosize" | "wordLimitPosition" | "rows" | "textareaStyle" | "isComposing" | "resizeTextarea"> & import('vue').ShallowUnwrapRef<{
389
389
  input: import('vue').ShallowRef<HTMLInputElement | undefined>;
390
390
  textarea: import('vue').ShallowRef<HTMLTextAreaElement | undefined>;
391
391
  ref: import('vue').ComputedRef<HTMLInputElement | HTMLTextAreaElement | undefined>;
@@ -27,9 +27,9 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
27
27
  visible: boolean | 0;
28
28
  }) => any) | undefined;
29
29
  }>, {
30
- hideBounds: boolean;
31
30
  stationSlots: IStationSlotConfig[];
32
31
  flowOptions: IFlowConfig;
32
+ hideBounds: boolean;
33
33
  visible: boolean | 0;
34
34
  containerWidth: number;
35
35
  containerHeight: number;