@vizejs/ui 0.345.0 → 0.350.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.
Files changed (96) hide show
  1. package/dist/{button-D7sM9Xmj.d.mts → button-CVX8UBXj.d.mts} +6 -7
  2. package/dist/{button-8BOlFJNu.mjs → button-DT8AKlds.mjs} +2 -2
  3. package/dist/button.d.mts +1 -1
  4. package/dist/button.mjs +1 -1
  5. package/dist/catalog.d.mts +541 -0
  6. package/dist/catalog.mjs +784 -0
  7. package/dist/{checkbox-B4y9GUen.mjs → checkbox-BgIvwjyC.mjs} +2 -2
  8. package/dist/{checkbox-DkwZFC80.d.mts → checkbox-DP3_ko7D.d.mts} +7 -8
  9. package/dist/checkbox.d.mts +1 -1
  10. package/dist/checkbox.mjs +1 -1
  11. package/dist/collection-B_dFZOHO.d.mts +185 -0
  12. package/dist/collection-eHN150dT.mjs +453 -0
  13. package/dist/collection.d.mts +2 -0
  14. package/dist/collection.mjs +2 -0
  15. package/dist/composite-navigation-QINW9GLy.d.mts +115 -0
  16. package/dist/composite-navigation-Skx3LZsv.mjs +354 -0
  17. package/dist/composite-navigation.d.mts +2 -0
  18. package/dist/composite-navigation.mjs +2 -0
  19. package/dist/controllable-state.d.mts +1 -1
  20. package/dist/dismissable-layer-4icKahVs.d.mts +119 -0
  21. package/dist/dismissable-layer-CwG1gtdz.mjs +488 -0
  22. package/dist/dismissable-layer.d.mts +2 -0
  23. package/dist/dismissable-layer.mjs +2 -0
  24. package/dist/focus-CAWi_I-0.mjs +318 -0
  25. package/dist/focus-K6dOifoZ.d.mts +112 -0
  26. package/dist/focus-guards-Bt0C-0qS.d.mts +81 -0
  27. package/dist/focus-guards-DhMPQAT8.mjs +299 -0
  28. package/dist/focus-guards.d.mts +2 -0
  29. package/dist/focus-guards.mjs +2 -0
  30. package/dist/focus-scope-CavhKWx0.d.mts +100 -0
  31. package/dist/focus-scope-D9U1aj67.mjs +340 -0
  32. package/dist/focus-scope-dom-DBwNEWxG.mjs +264 -0
  33. package/dist/focus-scope.d.mts +2 -0
  34. package/dist/focus-scope.mjs +2 -0
  35. package/dist/focus.d.mts +2 -0
  36. package/dist/focus.mjs +2 -0
  37. package/dist/hover-BXwwbSaO.d.mts +80 -0
  38. package/dist/hover.d.mts +2 -0
  39. package/dist/hover.mjs +197 -0
  40. package/dist/id-5OAUyVPd.d.mts +126 -0
  41. package/dist/id-mziSyAse.mjs +137 -0
  42. package/dist/id.d.mts +2 -0
  43. package/dist/id.mjs +2 -0
  44. package/dist/index.d.mts +23 -6
  45. package/dist/index.mjs +21 -5
  46. package/dist/inert-outside-CyqtoKQ4.mjs +346 -0
  47. package/dist/inert-outside-tuHRmaqJ.d.mts +43 -0
  48. package/dist/inert-outside.d.mts +2 -0
  49. package/dist/inert-outside.mjs +2 -0
  50. package/dist/interaction-modality-DOZK0BpZ.mjs +304 -0
  51. package/dist/interaction-modality-jgHKjPFB.d.mts +89 -0
  52. package/dist/interaction-modality.d.mts +2 -0
  53. package/dist/interaction-modality.mjs +2 -0
  54. package/dist/long-press-Dsul69gk.mjs +340 -0
  55. package/dist/long-press-cll6z2K9.d.mts +105 -0
  56. package/dist/long-press.d.mts +2 -0
  57. package/dist/long-press.mjs +2 -0
  58. package/dist/media-pdf.d.mts +1 -1
  59. package/dist/media-pdf.mjs +1 -1
  60. package/dist/media.d.mts +1 -1
  61. package/dist/media.mjs +1 -1
  62. package/dist/move-BOmXDYbh.d.mts +103 -0
  63. package/dist/move-BVvMHzxr.mjs +386 -0
  64. package/dist/move.d.mts +2 -0
  65. package/dist/move.mjs +2 -0
  66. package/dist/press-N_mE3Mgx.mjs +469 -0
  67. package/dist/press-event-Cd2OPpmw.mjs +149 -0
  68. package/dist/press-types-CNqStzJf.d.mts +112 -0
  69. package/dist/press.d.mts +14 -0
  70. package/dist/press.mjs +2 -0
  71. package/dist/{primitive-DJB7pOf3.mjs → primitive-BX31dogp.mjs} +2 -2
  72. package/dist/{primitive-BtvwikH1.d.mts → primitive-C8jW7DLd.d.mts} +3 -4
  73. package/dist/primitive.d.mts +1 -1
  74. package/dist/primitive.mjs +1 -1
  75. package/dist/scroll-lock-BgVtX4wT.d.mts +49 -0
  76. package/dist/scroll-lock-Ckbmm0-J.mjs +313 -0
  77. package/dist/scroll-lock.d.mts +2 -0
  78. package/dist/scroll-lock.mjs +2 -0
  79. package/dist/spatial-navigation-CHj9mDZH.d.mts +106 -0
  80. package/dist/spatial-navigation-D6-UDavU.mjs +301 -0
  81. package/dist/spatial-navigation.d.mts +2 -0
  82. package/dist/spatial-navigation.mjs +2 -0
  83. package/dist/typeahead-B7KDxE_u.mjs +175 -0
  84. package/dist/typeahead-BbgUB2Bj.d.mts +71 -0
  85. package/dist/typeahead.d.mts +2 -0
  86. package/dist/typeahead.mjs +2 -0
  87. package/dist/visually-hidden-BOqfqBFt.d.mts +17 -0
  88. package/dist/{visually-hidden-QENRapzW.mjs → visually-hidden-BwDOx5yf.mjs} +2 -2
  89. package/dist/visually-hidden.d.mts +1 -1
  90. package/dist/visually-hidden.mjs +1 -1
  91. package/package.json +99 -11
  92. package/dist/visually-hidden-BegtnMng.d.mts +0 -19
  93. /package/dist/{_plugin-vue_export-helper-BVN2DL-U.mjs → _plugin-vue_export-helper-BOaGB7Aw.mjs} +0 -0
  94. /package/dist/{controllable-state-DXsYJ3yl.d.mts → controllable-state-BtoxKahh.d.mts} +0 -0
  95. /package/dist/{pdf-source-COxN3A1l.d.mts → pdf-source-BYFK2Pks.d.mts} +0 -0
  96. /package/dist/{pdf-source-C52YE8tp.mjs → pdf-source-zu1LkCeE.mjs} +0 -0
