@shapediver/viewer.features.drawing-tools 3.12.11 → 3.12.13

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 (53) hide show
  1. package/dist/business/implementation/managers/interaction/InteractionManagerAdapter.d.ts +36 -0
  2. package/dist/business/implementation/managers/interaction/InteractionManagerAdapter.d.ts.map +1 -0
  3. package/dist/business/implementation/managers/interaction/InteractionManagerAdapter.js +77 -0
  4. package/dist/business/implementation/managers/interaction/InteractionManagerAdapter.js.map +1 -0
  5. package/dist/business/implementation/managers/interaction/InteractionManagerRefactored.d.ts +82 -0
  6. package/dist/business/implementation/managers/interaction/InteractionManagerRefactored.d.ts.map +1 -0
  7. package/dist/business/implementation/managers/interaction/InteractionManagerRefactored.js +406 -0
  8. package/dist/business/implementation/managers/interaction/InteractionManagerRefactored.js.map +1 -0
  9. package/dist/business/implementation/managers/interaction/actions/InteractionActions.d.ts +107 -0
  10. package/dist/business/implementation/managers/interaction/actions/InteractionActions.d.ts.map +1 -0
  11. package/dist/business/implementation/managers/interaction/actions/InteractionActions.js +191 -0
  12. package/dist/business/implementation/managers/interaction/actions/InteractionActions.js.map +1 -0
  13. package/dist/business/implementation/managers/interaction/config/InteractionConfig.d.ts +134 -0
  14. package/dist/business/implementation/managers/interaction/config/InteractionConfig.d.ts.map +1 -0
  15. package/dist/business/implementation/managers/interaction/config/InteractionConfig.js +218 -0
  16. package/dist/business/implementation/managers/interaction/config/InteractionConfig.js.map +1 -0
  17. package/dist/business/implementation/managers/interaction/gestures/GestureRecognition.d.ts +118 -0
  18. package/dist/business/implementation/managers/interaction/gestures/GestureRecognition.d.ts.map +1 -0
  19. package/dist/business/implementation/managers/interaction/gestures/GestureRecognition.js +352 -0
  20. package/dist/business/implementation/managers/interaction/gestures/GestureRecognition.js.map +1 -0
  21. package/dist/business/implementation/managers/interaction/index.d.ts +13 -0
  22. package/dist/business/implementation/managers/interaction/index.d.ts.map +1 -0
  23. package/dist/business/implementation/managers/interaction/index.js +49 -0
  24. package/dist/business/implementation/managers/interaction/index.js.map +1 -0
  25. package/dist/business/implementation/managers/interaction/interfaces/IInteractionManagerForStrategy.d.ts +24 -0
  26. package/dist/business/implementation/managers/interaction/interfaces/IInteractionManagerForStrategy.d.ts.map +1 -0
  27. package/dist/business/implementation/managers/interaction/interfaces/IInteractionManagerForStrategy.js +3 -0
  28. package/dist/business/implementation/managers/interaction/interfaces/IInteractionManagerForStrategy.js.map +1 -0
  29. package/dist/business/implementation/managers/interaction/mobile-detection-example.d.ts +24 -0
  30. package/dist/business/implementation/managers/interaction/mobile-detection-example.d.ts.map +1 -0
  31. package/dist/business/implementation/managers/interaction/mobile-detection-example.js +112 -0
  32. package/dist/business/implementation/managers/interaction/mobile-detection-example.js.map +1 -0
  33. package/dist/business/implementation/managers/interaction/strategies/DesktopInteractionStrategy.d.ts +37 -0
  34. package/dist/business/implementation/managers/interaction/strategies/DesktopInteractionStrategy.d.ts.map +1 -0
  35. package/dist/business/implementation/managers/interaction/strategies/DesktopInteractionStrategy.js +290 -0
  36. package/dist/business/implementation/managers/interaction/strategies/DesktopInteractionStrategy.js.map +1 -0
  37. package/dist/business/implementation/managers/interaction/strategies/IInteractionStrategy.d.ts +52 -0
  38. package/dist/business/implementation/managers/interaction/strategies/IInteractionStrategy.d.ts.map +1 -0
  39. package/dist/business/implementation/managers/interaction/strategies/IInteractionStrategy.js +21 -0
  40. package/dist/business/implementation/managers/interaction/strategies/IInteractionStrategy.js.map +1 -0
  41. package/dist/business/implementation/managers/interaction/strategies/MobileInteractionStrategy.d.ts +72 -0
  42. package/dist/business/implementation/managers/interaction/strategies/MobileInteractionStrategy.d.ts.map +1 -0
  43. package/dist/business/implementation/managers/interaction/strategies/MobileInteractionStrategy.js +442 -0
  44. package/dist/business/implementation/managers/interaction/strategies/MobileInteractionStrategy.js.map +1 -0
  45. package/dist/business/implementation/managers/interaction/test-mobile-detection.d.ts +24 -0
  46. package/dist/business/implementation/managers/interaction/test-mobile-detection.d.ts.map +1 -0
  47. package/dist/business/implementation/managers/interaction/test-mobile-detection.js +136 -0
  48. package/dist/business/implementation/managers/interaction/test-mobile-detection.js.map +1 -0
  49. package/dist/business/implementation/managers/interaction/test-refactored.d.ts +9 -0
  50. package/dist/business/implementation/managers/interaction/test-refactored.d.ts.map +1 -0
  51. package/dist/business/implementation/managers/interaction/test-refactored.js +57 -0
  52. package/dist/business/implementation/managers/interaction/test-refactored.js.map +1 -0
  53. package/package.json +10 -10
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Base interface for gesture recognition
3
+ */
4
+ export interface IGestureRecognizer {
5
+ /**
6
+ * Process a pointer event and determine if it matches this gesture
7
+ */
8
+ processEvent(event: PointerEvent): GestureResult;
9
+ /**
10
+ * Reset the gesture recognizer state
11
+ */
12
+ reset(): void;
13
+ /**
14
+ * Get the current gesture state
15
+ */
16
+ getState(): GestureState;
17
+ }
18
+ /**
19
+ * Result of gesture processing
20
+ */
21
+ export interface GestureResult {
22
+ recognized: boolean;
23
+ gesture?: GestureType;
24
+ confidence?: number;
25
+ data?: any;
26
+ }
27
+ /**
28
+ * Types of gestures that can be recognized
29
+ */
30
+ export declare enum GestureType {
31
+ TAP = "tap",
32
+ DOUBLE_TAP = "double_tap",
33
+ LONG_PRESS = "long_press",
34
+ DRAG = "drag",
35
+ SWIPE = "swipe",
36
+ PINCH = "pinch",
37
+ ROTATE = "rotate"
38
+ }
39
+ /**
40
+ * State of gesture recognition
41
+ */
42
+ export declare enum GestureState {
43
+ IDLE = "idle",
44
+ POSSIBLE = "possible",
45
+ BEGAN = "began",
46
+ CHANGED = "changed",
47
+ ENDED = "ended",
48
+ CANCELLED = "cancelled",
49
+ FAILED = "failed"
50
+ }
51
+ /**
52
+ * Tap gesture recognizer
53
+ */
54
+ export declare class TapGestureRecognizer implements IGestureRecognizer {
55
+ private state;
56
+ private startTime;
57
+ private startPosition;
58
+ private tapCount;
59
+ private lastTapTime;
60
+ private readonly MAX_TAP_DURATION;
61
+ private readonly MAX_TAP_DISTANCE;
62
+ private readonly DOUBLE_TAP_INTERVAL;
63
+ processEvent(event: PointerEvent): GestureResult;
64
+ reset(): void;
65
+ getState(): GestureState;
66
+ private handlePointerDown;
67
+ private handlePointerMove;
68
+ private handlePointerUp;
69
+ private getDistance;
70
+ }
71
+ /**
72
+ * Long press gesture recognizer
73
+ */
74
+ export declare class LongPressGestureRecognizer implements IGestureRecognizer {
75
+ private state;
76
+ private startTime;
77
+ private startPosition;
78
+ private timer?;
79
+ private readonly LONG_PRESS_DURATION;
80
+ private readonly MAX_MOVEMENT_DISTANCE;
81
+ processEvent(event: PointerEvent): GestureResult;
82
+ reset(): void;
83
+ getState(): GestureState;
84
+ private handlePointerDown;
85
+ private handlePointerMove;
86
+ private handlePointerEnd;
87
+ private getDistance;
88
+ private clearTimer;
89
+ }
90
+ /**
91
+ * Drag gesture recognizer
92
+ */
93
+ export declare class DragGestureRecognizer implements IGestureRecognizer {
94
+ private state;
95
+ private startPosition;
96
+ private currentPosition;
97
+ private readonly MIN_DRAG_DISTANCE;
98
+ processEvent(event: PointerEvent): GestureResult;
99
+ reset(): void;
100
+ getState(): GestureState;
101
+ private handlePointerDown;
102
+ private handlePointerMove;
103
+ private handlePointerEnd;
104
+ private getTotalDistance;
105
+ }
106
+ /**
107
+ * Gesture manager that coordinates multiple recognizers
108
+ */
109
+ export declare class GestureManager {
110
+ private recognizers;
111
+ private activeGestures;
112
+ addRecognizer(recognizer: IGestureRecognizer): void;
113
+ removeRecognizer(recognizer: IGestureRecognizer): void;
114
+ processEvent(event: PointerEvent): GestureResult[];
115
+ reset(): void;
116
+ isGestureActive(gesture: GestureType): boolean;
117
+ }
118
+ //# sourceMappingURL=GestureRecognition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GestureRecognition.d.ts","sourceRoot":"","sources":["../../../../../../src/business/implementation/managers/interaction/gestures/GestureRecognition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GestureManager = exports.DragGestureRecognizer = exports.LongPressGestureRecognizer = exports.TapGestureRecognizer = exports.GestureState = exports.GestureType = void 0;
4
+ /**
5
+ * Types of gestures that can be recognized
6
+ */
7
+ var GestureType;
8
+ (function (GestureType) {
9
+ GestureType["TAP"] = "tap";
10
+ GestureType["DOUBLE_TAP"] = "double_tap";
11
+ GestureType["LONG_PRESS"] = "long_press";
12
+ GestureType["DRAG"] = "drag";
13
+ GestureType["SWIPE"] = "swipe";
14
+ GestureType["PINCH"] = "pinch";
15
+ GestureType["ROTATE"] = "rotate";
16
+ })(GestureType = exports.GestureType || (exports.GestureType = {}));
17
+ /**
18
+ * State of gesture recognition
19
+ */
20
+ var GestureState;
21
+ (function (GestureState) {
22
+ GestureState["IDLE"] = "idle";
23
+ GestureState["POSSIBLE"] = "possible";
24
+ GestureState["BEGAN"] = "began";
25
+ GestureState["CHANGED"] = "changed";
26
+ GestureState["ENDED"] = "ended";
27
+ GestureState["CANCELLED"] = "cancelled";
28
+ GestureState["FAILED"] = "failed";
29
+ })(GestureState = exports.GestureState || (exports.GestureState = {}));
30
+ /**
31
+ * Tap gesture recognizer
32
+ */
33
+ class TapGestureRecognizer {
34
+ constructor() {
35
+ this.state = GestureState.IDLE;
36
+ this.startTime = 0;
37
+ this.startPosition = { x: 0, y: 0 };
38
+ this.tapCount = 0;
39
+ this.lastTapTime = 0;
40
+ this.MAX_TAP_DURATION = 200; // ms
41
+ this.MAX_TAP_DISTANCE = 20; // pixels
42
+ this.DOUBLE_TAP_INTERVAL = 300; // ms
43
+ }
44
+ processEvent(event) {
45
+ switch (event.type) {
46
+ case "pointerdown":
47
+ return this.handlePointerDown(event);
48
+ case "pointermove":
49
+ return this.handlePointerMove(event);
50
+ case "pointerup":
51
+ return this.handlePointerUp(event);
52
+ default:
53
+ return { recognized: false };
54
+ }
55
+ }
56
+ reset() {
57
+ this.state = GestureState.IDLE;
58
+ this.tapCount = 0;
59
+ }
60
+ getState() {
61
+ return this.state;
62
+ }
63
+ handlePointerDown(event) {
64
+ this.startTime = Date.now();
65
+ this.startPosition = { x: event.clientX, y: event.clientY };
66
+ this.state = GestureState.POSSIBLE;
67
+ return { recognized: false };
68
+ }
69
+ handlePointerMove(event) {
70
+ if (this.state !== GestureState.POSSIBLE) {
71
+ return { recognized: false };
72
+ }
73
+ const distance = this.getDistance(event);
74
+ if (distance > this.MAX_TAP_DISTANCE) {
75
+ this.state = GestureState.FAILED;
76
+ return { recognized: false };
77
+ }
78
+ return { recognized: false };
79
+ }
80
+ handlePointerUp(event) {
81
+ if (this.state !== GestureState.POSSIBLE) {
82
+ return { recognized: false };
83
+ }
84
+ const duration = Date.now() - this.startTime;
85
+ const distance = this.getDistance(event);
86
+ if (duration <= this.MAX_TAP_DURATION &&
87
+ distance <= this.MAX_TAP_DISTANCE) {
88
+ const now = Date.now();
89
+ if (now - this.lastTapTime < this.DOUBLE_TAP_INTERVAL) {
90
+ this.tapCount++;
91
+ }
92
+ else {
93
+ this.tapCount = 1;
94
+ }
95
+ this.lastTapTime = now;
96
+ this.state = GestureState.ENDED;
97
+ const gestureType = this.tapCount === 1 ? GestureType.TAP : GestureType.DOUBLE_TAP;
98
+ return {
99
+ recognized: true,
100
+ gesture: gestureType,
101
+ confidence: 1.0,
102
+ data: { tapCount: this.tapCount, position: this.startPosition },
103
+ };
104
+ }
105
+ this.state = GestureState.FAILED;
106
+ return { recognized: false };
107
+ }
108
+ getDistance(event) {
109
+ const dx = event.clientX - this.startPosition.x;
110
+ const dy = event.clientY - this.startPosition.y;
111
+ return Math.sqrt(dx * dx + dy * dy);
112
+ }
113
+ }
114
+ exports.TapGestureRecognizer = TapGestureRecognizer;
115
+ /**
116
+ * Long press gesture recognizer
117
+ */
118
+ class LongPressGestureRecognizer {
119
+ constructor() {
120
+ this.state = GestureState.IDLE;
121
+ this.startTime = 0;
122
+ this.startPosition = { x: 0, y: 0 };
123
+ this.LONG_PRESS_DURATION = 500; // ms
124
+ this.MAX_MOVEMENT_DISTANCE = 20; // pixels
125
+ }
126
+ processEvent(event) {
127
+ switch (event.type) {
128
+ case "pointerdown":
129
+ return this.handlePointerDown(event);
130
+ case "pointermove":
131
+ return this.handlePointerMove(event);
132
+ case "pointerup":
133
+ case "pointercancel":
134
+ return this.handlePointerEnd(event);
135
+ default:
136
+ return { recognized: false };
137
+ }
138
+ }
139
+ reset() {
140
+ this.state = GestureState.IDLE;
141
+ this.clearTimer();
142
+ }
143
+ getState() {
144
+ return this.state;
145
+ }
146
+ handlePointerDown(event) {
147
+ this.startTime = Date.now();
148
+ this.startPosition = { x: event.clientX, y: event.clientY };
149
+ this.state = GestureState.POSSIBLE;
150
+ this.timer = window.setTimeout(() => {
151
+ if (this.state === GestureState.POSSIBLE) {
152
+ this.state = GestureState.BEGAN;
153
+ }
154
+ }, this.LONG_PRESS_DURATION);
155
+ return { recognized: false };
156
+ }
157
+ handlePointerMove(event) {
158
+ if (this.state === GestureState.IDLE ||
159
+ this.state === GestureState.FAILED) {
160
+ return { recognized: false };
161
+ }
162
+ const distance = this.getDistance(event);
163
+ if (distance > this.MAX_MOVEMENT_DISTANCE) {
164
+ this.state = GestureState.FAILED;
165
+ this.clearTimer();
166
+ return { recognized: false };
167
+ }
168
+ if (this.state === GestureState.BEGAN) {
169
+ this.state = GestureState.CHANGED;
170
+ return {
171
+ recognized: true,
172
+ gesture: GestureType.LONG_PRESS,
173
+ confidence: 1.0,
174
+ data: {
175
+ duration: Date.now() - this.startTime,
176
+ position: this.startPosition,
177
+ },
178
+ };
179
+ }
180
+ return { recognized: false };
181
+ }
182
+ handlePointerEnd(event) {
183
+ this.clearTimer();
184
+ if (this.state === GestureState.BEGAN ||
185
+ this.state === GestureState.CHANGED) {
186
+ this.state = GestureState.ENDED;
187
+ return {
188
+ recognized: true,
189
+ gesture: GestureType.LONG_PRESS,
190
+ confidence: 1.0,
191
+ data: {
192
+ duration: Date.now() - this.startTime,
193
+ position: this.startPosition,
194
+ },
195
+ };
196
+ }
197
+ this.state = GestureState.FAILED;
198
+ return { recognized: false };
199
+ }
200
+ getDistance(event) {
201
+ const dx = event.clientX - this.startPosition.x;
202
+ const dy = event.clientY - this.startPosition.y;
203
+ return Math.sqrt(dx * dx + dy * dy);
204
+ }
205
+ clearTimer() {
206
+ if (this.timer) {
207
+ clearTimeout(this.timer);
208
+ this.timer = undefined;
209
+ }
210
+ }
211
+ }
212
+ exports.LongPressGestureRecognizer = LongPressGestureRecognizer;
213
+ /**
214
+ * Drag gesture recognizer
215
+ */
216
+ class DragGestureRecognizer {
217
+ constructor() {
218
+ this.state = GestureState.IDLE;
219
+ this.startPosition = { x: 0, y: 0 };
220
+ this.currentPosition = { x: 0, y: 0 };
221
+ this.MIN_DRAG_DISTANCE = 10; // pixels
222
+ }
223
+ processEvent(event) {
224
+ switch (event.type) {
225
+ case "pointerdown":
226
+ return this.handlePointerDown(event);
227
+ case "pointermove":
228
+ return this.handlePointerMove(event);
229
+ case "pointerup":
230
+ case "pointercancel":
231
+ return this.handlePointerEnd(event);
232
+ default:
233
+ return { recognized: false };
234
+ }
235
+ }
236
+ reset() {
237
+ this.state = GestureState.IDLE;
238
+ }
239
+ getState() {
240
+ return this.state;
241
+ }
242
+ handlePointerDown(event) {
243
+ this.startPosition = { x: event.clientX, y: event.clientY };
244
+ this.currentPosition = { x: event.clientX, y: event.clientY };
245
+ this.state = GestureState.POSSIBLE;
246
+ return { recognized: false };
247
+ }
248
+ handlePointerMove(event) {
249
+ if (this.state === GestureState.IDLE ||
250
+ this.state === GestureState.FAILED) {
251
+ return { recognized: false };
252
+ }
253
+ this.currentPosition = { x: event.clientX, y: event.clientY };
254
+ const distance = this.getTotalDistance();
255
+ if (this.state === GestureState.POSSIBLE &&
256
+ distance > this.MIN_DRAG_DISTANCE) {
257
+ this.state = GestureState.BEGAN;
258
+ return {
259
+ recognized: true,
260
+ gesture: GestureType.DRAG,
261
+ confidence: 1.0,
262
+ data: {
263
+ startPosition: this.startPosition,
264
+ currentPosition: this.currentPosition,
265
+ distance: distance,
266
+ phase: "began",
267
+ },
268
+ };
269
+ }
270
+ if (this.state === GestureState.BEGAN ||
271
+ this.state === GestureState.CHANGED) {
272
+ this.state = GestureState.CHANGED;
273
+ return {
274
+ recognized: true,
275
+ gesture: GestureType.DRAG,
276
+ confidence: 1.0,
277
+ data: {
278
+ startPosition: this.startPosition,
279
+ currentPosition: this.currentPosition,
280
+ distance: distance,
281
+ phase: "changed",
282
+ },
283
+ };
284
+ }
285
+ return { recognized: false };
286
+ }
287
+ handlePointerEnd(event) {
288
+ if (this.state === GestureState.BEGAN ||
289
+ this.state === GestureState.CHANGED) {
290
+ this.state = GestureState.ENDED;
291
+ return {
292
+ recognized: true,
293
+ gesture: GestureType.DRAG,
294
+ confidence: 1.0,
295
+ data: {
296
+ startPosition: this.startPosition,
297
+ currentPosition: this.currentPosition,
298
+ distance: this.getTotalDistance(),
299
+ phase: "ended",
300
+ },
301
+ };
302
+ }
303
+ this.state = GestureState.FAILED;
304
+ return { recognized: false };
305
+ }
306
+ getTotalDistance() {
307
+ const dx = this.currentPosition.x - this.startPosition.x;
308
+ const dy = this.currentPosition.y - this.startPosition.y;
309
+ return Math.sqrt(dx * dx + dy * dy);
310
+ }
311
+ }
312
+ exports.DragGestureRecognizer = DragGestureRecognizer;
313
+ /**
314
+ * Gesture manager that coordinates multiple recognizers
315
+ */
316
+ class GestureManager {
317
+ constructor() {
318
+ this.recognizers = [];
319
+ this.activeGestures = new Set();
320
+ }
321
+ addRecognizer(recognizer) {
322
+ this.recognizers.push(recognizer);
323
+ }
324
+ removeRecognizer(recognizer) {
325
+ const index = this.recognizers.indexOf(recognizer);
326
+ if (index > -1) {
327
+ this.recognizers.splice(index, 1);
328
+ }
329
+ }
330
+ processEvent(event) {
331
+ const results = [];
332
+ for (const recognizer of this.recognizers) {
333
+ const result = recognizer.processEvent(event);
334
+ if (result.recognized) {
335
+ results.push(result);
336
+ if (result.gesture) {
337
+ this.activeGestures.add(result.gesture);
338
+ }
339
+ }
340
+ }
341
+ return results;
342
+ }
343
+ reset() {
344
+ this.recognizers.forEach((recognizer) => recognizer.reset());
345
+ this.activeGestures.clear();
346
+ }
347
+ isGestureActive(gesture) {
348
+ return this.activeGestures.has(gesture);
349
+ }
350
+ }
351
+ exports.GestureManager = GestureManager;
352
+ //# sourceMappingURL=GestureRecognition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GestureRecognition.js","sourceRoot":"","sources":["../../../../../../src/business/implementation/managers/interaction/gestures/GestureRecognition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export { ActionFactory, ActionResult, DeletePointsAction, FinalizeInsertionAction, IInteractionAction, InteractionContext, MoveDraggedPointsAction, SelectPointAction, StartDragAction, StartInsertionAction, UpdateHoverAction, } from "./actions/InteractionActions";
2
+ export { AccessibilitySettings, GestureSettings, InteractionConfig, InteractionConfigFactory, InteractionConfigManager, MouseAction, MouseSettings, PlatformType, TouchSettings, } from "./config/InteractionConfig";
3
+ export { DragGestureRecognizer, GestureManager, GestureResult, GestureState, GestureType, IGestureRecognizer, LongPressGestureRecognizer, TapGestureRecognizer, } from "./gestures/GestureRecognition";
4
+ export { DeletionInteractionHandler } from "./handlers/DeletionInteractionHandler";
5
+ export { InsertionInteractionHandler } from "./handlers/InsertionInteractionHandler";
6
+ export { MidPointInteractionHandler } from "./handlers/MidPointInteractionHandler";
7
+ export { InteractionManagerHelper } from "./helpers/InteractionManagerHelper";
8
+ export { InteractionManagerAdapter } from "./InteractionManagerAdapter";
9
+ export { InteractionManagerRefactored } from "./InteractionManagerRefactored";
10
+ export { DesktopInteractionStrategy } from "./strategies/DesktopInteractionStrategy";
11
+ export { IInteractionStrategy, InteractionAction, InteractionResult, } from "./strategies/IInteractionStrategy";
12
+ export { MobileInteractionStrategy } from "./strategies/MobileInteractionStrategy";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/business/implementation/managers/interaction/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACN,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,GACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAC,0BAA0B,EAAC,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAC,0BAA0B,EAAC,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAC,wBAAwB,EAAC,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAC,0BAA0B,EAAC,MAAM,yCAAyC,CAAC;AAEnF,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,yBAAyB,EAAC,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MobileInteractionStrategy = exports.InteractionAction = exports.DesktopInteractionStrategy = exports.InteractionManagerRefactored = exports.InteractionManagerAdapter = exports.InteractionManagerHelper = exports.MidPointInteractionHandler = exports.InsertionInteractionHandler = exports.DeletionInteractionHandler = exports.TapGestureRecognizer = exports.LongPressGestureRecognizer = exports.GestureType = exports.GestureState = exports.GestureManager = exports.DragGestureRecognizer = exports.PlatformType = exports.MouseAction = exports.InteractionConfigManager = exports.InteractionConfigFactory = exports.UpdateHoverAction = exports.StartInsertionAction = exports.StartDragAction = exports.SelectPointAction = exports.MoveDraggedPointsAction = exports.FinalizeInsertionAction = exports.DeletePointsAction = exports.ActionFactory = void 0;
4
+ // Main interaction manager exports
5
+ // Action system exports
6
+ var InteractionActions_1 = require("./actions/InteractionActions");
7
+ Object.defineProperty(exports, "ActionFactory", { enumerable: true, get: function () { return InteractionActions_1.ActionFactory; } });
8
+ Object.defineProperty(exports, "DeletePointsAction", { enumerable: true, get: function () { return InteractionActions_1.DeletePointsAction; } });
9
+ Object.defineProperty(exports, "FinalizeInsertionAction", { enumerable: true, get: function () { return InteractionActions_1.FinalizeInsertionAction; } });
10
+ Object.defineProperty(exports, "MoveDraggedPointsAction", { enumerable: true, get: function () { return InteractionActions_1.MoveDraggedPointsAction; } });
11
+ Object.defineProperty(exports, "SelectPointAction", { enumerable: true, get: function () { return InteractionActions_1.SelectPointAction; } });
12
+ Object.defineProperty(exports, "StartDragAction", { enumerable: true, get: function () { return InteractionActions_1.StartDragAction; } });
13
+ Object.defineProperty(exports, "StartInsertionAction", { enumerable: true, get: function () { return InteractionActions_1.StartInsertionAction; } });
14
+ Object.defineProperty(exports, "UpdateHoverAction", { enumerable: true, get: function () { return InteractionActions_1.UpdateHoverAction; } });
15
+ // Configuration exports
16
+ var InteractionConfig_1 = require("./config/InteractionConfig");
17
+ Object.defineProperty(exports, "InteractionConfigFactory", { enumerable: true, get: function () { return InteractionConfig_1.InteractionConfigFactory; } });
18
+ Object.defineProperty(exports, "InteractionConfigManager", { enumerable: true, get: function () { return InteractionConfig_1.InteractionConfigManager; } });
19
+ Object.defineProperty(exports, "MouseAction", { enumerable: true, get: function () { return InteractionConfig_1.MouseAction; } });
20
+ Object.defineProperty(exports, "PlatformType", { enumerable: true, get: function () { return InteractionConfig_1.PlatformType; } });
21
+ // Gesture recognition exports
22
+ var GestureRecognition_1 = require("./gestures/GestureRecognition");
23
+ Object.defineProperty(exports, "DragGestureRecognizer", { enumerable: true, get: function () { return GestureRecognition_1.DragGestureRecognizer; } });
24
+ Object.defineProperty(exports, "GestureManager", { enumerable: true, get: function () { return GestureRecognition_1.GestureManager; } });
25
+ Object.defineProperty(exports, "GestureState", { enumerable: true, get: function () { return GestureRecognition_1.GestureState; } });
26
+ Object.defineProperty(exports, "GestureType", { enumerable: true, get: function () { return GestureRecognition_1.GestureType; } });
27
+ Object.defineProperty(exports, "LongPressGestureRecognizer", { enumerable: true, get: function () { return GestureRecognition_1.LongPressGestureRecognizer; } });
28
+ Object.defineProperty(exports, "TapGestureRecognizer", { enumerable: true, get: function () { return GestureRecognition_1.TapGestureRecognizer; } });
29
+ // Re-export existing handlers for compatibility
30
+ var DeletionInteractionHandler_1 = require("./handlers/DeletionInteractionHandler");
31
+ Object.defineProperty(exports, "DeletionInteractionHandler", { enumerable: true, get: function () { return DeletionInteractionHandler_1.DeletionInteractionHandler; } });
32
+ var InsertionInteractionHandler_1 = require("./handlers/InsertionInteractionHandler");
33
+ Object.defineProperty(exports, "InsertionInteractionHandler", { enumerable: true, get: function () { return InsertionInteractionHandler_1.InsertionInteractionHandler; } });
34
+ var MidPointInteractionHandler_1 = require("./handlers/MidPointInteractionHandler");
35
+ Object.defineProperty(exports, "MidPointInteractionHandler", { enumerable: true, get: function () { return MidPointInteractionHandler_1.MidPointInteractionHandler; } });
36
+ var InteractionManagerHelper_1 = require("./helpers/InteractionManagerHelper");
37
+ Object.defineProperty(exports, "InteractionManagerHelper", { enumerable: true, get: function () { return InteractionManagerHelper_1.InteractionManagerHelper; } });
38
+ var InteractionManagerAdapter_1 = require("./InteractionManagerAdapter");
39
+ Object.defineProperty(exports, "InteractionManagerAdapter", { enumerable: true, get: function () { return InteractionManagerAdapter_1.InteractionManagerAdapter; } });
40
+ var InteractionManagerRefactored_1 = require("./InteractionManagerRefactored");
41
+ Object.defineProperty(exports, "InteractionManagerRefactored", { enumerable: true, get: function () { return InteractionManagerRefactored_1.InteractionManagerRefactored; } });
42
+ var DesktopInteractionStrategy_1 = require("./strategies/DesktopInteractionStrategy");
43
+ Object.defineProperty(exports, "DesktopInteractionStrategy", { enumerable: true, get: function () { return DesktopInteractionStrategy_1.DesktopInteractionStrategy; } });
44
+ // Strategy pattern exports
45
+ var IInteractionStrategy_1 = require("./strategies/IInteractionStrategy");
46
+ Object.defineProperty(exports, "InteractionAction", { enumerable: true, get: function () { return IInteractionStrategy_1.InteractionAction; } });
47
+ var MobileInteractionStrategy_1 = require("./strategies/MobileInteractionStrategy");
48
+ Object.defineProperty(exports, "MobileInteractionStrategy", { enumerable: true, get: function () { return MobileInteractionStrategy_1.MobileInteractionStrategy; } });
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/business/implementation/managers/interaction/index.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,wBAAwB;AACxB,mEAYsC;AAXrC,mHAAA,aAAa,OAAA;AAEb,wHAAA,kBAAkB,OAAA;AAClB,6HAAA,uBAAuB,OAAA;AAGvB,6HAAA,uBAAuB,OAAA;AACvB,uHAAA,iBAAiB,OAAA;AACjB,qHAAA,eAAe,OAAA;AACf,0HAAA,oBAAoB,OAAA;AACpB,uHAAA,iBAAiB,OAAA;AAElB,wBAAwB;AACxB,gEAUoC;AANnC,6HAAA,wBAAwB,OAAA;AACxB,6HAAA,wBAAwB,OAAA;AACxB,gHAAA,WAAW,OAAA;AAEX,iHAAA,YAAY,OAAA;AAGb,8BAA8B;AAC9B,oEASuC;AARtC,2HAAA,qBAAqB,OAAA;AACrB,oHAAA,cAAc,OAAA;AAEd,kHAAA,YAAY,OAAA;AACZ,iHAAA,WAAW,OAAA;AAEX,gIAAA,0BAA0B,OAAA;AAC1B,0HAAA,oBAAoB,OAAA;AAErB,gDAAgD;AAChD,oFAAiF;AAAzE,wIAAA,0BAA0B,OAAA;AAClC,sFAAmF;AAA3E,0IAAA,2BAA2B,OAAA;AACnC,oFAAiF;AAAzE,wIAAA,0BAA0B,OAAA;AAClC,+EAA4E;AAApE,oIAAA,wBAAwB,OAAA;AAChC,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,+EAA4E;AAApE,4IAAA,4BAA4B,OAAA;AACpC,sFAAmF;AAA3E,wIAAA,0BAA0B,OAAA;AAClC,2BAA2B;AAC3B,0EAI2C;AAF1C,yHAAA,iBAAiB,OAAA;AAGlB,oFAAiF;AAAzE,sIAAA,yBAAyB,OAAA"}
@@ -0,0 +1,24 @@
1
+ import { IRestrictionManager } from "@shapediver/viewer.rendering-engine.intersection-restriction-engine";
2
+ import { vec3 } from "gl-matrix";
3
+ import { DeletionInteractionHandler } from "../handlers/DeletionInteractionHandler";
4
+ import { InsertionInteractionHandler } from "../handlers/InsertionInteractionHandler";
5
+ import { MidPointInteractionHandler } from "../handlers/MidPointInteractionHandler";
6
+ import { InteractionManagerHelper } from "../helpers/InteractionManagerHelper";
7
+ /**
8
+ * Interface that strategies can use to interact with the manager
9
+ * without accessing private properties
10
+ */
11
+ export interface IInteractionManagerForStrategy {
12
+ readonly deletionInteractionHandler: DeletionInteractionHandler;
13
+ readonly insertionInteractionHandler: InsertionInteractionHandler;
14
+ readonly midPointInteractionHandler: MidPointInteractionHandler;
15
+ readonly restrictionManager: IRestrictionManager;
16
+ readonly interactionManagerHelper: InteractionManagerHelper;
17
+ startInsertion(): vec3 | undefined;
18
+ stopInsertion(): void;
19
+ deleteSelection(): void;
20
+ getCameraFreezeFlag(): string;
21
+ setCameraFreezeFlag(): void;
22
+ setLastEvent(event: PointerEvent): void;
23
+ }
24
+ //# sourceMappingURL=IInteractionManagerForStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IInteractionManagerForStrategy.d.ts","sourceRoot":"","sources":["../../../../../../src/business/implementation/managers/interaction/interfaces/IInteractionManagerForStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,qEAAqE,CAAC;AACxG,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,2BAA2B,EAAC,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,wBAAwB,EAAC,MAAM,qCAAqC,CAAC;AAE7E;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE,QAAQ,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;IAClE,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IACjD,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAG5D,cAAc,IAAI,IAAI,GAAG,SAAS,CAAC;IACnC,aAAa,IAAI,IAAI,CAAC;IACtB,eAAe,IAAI,IAAI,CAAC;IACxB,mBAAmB,IAAI,MAAM,CAAC;IAC9B,mBAAmB,IAAI,IAAI,CAAC;IAC5B,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CACxC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IInteractionManagerForStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IInteractionManagerForStrategy.js","sourceRoot":"","sources":["../../../../../../src/business/implementation/managers/interaction/interfaces/IInteractionManagerForStrategy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Example: Using Mobile Detection with Drawing Tools
3
+ *
4
+ * This example demonstrates how the refactored InteractionManager automatically
5
+ * detects mobile platforms and provides the appropriate interaction experience.
6
+ */
7
+ import { InteractionManagerRefactored } from "./InteractionManagerRefactored";
8
+ /**
9
+ * Initialize drawing tools with automatic mobile detection
10
+ */
11
+ export declare function initializeDrawingToolsWithMobileSupport(drawingToolsManager: any): InteractionManagerRefactored;
12
+ /**
13
+ * Run tests to verify mobile detection is working
14
+ */
15
+ export declare function verifyMobileDetection(drawingToolsManager: any): boolean;
16
+ /**
17
+ * Example usage in your application
18
+ */
19
+ export declare function exampleUsage(): void;
20
+ /**
21
+ * Manual platform override (for testing purposes)
22
+ */
23
+ export declare function createInteractionManagerForSpecificPlatform(drawingToolsManager: any, forceMobile?: boolean): InteractionManagerRefactored;
24
+ //# sourceMappingURL=mobile-detection-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-detection-example.d.ts","sourceRoot":"","sources":["../../../../../src/business/implementation/managers/interaction/mobile-detection-example.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAC;AAG5E;;GAEG;AACH,wBAAgB,uCAAuC,CACtD,mBAAmB,EAAE,GAAG,gCA4BxB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,mBAAmB,EAAE,GAAG,WAa7D;AAED;;GAEG;AACH,wBAAgB,YAAY,SAgB3B;AAED;;GAEG;AACH,wBAAgB,2CAA2C,CAC1D,mBAAmB,EAAE,GAAG,EACxB,WAAW,GAAE,OAAe,gCAkC5B"}