@docmentis/udoc-viewer 0.6.21 → 0.6.22

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 (88) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/UDocClient.d.ts +22 -0
  3. package/dist/src/UDocClient.d.ts.map +1 -1
  4. package/dist/src/UDocClient.js +25 -1
  5. package/dist/src/UDocClient.js.map +1 -1
  6. package/dist/src/UDocViewer.d.ts.map +1 -1
  7. package/dist/src/UDocViewer.js +14 -1
  8. package/dist/src/UDocViewer.js.map +1 -1
  9. package/dist/src/ui/viewer/actions.d.ts +12 -1
  10. package/dist/src/ui/viewer/actions.d.ts.map +1 -1
  11. package/dist/src/ui/viewer/components/FloatingToolbar.js +12 -12
  12. package/dist/src/ui/viewer/components/FloatingToolbar.js.map +1 -1
  13. package/dist/src/ui/viewer/components/SubToolbar.d.ts +10 -0
  14. package/dist/src/ui/viewer/components/SubToolbar.d.ts.map +1 -0
  15. package/dist/src/ui/viewer/components/SubToolbar.js +203 -0
  16. package/dist/src/ui/viewer/components/SubToolbar.js.map +1 -0
  17. package/dist/src/ui/viewer/components/Toolbar.d.ts.map +1 -1
  18. package/dist/src/ui/viewer/components/Toolbar.js +144 -4
  19. package/dist/src/ui/viewer/components/Toolbar.js.map +1 -1
  20. package/dist/src/ui/viewer/components/ViewModeMenu.js +3 -3
  21. package/dist/src/ui/viewer/components/ViewModeMenu.js.map +1 -1
  22. package/dist/src/ui/viewer/components/Viewport.d.ts.map +1 -1
  23. package/dist/src/ui/viewer/components/Viewport.js +20 -2
  24. package/dist/src/ui/viewer/components/Viewport.js.map +1 -1
  25. package/dist/src/ui/viewer/i18n/ar.d.ts.map +1 -1
  26. package/dist/src/ui/viewer/i18n/ar.js +25 -0
  27. package/dist/src/ui/viewer/i18n/ar.js.map +1 -1
  28. package/dist/src/ui/viewer/i18n/de.d.ts.map +1 -1
  29. package/dist/src/ui/viewer/i18n/de.js +25 -0
  30. package/dist/src/ui/viewer/i18n/de.js.map +1 -1
  31. package/dist/src/ui/viewer/i18n/en.d.ts.map +1 -1
  32. package/dist/src/ui/viewer/i18n/en.js +25 -0
  33. package/dist/src/ui/viewer/i18n/en.js.map +1 -1
  34. package/dist/src/ui/viewer/i18n/es.d.ts.map +1 -1
  35. package/dist/src/ui/viewer/i18n/es.js +25 -0
  36. package/dist/src/ui/viewer/i18n/es.js.map +1 -1
  37. package/dist/src/ui/viewer/i18n/fr.d.ts.map +1 -1
  38. package/dist/src/ui/viewer/i18n/fr.js +25 -0
  39. package/dist/src/ui/viewer/i18n/fr.js.map +1 -1
  40. package/dist/src/ui/viewer/i18n/ja.d.ts.map +1 -1
  41. package/dist/src/ui/viewer/i18n/ja.js +25 -0
  42. package/dist/src/ui/viewer/i18n/ja.js.map +1 -1
  43. package/dist/src/ui/viewer/i18n/ko.d.ts.map +1 -1
  44. package/dist/src/ui/viewer/i18n/ko.js +25 -0
  45. package/dist/src/ui/viewer/i18n/ko.js.map +1 -1
  46. package/dist/src/ui/viewer/i18n/pt-BR.d.ts.map +1 -1
  47. package/dist/src/ui/viewer/i18n/pt-BR.js +25 -0
  48. package/dist/src/ui/viewer/i18n/pt-BR.js.map +1 -1
  49. package/dist/src/ui/viewer/i18n/ru.d.ts.map +1 -1
  50. package/dist/src/ui/viewer/i18n/ru.js +25 -0
  51. package/dist/src/ui/viewer/i18n/ru.js.map +1 -1
  52. package/dist/src/ui/viewer/i18n/types.d.ts +21 -0
  53. package/dist/src/ui/viewer/i18n/types.d.ts.map +1 -1
  54. package/dist/src/ui/viewer/i18n/zh-CN.d.ts.map +1 -1
  55. package/dist/src/ui/viewer/i18n/zh-CN.js +25 -0
  56. package/dist/src/ui/viewer/i18n/zh-CN.js.map +1 -1
  57. package/dist/src/ui/viewer/i18n/zh-TW.d.ts.map +1 -1
  58. package/dist/src/ui/viewer/i18n/zh-TW.js +25 -0
  59. package/dist/src/ui/viewer/i18n/zh-TW.js.map +1 -1
  60. package/dist/src/ui/viewer/icons.d.ts +16 -0
  61. package/dist/src/ui/viewer/icons.d.ts.map +1 -1
  62. package/dist/src/ui/viewer/icons.js +20 -0
  63. package/dist/src/ui/viewer/icons.js.map +1 -1
  64. package/dist/src/ui/viewer/reducer.d.ts.map +1 -1
  65. package/dist/src/ui/viewer/reducer.js +42 -1
  66. package/dist/src/ui/viewer/reducer.js.map +1 -1
  67. package/dist/src/ui/viewer/shell.d.ts.map +1 -1
  68. package/dist/src/ui/viewer/shell.js +13 -2
  69. package/dist/src/ui/viewer/shell.js.map +1 -1
  70. package/dist/src/ui/viewer/state.d.ts +36 -0
  71. package/dist/src/ui/viewer/state.d.ts.map +1 -1
  72. package/dist/src/ui/viewer/state.js +21 -0
  73. package/dist/src/ui/viewer/state.js.map +1 -1
  74. package/dist/src/ui/viewer/styles-inline.d.ts +1 -1
  75. package/dist/src/ui/viewer/styles-inline.d.ts.map +1 -1
  76. package/dist/src/ui/viewer/styles-inline.js +343 -148
  77. package/dist/src/ui/viewer/styles-inline.js.map +1 -1
  78. package/dist/src/ui/viewer/tools/ViewToolController.d.ts +20 -0
  79. package/dist/src/ui/viewer/tools/ViewToolController.d.ts.map +1 -0
  80. package/dist/src/ui/viewer/tools/ViewToolController.js +194 -0
  81. package/dist/src/ui/viewer/tools/ViewToolController.js.map +1 -0
  82. package/dist/src/wasm/udoc.d.ts +3 -3
  83. package/dist/src/wasm/udoc.js +6 -6
  84. package/dist/src/wasm/udoc_bg.wasm +0 -0
  85. package/dist/src/wasm/udoc_bg.wasm.d.ts +3 -3
  86. package/dist/src/worker/worker-inline.js +1 -1
  87. package/dist/src/worker/worker.js +6 -6
  88. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"styles-inline.js","sourceRoot":"","sources":["../../../../src/ui/viewer/styles-inline.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAumF3B,CAAC"}
