3dviewer-sdk 1.0.10 → 1.0.12

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
@@ -232,6 +232,7 @@ declare class NodeModule {
232
232
 
233
233
  type FilesConfig = {
234
234
  baseUrl?: string;
235
+ conversionBaseUrl?: string;
235
236
  viewerPath?: string;
236
237
  uploadPath?: string;
237
238
  };
@@ -319,6 +320,7 @@ declare class FilesModule {
319
320
  private resolveFile;
320
321
  private normalizeBaseUrl;
321
322
  private resolveBaseUrl;
323
+ private resolveConversionBaseUrl;
322
324
  private resolveViewerPath;
323
325
  private resolveViewerOrigin;
324
326
  private resolveHostConversion;
@@ -475,13 +477,16 @@ declare class LanguageModule {
475
477
  set(language: LanguageCode): void;
476
478
  }
477
479
 
480
+ type InitialToolbarVisibility = Partial<Record<ToolbarVisibilityTarget, boolean>>;
478
481
  type Viewer3DOptions = {
479
482
  container: HTMLElement | string;
480
483
  url?: string;
481
484
  baseUrl?: string;
485
+ conversionBaseUrl?: string;
482
486
  viewerPath?: string;
483
487
  uploadPath?: string;
484
488
  file?: File;
489
+ initialToolbarVisibility?: InitialToolbarVisibility;
485
490
  width?: string;
486
491
  height?: string;
487
492
  sandbox?: string;
@@ -510,6 +515,7 @@ declare class Viewer3D {
510
515
  open(url: string): void;
511
516
  destroy(): void;
512
517
  private ensureInit;
518
+ private withInitialOptions;
513
519
  _on<K extends SdkEventKey>(event: K, cb: (payload: SdkEventPayload<K>) => void): () => void;
514
520
  _off<K extends SdkEventKey>(event: K, cb: (payload: SdkEventPayload<K>) => void): void;
515
521
  _emit<K extends SdkEventKey>(event: K, payload: SdkEventPayload<K>): void;
@@ -517,4 +523,4 @@ declare class Viewer3D {
517
523
  private handleMessage;
518
524
  }
519
525
 
520
- export { type ConvertOptions, type ConvertV2Options, type FileInfoCheckInput, type FileInfoCheckPayloadItem, type FilesConfig, type LanguageCode, type LoadStage, type LoadStatePayload, type MarkupAction, type MarkupListItem, type MarkupOperationResultPayload, type PreparedViewerData, Viewer3D };
526
+ export { type ConvertOptions, type ConvertV2Options, type FileInfoCheckInput, type FileInfoCheckPayloadItem, type FilesConfig, type InitialToolbarVisibility, type LanguageCode, type LoadStage, type LoadStatePayload, type MarkupAction, type MarkupListItem, type MarkupOperationResultPayload, type PreparedViewerData, Viewer3D, type Viewer3DOptions };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,526 @@
1
- export { Viewer3D } from "./viewer";
2
- export type { LoadStage, LoadStatePayload, PreparedViewerData, } from "./contracts/events";
3
- export type { ConvertOptions, ConvertV2Options, FileInfoCheckInput, FileInfoCheckPayloadItem, FilesConfig, } from "./modules/files.module";
4
- export type { LanguageCode, MarkupAction, MarkupListItem, MarkupOperationResultPayload, } from "./contracts/messages";
1
+ 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
+ type LanguageCode = "en" | "vn";
45
+ type ToolbarVisibilityTarget = "all" | "left" | "center" | "right";
46
+ type MarkupAction = "line" | "arrow" | "circle" | "ellipse" | "rectangle" | "polygon" | "polyline" | "textbox" | "note" | "callout" | "cloud" | "freehand";
47
+ type MarkupOperationResultPayload = {
48
+ requestId: string;
49
+ success: boolean;
50
+ timestamp: number;
51
+ error?: string;
52
+ };
53
+ type MarkupListItem = {
54
+ id: string;
55
+ viewId: string;
56
+ viewName?: string;
57
+ title: string;
58
+ type: string;
59
+ shapeName?: string;
60
+ createdDate?: string;
61
+ modifiedDate?: string;
62
+ createdBy?: string;
63
+ lastModifiedBy?: string;
64
+ };
65
+ type SheetListItem = {
66
+ id: string | number;
67
+ name: string;
68
+ is3D?: boolean;
69
+ viewId?: string;
70
+ };
71
+ type PdfModeEventPayload = {
72
+ mode: "plan" | "document";
73
+ timestamp: number;
74
+ };
75
+ type PdfToolbarActionEventPayload = {
76
+ timestamp: number;
77
+ };
78
+ type PdfCurrentPagePayload = {
79
+ pageIndex: number;
80
+ pageNumber: number;
81
+ timestamp: number;
82
+ };
83
+
84
+ type ViewerEventMap = {
85
+ "camera:home": {
86
+ timestamp: number;
87
+ };
88
+ "node:select": {
89
+ nodeId: string;
90
+ timestamp: number;
91
+ };
92
+ "interaction:pan-change": {
93
+ enabled: boolean;
94
+ };
95
+ "toolbar:pdf-plan-mode": PdfModeEventPayload;
96
+ "toolbar:pdf-document-mode": PdfModeEventPayload;
97
+ "toolbar:pdf-first-page": PdfToolbarActionEventPayload;
98
+ "toolbar:pdf-previous-page": PdfToolbarActionEventPayload;
99
+ "toolbar:pdf-next-page": PdfToolbarActionEventPayload;
100
+ "toolbar:pdf-last-page": PdfToolbarActionEventPayload;
101
+ "toolbar:pdf-current-page": PdfCurrentPagePayload;
102
+ "modelTree:node-ids": {
103
+ requestId: string;
104
+ nodeIds: string[];
105
+ timestamp: number;
106
+ };
107
+ "sheets:list": {
108
+ requestId: string;
109
+ sheets: {
110
+ id: string | number;
111
+ name: string;
112
+ is3D?: boolean;
113
+ viewId?: string;
114
+ }[];
115
+ activeSheetId?: string | number | null;
116
+ timestamp: number;
117
+ };
118
+ "markup:list": {
119
+ requestId: string;
120
+ markups: MarkupListItem[];
121
+ timestamp: number;
122
+ };
123
+ "markup:save": MarkupOperationResultPayload;
124
+ "markup:cancel": MarkupOperationResultPayload;
125
+ };
126
+ type LoadStage = "idle" | "uploading" | "converting" | "rendering" | "completed" | "error";
127
+ type LoadStatePayload = {
128
+ isLoading: boolean;
129
+ stage: LoadStage;
130
+ message?: string;
131
+ elapsedMs?: number;
132
+ };
133
+ type PreparedViewerData = {
134
+ baseFileId: string;
135
+ baseMajorRev: number;
136
+ baseMinorRev: number;
137
+ fileName: string;
138
+ query: string;
139
+ url: string;
140
+ };
141
+ type FilesEventMap = {
142
+ "files:state": LoadStatePayload;
143
+ "files:upload:start": {
144
+ fileName: string;
145
+ };
146
+ "files:upload:success": {
147
+ fileName: string;
148
+ baseFileId: string;
149
+ };
150
+ "files:upload:error": {
151
+ fileName: string;
152
+ error: string;
153
+ };
154
+ "files:conversion:start": {
155
+ fileName: string;
156
+ };
157
+ "files:conversion:success": PreparedViewerData;
158
+ "files:conversion:error": {
159
+ fileName: string;
160
+ error: string;
161
+ };
162
+ "files:render:start": {
163
+ url: string;
164
+ };
165
+ "files:render:success": {
166
+ url: string;
167
+ };
168
+ "files:render:error": {
169
+ url?: string;
170
+ error: string;
171
+ };
172
+ "files:load:success": PreparedViewerData;
173
+ "files:load:error": {
174
+ error: string;
175
+ };
176
+ };
177
+ type SdkEventMap = ViewerEventMap & FilesEventMap;
178
+ type SdkEventKey = keyof SdkEventMap;
179
+ type SdkEventPayload<K extends SdkEventKey> = SdkEventMap[K];
180
+
181
+ declare class CameraModule {
182
+ private viewer;
183
+ on: {
184
+ home: (cb: (payload: {
185
+ timestamp: number;
186
+ }) => void) => () => void;
187
+ };
188
+ constructor(viewer: Viewer3D);
189
+ zoomIn(percent: number): void;
190
+ zoomOut(percent: number): void;
191
+ home(): void;
192
+ }
193
+
194
+ declare class InteractionModule {
195
+ private viewer;
196
+ on: {
197
+ panChange: (cb: (payload: {
198
+ enabled: boolean;
199
+ }) => void) => () => void;
200
+ };
201
+ constructor(viewer: Viewer3D);
202
+ enablePan(): void;
203
+ disablePan(): void;
204
+ select(): void;
205
+ areaSelect(): void;
206
+ orbit(): void;
207
+ rotateZ(): void;
208
+ walkThrough(): void;
209
+ zoomWindow(): void;
210
+ zoomFit(): void;
211
+ drawModeShaded(): void;
212
+ drawModeWireframe(): void;
213
+ drawModeHiddenLine(): void;
214
+ drawModeShadedWire(): void;
215
+ drawModeXRay(): void;
216
+ drawModeGhosting(): void;
217
+ explode(magnitude: number): void;
218
+ explodeOff(): void;
219
+ private setDrawMode;
220
+ }
221
+
222
+ declare class NodeModule {
223
+ private viewer;
224
+ on: {
225
+ select: (cb: (payload: {
226
+ nodeId: string;
227
+ timestamp: number;
228
+ }) => void) => () => void;
229
+ };
230
+ constructor(viewer: Viewer3D);
231
+ }
232
+
233
+ type FilesConfig = {
234
+ baseUrl?: string;
235
+ conversionBaseUrl?: string;
236
+ viewerPath?: string;
237
+ uploadPath?: string;
238
+ };
239
+ type ConvertOptions = {
240
+ downloadUrl?: string;
241
+ };
242
+ type ConvertV2Options = {
243
+ filename: string;
244
+ originalFilePath: string;
245
+ downloadUrl: string;
246
+ baseFileId: string;
247
+ baseMajorRev?: number;
248
+ baseMinorRev?: number;
249
+ overwrite?: boolean;
250
+ project?: string;
251
+ convertOptions?: Partial<StreamConvertOptions>;
252
+ };
253
+ type FileInfoCheckInput = string | string[];
254
+ type FileInfoCheckPayloadItem = {
255
+ baseFileId: string;
256
+ };
257
+ type StreamConvertOptions = {
258
+ convert3DModel: number;
259
+ convert2DSheet: number;
260
+ extractProperties: number;
261
+ childModels: number;
262
+ };
263
+ declare class FilesModule {
264
+ private viewer;
265
+ on: {
266
+ state: (cb: (payload: LoadStatePayload) => void) => () => void;
267
+ uploadStart: (cb: (payload: {
268
+ fileName: string;
269
+ }) => void) => () => void;
270
+ uploadSuccess: (cb: (payload: {
271
+ fileName: string;
272
+ baseFileId: string;
273
+ }) => void) => () => void;
274
+ uploadError: (cb: (payload: {
275
+ fileName: string;
276
+ error: string;
277
+ }) => void) => () => void;
278
+ conversionStart: (cb: (payload: {
279
+ fileName: string;
280
+ }) => void) => () => void;
281
+ conversionSuccess: (cb: (payload: PreparedViewerData) => void) => () => void;
282
+ conversionError: (cb: (payload: {
283
+ fileName: string;
284
+ error: string;
285
+ }) => void) => () => void;
286
+ renderStart: (cb: (payload: {
287
+ url: string;
288
+ }) => void) => () => void;
289
+ renderSuccess: (cb: (payload: {
290
+ url: string;
291
+ }) => void) => () => void;
292
+ renderError: (cb: (payload: {
293
+ url?: string;
294
+ error: string;
295
+ }) => void) => () => void;
296
+ loadSuccess: (cb: (payload: PreparedViewerData) => void) => () => void;
297
+ loadError: (cb: (payload: {
298
+ error: string;
299
+ }) => void) => () => void;
300
+ };
301
+ private config;
302
+ private operationStartTime;
303
+ private state;
304
+ private lastUploadSession;
305
+ constructor(viewer: Viewer3D);
306
+ setConfig(next: FilesConfig): void;
307
+ getState(): LoadStatePayload;
308
+ upload(file?: File): Promise<{
309
+ fileName: string;
310
+ baseFileId: string;
311
+ }>;
312
+ convert(file?: File, options?: ConvertOptions): Promise<PreparedViewerData>;
313
+ prepare(file?: File, options?: ConvertOptions): Promise<PreparedViewerData>;
314
+ convertV2(options: ConvertV2Options): Promise<PreparedViewerData>;
315
+ checkFileInfo(baseFileIds: FileInfoCheckInput): Promise<unknown>;
316
+ open(input: PreparedViewerData | {
317
+ url: string;
318
+ }): void;
319
+ render(file?: File, options?: ConvertOptions): Promise<PreparedViewerData>;
320
+ private resolveFile;
321
+ private normalizeBaseUrl;
322
+ private resolveBaseUrl;
323
+ private resolveConversionBaseUrl;
324
+ private resolveViewerPath;
325
+ private resolveViewerOrigin;
326
+ private resolveHostConversion;
327
+ private getUploadPath;
328
+ private fileSignature;
329
+ private createBaseFileId;
330
+ private createUploadSession;
331
+ private getUploadSessionForFile;
332
+ private uploadInternal;
333
+ private buildCachePayload;
334
+ private buildConvertV2Payload;
335
+ private buildFileInfoPayload;
336
+ private cacheFile;
337
+ private cacheFileV2;
338
+ private convertInternal;
339
+ private convertV2Internal;
340
+ private updateState;
341
+ private withOperation;
342
+ private toErrorMessage;
343
+ }
344
+
345
+ type GetSheetsOptions = {
346
+ timeoutMs?: number;
347
+ };
348
+ declare class ToolbarModule {
349
+ private viewer;
350
+ on: {
351
+ planMode: (cb: (payload: {
352
+ mode: "plan" | "document";
353
+ timestamp: number;
354
+ }) => void) => () => void;
355
+ documentMode: (cb: (payload: {
356
+ mode: "plan" | "document";
357
+ timestamp: number;
358
+ }) => void) => () => void;
359
+ firstPage: (cb: (payload: {
360
+ timestamp: number;
361
+ }) => void) => () => void;
362
+ previousPage: (cb: (payload: {
363
+ timestamp: number;
364
+ }) => void) => () => void;
365
+ nextPage: (cb: (payload: {
366
+ timestamp: number;
367
+ }) => void) => () => void;
368
+ lastPage: (cb: (payload: {
369
+ timestamp: number;
370
+ }) => void) => () => void;
371
+ currentPage: (cb: (payload: {
372
+ pageIndex: number;
373
+ pageNumber: number;
374
+ timestamp: number;
375
+ }) => void) => () => void;
376
+ };
377
+ constructor(viewer: Viewer3D);
378
+ setDisabled3D(operators: string[]): void;
379
+ setDisabledPdf(operators: string[]): void;
380
+ clearDisabled3D(): void;
381
+ clearDisabledPdf(): void;
382
+ disableAll3D(): void;
383
+ disableAllPdf(): void;
384
+ enableAll3D(): void;
385
+ enableAllPdf(): void;
386
+ hideToolbar(): void;
387
+ showToolbar(): void;
388
+ setToolbarVisible(visible: boolean, target?: ToolbarVisibilityTarget): void;
389
+ hideLeftToolbar(): void;
390
+ showLeftToolbar(): void;
391
+ hideCenterToolbar(): void;
392
+ showCenterToolbar(): void;
393
+ hideRightToolbar(): void;
394
+ showRightToolbar(): void;
395
+ openClippingPlanes(): void;
396
+ closeClippingPlanes(): void;
397
+ openSetting(): void;
398
+ closeSetting(): void;
399
+ openSetting3D(): void;
400
+ closeSetting3D(): void;
401
+ openSettingPdf(): void;
402
+ closeSettingPdf(): void;
403
+ openStatesObjects(): void;
404
+ closeStatesObjects(): void;
405
+ openLinkedObjects(): void;
406
+ closeLinkedObjects(): void;
407
+ openModelTree(): void;
408
+ closeModelTree(): void;
409
+ openObjectProperties(): void;
410
+ closeObjectProperties(): void;
411
+ openSheets(): void;
412
+ closeSheets(): void;
413
+ getSheets(options?: GetSheetsOptions): Promise<SheetListItem[]>;
414
+ applySheet(sheetId: string | number): void;
415
+ cuttingCloseSections(): void;
416
+ cuttingMultipleSides(): void;
417
+ cuttingToggleSelection(): void;
418
+ cuttingTogglePlanes(): void;
419
+ cuttingPlaneX(): void;
420
+ cuttingPlaneY(): void;
421
+ cuttingPlaneZ(): void;
422
+ cuttingPlaneBox(): void;
423
+ cuttingRotateBox(): void;
424
+ cuttingReversePlaneX(): void;
425
+ cuttingReversePlaneY(): void;
426
+ cuttingReversePlaneZ(): void;
427
+ private postConfig;
428
+ private postToolbarVisibility;
429
+ private postPanelOpen;
430
+ private postPanelClose;
431
+ private postCuttingAction;
432
+ private postSheetsGetList;
433
+ private postSheetsApply;
434
+ }
435
+
436
+ type GetNodeIdsOptions = {
437
+ onlyRealNodes?: boolean;
438
+ timeoutMs?: number;
439
+ };
440
+ declare class ModelTreeModule {
441
+ private viewer;
442
+ constructor(viewer: Viewer3D);
443
+ open(): void;
444
+ selectNode(nodeId: string | number): void;
445
+ getNodeIds(options?: GetNodeIdsOptions): Promise<string[]>;
446
+ }
447
+
448
+ type MarkupRequestOptions = {
449
+ timeoutMs?: number;
450
+ };
451
+ declare class MarkupModule {
452
+ private viewer;
453
+ constructor(viewer: Viewer3D);
454
+ action(action: MarkupAction): void;
455
+ drawLine(): void;
456
+ drawArrow(): void;
457
+ drawCircle(): void;
458
+ drawEllipse(): void;
459
+ drawRectangle(): void;
460
+ drawPolygon(): void;
461
+ drawPolyline(): void;
462
+ drawTextBox(): void;
463
+ drawNote(): void;
464
+ drawCallout(): void;
465
+ drawCloud(): void;
466
+ drawFreehand(): void;
467
+ save(options?: MarkupRequestOptions): Promise<void>;
468
+ cancel(options?: MarkupRequestOptions): Promise<void>;
469
+ getList(options?: MarkupRequestOptions): Promise<MarkupListItem[]>;
470
+ private runRequest;
471
+ }
472
+
473
+ declare class LanguageModule {
474
+ private viewer;
475
+ constructor(viewer: Viewer3D);
476
+ change(language: LanguageCode): void;
477
+ set(language: LanguageCode): void;
478
+ }
479
+
480
+ type InitialToolbarVisibility = Partial<Record<ToolbarVisibilityTarget, boolean>>;
481
+ type Viewer3DOptions = {
482
+ container: HTMLElement | string;
483
+ url?: string;
484
+ baseUrl?: string;
485
+ conversionBaseUrl?: string;
486
+ viewerPath?: string;
487
+ uploadPath?: string;
488
+ file?: File;
489
+ initialToolbarVisibility?: InitialToolbarVisibility;
490
+ width?: string;
491
+ height?: string;
492
+ sandbox?: string;
493
+ allowedOrigin?: string;
494
+ };
495
+ declare class Viewer3D {
496
+ private options;
497
+ private containerEl;
498
+ private iframeEl;
499
+ private initialized;
500
+ private emitter;
501
+ camera: CameraModule;
502
+ interaction: InteractionModule;
503
+ node: NodeModule;
504
+ files: FilesModule;
505
+ toolbar: ToolbarModule;
506
+ modelTree: ModelTreeModule;
507
+ markup: MarkupModule;
508
+ language: LanguageModule;
509
+ constructor(options: Viewer3DOptions);
510
+ getOptions(): Viewer3DOptions;
511
+ patchOptions(next: Partial<Viewer3DOptions>): void;
512
+ getUrl(): string | null;
513
+ init(): void;
514
+ render(file?: File): Promise<PreparedViewerData | void>;
515
+ open(url: string): void;
516
+ destroy(): void;
517
+ private ensureInit;
518
+ private withInitialOptions;
519
+ _on<K extends SdkEventKey>(event: K, cb: (payload: SdkEventPayload<K>) => void): () => void;
520
+ _off<K extends SdkEventKey>(event: K, cb: (payload: SdkEventPayload<K>) => void): void;
521
+ _emit<K extends SdkEventKey>(event: K, payload: SdkEventPayload<K>): void;
522
+ postToViewer<TPayload = unknown>(type: ViewerMessageType, payload?: TPayload): void;
523
+ private handleMessage;
524
+ }
525
+
526
+ export { type ConvertOptions, type ConvertV2Options, type FileInfoCheckInput, type FileInfoCheckPayloadItem, type FilesConfig, type InitialToolbarVisibility, type LanguageCode, type LoadStage, type LoadStatePayload, type MarkupAction, type MarkupListItem, type MarkupOperationResultPayload, type PreparedViewerData, Viewer3D, type Viewer3DOptions };