@shapediver/viewer.shared.services 2.12.8 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/converter/Converter.d.ts +5 -2
  2. package/dist/converter/Converter.d.ts.map +1 -1
  3. package/dist/converter/Converter.js +11 -10
  4. package/dist/converter/Converter.js.map +1 -1
  5. package/dist/dom-event-engine/DomEventEngine.d.ts +21 -31
  6. package/dist/dom-event-engine/DomEventEngine.d.ts.map +1 -1
  7. package/dist/dom-event-engine/DomEventEngine.js +101 -172
  8. package/dist/dom-event-engine/DomEventEngine.js.map +1 -1
  9. package/dist/dom-event-engine/IDomEventListener.d.ts +6 -10
  10. package/dist/dom-event-engine/IDomEventListener.d.ts.map +1 -1
  11. package/dist/event-engine/EventTypes.d.ts +199 -2
  12. package/dist/event-engine/EventTypes.d.ts.map +1 -1
  13. package/dist/event-engine/EventTypes.js +201 -10
  14. package/dist/event-engine/EventTypes.js.map +1 -1
  15. package/dist/http-client/HttpClient.d.ts +1 -1
  16. package/dist/http-client/HttpClient.d.ts.map +1 -1
  17. package/dist/http-client/HttpClient.js +7 -4
  18. package/dist/http-client/HttpClient.js.map +1 -1
  19. package/dist/index.d.ts +25 -21
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +54 -46
  22. package/dist/index.js.map +1 -1
  23. package/dist/logger/ErrorTypeGuards.d.ts +3 -1
  24. package/dist/logger/ErrorTypeGuards.d.ts.map +1 -1
  25. package/dist/logger/ErrorTypeGuards.js +8 -1
  26. package/dist/logger/ErrorTypeGuards.js.map +1 -1
  27. package/dist/logger/ShapeDiverError.d.ts +1 -0
  28. package/dist/logger/ShapeDiverError.d.ts.map +1 -1
  29. package/dist/logger/ShapeDiverError.js +1 -0
  30. package/dist/logger/ShapeDiverError.js.map +1 -1
  31. package/dist/logger/ShapeDiverViewerErrors.d.ts +4 -0
  32. package/dist/logger/ShapeDiverViewerErrors.d.ts.map +1 -1
  33. package/dist/logger/ShapeDiverViewerErrors.js +8 -1
  34. package/dist/logger/ShapeDiverViewerErrors.js.map +1 -1
  35. package/dist/settings-engine/SettingsEngine.d.ts +36 -16
  36. package/dist/settings-engine/SettingsEngine.d.ts.map +1 -1
  37. package/dist/settings-engine/SettingsEngine.js +45 -38
  38. package/dist/settings-engine/SettingsEngine.js.map +1 -1
  39. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.d.ts +20 -0
  40. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.d.ts.map +1 -0
  41. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.js +3 -0
  42. package/dist/state-engine/ISessionGlobalAccessObjectDefinition.js.map +1 -0
  43. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.d.ts +32 -0
  44. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.d.ts.map +1 -0
  45. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.js +3 -0
  46. package/dist/state-engine/IViewportGlobalAccessObjectDefinition.js.map +1 -0
  47. package/dist/state-engine/StateEngine.d.ts +7 -18
  48. package/dist/state-engine/StateEngine.d.ts.map +1 -1
  49. package/dist/state-engine/StateEngine.js +9 -9
  50. package/dist/state-engine/StateEngine.js.map +1 -1
  51. package/dist/system-info/SystemInfo.js +1 -1
  52. package/dist/system-info/SystemInfo.js.map +1 -1
  53. package/dist/utilities/base64.d.ts +3 -0
  54. package/dist/utilities/base64.d.ts.map +1 -0
  55. package/dist/utilities/base64.js +22 -0
  56. package/dist/utilities/base64.js.map +1 -0
  57. package/package.json +4 -4
  58. package/src/converter/Converter.ts +18 -17
  59. package/src/dom-event-engine/DomEventEngine.ts +118 -194
  60. package/src/dom-event-engine/IDomEventListener.ts +10 -10
  61. package/src/event-engine/EventTypes.ts +231 -41
  62. package/src/http-client/HttpClient.ts +7 -4
  63. package/src/index.ts +99 -43
  64. package/src/logger/ErrorTypeGuards.ts +8 -1
  65. package/src/logger/ShapeDiverError.ts +1 -0
  66. package/src/logger/ShapeDiverViewerErrors.ts +8 -0
  67. package/src/settings-engine/SettingsEngine.ts +101 -80
  68. package/src/state-engine/ISessionGlobalAccessObjectDefinition.ts +25 -0
  69. package/src/state-engine/IViewportGlobalAccessObjectDefinition.ts +29 -0
  70. package/src/state-engine/StateEngine.ts +16 -48
  71. package/src/system-info/SystemInfo.ts +1 -1
  72. package/src/utilities/base64.ts +15 -0
