termcast 1.3.21 → 1.3.25
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/ai.d.ts +104 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +135 -0
- package/dist/ai.js.map +1 -0
- package/dist/apis/browser-extension.d.ts +18 -0
- package/dist/apis/browser-extension.d.ts.map +1 -0
- package/dist/apis/browser-extension.js +14 -0
- package/dist/apis/browser-extension.js.map +1 -0
- package/dist/apis/localstorage.d.ts.map +1 -1
- package/dist/apis/localstorage.js +4 -7
- package/dist/apis/localstorage.js.map +1 -1
- package/dist/apis/oauth.d.ts.map +1 -1
- package/dist/apis/oauth.js +5 -1
- package/dist/apis/oauth.js.map +1 -1
- package/dist/apis/preferences.d.ts.map +1 -1
- package/dist/apis/preferences.js +38 -19
- package/dist/apis/preferences.js.map +1 -1
- package/dist/apis/toast.d.ts +5 -0
- package/dist/apis/toast.d.ts.map +1 -1
- package/dist/apis/toast.js +7 -43
- package/dist/apis/toast.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +3 -1
- package/dist/build.js.map +1 -1
- package/dist/cache.d.ts +32 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +205 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +87 -41
- package/dist/cli.js.map +1 -1
- package/dist/clipboard.d.ts +36 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +154 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/compile.d.ts +2 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +31 -12
- package/dist/compile.js.map +1 -1
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +56 -30
- package/dist/components/actions.js.map +1 -1
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +4 -0
- package/dist/components/detail.js.map +1 -1
- package/dist/components/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +38 -15
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/extension-preferences.d.ts.map +1 -1
- package/dist/components/extension-preferences.js +40 -13
- package/dist/components/extension-preferences.js.map +1 -1
- package/dist/components/form/checkbox.d.ts.map +1 -1
- package/dist/components/form/checkbox.js +5 -3
- 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 +5 -3
- package/dist/components/form/date-picker.js.map +1 -1
- package/dist/components/form/description.d.ts.map +1 -1
- package/dist/components/form/description.js +2 -2
- 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 +84 -80
- package/dist/components/form/dropdown.js.map +1 -1
- package/dist/components/form/file-autocomplete.d.ts +3 -6
- package/dist/components/form/file-autocomplete.d.ts.map +1 -1
- package/dist/components/form/file-autocomplete.js +61 -66
- 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 +33 -30
- 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 +21 -1
- package/dist/components/form/form-end.js.map +1 -1
- package/dist/components/form/form-type-only.d.ts +174 -0
- package/dist/components/form/form-type-only.d.ts.map +1 -0
- package/dist/components/form/form-type-only.js +2 -0
- package/dist/components/form/form-type-only.js.map +1 -0
- package/dist/components/form/index.d.ts +3 -1
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +104 -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 +5 -3
- package/dist/components/form/password-field.js.map +1 -1
- package/dist/components/form/text-area.d.ts.map +1 -1
- package/dist/components/form/text-area.js +5 -3
- 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 +6 -4
- package/dist/components/form/text-field.js.map +1 -1
- package/dist/components/form/types.d.ts +5 -0
- package/dist/components/form/types.d.ts.map +1 -1
- package/dist/components/form/use-form-handling.d.ts +4 -0
- package/dist/components/form/use-form-handling.d.ts.map +1 -0
- package/dist/components/form/use-form-handling.js +37 -0
- package/dist/components/form/use-form-handling.js.map +1 -0
- package/dist/components/form/with-left-border.d.ts +2 -1
- package/dist/components/form/with-left-border.d.ts.map +1 -1
- package/dist/components/form/with-left-border.js +27 -3
- package/dist/components/form/with-left-border.js.map +1 -1
- package/dist/components/icon.d.ts +1 -0
- package/dist/components/icon.d.ts.map +1 -1
- package/dist/components/icon.js +24 -8
- package/dist/components/icon.js.map +1 -1
- package/dist/components/list.d.ts +2 -2
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +155 -70
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.d.ts.map +1 -1
- package/dist/components/loading-bar.js +2 -2
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/components/loading-text.d.ts +8 -0
- package/dist/components/loading-text.d.ts.map +1 -0
- package/dist/components/loading-text.js +58 -0
- package/dist/components/loading-text.js.map +1 -0
- package/dist/descendants.js +1 -1
- package/dist/descendants.js.map +1 -1
- package/dist/dev-ui.d.ts +7 -0
- package/dist/dev-ui.d.ts.map +1 -0
- package/dist/dev-ui.js +118 -0
- package/dist/dev-ui.js.map +1 -0
- package/dist/environment.d.ts +63 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +189 -0
- package/dist/environment.js.map +1 -0
- package/dist/examples/datepicker.d.ts +2 -0
- package/dist/examples/datepicker.d.ts.map +1 -0
- package/dist/examples/datepicker.js +344 -0
- package/dist/examples/datepicker.js.map +1 -0
- package/dist/examples/file-autocomplete.vitest.d.ts +2 -0
- package/dist/examples/file-autocomplete.vitest.d.ts.map +1 -0
- package/dist/examples/file-autocomplete.vitest.js +223 -0
- package/dist/examples/file-autocomplete.vitest.js.map +1 -0
- package/dist/examples/form-basic-arrow-keys.vitest.d.ts +2 -0
- package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +1 -0
- package/dist/examples/form-basic-arrow-keys.vitest.js +46 -0
- package/dist/examples/form-basic-arrow-keys.vitest.js.map +1 -0
- package/dist/examples/form-basic.vitest.d.ts +2 -0
- package/dist/examples/form-basic.vitest.d.ts.map +1 -0
- package/dist/examples/form-basic.vitest.js +630 -0
- package/dist/examples/form-basic.vitest.js.map +1 -0
- package/dist/examples/form-dropdown-with-sections.d.ts +2 -0
- package/dist/examples/form-dropdown-with-sections.d.ts.map +1 -0
- package/dist/examples/form-dropdown-with-sections.js +13 -0
- package/dist/examples/form-dropdown-with-sections.js.map +1 -0
- package/dist/examples/form-dropdown-with-sections.vitest.d.ts +2 -0
- package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +1 -0
- package/dist/examples/form-dropdown-with-sections.vitest.js +75 -0
- package/dist/examples/form-dropdown-with-sections.vitest.js.map +1 -0
- package/dist/examples/form-dropdown.vitest.d.ts +2 -0
- package/dist/examples/form-dropdown.vitest.d.ts.map +1 -0
- package/dist/examples/form-dropdown.vitest.js +854 -0
- package/dist/examples/form-dropdown.vitest.js.map +1 -0
- package/dist/examples/form-multiselect-dropdown.d.ts +2 -0
- package/dist/examples/form-multiselect-dropdown.d.ts.map +1 -0
- package/dist/examples/form-multiselect-dropdown.js +13 -0
- package/dist/examples/form-multiselect-dropdown.js.map +1 -0
- package/dist/examples/form-scroll.d.ts.map +1 -1
- package/dist/examples/form-scroll.js +7 -1
- package/dist/examples/form-scroll.js.map +1 -1
- package/dist/examples/form-scroll.vitest.d.ts +2 -0
- package/dist/examples/form-scroll.vitest.d.ts.map +1 -0
- package/dist/examples/form-scroll.vitest.js +211 -0
- package/dist/examples/form-scroll.vitest.js.map +1 -0
- package/dist/examples/form-tagpicker.vitest.d.ts +2 -0
- package/dist/examples/form-tagpicker.vitest.d.ts.map +1 -0
- package/dist/examples/form-tagpicker.vitest.js +736 -0
- package/dist/examples/form-tagpicker.vitest.js.map +1 -0
- package/dist/examples/internal/descendants-filtering.js +1 -1
- package/dist/examples/internal/descendants-filtering.js.map +1 -1
- package/dist/examples/internal/descendants.js +1 -1
- package/dist/examples/internal/descendants.js.map +1 -1
- package/dist/examples/internal/nested-boxes.d.ts +2 -0
- package/dist/examples/internal/nested-boxes.d.ts.map +1 -0
- package/dist/examples/internal/nested-boxes.js +7 -0
- package/dist/examples/internal/nested-boxes.js.map +1 -0
- package/dist/examples/internal/rhf-custom-ref.js +2 -2
- package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
- package/dist/examples/internal/scrollbox-demo.js +3 -22
- package/dist/examples/internal/scrollbox-demo.js.map +1 -1
- package/dist/examples/internal/scrollbox-descendants.d.ts +2 -0
- package/dist/examples/internal/scrollbox-descendants.d.ts.map +1 -0
- package/dist/examples/internal/scrollbox-descendants.js +83 -0
- package/dist/examples/internal/scrollbox-descendants.js.map +1 -0
- package/dist/examples/internal/scrollbox-with-descendants.js +4 -8
- package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
- package/dist/examples/internal/simple-scrollbox.vitest.d.ts +2 -0
- package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +1 -0
- package/dist/examples/internal/simple-scrollbox.vitest.js +96 -0
- package/dist/examples/internal/simple-scrollbox.vitest.js.map +1 -0
- package/dist/examples/internal/unicode-square-repro.d.ts +2 -0
- package/dist/examples/internal/unicode-square-repro.d.ts.map +1 -0
- package/dist/examples/internal/unicode-square-repro.js +7 -0
- package/dist/examples/internal/unicode-square-repro.js.map +1 -0
- package/dist/examples/list-detail-metadata.d.ts +2 -0
- package/dist/examples/list-detail-metadata.d.ts.map +1 -0
- package/dist/examples/list-detail-metadata.js +8 -0
- package/dist/examples/list-detail-metadata.js.map +1 -0
- package/dist/examples/list-dropdown-default.vitest.d.ts +2 -0
- package/dist/examples/list-dropdown-default.vitest.d.ts.map +1 -0
- package/dist/examples/list-dropdown-default.vitest.js +234 -0
- package/dist/examples/list-dropdown-default.vitest.js.map +1 -0
- package/dist/examples/list-fetch-data.vitest.d.ts +2 -0
- package/dist/examples/list-fetch-data.vitest.d.ts.map +1 -0
- package/dist/examples/list-fetch-data.vitest.js +111 -0
- package/dist/examples/list-fetch-data.vitest.js.map +1 -0
- package/dist/examples/list-filter-navigation.d.ts +2 -0
- package/dist/examples/list-filter-navigation.d.ts.map +1 -0
- package/dist/examples/list-filter-navigation.js +8 -0
- package/dist/examples/list-filter-navigation.js.map +1 -0
- package/dist/examples/list-scrollbox.vitest.d.ts +2 -0
- package/dist/examples/list-scrollbox.vitest.d.ts.map +1 -0
- package/dist/examples/list-scrollbox.vitest.js +93 -0
- package/dist/examples/list-scrollbox.vitest.js.map +1 -0
- package/dist/examples/list-with-detail-long.d.ts +2 -0
- package/dist/examples/list-with-detail-long.d.ts.map +1 -0
- package/dist/examples/list-with-detail-long.js +53 -0
- package/dist/examples/list-with-detail-long.js.map +1 -0
- package/dist/examples/list-with-detail.vitest.d.ts +2 -0
- package/dist/examples/list-with-detail.vitest.d.ts.map +1 -0
- package/dist/examples/list-with-detail.vitest.js +434 -0
- package/dist/examples/list-with-detail.vitest.js.map +1 -0
- package/dist/examples/list-with-dropdown.vitest.d.ts +2 -0
- package/dist/examples/list-with-dropdown.vitest.d.ts.map +1 -0
- package/dist/examples/list-with-dropdown.vitest.js +337 -0
- package/dist/examples/list-with-dropdown.vitest.js.map +1 -0
- package/dist/examples/list-with-sections.js +5 -1
- package/dist/examples/list-with-sections.js.map +1 -1
- package/dist/examples/list-with-sections.vitest.d.ts +2 -0
- package/dist/examples/list-with-sections.vitest.d.ts.map +1 -0
- package/dist/examples/list-with-sections.vitest.js +601 -0
- package/dist/examples/list-with-sections.vitest.js.map +1 -0
- package/dist/examples/scrollbox-vertical-centering.d.ts +6 -0
- package/dist/examples/scrollbox-vertical-centering.d.ts.map +1 -0
- package/dist/examples/scrollbox-vertical-centering.js +17 -0
- package/dist/examples/scrollbox-vertical-centering.js.map +1 -0
- package/dist/examples/simple-file-picker.vitest.d.ts +2 -0
- package/dist/examples/simple-file-picker.vitest.d.ts.map +1 -0
- package/dist/examples/simple-file-picker.vitest.js +678 -0
- package/dist/examples/simple-file-picker.vitest.js.map +1 -0
- package/dist/examples/simple-grid.vitest.d.ts +2 -0
- package/dist/examples/simple-grid.vitest.d.ts.map +1 -0
- package/dist/examples/simple-grid.vitest.js +521 -0
- package/dist/examples/simple-grid.vitest.js.map +1 -0
- package/dist/examples/simple-navigation.js +10 -4
- package/dist/examples/simple-navigation.js.map +1 -1
- package/dist/examples/simple-navigation.vitest.d.ts +2 -0
- package/dist/examples/simple-navigation.vitest.d.ts.map +1 -0
- package/dist/examples/simple-navigation.vitest.js +718 -0
- package/dist/examples/simple-navigation.vitest.js.map +1 -0
- package/dist/examples/store.vitest.d.ts +2 -0
- package/dist/examples/store.vitest.d.ts.map +1 -0
- package/dist/examples/store.vitest.js +69 -0
- package/dist/examples/store.vitest.js.map +1 -0
- package/dist/examples/toast-variations.d.ts +2 -0
- package/dist/examples/toast-variations.d.ts.map +1 -0
- package/dist/examples/toast-variations.js +122 -0
- package/dist/examples/toast-variations.js.map +1 -0
- package/dist/extensions/dev.d.ts +4 -2
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +61 -10
- package/dist/extensions/dev.js.map +1 -1
- package/dist/extensions/dev.vitest.d.ts +2 -0
- package/dist/extensions/dev.vitest.d.ts.map +1 -0
- package/dist/extensions/dev.vitest.js +197 -0
- package/dist/extensions/dev.vitest.js.map +1 -0
- package/dist/extensions/home.d.ts.map +1 -1
- package/dist/extensions/home.js +3 -0
- package/dist/extensions/home.js.map +1 -1
- package/dist/home-command.d.ts +8 -0
- package/dist/home-command.d.ts.map +1 -0
- package/dist/home-command.js +181 -0
- package/dist/home-command.js.map +1 -0
- package/dist/hover-repro.d.ts +2 -0
- package/dist/hover-repro.d.ts.map +1 -0
- package/dist/hover-repro.js +20 -0
- package/dist/hover-repro.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/dialog.d.ts +1 -0
- package/dist/internal/dialog.d.ts.map +1 -1
- package/dist/internal/dialog.js +27 -18
- package/dist/internal/dialog.js.map +1 -1
- package/dist/internal/navigation.d.ts +9 -1
- package/dist/internal/navigation.d.ts.map +1 -1
- package/dist/internal/navigation.js +5 -5
- package/dist/internal/navigation.js.map +1 -1
- package/dist/internal/offscreen.d.ts +6 -0
- package/dist/internal/offscreen.d.ts.map +1 -0
- package/dist/internal/offscreen.js +10 -0
- package/dist/internal/offscreen.js.map +1 -0
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +2 -2
- package/dist/internal/providers.js.map +1 -1
- package/dist/internal/scrollbox.d.ts +1 -10
- package/dist/internal/scrollbox.d.ts.map +1 -1
- package/dist/internal/scrollbox.js +2 -1
- package/dist/internal/scrollbox.js.map +1 -1
- package/dist/localstorage.d.ts +13 -0
- package/dist/localstorage.d.ts.map +1 -0
- package/dist/localstorage.js +190 -0
- package/dist/localstorage.js.map +1 -0
- package/dist/oauth.d.ts +142 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +551 -0
- package/dist/oauth.js.map +1 -0
- package/dist/preferences.d.ts +23 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +105 -0
- package/dist/preferences.js.map +1 -0
- package/dist/release.d.ts +1 -1
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +29 -33
- package/dist/release.js.map +1 -1
- package/dist/state.d.ts +2 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +3 -0
- package/dist/state.js.map +1 -1
- package/dist/store.d.ts +21 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +84 -0
- package/dist/store.js.map +1 -0
- package/dist/swift-loader.d.ts +3 -0
- package/dist/swift-loader.d.ts.map +1 -0
- package/dist/swift-loader.js +193 -0
- package/dist/swift-loader.js.map +1 -0
- package/dist/swift-runtime.d.ts +2 -0
- package/dist/swift-runtime.d.ts.map +1 -0
- package/dist/swift-runtime.js +27 -0
- package/dist/swift-runtime.js.map +1 -0
- package/dist/toast.d.ts +44 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +221 -0
- package/dist/toast.js.map +1 -0
- package/dist/utils/file-system.d.ts +9 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +49 -0
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/run-command.d.ts +26 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +53 -4
- package/dist/utils/run-command.js.map +1 -1
- package/dist/window.d.ts +12 -0
- package/dist/window.d.ts.map +1 -0
- package/dist/window.js +48 -0
- package/dist/window.js.map +1 -0
- package/package.json +12 -12
- package/src/apis/browser-extension.tsx +29 -0
- package/src/apis/localstorage.test.ts +14 -6
- package/src/apis/localstorage.tsx +8 -5
- package/src/apis/oauth.tsx +5 -1
- package/src/apis/preferences.tsx +48 -22
- package/src/apis/toast.tsx +37 -62
- package/src/build.test.tsx +52 -0
- package/src/build.tsx +3 -1
- package/src/cli.tsx +99 -48
- package/src/compile.tsx +32 -11
- package/src/components/actions.tsx +94 -32
- package/src/components/detail.tsx +4 -0
- package/src/components/dropdown.tsx +47 -14
- package/src/components/extension-preferences.tsx +44 -16
- package/src/components/form/checkbox.tsx +12 -6
- package/src/components/form/date-picker.tsx +12 -6
- package/src/components/form/description.tsx +7 -2
- package/src/components/form/dropdown.tsx +131 -119
- package/src/components/form/file-autocomplete.tsx +90 -108
- package/src/components/form/file-picker.tsx +54 -43
- package/src/components/form/form-end.tsx +23 -2
- package/src/components/form/index.tsx +168 -41
- package/src/components/form/password-field.tsx +12 -6
- package/src/components/form/text-area.tsx +13 -6
- package/src/components/form/text-field.tsx +13 -6
- package/src/components/form/types.tsx +6 -0
- package/src/components/form/with-left-border.tsx +41 -8
- package/src/components/icon.tsx +27 -8
- package/src/components/list.tsx +243 -101
- package/src/components/loading-bar.tsx +3 -2
- package/src/components/loading-text.tsx +79 -0
- package/src/descendants.tsx +1 -0
- package/src/examples/file-autocomplete.vitest.tsx +130 -125
- package/src/examples/form-basic.vitest.tsx +376 -176
- package/src/examples/form-dropdown.vitest.tsx +126 -126
- package/src/examples/form-scroll.tsx +2 -0
- package/src/examples/form-scroll.vitest.tsx +58 -58
- package/src/examples/form-tagpicker.vitest.tsx +99 -99
- package/src/examples/internal/descendants-filtering.tsx +1 -0
- package/src/examples/internal/descendants.tsx +1 -0
- package/src/examples/internal/rhf-custom-ref.tsx +2 -0
- package/src/examples/internal/scrollbox-demo.tsx +3 -27
- package/src/examples/internal/scrollbox-with-descendants.tsx +4 -7
- package/src/examples/internal/simple-scrollbox.vitest.tsx +7 -5
- package/src/examples/list-detail-metadata.tsx +49 -0
- package/src/examples/list-detail-metadata.vitest.tsx +88 -0
- package/src/examples/list-dropdown-default.vitest.tsx +51 -51
- package/src/examples/list-fetch-data.vitest.tsx +4 -4
- package/src/examples/list-scrollbox.vitest.tsx +73 -14
- package/src/examples/list-with-detail-long.tsx +70 -0
- package/src/examples/list-with-detail.vitest.tsx +191 -85
- package/src/examples/list-with-dropdown.vitest.tsx +53 -53
- package/src/examples/list-with-sections.tsx +1 -0
- package/src/examples/list-with-sections.vitest.tsx +221 -97
- package/src/examples/list-with-toast.vitest.tsx +16 -16
- package/src/examples/simple-file-picker.vitest.tsx +63 -469
- package/src/examples/simple-grid.vitest.tsx +238 -233
- package/src/examples/simple-navigation.tsx +15 -7
- package/src/examples/simple-navigation.vitest.tsx +130 -219
- package/src/examples/store.vitest.tsx +1 -1
- package/src/examples/swift-extension.vitest.tsx +148 -0
- package/src/examples/synonyms.vitest.tsx +159 -0
- package/src/examples/toast-variations.tsx +150 -0
- package/src/examples/toast-variations.vitest.tsx +370 -0
- package/src/extensions/dev.tsx +74 -7
- package/src/extensions/dev.vitest.tsx +102 -34
- package/src/extensions/home.tsx +6 -0
- package/src/index.tsx +3 -0
- package/src/internal/dialog.tsx +43 -30
- package/src/internal/navigation.tsx +3 -1
- package/src/internal/offscreen.tsx +15 -0
- package/src/internal/providers.tsx +4 -2
- package/src/internal/scrollbox.tsx +4 -8
- package/src/keyboard.test.tsx +69 -0
- package/src/release.tsx +32 -38
- package/src/state.tsx +7 -0
- package/src/swift-loader.tsx +239 -0
- package/src/swift-runtime.tsx +36 -0
- package/src/utils/file-system.ts +61 -0
- package/src/utils/run-command.tsx +82 -6
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { test, expect, afterEach, beforeEach } from 'vitest'
|
|
2
|
+
import { launchTerminal, Session } from 'tuistory/src'
|
|
3
|
+
|
|
4
|
+
let session: Session
|
|
5
|
+
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
session = await launchTerminal({
|
|
8
|
+
command: 'bun',
|
|
9
|
+
args: ['src/examples/toast-variations.tsx'],
|
|
10
|
+
cols: 80,
|
|
11
|
+
rows: 30,
|
|
12
|
+
})
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
session?.close()
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('toast variations display correctly', async () => {
|
|
20
|
+
// Simple Success
|
|
21
|
+
const simpleSuccess = await session.text({
|
|
22
|
+
waitFor: (text) => text.includes('Simple Success') && text.includes('Success'),
|
|
23
|
+
})
|
|
24
|
+
expect(simpleSuccess).toMatchInlineSnapshot(`
|
|
25
|
+
"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
29
|
+
|
|
30
|
+
Search...
|
|
31
|
+
|
|
32
|
+
›Simple Success
|
|
33
|
+
Simple Failure
|
|
34
|
+
With Short Message
|
|
35
|
+
With Long Message
|
|
36
|
+
With Super Long Message
|
|
37
|
+
With Primary Action
|
|
38
|
+
With Both Actions
|
|
39
|
+
Long Title with Actions
|
|
40
|
+
Animated Loading
|
|
41
|
+
Error with Retry
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
52
|
+
│ ✓ Success │
|
|
53
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
54
|
+
`)
|
|
55
|
+
|
|
56
|
+
// Simple Failure
|
|
57
|
+
await session.press('down')
|
|
58
|
+
const simpleFailure = await session.text()
|
|
59
|
+
expect(simpleFailure).toMatchInlineSnapshot(`
|
|
60
|
+
"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
64
|
+
|
|
65
|
+
Search...
|
|
66
|
+
|
|
67
|
+
Simple Success
|
|
68
|
+
›Simple Failure
|
|
69
|
+
With Short Message
|
|
70
|
+
With Long Message
|
|
71
|
+
With Super Long Message
|
|
72
|
+
With Primary Action
|
|
73
|
+
With Both Actions
|
|
74
|
+
Long Title with Actions
|
|
75
|
+
Animated Loading
|
|
76
|
+
Error with Retry
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
87
|
+
│ ✗ Error │
|
|
88
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
89
|
+
`)
|
|
90
|
+
|
|
91
|
+
// With Short Message
|
|
92
|
+
await session.press('down')
|
|
93
|
+
const shortMessage = await session.text()
|
|
94
|
+
expect(shortMessage).toMatchInlineSnapshot(`
|
|
95
|
+
"
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
99
|
+
|
|
100
|
+
Search...
|
|
101
|
+
|
|
102
|
+
Simple Success
|
|
103
|
+
Simple Failure
|
|
104
|
+
›With Short Message
|
|
105
|
+
With Long Message
|
|
106
|
+
With Super Long Message
|
|
107
|
+
With Primary Action
|
|
108
|
+
With Both Actions
|
|
109
|
+
Long Title with Actions
|
|
110
|
+
Animated Loading
|
|
111
|
+
Error with Retry
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
121
|
+
│ ✓ Copied │
|
|
122
|
+
│ Text copied to clipboard │
|
|
123
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
124
|
+
`)
|
|
125
|
+
|
|
126
|
+
// With Long Message
|
|
127
|
+
await session.press('down')
|
|
128
|
+
const longMessage = await session.text()
|
|
129
|
+
expect(longMessage).toMatchInlineSnapshot(`
|
|
130
|
+
"
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
134
|
+
|
|
135
|
+
Search...
|
|
136
|
+
|
|
137
|
+
Simple Success
|
|
138
|
+
Simple Failure
|
|
139
|
+
With Short Message
|
|
140
|
+
›With Long Message
|
|
141
|
+
With Super Long Message
|
|
142
|
+
With Primary Action
|
|
143
|
+
With Both Actions
|
|
144
|
+
Long Title with Actions
|
|
145
|
+
Animated Loading
|
|
146
|
+
Error with Retry
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
154
|
+
│ ✗ Error │
|
|
155
|
+
│ This is a very long error message that should wrap to multiple lines │
|
|
156
|
+
│ when displayed in the toast component. It contains detailed │
|
|
157
|
+
│ information about what went wrong during the operation. │
|
|
158
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
159
|
+
`)
|
|
160
|
+
|
|
161
|
+
// With Super Long Message
|
|
162
|
+
await session.press('down')
|
|
163
|
+
const superLongMessage = await session.text()
|
|
164
|
+
expect(superLongMessage).toMatchInlineSnapshot(`
|
|
165
|
+
"
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
169
|
+
|
|
170
|
+
Search...
|
|
171
|
+
|
|
172
|
+
Simple Success
|
|
173
|
+
Simple Failure
|
|
174
|
+
With Short Message
|
|
175
|
+
With Long Message
|
|
176
|
+
›With Super Long Message
|
|
177
|
+
With Primary Action
|
|
178
|
+
With Both Actions
|
|
179
|
+
Long Title with Actions
|
|
180
|
+
Animated Loading
|
|
181
|
+
Error with Retry
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
186
|
+
│ ✗ Warning │
|
|
187
|
+
│ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do │
|
|
188
|
+
│ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim │
|
|
189
|
+
│ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut │
|
|
190
|
+
│ aliquip ex ea commodo consequat. Duis aute irure dolor in │
|
|
191
|
+
│ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla │
|
|
192
|
+
│ pariatur. │
|
|
193
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
194
|
+
`)
|
|
195
|
+
|
|
196
|
+
// With Primary Action
|
|
197
|
+
await session.press('down')
|
|
198
|
+
const primaryAction = await session.text()
|
|
199
|
+
expect(primaryAction).toMatchInlineSnapshot(`
|
|
200
|
+
"
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
204
|
+
|
|
205
|
+
Search...
|
|
206
|
+
|
|
207
|
+
Simple Success
|
|
208
|
+
Simple Failure
|
|
209
|
+
With Short Message
|
|
210
|
+
With Long Message
|
|
211
|
+
With Super Long Message
|
|
212
|
+
›With Primary Action
|
|
213
|
+
With Both Actions
|
|
214
|
+
Long Title with Actions
|
|
215
|
+
Animated Loading
|
|
216
|
+
Error with Retry
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
226
|
+
│ ✓ File Deleted [Undo ↵] │
|
|
227
|
+
│ document.pdf was moved to trash │
|
|
228
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
229
|
+
`)
|
|
230
|
+
|
|
231
|
+
// With Both Actions
|
|
232
|
+
await session.press('down')
|
|
233
|
+
const bothActions = await session.text()
|
|
234
|
+
expect(bothActions).toMatchInlineSnapshot(`
|
|
235
|
+
"
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
239
|
+
|
|
240
|
+
Search...
|
|
241
|
+
|
|
242
|
+
Simple Success
|
|
243
|
+
Simple Failure
|
|
244
|
+
With Short Message
|
|
245
|
+
With Long Message
|
|
246
|
+
With Super Long Message
|
|
247
|
+
With Primary Action
|
|
248
|
+
›With Both Actions
|
|
249
|
+
Long Title with Actions
|
|
250
|
+
Animated Loading
|
|
251
|
+
Error with Retry
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
261
|
+
│ ✓ Update Available [Install ↵] [Later ⇥] │
|
|
262
|
+
│ Version 2.0 is ready to install │
|
|
263
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
264
|
+
`)
|
|
265
|
+
|
|
266
|
+
// Long Title with Actions
|
|
267
|
+
await session.press('down')
|
|
268
|
+
const longTitleActions = await session.text()
|
|
269
|
+
expect(longTitleActions).toMatchInlineSnapshot(`
|
|
270
|
+
"
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
274
|
+
|
|
275
|
+
Search...
|
|
276
|
+
|
|
277
|
+
Simple Success
|
|
278
|
+
Simple Failure
|
|
279
|
+
With Short Message
|
|
280
|
+
With Long Message
|
|
281
|
+
With Super Long Message
|
|
282
|
+
With Primary Action
|
|
283
|
+
With Both Actions
|
|
284
|
+
›Long Title with Actions
|
|
285
|
+
Animated Loading
|
|
286
|
+
Error with Retry
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
296
|
+
│ ✓ Operation Completed Successfully [View Results ↵] [Dismiss ⇥] │
|
|
297
|
+
│ All files have been processed │
|
|
298
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
299
|
+
`)
|
|
300
|
+
|
|
301
|
+
// Animated Loading
|
|
302
|
+
await session.press('down')
|
|
303
|
+
const animatedLoading = await session.text()
|
|
304
|
+
expect(animatedLoading).toMatchInlineSnapshot(`
|
|
305
|
+
"
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
309
|
+
|
|
310
|
+
Search...
|
|
311
|
+
|
|
312
|
+
Simple Success
|
|
313
|
+
Simple Failure
|
|
314
|
+
With Short Message
|
|
315
|
+
With Long Message
|
|
316
|
+
With Super Long Message
|
|
317
|
+
With Primary Action
|
|
318
|
+
With Both Actions
|
|
319
|
+
Long Title with Actions
|
|
320
|
+
›Animated Loading
|
|
321
|
+
Error with Retry
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
331
|
+
│ ⣽ Processing │
|
|
332
|
+
│ Please wait while we process your request... │
|
|
333
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
334
|
+
`)
|
|
335
|
+
|
|
336
|
+
// Error with Retry
|
|
337
|
+
await session.press('down')
|
|
338
|
+
const errorRetry = await session.text()
|
|
339
|
+
expect(errorRetry).toMatchInlineSnapshot(`
|
|
340
|
+
"
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
Toast Variations ─────────────────────────────────────────────────────────
|
|
344
|
+
|
|
345
|
+
Search...
|
|
346
|
+
|
|
347
|
+
Simple Success
|
|
348
|
+
Simple Failure
|
|
349
|
+
With Short Message
|
|
350
|
+
With Long Message
|
|
351
|
+
With Super Long Message
|
|
352
|
+
With Primary Action
|
|
353
|
+
With Both Actions
|
|
354
|
+
Long Title with Actions
|
|
355
|
+
Animated Loading
|
|
356
|
+
›Error with Retry
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
365
|
+
│ ✗ Connection Failed [Retry ↵] │
|
|
366
|
+
│ Unable to connect to the server. Please check your internet │
|
|
367
|
+
│ connection and try again. │
|
|
368
|
+
└──────────────────────────────────────────────────────────────────────────┘"
|
|
369
|
+
`)
|
|
370
|
+
}, 30000)
|
package/src/extensions/dev.tsx
CHANGED
|
@@ -11,7 +11,12 @@ import { showToast, Toast } from 'termcast/src/apis/toast'
|
|
|
11
11
|
import { Icon } from 'termcast'
|
|
12
12
|
import { getCommandsWithFiles, CommandWithFile } from '../package-json'
|
|
13
13
|
import { buildExtensionCommands } from '../build'
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
runCommand,
|
|
16
|
+
clearCommandArguments,
|
|
17
|
+
parseExtensionArgs,
|
|
18
|
+
handleHelpFlag,
|
|
19
|
+
} from '../utils/run-command'
|
|
15
20
|
|
|
16
21
|
interface BundledCommand extends CommandWithFile {
|
|
17
22
|
bundledPath: string
|
|
@@ -21,15 +26,18 @@ interface BundledCommand extends CommandWithFile {
|
|
|
21
26
|
function ExtensionCommandsList({
|
|
22
27
|
extensionPath,
|
|
23
28
|
commands,
|
|
29
|
+
skipArgv,
|
|
24
30
|
}: {
|
|
25
31
|
extensionPath: string
|
|
26
32
|
commands: BundledCommand[]
|
|
33
|
+
skipArgv?: number
|
|
27
34
|
}): any {
|
|
28
35
|
const { push } = useNavigation()
|
|
29
36
|
const { packageJson } = getCommandsWithFiles({
|
|
30
37
|
packageJsonPath: path.join(extensionPath, 'package.json'),
|
|
31
38
|
})
|
|
32
|
-
|
|
39
|
+
|
|
40
|
+
const visibleCommands = commands.filter((cmd) => cmd.mode !== 'menu-bar')
|
|
33
41
|
|
|
34
42
|
const handleCommandSelect = async (command: BundledCommand) => {
|
|
35
43
|
clearCommandArguments()
|
|
@@ -51,7 +59,6 @@ function ExtensionCommandsList({
|
|
|
51
59
|
bundledPath: command.bundledPath,
|
|
52
60
|
Component: command.Component,
|
|
53
61
|
push,
|
|
54
|
-
cacheBustParam: String(devRebuildCount),
|
|
55
62
|
})
|
|
56
63
|
} catch (error: any) {
|
|
57
64
|
await showToast({
|
|
@@ -62,13 +69,43 @@ function ExtensionCommandsList({
|
|
|
62
69
|
}
|
|
63
70
|
}
|
|
64
71
|
|
|
72
|
+
// Auto-run command from CLI arg or single command
|
|
73
|
+
React.useLayoutEffect(() => {
|
|
74
|
+
// Only parse argv on initial load (when skipArgv is provided), not on rebuilds
|
|
75
|
+
if (skipArgv != null) {
|
|
76
|
+
const { commandName } = parseExtensionArgs({ skipArgv })
|
|
77
|
+
|
|
78
|
+
if (commandName) {
|
|
79
|
+
const command = visibleCommands.find((cmd) => cmd.name === commandName)
|
|
80
|
+
if (command) {
|
|
81
|
+
handleCommandSelect(command)
|
|
82
|
+
} else {
|
|
83
|
+
showToast({
|
|
84
|
+
style: Toast.Style.Failure,
|
|
85
|
+
title: 'Command not found',
|
|
86
|
+
message: `No command named "${commandName}"`,
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
return
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (visibleCommands.length === 1) {
|
|
94
|
+
handleCommandSelect(visibleCommands[0])
|
|
95
|
+
}
|
|
96
|
+
}, [])
|
|
97
|
+
|
|
98
|
+
if (visibleCommands.length === 1) {
|
|
99
|
+
return null
|
|
100
|
+
}
|
|
101
|
+
|
|
65
102
|
return (
|
|
66
103
|
<List
|
|
67
104
|
navigationTitle={packageJson.title || 'Extension Commands'}
|
|
68
105
|
searchBarPlaceholder='Search commands...'
|
|
69
106
|
>
|
|
70
107
|
<List.Section title='Commands'>
|
|
71
|
-
{
|
|
108
|
+
{visibleCommands.map((command) => (
|
|
72
109
|
<List.Item
|
|
73
110
|
key={command.name}
|
|
74
111
|
id={command.name}
|
|
@@ -111,7 +148,7 @@ function ExtensionCommandsList({
|
|
|
111
148
|
))}
|
|
112
149
|
</List.Section>
|
|
113
150
|
|
|
114
|
-
{
|
|
151
|
+
{visibleCommands.length === 0 && (
|
|
115
152
|
<List.Section title='No Commands'>
|
|
116
153
|
<List.Item
|
|
117
154
|
title='No commands found'
|
|
@@ -125,8 +162,10 @@ function ExtensionCommandsList({
|
|
|
125
162
|
|
|
126
163
|
export async function startDevMode({
|
|
127
164
|
extensionPath,
|
|
165
|
+
skipArgv = 0,
|
|
128
166
|
}: {
|
|
129
167
|
extensionPath: string
|
|
168
|
+
skipArgv?: number
|
|
130
169
|
}): Promise<void> {
|
|
131
170
|
const resolvedPath = path.resolve(extensionPath)
|
|
132
171
|
|
|
@@ -149,13 +188,24 @@ export async function startDevMode({
|
|
|
149
188
|
target: 'bun',
|
|
150
189
|
})
|
|
151
190
|
|
|
191
|
+
// Handle --help before rendering
|
|
192
|
+
handleHelpFlag({
|
|
193
|
+
extensionName: packageJson.title || packageJson.name,
|
|
194
|
+
commands: commands.map((cmd) => ({
|
|
195
|
+
name: cmd.name,
|
|
196
|
+
title: cmd.title,
|
|
197
|
+
description: cmd.description,
|
|
198
|
+
})),
|
|
199
|
+
skipArgv,
|
|
200
|
+
})
|
|
201
|
+
|
|
152
202
|
// Reset state and set extension information
|
|
153
203
|
useStore.setState({
|
|
154
204
|
...useStore.getInitialState(),
|
|
155
205
|
extensionPath: resolvedPath,
|
|
156
206
|
extensionPackageJson: packageJson,
|
|
157
207
|
devElement: (
|
|
158
|
-
<ExtensionCommandsList extensionPath={resolvedPath} commands={commands} />
|
|
208
|
+
<ExtensionCommandsList extensionPath={resolvedPath} commands={commands} skipArgv={skipArgv} />
|
|
159
209
|
),
|
|
160
210
|
devRebuildCount: 1,
|
|
161
211
|
})
|
|
@@ -174,6 +224,7 @@ export async function startDevMode({
|
|
|
174
224
|
export async function startCompiledExtension({
|
|
175
225
|
extensionPath,
|
|
176
226
|
compiledCommands,
|
|
227
|
+
skipArgv = 0,
|
|
177
228
|
}: {
|
|
178
229
|
extensionPath: string
|
|
179
230
|
compiledCommands: Array<{
|
|
@@ -181,6 +232,7 @@ export async function startCompiledExtension({
|
|
|
181
232
|
bundledPath: string
|
|
182
233
|
Component: (props: any) => any
|
|
183
234
|
}>
|
|
235
|
+
skipArgv?: number
|
|
184
236
|
}): Promise<void> {
|
|
185
237
|
const packageJsonPath = path.join(extensionPath, 'package.json')
|
|
186
238
|
const { packageJson, commands: commandsMetadata } = getCommandsWithFiles({
|
|
@@ -196,13 +248,25 @@ export async function startCompiledExtension({
|
|
|
196
248
|
}
|
|
197
249
|
})
|
|
198
250
|
|
|
251
|
+
// Handle --help before rendering
|
|
252
|
+
handleHelpFlag({
|
|
253
|
+
extensionName: packageJson.title || packageJson.name,
|
|
254
|
+
commands: commands.map((cmd) => ({
|
|
255
|
+
name: cmd.name,
|
|
256
|
+
title: cmd.title,
|
|
257
|
+
description: cmd.description,
|
|
258
|
+
})),
|
|
259
|
+
skipArgv,
|
|
260
|
+
})
|
|
261
|
+
|
|
199
262
|
useStore.setState({
|
|
200
263
|
...useStore.getInitialState(),
|
|
201
264
|
extensionPath,
|
|
202
265
|
extensionPackageJson: packageJson,
|
|
203
266
|
devElement: (
|
|
204
|
-
<ExtensionCommandsList extensionPath={extensionPath} commands={commands} />
|
|
267
|
+
<ExtensionCommandsList extensionPath={extensionPath} commands={commands} skipArgv={skipArgv} />
|
|
205
268
|
),
|
|
269
|
+
devRebuildCount: 1,
|
|
206
270
|
})
|
|
207
271
|
|
|
208
272
|
function App(): any {
|
|
@@ -242,6 +306,9 @@ export async function triggerRebuild({
|
|
|
242
306
|
/>
|
|
243
307
|
),
|
|
244
308
|
devRebuildCount: state.devRebuildCount + 1,
|
|
309
|
+
navigationStack: [], // Reset navigation so NavigationProvider re-initializes with new devElement
|
|
310
|
+
dialogStack: [], // Clear any open dialogs/toasts on rebuild
|
|
311
|
+
toast: null,
|
|
245
312
|
})
|
|
246
313
|
} catch (error: any) {
|
|
247
314
|
await showToast({
|