@effect-tui/react 0.5.0 → 0.6.1

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.
@@ -0,0 +1,61 @@
1
+ import type { ReactNode } from "react";
2
+ export interface ListViewProps<T> {
3
+ /** Items to render */
4
+ items: readonly T[];
5
+ /** Currently selected index */
6
+ selectedIndex: number;
7
+ /** Render function for each item */
8
+ renderItem: (item: T, index: number, isSelected: boolean) => ReactNode;
9
+ /** Extract unique key for each item */
10
+ keyExtractor: (item: T, index: number) => string | number;
11
+ /** Height of each item in rows (default: 1) */
12
+ itemHeight?: number;
13
+ /** Padding rows to keep around selected item (default: 0) */
14
+ scrollPadding?: number;
15
+ /** Show scrollbar (default: true) */
16
+ showScrollbar?: boolean;
17
+ /** Empty state content when items is empty */
18
+ emptyContent?: ReactNode;
19
+ /** Number of extra items to render above/below viewport for smooth scrolling (default: 3) */
20
+ overscan?: number;
21
+ }
22
+ /**
23
+ * A virtualized scrolling list view with selection and scroll-into-view behavior.
24
+ *
25
+ * Features:
26
+ * - **Virtualized**: Only renders visible items + overscan buffer for performance
27
+ * - Automatically scrolls to keep selected item visible when selection changes
28
+ * - Supports mouse wheel scrolling with macOS-style acceleration
29
+ * - Shows a scroll bar when content overflows
30
+ *
31
+ * Keyboard navigation should be handled by the parent component - update
32
+ * `selectedIndex` and ListView will scroll to keep it visible.
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * const [selectedIndex, setSelectedIndex] = useState(0)
37
+ *
38
+ * // Handle keyboard in parent
39
+ * useKeyboard((key) => {
40
+ * if (key.name === "down" || key.text === "j") {
41
+ * setSelectedIndex(i => Math.min(items.length - 1, i + 1))
42
+ * }
43
+ * if (key.name === "up" || key.text === "k") {
44
+ * setSelectedIndex(i => Math.max(0, i - 1))
45
+ * }
46
+ * })
47
+ *
48
+ * return (
49
+ * <ListView
50
+ * items={cards}
51
+ * selectedIndex={selectedIndex}
52
+ * renderItem={(card, i, isSelected) => (
53
+ * <CardListItem card={card} isSelected={isSelected} />
54
+ * )}
55
+ * keyExtractor={(card) => card.id}
56
+ * />
57
+ * )
58
+ * ```
59
+ */
60
+ export declare function ListView<T>({ items, selectedIndex, renderItem, keyExtractor, itemHeight, scrollPadding, showScrollbar, emptyContent, overscan, }: ListViewProps<T>): ReactNode;
61
+ //# sourceMappingURL=ListView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,sBAAsB;IACtB,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;IACnB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,oCAAoC;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAA;IACtE,uCAAuC;IACvC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAA;IACzD,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAC3B,KAAK,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAc,EACd,aAAiB,EACjB,aAAoB,EACpB,YAAY,EACZ,QAAY,GACZ,EAAE,aAAa,CAAC,CAAC,CAAC,aA+DlB"}
@@ -0,0 +1,81 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "@effect-tui/react/jsx-runtime";
2
+ import { useEffect, useRef } from "react";
3
+ import { useScroll } from "../hooks/use-scroll.js";
4
+ /**
5
+ * A virtualized scrolling list view with selection and scroll-into-view behavior.
6
+ *
7
+ * Features:
8
+ * - **Virtualized**: Only renders visible items + overscan buffer for performance
9
+ * - Automatically scrolls to keep selected item visible when selection changes
10
+ * - Supports mouse wheel scrolling with macOS-style acceleration
11
+ * - Shows a scroll bar when content overflows
12
+ *
13
+ * Keyboard navigation should be handled by the parent component - update
14
+ * `selectedIndex` and ListView will scroll to keep it visible.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * const [selectedIndex, setSelectedIndex] = useState(0)
19
+ *
20
+ * // Handle keyboard in parent
21
+ * useKeyboard((key) => {
22
+ * if (key.name === "down" || key.text === "j") {
23
+ * setSelectedIndex(i => Math.min(items.length - 1, i + 1))
24
+ * }
25
+ * if (key.name === "up" || key.text === "k") {
26
+ * setSelectedIndex(i => Math.max(0, i - 1))
27
+ * }
28
+ * })
29
+ *
30
+ * return (
31
+ * <ListView
32
+ * items={cards}
33
+ * selectedIndex={selectedIndex}
34
+ * renderItem={(card, i, isSelected) => (
35
+ * <CardListItem card={card} isSelected={isSelected} />
36
+ * )}
37
+ * keyExtractor={(card) => card.id}
38
+ * />
39
+ * )
40
+ * ```
41
+ */
42
+ export function ListView({ items, selectedIndex, renderItem, keyExtractor, itemHeight = 1, scrollPadding = 0, showScrollbar = true, emptyContent, overscan = 3, }) {
43
+ const { state, scrollProps, scrollToVisible } = useScroll({
44
+ enableKeyboard: false, // Parent handles keyboard for selection
45
+ enableMouseWheel: true, // Free scroll with wheel
46
+ });
47
+ // Track previous selection to detect changes
48
+ const prevSelectedRef = useRef(selectedIndex);
49
+ // Scroll to keep selection visible when it changes
50
+ useEffect(() => {
51
+ if (selectedIndex !== prevSelectedRef.current) {
52
+ prevSelectedRef.current = selectedIndex;
53
+ scrollToVisible(selectedIndex, itemHeight, scrollPadding);
54
+ }
55
+ }, [selectedIndex, itemHeight, scrollPadding, scrollToVisible]);
56
+ // Also scroll on initial render if selection is not 0
57
+ useEffect(() => {
58
+ if (selectedIndex > 0) {
59
+ scrollToVisible(selectedIndex, itemHeight, scrollPadding);
60
+ }
61
+ // Only run on mount
62
+ // eslint-disable-next-line react-hooks/exhaustive-deps
63
+ }, []);
64
+ if (items.length === 0 && emptyContent) {
65
+ return _jsx(_Fragment, { children: emptyContent });
66
+ }
67
+ // Calculate visible range for virtualization
68
+ const totalHeight = items.length * itemHeight;
69
+ const startIndex = Math.max(0, Math.floor(state.offset / itemHeight) - overscan);
70
+ const endIndex = Math.min(items.length, Math.ceil((state.offset + state.viewportSize) / itemHeight) + overscan);
71
+ // Calculate spacer heights for virtual scrolling
72
+ const topSpacerHeight = startIndex * itemHeight;
73
+ const bottomSpacerHeight = Math.max(0, totalHeight - endIndex * itemHeight);
74
+ // Get visible slice of items
75
+ const visibleItems = items.slice(startIndex, endIndex);
76
+ return (_jsx("scroll", { ...scrollProps, showScrollbar: showScrollbar, children: _jsxs("vstack", { children: [topSpacerHeight > 0 && _jsx("spacer", { height: topSpacerHeight }), visibleItems.map((item, i) => {
77
+ const actualIndex = startIndex + i;
78
+ return (_jsx("vstack", { children: renderItem(item, actualIndex, actualIndex === selectedIndex) }, keyExtractor(item, actualIndex)));
79
+ }), bottomSpacerHeight > 0 && _jsx("spacer", { height: bottomSpacerHeight })] }) }));
80
+ }
81
+ //# sourceMappingURL=ListView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { Divider, type DividerProps } from "./Divider.js";
2
+ export { ListView, type ListViewProps } from "./ListView.js";
2
3
  export { Markdown, type MarkdownProps, type MarkdownTheme } from "./Markdown.js";
