@jnrs/lingshu-smart 3.1.1 → 3.1.2

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.
@@ -6784,6 +6784,9 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
6784
6784
  } | {
6785
6785
  className: import("@/types").EnumModel.PALLET;
6786
6786
  backgroundColor?: string | undefined;
6787
+ skinTexture?: string | undefined;
6788
+ skinTextureSize?: number | undefined;
6789
+ skinTextureOpacity?: number | undefined;
6787
6790
  stationSlotGroups?: {
6788
6791
  index: number;
6789
6792
  stationSlotGroup: {
@@ -14798,6 +14801,9 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
14798
14801
  } | {
14799
14802
  className: import("@/types").EnumModel.PALLET;
14800
14803
  backgroundColor?: string | undefined;
14804
+ skinTexture?: string | undefined;
14805
+ skinTextureSize?: number | undefined;
14806
+ skinTextureOpacity?: number | undefined;
14801
14807
  stationSlotGroups?: {
14802
14808
  index: number;
14803
14809
  stationSlotGroup: {
@@ -33,14 +33,21 @@ export declare class EditorController {
33
33
  private onDragEnd?;
34
34
  constructor(options: EditorOptions);
35
35
  selectEquipment(condition?: string): void;
36
+ selectEquipments(ids: string[]): void;
37
+ getSelectedIds(): string[];
36
38
  rerenderModel(modelConfig: ILayer): void;
37
39
  private addEvent;
38
- /** MOVE 事件停止判定为拖拽结束的静默时长(ms) */
39
- private static readonly DRAG_END_SILENCE;
40
+ /** 拖拽进行中标志(MOVE/SCALE/ROTATE 置位,指针释放复位) */
40
41
  private dragging;
41
- private dragEndTimer;
42
- /** 标记拖拽进行中:首次触发 onDragStart,并重置结束计时器 */
42
+ /** 标记拖拽进行中:首次触发 onDragStart(结束由真实指针释放事件驱动,见 handlePointerUp) */
43
43
  private markDragging;
44
+ /**
45
+ * 真实手势结束:以指针释放为准(window pointerup / pointercancel)
46
+ * 原实现用「MOVE 静默超过 150ms 即视为拖拽结束」的计时器近似,拖拽中途停顿(手停鼠标不停离)
47
+ * 会误判结束 → store 回写旧坐标并重建模型 → 正在拖动/缩放的图形被销毁,表现为拖动自动中断、
48
+ * 缩放飘移抖动。leafer 编辑器的 MOVE/SCALE/ROTATE 事件无 START/END 生命周期,故用原生指针事件兜底
49
+ */
50
+ private handlePointerUp;
44
51
  destroy(): void;
45
52
  }
46
53
  export {};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 设备图标导出(一次性工具页面,配合 icon-exporter.html 与 icon-save-server.mjs 使用)
3
+ * 遍历设备菜单预设,将每个设备模型以默认尺寸渲染到 200×200 透明画布,
4
+ * zoom fit 无边距适配后导出 200×200 透明 PNG,POST 到本地保存服务写入 assets。
5
+ */
6
+ export {};
@@ -6751,6 +6751,9 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
6751
6751
  } | {
6752
6752
  className: import("@/types").EnumModel.PALLET;
6753
6753
  backgroundColor?: string | undefined;
6754
+ skinTexture?: string | undefined;
6755
+ skinTextureSize?: number | undefined;
6756
+ skinTextureOpacity?: number | undefined;
6754
6757
  stationSlotGroups?: {
6755
6758
  index: number;
6756
6759
  stationSlotGroup: {
@@ -14765,6 +14768,9 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
14765
14768
  } | {
14766
14769
  className: import("@/types").EnumModel.PALLET;
14767
14770
  backgroundColor?: string | undefined;
14771
+ skinTexture?: string | undefined;
14772
+ skinTextureSize?: number | undefined;
14773
+ skinTextureOpacity?: number | undefined;
14768
14774
  stationSlotGroups?: {
14769
14775
  index: number;
14770
14776
  stationSlotGroup: {
@@ -22803,6 +22809,9 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
22803
22809
  } | {
22804
22810
  className: import("@/types").EnumModel.PALLET;
22805
22811
  backgroundColor?: string | undefined;
22812
+ skinTexture?: string | undefined;
22813
+ skinTextureSize?: number | undefined;
22814
+ skinTextureOpacity?: number | undefined;
22806
22815
  stationSlotGroups?: {
22807
22816
  index: number;
22808
22817
  stationSlotGroup: {
@@ -30817,6 +30826,9 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
30817
30826
  } | {
30818
30827
  className: import("@/types").EnumModel.PALLET;
30819
30828
  backgroundColor?: string | undefined;
30829
+ skinTexture?: string | undefined;
30830
+ skinTextureSize?: number | undefined;
30831
+ skinTextureOpacity?: number | undefined;
30820
30832
  stationSlotGroups?: {
30821
30833
  index: number;
30822
30834
  stationSlotGroup: {
@@ -1,4 +1,4 @@
1
- import { b as a, u as o, c as r, a as t } from "../useAppStore-C-k9P93v.js";
1
+ import { b as a, u as o, c as r, a as t } from "../useAppStore-CWXWj32D.js";
2
2
  export {
3
3
  a as useAppStore,
4
4
  o as useDataStore,
@@ -6744,6 +6744,9 @@ export declare const useAppStore: import('pinia').StoreDefinition<"@jnrs/lingshu
6744
6744
  } | {
6745
6745
  className: import("@/types").EnumModel.PALLET;
6746
6746
  backgroundColor?: string | undefined;
6747
+ skinTexture?: string | undefined;
6748
+ skinTextureSize?: number | undefined;
6749
+ skinTextureOpacity?: number | undefined;
6747
6750
  stationSlotGroups?: {
6748
6751
  index: number;
6749
6752
  stationSlotGroup: {
@@ -14758,6 +14761,9 @@ export declare const useAppStore: import('pinia').StoreDefinition<"@jnrs/lingshu
14758
14761
  } | {
14759
14762
  className: import("@/types").EnumModel.PALLET;
14760
14763
  backgroundColor?: string | undefined;
14764
+ skinTexture?: string | undefined;
14765
+ skinTextureSize?: number | undefined;
14766
+ skinTextureOpacity?: number | undefined;
14761
14767
  stationSlotGroups?: {
14762
14768
  index: number;
14763
14769
  stationSlotGroup: {
@@ -22781,6 +22787,9 @@ export declare const useAppStore: import('pinia').StoreDefinition<"@jnrs/lingshu
22781
22787
  } | {
22782
22788
  className: import("@/types").EnumModel.PALLET;
22783
22789
  backgroundColor?: string | undefined;
22790
+ skinTexture?: string | undefined;
22791
+ skinTextureSize?: number | undefined;
22792
+ skinTextureOpacity?: number | undefined;
22784
22793
  stationSlotGroups?: {
22785
22794
  index: number;
22786
22795
  stationSlotGroup: {
@@ -30795,6 +30804,9 @@ export declare const useAppStore: import('pinia').StoreDefinition<"@jnrs/lingshu
30795
30804
  } | {
30796
30805
  className: import("@/types").EnumModel.PALLET;
30797
30806
  backgroundColor?: string | undefined;
30807
+ skinTexture?: string | undefined;
30808
+ skinTextureSize?: number | undefined;
30809
+ skinTextureOpacity?: number | undefined;
30798
30810
  stationSlotGroups?: {
30799
30811
  index: number;
30800
30812
  stationSlotGroup: {
@@ -38818,6 +38830,9 @@ export declare const useAppStore: import('pinia').StoreDefinition<"@jnrs/lingshu
38818
38830
  } | {
38819
38831
  className: import("@/types").EnumModel.PALLET;
38820
38832
  backgroundColor?: string | undefined;
38833
+ skinTexture?: string | undefined;
38834
+ skinTextureSize?: number | undefined;
38835
+ skinTextureOpacity?: number | undefined;
38821
38836
  stationSlotGroups?: {
38822
38837
  index: number;
38823
38838
  stationSlotGroup: {
@@ -46832,6 +46847,9 @@ export declare const useAppStore: import('pinia').StoreDefinition<"@jnrs/lingshu
46832
46847
  } | {
46833
46848
  className: import("@/types").EnumModel.PALLET;
46834
46849
  backgroundColor?: string | undefined;
46850
+ skinTexture?: string | undefined;
46851
+ skinTextureSize?: number | undefined;
46852
+ skinTextureOpacity?: number | undefined;
46835
46853
  stationSlotGroups?: {
46836
46854
  index: number;
46837
46855
  stationSlotGroup: {
@@ -6768,6 +6768,9 @@ export declare const useDataStore: import('pinia').StoreDefinition<"@jnrs/lingsh
6768
6768
  } | {
6769
6769
  className: import("@/types").EnumModel.PALLET;
6770
6770
  backgroundColor?: string | undefined;
6771
+ skinTexture?: string | undefined;
6772
+ skinTextureSize?: number | undefined;
6773
+ skinTextureOpacity?: number | undefined;
6771
6774
  stationSlotGroups?: {
6772
6775
  index: number;
6773
6776
  stationSlotGroup: {
@@ -14782,6 +14785,9 @@ export declare const useDataStore: import('pinia').StoreDefinition<"@jnrs/lingsh
14782
14785
  } | {
14783
14786
  className: import("@/types").EnumModel.PALLET;
14784
14787
  backgroundColor?: string | undefined;
14788
+ skinTexture?: string | undefined;
14789
+ skinTextureSize?: number | undefined;
14790
+ skinTextureOpacity?: number | undefined;
14785
14791
  stationSlotGroups?: {
14786
14792
  index: number;
14787
14793
  stationSlotGroup: {
@@ -23246,6 +23252,9 @@ export declare const useDataStore: import('pinia').StoreDefinition<"@jnrs/lingsh
23246
23252
  } | {
23247
23253
  className: import("@/types").EnumModel.PALLET;
23248
23254
  backgroundColor?: string | undefined;
23255
+ skinTexture?: string | undefined;
23256
+ skinTextureSize?: number | undefined;
23257
+ skinTextureOpacity?: number | undefined;
23249
23258
  stationSlotGroups?: {
23250
23259
  index: number;
23251
23260
  stationSlotGroup: {
@@ -31260,6 +31269,9 @@ export declare const useDataStore: import('pinia').StoreDefinition<"@jnrs/lingsh
31260
31269
  } | {
31261
31270
  className: import("@/types").EnumModel.PALLET;
31262
31271
  backgroundColor?: string | undefined;
31272
+ skinTexture?: string | undefined;
31273
+ skinTextureSize?: number | undefined;
31274
+ skinTextureOpacity?: number | undefined;
31263
31275
  stationSlotGroups?: {
31264
31276
  index: number;
31265
31277
  stationSlotGroup: {
@@ -39724,6 +39736,9 @@ export declare const useDataStore: import('pinia').StoreDefinition<"@jnrs/lingsh
39724
39736
  } | {
39725
39737
  className: import("@/types").EnumModel.PALLET;
39726
39738
  backgroundColor?: string | undefined;
39739
+ skinTexture?: string | undefined;
39740
+ skinTextureSize?: number | undefined;
39741
+ skinTextureOpacity?: number | undefined;
39727
39742
  stationSlotGroups?: {
39728
39743
  index: number;
39729
39744
  stationSlotGroup: {
@@ -47738,6 +47753,9 @@ export declare const useDataStore: import('pinia').StoreDefinition<"@jnrs/lingsh
47738
47753
  } | {
47739
47754
  className: import("@/types").EnumModel.PALLET;
47740
47755
  backgroundColor?: string | undefined;
47756
+ skinTexture?: string | undefined;
47757
+ skinTextureSize?: number | undefined;
47758
+ skinTextureOpacity?: number | undefined;
47741
47759
  stationSlotGroups?: {
47742
47760
  index: number;
47743
47761
  stationSlotGroup: {
@@ -4,6 +4,25 @@ export declare const useEditorStore: import('pinia').StoreDefinition<"@jnrs/ling
4
4
  scene: import('vue').ComputedRef<IScene | null>;
5
5
  layers: import('vue').ComputedRef<ILayer[]>;
6
6
  currentLayer: import('vue').ComputedRef<ILayer | null>;
7
+ isMultiSelect: import('vue').ComputedRef<boolean>;
8
+ selectedIds: import('vue').Ref<string[], string[]>;
9
+ selectedCount: import('vue').ComputedRef<number>;
10
+ multiSelectLayout: import('vue').Ref<{
11
+ x: number;
12
+ y: number;
13
+ percentX: number;
14
+ percentY: number;
15
+ } | null, {
16
+ x: number;
17
+ y: number;
18
+ percentX: number;
19
+ percentY: number;
20
+ } | {
21
+ x: number;
22
+ y: number;
23
+ percentX: number;
24
+ percentY: number;
25
+ } | null>;
7
26
  initContainer: (options: IContainer) => void;
8
27
  resizeContainer: () => void;
9
28
  destroyContainer: () => void;
@@ -11,14 +30,38 @@ export declare const useEditorStore: import('pinia').StoreDefinition<"@jnrs/ling
11
30
  updateScene: import('@jnrs/shared/lodash').DebouncedFunc<() => void>;
12
31
  addLayer: (layer: ILayer) => void;
13
32
  addLayerAtPosition: (layer: ILayer, worldX: number, worldY: number) => void;
33
+ duplicateSelectedLayers: () => void;
34
+ hideSelectedLayers: () => void;
35
+ removeSelectedLayers: () => void;
36
+ translateSelectedLayers: (dx: number, dy: number) => void;
14
37
  selectLayer: (id?: string) => void;
38
+ cancelSelection: () => void;
15
39
  updateLayer: (layer: ILayer) => void;
16
40
  renderLayers: import('@jnrs/shared/lodash').DebouncedFunc<() => void>;
17
- }, never>, Pick<{
41
+ }, "selectedIds" | "multiSelectLayout">, Pick<{
18
42
  currentCase: import('vue').ComputedRef<ICase | null>;
19
43
  scene: import('vue').ComputedRef<IScene | null>;
20
44
  layers: import('vue').ComputedRef<ILayer[]>;
21
45
  currentLayer: import('vue').ComputedRef<ILayer | null>;
46
+ isMultiSelect: import('vue').ComputedRef<boolean>;
47
+ selectedIds: import('vue').Ref<string[], string[]>;
48
+ selectedCount: import('vue').ComputedRef<number>;
49
+ multiSelectLayout: import('vue').Ref<{
50
+ x: number;
51
+ y: number;
52
+ percentX: number;
53
+ percentY: number;
54
+ } | null, {
55
+ x: number;
56
+ y: number;
57
+ percentX: number;
58
+ percentY: number;
59
+ } | {
60
+ x: number;
61
+ y: number;
62
+ percentX: number;
63
+ percentY: number;
64
+ } | null>;
22
65
  initContainer: (options: IContainer) => void;
23
66
  resizeContainer: () => void;
24
67
  destroyContainer: () => void;
@@ -26,14 +69,38 @@ export declare const useEditorStore: import('pinia').StoreDefinition<"@jnrs/ling
26
69
  updateScene: import('@jnrs/shared/lodash').DebouncedFunc<() => void>;
27
70
  addLayer: (layer: ILayer) => void;
28
71
  addLayerAtPosition: (layer: ILayer, worldX: number, worldY: number) => void;
72
+ duplicateSelectedLayers: () => void;
73
+ hideSelectedLayers: () => void;
74
+ removeSelectedLayers: () => void;
75
+ translateSelectedLayers: (dx: number, dy: number) => void;
29
76
  selectLayer: (id?: string) => void;
77
+ cancelSelection: () => void;
30
78
  updateLayer: (layer: ILayer) => void;
31
79
  renderLayers: import('@jnrs/shared/lodash').DebouncedFunc<() => void>;
32
- }, "scene" | "layers" | "currentCase" | "currentLayer">, Pick<{
80
+ }, "scene" | "layers" | "currentCase" | "currentLayer" | "isMultiSelect" | "selectedCount">, Pick<{
33
81
  currentCase: import('vue').ComputedRef<ICase | null>;
34
82
  scene: import('vue').ComputedRef<IScene | null>;
35
83
  layers: import('vue').ComputedRef<ILayer[]>;
36
84
  currentLayer: import('vue').ComputedRef<ILayer | null>;
85
+ isMultiSelect: import('vue').ComputedRef<boolean>;
86
+ selectedIds: import('vue').Ref<string[], string[]>;
87
+ selectedCount: import('vue').ComputedRef<number>;
88
+ multiSelectLayout: import('vue').Ref<{
89
+ x: number;
90
+ y: number;
91
+ percentX: number;
92
+ percentY: number;
93
+ } | null, {
94
+ x: number;
95
+ y: number;
96
+ percentX: number;
97
+ percentY: number;
98
+ } | {
99
+ x: number;
100
+ y: number;
101
+ percentX: number;
102
+ percentY: number;
103
+ } | null>;
37
104
  initContainer: (options: IContainer) => void;
38
105
  resizeContainer: () => void;
39
106
  destroyContainer: () => void;
@@ -41,7 +108,12 @@ export declare const useEditorStore: import('pinia').StoreDefinition<"@jnrs/ling
41
108
  updateScene: import('@jnrs/shared/lodash').DebouncedFunc<() => void>;
42
109
  addLayer: (layer: ILayer) => void;
43
110
  addLayerAtPosition: (layer: ILayer, worldX: number, worldY: number) => void;
111
+ duplicateSelectedLayers: () => void;
112
+ hideSelectedLayers: () => void;
113
+ removeSelectedLayers: () => void;
114
+ translateSelectedLayers: (dx: number, dy: number) => void;
44
115
  selectLayer: (id?: string) => void;
116
+ cancelSelection: () => void;
45
117
  updateLayer: (layer: ILayer) => void;
46
118
  renderLayers: import('@jnrs/shared/lodash').DebouncedFunc<() => void>;
47
- }, "initContainer" | "resizeContainer" | "destroyContainer" | "initEditor" | "updateScene" | "addLayer" | "addLayerAtPosition" | "selectLayer" | "updateLayer" | "renderLayers">>;
119
+ }, "initContainer" | "resizeContainer" | "destroyContainer" | "initEditor" | "updateScene" | "addLayer" | "addLayerAtPosition" | "duplicateSelectedLayers" | "hideSelectedLayers" | "removeSelectedLayers" | "translateSelectedLayers" | "selectLayer" | "cancelSelection" | "updateLayer" | "renderLayers">>;
@@ -184,6 +184,12 @@ export interface IPalletConfig extends IModel {
184
184
  className: EnumModel.PALLET;
185
185
  /** 主体背景色(默认 '#3C3C3C') */
186
186
  backgroundColor?: string;
187
+ /** 皮肤贴图纹理(TextureEffect 名称;空串表示无贴图;缺省为 'MatrixGrid' 兼容历史外观) */
188
+ skinTexture?: string;
189
+ /** 皮肤贴图平铺大小(单格像素,缺省按材质预设) */
190
+ skinTextureSize?: number;
191
+ /** 皮肤贴图透明度 0~1(缺省按材质预设) */
192
+ skinTextureOpacity?: number;
187
193
  /** 多工位层配置数组(一层=一个工位组) */
188
194
  stationSlotGroups?: IPalletLayerConfig[];
189
195
  /** 兼容旧配置:托盘工位组(无 stationSlotGroups 时迁移为第 1 层) */
@@ -9,6 +9,13 @@ export declare abstract class ModelAbs<T extends ILayer = ILayer> extends BaseAb
9
9
  * 供子类反查画布全局信息(如扩展工位宿主设备),模型间不直接互相引用
10
10
  */
11
11
  appController: AppController | null;
12
+ /**
13
+ * 编辑器模式(appEditable 场景,AppController.addModel 时注入)
14
+ * 「预览交互」配置(hittable / clickable 等)只应影响预览模式,编辑器内不受影响
15
+ */
16
+ editMode: boolean;
17
+ /** 交互可命中:编辑器模式恒为 true,预览模式按配置(未配置视为可交互) */
18
+ protected get interactionHittable(): boolean;
12
19
  protected abstract operating(data: ILayerOperating): void;
13
20
  /**
14
21
  * 设备沿 x 移动的动画时长(秒)
@@ -1,5 +1,5 @@
1
1
  import { Box, IFill } from 'leafer';
2
- export type TextureEffect = 'LightGrid' | 'DarkGrid' | 'MatrixGrid' | 'LightDot' | 'DarkDot' | 'WoodFloor' | 'VerticalBar';
2
+ export type TextureEffect = 'LightGrid' | 'DarkGrid' | 'MatrixGrid' | 'LightDot' | 'DarkDot' | 'WoodFloor' | 'VerticalBar' | 'BrushedMetal' | 'StainlessSteel' | 'CarbonFiber' | 'Plastic' | 'WoodPlank' | 'PaintCoat' | 'MetalMesh' | 'MetalHole';
3
3
  export interface ITextureOptions {
4
4
  className?: string;
5
5
  width?: number;