@@ -1,75 +1,265 @@
1
+ /**
2
+ * Event types for all camera events
3
+ * The camera events are used to notify about camera changes, like start, move and end of camera movement.
4
+ * The events that are sent with the camera events are of type {@link ICameraEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
5
+ *
6
+ * @enum {string}
7
+ */
1
8
  export enum EVENTTYPE_CAMERA {
2
- CAMERA_START = "camera.start",
3
- CAMERA_MOVE = "camera.move",
4
- CAMERA_END = "camera.end",
9
+ /**
10
+ * The CAMERA_START-event is sent when the camera starts moving.
11
+ */
12
+ CAMERA_START = 'camera.start',
13
+ /**
14
+ * The CAMERA_MOVE-event is sent when the camera moves.
15
+ */
16
+ CAMERA_MOVE = 'camera.move',
17
+ /**
18
+ * The CAMERA_END-event is sent when the camera stops moving.
19
+ */
20
+ CAMERA_END = 'camera.end',
5
21
  }
6
22
 
23
+ /**
24
+ * Event types for all rendering events
25
+ * The rendering events are used to notify about specific rendering events, like the finishing of the beauty rendering.
26
+ * The events that are sent with the rendering events are of type {@link IRenderingEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
27
+ */
7
28
  export enum EVENTTYPE_RENDERING {
8
- BEAUTY_RENDERING_FINISHED = "rendering.beautyRenderingFinished"
29
+ /**
30
+ * The BEAUTY_RENDERING_FINISHED-event is sent when the beauty rendering has finished.
31
+ */
32
+ BEAUTY_RENDERING_FINISHED = 'rendering.beautyRenderingFinished'
9
33
  }
10
34
 
35
+ /**
36
+ * Event types for all scene events
37
+ * The scene events are used to notify about scene changes, like bounding box changes or empty bounding boxes.
38
+ * The events that are sent with the scene events are of type {@link ISceneEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
39
+ */
11
40
  export enum EVENTTYPE_SCENE {
12
- SCENE_BOUNDING_BOX_CHANGE = "scene.boundingBoxChange",
13
- SCENE_BOUNDING_BOX_EMPTY = "scene.boundingBoxEmpty"
41
+ /**
42
+ * The SCENE_BOUNDING_BOX_CHANGE-event is sent when the bounding box of the scene has changed.
43
+ */
44
+ SCENE_BOUNDING_BOX_CHANGE = 'scene.boundingBoxChange',
45
+ /**
46
+ * TheSCENE_BOUNDING_BOX_EMPTY-event is sent when the bounding box of the scene is empty.
47
+ */
48
+ SCENE_BOUNDING_BOX_EMPTY = 'scene.boundingBoxEmpty'
14
49
  }
15
50
 
