@vizejs/fresco 0.712.0 → 0.714.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.
- package/dist/accessibility-D1R9HiTE.d.mts +40 -0
- package/dist/accessibility-D1R9HiTE.d.mts.map +1 -0
- package/dist/{app-D1EmYPR5.mjs → app-DoXcF_Dn.mjs} +23 -8
- package/dist/app-DoXcF_Dn.mjs.map +1 -0
- package/dist/{app-BnHjO4sM.d.mts → app-adHHi99c.d.mts} +2 -2
- package/dist/{app-BnHjO4sM.d.mts.map → app-adHHi99c.d.mts.map} +1 -1
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +2 -2
- package/dist/{components-CqGU-NNE.mjs → components-DWIDBGTL.mjs} +299 -4
- package/dist/components-DWIDBGTL.mjs.map +1 -0
- package/dist/composables/index.d.mts +3 -2
- package/dist/composables/index.mjs +4 -4
- package/dist/{composables-CZLZwicA.mjs → composables-b_R5s4QQ.mjs} +3 -3
- package/dist/{composables-CZLZwicA.mjs.map → composables-b_R5s4QQ.mjs.map} +1 -1
- package/dist/{index-DqiuvriA.d.mts → index-B-asCcvK.d.mts} +20 -2
- package/dist/index-B-asCcvK.d.mts.map +1 -0
- package/dist/{index-DHSs5acI.d.mts → index-Ck5VFXgP.d.mts} +103 -34
- package/dist/index-Ck5VFXgP.d.mts.map +1 -0
- package/dist/index.d.mts +7 -5
- package/dist/index.mjs +5 -5
- package/dist/{accessibility-CsJ09kle.d.mts → protocol--xy80nuC.d.mts} +5 -25
- package/dist/protocol--xy80nuC.d.mts.map +1 -0
- package/dist/testing/index.d.mts +2 -1
- package/dist/testing/index.d.mts.map +1 -1
- package/dist/testing/index.mjs +1 -1
- package/dist/{useInput-BmjmkjZ9.mjs → useVirtualViewport-CcJuIc7U.mjs} +113 -4
- package/dist/useVirtualViewport-CcJuIc7U.mjs.map +1 -0
- package/dist/useVirtualViewport-TxTapifg.d.mts +49 -0
- package/dist/useVirtualViewport-TxTapifg.d.mts.map +1 -0
- package/package.json +11 -6
- package/dist/accessibility-CsJ09kle.d.mts.map +0 -1
- package/dist/app-D1EmYPR5.mjs.map +0 -1
- package/dist/components-CqGU-NNE.mjs.map +0 -1
- package/dist/index-DHSs5acI.d.mts.map +0 -1
- package/dist/index-DqiuvriA.d.mts.map +0 -1
- package/dist/useInput-BmjmkjZ9.mjs.map +0 -1
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { Ref, RendererElement, RendererNode } from "vue";
|
|
2
|
-
|
|
3
1
|
//#region src/protocol.d.ts
|
|
4
2
|
/** Public JavaScript protocol shared by Fresco components and the renderer. */
|
|
5
3
|
type FrescoRenderNodeKind = "root" | "box" | "text" | "input";
|
|
@@ -158,11 +156,14 @@ interface ResizeEvent {
|
|
|
158
156
|
width: number;
|
|
159
157
|
height: number;
|
|
160
158
|
}
|
|
159
|
+
type FrescoMouseEventKind = "down" | "up" | "drag" | "moved" | "scroll-up" | "scroll-down" | "scroll-left" | "scroll-right";
|
|
161
160
|
interface MouseEvent {
|
|
162
161
|
type: "mouse";
|
|
162
|
+
kind?: FrescoMouseEventKind;
|
|
163
163
|
button?: string;
|
|
164
164
|
x: number;
|
|
165
165
|
y: number;
|
|
166
|
+
modifiers?: FrescoModifiers;
|
|
166
167
|
}
|
|
167
168
|
interface FocusEvent {
|
|
168
169
|
type: "focus";
|
|
@@ -177,26 +178,5 @@ type FrescoInputEvent = StrictUnion<KeyEvent | PasteEvent | ResizeEvent | MouseE
|
|
|
177
178
|
/** Compatibility alias for the pre-protocol event union name. */
|
|
178
179
|
type InputEvent = FrescoInputEvent;
|
|
179
180
|
//#endregion
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
interface FrescoNode extends RendererNode {
|
|
183
|
-
id: number;
|
|
184
|
-
type: FrescoRenderNodeKind;
|
|
185
|
-
props: Record<string, unknown>;
|
|
186
|
-
children: FrescoNode[];
|
|
187
|
-
parent: FrescoNode | null;
|
|
188
|
-
text?: string;
|
|
189
|
-
}
|
|
190
|
-
/** @internal Mutable Vue host element; not part of the public render protocol. */
|
|
191
|
-
interface FrescoElement extends FrescoNode, RendererElement {}
|
|
192
|
-
/**
|
|
193
|
-
* Create the Fresco renderer
|
|
194
|
-
*/
|
|
195
|
-
declare function createRenderer$1(): import("vue").Renderer<FrescoElement>;
|
|
196
|
-
//#endregion
|
|
197
|
-
//#region src/accessibility.d.ts
|
|
198
|
-
type AriaRole = "button" | "checkbox" | "combobox" | "list" | "listbox" | "listitem" | "menu" | "menuitem" | "option" | "progressbar" | "radio" | "radiogroup" | "tab" | "tablist" | "table" | "textbox" | "timer" | "toolbar";
|
|
199
|
-
type AriaState = Partial<Record<"busy" | "checked" | "disabled" | "expanded" | "multiline" | "multiselectable" | "readonly" | "required" | "selected", boolean>>;
|
|
200
|
-
//#endregion
|
|
201
|
-
export { FrescoStyle as A, FrescoOverflow as C, FrescoRenderStyle as D, FrescoRenderNodeKind as E, KeyEventType as F, MouseEvent as I, PasteEvent as L, FrescoTextWrapMode as M, InputEvent as N, FrescoRootRenderNode as O, KeyEvent as P, ResizeEvent as R, FrescoModifiers as S, FrescoRenderNode as T, FrescoFlexDirection as _, createRenderer$1 as a, FrescoInputRenderNode as b, FrescoAlignContent as c, FrescoAppearance as d, FrescoBorderStyle as f, FrescoDisplay as g, FrescoDimension as h, FrescoNode as i, FrescoTextRenderNode as j, FrescoSnakeStyleAliases as k, FrescoAlignItems as l, FrescoCanonicalStyle as m, AriaState as n, CompositionEvent as o, FrescoBoxRenderNode as p, FrescoElement as r, FocusEvent as s, AriaRole as t, FrescoAlignSelf as u, FrescoFlexWrap as v, FrescoPosition as w, FrescoJustifyContent as x, FrescoInputEvent as y };
|
|
202
|
-
//# sourceMappingURL=accessibility-CsJ09kle.d.mts.map
|
|
181
|
+
export { KeyEvent as A, FrescoRenderStyle as C, FrescoTextRenderNode as D, FrescoStyle as E, MouseEvent as M, PasteEvent as N, FrescoTextWrapMode as O, ResizeEvent as P, FrescoRenderNodeKind as S, FrescoSnakeStyleAliases as T, FrescoModifiers as _, FrescoAlignSelf as a, FrescoPosition as b, FrescoBoxRenderNode as c, FrescoDisplay as d, FrescoFlexDirection as f, FrescoJustifyContent as g, FrescoInputRenderNode as h, FrescoAlignItems as i, KeyEventType as j, InputEvent as k, FrescoCanonicalStyle as l, FrescoInputEvent as m, FocusEvent as n, FrescoAppearance as o, FrescoFlexWrap as p, FrescoAlignContent as r, FrescoBorderStyle as s, CompositionEvent as t, FrescoDimension as u, FrescoMouseEventKind as v, FrescoRootRenderNode as w, FrescoRenderNode as x, FrescoOverflow as y };
|
|
182
|
+
//# sourceMappingURL=protocol--xy80nuC.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol--xy80nuC.d.mts","names":[],"sources":["../src/protocol.ts"],"mappings":"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"}
|
package/dist/testing/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as KeyEvent, M as MouseEvent, x as FrescoRenderNode } from "../protocol--xy80nuC.mjs";
|
|
2
|
+
import { i as FrescoNode, n as AriaState, r as FrescoElement, t as AriaRole } from "../accessibility-D1R9HiTE.mjs";
|
|
2
3
|
import { r as FocusManager, t as UseAppReturn } from "../useApp-CVB2jNCO.mjs";
|
|
3
4
|
import { App, Component, Ref, VNodeChild } from "vue";
|
|
4
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/testing/mount.ts","../../src/testing/queries.ts","../../src/testing/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/testing/mount.ts","../../src/testing/queries.ts","../../src/testing/index.ts"],"mappings":"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"}
|
package/dist/testing/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as APP_KEY, T as createFocusManager, a as lastMouseEvent, d as treeToRenderNodes, g as createCursorContext, h as CURSOR_KEY, i as lastKeyEvent, j as SCREEN_READER_KEY, k as createAppContext, n as lastCompositionEvent, o as lastPasteEvent, r as lastFocusEvent, s as lastResizeEvent, u as createRenderer$1, v as STREAMS_KEY, w as FOCUS_KEY, y as createStreamsContext } from "../app-
|
|
1
|
+
import { O as APP_KEY, T as createFocusManager, a as lastMouseEvent, d as treeToRenderNodes, g as createCursorContext, h as CURSOR_KEY, i as lastKeyEvent, j as SCREEN_READER_KEY, k as createAppContext, n as lastCompositionEvent, o as lastPasteEvent, r as lastFocusEvent, s as lastResizeEvent, u as createRenderer$1, v as STREAMS_KEY, w as FOCUS_KEY, y as createStreamsContext } from "../app-DoXcF_Dn.mjs";
|
|
2
2
|
import { h, nextTick, ref } from "vue";
|
|
3
3
|
//#region src/testing/mount.ts
|
|
4
4
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as useStreamsContext, M as isScreenReaderEnabledByDefault, i as lastKeyEvent, j as SCREEN_READER_KEY, n as lastCompositionEvent, o as lastPasteEvent } from "./app-
|
|
2
|
-
import { inject, isRef, onUnmounted, ref, watch } from "vue";
|
|
1
|
+
import { C as useStreamsContext, M as isScreenReaderEnabledByDefault, a as lastMouseEvent, i as lastKeyEvent, j as SCREEN_READER_KEY, n as lastCompositionEvent, o as lastPasteEvent } from "./app-DoXcF_Dn.mjs";
|
|
2
|
+
import { computed, inject, isRef, onUnmounted, ref, watch } from "vue";
|
|
3
3
|
//#region src/composables/useIsScreenReaderEnabled.ts
|
|
4
4
|
/**
|
|
5
5
|
* useIsScreenReaderEnabled - screen reader mode flag.
|
|
@@ -214,6 +214,115 @@ function useKeyPress(key, handler, options = {}) {
|
|
|
214
214
|
} });
|
|
215
215
|
}
|
|
216
216
|
//#endregion
|
|
217
|
-
|
|
217
|
+
//#region src/composables/useMouse.ts
|
|
218
|
+
/** Mouse and wheel input handling for focused Fresco surfaces. */
|
|
219
|
+
/** Subscribe to normalized mouse actions, including wheel direction. */
|
|
220
|
+
function useMouse(handler, options = {}) {
|
|
221
|
+
const externalIsActive = isRef(options.isActive) ? options.isActive : void 0;
|
|
222
|
+
const locallyEnabled = ref(externalIsActive ? true : options.isActive ?? true);
|
|
223
|
+
const isActive = computed(() => locallyEnabled.value && (externalIsActive?.value ?? true));
|
|
224
|
+
return {
|
|
225
|
+
isActive,
|
|
226
|
+
enable: () => {
|
|
227
|
+
locallyEnabled.value = true;
|
|
228
|
+
},
|
|
229
|
+
disable: () => {
|
|
230
|
+
locallyEnabled.value = false;
|
|
231
|
+
},
|
|
232
|
+
stop: watch(lastMouseEvent, (event) => {
|
|
233
|
+
if (event && isActive.value) handler(event);
|
|
234
|
+
}, { flush: "sync" })
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//#endregion
|
|
238
|
+
//#region src/composables/useVirtualViewport.ts
|
|
239
|
+
/** Bounded viewport state for large terminal collections. */
|
|
240
|
+
function count(value, name) {
|
|
241
|
+
if (!Number.isSafeInteger(value) || value < 0) throw new RangeError(`${name} must be a non-negative safe integer`);
|
|
242
|
+
return value;
|
|
243
|
+
}
|
|
244
|
+
/** Create viewport state whose retained range scales with visible rows, not item count. */
|
|
245
|
+
function createVirtualViewport(options) {
|
|
246
|
+
const itemCount = ref(count(options.itemCount, "itemCount"));
|
|
247
|
+
const viewportSize = ref(count(options.viewportSize, "viewportSize"));
|
|
248
|
+
const overscan = ref(count(options.overscan ?? 2, "overscan"));
|
|
249
|
+
const offset = ref(0);
|
|
250
|
+
const maxOffset = computed(() => Math.max(0, itemCount.value - viewportSize.value));
|
|
251
|
+
const atStart = computed(() => offset.value === 0);
|
|
252
|
+
const atEnd = computed(() => offset.value === maxOffset.value);
|
|
253
|
+
const range = computed(() => {
|
|
254
|
+
const visibleStart = Math.min(offset.value, itemCount.value);
|
|
255
|
+
const visibleEnd = Math.min(itemCount.value, visibleStart + viewportSize.value);
|
|
256
|
+
return {
|
|
257
|
+
visibleStart,
|
|
258
|
+
visibleEnd,
|
|
259
|
+
overscanStart: Math.max(0, visibleStart - overscan.value),
|
|
260
|
+
overscanEnd: Math.min(itemCount.value, visibleEnd + overscan.value)
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
const scrollTo = (value) => {
|
|
264
|
+
const next = Math.min(maxOffset.value, count(value, "offset"));
|
|
265
|
+
if (next === offset.value) return false;
|
|
266
|
+
offset.value = next;
|
|
267
|
+
return true;
|
|
268
|
+
};
|
|
269
|
+
const clamp = () => scrollTo(Math.min(offset.value, maxOffset.value));
|
|
270
|
+
const setItemCount = (value) => {
|
|
271
|
+
const next = count(value, "itemCount");
|
|
272
|
+
if (next === itemCount.value) return false;
|
|
273
|
+
itemCount.value = next;
|
|
274
|
+
clamp();
|
|
275
|
+
return true;
|
|
276
|
+
};
|
|
277
|
+
const setViewportSize = (value) => {
|
|
278
|
+
const next = count(value, "viewportSize");
|
|
279
|
+
if (next === viewportSize.value) return false;
|
|
280
|
+
viewportSize.value = next;
|
|
281
|
+
clamp();
|
|
282
|
+
return true;
|
|
283
|
+
};
|
|
284
|
+
const setOverscan = (value) => {
|
|
285
|
+
const next = count(value, "overscan");
|
|
286
|
+
if (next === overscan.value) return false;
|
|
287
|
+
overscan.value = next;
|
|
288
|
+
return true;
|
|
289
|
+
};
|
|
290
|
+
const scrollBy = (delta) => {
|
|
291
|
+
if (!Number.isSafeInteger(delta)) throw new RangeError("delta must be a safe integer");
|
|
292
|
+
return scrollTo(Math.max(0, offset.value + delta));
|
|
293
|
+
};
|
|
294
|
+
const scrollIntoView = (index, alignment = "nearest") => {
|
|
295
|
+
count(index, "index");
|
|
296
|
+
if (index >= itemCount.value || viewportSize.value === 0) return false;
|
|
297
|
+
let next = offset.value;
|
|
298
|
+
if (alignment === "start") next = index;
|
|
299
|
+
else if (alignment === "center") next = Math.max(0, index - Math.floor(viewportSize.value / 2));
|
|
300
|
+
else if (alignment === "end") next = Math.max(0, index + 1 - viewportSize.value);
|
|
301
|
+
else if (index < offset.value) next = index;
|
|
302
|
+
else if (index >= offset.value + viewportSize.value) next = index + 1 - viewportSize.value;
|
|
303
|
+
return scrollTo(next);
|
|
304
|
+
};
|
|
305
|
+
scrollTo(options.initialOffset ?? 0);
|
|
306
|
+
return {
|
|
307
|
+
itemCount,
|
|
308
|
+
viewportSize,
|
|
309
|
+
overscan,
|
|
310
|
+
offset,
|
|
311
|
+
maxOffset,
|
|
312
|
+
atStart,
|
|
313
|
+
atEnd,
|
|
314
|
+
range,
|
|
315
|
+
setItemCount,
|
|
316
|
+
setViewportSize,
|
|
317
|
+
setOverscan,
|
|
318
|
+
scrollTo,
|
|
319
|
+
scrollBy,
|
|
320
|
+
scrollIntoView
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/** Composition API alias for {@link createVirtualViewport}. */
|
|
324
|
+
const useVirtualViewport = createVirtualViewport;
|
|
325
|
+
//#endregion
|
|
326
|
+
export { useKeyPress as a, useInput as i, useVirtualViewport as n, usePaste as o, useMouse as r, useIsScreenReaderEnabled as s, createVirtualViewport as t };
|
|
218
327
|
|
|
219
|
-
//# sourceMappingURL=
|
|
328
|
+
//# sourceMappingURL=useVirtualViewport-CcJuIc7U.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualViewport-CcJuIc7U.mjs","names":["toRef"],"sources":["../src/composables/useIsScreenReaderEnabled.ts","../src/composables/usePaste.ts","../src/composables/useInput.ts","../src/composables/useMouse.ts","../src/composables/useVirtualViewport.ts"],"sourcesContent":["/**\n * useIsScreenReaderEnabled - screen reader mode flag.\n */\n\nimport { inject } from \"vue\";\nimport { SCREEN_READER_KEY, isScreenReaderEnabledByDefault } from \"../accessibility.js\";\n\nexport function useIsScreenReaderEnabled(): boolean {\n const enabled = inject(SCREEN_READER_KEY, null);\n return enabled?.value ?? isScreenReaderEnabledByDefault();\n}\n","/**\n * usePaste - bracketed paste handling.\n */\n\nimport { isRef, onUnmounted, ref, watch, type Ref } from \"vue\";\nimport { lastPasteEvent } from \"../app.js\";\nimport { useStreamsContext } from \"./useStreams.js\";\n\nlet activePasteHandlerCount = 0;\n\nexport interface UsePasteOptions {\n /** Whether the paste handler is active */\n isActive?: boolean | Ref<boolean>;\n}\n\nexport function hasActivePasteHandlers(): boolean {\n return activePasteHandlerCount > 0;\n}\n\nfunction toRef(value: boolean | Ref<boolean>): Ref<boolean> {\n return isRef(value) ? value : ref(value);\n}\n\nexport function usePaste(handler: (text: string) => void, options: UsePasteOptions = {}) {\n const isActive = toRef(options.isActive ?? true);\n const streams = useStreamsContext();\n let rawModeEnabled = false;\n let bracketedPasteEnabled = false;\n let pasteHandlerRegistered = false;\n\n const syncRawMode = (isEnabled: boolean) => {\n if (rawModeEnabled === isEnabled) return;\n streams.setRawMode(isEnabled);\n rawModeEnabled = isEnabled;\n };\n\n const syncBracketedPasteMode = (isEnabled: boolean) => {\n if (bracketedPasteEnabled === isEnabled) return;\n streams.setBracketedPasteMode(isEnabled);\n bracketedPasteEnabled = isEnabled;\n };\n\n const syncPasteRegistration = (isEnabled: boolean) => {\n if (pasteHandlerRegistered === isEnabled) return;\n activePasteHandlerCount += isEnabled ? 1 : -1;\n pasteHandlerRegistered = isEnabled;\n };\n\n const syncActiveState = (isEnabled: boolean) => {\n syncRawMode(isEnabled);\n syncBracketedPasteMode(isEnabled);\n syncPasteRegistration(isEnabled);\n };\n\n watch(lastPasteEvent, (event) => {\n if (!event || !isActive.value) return;\n handler(event.text);\n });\n\n watch(isActive, syncActiveState, { immediate: true });\n onUnmounted(() => syncActiveState(false));\n\n return {\n isActive,\n enable: () => {\n isActive.value = true;\n },\n disable: () => {\n isActive.value = false;\n },\n };\n}\n","/**\n * useInput - Input handling composable\n */\n\nimport { isRef, onUnmounted, ref, watch, type Ref } from \"vue\";\nimport { lastCompositionEvent, lastKeyEvent, lastPasteEvent, type KeyEvent } from \"../app.js\";\nimport { hasActivePasteHandlers } from \"./usePaste.js\";\nimport { useStreamsContext } from \"./useStreams.js\";\n\nexport interface Key {\n upArrow: boolean;\n downArrow: boolean;\n leftArrow: boolean;\n rightArrow: boolean;\n pageDown: boolean;\n pageUp: boolean;\n home: boolean;\n end: boolean;\n return: boolean;\n escape: boolean;\n ctrl: boolean;\n shift: boolean;\n tab: boolean;\n backspace: boolean;\n delete: boolean;\n meta: boolean;\n super: boolean;\n hyper: boolean;\n capsLock: boolean;\n numLock: boolean;\n eventType?: \"press\" | \"repeat\" | \"release\";\n}\n\nexport interface KeyHandler {\n (key: string, modifiers: { ctrl: boolean; alt: boolean; shift: boolean; meta: boolean }): void;\n}\n\nexport interface UseInputOptions {\n /** Whether to capture input (boolean or Ref<boolean>) */\n active?: boolean | Ref<boolean>;\n /** Whether to capture input (alias for active, boolean or Ref<boolean>) */\n isActive?: boolean | Ref<boolean>;\n /** Ink-compatible input callback */\n handler?: (input: string, key: Key) => void;\n /** Called on key press */\n onKey?: KeyHandler;\n /** Called on character input */\n onChar?: (char: string) => void;\n /** Called on Enter */\n onSubmit?: () => void;\n /** Called on Escape */\n onEscape?: () => void;\n /** Called on arrow keys */\n onArrow?: (direction: \"up\" | \"down\" | \"left\" | \"right\") => void;\n /** Called when an IME composition starts */\n onCompositionStart?: () => void;\n /** Called when IME preedit text changes */\n onCompositionUpdate?: (text: string, cursor: number) => void;\n /** Called when IME commits text */\n onCompositionEnd?: (text: string) => void;\n}\n\nexport interface UseInputReturn {\n isActive: Ref<boolean>;\n lastKey: Ref<string | null>;\n enable: () => void;\n disable: () => void;\n}\n\nexport type InputHandler = (input: string, key: Key) => void;\n\nexport interface UseInputHandlerOptions {\n isActive?: boolean | Ref<boolean>;\n}\n\nfunction toRef(value: boolean | Ref<boolean>): Ref<boolean> {\n return isRef(value) ? value : ref(value);\n}\n\nfunction keyName(event: KeyEvent): string {\n return event.char ?? event.key ?? \"\";\n}\n\nfunction toInkKey(event: KeyEvent): Key {\n const key = event.key;\n\n return {\n upArrow: key === \"up\",\n downArrow: key === \"down\",\n leftArrow: key === \"left\",\n rightArrow: key === \"right\",\n pageDown: key === \"pagedown\" || key === \"pageDown\",\n pageUp: key === \"pageup\" || key === \"pageUp\",\n home: key === \"home\",\n end: key === \"end\",\n return: key === \"enter\" || key === \"return\",\n escape: key === \"escape\" || key === \"esc\",\n ctrl: event.ctrl,\n shift: event.shift,\n tab: key === \"tab\" || key === \"backtab\",\n backspace: key === \"backspace\",\n delete: key === \"delete\",\n meta: event.meta,\n super: event.super,\n hyper: event.hyper,\n capsLock: event.capsLock,\n numLock: event.numLock,\n eventType: event.eventType,\n };\n}\n\nfunction emptyKey(): Key {\n return {\n upArrow: false,\n downArrow: false,\n leftArrow: false,\n rightArrow: false,\n pageDown: false,\n pageUp: false,\n home: false,\n end: false,\n return: false,\n escape: false,\n ctrl: false,\n shift: false,\n tab: false,\n backspace: false,\n delete: false,\n meta: false,\n super: false,\n hyper: false,\n capsLock: false,\n numLock: false,\n };\n}\n\nfunction inputValue(event: KeyEvent, key: Key): string {\n if (event.char) return event.char;\n if (key.return) return \"\\r\";\n return \"\";\n}\n\nfunction handleStructuredOptions(\n event: KeyEvent,\n options: UseInputOptions,\n lastKey: Ref<string | null>,\n) {\n const modifiers = {\n ctrl: event.ctrl,\n alt: event.alt,\n shift: event.shift,\n meta: event.meta,\n };\n const pressedKey = keyName(event);\n const inkKey = toInkKey(event);\n\n if (event.char) {\n lastKey.value = event.char;\n options.onChar?.(event.char);\n options.onKey?.(event.char, modifiers);\n return;\n }\n\n if (pressedKey) {\n lastKey.value = pressedKey;\n options.onKey?.(pressedKey, modifiers);\n }\n\n if (inkKey.return) options.onSubmit?.();\n if (inkKey.escape) options.onEscape?.();\n if (inkKey.upArrow) options.onArrow?.(\"up\");\n if (inkKey.downArrow) options.onArrow?.(\"down\");\n if (inkKey.leftArrow) options.onArrow?.(\"left\");\n if (inkKey.rightArrow) options.onArrow?.(\"right\");\n}\n\nexport function useInput(handler: InputHandler, options?: UseInputHandlerOptions): UseInputReturn;\nexport function useInput(options?: UseInputOptions): UseInputReturn;\nexport function useInput(\n handlerOrOptions: InputHandler | UseInputOptions = {},\n handlerOptions: UseInputHandlerOptions = {},\n): UseInputReturn {\n const options =\n typeof handlerOrOptions === \"function\"\n ? { handler: handlerOrOptions, isActive: handlerOptions.isActive }\n : handlerOrOptions;\n\n const activeSource = options.isActive ?? options.active ?? true;\n const isActive = toRef(activeSource);\n const lastKey = ref<string | null>(null);\n const streams = useStreamsContext();\n let rawModeEnabled = false;\n\n const syncRawMode = (isEnabled: boolean) => {\n if (rawModeEnabled === isEnabled) return;\n streams.setRawMode(isEnabled);\n rawModeEnabled = isEnabled;\n };\n\n watch(lastKeyEvent, (event) => {\n if (!event || !isActive.value) return;\n\n const inkKey = toInkKey(event);\n const input = inputValue(event, inkKey);\n const pressedKey = keyName(event);\n\n if (input === \"c\" && inkKey.ctrl && streams.internal_exitOnCtrlC) return;\n\n lastKey.value = pressedKey || null;\n options.handler?.(input, inkKey);\n handleStructuredOptions(event, options, lastKey);\n });\n\n watch(lastPasteEvent, (event) => {\n if (!event || !isActive.value || hasActivePasteHandlers()) return;\n\n lastKey.value = event.text;\n options.handler?.(event.text, emptyKey());\n options.onChar?.(event.text);\n });\n\n watch(lastCompositionEvent, (event) => {\n if (!event || !isActive.value) return;\n\n if (event.type === \"compositionstart\") {\n options.onCompositionStart?.();\n } else if (event.type === \"compositionupdate\") {\n options.onCompositionUpdate?.(event.text, event.cursor);\n } else {\n options.onCompositionEnd?.(event.text);\n }\n });\n\n watch(isActive, syncRawMode, { immediate: true });\n onUnmounted(() => syncRawMode(false));\n\n const enable = () => {\n isActive.value = true;\n };\n\n const disable = () => {\n isActive.value = false;\n };\n\n return {\n isActive,\n lastKey,\n enable,\n disable,\n };\n}\n\n/**\n * Shorthand for handling specific key combinations\n */\nexport function useKeyPress(\n key: string,\n handler: () => void,\n options: { ctrl?: boolean; alt?: boolean; shift?: boolean; meta?: boolean } = {},\n) {\n const { ctrl = false, alt = false, shift = false, meta = false } = options;\n\n useInput({\n onKey: (pressedKey, modifiers) => {\n const matches =\n pressedKey.toLowerCase() === key.toLowerCase() &&\n modifiers.ctrl === ctrl &&\n modifiers.alt === alt &&\n modifiers.shift === shift &&\n modifiers.meta === meta;\n\n if (matches) {\n handler();\n }\n },\n });\n}\n","/** Mouse and wheel input handling for focused Fresco surfaces. */\n\nimport { computed, isRef, ref, watch, type Ref } from \"vue\";\nimport { lastMouseEvent } from \"../app.js\";\nimport type { MouseEvent } from \"../protocol.js\";\n\nexport interface UseMouseOptions {\n /** Whether the handler receives events. */\n isActive?: boolean | Readonly<Ref<boolean>>;\n}\n\nexport interface UseMouseReturn {\n isActive: Readonly<Ref<boolean>>;\n /** Start delivering normalized mouse events. */\n enable: () => void;\n /** Stop delivering normalized mouse events. */\n disable: () => void;\n /** Unsubscribe the handler from the shared mouse event stream. */\n stop: () => void;\n}\n\n/** Subscribe to normalized mouse actions, including wheel direction. */\nexport function useMouse(\n handler: (event: MouseEvent) => void,\n options: UseMouseOptions = {},\n): UseMouseReturn {\n const externalIsActive = isRef(options.isActive) ? options.isActive : undefined;\n const locallyEnabled = ref(externalIsActive ? true : (options.isActive ?? true));\n const isActive = computed(() => locallyEnabled.value && (externalIsActive?.value ?? true));\n\n const stop = watch(\n lastMouseEvent,\n (event) => {\n if (event && isActive.value) handler(event);\n },\n { flush: \"sync\" },\n );\n\n return {\n isActive,\n enable: () => {\n locallyEnabled.value = true;\n },\n disable: () => {\n locallyEnabled.value = false;\n },\n stop,\n };\n}\n","/** Bounded viewport state for large terminal collections. */\n\nimport { computed, ref, type ComputedRef, type Ref } from \"vue\";\n\nexport type VirtualScrollAlignment = \"nearest\" | \"start\" | \"center\" | \"end\";\n\nexport interface VirtualViewportRange {\n /** First item occupying the viewport. */\n visibleStart: number;\n /** Exclusive end of items occupying the viewport. */\n visibleEnd: number;\n /** First retained item, including leading overscan. */\n overscanStart: number;\n /** Exclusive end of retained items, including trailing overscan. */\n overscanEnd: number;\n}\n\nexport interface VirtualViewportOptions {\n itemCount: number;\n viewportSize: number;\n overscan?: number;\n initialOffset?: number;\n}\n\nexport interface VirtualViewport {\n readonly itemCount: Readonly<Ref<number>>;\n readonly viewportSize: Readonly<Ref<number>>;\n readonly overscan: Readonly<Ref<number>>;\n readonly offset: Readonly<Ref<number>>;\n readonly maxOffset: ComputedRef<number>;\n readonly atStart: ComputedRef<boolean>;\n readonly atEnd: ComputedRef<boolean>;\n readonly range: ComputedRef<VirtualViewportRange>;\n /** Replace the collection size and clamp the current offset. */\n setItemCount(value: number): boolean;\n /** Replace the visible row count and clamp the current offset. */\n setViewportSize(value: number): boolean;\n /** Replace the number of retained rows on each side of the viewport. */\n setOverscan(value: number): boolean;\n /** Move to an absolute, bounded offset. */\n scrollTo(offset: number): boolean;\n /** Move by a signed row delta. */\n scrollBy(delta: number): boolean;\n /** Reveal one item using the requested viewport alignment. */\n scrollIntoView(index: number, alignment?: VirtualScrollAlignment): boolean;\n}\n\nfunction count(value: number, name: string): number {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new RangeError(`${name} must be a non-negative safe integer`);\n }\n return value;\n}\n\n/** Create viewport state whose retained range scales with visible rows, not item count. */\nexport function createVirtualViewport(options: VirtualViewportOptions): VirtualViewport {\n const itemCount = ref(count(options.itemCount, \"itemCount\"));\n const viewportSize = ref(count(options.viewportSize, \"viewportSize\"));\n const overscan = ref(count(options.overscan ?? 2, \"overscan\"));\n const offset = ref(0);\n const maxOffset = computed(() => Math.max(0, itemCount.value - viewportSize.value));\n const atStart = computed(() => offset.value === 0);\n const atEnd = computed(() => offset.value === maxOffset.value);\n const range = computed<VirtualViewportRange>(() => {\n const visibleStart = Math.min(offset.value, itemCount.value);\n const visibleEnd = Math.min(itemCount.value, visibleStart + viewportSize.value);\n return {\n visibleStart,\n visibleEnd,\n overscanStart: Math.max(0, visibleStart - overscan.value),\n overscanEnd: Math.min(itemCount.value, visibleEnd + overscan.value),\n };\n });\n\n const scrollTo = (value: number) => {\n const next = Math.min(maxOffset.value, count(value, \"offset\"));\n if (next === offset.value) return false;\n offset.value = next;\n return true;\n };\n const clamp = () => scrollTo(Math.min(offset.value, maxOffset.value));\n\n const setItemCount = (value: number) => {\n const next = count(value, \"itemCount\");\n if (next === itemCount.value) return false;\n itemCount.value = next;\n clamp();\n return true;\n };\n const setViewportSize = (value: number) => {\n const next = count(value, \"viewportSize\");\n if (next === viewportSize.value) return false;\n viewportSize.value = next;\n clamp();\n return true;\n };\n const setOverscan = (value: number) => {\n const next = count(value, \"overscan\");\n if (next === overscan.value) return false;\n overscan.value = next;\n return true;\n };\n const scrollBy = (delta: number) => {\n if (!Number.isSafeInteger(delta)) throw new RangeError(\"delta must be a safe integer\");\n return scrollTo(Math.max(0, offset.value + delta));\n };\n const scrollIntoView = (index: number, alignment: VirtualScrollAlignment = \"nearest\") => {\n count(index, \"index\");\n if (index >= itemCount.value || viewportSize.value === 0) return false;\n let next = offset.value;\n if (alignment === \"start\") next = index;\n else if (alignment === \"center\") next = Math.max(0, index - Math.floor(viewportSize.value / 2));\n else if (alignment === \"end\") next = Math.max(0, index + 1 - viewportSize.value);\n else if (index < offset.value) next = index;\n else if (index >= offset.value + viewportSize.value) {\n next = index + 1 - viewportSize.value;\n }\n return scrollTo(next);\n };\n\n scrollTo(options.initialOffset ?? 0);\n\n return {\n itemCount,\n viewportSize,\n overscan,\n offset,\n maxOffset,\n atStart,\n atEnd,\n range,\n setItemCount,\n setViewportSize,\n setOverscan,\n scrollTo,\n scrollBy,\n scrollIntoView,\n };\n}\n\n/** Composition API alias for {@link createVirtualViewport}. */\nexport const useVirtualViewport = createVirtualViewport;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ComputedRef, Ref } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/composables/useVirtualViewport.d.ts
|
|
4
|
+
type VirtualScrollAlignment = "nearest" | "start" | "center" | "end";
|
|
5
|
+
interface VirtualViewportRange {
|
|
6
|
+
/** First item occupying the viewport. */
|
|
7
|
+
visibleStart: number;
|
|
8
|
+
/** Exclusive end of items occupying the viewport. */
|
|
9
|
+
visibleEnd: number;
|
|
10
|
+
/** First retained item, including leading overscan. */
|
|
11
|
+
overscanStart: number;
|
|
12
|
+
/** Exclusive end of retained items, including trailing overscan. */
|
|
13
|
+
overscanEnd: number;
|
|
14
|
+
}
|
|
15
|
+
interface VirtualViewportOptions {
|
|
16
|
+
itemCount: number;
|
|
17
|
+
viewportSize: number;
|
|
18
|
+
overscan?: number;
|
|
19
|
+
initialOffset?: number;
|
|
20
|
+
}
|
|
21
|
+
interface VirtualViewport {
|
|
22
|
+
readonly itemCount: Readonly<Ref<number>>;
|
|
23
|
+
readonly viewportSize: Readonly<Ref<number>>;
|
|
24
|
+
readonly overscan: Readonly<Ref<number>>;
|
|
25
|
+
readonly offset: Readonly<Ref<number>>;
|
|
26
|
+
readonly maxOffset: ComputedRef<number>;
|
|
27
|
+
readonly atStart: ComputedRef<boolean>;
|
|
28
|
+
readonly atEnd: ComputedRef<boolean>;
|
|
29
|
+
readonly range: ComputedRef<VirtualViewportRange>;
|
|
30
|
+
/** Replace the collection size and clamp the current offset. */
|
|
31
|
+
setItemCount(value: number): boolean;
|
|
32
|
+
/** Replace the visible row count and clamp the current offset. */
|
|
33
|
+
setViewportSize(value: number): boolean;
|
|
34
|
+
/** Replace the number of retained rows on each side of the viewport. */
|
|
35
|
+
setOverscan(value: number): boolean;
|
|
36
|
+
/** Move to an absolute, bounded offset. */
|
|
37
|
+
scrollTo(offset: number): boolean;
|
|
38
|
+
/** Move by a signed row delta. */
|
|
39
|
+
scrollBy(delta: number): boolean;
|
|
40
|
+
/** Reveal one item using the requested viewport alignment. */
|
|
41
|
+
scrollIntoView(index: number, alignment?: VirtualScrollAlignment): boolean;
|
|
42
|
+
}
|
|
43
|
+
/** Create viewport state whose retained range scales with visible rows, not item count. */
|
|
44
|
+
declare function createVirtualViewport(options: VirtualViewportOptions): VirtualViewport;
|
|
45
|
+
/** Composition API alias for {@link createVirtualViewport}. */
|
|
46
|
+
declare const useVirtualViewport: typeof createVirtualViewport;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { createVirtualViewport as a, VirtualViewportRange as i, VirtualViewport as n, useVirtualViewport as o, VirtualViewportOptions as r, VirtualScrollAlignment as t };
|
|
49
|
+
//# sourceMappingURL=useVirtualViewport-TxTapifg.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualViewport-TxTapifg.d.mts","names":[],"sources":["../src/composables/useVirtualViewport.ts"],"mappings":";;;KAIY,sBAAA;AAAA,UAEK,oBAAA;EAFiB;EAIhC,YAAA;EAJgC;EAMhC,UAAA;EAJe;EAMf,aAAA;;EAEA,WAAA;AAAA;AAAA,UAGe,sBAAA;EACf,SAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;AAAA;AAAA,UAGe,eAAA;EAAA,SACN,SAAA,EAAW,QAAA,CAAS,GAAA;EAAA,SACpB,YAAA,EAAc,QAAA,CAAS,GAAA;EAAA,SACvB,QAAA,EAAU,QAAA,CAAS,GAAA;EAAA,SACnB,MAAA,EAAQ,QAAA,CAAS,GAAA;EAAA,SACjB,SAAA,EAAW,WAAA;EAAA,SACX,OAAA,EAAS,WAAA;EAAA,SACT,KAAA,EAAO,WAAA;EAAA,SACP,KAAA,EAAO,WAAA,CAAY,oBAAA;EARb;EAUf,YAAA,CAAa,KAAA;;EAEb,eAAA,CAAgB,KAAA;EAXI;EAapB,WAAA,CAAY,KAAA;EAZW;EAcvB,QAAA,CAAS,MAAA;EAbU;EAenB,QAAA,CAAS,KAAA;EAdQ;EAgBjB,cAAA,CAAe,KAAA,UAAe,SAAA,GAAY,sBAAA;AAAA;;iBAW5B,qBAAA,CAAsB,OAAA,EAAS,sBAAA,GAAyB,eAAe;;cAsF1E,kBAAA,SAAkB,qBAAwB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vizejs/fresco",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.714.0",
|
|
4
4
|
"description": "Vue TUI framework - Build terminal UIs with Vue.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -49,14 +49,19 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@vizejs/fresco-native": "0.
|
|
52
|
+
"@vizejs/fresco-native": "0.714.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/node": "25.9.2",
|
|
56
|
+
"@vitejs/plugin-vue": "6.0.7",
|
|
57
|
+
"@vue/compiler-sfc": "3.5.35",
|
|
58
|
+
"happy-dom": "21.0.4",
|
|
56
59
|
"tsx": "4.23.12",
|
|
57
60
|
"typescript": "6.0.3",
|
|
58
61
|
"vite-plus": "0.1.24",
|
|
59
|
-
"
|
|
62
|
+
"vitest": "npm:@voidzero-dev/vite-plus-test@0.1.24",
|
|
63
|
+
"vue": "3.5.35",
|
|
64
|
+
"vue-tsc": "3.3.11"
|
|
60
65
|
},
|
|
61
66
|
"peerDependencies": {
|
|
62
67
|
"vue": "^3.4.0"
|
|
@@ -73,10 +78,10 @@
|
|
|
73
78
|
"scripts": {
|
|
74
79
|
"build": "vp pack",
|
|
75
80
|
"dev": "vp pack --watch",
|
|
76
|
-
"check": "vp check src vite.config.ts && tsc --noEmit -p tsconfig.json",
|
|
81
|
+
"check": "vp check src vite.config.ts && vue-tsc --noEmit -p tsconfig.json && vue-tsc --noEmit -p tsconfig.examples.json",
|
|
77
82
|
"check:fix": "vp check --fix src vite.config.ts",
|
|
78
|
-
"check:types": "tsc --noEmit -p tsconfig.json",
|
|
83
|
+
"check:types": "vue-tsc --noEmit -p tsconfig.json && vue-tsc --noEmit -p tsconfig.examples.json",
|
|
79
84
|
"fmt": "vp fmt --write src vite.config.ts",
|
|
80
|
-
"test": "vp
|
|
85
|
+
"test": "vp test run"
|
|
81
86
|
}
|
|
82
87
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accessibility-CsJ09kle.d.mts","names":[],"sources":["../src/protocol.ts","../src/renderer.ts","../src/accessibility.ts"],"mappings":"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"}
|