3dviewer-sdk 1.0.25 → 1.0.27

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.
package/dist/index.d.mts CHANGED
@@ -50,9 +50,14 @@ declare enum ViewerMessageType {
50
50
  PDF_CURRENT_PAGE = "viewer-pdf-current-page",
51
51
  HOME_CLICK = "viewer-home-click",
52
52
  NODE_SELECT = "viewer-node-select",
53
+ NODE_SELECTION_CHANGE = "viewer-node-selection-change",
53
54
  PAN_CHANGE = "viewer-pan-change"
54
55
  }
55
56
  type LanguageCode = "en" | "vn";
57
+ type NodeSelectionChangePayload = {
58
+ nodeIds: string[];
59
+ timestamp: number;
60
+ };
56
61
  type CameraZoomPayload = {
57
62
  requestId?: string;
58
63
  percent: number;
@@ -145,6 +150,7 @@ type ViewerEventMap = {
145
150
  nodeId: string;
146
151
  timestamp: number;
147
152
  };
153
+ "node:selection-change": NodeSelectionChangePayload;
148
154
  "interaction:pan-change": {
149
155
  enabled: boolean;
150
156
  };
@@ -304,6 +310,10 @@ declare class NodeModule {
304
310
  nodeId: string;
305
311
  timestamp: number;
306
312
  }) => void) => () => void;
313
+ selectionChange: (cb: (payload: {
314
+ nodeIds: string[];
315
+ timestamp: number;
316
+ }) => void) => () => void;
307
317
  };
308
318
  constructor(viewer: Viewer3D);
309
319
  }
@@ -541,6 +551,7 @@ declare class ModelTreeModule {
541
551
  constructor(viewer: Viewer3D);
542
552
  open(): void;
543
553
  selectNode(nodeId: string | number): void;
554
+ selectNodes(nodeIds: Array<string | number>): void;
544
555
  setNodeVisibility(nodeIds: Array<string | number>, visible: boolean): void;
545
556
  hideNode(nodeIds: Array<string | number>): void;
546
557
  showNode(nodeIds: Array<string | number>): void;
@@ -549,6 +560,7 @@ declare class ModelTreeModule {
549
560
  getTree(options?: GetNodesOptions): Promise<ModelTreeHierarchyNode[]>;
550
561
  private requestNodes;
551
562
  private resolveTimeoutMs;
563
+ private normalizeNodeIds;
552
564
  private postPanelOpen;
553
565
  private postTreeSelectNode;
554
566
  private postTreeSetNodeVisibility;
package/dist/index.d.ts CHANGED
@@ -50,9 +50,14 @@ declare enum ViewerMessageType {
50
50
  PDF_CURRENT_PAGE = "viewer-pdf-current-page",
51
51
  HOME_CLICK = "viewer-home-click",
52
52
  NODE_SELECT = "viewer-node-select",
53
+ NODE_SELECTION_CHANGE = "viewer-node-selection-change",
53
54
  PAN_CHANGE = "viewer-pan-change"
54
55
  }
55
56
  type LanguageCode = "en" | "vn";
57
+ type NodeSelectionChangePayload = {
58
+ nodeIds: string[];
59
+ timestamp: number;
60
+ };
56
61
  type CameraZoomPayload = {
57
62
  requestId?: string;
58
63
  percent: number;
@@ -145,6 +150,7 @@ type ViewerEventMap = {
145
150
  nodeId: string;
146
151
  timestamp: number;
147
152
  };
153
+ "node:selection-change": NodeSelectionChangePayload;
148
154
  "interaction:pan-change": {
149
155
  enabled: boolean;
150
156
  };
@@ -304,6 +310,10 @@ declare class NodeModule {
304
310
  nodeId: string;
305
311
  timestamp: number;
306
312
  }) => void) => () => void;
313
+ selectionChange: (cb: (payload: {
314
+ nodeIds: string[];
315
+ timestamp: number;
316
+ }) => void) => () => void;
307
317
  };
308
318
  constructor(viewer: Viewer3D);
309
319
  }