1
+ {"version":3,"file":"styles-inline.js","sourceRoot":"","sources":["../../../../src/ui/viewer/styles-inline.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0yF3B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * ViewToolController — handles pointer, hand (pan), and zoom tool interactions.
3
+ *
4
+ * Attaches to the viewport scroll area and manages cursor styles and
5
+ * mouse/pointer events based on the currently active tool.
6
+ */
7
+ import type { Store } from "../../framework/store";
8
+ import type { ViewerState } from "../state";
9
+ import type { Action } from "../actions";
10
+ export interface ViewToolControllerOptions {
11
+ /** The scroll container element (overflow: auto) */
12
+ scrollArea: HTMLElement;
13
+ /** The viewer root element (for applying cursor classes) */
14
+ viewerRoot: HTMLElement;
15
+ store: Store<ViewerState, Action>;
16
+ }
17
+ export declare function createViewToolController(options: ViewToolControllerOptions): {
18
+ destroy: () => void;
19
+ };
20
+ //# sourceMappingURL=ViewToolController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewToolController.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/ViewToolController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,yBAAyB;IACtC,oDAAoD;IACpD,UAAU,EAAE,WAAW,CAAC;IACxB,4DAA4D;IAC5D,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC;AAWD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB;mBAoMnD,IAAI;EAU3B"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * ViewToolController — handles pointer, hand (pan), and zoom tool interactions.
3
+ *
4
+ * Attaches to the viewport scroll area and manages cursor styles and
5
+ * mouse/pointer events based on the currently active tool.
6
+ */
7
+ /** CSS class applied to viewer root for each tool cursor */
8
+ const CURSOR_CLASSES = {
9
+ pointer: "",
10
+ hand: "udoc-viewer--tool-hand",
11
+ zoom: "udoc-viewer--tool-zoom",
12
+ };
13
+ const HAND_GRABBING_CLASS = "udoc-viewer--tool-hand-grabbing";
14
+ export function createViewToolController(options) {
15
+ const { scrollArea, viewerRoot, store } = options;
16
+ let currentTool = "pointer";
17
+ let cleanupFn = null;
18
+ // --- Hand tool (drag to pan) ---
19
+ function attachHandTool() {
20
+ let isDragging = false;
21
+ let startX = 0;
22
+ let startY = 0;
23
+ let startScrollLeft = 0;
24
+ let startScrollTop = 0;
25
+ const onPointerDown = (e) => {
26
+ // Only primary button
27
+ if (e.button !== 0)
28
+ return;
29
+ // Don't interfere with interactive elements
30
+ const target = e.target;
31
+ if (target.closest("a, button, input, [role=button]"))
32
+ return;
33
+ isDragging = true;
34
+ startX = e.clientX;
35
+ startY = e.clientY;
36
+ startScrollLeft = scrollArea.scrollLeft;
37
+ startScrollTop = scrollArea.scrollTop;
38
+ viewerRoot.classList.add(HAND_GRABBING_CLASS);
39
+ scrollArea.setPointerCapture(e.pointerId);
40
+ e.preventDefault();
41
+ };
42
+ const onPointerMove = (e) => {
43
+ if (!isDragging)
44
+ return;
45
+ const dx = e.clientX - startX;
46
+ const dy = e.clientY - startY;
47
+ scrollArea.scrollLeft = startScrollLeft - dx;
48
+ scrollArea.scrollTop = startScrollTop - dy;
49
+ };
50
+ const onPointerUp = (e) => {
51
+ if (!isDragging)
52
+ return;
53
+ isDragging = false;
54
+ viewerRoot.classList.remove(HAND_GRABBING_CLASS);
55
+ scrollArea.releasePointerCapture(e.pointerId);
56
+ };
57
+ scrollArea.addEventListener("pointerdown", onPointerDown);
58
+ scrollArea.addEventListener("pointermove", onPointerMove);
59
+ scrollArea.addEventListener("pointerup", onPointerUp);
60
+ scrollArea.addEventListener("pointercancel", onPointerUp);
61
+ return () => {
62
+ scrollArea.removeEventListener("pointerdown", onPointerDown);
63
+ scrollArea.removeEventListener("pointermove", onPointerMove);
64
+ scrollArea.removeEventListener("pointerup", onPointerUp);
65
+ scrollArea.removeEventListener("pointercancel", onPointerUp);
66
+ viewerRoot.classList.remove(HAND_GRABBING_CLASS);
67
+ };
68
+ }
69
+ // --- Zoom tool (click to zoom in, alt+click to zoom out) ---
70
+ function attachZoomTool() {
71
+ const ZOOM_OUT_CLASS = "udoc-viewer--tool-zoom-out";
72
+ const updateZoomCursor = (e) => {
73
+ const out = e.altKey || e.shiftKey;
74
+ viewerRoot.classList.toggle(ZOOM_OUT_CLASS, out);
75
+ };
76
+ const onKeyDown = (e) => updateZoomCursor(e);
77
+ const onKeyUp = (e) => updateZoomCursor(e);
78
+ document.addEventListener("keydown", onKeyDown);
79
+ document.addEventListener("keyup", onKeyUp);
80
+ const onClick = (e) => {
81
+ // Don't interfere with interactive elements
82
+ const target = e.target;
83
+ if (target.closest("a, button, input, [role=button]"))
84
+ return;
85
+ const rect = scrollArea.getBoundingClientRect();
86
+ // Viewport-relative click position (0-1 range)
87
+ const viewX = (e.clientX - rect.left) / rect.width;
88
+ const viewY = (e.clientY - rect.top) / rect.height;
89
+ // Scroll position before zoom
90
+ const prevScrollLeft = scrollArea.scrollLeft;
91
+ const prevScrollTop = scrollArea.scrollTop;
92
+ const prevScrollWidth = scrollArea.scrollWidth;
93
+ const prevScrollHeight = scrollArea.scrollHeight;
94
+ // Alt/Shift+click = zoom out, normal click = zoom in
95
+ if (e.altKey || e.shiftKey) {
96
+ store.dispatch({ type: "ZOOM_OUT" });
97
+ }
98
+ else {
99
+ store.dispatch({ type: "ZOOM_IN" });
100
+ }
101
+ // After zoom dispatched, schedule scroll adjustment to keep click point stable.
102
+ // We use requestAnimationFrame because the layout needs to update first.
103
+ requestAnimationFrame(() => {
104
+ const newScrollWidth = scrollArea.scrollWidth;
105
+ const newScrollHeight = scrollArea.scrollHeight;
106
+ if (prevScrollWidth === 0 || prevScrollHeight === 0)
107
+ return;
108
+ const scaleX = newScrollWidth / prevScrollWidth;
109
+ const scaleY = newScrollHeight / prevScrollHeight;
110
+ // The point under the cursor in the old scroll space
111
+ const pointX = prevScrollLeft + viewX * rect.width;
112
+ const pointY = prevScrollTop + viewY * rect.height;
113
+ // Where that same point is in the new scroll space
114
+ const newPointX = pointX * scaleX;
115
+ const newPointY = pointY * scaleY;
116
+ // Adjust scroll so the point stays under the cursor
117
+ scrollArea.scrollLeft = newPointX - viewX * rect.width;
118
+ scrollArea.scrollTop = newPointY - viewY * rect.height;
119
+ });
120
+ };
121
+ scrollArea.addEventListener("click", onClick);
122
+ return () => {
123
+ scrollArea.removeEventListener("click", onClick);
124
+ document.removeEventListener("keydown", onKeyDown);
125
+ document.removeEventListener("keyup", onKeyUp);
126
+ viewerRoot.classList.remove(ZOOM_OUT_CLASS);
127
+ };
128
+ }
129
+ // --- Cursor and tool switching ---
130
+ function setCursorClass(tool) {
131
+ // Remove all tool cursor classes
132
+ for (const cls of Object.values(CURSOR_CLASSES)) {
133
+ if (cls)
134
+ viewerRoot.classList.remove(cls);
135
+ }
136
+ viewerRoot.classList.remove(HAND_GRABBING_CLASS);
137
+ // Add new one
138
+ const cls = CURSOR_CLASSES[tool];
139
+ if (cls)
140
+ viewerRoot.classList.add(cls);
141
+ }
142
+ function switchTool(tool) {
143
+ if (tool === currentTool)
144
+ return;
145
+ // Teardown previous tool
146
+ if (cleanupFn) {
147
+ cleanupFn();
148
+ cleanupFn = null;
149
+ }
150
+ currentTool = tool;
151
+ setCursorClass(tool);
152
+ // Setup new tool
153
+ switch (tool) {
154
+ case "hand":
155
+ cleanupFn = attachHandTool();
156
+ break;
157
+ case "zoom":
158
+ cleanupFn = attachZoomTool();
159
+ break;
160
+ // "pointer" — default behavior, no extra handlers needed
161
+ }
162
+ }
163
+ // Subscribe to tool state changes
164
+ let prevTool = store.getState().activeTool;
165
+ const unsub = store.subscribeRender((_prev, next) => {
166
+ const tool = next.activeTool;
167
+ if (tool !== prevTool) {
168
+ prevTool = tool;
169
+ // Only handle view tools; tool sets don't affect viewport interaction
170
+ if (tool === "pointer" || tool === "hand" || tool === "zoom") {
171
+ switchTool(tool);
172
+ }
173
+ else {
174
+ // For annotation/markup tool sets, revert to pointer behavior
175
+ switchTool("pointer");
176
+ }
177
+ }
178
+ });
179
+ // Apply initial state
180
+ const initial = store.getState().activeTool;
181
+ if (initial === "hand" || initial === "zoom") {
182
+ switchTool(initial);
183
+ }
184
+ function destroy() {
185
+ unsub();
186
+ if (cleanupFn) {
187
+ cleanupFn();
188
+ cleanupFn = null;
189
+ }
190
+ setCursorClass("pointer");
191
+ }
192
+ return { destroy };
193
+ }
194
+ //# sourceMappingURL=ViewToolController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewToolController.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/ViewToolController.ts"],"names":[],"mappings":"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"}
@@ -783,9 +783,9 @@ export interface InitOutput {
783
783
  readonly wasm_set_visibility_group_visible: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
784
784
  readonly wasm_setup_telemetry: (a: number, b: number, c: number) => void;
785
785
  readonly wasm_viewer_preferences: (a: number, b: number, c: number, d: number) => void;
786
- readonly __wasm_bindgen_func_elem_2710: (a: number, b: number, c: number) => void;
787
- readonly __wasm_bindgen_func_elem_2694: (a: number, b: number) => void;
788
- readonly __wasm_bindgen_func_elem_20199: (a: number, b: number, c: number, d: number) => void;
786
+ readonly __wasm_bindgen_func_elem_2700: (a: number, b: number, c: number) => void;
787
+ readonly __wasm_bindgen_func_elem_2684: (a: number, b: number) => void;
788
+ readonly __wasm_bindgen_func_elem_20725: (a: number, b: number, c: number, d: number) => void;
789
789
  readonly __wbindgen_export: (a: number, b: number) => number;
790
790
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
791
791
  readonly __wbindgen_export3: (a: number) => void;
@@ -259,12 +259,12 @@ if (!('encodeInto' in cachedTextEncoder)) {
259
259
 
260
260
  let WASM_VECTOR_LEN = 0;
261
261
 
262
- function __wasm_bindgen_func_elem_2710(arg0, arg1, arg2) {
263
- wasm.__wasm_bindgen_func_elem_2710(arg0, arg1, addHeapObject(arg2));
262
+ function __wasm_bindgen_func_elem_2700(arg0, arg1, arg2) {
263
+ wasm.__wasm_bindgen_func_elem_2700(arg0, arg1, addHeapObject(arg2));
264
264
  }
265
265
 
266
- function __wasm_bindgen_func_elem_20199(arg0, arg1, arg2, arg3) {
267
- wasm.__wasm_bindgen_func_elem_20199(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
266
+ function __wasm_bindgen_func_elem_20725(arg0, arg1, arg2, arg3) {
267
+ wasm.__wasm_bindgen_func_elem_20725(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
268
268
  }
269
269
 
270
270
  const __wbindgen_enum_GpuBufferBindingType = ["uniform", "storage", "read-only-storage"];
@@ -1990,7 +1990,7 @@ function __wbg_get_imports() {
1990
1990
  const a = state0.a;
1991
1991
  state0.a = 0;
1992
1992
  try {
1993
- return __wasm_bindgen_func_elem_20199(a, state0.b, arg0, arg1);
1993
+ return __wasm_bindgen_func_elem_20725(a, state0.b, arg0, arg1);
1994
1994
  } finally {
1995
1995
  state0.a = a;
1996
1996
  }
@@ -2472,7 +2472,7 @@ function __wbg_get_imports() {
2472
2472
  };
2473
2473
  imports.wbg.__wbindgen_cast_9d97beea3493d3db = function(arg0, arg1) {
2474
2474
  // Cast intrinsic for `Closure(Closure { dtor_idx: 212, function: Function { arguments: [Externref], shim_idx: 213, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
2475
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_2694, __wasm_bindgen_func_elem_2710);
2475
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_2684, __wasm_bindgen_func_elem_2700);
2476
2476
  return addHeapObject(ret);
2477
2477
  };
2478
2478
  imports.wbg.__wbindgen_cast_cb9088102bce6b30 = function(arg0, arg1) {
Binary file
@@ -48,9 +48,9 @@ export const wasm_set_license: (a: number, b: number, c: number, d: number) => v
48
48
  export const wasm_set_visibility_group_visible: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
49
49
  export const wasm_setup_telemetry: (a: number, b: number, c: number) => void;
50
50
  export const wasm_viewer_preferences: (a: number, b: number, c: number, d: number) => void;
51
- export const __wasm_bindgen_func_elem_2710: (a: number, b: number, c: number) => void;
52
- export const __wasm_bindgen_func_elem_2694: (a: number, b: number) => void;
53
- export const __wasm_bindgen_func_elem_20199: (a: number, b: number, c: number, d: number) => void;
51
+ export const __wasm_bindgen_func_elem_2700: (a: number, b: number, c: number) => void;
52
+ export const __wasm_bindgen_func_elem_2684: (a: number, b: number) => void;
53
+ export const __wasm_bindgen_func_elem_20725: (a: number, b: number, c: number, d: number) => void;
54
54
  export const __wbindgen_export: (a: number, b: number) => number;
55
55
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
56
56
  export const __wbindgen_export3: (a: number) => void;