3dviewer-sdk 1.0.21 → 1.0.23

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
@@ -40,6 +40,7 @@ declare enum ViewerMessageType {
40
40
  STATES_OBJECTS_GET_LIST = "viewer-states-objects-get-list",
41
41
  STATES_OBJECTS_LIST = "viewer-states-objects-list",
42
42
  TREE_SELECT_NODE = "viewer-tree-select-node",
43
+ TREE_SET_NODE_VISIBILITY = "viewer-tree-set-node-visibility",
43
44
  TREE_GET_NODE_IDS = "viewer-tree-get-node-ids",
44
45
  TREE_NODE_IDS = "viewer-tree-node-ids",
45
46
  TREE_GET_NODES = "viewer-tree-get-nodes",
@@ -409,7 +410,7 @@ declare class FilesModule {
409
410
  private normalizeBaseUrl;
410
411
  private resolveConversionUrl;
411
412
  private resolveViewerPath;
412
- private normalizeSdkViewerPath;
413
+ private normalizeViewerPath;
413
414
  private resolveViewerOrigin;
414
415
  private resolveHostConversion;
415
416
  private getUploadPath;
@@ -539,6 +540,9 @@ declare class ModelTreeModule {
539
540
  constructor(viewer: Viewer3D);
540
541
  open(): void;
541
542
  selectNode(nodeId: string | number): void;
543
+ setNodeVisibility(nodeIds: Array<string | number>, visible: boolean): void;
544
+ hideNode(nodeIds: Array<string | number>): void;
545
+ showNode(nodeIds: Array<string | number>): void;
542
546
  getNodeIds(options?: GetNodeIdsOptions): Promise<string[]>;
543
547
  getNodes(options?: GetNodesOptions): Promise<ModelTreeNode[]>;
544
548
  getTree(options?: GetNodesOptions): Promise<ModelTreeHierarchyNode[]>;
@@ -546,6 +550,7 @@ declare class ModelTreeModule {
546
550
  private resolveTimeoutMs;
547
551
  private postPanelOpen;
548
552
  private postTreeSelectNode;
553
+ private postTreeSetNodeVisibility;
549
554
  private postTreeGetNodeIds;
550
555
  private postTreeGetNodes;
551
556
  }
@@ -592,6 +597,7 @@ type ObjectPropertiesGetCurrentOptions = ObjectPropertiesWatchOptions & {
592
597
  type ObjectPropertiesChangedEvent = ObjectPropertiesChangedPayload;
593
598
  declare class ObjectPropertiesModule {
594
599
  private viewer;
600
+ private pendingGetCurrent;
595
601
  on: {
596
602
  change: (cb: (payload: ObjectPropertiesChangedEvent) => void) => () => void;
597
603
  };
package/dist/index.d.ts CHANGED
@@ -40,6 +40,7 @@ declare enum ViewerMessageType {
40
40
  STATES_OBJECTS_GET_LIST = "viewer-states-objects-get-list",
41
41
  STATES_OBJECTS_LIST = "viewer-states-objects-list",
42
42
  TREE_SELECT_NODE = "viewer-tree-select-node",
43
+ TREE_SET_NODE_VISIBILITY = "viewer-tree-set-node-visibility",
43
44
  TREE_GET_NODE_IDS = "viewer-tree-get-node-ids",
44
45
  TREE_NODE_IDS = "viewer-tree-node-ids",
45
46
  TREE_GET_NODES = "viewer-tree-get-nodes",
@@ -409,7 +410,7 @@ declare class FilesModule {
409
410
  private normalizeBaseUrl;
410
411
  private resolveConversionUrl;
411
412
  private resolveViewerPath;
412
- private normalizeSdkViewerPath;
413
+ private normalizeViewerPath;
413
414
  private resolveViewerOrigin;
414
415
  private resolveHostConversion;
415
416
  private getUploadPath;
@@ -539,6 +540,9 @@ declare class ModelTreeModule {
539
540
  constructor(viewer: Viewer3D);
540
541
  open(): void;
541
542
  selectNode(nodeId: string | number): void;
543
+ setNodeVisibility(nodeIds: Array<string | number>, visible: boolean): void;
544
+ hideNode(nodeIds: Array<string | number>): void;
545
+ showNode(nodeIds: Array<string | number>): void;
542
546
  getNodeIds(options?: GetNodeIdsOptions): Promise<string[]>;
543
547
  getNodes(options?: GetNodesOptions): Promise<ModelTreeNode[]>;
544
548
  getTree(options?: GetNodesOptions): Promise<ModelTreeHierarchyNode[]>;
@@ -546,6 +550,7 @@ declare class ModelTreeModule {
546
550
  private resolveTimeoutMs;
547
551
  private postPanelOpen;
548
552
  private postTreeSelectNode;
553
+ private postTreeSetNodeVisibility;
549
554
  private postTreeGetNodeIds;
550
555
  private postTreeGetNodes;
551
556
  }
@@ -592,6 +597,7 @@ type ObjectPropertiesGetCurrentOptions = ObjectPropertiesWatchOptions & {
592
597
  type ObjectPropertiesChangedEvent = ObjectPropertiesChangedPayload;
593
598
  declare class ObjectPropertiesModule {
594
599
  private viewer;
600
+ private pendingGetCurrent;
595
601
  on: {
596
602
  change: (cb: (payload: ObjectPropertiesChangedEvent) => void) => () => void;
597
603
  };
package/dist/index.js CHANGED
@@ -172,7 +172,6 @@ var NodeModule = class {
172
172
  var DEFAULT_CONVERSION_URL = "https://dev.3dviewer.anybim.vn/service/conversion";
173
173
  var DEFAULT_VIEWER_BASE_URL = "https://dev.3dviewer.anybim.vn";
174
174
  var SDK_VIEWER_PATH = "/mainviewer-sdk";
175
- var LEGACY_VIEWER_PATH = "/mainviewer";
176
175
  var FilesModule = class {
177
176
  constructor(viewer) {
178
177
  this.viewer = viewer;
@@ -330,18 +329,17 @@ var FilesModule = class {
330
329
  if (viewerUrl) {
331
330
  try {
332
331
  const pathname = new URL(viewerUrl, window.location.href).pathname;
333
- if (pathname && pathname !== "/") return this.normalizeSdkViewerPath(pathname);
332
+ if (pathname && pathname !== "/") return this.normalizeViewerPath(pathname);
334
333
  } catch {
335
334
  }
336
335
  }
337
336
  }
338
- return this.normalizeSdkViewerPath(configuredPath || SDK_VIEWER_PATH);
337
+ return this.normalizeViewerPath(configuredPath || SDK_VIEWER_PATH);
339
338
  }
340
- normalizeSdkViewerPath(path) {
339
+ normalizeViewerPath(path) {
341
340
  const p = path.trim();
342
- if (!p || p === LEGACY_VIEWER_PATH) return SDK_VIEWER_PATH;
343
- const normalized = p.startsWith("/") ? p : `/${p}`;
344
- return normalized === LEGACY_VIEWER_PATH ? SDK_VIEWER_PATH : normalized;
341
+ if (!p) return SDK_VIEWER_PATH;
342
+ return p.startsWith("/") ? p : `/${p}`;
345
343
  }
346
344
  // Viewer host used to open iframe after conversion completes.
347
345
  resolveViewerOrigin() {
@@ -962,6 +960,24 @@ var ModelTreeModule = class {
962
960
  nodeId: String(nodeId)
963
961
  });
964
962
  }
963
+ setNodeVisibility(nodeIds, visible) {
964
+ const normalizedNodeIds = Array.from(
965
+ new Set(
966
+ nodeIds.map((nodeId) => String(nodeId).trim()).filter((nodeId) => nodeId !== "")
967
+ )
968
+ );
969
+ if (normalizedNodeIds.length === 0) return;
970
+ this.postTreeSetNodeVisibility({
971
+ nodeIds: normalizedNodeIds,
972
+ visible
973
+ });
974
+ }
975
+ hideNode(nodeIds) {
976
+ this.setNodeVisibility(nodeIds, false);
977
+ }
978
+ showNode(nodeIds) {
979
+ this.setNodeVisibility(nodeIds, true);
980
+ }
965
981
  getNodeIds(options) {
966
982
  const requestId = createRequestId3("tree");
967
983
  const timeoutMs = this.resolveTimeoutMs(options);
@@ -1022,6 +1038,9 @@ var ModelTreeModule = class {
1022
1038
  postTreeSelectNode(payload) {
1023
1039
  this.viewer.postToViewer("viewer-tree-select-node" /* TREE_SELECT_NODE */, payload);
1024
1040
  }
1041
+ postTreeSetNodeVisibility(payload) {
1042
+ this.viewer.postToViewer("viewer-tree-set-node-visibility" /* TREE_SET_NODE_VISIBILITY */, payload);
1043
+ }
1025
1044
  postTreeGetNodeIds(payload) {
1026
1045
  this.viewer.postToViewer("viewer-tree-get-node-ids" /* TREE_GET_NODE_IDS */, payload);
1027
1046
  }
@@ -1167,19 +1186,28 @@ var ObjectPropertiesModule = class {
1167
1186
  }
1168
1187
  getCurrent(options) {
1169
1188
  var _a;
1189
+ if (this.pendingGetCurrent) {
1190
+ clearTimeout(this.pendingGetCurrent.timer);
1191
+ this.pendingGetCurrent.off();
1192
+ this.pendingGetCurrent.reject(new Error("No object properties"));
1193
+ this.pendingGetCurrent = void 0;
1194
+ }
1170
1195
  const requestId = createRequestId5("object_properties_current");
1171
1196
  const timeoutMs = Math.max(1e3, (_a = options == null ? void 0 : options.timeoutMs) != null ? _a : 1e4);
1172
1197
  return new Promise((resolve, reject) => {
1173
1198
  const timer = setTimeout(() => {
1199
+ this.pendingGetCurrent = void 0;
1174
1200
  off();
1175
- reject(new Error("Timeout while getting current object properties from viewer"));
1201
+ reject(new Error("No object properties"));
1176
1202
  }, timeoutMs);
1177
1203
  const off = this.viewer._on("object-properties:changed", (payload2) => {
1178
1204
  if (payload2.requestId !== requestId) return;
1179
1205
  clearTimeout(timer);
1206
+ this.pendingGetCurrent = void 0;
1180
1207
  off();
1181
1208
  resolve(payload2);
1182
1209
  });
1210
+ this.pendingGetCurrent = { requestId, off, timer, reject };
1183
1211
  const payload = { requestId };
1184
1212
  if (typeof (options == null ? void 0 : options.includeSelectionMeta) === "boolean") {
1185
1213
  payload.includeSelectionMeta = options.includeSelectionMeta;
@@ -1190,8 +1218,6 @@ var ObjectPropertiesModule = class {
1190
1218
  };
1191
1219
 
1192
1220
  // src/viewer.ts
1193
- var SDK_VIEWER_PATH2 = "/mainviewer-sdk";
1194
- var LEGACY_VIEWER_PATH2 = "/mainviewer";
1195
1221
  var Viewer3D = class {
1196
1222
  constructor(options) {
1197
1223
  this.options = options;
@@ -1516,9 +1542,6 @@ var Viewer3D = class {
1516
1542
  withInitialOptions(url) {
1517
1543
  try {
1518
1544
  const parsedUrl = new URL(url, window.location.href);
1519
- if (parsedUrl.pathname === LEGACY_VIEWER_PATH2) {
1520
- parsedUrl.pathname = SDK_VIEWER_PATH2;
1521
- }
1522
1545
  const initialToolbar = this.normalizeInitialToolbar();
1523
1546
  if (initialToolbar) {
1524
1547
  parsedUrl.searchParams.set("useToolbar", JSON.stringify(initialToolbar));
package/dist/index.mjs CHANGED
@@ -146,7 +146,6 @@ var NodeModule = class {
146
146
  var DEFAULT_CONVERSION_URL = "https://dev.3dviewer.anybim.vn/service/conversion";
147
147
  var DEFAULT_VIEWER_BASE_URL = "https://dev.3dviewer.anybim.vn";
148
148
  var SDK_VIEWER_PATH = "/mainviewer-sdk";
149
- var LEGACY_VIEWER_PATH = "/mainviewer";
150
149
  var FilesModule = class {
151
150
  constructor(viewer) {
152
151
  this.viewer = viewer;
@@ -304,18 +303,17 @@ var FilesModule = class {
304
303
  if (viewerUrl) {
305
304
  try {
306
305
  const pathname = new URL(viewerUrl, window.location.href).pathname;
307
- if (pathname && pathname !== "/") return this.normalizeSdkViewerPath(pathname);
306
+ if (pathname && pathname !== "/") return this.normalizeViewerPath(pathname);
308
307
  } catch {
309
308
  }
310
309
  }
311
310
  }
312
- return this.normalizeSdkViewerPath(configuredPath || SDK_VIEWER_PATH);
311
+ return this.normalizeViewerPath(configuredPath || SDK_VIEWER_PATH);
313
312
  }
314
- normalizeSdkViewerPath(path) {
313
+ normalizeViewerPath(path) {
315
314
  const p = path.trim();
316
- if (!p || p === LEGACY_VIEWER_PATH) return SDK_VIEWER_PATH;
317
- const normalized = p.startsWith("/") ? p : `/${p}`;
318
- return normalized === LEGACY_VIEWER_PATH ? SDK_VIEWER_PATH : normalized;
315
+ if (!p) return SDK_VIEWER_PATH;
316
+ return p.startsWith("/") ? p : `/${p}`;
319
317
  }
320
318
  // Viewer host used to open iframe after conversion completes.
321
319
  resolveViewerOrigin() {
@@ -936,6 +934,24 @@ var ModelTreeModule = class {
936
934
  nodeId: String(nodeId)
937
935
  });
938
936
  }
937
+ setNodeVisibility(nodeIds, visible) {
938
+ const normalizedNodeIds = Array.from(
939
+ new Set(
940
+ nodeIds.map((nodeId) => String(nodeId).trim()).filter((nodeId) => nodeId !== "")
941
+ )
942
+ );
943
+ if (normalizedNodeIds.length === 0) return;
944
+ this.postTreeSetNodeVisibility({
945
+ nodeIds: normalizedNodeIds,
946
+ visible
947
+ });
948
+ }
949
+ hideNode(nodeIds) {
950
+ this.setNodeVisibility(nodeIds, false);
951
+ }
952
+ showNode(nodeIds) {
953
+ this.setNodeVisibility(nodeIds, true);
954
+ }
939
955
  getNodeIds(options) {
940
956
  const requestId = createRequestId3("tree");
941
957
  const timeoutMs = this.resolveTimeoutMs(options);
@@ -996,6 +1012,9 @@ var ModelTreeModule = class {
996
1012
  postTreeSelectNode(payload) {
997
1013
  this.viewer.postToViewer("viewer-tree-select-node" /* TREE_SELECT_NODE */, payload);
998
1014
  }
1015
+ postTreeSetNodeVisibility(payload) {
1016
+ this.viewer.postToViewer("viewer-tree-set-node-visibility" /* TREE_SET_NODE_VISIBILITY */, payload);
1017
+ }
999
1018
  postTreeGetNodeIds(payload) {
1000
1019
  this.viewer.postToViewer("viewer-tree-get-node-ids" /* TREE_GET_NODE_IDS */, payload);
1001
1020
  }
@@ -1141,19 +1160,28 @@ var ObjectPropertiesModule = class {
1141
1160
  }
1142
1161
  getCurrent(options) {
1143
1162
  var _a;
1163
+ if (this.pendingGetCurrent) {
1164
+ clearTimeout(this.pendingGetCurrent.timer);
1165
+ this.pendingGetCurrent.off();
1166
+ this.pendingGetCurrent.reject(new Error("No object properties"));
1167
+ this.pendingGetCurrent = void 0;
1168
+ }
1144
1169
  const requestId = createRequestId5("object_properties_current");
1145
1170
  const timeoutMs = Math.max(1e3, (_a = options == null ? void 0 : options.timeoutMs) != null ? _a : 1e4);
1146
1171
  return new Promise((resolve, reject) => {
1147
1172
  const timer = setTimeout(() => {
1173
+ this.pendingGetCurrent = void 0;
1148
1174
  off();
1149
- reject(new Error("Timeout while getting current object properties from viewer"));
1175
+ reject(new Error("No object properties"));
1150
1176
  }, timeoutMs);
1151
1177
  const off = this.viewer._on("object-properties:changed", (payload2) => {
1152
1178
  if (payload2.requestId !== requestId) return;
1153
1179
  clearTimeout(timer);
1180
+ this.pendingGetCurrent = void 0;
1154
1181
  off();
1155
1182
  resolve(payload2);
1156
1183
  });
1184
+ this.pendingGetCurrent = { requestId, off, timer, reject };
1157
1185
  const payload = { requestId };
1158
1186
  if (typeof (options == null ? void 0 : options.includeSelectionMeta) === "boolean") {
1159
1187
  payload.includeSelectionMeta = options.includeSelectionMeta;
@@ -1164,8 +1192,6 @@ var ObjectPropertiesModule = class {
1164
1192
  };
1165
1193
 
1166
1194
  // src/viewer.ts
1167
- var SDK_VIEWER_PATH2 = "/mainviewer-sdk";
1168
- var LEGACY_VIEWER_PATH2 = "/mainviewer";
1169
1195
  var Viewer3D = class {
1170
1196
  constructor(options) {
1171
1197
  this.options = options;
@@ -1490,9 +1516,6 @@ var Viewer3D = class {
1490
1516
  withInitialOptions(url) {
1491
1517
  try {
1492
1518
  const parsedUrl = new URL(url, window.location.href);
1493
- if (parsedUrl.pathname === LEGACY_VIEWER_PATH2) {
1494
- parsedUrl.pathname = SDK_VIEWER_PATH2;
1495
- }
1496
1519
  const initialToolbar = this.normalizeInitialToolbar();
1497
1520
  if (initialToolbar) {
1498
1521
  parsedUrl.searchParams.set("useToolbar", JSON.stringify(initialToolbar));
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "3dviewer-sdk",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [
7
7
  "dist"
8
8
  ],
9
9
  "scripts": {
10
- "build": "tsup src/index.ts --format cjs,esm --dts --no-splitting",
10
+ "build": "tsup src/index.ts --format cjs,esm --dts --no-splitting --clean",
11
11
  "test": "vitest run tests",
12
12
  "test:watch": "vitest tests"
13
13
  },
@@ -1,97 +0,0 @@
1
- import type { MarkupListItem, MarkupOperationResultPayload, PdfCurrentPagePayload, PdfModeEventPayload, PdfToolbarActionEventPayload } from "./messages";
2
- export declare type ViewerEventMap = {
3
- "camera:home": {
4
- timestamp: number;
5
- };
6
- "node:select": {
7
- nodeId: string;
8
- timestamp: number;
9
- };
10
- "interaction:pan-change": {
11
- enabled: boolean;
12
- };
13
- "toolbar:pdf-plan-mode": PdfModeEventPayload;
14
- "toolbar:pdf-document-mode": PdfModeEventPayload;
15
- "toolbar:pdf-first-page": PdfToolbarActionEventPayload;
16
- "toolbar:pdf-previous-page": PdfToolbarActionEventPayload;
17
- "toolbar:pdf-next-page": PdfToolbarActionEventPayload;
18
- "toolbar:pdf-last-page": PdfToolbarActionEventPayload;
19
- "toolbar:pdf-current-page": PdfCurrentPagePayload;
20
- "modelTree:node-ids": {
21
- requestId: string;
22
- nodeIds: string[];
23
- timestamp: number;
24
- };
25
- "sheets:list": {
26
- requestId: string;
27
- sheets: {
28
- id: string | number;
29
- name: string;
30
- is3D?: boolean;
31
- viewId?: string;
32
- }[];
33
- activeSheetId?: string | number | null;
34
- timestamp: number;
35
- };
36
- "markup:list": {
37
- requestId: string;
38
- markups: MarkupListItem[];
39
- timestamp: number;
40
- };
41
- "markup:save": MarkupOperationResultPayload;
42
- "markup:cancel": MarkupOperationResultPayload;
43
- };
44
- export declare type LoadStage = "idle" | "uploading" | "converting" | "rendering" | "completed" | "error";
45
- export declare type LoadStatePayload = {
46
- isLoading: boolean;
47
- stage: LoadStage;
48
- message?: string;
49
- elapsedMs?: number;
50
- };
51
- export declare type PreparedViewerData = {
52
- baseFileId: string;
53
- baseMajorRev: number;
54
- baseMinorRev: number;
55
- fileName: string;
56
- query: string;
57
- url: string;
58
- };
59
- export declare type FilesEventMap = {
60
- "files:state": LoadStatePayload;
61
- "files:upload:start": {
62
- fileName: string;
63
- };
64
- "files:upload:success": {
65
- fileName: string;
66
- baseFileId: string;
67
- };
68
- "files:upload:error": {
69
- fileName: string;
70
- error: string;
71
- };
72
- "files:conversion:start": {
73
- fileName: string;
74
- };
75
- "files:conversion:success": PreparedViewerData;
76
- "files:conversion:error": {
77
- fileName: string;
78
- error: string;
79
- };
80
- "files:render:start": {
81
- url: string;
82
- };
83
- "files:render:success": {
84
- url: string;
85
- };
86
- "files:render:error": {
87
- url?: string;
88
- error: string;
89
- };
90
- "files:load:success": PreparedViewerData;
91
- "files:load:error": {
92
- error: string;
93
- };
94
- };
95
- export declare type SdkEventMap = ViewerEventMap & FilesEventMap;
96
- export declare type SdkEventKey = keyof SdkEventMap;
97
- export declare type SdkEventPayload<K extends SdkEventKey> = SdkEventMap[K];
@@ -1 +0,0 @@
1
- export {};
@@ -1,159 +0,0 @@
1
- export declare enum ViewerMessageType {
2
- LANGUAGE_CHANGE = "viewer-language-change",
3
- ZOOM = "viewer-zoom",
4
- DRAW_MODE = "viewer-draw-mode",
5
- EXPLODE = "viewer-explode",
6
- MARKUP_ACTION = "viewer-markup-action",
7
- MARKUP_SAVE = "viewer-markup-save",
8
- MARKUP_CANCEL = "viewer-markup-cancel",
9
- MARKUP_GET_LIST = "viewer-markup-get-list",
10
- MARKUP_SAVE_RESULT = "viewer-markup-save-result",
11
- MARKUP_CANCEL_RESULT = "viewer-markup-cancel-result",
12
- MARKUP_LIST = "viewer-markup-list",
13
- HOME = "viewer-home",
14
- PAN_TOGGLE = "viewer-pan-toggle",
15
- SELECT = "viewer-select",
16
- AREA_SELECT = "viewer-area-select",
17
- ORBIT = "viewer-orbit",
18
- ROTATE_Z = "viewer-rotate-z",
19
- WALK_THROUGH = "viewer-walk-through",
20
- ZOOM_WINDOW = "viewer-zoom-window",
21
- ZOOM_FIT = "viewer-zoom-fit",
22
- TOOLBAR_CONFIG = "viewer-toolbar-config",
23
- TOOLBAR_VISIBILITY = "viewer-toolbar-visibility",
24
- PANEL_OPEN = "viewer-panel-open",
25
- PANEL_CLOSE = "viewer-panel-close",
26
- CUTTING_PLANE_ACTION = "viewer-cutting-plane-action",
27
- SHEETS_GET_LIST = "viewer-sheets-get-list",
28
- SHEETS_LIST = "viewer-sheets-list",
29
- SHEETS_APPLY = "viewer-sheets-apply",
30
- TREE_SELECT_NODE = "viewer-tree-select-node",
31
- TREE_GET_NODE_IDS = "viewer-tree-get-node-ids",
32
- TREE_NODE_IDS = "viewer-tree-node-ids",
33
- PDF_PLAN_MODE = "viewer-pdf-plan-mode",
34
- PDF_DOCUMENT_MODE = "viewer-pdf-document-mode",
35
- PDF_FIRST_PAGE = "viewer-pdf-first-page",
36
- PDF_PREVIOUS_PAGE = "viewer-pdf-previous-page",
37
- PDF_NEXT_PAGE = "viewer-pdf-next-page",
38
- PDF_LAST_PAGE = "viewer-pdf-last-page",
39
- PDF_CURRENT_PAGE = "viewer-pdf-current-page",
40
- HOME_CLICK = "viewer-home-click",
41
- NODE_SELECT = "viewer-node-select",
42
- PAN_CHANGE = "viewer-pan-change"
43
- }
44
- export declare enum ViewerMessageSource {
45
- SDK = "HC_SDK",
46
- VIEWER = "HC_VIEWER"
47
- }
48
- export declare type OutgoingMessage<T = unknown> = {
49
- source: ViewerMessageSource.SDK;
50
- type: ViewerMessageType;
51
- payload?: T;
52
- };
53
- export declare type IncomingMessage<T = any> = {
54
- source?: ViewerMessageSource | string;
55
- type: ViewerMessageType;
56
- payload?: T;
57
- };
58
- export declare type LanguageCode = "en" | "vn";
59
- export declare type LanguageChangePayload = {
60
- language: LanguageCode;
61
- timestamp?: number;
62
- };
63
- export declare type DrawModeValue = "shaded" | "wireframe" | "hidden-line" | "shaded-wire" | "xray" | "ghosting";
64
- export declare type DrawModePayload = {
65
- mode: DrawModeValue;
66
- };
67
- export declare type ToolbarVisibilityTarget = "all" | "left" | "center" | "right";
68
- export declare type ToolbarVisibilityPayload = {
69
- visible: boolean;
70
- target?: ToolbarVisibilityTarget;
71
- };
72
- export declare type ExplodePayload = {
73
- magnitude: number;
74
- };
75
- export declare type MarkupAction = "line" | "arrow" | "circle" | "ellipse" | "rectangle" | "polygon" | "polyline" | "textbox" | "note" | "callout" | "cloud" | "freehand";
76
- export declare type MarkupActionPayload = {
77
- action: MarkupAction;
78
- };
79
- export declare type MarkupRequestPayload = {
80
- requestId: string;
81
- };
82
- export declare type MarkupOperationResultPayload = {
83
- requestId: string;
84
- success: boolean;
85
- timestamp: number;
86
- error?: string;
87
- };
88
- export declare type MarkupListItem = {
89
- id: string;
90
- viewId: string;
91
- viewName?: string;
92
- title: string;
93
- type: string;
94
- shapeName?: string;
95
- createdDate?: string;
96
- modifiedDate?: string;
97
- createdBy?: string;
98
- lastModifiedBy?: string;
99
- };
100
- export declare type MarkupListPayload = {
101
- requestId: string;
102
- markups: MarkupListItem[];
103
- timestamp: number;
104
- };
105
- export declare type PanelTarget = "clipping-commands" | "setting" | "statesObjects" | "linkedObjects" | "model-tree" | "sheets" | "object-properties";
106
- export declare type PanelOpenPayload = {
107
- panel: PanelTarget;
108
- format?: "3d" | "pdf";
109
- };
110
- export declare type PanelClosePayload = {
111
- panel: PanelTarget;
112
- format?: "3d" | "pdf";
113
- };
114
- export declare type CuttingPlaneAction = "close" | "multi" | "toggle-section" | "toggle-plane" | "plane-x" | "plane-y" | "plane-z" | "plane-box" | "rotate-box" | "reverse-plane-x" | "reverse-plane-y" | "reverse-plane-z";
115
- export declare type CuttingPlaneActionPayload = {
116
- action: CuttingPlaneAction;
117
- };
118
- export declare type SheetsGetListPayload = {
119
- requestId: string;
120
- };
121
- export declare type SheetListItem = {
122
- id: string | number;
123
- name: string;
124
- is3D?: boolean;
125
- viewId?: string;
126
- };
127
- export declare type SheetsListPayload = {
128
- requestId: string;
129
- sheets: SheetListItem[];
130
- activeSheetId?: string | number | null;
131
- timestamp: number;
132
- };
133
- export declare type SheetsApplyPayload = {
134
- sheetId: string | number;
135
- };
136
- export declare type TreeSelectNodePayload = {
137
- nodeId: string;
138
- };
139
- export declare type TreeGetNodeIdsPayload = {
140
- requestId: string;
141
- onlyRealNodes?: boolean;
142
- };
143
- export declare type TreeNodeIdsPayload = {
144
- requestId: string;
145
- nodeIds: string[];
146
- timestamp: number;
147
- };
148
- export declare type PdfModeEventPayload = {
149
- mode: "plan" | "document";
150
- timestamp: number;
151
- };
152
- export declare type PdfToolbarActionEventPayload = {
153
- timestamp: number;
154
- };
155
- export declare type PdfCurrentPagePayload = {
156
- pageIndex: number;
157
- pageNumber: number;
158
- timestamp: number;
159
- };
@@ -1,50 +0,0 @@
1
- // sdk/src/contracts/messages.ts
2
- export var ViewerMessageType;
3
- (function (ViewerMessageType) {
4
- ViewerMessageType["LANGUAGE_CHANGE"] = "viewer-language-change";
5
- ViewerMessageType["ZOOM"] = "viewer-zoom";
6
- ViewerMessageType["DRAW_MODE"] = "viewer-draw-mode";
7
- ViewerMessageType["EXPLODE"] = "viewer-explode";
8
- ViewerMessageType["MARKUP_ACTION"] = "viewer-markup-action";
9
- ViewerMessageType["MARKUP_SAVE"] = "viewer-markup-save";
10
- ViewerMessageType["MARKUP_CANCEL"] = "viewer-markup-cancel";
11
- ViewerMessageType["MARKUP_GET_LIST"] = "viewer-markup-get-list";
12
- ViewerMessageType["MARKUP_SAVE_RESULT"] = "viewer-markup-save-result";
13
- ViewerMessageType["MARKUP_CANCEL_RESULT"] = "viewer-markup-cancel-result";
14
- ViewerMessageType["MARKUP_LIST"] = "viewer-markup-list";
15
- ViewerMessageType["HOME"] = "viewer-home";
16
- ViewerMessageType["PAN_TOGGLE"] = "viewer-pan-toggle";
17
- ViewerMessageType["SELECT"] = "viewer-select";
18
- ViewerMessageType["AREA_SELECT"] = "viewer-area-select";
19
- ViewerMessageType["ORBIT"] = "viewer-orbit";
20
- ViewerMessageType["ROTATE_Z"] = "viewer-rotate-z";
21
- ViewerMessageType["WALK_THROUGH"] = "viewer-walk-through";
22
- ViewerMessageType["ZOOM_WINDOW"] = "viewer-zoom-window";
23
- ViewerMessageType["ZOOM_FIT"] = "viewer-zoom-fit";
24
- ViewerMessageType["TOOLBAR_CONFIG"] = "viewer-toolbar-config";
25
- ViewerMessageType["TOOLBAR_VISIBILITY"] = "viewer-toolbar-visibility";
26
- ViewerMessageType["PANEL_OPEN"] = "viewer-panel-open";
27
- ViewerMessageType["PANEL_CLOSE"] = "viewer-panel-close";
28
- ViewerMessageType["CUTTING_PLANE_ACTION"] = "viewer-cutting-plane-action";
29
- ViewerMessageType["SHEETS_GET_LIST"] = "viewer-sheets-get-list";
30
- ViewerMessageType["SHEETS_LIST"] = "viewer-sheets-list";
31
- ViewerMessageType["SHEETS_APPLY"] = "viewer-sheets-apply";
32
- ViewerMessageType["TREE_SELECT_NODE"] = "viewer-tree-select-node";
33
- ViewerMessageType["TREE_GET_NODE_IDS"] = "viewer-tree-get-node-ids";
34
- ViewerMessageType["TREE_NODE_IDS"] = "viewer-tree-node-ids";
35
- ViewerMessageType["PDF_PLAN_MODE"] = "viewer-pdf-plan-mode";
36
- ViewerMessageType["PDF_DOCUMENT_MODE"] = "viewer-pdf-document-mode";
37
- ViewerMessageType["PDF_FIRST_PAGE"] = "viewer-pdf-first-page";
38
- ViewerMessageType["PDF_PREVIOUS_PAGE"] = "viewer-pdf-previous-page";
39
- ViewerMessageType["PDF_NEXT_PAGE"] = "viewer-pdf-next-page";
40
- ViewerMessageType["PDF_LAST_PAGE"] = "viewer-pdf-last-page";
41
- ViewerMessageType["PDF_CURRENT_PAGE"] = "viewer-pdf-current-page";
42
- ViewerMessageType["HOME_CLICK"] = "viewer-home-click";
43
- ViewerMessageType["NODE_SELECT"] = "viewer-node-select";
44
- ViewerMessageType["PAN_CHANGE"] = "viewer-pan-change";
45
- })(ViewerMessageType || (ViewerMessageType = {}));
46
- export var ViewerMessageSource;
47
- (function (ViewerMessageSource) {
48
- ViewerMessageSource["SDK"] = "HC_SDK";
49
- ViewerMessageSource["VIEWER"] = "HC_VIEWER";
50
- })(ViewerMessageSource || (ViewerMessageSource = {}));
@@ -1,7 +0,0 @@
1
- export declare class Emitter<EventMap extends Record<string, any>> {
2
- private listeners;
3
- on<K extends keyof EventMap>(event: K, cb: (payload: EventMap[K]) => void): () => void;
4
- off<K extends keyof EventMap>(event: K, cb: (payload: EventMap[K]) => void): void;
5
- emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
6
- clear(): void;
7
- }
@@ -1,31 +0,0 @@
1
- // sdk/src/core/emitter.ts
2
- export class Emitter {
3
- constructor() {
4
- this.listeners = {};
5
- }
6
- on(event, cb) {
7
- if (!this.listeners[event]) {
8
- this.listeners[event] = [];
9
- }
10
- const arr = this.listeners[event];
11
- arr.push(cb);
12
- return () => this.off(event, cb);
13
- }
14
- off(event, cb) {
15
- const arr = this.listeners[event];
16
- if (!arr)
17
- return;
18
- const idx = arr.indexOf(cb);
19
- if (idx >= 0)
20
- arr.splice(idx, 1);
21
- if (arr.length === 0)
22
- delete this.listeners[event];
23
- }
24
- emit(event, payload) {
25
- var _a;
26
- (_a = this.listeners[event]) === null || _a === void 0 ? void 0 : _a.forEach((cb) => cb(payload));
27
- }
28
- clear() {
29
- this.listeners = {};
30
- }
31
- }