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
|
@@ -16,7 +16,7 @@ afterEach(() => {
|
|
|
16
16
|
session?.close()
|
|
17
17
|
})
|
|
18
18
|
|
|
19
|
-
test('file picker
|
|
19
|
+
test('file picker shows form fields', async () => {
|
|
20
20
|
const initialSnapshot = await session.text({
|
|
21
21
|
waitFor: (text) => {
|
|
22
22
|
return (
|
|
@@ -43,9 +43,10 @@ test('file picker with autocomplete', async () => {
|
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
|
|
46
47
|
◆ Your Name
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
│ John Doe
|
|
49
|
+
│
|
|
49
50
|
◇ Select Files
|
|
50
51
|
│ Enter file path...
|
|
51
52
|
│
|
|
@@ -76,18 +77,24 @@ test('file picker with autocomplete', async () => {
|
|
|
76
77
|
|
|
77
78
|
|
|
78
79
|
|
|
79
|
-
ctrl ↵ submit
|
|
80
|
+
ctrl ↵ submit tab navigate ^k actions"
|
|
80
81
|
`)
|
|
82
|
+
}, 10000)
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
test('typing opens autocomplete dialog with file list', async () => {
|
|
85
|
+
await session.text({
|
|
86
|
+
waitFor: (text) => /Your Name/i.test(text),
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
// Tab to file picker field
|
|
83
90
|
await session.press('tab')
|
|
84
91
|
await session.press('tab')
|
|
85
92
|
|
|
86
|
-
// Type
|
|
87
|
-
await session.type('
|
|
93
|
+
// Type to trigger autocomplete
|
|
94
|
+
await session.type('s')
|
|
88
95
|
|
|
89
96
|
const autocompleteSnapshot = await session.text({
|
|
90
|
-
waitFor: (text) => text.includes('
|
|
97
|
+
waitFor: (text) => text.includes('Filter:') && text.includes('📁'),
|
|
91
98
|
})
|
|
92
99
|
expect(autocompleteSnapshot).toMatchInlineSnapshot(`
|
|
93
100
|
"
|
|
@@ -105,199 +112,23 @@ test('file picker with autocomplete', async () => {
|
|
|
105
112
|
|
|
106
113
|
|
|
107
114
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
│
|
|
126
|
-
└
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
142
|
-
`)
|
|
143
|
-
|
|
144
|
-
// Navigate down in autocomplete
|
|
145
|
-
await session.press('down')
|
|
146
|
-
|
|
147
|
-
const afterDownSnapshot = await session.text({
|
|
148
|
-
waitFor: (text) => text.includes('📁 src'),
|
|
149
|
-
})
|
|
150
|
-
expect(afterDownSnapshot).toMatchInlineSnapshot(`
|
|
151
|
-
"
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
◇ Your Name
|
|
167
|
-
│ John Doe
|
|
168
|
-
│
|
|
169
|
-
◇ Select Files
|
|
170
|
-
│ Enter file path...
|
|
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
|
|
180
|
-
│ Enter file path...
|
|
181
|
-
│
|
|
182
|
-
│ Choose exactly one file
|
|
183
|
-
│
|
|
184
|
-
└
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
200
|
-
`)
|
|
201
|
-
|
|
202
|
-
// Select item with Enter
|
|
203
|
-
await session.press('enter')
|
|
204
|
-
|
|
205
|
-
const afterSelectSnapshot = await session.text({
|
|
206
|
-
waitFor: (text) => text.includes('src/') && text.includes('📁 apis'),
|
|
207
|
-
})
|
|
208
|
-
expect(afterSelectSnapshot).toMatchInlineSnapshot(`
|
|
209
|
-
"
|
|
210
|
-
|
|
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
|
|
238
|
-
│ Enter file path...
|
|
239
|
-
│
|
|
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"
|
|
258
|
-
`)
|
|
259
|
-
|
|
260
|
-
// Clear and test absolute path
|
|
261
|
-
await session.press('backspace')
|
|
262
|
-
await session.press('backspace')
|
|
263
|
-
await session.press('backspace')
|
|
264
|
-
await session.type('/tmp')
|
|
265
|
-
|
|
266
|
-
const absolutePathSnapshot = await session.text({
|
|
267
|
-
waitFor: (text) => text.includes('/tmp'),
|
|
268
|
-
})
|
|
269
|
-
expect(absolutePathSnapshot).toMatchInlineSnapshot(`
|
|
270
|
-
"
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
◇ Your Name
|
|
286
|
-
│ John Doe
|
|
287
|
-
│
|
|
288
|
-
◇ Select Files
|
|
289
|
-
│ Enter file path...
|
|
290
|
-
│
|
|
291
|
-
│ Choose one or more files to upload
|
|
292
|
-
│
|
|
293
|
-
◆ Select Folder
|
|
294
|
-
┃ s/tmp
|
|
295
|
-
┃
|
|
296
|
-
┃ Choose a folder for output
|
|
297
|
-
┃
|
|
298
|
-
◇ Select Single File
|
|
299
|
-
│ Enter file path...
|
|
300
|
-
│
|
|
115
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
116
|
+
◇┃
|
|
117
|
+
│┃ Filter: s
|
|
118
|
+
│┃
|
|
119
|
+
◇┃ 📁 extensions/
|
|
120
|
+
│┃ 📁 extensions/messages/
|
|
121
|
+
│┃ 📁 extensions/messages/assets/
|
|
122
|
+
│┃ 📁 extensions/messages/metadata/
|
|
123
|
+
│┃ 📁 extensions/messages/src/
|
|
124
|
+
◆┃ 📁 extensions/messages/src/api/
|
|
125
|
+
│┃ 📁 extensions/messages/src/components/
|
|
126
|
+
│┃ 📁 extensions/messages/src/hooks/
|
|
127
|
+
│┃ 📁 extensions/messages/src/tools/
|
|
128
|
+
│┃ 📁 extensions/messages/swift/
|
|
129
|
+
◇┃
|
|
130
|
+
│┃ ↑↓ navigate ⏎/tab select esc close
|
|
131
|
+
│━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
301
132
|
│ Choose exactly one file
|
|
302
133
|
│
|
|
303
134
|
└
|
|
@@ -315,146 +146,32 @@ test('file picker with autocomplete', async () => {
|
|
|
315
146
|
|
|
316
147
|
|
|
317
148
|
|
|
318
|
-
ctrl ↵ submit
|
|
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
|
-
})
|
|
331
|
-
expect(homeDirectorySnapshot).toMatchInlineSnapshot(`
|
|
332
|
-
"
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
◇ Your Name
|
|
348
|
-
│ John Doe
|
|
349
|
-
│
|
|
350
|
-
◇ Select Files
|
|
351
|
-
│ Enter file path...
|
|
352
|
-
│
|
|
353
|
-
│ Choose one or more files to upload
|
|
354
|
-
│
|
|
355
|
-
◆ Select Folder
|
|
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"
|
|
149
|
+
ctrl ↵ submit tab navigate ^k actions"
|
|
381
150
|
`)
|
|
382
151
|
}, 15000)
|
|
383
152
|
|
|
384
|
-
test('
|
|
153
|
+
test('escape closes autocomplete without going back', async () => {
|
|
385
154
|
await session.text({
|
|
386
|
-
waitFor: (text) =>
|
|
387
|
-
return /Your Name/i.test(text)
|
|
388
|
-
},
|
|
155
|
+
waitFor: (text) => /Your Name/i.test(text),
|
|
389
156
|
})
|
|
390
157
|
|
|
391
|
-
// Tab to file picker
|
|
158
|
+
// Tab to file picker field
|
|
392
159
|
await session.press('tab')
|
|
393
160
|
await session.press('tab')
|
|
394
161
|
|
|
395
162
|
// Type to trigger autocomplete
|
|
396
|
-
await session.type('
|
|
163
|
+
await session.type('s')
|
|
397
164
|
|
|
398
|
-
|
|
399
|
-
waitFor: (text) => text.includes('
|
|
165
|
+
await session.text({
|
|
166
|
+
waitFor: (text) => text.includes('Filter:'),
|
|
400
167
|
})
|
|
401
|
-
expect(withDotSnapshot).toMatchInlineSnapshot(`
|
|
402
|
-
"
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
168
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
◇ Your Name
|
|
418
|
-
│ John Doe
|
|
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
|
-
┃
|
|
430
|
-
◇ Select Single File
|
|
431
|
-
│ Enter file path...
|
|
432
|
-
│
|
|
433
|
-
│ Choose exactly one file
|
|
434
|
-
│
|
|
435
|
-
└
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
451
|
-
`)
|
|
452
|
-
|
|
453
|
-
// Test escape key to close autocomplete
|
|
169
|
+
// Press escape to close autocomplete
|
|
454
170
|
await session.press('esc')
|
|
455
171
|
|
|
172
|
+
// Verify form is still visible (didn't navigate away)
|
|
456
173
|
const afterEscapeSnapshot = await session.text({
|
|
457
|
-
waitFor: (text) => text.includes('Select Folder') && !text.includes('
|
|
174
|
+
waitFor: (text) => text.includes('Select Folder') && !text.includes('Filter:'),
|
|
458
175
|
})
|
|
459
176
|
expect(afterEscapeSnapshot).toMatchInlineSnapshot(`
|
|
460
177
|
"
|
|
@@ -472,6 +189,7 @@ test('file picker keyboard navigation', async () => {
|
|
|
472
189
|
|
|
473
190
|
|
|
474
191
|
|
|
192
|
+
|
|
475
193
|
◇ Your Name
|
|
476
194
|
│ John Doe
|
|
477
195
|
│
|
|
@@ -481,77 +199,10 @@ test('file picker keyboard navigation', async () => {
|
|
|
481
199
|
│ Choose one or more files to upload
|
|
482
200
|
│
|
|
483
201
|
◆ Select Folder
|
|
484
|
-
|
|
485
|
-
┃
|
|
486
|
-
┃ Choose a folder for output
|
|
487
|
-
┃
|
|
488
|
-
◇ Select Single File
|
|
489
|
-
│ Enter file path...
|
|
202
|
+
│ s
|
|
490
203
|
│
|
|
491
|
-
│ Choose
|
|
492
|
-
│
|
|
493
|
-
└
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
509
|
-
`)
|
|
510
|
-
|
|
511
|
-
// Type again and navigate with arrows
|
|
512
|
-
await session.type('s')
|
|
513
|
-
|
|
514
|
-
await session.text({
|
|
515
|
-
waitFor: (text) => text.includes('.s'),
|
|
516
|
-
})
|
|
517
|
-
|
|
518
|
-
// Navigate down multiple times
|
|
519
|
-
await session.press('down')
|
|
520
|
-
await session.press('down')
|
|
521
|
-
await session.press('up')
|
|
522
|
-
|
|
523
|
-
const afterNavigationSnapshot = await session.text({
|
|
524
|
-
waitFor: (text) => text.includes('.s') && text.includes('Select Folder'),
|
|
525
|
-
})
|
|
526
|
-
expect(afterNavigationSnapshot).toMatchInlineSnapshot(`
|
|
527
|
-
"
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
◇ Your Name
|
|
543
|
-
│ John Doe
|
|
544
|
-
│
|
|
545
|
-
◇ Select Files
|
|
546
|
-
│ Enter file path...
|
|
547
|
-
│
|
|
548
|
-
│ Choose one or more files to upload
|
|
204
|
+
│ Choose a folder for output
|
|
549
205
|
│
|
|
550
|
-
◆ Select Folder
|
|
551
|
-
┃ .s
|
|
552
|
-
┃
|
|
553
|
-
┃ Choose a folder for output
|
|
554
|
-
┃
|
|
555
206
|
◇ Select Single File
|
|
556
207
|
│ Enter file path...
|
|
557
208
|
│
|
|
@@ -572,35 +223,35 @@ test('file picker keyboard navigation', async () => {
|
|
|
572
223
|
|
|
573
224
|
|
|
574
225
|
|
|
575
|
-
ctrl ↵ submit
|
|
226
|
+
ctrl ↵ submit tab navigate ^k actions"
|
|
576
227
|
`)
|
|
577
|
-
},
|
|
228
|
+
}, 15000)
|
|
578
229
|
|
|
579
|
-
test('
|
|
230
|
+
test('selecting first item with enter adds it to the list', async () => {
|
|
580
231
|
await session.text({
|
|
581
|
-
waitFor: (text) =>
|
|
582
|
-
return /Your Name/i.test(text)
|
|
583
|
-
},
|
|
232
|
+
waitFor: (text) => /Your Name/i.test(text),
|
|
584
233
|
})
|
|
585
234
|
|
|
586
|
-
// Tab to
|
|
235
|
+
// Tab to folder picker field (which shows directories)
|
|
587
236
|
await session.press('tab')
|
|
588
237
|
await session.press('tab')
|
|
589
238
|
|
|
590
239
|
// Type to trigger autocomplete
|
|
591
|
-
await session.type('
|
|
240
|
+
await session.type('s')
|
|
592
241
|
|
|
242
|
+
// Wait for dialog to appear with folders
|
|
593
243
|
await session.text({
|
|
594
|
-
waitFor: (text) => text.includes('📁
|
|
244
|
+
waitFor: (text) => text.includes('📁'),
|
|
595
245
|
})
|
|
596
246
|
|
|
597
|
-
//
|
|
598
|
-
await session.press('
|
|
247
|
+
// Press enter to select first match
|
|
248
|
+
await session.press('enter')
|
|
599
249
|
|
|
600
|
-
|
|
601
|
-
|
|
250
|
+
// Verify file was added
|
|
251
|
+
const afterSelectSnapshot = await session.text({
|
|
252
|
+
waitFor: (text) => text.includes('Selected files:'),
|
|
602
253
|
})
|
|
603
|
-
expect(
|
|
254
|
+
expect(afterSelectSnapshot).toMatchInlineSnapshot(`
|
|
604
255
|
"
|
|
605
256
|
|
|
606
257
|
|
|
@@ -624,69 +275,13 @@ test('right arrow selects item and left arrow removes last selection', async ()
|
|
|
624
275
|
│ Choose one or more files to upload
|
|
625
276
|
│
|
|
626
277
|
◆ 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
278
|
│ Enter file path...
|
|
636
279
|
│
|
|
637
|
-
│
|
|
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...
|
|
280
|
+
│ Selected files:
|
|
281
|
+
│ • extensions
|
|
682
282
|
│
|
|
683
|
-
│ Choose
|
|
283
|
+
│ Choose a folder for output
|
|
684
284
|
│
|
|
685
|
-
◆ Select Folder
|
|
686
|
-
┃ Enter file path...
|
|
687
|
-
┃
|
|
688
|
-
┃ Choose a folder for output
|
|
689
|
-
┃
|
|
690
285
|
◇ Select Single File
|
|
691
286
|
│ Enter file path...
|
|
692
287
|
│
|
|
@@ -706,7 +301,6 @@ test('right arrow selects item and left arrow removes last selection', async ()
|
|
|
706
301
|
|
|
707
302
|
|
|
708
303
|
|
|
709
|
-
|
|
710
|
-
ctrl ↵ submit ↑↓ navigate ^k actions"
|
|
304
|
+
ctrl ↵ submit tab navigate ^k actions"
|
|
711
305
|
`)
|
|
712
306
|
}, 15000)
|