@x-viewer/plugins 0.9.0

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 (123) hide show
  1. package/README.md +3 -0
  2. package/dist/index.esm.js +264 -0
  3. package/dist/types/axis-gizmo/AxisGizmoPlugin.d.ts +51 -0
  4. package/dist/types/axis-gizmo/CoordinateAxes.d.ts +14 -0
  5. package/dist/types/axis-gizmo/index.d.ts +2 -0
  6. package/dist/types/bottom-bar/BottomBarPlugin.d.ts +42 -0
  7. package/dist/types/bottom-bar/index.d.ts +2 -0
  8. package/dist/types/context-menu/Constants.d.ts +34 -0
  9. package/dist/types/context-menu/ContextMenu.config.d.ts +2 -0
  10. package/dist/types/context-menu/ContextMenuPlugin.d.ts +36 -0
  11. package/dist/types/context-menu/Locale.d.ts +48 -0
  12. package/dist/types/context-menu/index.d.ts +4 -0
  13. package/dist/types/dat-gui/Viewer3dDatGui.d.ts +66 -0
  14. package/dist/types/dat-gui/index.d.ts +1 -0
  15. package/dist/types/explode/ExplodePlugin.d.ts +46 -0
  16. package/dist/types/explode/ObjectExploder.d.ts +48 -0
  17. package/dist/types/explode/index.d.ts +1 -0
  18. package/dist/types/export/ExportPlugin.d.ts +53 -0
  19. package/dist/types/export/index.d.ts +2 -0
  20. package/dist/types/ground-grass/GroundGrassPlugin.d.ts +45 -0
  21. package/dist/types/ground-grass/index.d.ts +1 -0
  22. package/dist/types/ground-grid/GroundGridPlugin.d.ts +46 -0
  23. package/dist/types/ground-grid/index.d.ts +1 -0
  24. package/dist/types/ground-shaow/GroundShadowPlugin.d.ts +64 -0
  25. package/dist/types/ground-shaow/index.d.ts +1 -0
  26. package/dist/types/hotpoint/HotpointPlugin.d.ts +103 -0
  27. package/dist/types/hotpoint/index.d.ts +1 -0
  28. package/dist/types/index.d.ts +27 -0
  29. package/dist/types/layer-manager/LayerManagerPlugin.d.ts +51 -0
  30. package/dist/types/layer-manager/index.d.ts +2 -0
  31. package/dist/types/local-model-uploader/IUploader.d.ts +19 -0
  32. package/dist/types/local-model-uploader/LocalDxfUploader.d.ts +22 -0
  33. package/dist/types/local-model-uploader/LocalModelUploader.d.ts +24 -0
  34. package/dist/types/local-model-uploader/index.d.ts +3 -0
  35. package/dist/types/markups/ArrowMarkup.d.ts +12 -0
  36. package/dist/types/markups/BaseMarkup.d.ts +33 -0
  37. package/dist/types/markups/CircleMarkup.d.ts +12 -0
  38. package/dist/types/markups/CloudLineMarkup.d.ts +10 -0
  39. package/dist/types/markups/CloudRectMarkup.d.ts +11 -0
  40. package/dist/types/markups/CloudRectWithTextMarkup.d.ts +42 -0
  41. package/dist/types/markups/Constants.d.ts +17 -0
  42. package/dist/types/markups/DotMarkup.d.ts +9 -0
  43. package/dist/types/markups/EllipseMarkup.d.ts +12 -0
  44. package/dist/types/markups/LeaderLineMarkup.d.ts +25 -0
  45. package/dist/types/markups/MarkupPlugin.d.ts +91 -0
  46. package/dist/types/markups/PolylineMarkup.d.ts +10 -0
  47. package/dist/types/markups/RectMarkup.d.ts +11 -0
  48. package/dist/types/markups/TextMarkup.d.ts +44 -0
  49. package/dist/types/markups/XMarkup.d.ts +10 -0
  50. package/dist/types/markups/index.d.ts +14 -0
  51. package/dist/types/markups/undo/AddMarkupCommand.d.ts +10 -0
  52. package/dist/types/markups/undo/RemoveMarkupCommand.d.ts +10 -0
  53. package/dist/types/markups/undo/UpdateMarkupCommand.d.ts +11 -0
  54. package/dist/types/measurements/AngleMeasureDrawable.d.ts +12 -0
  55. package/dist/types/measurements/AngleMeasurement.d.ts +13 -0
  56. package/dist/types/measurements/AreaMeasureDrawable.d.ts +14 -0
  57. package/dist/types/measurements/AreaMeasurement.d.ts +28 -0
  58. package/dist/types/measurements/BaseMeasureDrawable.d.ts +28 -0
  59. package/dist/types/measurements/BaseMeasurement.d.ts +124 -0
  60. package/dist/types/measurements/CoordinateMeasureDrawable.d.ts +10 -0
  61. package/dist/types/measurements/CoordinateMeasurement.d.ts +12 -0
  62. package/dist/types/measurements/DistanceMeasureDrawable.d.ts +15 -0
  63. package/dist/types/measurements/DistanceMeasurement.d.ts +25 -0
  64. package/dist/types/measurements/Locale.d.ts +10 -0
  65. package/dist/types/measurements/MeasurementPlugin.d.ts +140 -0
  66. package/dist/types/measurements/index.d.ts +3 -0
  67. package/dist/types/measurements/undo/AddMeasurementCommand.d.ts +10 -0
  68. package/dist/types/measurements/undo/RemoveMeasurementCommand.d.ts +10 -0
  69. package/dist/types/nav-cube/Locale.d.ts +18 -0
  70. package/dist/types/nav-cube/NavCube.d.ts +12 -0
  71. package/dist/types/nav-cube/NavCubePlugin.d.ts +36 -0
  72. package/dist/types/nav-cube/index.d.ts +2 -0
  73. package/dist/types/overview-map/ImageDrawable.d.ts +28 -0
  74. package/dist/types/overview-map/OverviewMapPlugin.d.ts +16 -0
  75. package/dist/types/overview-map/OverviewMapViewer.d.ts +50 -0
  76. package/dist/types/overview-map/index.d.ts +1 -0
  77. package/dist/types/pdf/PdfLoader.d.ts +238 -0
  78. package/dist/types/pdf/PdfLoaderPlugin.d.ts +47 -0
  79. package/dist/types/pdf/index.d.ts +2 -0
  80. package/dist/types/property/Locale.d.ts +8 -0
  81. package/dist/types/property/PropertyPlugin.d.ts +76 -0
  82. package/dist/types/property/index.d.ts +2 -0
  83. package/dist/types/screenshot/ScreenshotPlugin.d.ts +153 -0
  84. package/dist/types/screenshot/index.d.ts +1 -0
  85. package/dist/types/sections/AxisPlaneSection.d.ts +63 -0
  86. package/dist/types/sections/AxisSectionPopPanel.d.ts +18 -0
  87. package/dist/types/sections/BaseSection.d.ts +61 -0
  88. package/dist/types/sections/Locale.d.ts +16 -0
  89. package/dist/types/sections/ObjectsBoxSection.d.ts +28 -0
  90. package/dist/types/sections/PickPlaneSection.d.ts +42 -0
  91. package/dist/types/sections/PickSectionPopPanel.d.ts +18 -0
  92. package/dist/types/sections/Section.constants.d.ts +13 -0
  93. package/dist/types/sections/SectionGizmo.d.ts +22 -0
  94. package/dist/types/sections/SectionPlaneMesh.d.ts +23 -0
  95. package/dist/types/sections/SectionPlugin.d.ts +87 -0
  96. package/dist/types/sections/index.d.ts +6 -0
  97. package/dist/types/settings-2d/Locale.d.ts +14 -0
  98. package/dist/types/settings-2d/Settings2dPlugin.d.ts +55 -0
  99. package/dist/types/settings-2d/index.d.ts +2 -0
  100. package/dist/types/settings-3d/Locale.d.ts +50 -0
  101. package/dist/types/settings-3d/Settings3dPlugin.d.ts +51 -0
  102. package/dist/types/settings-3d/index.d.ts +2 -0
  103. package/dist/types/skybox/GradientColorSkybox.d.ts +9 -0
  104. package/dist/types/skybox/SkyboxPlugin.d.ts +49 -0
  105. package/dist/types/skybox/index.d.ts +1 -0
  106. package/dist/types/stats/StatsPlugin.d.ts +19 -0
  107. package/dist/types/stats/index.d.ts +2 -0
  108. package/dist/types/toolbars/Locale.d.ts +98 -0
  109. package/dist/types/toolbars/MarkupToolbar.d.ts +18 -0
  110. package/dist/types/toolbars/Toolbar.config.d.ts +9 -0
  111. package/dist/types/toolbars/Toolbar.constants.d.ts +95 -0
  112. package/dist/types/toolbars/Toolbar.d.ts +107 -0
  113. package/dist/types/toolbars/Viewer2dToolbarPlugin.d.ts +37 -0
  114. package/dist/types/toolbars/Viewer3dToolbarPlugin.d.ts +37 -0
  115. package/dist/types/toolbars/index.d.ts +7 -0
  116. package/dist/types/tree-view/Locale.d.ts +8 -0
  117. package/dist/types/tree-view/TreeViewPlugin.d.ts +71 -0
  118. package/dist/types/tree-view/index.d.ts +2 -0
  119. package/dist/types/view-cube/Locale.d.ts +18 -0
  120. package/dist/types/view-cube/ViewCube.d.ts +79 -0
  121. package/dist/types/view-cube/ViewCubePlugin.d.ts +55 -0
  122. package/dist/types/view-cube/index.d.ts +2 -0
  123. package/package.json +58 -0