16
- // VIEWPORT
17
- // FRAMERATE
18
- // RENDER_INFO
19
- // RENDER_BEAUTY_START
20
- // RENDER_BEAUTY_CANCEL
21
- // RENDER_BEAUTY_END
22
- // VISIBILITY_ON
23
- // VISIBILITY_OFF
24
-
51
+ /**
52
+ * Event types for all viewport events
53
+ * The viewport events are used to notify about viewport changes, like creation, update, closing, visibility changes or loading of settings.
54
+ * The events that are sent with the viewport events are of type {@link IViewportEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
55
+ */
25
56
  export enum EVENTTYPE_VIEWPORT {
26
- BUSY_MODE_ON = "viewport.busy.on",
27
- BUSY_MODE_OFF = "viewport.busy.off",
28
- VIEWPORT_CREATED = "viewport.created",
29
- VIEWPORT_UPDATED = "viewport.updated",
30
- VIEWPORT_CLOSED = "viewport.closed",
31
- VIEWPORT_SETTINGS_LOADED = "viewport.settingsLoaded",
32
- VIEWPORT_VISIBLE = "viewport.visible",
33
- VIEWPORT_HIDDEN = "viewport.hidden",
57
+ /**
58
+ * The BUSY_MODE_ON-event is sent when the busy mode of the viewport has started.
59
+ */
60
+ BUSY_MODE_ON = 'viewport.busy.on',
61
+ /**
62
+ * The BUSY_MODE_OFF-event is sent when the busy mode of the viewport has ended.
63
+ */
64
+ BUSY_MODE_OFF = 'viewport.busy.off',
65
+ /**
66
+ * The VIEWPORT_CREATED-event is sent when the viewport has been created.
67
+ */
68
+ VIEWPORT_CREATED = 'viewport.created',
69
+ /**
70
+ * The VIEWPORT_UPDATED-event is sent when the viewport has been updated.
71
+ */
72
+ VIEWPORT_UPDATED = 'viewport.updated',
73
+ /**
74
+ * The VIEWPORT_CLOSED-event is sent when the viewport has been closed.
75
+ */
76
+ VIEWPORT_CLOSED = 'viewport.closed',
77
+ /**
78
+ * The VIEWPORT_SETTINGS_LOADED-event is sent when the settings of the viewport have been loaded.
79
+ */
80
+ VIEWPORT_SETTINGS_LOADED = 'viewport.settingsLoaded',
81
+ /**
82
+ * The VIEWPORT_VISIBLE-event is sent when the viewport has become visible.
83
+ */
84
+ VIEWPORT_VISIBLE = 'viewport.visible',
85
+ /**
86
+ * The VIEWPORT_HIDDEN-event is sent when the viewport has become hidden.
87
+ */
88
+ VIEWPORT_HIDDEN = 'viewport.hidden',
34
89
  }
35
90
 
91
+ /**
92
+ * Event types for all session events
93
+ * The session events are used to notify about session changes, like creation, customization, closing, loading of initial outputs or delayed loading of SDTF.
94
+ * The events that are sent with the session events are of type {@link ISessionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
95
+ */
36
96
  export enum EVENTTYPE_SESSION {
37
- SESSION_CREATED = "session.created",
38
- SESSION_CUSTOMIZED = "session.customized",
39
- SESSION_CLOSED = "session.closed",
40
- SESSION_INITIAL_OUTPUTS_LOADED = 'session.initialOutputsLoaded'
97
+ /**
98
+ * The SESSION_CREATED-event is sent when the session has been created.
99
+ */
100
+ SESSION_CREATED = 'session.created',
101
+ /**
102
+ * The SESSION_CUSTOMIZED-event is sent when the session has been customized.
103
+ */
104
+ SESSION_CUSTOMIZED = 'session.customized',
105
+ /**
106
+ * The SESSION_CLOSED-event is sent when the session has been closed.
107
+ */
108
+ SESSION_CLOSED = 'session.closed',
109
+ /**
110
+ * The SESSION_INITIAL_OUTPUTS_LOADED-event is sent when the initial outputs of the session have been loaded.
111
+ */
112
+ SESSION_INITIAL_OUTPUTS_LOADED = 'session.initialOutputsLoaded',
113
+ /**
114
+ * The SESSION_SDTF_DELAYED_LOADED-event is sent when the SDTF of the session has been delayed loaded.
115
+ */
116
+ SESSION_SDTF_DELAYED_LOADED = 'session.sdtfDelayedLoaded',
117
+ }
118
+
119
+ /**
120
+ * Event types for all parameter events
121
+ * The parameter events are used to notify about parameter changes, like value changes or session value changes.
122
+ * The events that are sent with the parameter events are of type {@link IParameterEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
123
+ */
124
+ export enum EVENTTYPE_PARAMETER {
125
+ /**
126
+ * The PARAMETER_VALUE_CHANGED-event is sent when the value of a parameter has changed.
127
+ */
128
+ PARAMETER_VALUE_CHANGED = 'parameter.valueChanged',
129
+ /**
130
+ * The PARAMETER_SESSION_VALUE_CHANGED-event is sent when the session value of a parameter has changed.
131
+ */
132
+ PARAMETER_SESSION_VALUE_CHANGED = 'parameter.sessionValueChanged'
41
133
  }
42
134
 
135
+ /**
136
+ * Event types for all output events
137
+ * The output events are used to notify about output changes, like updated outputs.
138
+ * The events that are sent with the output events are of type {@link IOutputEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
139
+ */
43
140
  export enum EVENTTYPE_OUTPUT {
44
- OUTPUT_UPDATED = "output.updated"
141
+ /**
142
+ * The OUTPUT_UPDATED-event is sent when an output has been updated.
143
+ */
144
+ OUTPUT_UPDATED = 'output.updated'
45
145
  }
