termcast 1.3.32 → 1.3.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-utils.d.ts.map +1 -1
- package/dist/action-utils.js +8 -0
- package/dist/action-utils.js.map +1 -1
- package/dist/apis/cache.d.ts +1 -2
- package/dist/apis/cache.d.ts.map +1 -1
- package/dist/apis/cache.js +138 -54
- package/dist/apis/cache.js.map +1 -1
- package/dist/apis/clipboard.d.ts.map +1 -1
- package/dist/apis/clipboard.js +4 -0
- package/dist/apis/clipboard.js.map +1 -1
- package/dist/apis/oauth.d.ts.map +1 -1
- package/dist/apis/oauth.js +31 -4
- package/dist/apis/oauth.js.map +1 -1
- package/dist/build.d.ts +0 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +30 -51
- package/dist/build.js.map +1 -1
- package/dist/cli.js +31 -14
- package/dist/cli.js.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +5 -1
- package/dist/compile.js.map +1 -1
- package/dist/components/actions.d.ts +14 -0
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +151 -59
- package/dist/components/actions.js.map +1 -1
- package/dist/components/alert.d.ts.map +1 -1
- package/dist/components/alert.js +6 -5
- package/dist/components/alert.js.map +1 -1
- package/dist/components/animation-tick.d.ts +1 -1
- package/dist/components/animation-tick.js +1 -1
- package/dist/components/animation-tick.js.map +1 -1
- package/dist/components/detail.d.ts +5 -31
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +36 -52
- package/dist/components/detail.js.map +1 -1
- package/dist/components/dropdown.d.ts +1 -1
- package/dist/components/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +50 -22
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/footer.d.ts.map +1 -1
- package/dist/components/footer.js +19 -18
- package/dist/components/footer.js.map +1 -1
- package/dist/components/form/checkbox.d.ts.map +1 -1
- package/dist/components/form/checkbox.js +12 -11
- package/dist/components/form/checkbox.js.map +1 -1
- package/dist/components/form/date-picker.d.ts.map +1 -1
- package/dist/components/form/date-picker.js +7 -22
- package/dist/components/form/date-picker.js.map +1 -1
- package/dist/components/form/description.d.ts +1 -1
- package/dist/components/form/description.d.ts.map +1 -1
- package/dist/components/form/description.js +6 -5
- package/dist/components/form/description.js.map +1 -1
- package/dist/components/form/dropdown.d.ts.map +1 -1
- package/dist/components/form/dropdown.js +53 -50
- package/dist/components/form/dropdown.js.map +1 -1
- package/dist/components/form/file-autocomplete.d.ts.map +1 -1
- package/dist/components/form/file-autocomplete.js +5 -4
- package/dist/components/form/file-autocomplete.js.map +1 -1
- package/dist/components/form/file-picker.d.ts.map +1 -1
- package/dist/components/form/file-picker.js +23 -22
- package/dist/components/form/file-picker.js.map +1 -1
- package/dist/components/form/form-end.d.ts.map +1 -1
- package/dist/components/form/form-end.js +6 -4
- package/dist/components/form/form-end.js.map +1 -1
- package/dist/components/form/form-field-wrapper.d.ts +15 -0
- package/dist/components/form/form-field-wrapper.d.ts.map +1 -0
- package/dist/components/form/form-field-wrapper.js +29 -0
- package/dist/components/form/form-field-wrapper.js.map +1 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +31 -30
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/password-field.d.ts.map +1 -1
- package/dist/components/form/password-field.js +7 -6
- package/dist/components/form/password-field.js.map +1 -1
- package/dist/components/form/separator.d.ts.map +1 -1
- package/dist/components/form/separator.js +3 -2
- package/dist/components/form/separator.js.map +1 -1
- package/dist/components/form/tagpicker.d.ts.map +1 -1
- package/dist/components/form/tagpicker.js +2 -1
- package/dist/components/form/tagpicker.js.map +1 -1
- package/dist/components/form/text-area.d.ts.map +1 -1
- package/dist/components/form/text-area.js +7 -6
- package/dist/components/form/text-area.js.map +1 -1
- package/dist/components/form/text-field.d.ts.map +1 -1
- package/dist/components/form/text-field.js +7 -6
- package/dist/components/form/text-field.js.map +1 -1
- package/dist/components/form/use-form-navigation.d.ts.map +1 -1
- package/dist/components/form/use-form-navigation.js +4 -4
- package/dist/components/form/use-form-navigation.js.map +1 -1
- package/dist/components/form/with-left-border.d.ts +15 -0
- package/dist/components/form/with-left-border.d.ts.map +1 -1
- package/dist/components/form/with-left-border.js +21 -9
- package/dist/components/form/with-left-border.js.map +1 -1
- package/dist/components/icon.d.ts +14 -0
- package/dist/components/icon.d.ts.map +1 -1
- package/dist/components/icon.js +60 -0
- package/dist/components/icon.js.map +1 -1
- package/dist/components/image.d.ts +47 -2
- package/dist/components/image.d.ts.map +1 -1
- package/dist/components/image.js +46 -7
- package/dist/components/image.js.map +1 -1
- package/dist/components/list.d.ts +5 -0
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +188 -132
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.d.ts.map +1 -1
- package/dist/components/loading-bar.js +4 -3
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/components/metadata.d.ts +70 -0
- package/dist/components/metadata.d.ts.map +1 -0
- package/dist/components/metadata.js +82 -0
- package/dist/components/metadata.js.map +1 -0
- package/dist/components/theme-picker.d.ts.map +1 -1
- package/dist/components/theme-picker.js +3 -2
- package/dist/components/theme-picker.js.map +1 -1
- package/dist/descendants-v2.d.ts +60 -0
- package/dist/descendants-v2.d.ts.map +1 -0
- package/dist/descendants-v2.js +144 -0
- package/dist/descendants-v2.js.map +1 -0
- package/dist/examples/actions-context.d.ts +2 -0
- package/dist/examples/actions-context.d.ts.map +1 -0
- package/dist/examples/actions-context.js +33 -0
- package/dist/examples/actions-context.js.map +1 -0
- package/dist/examples/form-basic.d.ts.map +1 -1
- package/dist/examples/form-basic.js +1 -1
- package/dist/examples/form-basic.js.map +1 -1
- package/dist/examples/form-dropdown.js +1 -1
- package/dist/examples/form-dropdown.js.map +1 -1
- package/dist/examples/internal/custom-action-renderables.d.ts +70 -0
- package/dist/examples/internal/custom-action-renderables.d.ts.map +1 -0
- package/dist/examples/internal/custom-action-renderables.js +163 -0
- package/dist/examples/internal/custom-action-renderables.js.map +1 -0
- package/dist/examples/internal/custom-dropdown.d.ts +99 -0
- package/dist/examples/internal/custom-dropdown.d.ts.map +1 -0
- package/dist/examples/internal/custom-dropdown.js +270 -0
- package/dist/examples/internal/custom-dropdown.js.map +1 -0
- package/dist/examples/internal/custom-renderable-form.d.ts +43 -0
- package/dist/examples/internal/custom-renderable-form.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-form.js +284 -0
- package/dist/examples/internal/custom-renderable-form.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list-default-search.d.ts +2 -0
- package/dist/examples/internal/custom-renderable-list-default-search.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list-default-search.js +16 -0
- package/dist/examples/internal/custom-renderable-list-default-search.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.d.ts +2 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.js +24 -0
- package/dist/examples/internal/custom-renderable-list-v2-default-search.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2.d.ts +189 -0
- package/dist/examples/internal/custom-renderable-list-v2.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list-v2.js +708 -0
- package/dist/examples/internal/custom-renderable-list-v2.js.map +1 -0
- package/dist/examples/internal/custom-renderable-list.d.ts +72 -0
- package/dist/examples/internal/custom-renderable-list.d.ts.map +1 -0
- package/dist/examples/internal/custom-renderable-list.js +544 -0
- package/dist/examples/internal/custom-renderable-list.js.map +1 -0
- package/dist/examples/internal/rhf-custom-ref.js +5 -4
- package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
- package/dist/examples/internal/scrollbox-with-descendants.js +4 -2
- package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
- package/dist/examples/list-controlled-search.d.ts +2 -0
- package/dist/examples/list-controlled-search.d.ts.map +1 -0
- package/dist/examples/list-controlled-search.js +12 -0
- package/dist/examples/list-controlled-search.js.map +1 -0
- package/dist/examples/list-detail-metadata.js +1 -1
- package/dist/examples/list-detail-metadata.js.map +1 -1
- package/dist/examples/simple-image-mask.d.ts +8 -0
- package/dist/examples/simple-image-mask.d.ts.map +1 -0
- package/dist/examples/simple-image-mask.js +12 -0
- package/dist/examples/simple-image-mask.js.map +1 -0
- package/dist/examples/toast-variations.js +1 -1
- package/dist/examples/toast-variations.js.map +1 -1
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +3 -2
- package/dist/extensions/dev.js.map +1 -1
- package/dist/extensions/react-refresh-init.d.ts.map +1 -1
- package/dist/extensions/react-refresh-init.js +4 -3
- package/dist/extensions/react-refresh-init.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/date-picker-widget.d.ts.map +1 -1
- package/dist/internal/date-picker-widget.js +2 -1
- package/dist/internal/date-picker-widget.js.map +1 -1
- package/dist/internal/dialog.d.ts +6 -0
- package/dist/internal/dialog.d.ts.map +1 -1
- package/dist/internal/dialog.js +59 -18
- package/dist/internal/dialog.js.map +1 -1
- package/dist/internal/navigation.d.ts.map +1 -1
- package/dist/internal/navigation.js +8 -1
- package/dist/internal/navigation.js.map +1 -1
- package/dist/internal/offscreen.d.ts +3 -0
- package/dist/internal/offscreen.d.ts.map +1 -1
- package/dist/internal/offscreen.js +5 -0
- package/dist/internal/offscreen.js.map +1 -1
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +20 -3
- package/dist/internal/providers.js.map +1 -1
- package/dist/internal/scrollbox.d.ts.map +1 -1
- package/dist/internal/scrollbox.js +3 -2
- package/dist/internal/scrollbox.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +4 -0
- package/dist/logger.js.map +1 -1
- package/dist/preload.js +5 -17
- package/dist/preload.js.map +1 -1
- package/dist/state.d.ts +4 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -0
- package/dist/state.js.map +1 -1
- package/dist/test-border-overlay.d.ts +2 -0
- package/dist/test-border-overlay.d.ts.map +1 -0
- package/dist/test-border-overlay.js +7 -0
- package/dist/test-border-overlay.js.map +1 -0
- package/dist/test-layout-2.d.ts +2 -0
- package/dist/test-layout-2.d.ts.map +1 -0
- package/dist/test-layout-2.js +5 -0
- package/dist/test-layout-2.js.map +1 -0
- package/dist/test-layout.d.ts +2 -0
- package/dist/test-layout.d.ts.map +1 -0
- package/dist/test-layout.js +7 -0
- package/dist/test-layout.js.map +1 -0
- package/dist/theme.d.ts +1 -2
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +5 -9
- package/dist/theme.js.map +1 -1
- package/dist/utils/run-command.d.ts +1 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +27 -7
- package/dist/utils/run-command.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +44 -23
- package/dist/utils.js.map +1 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +24 -4
- package/dist/watcher.js.map +1 -1
- package/package.json +14 -12
- package/src/action-utils.tsx +10 -0
- package/src/apis/cache.test.ts +35 -3
- package/src/apis/cache.tsx +184 -59
- package/src/apis/clipboard.tsx +5 -0
- package/src/apis/oauth.tsx +33 -4
- package/src/build.tsx +35 -58
- package/src/cli.tsx +156 -134
- package/src/compile.tsx +6 -3
- package/src/compile.vitest.tsx +33 -15
- package/src/components/actions.tsx +230 -99
- package/src/components/alert.tsx +11 -10
- package/src/components/animation-tick.tsx +1 -1
- package/src/components/detail.tsx +56 -151
- package/src/components/dropdown.tsx +70 -36
- package/src/components/footer.tsx +58 -33
- package/src/components/form/checkbox.tsx +30 -32
- package/src/components/form/date-picker.tsx +27 -47
- package/src/components/form/description.tsx +19 -18
- package/src/components/form/dropdown.tsx +95 -103
- package/src/components/form/file-autocomplete.tsx +9 -8
- package/src/components/form/file-picker.tsx +46 -46
- package/src/components/form/form-end.tsx +6 -4
- package/src/components/form/index.tsx +38 -48
- package/src/components/form/password-field.tsx +25 -27
- package/src/components/form/separator.tsx +3 -2
- package/src/components/form/tagpicker.tsx +2 -1
- package/src/components/form/text-area.tsx +25 -30
- package/src/components/form/text-field.tsx +25 -27
- package/src/components/form/use-form-navigation.tsx +4 -5
- package/src/components/form/with-left-border.tsx +48 -10
- package/src/components/icon.tsx +69 -0
- package/src/components/image.tsx +60 -7
- package/src/components/list.tsx +270 -202
- package/src/components/loading-bar.tsx +4 -3
- package/src/components/metadata.tsx +217 -0
- package/src/components/theme-picker.tsx +3 -2
- package/src/examples/actions-context.tsx +63 -0
- package/src/examples/actions-context.vitest.tsx +110 -0
- package/src/examples/actions-dialog-layout.vitest.tsx +2 -1
- package/src/examples/file-autocomplete.vitest.tsx +15 -15
- package/src/examples/form-basic.tsx +12 -0
- package/src/examples/form-basic.vitest.tsx +74 -74
- package/src/examples/form-dropdown.tsx +8 -0
- package/src/examples/form-dropdown.vitest.tsx +364 -421
- package/src/examples/form-tagpicker.vitest.tsx +56 -54
- package/src/examples/github.vitest.tsx +252 -0
- package/src/examples/internal/rhf-custom-ref.tsx +16 -15
- package/src/examples/internal/scrollbox-with-descendants.tsx +4 -2
- package/src/examples/internal/simple-dialog.tsx +1 -1
- package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -9
- package/src/examples/list-controlled-search.tsx +28 -0
- package/src/examples/list-controlled-search.vitest.tsx +49 -0
- package/src/examples/list-detail-metadata.tsx +8 -5
- package/src/examples/list-detail-metadata.vitest.tsx +22 -22
- package/src/examples/list-dropdown-default.vitest.tsx +12 -12
- package/src/examples/list-scrollbox.vitest.tsx +52 -38
- package/src/examples/list-with-detail.vitest.tsx +45 -41
- package/src/examples/list-with-dropdown.vitest.tsx +5 -5
- package/src/examples/list-with-sections.vitest.tsx +65 -12
- package/src/examples/list-with-toast.vitest.tsx +4 -4
- package/src/examples/simple-file-picker.vitest.tsx +12 -12
- package/src/examples/simple-grid.vitest.tsx +53 -53
- package/src/examples/simple-image-mask.tsx +58 -0
- package/src/examples/simple-navigation.vitest.tsx +19 -19
- package/src/examples/store.vitest.tsx +1 -1
- package/src/examples/swift-extension.vitest.tsx +4 -2
- package/src/examples/synonyms.vitest.tsx +31 -9
- package/src/examples/toast-action.vitest.tsx +8 -8
- package/src/examples/toast-variations.tsx +1 -1
- package/src/examples/toast-variations.vitest.tsx +69 -134
- package/src/extensions/dev.tsx +3 -2
- package/src/extensions/dev.vitest.tsx +65 -28
- package/src/extensions/react-refresh-init.tsx +4 -3
- package/src/index.tsx +3 -1
- package/src/internal/date-picker-widget.tsx +2 -1
- package/src/internal/dialog.tsx +100 -28
- package/src/internal/navigation.tsx +8 -1
- package/src/internal/offscreen.tsx +10 -0
- package/src/internal/providers.tsx +34 -8
- package/src/internal/scrollbox.tsx +4 -2
- package/src/logger.tsx +4 -0
- package/src/preload.tsx +5 -17
- package/src/state.tsx +12 -0
- package/src/theme.tsx +6 -9
- package/src/utils/run-command.tsx +32 -8
- package/src/utils.tsx +58 -23
- package/src/watcher.tsx +26 -6
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Descendants V2 - Generic renderable-based descendants pattern
|
|
3
|
+
*
|
|
4
|
+
* This provides a bridge between opentui's lifecycle (onLifecyclePass) and React state.
|
|
5
|
+
* Items self-register when added to the tree, React owns the item list in state.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const { Root, Item, ItemRenderable } = createDescendantsV2<MyItemProps>('my-list')
|
|
9
|
+
*
|
|
10
|
+
* <Root ref={rootRefCallback} onRegisterItem={(item) => setItems(prev => [...prev, item])}>
|
|
11
|
+
* <Item props={{ value: 'foo', title: 'Foo' }}>
|
|
12
|
+
* {children}
|
|
13
|
+
* </Item>
|
|
14
|
+
* </Root>
|
|
15
|
+
*
|
|
16
|
+
* React handles filtering/selection/navigation - renderables just handle registration.
|
|
17
|
+
*/
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import { BoxRenderable, } from '@opentui/core';
|
|
20
|
+
import { extend } from '@opentui/react';
|
|
21
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
22
|
+
// Tree traversal helper
|
|
23
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
24
|
+
function findParent(node, ParentClass) {
|
|
25
|
+
let current = node.parent ?? undefined;
|
|
26
|
+
while (current) {
|
|
27
|
+
if (current instanceof ParentClass) {
|
|
28
|
+
return current;
|
|
29
|
+
}
|
|
30
|
+
current = current.parent ?? undefined;
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
export class DescendantItemRenderable extends BoxRenderable {
|
|
35
|
+
props = {};
|
|
36
|
+
_parent;
|
|
37
|
+
_registered = false;
|
|
38
|
+
_RootClass;
|
|
39
|
+
constructor(ctx, options, RootClass) {
|
|
40
|
+
super(ctx, { ...options, flexDirection: 'row', width: '100%' });
|
|
41
|
+
this._RootClass = RootClass;
|
|
42
|
+
if (options.props) {
|
|
43
|
+
this.props = options.props;
|
|
44
|
+
}
|
|
45
|
+
this.onLifecyclePass = () => {
|
|
46
|
+
if (!this._registered) {
|
|
47
|
+
this._parent = findParent(this, this._RootClass);
|
|
48
|
+
if (this._parent) {
|
|
49
|
+
this._parent.registerItem(this);
|
|
50
|
+
this._registered = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Called when removed from tree
|
|
56
|
+
destroy() {
|
|
57
|
+
if (this._registered && this._parent) {
|
|
58
|
+
this._parent.unregisterItem(this);
|
|
59
|
+
this._registered = false;
|
|
60
|
+
}
|
|
61
|
+
super.destroy();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class DescendantsRootRenderable extends BoxRenderable {
|
|
65
|
+
// Callbacks to notify React state
|
|
66
|
+
onRegisterItem;
|
|
67
|
+
onUnregisterItem;
|
|
68
|
+
constructor(ctx, options) {
|
|
69
|
+
super(ctx, options);
|
|
70
|
+
if (options.onRegisterItem) {
|
|
71
|
+
this.onRegisterItem = options.onRegisterItem;
|
|
72
|
+
}
|
|
73
|
+
if (options.onUnregisterItem) {
|
|
74
|
+
this.onUnregisterItem = options.onUnregisterItem;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
registerItem(item) {
|
|
78
|
+
console.log('[descendants-v2] registerItem', item.props);
|
|
79
|
+
this.onRegisterItem?.(item);
|
|
80
|
+
}
|
|
81
|
+
unregisterItem(item) {
|
|
82
|
+
console.log('[descendants-v2] unregisterItem', item.props);
|
|
83
|
+
this.onUnregisterItem?.(item);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function createDescendantsV2(name) {
|
|
87
|
+
const rootElementName = `termcast-${name}-root`;
|
|
88
|
+
const itemElementName = `termcast-${name}-item`;
|
|
89
|
+
// Create subclass so findParent finds the right root (not another descendants instance)
|
|
90
|
+
class NamedRootRenderable extends DescendantsRootRenderable {
|
|
91
|
+
}
|
|
92
|
+
class NamedItemRenderable extends BoxRenderable {
|
|
93
|
+
props = {};
|
|
94
|
+
_parent;
|
|
95
|
+
_registered = false;
|
|
96
|
+
constructor(ctx, options) {
|
|
97
|
+
super(ctx, { ...options, flexDirection: 'row', width: '100%' });
|
|
98
|
+
if (options.props) {
|
|
99
|
+
this.props = options.props;
|
|
100
|
+
}
|
|
101
|
+
this.onLifecyclePass = () => {
|
|
102
|
+
if (!this._registered) {
|
|
103
|
+
this._parent = findParent(this, NamedRootRenderable);
|
|
104
|
+
if (this._parent) {
|
|
105
|
+
this._parent.registerItem(this);
|
|
106
|
+
this._registered = true;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
destroy() {
|
|
112
|
+
if (this._registered && this._parent) {
|
|
113
|
+
this._parent.unregisterItem(this);
|
|
114
|
+
this._registered = false;
|
|
115
|
+
}
|
|
116
|
+
super.destroy();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Register custom elements with opentui - pass class constructors directly
|
|
120
|
+
extend({
|
|
121
|
+
[rootElementName]: NamedRootRenderable,
|
|
122
|
+
[itemElementName]: NamedItemRenderable,
|
|
123
|
+
});
|
|
124
|
+
// React components with proper types
|
|
125
|
+
const Root = (props) => {
|
|
126
|
+
const renderCount = React.useRef(0);
|
|
127
|
+
renderCount.current += 1;
|
|
128
|
+
console.log('[descendants-v2] Root render', 'count:', renderCount.current);
|
|
129
|
+
return React.createElement(rootElementName, props);
|
|
130
|
+
};
|
|
131
|
+
const Item = (props) => {
|
|
132
|
+
const renderCount = React.useRef(0);
|
|
133
|
+
renderCount.current += 1;
|
|
134
|
+
console.log('[descendants-v2] Item render', 'count:', renderCount.current);
|
|
135
|
+
return React.createElement(itemElementName, props);
|
|
136
|
+
};
|
|
137
|
+
return {
|
|
138
|
+
Root,
|
|
139
|
+
Item,
|
|
140
|
+
ItemRenderable: NamedItemRenderable,
|
|
141
|
+
RootRenderable: NamedRootRenderable,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=descendants-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descendants-v2.js","sourceRoot":"","sources":["../src/descendants-v2.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions-context.d.ts","sourceRoot":"","sources":["../../src/examples/actions-context.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Example validating that ActionPanel preserves React context through portals.
|
|
4
|
+
*
|
|
5
|
+
* A custom React context (CounterContext) provides a counter value. The
|
|
6
|
+
* CounterAction component reads from this context at render time and closes
|
|
7
|
+
* over it in its onAction callback. If the portal preserves context correctly,
|
|
8
|
+
* the toast will show the matching prop and context values.
|
|
9
|
+
*/
|
|
10
|
+
import { createContext, useContext, useState } from 'react';
|
|
11
|
+
import { List, ActionPanel, Action, showToast, Toast, renderWithProviders } from 'termcast';
|
|
12
|
+
const CounterContext = createContext(0);
|
|
13
|
+
// Action component that reads from context at render time
|
|
14
|
+
function CounterAction({ counter }) {
|
|
15
|
+
// Read from context - this works because the portal preserves the
|
|
16
|
+
// React tree context from the source component
|
|
17
|
+
const contextValue = useContext(CounterContext);
|
|
18
|
+
return (_jsx(Action, { title: "Show Counter", onAction: () => {
|
|
19
|
+
// Both the prop and context value should match
|
|
20
|
+
showToast({
|
|
21
|
+
title: `prop=${counter} ctx=${contextValue}`,
|
|
22
|
+
style: Toast.Style.Success,
|
|
23
|
+
});
|
|
24
|
+
} }));
|
|
25
|
+
}
|
|
26
|
+
function ActionsContextExample() {
|
|
27
|
+
const [counter, setCounter] = useState(42);
|
|
28
|
+
return (_jsx(CounterContext.Provider, { value: counter, children: _jsx(List, { navigationTitle: "Context Test", searchBarPlaceholder: "Search...", children: _jsx(List.Item, { title: `Counter: ${counter}`, subtitle: "Press enter to show counter via action", actions: _jsxs(ActionPanel, { children: [_jsx(CounterAction, { counter: counter }), _jsx(Action, { title: "Increment", onAction: () => {
|
|
29
|
+
setCounter((c) => c + 1);
|
|
30
|
+
} })] }) }) }) }));
|
|
31
|
+
}
|
|
32
|
+
await renderWithProviders(_jsx(ActionsContextExample, {}));
|
|
33
|
+
//# sourceMappingURL=actions-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions-context.js","sourceRoot":"","sources":["../../src/examples/actions-context.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AACH,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE3F,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAEvC,0DAA0D;AAC1D,SAAS,aAAa,CAAC,EAAE,OAAO,EAAuB;IACrD,kEAAkE;IAClE,+CAA+C;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAE/C,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAC,cAAc,EACpB,QAAQ,EAAE,GAAG,EAAE;YACb,+CAA+C;YAC/C,SAAS,CAAC;gBACR,KAAK,EAAE,QAAQ,OAAO,QAAQ,YAAY,EAAE;gBAC5C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;aAC3B,CAAC,CAAA;QACJ,CAAC,GACD,CACH,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAE1C,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACrC,KAAC,IAAI,IACH,eAAe,EAAC,cAAc,EAC9B,oBAAoB,EAAC,WAAW,YAEhC,KAAC,IAAI,CAAC,IAAI,IACR,KAAK,EAAE,YAAY,OAAO,EAAE,EAC5B,QAAQ,EAAC,wCAAwC,EACjD,OAAO,EACL,MAAC,WAAW,eACV,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,GAAI,EACnC,KAAC,MAAM,IACL,KAAK,EAAC,WAAW,EACjB,QAAQ,EAAE,GAAG,EAAE;gCACb,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;4BAC1B,CAAC,GACD,IACU,GAEhB,GACG,GACiB,CAC3B,CAAA;AACH,CAAC;AAED,MAAM,mBAAmB,CAAC,KAAC,qBAAqB,KAAG,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-basic.d.ts","sourceRoot":"","sources":["../../src/examples/form-basic.tsx"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"form-basic.d.ts","sourceRoot":"","sources":["../../src/examples/form-basic.tsx"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,IAAI,GAAG,CA6HtC"}
|
|
@@ -15,7 +15,7 @@ export function FormBasicExample() {
|
|
|
15
15
|
message: 'All form data has been captured successfully',
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
|
-
return (_jsxs(Form, { actions: _jsx(ActionPanel, { children: _jsx(Action.SubmitForm, { title: 'Submit Form', onSubmit: handleSubmit }) }), children: [_jsx(Form.Description, { title: 'Form Component Demo', text: 'This demonstrates all available form input types. Use arrow keys or Tab to navigate between fields.' }), _jsx(Form.Separator, {}), _jsx(Form.TextField, { id: 'username', title: 'Username', placeholder: 'Enter your username', defaultValue: '', info: 'Required field' }), _jsx(Form.PasswordField, { id: 'password', title: 'Password', placeholder: 'Enter secure password', info: 'Must be at least 8 characters' }), _jsx(Form.TextArea, { id: 'bio', title: 'Biography', placeholder: 'Tell us about yourself...', info: 'Maximum 500 characters', defaultValue: '' }), _jsx(Form.Checkbox, { id: 'newsletter', title: 'Email Preferences', label: 'Subscribe to newsletter', defaultValue: false, info: 'Receive weekly updates' }), _jsxs(Form.Dropdown, { id: 'country', title: 'Country', placeholder: 'Select your country', info: 'Your country of residence', children: [_jsxs(Form.Dropdown.Section, { title: 'Americas', children: [_jsx(Form.Dropdown.Item, { value: 'us', title: 'United States', icon: '\uD83C\uDDFA\uD83C\uDDF8' }), _jsx(Form.Dropdown.Item, { value: 'ca', title: 'Canada', icon: '\uD83C\uDDE8\uD83C\uDDE6' }), _jsx(Form.Dropdown.Item, { value: 'mx', title: 'Mexico', icon: '\uD83C\uDDF2\uD83C\uDDFD' })] }), _jsxs(Form.Dropdown.Section, { title: 'Europe', children: [_jsx(Form.Dropdown.Item, { value: 'gb', title: 'United Kingdom', icon: '\uD83C\uDDEC\uD83C\uDDE7' }), _jsx(Form.Dropdown.Item, { value: 'fr', title: 'France', icon: '\uD83C\uDDEB\uD83C\uDDF7' }), _jsx(Form.Dropdown.Item, { value: 'de', title: 'Germany', icon: '\uD83C\uDDE9\uD83C\uDDEA' })] })] }), _jsx(Form.DatePicker, { id: 'birthdate', title: 'Date of Birth', type: Form.DatePicker.Type.Date, info: 'Format: YYYY-MM-DD' }), _jsx(Form.FilePicker, { id: 'documents', title: 'Upload Documents', info: 'Select one or more documents to attach', allowMultipleSelection: true, canChooseFiles: true, canChooseDirectories: false }), _jsx(Form.Separator, {}), _jsx(Form.Description, { title: 'Form Navigation', text: '\u2022 \u2191\u2193/Tab: Navigate fields | Space: Toggle checkbox | Enter/Space: Open dropdown | ^K/\u2318\u21B5: Show actions' }), submittedData && (_jsx(Form.Description, { title: 'Submitted Data:', text: JSON.stringify(submittedData, null, 2) }))] }));
|
|
18
|
+
return (_jsxs(Form, { actions: _jsx(ActionPanel, { children: _jsx(Action.SubmitForm, { title: 'Submit Form', onSubmit: handleSubmit }) }), children: [_jsx(Form.Description, { title: 'Form Component Demo', text: 'This demonstrates all available form input types. Use arrow keys or Tab to navigate between fields.' }), _jsx(Form.Separator, {}), _jsx(Form.TextField, { id: 'username', title: 'Username', placeholder: 'Enter your username', defaultValue: '', info: 'Required field' }), _jsx(Form.PasswordField, { id: 'password', title: 'Password', placeholder: 'Enter secure password', info: 'Must be at least 8 characters' }), _jsx(Form.TextArea, { id: 'bio', title: 'Biography', placeholder: 'Tell us about yourself...', info: 'Maximum 500 characters', defaultValue: '' }), _jsx(Form.Checkbox, { id: 'newsletter', title: 'Email Preferences', label: 'Subscribe to newsletter', defaultValue: false, info: 'Receive weekly updates' }), _jsxs(Form.Dropdown, { id: 'country', title: 'Country', placeholder: 'Select your country', info: 'Your country of residence', children: [_jsxs(Form.Dropdown.Section, { title: 'Americas', children: [_jsx(Form.Dropdown.Item, { value: 'us', title: 'United States', icon: '\uD83C\uDDFA\uD83C\uDDF8' }), _jsx(Form.Dropdown.Item, { value: 'ca', title: 'Canada', icon: '\uD83C\uDDE8\uD83C\uDDE6' }), _jsx(Form.Dropdown.Item, { value: 'mx', title: 'Mexico', icon: '\uD83C\uDDF2\uD83C\uDDFD' })] }), _jsxs(Form.Dropdown.Section, { title: 'Europe', children: [_jsx(Form.Dropdown.Item, { value: 'gb', title: 'United Kingdom', icon: '\uD83C\uDDEC\uD83C\uDDE7' }), _jsx(Form.Dropdown.Item, { value: 'fr', title: 'France', icon: '\uD83C\uDDEB\uD83C\uDDF7' }), _jsx(Form.Dropdown.Item, { value: 'de', title: 'Germany', icon: '\uD83C\uDDE9\uD83C\uDDEA' })] })] }), _jsx(Form.Dropdown, { id: 'emptyDropdown', title: 'Empty Dropdown', placeholder: 'No items available' }), _jsx(Form.TextField, { id: 'minimalField', title: 'Minimal Field', placeholder: 'No info text' }), _jsx(Form.DatePicker, { id: 'birthdate', title: 'Date of Birth', type: Form.DatePicker.Type.Date, info: 'Format: YYYY-MM-DD' }), _jsx(Form.FilePicker, { id: 'documents', title: 'Upload Documents', info: 'Select one or more documents to attach', allowMultipleSelection: true, canChooseFiles: true, canChooseDirectories: false }), _jsx(Form.Separator, {}), _jsx(Form.Description, { title: 'Form Navigation', text: '\u2022 \u2191\u2193/Tab: Navigate fields | Space: Toggle checkbox | Enter/Space: Open dropdown | ^K/\u2318\u21B5: Show actions' }), submittedData && (_jsx(Form.Description, { title: 'Submitted Data:', text: JSON.stringify(submittedData, null, 2) }))] }));
|
|
19
19
|
}
|
|
20
20
|
await renderWithProviders(_jsx(FormBasicExample, {}));
|
|
21
21
|
//# sourceMappingURL=form-basic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-basic.js","sourceRoot":"","sources":["../../src/examples/form-basic.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-basic.js","sourceRoot":"","sources":["../../src/examples/form-basic.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function FormDropdownExample() {
|
|
|
7
7
|
const handleSubmit = (data) => {
|
|
8
8
|
setSubmitted(data);
|
|
9
9
|
};
|
|
10
|
-
return (_jsxs(Form, { actions: _jsx(ActionPanel, { children: _jsx(Action.SubmitForm, { title: 'Submit Form', onSubmit: handleSubmit }) }), children: [_jsx(Form.Description, { title: 'Dropdown Component Demo', text: 'Test dropdown with sections, multiple selection, and more features' }), _jsxs(Form.Dropdown, { id: 'languages', title: 'Programming Languages', placeholder: 'Select languages...', info: 'Choose your preferred programming languages', hasMultipleSelection: true, defaultValue: ['typescript', 'rust'], children: [_jsxs(Form.Dropdown.Section, { title: 'Frontend', children: [_jsx(Form.Dropdown.Item, { value: 'typescript', title: 'TypeScript', icon: '\uD83D\uDCD8' }), _jsx(Form.Dropdown.Item, { value: 'javascript', title: 'JavaScript', icon: '\uD83D\uDCD2' }), _jsx(Form.Dropdown.Item, { value: 'react', title: 'React', icon: '\u269B\uFE0F' }), _jsx(Form.Dropdown.Item, { value: 'vue', title: 'Vue', icon: '\uD83D\uDC9A' }), _jsx(Form.Dropdown.Item, { value: 'svelte', title: 'Svelte', icon: '\uD83D\uDD25' })] }), _jsxs(Form.Dropdown.Section, { title: 'Backend', children: [_jsx(Form.Dropdown.Item, { value: 'node', title: 'Node.js', icon: '\uD83D\uDFE2' }), _jsx(Form.Dropdown.Item, { value: 'python', title: 'Python', icon: '\uD83D\uDC0D' }), _jsx(Form.Dropdown.Item, { value: 'go', title: 'Go', icon: '\uD83D\uDC39' }), _jsx(Form.Dropdown.Item, { value: 'rust', title: 'Rust', icon: '\uD83E\uDD80' }), _jsx(Form.Dropdown.Item, { value: 'java', title: 'Java', icon: '\u2615' })] }), _jsxs(Form.Dropdown.Section, { title: 'Mobile', children: [_jsx(Form.Dropdown.Item, { value: 'swift', title: 'Swift', icon: '\uD83E\uDD89' }), _jsx(Form.Dropdown.Item, { value: 'kotlin', title: 'Kotlin', icon: '\uD83D\uDFE3' }), _jsx(Form.Dropdown.Item, { value: 'flutter', title: 'Flutter', icon: '\uD83D\uDC99' }), _jsx(Form.Dropdown.Item, { value: 'react-native', title: 'React Native', icon: '\uD83D\uDCF1' })] })] }), _jsxs(Form.Dropdown, { id: 'theme', title: 'Editor Theme', placeholder: 'Choose a theme...', info: 'Select your preferred editor color theme', defaultValue: 'dracula', children: [_jsx(Form.Dropdown.Item, { value: 'monokai', title: 'Monokai', icon: '\uD83C\uDF11' }), _jsx(Form.Dropdown.Item, { value: 'dracula', title: 'Dracula', icon: '\uD83E\uDDDB' }), _jsx(Form.Dropdown.Item, { value: 'one-dark', title: 'One Dark', icon: '\uD83C\uDF1A' }), _jsx(Form.Dropdown.Item, { value: 'nord', title: 'Nord', icon: '\u2744\uFE0F' }), _jsx(Form.Dropdown.Item, { value: 'github', title: 'GitHub Light', icon: '\u2600\uFE0F' }), _jsx(Form.Dropdown.Item, { value: 'solarized-light', title: 'Solarized Light', icon: '\uD83C\uDF1E' }), _jsx(Form.Dropdown.Item, { value: 'one-light', title: 'One Light', icon: '\uD83D\uDCA1' })] }), _jsxs(Form.Dropdown, { id: 'priority', title: 'Task Priority', placeholder: 'Select priority level', children: [_jsx(Form.Dropdown.Item, { value: 'critical', title: 'Critical', icon: '\uD83D\uDD34' }), _jsx(Form.Dropdown.Item, { value: 'high', title: 'High', icon: '\uD83D\uDFE0' }), _jsx(Form.Dropdown.Item, { value: 'medium', title: 'Medium', icon: '\uD83D\uDFE1' }), _jsx(Form.Dropdown.Item, { value: 'low', title: 'Low', icon: '\uD83D\uDFE2' })] }), submitted && (_jsx(Form.Description, { title: 'Submitted Data', text: JSON.stringify(submitted, null, 2) }))] }));
|
|
10
|
+
return (_jsxs(Form, { actions: _jsx(ActionPanel, { children: _jsx(Action.SubmitForm, { title: 'Submit Form', onSubmit: handleSubmit }) }), children: [_jsx(Form.Description, { title: 'Dropdown Component Demo', text: 'Test dropdown with sections, multiple selection, and more features' }), _jsxs(Form.Dropdown, { id: 'languages', title: 'Programming Languages', placeholder: 'Select languages...', info: 'Choose your preferred programming languages', hasMultipleSelection: true, defaultValue: ['typescript', 'rust'], children: [_jsxs(Form.Dropdown.Section, { title: 'Frontend', children: [_jsx(Form.Dropdown.Item, { value: 'typescript', title: 'TypeScript', icon: '\uD83D\uDCD8' }), _jsx(Form.Dropdown.Item, { value: 'javascript', title: 'JavaScript', icon: '\uD83D\uDCD2' }), _jsx(Form.Dropdown.Item, { value: 'react', title: 'React', icon: '\u269B\uFE0F' }), _jsx(Form.Dropdown.Item, { value: 'vue', title: 'Vue', icon: '\uD83D\uDC9A' }), _jsx(Form.Dropdown.Item, { value: 'svelte', title: 'Svelte', icon: '\uD83D\uDD25' })] }), _jsxs(Form.Dropdown.Section, { title: 'Backend', children: [_jsx(Form.Dropdown.Item, { value: 'node', title: 'Node.js', icon: '\uD83D\uDFE2' }), _jsx(Form.Dropdown.Item, { value: 'python', title: 'Python', icon: '\uD83D\uDC0D' }), _jsx(Form.Dropdown.Item, { value: 'go', title: 'Go', icon: '\uD83D\uDC39' }), _jsx(Form.Dropdown.Item, { value: 'rust', title: 'Rust', icon: '\uD83E\uDD80' }), _jsx(Form.Dropdown.Item, { value: 'java', title: 'Java', icon: '\u2615' })] }), _jsxs(Form.Dropdown.Section, { title: 'Mobile', children: [_jsx(Form.Dropdown.Item, { value: 'swift', title: 'Swift', icon: '\uD83E\uDD89' }), _jsx(Form.Dropdown.Item, { value: 'kotlin', title: 'Kotlin', icon: '\uD83D\uDFE3' }), _jsx(Form.Dropdown.Item, { value: 'flutter', title: 'Flutter', icon: '\uD83D\uDC99' }), _jsx(Form.Dropdown.Item, { value: 'react-native', title: 'React Native', icon: '\uD83D\uDCF1' })] })] }), _jsxs(Form.Dropdown, { id: 'theme', title: 'Editor Theme', placeholder: 'Choose a theme...', info: 'Select your preferred editor color theme', defaultValue: 'dracula', children: [_jsx(Form.Dropdown.Item, { value: 'monokai', title: 'Monokai', icon: '\uD83C\uDF11' }), _jsx(Form.Dropdown.Item, { value: 'dracula', title: 'Dracula', icon: '\uD83E\uDDDB' }), _jsx(Form.Dropdown.Item, { value: 'one-dark', title: 'One Dark', icon: '\uD83C\uDF1A' }), _jsx(Form.Dropdown.Item, { value: 'nord', title: 'Nord', icon: '\u2744\uFE0F' }), _jsx(Form.Dropdown.Item, { value: 'github', title: 'GitHub Light', icon: '\u2600\uFE0F' }), _jsx(Form.Dropdown.Item, { value: 'solarized-light', title: 'Solarized Light', icon: '\uD83C\uDF1E' }), _jsx(Form.Dropdown.Item, { value: 'one-light', title: 'One Light', icon: '\uD83D\uDCA1' })] }), _jsxs(Form.Dropdown, { id: 'priority', title: 'Task Priority', placeholder: 'Select priority level', children: [_jsx(Form.Dropdown.Item, { value: 'critical', title: 'Critical', icon: '\uD83D\uDD34' }), _jsx(Form.Dropdown.Item, { value: 'high', title: 'High', icon: '\uD83D\uDFE0' }), _jsx(Form.Dropdown.Item, { value: 'medium', title: 'Medium', icon: '\uD83D\uDFE1' }), _jsx(Form.Dropdown.Item, { value: 'low', title: 'Low', icon: '\uD83D\uDFE2' })] }), _jsx(Form.Dropdown, { id: 'emptyDropdown', title: 'Empty Dropdown', placeholder: 'No options available' }), _jsx(Form.TextField, { id: 'afterEmpty', title: 'Field After Empty', placeholder: 'This should be close to empty dropdown' }), submitted && (_jsx(Form.Description, { title: 'Submitted Data', text: JSON.stringify(submitted, null, 2) }))] }));
|
|
11
11
|
}
|
|
12
12
|
await renderWithProviders(_jsx(FormDropdownExample, {}));
|
|
13
13
|
//# sourceMappingURL=form-dropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-dropdown.js","sourceRoot":"","sources":["../../src/examples/form-dropdown.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"form-dropdown.js","sourceRoot":"","sources":["../../src/examples/form-dropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Action Renderables Example
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates using opentui renderable wrappers for actions:
|
|
5
|
+
* - CustomActionRenderable: thin wrapper storing title/onAction
|
|
6
|
+
* - CustomActionPanelRenderable: traverses opentui tree to find first action title
|
|
7
|
+
* - Offscreen rendering to extract first action title
|
|
8
|
+
* - Dialog to show actions when pressed
|
|
9
|
+
*/
|
|
10
|
+
import { BoxRenderable, type RenderContext, type BoxOptions } from '@opentui/core';
|
|
11
|
+
import React from 'react';
|
|
12
|
+
interface CustomActionOptions extends BoxOptions {
|
|
13
|
+
actionTitle?: string;
|
|
14
|
+
onAction?: () => void;
|
|
15
|
+
}
|
|
16
|
+
declare class CustomActionRenderable extends BoxRenderable {
|
|
17
|
+
actionTitle: string;
|
|
18
|
+
onAction?: () => void;
|
|
19
|
+
constructor(ctx: RenderContext, options: CustomActionOptions);
|
|
20
|
+
}
|
|
21
|
+
interface CustomActionSectionOptions extends BoxOptions {
|
|
22
|
+
sectionTitle?: string;
|
|
23
|
+
}
|
|
24
|
+
declare class CustomActionSectionRenderable extends BoxRenderable {
|
|
25
|
+
sectionTitle?: string;
|
|
26
|
+
constructor(ctx: RenderContext, options: CustomActionSectionOptions);
|
|
27
|
+
}
|
|
28
|
+
interface CustomActionPanelOptions extends BoxOptions {
|
|
29
|
+
}
|
|
30
|
+
declare class CustomActionPanelRenderable extends BoxRenderable {
|
|
31
|
+
constructor(ctx: RenderContext, options: CustomActionPanelOptions);
|
|
32
|
+
getFirstActionTitle(): string;
|
|
33
|
+
getAllActions(): CustomActionRenderable[];
|
|
34
|
+
}
|
|
35
|
+
declare global {
|
|
36
|
+
namespace JSX {
|
|
37
|
+
interface IntrinsicElements {
|
|
38
|
+
'custom-action': CustomActionOptions & {
|
|
39
|
+
ref?: React.Ref<CustomActionRenderable>;
|
|
40
|
+
};
|
|
41
|
+
'custom-action-section': CustomActionSectionOptions & {
|
|
42
|
+
ref?: React.Ref<CustomActionSectionRenderable>;
|
|
43
|
+
};
|
|
44
|
+
'custom-action-panel': CustomActionPanelOptions & {
|
|
45
|
+
ref?: React.Ref<CustomActionPanelRenderable>;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
interface ActionProps {
|
|
51
|
+
title: string;
|
|
52
|
+
onAction?: () => void;
|
|
53
|
+
}
|
|
54
|
+
declare function Action({ title, onAction }: ActionProps): any;
|
|
55
|
+
interface ActionPanelSectionProps {
|
|
56
|
+
title?: string;
|
|
57
|
+
children?: React.ReactNode;
|
|
58
|
+
}
|
|
59
|
+
declare function ActionPanelSection({ title, children }: ActionPanelSectionProps): any;
|
|
60
|
+
interface ActionPanelProps {
|
|
61
|
+
children?: React.ReactNode;
|
|
62
|
+
}
|
|
63
|
+
interface ActionPanelType {
|
|
64
|
+
(props: ActionPanelProps): any;
|
|
65
|
+
Section: typeof ActionPanelSection;
|
|
66
|
+
}
|
|
67
|
+
declare const ActionPanel: ActionPanelType;
|
|
68
|
+
declare function Example(): any;
|
|
69
|
+
export { Action, ActionPanel, Example };
|
|
70
|
+
//# sourceMappingURL=custom-action-renderables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-action-renderables.d.ts","sourceRoot":"","sources":["../../../src/examples/internal/custom-action-renderables.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAA2B,MAAM,OAAO,CAAA;AAkD/C,UAAU,mBAAoB,SAAQ,UAAU;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,cAAM,sBAAuB,SAAQ,aAAa;IACzC,WAAW,SAAK;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;gBAEhB,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB;CAG7D;AAMD,UAAU,0BAA2B,SAAQ,UAAU;IACrD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,cAAM,6BAA8B,SAAQ,aAAa;IAChD,YAAY,CAAC,EAAE,MAAM,CAAA;gBAEhB,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,0BAA0B;CAGpE;AAMD,UAAU,wBAAyB,SAAQ,UAAU;CAAG;AAExD,cAAM,2BAA4B,SAAQ,aAAa;gBACzC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,wBAAwB;IAKjE,mBAAmB,IAAI,MAAM;IAM7B,aAAa,IAAI,sBAAsB,EAAE;CAG1C;AAYD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,eAAe,EAAE,mBAAmB,GAAG;gBAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;aAAE,CAAA;YAClF,uBAAuB,EAAE,0BAA0B,GAAG;gBAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;aAAE,CAAA;YACxG,qBAAqB,EAAE,wBAAwB,GAAG;gBAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;aAAE,CAAA;SACnG;KACF;CACF;AAMD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,iBAAS,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,GAAG,CAErD;AAED,UAAU,uBAAuB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,iBAAS,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,uBAAuB,GAAG,GAAG,CAM7E;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,UAAU,eAAe;IACvB,CAAC,KAAK,EAAE,gBAAgB,GAAG,GAAG,CAAA;IAC9B,OAAO,EAAE,OAAO,kBAAkB,CAAA;CACnC;AAED,QAAA,MAAM,WAAW,EAAE,eAElB,CAAA;AA6GD,iBAAS,OAAO,IAAI,GAAG,CAqEtB;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Custom Action Renderables Example
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates using opentui renderable wrappers for actions:
|
|
6
|
+
* - CustomActionRenderable: thin wrapper storing title/onAction
|
|
7
|
+
* - CustomActionPanelRenderable: traverses opentui tree to find first action title
|
|
8
|
+
* - Offscreen rendering to extract first action title
|
|
9
|
+
* - Dialog to show actions when pressed
|
|
10
|
+
*/
|
|
11
|
+
import { BoxRenderable, } from '@opentui/core';
|
|
12
|
+
import { extend, useKeyboard } from '@opentui/react';
|
|
13
|
+
import React, { useRef, useState } from 'react';
|
|
14
|
+
import { renderWithProviders } from '../../utils';
|
|
15
|
+
import { Theme } from 'termcast/src/theme';
|
|
16
|
+
import { Offscreen } from 'termcast/src/internal/offscreen';
|
|
17
|
+
import { CustomDropdown } from './custom-dropdown';
|
|
18
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
19
|
+
// Helper: Find parent of specific type by traversing up
|
|
20
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
function findParent(node, type) {
|
|
22
|
+
let current = node.parent;
|
|
23
|
+
while (current) {
|
|
24
|
+
if (current instanceof type) {
|
|
25
|
+
return current;
|
|
26
|
+
}
|
|
27
|
+
current = current.parent;
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
32
|
+
// Helper: Find children of specific type by traversing down
|
|
33
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
34
|
+
function findChildren(node, type) {
|
|
35
|
+
const results = [];
|
|
36
|
+
function traverse(current) {
|
|
37
|
+
if (current instanceof type) {
|
|
38
|
+
results.push(current);
|
|
39
|
+
}
|
|
40
|
+
// Traverse children using getChildren()
|
|
41
|
+
for (const child of current.getChildren()) {
|
|
42
|
+
traverse(child);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Start from node's children, not node itself
|
|
46
|
+
for (const child of node.getChildren()) {
|
|
47
|
+
traverse(child);
|
|
48
|
+
}
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
class CustomActionRenderable extends BoxRenderable {
|
|
52
|
+
actionTitle = '';
|
|
53
|
+
onAction;
|
|
54
|
+
constructor(ctx, options) {
|
|
55
|
+
super(ctx, options);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
class CustomActionSectionRenderable extends BoxRenderable {
|
|
59
|
+
sectionTitle;
|
|
60
|
+
constructor(ctx, options) {
|
|
61
|
+
super(ctx, options);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
class CustomActionPanelRenderable extends BoxRenderable {
|
|
65
|
+
constructor(ctx, options) {
|
|
66
|
+
super(ctx, options);
|
|
67
|
+
}
|
|
68
|
+
// Get first action title by traversing children synchronously
|
|
69
|
+
getFirstActionTitle() {
|
|
70
|
+
const actions = findChildren(this, CustomActionRenderable);
|
|
71
|
+
return actions[0]?.actionTitle ?? '';
|
|
72
|
+
}
|
|
73
|
+
// Get all actions by traversing children
|
|
74
|
+
getAllActions() {
|
|
75
|
+
return findChildren(this, CustomActionRenderable);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
79
|
+
// Register custom elements with opentui
|
|
80
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
81
|
+
extend({
|
|
82
|
+
'custom-action': CustomActionRenderable,
|
|
83
|
+
'custom-action-section': CustomActionSectionRenderable,
|
|
84
|
+
'custom-action-panel': CustomActionPanelRenderable,
|
|
85
|
+
});
|
|
86
|
+
function Action({ title, onAction }) {
|
|
87
|
+
return _jsx("custom-action", { actionTitle: title, onAction: onAction });
|
|
88
|
+
}
|
|
89
|
+
function ActionPanelSection({ title, children }) {
|
|
90
|
+
return (_jsx("custom-action-section", { sectionTitle: title, children: children }));
|
|
91
|
+
}
|
|
92
|
+
const ActionPanel = ({ children }) => {
|
|
93
|
+
return _jsx("custom-action-panel", { children: children });
|
|
94
|
+
};
|
|
95
|
+
ActionPanel.Section = ActionPanelSection;
|
|
96
|
+
function ActionTitleExtractor({ actions, onTitleExtracted }) {
|
|
97
|
+
const containerRef = useRef(null);
|
|
98
|
+
// Traverse the opentui tree to find the ActionPanel and extract first title
|
|
99
|
+
React.useLayoutEffect(() => {
|
|
100
|
+
if (containerRef.current) {
|
|
101
|
+
// Find CustomActionPanelRenderable in subtree
|
|
102
|
+
const panels = findChildren(containerRef.current, CustomActionPanelRenderable);
|
|
103
|
+
if (panels.length > 0) {
|
|
104
|
+
const title = panels[0].getFirstActionTitle();
|
|
105
|
+
onTitleExtracted(title);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return (_jsx("box", { ref: containerRef, visible: false, height: 0, children: actions }));
|
|
110
|
+
}
|
|
111
|
+
function ActionsDropdown({ actions, onClose }) {
|
|
112
|
+
const panelRef = useRef(null);
|
|
113
|
+
const [allActions, setAllActions] = useState([]);
|
|
114
|
+
// After tree is built, extract actions (run once on mount)
|
|
115
|
+
React.useLayoutEffect(() => {
|
|
116
|
+
if (panelRef.current) {
|
|
117
|
+
setAllActions(panelRef.current.getAllActions());
|
|
118
|
+
}
|
|
119
|
+
}, []);
|
|
120
|
+
// Handle escape to close
|
|
121
|
+
useKeyboard((evt) => {
|
|
122
|
+
if (evt.name === 'escape') {
|
|
123
|
+
onClose();
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
return (_jsxs("box", { flexDirection: "column", padding: 1, border: ['top', 'bottom', 'left', 'right'], borderStyle: "single", borderColor: Theme.border, backgroundColor: Theme.background, children: [_jsx("text", { marginBottom: 1, children: "Actions" }), _jsx("box", { visible: false, height: 0, children: _jsx("custom-action-panel", { ref: panelRef, children: actions }) }), _jsx(CustomDropdown, { placeholder: "Search actions...", onSelect: (id) => {
|
|
127
|
+
const action = allActions.find((a) => a.actionTitle === id);
|
|
128
|
+
if (action?.onAction) {
|
|
129
|
+
action.onAction();
|
|
130
|
+
onClose();
|
|
131
|
+
}
|
|
132
|
+
}, children: allActions.map((action) => (_jsx(CustomDropdown.Item, { id: action.actionTitle, title: action.actionTitle }, action.actionTitle))) }), _jsx("text", { marginTop: 1, fg: Theme.textMuted, children: "\u2191\u2193 navigate \u2022 \u23CE select \u2022 esc close" })] }));
|
|
133
|
+
}
|
|
134
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
135
|
+
// Example Component
|
|
136
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
137
|
+
function Example() {
|
|
138
|
+
const [firstActionTitle, setFirstActionTitle] = useState('');
|
|
139
|
+
const [showDialog, setShowDialog] = useState(false);
|
|
140
|
+
// Sample actions
|
|
141
|
+
const actions = (_jsxs(ActionPanel, { children: [_jsxs(ActionPanel.Section, { title: "Main", children: [_jsx(Action, { title: "Eat Apple", onAction: () => {
|
|
142
|
+
console.log('Eating apple!');
|
|
143
|
+
} }), _jsx(Action, { title: "Cook Apple", onAction: () => {
|
|
144
|
+
console.log('Cooking apple!');
|
|
145
|
+
} })] }), _jsx(ActionPanel.Section, { title: "Other", children: _jsx(Action, { title: "Throw Apple", onAction: () => {
|
|
146
|
+
console.log('Throwing apple!');
|
|
147
|
+
} }) })] }));
|
|
148
|
+
useKeyboard((evt) => {
|
|
149
|
+
if (showDialog)
|
|
150
|
+
return; // Let dialog handle keys
|
|
151
|
+
if (evt.name === 'return') {
|
|
152
|
+
setShowDialog(true);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
return (_jsxs("box", { flexDirection: "column", padding: 1, children: [_jsx("text", { marginBottom: 1, children: "Custom Action Renderables Example" }), _jsx("text", { children: "Press \u23CE to show actions" }), _jsxs("text", { marginTop: 1, children: ["First action: ", firstActionTitle || '(extracting...)'] }), _jsx(Offscreen, { children: _jsx(ActionTitleExtractor, { actions: actions, onTitleExtracted: setFirstActionTitle }) }), showDialog && (_jsx(ActionsDropdown, { actions: actions, onClose: () => {
|
|
156
|
+
setShowDialog(false);
|
|
157
|
+
} }))] }));
|
|
158
|
+
}
|
|
159
|
+
export { Action, ActionPanel, Example };
|
|
160
|
+
if (import.meta.main) {
|
|
161
|
+
renderWithProviders(_jsx(Example, {}));
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=custom-action-renderables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-action-renderables.js","sourceRoot":"","sources":["../../../src/examples/internal/custom-action-renderables.tsx"],"names":[],"mappings":"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"}
|