termcast 1.3.10 → 1.3.18
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/apis/toast.d.ts +1 -5
- package/dist/apis/toast.d.ts.map +1 -1
- package/dist/apis/toast.js +23 -17
- package/dist/apis/toast.js.map +1 -1
- package/dist/build.d.ts +2 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +4 -3
- package/dist/build.js.map +1 -1
- package/dist/cli.js +42 -0
- package/dist/cli.js.map +1 -1
- package/dist/colors.d.ts +8 -1
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +12 -0
- package/dist/colors.js.map +1 -1
- package/dist/compile.d.ts +30 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +156 -0
- package/dist/compile.js.map +1 -0
- package/dist/components/actions.d.ts +1 -0
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +5 -2
- package/dist/components/actions.js.map +1 -1
- package/dist/components/command-arguments.d.ts +9 -0
- package/dist/components/command-arguments.d.ts.map +1 -0
- package/dist/components/command-arguments.js +21 -0
- package/dist/components/command-arguments.js.map +1 -0
- package/dist/components/detail.d.ts +1 -1
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +17 -39
- package/dist/components/detail.js.map +1 -1
- package/dist/components/dropdown.d.ts +1 -0
- package/dist/components/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +77 -21
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/extension-preferences.d.ts.map +1 -1
- package/dist/components/extension-preferences.js +19 -29
- 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 +9 -2
- 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 +15 -28
- package/dist/components/form/date-picker.js.map +1 -1
- package/dist/components/form/description.d.ts +2 -0
- package/dist/components/form/description.d.ts.map +1 -1
- package/dist/components/form/description.js +20 -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 +13 -28
- package/dist/components/form/dropdown.js.map +1 -1
- package/dist/components/form/file-autocomplete.d.ts +7 -4
- package/dist/components/form/file-autocomplete.d.ts.map +1 -1
- package/dist/components/form/file-autocomplete.js +54 -46
- package/dist/components/form/file-autocomplete.js.map +1 -1
- package/dist/components/form/file-picker.d.ts +5 -0
- package/dist/components/form/file-picker.d.ts.map +1 -1
- package/dist/components/form/file-picker.js +46 -49
- package/dist/components/form/file-picker.js.map +1 -1
- package/dist/components/form/form-ref.d.ts +43 -0
- package/dist/components/form/form-ref.d.ts.map +1 -0
- package/dist/components/form/form-ref.js +53 -0
- package/dist/components/form/form-ref.js.map +1 -0
- package/dist/components/form/index.d.ts +16 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +86 -23
- 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 +32 -16
- 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 +32 -15
- 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 +37 -17
- package/dist/components/form/text-field.js.map +1 -1
- package/dist/components/form/use-form-navigation.d.ts +4 -0
- package/dist/components/form/use-form-navigation.d.ts.map +1 -1
- package/dist/components/form/use-form-navigation.js +35 -18
- package/dist/components/form/use-form-navigation.js.map +1 -1
- package/dist/components/form/with-left-border.d.ts.map +1 -1
- package/dist/components/form/with-left-border.js +2 -2
- package/dist/components/form/with-left-border.js.map +1 -1
- package/dist/components/icon.d.ts +3 -1
- package/dist/components/icon.d.ts.map +1 -1
- package/dist/components/icon.js +494 -469
- package/dist/components/icon.js.map +1 -1
- package/dist/components/list.d.ts +11 -7
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +170 -38
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.js +1 -1
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/descendants.d.ts.map +1 -1
- package/dist/descendants.js +8 -5
- package/dist/descendants.js.map +1 -1
- package/dist/examples/action-show-in-finder.js +1 -1
- package/dist/examples/action-show-in-finder.js.map +1 -1
- package/dist/examples/environment-test.js +1 -1
- package/dist/examples/environment-test.js.map +1 -1
- package/dist/examples/error-boundary.js +1 -1
- package/dist/examples/error-boundary.js.map +1 -1
- package/dist/examples/form-basic.d.ts.map +1 -1
- package/dist/examples/form-basic.js +2 -2
- 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/form-scroll.d.ts +2 -0
- package/dist/examples/form-scroll.d.ts.map +1 -0
- package/dist/examples/form-scroll.js +8 -0
- package/dist/examples/form-scroll.js.map +1 -0
- package/dist/examples/form-tagpicker.js +1 -1
- package/dist/examples/form-tagpicker.js.map +1 -1
- package/dist/examples/internal/descendants-filtering.js +8 -3
- package/dist/examples/internal/descendants-filtering.js.map +1 -1
- package/dist/examples/internal/descendants.js +10 -3
- package/dist/examples/internal/descendants.js.map +1 -1
- package/dist/examples/internal/rhf-custom-ref.d.ts +2 -0
- package/dist/examples/internal/rhf-custom-ref.d.ts.map +1 -0
- package/dist/examples/internal/rhf-custom-ref.js +67 -0
- package/dist/examples/internal/rhf-custom-ref.js.map +1 -0
- package/dist/examples/internal/scrollbox-demo.js +3 -7
- package/dist/examples/internal/scrollbox-demo.js.map +1 -1
- package/dist/examples/internal/scrollbox-with-descendants.d.ts +2 -0
- package/dist/examples/internal/scrollbox-with-descendants.d.ts.map +1 -0
- package/dist/examples/internal/scrollbox-with-descendants.js +63 -0
- package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -0
- package/dist/examples/internal/simple-dialog.js +1 -1
- package/dist/examples/internal/simple-dialog.js.map +1 -1
- package/dist/examples/internal/simple-scrollbox.js +2 -3
- package/dist/examples/internal/simple-scrollbox.js.map +1 -1
- package/dist/examples/internal/text-stacking.js +4 -2
- package/dist/examples/internal/text-stacking.js.map +1 -1
- package/dist/examples/list-dropdown-default.js +1 -1
- package/dist/examples/list-dropdown-default.js.map +1 -1
- package/dist/examples/list-fetch-data.js +1 -1
- package/dist/examples/list-fetch-data.js.map +1 -1
- package/dist/examples/list-scrollbox.d.ts +2 -0
- package/dist/examples/list-scrollbox.d.ts.map +1 -0
- package/dist/examples/list-scrollbox.js +29 -0
- package/dist/examples/list-scrollbox.js.map +1 -0
- package/dist/examples/list-with-detail.js +1 -1
- package/dist/examples/list-with-detail.js.map +1 -1
- package/dist/examples/list-with-dropdown.js +1 -1
- package/dist/examples/list-with-dropdown.js.map +1 -1
- package/dist/examples/list-with-sections.js +3 -3
- package/dist/examples/list-with-sections.js.map +1 -1
- package/dist/examples/miscellaneous.js +1 -1
- package/dist/examples/miscellaneous.js.map +1 -1
- package/dist/examples/nested-navigation.js +4 -2
- package/dist/examples/nested-navigation.js.map +1 -1
- package/dist/examples/preferences-test.js +1 -1
- package/dist/examples/preferences-test.js.map +1 -1
- package/dist/examples/simple-dropdown.js +1 -1
- package/dist/examples/simple-dropdown.js.map +1 -1
- package/dist/examples/simple-file-picker.js +1 -1
- package/dist/examples/simple-file-picker.js.map +1 -1
- package/dist/examples/simple-grid.js +1 -1
- package/dist/examples/simple-grid.js.map +1 -1
- package/dist/examples/simple-hud.js +1 -1
- package/dist/examples/simple-hud.js.map +1 -1
- package/dist/examples/simple-list-search.js +1 -1
- package/dist/examples/simple-list-search.js.map +1 -1
- package/dist/examples/simple-list.js +1 -1
- package/dist/examples/simple-list.js.map +1 -1
- package/dist/examples/simple-navigation.js +4 -2
- package/dist/examples/simple-navigation.js.map +1 -1
- package/dist/examples/store.js +1 -1
- package/dist/examples/store.js.map +1 -1
- package/dist/examples/submodule-diff.d.ts +2 -0
- package/dist/examples/submodule-diff.d.ts.map +1 -0
- package/dist/examples/submodule-diff.js +99 -0
- package/dist/examples/submodule-diff.js.map +1 -0
- package/dist/examples/tanstack-demo.js +1 -1
- package/dist/examples/tanstack-demo.js.map +1 -1
- package/dist/examples/use-promise-demo.js +1 -1
- package/dist/examples/use-promise-demo.js.map +1 -1
- package/dist/extensions/dev.d.ts +8 -0
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +53 -28
- package/dist/extensions/dev.js.map +1 -1
- package/dist/extensions/home.d.ts.map +1 -1
- package/dist/extensions/home.js +16 -91
- package/dist/extensions/home.js.map +1 -1
- package/dist/globals.js +1 -1
- package/dist/globals.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -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 +56 -48
- package/dist/internal/date-picker-widget.js.map +1 -1
- package/dist/internal/dialog.d.ts.map +1 -1
- package/dist/internal/dialog.js +7 -7
- package/dist/internal/dialog.js.map +1 -1
- package/dist/internal/scrollbox.d.ts +2 -1
- package/dist/internal/scrollbox.d.ts.map +1 -1
- package/dist/internal/scrollbox.js +13 -7
- package/dist/internal/scrollbox.js.map +1 -1
- package/dist/release.d.ts +11 -0
- package/dist/release.d.ts.map +1 -0
- package/dist/release.js +113 -0
- package/dist/release.js.map +1 -0
- package/dist/state.d.ts +1 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +1 -0
- package/dist/state.js.map +1 -1
- package/dist/theme.d.ts +11 -8
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +31 -8
- package/dist/theme.js.map +1 -1
- package/dist/utils/run-command.d.ts +22 -0
- package/dist/utils/run-command.d.ts.map +1 -0
- package/dist/utils/run-command.js +127 -0
- package/dist/utils/run-command.js.map +1 -0
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +5 -3
- package/dist/utils.js.map +1 -1
- package/package.json +10 -7
- package/src/apis/toast.tsx +38 -17
- package/src/build.tsx +5 -3
- package/src/cli.tsx +46 -0
- package/src/colors.tsx +22 -1
- package/src/compile.tsx +219 -0
- package/src/components/actions.tsx +7 -1
- package/src/components/command-arguments.tsx +81 -0
- package/src/components/detail.tsx +26 -58
- package/src/components/dropdown.tsx +108 -23
- package/src/components/extension-preferences.tsx +55 -35
- package/src/components/form/checkbox.tsx +13 -5
- package/src/components/form/date-picker.tsx +24 -29
- package/src/components/form/description.tsx +35 -7
- package/src/components/form/dropdown.tsx +16 -30
- package/src/components/form/file-autocomplete.tsx +87 -77
- package/src/components/form/file-picker.tsx +69 -57
- package/src/components/form/form-ref.tsx +68 -0
- package/src/components/form/index.tsx +152 -41
- package/src/components/form/password-field.tsx +35 -22
- package/src/components/form/text-area.tsx +78 -58
- package/src/components/form/text-field.tsx +82 -61
- package/src/components/form/use-form-navigation.tsx +43 -23
- package/src/components/form/with-left-border.tsx +2 -1
- package/src/components/icon.tsx +497 -469
- package/src/components/list.tsx +279 -112
- package/src/components/loading-bar.tsx +1 -1
- package/src/descendants.tsx +15 -5
- package/src/examples/action-show-in-finder.tsx +1 -1
- package/src/examples/environment-test.tsx +1 -1
- package/src/examples/error-boundary.tsx +1 -1
- package/src/examples/file-autocomplete.vitest.tsx +245 -0
- package/src/examples/form-basic.tsx +12 -12
- package/src/examples/form-basic.vitest.tsx +297 -671
- package/src/examples/form-dropdown.tsx +1 -1
- package/src/examples/form-dropdown.vitest.tsx +353 -221
- package/src/examples/form-scroll.tsx +56 -0
- package/src/examples/form-scroll.vitest.tsx +228 -0
- package/src/examples/form-tagpicker.tsx +1 -1
- package/src/examples/form-tagpicker.vitest.tsx +438 -193
- package/src/examples/internal/descendants-filtering.tsx +13 -5
- package/src/examples/internal/descendants.tsx +17 -5
- package/src/examples/internal/rhf-custom-ref.tsx +152 -0
- package/src/examples/internal/scrollbox-demo.tsx +15 -7
- package/src/examples/internal/scrollbox-with-descendants.tsx +94 -0
- package/src/examples/internal/simple-dialog.tsx +1 -1
- package/src/examples/internal/simple-scrollbox.tsx +8 -5
- package/src/examples/internal/simple-scrollbox.vitest.tsx +47 -37
- package/src/examples/internal/text-stacking.tsx +4 -2
- package/src/examples/list-dropdown-default.tsx +1 -1
- package/src/examples/list-dropdown-default.vitest.tsx +136 -71
- package/src/examples/list-fetch-data.tsx +1 -1
- package/src/examples/list-fetch-data.vitest.tsx +42 -33
- package/src/examples/list-scrollbox.tsx +46 -0
- package/src/examples/list-scrollbox.vitest.tsx +103 -0
- package/src/examples/list-with-detail.tsx +1 -1
- package/src/examples/list-with-detail.vitest.tsx +290 -294
- package/src/examples/list-with-dropdown.tsx +1 -1
- package/src/examples/list-with-dropdown.vitest.tsx +190 -150
- package/src/examples/list-with-sections.tsx +12 -1
- package/src/examples/list-with-sections.vitest.tsx +390 -218
- package/src/examples/miscellaneous.tsx +1 -1
- package/src/examples/nested-navigation.tsx +4 -2
- package/src/examples/preferences-test.tsx +1 -1
- package/src/examples/simple-dropdown.tsx +1 -1
- package/src/examples/simple-file-picker.tsx +1 -1
- package/src/examples/simple-file-picker.vitest.tsx +538 -132
- package/src/examples/simple-grid.tsx +1 -1
- package/src/examples/simple-grid.vitest.tsx +258 -234
- package/src/examples/simple-hud.tsx +1 -1
- package/src/examples/simple-list-search.tsx +1 -1
- package/src/examples/simple-list.tsx +1 -1
- package/src/examples/simple-navigation.tsx +4 -2
- package/src/examples/simple-navigation.vitest.tsx +434 -238
- package/src/examples/store.tsx +1 -1
- package/src/examples/store.vitest.tsx +31 -10
- package/src/examples/submodule-diff.tsx +153 -0
- package/src/examples/tanstack-demo.tsx +1 -1
- package/src/examples/use-promise-demo.tsx +1 -1
- package/src/extensions/dev.tsx +74 -36
- package/src/extensions/dev.vitest.tsx +220 -0
- package/src/extensions/home.tsx +17 -118
- package/src/globals.ts +1 -1
- package/src/index.tsx +7 -1
- package/src/internal/date-picker-widget.tsx +56 -46
- package/src/internal/dialog.tsx +6 -6
- package/src/internal/scrollbox.tsx +15 -5
- package/src/release.tsx +159 -0
- package/src/state.tsx +2 -0
- package/src/store-api/search.test.tsx +4 -13
- package/src/theme.tsx +33 -8
- package/src/utils/run-command.tsx +204 -0
- package/src/utils.tsx +5 -3
- package/dist/ai.d.ts +0 -104
- package/dist/ai.d.ts.map +0 -1
- package/dist/ai.js +0 -135
- package/dist/ai.js.map +0 -1
- package/dist/apis/cache.test.d.ts +0 -2
- package/dist/apis/cache.test.d.ts.map +0 -1
- package/dist/apis/cache.test.js +0 -246
- package/dist/apis/cache.test.js.map +0 -1
- package/dist/apis/localstorage.test.d.ts +0 -2
- package/dist/apis/localstorage.test.d.ts.map +0 -1
- package/dist/apis/localstorage.test.js +0 -131
- package/dist/apis/localstorage.test.js.map +0 -1
- package/dist/apis/toast.test.d.ts +0 -2
- package/dist/apis/toast.test.d.ts.map +0 -1
- package/dist/apis/toast.test.js +0 -67
- package/dist/apis/toast.test.js.map +0 -1
- package/dist/build.test.d.ts +0 -2
- package/dist/build.test.d.ts.map +0 -1
- package/dist/build.test.js +0 -73
- package/dist/build.test.js.map +0 -1
- package/dist/cache.d.ts +0 -32
- package/dist/cache.d.ts.map +0 -1
- package/dist/cache.js +0 -205
- package/dist/cache.js.map +0 -1
- package/dist/cache.test.d.ts +0 -2
- package/dist/cache.test.d.ts.map +0 -1
- package/dist/cache.test.js +0 -246
- package/dist/cache.test.js.map +0 -1
- package/dist/clipboard.d.ts +0 -36
- package/dist/clipboard.d.ts.map +0 -1
- package/dist/clipboard.js +0 -154
- package/dist/clipboard.js.map +0 -1
- package/dist/components/form/form-type-only.d.ts +0 -174
- package/dist/components/form/form-type-only.d.ts.map +0 -1
- package/dist/components/form/form-type-only.js +0 -2
- package/dist/components/form/form-type-only.js.map +0 -1
- package/dist/components/form/use-form-handling.d.ts +0 -4
- package/dist/components/form/use-form-handling.d.ts.map +0 -1
- package/dist/components/form/use-form-handling.js +0 -37
- package/dist/components/form/use-form-handling.js.map +0 -1
- package/dist/dev-ui.d.ts +0 -7
- package/dist/dev-ui.d.ts.map +0 -1
- package/dist/dev-ui.js +0 -118
- package/dist/dev-ui.js.map +0 -1
- package/dist/environment.d.ts +0 -63
- package/dist/environment.d.ts.map +0 -1
- package/dist/environment.js +0 -189
- package/dist/environment.js.map +0 -1
- package/dist/examples/datepicker.d.ts +0 -2
- package/dist/examples/datepicker.d.ts.map +0 -1
- package/dist/examples/datepicker.js +0 -344
- package/dist/examples/datepicker.js.map +0 -1
- package/dist/examples/form-basic-arrow-keys.vitest.d.ts +0 -2
- package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +0 -1
- package/dist/examples/form-basic-arrow-keys.vitest.js +0 -46
- package/dist/examples/form-basic-arrow-keys.vitest.js.map +0 -1
- package/dist/examples/form-basic.vitest.d.ts +0 -2
- package/dist/examples/form-basic.vitest.d.ts.map +0 -1
- package/dist/examples/form-basic.vitest.js +0 -995
- package/dist/examples/form-basic.vitest.js.map +0 -1
- package/dist/examples/form-dropdown-with-sections.d.ts +0 -2
- package/dist/examples/form-dropdown-with-sections.d.ts.map +0 -1
- package/dist/examples/form-dropdown-with-sections.js +0 -13
- package/dist/examples/form-dropdown-with-sections.js.map +0 -1
- package/dist/examples/form-dropdown-with-sections.vitest.d.ts +0 -2
- package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +0 -1
- package/dist/examples/form-dropdown-with-sections.vitest.js +0 -75
- package/dist/examples/form-dropdown-with-sections.vitest.js.map +0 -1
- package/dist/examples/form-dropdown.vitest.d.ts +0 -2
- package/dist/examples/form-dropdown.vitest.d.ts.map +0 -1
- package/dist/examples/form-dropdown.vitest.js +0 -722
- package/dist/examples/form-dropdown.vitest.js.map +0 -1
- package/dist/examples/form-multiselect-dropdown.d.ts +0 -2
- package/dist/examples/form-multiselect-dropdown.d.ts.map +0 -1
- package/dist/examples/form-multiselect-dropdown.js +0 -13
- package/dist/examples/form-multiselect-dropdown.js.map +0 -1
- package/dist/examples/form-tagpicker.vitest.d.ts +0 -2
- package/dist/examples/form-tagpicker.vitest.d.ts.map +0 -1
- package/dist/examples/form-tagpicker.vitest.js +0 -491
- package/dist/examples/form-tagpicker.vitest.js.map +0 -1
- package/dist/examples/internal/nested-boxes.d.ts +0 -2
- package/dist/examples/internal/nested-boxes.d.ts.map +0 -1
- package/dist/examples/internal/nested-boxes.js +0 -7
- package/dist/examples/internal/nested-boxes.js.map +0 -1
- package/dist/examples/internal/simple-scrollbox.vitest.d.ts +0 -2
- package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +0 -1
- package/dist/examples/internal/simple-scrollbox.vitest.js +0 -88
- package/dist/examples/internal/simple-scrollbox.vitest.js.map +0 -1
- package/dist/examples/internal/unicode-square-repro.d.ts +0 -2
- package/dist/examples/internal/unicode-square-repro.d.ts.map +0 -1
- package/dist/examples/internal/unicode-square-repro.js +0 -7
- package/dist/examples/internal/unicode-square-repro.js.map +0 -1
- package/dist/examples/list-dropdown-default.vitest.d.ts +0 -2
- package/dist/examples/list-dropdown-default.vitest.d.ts.map +0 -1
- package/dist/examples/list-dropdown-default.vitest.js +0 -164
- package/dist/examples/list-dropdown-default.vitest.js.map +0 -1
- package/dist/examples/list-fetch-data.vitest.d.ts +0 -2
- package/dist/examples/list-fetch-data.vitest.d.ts.map +0 -1
- package/dist/examples/list-fetch-data.vitest.js +0 -103
- package/dist/examples/list-fetch-data.vitest.js.map +0 -1
- package/dist/examples/list-filter-navigation.d.ts +0 -2
- package/dist/examples/list-filter-navigation.d.ts.map +0 -1
- package/dist/examples/list-filter-navigation.js +0 -8
- package/dist/examples/list-filter-navigation.js.map +0 -1
- package/dist/examples/list-with-detail.vitest.d.ts +0 -2
- package/dist/examples/list-with-detail.vitest.d.ts.map +0 -1
- package/dist/examples/list-with-detail.vitest.js +0 -438
- package/dist/examples/list-with-detail.vitest.js.map +0 -1
- package/dist/examples/list-with-dropdown.vitest.d.ts +0 -2
- package/dist/examples/list-with-dropdown.vitest.d.ts.map +0 -1
- package/dist/examples/list-with-dropdown.vitest.js +0 -297
- package/dist/examples/list-with-dropdown.vitest.js.map +0 -1
- package/dist/examples/list-with-sections.vitest.d.ts +0 -2
- package/dist/examples/list-with-sections.vitest.d.ts.map +0 -1
- package/dist/examples/list-with-sections.vitest.js +0 -441
- package/dist/examples/list-with-sections.vitest.js.map +0 -1
- package/dist/examples/simple-file-picker.vitest.d.ts +0 -2
- package/dist/examples/simple-file-picker.vitest.d.ts.map +0 -1
- package/dist/examples/simple-file-picker.vitest.js +0 -277
- package/dist/examples/simple-file-picker.vitest.js.map +0 -1
- package/dist/examples/simple-grid.vitest.d.ts +0 -2
- package/dist/examples/simple-grid.vitest.d.ts.map +0 -1
- package/dist/examples/simple-grid.vitest.js +0 -498
- package/dist/examples/simple-grid.vitest.js.map +0 -1
- package/dist/examples/simple-navigation.vitest.d.ts +0 -2
- package/dist/examples/simple-navigation.vitest.d.ts.map +0 -1
- package/dist/examples/simple-navigation.vitest.js +0 -522
- package/dist/examples/simple-navigation.vitest.js.map +0 -1
- package/dist/examples/store.vitest.d.ts +0 -2
- package/dist/examples/store.vitest.d.ts.map +0 -1
- package/dist/examples/store.vitest.js +0 -48
- package/dist/examples/store.vitest.js.map +0 -1
- package/dist/home-command.d.ts +0 -8
- package/dist/home-command.d.ts.map +0 -1
- package/dist/home-command.js +0 -181
- package/dist/home-command.js.map +0 -1
- package/dist/hooks/hooks.test.d.ts +0 -2
- package/dist/hooks/hooks.test.d.ts.map +0 -1
- package/dist/hooks/hooks.test.js +0 -37
- package/dist/hooks/hooks.test.js.map +0 -1
- package/dist/hover-repro.d.ts +0 -2
- package/dist/hover-repro.d.ts.map +0 -1
- package/dist/hover-repro.js +0 -20
- package/dist/hover-repro.js.map +0 -1
- package/dist/localstorage.d.ts +0 -13
- package/dist/localstorage.d.ts.map +0 -1
- package/dist/localstorage.js +0 -190
- package/dist/localstorage.js.map +0 -1
- package/dist/localstorage.test.d.ts +0 -2
- package/dist/localstorage.test.d.ts.map +0 -1
- package/dist/localstorage.test.js +0 -131
- package/dist/localstorage.test.js.map +0 -1
- package/dist/oauth.d.ts +0 -142
- package/dist/oauth.d.ts.map +0 -1
- package/dist/oauth.js +0 -551
- package/dist/oauth.js.map +0 -1
- package/dist/preferences.d.ts +0 -23
- package/dist/preferences.d.ts.map +0 -1
- package/dist/preferences.js +0 -105
- package/dist/preferences.js.map +0 -1
- package/dist/store-api/download.test.d.ts +0 -2
- package/dist/store-api/download.test.d.ts.map +0 -1
- package/dist/store-api/download.test.js +0 -36
- package/dist/store-api/download.test.js.map +0 -1
- package/dist/store-api/extension.test.d.ts +0 -2
- package/dist/store-api/extension.test.d.ts.map +0 -1
- package/dist/store-api/extension.test.js +0 -22
- package/dist/store-api/extension.test.js.map +0 -1
- package/dist/store-api/search.test.d.ts +0 -2
- package/dist/store-api/search.test.d.ts.map +0 -1
- package/dist/store-api/search.test.js +0 -45
- package/dist/store-api/search.test.js.map +0 -1
- package/dist/store.d.ts +0 -21
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -84
- package/dist/store.js.map +0 -1
- package/dist/toast.d.ts +0 -44
- package/dist/toast.d.ts.map +0 -1
- package/dist/toast.js +0 -221
- package/dist/toast.js.map +0 -1
- package/dist/utils.test.d.ts +0 -2
- package/dist/utils.test.d.ts.map +0 -1
- package/dist/utils.test.js +0 -152
- package/dist/utils.test.js.map +0 -1
- package/dist/window.d.ts +0 -12
- package/dist/window.d.ts.map +0 -1
- package/dist/window.js +0 -48
- package/dist/window.js.map +0 -1
|
@@ -1,306 +1,712 @@
|
|
|
1
1
|
import { test, expect, afterEach, beforeEach } from 'vitest'
|
|
2
|
-
import {
|
|
2
|
+
import { launchTerminal, Session } from 'tuistory/src'
|
|
3
3
|
|
|
4
|
-
let
|
|
4
|
+
let session: Session
|
|
5
5
|
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
session = await launchTerminal({
|
|
8
|
+
command: 'bun',
|
|
9
|
+
args: ['src/examples/simple-file-picker.tsx'],
|
|
8
10
|
cols: 70,
|
|
9
11
|
rows: 50,
|
|
10
12
|
})
|
|
11
13
|
})
|
|
12
14
|
|
|
13
15
|
afterEach(() => {
|
|
14
|
-
|
|
16
|
+
session?.close()
|
|
15
17
|
})
|
|
16
18
|
|
|
17
19
|
test('file picker with autocomplete', async () => {
|
|
18
|
-
await
|
|
20
|
+
const initialSnapshot = await session.text({
|
|
19
21
|
waitFor: (text) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
return (
|
|
23
|
+
/Your Name/i.test(text) &&
|
|
24
|
+
text.includes('Select Files') &&
|
|
25
|
+
text.includes('Select Folder') &&
|
|
26
|
+
text.includes('submit')
|
|
27
|
+
)
|
|
22
28
|
},
|
|
23
29
|
})
|
|
24
|
-
|
|
25
|
-
const initialSnapshot = await driver.text()
|
|
26
30
|
expect(initialSnapshot).toMatchInlineSnapshot(`
|
|
27
31
|
"
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
◆ Your Name
|
|
47
|
+
┃ John Doe
|
|
48
|
+
┃
|
|
31
49
|
◇ Select Files
|
|
32
50
|
│ Enter file path...
|
|
51
|
+
│
|
|
33
52
|
│ Choose one or more files to upload
|
|
34
53
|
│
|
|
35
54
|
◇ Select Folder
|
|
36
55
|
│ Enter file path...
|
|
56
|
+
│
|
|
37
57
|
│ Choose a folder for output
|
|
38
58
|
│
|
|
39
59
|
◇ Select Single File
|
|
40
60
|
│ Enter file path...
|
|
61
|
+
│
|
|
41
62
|
│ Choose exactly one file
|
|
42
63
|
│
|
|
43
64
|
└
|
|
44
65
|
|
|
45
66
|
|
|
46
|
-
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
47
80
|
`)
|
|
48
81
|
|
|
49
82
|
// Tab to navigate to file picker field
|
|
50
|
-
await
|
|
51
|
-
await
|
|
83
|
+
await session.press('tab')
|
|
84
|
+
await session.press('tab')
|
|
52
85
|
|
|
53
86
|
// Type "src" to trigger autocomplete
|
|
54
|
-
await
|
|
55
|
-
|
|
56
|
-
// Wait for autocomplete to appear
|
|
57
|
-
await new Promise((resolve) => setTimeout(resolve, 200))
|
|
87
|
+
await session.type('src')
|
|
58
88
|
|
|
59
|
-
const autocompleteSnapshot = await
|
|
89
|
+
const autocompleteSnapshot = await session.text({
|
|
90
|
+
waitFor: (text) => text.includes('📁 src'),
|
|
91
|
+
})
|
|
60
92
|
expect(autocompleteSnapshot).toMatchInlineSnapshot(`
|
|
61
93
|
"
|
|
62
94
|
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
63
108
|
◇ Your Name
|
|
64
109
|
│ John Doe
|
|
110
|
+
│
|
|
65
111
|
◇ Select Files
|
|
66
112
|
│ Enter file path...
|
|
67
|
-
│
|
|
68
|
-
│
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
113
|
+
│ ┌────────────────────────────────────────────────────────────┐
|
|
114
|
+
│ │ 📁 src │
|
|
115
|
+
│ │ ↑↓ navigate ⏎ open folder → select folder esc close │
|
|
116
|
+
◆ └────────────────────────────────────────────────────────────┘
|
|
117
|
+
┃ src
|
|
118
|
+
┃
|
|
119
|
+
┃ Choose a folder for output
|
|
120
|
+
┃
|
|
121
|
+
◇ Select Single File
|
|
74
122
|
│ Enter file path...
|
|
123
|
+
│
|
|
75
124
|
│ Choose exactly one file
|
|
76
125
|
│
|
|
77
126
|
└
|
|
78
127
|
|
|
79
128
|
|
|
80
|
-
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
81
142
|
`)
|
|
82
143
|
|
|
83
144
|
// Navigate down in autocomplete
|
|
84
|
-
await
|
|
145
|
+
await session.press('down')
|
|
85
146
|
|
|
86
|
-
const afterDownSnapshot = await
|
|
147
|
+
const afterDownSnapshot = await session.text({
|
|
148
|
+
waitFor: (text) => text.includes('📁 src'),
|
|
149
|
+
})
|
|
87
150
|
expect(afterDownSnapshot).toMatchInlineSnapshot(`
|
|
88
151
|
"
|
|
89
152
|
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
90
166
|
◇ Your Name
|
|
91
167
|
│ John Doe
|
|
168
|
+
│
|
|
92
169
|
◇ Select Files
|
|
93
170
|
│ Enter file path...
|
|
94
|
-
│
|
|
95
|
-
│
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
171
|
+
│ ┌────────────────────────────────────────────────────────────┐
|
|
172
|
+
│ │ 📁 src │
|
|
173
|
+
│ │ ↑↓ navigate ⏎ open folder → select folder esc close │
|
|
174
|
+
◆ └────────────────────────────────────────────────────────────┘
|
|
175
|
+
┃ src
|
|
176
|
+
┃
|
|
177
|
+
┃ Choose a folder for output
|
|
178
|
+
┃
|
|
179
|
+
◇ Select Single File
|
|
101
180
|
│ Enter file path...
|
|
181
|
+
│
|
|
102
182
|
│ Choose exactly one file
|
|
103
183
|
│
|
|
104
184
|
└
|
|
105
185
|
|
|
106
186
|
|
|
107
|
-
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
108
200
|
`)
|
|
109
201
|
|
|
110
202
|
// Select item with Enter
|
|
111
|
-
await
|
|
203
|
+
await session.press('enter')
|
|
112
204
|
|
|
113
|
-
const afterSelectSnapshot = await
|
|
205
|
+
const afterSelectSnapshot = await session.text({
|
|
206
|
+
waitFor: (text) => text.includes('src/') && text.includes('📁 apis'),
|
|
207
|
+
})
|
|
114
208
|
expect(afterSelectSnapshot).toMatchInlineSnapshot(`
|
|
115
209
|
"
|
|
116
210
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
┌────────────────────────────────────────────────────────────┐
|
|
223
|
+
│ 📁 apis │
|
|
224
|
+
◇ │ 📁 components │
|
|
225
|
+
│ │ 📁 examples │
|
|
226
|
+
│ │ 📁 extensions │
|
|
227
|
+
◇ │ 📁 hooks │
|
|
228
|
+
│ │ 📁 internal │
|
|
229
|
+
│ │ 📁 store-api │
|
|
230
|
+
│ │ 📁 utils │
|
|
231
|
+
│ │ ↑↓ navigate ⏎ open folder → select folder esc close │
|
|
232
|
+
◆ └────────────────────────────────────────────────────────────┘
|
|
233
|
+
┃ src/
|
|
234
|
+
┃
|
|
235
|
+
┃ Choose a folder for output
|
|
236
|
+
┃
|
|
237
|
+
◇ Select Single File
|
|
120
238
|
│ Enter file path...
|
|
121
|
-
│ Choose one or more files to upload
|
|
122
239
|
│
|
|
123
|
-
|
|
124
|
-
│
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
240
|
+
│ Choose exactly one file
|
|
241
|
+
│
|
|
242
|
+
└
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
136
258
|
`)
|
|
137
259
|
|
|
138
260
|
// Clear and test absolute path
|
|
139
|
-
await
|
|
140
|
-
await
|
|
141
|
-
await
|
|
142
|
-
await
|
|
143
|
-
|
|
144
|
-
await new Promise((resolve) => setTimeout(resolve, 200))
|
|
261
|
+
await session.press('backspace')
|
|
262
|
+
await session.press('backspace')
|
|
263
|
+
await session.press('backspace')
|
|
264
|
+
await session.type('/tmp')
|
|
145
265
|
|
|
146
|
-
const absolutePathSnapshot = await
|
|
266
|
+
const absolutePathSnapshot = await session.text({
|
|
267
|
+
waitFor: (text) => text.includes('/tmp'),
|
|
268
|
+
})
|
|
147
269
|
expect(absolutePathSnapshot).toMatchInlineSnapshot(`
|
|
148
270
|
"
|
|
149
271
|
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
150
285
|
◇ Your Name
|
|
151
286
|
│ John Doe
|
|
287
|
+
│
|
|
152
288
|
◇ Select Files
|
|
153
289
|
│ Enter file path...
|
|
290
|
+
│
|
|
154
291
|
│ Choose one or more files to upload
|
|
155
292
|
│
|
|
156
293
|
◆ Select Folder
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
│
|
|
163
|
-
│
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
294
|
+
┃ s/tmp
|
|
295
|
+
┃
|
|
296
|
+
┃ Choose a folder for output
|
|
297
|
+
┃
|
|
298
|
+
◇ Select Single File
|
|
299
|
+
│ Enter file path...
|
|
300
|
+
│
|
|
301
|
+
│ Choose exactly one file
|
|
302
|
+
│
|
|
303
|
+
└
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
170
315
|
|
|
171
|
-
// Test ~ home directory expansion
|
|
172
|
-
await driver.keys.backspace()
|
|
173
|
-
await driver.keys.backspace()
|
|
174
|
-
await driver.keys.backspace()
|
|
175
|
-
await driver.keys.backspace()
|
|
176
|
-
await driver.keys.type('~/')
|
|
177
316
|
|
|
178
|
-
await new Promise((resolve) => setTimeout(resolve, 200))
|
|
179
317
|
|
|
180
|
-
|
|
318
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
319
|
+
`)
|
|
320
|
+
|
|
321
|
+
// Test ~ home directory expansion
|
|
322
|
+
await session.press('backspace')
|
|
323
|
+
await session.press('backspace')
|
|
324
|
+
await session.press('backspace')
|
|
325
|
+
await session.press('backspace')
|
|
326
|
+
await session.type('~/')
|
|
327
|
+
|
|
328
|
+
const homeDirectorySnapshot = await session.text({
|
|
329
|
+
waitFor: (text) => text.includes('~/'),
|
|
330
|
+
})
|
|
181
331
|
expect(homeDirectorySnapshot).toMatchInlineSnapshot(`
|
|
182
332
|
"
|
|
183
333
|
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
184
347
|
◇ Your Name
|
|
185
348
|
│ John Doe
|
|
349
|
+
│
|
|
186
350
|
◇ Select Files
|
|
187
351
|
│ Enter file path...
|
|
352
|
+
│
|
|
188
353
|
│ Choose one or more files to upload
|
|
189
354
|
│
|
|
190
355
|
◆ Select Folder
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
│
|
|
197
|
-
│
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
356
|
+
┃ s~/
|
|
357
|
+
┃
|
|
358
|
+
┃ Choose a folder for output
|
|
359
|
+
┃
|
|
360
|
+
◇ Select Single File
|
|
361
|
+
│ Enter file path...
|
|
362
|
+
│
|
|
363
|
+
│ Choose exactly one file
|
|
364
|
+
│
|
|
365
|
+
└
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
203
381
|
`)
|
|
204
382
|
}, 15000)
|
|
205
383
|
|
|
206
384
|
test('file picker keyboard navigation', async () => {
|
|
207
|
-
await
|
|
385
|
+
await session.text({
|
|
208
386
|
waitFor: (text) => {
|
|
209
387
|
return /Your Name/i.test(text)
|
|
210
388
|
},
|
|
211
389
|
})
|
|
212
390
|
|
|
213
391
|
// Tab to file picker
|
|
214
|
-
await
|
|
215
|
-
await
|
|
392
|
+
await session.press('tab')
|
|
393
|
+
await session.press('tab')
|
|
216
394
|
|
|
217
395
|
// Type to trigger autocomplete
|
|
218
|
-
await
|
|
219
|
-
|
|
220
|
-
await new Promise((resolve) => setTimeout(resolve, 200))
|
|
396
|
+
await session.type('.')
|
|
221
397
|
|
|
222
|
-
const withDotSnapshot = await
|
|
398
|
+
const withDotSnapshot = await session.text({
|
|
399
|
+
waitFor: (text) => text.includes('📁 .termcast-bundle'),
|
|
400
|
+
})
|
|
223
401
|
expect(withDotSnapshot).toMatchInlineSnapshot(`
|
|
224
402
|
"
|
|
225
403
|
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
226
417
|
◇ Your Name
|
|
227
418
|
│ John Doe
|
|
228
|
-
◆ Select Files
|
|
229
|
-
│ .
|
|
230
|
-
│ ┌─────────────────────────────────────────────────────────────┐
|
|
231
|
-
│ │ 📁 .termcast-bundle │
|
|
232
|
-
◇ SelectgFolderre │
|
|
233
|
-
│ Enter─file─path...────────────────────────────────────────────┘
|
|
234
|
-
│ Choose a folder for output
|
|
235
419
|
│
|
|
420
|
+
◇ Select Files
|
|
421
|
+
│ Enter file path...
|
|
422
|
+
│ ┌────────────────────────────────────────────────────────────┐
|
|
423
|
+
│ │ 📁 .termcast-bundle │
|
|
424
|
+
│ │ ↑↓ navigate ⏎ open folder → select folder esc close │
|
|
425
|
+
◆ └────────────────────────────────────────────────────────────┘
|
|
426
|
+
┃ .
|
|
427
|
+
┃
|
|
428
|
+
┃ Choose a folder for output
|
|
429
|
+
┃
|
|
236
430
|
◇ Select Single File
|
|
237
431
|
│ Enter file path...
|
|
432
|
+
│
|
|
238
433
|
│ Choose exactly one file
|
|
239
434
|
│
|
|
240
435
|
└
|
|
241
436
|
|
|
242
437
|
|
|
243
|
-
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
244
451
|
`)
|
|
245
452
|
|
|
246
453
|
// Test escape key to close autocomplete
|
|
247
|
-
await
|
|
454
|
+
await session.press('esc')
|
|
248
455
|
|
|
249
|
-
const afterEscapeSnapshot = await
|
|
456
|
+
const afterEscapeSnapshot = await session.text({
|
|
457
|
+
waitFor: (text) => text.includes('Select Folder') && !text.includes('📁 .termcast-bundle'),
|
|
458
|
+
})
|
|
250
459
|
expect(afterEscapeSnapshot).toMatchInlineSnapshot(`
|
|
251
460
|
"
|
|
252
461
|
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
253
475
|
◇ Your Name
|
|
254
476
|
│ John Doe
|
|
255
|
-
◆ Select Files
|
|
256
|
-
│ .
|
|
257
|
-
│ Choose one or more files to upload
|
|
258
477
|
│
|
|
259
|
-
◇ Select
|
|
478
|
+
◇ Select Files
|
|
260
479
|
│ Enter file path...
|
|
261
|
-
│ Choose a folder for output
|
|
262
480
|
│
|
|
481
|
+
│ Choose one or more files to upload
|
|
482
|
+
│
|
|
483
|
+
◆ Select Folder
|
|
484
|
+
┃ .
|
|
485
|
+
┃
|
|
486
|
+
┃ Choose a folder for output
|
|
487
|
+
┃
|
|
263
488
|
◇ Select Single File
|
|
264
489
|
│ Enter file path...
|
|
490
|
+
│
|
|
265
491
|
│ Choose exactly one file
|
|
266
492
|
│
|
|
267
493
|
└
|
|
268
494
|
|
|
269
495
|
|
|
270
|
-
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
271
509
|
`)
|
|
272
510
|
|
|
273
511
|
// Type again and navigate with arrows
|
|
274
|
-
await
|
|
512
|
+
await session.type('s')
|
|
275
513
|
|
|
276
|
-
await
|
|
514
|
+
await session.text({
|
|
515
|
+
waitFor: (text) => text.includes('.s'),
|
|
516
|
+
})
|
|
277
517
|
|
|
278
518
|
// Navigate down multiple times
|
|
279
|
-
await
|
|
280
|
-
await
|
|
281
|
-
await
|
|
519
|
+
await session.press('down')
|
|
520
|
+
await session.press('down')
|
|
521
|
+
await session.press('up')
|
|
282
522
|
|
|
283
|
-
const afterNavigationSnapshot = await
|
|
523
|
+
const afterNavigationSnapshot = await session.text({
|
|
524
|
+
waitFor: (text) => text.includes('.s') && text.includes('Select Folder'),
|
|
525
|
+
})
|
|
284
526
|
expect(afterNavigationSnapshot).toMatchInlineSnapshot(`
|
|
285
527
|
"
|
|
286
528
|
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
287
542
|
◇ Your Name
|
|
288
543
|
│ John Doe
|
|
289
|
-
◆ Select Files
|
|
290
|
-
│ .s
|
|
291
|
-
│ Choose one or more files to upload
|
|
292
544
|
│
|
|
293
|
-
◇ Select
|
|
545
|
+
◇ Select Files
|
|
294
546
|
│ Enter file path...
|
|
295
|
-
│ Choose a folder for output
|
|
296
547
|
│
|
|
548
|
+
│ Choose one or more files to upload
|
|
549
|
+
│
|
|
550
|
+
◆ Select Folder
|
|
551
|
+
┃ .s
|
|
552
|
+
┃
|
|
553
|
+
┃ Choose a folder for output
|
|
554
|
+
┃
|
|
297
555
|
◇ Select Single File
|
|
298
556
|
│ Enter file path...
|
|
557
|
+
│
|
|
299
558
|
│ Choose exactly one file
|
|
300
559
|
│
|
|
301
560
|
└
|
|
302
561
|
|
|
303
562
|
|
|
304
|
-
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
305
576
|
`)
|
|
306
577
|
}, 10000)
|
|
578
|
+
|
|
579
|
+
test('right arrow selects item and left arrow removes last selection', async () => {
|
|
580
|
+
await session.text({
|
|
581
|
+
waitFor: (text) => {
|
|
582
|
+
return /Your Name/i.test(text)
|
|
583
|
+
},
|
|
584
|
+
})
|
|
585
|
+
|
|
586
|
+
// Tab to file picker
|
|
587
|
+
await session.press('tab')
|
|
588
|
+
await session.press('tab')
|
|
589
|
+
|
|
590
|
+
// Type to trigger autocomplete
|
|
591
|
+
await session.type('src')
|
|
592
|
+
|
|
593
|
+
await session.text({
|
|
594
|
+
waitFor: (text) => text.includes('📁 src'),
|
|
595
|
+
})
|
|
596
|
+
|
|
597
|
+
// Use right arrow to select folder (instead of tab)
|
|
598
|
+
await session.press('right')
|
|
599
|
+
|
|
600
|
+
const afterRightArrowSnapshot = await session.text({
|
|
601
|
+
waitFor: (text) => text.includes('Selected files:') && text.includes('• src'),
|
|
602
|
+
})
|
|
603
|
+
expect(afterRightArrowSnapshot).toMatchInlineSnapshot(`
|
|
604
|
+
"
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
◇ Your Name
|
|
619
|
+
│ John Doe
|
|
620
|
+
│
|
|
621
|
+
◇ Select Files
|
|
622
|
+
│ Enter file path...
|
|
623
|
+
│
|
|
624
|
+
│ Choose one or more files to upload
|
|
625
|
+
│
|
|
626
|
+
◆ Select Folder
|
|
627
|
+
┃ Enter file path...
|
|
628
|
+
┃
|
|
629
|
+
┃ Selected files:
|
|
630
|
+
┃ • src
|
|
631
|
+
┃
|
|
632
|
+
┃ Choose a folder for output
|
|
633
|
+
┃
|
|
634
|
+
◇ Select Single File
|
|
635
|
+
│ Enter file path...
|
|
636
|
+
│
|
|
637
|
+
│ Choose exactly one file
|
|
638
|
+
└
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
653
|
+
`)
|
|
654
|
+
|
|
655
|
+
// Use left arrow to remove the selection (input should be empty)
|
|
656
|
+
await session.press('left')
|
|
657
|
+
|
|
658
|
+
const afterLeftArrowSnapshot = await session.text({
|
|
659
|
+
waitFor: (text) => !text.includes('Selected files:'),
|
|
660
|
+
})
|
|
661
|
+
expect(afterLeftArrowSnapshot).toMatchInlineSnapshot(`
|
|
662
|
+
"
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
◇ Your Name
|
|
678
|
+
│ John Doe
|
|
679
|
+
│
|
|
680
|
+
◇ Select Files
|
|
681
|
+
│ Enter file path...
|
|
682
|
+
│
|
|
683
|
+
│ Choose one or more files to upload
|
|
684
|
+
│
|
|
685
|
+
◆ Select Folder
|
|
686
|
+
┃ Enter file path...
|
|
687
|
+
┃
|
|
688
|
+
┃ Choose a folder for output
|
|
689
|
+
┃
|
|
690
|
+
◇ Select Single File
|
|
691
|
+
│ Enter file path...
|
|
692
|
+
│
|
|
693
|
+
│ Choose exactly one file
|
|
694
|
+
│
|
|
695
|
+
└
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
711
|
+
`)
|
|
712
|
+
}, 15000)
|