3
4
  export { MultilineTextInput, type MultilineTextInputProps } from "./MultilineTextInput.js";
4
5
  export { Overlay, type OverlayItemProps, type OverlayProps } from "./Overlay.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { Divider } from "./Divider.js";
2
+ export { ListView } from "./ListView.js";
2
3
  export { Markdown } from "./Markdown.js";
3
4
  export { MultilineTextInput } from "./MultilineTextInput.js";
4
5
  export { Overlay } from "./Overlay.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,QAAQ,EAA0C,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAgC,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,OAAO,EAA4C,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,KAAK,EAAsD,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAA0C,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAgC,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,OAAO,EAA4C,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,KAAK,EAAsD,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  export * from "@effect-tui/core";
2
2
  export type { CodeBlockProps } from "./codeblock.js";
3
3
  export { CodeBlock } from "./codeblock.js";
4
- export { type ColumnProps, Markdown, type MarkdownProps, type MarkdownTheme, MultilineTextInput, type MultilineTextInputProps, Overlay, type OverlayItemProps, type OverlayProps, Static, type StaticProps, Table, type TableAlign, type TableProps, TextInput, type TextInputProps, } from "./components/index.js";
4
+ export { type ColumnProps, ListView, type ListViewProps, Markdown, type MarkdownProps, type MarkdownTheme, MultilineTextInput, type MultilineTextInputProps, Overlay, type OverlayItemProps, type OverlayProps, Static, type StaticProps, Table, type TableAlign, type TableProps, TextInput, type TextInputProps, } from "./components/index.js";
5
5
  export { DiagnosticsPanel } from "./debug/DiagnosticsPanel.js";
6
6
  export { autoHmr, type DevRenderOptions, type DevRenderResult, devMain, devRender, hmr, hmrState, } from "./dev.js";
7
7
  export { type HighlightLine, type HighlightToken, type HighlightTokenStyle, highlightCode, toPlainLines, } from "./highlight.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EACN,KAAK,WAAW,EAChB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,SAAS,EACT,KAAK,cAAc,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EACN,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,OAAO,EACP,SAAS,EACT,GAAG,EACH,QAAQ,GACR,MAAM,UAAU,CAAA;AAEjB,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,aAAa,EACb,YAAY,GACZ,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACX,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,GACf,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAErF,OAAO,EAEN,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC/F,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnG,OAAO,EACN,cAAc,EACd,UAAU,EACV,eAAe,EACf,MAAM,EACN,WAAW,EACX,eAAe,GACf,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EACN,KAAK,WAAW,EAChB,QAAQ,EACR,KAAK,aAAa,EAClB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,SAAS,EACT,KAAK,cAAc,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EACN,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,OAAO,EACP,SAAS,EACT,GAAG,EACH,QAAQ,GACR,MAAM,UAAU,CAAA;AAEjB,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,aAAa,EACb,YAAY,GACZ,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACX,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,GACf,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAErF,OAAO,EAEN,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC/F,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEnG,OAAO,EACN,cAAc,EACd,UAAU,EACV,eAAe,EACf,MAAM,EACN,WAAW,EACX,eAAe,GACf,MAAM,eAAe,CAAA"}
package/dist/src/index.js CHANGED
@@ -3,7 +3,7 @@ export * from "@effect-tui/core";
3
3
  // CodeBlock (syntax highlighting)
4
4
  export { CodeBlock } from "./codeblock.js";
5
5
  // Input components
6
- export { Markdown, MultilineTextInput, Overlay, Static, Table, TextInput, } from "./components/index.js";
6
+ export { ListView, Markdown, MultilineTextInput, Overlay, Static, Table, TextInput, } from "./components/index.js";
7
7
  // Debug
8
8
  export { DiagnosticsPanel } from "./debug/DiagnosticsPanel.js";
9
9
  // Development utilities (HMR)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,kBAAkB,CAAA;AAEhC,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,mBAAmB;AACnB,OAAO,EAEN,QAAQ,EAGR,kBAAkB,EAElB,OAAO,EAGP,MAAM,EAEN,KAAK,EAGL,SAAS,GAET,MAAM,uBAAuB,CAAA;AAC9B,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,8BAA8B;AAC9B,OAAO,EACN,OAAO,EAGP,OAAO,EACP,SAAS,EACT,GAAG,EACH,QAAQ,GACR,MAAM,UAAU,CAAA;AACjB,sBAAsB;AACtB,OAAO,EAIN,aAAa,EACb,YAAY,GACZ,MAAM,gBAAgB,CAAA;AAQvB,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAUxD,6BAA6B;AAC7B,OAAO;AACN,gBAAgB;AAChB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAI1B,WAAW;AACX,OAAO,EACN,cAAc,EACd,UAAU,EACV,eAAe,EACf,MAAM,EACN,WAAW,EACX,eAAe,GACf,MAAM,eAAe,CAAA;AAEtB,kEAAkE;AAClE,2DAA2D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,kBAAkB,CAAA;AAEhC,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,mBAAmB;AACnB,OAAO,EAEN,QAAQ,EAER,QAAQ,EAGR,kBAAkB,EAElB,OAAO,EAGP,MAAM,EAEN,KAAK,EAGL,SAAS,GAET,MAAM,uBAAuB,CAAA;AAC9B,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,8BAA8B;AAC9B,OAAO,EACN,OAAO,EAGP,OAAO,EACP,SAAS,EACT,GAAG,EACH,QAAQ,GACR,MAAM,UAAU,CAAA;AACjB,sBAAsB;AACtB,OAAO,EAIN,aAAa,EACb,YAAY,GACZ,MAAM,gBAAgB,CAAA;AAQvB,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAUxD,6BAA6B;AAC7B,OAAO;AACN,gBAAgB;AAChB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAI1B,WAAW;AACX,OAAO,EACN,cAAc,EACd,UAAU,EACV,eAAe,EACf,MAAM,EACN,WAAW,EACX,eAAe,GACf,MAAM,eAAe,CAAA;AAEtB,kEAAkE;AAClE,2DAA2D"}