@vizejs/fresco 0.714.0 → 0.716.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.
Files changed (37) hide show
  1. package/dist/accessibility-OEhyYUxd.d.mts +88 -0
  2. package/dist/accessibility-OEhyYUxd.d.mts.map +1 -0
  3. package/dist/{app-DoXcF_Dn.mjs → app-CIX6NAW-.mjs} +209 -88
  4. package/dist/app-CIX6NAW-.mjs.map +1 -0
  5. package/dist/{app-adHHi99c.d.mts → app-CKsTWQuP.d.mts} +38 -19
  6. package/dist/app-CKsTWQuP.d.mts.map +1 -0
  7. package/dist/components/index.d.mts +2 -2
  8. package/dist/components/index.mjs +2 -2
  9. package/dist/{components-DWIDBGTL.mjs → components-D9SeB0Be.mjs} +511 -374
  10. package/dist/components-D9SeB0Be.mjs.map +1 -0
  11. package/dist/composables/index.d.mts +1 -1
  12. package/dist/composables/index.mjs +3 -3
  13. package/dist/{composables-b_R5s4QQ.mjs → composables-DbJGVNSG.mjs} +3 -3
  14. package/dist/{composables-b_R5s4QQ.mjs.map → composables-DbJGVNSG.mjs.map} +1 -1
  15. package/dist/{index-Ck5VFXgP.d.mts → index-CWRginDz.d.mts} +313 -667
  16. package/dist/index-CWRginDz.d.mts.map +1 -0
  17. package/dist/{index-B-asCcvK.d.mts → index-Dikou9bu.d.mts} +4 -2
  18. package/dist/{index-B-asCcvK.d.mts.map → index-Dikou9bu.d.mts.map} +1 -1
  19. package/dist/index.d.mts +6 -6
  20. package/dist/index.mjs +8 -5
  21. package/dist/index.mjs.map +1 -1
  22. package/dist/{protocol--xy80nuC.d.mts → protocol-D8xt3DG7.d.mts} +31 -1
  23. package/dist/protocol-D8xt3DG7.d.mts.map +1 -0
  24. package/dist/testing/index.d.mts +8 -2
  25. package/dist/testing/index.d.mts.map +1 -1
  26. package/dist/testing/index.mjs +10 -7
  27. package/dist/testing/index.mjs.map +1 -1
  28. package/dist/{useVirtualViewport-CcJuIc7U.mjs → useVirtualViewport-pPZWmwUC.mjs} +2 -2
  29. package/dist/{useVirtualViewport-CcJuIc7U.mjs.map → useVirtualViewport-pPZWmwUC.mjs.map} +1 -1
  30. package/package.json +2 -2
  31. package/dist/accessibility-D1R9HiTE.d.mts +0 -40
  32. package/dist/accessibility-D1R9HiTE.d.mts.map +0 -1
  33. package/dist/app-DoXcF_Dn.mjs.map +0 -1
  34. package/dist/app-adHHi99c.d.mts.map +0 -1
  35. package/dist/components-DWIDBGTL.mjs.map +0 -1
  36. package/dist/index-Ck5VFXgP.d.mts.map +0 -1
  37. package/dist/protocol--xy80nuC.d.mts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CWRginDz.d.mts","names":[],"sources":["../src/components/Box.ts","../src/components/FrescoSpacer.vue","../src/components/Divider.ts","../src/components/Stack.ts","../src/components/Grid.ts","../src/components/presentational-primitive-types.ts","../src/components/FrescoCard.vue","../src/components/scroll-types.ts","../src/components/ScrollBox.vue","../src/components/ScrollBar.vue","../src/components/Text.ts","../src/components/text-utility-types.ts","../src/components/FrescoNewline.vue","../src/components/FrescoStatic.vue","../src/components/display-primitive-types.ts","../src/components/FrescoTransform.vue","../src/components/Code.ts","../src/components/FrescoLink.vue","../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/FrescoSpinner.vue","../src/components/ProgressBar.ts","../src/components/FrescoAlert.vue","../src/components/FrescoBadge.vue","../src/components/Timer.ts","../src/components/FrescoTooltip.vue","../src/components/List.ts","../src/components/Table.ts","../src/components/Tree.ts","../src/components/Menu.ts","../src/components/Tabs.ts","../src/components/FrescoBreadcrumb.vue","../src/components/Stepper.ts","../src/components/Modal.ts","../src/components/StatusBar.ts","../src/components/FrescoHeader.vue","../src/components/KeyHint.ts","../src/components/FrescoAvatar.vue"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { M as MouseEvent } from "./protocol--xy80nuC.mjs";
1
+ import { M as MouseEvent } from "./protocol-D8xt3DG7.mjs";
2
2
  import { Ref } from "vue";
3
3
  //#region src/composables/useInput.d.ts