46
146
 
147
+ /**
148
+ * Event types for all task events
149
+ * The task events are used to notify about task changes, like start, process, end or cancel of a task.
150
+ * The events that are sent with the task events are of type {@link ITaskEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
151
+ */
47
152
  export enum EVENTTYPE_TASK {
48
- TASK_START = "task.start",
49
- TASK_PROCESS = "task.process",
50
- TASK_END = "task.end",
51
- TASK_CANCEL = "task.cancel",
153
+ /**
154
+ * The TASK_START-event is sent when a task has started.
155
+ */
156
+ TASK_START = 'task.start',
157
+ /**
158
+ * The TASK_PROCESS-event is sent when the process of a task has been updated.
159
+ */
160
+ TASK_PROCESS = 'task.process',
161
+ /**
162
+ * The TASK_END-event is sent when a task has ended.
163
+ */
164
+ TASK_END = 'task.end',
165
+ /**
166
+ * The TASK_CANCEL-event is sent when a task has been canceled.
167
+ */
168
+ TASK_CANCEL = 'task.cancel',
52
169
  }
53
170
 
171
+ /**
172
+ * Event types for all interaction events
173
+ * The interaction events are used to notify about interaction changes, like drag start, move and end, hover on and off, select on and off.
174
+ * The events that are sent with the interaction events are of type {@link IInteractionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
175
+ */
54
176
  export enum EVENTTYPE_INTERACTION {
55
- DRAG_START = "interaction.drag.start",
56
- DRAG_MOVE = "interaction.drag.move",
57
- DRAG_END = "interaction.drag.end",
58
- HOVER_ON = "interaction.hover.on",
59
- HOVER_OFF = "interaction.hover.off",
60
- SELECT_ON = "interaction.select.on",
61
- SELECT_OFF = "interaction.select.off",
177
+ /**
178
+ * The DRAG_START-event is sent when the dragging of an object has started.
179
+ */
180
+ DRAG_START = 'interaction.drag.start',
181
+ /**
182
+ * The DRAG_MOVE-event is sent when an object is being dragged.
183
+ */
184
+ DRAG_MOVE = 'interaction.drag.move',
185
+ /**
186
+ * The DRAG_END-event is sent when the dragging of an object has ended.
187
+ */
188
+ DRAG_END = 'interaction.drag.end',
189
+ /**
190
+ * The HOVER_ON-event is sent when an object has been hovered.
191
+ */
192
+ HOVER_ON = 'interaction.hover.on',
193
+ /**
194
+ * The HOVER_OFF-event is sent when an object has been unhovered.
195
+ */
196
+ HOVER_OFF = 'interaction.hover.off',
197
+ /**
198
+ * The SELECT_ON-event is sent when an object has been selected.
199
+ */
200
+ SELECT_ON = 'interaction.select.on',
201
+ /**
202
+ * The SELECT_OFF-event is sent when an object has been deselected.
203
+ */
204
+ SELECT_OFF = 'interaction.select.off',
205
+ }
206
+
207
+ /**
208
+ * Event types for all drawing tools events
209
+ * The drawing tools events are used to notify about drawing tools changes, like cancel, finish, update, inserted, removed, drag start, move and end.
210
+ * The events that are sent with the drawing tools events are of type {@link IDrawingToolsEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
211
+ */
212
+ export enum EVENTTYPE_DRAWING_TOOLS {
213
+ /**
214
+ * The CANCEL-event is sent when the drawing process has been canceled.
215
+ */
216
+ CANCEL = 'drawing_tools.cancel',
217
+ /**
218
+ * The FINISH-event is sent when the drawing process has been finished.
219
+ */
220
+ FINISH = 'drawing_tools.finish',
221
+ /**
222
+ * The UPDATE-event is sent when the drawing process has been updated.
223
+ */
224
+ UPDATE = 'drawing_tools.update',
225
+ /**
226
+ * The INSERTED-event is sent when a point has been inserted.
227
+ */
228
+ INSERTED = 'drawing_tools.inserted',
229
+ /**
230
+ * The REMOVED-event is sent when a point has been removed.
231
+ */
232
+ REMOVED = 'drawing_tools.removed',
233
+ /**
234
+ * The DRAG_START-event is sent when the dragging of a point has started.
235
+ */
236
+ DRAG_START = 'drawing_tools.drag.start',
237
+ /**
238
+ * The DRAG_MOVE-event is sent when a point is being dragged.
239
+ */
240
+ DRAG_MOVE = 'drawing_tools.drag.move',
241
+ /**
242
+ * The DRAG_END-event is sent when the dragging of a point has ended.
243
+ */
244
+ DRAG_END = 'drawing_tools.drag.end',
62
245
  }