@@ -0,0 +1,386 @@
1
+ import { a as isPrimaryPointer, n as disableTextSelection, r as eventElement } from "./press-event-Cd2OPpmw.mjs";
2
+ import { getCurrentScope, onScopeDispose, shallowReadonly, shallowRef, toValue } from "vue";
3
+ //#region src/move-internal.ts
4
+ const invalidOptionDiagnostic = "VIZE_UI_MOVE_OPTION";
5
+ function readBoolean(value) {
6
+ const resolved = toValue(value);
7
+ if (resolved === void 0) return false;
8
+ if (typeof resolved !== "boolean") throw new TypeError(`${invalidOptionDiagnostic}: isDisabled must resolve to a boolean`);
9
+ return resolved;
10
+ }
11
+ function readKeyboardStep(value) {
12
+ const resolved = toValue(value) ?? 1;
13
+ if (typeof resolved !== "number" || !Number.isFinite(resolved) || resolved <= 0) throw new TypeError(`${invalidOptionDiagnostic}: keyboardStep must resolve to a finite number > 0`);
14
+ return resolved;
15
+ }
16
+ function modifier(event, key) {
17
+ return event && key in event ? Boolean(event[key]) : false;
18
+ }
19
+ function positionOf(event, touchId = null) {
20
+ if ("pageX" in event && "pageY" in event) {
21
+ const x = Number(event.pageX);
22
+ const y = Number(event.pageY);
23
+ if (Number.isFinite(x) && Number.isFinite(y)) return {
24
+ x,
25
+ y
26
+ };
27
+ }
28
+ if ("clientX" in event && "clientY" in event) {
29
+ const x = Number(event.clientX);
30
+ const y = Number(event.clientY);
31
+ if (Number.isFinite(x) && Number.isFinite(y)) return {
32
+ x,
33
+ y
34
+ };
35
+ }
36
+ if ("changedTouches" in event) {
37
+ const touch = Array.from(event.changedTouches).find(({ identifier }) => touchId === null || identifier === touchId);
38
+ if (touch) return {
39
+ x: touch.pageX,
40
+ y: touch.pageY
41
+ };
42
+ }
43
+ return null;
44
+ }
45
+ function pointerTypeOf(event) {
46
+ if (event.pointerType === "mouse" || event.pointerType === "pen") return event.pointerType;
47
+ if (event.pointerType === "touch") return "touch";
48
+ return "pointer";
49
+ }
50
+ function createMoveEvent(type, target, pointerType, originalEvent, deltaX = 0, deltaY = 0, isCanceled = false, touchId = null) {
51
+ const position = originalEvent ? positionOf(originalEvent, touchId) : null;
52
+ return Object.freeze({
53
+ type,
54
+ pointerType,
55
+ target,
56
+ originalEvent,
57
+ x: position?.x ?? null,
58
+ y: position?.y ?? null,
59
+ deltaX,
60
+ deltaY,
61
+ altKey: modifier(originalEvent, "altKey"),
62
+ ctrlKey: modifier(originalEvent, "ctrlKey"),
63
+ metaKey: modifier(originalEvent, "metaKey"),
64
+ shiftKey: modifier(originalEvent, "shiftKey"),
65
+ isCanceled
66
+ });
67
+ }
68
+ function surfaceErrors(errors, message) {
69
+ if (errors.length === 1) throw errors[0];
70
+ if (errors.length < 2) return;
71
+ const Aggregate = globalThis.AggregateError;
72
+ if (typeof Aggregate === "function") throw new Aggregate(errors, message);
73
+ const fallback = Object.assign(new Error(message), { errors: [...errors] });
74
+ fallback.name = "AggregateError";
75
+ throw fallback;
76
+ }
77
+ function capture(errors, callback) {
78
+ try {
79
+ callback();
80
+ } catch (error) {
81
+ errors.push(error);
82
+ }
83
+ }
84
+ function validateOptions(options) {
85
+ for (const name of [
86
+ "onMove",
87
+ "onMoveEnd",
88
+ "onMoveStart"
89
+ ]) {
90
+ const callback = options[name];
91
+ if (callback !== void 0 && typeof callback !== "function") throw new TypeError(`${invalidOptionDiagnostic}: ${name} must be a function`);
92
+ }
93
+ if (typeof options.keyboardStep !== "function") readKeyboardStep(options.keyboardStep);
94
+ }
95
+ /** Install and exhaustively clean up the document listeners for one pointer family. */
96
+ function installMoveListeners(document, source, context) {
97
+ const removals = [];
98
+ const listen = (owner, type, callback, capture = true) => {
99
+ owner.addEventListener(type, callback, capture);
100
+ removals.push(() => owner.removeEventListener(type, callback, capture));
101
+ };
102
+ const matches = (family, id) => {
103
+ const current = context.getActive();
104
+ return current?.source === family && current.id === id ? current : null;
105
+ };
106
+ const pointerMove = (event) => {
107
+ const current = matches("pointer", event.pointerId);
108
+ const position = positionOf(event);
109
+ if (current && position) context.emitDelta(current, event, position);
110
+ };
111
+ const pointerEnd = (event, canceled) => {
112
+ const current = matches("pointer", event.pointerId);
113
+ if (!current) return;
114
+ const disabled = context.readDisabled(event);
115
+ context.finish(event, canceled || disabled || !current.target.isConnected);
116
+ };
117
+ const mouseMove = (event) => {
118
+ const current = matches("mouse", null);
119
+ const position = positionOf(event);
120
+ if (current && position) context.emitDelta(current, event, position);
121
+ };
122
+ const mouseUp = (event) => {
123
+ const current = matches("mouse", null);
124
+ if (event.button === 0 && current) context.finish(event, context.readDisabled(event) || !current.target.isConnected);
125
+ };
126
+ const touchMove = (event) => {
127
+ const candidate = context.getActive();
128
+ const current = candidate?.source === "touch" ? candidate : null;
129
+ const position = current ? positionOf(event, current.id) : null;
130
+ if (current && position) context.emitDelta(current, event, position);
131
+ };
132
+ const touchEnd = (event, canceled) => {
133
+ const candidate = context.getActive();
134
+ const current = candidate?.source === "touch" ? candidate : null;
135
+ if (!current || !positionOf(event, current.id)) return;
136
+ context.rememberTouch(event.timeStamp);
137
+ context.finish(event, canceled || context.readDisabled(event) || !current.target.isConnected);
138
+ };
139
+ try {
140
+ if (source === "pointer") {
141
+ listen(document, "pointermove", pointerMove);
142
+ listen(document, "pointerup", ((event) => pointerEnd(event, false)));
143
+ listen(document, "pointercancel", ((event) => pointerEnd(event, true)));
144
+ } else if (source === "mouse") {
145
+ listen(document, "mousemove", mouseMove);
146
+ listen(document, "mouseup", mouseUp);
147
+ } else {
148
+ listen(document, "touchmove", touchMove);
149
+ listen(document, "touchend", ((event) => touchEnd(event, false)));
150
+ listen(document, "touchcancel", ((event) => touchEnd(event, true)));
151
+ }
152
+ listen(document, "dragstart", (event) => context.finish(event, true));
153
+ listen(document, "visibilitychange", (() => {
154
+ if (document.visibilityState === "hidden") context.finish(null, true);
155
+ }));
156
+ if (document.defaultView) listen(document.defaultView, "blur", (event) => context.finish(event, true), false);
157
+ } catch (error) {
158
+ const errors = [error];
159
+ for (const remove of removals.reverse()) capture(errors, remove);
160
+ surfaceErrors(errors, "Move listener setup failed");
161
+ throw error;
162
+ }
163
+ let released = false;
164
+ return () => {
165
+ if (released) return;
166
+ released = true;
167
+ const errors = [];
168
+ for (const remove of removals) capture(errors, remove);
169
+ surfaceErrors(errors, "Move listener cleanup failed");
170
+ };
171
+ }
172
+ //#endregion
173
+ //#region src/move.ts
174
+ const disposedDiagnostic = "VIZE_UI_MOVE_DISPOSED";
175
+ const setupDiagnostic = "VIZE_UI_MOVE_SETUP";
176
+ /** Create an SSR-safe mouse, pen, touch, and keyboard move normalizer. */
177
+ function createMove(options = {}) {
178
+ validateOptions(options);
179
+ const moving = shallowRef(false);
180
+ let active = null;
181
+ let keyboard = null;
182
+ let disposed = false;
183
+ let lastTouchTime = Number.NEGATIVE_INFINITY;
184
+ const finish = (originalEvent, isCanceled) => {
185
+ const current = active;
186
+ if (!current) return false;
187
+ active = null;
188
+ moving.value = false;
189
+ const errors = [];
190
+ capture(errors, current.releaseListeners);
191
+ capture(errors, current.restoreSelection);
192
+ if (current.didMove) capture(errors, () => options.onMoveEnd?.(createMoveEvent("moveend", current.target, current.pointerType, originalEvent, 0, 0, isCanceled, current.source === "touch" ? current.id : null)));
193
+ surfaceErrors(errors, "Move completion failed");
194
+ return true;
195
+ };
196
+ const readDisabledDuringActive = (event) => {
197
+ try {
198
+ return readBoolean(options.isDisabled);
199
+ } catch (error) {
200
+ const errors = [error];
201
+ capture(errors, () => finish(event, true));
202
+ surfaceErrors(errors, "Move option validation failed during teardown");
203
+ throw error;
204
+ }
205
+ };
206
+ const finishKeyboard = (originalEvent, isCanceled) => {
207
+ const current = keyboard;
208
+ if (!current) return false;
209
+ keyboard = null;
210
+ moving.value = false;
211
+ options.onMoveEnd?.(createMoveEvent("moveend", current.target, "keyboard", originalEvent, 0, 0, isCanceled));
212
+ return true;
213
+ };
214
+ const emitDelta = (current, event, position) => {
215
+ if (active !== current) return;
216
+ current.lastEvent = event;
217
+ if (readDisabledDuringActive(event) || !current.target.isConnected) {
218
+ finish(event, true);
219
+ return;
220
+ }
221
+ const deltaX = position.x - current.position.x;
222
+ const deltaY = position.y - current.position.y;
223
+ current.position = position;
224
+ if (deltaX === 0 && deltaY === 0) return;
225
+ event.preventDefault();
226
+ const errors = [];
227
+ if (!current.didMove) {
228
+ current.didMove = true;
229
+ moving.value = true;
230
+ capture(errors, () => options.onMoveStart?.(createMoveEvent("movestart", current.target, current.pointerType, event, 0, 0, false, current.source === "touch" ? current.id : null)));
231
+ }
232
+ if (active === current && !disposed) capture(errors, () => options.onMove?.(createMoveEvent("move", current.target, current.pointerType, event, deltaX, deltaY, false, current.source === "touch" ? current.id : null)));
233
+ surfaceErrors(errors, "Move callbacks failed");
234
+ };
235
+ const matches = (source, id) => {
236
+ const current = active;
237
+ return current?.source === source && current.id === id ? current : null;
238
+ };
239
+ const start = (event, source, pointerType, id, position) => {
240
+ if (disposed || active || readBoolean(options.isDisabled)) return;
241
+ const target = eventElement(event);
242
+ if (!target) return;
243
+ event.preventDefault();
244
+ event.stopPropagation();
245
+ let releaseListeners = () => void 0;
246
+ let restoreSelection = () => void 0;
247
+ try {
248
+ releaseListeners = installMoveListeners(target.ownerDocument, source, {
249
+ emitDelta,
250
+ finish,
251
+ getActive: () => active,
252
+ readDisabled: readDisabledDuringActive,
253
+ rememberTouch: (timeStamp) => {
254
+ lastTouchTime = timeStamp;
255
+ }
256
+ });
257
+ restoreSelection = disableTextSelection(target);
258
+ } catch (error) {
259
+ const errors = [error];
260
+ capture(errors, releaseListeners);
261
+ capture(errors, restoreSelection);
262
+ surfaceErrors(errors, "Move start cleanup failed");
263
+ throw error;
264
+ }
265
+ active = {
266
+ id,
267
+ pointerType,
268
+ releaseListeners,
269
+ restoreSelection,
270
+ source,
271
+ target,
272
+ didMove: false,
273
+ lastEvent: event,
274
+ position
275
+ };
276
+ };
277
+ const keyboardMove = (event, deltaX, deltaY) => {
278
+ if (disposed || active || keyboard || readBoolean(options.isDisabled)) return;
279
+ const target = eventElement(event);
280
+ if (!target || event.target !== target) return;
281
+ event.preventDefault();
282
+ event.stopPropagation();
283
+ const step = readKeyboardStep(options.keyboardStep);
284
+ const errors = [];
285
+ const current = { target };
286
+ keyboard = current;
287
+ moving.value = true;
288
+ capture(errors, () => options.onMoveStart?.(createMoveEvent("movestart", target, "keyboard", event)));
289
+ if (keyboard === current && !disposed) capture(errors, () => options.onMove?.(createMoveEvent("move", target, "keyboard", event, deltaX * step, deltaY * step)));
290
+ if (keyboard === current && !disposed) capture(errors, () => finishKeyboard(event, false));
291
+ surfaceErrors(errors, "Keyboard move callbacks failed");
292
+ };
293
+ const moveProps = Object.freeze({
294
+ onDragstart(event) {
295
+ if (active?.target === eventElement(event)) finish(event, true);
296
+ },
297
+ onKeydown(event) {
298
+ if (event.isComposing || event.altKey || event.ctrlKey || event.metaKey) return;
299
+ switch (event.key) {
300
+ case "Left":
301
+ case "ArrowLeft":
302
+ keyboardMove(event, -1, 0);
303
+ break;
304
+ case "Right":
305
+ case "ArrowRight":
306
+ keyboardMove(event, 1, 0);
307
+ break;
308
+ case "Up":
309
+ case "ArrowUp":
310
+ keyboardMove(event, 0, -1);
311
+ break;
312
+ case "Down":
313
+ case "ArrowDown":
314
+ keyboardMove(event, 0, 1);
315
+ break;
316
+ }
317
+ },
318
+ onMousedown(event) {
319
+ if (event.button !== 0 || active || event.view && "PointerEvent" in event.view) return;
320
+ const elapsed = event.timeStamp - lastTouchTime;
321
+ if (elapsed >= 0 && elapsed < 800) return;
322
+ const position = positionOf(event);
323
+ if (position) start(event, "mouse", "mouse", null, position);
324
+ },
325
+ onPointercancel(event) {
326
+ if (matches("pointer", event.pointerId)) finish(event, true);
327
+ },
328
+ onPointerdown(event) {
329
+ if (!isPrimaryPointer(event)) return;
330
+ const position = positionOf(event);
331
+ if (position) start(event, "pointer", pointerTypeOf(event), event.pointerId, position);
332
+ },
333
+ onTouchcancel(event) {
334
+ const current = active?.source === "touch" ? active : null;
335
+ if (current && positionOf(event, current.id)) finish(event, true);
336
+ },
337
+ onTouchend(event) {
338
+ const current = active?.source === "touch" ? active : null;
339
+ if (current && positionOf(event, current.id)) finish(event, false);
340
+ },
341
+ onTouchmove(event) {
342
+ const current = active?.source === "touch" ? active : null;
343
+ const position = current ? positionOf(event, current.id) : null;
344
+ if (current && position) emitDelta(current, event, position);
345
+ },
346
+ onTouchstart(event) {
347
+ lastTouchTime = event.timeStamp;
348
+ if (event.view && "PointerEvent" in event.view || active || event.changedTouches.length !== 1) return;
349
+ const touch = event.changedTouches.item(0);
350
+ if (touch) start(event, "touch", "touch", touch.identifier, {
351
+ x: touch.pageX,
352
+ y: touch.pageY
353
+ });
354
+ }
355
+ });
356
+ return Object.freeze({
357
+ isMoving: shallowReadonly(moving),
358
+ moveProps,
359
+ cancel: () => {
360
+ if (disposed) throw new Error(`${disposedDiagnostic}: the controller has been disposed`);
361
+ return finish(null, true) || finishKeyboard(null, true);
362
+ },
363
+ dispose: () => {
364
+ if (disposed) return;
365
+ disposed = true;
366
+ const current = active;
367
+ active = null;
368
+ keyboard = null;
369
+ moving.value = false;
370
+ if (!current) return;
371
+ const errors = [];
372
+ capture(errors, current.releaseListeners);
373
+ capture(errors, current.restoreSelection);
374
+ surfaceErrors(errors, "Move disposal failed");
375
+ }
376
+ });
377
+ }
378
+ /** Create a move normalizer disposed with the current Vue effect scope. */
379
+ function useMove(options = {}) {
380
+ if (!getCurrentScope()) throw new Error(`${setupDiagnostic}: use inside component setup or an active effect scope`);
381
+ const controller = createMove(options);
382
+ onScopeDispose(controller.dispose);
383
+ return controller;
384
+ }
385
+ //#endregion
386
+ export { useMove as n, createMove as t };
@@ -0,0 +1,2 @@
1
+ import { a as MoveEvent, c as MovePointerType, d as MoveUpdateEvent, i as MoveEndEvent, l as MoveProps, n as useMove, o as MoveEventType, r as MoveController, s as MoveOptions, t as createMove, u as MoveStartEvent } from "./move-BOmXDYbh.mjs";
2
+ export { type MoveController, type MoveEndEvent, type MoveEvent, type MoveEventType, type MoveOptions, type MovePointerType, type MoveProps, type MoveStartEvent, type MoveUpdateEvent, createMove, useMove };
package/dist/move.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import { n as useMove, t as createMove } from "./move-BVvMHzxr.mjs";
2
+ export { createMove, useMove };