@jnrs/lingshu-smart 2.2.35 → 2.2.36

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 (30) hide show
  1. package/AGENTS.md +33 -12
  2. package/README.md +8 -8
  3. package/dist/components/debug/DebugPanel.vue.d.ts +1 -60
  4. package/dist/components/debug/WsProxy/ConnPanel.vue.d.ts +13 -4
  5. package/dist/components/debug/WsProxy/index.vue.d.ts +3 -6
  6. package/dist/components/debug/WsProxy/proxy.d.ts +16 -4
  7. package/dist/components/editor/ControlBar/CaseTitleEdit.vue.d.ts +87 -87
  8. package/dist/components/editor/OptionCard/Equipment/models/Pallet.vue.d.ts +2 -0
  9. package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupDialog.vue.d.ts +4 -0
  10. package/dist/components/editor/OptionCard/Equipment/stationSlot/StationSlotGroupLayers.vue.d.ts +2 -0
  11. package/dist/components/index.d.ts +1 -2
  12. package/dist/components/index.js +13337 -13018
  13. package/dist/components/preview/index.vue.d.ts +296 -0
  14. package/dist/index.js +94 -86
  15. package/dist/lingshu-smart/wsProxyConfig.json +30 -0
  16. package/dist/locales/index.js +2 -2
  17. package/dist/playground/ViewPageDemo.vue.d.ts +596 -8
  18. package/dist/stores/useAppStore.d.ts +888 -0
  19. package/dist/stores/useDataStore.d.ts +888 -0
  20. package/dist/stores/useDebugStore.d.ts +30 -12
  21. package/dist/types/components/config.types.d.ts +5 -0
  22. package/dist/types/enums.d.ts +2 -1
  23. package/dist/types/guards.d.ts +7 -1
  24. package/dist/types/models/config.types.d.ts +25 -1
  25. package/dist/types/models/operating.types.d.ts +14 -1
  26. package/dist/ui/models/Pallet.d.ts +16 -0
  27. package/dist/ui/models/ShuttleStation.d.ts +17 -4
  28. package/package.json +1 -1
  29. package/dist/components/debug/WsProxy/WsProxyPage.vue.d.ts +0 -14
  30. package/dist/components/debug/WsProxy/broadcast.d.ts +0 -31