63
246
 
247
+ /**
248
+ * Definition of the event types.
249
+ * These types are used to identify the type of an event in an event object {@link IEvent}.
250
+ * The {@link EventResponseMapping} is used to map the event type to the corresponding event interface.
251
+ */
64
252
  export const EVENTTYPE = {
65
253
  CAMERA: EVENTTYPE_CAMERA,
66
254
  OUTPUT: EVENTTYPE_OUTPUT,
67
255
  RENDERING: EVENTTYPE_RENDERING,
68
256
  SCENE: EVENTTYPE_SCENE,
69
257
  SESSION: EVENTTYPE_SESSION,
258
+ PARAMETER: EVENTTYPE_PARAMETER,
70
259
  VIEWPORT: EVENTTYPE_VIEWPORT,
71
260
  INTERACTION: EVENTTYPE_INTERACTION,
72
- TASK: EVENTTYPE_TASK
261
+ TASK: EVENTTYPE_TASK,
262
+ DRAWING_TOOLS: EVENTTYPE_DRAWING_TOOLS
73
263
  };
74
264
 
75
- export type MainEventTypes = typeof EVENTTYPE_CAMERA | typeof EVENTTYPE_OUTPUT | typeof EVENTTYPE_RENDERING | typeof EVENTTYPE_SCENE | typeof EVENTTYPE_SESSION | typeof EVENTTYPE_VIEWPORT | typeof EVENTTYPE_INTERACTION | typeof EVENTTYPE_TASK;
265
+ export type MainEventTypes = typeof EVENTTYPE_CAMERA | typeof EVENTTYPE_OUTPUT | typeof EVENTTYPE_RENDERING | typeof EVENTTYPE_SCENE | typeof EVENTTYPE_SESSION | typeof EVENTTYPE_PARAMETER | typeof EVENTTYPE_VIEWPORT | typeof EVENTTYPE_INTERACTION | typeof EVENTTYPE_DRAWING_TOOLS | typeof EVENTTYPE_TASK;
@@ -3,6 +3,7 @@ import { ShapeDiverError as ShapeDiverBackendError, isGBResponseError, isGBReque
3
3
  import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from '../logger/ShapeDiverBackendErrors';
4
4
  import { HttpResponse } from './HttpResponse';
5
5
  import { Converter } from '../converter/Converter';
6
+ import { btoaCustom } from '../utilities/base64';
6
7
 
7
8
  export class HttpClient {
8
9
  // #region Properties (7)
@@ -104,6 +105,8 @@ export class HttpClient {
104
105
  throw new ShapeDiverGeometryBackendRequestError(e.message, e.desc);
105
106
  } else if (isGBError(e)) {
106
107
  throw new ShapeDiverGeometryBackendError(e.message);
108
+ } else {
109
+ throw e;
107
110
  }
108
111
  }
109
112
 
@@ -205,14 +208,14 @@ export class HttpClient {
205
208
  * @param href
206
209
  * @returns
207
210
  */
208
- public async loadTexture(href: string): Promise<HttpResponse<{ image: HTMLImageElement, blob: Blob }>> {
211
+ public async loadTexture(href: string): Promise<HttpResponse<{ buffer: ArrayBuffer, blob: Blob }>> {
209
212
  const response = await (this.get(href, undefined, true) as Promise<HttpResponse<ArrayBuffer>>);
213
+ const buffer = response.data;
210
214
  const arrayBufferView = new Uint8Array( response.data );
211
215
  const blob = new Blob([ arrayBufferView ], { type: response.headers['content-type'] } );
212
- const image = await Converter.instance.responseToImage(response, blob);
213
216
  return {
214
217
  data: {
215
- image,
218
+ buffer,
216
219
  blob
217
220
  },
218
221
  size: response.data.byteLength,
@@ -326,7 +329,7 @@ export class HttpClient {
326
329
  url.search = params.toString();
327
330
 
328
331
  const hrefAsKey = url.toString();
329
- return window.btoa(hrefAsKey);
332
+ return btoaCustom(hrefAsKey);
330
333
  }
331
334
 
332
335
  // #endregion Private Methods (5)
package/src/index.ts CHANGED
@@ -1,88 +1,139 @@
1
- import { EventEngine } from './event-engine/EventEngine'
2
- import { EVENTTYPE, EVENTTYPE_CAMERA, EVENTTYPE_INTERACTION, EVENTTYPE_OUTPUT, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_TASK, EVENTTYPE_VIEWPORT, MainEventTypes } from './event-engine/EventTypes'
3
- import { SettingsEngine } from './settings-engine/SettingsEngine'
4
- import { StateEngine } from './state-engine/StateEngine'
5
- import { SystemInfo } from './system-info/SystemInfo'
6
- import { DomEventEngine } from './dom-event-engine/DomEventEngine'
7
- import { IDomEventListener } from './dom-event-engine/IDomEventListener'
8
- import { IEvent } from './event-engine/interfaces/IEvent'
9
- import { Converter } from './converter/Converter'
10
- import { HttpClient } from './http-client/HttpClient'
11
- import { InputValidator } from './input-validator/InputValidator'
12
- import { TypeChecker } from './type-check/TypeChecker'
13
- import { UuidGenerator } from './uuid-generator/UuidGenerator'
14
- import { PerformanceEvaluator } from './performance-evaluator/PerformanceEvaluator'
15
- import { Logger, LOGGING_LEVEL } from './logger/Logger'
16
- import { StatePromise } from './state-engine/StatePromise'
17
- import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerWebGLError, ShapeDiverViewerInteractionError, ShapeDiverViewerViewportError } from './logger/ShapeDiverViewerErrors'
18
- import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from './logger/ShapeDiverError'
19
- import { HttpResponse } from './http-client/HttpResponse'
20
- import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from './logger/ShapeDiverBackendErrors'
21
- import { ShapeDiverResponseErrorType as ShapeDiverGeometryBackendResponseErrorType } from "@shapediver/sdk.geometry-api-sdk-v2";
22
- import { isViewerError, isViewerUnknownError, isViewerDataProcessingError, isViewerEnvironmentMapError, isViewerWebGLError, isViewerSettingsError, isViewerSessionError, isViewerViewportError, isViewerLightError, isViewerCameraError, isARError, isViewerValidationError, isViewerInteractionError, isViewerGeometryBackendError, isViewerGeometryBackendGenericError, isViewerGeometryBackendRequestError, isViewerGeometryBackendResponseError } from './logger/ErrorTypeGuards'
1
+ import { Converter } from './converter/Converter';
2
+ import { DomEventEngine } from './dom-event-engine/DomEventEngine';
3
+ import { EventEngine } from './event-engine/EventEngine';
4
+ import {
5
+ EVENTTYPE,
6
+ EVENTTYPE_CAMERA,
7
+ EVENTTYPE_DRAWING_TOOLS,
8
+ EVENTTYPE_INTERACTION,
9
+ EVENTTYPE_OUTPUT,
10
+ EVENTTYPE_PARAMETER,
11
+ EVENTTYPE_RENDERING,
12
+ EVENTTYPE_SCENE,
13
+ EVENTTYPE_SESSION,
14
+ EVENTTYPE_TASK,
15
+ EVENTTYPE_VIEWPORT,
16
+ MainEventTypes
17
+ } from './event-engine/EventTypes';
18
+ import { HttpClient } from './http-client/HttpClient';
19
+ import { HttpResponse } from './http-client/HttpResponse';
20
+ import { IDomEventListener } from './dom-event-engine/IDomEventListener';
21
+ import { IEvent } from './event-engine/interfaces/IEvent';
22
+ import { InputValidator } from './input-validator/InputValidator';
23
+ import {
24
+ isARError,
25
+ isViewerCameraError,
26
+ isViewerDataProcessingError,
27
+ isViewerDrawingToolsError,
28
+ isViewerEnvironmentMapError,
29
+ isViewerError,
30
+ isViewerGeometryBackendError,
31
+ isViewerGeometryBackendGenericError,
32
+ isViewerGeometryBackendRequestError,
33
+ isViewerGeometryBackendResponseError,
34
+ isViewerInteractionError,
35
+ isViewerLightError,
36
+ isViewerSessionError,
37
+ isViewerSettingsError,
38
+ isViewerUnknownError,
39
+ isViewerValidationError,
40
+ isViewerViewportError,
41
+ isViewerWebGLError
42
+ } from './logger/ErrorTypeGuards';
43
+ import { ISessionGlobalAccessObjectDefinition } from './state-engine/ISessionGlobalAccessObjectDefinition';
44
+ import { IViewportGlobalAccessObjectDefinition } from './state-engine/IViewportGlobalAccessObjectDefinition';
45
+ import { Logger, LOGGING_LEVEL } from './logger/Logger';
46
+ import { PerformanceEvaluator } from './performance-evaluator/PerformanceEvaluator';
47
+ import { SESSION_SETTINGS_MODE, SettingsEngine } from './settings-engine/SettingsEngine';
48
+ import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from './logger/ShapeDiverBackendErrors';
49
+ import { ShapeDiverResponseErrorType as ShapeDiverGeometryBackendResponseErrorType } from '@shapediver/sdk.geometry-api-sdk-v2';
50
+ import {
51
+ ShapeDiverViewerArError,
52
+ ShapeDiverViewerCameraError,
53
+ ShapeDiverViewerDataProcessingError,
54
+ ShapeDiverViewerDrawingToolsError,
55
+ ShapeDiverViewerEnvironmentMapError,
56
+ ShapeDiverViewerInteractionError,
57
+ ShapeDiverViewerLightError,
58
+ ShapeDiverViewerSessionError,
59
+ ShapeDiverViewerSettingsError,
60
+ ShapeDiverViewerUnknownError,
61
+ ShapeDiverViewerValidationError,
62
+ ShapeDiverViewerViewportError,
63
+ ShapeDiverViewerWebGLError
64
+ } from './logger/ShapeDiverViewerErrors';
65
+ import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from './logger/ShapeDiverError';
66
+ import { StateEngine } from './state-engine/StateEngine';
67
+ import { StatePromise } from './state-engine/StatePromise';
68
+ import { SystemInfo } from './system-info/SystemInfo';
69
+ import { TypeChecker } from './type-check/TypeChecker';
70
+ import { UuidGenerator } from './uuid-generator/UuidGenerator';
71
+ import { atobCustom, btoaCustom } from './utilities/base64';
23
72
 
24
73
  export {
25
- EventEngine, EVENTTYPE, MainEventTypes, IEvent,
26
- EVENTTYPE_CAMERA, EVENTTYPE_OUTPUT, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_VIEWPORT, EVENTTYPE_INTERACTION, EVENTTYPE_TASK
27
- }
74
+ EventEngine, EVENTTYPE, MainEventTypes, IEvent,
75
+ EVENTTYPE_CAMERA, EVENTTYPE_OUTPUT, EVENTTYPE_PARAMETER, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_VIEWPORT, EVENTTYPE_INTERACTION, EVENTTYPE_DRAWING_TOOLS, EVENTTYPE_TASK
76
+ };
28
77
 
29
78
  export {
30
- SettingsEngine
31
- }
79
+ SettingsEngine, SESSION_SETTINGS_MODE
80
+ };
32
81
 
33
82
  export {
34
- StateEngine, StatePromise
35
- }
83
+ StateEngine, StatePromise,
84
+ IViewportGlobalAccessObjectDefinition, ISessionGlobalAccessObjectDefinition
85
+ };
36
86
 
37
87
  export {
38
88
  SystemInfo
39
- }
89
+ };
40
90
 