@@ -541,6 +551,7 @@ declare class ModelTreeModule {
541
551
  constructor(viewer: Viewer3D);
542
552
  open(): void;
543
553
  selectNode(nodeId: string | number): void;
554
+ selectNodes(nodeIds: Array<string | number>): void;
544
555
  setNodeVisibility(nodeIds: Array<string | number>, visible: boolean): void;
545
556
  hideNode(nodeIds: Array<string | number>): void;
546
557
  showNode(nodeIds: Array<string | number>): void;
@@ -549,6 +560,7 @@ declare class ModelTreeModule {
549
560
  getTree(options?: GetNodesOptions): Promise<ModelTreeHierarchyNode[]>;
550
561
  private requestNodes;
551
562
  private resolveTimeoutMs;
563
+ private normalizeNodeIds;
552
564
  private postPanelOpen;
553
565
  private postTreeSelectNode;
554
566
  private postTreeSetNodeVisibility;
package/dist/index.js CHANGED
@@ -164,7 +164,10 @@ var InteractionModule = class {
164
164
  var NodeModule = class {
165
165
  constructor(viewer) {
166
166
  this.viewer = viewer;
167
- this.on = { select: (cb) => this.viewer._on("node:select", cb) };
167
+ this.on = {
168
+ select: (cb) => this.viewer._on("node:select", cb),
169
+ selectionChange: (cb) => this.viewer._on("node:selection-change", cb)
170
+ };
168
171
  }
169
172
  };
170
173
 
@@ -974,16 +977,21 @@ var ModelTreeModule = class {
974
977
  });
975
978
  }
976
979
  selectNode(nodeId) {
980
+ console.log("[3dviewer-sdk] modelTree.selectNode", { nodeId });
977
981
  this.postTreeSelectNode({
978
982
  nodeId: String(nodeId)
979
983
  });
980
984
  }
985
+ selectNodes(nodeIds) {
986
+ const normalizedNodeIds = this.normalizeNodeIds(nodeIds);
987
+ console.log("[3dviewer-sdk] modelTree.selectNodes", { nodeIds, normalizedNodeIds });
988
+ if (normalizedNodeIds.length === 0) return;
989
+ this.postTreeSelectNode({
990
+ nodeIds: normalizedNodeIds
991
+ });
992
+ }
981
993
  setNodeVisibility(nodeIds, visible) {
982
- const normalizedNodeIds = Array.from(
983
- new Set(
984
- nodeIds.map((nodeId) => String(nodeId).trim()).filter((nodeId) => nodeId !== "")
985
- )
986
- );
994
+ const normalizedNodeIds = this.normalizeNodeIds(nodeIds);
987
995
  if (normalizedNodeIds.length === 0) return;
988
996
  this.postTreeSetNodeVisibility({
989
997
  nodeIds: normalizedNodeIds,
@@ -1050,6 +1058,13 @@ var ModelTreeModule = class {
1050
1058
  var _a;
1051
1059
  return Math.max(1e3, (_a = options == null ? void 0 : options.timeoutMs) != null ? _a : 1e4);
1052
1060
  }
1061
+ normalizeNodeIds(nodeIds) {
1062
+ return Array.from(
1063
+ new Set(
1064
+ nodeIds.map((nodeId) => String(nodeId).trim()).filter((nodeId) => nodeId !== "")
1065
+ )
1066
+ );
1067
+ }
1053
1068
  postPanelOpen(payload) {
1054
1069
  this.viewer.postToViewer("viewer-panel-open" /* PANEL_OPEN */, payload);
1055
1070
  }
@@ -1272,6 +1287,16 @@ var Viewer3D = class {
1272
1287
  case "viewer-node-select" /* NODE_SELECT */:
1273
1288
  this._emit("node:select", { nodeId: String((_b = (_a = data.payload) == null ? void 0 : _a.nodeId) != null ? _b : ""), timestamp: Date.now() });
1274
1289
  break;
1290
+ case "viewer-node-selection-change" /* NODE_SELECTION_CHANGE */: {
1291
+ const payload = data.payload;
1292
+ const rawNodeIds = payload == null ? void 0 : payload.nodeIds;
1293
+ const nodeIds = Array.isArray(rawNodeIds) ? rawNodeIds.map((nodeId) => String(nodeId)) : [];
1294
+ this._emit("node:selection-change", {
1295
+ nodeIds,
1296
+ timestamp: Number(payload == null ? void 0 : payload.timestamp) || Date.now()
1297
+ });
1298
+ break;
1299
+ }
1275
1300
  case "viewer-pan-change" /* PAN_CHANGE */:
1276
1301
  this._emit("interaction:pan-change", { enabled: Boolean((_c = data.payload) == null ? void 0 : _c.enabled) });
1277
1302
  break;
package/dist/index.mjs CHANGED
@@ -138,7 +138,10 @@ var InteractionModule = class {
138
138
  var NodeModule = class {
139
139
  constructor(viewer) {
140
140
  this.viewer = viewer;
141
- this.on = { select: (cb) => this.viewer._on("node:select", cb) };
141
+ this.on = {
142
+ select: (cb) => this.viewer._on("node:select", cb),
143
+ selectionChange: (cb) => this.viewer._on("node:selection-change", cb)
144
+ };
142
145
  }
143
146
  };
144
147
 
@@ -948,16 +951,21 @@ var ModelTreeModule = class {
948
951
  });
949
952
  }
950
953
  selectNode(nodeId) {
954
+ console.log("[3dviewer-sdk] modelTree.selectNode", { nodeId });
951
955
  this.postTreeSelectNode({
952
956
  nodeId: String(nodeId)
953
957
  });
954
958
  }
959
+ selectNodes(nodeIds) {
960
+ const normalizedNodeIds = this.normalizeNodeIds(nodeIds);
961
+ console.log("[3dviewer-sdk] modelTree.selectNodes", { nodeIds, normalizedNodeIds });
962
+ if (normalizedNodeIds.length === 0) return;
963
+ this.postTreeSelectNode({
964
+ nodeIds: normalizedNodeIds
965
+ });
966
+ }
955
967
  setNodeVisibility(nodeIds, visible) {
956
- const normalizedNodeIds = Array.from(
957
- new Set(
958
- nodeIds.map((nodeId) => String(nodeId).trim()).filter((nodeId) => nodeId !== "")
959
- )
960
- );
968
+ const normalizedNodeIds = this.normalizeNodeIds(nodeIds);
961
969
  if (normalizedNodeIds.length === 0) return;
962
970
  this.postTreeSetNodeVisibility({
963
971
  nodeIds: normalizedNodeIds,
@@ -1024,6 +1032,13 @@ var ModelTreeModule = class {
1024
1032
  var _a;
1025
1033
  return Math.max(1e3, (_a = options == null ? void 0 : options.timeoutMs) != null ? _a : 1e4);
1026
1034
  }
1035
+ normalizeNodeIds(nodeIds) {
1036
+ return Array.from(
1037
+ new Set(
1038
+ nodeIds.map((nodeId) => String(nodeId).trim()).filter((nodeId) => nodeId !== "")
1039
+ )
1040
+ );
1041
+ }
1027
1042
  postPanelOpen(payload) {
1028
1043
  this.viewer.postToViewer("viewer-panel-open" /* PANEL_OPEN */, payload);
1029
1044
  }
@@ -1246,6 +1261,16 @@ var Viewer3D = class {
1246
1261
  case "viewer-node-select" /* NODE_SELECT */:
1247
1262
  this._emit("node:select", { nodeId: String((_b = (_a = data.payload) == null ? void 0 : _a.nodeId) != null ? _b : ""), timestamp: Date.now() });
1248
1263
  break;
1264
+ case "viewer-node-selection-change" /* NODE_SELECTION_CHANGE */: {
1265
+ const payload = data.payload;
1266
+ const rawNodeIds = payload == null ? void 0 : payload.nodeIds;
1267
+ const nodeIds = Array.isArray(rawNodeIds) ? rawNodeIds.map((nodeId) => String(nodeId)) : [];
1268
+ this._emit("node:selection-change", {
1269
+ nodeIds,
1270
+ timestamp: Number(payload == null ? void 0 : payload.timestamp) || Date.now()
1271
+ });
1272
+ break;
1273
+ }
1249
1274
  case "viewer-pan-change" /* PAN_CHANGE */:
1250
1275
  this._emit("interaction:pan-change", { enabled: Boolean((_c = data.payload) == null ? void 0 : _c.enabled) });
1251
1276
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "3dviewer-sdk",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [