@vizejs/fresco 0.381.0 → 0.384.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.
@@ -1,4 +1,4 @@
1
- import { E as useFocusManager, T as useFocus, b as useStdin, g as useCursor, k as useApp, x as useStdout, y as useStderr } from "../app-D_Ke7C8w.mjs";
2
- import { i as useIsScreenReaderEnabled, n as useKeyPress, r as usePaste, t as useInput } from "../useInput-BpH-JIU3.mjs";
3
- import { i as useIme, n as useAnimation, r as useWindowSize, t as useBoxMetrics } from "../composables-Da3c5pxz.mjs";
1
+ import { A as useApp, D as useFocusManager, E as useFocus, S as useStdout, _ as useCursor, b as useStderr, x as useStdin } from "../app-BFoESJ4g.mjs";
2
+ import { i as useIsScreenReaderEnabled, n as useKeyPress, r as usePaste, t as useInput } from "../useInput-DLlmSFXF.mjs";
3
+ import { i as useIme, n as useAnimation, r as useWindowSize, t as useBoxMetrics } from "../composables-B8W4GFdO.mjs";
4
4
  export { useAnimation, useApp, useBoxMetrics, useCursor, useFocus, useFocusManager, useIme, useInput, useIsScreenReaderEnabled, useKeyPress, usePaste, useStderr, useStdin, useStdout, useWindowSize };
@@ -1,5 +1,5 @@
1
- import { d as getLastRenderLayout, k as useApp, p as updateLastRenderLayouts } from "./app-D_Ke7C8w.mjs";
2
- import "./useInput-BpH-JIU3.mjs";
1
+ import { A as useApp, f as getLastRenderLayout, m as updateLastRenderLayouts } from "./app-BFoESJ4g.mjs";
2
+ import "./useInput-DLlmSFXF.mjs";
3
3
  import { computed, onMounted, onUnmounted, reactive, ref, watch } from "@vue/runtime-core";
4
4
  //#region src/composables/useIme.ts
5
5
  /**
@@ -316,4 +316,4 @@ function useBoxMetrics(ref) {
316
316
  //#endregion
317
317
  export { useIme as i, useAnimation as n, useWindowSize as r, useBoxMetrics as t };
318
318
 
319
- //# sourceMappingURL=composables-Da3c5pxz.mjs.map
319
+ //# sourceMappingURL=composables-B8W4GFdO.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"composables-Da3c5pxz.mjs","names":[],"sources":["../src/composables/useIme.ts","../src/composables/useWindowSize.ts","../src/composables/useAnimation.ts","../src/composables/useBoxMetrics.ts"],"sourcesContent":["/**\n * useIme - IME (Input Method Editor) composable\n */\n\nimport { ref, computed, type Ref } from \"@vue/runtime-core\";\n\nexport interface UseImeOptions {\n /** Initial IME mode */\n mode?: ImeMode;\n /** Called when IME mode changes */\n onModeChange?: (mode: ImeMode) => void;\n /** Called when composition updates */\n onCompositionUpdate?: (text: string, cursor: number) => void;\n /** Called when text is committed */\n onCommit?: (text: string) => void;\n}\n\nexport type ImeMode =\n | \"direct\"\n | \"hiragana\"\n | \"katakana\"\n | \"half-katakana\"\n | \"full-alpha\"\n | \"pinyin\"\n | \"hangul\";\n\nexport interface ImeManager {\n /** Whether IME is active */\n isActive: Ref<boolean>;\n /** Current input mode */\n mode: Ref<ImeMode>;\n /** Whether currently composing */\n isComposing: Ref<boolean>;\n /** Preedit text */\n preedit: Ref<string>;\n /** Cursor position in preedit */\n preeditCursor: Ref<number>;\n /** Candidate list */\n candidates: Ref<string[]>;\n /** Selected candidate index */\n selectedCandidate: Ref<number>;\n /** Mode display name */\n modeDisplay: Ref<string>;\n /** Enable IME */\n enable: () => void;\n /** Disable IME */\n disable: () => void;\n /** Set input mode */\n setMode: (mode: ImeMode) => void;\n /** Handle key event for IME */\n handleKey: (key: string, modifiers: { ctrl: boolean; alt: boolean }) => boolean;\n /** Commit current composition */\n commit: () => void;\n /** Cancel current composition */\n cancel: () => void;\n /** Select next candidate */\n nextCandidate: () => void;\n /** Select previous candidate */\n prevCandidate: () => void;\n /** Select candidate by number (1-9) */\n selectCandidate: (num: number) => void;\n}\n\nconst MODE_DISPLAY: Record<ImeMode, string> = {\n direct: \"A\",\n hiragana: \"あ\",\n katakana: \"ア\",\n \"half-katakana\": \"ア\",\n \"full-alpha\": \"A\",\n pinyin: \"拼\",\n hangul: \"한\",\n};\n\nexport function useIme(options: UseImeOptions = {}): ImeManager {\n const { mode: initialMode = \"direct\", onModeChange, onCompositionUpdate, onCommit } = options;\n\n const isActive = ref(false);\n const mode = ref<ImeMode>(initialMode);\n const isComposing = ref(false);\n const preedit = ref(\"\");\n const preeditCursor = ref(0);\n const candidates = ref<string[]>([]);\n const selectedCandidate = ref(0);\n\n const modeDisplay = computed(() => MODE_DISPLAY[mode.value] ?? \"A\");\n\n const enable = () => {\n isActive.value = true;\n };\n\n const disable = () => {\n isActive.value = false;\n cancel();\n };\n\n const setMode = (newMode: ImeMode) => {\n if (mode.value !== newMode) {\n cancel();\n mode.value = newMode;\n onModeChange?.(newMode);\n }\n };\n\n const handleKey = (key: string, modifiers: { ctrl: boolean; alt: boolean }): boolean => {\n if (!isActive.value || mode.value === \"direct\") {\n return false;\n }\n\n // IME mode toggle (usually Ctrl+Space or similar)\n // If we're here, mode is not 'direct' (filtered above), so toggle to 'direct'\n if (modifiers.ctrl && key === \" \") {\n setMode(\"direct\");\n return true;\n }\n\n // Handle composition\n if (isComposing.value) {\n switch (key) {\n case \"enter\":\n commit();\n return true;\n case \"escape\":\n cancel();\n return true;\n case \"backspace\":\n if (preedit.value.length > 0) {\n preedit.value = preedit.value.slice(0, -1);\n preeditCursor.value = Math.min(preeditCursor.value, preedit.value.length);\n onCompositionUpdate?.(preedit.value, preeditCursor.value);\n return true;\n }\n break;\n case \"space\":\n // Convert / select candidate\n if (candidates.value.length > 0) {\n nextCandidate();\n return true;\n }\n break;\n }\n\n // Number for candidate selection\n if (/^[1-9]$/.test(key)) {\n selectCandidate(parseInt(key, 10));\n return true;\n }\n }\n\n // Start/continue composition for printable characters\n if (key.length === 1 && !modifiers.ctrl && !modifiers.alt) {\n if (!isComposing.value) {\n isComposing.value = true;\n }\n preedit.value += key;\n preeditCursor.value = preedit.value.length;\n onCompositionUpdate?.(preedit.value, preeditCursor.value);\n return true;\n }\n\n return false;\n };\n\n const commit = () => {\n if (preedit.value) {\n const text = candidates.value[selectedCandidate.value] ?? preedit.value;\n onCommit?.(text);\n }\n preedit.value = \"\";\n preeditCursor.value = 0;\n candidates.value = [];\n selectedCandidate.value = 0;\n isComposing.value = false;\n };\n\n const cancel = () => {\n preedit.value = \"\";\n preeditCursor.value = 0;\n candidates.value = [];\n selectedCandidate.value = 0;\n isComposing.value = false;\n };\n\n const nextCandidate = () => {\n if (candidates.value.length > 0) {\n selectedCandidate.value = (selectedCandidate.value + 1) % candidates.value.length;\n }\n };\n\n const prevCandidate = () => {\n if (candidates.value.length > 0) {\n selectedCandidate.value =\n (selectedCandidate.value - 1 + candidates.value.length) % candidates.value.length;\n }\n };\n\n const selectCandidate = (num: number) => {\n if (num >= 1 && num <= candidates.value.length) {\n selectedCandidate.value = num - 1;\n commit();\n }\n };\n\n return {\n isActive,\n mode,\n isComposing,\n preedit,\n preeditCursor,\n candidates,\n selectedCandidate,\n modeDisplay,\n enable,\n disable,\n setMode,\n handleKey,\n commit,\n cancel,\n nextCandidate,\n prevCandidate,\n selectCandidate,\n };\n}\n","/**\n * useWindowSize - terminal dimensions.\n */\n\nimport { reactive } from \"@vue/runtime-core\";\nimport { useApp } from \"./useApp.js\";\n\nexport interface WindowSize {\n columns: number;\n rows: number;\n}\n\nexport function useWindowSize() {\n const { width, height } = useApp();\n\n return reactive({\n get columns() {\n return width.value;\n },\n get rows() {\n return height.value;\n },\n }) as WindowSize;\n}\n","/**\n * useAnimation - Ink-compatible shared animation state.\n */\n\nimport { computed, onMounted, onUnmounted, reactive, watch } from \"@vue/runtime-core\";\n\nexport interface UseAnimationOptions {\n /** Time between ticks in milliseconds */\n interval?: number;\n /** Whether the animation is running */\n isActive?: boolean;\n}\n\nexport interface AnimationResult {\n frame: number;\n time: number;\n delta: number;\n reset: () => void;\n}\n\nconst defaultAnimationInterval = 100;\nconst maximumTimerInterval = 2_147_483_647;\n\ntype AnimationCallback = (currentTime: number) => void;\n\ninterface AnimationSubscriber {\n callback: AnimationCallback;\n interval: number;\n startTime: number;\n nextDueTime: number;\n}\n\nconst animationSubscribers = new Map<AnimationCallback, AnimationSubscriber>();\nlet animationTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction currentTime(): number {\n return performance.now();\n}\n\nfunction normalizeAnimationInterval(interval: number): number {\n if (!Number.isFinite(interval)) {\n return defaultAnimationInterval;\n }\n\n return Math.min(maximumTimerInterval, Math.max(1, interval));\n}\n\nfunction clearAnimationTimer() {\n if (!animationTimer) return;\n clearTimeout(animationTimer);\n animationTimer = null;\n}\n\nfunction scheduleAnimationTick() {\n clearAnimationTimer();\n if (animationSubscribers.size === 0) return;\n\n let nextDueTime = Number.POSITIVE_INFINITY;\n for (const subscriber of animationSubscribers.values()) {\n nextDueTime = Math.min(nextDueTime, subscriber.nextDueTime);\n }\n\n animationTimer = setTimeout(\n () => {\n animationTimer = null;\n const now = currentTime();\n\n for (const subscriber of animationSubscribers.values()) {\n if (now < subscriber.nextDueTime) continue;\n\n subscriber.callback(now);\n\n const elapsedTime = now - subscriber.startTime;\n const elapsedFrames = Math.floor(elapsedTime / subscriber.interval) + 1;\n subscriber.nextDueTime = subscriber.startTime + elapsedFrames * subscriber.interval;\n }\n\n scheduleAnimationTick();\n },\n Math.max(0, nextDueTime - currentTime()),\n );\n}\n\nfunction subscribeToAnimation(callback: AnimationCallback, interval: number) {\n const startTime = currentTime();\n animationSubscribers.set(callback, {\n callback,\n interval,\n startTime,\n nextDueTime: startTime + interval,\n });\n scheduleAnimationTick();\n\n return {\n startTime,\n unsubscribe() {\n animationSubscribers.delete(callback);\n scheduleAnimationTick();\n },\n };\n}\n\nexport function useAnimation(options: UseAnimationOptions = {}): AnimationResult {\n const safeInterval = computed(() =>\n normalizeAnimationInterval(options.interval ?? defaultAnimationInterval),\n );\n const active = computed(() => options.isActive ?? true);\n let unsubscribe: (() => void) | null = null;\n let startedAt = currentTime();\n let previousTick = startedAt;\n\n const state = reactive<AnimationResult>({\n frame: 0,\n time: 0,\n delta: 0,\n reset: () => {\n if (active.value) {\n start();\n } else {\n resetState(currentTime());\n }\n },\n });\n\n const resetState = (now: number) => {\n startedAt = now;\n previousTick = now;\n state.frame = 0;\n state.time = 0;\n state.delta = 0;\n };\n\n const tick = (now: number) => {\n const elapsed = now - startedAt;\n state.frame = Math.floor(elapsed / safeInterval.value);\n state.time = elapsed;\n state.delta = now - previousTick;\n previousTick = now;\n };\n\n const stop = () => {\n unsubscribe?.();\n unsubscribe = null;\n };\n\n const start = () => {\n stop();\n resetState(currentTime());\n const subscription = subscribeToAnimation(tick, safeInterval.value);\n startedAt = subscription.startTime;\n previousTick = subscription.startTime;\n unsubscribe = () => subscription.unsubscribe();\n };\n\n onMounted(() => {\n if (active.value) {\n start();\n }\n });\n\n watch([active, safeInterval], ([isActive]) => {\n if (isActive) {\n start();\n } else {\n stop();\n }\n });\n\n onUnmounted(stop);\n\n return state;\n}\n","/**\n * useBoxMetrics - best-effort layout metrics for a rendered Fresco node.\n */\n\nimport { onMounted, onUnmounted, reactive, type Ref } from \"@vue/runtime-core\";\nimport { getLastRenderLayout, updateLastRenderLayouts, type DOMElement } from \"../layoutMetrics.js\";\n\nexport interface BoxMetrics {\n width: number;\n height: number;\n left: number;\n top: number;\n}\n\nexport interface UseBoxMetricsResult extends BoxMetrics {\n hasMeasured: boolean;\n}\n\nexport type MetricTarget = DOMElement;\n\nasync function loadNative() {\n return import(\"@vizejs/fresco-native\");\n}\n\nfunction targetId(target: MetricTarget | null | undefined): number | undefined {\n return target?.id ?? target?.$el?.id;\n}\n\nexport function useBoxMetrics(ref: Ref<MetricTarget | null>): UseBoxMetricsResult {\n const metrics = reactive<UseBoxMetricsResult>({\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n hasMeasured: false,\n });\n\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refresh = () => {\n const id = targetId(ref.value);\n if (id === undefined) {\n metrics.width = 0;\n metrics.height = 0;\n metrics.left = 0;\n metrics.top = 0;\n metrics.hasMeasured = false;\n return;\n }\n\n void loadNative()\n .then((native) => {\n const layouts = \"getLastRenderLayouts\" in native ? native.getLastRenderLayouts() : [];\n updateLastRenderLayouts(layouts);\n const layout = layouts.find((item: { id: number }) => item.id === id);\n if (!layout) return;\n\n metrics.width = layout.width;\n metrics.height = layout.height;\n metrics.left = layout.x;\n metrics.top = layout.y;\n metrics.hasMeasured = true;\n })\n .catch(() => {});\n };\n\n onMounted(() => {\n const layout = getLastRenderLayout(ref.value);\n if (layout) {\n metrics.width = layout.width;\n metrics.height = layout.height;\n metrics.left = layout.x;\n metrics.top = layout.y;\n metrics.hasMeasured = true;\n }\n\n refresh();\n timer = setInterval(refresh, 100);\n });\n\n onUnmounted(() => {\n if (timer) clearInterval(timer);\n });\n\n return metrics;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"composables-B8W4GFdO.mjs","names":[],"sources":["../src/composables/useIme.ts","../src/composables/useWindowSize.ts","../src/composables/useAnimation.ts","../src/composables/useBoxMetrics.ts"],"sourcesContent":["/**\n * useIme - IME (Input Method Editor) composable\n */\n\nimport { ref, computed, type Ref } from \"@vue/runtime-core\";\n\nexport interface UseImeOptions {\n /** Initial IME mode */\n mode?: ImeMode;\n /** Called when IME mode changes */\n onModeChange?: (mode: ImeMode) => void;\n /** Called when composition updates */\n onCompositionUpdate?: (text: string, cursor: number) => void;\n /** Called when text is committed */\n onCommit?: (text: string) => void;\n}\n\nexport type ImeMode =\n | \"direct\"\n | \"hiragana\"\n | \"katakana\"\n | \"half-katakana\"\n | \"full-alpha\"\n | \"pinyin\"\n | \"hangul\";\n\nexport interface ImeManager {\n /** Whether IME is active */\n isActive: Ref<boolean>;\n /** Current input mode */\n mode: Ref<ImeMode>;\n /** Whether currently composing */\n isComposing: Ref<boolean>;\n /** Preedit text */\n preedit: Ref<string>;\n /** Cursor position in preedit */\n preeditCursor: Ref<number>;\n /** Candidate list */\n candidates: Ref<string[]>;\n /** Selected candidate index */\n selectedCandidate: Ref<number>;\n /** Mode display name */\n modeDisplay: Ref<string>;\n /** Enable IME */\n enable: () => void;\n /** Disable IME */\n disable: () => void;\n /** Set input mode */\n setMode: (mode: ImeMode) => void;\n /** Handle key event for IME */\n handleKey: (key: string, modifiers: { ctrl: boolean; alt: boolean }) => boolean;\n /** Commit current composition */\n commit: () => void;\n /** Cancel current composition */\n cancel: () => void;\n /** Select next candidate */\n nextCandidate: () => void;\n /** Select previous candidate */\n prevCandidate: () => void;\n /** Select candidate by number (1-9) */\n selectCandidate: (num: number) => void;\n}\n\nconst MODE_DISPLAY: Record<ImeMode, string> = {\n direct: \"A\",\n hiragana: \"あ\",\n katakana: \"ア\",\n \"half-katakana\": \"ア\",\n \"full-alpha\": \"A\",\n pinyin: \"拼\",\n hangul: \"한\",\n};\n\nexport function useIme(options: UseImeOptions = {}): ImeManager {\n const { mode: initialMode = \"direct\", onModeChange, onCompositionUpdate, onCommit } = options;\n\n const isActive = ref(false);\n const mode = ref<ImeMode>(initialMode);\n const isComposing = ref(false);\n const preedit = ref(\"\");\n const preeditCursor = ref(0);\n const candidates = ref<string[]>([]);\n const selectedCandidate = ref(0);\n\n const modeDisplay = computed(() => MODE_DISPLAY[mode.value] ?? \"A\");\n\n const enable = () => {\n isActive.value = true;\n };\n\n const disable = () => {\n isActive.value = false;\n cancel();\n };\n\n const setMode = (newMode: ImeMode) => {\n if (mode.value !== newMode) {\n cancel();\n mode.value = newMode;\n onModeChange?.(newMode);\n }\n };\n\n const handleKey = (key: string, modifiers: { ctrl: boolean; alt: boolean }): boolean => {\n if (!isActive.value || mode.value === \"direct\") {\n return false;\n }\n\n // IME mode toggle (usually Ctrl+Space or similar)\n // If we're here, mode is not 'direct' (filtered above), so toggle to 'direct'\n if (modifiers.ctrl && key === \" \") {\n setMode(\"direct\");\n return true;\n }\n\n // Handle composition\n if (isComposing.value) {\n switch (key) {\n case \"enter\":\n commit();\n return true;\n case \"escape\":\n cancel();\n return true;\n case \"backspace\":\n if (preedit.value.length > 0) {\n preedit.value = preedit.value.slice(0, -1);\n preeditCursor.value = Math.min(preeditCursor.value, preedit.value.length);\n onCompositionUpdate?.(preedit.value, preeditCursor.value);\n return true;\n }\n break;\n case \"space\":\n // Convert / select candidate\n if (candidates.value.length > 0) {\n nextCandidate();\n return true;\n }\n break;\n }\n\n // Number for candidate selection\n if (/^[1-9]$/.test(key)) {\n selectCandidate(parseInt(key, 10));\n return true;\n }\n }\n\n // Start/continue composition for printable characters\n if (key.length === 1 && !modifiers.ctrl && !modifiers.alt) {\n if (!isComposing.value) {\n isComposing.value = true;\n }\n preedit.value += key;\n preeditCursor.value = preedit.value.length;\n onCompositionUpdate?.(preedit.value, preeditCursor.value);\n return true;\n }\n\n return false;\n };\n\n const commit = () => {\n if (preedit.value) {\n const text = candidates.value[selectedCandidate.value] ?? preedit.value;\n onCommit?.(text);\n }\n preedit.value = \"\";\n preeditCursor.value = 0;\n candidates.value = [];\n selectedCandidate.value = 0;\n isComposing.value = false;\n };\n\n const cancel = () => {\n preedit.value = \"\";\n preeditCursor.value = 0;\n candidates.value = [];\n selectedCandidate.value = 0;\n isComposing.value = false;\n };\n\n const nextCandidate = () => {\n if (candidates.value.length > 0) {\n selectedCandidate.value = (selectedCandidate.value + 1) % candidates.value.length;\n }\n };\n\n const prevCandidate = () => {\n if (candidates.value.length > 0) {\n selectedCandidate.value =\n (selectedCandidate.value - 1 + candidates.value.length) % candidates.value.length;\n }\n };\n\n const selectCandidate = (num: number) => {\n if (num >= 1 && num <= candidates.value.length) {\n selectedCandidate.value = num - 1;\n commit();\n }\n };\n\n return {\n isActive,\n mode,\n isComposing,\n preedit,\n preeditCursor,\n candidates,\n selectedCandidate,\n modeDisplay,\n enable,\n disable,\n setMode,\n handleKey,\n commit,\n cancel,\n nextCandidate,\n prevCandidate,\n selectCandidate,\n };\n}\n","/**\n * useWindowSize - terminal dimensions.\n */\n\nimport { reactive } from \"@vue/runtime-core\";\nimport { useApp } from \"./useApp.js\";\n\nexport interface WindowSize {\n columns: number;\n rows: number;\n}\n\nexport function useWindowSize() {\n const { width, height } = useApp();\n\n return reactive({\n get columns() {\n return width.value;\n },\n get rows() {\n return height.value;\n },\n }) as WindowSize;\n}\n","/**\n * useAnimation - Ink-compatible shared animation state.\n */\n\nimport { computed, onMounted, onUnmounted, reactive, watch } from \"@vue/runtime-core\";\n\nexport interface UseAnimationOptions {\n /** Time between ticks in milliseconds */\n interval?: number;\n /** Whether the animation is running */\n isActive?: boolean;\n}\n\nexport interface AnimationResult {\n frame: number;\n time: number;\n delta: number;\n reset: () => void;\n}\n\nconst defaultAnimationInterval = 100;\nconst maximumTimerInterval = 2_147_483_647;\n\ntype AnimationCallback = (currentTime: number) => void;\n\ninterface AnimationSubscriber {\n callback: AnimationCallback;\n interval: number;\n startTime: number;\n nextDueTime: number;\n}\n\nconst animationSubscribers = new Map<AnimationCallback, AnimationSubscriber>();\nlet animationTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction currentTime(): number {\n return performance.now();\n}\n\nfunction normalizeAnimationInterval(interval: number): number {\n if (!Number.isFinite(interval)) {\n return defaultAnimationInterval;\n }\n\n return Math.min(maximumTimerInterval, Math.max(1, interval));\n}\n\nfunction clearAnimationTimer() {\n if (!animationTimer) return;\n clearTimeout(animationTimer);\n animationTimer = null;\n}\n\nfunction scheduleAnimationTick() {\n clearAnimationTimer();\n if (animationSubscribers.size === 0) return;\n\n let nextDueTime = Number.POSITIVE_INFINITY;\n for (const subscriber of animationSubscribers.values()) {\n nextDueTime = Math.min(nextDueTime, subscriber.nextDueTime);\n }\n\n animationTimer = setTimeout(\n () => {\n animationTimer = null;\n const now = currentTime();\n\n for (const subscriber of animationSubscribers.values()) {\n if (now < subscriber.nextDueTime) continue;\n\n subscriber.callback(now);\n\n const elapsedTime = now - subscriber.startTime;\n const elapsedFrames = Math.floor(elapsedTime / subscriber.interval) + 1;\n subscriber.nextDueTime = subscriber.startTime + elapsedFrames * subscriber.interval;\n }\n\n scheduleAnimationTick();\n },\n Math.max(0, nextDueTime - currentTime()),\n );\n}\n\nfunction subscribeToAnimation(callback: AnimationCallback, interval: number) {\n const startTime = currentTime();\n animationSubscribers.set(callback, {\n callback,\n interval,\n startTime,\n nextDueTime: startTime + interval,\n });\n scheduleAnimationTick();\n\n return {\n startTime,\n unsubscribe() {\n animationSubscribers.delete(callback);\n scheduleAnimationTick();\n },\n };\n}\n\nexport function useAnimation(options: UseAnimationOptions = {}): AnimationResult {\n const safeInterval = computed(() =>\n normalizeAnimationInterval(options.interval ?? defaultAnimationInterval),\n );\n const active = computed(() => options.isActive ?? true);\n let unsubscribe: (() => void) | null = null;\n let startedAt = currentTime();\n let previousTick = startedAt;\n\n const state = reactive<AnimationResult>({\n frame: 0,\n time: 0,\n delta: 0,\n reset: () => {\n if (active.value) {\n start();\n } else {\n resetState(currentTime());\n }\n },\n });\n\n const resetState = (now: number) => {\n startedAt = now;\n previousTick = now;\n state.frame = 0;\n state.time = 0;\n state.delta = 0;\n };\n\n const tick = (now: number) => {\n const elapsed = now - startedAt;\n state.frame = Math.floor(elapsed / safeInterval.value);\n state.time = elapsed;\n state.delta = now - previousTick;\n previousTick = now;\n };\n\n const stop = () => {\n unsubscribe?.();\n unsubscribe = null;\n };\n\n const start = () => {\n stop();\n resetState(currentTime());\n const subscription = subscribeToAnimation(tick, safeInterval.value);\n startedAt = subscription.startTime;\n previousTick = subscription.startTime;\n unsubscribe = () => subscription.unsubscribe();\n };\n\n onMounted(() => {\n if (active.value) {\n start();\n }\n });\n\n watch([active, safeInterval], ([isActive]) => {\n if (isActive) {\n start();\n } else {\n stop();\n }\n });\n\n onUnmounted(stop);\n\n return state;\n}\n","/**\n * useBoxMetrics - best-effort layout metrics for a rendered Fresco node.\n */\n\nimport { onMounted, onUnmounted, reactive, type Ref } from \"@vue/runtime-core\";\nimport { getLastRenderLayout, updateLastRenderLayouts, type DOMElement } from \"../layoutMetrics.js\";\n\nexport interface BoxMetrics {\n width: number;\n height: number;\n left: number;\n top: number;\n}\n\nexport interface UseBoxMetricsResult extends BoxMetrics {\n hasMeasured: boolean;\n}\n\nexport type MetricTarget = DOMElement;\n\nasync function loadNative() {\n return import(\"@vizejs/fresco-native\");\n}\n\nfunction targetId(target: MetricTarget | null | undefined): number | undefined {\n return target?.id ?? target?.$el?.id;\n}\n\nexport function useBoxMetrics(ref: Ref<MetricTarget | null>): UseBoxMetricsResult {\n const metrics = reactive<UseBoxMetricsResult>({\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n hasMeasured: false,\n });\n\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refresh = () => {\n const id = targetId(ref.value);\n if (id === undefined) {\n metrics.width = 0;\n metrics.height = 0;\n metrics.left = 0;\n metrics.top = 0;\n metrics.hasMeasured = false;\n return;\n }\n\n void loadNative()\n .then((native) => {\n const layouts = \"getLastRenderLayouts\" in native ? native.getLastRenderLayouts() : [];\n updateLastRenderLayouts(layouts);\n const layout = layouts.find((item: { id: number }) => item.id === id);\n if (!layout) return;\n\n metrics.width = layout.width;\n metrics.height = layout.height;\n metrics.left = layout.x;\n metrics.top = layout.y;\n metrics.hasMeasured = true;\n })\n .catch(() => {});\n };\n\n onMounted(() => {\n const layout = getLastRenderLayout(ref.value);\n if (layout) {\n metrics.width = layout.width;\n metrics.height = layout.height;\n metrics.left = layout.x;\n metrics.top = layout.y;\n metrics.hasMeasured = true;\n }\n\n refresh();\n timer = setInterval(refresh, 100);\n });\n\n onUnmounted(() => {\n if (timer) clearInterval(timer);\n });\n\n return metrics;\n}\n"],"mappings":"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"}
@@ -1,10 +1,6 @@
1
- import { O as FrescoStyle, f as FrescoCanonicalStyle, l as FrescoAppearance, p as FrescoDimension, u as FrescoBorderStyle } from "./renderer-DWG0G3g8.mjs";
2
- import { PropType, Ref, VNode } from "@vue/runtime-core";
1
+ import { A as FrescoStyle, d as FrescoAppearance, f as FrescoBorderStyle, h as FrescoDimension, m as FrescoCanonicalStyle, n as AriaState, t as AriaRole } from "./accessibility-Ca6moS43.mjs";
2
+ import { PropType, VNode } from "@vue/runtime-core";
3
3
 
4
- //#region src/accessibility.d.ts
5
- type AriaRole = "button" | "checkbox" | "combobox" | "list" | "listbox" | "listitem" | "menu" | "menuitem" | "option" | "progressbar" | "radio" | "radiogroup" | "tab" | "tablist" | "table" | "textbox" | "timer" | "toolbar";
6
- type AriaState = Partial<Record<"busy" | "checked" | "disabled" | "expanded" | "multiline" | "multiselectable" | "readonly" | "required" | "selected", boolean>>;
7
- //#endregion
8
4
  //#region src/components/Box.d.ts
9
5
  type BorderStyleName = FrescoBorderStyle | "round" | "bold";
10
6
  interface BoxProps extends FrescoCanonicalStyle {
@@ -327,9 +323,9 @@ declare const Stack: import("@vue/runtime-core").DefineComponent<import("@vue/ru
327
323
  }>> & Readonly<{}>, {
328
324
  wrap: boolean;
329
325
  gap: number;
330
- direction: "horizontal" | "vertical";
331
326
  align: "start" | "end" | "center" | "stretch" | undefined;
332
327
  justify: "start" | "end" | "center" | "between" | "around" | "evenly" | undefined;
328
+ direction: "horizontal" | "vertical";
333
329
  }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, true, {}, any>;
334
330
  declare const HStack: import("@vue/runtime-core").DefineComponent<import("@vue/runtime-core").ExtractPropTypes<{
335
331
  gap: {
@@ -842,7 +838,7 @@ declare const TextInput: import("@vue/runtime-core").DefineComponent<import("@vu
842
838
  bg: StringConstructor;
843
839
  }>, () => import("@vue/runtime-core").VNode<import("@vue/runtime-core").RendererNode, import("@vue/runtime-core").RendererElement, {
844
840
  [key: string]: any;
845
- }>, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("update:modelValue" | "submit" | "cancel" | "compositionstart" | "compositionupdate" | "compositionend")[], "update:modelValue" | "submit" | "cancel" | "compositionstart" | "compositionupdate" | "compositionend", import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
841
+ }>, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("update:modelValue" | "cancel" | "submit" | "compositionstart" | "compositionupdate" | "compositionend")[], "update:modelValue" | "cancel" | "submit" | "compositionstart" | "compositionupdate" | "compositionend", import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
846
842
  modelValue: {
847
843
  type: StringConstructor;
848
844
  default: string;
@@ -872,14 +868,14 @@ declare const TextInput: import("@vue/runtime-core").DefineComponent<import("@vu
872
868
  bg: StringConstructor;
873
869
  }>> & Readonly<{
874
870
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
875
- onSubmit?: ((...args: any[]) => any) | undefined;
876
871
  onCancel?: ((...args: any[]) => any) | undefined;
872
+ onSubmit?: ((...args: any[]) => any) | undefined;
877
873
  onCompositionstart?: ((...args: any[]) => any) | undefined;
878
874
  onCompositionupdate?: ((...args: any[]) => any) | undefined;
879
875
  onCompositionend?: ((...args: any[]) => any) | undefined;
880
876
  }>, {
881
- modelValue: string;
882
877
  placeholder: string;
878
+ modelValue: string;
883
879
  focused: boolean;
884
880
  focus: boolean;
885
881
  mask: boolean;
@@ -1007,8 +1003,8 @@ declare const TextArea: import("@vue/runtime-core").DefineComponent<import("@vue
1007
1003
  border: "none" | "single" | "double" | "rounded" | undefined;
1008
1004
  disabled: boolean;
1009
1005
  modelValue: string;
1010
- focused: boolean;
1011
1006
  rows: number;
1007
+ focused: boolean;
1012
1008
  lineNumbers: boolean;
1013
1009
  placeholderFg: string;
1014
1010
  lineNumberFg: string;
@@ -1105,14 +1101,14 @@ declare const Select: import("@vue/runtime-core").DefineComponent<import("@vue/r
1105
1101
  };
1106
1102
  selectedBg: StringConstructor;
1107
1103
  }>> & Readonly<{
1108
- onSelect?: ((...args: any[]) => any) | undefined;
1109
1104
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
1105
+ onSelect?: ((...args: any[]) => any) | undefined;
1110
1106
  }>, {
1111
1107
  placeholder: string;
1112
1108
  focused: boolean;
1109
+ selectedFg: string;
1113
1110
  indicator: string;
1114
1111
  indicatorEmpty: string;
1115
- selectedFg: string;
1116
1112
  }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, true, {}, any>;
1117
1113
  //#endregion
1118
1114
  //#region src/components/Checkbox.d.ts
@@ -1284,8 +1280,8 @@ declare const RadioGroup: import("@vue/runtime-core").DefineComponent<import("@v
1284
1280
  onChange?: ((...args: any[]) => any) | undefined;
1285
1281
  }>, {
1286
1282
  selected: string;
1287
- selectedFg: string;
1288
1283
  direction: "horizontal" | "vertical";
1284
+ selectedFg: string;
1289
1285
  unselected: string;
1290
1286
  }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, true, {}, any>;
1291
1287
  //#endregion
@@ -1340,7 +1336,7 @@ declare const Confirm: import("@vue/runtime-core").DefineComponent<import("@vue/
1340
1336
  };
1341
1337
  }>, () => import("@vue/runtime-core").VNode<import("@vue/runtime-core").RendererNode, import("@vue/runtime-core").RendererElement, {
1342
1338
  [key: string]: any;
1343
- }>, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("select" | "cancel" | "confirm")[], "select" | "cancel" | "confirm", import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
1339
+ }>, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("confirm" | "cancel" | "select")[], "confirm" | "cancel" | "select", import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
1344
1340
  message: {
1345
1341
  type: StringConstructor;
1346
1342
  required: true;
@@ -1370,16 +1366,16 @@ declare const Confirm: import("@vue/runtime-core").DefineComponent<import("@vue/
1370
1366
  default: string;
1371
1367
  };
1372
1368
  }>> & Readonly<{
1373
- onSelect?: ((...args: any[]) => any) | undefined;
1374
- onCancel?: ((...args: any[]) => any) | undefined;
1375
1369
  onConfirm?: ((...args: any[]) => any) | undefined;
1370
+ onCancel?: ((...args: any[]) => any) | undefined;
1371
+ onSelect?: ((...args: any[]) => any) | undefined;
1376
1372
  }>, {
1377
- selectedFg: string;
1378
1373
  confirmText: string;
1379
1374
  cancelText: string;
1380
1375
  defaultConfirm: boolean;
1381
1376
  confirmFg: string;
1382
1377
  cancelFg: string;
1378
+ selectedFg: string;
1383
1379
  }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, true, {}, any>;
1384
1380
  //#endregion
1385
1381
  //#region src/components/Form.d.ts
@@ -2016,13 +2012,13 @@ declare const List: import("@vue/runtime-core").DefineComponent<import("@vue/run
2016
2012
  };
2017
2013
  selectedBg: StringConstructor;
2018
2014
  }>> & Readonly<{
2019
- onSelect?: ((...args: any[]) => any) | undefined;
2020
2015
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
2016
+ onSelect?: ((...args: any[]) => any) | undefined;
2021
2017
  }>, {
2022
2018
  focused: boolean;
2019
+ selectedFg: string;
2023
2020
  indicator: string;
2024
2021
  indicatorEmpty: string;
2025
- selectedFg: string;
2026
2022
  }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, true, {}, any>;
2027
2023
  //#endregion
2028
2024
  //#region src/components/Table.d.ts
@@ -2968,4 +2964,4 @@ declare const Avatar: import("@vue/runtime-core").DefineComponent<import("@vue/r
2968
2964
  }, {}, {}, {}, string, import("@vue/runtime-core").ComponentProvideOptions, true, {}, any>;
2969
2965
  //#endregion
2970
2966
  export { FormProps as $, TableColumn as A, HStack as At, TimerProps as B, Menu as C, NewlineProps as Ct, TreeNode as D, CardProps as Dt, Tree as E, Card as Et, Tooltip as F, DividerProps as Ft, AlertProps as G, BadgeProps as H, TooltipPosition as I, Spacer as It, ProgressBarProps as J, AlertType as K, TooltipProps as L, Box as Lt, List as M, StackProps as Mt, ListItem as N, VStack as Nt, TreeProps as O, Grid as Ot, ListProps as P, Divider as Pt, FormField as Q, Timer as R, BoxProps as Rt, TabsProps as S, Newline as St, MenuProps as T, TextProps as Tt, BadgeVariant as U, Badge as V, Alert as W, SpinnerProps as X, Spinner as Y, Form as Z, Breadcrumb as _, CodeProps as _t, KeyHintProps as a, Checkbox as at, Tab as b, Static as bt, StatusBar as c, SelectOption as ct, Modal as d, TextAreaProps as dt, Confirm as et, ModalProps as f, TextInput as ft, StepperProps as g, Code as gt, Stepper as h, LinkProps as ht, KeyHint as i, RadioOption as it, TableProps as j, Stack as jt, Table as k, GridProps as kt, StatusBarItem as l, SelectProps as lt, StepStatus as m, Link as mt, AvatarProps as n, RadioGroup as nt, Header as o, CheckboxProps as ot, Step as p, TextInputProps as pt, ProgressBar as q, KeyBinding as r, RadioGroupProps as rt, HeaderProps as s, Select as st, Avatar as t, ConfirmProps as tt, StatusBarProps as u, TextArea as ut, BreadcrumbItem as v, Transform as vt, MenuItem as w, Text as wt, Tabs as x, StaticProps as xt, BreadcrumbProps as y, TransformProps as yt, TimerMode as z };
2971
- //# sourceMappingURL=index-CovzQRe4.d.mts.map
2967
+ //# sourceMappingURL=index-Dt9oT2zt.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Dt9oT2zt.d.mts","names":[],"sources":["../src/components/Box.ts","../src/components/Spacer.ts","../src/components/Divider.ts","../src/components/Stack.ts","../src/components/Grid.ts","../src/components/Card.ts","../src/components/Text.ts","../src/components/Newline.ts","../src/components/Static.ts","../src/components/Transform.ts","../src/components/Code.ts","../src/components/Link.ts","../src/components/TextInput.ts","../src/components/TextArea.ts","../src/components/Select.ts","../src/components/Checkbox.ts","../src/components/RadioGroup.ts","../src/components/Confirm.ts","../src/components/Form.ts","../src/components/Spinner.ts","../src/components/ProgressBar.ts","../src/components/Alert.ts","../src/components/Badge.ts","../src/components/Timer.ts","../src/components/Tooltip.ts","../src/components/List.ts","../src/components/Table.ts","../src/components/Tree.ts","../src/components/Menu.ts","../src/components/Tabs.ts","../src/components/Breadcrumb.ts","../src/components/Stepper.ts","../src/components/Modal.ts","../src/components/StatusBar.ts","../src/components/Header.ts","../src/components/KeyHint.ts","../src/components/Avatar.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { A as FrescoTextWrapMode, C as FrescoRenderNode, D as FrescoSnakeStyleAliases, E as FrescoRootRenderNode, F as PasteEvent, I as ResizeEvent, M as KeyEvent, N as KeyEventType, O as FrescoStyle, P as MouseEvent, S as FrescoPosition, T as FrescoRenderStyle, _ as FrescoInputEvent, a as FocusEvent, b as FrescoModifiers, c as FrescoAlignSelf, d as FrescoBoxRenderNode, f as FrescoCanonicalStyle, g as FrescoFlexWrap, h as FrescoFlexDirection, i as CompositionEvent, j as InputEvent, k as FrescoTextRenderNode, l as FrescoAppearance, m as FrescoDisplay, o as FrescoAlignContent, p as FrescoDimension, r as createRenderer, s as FrescoAlignItems, u as FrescoBorderStyle, v as FrescoInputRenderNode, w as FrescoRenderNodeKind, x as FrescoOverflow, y as FrescoJustifyContent } from "./renderer-DWG0G3g8.mjs";
2
- import { $ as FormProps, A as TableColumn, At as HStack, B as TimerProps, C as Menu, Ct as NewlineProps, D as TreeNode, Dt as CardProps, E as Tree, Et as Card, F as Tooltip, Ft as DividerProps, G as AlertProps, H as BadgeProps, I as TooltipPosition, It as Spacer, J as ProgressBarProps, K as AlertType, L as TooltipProps, Lt as Box, M as List, Mt as StackProps, N as ListItem, Nt as VStack, O as TreeProps, Ot as Grid, P as ListProps, Pt as Divider, Q as FormField, R as Timer, Rt as BoxProps, S as TabsProps, St as Newline, T as MenuProps, Tt as TextProps, U as BadgeVariant, V as Badge, W as Alert, X as SpinnerProps, Y as Spinner, Z as Form, _ as Breadcrumb, _t as CodeProps, a as KeyHintProps, at as Checkbox, b as Tab, bt as Static, c as StatusBar, ct as SelectOption, d as Modal, dt as TextAreaProps, et as Confirm, f as ModalProps, ft as TextInput, g as StepperProps, gt as Code, h as Stepper, ht as LinkProps, i as KeyHint, it as RadioOption, j as TableProps, jt as Stack, k as Table, kt as GridProps, l as StatusBarItem, lt as SelectProps, m as StepStatus, mt as Link, n as AvatarProps, nt as RadioGroup, o as Header, ot as CheckboxProps, p as Step, pt as TextInputProps, q as ProgressBar, r as KeyBinding, rt as RadioGroupProps, s as HeaderProps, st as Select, t as Avatar, tt as ConfirmProps, u as StatusBarProps, ut as TextArea, v as BreadcrumbItem, vt as Transform, w as MenuItem, wt as Text, x as Tabs, xt as StaticProps, y as BreadcrumbProps, yt as TransformProps, z as TimerMode } from "./index-CovzQRe4.mjs";
1
+ import { A as FrescoStyle, C as FrescoOverflow, D as FrescoRenderStyle, E as FrescoRenderNodeKind, F as KeyEventType, I as MouseEvent, L as PasteEvent, M as FrescoTextWrapMode, N as InputEvent, O as FrescoRootRenderNode, P as KeyEvent, R as ResizeEvent, S as FrescoModifiers, T as FrescoRenderNode, _ as FrescoFlexDirection, a as createRenderer, b as FrescoInputRenderNode, c as FrescoAlignContent, d as FrescoAppearance, f as FrescoBorderStyle, g as FrescoDisplay, h as FrescoDimension, j as FrescoTextRenderNode, k as FrescoSnakeStyleAliases, l as FrescoAlignItems, m as FrescoCanonicalStyle, o as CompositionEvent, p as FrescoBoxRenderNode, s as FocusEvent, u as FrescoAlignSelf, v as FrescoFlexWrap, w as FrescoPosition, x as FrescoJustifyContent, y as FrescoInputEvent } from "./accessibility-Ca6moS43.mjs";
2
+ import { $ as FormProps, A as TableColumn, At as HStack, B as TimerProps, C as Menu, Ct as NewlineProps, D as TreeNode, Dt as CardProps, E as Tree, Et as Card, F as Tooltip, Ft as DividerProps, G as AlertProps, H as BadgeProps, I as TooltipPosition, It as Spacer, J as ProgressBarProps, K as AlertType, L as TooltipProps, Lt as Box, M as List, Mt as StackProps, N as ListItem, Nt as VStack, O as TreeProps, Ot as Grid, P as ListProps, Pt as Divider, Q as FormField, R as Timer, Rt as BoxProps, S as TabsProps, St as Newline, T as MenuProps, Tt as TextProps, U as BadgeVariant, V as Badge, W as Alert, X as SpinnerProps, Y as Spinner, Z as Form, _ as Breadcrumb, _t as CodeProps, a as KeyHintProps, at as Checkbox, b as Tab, bt as Static, c as StatusBar, ct as SelectOption, d as Modal, dt as TextAreaProps, et as Confirm, f as ModalProps, ft as TextInput, g as StepperProps, gt as Code, h as Stepper, ht as LinkProps, i as KeyHint, it as RadioOption, j as TableProps, jt as Stack, k as Table, kt as GridProps, l as StatusBarItem, lt as SelectProps, m as StepStatus, mt as Link, n as AvatarProps, nt as RadioGroup, o as Header, ot as CheckboxProps, p as Step, pt as TextInputProps, q as ProgressBar, r as KeyBinding, rt as RadioGroupProps, s as HeaderProps, st as Select, t as Avatar, tt as ConfirmProps, u as StatusBarProps, ut as TextArea, v as BreadcrumbItem, vt as Transform, w as MenuItem, wt as Text, x as Tabs, xt as StaticProps, y as BreadcrumbProps, yt as TransformProps, z as TimerMode } from "./index-Dt9oT2zt.mjs";
3
3
  import { A as useInput, C as UsePasteOptions, D as KeyHandler, E as Key, O as UseInputOptions, S as useIme, T as InputHandler, _ as useStderr, a as DOMElement, b as ImeManager, c as UseAnimationOptions, d as useCursor, f as WindowSize, g as UseStdoutReturn, h as UseStdinReturn, i as useBoxMetrics, j as useKeyPress, k as UseInputReturn, l as useAnimation, m as UseStderrReturn, n as BoxMetrics, o as measureElement, p as useWindowSize, r as UseBoxMetricsResult, s as AnimationResult, t as useIsScreenReaderEnabled, u as CursorPosition, v as useStdin, w as usePaste, x as UseImeOptions, y as useStdout } from "./index-DqGcW9sz.mjs";
4
4
  import { a as useFocus, i as UseFocusOptions, n as useApp, o as useFocusManager, r as FocusManager, t as UseAppReturn } from "./useApp-CNjer3hJ.mjs";
5
- import { _ as KittyFlagName, a as RenderMetrics, b as kittyModifiers, c as createApp, d as lastKeyEvent, f as lastMouseEvent, g as renderToString, h as render, i as RenderInstance, l as lastCompositionEvent, m as lastResizeEvent, n as AppOptions, o as RenderOptions, p as lastPasteEvent, r as Instance, s as RenderToStringOptions, t as App, u as lastFocusEvent, v as KittyKeyboardOptions, x as resolveKittyFlags, y as kittyFlags } from "./app-DJImCkSW.mjs";
5
+ import { _ as KittyFlagName, a as RenderMetrics, b as kittyModifiers, c as createApp, d as lastKeyEvent, f as lastMouseEvent, g as renderToString, h as render, i as RenderInstance, l as lastCompositionEvent, m as lastResizeEvent, n as AppOptions, o as RenderOptions, p as lastPasteEvent, r as Instance, s as RenderToStringOptions, t as App, u as lastFocusEvent, v as KittyKeyboardOptions, x as resolveKittyFlags, y as kittyFlags } from "./app-DsHJno1z.mjs";
6
6
  import { FlexStyleNapi, ImeStateNapi, InputEventNapi, LayoutResultNapi, ModifiersNapi, RenderNodeNapi, StyleNapi, TerminalInfoNapi, TerminalOptionsNapi } from "@vizejs/fresco-native";
7
7
  export { Alert, type AlertProps, type AlertType, type AnimationResult, type App, type AppOptions, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeVariant, Box, type BoxMetrics, type BoxProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Card, type CardProps, Checkbox, type CheckboxProps, Code, type CodeProps, type CompositionEvent, Confirm, type ConfirmProps, type CursorPosition, type DOMElement, Divider, type DividerProps, type FlexStyleNapi, type FocusEvent, type FocusManager, Form, type FormField, type FormProps, type FrescoAlignContent, type FrescoAlignItems, type FrescoAlignSelf, type FrescoAppearance, type FrescoBorderStyle, type FrescoBoxRenderNode, type FrescoCanonicalStyle, type FrescoDimension, type FrescoDisplay, type FrescoFlexDirection, type FrescoFlexWrap, type FrescoInputEvent, type FrescoInputRenderNode, type FrescoJustifyContent, type FrescoModifiers, type FrescoOverflow, type FrescoPosition, type FrescoRenderNode, type FrescoRenderNodeKind, type FrescoRenderStyle, type FrescoRootRenderNode, type FrescoSnakeStyleAliases, type FrescoStyle, type FrescoTextRenderNode, type FrescoTextWrapMode, Grid, type GridProps, HStack, Header, type HeaderProps, type ImeManager, type ImeStateNapi, type InputEvent, type InputEventNapi, type InputHandler, type Instance, type Key, type KeyBinding, type KeyEvent, type KeyEventType, type KeyHandler, KeyHint, type KeyHintProps, type KittyFlagName, type KittyKeyboardOptions, type LayoutResultNapi, Link, type LinkProps, List, type ListItem, type ListProps, Menu, type MenuItem, type MenuProps, Modal, type ModalProps, type ModifiersNapi, type MouseEvent, Newline, type NewlineProps, type PasteEvent, ProgressBar, type ProgressBarProps, RadioGroup, type RadioGroupProps, type RadioOption, type RenderInstance, type RenderMetrics, type RenderNodeNapi, type RenderOptions, type RenderToStringOptions, type ResizeEvent, Select, type SelectOption, type SelectProps, Spacer, Spinner, type SpinnerProps, Stack, type StackProps, Static, type StaticProps, StatusBar, type StatusBarItem, type StatusBarProps, type Step, type StepStatus, Stepper, type StepperProps, type StyleNapi, type Tab, Table, type TableColumn, type TableProps, Tabs, type TabsProps, type TerminalInfoNapi, type TerminalOptionsNapi, Text, TextArea, type TextAreaProps, TextInput, type TextInputProps, type TextProps, Timer, type TimerMode, type TimerProps, Tooltip, type TooltipPosition, type TooltipProps, Transform, type TransformProps, Tree, type TreeNode, type TreeProps, type UseAnimationOptions, type UseAppReturn, type UseBoxMetricsResult, type UseFocusOptions, type UseImeOptions, type UseInputOptions, type UseInputReturn, type UsePasteOptions, type UseStderrReturn, type UseStdinReturn, type UseStdoutReturn, VStack, type WindowSize, createApp, createRenderer, kittyFlags, kittyModifiers, lastCompositionEvent, lastFocusEvent, lastKeyEvent, lastMouseEvent, lastPasteEvent, lastResizeEvent, measureElement, render, renderToString, resolveKittyFlags, useAnimation, useApp, useBoxMetrics, useCursor, useFocus, useFocusManager, useIme, useInput, useIsScreenReaderEnabled, useKeyPress, usePaste, useStderr, useStdin, useStdout, useWindowSize };
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { E as useFocusManager, T as useFocus, a as lastMouseEvent, b as useStdin, c as render, f as measureElement, g as useCursor, i as lastKeyEvent, k as useApp, l as renderToString, n as lastCompositionEvent, o as lastPasteEvent, r as lastFocusEvent, s as lastResizeEvent, t as createApp, u as createRenderer, x as useStdout, y as useStderr } from "./app-D_Ke7C8w.mjs";
2
- import { i as useIsScreenReaderEnabled, n as useKeyPress, r as usePaste, t as useInput } from "./useInput-BpH-JIU3.mjs";
3
- import { A as Newline, C as Select, D as Code, E as Link, F as Stack, I as VStack, L as Divider, M as Card, N as Grid, O as Transform, P as HStack, R as Spacer, S as Checkbox, T as TextInput, _ as ProgressBar, a as Modal, b as Confirm, c as Tabs, d as Table, f as List, g as Alert, h as Badge, i as StatusBar, j as Text, k as Static, l as Menu, m as Timer, n as KeyHint, o as Stepper, p as Tooltip, r as Header, s as Breadcrumb, t as Avatar, u as Tree, v as Spinner, w as TextArea, x as RadioGroup, y as Form, z as Box } from "./components-3-vKPu1z.mjs";
4
- import { i as useIme, n as useAnimation, r as useWindowSize, t as useBoxMetrics } from "./composables-Da3c5pxz.mjs";
1
+ import { A as useApp, D as useFocusManager, E as useFocus, S as useStdout, _ as useCursor, a as lastMouseEvent, b as useStderr, c as render, i as lastKeyEvent, l as renderToString, n as lastCompositionEvent, o as lastPasteEvent, p as measureElement, r as lastFocusEvent, s as lastResizeEvent, t as createApp, u as createRenderer, x as useStdin } from "./app-BFoESJ4g.mjs";
2
+ import { i as useIsScreenReaderEnabled, n as useKeyPress, r as usePaste, t as useInput } from "./useInput-DLlmSFXF.mjs";
3
+ import { A as Newline, C as Select, D as Code, E as Link, F as Stack, I as VStack, L as Divider, M as Card, N as Grid, O as Transform, P as HStack, R as Spacer, S as Checkbox, T as TextInput, _ as ProgressBar, a as Modal, b as Confirm, c as Tabs, d as Table, f as List, g as Alert, h as Badge, i as StatusBar, j as Text, k as Static, l as Menu, m as Timer, n as KeyHint, o as Stepper, p as Tooltip, r as Header, s as Breadcrumb, t as Avatar, u as Tree, v as Spinner, w as TextArea, x as RadioGroup, y as Form, z as Box } from "./components-DlVmYitp.mjs";
4
+ import { i as useIme, n as useAnimation, r as useWindowSize, t as useBoxMetrics } from "./composables-B8W4GFdO.mjs";
5
5
  //#region src/kittyKeyboard.ts
6
6
  /**
7
7
  * Kitty keyboard protocol constants compatible with Ink.
@@ -1,4 +1,4 @@
1
- import { M as KeyEvent, P as MouseEvent, n as FrescoNode, t as FrescoElement } from "../renderer-DWG0G3g8.mjs";
1
+ import { I as MouseEvent, P as KeyEvent, T as FrescoRenderNode, i as FrescoNode, n as AriaState, r as FrescoElement, t as AriaRole } from "../accessibility-Ca6moS43.mjs";
2
2
  import { r as FocusManager, t as UseAppReturn } from "../useApp-CNjer3hJ.mjs";
3
3
  import { App, Component, Ref, VNodeChild } from "@vue/runtime-core";
4
4
 
@@ -69,6 +69,22 @@ declare function firstChild(mounted: MountedFresco): FrescoNode;
69
69
  /** Convenience wrapper that renders `component` with `h` and mounts it. */
70
70
  declare function mountComponent(component: Component, props?: Record<string, unknown>, slot?: () => VNodeChild, options?: MountFrescoOptions): MountedFresco;
71
71
  //#endregion
72
+ //#region src/testing/queries.d.ts
73
+ type FrescoTextMatcher = string | RegExp;
74
+ interface FrescoRoleQueryOptions {
75
+ readonly name?: FrescoTextMatcher;
76
+ readonly description?: FrescoTextMatcher;
77
+ readonly state?: AriaState;
78
+ }
79
+ declare function queryAllByRole(root: FrescoNode, role: AriaRole, options?: FrescoRoleQueryOptions): FrescoNode[];
80
+ declare function getByRole(root: FrescoNode, role: AriaRole, options?: FrescoRoleQueryOptions): FrescoNode;
81
+ declare function queryAllByText(root: FrescoNode, text: FrescoTextMatcher): FrescoNode[];
82
+ declare function getByText(root: FrescoNode, text: FrescoTextMatcher): FrescoNode;
83
+ declare function queryAllByDescription(root: FrescoNode, description: FrescoTextMatcher): FrescoNode[];
84
+ declare function getByDescription(root: FrescoNode, description: FrescoTextMatcher): FrescoNode;
85
+ declare function queryAllByTestId(root: FrescoNode, testId: string): FrescoNode[];
86
+ declare function getByTestId(root: FrescoNode, testId: string): FrescoNode;
87
+ //#endregion
72
88
  //#region src/testing/index.d.ts
73
89
  type RenderTuiOptions = MountFrescoOptions;
74
90
  type RenderTuiRoot = Component | (() => VNodeChild);
@@ -80,6 +96,8 @@ interface FrescoFrameSnapshot {
80
96
  output: string;
81
97
  /** Serializable renderer tree for structural assertions. */
82
98
  tree: FrescoNodeSnapshot;
99
+ /** Stable native protocol payload for assertions before crossing into Rust. */
100
+ protocolNodes: readonly FrescoRenderNode[];
83
101
  }
84
102
  /** Input driver that injects events through Fresco's public event refs. */
85
103
  interface FrescoInputDriver {
@@ -120,5 +138,5 @@ interface RenderTuiResult extends MountedFresco {
120
138
  /** Mount a Fresco app for tests with frame snapshots and input injection. */
121
139
  declare function renderTui(root: RenderTuiRoot, options?: RenderTuiOptions): RenderTuiResult;
122
140
  //#endregion
123
- export { FrescoFrameSnapshot, FrescoInputDriver, type FrescoNodeSnapshot, KeyInput, type MountFrescoOptions, type MountedFresco, MouseInput, RenderTuiOptions, RenderTuiResult, RenderTuiRoot, dispatchKey, findNodes, firstChild, mountComponent, mountFresco, renderTui, toTreeSnapshot, typeChars };
141
+ export { FrescoFrameSnapshot, FrescoInputDriver, type FrescoNodeSnapshot, type FrescoRenderNode, type FrescoRoleQueryOptions, type FrescoTextMatcher, KeyInput, type MountFrescoOptions, type MountedFresco, MouseInput, RenderTuiOptions, RenderTuiResult, RenderTuiRoot, dispatchKey, findNodes, firstChild, getByDescription, getByRole, getByTestId, getByText, mountComponent, mountFresco, queryAllByDescription, queryAllByRole, queryAllByTestId, queryAllByText, renderTui, toTreeSnapshot, typeChars };
124
142
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/testing/mount.ts","../../src/testing/index.ts"],"mappings":";;;;;;UA+BiB,kBAAA;EAcH;EAZZ,KAAA;EAcY;EAZZ,MAAA;EAgBqB;EAdrB,YAAA;AAAA;;UAIe,aAAA;EAIf;EAFA,IAAA,EAAM,aAAA;EAEM;EAAZ,GAAA,EAAK,GAAA,CAAO,aAAA;EAEA;EAAZ,UAAA,EAAY,YAAA;EAEE;EAAd,YAAA,EAAc,YAAA;EAEO;EAArB,mBAAA,EAAqB,GAAA;EAEd;EAAP,OAAA;AAAA;;;;;;;iBASc,WAAA,CACd,IAAA,EAAM,SAAA,UAAmB,UAAA,GACzB,OAAA,GAAS,kBAAA,GACR,aAAA;;;;;;;;iBA2Da,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,aAAqB,OAAA;AA3DrD;AAAA,iBA4EM,SAAA,CAAU,IAAA,WAAe,OAAO;;;;;;;;UAarC,kBAAA;EACf,IAAA,EAAM,UAAA;EACN,IAAA;EACA,KAAA,GAAQ,MAAA;EACR,QAAA,GAAW,kBAAA;AAAA;;AAlC+D;AAiB5E;;iBA8BgB,cAAA,CAAe,IAAA,EAAM,UAAA,GAAa,kBAAkB;;iBAYpD,SAAA,CACd,IAAA,EAAM,UAAA,EACN,SAAA,GAAY,SAAA,EAAW,UAAA,eACtB,UAAA;AAhCH;AAAA,iBA2CgB,UAAA,CAAW,OAAA,EAAS,aAAA,GAAgB,UAAU;;iBAO9C,cAAA,CACd,SAAA,EAAW,SAAA,EACX,KAAA,GAAO,MAAA,mBACP,IAAA,SAAa,UAAA,EACb,OAAA,GAAS,kBAAA,GACR,aAAA;;;KCpKS,gBAAA,GAAmB,kBAAkB;AAAA,KACrC,aAAA,GAAgB,SAAA,UAAmB,UAAU;AAAA,KAC7C,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,QAAA;AAAA,KACxB,UAAA,GAAa,IAAI,CAAC,UAAA;ADP9B;AAAA,UCUiB,mBAAA;;EAEf,MAAA;EDRY;ECUZ,IAAA,EAAM,kBAAkB;AAAA;;UAIT,iBAAA;EDRS;ECUxB,GAAA,CAAI,KAAA,EAAO,QAAA,GAAW,OAAA,CAAQ,mBAAA;EDlB9B;ECoBA,IAAA,CAAK,IAAA,WAAe,OAAA,CAAQ,mBAAA;EDlB5B;ECoBA,KAAA,CAAM,IAAA,WAAe,OAAA,CAAQ,mBAAA;EDpBjB;ECsBZ,MAAA,CAAO,KAAA,UAAe,MAAA,WAAiB,OAAA,CAAQ,mBAAA;EDpBnC;ECsBZ,KAAA,CAAM,KAAA,EAAO,UAAA,GAAa,OAAA,CAAQ,mBAAA;EDpBpB;ECsBd,KAAA,CAAM,OAAA,YAAmB,OAAA,CAAQ,mBAAA;EDpBZ;ECsBrB,gBAAA,CAAiB,IAAA,WAAe,MAAA,YAAkB,OAAA,CAAQ,mBAAA;EDpBnD;ECsBP,iBAAA,CAAkB,IAAA,UAAc,MAAA,WAAiB,OAAA,CAAQ,mBAAA;EDb3C;ECed,cAAA,CAAe,IAAA,UAAc,MAAA,YAAkB,OAAA,CAAQ,mBAAA;AAAA;;UAIxC,eAAA,SAAwB,aAAA;EDjB9B;EAAA,SCmBA,MAAA;EDlBK;EAAA,SCoBL,cAAA,WAAyB,mBAAA;EDtB5B;EAAA,SCwBG,KAAA,EAAO,iBAAA;EDxBhB;EC0BA,YAAA,IAAgB,mBAAA;EDzBhB;EC2BA,SAAA;ED1Bc;EC4Bd,aAAA,IAAiB,mBAAA;AAAA;;iBA2HH,SAAA,CAAU,IAAA,EAAM,aAAA,EAAe,OAAA,GAAS,gBAAA,GAAwB,eAAA"}
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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"}
@@ -1,4 +1,4 @@
1
- import { A as SCREEN_READER_KEY, C as FOCUS_KEY, D as APP_KEY, O as createAppContext, _ as STREAMS_KEY, a as lastMouseEvent, h as createCursorContext, i as lastKeyEvent, m as CURSOR_KEY, n as lastCompositionEvent, o as lastPasteEvent, r as lastFocusEvent, s as lastResizeEvent, u as createRenderer$1, v as createStreamsContext, w as createFocusManager } from "../app-D_Ke7C8w.mjs";
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-BFoESJ4g.mjs";
2
2
  import { h, nextTick, ref } from "@vue/runtime-core";
3
3
  //#region src/testing/mount.ts
4
4
  /**
@@ -127,6 +127,99 @@ function mountComponent(component, props = {}, slot, options = {}) {
127
127
  return mountFresco(() => h(component, props, slot), options);
128
128
  }
129
129
  //#endregion
130
+ //#region src/testing/queries.ts
131
+ function stringValue(value) {
132
+ if (typeof value === "string" || typeof value === "number") return String(value);
133
+ }
134
+ function ownText(node) {
135
+ if (node.text !== void 0) return node.text;
136
+ const propText = node.props.text ?? node.props.content;
137
+ if (typeof propText === "string" || typeof propText === "number") return String(propText);
138
+ if (node.type === "input") {
139
+ const value = node.props.value;
140
+ const placeholder = node.props.placeholder;
141
+ if (typeof value === "string" || typeof value === "number") return String(value);
142
+ if (typeof placeholder === "string" || typeof placeholder === "number") return String(placeholder);
143
+ }
144
+ }
145
+ function accessibleName(node) {
146
+ const ariaLabel = stringValue(node.props["aria-label"]);
147
+ if (ariaLabel !== void 0) return ariaLabel;
148
+ const text = ownText(node);
149
+ if (text !== void 0) return text;
150
+ return node.children.map((child) => accessibleName(child)).filter(Boolean).join(" ");
151
+ }
152
+ function accessibleDescription(node) {
153
+ return stringValue(node.props["aria-description"] ?? node.props.ariaDescription ?? node.props.description);
154
+ }
155
+ function matchesText(text, matcher) {
156
+ if (typeof matcher === "string") return text === matcher;
157
+ matcher.lastIndex = 0;
158
+ return matcher.test(text);
159
+ }
160
+ function roleOf(node) {
161
+ return stringValue(node.props["aria-role"]);
162
+ }
163
+ function testIdOf(node) {
164
+ return stringValue(node.props["test-id"] ?? node.props["data-testid"]);
165
+ }
166
+ function stateOf(node) {
167
+ const state = node.props["aria-state"];
168
+ return state && typeof state === "object" ? state : {};
169
+ }
170
+ function matchesState(node, expected) {
171
+ if (expected === void 0) return true;
172
+ const actual = stateOf(node);
173
+ return Object.entries(expected).every(([key, value]) => actual[key] === value);
174
+ }
175
+ function describeRole(role, options) {
176
+ const parts = [`role ${JSON.stringify(role)}`];
177
+ if (options.name !== void 0) parts.push(`name ${String(options.name)}`);
178
+ if (options.description !== void 0) parts.push(`description ${String(options.description)}`);
179
+ if (options.state !== void 0) parts.push(`state ${JSON.stringify(options.state)}`);
180
+ return parts.join(", ");
181
+ }
182
+ function uniqueNode(nodes, description) {
183
+ if (nodes.length === 0) throw new Error(`Unable to find Fresco node with ${description}`);
184
+ if (nodes.length > 1) throw new Error(`Found ${nodes.length} Fresco nodes with ${description}`);
185
+ return nodes[0];
186
+ }
187
+ function queryAllByRole(root, role, options = {}) {
188
+ return findNodes(root, (node) => {
189
+ if (roleOf(node) !== role) return false;
190
+ if (options.name !== void 0 && !matchesText(accessibleName(node), options.name)) return false;
191
+ if (options.description !== void 0 && !matchesText(accessibleDescription(node) ?? "", options.description)) return false;
192
+ return matchesState(node, options.state);
193
+ });
194
+ }
195
+ function getByRole(root, role, options = {}) {
196
+ return uniqueNode(queryAllByRole(root, role, options), describeRole(role, options));
197
+ }
198
+ function queryAllByText(root, text) {
199
+ return findNodes(root, (node) => {
200
+ const value = ownText(node);
201
+ return value !== void 0 && matchesText(value, text);
202
+ });
203
+ }
204
+ function getByText(root, text) {
205
+ return uniqueNode(queryAllByText(root, text), `text ${String(text)}`);
206
+ }
207
+ function queryAllByDescription(root, description) {
208
+ return findNodes(root, (node) => {
209
+ const value = accessibleDescription(node);
210
+ return value !== void 0 && matchesText(value, description);
211
+ });
212
+ }
213
+ function getByDescription(root, description) {
214
+ return uniqueNode(queryAllByDescription(root, description), `description ${String(description)}`);
215
+ }
216
+ function queryAllByTestId(root, testId) {
217
+ return findNodes(root, (node) => testIdOf(node) === testId);
218
+ }
219
+ function getByTestId(root, testId) {
220
+ return uniqueNode(queryAllByTestId(root, testId), `test id ${JSON.stringify(testId)}`);
221
+ }
222
+ //#endregion
130
223
  //#region src/testing/index.ts
131
224
  /**
132
225
  * Test utilities for Fresco component and app behavior.
@@ -191,6 +284,22 @@ function latestSnapshot(snapshots) {
191
284
  if (!snapshot) throw new Error("expected renderTui to record an initial frame");
192
285
  return snapshot;
193
286
  }
287
+ function protocolSnapshot(root) {
288
+ const nodes = treeToRenderNodes(root);
289
+ const ids = new Map(nodes.map((node, index) => [node.id, index - 1]));
290
+ return nodes.map((node) => {
291
+ const id = ids.get(node.id) ?? node.id;
292
+ const children = node.children?.map((child) => ids.get(child) ?? child);
293
+ return children === void 0 ? {
294
+ ...node,
295
+ id
296
+ } : {
297
+ ...node,
298
+ id,
299
+ children
300
+ };
301
+ });
302
+ }
194
303
  async function dispatchPaste(text) {
195
304
  lastPasteEvent.value = {
196
305
  type: "paste",
@@ -241,7 +350,8 @@ function renderTui(root, options = {}) {
241
350
  staticOutput = appendOutput(staticOutput, captureStaticOutput(mounted.root, renderedStaticItems));
242
351
  const snapshot = {
243
352
  output: renderFrame(mounted.root, staticOutput),
244
- tree: toTreeSnapshot(mounted.root)
353
+ tree: toTreeSnapshot(mounted.root),
354
+ protocolNodes: protocolSnapshot(mounted.root)
245
355
  };
246
356
  frames.push(snapshot.output);
247
357
  frameSnapshots.push(snapshot);
@@ -277,6 +387,6 @@ function renderTui(root, options = {}) {
277
387
  };
278
388
  }
279
389
  //#endregion
280
- export { dispatchKey, findNodes, firstChild, mountComponent, mountFresco, renderTui, toTreeSnapshot, typeChars };
390
+ export { dispatchKey, findNodes, firstChild, getByDescription, getByRole, getByTestId, getByText, mountComponent, mountFresco, queryAllByDescription, queryAllByRole, queryAllByTestId, queryAllByText, renderTui, toTreeSnapshot, typeChars };
281
391
 
282
392
  //# sourceMappingURL=index.mjs.map