41
91
  export {
42
92
  IDomEventListener, DomEventEngine
43
- }
93
+ };
44
94
 
45
95
  export {
46
96
  HttpClient, HttpResponse
47
- }
97
+ };
48
98
 
49
99
  export {
50
100
  UuidGenerator
51
- }
101
+ };
52
102
 
53
103
  export {
54
104
  Converter
55
- }
105
+ };
56
106
 
57
107
  export {
58
108
  TypeChecker
59
- }
109
+ };
60
110
 
61
111
  export {
62
112
  InputValidator
63
- }
113
+ };
64
114
 
65
115
  export {
66
- Logger, LOGGING_LEVEL,
116
+ Logger, LOGGING_LEVEL,
67
117
  ShapeDiverViewerErrorType,
68
- ShapeDiverViewerError,
69
- ShapeDiverViewerDataProcessingError,
118
+ ShapeDiverViewerError,
119
+ ShapeDiverViewerDataProcessingError,
70
120
  ShapeDiverViewerEnvironmentMapError,
71
121
  ShapeDiverViewerWebGLError,
72
122
  ShapeDiverViewerSettingsError,
73
123
  ShapeDiverViewerSessionError,
74
124
  ShapeDiverViewerViewportError,
75
- ShapeDiverViewerUnknownError,
125
+ ShapeDiverViewerUnknownError,
76
126
  ShapeDiverViewerArError,
77
127
  ShapeDiverViewerLightError,
78
128
  ShapeDiverViewerCameraError,
79
129
  ShapeDiverViewerValidationError,
80
130
  ShapeDiverViewerInteractionError,
131
+ ShapeDiverViewerDrawingToolsError,
81
132
  ShapeDiverGeometryBackendError,
82
133
  ShapeDiverGeometryBackendRequestError,
83
134
  ShapeDiverGeometryBackendResponseError,
84
135
  ShapeDiverGeometryBackendResponseErrorType
85
- }
136
+ };
86
137
 
87
138
  export {
88
139
  isViewerError,
@@ -98,12 +149,17 @@ export {
98
149
  isARError,
99
150
  isViewerValidationError,
100
151
  isViewerInteractionError,
152
+ isViewerDrawingToolsError,
101
153
  isViewerGeometryBackendError,
102
154
  isViewerGeometryBackendGenericError,
103
155
  isViewerGeometryBackendRequestError,
104
156
  isViewerGeometryBackendResponseError
105
- }
157
+ };
106
158
 
107
159
  export {
108
160
  PerformanceEvaluator
109
- }
161
+ };
162
+
163
+ export {
164
+ atobCustom, btoaCustom
165
+ };
@@ -1,6 +1,6 @@
1
1
  import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from "./ShapeDiverBackendErrors"
2
2
  import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from "./ShapeDiverError"
3
- import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from "./ShapeDiverViewerErrors"
3
+ import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerDrawingToolsError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from "./ShapeDiverViewerErrors"
4
4
 
5
5
  /** Type guard for all error types of the viewer package. */
6
6
  export function isViewerError(e: any): e is ShapeDiverViewerError {
@@ -93,6 +93,13 @@ export function isViewerInteractionError(e: any): e is ShapeDiverViewerInteracti
93
93
  (<ShapeDiverViewerError>e).errorType === ShapeDiverViewerErrorType.INTERACTION_ERROR
94
94
  }