4
4
  interface Key {
@@ -216,12 +216,14 @@ interface AnimationResult {
216
216
  declare function useAnimation(options?: UseAnimationOptions): AnimationResult;
217
217
  //#endregion
218
218
  //#region src/layoutMetrics.d.ts
219
+ /** Renderer element or component public instance accepted by layout helpers. */
219
220
  interface DOMElement {
220
221
  id?: number;
221
222
  $el?: {
222
223
  id?: number;
223
224
  };
224
225
  }
226
+ /** Return the latest element dimensions, falling back to zero before layout. */
225
227
  declare function measureElement(node: DOMElement): {
226
228
  width: number;
227
229
  height: number;
@@ -247,4 +249,4 @@ declare function useBoxMetrics(ref: Ref<MetricTarget | null>): UseBoxMetricsResu
247
249
  declare function useIsScreenReaderEnabled(): boolean;
248
250
  //#endregion
249
251
  export { KeyHandler as A, UseMouseOptions as C, usePaste as D, UsePasteOptions as E, UseInputReturn as M, useInput as N, InputHandler as O, useKeyPress as P, useIme as S, useMouse as T, useStderr as _, DOMElement as a, ImeManager as b, UseAnimationOptions as c, useCursor as d, WindowSize as f, UseStdoutReturn as g, UseStdinReturn as h, useBoxMetrics as i, UseInputOptions as j, Key as k, useAnimation as l, UseStderrReturn as m, BoxMetrics as n, measureElement as o, useWindowSize as p, UseBoxMetricsResult as r, AnimationResult as s, useIsScreenReaderEnabled as t, CursorPosition as u, useStdin as v, UseMouseReturn as w, UseImeOptions as x, useStdout as y };
250
- //# sourceMappingURL=index-B-asCcvK.d.mts.map
252
+ //# sourceMappingURL=index-Dikou9bu.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-B-asCcvK.d.mts","names":[],"sources":["../src/composables/useInput.ts","../src/composables/usePaste.ts","../src/composables/useMouse.ts","../src/composables/useIme.ts","../src/composables/useStreams.ts","../src/composables/useWindowSize.ts","../src/composables/useCursor.ts","../src/composables/useAnimation.ts","../src/layoutMetrics.ts","../src/composables/useBoxMetrics.ts","../src/composables/useIsScreenReaderEnabled.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index-Dikou9bu.d.mts","names":[],"sources":["../src/composables/useInput.ts","../src/composables/usePaste.ts","../src/composables/useMouse.ts","../src/composables/useIme.ts","../src/composables/useStreams.ts","../src/composables/useWindowSize.ts","../src/composables/useCursor.ts","../src/composables/useAnimation.ts","../src/layoutMetrics.ts","../src/composables/useBoxMetrics.ts","../src/composables/useIsScreenReaderEnabled.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { A as KeyEvent, C as FrescoRenderStyle, D as FrescoTextRenderNode, E as FrescoStyle, M as MouseEvent, N as PasteEvent, O as FrescoTextWrapMode, P as ResizeEvent, S as FrescoRenderNodeKind, T as FrescoSnakeStyleAliases, _ as FrescoModifiers, a as FrescoAlignSelf, b as FrescoPosition, c as FrescoBoxRenderNode, d as FrescoDisplay, f as FrescoFlexDirection, g as FrescoJustifyContent, h as FrescoInputRenderNode, i as FrescoAlignItems, j as KeyEventType, k as InputEvent, l as FrescoCanonicalStyle, m as FrescoInputEvent, n as FocusEvent, o as FrescoAppearance, p as FrescoFlexWrap, r as FrescoAlignContent, s as FrescoBorderStyle, t as CompositionEvent, u as FrescoDimension, v as FrescoMouseEventKind, w as FrescoRootRenderNode, x as FrescoRenderNode, y as FrescoOverflow } from "./protocol--xy80nuC.mjs";
2
- import { a as createRenderer } from "./accessibility-D1R9HiTE.mjs";
3
- import { $ as FormProps, A as TableColumn, At as ScrollBoxExposed, B as TimerProps, Bt as VStack, C as Menu, Ct as NewlineProps, D as TreeNode, Dt as _default$1, E as Tree, Et as _default, F as Tooltip, Ft as Grid, G as AlertProps, Gt as BoxProps, H as BadgeProps, Ht as DividerProps, I as TooltipPosition, It as GridProps, J as ProgressBarProps, K as AlertType, L as TooltipProps, Lt as HStack, M as List, Mt as ScrollBoxProps, N as ListItem, Nt as Card, O as TreeProps, Ot as ScrollBarOrientation, P as ListProps, Pt as CardProps, Q as FormField, R as Timer, Rt as Stack, S as TabsProps, St as Newline, T as MenuProps, Tt as TextProps, U as BadgeVariant, Ut as Spacer, V as Badge, Vt as Divider, W as Alert, Wt as Box, 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 ScrollBoxItemSlot, k as Table, kt as ScrollBarProps, 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, zt as StackProps } from "./index-Ck5VFXgP.mjs";
1
+ import { A as KeyEvent, C as FrescoRenderStyle, D as FrescoTextRenderNode, E as FrescoStyle, M as MouseEvent, N as PasteEvent, O as FrescoTextWrapMode, P as ResizeEvent, S as FrescoRenderNodeKind, T as FrescoSnakeStyleAliases, _ as FrescoModifiers, a as FrescoAlignSelf, b as FrescoPosition, c as FrescoBoxRenderNode, d as FrescoDisplay, f as FrescoFlexDirection, g as FrescoJustifyContent, h as FrescoInputRenderNode, i as FrescoAlignItems, j as KeyEventType, k as InputEvent, l as FrescoCanonicalStyle, m as FrescoInputEvent, n as FocusEvent, o as FrescoAppearance, p as FrescoFlexWrap, r as FrescoAlignContent, s as FrescoBorderStyle, t as CompositionEvent, u as FrescoDimension, v as FrescoMouseEventKind, w as FrescoRootRenderNode, x as FrescoRenderNode, y as FrescoOverflow } from "./protocol-D8xt3DG7.mjs";
2
+ import { a as FrescoHostNode, c as FrescoNodeUpdateKind, l as FrescoRendererOptions, r as FrescoDeclaredSize, s as FrescoNodeLifecycleHooks, u as createRenderer } from "./accessibility-OEhyYUxd.mjs";
3
+ import { $ as TextArea, A as ListProps, At as BreadcrumbProps, B as Form, Bt as VStack, C as TreeNode, Ct as ScrollBoxItemSlot, D as TableProps, Dt as AlertType, E as TableColumn, Et as AlertProps, F as _default$2, Ft as Grid, G as RadioGroup, Gt as BoxProps, H as FormProps, Ht as DividerProps, I as _default, It as GridProps, J as Checkbox, K as RadioGroupProps, L as ProgressBar, Lt as HStack, M as Timer, Mt as HeaderProps, N as TimerMode, Nt as TooltipPosition, O as List, Ot as AvatarProps, P as TimerProps, Pt as TooltipProps, Q as SelectProps, R as ProgressBarProps, Rt as Stack, S as Tree, St as ScrollBoxExposed, T as Table, Tt as _default$4, U as Confirm, Ut as _default$10, V as FormField, Vt as Divider, W as ConfirmProps, Wt as Box, X as Select, Y as CheckboxProps, Z as SelectOption, _ as Tabs, _t as TextProps, a as _default$5, at as CodeProps, b as MenuItem, bt as ScrollBarOrientation, c as StatusBarProps, ct as BadgeVariant, d as Step, dt as StaticProps, et as TextAreaProps, f as StepStatus, ft as _default$12, g as Tab, gt as Text, h as _default$3, ht as TransformProps, i as KeyHintProps, it as Code, j as _default$13, jt as CardProps, k as ListItem, kt as BreadcrumbItem, l as Modal, lt as LinkProps, m as StepperProps, mt as NewlineProps, n as KeyBinding, nt as TextInputProps, o as StatusBar, ot as _default$14, p as Stepper, pt as _default$7, q as RadioOption, r as KeyHint, rt as _default$6, s as StatusBarItem, st as BadgeProps, t as _default$1, tt as TextInput, u as ModalProps, ut as SpinnerProps, v as TabsProps, vt as _default$8, w as TreeProps, wt as ScrollBoxProps, x as MenuProps, xt as ScrollBarProps, y as Menu, yt as _default$9, z as _default$11, zt as StackProps } from "./index-CWRginDz.mjs";
4
4
  import { a as createVirtualViewport, i as VirtualViewportRange, n as VirtualViewport, o as useVirtualViewport, r as VirtualViewportOptions, t as VirtualScrollAlignment } from "./useVirtualViewport-TxTapifg.mjs";
5
- import { A as KeyHandler, C as UseMouseOptions, D as usePaste, E as UsePasteOptions, M as UseInputReturn, N as useInput, O as InputHandler, P as useKeyPress, S as useIme, T as useMouse, _ 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 UseInputOptions, k as Key, 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 UseMouseReturn, x as UseImeOptions, y as useStdout } from "./index-B-asCcvK.mjs";
5
+ import { A as KeyHandler, C as UseMouseOptions, D as usePaste, E as UsePasteOptions, M as UseInputReturn, N as useInput, O as InputHandler, P as useKeyPress, S as useIme, T as useMouse, _ 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 UseInputOptions, k as Key, 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 UseMouseReturn, x as UseImeOptions, y as useStdout } from "./index-Dikou9bu.mjs";
6
6
  import { a as useFocus, i as UseFocusOptions, n as useApp, o as useFocusManager, r as FocusManager, t as UseAppReturn } from "./useApp-CVB2jNCO.mjs";
7
- 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-adHHi99c.mjs";
7
+ 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-CKsTWQuP.mjs";
8
8
  import { FlexStyleNapi, ImeStateNapi, InputEventNapi, LayoutResultNapi, ModifiersNapi, RenderNodeNapi, StyleNapi, TerminalInfoNapi, TerminalOptionsNapi } from "@vizejs/fresco-native";
9
- 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 FrescoMouseEventKind, 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, _default as ScrollBar, type ScrollBarOrientation, type ScrollBarProps, _default$1 as ScrollBox, type ScrollBoxExposed, type ScrollBoxItemSlot, type ScrollBoxProps, 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 UseMouseOptions, type UseMouseReturn, type UsePasteOptions, type UseStderrReturn, type UseStdinReturn, type UseStdoutReturn, VStack, type VirtualScrollAlignment, type VirtualViewport, type VirtualViewportOptions, type VirtualViewportRange, type WindowSize, createApp, createRenderer, createVirtualViewport, kittyFlags, kittyModifiers, lastCompositionEvent, lastFocusEvent, lastKeyEvent, lastMouseEvent, lastPasteEvent, lastResizeEvent, measureElement, render, renderToString, resolveKittyFlags, useAnimation, useApp, useBoxMetrics, useCursor, useFocus, useFocusManager, useIme, useInput, useIsScreenReaderEnabled, useKeyPress, useMouse, usePaste, useStderr, useStdin, useStdout, useVirtualViewport, useWindowSize };
9
+ export { _default as Alert, type AlertProps, type AlertType, type AnimationResult, type App, type AppOptions, _default$1 as Avatar, type AvatarProps, _default$2 as Badge, type BadgeProps, type BadgeVariant, Box, type BoxMetrics, type BoxProps, _default$3 as Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, _default$4 as 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 FrescoDeclaredSize, type FrescoDimension, type FrescoDisplay, type FrescoFlexDirection, type FrescoFlexWrap, type FrescoHostNode, type FrescoInputEvent, type FrescoInputRenderNode, type FrescoJustifyContent, type FrescoModifiers, type FrescoMouseEventKind, type FrescoNodeLifecycleHooks, type FrescoNodeUpdateKind, type FrescoOverflow, type FrescoPosition, type FrescoRenderNode, type FrescoRenderNodeKind, type FrescoRenderStyle, type FrescoRendererOptions, type FrescoRootRenderNode, type FrescoSnakeStyleAliases, type FrescoStyle, type FrescoTextRenderNode, type FrescoTextWrapMode, Grid, type GridProps, HStack, _default$5 as 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, _default$6 as Link, type LinkProps, List, type ListItem, type ListProps, Menu, type MenuItem, type MenuProps, Modal, type ModalProps, type ModifiersNapi, type MouseEvent, _default$7 as 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, _default$8 as ScrollBar, type ScrollBarOrientation, type ScrollBarProps, _default$9 as ScrollBox, type ScrollBoxExposed, type ScrollBoxItemSlot, type ScrollBoxProps, Select, type SelectOption, type SelectProps, _default$10 as Spacer, _default$11 as Spinner, type SpinnerProps, Stack, type StackProps, _default$12 as 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, _default$13 as Tooltip, type TooltipPosition, type TooltipProps, _default$14 as Transform, type TransformProps, Tree, type TreeNode, type TreeProps, type UseAnimationOptions, type UseAppReturn, type UseBoxMetricsResult, type UseFocusOptions, type UseImeOptions, type UseInputOptions, type UseInputReturn, type UseMouseOptions, type UseMouseReturn, type UsePasteOptions, type UseStderrReturn, type UseStdinReturn, type UseStdoutReturn, VStack, type VirtualScrollAlignment, type VirtualViewport, type VirtualViewportOptions, type VirtualViewportRange, type WindowSize, createApp, createRenderer, createVirtualViewport, kittyFlags, kittyModifiers, lastCompositionEvent, lastFocusEvent, lastKeyEvent, lastMouseEvent, lastPasteEvent, lastResizeEvent, measureElement, render, renderToString, resolveKittyFlags, useAnimation, useApp, useBoxMetrics, useCursor, useFocus, useFocusManager, useIme, useInput, useIsScreenReaderEnabled, useKeyPress, useMouse, usePaste, useStderr, useStdin, useStdout, useVirtualViewport, useWindowSize };
package/dist/index.mjs CHANGED
@@ -1,11 +1,12 @@
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-DoXcF_Dn.mjs";
2
- import { a as useKeyPress, i as useInput, n as useVirtualViewport, o as usePaste, r as useMouse, s as useIsScreenReaderEnabled, t as createVirtualViewport } from "./useVirtualViewport-CcJuIc7U.mjs";
3
- import { A as Newline, B as Spacer, C as Select, D as Code, E as Link, F as Grid, I as HStack, L as Stack, M as ScrollBar_default, N as Text, O as Transform, P as Card, R as VStack, S as Checkbox, T as TextInput, V as Box, _ 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 ScrollBox_default, 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 Divider } from "./components-DWIDBGTL.mjs";
4
- import { i as useIme, n as useAnimation, r as useWindowSize, t as useBoxMetrics } from "./composables-b_R5s4QQ.mjs";
1
+ import { C as useStdin, M as useApp, O as useFocus, S as useStderr, a as lastMouseEvent, c as render, f as createRenderer, h as measureElement, i as lastKeyEvent, k as useFocusManager, l as renderToString, n as lastCompositionEvent, o as lastPasteEvent, r as lastFocusEvent, s as lastResizeEvent, t as createApp, w as useStdout, y as useCursor } from "./app-CIX6NAW-.mjs";
2
+ import { a as useKeyPress, i as useInput, n as useVirtualViewport, o as usePaste, r as useMouse, s as useIsScreenReaderEnabled, t as createVirtualViewport } from "./useVirtualViewport-pPZWmwUC.mjs";
3
+ import { A as FrescoNewline_default, B as FrescoSpacer_default, C as Select, D as Code, E as FrescoLink_default, F as Grid, I as HStack, L as Stack, M as ScrollBar_default, N as Text, O as FrescoTransform_default, P as FrescoCard_default, R as VStack, S as Checkbox, T as TextInput, V as Box, _ as ProgressBar, a as Modal, b as Confirm, c as Tabs, d as Table, f as List, g as FrescoAlert_default, h as FrescoBadge_default, i as StatusBar, j as ScrollBox_default, k as FrescoStatic_default, l as Menu, m as Timer, n as KeyHint, o as Stepper, p as FrescoTooltip_default, r as FrescoHeader_default, s as FrescoBreadcrumb_default, t as FrescoAvatar_default, u as Tree, v as FrescoSpinner_default, w as TextArea, x as RadioGroup, y as Form, z as Divider } from "./components-D9SeB0Be.mjs";
4
+ import { i as useIme, n as useAnimation, r as useWindowSize, t as useBoxMetrics } from "./composables-DbJGVNSG.mjs";
5
5
  //#region src/kittyKeyboard.ts
6
6
  /**
7
7
  * Kitty keyboard protocol constants compatible with Ink.
8
8
  */
9
+ /** Bit values defined by the Kitty keyboard progressive-enhancement protocol. */
9
10
  const kittyFlags = {
10
11
  disambiguateEscapeCodes: 1,
11
12
  reportEventTypes: 2,
@@ -13,9 +14,11 @@ const kittyFlags = {
13
14
  reportAllKeysAsEscapeCodes: 8,
14
15
  reportAssociatedText: 16
15
16
  };
17
+ /** Combine named Kitty keyboard flags into the protocol bit mask. */
16
18
  function resolveKittyFlags(flags) {
17
19
  return flags.reduce((bits, flag) => bits | kittyFlags[flag], 0);
18
20
  }
21
+ /** Modifier bit values reported by the Kitty keyboard protocol. */
19
22
  const kittyModifiers = {
20
23
  shift: 1,
21
24
  alt: 2,
@@ -27,6 +30,6 @@ const kittyModifiers = {
27
30
  numLock: 128
28
31
  };
29
32
  //#endregion
30
- export { Alert, Avatar, Badge, Box, Breadcrumb, Card, Checkbox, Code, Confirm, Divider, Form, Grid, HStack, Header, KeyHint, Link, List, Menu, Modal, Newline, ProgressBar, RadioGroup, ScrollBar_default as ScrollBar, ScrollBox_default as ScrollBox, Select, Spacer, Spinner, Stack, Static, StatusBar, Stepper, Table, Tabs, Text, TextArea, TextInput, Timer, Tooltip, Transform, Tree, VStack, createApp, createRenderer, createVirtualViewport, kittyFlags, kittyModifiers, lastCompositionEvent, lastFocusEvent, lastKeyEvent, lastMouseEvent, lastPasteEvent, lastResizeEvent, measureElement, render, renderToString, resolveKittyFlags, useAnimation, useApp, useBoxMetrics, useCursor, useFocus, useFocusManager, useIme, useInput, useIsScreenReaderEnabled, useKeyPress, useMouse, usePaste, useStderr, useStdin, useStdout, useVirtualViewport, useWindowSize };
33
+ export { FrescoAlert_default as Alert, FrescoAvatar_default as Avatar, FrescoBadge_default as Badge, Box, FrescoBreadcrumb_default as Breadcrumb, FrescoCard_default as Card, Checkbox, Code, Confirm, Divider, Form, Grid, HStack, FrescoHeader_default as Header, KeyHint, FrescoLink_default as Link, List, Menu, Modal, FrescoNewline_default as Newline, ProgressBar, RadioGroup, ScrollBar_default as ScrollBar, ScrollBox_default as ScrollBox, Select, FrescoSpacer_default as Spacer, FrescoSpinner_default as Spinner, Stack, FrescoStatic_default as Static, StatusBar, Stepper, Table, Tabs, Text, TextArea, TextInput, Timer, FrescoTooltip_default as Tooltip, FrescoTransform_default as Transform, Tree, VStack, createApp, createRenderer, createVirtualViewport, kittyFlags, kittyModifiers, lastCompositionEvent, lastFocusEvent, lastKeyEvent, lastMouseEvent, lastPasteEvent, lastResizeEvent, measureElement, render, renderToString, resolveKittyFlags, useAnimation, useApp, useBoxMetrics, useCursor, useFocus, useFocusManager, useIme, useInput, useIsScreenReaderEnabled, useKeyPress, useMouse, usePaste, useStderr, useStdin, useStdout, useVirtualViewport, useWindowSize };
31
34
 
32
35
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/kittyKeyboard.ts"],"sourcesContent":["/**\n * Kitty keyboard protocol constants compatible with Ink.\n */\n\nexport const kittyFlags = {\n disambiguateEscapeCodes: 1,\n reportEventTypes: 2,\n reportAlternateKeys: 4,\n reportAllKeysAsEscapeCodes: 8,\n reportAssociatedText: 16,\n} as const;\n\nexport type KittyFlagName = keyof typeof kittyFlags;\n\nexport interface KittyKeyboardOptions {\n mode?: \"auto\" | \"enabled\" | \"disabled\";\n flags?: KittyFlagName[];\n}\n\nexport function resolveKittyFlags(flags: KittyFlagName[]): number {\n return flags.reduce((bits, flag) => bits | kittyFlags[flag], 0);\n}\n\nexport const kittyModifiers = {\n shift: 1,\n alt: 2,\n ctrl: 4,\n super: 8,\n hyper: 16,\n meta: 32,\n capsLock: 64,\n numLock: 128,\n} as const;\n"],"mappings":";;;;;;;;AAIA,MAAa,aAAa;CACxB,yBAAyB;CACzB,kBAAkB;CAClB,qBAAqB;CACrB,4BAA4B;CAC5B,sBAAsB;AACxB;AASA,SAAgB,kBAAkB,OAAgC;CAChE,OAAO,MAAM,QAAQ,MAAM,SAAS,OAAO,WAAW,OAAO,CAAC;AAChE;AAEA,MAAa,iBAAiB;CAC5B,OAAO;CACP,KAAK;CACL,MAAM;CACN,OAAO;CACP,OAAO;CACP,MAAM;CACN,UAAU;CACV,SAAS;AACX"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/kittyKeyboard.ts"],"sourcesContent":["/**\n * Kitty keyboard protocol constants compatible with Ink.\n */\n\n/** Bit values defined by the Kitty keyboard progressive-enhancement protocol. */\nexport const kittyFlags = {\n disambiguateEscapeCodes: 1,\n reportEventTypes: 2,\n reportAlternateKeys: 4,\n reportAllKeysAsEscapeCodes: 8,\n reportAssociatedText: 16,\n} as const;\n\n/** Supported Kitty keyboard protocol flag name. */\nexport type KittyFlagName = keyof typeof kittyFlags;\n\n/** Kitty keyboard protocol negotiation options. */\nexport interface KittyKeyboardOptions {\n /** Whether protocol negotiation is automatic, forced, or disabled. @default \"auto\" */\n mode?: \"auto\" | \"enabled\" | \"disabled\";\n /** Progressive-enhancement flags requested from the terminal. @default [] */\n flags?: KittyFlagName[];\n}\n\n/** Combine named Kitty keyboard flags into the protocol bit mask. */\nexport function resolveKittyFlags(flags: KittyFlagName[]): number {\n return flags.reduce((bits, flag) => bits | kittyFlags[flag], 0);\n}\n\n/** Modifier bit values reported by the Kitty keyboard protocol. */\nexport const kittyModifiers = {\n shift: 1,\n alt: 2,\n ctrl: 4,\n super: 8,\n hyper: 16,\n meta: 32,\n capsLock: 64,\n numLock: 128,\n} as const;\n"],"mappings":";;;;;;;;;AAKA,MAAa,aAAa;CACxB,yBAAyB;CACzB,kBAAkB;CAClB,qBAAqB;CACrB,4BAA4B;CAC5B,sBAAsB;AACxB;;AAcA,SAAgB,kBAAkB,OAAgC;CAChE,OAAO,MAAM,QAAQ,MAAM,SAAS,OAAO,WAAW,OAAO,CAAC;AAChE;;AAGA,MAAa,iBAAiB;CAC5B,OAAO;CACP,KAAK;CACL,MAAM;CACN,OAAO;CACP,OAAO;CACP,MAAM;CACN,UAAU;CACV,SAAS;AACX"}
@@ -1,15 +1,26 @@
1
1
  //#region src/protocol.d.ts
2
2
  /** Public JavaScript protocol shared by Fresco components and the renderer. */
3
+ /** Discriminant shared by JavaScript and native render nodes. */
3
4
  type FrescoRenderNodeKind = "root" | "box" | "text" | "input";
5
+ /** Numeric or CSS-like dimension accepted by component style props. */
4
6
  type FrescoDimension = number | string;
7
+ /** Display modes supported by the native layout engine. */
5
8
  type FrescoDisplay = "flex" | "none";
9
+ /** Positioning modes supported by the native layout engine. */
6
10
  type FrescoPosition = "absolute" | "relative" | "static";
11
+ /** Overflow behavior accepted on either layout axis. */
7
12
  type FrescoOverflow = "visible" | "hidden" | "scroll";
13
+ /** Main-axis direction accepted by Fresco flex layouts. */
8
14
  type FrescoFlexDirection = "row" | "column" | "row-reverse" | "column-reverse";
15
+ /** Flex-line wrapping mode accepted by Fresco layouts. */
9
16
  type FrescoFlexWrap = "nowrap" | "wrap" | "wrap-reverse";
17
+ /** Main-axis distribution accepted by Fresco flex layouts. */
10
18
  type FrescoJustifyContent = "flex-start" | "flex-end" | "start" | "end" | "center" | "space-between" | "space-around" | "space-evenly";
19
+ /** Cross-axis item alignment accepted by Fresco layouts. */
11
20
  type FrescoAlignItems = "flex-start" | "flex-end" | "start" | "end" | "center" | "stretch" | "baseline";
21
+ /** Per-item cross-axis override accepted by Fresco layouts. */
12
22
  type FrescoAlignSelf = "auto" | FrescoAlignItems;
23
+ /** Multi-line cross-axis distribution accepted by Fresco layouts. */
13
24
  type FrescoAlignContent = "flex-start" | "flex-end" | "start" | "end" | "center" | "stretch" | "space-between" | "space-around" | "space-evenly";
14
25
  /** Canonical camelCase style fields. Components accept number or string dimensions. */
15
26
  interface FrescoCanonicalStyle<Dimension extends FrescoDimension = FrescoDimension> {
@@ -81,9 +92,11 @@ interface FrescoSnakeStyleAliases<Dimension extends FrescoDimension = FrescoDime
81
92
  column_gap?: number;
82
93
  row_gap?: number;
83
94
  }
95
+ /** Complete public style bag with canonical fields and compatibility aliases. */
84
96
  type FrescoStyle<Dimension extends FrescoDimension = FrescoDimension> = FrescoCanonicalStyle<Dimension> & FrescoSnakeStyleAliases<Dimension>;
85
97
  /** Canonical style emitted to the native renderer. Dimensions are normalized to strings. */
86
98
  type FrescoRenderStyle = FrescoCanonicalStyle<string>;
99
+ /** Terminal color and text attributes emitted with a render node. */
87
100
  interface FrescoAppearance {
88
101
  fg?: string;
89
102
  bg?: string;
@@ -96,7 +109,9 @@ interface FrescoAppearance {
96
109
  hidden?: boolean;
97
110
  strikethrough?: boolean;
98
111
  }
112
+ /** Border glyph family rendered around a box. */
99
113
  type FrescoBorderStyle = "none" | "single" | "double" | "rounded" | "heavy" | "dashed";
114
+ /** Wrapping or truncation policy for native text nodes. */
100
115
  type FrescoTextWrapMode = "none" | "wrap" | "hard" | "truncate" | "truncate-start" | "truncate-middle" | "truncate-end";
101
116
  interface FrescoRenderNodeBase {
102
117
  id: number;
@@ -105,18 +120,22 @@ interface FrescoRenderNodeBase {
105
120
  border?: FrescoBorderStyle;
106
121
  children?: number[];
107
122
  }
123
+ /** Root node sent to the native renderer. */
108
124
  interface FrescoRootRenderNode extends FrescoRenderNodeBase {
109
125
  nodeType: "root";
110
126
  }
127
+ /** Layout and appearance-only box node sent to the native renderer. */
111
128
  interface FrescoBoxRenderNode extends FrescoRenderNodeBase {
112
129
  nodeType: "box";
113
130
  }
131
+ /** Text node sent to the native renderer. */
114
132
  interface FrescoTextRenderNode extends FrescoRenderNodeBase {
115
133
  nodeType: "text";
116
134
  text?: string;
117
135
  wrap?: boolean;
118
136
  wrapMode?: FrescoTextWrapMode;
119
137
  }
138
+ /** Editable text input node sent to the native renderer. */
120
139
  interface FrescoInputRenderNode extends FrescoRenderNodeBase {
121
140
  nodeType: "input";
122
141
  value?: string;
@@ -129,8 +148,11 @@ interface FrescoInputRenderNode extends FrescoRenderNodeBase {
129
148
  type UnionKeys<Union> = Union extends Union ? keyof Union : never;
130
149
  type StrictUnionHelper<Member, Union> = Member extends Member ? Member & Partial<Record<Exclude<UnionKeys<Union>, keyof Member>, never>> : never;
131
150
  type StrictUnion<Union> = StrictUnionHelper<Union, Union>;
151
+ /** Strict discriminated union accepted by the native render bridge. */
132
152
  type FrescoRenderNode = StrictUnion<FrescoRootRenderNode | FrescoBoxRenderNode | FrescoTextRenderNode | FrescoInputRenderNode>;
153
+ /** Lifecycle phase attached to a normalized keyboard event. */
133
154
  type KeyEventType = "press" | "repeat" | "release";
155
+ /** Modifier state shared by keyboard and mouse events. */
134
156
  interface FrescoModifiers {
135
157
  ctrl: boolean;
136
158
  alt: boolean;
@@ -141,22 +163,27 @@ interface FrescoModifiers {
141
163
  capsLock: boolean;
142
164
  numLock: boolean;
143
165
  }
166
+ /** Normalized keyboard event exposed to components and composables. */
144
167
  interface KeyEvent extends FrescoModifiers {
145
168
  type: "key";
146
169
  key?: string;
147
170
  char?: string;
148
171
  eventType?: KeyEventType;
149
172
  }
173
+ /** Bracketed-paste input event. */
150
174
  interface PasteEvent {
151
175
  type: "paste";
152
176
  text: string;
153
177
  }
178
+ /** Terminal viewport resize event. */
154
179
  interface ResizeEvent {
155
180
  type: "resize";
156
181
  width: number;
157
182
  height: number;
158
183
  }
184
+ /** Mouse transition or scroll direction reported by the terminal. */
159
185
  type FrescoMouseEventKind = "down" | "up" | "drag" | "moved" | "scroll-up" | "scroll-down" | "scroll-left" | "scroll-right";
186
+ /** Normalized mouse event exposed to components and composables. */
160
187
  interface MouseEvent {
161
188
  type: "mouse";
162
189
  kind?: FrescoMouseEventKind;
@@ -165,18 +192,21 @@ interface MouseEvent {
165
192
  y: number;
166
193
  modifiers?: FrescoModifiers;
167
194
  }
195
+ /** Terminal focus-in or focus-out event. */
168
196
  interface FocusEvent {
169
197
  type: "focus";
170
198
  focused: boolean;
171
199
  }
200
+ /** IME composition lifecycle event with text and cursor state. */
172
201
  interface CompositionEvent {
173
202
  type: "compositionstart" | "compositionupdate" | "compositionend";
174
203
  text: string;
175
204
  cursor: number;
176
205
  }
206
+ /** Strict union of every public terminal input event. */
177
207
  type FrescoInputEvent = StrictUnion<KeyEvent | PasteEvent | ResizeEvent | MouseEvent | FocusEvent | CompositionEvent>;
178
208
  /** Compatibility alias for the pre-protocol event union name. */
179
209
  type InputEvent = FrescoInputEvent;
180
210
  //#endregion
181
211
  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
212
+ //# sourceMappingURL=protocol-D8xt3DG7.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-D8xt3DG7.d.mts","names":[],"sources":["../src/protocol.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
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";
1
+ import { A as KeyEvent, M as MouseEvent, x as FrescoRenderNode } from "../protocol-D8xt3DG7.mjs";
2
+ import { i as FrescoElement, n as AriaState, o as FrescoNode, s as FrescoNodeLifecycleHooks, t as AriaRole, u as createRenderer$1 } from "../accessibility-OEhyYUxd.mjs";
3
3
  import { r as FocusManager, t as UseAppReturn } from "../useApp-CVB2jNCO.mjs";
4
4
  import { App, Component, Ref, VNodeChild } from "vue";
5
5
 
@@ -12,6 +12,10 @@ interface MountFrescoOptions {
12
12
  height?: number;
13
13
  /** Initial screen reader mode. Defaults to false. */
14
14
  screenReader?: boolean;
15
+ /** Observe host-tree mutations that require a native frame. */
16
+ onMutation?: () => void;
17
+ /** Observe host-node lifecycle transitions. */
18
+ lifecycle?: FrescoNodeLifecycleHooks;
15
19
  }
16
20
  /** A mounted Fresco component tree under test. */
17
21
  interface MountedFresco {
@@ -25,6 +29,8 @@ interface MountedFresco {
25
29
  focusManager: FocusManager;
26
30
  /** Screen reader flag provided to the tree; writable to flip modes. */
27
31
  screenReaderEnabled: Ref<boolean>;
32
+ /** Renderer controls for stable lookup and recursive disposal. */
33
+ renderer: ReturnType<typeof createRenderer$1>;
28
34
  /** Unmount the tree and dispose all component watchers. */
29
35
  unmount(): void;
30
36
  }
@@ -1 +1 @@
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
+ {"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 { 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";
1
+ import { A as APP_KEY, D as createFocusManager, E as FOCUS_KEY, N as SCREEN_READER_KEY, _ as CURSOR_KEY, a as lastMouseEvent, b as STREAMS_KEY, d as isStaticNode, f as createRenderer$1, i as lastKeyEvent, j as createAppContext, n as lastCompositionEvent, o as lastPasteEvent, p as treeToRenderNodes, r as lastFocusEvent, s as lastResizeEvent, u as isStaticItemNode, v as createCursorContext, x as createStreamsContext } from "../app-CIX6NAW-.mjs";
2
2
  import { h, nextTick, ref } from "vue";
3
3
  //#region src/testing/mount.ts
4
4
  /**
@@ -20,7 +20,11 @@ import { h, nextTick, ref } from "vue";
20
20
  * updates plus `await nextTick()` to observe the patched output tree.
21
21
  */
22
22
  function mountFresco(root, options = {}) {
23
- const { createApp } = createRenderer$1();
23
+ const renderer = createRenderer$1({
24
+ onMutation: options.onMutation,
25
+ lifecycle: options.lifecycle
26
+ });
27
+ const { createApp } = renderer;
24
28
  const app = createApp(typeof root === "function" ? { setup: () => root } : root);
25
29
  const focusManager = createFocusManager();
26
30
  const screenReaderEnabled = ref(options.screenReader ?? false);
@@ -60,6 +64,7 @@ function mountFresco(root, options = {}) {
60
64
  appContext,
61
65
  focusManager,
62
66
  screenReaderEnabled,
67
+ renderer,
63
68
  unmount: () => app.unmount()
64
69
  };
65
70
  }
@@ -239,9 +244,6 @@ function nodeText(node) {
239
244
  if (typeof placeholder === "string" || typeof placeholder === "number") return String(placeholder);
240
245
  return "";
241
246
  }
242
- function isStaticNode(node) {
243
- return node.props.internal_static === true || node.props.internalStatic === true;
244
- }
245
247
  function joinOutput(parts, separator = "\n") {
246
248
  return parts.filter(Boolean).join(separator);
247
249
  }
@@ -266,9 +268,10 @@ function captureStaticOutput(node, renderedStaticItems) {
266
268
  const visit = (current) => {
267
269
  if (isStaticNode(current)) {
268
270
  const renderedItems = renderedStaticItems.get(current.id) ?? 0;
269
- const nextOutput = joinOutput(current.children.slice(renderedItems).map((child) => treeToFrameOutput(child)), "\n");
271
+ const staticItems = current.children.filter(isStaticItemNode);
272
+ const nextOutput = joinOutput(staticItems.slice(renderedItems).map((child) => treeToFrameOutput(child)), "\n");
270
273
  if (nextOutput) output.push(nextOutput);
271
- renderedStaticItems.set(current.id, current.children.length);
274
+ renderedStaticItems.set(current.id, staticItems.length);
272
275
  return;
273
276
  }
274
277
  for (const child of current.children) visit(child);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["createRenderer"],"sources":["../../src/testing/mount.ts","../../src/testing/queries.ts","../../src/testing/index.ts"],"sourcesContent":["/**\n * Test-only mount harness for the Fresco JS layer.\n *\n * Fresco's renderer is pure JS up to the byte boundary that crosses into the\n * native module: `renderer.ts` imports only types from `@vizejs/fresco-native`,\n * and `app.ts` loads the native binding lazily and only in interactive mode.\n * This harness mounts components through the real custom renderer with the\n * same provide set `createApp`/`renderToString` install, so tests assert the\n * mounted `FrescoNode` output tree without a native build and without mocks.\n *\n * Not exported from the package entry points; `vp pack` does not ship it.\n */\n\nimport {\n h,\n ref,\n nextTick,\n type App as VueApp,\n type Component,\n type Ref,\n type VNodeChild,\n} from \"vue\";\nimport { SCREEN_READER_KEY } from \"../accessibility.js\";\nimport { lastKeyEvent, type KeyEvent } from \"../app.js\";\nimport { APP_KEY, createAppContext, type UseAppReturn } from \"../composables/useApp.js\";\nimport { createCursorContext, CURSOR_KEY } from \"../composables/useCursor.js\";\nimport { createFocusManager, FOCUS_KEY, type FocusManager } from \"../composables/useFocus.js\";\nimport { createStreamsContext, STREAMS_KEY } from \"../composables/useStreams.js\";\nimport { createRenderer, type FrescoElement, type FrescoNode } from \"../renderer.js\";\n\n/** Options for {@link mountFresco}. */\nexport interface MountFrescoOptions {\n /** Terminal width provided through the app context. Defaults to 80. */\n width?: number;\n /** Terminal height provided through the app context. Defaults to 24. */\n height?: number;\n /** Initial screen reader mode. Defaults to false. */\n screenReader?: boolean;\n}\n\n/** A mounted Fresco component tree under test. */\nexport interface MountedFresco {\n /** Root element the Vue app mounted into; children form the output tree. */\n root: FrescoElement;\n /** The Vue app instance (for `provide`-level introspection if needed). */\n app: VueApp<FrescoElement>;\n /** App context provided to composables such as `useApp` and `useWindowSize`. */\n appContext: UseAppReturn;\n /** Focus manager provided to the tree, as the real app would. */\n focusManager: FocusManager;\n /** Screen reader flag provided to the tree; writable to flip modes. */\n screenReaderEnabled: Ref<boolean>;\n /** Unmount the tree and dispose all component watchers. */\n unmount(): void;\n}\n\n/**\n * Mount a component (or a plain render function) through the Fresco renderer.\n *\n * The returned {@link MountedFresco.root} is live: re-read it after reactive\n * updates plus `await nextTick()` to observe the patched output tree.\n */\nexport function mountFresco(\n root: Component | (() => VNodeChild),\n options: MountFrescoOptions = {},\n): MountedFresco {\n const { createApp } = createRenderer();\n const component: Component = typeof root === \"function\" ? { setup: () => root } : root;\n const app = createApp(component);\n\n const focusManager = createFocusManager();\n const screenReaderEnabled = ref(options.screenReader ?? false);\n const noopWrite = () => {};\n const width = options.width ?? 80;\n const height = options.height ?? 24;\n // A detached stdout stand-in keeps createAppContext from attaching resize\n // listeners to the real process.stdout on every mounted test tree.\n const stdout = {\n isTTY: false,\n columns: width,\n rows: height,\n write: () => true,\n } as unknown as NodeJS.WriteStream;\n\n const appContext = createAppContext({ width, height, stdout });\n app.provide(APP_KEY, appContext);\n app.provide(FOCUS_KEY, focusManager);\n app.provide(SCREEN_READER_KEY, screenReaderEnabled);\n app.provide(CURSOR_KEY, createCursorContext(noopWrite));\n app.provide(\n STREAMS_KEY,\n createStreamsContext({\n interactive: false,\n writeToStdout: noopWrite,\n writeToStderr: noopWrite,\n }),\n );\n\n const rootElement: FrescoElement = {\n id: -1,\n type: \"root\",\n props: {},\n children: [],\n parent: null,\n };\n app.mount(rootElement);\n\n return {\n root: rootElement,\n app,\n appContext,\n focusManager,\n screenReaderEnabled,\n unmount: () => app.unmount(),\n };\n}\n\n/**\n * Dispatch a key event through the same `lastKeyEvent` ref the interactive\n * event loop writes, then wait for watchers to flush.\n *\n * Pass `char` for printable input or `key` for named keys (\"left\", \"enter\",\n * \"backspace\", ...). Modifiers default to false.\n */\nexport function dispatchKey(event: Partial<Omit<KeyEvent, \"type\">>): Promise<void> {\n lastKeyEvent.value = {\n type: \"key\",\n ctrl: false,\n alt: false,\n shift: false,\n meta: false,\n super: false,\n hyper: false,\n capsLock: false,\n numLock: false,\n ...event,\n };\n return nextTick();\n}\n\n/** Dispatch a sequence of printable characters via {@link dispatchKey}. */\nexport async function typeChars(text: string): Promise<void> {\n for (const char of text) {\n await dispatchKey({ char });\n }\n}\n\n/**\n * Serializable snapshot of a mounted output tree.\n *\n * Node ids come from a module-global counter and depend on mount order, and\n * `parent` back-references make trees cyclic, so both are omitted. Props are\n * kept only when defined, so snapshots stay inline-sized and deterministic.\n */\nexport interface FrescoNodeSnapshot {\n type: FrescoNode[\"type\"];\n text?: string;\n props?: Record<string, unknown>;\n children?: FrescoNodeSnapshot[];\n}\n\nfunction definedProps(props: Record<string, unknown>): Record<string, unknown> | undefined {\n const entries = Object.entries(props).filter(([, value]) => value !== undefined);\n if (entries.length === 0) return undefined;\n return Object.fromEntries(entries);\n}\n\n/**\n * Convert a mounted node (or the harness root) into a plain snapshot object\n * suitable for `assert.deepEqual` against an inline expected structure.\n */\nexport function toTreeSnapshot(node: FrescoNode): FrescoNodeSnapshot {\n const snapshot: FrescoNodeSnapshot = { type: node.type };\n if (node.text !== undefined) snapshot.text = node.text;\n const props = definedProps(node.props);\n if (props) snapshot.props = props;\n if (node.children.length > 0) {\n snapshot.children = node.children.map((child) => toTreeSnapshot(child));\n }\n return snapshot;\n}\n\n/** Depth-first list of nodes matching a predicate, starting at `node`. */\nexport function findNodes(\n node: FrescoNode,\n predicate: (candidate: FrescoNode) => boolean,\n): FrescoNode[] {\n const matches: FrescoNode[] = [];\n const visit = (current: FrescoNode) => {\n if (predicate(current)) matches.push(current);\n for (const child of current.children) visit(child);\n };\n visit(node);\n return matches;\n}\n\n/** First mounted child under the harness root, asserting it exists. */\nexport function firstChild(mounted: MountedFresco): FrescoNode {\n const child = mounted.root.children[0];\n if (!child) throw new Error(\"expected the mounted tree to have a root child\");\n return child;\n}\n\n/** Convenience wrapper that renders `component` with `h` and mounts it. */\nexport function mountComponent(\n component: Component,\n props: Record<string, unknown> = {},\n slot?: () => VNodeChild,\n options: MountFrescoOptions = {},\n): MountedFresco {\n return mountFresco(() => h(component, props, slot), options);\n}\n","import type { AriaRole, AriaState } from \"../accessibility.js\";\nimport type { FrescoNode } from \"../renderer.js\";\nimport { findNodes } from \"./mount.js\";\n\nexport type FrescoTextMatcher = string | RegExp;\n\nexport interface FrescoRoleQueryOptions {\n readonly name?: FrescoTextMatcher;\n readonly description?: FrescoTextMatcher;\n readonly state?: AriaState;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n return undefined;\n}\n\nfunction ownText(node: FrescoNode): string | undefined {\n if (node.text !== undefined) return node.text;\n const propText = node.props.text ?? node.props.content;\n if (typeof propText === \"string\" || typeof propText === \"number\") return String(propText);\n\n if (node.type === \"input\") {\n const value = node.props.value;\n const placeholder = node.props.placeholder;\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n if (typeof placeholder === \"string\" || typeof placeholder === \"number\")\n return String(placeholder);\n }\n\n return undefined;\n}\n\nfunction accessibleName(node: FrescoNode): string {\n const ariaLabel = stringValue(node.props[\"aria-label\"]);\n if (ariaLabel !== undefined) return ariaLabel;\n\n const text = ownText(node);\n if (text !== undefined) return text;\n\n return node.children\n .map((child) => accessibleName(child))\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction accessibleDescription(node: FrescoNode): string | undefined {\n return stringValue(\n node.props[\"aria-description\"] ?? node.props.ariaDescription ?? node.props.description,\n );\n}\n\nfunction matchesText(text: string, matcher: FrescoTextMatcher): boolean {\n if (typeof matcher === \"string\") return text === matcher;\n matcher.lastIndex = 0;\n return matcher.test(text);\n}\n\nfunction roleOf(node: FrescoNode): AriaRole | undefined {\n return stringValue(node.props[\"aria-role\"]) as AriaRole | undefined;\n}\n\nfunction testIdOf(node: FrescoNode): string | undefined {\n return stringValue(node.props[\"test-id\"] ?? node.props[\"data-testid\"]);\n}\n\nfunction stateOf(node: FrescoNode): AriaState {\n const state = node.props[\"aria-state\"];\n return state && typeof state === \"object\" ? (state as AriaState) : {};\n}\n\nfunction matchesState(node: FrescoNode, expected: AriaState | undefined): boolean {\n if (expected === undefined) return true;\n const actual = stateOf(node);\n return Object.entries(expected).every(([key, value]) => actual[key as keyof AriaState] === value);\n}\n\nfunction describeRole(role: AriaRole, options: FrescoRoleQueryOptions): string {\n const parts = [`role ${JSON.stringify(role)}`];\n if (options.name !== undefined) parts.push(`name ${String(options.name)}`);\n if (options.description !== undefined) parts.push(`description ${String(options.description)}`);\n if (options.state !== undefined) parts.push(`state ${JSON.stringify(options.state)}`);\n return parts.join(\", \");\n}\n\nfunction uniqueNode(nodes: readonly FrescoNode[], description: string): FrescoNode {\n if (nodes.length === 0) throw new Error(`Unable to find Fresco node with ${description}`);\n if (nodes.length > 1) throw new Error(`Found ${nodes.length} Fresco nodes with ${description}`);\n return nodes[0]!;\n}\n\nexport function queryAllByRole(\n root: FrescoNode,\n role: AriaRole,\n options: FrescoRoleQueryOptions = {},\n): FrescoNode[] {\n return findNodes(root, (node) => {\n if (roleOf(node) !== role) return false;\n if (options.name !== undefined && !matchesText(accessibleName(node), options.name))\n return false;\n if (\n options.description !== undefined &&\n !matchesText(accessibleDescription(node) ?? \"\", options.description)\n )\n return false;\n return matchesState(node, options.state);\n });\n}\n\nexport function getByRole(\n root: FrescoNode,\n role: AriaRole,\n options: FrescoRoleQueryOptions = {},\n): FrescoNode {\n return uniqueNode(queryAllByRole(root, role, options), describeRole(role, options));\n}\n\nexport function queryAllByText(root: FrescoNode, text: FrescoTextMatcher): FrescoNode[] {\n return findNodes(root, (node) => {\n const value = ownText(node);\n return value !== undefined && matchesText(value, text);\n });\n}\n\nexport function getByText(root: FrescoNode, text: FrescoTextMatcher): FrescoNode {\n return uniqueNode(queryAllByText(root, text), `text ${String(text)}`);\n}\n\nexport function queryAllByDescription(\n root: FrescoNode,\n description: FrescoTextMatcher,\n): FrescoNode[] {\n return findNodes(root, (node) => {\n const value = accessibleDescription(node);\n return value !== undefined && matchesText(value, description);\n });\n}\n\nexport function getByDescription(root: FrescoNode, description: FrescoTextMatcher): FrescoNode {\n return uniqueNode(queryAllByDescription(root, description), `description ${String(description)}`);\n}\n\nexport function queryAllByTestId(root: FrescoNode, testId: string): FrescoNode[] {\n return findNodes(root, (node) => testIdOf(node) === testId);\n}\n\nexport function getByTestId(root: FrescoNode, testId: string): FrescoNode {\n return uniqueNode(queryAllByTestId(root, testId), `test id ${JSON.stringify(testId)}`);\n}\n","/**\n * Test utilities for Fresco component and app behavior.\n *\n * The harness mounts through the real Vue custom renderer and records frames\n * without loading the native terminal binding, so it is safe in plain Node,\n * Vitest, and `node:test` suites.\n */\n\nimport { nextTick, type Component, type VNodeChild } from \"vue\";\nimport {\n lastCompositionEvent,\n lastFocusEvent,\n lastMouseEvent,\n lastPasteEvent,\n lastResizeEvent,\n type CompositionEvent,\n type FocusEvent,\n type KeyEvent,\n type MouseEvent,\n type PasteEvent,\n type ResizeEvent,\n} from \"../app.js\";\nimport type { FrescoNode } from \"../renderer.js\";\nimport {\n dispatchKey,\n mountFresco,\n toTreeSnapshot,\n type FrescoNodeSnapshot,\n type MountedFresco,\n type MountFrescoOptions,\n} from \"./mount.js\";\nimport { treeToRenderNodes } from \"../renderer.js\";\nimport type { FrescoRenderNode } from \"../protocol.js\";\n\nexport {\n dispatchKey,\n findNodes,\n firstChild,\n mountComponent,\n mountFresco,\n toTreeSnapshot,\n typeChars,\n type FrescoNodeSnapshot,\n type MountedFresco,\n type MountFrescoOptions,\n} from \"./mount.js\";\nexport {\n getByDescription,\n getByRole,\n getByTestId,\n getByText,\n queryAllByDescription,\n queryAllByRole,\n queryAllByTestId,\n queryAllByText,\n type FrescoRoleQueryOptions,\n type FrescoTextMatcher,\n} from \"./queries.js\";\nexport type { FrescoRenderNode } from \"../protocol.js\";\n\nexport type RenderTuiOptions = MountFrescoOptions;\nexport type RenderTuiRoot = Component | (() => VNodeChild);\nexport type KeyInput = Partial<Omit<KeyEvent, \"type\">>;\nexport type MouseInput = Omit<MouseEvent, \"type\">;\n\n/** A single recorded harness frame. */\nexport interface FrescoFrameSnapshot {\n /** Plain terminal output projected from the current mounted tree. */\n output: string;\n /** Serializable renderer tree for structural assertions. */\n tree: FrescoNodeSnapshot;\n /** Stable native protocol payload for assertions before crossing into Rust. */\n protocolNodes: readonly FrescoRenderNode[];\n}\n\n/** Input driver that injects events through Fresco's public event refs. */\nexport interface FrescoInputDriver {\n /** Dispatch a key event and record the resulting frame. */\n key(event: KeyInput): Promise<FrescoFrameSnapshot>;\n /** Dispatch each printable character and record one frame after the text. */\n text(text: string): Promise<FrescoFrameSnapshot>;\n /** Dispatch a bracketed paste payload and record the resulting frame. */\n paste(text: string): Promise<FrescoFrameSnapshot>;\n /** Update the provided app size, dispatch a resize event, and record a frame. */\n resize(width: number, height: number): Promise<FrescoFrameSnapshot>;\n /** Dispatch a mouse event and record the resulting frame. */\n mouse(event: MouseInput): Promise<FrescoFrameSnapshot>;\n /** Dispatch terminal focus state and record the resulting frame. */\n focus(focused: boolean): Promise<FrescoFrameSnapshot>;\n /** Dispatch a composition start event and record the resulting frame. */\n compositionStart(text?: string, cursor?: number): Promise<FrescoFrameSnapshot>;\n /** Dispatch a composition update event and record the resulting frame. */\n compositionUpdate(text: string, cursor: number): Promise<FrescoFrameSnapshot>;\n /** Dispatch a composition end event and record the resulting frame. */\n compositionEnd(text: string, cursor?: number): Promise<FrescoFrameSnapshot>;\n}\n\n/** Mounted TUI harness with frame history and input helpers. */\nexport interface RenderTuiResult extends MountedFresco {\n /** Recorded plain frames, including the initial mount frame. */\n readonly frames: readonly string[];\n /** Recorded frame snapshots, including the initial mount frame. */\n readonly frameSnapshots: readonly FrescoFrameSnapshot[];\n /** Event injection helpers. */\n readonly input: FrescoInputDriver;\n /** Record and return a fresh snapshot of the current mounted tree. */\n captureFrame(): FrescoFrameSnapshot;\n /** Return the latest recorded plain frame. */\n lastFrame(): string;\n /** Return the latest recorded frame snapshot. */\n frameSnapshot(): FrescoFrameSnapshot;\n}\n\nfunction nodeText(node: FrescoNode): string {\n if (node.text !== undefined) return node.text;\n const propText = node.props.text ?? node.props.content;\n if (typeof propText === \"string\" || typeof propText === \"number\") return String(propText);\n if (node.type !== \"input\") return \"\";\n\n const value = node.props.value;\n const placeholder = node.props.placeholder;\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n if (typeof placeholder === \"string\" || typeof placeholder === \"number\")\n return String(placeholder);\n return \"\";\n}\n\nfunction isStaticNode(node: FrescoNode): boolean {\n return node.props.internal_static === true || node.props.internalStatic === true;\n}\n\nfunction joinOutput(parts: readonly string[], separator = \"\\n\"): string {\n return parts.filter(Boolean).join(separator);\n}\n\nfunction normalizeOutput(output: string): string {\n return output.endsWith(\"\\n\") ? output.slice(0, -1) : output;\n}\n\nfunction appendOutput(previous: string, next: string): string {\n const normalized = normalizeOutput(next);\n if (!normalized) return previous;\n return previous ? `${previous}\\n${normalized}` : normalized;\n}\n\nfunction treeToFrameOutput(node: FrescoNode, options: { skipStatic?: boolean } = {}): string {\n if (options.skipStatic && isStaticNode(node)) return \"\";\n\n const ownText = nodeText(node);\n const childOutput = node.children.map((child) => treeToFrameOutput(child, options));\n\n if (node.type === \"text\" || node.type === \"input\") {\n return `${ownText}${childOutput.join(\"\")}`;\n }\n\n const style = (node.props.style ?? {}) as Record<string, unknown>;\n const flexDirection = style.flexDirection ?? style.flex_direction;\n const separator = flexDirection === \"column\" ? \"\\n\" : \"\";\n return joinOutput(childOutput, separator);\n}\n\nfunction captureStaticOutput(node: FrescoNode, renderedStaticItems: Map<number, number>): string {\n const output: string[] = [];\n\n const visit = (current: FrescoNode) => {\n if (isStaticNode(current)) {\n const renderedItems = renderedStaticItems.get(current.id) ?? 0;\n const nextItems = current.children.slice(renderedItems);\n const nextOutput = joinOutput(\n nextItems.map((child) => treeToFrameOutput(child)),\n \"\\n\",\n );\n if (nextOutput) output.push(nextOutput);\n renderedStaticItems.set(current.id, current.children.length);\n return;\n }\n\n for (const child of current.children) visit(child);\n };\n\n visit(node);\n return joinOutput(output, \"\\n\");\n}\n\nfunction renderFrame(root: FrescoNode, staticOutput: string): string {\n return joinOutput([staticOutput, treeToFrameOutput(root, { skipStatic: true })], \"\\n\");\n}\n\nfunction latestSnapshot(snapshots: readonly FrescoFrameSnapshot[]): FrescoFrameSnapshot {\n const snapshot = snapshots[snapshots.length - 1];\n if (!snapshot) throw new Error(\"expected renderTui to record an initial frame\");\n return snapshot;\n}\n\nfunction protocolSnapshot(root: FrescoNode): FrescoRenderNode[] {\n const nodes = treeToRenderNodes(root);\n const ids = new Map(nodes.map((node, index) => [node.id, index - 1]));\n return nodes.map((node) => {\n const id = ids.get(node.id) ?? node.id;\n const children = node.children?.map((child) => ids.get(child) ?? child);\n return (\n children === undefined ? { ...node, id } : { ...node, id, children }\n ) as FrescoRenderNode;\n });\n}\n\nasync function dispatchPaste(text: string): Promise<void> {\n const event: PasteEvent = { type: \"paste\", text };\n lastPasteEvent.value = event;\n await nextTick();\n}\n\nasync function dispatchMouse(event: MouseInput): Promise<void> {\n lastMouseEvent.value = { type: \"mouse\", ...event };\n await nextTick();\n}\n\nasync function dispatchFocus(focused: boolean): Promise<void> {\n const event: FocusEvent = { type: \"focus\", focused };\n lastFocusEvent.value = event;\n await nextTick();\n}\n\nasync function dispatchComposition(\n type: CompositionEvent[\"type\"],\n text: string,\n cursor: number,\n): Promise<void> {\n lastCompositionEvent.value = { type, text, cursor };\n await nextTick();\n}\n\nasync function dispatchResize(\n mounted: MountedFresco,\n width: number,\n height: number,\n): Promise<void> {\n const event: ResizeEvent = { type: \"resize\", width, height };\n lastResizeEvent.value = event;\n mounted.appContext.width.value = width;\n mounted.appContext.height.value = height;\n await nextTick();\n}\n\n/** Mount a Fresco app for tests with frame snapshots and input injection. */\nexport function renderTui(root: RenderTuiRoot, options: RenderTuiOptions = {}): RenderTuiResult {\n const mounted = mountFresco(root, options);\n const frames: string[] = [];\n const frameSnapshots: FrescoFrameSnapshot[] = [];\n const renderedStaticItems = new Map<number, number>();\n let staticOutput = \"\";\n\n const captureFrame = () => {\n staticOutput = appendOutput(\n staticOutput,\n captureStaticOutput(mounted.root, renderedStaticItems),\n );\n const snapshot: FrescoFrameSnapshot = {\n output: renderFrame(mounted.root, staticOutput),\n tree: toTreeSnapshot(mounted.root),\n protocolNodes: protocolSnapshot(mounted.root),\n };\n frames.push(snapshot.output);\n frameSnapshots.push(snapshot);\n return snapshot;\n };\n\n const recordAfter = async (dispatch: Promise<void>) => {\n await dispatch;\n return captureFrame();\n };\n\n const input: FrescoInputDriver = {\n key: (event) => recordAfter(dispatchKey(event)),\n async text(text) {\n for (const char of text) {\n await dispatchKey({ char });\n }\n return captureFrame();\n },\n paste: (text) => recordAfter(dispatchPaste(text)),\n resize: (width, height) => recordAfter(dispatchResize(mounted, width, height)),\n mouse: (event) => recordAfter(dispatchMouse(event)),\n focus: (focused) => recordAfter(dispatchFocus(focused)),\n compositionStart: (text = \"\", cursor = 0) =>\n recordAfter(dispatchComposition(\"compositionstart\", text, cursor)),\n compositionUpdate: (text, cursor) =>\n recordAfter(dispatchComposition(\"compositionupdate\", text, cursor)),\n compositionEnd: (text, cursor = text.length) =>\n recordAfter(dispatchComposition(\"compositionend\", text, cursor)),\n };\n\n captureFrame();\n\n return {\n ...mounted,\n frames,\n frameSnapshots,\n input,\n captureFrame,\n lastFrame: () => latestSnapshot(frameSnapshots).output,\n frameSnapshot: () => latestSnapshot(frameSnapshots),\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["createRenderer"],"sources":["../../src/testing/mount.ts","../../src/testing/queries.ts","../../src/testing/index.ts"],"sourcesContent":["/**\n * Test-only mount harness for the Fresco JS layer.\n *\n * Fresco's renderer is pure JS up to the byte boundary that crosses into the\n * native module: `renderer.ts` imports only types from `@vizejs/fresco-native`,\n * and `app.ts` loads the native binding lazily and only in interactive mode.\n * This harness mounts components through the real custom renderer with the\n * same provide set `createApp`/`renderToString` install, so tests assert the\n * mounted `FrescoNode` output tree without a native build and without mocks.\n *\n * Not exported from the package entry points; `vp pack` does not ship it.\n */\n\nimport {\n h,\n ref,\n nextTick,\n type App as VueApp,\n type Component,\n type Ref,\n type VNodeChild,\n} from \"vue\";\nimport { SCREEN_READER_KEY } from \"../accessibility.js\";\nimport { lastKeyEvent, type KeyEvent } from \"../app.js\";\nimport { APP_KEY, createAppContext, type UseAppReturn } from \"../composables/useApp.js\";\nimport { createCursorContext, CURSOR_KEY } from \"../composables/useCursor.js\";\nimport { createFocusManager, FOCUS_KEY, type FocusManager } from \"../composables/useFocus.js\";\nimport { createStreamsContext, STREAMS_KEY } from \"../composables/useStreams.js\";\nimport {\n createRenderer,\n type FrescoElement,\n type FrescoNode,\n type FrescoNodeLifecycleHooks,\n} from \"../renderer.js\";\n\n/** Options for {@link mountFresco}. */\nexport interface MountFrescoOptions {\n /** Terminal width provided through the app context. Defaults to 80. */\n width?: number;\n /** Terminal height provided through the app context. Defaults to 24. */\n height?: number;\n /** Initial screen reader mode. Defaults to false. */\n screenReader?: boolean;\n /** Observe host-tree mutations that require a native frame. */\n onMutation?: () => void;\n /** Observe host-node lifecycle transitions. */\n lifecycle?: FrescoNodeLifecycleHooks;\n}\n\n/** A mounted Fresco component tree under test. */\nexport interface MountedFresco {\n /** Root element the Vue app mounted into; children form the output tree. */\n root: FrescoElement;\n /** The Vue app instance (for `provide`-level introspection if needed). */\n app: VueApp<FrescoElement>;\n /** App context provided to composables such as `useApp` and `useWindowSize`. */\n appContext: UseAppReturn;\n /** Focus manager provided to the tree, as the real app would. */\n focusManager: FocusManager;\n /** Screen reader flag provided to the tree; writable to flip modes. */\n screenReaderEnabled: Ref<boolean>;\n /** Renderer controls for stable lookup and recursive disposal. */\n renderer: ReturnType<typeof createRenderer>;\n /** Unmount the tree and dispose all component watchers. */\n unmount(): void;\n}\n\n/**\n * Mount a component (or a plain render function) through the Fresco renderer.\n *\n * The returned {@link MountedFresco.root} is live: re-read it after reactive\n * updates plus `await nextTick()` to observe the patched output tree.\n */\nexport function mountFresco(\n root: Component | (() => VNodeChild),\n options: MountFrescoOptions = {},\n): MountedFresco {\n const renderer = createRenderer({\n onMutation: options.onMutation,\n lifecycle: options.lifecycle,\n });\n const { createApp } = renderer;\n const component: Component = typeof root === \"function\" ? { setup: () => root } : root;\n const app = createApp(component);\n\n const focusManager = createFocusManager();\n const screenReaderEnabled = ref(options.screenReader ?? false);\n const noopWrite = () => {};\n const width = options.width ?? 80;\n const height = options.height ?? 24;\n // A detached stdout stand-in keeps createAppContext from attaching resize\n // listeners to the real process.stdout on every mounted test tree.\n const stdout = {\n isTTY: false,\n columns: width,\n rows: height,\n write: () => true,\n } as unknown as NodeJS.WriteStream;\n\n const appContext = createAppContext({ width, height, stdout });\n app.provide(APP_KEY, appContext);\n app.provide(FOCUS_KEY, focusManager);\n app.provide(SCREEN_READER_KEY, screenReaderEnabled);\n app.provide(CURSOR_KEY, createCursorContext(noopWrite));\n app.provide(\n STREAMS_KEY,\n createStreamsContext({\n interactive: false,\n writeToStdout: noopWrite,\n writeToStderr: noopWrite,\n }),\n );\n\n const rootElement: FrescoElement = {\n id: -1,\n type: \"root\",\n props: {},\n children: [],\n parent: null,\n };\n app.mount(rootElement);\n\n return {\n root: rootElement,\n app,\n appContext,\n focusManager,\n screenReaderEnabled,\n renderer,\n unmount: () => app.unmount(),\n };\n}\n\n/**\n * Dispatch a key event through the same `lastKeyEvent` ref the interactive\n * event loop writes, then wait for watchers to flush.\n *\n * Pass `char` for printable input or `key` for named keys (\"left\", \"enter\",\n * \"backspace\", ...). Modifiers default to false.\n */\nexport function dispatchKey(event: Partial<Omit<KeyEvent, \"type\">>): Promise<void> {\n lastKeyEvent.value = {\n type: \"key\",\n ctrl: false,\n alt: false,\n shift: false,\n meta: false,\n super: false,\n hyper: false,\n capsLock: false,\n numLock: false,\n ...event,\n };\n return nextTick();\n}\n\n/** Dispatch a sequence of printable characters via {@link dispatchKey}. */\nexport async function typeChars(text: string): Promise<void> {\n for (const char of text) {\n await dispatchKey({ char });\n }\n}\n\n/**\n * Serializable snapshot of a mounted output tree.\n *\n * Node ids come from a module-global counter and depend on mount order, and\n * `parent` back-references make trees cyclic, so both are omitted. Props are\n * kept only when defined, so snapshots stay inline-sized and deterministic.\n */\nexport interface FrescoNodeSnapshot {\n type: FrescoNode[\"type\"];\n text?: string;\n props?: Record<string, unknown>;\n children?: FrescoNodeSnapshot[];\n}\n\nfunction definedProps(props: Record<string, unknown>): Record<string, unknown> | undefined {\n const entries = Object.entries(props).filter(([, value]) => value !== undefined);\n if (entries.length === 0) return undefined;\n return Object.fromEntries(entries);\n}\n\n/**\n * Convert a mounted node (or the harness root) into a plain snapshot object\n * suitable for `assert.deepEqual` against an inline expected structure.\n */\nexport function toTreeSnapshot(node: FrescoNode): FrescoNodeSnapshot {\n const snapshot: FrescoNodeSnapshot = { type: node.type };\n if (node.text !== undefined) snapshot.text = node.text;\n const props = definedProps(node.props);\n if (props) snapshot.props = props;\n if (node.children.length > 0) {\n snapshot.children = node.children.map((child) => toTreeSnapshot(child));\n }\n return snapshot;\n}\n\n/** Depth-first list of nodes matching a predicate, starting at `node`. */\nexport function findNodes(\n node: FrescoNode,\n predicate: (candidate: FrescoNode) => boolean,\n): FrescoNode[] {\n const matches: FrescoNode[] = [];\n const visit = (current: FrescoNode) => {\n if (predicate(current)) matches.push(current);\n for (const child of current.children) visit(child);\n };\n visit(node);\n return matches;\n}\n\n/** First mounted child under the harness root, asserting it exists. */\nexport function firstChild(mounted: MountedFresco): FrescoNode {\n const child = mounted.root.children[0];\n if (!child) throw new Error(\"expected the mounted tree to have a root child\");\n return child;\n}\n\n/** Convenience wrapper that renders `component` with `h` and mounts it. */\nexport function mountComponent(\n component: Component,\n props: Record<string, unknown> = {},\n slot?: () => VNodeChild,\n options: MountFrescoOptions = {},\n): MountedFresco {\n return mountFresco(() => h(component, props, slot), options);\n}\n","import type { AriaRole, AriaState } from \"../accessibility.js\";\nimport type { FrescoNode } from \"../renderer.js\";\nimport { findNodes } from \"./mount.js\";\n\nexport type FrescoTextMatcher = string | RegExp;\n\nexport interface FrescoRoleQueryOptions {\n readonly name?: FrescoTextMatcher;\n readonly description?: FrescoTextMatcher;\n readonly state?: AriaState;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n return undefined;\n}\n\nfunction ownText(node: FrescoNode): string | undefined {\n if (node.text !== undefined) return node.text;\n const propText = node.props.text ?? node.props.content;\n if (typeof propText === \"string\" || typeof propText === \"number\") return String(propText);\n\n if (node.type === \"input\") {\n const value = node.props.value;\n const placeholder = node.props.placeholder;\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n if (typeof placeholder === \"string\" || typeof placeholder === \"number\")\n return String(placeholder);\n }\n\n return undefined;\n}\n\nfunction accessibleName(node: FrescoNode): string {\n const ariaLabel = stringValue(node.props[\"aria-label\"]);\n if (ariaLabel !== undefined) return ariaLabel;\n\n const text = ownText(node);\n if (text !== undefined) return text;\n\n return node.children\n .map((child) => accessibleName(child))\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction accessibleDescription(node: FrescoNode): string | undefined {\n return stringValue(\n node.props[\"aria-description\"] ?? node.props.ariaDescription ?? node.props.description,\n );\n}\n\nfunction matchesText(text: string, matcher: FrescoTextMatcher): boolean {\n if (typeof matcher === \"string\") return text === matcher;\n matcher.lastIndex = 0;\n return matcher.test(text);\n}\n\nfunction roleOf(node: FrescoNode): AriaRole | undefined {\n return stringValue(node.props[\"aria-role\"]) as AriaRole | undefined;\n}\n\nfunction testIdOf(node: FrescoNode): string | undefined {\n return stringValue(node.props[\"test-id\"] ?? node.props[\"data-testid\"]);\n}\n\nfunction stateOf(node: FrescoNode): AriaState {\n const state = node.props[\"aria-state\"];\n return state && typeof state === \"object\" ? (state as AriaState) : {};\n}\n\nfunction matchesState(node: FrescoNode, expected: AriaState | undefined): boolean {\n if (expected === undefined) return true;\n const actual = stateOf(node);\n return Object.entries(expected).every(([key, value]) => actual[key as keyof AriaState] === value);\n}\n\nfunction describeRole(role: AriaRole, options: FrescoRoleQueryOptions): string {\n const parts = [`role ${JSON.stringify(role)}`];\n if (options.name !== undefined) parts.push(`name ${String(options.name)}`);\n if (options.description !== undefined) parts.push(`description ${String(options.description)}`);\n if (options.state !== undefined) parts.push(`state ${JSON.stringify(options.state)}`);\n return parts.join(\", \");\n}\n\nfunction uniqueNode(nodes: readonly FrescoNode[], description: string): FrescoNode {\n if (nodes.length === 0) throw new Error(`Unable to find Fresco node with ${description}`);\n if (nodes.length > 1) throw new Error(`Found ${nodes.length} Fresco nodes with ${description}`);\n return nodes[0]!;\n}\n\nexport function queryAllByRole(\n root: FrescoNode,\n role: AriaRole,\n options: FrescoRoleQueryOptions = {},\n): FrescoNode[] {\n return findNodes(root, (node) => {\n if (roleOf(node) !== role) return false;\n if (options.name !== undefined && !matchesText(accessibleName(node), options.name))\n return false;\n if (\n options.description !== undefined &&\n !matchesText(accessibleDescription(node) ?? \"\", options.description)\n )\n return false;\n return matchesState(node, options.state);\n });\n}\n\nexport function getByRole(\n root: FrescoNode,\n role: AriaRole,\n options: FrescoRoleQueryOptions = {},\n): FrescoNode {\n return uniqueNode(queryAllByRole(root, role, options), describeRole(role, options));\n}\n\nexport function queryAllByText(root: FrescoNode, text: FrescoTextMatcher): FrescoNode[] {\n return findNodes(root, (node) => {\n const value = ownText(node);\n return value !== undefined && matchesText(value, text);\n });\n}\n\nexport function getByText(root: FrescoNode, text: FrescoTextMatcher): FrescoNode {\n return uniqueNode(queryAllByText(root, text), `text ${String(text)}`);\n}\n\nexport function queryAllByDescription(\n root: FrescoNode,\n description: FrescoTextMatcher,\n): FrescoNode[] {\n return findNodes(root, (node) => {\n const value = accessibleDescription(node);\n return value !== undefined && matchesText(value, description);\n });\n}\n\nexport function getByDescription(root: FrescoNode, description: FrescoTextMatcher): FrescoNode {\n return uniqueNode(queryAllByDescription(root, description), `description ${String(description)}`);\n}\n\nexport function queryAllByTestId(root: FrescoNode, testId: string): FrescoNode[] {\n return findNodes(root, (node) => testIdOf(node) === testId);\n}\n\nexport function getByTestId(root: FrescoNode, testId: string): FrescoNode {\n return uniqueNode(queryAllByTestId(root, testId), `test id ${JSON.stringify(testId)}`);\n}\n","/**\n * Test utilities for Fresco component and app behavior.\n *\n * The harness mounts through the real Vue custom renderer and records frames\n * without loading the native terminal binding, so it is safe in plain Node,\n * Vitest, and `node:test` suites.\n */\n\nimport { nextTick, type Component, type VNodeChild } from \"vue\";\nimport {\n lastCompositionEvent,\n lastFocusEvent,\n lastMouseEvent,\n lastPasteEvent,\n lastResizeEvent,\n type CompositionEvent,\n type FocusEvent,\n type KeyEvent,\n type MouseEvent,\n type PasteEvent,\n type ResizeEvent,\n} from \"../app.js\";\nimport type { FrescoNode } from \"../renderer.js\";\nimport {\n dispatchKey,\n mountFresco,\n toTreeSnapshot,\n type FrescoNodeSnapshot,\n type MountedFresco,\n type MountFrescoOptions,\n} from \"./mount.js\";\nimport { treeToRenderNodes } from \"../renderer.js\";\nimport { isStaticItemNode, isStaticNode } from \"../staticNodes.js\";\nimport type { FrescoRenderNode } from \"../protocol.js\";\n\nexport {\n dispatchKey,\n findNodes,\n firstChild,\n mountComponent,\n mountFresco,\n toTreeSnapshot,\n typeChars,\n type FrescoNodeSnapshot,\n type MountedFresco,\n type MountFrescoOptions,\n} from \"./mount.js\";\nexport {\n getByDescription,\n getByRole,\n getByTestId,\n getByText,\n queryAllByDescription,\n queryAllByRole,\n queryAllByTestId,\n queryAllByText,\n type FrescoRoleQueryOptions,\n type FrescoTextMatcher,\n} from \"./queries.js\";\nexport type { FrescoRenderNode } from \"../protocol.js\";\n\nexport type RenderTuiOptions = MountFrescoOptions;\nexport type RenderTuiRoot = Component | (() => VNodeChild);\nexport type KeyInput = Partial<Omit<KeyEvent, \"type\">>;\nexport type MouseInput = Omit<MouseEvent, \"type\">;\n\n/** A single recorded harness frame. */\nexport interface FrescoFrameSnapshot {\n /** Plain terminal output projected from the current mounted tree. */\n output: string;\n /** Serializable renderer tree for structural assertions. */\n tree: FrescoNodeSnapshot;\n /** Stable native protocol payload for assertions before crossing into Rust. */\n protocolNodes: readonly FrescoRenderNode[];\n}\n\n/** Input driver that injects events through Fresco's public event refs. */\nexport interface FrescoInputDriver {\n /** Dispatch a key event and record the resulting frame. */\n key(event: KeyInput): Promise<FrescoFrameSnapshot>;\n /** Dispatch each printable character and record one frame after the text. */\n text(text: string): Promise<FrescoFrameSnapshot>;\n /** Dispatch a bracketed paste payload and record the resulting frame. */\n paste(text: string): Promise<FrescoFrameSnapshot>;\n /** Update the provided app size, dispatch a resize event, and record a frame. */\n resize(width: number, height: number): Promise<FrescoFrameSnapshot>;\n /** Dispatch a mouse event and record the resulting frame. */\n mouse(event: MouseInput): Promise<FrescoFrameSnapshot>;\n /** Dispatch terminal focus state and record the resulting frame. */\n focus(focused: boolean): Promise<FrescoFrameSnapshot>;\n /** Dispatch a composition start event and record the resulting frame. */\n compositionStart(text?: string, cursor?: number): Promise<FrescoFrameSnapshot>;\n /** Dispatch a composition update event and record the resulting frame. */\n compositionUpdate(text: string, cursor: number): Promise<FrescoFrameSnapshot>;\n /** Dispatch a composition end event and record the resulting frame. */\n compositionEnd(text: string, cursor?: number): Promise<FrescoFrameSnapshot>;\n}\n\n/** Mounted TUI harness with frame history and input helpers. */\nexport interface RenderTuiResult extends MountedFresco {\n /** Recorded plain frames, including the initial mount frame. */\n readonly frames: readonly string[];\n /** Recorded frame snapshots, including the initial mount frame. */\n readonly frameSnapshots: readonly FrescoFrameSnapshot[];\n /** Event injection helpers. */\n readonly input: FrescoInputDriver;\n /** Record and return a fresh snapshot of the current mounted tree. */\n captureFrame(): FrescoFrameSnapshot;\n /** Return the latest recorded plain frame. */\n lastFrame(): string;\n /** Return the latest recorded frame snapshot. */\n frameSnapshot(): FrescoFrameSnapshot;\n}\n\nfunction nodeText(node: FrescoNode): string {\n if (node.text !== undefined) return node.text;\n const propText = node.props.text ?? node.props.content;\n if (typeof propText === \"string\" || typeof propText === \"number\") return String(propText);\n if (node.type !== \"input\") return \"\";\n\n const value = node.props.value;\n const placeholder = node.props.placeholder;\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n if (typeof placeholder === \"string\" || typeof placeholder === \"number\")\n return String(placeholder);\n return \"\";\n}\n\nfunction joinOutput(parts: readonly string[], separator = \"\\n\"): string {\n return parts.filter(Boolean).join(separator);\n}\n\nfunction normalizeOutput(output: string): string {\n return output.endsWith(\"\\n\") ? output.slice(0, -1) : output;\n}\n\nfunction appendOutput(previous: string, next: string): string {\n const normalized = normalizeOutput(next);\n if (!normalized) return previous;\n return previous ? `${previous}\\n${normalized}` : normalized;\n}\n\nfunction treeToFrameOutput(node: FrescoNode, options: { skipStatic?: boolean } = {}): string {\n if (options.skipStatic && isStaticNode(node)) return \"\";\n\n const ownText = nodeText(node);\n const childOutput = node.children.map((child) => treeToFrameOutput(child, options));\n\n if (node.type === \"text\" || node.type === \"input\") {\n return `${ownText}${childOutput.join(\"\")}`;\n }\n\n const style = (node.props.style ?? {}) as Record<string, unknown>;\n const flexDirection = style.flexDirection ?? style.flex_direction;\n const separator = flexDirection === \"column\" ? \"\\n\" : \"\";\n return joinOutput(childOutput, separator);\n}\n\nfunction captureStaticOutput(node: FrescoNode, renderedStaticItems: Map<number, number>): string {\n const output: string[] = [];\n\n const visit = (current: FrescoNode) => {\n if (isStaticNode(current)) {\n const renderedItems = renderedStaticItems.get(current.id) ?? 0;\n const staticItems = current.children.filter(isStaticItemNode);\n const nextItems = staticItems.slice(renderedItems);\n const nextOutput = joinOutput(\n nextItems.map((child) => treeToFrameOutput(child)),\n \"\\n\",\n );\n if (nextOutput) output.push(nextOutput);\n renderedStaticItems.set(current.id, staticItems.length);\n return;\n }\n\n for (const child of current.children) visit(child);\n };\n\n visit(node);\n return joinOutput(output, \"\\n\");\n}\n\nfunction renderFrame(root: FrescoNode, staticOutput: string): string {\n return joinOutput([staticOutput, treeToFrameOutput(root, { skipStatic: true })], \"\\n\");\n}\n\nfunction latestSnapshot(snapshots: readonly FrescoFrameSnapshot[]): FrescoFrameSnapshot {\n const snapshot = snapshots[snapshots.length - 1];\n if (!snapshot) throw new Error(\"expected renderTui to record an initial frame\");\n return snapshot;\n}\n\nfunction protocolSnapshot(root: FrescoNode): FrescoRenderNode[] {\n const nodes = treeToRenderNodes(root);\n const ids = new Map(nodes.map((node, index) => [node.id, index - 1]));\n return nodes.map((node) => {\n const id = ids.get(node.id) ?? node.id;\n const children = node.children?.map((child) => ids.get(child) ?? child);\n return (\n children === undefined ? { ...node, id } : { ...node, id, children }\n ) as FrescoRenderNode;\n });\n}\n\nasync function dispatchPaste(text: string): Promise<void> {\n const event: PasteEvent = { type: \"paste\", text };\n lastPasteEvent.value = event;\n await nextTick();\n}\n\nasync function dispatchMouse(event: MouseInput): Promise<void> {\n lastMouseEvent.value = { type: \"mouse\", ...event };\n await nextTick();\n}\n\nasync function dispatchFocus(focused: boolean): Promise<void> {\n const event: FocusEvent = { type: \"focus\", focused };\n lastFocusEvent.value = event;\n await nextTick();\n}\n\nasync function dispatchComposition(\n type: CompositionEvent[\"type\"],\n text: string,\n cursor: number,\n): Promise<void> {\n lastCompositionEvent.value = { type, text, cursor };\n await nextTick();\n}\n\nasync function dispatchResize(\n mounted: MountedFresco,\n width: number,\n height: number,\n): Promise<void> {\n const event: ResizeEvent = { type: \"resize\", width, height };\n lastResizeEvent.value = event;\n mounted.appContext.width.value = width;\n mounted.appContext.height.value = height;\n await nextTick();\n}\n\n/** Mount a Fresco app for tests with frame snapshots and input injection. */\nexport function renderTui(root: RenderTuiRoot, options: RenderTuiOptions = {}): RenderTuiResult {\n const mounted = mountFresco(root, options);\n const frames: string[] = [];\n const frameSnapshots: FrescoFrameSnapshot[] = [];\n const renderedStaticItems = new Map<number, number>();\n let staticOutput = \"\";\n\n const captureFrame = () => {\n staticOutput = appendOutput(\n staticOutput,\n captureStaticOutput(mounted.root, renderedStaticItems),\n );\n const snapshot: FrescoFrameSnapshot = {\n output: renderFrame(mounted.root, staticOutput),\n tree: toTreeSnapshot(mounted.root),\n protocolNodes: protocolSnapshot(mounted.root),\n };\n frames.push(snapshot.output);\n frameSnapshots.push(snapshot);\n return snapshot;\n };\n\n const recordAfter = async (dispatch: Promise<void>) => {\n await dispatch;\n return captureFrame();\n };\n\n const input: FrescoInputDriver = {\n key: (event) => recordAfter(dispatchKey(event)),\n async text(text) {\n for (const char of text) {\n await dispatchKey({ char });\n }\n return captureFrame();\n },\n paste: (text) => recordAfter(dispatchPaste(text)),\n resize: (width, height) => recordAfter(dispatchResize(mounted, width, height)),\n mouse: (event) => recordAfter(dispatchMouse(event)),\n focus: (focused) => recordAfter(dispatchFocus(focused)),\n compositionStart: (text = \"\", cursor = 0) =>\n recordAfter(dispatchComposition(\"compositionstart\", text, cursor)),\n compositionUpdate: (text, cursor) =>\n recordAfter(dispatchComposition(\"compositionupdate\", text, cursor)),\n compositionEnd: (text, cursor = text.length) =>\n recordAfter(dispatchComposition(\"compositionend\", text, cursor)),\n };\n\n captureFrame();\n\n return {\n ...mounted,\n frames,\n frameSnapshots,\n input,\n captureFrame,\n lastFrame: () => latestSnapshot(frameSnapshots).output,\n frameSnapshot: () => latestSnapshot(frameSnapshots),\n };\n}\n"],"mappings":"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"}