@inweb/viewer-core 26.4.1 → 26.4.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.
- package/dist/viewer-core.js +10 -16
- package/dist/viewer-core.js.map +1 -1
- package/dist/viewer-core.module.js +10 -16
- package/dist/viewer-core.module.js.map +1 -1
- package/lib/commands/ICommands.d.ts +1 -5
- package/lib/components/IComponents.d.ts +2 -9
- package/lib/draggers/IDraggers.d.ts +1 -8
- package/package.json +3 -3
- package/src/commands/Commands.ts +2 -2
- package/src/commands/ICommands.ts +1 -6
- package/src/components/Components.ts +7 -11
- package/src/components/IComponents.ts +2 -11
- package/src/draggers/Draggers.ts +7 -11
- package/src/draggers/IDraggers.ts +1 -10
package/dist/viewer-core.js
CHANGED
|
@@ -124,26 +124,23 @@
|
|
|
124
124
|
///////////////////////////////////////////////////////////////////////////////
|
|
125
125
|
class DraggersRegistry {
|
|
126
126
|
constructor() {
|
|
127
|
-
this.
|
|
127
|
+
this._providers = new Map();
|
|
128
128
|
}
|
|
129
129
|
registerDragger(name, provider) {
|
|
130
|
-
this.
|
|
130
|
+
this._providers.set(name, provider);
|
|
131
131
|
}
|
|
132
132
|
registerDraggerAlias(name, alias) {
|
|
133
|
-
const provider = this.
|
|
133
|
+
const provider = this._providers.get(name);
|
|
134
134
|
if (provider)
|
|
135
135
|
this.registerDragger(alias, (viewer) => provider(viewer));
|
|
136
136
|
}
|
|
137
|
-
getDragger(name) {
|
|
138
|
-
return this._draggers.get(name);
|
|
139
|
-
}
|
|
140
137
|
getDraggers() {
|
|
141
138
|
const map = new Map();
|
|
142
|
-
this.
|
|
139
|
+
this._providers.forEach((value, key) => map.set(key, value));
|
|
143
140
|
return map;
|
|
144
141
|
}
|
|
145
142
|
createDragger(name, viewer) {
|
|
146
|
-
const provider = this.
|
|
143
|
+
const provider = this._providers.get(name);
|
|
147
144
|
if (!provider)
|
|
148
145
|
return null;
|
|
149
146
|
const dragger = provider(viewer);
|
|
@@ -214,26 +211,23 @@
|
|
|
214
211
|
///////////////////////////////////////////////////////////////////////////////
|
|
215
212
|
class Components {
|
|
216
213
|
constructor() {
|
|
217
|
-
this.
|
|
214
|
+
this._providers = new Map();
|
|
218
215
|
}
|
|
219
216
|
registerComponent(name, provider) {
|
|
220
|
-
this.
|
|
217
|
+
this._providers.set(name, provider);
|
|
221
218
|
}
|
|
222
219
|
registerComponentAlias(name, alias) {
|
|
223
|
-
const provider = this.
|
|
220
|
+
const provider = this._providers.get(name);
|
|
224
221
|
if (provider)
|
|
225
222
|
this.registerComponent(alias, (viewer) => provider(viewer));
|
|
226
223
|
}
|
|
227
|
-
getComponent(name) {
|
|
228
|
-
return this._components.get(name);
|
|
229
|
-
}
|
|
230
224
|
getComponents() {
|
|
231
225
|
const map = new Map();
|
|
232
|
-
this.
|
|
226
|
+
this._providers.forEach((value, key) => map.set(key, value));
|
|
233
227
|
return map;
|
|
234
228
|
}
|
|
235
229
|
createComponent(name, viewer) {
|
|
236
|
-
const provider = this.
|
|
230
|
+
const provider = this._providers.get(name);
|
|
237
231
|
if (!provider)
|
|
238
232
|
return null;
|
|
239
233
|
const component = provider(viewer);
|
package/dist/viewer-core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-core.js","sources":["../src/commands/Commands.ts","../src/draggers/Dragger.ts","../src/draggers/Draggers.ts","../src/components/Component.ts","../src/components/Components.ts","../src/options/IOptions.ts","../src/options/Options.ts","../src/viewer/CanvasEvents.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IViewer } from \"../viewer/IViewer\";\nimport { ICommand, ICommandHandler, ICommandDescription, ICommandsMap, ICommandsRegistry } from \"./ICommands\";\n\nclass CommandsRegistry implements ICommandsRegistry {\n private readonly _commands = new Map<string, ICommand>();\n\n registerCommand(id: string, handler: ICommandHandler, description?: ICommandDescription, thisArg?: any): void {\n this._commands.set(id, { id, handler, thisArg, description });\n }\n\n registerCommandAlias(id: string, alias: string): void {\n this.registerCommand(alias, (viewer: IViewer, ...args) => this.executeCommand(id, viewer, ...args));\n }\n\n getCommand(id: string): ICommand | undefined {\n return this._commands.get(id);\n }\n\n getCommands(): ICommandsMap {\n const map = new Map<string, ICommand>();\n this._commands.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n executeCommand(id: string, viewer: IViewer, ...args: any[]): any {\n const command = this._commands.get(id);\n if (!command) {\n if (viewer) {\n const isDraggerCommand = viewer.draggers.includes(id);\n if (isDraggerCommand) return viewer.setActiveDragger(id);\n }\n\n console.warn(`Command '${id}' not found`);\n return undefined;\n }\n\n const { handler, thisArg } = command;\n const result = handler.apply(thisArg, [viewer, ...args]);\n\n viewer?.emit({ type: \"command\", data: id, args });\n\n return result;\n }\n}\n\nconst _commandsRegistry = new Map<string, CommandsRegistry>();\n\nfunction commandsRegistry(viewerType = \"\"): ICommandsRegistry {\n let result = _commandsRegistry.get(viewerType);\n if (!result) {\n result = new CommandsRegistry();\n _commandsRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { commandsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IDragger } from \"./IDraggers\";\n\nexport class Dragger implements IDragger {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IDragger, IDraggerProvider, IDraggersMap, IDraggersRegistry } from \"./IDraggers\";\n\nclass DraggersRegistry implements IDraggersRegistry {\n private readonly _draggers = new Map<string, IDraggerProvider>();\n\n registerDragger(name: string, provider: IDraggerProvider): void {\n this._draggers.set(name, provider);\n }\n\n registerDraggerAlias(name: string, alias: string): void {\n const provider = this.getDragger(name);\n if (provider) this.registerDragger(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getDragger(name: string): IDraggerProvider | undefined {\n return this._draggers.get(name);\n }\n\n getDraggers(): IDraggersMap {\n const map = new Map<string, IDraggerProvider>();\n this._draggers.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createDragger(name: string, viewer: IViewer): IDragger | null {\n const provider = this.getDragger(name);\n if (!provider) return null;\n\n const dragger = provider(viewer);\n dragger.name = name;\n\n return dragger;\n }\n}\n\nconst _draggersRegistry = new Map<string, DraggersRegistry>();\n\nfunction draggersRegistry(viewerType = \"\"): IDraggersRegistry {\n let result = _draggersRegistry.get(viewerType);\n if (!result) {\n result = new DraggersRegistry();\n _draggersRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { draggersRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IComponent } from \"./IComponents\";\n\nexport class Component implements IComponent {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IComponent, IComponentProvider, IComponentsMap, IComponentsRegistry } from \"./IComponents\";\n\nclass Components implements IComponentsRegistry {\n private readonly _components = new Map<string, IComponentProvider>();\n\n registerComponent(name: string, provider: IComponentProvider): void {\n this._components.set(name, provider);\n }\n\n registerComponentAlias(name: string, alias: string): void {\n const provider = this.getComponent(name);\n if (provider) this.registerComponent(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getComponent(name: string): IComponentProvider | undefined {\n return this._components.get(name);\n }\n\n getComponents(): IComponentsMap {\n const map = new Map<string, IComponentProvider>();\n this._components.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createComponent(name: string, viewer: IViewer): IComponent | null {\n const provider = this.getComponent(name);\n if (!provider) return null;\n\n const component = provider(viewer);\n component.name = name;\n\n return component;\n }\n}\n\nconst _components = new Map<string, Components>();\n\nfunction componentsRegistry(viewerType = \"\"): IComponentsRegistry {\n let result = _components.get(viewerType);\n if (!result) {\n result = new Components();\n _components.set(viewerType, result);\n }\n return result;\n}\n\nexport { componentsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n/**\n * Viewer options interface.\n */\nexport interface IOptions {\n /**\n * Show the world coordinate system axes in the bottom-left corner of the viewer.\n *\n * @defaultValue true\n */\n showWCS?: boolean;\n\n /**\n * Enable camera animation.\n *\n * @defaultValue true\n */\n cameraAnimation?: boolean;\n\n /**\n * Enable anti-aliasing using FXAA.\n *\n * @defaultValue true\n */\n antialiasing?: boolean;\n\n /**\n * Show ground shadows below the model.\n *\n * @defaultValue false\n */\n groundShadow?: boolean;\n\n /**\n * Enable ambient shadows.\n *\n * @defaultValue false\n */\n shadows?: boolean;\n\n /**\n * Camera speed on X axis.\n *\n * @defaultValue 4\n */\n cameraAxisXSpeed?: number;\n\n /**\n * Camera speed on Y axis.\n *\n * @defaultValue 1\n */\n cameraAxisYSpeed?: number;\n\n /**\n * Enable ambient occlusion.\n *\n * @defaultValue false\n */\n ambientOcclusion?: boolean;\n\n /**\n * Enable streaming of drawings from the server.\n *\n * If streaming is disabled, the file/assembly will be loaded in one go. The viewer will only update\n * once the loading is complete, which may take a while.\n *\n * If streaming is enabled, {@link enablePartialMode | partial streaming} mode may be enabled as well.\n *\n * @defaultValue true\n */\n enableStreamingMode?: boolean;\n\n /**\n * Enable partial streaming mode to be able open large drawing.\n *\n * In partial streaming mode, the viewer keeps only visible objects in memory and loads other objects\n * when the camera changes.\n *\n * Only used if {@link enableStreamingMode | streaming} is enabled. If partial streaming is enabled,\n * then {@link sceneGraph | scene graph} will be disabled.\n *\n * @defaultValue false\n */\n enablePartialMode?: boolean;\n\n /**\n * The size of the memory buffer for graphics data, in bytes.\n *\n * @defaultValue 3294967296\n */\n memoryLimit?: number;\n\n /**\n * Cutting planes fill color.\n *\n * @defaultValue { red: 0xff, green: 0x98, blue: 0x00 }\n */\n cuttingPlaneFillColor?: RGB;\n\n /**\n * Edges highlight color.\n */\n edgesColor?: { r: number; g: number; b: number };\n\n /**\n * Faces highlight color.\n */\n facesColor?: { r: number; g: number; b: number };\n\n /**\n * Show highlighted edges.\n */\n edgesVisibility?: boolean;\n\n /**\n * Show highlighted edges over drawing.\n */\n edgesOverlap?: boolean;\n\n /**\n * Show highlighted faces over drawing.\n */\n facesOverlap?: boolean;\n\n /**\n * Highlighted faces transparency value, from 0 to 255.\n */\n facesTransparancy?: number;\n\n /**\n * Enable custom highlight settings.\n */\n enableCustomHighlight?: boolean;\n\n /**\n * Enable scene graph.\n *\n * Scene graph increases perfomance improvement, but consumes memory. If scene graph is enabled, then\n * {@link enablePartialMode | partial streaming} mode will be disabled.\n */\n sceneGraph: boolean;\n\n /**\n * Show the edges of the model:\n *\n * - `false` - No model edges are displayed. Usefull for less memory consumption.\n * - `true` - Display isolines.\n */\n edgeModel: boolean;\n\n /**\n * Reverse the mouse wheel direction for zooming:\n *\n * - `false` - Moving the wheel up zooms in, moving down zooms out.\n * - `true` - Moving the wheel up zooms out, moving down zooms in.\n */\n reverseZoomWheel: boolean;\n\n /**\n * Enable mouse wheel zooming.\n */\n enableZoomWheel: boolean;\n\n /**\n * Enable touch gestures.\n *\n * This option will be ignored when {@link enableZoomWheel | mouse wheel zooming} is disabled, since\n * gestures contains touch zoom.\n */\n enableGestures: boolean;\n\n /**\n * Deprecated since `25.8`.\n */\n geometryType?: string;\n\n /**\n * Ruler unit.\n *\n * Available values: Default, Millimeters, Centimeters, Meters, Feet, Inches, Yards, Kilometers, Miles,\n * Micrometers, MicroInches\n *\n * @defaultValue Default\n */\n rulerUnit: string;\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset.\n */\n resetToDefaults?: (fields?: string[]) => void;\n}\n\nexport function defaultOptions(): IOptions {\n return {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n geometryType: \"vsfx\",\n rulerUnit: \"Default\",\n };\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\nimport { IOptions, RGB, defaultOptions } from \"./IOptions\";\n\nexport class Options implements IOptions {\n protected _emitter?: EventEmitter2;\n protected _data: IOptions;\n\n constructor(emitter?: EventEmitter2) {\n this._emitter = emitter;\n this._data = defaultOptions();\n this.loadFromStorage();\n }\n\n static defaults(): IOptions {\n return defaultOptions();\n }\n\n notifierChangeEvent(): void {\n console.warn(\n \"Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.\"\n );\n this.change();\n }\n\n change(): void {\n if (this._emitter !== undefined) {\n this.saveToStorage();\n this._emitter.emit({ type: \"optionschange\", data: this });\n }\n }\n\n saveToStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n localStorage.setItem(\"od-client-settings\", JSON.stringify(this.data));\n } catch (error) {\n console.error(\"Cannot save client settings.\", error);\n }\n }\n\n loadFromStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n const item = localStorage.getItem(\"od-client-settings\");\n if (item) {\n const data = JSON.parse(item);\n this.data = { ...data };\n }\n } catch (error) {\n console.error(\"Cannot load client settings.\", error);\n }\n }\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset. Specify `undefined` to reset all.\n */\n resetToDefaults(fields?: string[]): void {\n if (fields !== undefined) {\n const defaults = Options.defaults();\n const resetData = fields.reduce((acc, field) => {\n acc[field] = defaults[field];\n return acc;\n }, {});\n this.data = { ...this.data, ...resetData };\n } else {\n this.data = { ...this.data, ...Options.defaults() };\n }\n }\n\n get data(): IOptions {\n return this._data;\n }\n\n set data(value: IOptions) {\n const enablePartialMode = value.enableStreamingMode ? value.enablePartialMode : false;\n const sceneGraph = enablePartialMode ? false : value.sceneGraph;\n this._data = { ...Options.defaults(), ...this._data, ...value, enablePartialMode, sceneGraph };\n this.change();\n }\n\n get showWCS(): boolean {\n return this._data.showWCS;\n }\n\n set showWCS(value: boolean) {\n this._data.showWCS = value;\n this.change();\n }\n\n get cameraAnimation(): boolean {\n return this._data.cameraAnimation;\n }\n\n set cameraAnimation(value: boolean) {\n this._data.cameraAnimation = value;\n this.change();\n }\n\n get antialiasing(): boolean {\n return this._data.antialiasing;\n }\n\n set antialiasing(value: boolean) {\n this._data.antialiasing = value;\n this.change();\n }\n\n get groundShadow(): boolean {\n return this._data.groundShadow;\n }\n\n set groundShadow(value: boolean) {\n this._data.groundShadow = value;\n this.change();\n }\n\n get shadows(): boolean {\n return this._data.shadows;\n }\n\n set shadows(value: boolean) {\n this._data.shadows = value;\n this.change();\n }\n\n get cameraAxisXSpeed(): number {\n return this._data.cameraAxisXSpeed;\n }\n\n set cameraAxisXSpeed(value: number) {\n this._data.cameraAxisXSpeed = value;\n this.change();\n }\n\n get cameraAxisYSpeed(): number {\n return this._data.cameraAxisYSpeed;\n }\n\n set cameraAxisYSpeed(value: number) {\n this.cameraAxisYSpeed = value;\n this.change();\n }\n\n get ambientOcclusion(): boolean {\n return this._data.ambientOcclusion;\n }\n\n set ambientOcclusion(value: boolean) {\n this._data.ambientOcclusion = value;\n this.change();\n }\n\n get enableStreamingMode(): boolean {\n return this._data.enableStreamingMode;\n }\n\n set enableStreamingMode(value: boolean) {\n this._data.enableStreamingMode = value;\n if (!value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get enablePartialMode(): boolean {\n return this._data.enablePartialMode;\n }\n\n set enablePartialMode(value: boolean) {\n this._data.enablePartialMode = value;\n if (value) {\n this._data.enableStreamingMode = true;\n this._data.sceneGraph = false;\n }\n this.change();\n }\n\n get memoryLimit(): number {\n return this._data.memoryLimit;\n }\n\n set memoryLimit(value: number) {\n this._data.memoryLimit = value;\n this.change();\n }\n\n get cuttingPlaneFillColor(): RGB {\n return this._data.cuttingPlaneFillColor;\n }\n\n set cuttingPlaneFillColor(value: RGB) {\n this._data.cuttingPlaneFillColor = value;\n this.change();\n }\n\n get edgesColor() {\n return this._data.edgesColor;\n }\n\n set edgesColor(value) {\n this._data.edgesColor = value;\n this.change();\n }\n\n get facesColor() {\n return this._data.facesColor;\n }\n\n set facesColor(value) {\n this._data.facesColor = value;\n this.change();\n }\n\n get edgesVisibility() {\n return this._data.edgesVisibility;\n }\n\n set edgesVisibility(value) {\n this._data.edgesVisibility = value;\n this.change();\n }\n\n get edgesOverlap() {\n return this._data.edgesOverlap;\n }\n\n set edgesOverlap(value) {\n this._data.edgesOverlap = value;\n this.change();\n }\n\n get facesOverlap() {\n return this._data.facesOverlap;\n }\n\n set facesOverlap(value) {\n this._data.facesOverlap = value;\n this.change();\n }\n\n get facesTransparancy() {\n return this._data.facesTransparancy;\n }\n\n set facesTransparancy(value) {\n this._data.facesTransparancy = value;\n this.change();\n }\n\n get enableCustomHighlight() {\n return this._data.enableCustomHighlight;\n }\n\n set enableCustomHighlight(value) {\n this._data.enableCustomHighlight = value;\n this.change();\n }\n\n get sceneGraph() {\n return this._data.sceneGraph;\n }\n\n set sceneGraph(value) {\n this._data.sceneGraph = value;\n if (value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get edgeModel() {\n return Boolean(this._data.edgeModel);\n }\n\n set edgeModel(value) {\n this._data.edgeModel = Boolean(value);\n this.change();\n }\n\n get reverseZoomWheel() {\n return this._data.reverseZoomWheel;\n }\n\n set reverseZoomWheel(value: boolean) {\n this._data.reverseZoomWheel = !!value;\n this.change();\n }\n\n get enableZoomWheel() {\n return this._data.enableZoomWheel;\n }\n\n set enableZoomWheel(value: boolean) {\n this._data.enableZoomWheel = !!value;\n this.change();\n }\n\n get enableGestures() {\n return this._data.enableGestures;\n }\n\n set enableGestures(value: boolean) {\n this._data.enableGestures = !!value;\n this.change();\n }\n\n get geometryType() {\n return this._data.geometryType;\n }\n\n set geometryType(value: string) {\n this._data.geometryType = value;\n this.change();\n }\n\n get rulerUnit(): string {\n return this._data.rulerUnit;\n }\n\n set rulerUnit(value: string) {\n this._data.rulerUnit = value;\n this.change();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport const CanvasEvents = [\n \"click\",\n \"contextmenu\",\n \"dblclick\",\n \"mousedown\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseup\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerup\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"wheel\",\n];\n\nexport const CANVAS_EVENTS = CanvasEvents;\n\n/**\n * Canvas Events.\n *\n * @event\n */\nexport interface CanvasEventMap {\n /**\n * Event that fires on mouse click.\n */\n click: MouseEvent;\n\n /**\n * Event that fires when the user attempts to open a context menu.\n */\n contextmenu: PointerEvent;\n\n /**\n * Event that fires on mouse double click.\n */\n dblclick: MouseEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n mousedown: MouseEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n mouseleave: MouseEvent;\n\n /**\n * Event that fires on mouse move.\n */\n mousemove: MouseEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n mouseup: MouseEvent;\n\n /**\n * Event is fired when the browser determines that there are unlikely to be any more pointer events.\n */\n pointercancel: PointerEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n pointerdown: PointerEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n pointerleave: PointerEvent;\n\n /**\n * Event that fires on mouse move.\n */\n pointermove: PointerEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n pointerup: PointerEvent;\n\n /**\n * Event that fires touch is canceled.\n */\n touchcancel: TouchEvent;\n\n /**\n * Event that fires touch is ended.\n */\n touchend: TouchEvent;\n\n /**\n * Event that fires touch is moving.\n */\n touchmove: TouchEvent;\n\n /**\n * Event that fires when touch is started.\n */\n touchstart: TouchEvent;\n\n /**\n * Event that fires when mouse wheel is moving.\n */\n wheel: MouseEvent;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewer-core.js","sources":["../src/commands/Commands.ts","../src/draggers/Dragger.ts","../src/draggers/Draggers.ts","../src/components/Component.ts","../src/components/Components.ts","../src/options/IOptions.ts","../src/options/Options.ts","../src/viewer/CanvasEvents.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IViewer } from \"../viewer/IViewer\";\nimport { ICommand, ICommandHandler, ICommandDescription, ICommandsRegistry } from \"./ICommands\";\n\nclass CommandsRegistry implements ICommandsRegistry {\n private readonly _commands = new Map<string, ICommand>();\n\n registerCommand(id: string, handler: ICommandHandler, description?: ICommandDescription, thisArg?: any): void {\n this._commands.set(id, { id, handler, thisArg, description });\n }\n\n registerCommandAlias(id: string, alias: string): void {\n this.registerCommand(alias, (viewer: IViewer, ...args) => this.executeCommand(id, viewer, ...args));\n }\n\n getCommand(id: string): ICommand | undefined {\n return this._commands.get(id);\n }\n\n getCommands(): Map<string, ICommand> {\n const map = new Map<string, ICommand>();\n this._commands.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n executeCommand(id: string, viewer: IViewer, ...args: any[]): any {\n const command = this._commands.get(id);\n if (!command) {\n if (viewer) {\n const isDraggerCommand = viewer.draggers.includes(id);\n if (isDraggerCommand) return viewer.setActiveDragger(id);\n }\n\n console.warn(`Command '${id}' not found`);\n return undefined;\n }\n\n const { handler, thisArg } = command;\n const result = handler.apply(thisArg, [viewer, ...args]);\n\n viewer?.emit({ type: \"command\", data: id, args });\n\n return result;\n }\n}\n\nconst _commandsRegistry = new Map<string, CommandsRegistry>();\n\nfunction commandsRegistry(viewerType = \"\"): ICommandsRegistry {\n let result = _commandsRegistry.get(viewerType);\n if (!result) {\n result = new CommandsRegistry();\n _commandsRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { commandsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IDragger } from \"./IDraggers\";\n\nexport class Dragger implements IDragger {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IDragger, IDraggerProvider, IDraggersRegistry } from \"./IDraggers\";\n\nclass DraggersRegistry implements IDraggersRegistry {\n private readonly _providers = new Map<string, IDraggerProvider>();\n\n registerDragger(name: string, provider: IDraggerProvider): void {\n this._providers.set(name, provider);\n }\n\n registerDraggerAlias(name: string, alias: string): void {\n const provider = this._providers.get(name);\n if (provider) this.registerDragger(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getDraggers(): Map<string, IDraggerProvider> {\n const map = new Map<string, IDraggerProvider>();\n this._providers.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createDragger(name: string, viewer: IViewer): IDragger | null {\n const provider = this._providers.get(name);\n if (!provider) return null;\n\n const dragger = provider(viewer);\n dragger.name = name;\n\n return dragger;\n }\n}\n\nconst _draggersRegistry = new Map<string, DraggersRegistry>();\n\nfunction draggersRegistry(viewerType = \"\"): IDraggersRegistry {\n let result = _draggersRegistry.get(viewerType);\n if (!result) {\n result = new DraggersRegistry();\n _draggersRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { draggersRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IComponent } from \"./IComponents\";\n\nexport class Component implements IComponent {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IComponent, IComponentProvider, IComponentsRegistry } from \"./IComponents\";\n\nclass Components implements IComponentsRegistry {\n private readonly _providers = new Map<string, IComponentProvider>();\n\n registerComponent(name: string, provider: IComponentProvider): void {\n this._providers.set(name, provider);\n }\n\n registerComponentAlias(name: string, alias: string): void {\n const provider = this._providers.get(name);\n if (provider) this.registerComponent(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getComponents(): Map<string, IComponentProvider> {\n const map = new Map<string, IComponentProvider>();\n this._providers.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createComponent(name: string, viewer: IViewer): IComponent | null {\n const provider = this._providers.get(name);\n if (!provider) return null;\n\n const component = provider(viewer);\n component.name = name;\n\n return component;\n }\n}\n\nconst _components = new Map<string, Components>();\n\nfunction componentsRegistry(viewerType = \"\"): IComponentsRegistry {\n let result = _components.get(viewerType);\n if (!result) {\n result = new Components();\n _components.set(viewerType, result);\n }\n return result;\n}\n\nexport { componentsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n/**\n * Viewer options interface.\n */\nexport interface IOptions {\n /**\n * Show the world coordinate system axes in the bottom-left corner of the viewer.\n *\n * @defaultValue true\n */\n showWCS?: boolean;\n\n /**\n * Enable camera animation.\n *\n * @defaultValue true\n */\n cameraAnimation?: boolean;\n\n /**\n * Enable anti-aliasing using FXAA.\n *\n * @defaultValue true\n */\n antialiasing?: boolean;\n\n /**\n * Show ground shadows below the model.\n *\n * @defaultValue false\n */\n groundShadow?: boolean;\n\n /**\n * Enable ambient shadows.\n *\n * @defaultValue false\n */\n shadows?: boolean;\n\n /**\n * Camera speed on X axis.\n *\n * @defaultValue 4\n */\n cameraAxisXSpeed?: number;\n\n /**\n * Camera speed on Y axis.\n *\n * @defaultValue 1\n */\n cameraAxisYSpeed?: number;\n\n /**\n * Enable ambient occlusion.\n *\n * @defaultValue false\n */\n ambientOcclusion?: boolean;\n\n /**\n * Enable streaming of drawings from the server.\n *\n * If streaming is disabled, the file/assembly will be loaded in one go. The viewer will only update\n * once the loading is complete, which may take a while.\n *\n * If streaming is enabled, {@link enablePartialMode | partial streaming} mode may be enabled as well.\n *\n * @defaultValue true\n */\n enableStreamingMode?: boolean;\n\n /**\n * Enable partial streaming mode to be able open large drawing.\n *\n * In partial streaming mode, the viewer keeps only visible objects in memory and loads other objects\n * when the camera changes.\n *\n * Only used if {@link enableStreamingMode | streaming} is enabled. If partial streaming is enabled,\n * then {@link sceneGraph | scene graph} will be disabled.\n *\n * @defaultValue false\n */\n enablePartialMode?: boolean;\n\n /**\n * The size of the memory buffer for graphics data, in bytes.\n *\n * @defaultValue 3294967296\n */\n memoryLimit?: number;\n\n /**\n * Cutting planes fill color.\n *\n * @defaultValue { red: 0xff, green: 0x98, blue: 0x00 }\n */\n cuttingPlaneFillColor?: RGB;\n\n /**\n * Edges highlight color.\n */\n edgesColor?: { r: number; g: number; b: number };\n\n /**\n * Faces highlight color.\n */\n facesColor?: { r: number; g: number; b: number };\n\n /**\n * Show highlighted edges.\n */\n edgesVisibility?: boolean;\n\n /**\n * Show highlighted edges over drawing.\n */\n edgesOverlap?: boolean;\n\n /**\n * Show highlighted faces over drawing.\n */\n facesOverlap?: boolean;\n\n /**\n * Highlighted faces transparency value, from 0 to 255.\n */\n facesTransparancy?: number;\n\n /**\n * Enable custom highlight settings.\n */\n enableCustomHighlight?: boolean;\n\n /**\n * Enable scene graph.\n *\n * Scene graph increases perfomance improvement, but consumes memory. If scene graph is enabled, then\n * {@link enablePartialMode | partial streaming} mode will be disabled.\n */\n sceneGraph: boolean;\n\n /**\n * Show the edges of the model:\n *\n * - `false` - No model edges are displayed. Usefull for less memory consumption.\n * - `true` - Display isolines.\n */\n edgeModel: boolean;\n\n /**\n * Reverse the mouse wheel direction for zooming:\n *\n * - `false` - Moving the wheel up zooms in, moving down zooms out.\n * - `true` - Moving the wheel up zooms out, moving down zooms in.\n */\n reverseZoomWheel: boolean;\n\n /**\n * Enable mouse wheel zooming.\n */\n enableZoomWheel: boolean;\n\n /**\n * Enable touch gestures.\n *\n * This option will be ignored when {@link enableZoomWheel | mouse wheel zooming} is disabled, since\n * gestures contains touch zoom.\n */\n enableGestures: boolean;\n\n /**\n * Deprecated since `25.8`.\n */\n geometryType?: string;\n\n /**\n * Ruler unit.\n *\n * Available values: Default, Millimeters, Centimeters, Meters, Feet, Inches, Yards, Kilometers, Miles,\n * Micrometers, MicroInches\n *\n * @defaultValue Default\n */\n rulerUnit: string;\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset.\n */\n resetToDefaults?: (fields?: string[]) => void;\n}\n\nexport function defaultOptions(): IOptions {\n return {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n geometryType: \"vsfx\",\n rulerUnit: \"Default\",\n };\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\nimport { IOptions, RGB, defaultOptions } from \"./IOptions\";\n\nexport class Options implements IOptions {\n protected _emitter?: EventEmitter2;\n protected _data: IOptions;\n\n constructor(emitter?: EventEmitter2) {\n this._emitter = emitter;\n this._data = defaultOptions();\n this.loadFromStorage();\n }\n\n static defaults(): IOptions {\n return defaultOptions();\n }\n\n notifierChangeEvent(): void {\n console.warn(\n \"Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.\"\n );\n this.change();\n }\n\n change(): void {\n if (this._emitter !== undefined) {\n this.saveToStorage();\n this._emitter.emit({ type: \"optionschange\", data: this });\n }\n }\n\n saveToStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n localStorage.setItem(\"od-client-settings\", JSON.stringify(this.data));\n } catch (error) {\n console.error(\"Cannot save client settings.\", error);\n }\n }\n\n loadFromStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n const item = localStorage.getItem(\"od-client-settings\");\n if (item) {\n const data = JSON.parse(item);\n this.data = { ...data };\n }\n } catch (error) {\n console.error(\"Cannot load client settings.\", error);\n }\n }\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset. Specify `undefined` to reset all.\n */\n resetToDefaults(fields?: string[]): void {\n if (fields !== undefined) {\n const defaults = Options.defaults();\n const resetData = fields.reduce((acc, field) => {\n acc[field] = defaults[field];\n return acc;\n }, {});\n this.data = { ...this.data, ...resetData };\n } else {\n this.data = { ...this.data, ...Options.defaults() };\n }\n }\n\n get data(): IOptions {\n return this._data;\n }\n\n set data(value: IOptions) {\n const enablePartialMode = value.enableStreamingMode ? value.enablePartialMode : false;\n const sceneGraph = enablePartialMode ? false : value.sceneGraph;\n this._data = { ...Options.defaults(), ...this._data, ...value, enablePartialMode, sceneGraph };\n this.change();\n }\n\n get showWCS(): boolean {\n return this._data.showWCS;\n }\n\n set showWCS(value: boolean) {\n this._data.showWCS = value;\n this.change();\n }\n\n get cameraAnimation(): boolean {\n return this._data.cameraAnimation;\n }\n\n set cameraAnimation(value: boolean) {\n this._data.cameraAnimation = value;\n this.change();\n }\n\n get antialiasing(): boolean {\n return this._data.antialiasing;\n }\n\n set antialiasing(value: boolean) {\n this._data.antialiasing = value;\n this.change();\n }\n\n get groundShadow(): boolean {\n return this._data.groundShadow;\n }\n\n set groundShadow(value: boolean) {\n this._data.groundShadow = value;\n this.change();\n }\n\n get shadows(): boolean {\n return this._data.shadows;\n }\n\n set shadows(value: boolean) {\n this._data.shadows = value;\n this.change();\n }\n\n get cameraAxisXSpeed(): number {\n return this._data.cameraAxisXSpeed;\n }\n\n set cameraAxisXSpeed(value: number) {\n this._data.cameraAxisXSpeed = value;\n this.change();\n }\n\n get cameraAxisYSpeed(): number {\n return this._data.cameraAxisYSpeed;\n }\n\n set cameraAxisYSpeed(value: number) {\n this.cameraAxisYSpeed = value;\n this.change();\n }\n\n get ambientOcclusion(): boolean {\n return this._data.ambientOcclusion;\n }\n\n set ambientOcclusion(value: boolean) {\n this._data.ambientOcclusion = value;\n this.change();\n }\n\n get enableStreamingMode(): boolean {\n return this._data.enableStreamingMode;\n }\n\n set enableStreamingMode(value: boolean) {\n this._data.enableStreamingMode = value;\n if (!value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get enablePartialMode(): boolean {\n return this._data.enablePartialMode;\n }\n\n set enablePartialMode(value: boolean) {\n this._data.enablePartialMode = value;\n if (value) {\n this._data.enableStreamingMode = true;\n this._data.sceneGraph = false;\n }\n this.change();\n }\n\n get memoryLimit(): number {\n return this._data.memoryLimit;\n }\n\n set memoryLimit(value: number) {\n this._data.memoryLimit = value;\n this.change();\n }\n\n get cuttingPlaneFillColor(): RGB {\n return this._data.cuttingPlaneFillColor;\n }\n\n set cuttingPlaneFillColor(value: RGB) {\n this._data.cuttingPlaneFillColor = value;\n this.change();\n }\n\n get edgesColor() {\n return this._data.edgesColor;\n }\n\n set edgesColor(value) {\n this._data.edgesColor = value;\n this.change();\n }\n\n get facesColor() {\n return this._data.facesColor;\n }\n\n set facesColor(value) {\n this._data.facesColor = value;\n this.change();\n }\n\n get edgesVisibility() {\n return this._data.edgesVisibility;\n }\n\n set edgesVisibility(value) {\n this._data.edgesVisibility = value;\n this.change();\n }\n\n get edgesOverlap() {\n return this._data.edgesOverlap;\n }\n\n set edgesOverlap(value) {\n this._data.edgesOverlap = value;\n this.change();\n }\n\n get facesOverlap() {\n return this._data.facesOverlap;\n }\n\n set facesOverlap(value) {\n this._data.facesOverlap = value;\n this.change();\n }\n\n get facesTransparancy() {\n return this._data.facesTransparancy;\n }\n\n set facesTransparancy(value) {\n this._data.facesTransparancy = value;\n this.change();\n }\n\n get enableCustomHighlight() {\n return this._data.enableCustomHighlight;\n }\n\n set enableCustomHighlight(value) {\n this._data.enableCustomHighlight = value;\n this.change();\n }\n\n get sceneGraph() {\n return this._data.sceneGraph;\n }\n\n set sceneGraph(value) {\n this._data.sceneGraph = value;\n if (value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get edgeModel() {\n return Boolean(this._data.edgeModel);\n }\n\n set edgeModel(value) {\n this._data.edgeModel = Boolean(value);\n this.change();\n }\n\n get reverseZoomWheel() {\n return this._data.reverseZoomWheel;\n }\n\n set reverseZoomWheel(value: boolean) {\n this._data.reverseZoomWheel = !!value;\n this.change();\n }\n\n get enableZoomWheel() {\n return this._data.enableZoomWheel;\n }\n\n set enableZoomWheel(value: boolean) {\n this._data.enableZoomWheel = !!value;\n this.change();\n }\n\n get enableGestures() {\n return this._data.enableGestures;\n }\n\n set enableGestures(value: boolean) {\n this._data.enableGestures = !!value;\n this.change();\n }\n\n get geometryType() {\n return this._data.geometryType;\n }\n\n set geometryType(value: string) {\n this._data.geometryType = value;\n this.change();\n }\n\n get rulerUnit(): string {\n return this._data.rulerUnit;\n }\n\n set rulerUnit(value: string) {\n this._data.rulerUnit = value;\n this.change();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport const CanvasEvents = [\n \"click\",\n \"contextmenu\",\n \"dblclick\",\n \"mousedown\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseup\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerup\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"wheel\",\n];\n\nexport const CANVAS_EVENTS = CanvasEvents;\n\n/**\n * Canvas Events.\n *\n * @event\n */\nexport interface CanvasEventMap {\n /**\n * Event that fires on mouse click.\n */\n click: MouseEvent;\n\n /**\n * Event that fires when the user attempts to open a context menu.\n */\n contextmenu: PointerEvent;\n\n /**\n * Event that fires on mouse double click.\n */\n dblclick: MouseEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n mousedown: MouseEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n mouseleave: MouseEvent;\n\n /**\n * Event that fires on mouse move.\n */\n mousemove: MouseEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n mouseup: MouseEvent;\n\n /**\n * Event is fired when the browser determines that there are unlikely to be any more pointer events.\n */\n pointercancel: PointerEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n pointerdown: PointerEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n pointerleave: PointerEvent;\n\n /**\n * Event that fires on mouse move.\n */\n pointermove: PointerEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n pointerup: PointerEvent;\n\n /**\n * Event that fires touch is canceled.\n */\n touchcancel: TouchEvent;\n\n /**\n * Event that fires touch is ended.\n */\n touchend: TouchEvent;\n\n /**\n * Event that fires touch is moving.\n */\n touchmove: TouchEvent;\n\n /**\n * Event that fires when touch is started.\n */\n touchstart: TouchEvent;\n\n /**\n * Event that fires when mouse wheel is moving.\n */\n wheel: MouseEvent;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -62,25 +62,22 @@ class Dragger {
|
|
|
62
62
|
|
|
63
63
|
class DraggersRegistry {
|
|
64
64
|
constructor() {
|
|
65
|
-
this.
|
|
65
|
+
this._providers = new Map;
|
|
66
66
|
}
|
|
67
67
|
registerDragger(name, provider) {
|
|
68
|
-
this.
|
|
68
|
+
this._providers.set(name, provider);
|
|
69
69
|
}
|
|
70
70
|
registerDraggerAlias(name, alias) {
|
|
71
|
-
const provider = this.
|
|
71
|
+
const provider = this._providers.get(name);
|
|
72
72
|
if (provider) this.registerDragger(alias, (viewer => provider(viewer)));
|
|
73
73
|
}
|
|
74
|
-
getDragger(name) {
|
|
75
|
-
return this._draggers.get(name);
|
|
76
|
-
}
|
|
77
74
|
getDraggers() {
|
|
78
75
|
const map = new Map;
|
|
79
|
-
this.
|
|
76
|
+
this._providers.forEach(((value, key) => map.set(key, value)));
|
|
80
77
|
return map;
|
|
81
78
|
}
|
|
82
79
|
createDragger(name, viewer) {
|
|
83
|
-
const provider = this.
|
|
80
|
+
const provider = this._providers.get(name);
|
|
84
81
|
if (!provider) return null;
|
|
85
82
|
const dragger = provider(viewer);
|
|
86
83
|
dragger.name = name;
|
|
@@ -108,25 +105,22 @@ class Component {
|
|
|
108
105
|
|
|
109
106
|
class Components {
|
|
110
107
|
constructor() {
|
|
111
|
-
this.
|
|
108
|
+
this._providers = new Map;
|
|
112
109
|
}
|
|
113
110
|
registerComponent(name, provider) {
|
|
114
|
-
this.
|
|
111
|
+
this._providers.set(name, provider);
|
|
115
112
|
}
|
|
116
113
|
registerComponentAlias(name, alias) {
|
|
117
|
-
const provider = this.
|
|
114
|
+
const provider = this._providers.get(name);
|
|
118
115
|
if (provider) this.registerComponent(alias, (viewer => provider(viewer)));
|
|
119
116
|
}
|
|
120
|
-
getComponent(name) {
|
|
121
|
-
return this._components.get(name);
|
|
122
|
-
}
|
|
123
117
|
getComponents() {
|
|
124
118
|
const map = new Map;
|
|
125
|
-
this.
|
|
119
|
+
this._providers.forEach(((value, key) => map.set(key, value)));
|
|
126
120
|
return map;
|
|
127
121
|
}
|
|
128
122
|
createComponent(name, viewer) {
|
|
129
|
-
const provider = this.
|
|
123
|
+
const provider = this._providers.get(name);
|
|
130
124
|
if (!provider) return null;
|
|
131
125
|
const component = provider(viewer);
|
|
132
126
|
component.name = name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-core.module.js","sources":["../src/commands/Commands.ts","../src/draggers/Dragger.ts","../src/draggers/Draggers.ts","../src/components/Component.ts","../src/components/Components.ts","../src/options/IOptions.ts","../src/options/Options.ts","../src/viewer/CanvasEvents.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IViewer } from \"../viewer/IViewer\";\nimport { ICommand, ICommandHandler, ICommandDescription, ICommandsMap, ICommandsRegistry } from \"./ICommands\";\n\nclass CommandsRegistry implements ICommandsRegistry {\n private readonly _commands = new Map<string, ICommand>();\n\n registerCommand(id: string, handler: ICommandHandler, description?: ICommandDescription, thisArg?: any): void {\n this._commands.set(id, { id, handler, thisArg, description });\n }\n\n registerCommandAlias(id: string, alias: string): void {\n this.registerCommand(alias, (viewer: IViewer, ...args) => this.executeCommand(id, viewer, ...args));\n }\n\n getCommand(id: string): ICommand | undefined {\n return this._commands.get(id);\n }\n\n getCommands(): ICommandsMap {\n const map = new Map<string, ICommand>();\n this._commands.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n executeCommand(id: string, viewer: IViewer, ...args: any[]): any {\n const command = this._commands.get(id);\n if (!command) {\n if (viewer) {\n const isDraggerCommand = viewer.draggers.includes(id);\n if (isDraggerCommand) return viewer.setActiveDragger(id);\n }\n\n console.warn(`Command '${id}' not found`);\n return undefined;\n }\n\n const { handler, thisArg } = command;\n const result = handler.apply(thisArg, [viewer, ...args]);\n\n viewer?.emit({ type: \"command\", data: id, args });\n\n return result;\n }\n}\n\nconst _commandsRegistry = new Map<string, CommandsRegistry>();\n\nfunction commandsRegistry(viewerType = \"\"): ICommandsRegistry {\n let result = _commandsRegistry.get(viewerType);\n if (!result) {\n result = new CommandsRegistry();\n _commandsRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { commandsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IDragger } from \"./IDraggers\";\n\nexport class Dragger implements IDragger {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IDragger, IDraggerProvider, IDraggersMap, IDraggersRegistry } from \"./IDraggers\";\n\nclass DraggersRegistry implements IDraggersRegistry {\n private readonly _draggers = new Map<string, IDraggerProvider>();\n\n registerDragger(name: string, provider: IDraggerProvider): void {\n this._draggers.set(name, provider);\n }\n\n registerDraggerAlias(name: string, alias: string): void {\n const provider = this.getDragger(name);\n if (provider) this.registerDragger(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getDragger(name: string): IDraggerProvider | undefined {\n return this._draggers.get(name);\n }\n\n getDraggers(): IDraggersMap {\n const map = new Map<string, IDraggerProvider>();\n this._draggers.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createDragger(name: string, viewer: IViewer): IDragger | null {\n const provider = this.getDragger(name);\n if (!provider) return null;\n\n const dragger = provider(viewer);\n dragger.name = name;\n\n return dragger;\n }\n}\n\nconst _draggersRegistry = new Map<string, DraggersRegistry>();\n\nfunction draggersRegistry(viewerType = \"\"): IDraggersRegistry {\n let result = _draggersRegistry.get(viewerType);\n if (!result) {\n result = new DraggersRegistry();\n _draggersRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { draggersRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IComponent } from \"./IComponents\";\n\nexport class Component implements IComponent {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IComponent, IComponentProvider, IComponentsMap, IComponentsRegistry } from \"./IComponents\";\n\nclass Components implements IComponentsRegistry {\n private readonly _components = new Map<string, IComponentProvider>();\n\n registerComponent(name: string, provider: IComponentProvider): void {\n this._components.set(name, provider);\n }\n\n registerComponentAlias(name: string, alias: string): void {\n const provider = this.getComponent(name);\n if (provider) this.registerComponent(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getComponent(name: string): IComponentProvider | undefined {\n return this._components.get(name);\n }\n\n getComponents(): IComponentsMap {\n const map = new Map<string, IComponentProvider>();\n this._components.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createComponent(name: string, viewer: IViewer): IComponent | null {\n const provider = this.getComponent(name);\n if (!provider) return null;\n\n const component = provider(viewer);\n component.name = name;\n\n return component;\n }\n}\n\nconst _components = new Map<string, Components>();\n\nfunction componentsRegistry(viewerType = \"\"): IComponentsRegistry {\n let result = _components.get(viewerType);\n if (!result) {\n result = new Components();\n _components.set(viewerType, result);\n }\n return result;\n}\n\nexport { componentsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n/**\n * Viewer options interface.\n */\nexport interface IOptions {\n /**\n * Show the world coordinate system axes in the bottom-left corner of the viewer.\n *\n * @defaultValue true\n */\n showWCS?: boolean;\n\n /**\n * Enable camera animation.\n *\n * @defaultValue true\n */\n cameraAnimation?: boolean;\n\n /**\n * Enable anti-aliasing using FXAA.\n *\n * @defaultValue true\n */\n antialiasing?: boolean;\n\n /**\n * Show ground shadows below the model.\n *\n * @defaultValue false\n */\n groundShadow?: boolean;\n\n /**\n * Enable ambient shadows.\n *\n * @defaultValue false\n */\n shadows?: boolean;\n\n /**\n * Camera speed on X axis.\n *\n * @defaultValue 4\n */\n cameraAxisXSpeed?: number;\n\n /**\n * Camera speed on Y axis.\n *\n * @defaultValue 1\n */\n cameraAxisYSpeed?: number;\n\n /**\n * Enable ambient occlusion.\n *\n * @defaultValue false\n */\n ambientOcclusion?: boolean;\n\n /**\n * Enable streaming of drawings from the server.\n *\n * If streaming is disabled, the file/assembly will be loaded in one go. The viewer will only update\n * once the loading is complete, which may take a while.\n *\n * If streaming is enabled, {@link enablePartialMode | partial streaming} mode may be enabled as well.\n *\n * @defaultValue true\n */\n enableStreamingMode?: boolean;\n\n /**\n * Enable partial streaming mode to be able open large drawing.\n *\n * In partial streaming mode, the viewer keeps only visible objects in memory and loads other objects\n * when the camera changes.\n *\n * Only used if {@link enableStreamingMode | streaming} is enabled. If partial streaming is enabled,\n * then {@link sceneGraph | scene graph} will be disabled.\n *\n * @defaultValue false\n */\n enablePartialMode?: boolean;\n\n /**\n * The size of the memory buffer for graphics data, in bytes.\n *\n * @defaultValue 3294967296\n */\n memoryLimit?: number;\n\n /**\n * Cutting planes fill color.\n *\n * @defaultValue { red: 0xff, green: 0x98, blue: 0x00 }\n */\n cuttingPlaneFillColor?: RGB;\n\n /**\n * Edges highlight color.\n */\n edgesColor?: { r: number; g: number; b: number };\n\n /**\n * Faces highlight color.\n */\n facesColor?: { r: number; g: number; b: number };\n\n /**\n * Show highlighted edges.\n */\n edgesVisibility?: boolean;\n\n /**\n * Show highlighted edges over drawing.\n */\n edgesOverlap?: boolean;\n\n /**\n * Show highlighted faces over drawing.\n */\n facesOverlap?: boolean;\n\n /**\n * Highlighted faces transparency value, from 0 to 255.\n */\n facesTransparancy?: number;\n\n /**\n * Enable custom highlight settings.\n */\n enableCustomHighlight?: boolean;\n\n /**\n * Enable scene graph.\n *\n * Scene graph increases perfomance improvement, but consumes memory. If scene graph is enabled, then\n * {@link enablePartialMode | partial streaming} mode will be disabled.\n */\n sceneGraph: boolean;\n\n /**\n * Show the edges of the model:\n *\n * - `false` - No model edges are displayed. Usefull for less memory consumption.\n * - `true` - Display isolines.\n */\n edgeModel: boolean;\n\n /**\n * Reverse the mouse wheel direction for zooming:\n *\n * - `false` - Moving the wheel up zooms in, moving down zooms out.\n * - `true` - Moving the wheel up zooms out, moving down zooms in.\n */\n reverseZoomWheel: boolean;\n\n /**\n * Enable mouse wheel zooming.\n */\n enableZoomWheel: boolean;\n\n /**\n * Enable touch gestures.\n *\n * This option will be ignored when {@link enableZoomWheel | mouse wheel zooming} is disabled, since\n * gestures contains touch zoom.\n */\n enableGestures: boolean;\n\n /**\n * Deprecated since `25.8`.\n */\n geometryType?: string;\n\n /**\n * Ruler unit.\n *\n * Available values: Default, Millimeters, Centimeters, Meters, Feet, Inches, Yards, Kilometers, Miles,\n * Micrometers, MicroInches\n *\n * @defaultValue Default\n */\n rulerUnit: string;\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset.\n */\n resetToDefaults?: (fields?: string[]) => void;\n}\n\nexport function defaultOptions(): IOptions {\n return {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n geometryType: \"vsfx\",\n rulerUnit: \"Default\",\n };\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\nimport { IOptions, RGB, defaultOptions } from \"./IOptions\";\n\nexport class Options implements IOptions {\n protected _emitter?: EventEmitter2;\n protected _data: IOptions;\n\n constructor(emitter?: EventEmitter2) {\n this._emitter = emitter;\n this._data = defaultOptions();\n this.loadFromStorage();\n }\n\n static defaults(): IOptions {\n return defaultOptions();\n }\n\n notifierChangeEvent(): void {\n console.warn(\n \"Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.\"\n );\n this.change();\n }\n\n change(): void {\n if (this._emitter !== undefined) {\n this.saveToStorage();\n this._emitter.emit({ type: \"optionschange\", data: this });\n }\n }\n\n saveToStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n localStorage.setItem(\"od-client-settings\", JSON.stringify(this.data));\n } catch (error) {\n console.error(\"Cannot save client settings.\", error);\n }\n }\n\n loadFromStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n const item = localStorage.getItem(\"od-client-settings\");\n if (item) {\n const data = JSON.parse(item);\n this.data = { ...data };\n }\n } catch (error) {\n console.error(\"Cannot load client settings.\", error);\n }\n }\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset. Specify `undefined` to reset all.\n */\n resetToDefaults(fields?: string[]): void {\n if (fields !== undefined) {\n const defaults = Options.defaults();\n const resetData = fields.reduce((acc, field) => {\n acc[field] = defaults[field];\n return acc;\n }, {});\n this.data = { ...this.data, ...resetData };\n } else {\n this.data = { ...this.data, ...Options.defaults() };\n }\n }\n\n get data(): IOptions {\n return this._data;\n }\n\n set data(value: IOptions) {\n const enablePartialMode = value.enableStreamingMode ? value.enablePartialMode : false;\n const sceneGraph = enablePartialMode ? false : value.sceneGraph;\n this._data = { ...Options.defaults(), ...this._data, ...value, enablePartialMode, sceneGraph };\n this.change();\n }\n\n get showWCS(): boolean {\n return this._data.showWCS;\n }\n\n set showWCS(value: boolean) {\n this._data.showWCS = value;\n this.change();\n }\n\n get cameraAnimation(): boolean {\n return this._data.cameraAnimation;\n }\n\n set cameraAnimation(value: boolean) {\n this._data.cameraAnimation = value;\n this.change();\n }\n\n get antialiasing(): boolean {\n return this._data.antialiasing;\n }\n\n set antialiasing(value: boolean) {\n this._data.antialiasing = value;\n this.change();\n }\n\n get groundShadow(): boolean {\n return this._data.groundShadow;\n }\n\n set groundShadow(value: boolean) {\n this._data.groundShadow = value;\n this.change();\n }\n\n get shadows(): boolean {\n return this._data.shadows;\n }\n\n set shadows(value: boolean) {\n this._data.shadows = value;\n this.change();\n }\n\n get cameraAxisXSpeed(): number {\n return this._data.cameraAxisXSpeed;\n }\n\n set cameraAxisXSpeed(value: number) {\n this._data.cameraAxisXSpeed = value;\n this.change();\n }\n\n get cameraAxisYSpeed(): number {\n return this._data.cameraAxisYSpeed;\n }\n\n set cameraAxisYSpeed(value: number) {\n this.cameraAxisYSpeed = value;\n this.change();\n }\n\n get ambientOcclusion(): boolean {\n return this._data.ambientOcclusion;\n }\n\n set ambientOcclusion(value: boolean) {\n this._data.ambientOcclusion = value;\n this.change();\n }\n\n get enableStreamingMode(): boolean {\n return this._data.enableStreamingMode;\n }\n\n set enableStreamingMode(value: boolean) {\n this._data.enableStreamingMode = value;\n if (!value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get enablePartialMode(): boolean {\n return this._data.enablePartialMode;\n }\n\n set enablePartialMode(value: boolean) {\n this._data.enablePartialMode = value;\n if (value) {\n this._data.enableStreamingMode = true;\n this._data.sceneGraph = false;\n }\n this.change();\n }\n\n get memoryLimit(): number {\n return this._data.memoryLimit;\n }\n\n set memoryLimit(value: number) {\n this._data.memoryLimit = value;\n this.change();\n }\n\n get cuttingPlaneFillColor(): RGB {\n return this._data.cuttingPlaneFillColor;\n }\n\n set cuttingPlaneFillColor(value: RGB) {\n this._data.cuttingPlaneFillColor = value;\n this.change();\n }\n\n get edgesColor() {\n return this._data.edgesColor;\n }\n\n set edgesColor(value) {\n this._data.edgesColor = value;\n this.change();\n }\n\n get facesColor() {\n return this._data.facesColor;\n }\n\n set facesColor(value) {\n this._data.facesColor = value;\n this.change();\n }\n\n get edgesVisibility() {\n return this._data.edgesVisibility;\n }\n\n set edgesVisibility(value) {\n this._data.edgesVisibility = value;\n this.change();\n }\n\n get edgesOverlap() {\n return this._data.edgesOverlap;\n }\n\n set edgesOverlap(value) {\n this._data.edgesOverlap = value;\n this.change();\n }\n\n get facesOverlap() {\n return this._data.facesOverlap;\n }\n\n set facesOverlap(value) {\n this._data.facesOverlap = value;\n this.change();\n }\n\n get facesTransparancy() {\n return this._data.facesTransparancy;\n }\n\n set facesTransparancy(value) {\n this._data.facesTransparancy = value;\n this.change();\n }\n\n get enableCustomHighlight() {\n return this._data.enableCustomHighlight;\n }\n\n set enableCustomHighlight(value) {\n this._data.enableCustomHighlight = value;\n this.change();\n }\n\n get sceneGraph() {\n return this._data.sceneGraph;\n }\n\n set sceneGraph(value) {\n this._data.sceneGraph = value;\n if (value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get edgeModel() {\n return Boolean(this._data.edgeModel);\n }\n\n set edgeModel(value) {\n this._data.edgeModel = Boolean(value);\n this.change();\n }\n\n get reverseZoomWheel() {\n return this._data.reverseZoomWheel;\n }\n\n set reverseZoomWheel(value: boolean) {\n this._data.reverseZoomWheel = !!value;\n this.change();\n }\n\n get enableZoomWheel() {\n return this._data.enableZoomWheel;\n }\n\n set enableZoomWheel(value: boolean) {\n this._data.enableZoomWheel = !!value;\n this.change();\n }\n\n get enableGestures() {\n return this._data.enableGestures;\n }\n\n set enableGestures(value: boolean) {\n this._data.enableGestures = !!value;\n this.change();\n }\n\n get geometryType() {\n return this._data.geometryType;\n }\n\n set geometryType(value: string) {\n this._data.geometryType = value;\n this.change();\n }\n\n get rulerUnit(): string {\n return this._data.rulerUnit;\n }\n\n set rulerUnit(value: string) {\n this._data.rulerUnit = value;\n this.change();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport const CanvasEvents = [\n \"click\",\n \"contextmenu\",\n \"dblclick\",\n \"mousedown\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseup\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerup\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"wheel\",\n];\n\nexport const CANVAS_EVENTS = CanvasEvents;\n\n/**\n * Canvas Events.\n *\n * @event\n */\nexport interface CanvasEventMap {\n /**\n * Event that fires on mouse click.\n */\n click: MouseEvent;\n\n /**\n * Event that fires when the user attempts to open a context menu.\n */\n contextmenu: PointerEvent;\n\n /**\n * Event that fires on mouse double click.\n */\n dblclick: MouseEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n mousedown: MouseEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n mouseleave: MouseEvent;\n\n /**\n * Event that fires on mouse move.\n */\n mousemove: MouseEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n mouseup: MouseEvent;\n\n /**\n * Event is fired when the browser determines that there are unlikely to be any more pointer events.\n */\n pointercancel: PointerEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n pointerdown: PointerEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n pointerleave: PointerEvent;\n\n /**\n * Event that fires on mouse move.\n */\n pointermove: PointerEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n pointerup: PointerEvent;\n\n /**\n * Event that fires touch is canceled.\n */\n touchcancel: TouchEvent;\n\n /**\n * Event that fires touch is ended.\n */\n touchend: TouchEvent;\n\n /**\n * Event that fires touch is moving.\n */\n touchmove: TouchEvent;\n\n /**\n * Event that fires when touch is started.\n */\n touchstart: TouchEvent;\n\n /**\n * Event that fires when mouse wheel is moving.\n */\n wheel: MouseEvent;\n}\n"],"names":["CommandsRegistry","constructor","this","_commands","Map","registerCommand","id","handler","description","thisArg","set","registerCommandAlias","alias","viewer","args","executeCommand","getCommand","get","getCommands","map","forEach","value","key","command","isDraggerCommand","draggers","includes","setActiveDragger","console","warn","undefined","result","apply","emit","type","data","_commandsRegistry","commandsRegistry","viewerType","Dragger","name","dispose","DraggersRegistry","_draggers","registerDragger","provider","registerDraggerAlias","getDragger","getDraggers","createDragger","dragger","_draggersRegistry","draggersRegistry","Component","Components","_components","registerComponent","registerComponentAlias","getComponent","getComponents","createComponent","component","componentsRegistry","defaultOptions","showWCS","cameraAnimation","antialiasing","groundShadow","shadows","cameraAxisXSpeed","cameraAxisYSpeed","ambientOcclusion","enableStreamingMode","enablePartialMode","memoryLimit","cuttingPlaneFillColor","red","green","blue","edgesColor","r","g","b","facesColor","edgesVisibility","edgesOverlap","facesOverlap","facesTransparancy","enableCustomHighlight","sceneGraph","edgeModel","reverseZoomWheel","enableZoomWheel","enableGestures","geometryType","rulerUnit","Options","emitter","_emitter","_data","loadFromStorage","defaults","notifierChangeEvent","change","saveToStorage","window","localStorage","setItem","JSON","stringify","error","item","getItem","parse","resetToDefaults","fields","resetData","reduce","acc","field","Boolean","CanvasEvents","CANVAS_EVENTS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewer-core.module.js","sources":["../src/commands/Commands.ts","../src/draggers/Dragger.ts","../src/draggers/Draggers.ts","../src/components/Component.ts","../src/components/Components.ts","../src/options/IOptions.ts","../src/options/Options.ts","../src/viewer/CanvasEvents.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { IViewer } from \"../viewer/IViewer\";\nimport { ICommand, ICommandHandler, ICommandDescription, ICommandsRegistry } from \"./ICommands\";\n\nclass CommandsRegistry implements ICommandsRegistry {\n private readonly _commands = new Map<string, ICommand>();\n\n registerCommand(id: string, handler: ICommandHandler, description?: ICommandDescription, thisArg?: any): void {\n this._commands.set(id, { id, handler, thisArg, description });\n }\n\n registerCommandAlias(id: string, alias: string): void {\n this.registerCommand(alias, (viewer: IViewer, ...args) => this.executeCommand(id, viewer, ...args));\n }\n\n getCommand(id: string): ICommand | undefined {\n return this._commands.get(id);\n }\n\n getCommands(): Map<string, ICommand> {\n const map = new Map<string, ICommand>();\n this._commands.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n executeCommand(id: string, viewer: IViewer, ...args: any[]): any {\n const command = this._commands.get(id);\n if (!command) {\n if (viewer) {\n const isDraggerCommand = viewer.draggers.includes(id);\n if (isDraggerCommand) return viewer.setActiveDragger(id);\n }\n\n console.warn(`Command '${id}' not found`);\n return undefined;\n }\n\n const { handler, thisArg } = command;\n const result = handler.apply(thisArg, [viewer, ...args]);\n\n viewer?.emit({ type: \"command\", data: id, args });\n\n return result;\n }\n}\n\nconst _commandsRegistry = new Map<string, CommandsRegistry>();\n\nfunction commandsRegistry(viewerType = \"\"): ICommandsRegistry {\n let result = _commandsRegistry.get(viewerType);\n if (!result) {\n result = new CommandsRegistry();\n _commandsRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { commandsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IDragger } from \"./IDraggers\";\n\nexport class Dragger implements IDragger {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IDragger, IDraggerProvider, IDraggersRegistry } from \"./IDraggers\";\n\nclass DraggersRegistry implements IDraggersRegistry {\n private readonly _providers = new Map<string, IDraggerProvider>();\n\n registerDragger(name: string, provider: IDraggerProvider): void {\n this._providers.set(name, provider);\n }\n\n registerDraggerAlias(name: string, alias: string): void {\n const provider = this._providers.get(name);\n if (provider) this.registerDragger(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getDraggers(): Map<string, IDraggerProvider> {\n const map = new Map<string, IDraggerProvider>();\n this._providers.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createDragger(name: string, viewer: IViewer): IDragger | null {\n const provider = this._providers.get(name);\n if (!provider) return null;\n\n const dragger = provider(viewer);\n dragger.name = name;\n\n return dragger;\n }\n}\n\nconst _draggersRegistry = new Map<string, DraggersRegistry>();\n\nfunction draggersRegistry(viewerType = \"\"): IDraggersRegistry {\n let result = _draggersRegistry.get(viewerType);\n if (!result) {\n result = new DraggersRegistry();\n _draggersRegistry.set(viewerType, result);\n }\n return result;\n}\n\nexport { draggersRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport type { IComponent } from \"./IComponents\";\n\nexport class Component implements IComponent {\n name = \"\";\n\n constructor(viewer: IViewer) {}\n\n dispose(): void {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport type { IViewer } from \"../viewer/IViewer\";\nimport { IComponent, IComponentProvider, IComponentsRegistry } from \"./IComponents\";\n\nclass Components implements IComponentsRegistry {\n private readonly _providers = new Map<string, IComponentProvider>();\n\n registerComponent(name: string, provider: IComponentProvider): void {\n this._providers.set(name, provider);\n }\n\n registerComponentAlias(name: string, alias: string): void {\n const provider = this._providers.get(name);\n if (provider) this.registerComponent(alias, (viewer: IViewer) => provider(viewer));\n }\n\n getComponents(): Map<string, IComponentProvider> {\n const map = new Map<string, IComponentProvider>();\n this._providers.forEach((value, key) => map.set(key, value));\n return map;\n }\n\n createComponent(name: string, viewer: IViewer): IComponent | null {\n const provider = this._providers.get(name);\n if (!provider) return null;\n\n const component = provider(viewer);\n component.name = name;\n\n return component;\n }\n}\n\nconst _components = new Map<string, Components>();\n\nfunction componentsRegistry(viewerType = \"\"): IComponentsRegistry {\n let result = _components.get(viewerType);\n if (!result) {\n result = new Components();\n _components.set(viewerType, result);\n }\n return result;\n}\n\nexport { componentsRegistry };\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n/**\n * Viewer options interface.\n */\nexport interface IOptions {\n /**\n * Show the world coordinate system axes in the bottom-left corner of the viewer.\n *\n * @defaultValue true\n */\n showWCS?: boolean;\n\n /**\n * Enable camera animation.\n *\n * @defaultValue true\n */\n cameraAnimation?: boolean;\n\n /**\n * Enable anti-aliasing using FXAA.\n *\n * @defaultValue true\n */\n antialiasing?: boolean;\n\n /**\n * Show ground shadows below the model.\n *\n * @defaultValue false\n */\n groundShadow?: boolean;\n\n /**\n * Enable ambient shadows.\n *\n * @defaultValue false\n */\n shadows?: boolean;\n\n /**\n * Camera speed on X axis.\n *\n * @defaultValue 4\n */\n cameraAxisXSpeed?: number;\n\n /**\n * Camera speed on Y axis.\n *\n * @defaultValue 1\n */\n cameraAxisYSpeed?: number;\n\n /**\n * Enable ambient occlusion.\n *\n * @defaultValue false\n */\n ambientOcclusion?: boolean;\n\n /**\n * Enable streaming of drawings from the server.\n *\n * If streaming is disabled, the file/assembly will be loaded in one go. The viewer will only update\n * once the loading is complete, which may take a while.\n *\n * If streaming is enabled, {@link enablePartialMode | partial streaming} mode may be enabled as well.\n *\n * @defaultValue true\n */\n enableStreamingMode?: boolean;\n\n /**\n * Enable partial streaming mode to be able open large drawing.\n *\n * In partial streaming mode, the viewer keeps only visible objects in memory and loads other objects\n * when the camera changes.\n *\n * Only used if {@link enableStreamingMode | streaming} is enabled. If partial streaming is enabled,\n * then {@link sceneGraph | scene graph} will be disabled.\n *\n * @defaultValue false\n */\n enablePartialMode?: boolean;\n\n /**\n * The size of the memory buffer for graphics data, in bytes.\n *\n * @defaultValue 3294967296\n */\n memoryLimit?: number;\n\n /**\n * Cutting planes fill color.\n *\n * @defaultValue { red: 0xff, green: 0x98, blue: 0x00 }\n */\n cuttingPlaneFillColor?: RGB;\n\n /**\n * Edges highlight color.\n */\n edgesColor?: { r: number; g: number; b: number };\n\n /**\n * Faces highlight color.\n */\n facesColor?: { r: number; g: number; b: number };\n\n /**\n * Show highlighted edges.\n */\n edgesVisibility?: boolean;\n\n /**\n * Show highlighted edges over drawing.\n */\n edgesOverlap?: boolean;\n\n /**\n * Show highlighted faces over drawing.\n */\n facesOverlap?: boolean;\n\n /**\n * Highlighted faces transparency value, from 0 to 255.\n */\n facesTransparancy?: number;\n\n /**\n * Enable custom highlight settings.\n */\n enableCustomHighlight?: boolean;\n\n /**\n * Enable scene graph.\n *\n * Scene graph increases perfomance improvement, but consumes memory. If scene graph is enabled, then\n * {@link enablePartialMode | partial streaming} mode will be disabled.\n */\n sceneGraph: boolean;\n\n /**\n * Show the edges of the model:\n *\n * - `false` - No model edges are displayed. Usefull for less memory consumption.\n * - `true` - Display isolines.\n */\n edgeModel: boolean;\n\n /**\n * Reverse the mouse wheel direction for zooming:\n *\n * - `false` - Moving the wheel up zooms in, moving down zooms out.\n * - `true` - Moving the wheel up zooms out, moving down zooms in.\n */\n reverseZoomWheel: boolean;\n\n /**\n * Enable mouse wheel zooming.\n */\n enableZoomWheel: boolean;\n\n /**\n * Enable touch gestures.\n *\n * This option will be ignored when {@link enableZoomWheel | mouse wheel zooming} is disabled, since\n * gestures contains touch zoom.\n */\n enableGestures: boolean;\n\n /**\n * Deprecated since `25.8`.\n */\n geometryType?: string;\n\n /**\n * Ruler unit.\n *\n * Available values: Default, Millimeters, Centimeters, Meters, Feet, Inches, Yards, Kilometers, Miles,\n * Micrometers, MicroInches\n *\n * @defaultValue Default\n */\n rulerUnit: string;\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset.\n */\n resetToDefaults?: (fields?: string[]) => void;\n}\n\nexport function defaultOptions(): IOptions {\n return {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n geometryType: \"vsfx\",\n rulerUnit: \"Default\",\n };\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\nimport { IOptions, RGB, defaultOptions } from \"./IOptions\";\n\nexport class Options implements IOptions {\n protected _emitter?: EventEmitter2;\n protected _data: IOptions;\n\n constructor(emitter?: EventEmitter2) {\n this._emitter = emitter;\n this._data = defaultOptions();\n this.loadFromStorage();\n }\n\n static defaults(): IOptions {\n return defaultOptions();\n }\n\n notifierChangeEvent(): void {\n console.warn(\n \"Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.\"\n );\n this.change();\n }\n\n change(): void {\n if (this._emitter !== undefined) {\n this.saveToStorage();\n this._emitter.emit({ type: \"optionschange\", data: this });\n }\n }\n\n saveToStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n localStorage.setItem(\"od-client-settings\", JSON.stringify(this.data));\n } catch (error) {\n console.error(\"Cannot save client settings.\", error);\n }\n }\n\n loadFromStorage(): void {\n if (typeof window !== \"undefined\")\n try {\n const item = localStorage.getItem(\"od-client-settings\");\n if (item) {\n const data = JSON.parse(item);\n this.data = { ...data };\n }\n } catch (error) {\n console.error(\"Cannot load client settings.\", error);\n }\n }\n\n /**\n * Resets options to default values.\n *\n * @param fields - Name of fields to be reset. Specify `undefined` to reset all.\n */\n resetToDefaults(fields?: string[]): void {\n if (fields !== undefined) {\n const defaults = Options.defaults();\n const resetData = fields.reduce((acc, field) => {\n acc[field] = defaults[field];\n return acc;\n }, {});\n this.data = { ...this.data, ...resetData };\n } else {\n this.data = { ...this.data, ...Options.defaults() };\n }\n }\n\n get data(): IOptions {\n return this._data;\n }\n\n set data(value: IOptions) {\n const enablePartialMode = value.enableStreamingMode ? value.enablePartialMode : false;\n const sceneGraph = enablePartialMode ? false : value.sceneGraph;\n this._data = { ...Options.defaults(), ...this._data, ...value, enablePartialMode, sceneGraph };\n this.change();\n }\n\n get showWCS(): boolean {\n return this._data.showWCS;\n }\n\n set showWCS(value: boolean) {\n this._data.showWCS = value;\n this.change();\n }\n\n get cameraAnimation(): boolean {\n return this._data.cameraAnimation;\n }\n\n set cameraAnimation(value: boolean) {\n this._data.cameraAnimation = value;\n this.change();\n }\n\n get antialiasing(): boolean {\n return this._data.antialiasing;\n }\n\n set antialiasing(value: boolean) {\n this._data.antialiasing = value;\n this.change();\n }\n\n get groundShadow(): boolean {\n return this._data.groundShadow;\n }\n\n set groundShadow(value: boolean) {\n this._data.groundShadow = value;\n this.change();\n }\n\n get shadows(): boolean {\n return this._data.shadows;\n }\n\n set shadows(value: boolean) {\n this._data.shadows = value;\n this.change();\n }\n\n get cameraAxisXSpeed(): number {\n return this._data.cameraAxisXSpeed;\n }\n\n set cameraAxisXSpeed(value: number) {\n this._data.cameraAxisXSpeed = value;\n this.change();\n }\n\n get cameraAxisYSpeed(): number {\n return this._data.cameraAxisYSpeed;\n }\n\n set cameraAxisYSpeed(value: number) {\n this.cameraAxisYSpeed = value;\n this.change();\n }\n\n get ambientOcclusion(): boolean {\n return this._data.ambientOcclusion;\n }\n\n set ambientOcclusion(value: boolean) {\n this._data.ambientOcclusion = value;\n this.change();\n }\n\n get enableStreamingMode(): boolean {\n return this._data.enableStreamingMode;\n }\n\n set enableStreamingMode(value: boolean) {\n this._data.enableStreamingMode = value;\n if (!value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get enablePartialMode(): boolean {\n return this._data.enablePartialMode;\n }\n\n set enablePartialMode(value: boolean) {\n this._data.enablePartialMode = value;\n if (value) {\n this._data.enableStreamingMode = true;\n this._data.sceneGraph = false;\n }\n this.change();\n }\n\n get memoryLimit(): number {\n return this._data.memoryLimit;\n }\n\n set memoryLimit(value: number) {\n this._data.memoryLimit = value;\n this.change();\n }\n\n get cuttingPlaneFillColor(): RGB {\n return this._data.cuttingPlaneFillColor;\n }\n\n set cuttingPlaneFillColor(value: RGB) {\n this._data.cuttingPlaneFillColor = value;\n this.change();\n }\n\n get edgesColor() {\n return this._data.edgesColor;\n }\n\n set edgesColor(value) {\n this._data.edgesColor = value;\n this.change();\n }\n\n get facesColor() {\n return this._data.facesColor;\n }\n\n set facesColor(value) {\n this._data.facesColor = value;\n this.change();\n }\n\n get edgesVisibility() {\n return this._data.edgesVisibility;\n }\n\n set edgesVisibility(value) {\n this._data.edgesVisibility = value;\n this.change();\n }\n\n get edgesOverlap() {\n return this._data.edgesOverlap;\n }\n\n set edgesOverlap(value) {\n this._data.edgesOverlap = value;\n this.change();\n }\n\n get facesOverlap() {\n return this._data.facesOverlap;\n }\n\n set facesOverlap(value) {\n this._data.facesOverlap = value;\n this.change();\n }\n\n get facesTransparancy() {\n return this._data.facesTransparancy;\n }\n\n set facesTransparancy(value) {\n this._data.facesTransparancy = value;\n this.change();\n }\n\n get enableCustomHighlight() {\n return this._data.enableCustomHighlight;\n }\n\n set enableCustomHighlight(value) {\n this._data.enableCustomHighlight = value;\n this.change();\n }\n\n get sceneGraph() {\n return this._data.sceneGraph;\n }\n\n set sceneGraph(value) {\n this._data.sceneGraph = value;\n if (value) this._data.enablePartialMode = false;\n this.change();\n }\n\n get edgeModel() {\n return Boolean(this._data.edgeModel);\n }\n\n set edgeModel(value) {\n this._data.edgeModel = Boolean(value);\n this.change();\n }\n\n get reverseZoomWheel() {\n return this._data.reverseZoomWheel;\n }\n\n set reverseZoomWheel(value: boolean) {\n this._data.reverseZoomWheel = !!value;\n this.change();\n }\n\n get enableZoomWheel() {\n return this._data.enableZoomWheel;\n }\n\n set enableZoomWheel(value: boolean) {\n this._data.enableZoomWheel = !!value;\n this.change();\n }\n\n get enableGestures() {\n return this._data.enableGestures;\n }\n\n set enableGestures(value: boolean) {\n this._data.enableGestures = !!value;\n this.change();\n }\n\n get geometryType() {\n return this._data.geometryType;\n }\n\n set geometryType(value: string) {\n this._data.geometryType = value;\n this.change();\n }\n\n get rulerUnit(): string {\n return this._data.rulerUnit;\n }\n\n set rulerUnit(value: string) {\n this._data.rulerUnit = value;\n this.change();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2025, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport const CanvasEvents = [\n \"click\",\n \"contextmenu\",\n \"dblclick\",\n \"mousedown\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseup\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerup\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"wheel\",\n];\n\nexport const CANVAS_EVENTS = CanvasEvents;\n\n/**\n * Canvas Events.\n *\n * @event\n */\nexport interface CanvasEventMap {\n /**\n * Event that fires on mouse click.\n */\n click: MouseEvent;\n\n /**\n * Event that fires when the user attempts to open a context menu.\n */\n contextmenu: PointerEvent;\n\n /**\n * Event that fires on mouse double click.\n */\n dblclick: MouseEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n mousedown: MouseEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n mouseleave: MouseEvent;\n\n /**\n * Event that fires on mouse move.\n */\n mousemove: MouseEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n mouseup: MouseEvent;\n\n /**\n * Event is fired when the browser determines that there are unlikely to be any more pointer events.\n */\n pointercancel: PointerEvent;\n\n /**\n * Event that fires on mouse button is down.\n */\n pointerdown: PointerEvent;\n\n /**\n * Event that fires on mouse leave.\n */\n pointerleave: PointerEvent;\n\n /**\n * Event that fires on mouse move.\n */\n pointermove: PointerEvent;\n\n /**\n * Event that fires on mouse button is up.\n */\n pointerup: PointerEvent;\n\n /**\n * Event that fires touch is canceled.\n */\n touchcancel: TouchEvent;\n\n /**\n * Event that fires touch is ended.\n */\n touchend: TouchEvent;\n\n /**\n * Event that fires touch is moving.\n */\n touchmove: TouchEvent;\n\n /**\n * Event that fires when touch is started.\n */\n touchstart: TouchEvent;\n\n /**\n * Event that fires when mouse wheel is moving.\n */\n wheel: MouseEvent;\n}\n"],"names":["CommandsRegistry","constructor","this","_commands","Map","registerCommand","id","handler","description","thisArg","set","registerCommandAlias","alias","viewer","args","executeCommand","getCommand","get","getCommands","map","forEach","value","key","command","isDraggerCommand","draggers","includes","setActiveDragger","console","warn","undefined","result","apply","emit","type","data","_commandsRegistry","commandsRegistry","viewerType","Dragger","name","dispose","DraggersRegistry","_providers","registerDragger","provider","registerDraggerAlias","getDraggers","createDragger","dragger","_draggersRegistry","draggersRegistry","Component","Components","registerComponent","registerComponentAlias","getComponents","createComponent","component","_components","componentsRegistry","defaultOptions","showWCS","cameraAnimation","antialiasing","groundShadow","shadows","cameraAxisXSpeed","cameraAxisYSpeed","ambientOcclusion","enableStreamingMode","enablePartialMode","memoryLimit","cuttingPlaneFillColor","red","green","blue","edgesColor","r","g","b","facesColor","edgesVisibility","edgesOverlap","facesOverlap","facesTransparancy","enableCustomHighlight","sceneGraph","edgeModel","reverseZoomWheel","enableZoomWheel","enableGestures","geometryType","rulerUnit","Options","emitter","_emitter","_data","loadFromStorage","defaults","notifierChangeEvent","change","saveToStorage","window","localStorage","setItem","JSON","stringify","error","item","getItem","parse","resetToDefaults","fields","resetData","reduce","acc","field","Boolean","CanvasEvents","CANVAS_EVENTS"],"mappings":"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"}
|
|
@@ -13,10 +13,6 @@ export interface ICommandService {
|
|
|
13
13
|
*/
|
|
14
14
|
executeCommand(id: string, ...args: any[]): any;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Defines the command map.
|
|
18
|
-
*/
|
|
19
|
-
export type ICommandsMap = Map<string, ICommand>;
|
|
20
16
|
/**
|
|
21
17
|
* Defines the command handler function.
|
|
22
18
|
*/
|
|
@@ -81,7 +77,7 @@ export interface ICommandsRegistry {
|
|
|
81
77
|
/**
|
|
82
78
|
* Returns a list of registered commands.
|
|
83
79
|
*/
|
|
84
|
-
getCommands():
|
|
80
|
+
getCommands(): Map<string, ICommand>;
|
|
85
81
|
/**
|
|
86
82
|
* Returns the specified command or `undefined` when the command doesn't exists.
|
|
87
83
|
*
|
|
@@ -21,9 +21,8 @@ export interface IComponentProvider {
|
|
|
21
21
|
*/
|
|
22
22
|
(viewer: any): IComponent;
|
|
23
23
|
}
|
|
24
|
-
export type IComponentsMap = Map<string, IComponentProvider>;
|
|
25
24
|
/**
|
|
26
|
-
*
|
|
25
|
+
* Defines the viewer components registry interface.
|
|
27
26
|
*/
|
|
28
27
|
export interface IComponentsRegistry {
|
|
29
28
|
/**
|
|
@@ -44,13 +43,7 @@ export interface IComponentsRegistry {
|
|
|
44
43
|
/**
|
|
45
44
|
* Returns a list of registered components.
|
|
46
45
|
*/
|
|
47
|
-
getComponents():
|
|
48
|
-
/**
|
|
49
|
-
* Returns the specified component or `undefined` when the component doesn't exists.
|
|
50
|
-
*
|
|
51
|
-
* @param name - Component name.
|
|
52
|
-
*/
|
|
53
|
-
getComponent(name: string): IComponentProvider | undefined;
|
|
46
|
+
getComponents(): Map<string, IComponentProvider>;
|
|
54
47
|
/**
|
|
55
48
|
* Creates the component denoted by the given name. Returns `null` if a component with given name not
|
|
56
49
|
* registered.
|
|
@@ -35,7 +35,6 @@ export interface IDraggerProvider {
|
|
|
35
35
|
*/
|
|
36
36
|
(viewer: any): IDragger;
|
|
37
37
|
}
|
|
38
|
-
export type IDraggersMap = Map<string, IDraggerProvider>;
|
|
39
38
|
/**
|
|
40
39
|
* Defines the viewer draggers registry interface.
|
|
41
40
|
*/
|
|
@@ -58,13 +57,7 @@ export interface IDraggersRegistry {
|
|
|
58
57
|
/**
|
|
59
58
|
* Returns a list of registered draggers.
|
|
60
59
|
*/
|
|
61
|
-
getDraggers():
|
|
62
|
-
/**
|
|
63
|
-
* Returns the specified dragger provider or `undefined` when the dragger doesn't exists.
|
|
64
|
-
*
|
|
65
|
-
* @param name - Dragger name.
|
|
66
|
-
*/
|
|
67
|
-
getDragger(name: string): IDraggerProvider | undefined;
|
|
60
|
+
getDraggers(): Map<string, IDraggerProvider>;
|
|
68
61
|
/**
|
|
69
62
|
* Creates the dragger denoted by the given name. Returns `null` if a dragger with given name not
|
|
70
63
|
* registered.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inweb/viewer-core",
|
|
3
|
-
"version": "26.4.
|
|
3
|
+
"version": "26.4.2",
|
|
4
4
|
"description": "3D CAD and BIM data Viewer core",
|
|
5
5
|
"homepage": "https://cloud.opendesign.com/docs/index.html",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"test": "karma start karma.conf.js"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@inweb/client": "~26.4.
|
|
30
|
-
"@inweb/eventemitter2": "~26.4.
|
|
29
|
+
"@inweb/client": "~26.4.2",
|
|
30
|
+
"@inweb/eventemitter2": "~26.4.2"
|
|
31
31
|
}
|
|
32
32
|
}
|
package/src/commands/Commands.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
///////////////////////////////////////////////////////////////////////////////
|
|
23
23
|
|
|
24
24
|
import { IViewer } from "../viewer/IViewer";
|
|
25
|
-
import { ICommand, ICommandHandler, ICommandDescription,
|
|
25
|
+
import { ICommand, ICommandHandler, ICommandDescription, ICommandsRegistry } from "./ICommands";
|
|
26
26
|
|
|
27
27
|
class CommandsRegistry implements ICommandsRegistry {
|
|
28
28
|
private readonly _commands = new Map<string, ICommand>();
|
|
@@ -39,7 +39,7 @@ class CommandsRegistry implements ICommandsRegistry {
|
|
|
39
39
|
return this._commands.get(id);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
getCommands():
|
|
42
|
+
getCommands(): Map<string, ICommand> {
|
|
43
43
|
const map = new Map<string, ICommand>();
|
|
44
44
|
this._commands.forEach((value, key) => map.set(key, value));
|
|
45
45
|
return map;
|
|
@@ -38,11 +38,6 @@ export interface ICommandService {
|
|
|
38
38
|
executeCommand(id: string, ...args: any[]): any;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
/**
|
|
42
|
-
* Defines the command map.
|
|
43
|
-
*/
|
|
44
|
-
export type ICommandsMap = Map<string, ICommand>;
|
|
45
|
-
|
|
46
41
|
/**
|
|
47
42
|
* Defines the command handler function.
|
|
48
43
|
*/
|
|
@@ -115,7 +110,7 @@ export interface ICommandsRegistry {
|
|
|
115
110
|
/**
|
|
116
111
|
* Returns a list of registered commands.
|
|
117
112
|
*/
|
|
118
|
-
getCommands():
|
|
113
|
+
getCommands(): Map<string, ICommand>;
|
|
119
114
|
|
|
120
115
|
/**
|
|
121
116
|
* Returns the specified command or `undefined` when the command doesn't exists.
|
|
@@ -22,32 +22,28 @@
|
|
|
22
22
|
///////////////////////////////////////////////////////////////////////////////
|
|
23
23
|
|
|
24
24
|
import type { IViewer } from "../viewer/IViewer";
|
|
25
|
-
import { IComponent, IComponentProvider,
|
|
25
|
+
import { IComponent, IComponentProvider, IComponentsRegistry } from "./IComponents";
|
|
26
26
|
|
|
27
27
|
class Components implements IComponentsRegistry {
|
|
28
|
-
private readonly
|
|
28
|
+
private readonly _providers = new Map<string, IComponentProvider>();
|
|
29
29
|
|
|
30
30
|
registerComponent(name: string, provider: IComponentProvider): void {
|
|
31
|
-
this.
|
|
31
|
+
this._providers.set(name, provider);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
registerComponentAlias(name: string, alias: string): void {
|
|
35
|
-
const provider = this.
|
|
35
|
+
const provider = this._providers.get(name);
|
|
36
36
|
if (provider) this.registerComponent(alias, (viewer: IViewer) => provider(viewer));
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
return this._components.get(name);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getComponents(): IComponentsMap {
|
|
39
|
+
getComponents(): Map<string, IComponentProvider> {
|
|
44
40
|
const map = new Map<string, IComponentProvider>();
|
|
45
|
-
this.
|
|
41
|
+
this._providers.forEach((value, key) => map.set(key, value));
|
|
46
42
|
return map;
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
createComponent(name: string, viewer: IViewer): IComponent | null {
|
|
50
|
-
const provider = this.
|
|
46
|
+
const provider = this._providers.get(name);
|
|
51
47
|
if (!provider) return null;
|
|
52
48
|
|
|
53
49
|
const component = provider(viewer);
|
|
@@ -48,10 +48,8 @@ export interface IComponentProvider {
|
|
|
48
48
|
(viewer: any): IComponent;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
export type IComponentsMap = Map<string, IComponentProvider>;
|
|
52
|
-
|
|
53
51
|
/**
|
|
54
|
-
*
|
|
52
|
+
* Defines the viewer components registry interface.
|
|
55
53
|
*/
|
|
56
54
|
export interface IComponentsRegistry {
|
|
57
55
|
/**
|
|
@@ -74,14 +72,7 @@ export interface IComponentsRegistry {
|
|
|
74
72
|
/**
|
|
75
73
|
* Returns a list of registered components.
|
|
76
74
|
*/
|
|
77
|
-
getComponents():
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Returns the specified component or `undefined` when the component doesn't exists.
|
|
81
|
-
*
|
|
82
|
-
* @param name - Component name.
|
|
83
|
-
*/
|
|
84
|
-
getComponent(name: string): IComponentProvider | undefined;
|
|
75
|
+
getComponents(): Map<string, IComponentProvider>;
|
|
85
76
|
|
|
86
77
|
/**
|
|
87
78
|
* Creates the component denoted by the given name. Returns `null` if a component with given name not
|
package/src/draggers/Draggers.ts
CHANGED
|
@@ -22,32 +22,28 @@
|
|
|
22
22
|
///////////////////////////////////////////////////////////////////////////////
|
|
23
23
|
|
|
24
24
|
import type { IViewer } from "../viewer/IViewer";
|
|
25
|
-
import { IDragger, IDraggerProvider,
|
|
25
|
+
import { IDragger, IDraggerProvider, IDraggersRegistry } from "./IDraggers";
|
|
26
26
|
|
|
27
27
|
class DraggersRegistry implements IDraggersRegistry {
|
|
28
|
-
private readonly
|
|
28
|
+
private readonly _providers = new Map<string, IDraggerProvider>();
|
|
29
29
|
|
|
30
30
|
registerDragger(name: string, provider: IDraggerProvider): void {
|
|
31
|
-
this.
|
|
31
|
+
this._providers.set(name, provider);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
registerDraggerAlias(name: string, alias: string): void {
|
|
35
|
-
const provider = this.
|
|
35
|
+
const provider = this._providers.get(name);
|
|
36
36
|
if (provider) this.registerDragger(alias, (viewer: IViewer) => provider(viewer));
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
return this._draggers.get(name);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getDraggers(): IDraggersMap {
|
|
39
|
+
getDraggers(): Map<string, IDraggerProvider> {
|
|
44
40
|
const map = new Map<string, IDraggerProvider>();
|
|
45
|
-
this.
|
|
41
|
+
this._providers.forEach((value, key) => map.set(key, value));
|
|
46
42
|
return map;
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
createDragger(name: string, viewer: IViewer): IDragger | null {
|
|
50
|
-
const provider = this.
|
|
46
|
+
const provider = this._providers.get(name);
|
|
51
47
|
if (!provider) return null;
|
|
52
48
|
|
|
53
49
|
const dragger = provider(viewer);
|
|
@@ -64,8 +64,6 @@ export interface IDraggerProvider {
|
|
|
64
64
|
(viewer: any): IDragger;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
export type IDraggersMap = Map<string, IDraggerProvider>;
|
|
68
|
-
|
|
69
67
|
/**
|
|
70
68
|
* Defines the viewer draggers registry interface.
|
|
71
69
|
*/
|
|
@@ -90,14 +88,7 @@ export interface IDraggersRegistry {
|
|
|
90
88
|
/**
|
|
91
89
|
* Returns a list of registered draggers.
|
|
92
90
|
*/
|
|
93
|
-
getDraggers():
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Returns the specified dragger provider or `undefined` when the dragger doesn't exists.
|
|
97
|
-
*
|
|
98
|
-
* @param name - Dragger name.
|
|
99
|
-
*/
|
|
100
|
-
getDragger(name: string): IDraggerProvider | undefined;
|
|
91
|
+
getDraggers(): Map<string, IDraggerProvider>;
|
|
101
92
|
|
|
102
93
|
/**
|
|
103
94
|
* Creates the dragger denoted by the given name. Returns `null` if a dragger with given name not
|