95
95
 
96
+ /** Type guard for a drawing tools viewer error. */
97
+ export function isViewerDrawingToolsError(e: any): e is ShapeDiverViewerDrawingToolsError {
98
+ return e instanceof Error &&
99
+ "errorType" in e &&
100
+ (<ShapeDiverViewerError>e).errorType === ShapeDiverViewerErrorType.DRAWING_TOOLS_ERROR
101
+ }
102
+
96
103
  /** Type guard for all error types of the Geometry Backend SDK package that are mapped to viewer errors. */
97
104
  export function isViewerGeometryBackendError(e: any): e is
98
105
  (ShapeDiverGeometryBackendError & ShapeDiverGeometryBackendRequestError & ShapeDiverGeometryBackendResponseError) {
@@ -6,6 +6,7 @@ export enum ShapeDiverViewerErrorType {
6
6
  CAMERA_ERROR = 'SdCameraError',
7
7
  CONNECTION_ERROR = 'SdConnectionError',
8
8
  DATA_PROCESSING_ERROR = 'SdDataProcessingError',
9
+ DRAWING_TOOLS_ERROR = 'SdDrawingToolsError',
9
10
  ENVIRONMENT_MAP_ERROR = 'SdEnvironmentMapError',
10
11
  INTERACTION_ERROR = 'SdInteractionError',
11
12
  LIGHT_ERROR = 'SdLightError',
@@ -110,4 +110,12 @@ export class ShapeDiverViewerInteractionError extends ShapeDiverViewerError {
110
110
  ) {
111
111
  super(ShapeDiverViewerErrorType.INTERACTION_ERROR, 'An error occurred with interactions.', message);
112
112
  }
113
+ }
114
+
115
+ export class ShapeDiverViewerDrawingToolsError extends ShapeDiverViewerError {
116
+ constructor(
117
+ public readonly message: string
118
+ ) {
119
+ super(ShapeDiverViewerErrorType.INTERACTION_ERROR, 'An error occurred with drawing tools.', message);
120
+ }
113
121
  }