package/AGENTS.md CHANGED
@@ -476,6 +476,7 @@ onMounted(() => {
476
476
  type ILayerOperating =
477
477
  | IMachineToolOperating
478
478
  | ILoadingStationOperating
479
+ | IShuttleStationOperating
479
480
  | IMarkingMachineOperating
480
481
  | ICleaningMachineOperating
481
482
  | ISingleJointRobotOperating
@@ -483,6 +484,7 @@ type ILayerOperating =
483
484
  | IRGVOperating
484
485
  | IRailOperating
485
486
  | IResourceStoreOperating
487
+ | IPalletOperating
486
488
  ```
487
489
 
488
490
  ### 子类型一览
@@ -491,6 +493,7 @@ type ILayerOperating =
491
493
  | ---------------------------- | -------------------- | ------------------------------------------------------------------ | -------------------------------------------------- | ------------------ |
492
494
  | `IMachineToolOperating` | `MACHINE_TOOL` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(含旋转)、进度条、出入口、工位槽 | `MachineTool` |
493
495
  | `ILoadingStationOperating` | `LOADING_STATION` | `light?`, `progress?`, `entrance?`, `stationRotatable?` | 状态灯(无旋转)、进度条、出入口、工位槽 | `LoadingStation` |
496
+ | `IShuttleStationOperating` | `SHUTTLE_STATION` | `light?`, `layerStatus?` | 状态灯、多工位层状态灯 | `ShuttleStation` |
494
497
  | `IMarkingMachineOperating` | `MARKING_MACHINE` | `light?`, `progress?`, `entrance?`, `laserSiteNumberArray?` | 状态灯、进度条、出入口、工位槽、激光工位指示 | `MarkingMachine` |
495
498
  | `ICleaningMachineOperating` | `CLEANING_MACHINE` | `light?`, `progress?`, `entrance?` | 状态灯、进度条、出入口、工位槽 | `CleaningMachine` |
496
499
  | `ISingleJointRobotOperating` | `SINGLE_JOINT_ROBOT` | `light?`, `x?`, `y?`, `j1?`, `currentFixture?`, `resource?` | 双状态灯、轨道位移、关节旋转、夹具切换、双工位槽 | `SingleJointRobot` |
@@ -498,6 +501,7 @@ type ILayerOperating =
498
501
  | `IRGVOperating` | `RGV` | `light?`, `x?`, `j1?`, `forkXY?`, `forkZ?`, `resource?` | 双状态灯、轨道位移、旋转、货叉 XY/Z、双工位槽 | `Rgv` |
499
502
  | `IRailOperating` | `RAIL` | `x?`, `botId?` | 拖链动画(关联 botId 的设备移动时拖链跟随) | `Rail` |
500
503
  | `IResourceStoreOperating` | `RESOURCE_STORE` | `light?`, `x?`, `resource?` | 状态灯、轨道位移、托盘/刀具工位槽 | `ResourceStore` |
504
+ | `IPalletOperating` | `PALLET` | `light?`, `x?`, `y?` | 状态灯、X/Y 位移 | `Pallet` |
501
505
 
502
506
  ### 子类型字段详情
503
507
 
@@ -521,6 +525,15 @@ type ILayerOperating =
521
525
  | `stationRotatable` | `boolean` | 工位容器方向 |
522
526
  | `resource` | `IResourceOperating` | 工位槽资源 |
523
527
 
528
+ #### IShuttleStationOperating
529
+
530
+ | 属性 | 类型 | 说明 |
531
+ | ------------- | ----------------------------------- | --------------------------------------------------------------- |
532
+ | `light` | `Omit<ILightOperating, 'rotating'>` | 状态灯(不支持旋转灯效) |
533
+ | `layerStatus` | `Record<number, number \| string>` | 各层工位组状态灯:键为层索引(1-based),值为状态码或颜色字符串 |
534
+
535
+ > `layerStatus` 在代理器中通过 `dictColorMap` 转换后值为颜色字符串;未转换时值为状态数字码。
536
+
524
537
  #### IMarkingMachineOperating
525
538
 
526
539
  | 属性 | 类型 | 说明 |
@@ -596,6 +609,14 @@ type ILayerOperating =
596
609
  | `x` | `number` | 沿轨道位移(像素,随行托场景) |
597
610
  | `resource` | `IResourceOperating` | 托盘/刀具工位槽增删 |
598
611
 
612
+ #### IPalletOperating
613
+
614
+ | 属性 | 类型 | 说明 |
615
+ | ------- | ----------------- | ----------------------- |
616
+ | `light` | `ILightOperating` | 状态灯 |
617
+ | `x` | `number` | 沿 X 轴移动位置(像素) |
618
+ | `y` | `number` | 沿 Y 轴移动位置(像素) |
619
+
599
620
  ### 子组件运转类型(IComponentOperating)
600
621
 
601
622
  被 `ILayerOperating` 各字段引用的子组件操作类型,定义于 `src/types/components/operating.types.ts`:
@@ -699,18 +720,18 @@ type ILayerOperating =
699
720
 
700
721
  ### 架构
701
722
 
702
- | 模块 | 职责 |
703
- | ---------------------------------- | ---------------------------------------------------------------- |
704
- | `utils/logger.ts` | 统一日志工具,支持 tag 着色、LogLevel 过滤、`operating` 追踪级别 |
705
- | `utils/debug-flags.ts` | 模块级动画标志位,供 UI 组件直接导入控制循环动画 |
706
- | `utils/performance-stats.ts` | 性能统计工具,记录运行时长和 WebSocket 数据接收量 |
707
- | `stores/useDebugStore.ts` | 全局调试配置 Pinia store,localStorage 持久化 |
708
- | `composables/useDebugEasterEgg.ts` | 调试触发检测:500ms 内 10 次点击打开面板 |
709
- | `components/debug/DebugPanel.vue` | 调试配置对话框 UI |
710
- | `components/debug/ScriptRunner/` | Socket 脚本模拟器:脚本步骤编排、断点调试、消息结构配置(code/msg、payload 字段名、type)、日志查看 |
711
- | `components/debug/WsProxy/` | WebSocket 代理器:声明式字段映射将后端 socket 结构桥接为 operating,支持连接/断开/重连、日志、配置导出/导入、场景像素换算(percentToPixel 百分比/ runtimeToPixel 运行时坐标)、standalone 独立标签页模式 / remote 远程接收模式(BroadcastChannel 跨标签页流转数据) |
712
- | `components/debug/WsProxy/WsProxyPage.vue` | `WsProxy` 独立路由页面组件:以独立 URL/标签页运行代理器配置,将 operating/raw/状态广播给预览页驱动图形运转 |
713
- | `controller/AppController.ts` | 提供 `toggleShadows` / `toggleAnimations` / `setFps` 方法 |
723
+ | 模块 | 职责 |
724
+ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
725
+ | `utils/logger.ts` | 统一日志工具,支持 tag 着色、LogLevel 过滤、`operating` 追踪级别 |
726
+ | `utils/debug-flags.ts` | 模块级动画标志位,供 UI 组件直接导入控制循环动画 |
727
+ | `utils/performance-stats.ts` | 性能统计工具,记录运行时长和 WebSocket 数据接收量 |
728
+ | `stores/useDebugStore.ts` | 全局调试配置 Pinia store,localStorage 持久化 |
729
+ | `composables/useDebugEasterEgg.ts` | 调试触发检测:500ms 内 10 次点击打开面板 |
730
+ | `components/debug/DebugPanel.vue` | 调试配置对话框 UI |
731
+ | `components/debug/ScriptRunner/` | Socket 脚本模拟器:脚本步骤编排、断点调试、消息结构配置(code/msg、payload 字段名、type)、日志查看 |
732
+ | `components/debug/WsProxy/` | WebSocket 代理器:声明式字段映射将后端 socket 结构桥接为 operating,支持连接/断开/重连、日志、配置导出/导入、场景像素换算(percentToPixel 百分比/ runtimeToPixel 运行时坐标)、standalone 独立标签页模式 / remote 远程接收模式(BroadcastChannel 跨标签页流转数据) |
733
+ | `components/debug/WsProxy/WsProxyPage.vue` | `WsProxy` 独立路由页面组件:以独立 URL/标签页运行代理器配置,将 operating/raw/状态广播给预览页驱动图形运转 |
734
+ | `controller/AppController.ts` | 提供 `toggleShadows` / `toggleAnimations` / `setFps` 方法 |
714
735
 
715
736
  ### 日志系统
716
737
 
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 驱动设备动画;`WsProxyPage` 独立路由页面支持单独标签页配置并通过 BroadcastChannel 广播给预览页 |
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
 
@@ -1,61 +1,2 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
2
- wsProxyRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
3
- autoApply?: boolean;
4
- config?: import('./WsProxy/proxy').WsProxyConfig;
5
- scene?: import('../..').IScene | null;
6
- dictFn?: import('./WsProxy/proxy').DictFn;
7
- standalone?: boolean;
8
- remote?: boolean;
9
- }> & Readonly<{
10
- onOperating?: ((data: import('../..').ILayerOperating) => any) | undefined;
11
- onRaw?: ((data: unknown) => any) | undefined;
12
- "onStatus-change"?: ((connected: boolean) => any) | undefined;
13
- }>, {
14
- open: () => void;
15
- feedMessage: (rawMessage: any) => void;
16
- setConfig: (cfg: import('./WsProxy/proxy').WsProxyConfig) => void;
17
- isConnected: import('vue').Ref<boolean, boolean>;
18
- rules: import('vue').ComputedRef<import('./WsProxy/proxy').ProxyRule[]>;
19
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
20
- operating: (data: import('../..').ILayerOperating) => any;
21
- raw: (data: unknown) => any;
22
- "status-change": (connected: boolean) => any;
23
- }, import('vue').PublicProps, {
24
- scene: import('../..').IScene | null;
25
- config: import('./WsProxy/proxy').WsProxyConfig;
26
- remote: boolean;
27
- autoApply: boolean;
28
- standalone: boolean;
29
- }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
30
- P: {};
31
- B: {};
32
- D: {};
33
- C: {};
34
- M: {};
35
- Defaults: {};
36
- }, Readonly<{
37
- autoApply?: boolean;
38
- config?: import('./WsProxy/proxy').WsProxyConfig;
39
- scene?: import('../..').IScene | null;
40
- dictFn?: import('./WsProxy/proxy').DictFn;
41
- standalone?: boolean;
42
- remote?: boolean;
43
- }> & Readonly<{
44
- onOperating?: ((data: import('../..').ILayerOperating) => any) | undefined;
45
- onRaw?: ((data: unknown) => any) | undefined;
46
- "onStatus-change"?: ((connected: boolean) => any) | undefined;
47
- }>, {
48
- open: () => void;
49
- feedMessage: (rawMessage: any) => void;
50
- setConfig: (cfg: import('./WsProxy/proxy').WsProxyConfig) => void;
51
- isConnected: import('vue').Ref<boolean, boolean>;
52
- rules: import('vue').ComputedRef<import('./WsProxy/proxy').ProxyRule[]>;
53
- }, {}, {}, {}, {
54
- scene: import('../..').IScene | null;
55
- config: import('./WsProxy/proxy').WsProxyConfig;
56
- remote: boolean;
57
- autoApply: boolean;
58
- standalone: boolean;
59
- }> | null;
60
- }, any>;
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
61
2
  export default _default;
@@ -1,5 +1,10 @@
1
+ import { WsProxyRequestMode } from './proxy';
1
2
  type __VLS_Props = {
2
3
  url: string;
4
+ /** 请求模式:direct 直接请求 / proxy 代理请求 */
5
+ requestMode: WsProxyRequestMode;
6
+ /** 是否自动连接:组件挂载且 wsUrl 有效时自动建立 WebSocket 连接 */
7
+ autoConnect: boolean;
3
8
  isConnected: boolean;
4
9
  isConnecting: boolean;
5
10
  stateInfo: string;
@@ -7,18 +12,22 @@ type __VLS_Props = {
7
12
  heartbeatInterval: number;
8
13
  };
9
14
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
+ disconnect: () => any;
16
+ send: (data: string) => any;
10
17
  "update:url": (value: string) => any;
18
+ "update:requestMode": (value: WsProxyRequestMode) => any;
19
+ "update:autoConnect": (value: boolean) => any;
11
20
  "update:heartbeatInterval": (value: number) => any;
12
21
  connect: () => any;
13
- disconnect: () => any;
14
22
  reconnect: () => any;
15
- send: (data: string) => any;
16
23
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
24
+ onDisconnect?: (() => any) | undefined;
25
+ onSend?: ((data: string) => any) | undefined;
17
26
  "onUpdate:url"?: ((value: string) => any) | undefined;
27
+ "onUpdate:requestMode"?: ((value: WsProxyRequestMode) => any) | undefined;
28
+ "onUpdate:autoConnect"?: ((value: boolean) => any) | undefined;
18
29
  "onUpdate:heartbeatInterval"?: ((value: number) => any) | undefined;
19
30
  onConnect?: (() => any) | undefined;
20
- onDisconnect?: (() => any) | undefined;
21
31
  onReconnect?: (() => any) | undefined;
22
- onSend?: ((data: string) => any) | undefined;
23
32
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
24
33
  export default _default;
@@ -10,10 +10,8 @@ type __VLS_Props = {
10
10
  /** 字典转换函数:用于「字典 Label / 字典 Color」特殊处理
11
11
  * 入参 (name: string, value?: string|number, type: 'label'|'color'),返回 string 赋给画布字段 */
12
12
  dictFn?: DictFn;
13
- /** 独立标签页模式:全屏布局,自动打开,并将 operating/raw/状态 通过 BroadcastChannel 广播 */
14
- standalone?: boolean;
15
- /** 远程接收模式:监听 BroadcastChannel,将独立代理器广播的 operating/raw/状态 透传给父组件 */
16
- remote?: boolean;
13
+ /** 认证 token:作为 WebSocket 子协议(subprotocol)附带在连接请求中(参考 useWebSocket 的 token 用法) */
14
+ token?: string;
17
15
  };
18
16
  declare const _default: import('vue').DefineComponent<__VLS_Props, {
19
17
  open: () => void;
@@ -32,8 +30,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
32
30
  }>, {
33
31
  scene: IScene | null;
34
32
  config: WsProxyConfig;
35
- remote: boolean;
36
33
  autoApply: boolean;
37
- standalone: boolean;
34
+ token: string;
38
35
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
39
36
  export default _default;
@@ -19,11 +19,11 @@ export interface FieldMapper {
19
19
  /** 值映射:把源字段的取值映射为指定值(键为源值字符串,如 { '1': true }) */
20
20
  valueMap?: Record<string, boolean | number | string>;
21
21
  /** 源字段为空或未命中 valueMap 时的兜底值 */
22
- defaultValue?: boolean | number | string;
22
+ defaultValue?: boolean | number | string | Record<string, unknown>;
23
23
  /** 是否启用该映射(默认 true) */
24
24
  enabled?: boolean;
25
- /** 特殊处理:'percentToPixel' 百分比转像素 / 'runtimeToPixel' 运行时坐标转像素 / 'dictLabel' 字典Label / 'dictColor' 字典Color / 'condition' 条件判断;为空表示不处理 */
26
- transform?: 'percentToPixel' | 'runtimeToPixel' | 'dictLabel' | 'dictColor' | 'condition';
25
+ /** 特殊处理:'percentToPixel' 百分比转像素 / 'runtimeToPixel' 运行时坐标转像素 / 'dictLabel' 字典Label / 'dictColor' 字典Color / 'dictColorMap' 对象值批量字典Color / 'condition' 条件判断;为空表示不处理 */
26
+ transform?: 'percentToPixel' | 'runtimeToPixel' | 'dictLabel' | 'dictColor' | 'dictColorMap' | 'condition';
27
27
  /** 换算维度(transform 为 percentToPixel / runtimeToPixel 时必填):'width' 横向 / 'height' 纵向 */
28
28
  transformType?: 'width' | 'height';
29
29
  /** 换算精度(transform 为 percentToPixel 时生效,默认 2) */
@@ -87,14 +87,26 @@ export interface ProxyRule {
87
87
  /** 全局操作字段映射(operate: 'global' 时生效) */
88
88
  globalFields?: GlobalFieldConfig;
89
89
  }
90
+ /** 请求模式:direct 直接请求(完整 ws/wss 地址);proxy 代理请求(仅 path,通过 vite/nginx 代理转发) */
91
+ export type WsProxyRequestMode = 'direct' | 'proxy';
92
+ /** 数据源:builtin 内置模式(组件内置 WebSocket 请求器);external 外接模式(feedMessage 注入) */
93
+ export type WsProxyDataSource = 'builtin' | 'external';
90
94
  /** WsProxy 代理配置(可导出为 JSON) */
91
95
  export interface WsProxyConfig {
92
96
  /** 配置文件相对路径(不含 .json,支持嵌套如 lingshu-smart/wsProxyConfig) */
93
97
  name: string;
94
98
  /** 配置版本 */
95
99
  version: number;
96
- /** 默认 WebSocket 地址(可选) */
100
+ /** 数据源:builtin 内置模式(组件内置 WebSocket 请求器);external 外接模式(feedMessage 注入);默认 builtin */
101
+ dataSource?: WsProxyDataSource;
102
+ /** 默认 WebSocket 地址(可选)
103
+ * direct 模式:完整 ws/wss 地址(如 ws://host:port/path)
104
+ * proxy 模式:仅路径(如 ws/monitor?page=ctsMonitor),运行时拼接当前页面协议+主机 */
97
105
  wsUrl?: string;
106
+ /** 请求模式:direct 直接请求 / proxy 代理请求(仅填 path,通过 vite/nginx 代理);默认 direct */
107
+ requestMode?: WsProxyRequestMode;
108
+ /** 是否在组件挂载且 wsUrl 有效时自动连接 WebSocket(默认 true) */
109
+ autoConnect?: boolean;
98
110
  /** 业务数据字段名:源消息下该字段的数据作为画布运行 payload(默认 data) */
99
111
  payloadKey?: string;
100
112
  /** 源类型字段名:从源消息中提取设备类型的字段路径(默认 type,可设为 data.type 等) */
@@ -17,12 +17,12 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
17
17
  }> & Omit<{
18
18
  readonly type: import('element-plus').InputType;
19
19
  readonly modelValue: string | number | null;
20
- readonly modelModifiers: import('element-plus').InputModelModifiers;
21
20
  readonly autocomplete: string;
22
- readonly wordLimitPosition: "inside" | "outside";
23
- readonly tabindex: string | number;
24
21
  readonly validateEvent: boolean;
22
+ readonly tabindex: string | number;
25
23
  readonly inputStyle: string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null;
24
+ readonly modelModifiers: import('element-plus').InputModelModifiers;
25
+ readonly wordLimitPosition: "inside" | "outside";
26
26
  readonly rows: number;
27
27
  readonly name?: string | undefined;
28
28
  readonly disabled?: boolean | undefined;
@@ -31,22 +31,22 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
31
31
  readonly form?: string | undefined;
32
32
  readonly size?: import('element-plus').ComponentSize | undefined;
33
33
  readonly resize?: "none" | "both" | "horizontal" | "vertical" | undefined;
34
+ readonly ariaLabel?: string | undefined;
35
+ readonly clearable?: boolean | undefined;
36
+ readonly clearIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
37
+ readonly suffixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
34
38
  readonly autofocus?: boolean | undefined;
39
+ readonly readonly?: boolean | undefined;
40
+ readonly inputmode?: "none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal" | undefined;
35
41
  readonly maxlength?: string | number | undefined;
36
42
  readonly minlength?: string | number | undefined;
37
43
  readonly autosize?: import('element-plus').InputAutoSize | undefined;
38
44
  readonly formatter?: ((value: string) => string) | undefined;
39
45
  readonly parser?: ((value: string) => string) | undefined;
40
- readonly readonly?: boolean | undefined;
41
- readonly clearable?: boolean | undefined;
42
- readonly clearIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
43
46
  readonly showPassword?: boolean | undefined;
44
47
  readonly showWordLimit?: boolean | undefined;
45
- readonly suffixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
46
48
  readonly prefixIcon?: import('element-plus/es/utils/index.mjs').IconPropType | undefined;
47
49
  readonly containerRole?: string | undefined;
48
- readonly ariaLabel?: string | undefined;
49
- readonly inputmode?: "none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal" | undefined;
50
50
  "onUpdate:modelValue"?: ((value: string) => any) | undefined | undefined;
51
51
  onInput?: ((value: string) => any) | undefined | undefined;
52
52
  onFocus?: ((evt: FocusEvent) => any) | undefined | undefined;
@@ -59,7 +59,7 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
59
59
  onMouseenter?: ((evt: MouseEvent) => any) | undefined | undefined;
60
60
  onMouseleave?: ((evt: MouseEvent) => any) | undefined | undefined;
61
61
  onClear?: (() => any) | undefined | undefined;
62
- } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, "disabled" | "type" | "modelValue" | "modelModifiers" | "autocomplete" | "clearIcon" | "wordLimitPosition" | "tabindex" | "validateEvent" | "inputStyle" | "rows">;
62
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, "disabled" | "type" | "modelValue" | "autocomplete" | "clearIcon" | "validateEvent" | "tabindex" | "inputStyle" | "modelModifiers" | "wordLimitPosition" | "rows">;
63
63
  $attrs: {
64
64
  [x: string]: unknown;
65
65
  };
@@ -101,13 +101,48 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
101
101
  resize: {
102
102
  type: import('vue').PropType<"horizontal" | "vertical" | "none" | "both">;
103
103
  };
104
- autofocus: {
105
- type: import('vue').PropType<boolean>;
106
- };
107
104
  modelValue: {
108
105
  type: import('vue').PropType<string | number | null>;
109
106
  default: "";
110
107
  };
108
+ ariaLabel: {
109
+ type: import('vue').PropType<string>;
110
+ };
111
+ autocomplete: {
112
+ type: import('vue').PropType<string>;
113
+ default: "off";
114
+ };
115
+ clearable: {
116
+ type: import('vue').PropType<boolean>;
117
+ };
118
+ clearIcon: {
119
+ type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
120
+ default: any;
121
+ };
122
+ suffixIcon: {
123
+ type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
124
+ };
125
+ validateEvent: {
126
+ type: import('vue').PropType<boolean>;
127
+ default: true;
128
+ };
129
+ tabindex: {
130
+ type: import('vue').PropType<string | number>;
131
+ default: 0;
132
+ };
133
+ inputStyle: {
134
+ type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
135
+ default: () => {};
136
+ };
137
+ autofocus: {
138
+ type: import('vue').PropType<boolean>;
139
+ };
140
+ readonly: {
141
+ type: import('vue').PropType<boolean>;
142
+ };
143
+ inputmode: {
144
+ type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
145
+ };
111
146
  modelModifiers: {
112
147
  type: import('vue').PropType<import('element-plus').InputModelModifiers>;
113
148
  default: () => {};
@@ -121,26 +156,12 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
121
156
  autosize: {
122
157
  type: import('vue').PropType<import('element-plus').InputAutoSize>;
123
158
  };
124
- autocomplete: {
125
- type: import('vue').PropType<string>;
126
- default: "off";
127
- };
128
159
  formatter: {
129
160
  type: import('vue').PropType<(value: string) => string>;
130
161
  };
131
162
  parser: {
132
163
  type: import('vue').PropType<(value: string) => string>;
133
164
  };
134
- readonly: {
135
- type: import('vue').PropType<boolean>;
136
- };
137
- clearable: {
138
- type: import('vue').PropType<boolean>;
139
- };
140
- clearIcon: {
141
- type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
142
- default: any;
143
- };
144
165
  showPassword: {
145
166
  type: import('vue').PropType<boolean>;
146
167
  };
@@ -151,37 +172,16 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
151
172
  type: import('vue').PropType<"inside" | "outside">;
152
173
  default: "inside";
153
174
  };
154
- suffixIcon: {
155
- type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
156
- };
157
175
  prefixIcon: {
158
176
  type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
159
177
  };
160
178
  containerRole: {
161
179
  type: import('vue').PropType<string>;
162
180
  };
163
- tabindex: {
164
- type: import('vue').PropType<string | number>;
165
- default: 0;
166
- };
167
- validateEvent: {
168
- type: import('vue').PropType<boolean>;
169
- default: true;
170
- };
171
- inputStyle: {
172
- type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
173
- default: () => {};
174
- };
175
181
  rows: {
176
182
  type: import('vue').PropType<number>;
177
183
  default: 2;
178
184
  };
179
- ariaLabel: {
180
- type: import('vue').PropType<string>;
181
- };
182
- inputmode: {
183
- type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
184
- };
185
185
  }>> & {
186
186
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
187
187
  onInput?: ((value: string) => any) | undefined;
@@ -291,13 +291,48 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
291
291
  resize: {
292
292
  type: import('vue').PropType<"horizontal" | "vertical" | "none" | "both">;
293
293
  };
294
- autofocus: {
295
- type: import('vue').PropType<boolean>;
296
- };
297
294
  modelValue: {
298
295
  type: import('vue').PropType<string | number | null>;
299
296
  default: "";
300
297
  };
298
+ ariaLabel: {
299
+ type: import('vue').PropType<string>;
300
+ };
301
+ autocomplete: {
302
+ type: import('vue').PropType<string>;
303
+ default: "off";
304
+ };
305
+ clearable: {
306
+ type: import('vue').PropType<boolean>;
307
+ };
308
+ clearIcon: {
309
+ type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
310
+ default: any;
311
+ };
312
+ suffixIcon: {
313
+ type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
314
+ };
315
+ validateEvent: {
316
+ type: import('vue').PropType<boolean>;
317
+ default: true;
318
+ };
319
+ tabindex: {
320
+ type: import('vue').PropType<string | number>;
321
+ default: 0;
322
+ };
323
+ inputStyle: {
324
+ type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
325
+ default: () => {};
326
+ };
327
+ autofocus: {
328
+ type: import('vue').PropType<boolean>;
329
+ };
330
+ readonly: {
331
+ type: import('vue').PropType<boolean>;
332
+ };
333
+ inputmode: {
334
+ type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
335
+ };
301
336
  modelModifiers: {
302
337
  type: import('vue').PropType<import('element-plus').InputModelModifiers>;
303
338
  default: () => {};
@@ -311,26 +346,12 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
311
346
  autosize: {
312
347
  type: import('vue').PropType<import('element-plus').InputAutoSize>;
313
348
  };
314
- autocomplete: {
315
- type: import('vue').PropType<string>;
316
- default: "off";
317
- };
318
349
  formatter: {
319
350
  type: import('vue').PropType<(value: string) => string>;
320
351
  };
321
352
  parser: {
322
353
  type: import('vue').PropType<(value: string) => string>;
323
354
  };
324
- readonly: {
325
- type: import('vue').PropType<boolean>;
326
- };
327
- clearable: {
328
- type: import('vue').PropType<boolean>;
329
- };
330
- clearIcon: {
331
- type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
332
- default: any;
333
- };
334
355
  showPassword: {
335
356
  type: import('vue').PropType<boolean>;
336
357
  };
@@ -341,37 +362,16 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
341
362
  type: import('vue').PropType<"inside" | "outside">;
342
363
  default: "inside";
343
364
  };
344
- suffixIcon: {
345
- type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
346
- };
347
365
  prefixIcon: {
348
366
  type: import('vue').PropType<import('element-plus/es/utils/index.mjs').IconPropType>;
349
367
  };
350
368
  containerRole: {
351
369
  type: import('vue').PropType<string>;
352
370
  };
353
- tabindex: {
354
- type: import('vue').PropType<string | number>;
355
- default: 0;
356
- };
357
- validateEvent: {
358
- type: import('vue').PropType<boolean>;
359
- default: true;
360
- };
361
- inputStyle: {
362
- type: import('vue').PropType<string | false | import('vue').CSSProperties | import('vue').StyleValue[] | null>;
363
- default: () => {};
364
- };
365
371
  rows: {
366
372
  type: import('vue').PropType<number>;
367
373
  default: 2;
368
374
  };
369
- ariaLabel: {
370
- type: import('vue').PropType<string>;
371
- };
372
- inputmode: {
373
- type: import('vue').PropType<"none" | "search" | "url" | "text" | "email" | "tel" | "numeric" | "decimal">;
374
- };
375
375
  }>> & {
376
376
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
377
377
  onInput?: ((value: string) => any) | undefined;
@@ -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" | "ref" | "modelValue" | "modelModifiers" | "autosize" | "autocomplete" | "clearIcon" | "wordLimitPosition" | "tabindex" | "validateEvent" | "inputStyle" | "rows" | "textareaStyle" | "isComposing" | "resizeTextarea"> & import('vue').ShallowUnwrapRef<{
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<{
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>;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -5,6 +5,7 @@ interface Props {
5
5
  resourceType: EnumResourceType;
6
6
  flowOptions?: IFlowConfig;
7
7
  stationSlots?: IStationSlotConfig[];
8
+ hideBounds?: boolean;
8
9
  containerWidth?: number;
9
10
  containerHeight?: number;
10
11
  }
@@ -13,14 +14,17 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
13
14
  save: (data: {
14
15
  flowOptions: IFlowConfig;
15
16
  stationSlots: IStationSlotConfig[];
17
+ hideBounds: boolean;
16
18
  }) => any;
17
19
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
18
20
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
19
21
  onSave?: ((data: {
20
22
  flowOptions: IFlowConfig;
21
23
  stationSlots: IStationSlotConfig[];
24
+ hideBounds: boolean;
22
25
  }) => any) | undefined;
23
26
  }>, {
27
+ hideBounds: boolean;
24
28
  stationSlots: IStationSlotConfig[];
25
29
  flowOptions: IFlowConfig;
26
30
  containerWidth: number;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -3,5 +3,4 @@ import { default as LingshuSmartPreview } from './preview/index.vue';
3
3
  import { default as PerformanceStats } from './debug/PerformanceStats.vue';
4
4
  import { default as ScriptRunner } from './debug/ScriptRunner/index.vue';
5
5
  import { default as WsProxy } from './debug/WsProxy/index.vue';
6
- import { default as WsProxyPage } from './debug/WsProxy/WsProxyPage.vue';
7
- export { LingshuSmartEditor, LingshuSmartPreview, PerformanceStats, ScriptRunner, WsProxy, WsProxyPage };
6
+ export { LingshuSmartEditor, LingshuSmartPreview, PerformanceStats, ScriptRunner, WsProxy };