@@ -0,0 +1,103 @@
1
+ import { THREE, THREEAddons, BaseViewer, Plugin } from "@x-viewer/core";
2
+ export interface Hotpoint {
3
+ hotpointId: string;
4
+ anchorPosition: number[];
5
+ visible?: boolean;
6
+ html: string;
7
+ }
8
+ /**
9
+ * Hotpoint plugin manages hotpoints in a viewer.
10
+ * It can be used by Viewer2d and Viewer3d.
11
+ * - A hotpoint is created and stored by user. User define its html and css.
12
+ * - A hotpoint can be added to, and removed from viewer.
13
+ * - Caller should set a hotpointId that is unique in the session of current viewer.
14
+ * - Viewer2d doesn't maintain the relationship between hotpoint and layout.
15
+ */
16
+ export declare class HotpointPlugin extends Plugin {
17
+ protected hotpointRoot?: THREE.Group;
18
+ protected css2dRenderer: THREEAddons.CSS2DRenderer;
19
+ constructor(viewer: BaseViewer);
20
+ /**
21
+ * @description {en} Adds a hotpoint.
22
+ * Caller should set a hotpointId that is unique in the session of current viewer.
23
+ * @description {zh} 添加热点。
24
+ * 调用者应该设置一个在当前Viewer会话中唯一的热点id。
25
+ * @param hotpoint
26
+ * - {en} hotpoint data.
27
+ * - {zh} 热点数据。
28
+ * @example
29
+ * ``` typescript
30
+ * const hotpoint = {
31
+ * hotpointId: "c6ea70a3-ddb0-4dd0-87c8-bd2491936428",
32
+ * anchorPosition: [0, 0, 0],
33
+ * html: "<div>hotpoint</div>",
34
+ * visible: true,
35
+ * };
36
+ * const plugin = new HotpointPlugin(viewer);
37
+ * plugin.add(hotpoint);
38
+ * ```
39
+ */
40
+ add(hotpoint: Hotpoint): void;
41
+ /**
42
+ * @description {en} Removes a hotpoint by given hotpointId.
43
+ * @description {zh} 根据热点id删除热点。
44
+ * @param {string} hotpointId
45
+ * - {en} hotpoint id.
46
+ * - {zh} 热点id。
47
+ * @example
48
+ * ``` typescript
49
+ * const hotpointId = "c6ea70a3-ddb0-4dd0-87c8-bd2491936428";
50
+ * const plugin = new HotpointPlugin(viewer);
51
+ * plugin.remove(hotpointId);
52
+ * ```
53
+ */
54
+ remove(hotpointId: string): void;
55
+ /**
56
+ * @description {en} Clears all hotpoints.
57
+ * @description {zh} 清除所有热点。
58
+ * @example
59
+ * ``` typescript
60
+ * const plugin = new HotpointPlugin(viewer);
61
+ * plugin.clear();
62
+ * ```
63
+ */
64
+ clear(): void;
65
+ /**
66
+ * Checks if hotpoint with specific id already exist
67
+ * Caller should set a hotpointId that is unique in the session of current Viewer2d.
68
+ * @internal
69
+ */
70
+ has(hotpointId: string): boolean;
71
+ /**
72
+ * @description {en} Moves a hotpoint.
73
+ * @description {zh} 移动热点的位置。
74
+ * @example
75
+ * ``` typescript
76
+ * const hotpointId = "c6ea70a3-ddb0-4dd0-87c8-bd2491936428";
77
+ * const plugin = new HotpointPlugin(viewer);
78
+ * plugin.move(hotpointId, [10, 10, 0]);
79
+ * ```
80
+ */
81
+ move(hotpointId: string, position: THREE.Vector2 | THREE.Vector3): void;
82
+ /**
83
+ * @description {en} Hides or show a hotpoint.
84
+ * @description {zh} 显示或隐藏一个热点。
85
+ * @example
86
+ * ``` typescript
87
+ * const hotpointId = "c6ea70a3-ddb0-4dd0-87c8-bd2491936428";
88
+ * const plugin = new HotpointPlugin(viewer);
89
+ * plugin.setVisible(hotpointId, false);
90
+ * ```
91
+ */
92
+ setVisible(hotpointId: string, visible: boolean): void;
93
+ protected findHotpointObject(hotpointId: string): THREEAddons.CSS2DObject | undefined;
94
+ /**
95
+ *
96
+ * @param hotpointId
97
+ * @returns
98
+ * @description Fly to hotpoint by hotpointId.
99
+ */
100
+ flyToHotpoint(hotpointId: string): void;
101
+ destroy(): void;
102
+ protected onAfterRender: () => void;
103
+ }
@@ -0,0 +1 @@
1
+ export * from "./HotpointPlugin";
@@ -0,0 +1,27 @@
1
+ export * from "./axis-gizmo";
2
+ export * from "./bottom-bar";
3
+ export * from "./context-menu";
4
+ export * from "./dat-gui";
5
+ export * from "./layer-manager";
6
+ export * from "./explode";
7
+ export * from "./export";
8
+ export * from "./ground-grass";
9
+ export * from "./ground-grid";
10
+ export * from "./ground-shaow";
11
+ export * from "./hotpoint";
12
+ export * from "./local-model-uploader";
13
+ export * from "./markups";
14
+ export * from "./measurements";
15
+ export * from "./nav-cube";
16
+ export * from "./pdf";
17
+ export * from "./property";
18
+ export * from "./screenshot";
19
+ export * from "./stats";
20
+ export * from "./skybox";
21
+ export * from "./sections";
22
+ export * from "./settings-2d";
23
+ export * from "./settings-3d";
24
+ export * from "./toolbars";
25
+ export * from "./tree-view";
26
+ export * from "./view-cube";
27
+ export * from "./overview-map";
@@ -0,0 +1,51 @@
1
+ import { DxfLayers, Viewer2d, PdfLayers, Plugin, PluginConfig } from "@x-viewer/core";
2
+ import { BasePanel } from "@x-viewer/ui";
3
+ /**
4
+ * Dxf layer manager config.
5
+ */
6
+ export interface LayerManagerPluginConfig extends Partial<PluginConfig> {
7
+ /**
8
+ * Container div id.
9
+ */
10
+ containerId: string;
11
+ /**
12
+ * If panel is visible. It is visible by default.
13
+ */
14
+ visible?: boolean;
15
+ }
16
+ /**
17
+ * Layer manager plugin events.
18
+ */
19
+ type LayerManagerPluginEvents = {
20
+ /**
21
+ * Panel visibility change event.
22
+ */
23
+ visibilitychange: boolean;
24
+ };
25
+ /**
26
+ * Dxf layer manager.
27
+ * Can be used by Viewer2d.
28
+ */
29
+ export declare class LayerManagerPlugin extends Plugin<LayerManagerPluginEvents> {
30
+ static readonly DEFAULT_ID = "LayerManagerPlugin";
31
+ protected cfg: LayerManagerPluginConfig;
32
+ protected basePanel?: BasePanel;
33
+ protected container?: HTMLDivElement;
34
+ protected content?: HTMLDivElement;
35
+ protected layerList?: HTMLDivElement;
36
+ protected dxfLayersArray?: (DxfLayers | PdfLayers)[];
37
+ protected checkboxes?: HTMLInputElement[];
38
+ constructor(viewer: Viewer2d, cfg?: LayerManagerPluginConfig);
39
+ protected init(): void;
40
+ setVisible(visible: boolean): void;
41
+ isVisible(): boolean;
42
+ private onClose;
43
+ destroy(): void;
44
+ addContent(): void;
45
+ generateListItem(layer: string, visible: boolean, color?: string): string;
46
+ checkboxHandler(checkbox: HTMLInputElement): void;
47
+ updatePage(): void;
48
+ updateHeaderText(): void;
49
+ convertDecimalToHex(decimal: number): string | undefined;
50
+ }
51
+ export {};
@@ -0,0 +1,2 @@
1
+ import "./LayerManager.scss";
2
+ export * from "./LayerManagerPlugin";
@@ -0,0 +1,19 @@
1
+ import { BaseViewer } from "@x-viewer/core";
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare class IUploader {
6
+ protected viewer: BaseViewer;
7
+ protected input: HTMLInputElement;
8
+ protected dropZone: HTMLDivElement;
9
+ protected _formats: string[];
10
+ constructor(viewer: BaseViewer, elementId?: string, formats?: string[]);
11
+ protected formats(): string[];
12
+ protected uploadFiles(files: FileList): void;
13
+ openFileBrowserToUpload(): void;
14
+ destroy(): void;
15
+ protected handleDragEnter: (e: DragEvent) => void;
16
+ protected handleDragLeave: (e: DragEvent) => void;
17
+ protected handleDragOver: (e: DragEvent) => void;
18
+ protected handleDrop: (e: DragEvent) => void;
19
+ }
@@ -0,0 +1,22 @@
1
+ import { Viewer2d, ModelConfig } from "@x-viewer/core";
2
+ import { IUploader } from "./IUploader";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare class LocalDxfUploader extends IUploader {
7
+ private pdfWorker;
8
+ onSuccess?: (event: any) => void;
9
+ readonly defaultModelConfig: ModelConfig;
10
+ constructor(viewer: Viewer2d, elementId?: string, formats?: string[]);
11
+ setPdfWorker(pdfWorker: string): void;
12
+ protected formats(): string[];
13
+ protected uploadFiles(files: FileList): void;
14
+ /**
15
+ * Upload single dxf file.
16
+ */
17
+ private uploadSingleDxf;
18
+ /**
19
+ * Upload single dxf file.
20
+ */
21
+ private uploadSinglePdf;
22
+ }
@@ -0,0 +1,24 @@
1
+ import type { ModelConfig, Viewer3d } from "@x-viewer/core";
2
+ import { IUploader } from "./IUploader";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare class LocalModelUploader extends IUploader {
7
+ readonly defaultModelConfig: ModelConfig;
8
+ constructor(viewer: Viewer3d, elementId?: string);
9
+ protected formats(): string[];
10
+ /**
11
+ * Uploads model files. There are several cases:
12
+ * - Upload a single file, a glTF, obj, etc.
13
+ * - Upload a model with external (bin, texture) files.
14
+ * - Upload many model files with the same format, a number of glTF without external bin or texture.
15
+ * It doesn't support the case to upload many model files, and one or more of them contains external files.
16
+ */
17
+ protected uploadFiles(files: FileList): void;
18
+ private checkAllFilesWithTheSameFormat;
19
+ /**
20
+ * Upload single model file without external texture/bin, etc.
21
+ * With this function, caller can upload many gltf/glb at one time.
22
+ */
23
+ private uploadSingleFile;
24
+ }
@@ -0,0 +1,3 @@
1
+ import "./uploader.scss";
2
+ export * from "./LocalModelUploader";
3
+ export * from "./LocalDxfUploader";
@@ -0,0 +1,12 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class ArrowMarkup extends BaseMarkup {
5
+ type: MarkupType;
6
+ constructor(id: string, points: THREE.Vector3[]);
7
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
8
+ private drawArrowLine;
9
+ private drawArrowHead;
10
+ isPointInPath(p: THREE.Vector3): boolean;
11
+ getClassType(): string;
12
+ }
@@ -0,0 +1,33 @@
1
+ import { THREE, DrawableData, PathDrawable } from "@x-viewer/core";
2
+ import type { TextMarkup } from "../markups/TextMarkup";
3
+ /**
4
+ * Markup for Viewer2d contains additional information, e.g. layoutName.
5
+ *
6
+ * Viewer2d doesn't maintain the relationship between model and markup data,
7
+ * business logic should knows which model a set of markup data belong to.
8
+ */
9
+ export type MarkupData = DrawableData;
10
+ export declare abstract class BaseMarkup extends PathDrawable {
11
+ protected editPointSize: number;
12
+ protected editPointFillColor: string;
13
+ protected editPointStrokeColor: string;
14
+ protected x: number;
15
+ protected y: number;
16
+ protected width: number;
17
+ protected height: number;
18
+ protected ctx?: CanvasRenderingContext2D;
19
+ leaderText?: TextMarkup;
20
+ parent?: BaseMarkup;
21
+ constructor(id: string);
22
+ isSelected(): boolean;
23
+ drawSelect(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
24
+ private drawPoints;
25
+ isPointInPath(p: THREE.Vector3): boolean;
26
+ setData(data: DrawableData): void;
27
+ getData(): DrawableData;
28
+ setParent(parent: BaseMarkup): void;
29
+ setLeaderText(textMarkup: TextMarkup): void;
30
+ getVertexes(): THREE.Vector3[];
31
+ update(points: THREE.Vector3[]): this;
32
+ translate(tx: number, ty: number): this;
33
+ }
@@ -0,0 +1,12 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class CircleMarkup extends BaseMarkup {
5
+ radius: number;
6
+ type: MarkupType;
7
+ constructor(id: string, points: THREE.Vector3[]);
8
+ getVertexes(): THREE.Vector3[];
9
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
10
+ isPointInPath(p: THREE.Vector3): boolean;
11
+ getClassType(): string;
12
+ }
@@ -0,0 +1,10 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class CloudLineMarkup extends BaseMarkup {
5
+ type: MarkupType;
6
+ constructor(id: string, points: THREE.Vector3[]);
7
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
8
+ static getControlPointByTwoPoints(p1: THREE.Vector2, p2: THREE.Vector2): THREE.Vector2;
9
+ getClassType(): string;
10
+ }
@@ -0,0 +1,11 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class CloudRectMarkup extends BaseMarkup {
5
+ type: MarkupType;
6
+ private vertexes?;
7
+ constructor(id: string, points: THREE.Vector3[]);
8
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
9
+ isPointInPath(p: THREE.Vector3): boolean;
10
+ getClassType(): string;
11
+ }
@@ -0,0 +1,42 @@
1
+ import { THREE, DrawableData } from "@x-viewer/core";
2
+ import type { MarkupPlugin } from "./MarkupPlugin";
3
+ import { MarkupType } from "../markups/Constants";
4
+ import { TextMarkup } from "../markups/TextMarkup";
5
+ export interface CloudRectWithTextShape extends DrawableData {
6
+ text: string;
7
+ fontSize: number;
8
+ textPosition: number[];
9
+ }
10
+ export declare class CloudRectWithTextMarkup extends TextMarkup {
11
+ type: MarkupType;
12
+ private textPosition;
13
+ private controlPoints?;
14
+ private vertexes?;
15
+ private textBounds;
16
+ text: string;
17
+ fontSize: number;
18
+ static LEADER_LINE_WIDTH: number;
19
+ constructor(id: string, points: THREE.Vector3[], text?: string);
20
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
21
+ private drawCloudRect;
22
+ private drawLeaderLine;
23
+ protected drawText(ctx: CanvasRenderingContext2D, camera: THREE.Camera, text: string): void;
24
+ translate(tx: number, ty: number): this;
25
+ update(points: THREE.Vector3[]): this;
26
+ getCloudPoints(): THREE.Vector3[];
27
+ getBounds(): THREE.Box3;
28
+ getVertexes(): THREE.Vector3[];
29
+ isLeaderTextSelected(p: THREE.Vector3): boolean;
30
+ translateLeaderText(tx: number, ty: number): this;
31
+ isPointInPath(p: THREE.Vector3): boolean;
32
+ setData(data: CloudRectWithTextShape): void;
33
+ updateText(text: string): void;
34
+ getData(): CloudRectWithTextShape;
35
+ getClassType(): string;
36
+ addInput(manager: MarkupPlugin, x: number, y: number): void;
37
+ updateInputPosition(p1: THREE.Vector2, p2: THREE.Vector2): void;
38
+ handleClick: () => void;
39
+ handleInput: () => void;
40
+ handleCompositionEnd: () => void;
41
+ private calcInputPositionByText;
42
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Markup type, including Arrow, Circle, Rectangle, Text, etc.
3
+ */
4
+ export declare enum MarkupType {
5
+ Arrow = "ArrowMarkup",
6
+ Circle = "CircleMarkup",
7
+ CloudLine = "CloudLineMarkup",
8
+ CloudLineRectangle = "CloudRectMarkup",
9
+ CloudRectWithText = "CloudRectWithTextMarkup",
10
+ Dot = "DotMarkup",
11
+ Ellipse = "EllipseMarkup",
12
+ LeaderLine = "LeaderLineMarkup",
13
+ PolyLine = "PolylineMarkup",
14
+ Rectangle = "RectMarkup",
15
+ Text = "TextMarkup",
16
+ X = "XMarkup"
17
+ }
@@ -0,0 +1,9 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ export declare class DotMarkup extends BaseMarkup {
4
+ radius: number;
5
+ constructor(id: string, points: THREE.Vector3[]);
6
+ getVertexes(): THREE.Vector3[];
7
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
8
+ getClassType(): string;
9
+ }
@@ -0,0 +1,12 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class EllipseMarkup extends BaseMarkup {
5
+ radiusX: number;
6
+ radiusY: number;
7
+ type: MarkupType;
8
+ constructor(id: string, points: THREE.Vector3[]);
9
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
10
+ isPointInPath(p: THREE.Vector3): boolean;
11
+ getClassType(): string;
12
+ }
@@ -0,0 +1,25 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { MarkupType } from "./Constants";
3
+ import type { MarkupPlugin } from "./MarkupPlugin";
4
+ import { TextShape, TextMarkup } from "./TextMarkup";
5
+ export declare class LeaderLineMarkup extends TextMarkup {
6
+ type: MarkupType;
7
+ text: string;
8
+ fontSize: number;
9
+ private textBounds;
10
+ constructor(id: string, points: THREE.Vector3[], text: string);
11
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
12
+ private drawArrowHead;
13
+ private drawArrowLine;
14
+ protected drawText(ctx: CanvasRenderingContext2D, camera: THREE.Camera, text: string): void;
15
+ getVertexes(): THREE.Vector3[];
16
+ update(points: THREE.Vector3[]): this;
17
+ getData(): TextShape;
18
+ isPointInPath(p: THREE.Vector3): boolean;
19
+ updateText(text: string): void;
20
+ getClassType(): string;
21
+ addInput(manager: MarkupPlugin, x: number, y: number): void;
22
+ handleInput: () => void;
23
+ handleCompositionEnd: () => void;
24
+ private calcuTextInputPositionByText;
25
+ }
@@ -0,0 +1,91 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { CanvasRender, DrawableData, UndoManager, Plugin, type BaseViewer, EventInfo } from "@x-viewer/core";
3
+ import { BaseMarkup } from "./BaseMarkup";
4
+ import { MarkupType } from "./Constants";
5
+ export declare enum MarkupPluginEvent {
6
+ StartDraw = "StartDraw",
7
+ EndDraw = "EndDraw",
8
+ EndEdit = "EndEdit"
9
+ }
10
+ export declare class MarkupPlugin extends Plugin<Record<MarkupPluginEvent, any>> {
11
+ static readonly DEFAULT_ID = "MarkupPlugin";
12
+ overlayRender: CanvasRender;
13
+ private inputManager;
14
+ private drawableList;
15
+ private lineWidth;
16
+ private lineColor;
17
+ private fillColor;
18
+ private fontSize;
19
+ protected mouseDown: boolean;
20
+ protected mouseDownPositionX?: number;
21
+ protected mouseDownPositionY?: number;
22
+ protected mousedownPoint?: THREE.Vector2;
23
+ private isSelectLeaderText;
24
+ private selectedShape?;
25
+ private type?;
26
+ private isDrawing;
27
+ private initialDataForEditing?;
28
+ private creatingShape?;
29
+ private tempPoints;
30
+ private activated;
31
+ constructor(viewer: BaseViewer);
32
+ get viewerCanvas(): HTMLCanvasElement;
33
+ get camera(): THREE.OrthographicCamera | THREE.PerspectiveCamera;
34
+ get raycaster(): THREE.Raycaster;
35
+ get undoMgr(): UndoManager;
36
+ setMarkupVisibility(id: string, visible: boolean): boolean;
37
+ setMarkupsVisibility(visible: boolean): void;
38
+ clear(): void;
39
+ isActive(): boolean;
40
+ activate(): void;
41
+ deactivate(): void;
42
+ getActiveMarkupType(): MarkupType | undefined;
43
+ setDrawType(type: MarkupType): void;
44
+ setLineWidth(linewidth: number): void;
45
+ getLineWidth(): number;
46
+ setLineColor(color: number[]): void;
47
+ getLineColor(): number[];
48
+ setFillColor(color: number[]): void;
49
+ getFillColor(): number[];
50
+ setFontSize(fontSize: number): void;
51
+ getFontSize(): number;
52
+ /**
53
+ * Picks and get world position by screen position.
54
+ */
55
+ protected pickPositionByScreenPoint(p: THREE.Vector2): THREE.Vector3 | undefined;
56
+ handleDbClick: () => void;
57
+ handleInputMousemove: (e: MouseEvent) => void;
58
+ mousedown: (e: EventInfo) => void;
59
+ mousemove: (e: EventInfo) => void;
60
+ mouseup: (e: EventInfo) => void;
61
+ keydown: (e: EventInfo) => void;
62
+ confirmToRemove(isConfirm: boolean): void;
63
+ isEditing(): boolean;
64
+ endEdit(selectMarkup: BaseMarkup): void;
65
+ endDraw(createdMarkup?: BaseMarkup): void;
66
+ cancelDraw(createdMarkup?: BaseMarkup): void;
67
+ reset(): void;
68
+ render(): void;
69
+ addMarkup(markup: BaseMarkup, needFireEvent?: boolean): void;
70
+ updateMarkup(markup: BaseMarkup, newData: DrawableData, needFireEvent?: boolean): void;
71
+ removeMarkup(markup: BaseMarkup, needFireEvent?: boolean): void;
72
+ removeMarkupById(id: string): boolean;
73
+ createMarkup(data: DrawableData): BaseMarkup;
74
+ getMarkupById(id: string): BaseMarkup;
75
+ /**
76
+ * Gets markup data.
77
+ */
78
+ getData(): DrawableData[];
79
+ /**
80
+ * Sets markup data.
81
+ */
82
+ setData(markupDatas: DrawableData[]): void;
83
+ private isCreateLineMode;
84
+ private isCreateDotMode;
85
+ private isCreateTextMode;
86
+ private isCreateShapeMode;
87
+ private drawShape;
88
+ private drawLine;
89
+ private drawText;
90
+ destroy(): void;
91
+ }
@@ -0,0 +1,10 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class PolylineMarkup extends BaseMarkup {
5
+ type: MarkupType;
6
+ constructor(id: string, points: THREE.Vector3[]);
7
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
8
+ isPointInPath(p: THREE.Vector3): boolean;
9
+ getClassType(): string;
10
+ }
@@ -0,0 +1,11 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class RectMarkup extends BaseMarkup {
5
+ type: MarkupType;
6
+ constructor(id: string, points: THREE.Vector3[]);
7
+ getVertexes(): THREE.Vector3[];
8
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
9
+ isPointInPath(p: THREE.Vector3): boolean;
10
+ getClassType(): string;
11
+ }
@@ -0,0 +1,44 @@
1
+ import { THREE, DrawableData } from "@x-viewer/core";
2
+ import { BaseMarkup } from "./BaseMarkup";
3
+ import type { MarkupPlugin } from "./MarkupPlugin";
4
+ import { MarkupType } from "../markups/Constants";
5
+ export declare enum TextMarkupEvent {
6
+ EnterEditing = "enterediting",
7
+ ExitEditing = "exitediting"
8
+ }
9
+ export interface TextShape extends DrawableData {
10
+ text: string;
11
+ fontSize: number;
12
+ }
13
+ export declare class TextMarkup extends BaseMarkup {
14
+ text: string;
15
+ fontSize: number;
16
+ type: MarkupType;
17
+ protected padding: number;
18
+ static readonly DEFAULT_INPUT_WIDTH = 50;
19
+ protected manager?: MarkupPlugin;
20
+ protected textInput?: HTMLTextAreaElement;
21
+ protected inputStatus: string;
22
+ isEditing: boolean;
23
+ constructor(id: string, points: THREE.Vector3[], text: string);
24
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
25
+ protected drawText(ctx: CanvasRenderingContext2D, camera: THREE.Camera, text: string): void;
26
+ setFontSize(fontSize: number): void;
27
+ update(points: THREE.Vector3[]): this;
28
+ getVertexes(): THREE.Vector3[];
29
+ setData(data: TextShape): void;
30
+ updateText(text: string): void;
31
+ getData(): TextShape;
32
+ getClassType(): string;
33
+ addInput(manager: MarkupPlugin, x?: number, y?: number): void;
34
+ addInputEvents(): void;
35
+ handleClick: () => void;
36
+ handleKeydown: (e: KeyboardEvent) => void;
37
+ handleInput: () => void;
38
+ handleCompositionStart: () => void;
39
+ handleCompositionEnd: () => void;
40
+ handleBlur: () => void;
41
+ handleFoucs: () => void;
42
+ enterEditing(): void;
43
+ exitEditing(): void;
44
+ }
@@ -0,0 +1,10 @@
1
+ import { THREE } from "@x-viewer/core";
2
+ import { BaseMarkup } from "../markups/BaseMarkup";
3
+ import { MarkupType } from "../markups/Constants";
4
+ export declare class XMarkup extends BaseMarkup {
5
+ type: MarkupType;
6
+ constructor(id: string, points: THREE.Vector3[]);
7
+ draw(ctx: CanvasRenderingContext2D, camera: THREE.Camera): void;
8
+ isPointInPath(p: THREE.Vector3): boolean;
9
+ getClassType(): string;
10
+ }
@@ -0,0 +1,14 @@
1
+ export * from "./BaseMarkup";
2
+ export * from "./ArrowMarkup";
3
+ export * from "./CircleMarkup";
4
+ export * from "./CloudLineMarkup";
5
+ export * from "./CloudRectMarkup";
6
+ export * from "./DotMarkup";
7
+ export * from "./EllipseMarkup";
8
+ export * from "./LeaderLineMarkup";
9
+ export * from "./PolylineMarkup";
10
+ export * from "./RectMarkup";
11
+ export * from "./TextMarkup";
12
+ export * from "./XMarkup";
13
+ export * from "./MarkupPlugin";
14
+ export * from "./Constants";
@@ -0,0 +1,10 @@
1
+ import { Command } from "@x-viewer/core";
2
+ import { MarkupData } from "../BaseMarkup";
3
+ import { type MarkupPlugin } from "../MarkupPlugin";
4
+ export declare class AddMarkupCommand extends Command {
5
+ private manager;
6
+ private data;
7
+ constructor(manager: MarkupPlugin, data: MarkupData);
8
+ undo(): boolean;
9
+ redo(): boolean;
10
+ }