termcast 1.3.19 → 1.3.24
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/build.d.ts.map +1 -1
- package/dist/build.js +2 -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 +69 -33
- 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.map +1 -1
- package/dist/compile.js +24 -6
- 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 +100 -28
- 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 +140 -62
- 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/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/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 +25 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +47 -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 +13 -11
- 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/build.test.tsx +52 -0
- package/src/build.tsx +2 -1
- package/src/cli.tsx +80 -39
- package/src/compile.tsx +24 -6
- 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 +152 -34
- 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 +193 -74
- 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 +198 -92
- 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 +213 -89
- package/src/examples/list-with-toast.vitest.tsx +4 -4
- package/src/examples/simple-file-picker.vitest.tsx +61 -471
- package/src/examples/simple-grid.vitest.tsx +238 -233
- package/src/examples/simple-navigation.tsx +15 -7
- package/src/examples/simple-navigation.vitest.tsx +121 -210
- 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/extensions/dev.tsx +74 -7
- package/src/extensions/dev.vitest.tsx +97 -31
- 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/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 +75 -6
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useRef } from 'react';
|
|
3
|
+
import { colord } from 'colord';
|
|
4
|
+
/**
|
|
5
|
+
* Generate wave colors based on base color
|
|
6
|
+
* Creates a gradient from base color to a lighter version and back
|
|
7
|
+
* Uses a shorter wave (12 chars) compared to LoadingBar
|
|
8
|
+
*/
|
|
9
|
+
function generateWaveColors(baseColor) {
|
|
10
|
+
const base = colord(baseColor);
|
|
11
|
+
// Shorter wave for text - lighten factors from 0 to 0.5 and back
|
|
12
|
+
const steps = [0, 10, 20, 30, 40, 50, 40, 30, 20, 10, 0, 0];
|
|
13
|
+
return steps.map((percent) => base.lighten(percent / 100).toHex());
|
|
14
|
+
}
|
|
15
|
+
export function LoadingText(props) {
|
|
16
|
+
const { children, isLoading = false, color = '#FFC000' } = props;
|
|
17
|
+
const [position, setPosition] = useState(0);
|
|
18
|
+
const intervalRef = useRef(null);
|
|
19
|
+
const characters = children.split('');
|
|
20
|
+
const waveColors = generateWaveColors(color);
|
|
21
|
+
const waveWidth = waveColors.length;
|
|
22
|
+
// Add padding at the end to create a delay before the next loop
|
|
23
|
+
const endPadding = 10;
|
|
24
|
+
const totalLength = characters.length + waveWidth + endPadding;
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (isLoading) {
|
|
27
|
+
intervalRef.current = setInterval(() => {
|
|
28
|
+
setPosition((prev) => (prev + 1) % totalLength);
|
|
29
|
+
}, 30);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (intervalRef.current) {
|
|
33
|
+
clearInterval(intervalRef.current);
|
|
34
|
+
intervalRef.current = null;
|
|
35
|
+
}
|
|
36
|
+
setPosition(0);
|
|
37
|
+
}
|
|
38
|
+
return () => {
|
|
39
|
+
if (intervalRef.current) {
|
|
40
|
+
clearInterval(intervalRef.current);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}, [isLoading, totalLength]);
|
|
44
|
+
const getCharacterColor = (index) => {
|
|
45
|
+
if (!isLoading) {
|
|
46
|
+
return color;
|
|
47
|
+
}
|
|
48
|
+
const distance = position - index;
|
|
49
|
+
// If character is within the wave (behind the current position)
|
|
50
|
+
if (distance >= 0 && distance < waveWidth) {
|
|
51
|
+
return waveColors[distance];
|
|
52
|
+
}
|
|
53
|
+
// Default to base color for characters outside the wave
|
|
54
|
+
return color;
|
|
55
|
+
};
|
|
56
|
+
return (_jsx("box", { flexDirection: "row", children: characters.map((char, index) => (_jsx("text", { fg: getCharacterColor(index), flexShrink: 0, children: char }, index))) }));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=loading-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loading-text.js","sourceRoot":"","sources":["../../src/components/loading-text.tsx"],"names":[],"mappings":"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"}
|
package/dist/descendants.js
CHANGED
|
@@ -65,7 +65,7 @@ const MenuExample = () => {
|
|
|
65
65
|
.map(([, item]) => item.index);
|
|
66
66
|
setFilteredIndexes(filtered);
|
|
67
67
|
};
|
|
68
|
-
return (_jsx(DescendantsProvider, { value: context, children: _jsx(FilteredIndexesContext.Provider, { value: filteredIndexes, children: _jsxs("box", { children: [_jsx("textarea", { ref: inputRef, height: 1, keyBindings: [
|
|
68
|
+
return (_jsx(DescendantsProvider, { value: context, children: _jsx(FilteredIndexesContext.Provider, { value: filteredIndexes, children: _jsxs("box", { children: [_jsx("textarea", { ref: inputRef, height: 1, wrapMode: 'none', keyBindings: [
|
|
69
69
|
{ name: 'return', action: 'submit' },
|
|
70
70
|
{ name: 'linefeed', action: 'submit' },
|
|
71
71
|
], onContentChange: () => {
|
package/dist/descendants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descendants.js","sourceRoot":"","sources":["../src/descendants.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"descendants.js","sourceRoot":"","sources":["../src/descendants.tsx"],"names":[],"mappings":"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"}
|
package/dist/dev-ui.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-ui.d.ts","sourceRoot":"","sources":["../src/dev-ui.tsx"],"names":[],"mappings":"AAmIA,wBAAsB,YAAY,CAAC,EACjC,aAAa,GACd,EAAE;IACD,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuChB;AAED,wBAAsB,cAAc,CAAC,EACnC,aAAa,GACd,EAAE;IACD,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhB"}
|
package/dist/dev-ui.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { render } from '@opentui/react';
|
|
5
|
+
import { List, useStore } from '@termcast/cli';
|
|
6
|
+
import { Action, ActionPanel } from '@termcast/cli';
|
|
7
|
+
import { useNavigation } from '@termcast/cli/src/internal/navigation';
|
|
8
|
+
import { Providers } from '@termcast/cli/src/internal/providers';
|
|
9
|
+
import { showToast, Toast } from '@termcast/cli/src/toast';
|
|
10
|
+
import { Icon } from '@termcast/cli';
|
|
11
|
+
import { getCommandsWithFiles } from './package-json';
|
|
12
|
+
import { buildExtensionCommands } from './build';
|
|
13
|
+
function ExtensionCommandsList({ extensionPath, commands, }) {
|
|
14
|
+
const { push } = useNavigation();
|
|
15
|
+
const packageJson = getCommandsWithFiles({
|
|
16
|
+
packageJsonPath: path.join(extensionPath, 'package.json'),
|
|
17
|
+
}).packageJson;
|
|
18
|
+
const handleCommandSelect = async (command) => {
|
|
19
|
+
try {
|
|
20
|
+
if (!command.bundledPath) {
|
|
21
|
+
await showToast({
|
|
22
|
+
style: Toast.Style.Failure,
|
|
23
|
+
title: 'Command not built',
|
|
24
|
+
message: `Command ${command.name} was not built successfully`,
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const state = useStore.getState();
|
|
29
|
+
const devRebuildCount = state.devRebuildCount;
|
|
30
|
+
// Set the current command in state
|
|
31
|
+
useStore.setState({ currentCommandName: command.name });
|
|
32
|
+
const module = await import(`${command.bundledPath}?rebuild=${devRebuildCount}`);
|
|
33
|
+
const Component = module.default;
|
|
34
|
+
if (!Component) {
|
|
35
|
+
await showToast({
|
|
36
|
+
style: Toast.Style.Failure,
|
|
37
|
+
title: 'No default export',
|
|
38
|
+
message: `Command file ${command.name} has no default export`,
|
|
39
|
+
});
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
push(_jsx(Component, {}));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
await showToast({
|
|
46
|
+
style: Toast.Style.Failure,
|
|
47
|
+
title: 'Failed to load command',
|
|
48
|
+
message: error.message ? error.message : error,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
return (_jsxs(List, { navigationTitle: packageJson.title || 'Extension Commands', searchBarPlaceholder: 'Search commands...', children: [_jsx(List.Section, { title: 'Commands', children: commands.map((command) => (_jsx(List.Item, { id: command.name, title: command.title, subtitle: command.description, icon: command.icon ? Icon[command.icon] : undefined, accessories: [
|
|
53
|
+
{ text: command.mode },
|
|
54
|
+
...(command.bundledPath
|
|
55
|
+
? []
|
|
56
|
+
: [
|
|
57
|
+
{
|
|
58
|
+
text: 'Not built',
|
|
59
|
+
tooltip: 'Command was not built successfully',
|
|
60
|
+
},
|
|
61
|
+
]),
|
|
62
|
+
], keywords: command.keywords, actions: _jsxs(ActionPanel, { children: [_jsx(Action, { title: 'Run Command', onAction: () => {
|
|
63
|
+
handleCommandSelect(command);
|
|
64
|
+
} }), _jsx(Action.CopyToClipboard, { content: command.filePath, title: 'Copy File Path' }), _jsx(Action.CopyToClipboard, { content: JSON.stringify(command, null, 2), title: 'Copy Command Info' })] }) }, command.name))) }), commands.length === 0 && (_jsx(List.Section, { title: 'No Commands', children: _jsx(List.Item, { title: 'No commands found', subtitle: 'Check your package.json for command definitions' }) }))] }));
|
|
65
|
+
}
|
|
66
|
+
export async function startDevMode({ extensionPath, }) {
|
|
67
|
+
const resolvedPath = path.resolve(extensionPath);
|
|
68
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
69
|
+
throw new Error(`Extension path does not exist: ${resolvedPath}`);
|
|
70
|
+
}
|
|
71
|
+
const packageJsonPath = path.join(resolvedPath, 'package.json');
|
|
72
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
73
|
+
throw new Error(`No package.json found at: ${packageJsonPath}`);
|
|
74
|
+
}
|
|
75
|
+
// Parse the package.json to get extension metadata
|
|
76
|
+
const { packageJson } = getCommandsWithFiles({ packageJsonPath });
|
|
77
|
+
// Build and set initial devElement
|
|
78
|
+
const { commands } = await buildExtensionCommands({
|
|
79
|
+
extensionPath: resolvedPath,
|
|
80
|
+
});
|
|
81
|
+
// Reset state and set extension information
|
|
82
|
+
useStore.setState({
|
|
83
|
+
...useStore.getInitialState(),
|
|
84
|
+
extensionPath: resolvedPath,
|
|
85
|
+
extensionPackageJson: packageJson,
|
|
86
|
+
devElement: (_jsx(ExtensionCommandsList, { extensionPath: resolvedPath, commands: commands })),
|
|
87
|
+
devRebuildCount: 1,
|
|
88
|
+
});
|
|
89
|
+
function App() {
|
|
90
|
+
const devElement = useStore((state) => state.devElement);
|
|
91
|
+
const devRebuildCount = useStore((state) => state.devRebuildCount);
|
|
92
|
+
return _jsx(Providers, { children: devElement }, String(devRebuildCount));
|
|
93
|
+
}
|
|
94
|
+
await render(_jsx(App, {}));
|
|
95
|
+
}
|
|
96
|
+
export async function triggerRebuild({ extensionPath, }) {
|
|
97
|
+
try {
|
|
98
|
+
const { commands } = await buildExtensionCommands({ extensionPath });
|
|
99
|
+
// Re-parse package.json in case it changed
|
|
100
|
+
const packageJsonPath = path.join(extensionPath, 'package.json');
|
|
101
|
+
const { packageJson } = getCommandsWithFiles({ packageJsonPath });
|
|
102
|
+
// Update the devElement with new commands and increment rebuild count
|
|
103
|
+
const state = useStore.getState();
|
|
104
|
+
useStore.setState({
|
|
105
|
+
extensionPackageJson: packageJson,
|
|
106
|
+
devElement: (_jsx(ExtensionCommandsList, { extensionPath: extensionPath, commands: commands })),
|
|
107
|
+
devRebuildCount: state.devRebuildCount + 1,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
await showToast({
|
|
112
|
+
style: Toast.Style.Failure,
|
|
113
|
+
title: 'Rebuild failed',
|
|
114
|
+
message: error.message,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=dev-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-ui.js","sourceRoot":"","sources":["../src/dev-ui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment API - Provides access to environment information and context
|
|
3
|
+
*
|
|
4
|
+
* Raycast Docs: https://developers.raycast.com/api-reference/environment
|
|
5
|
+
*
|
|
6
|
+
* The environment object provides information about the command's runtime context,
|
|
7
|
+
* including theme settings, development mode, launch type, and paths. LaunchType enum
|
|
8
|
+
* indicates whether the command was triggered by user action or background process.
|
|
9
|
+
*
|
|
10
|
+
* Key features:
|
|
11
|
+
* - Access to appearance/theme (dark/light)
|
|
12
|
+
* - Extension and command metadata
|
|
13
|
+
* - Launch context (user-initiated vs background)
|
|
14
|
+
* - Support and assets paths for file storage
|
|
15
|
+
* - System integration (selected Finder items, selected text)
|
|
16
|
+
*/
|
|
17
|
+
export interface Environment {
|
|
18
|
+
appearance: 'dark' | 'light';
|
|
19
|
+
assetsPath: string;
|
|
20
|
+
commandMode: 'view' | 'no-view' | 'menu-bar';
|
|
21
|
+
commandName: string;
|
|
22
|
+
extensionName: string;
|
|
23
|
+
isDevelopment: boolean;
|
|
24
|
+
launchType: LaunchType;
|
|
25
|
+
ownerOrAuthorName: string;
|
|
26
|
+
raycastVersion: string;
|
|
27
|
+
supportPath: string;
|
|
28
|
+
textSize: 'medium' | 'large';
|
|
29
|
+
canAccess(api: any): boolean;
|
|
30
|
+
theme: 'dark' | 'light';
|
|
31
|
+
}
|
|
32
|
+
export declare enum LaunchType {
|
|
33
|
+
UserInitiated = "userInitiated",
|
|
34
|
+
Background = "background"
|
|
35
|
+
}
|
|
36
|
+
export interface LaunchProps<T extends Record<string, any> = Record<string, any>> {
|
|
37
|
+
arguments: T;
|
|
38
|
+
fallbackText?: string;
|
|
39
|
+
launchContext?: {
|
|
40
|
+
[key: string]: any;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
declare class EnvironmentImpl implements Environment {
|
|
44
|
+
constructor();
|
|
45
|
+
get appearance(): 'dark' | 'light';
|
|
46
|
+
get assetsPath(): string;
|
|
47
|
+
get commandMode(): 'view' | 'no-view' | 'menu-bar';
|
|
48
|
+
get commandName(): string;
|
|
49
|
+
get extensionName(): string;
|
|
50
|
+
get isDevelopment(): boolean;
|
|
51
|
+
get launchType(): LaunchType;
|
|
52
|
+
get ownerOrAuthorName(): string;
|
|
53
|
+
get raycastVersion(): string;
|
|
54
|
+
get supportPath(): string;
|
|
55
|
+
get textSize(): 'medium' | 'large';
|
|
56
|
+
get theme(): 'dark' | 'light';
|
|
57
|
+
canAccess(api: any): boolean;
|
|
58
|
+
}
|
|
59
|
+
export declare const environment: EnvironmentImpl;
|
|
60
|
+
export declare function getSelectedFinderItems(): Promise<string[]>;
|
|
61
|
+
export declare function getSelectedText(): Promise<string>;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;IAC5C,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC5B,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAA;IAC5B,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,oBAAY,UAAU;IACpB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,WAAW,CAC1B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEnD,SAAS,EAAE,CAAC,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CACvC;AAED,cAAM,eAAgB,YAAW,WAAW;;IAM1C,IAAI,UAAU,IAAI,MAAM,GAAG,OAAO,CAcjC;IAED,IAAI,UAAU,IAAI,MAAM,CAOvB;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,GAAG,UAAU,CAWjD;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,aAAa,IAAI,MAAM,CAS1B;IAED,IAAI,aAAa,IAAI,OAAO,CAI3B;IAED,IAAI,UAAU,IAAI,UAAU,CAG3B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAU9B;IAED,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED,IAAI,WAAW,IAAI,MAAM,CAexB;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAGjC;IAGD,IAAI,KAAK,IAAI,MAAM,GAAG,OAAO,CAE5B;IAED,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;CAK7B;AAED,eAAO,MAAM,WAAW,iBAAwB,CAAA;AAEhD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BhE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CA4BvD"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment API - Provides access to environment information and context
|
|
3
|
+
*
|
|
4
|
+
* Raycast Docs: https://developers.raycast.com/api-reference/environment
|
|
5
|
+
*
|
|
6
|
+
* The environment object provides information about the command's runtime context,
|
|
7
|
+
* including theme settings, development mode, launch type, and paths. LaunchType enum
|
|
8
|
+
* indicates whether the command was triggered by user action or background process.
|
|
9
|
+
*
|
|
10
|
+
* Key features:
|
|
11
|
+
* - Access to appearance/theme (dark/light)
|
|
12
|
+
* - Extension and command metadata
|
|
13
|
+
* - Launch context (user-initiated vs background)
|
|
14
|
+
* - Support and assets paths for file storage
|
|
15
|
+
* - System integration (selected Finder items, selected text)
|
|
16
|
+
*/
|
|
17
|
+
import os from 'node:os';
|
|
18
|
+
import path from 'node:path';
|
|
19
|
+
import fs from 'node:fs';
|
|
20
|
+
import { execSync } from 'node:child_process';
|
|
21
|
+
import { useStore } from './state';
|
|
22
|
+
export var LaunchType;
|
|
23
|
+
(function (LaunchType) {
|
|
24
|
+
LaunchType["UserInitiated"] = "userInitiated";
|
|
25
|
+
LaunchType["Background"] = "background";
|
|
26
|
+
})(LaunchType || (LaunchType = {}));
|
|
27
|
+
class EnvironmentImpl {
|
|
28
|
+
constructor() {
|
|
29
|
+
// Bind all methods to this instance
|
|
30
|
+
this.canAccess = this.canAccess.bind(this);
|
|
31
|
+
}
|
|
32
|
+
get appearance() {
|
|
33
|
+
// Try to detect system theme on macOS
|
|
34
|
+
if (process.platform === 'darwin') {
|
|
35
|
+
try {
|
|
36
|
+
const result = execSync('defaults read -g AppleInterfaceStyle 2>/dev/null', { encoding: 'utf8' });
|
|
37
|
+
return result.includes('Dark') ? 'dark' : 'light';
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return 'light';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return 'light';
|
|
44
|
+
}
|
|
45
|
+
get assetsPath() {
|
|
46
|
+
const state = useStore.getState();
|
|
47
|
+
if (state.extensionPath) {
|
|
48
|
+
return path.join(state.extensionPath, 'assets');
|
|
49
|
+
}
|
|
50
|
+
// TODO: Fallback for non-dev mode extensions
|
|
51
|
+
return path.join(os.homedir(), '.termcast', 'assets');
|
|
52
|
+
}
|
|
53
|
+
get commandMode() {
|
|
54
|
+
const state = useStore.getState();
|
|
55
|
+
if (state.currentCommandName && state.extensionPackageJson?.commands) {
|
|
56
|
+
const command = state.extensionPackageJson.commands.find((cmd) => cmd.name === state.currentCommandName);
|
|
57
|
+
if (command) {
|
|
58
|
+
return command.mode;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return 'view';
|
|
62
|
+
}
|
|
63
|
+
get commandName() {
|
|
64
|
+
const state = useStore.getState();
|
|
65
|
+
if (state.currentCommandName) {
|
|
66
|
+
return state.currentCommandName;
|
|
67
|
+
}
|
|
68
|
+
return '';
|
|
69
|
+
}
|
|
70
|
+
get extensionName() {
|
|
71
|
+
const state = useStore.getState();
|
|
72
|
+
if (state.extensionPackageJson?.name) {
|
|
73
|
+
return state.extensionPackageJson.name;
|
|
74
|
+
}
|
|
75
|
+
if (state.extensionPath) {
|
|
76
|
+
return path.basename(state.extensionPath);
|
|
77
|
+
}
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
get isDevelopment() {
|
|
81
|
+
const state = useStore.getState();
|
|
82
|
+
// We're in development mode if devElement is set
|
|
83
|
+
return state.devElement !== null;
|
|
84
|
+
}
|
|
85
|
+
get launchType() {
|
|
86
|
+
// TODO: Support background commands when implemented
|
|
87
|
+
return LaunchType.UserInitiated;
|
|
88
|
+
}
|
|
89
|
+
get ownerOrAuthorName() {
|
|
90
|
+
const state = useStore.getState();
|
|
91
|
+
const pkg = state.extensionPackageJson;
|
|
92
|
+
if (pkg?.author) {
|
|
93
|
+
return pkg.author;
|
|
94
|
+
}
|
|
95
|
+
if (pkg?.owner) {
|
|
96
|
+
return pkg.owner;
|
|
97
|
+
}
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
get raycastVersion() {
|
|
101
|
+
// Return a version that indicates termcast compatibility
|
|
102
|
+
return '1.0.0-termcast';
|
|
103
|
+
}
|
|
104
|
+
get supportPath() {
|
|
105
|
+
// Create a support directory in the user's data directory
|
|
106
|
+
const baseDir = path.join(os.homedir(), '.termcast', 'support', this.extensionName);
|
|
107
|
+
// Ensure the directory exists
|
|
108
|
+
if (!fs.existsSync(baseDir)) {
|
|
109
|
+
fs.mkdirSync(baseDir, { recursive: true });
|
|
110
|
+
}
|
|
111
|
+
return baseDir;
|
|
112
|
+
}
|
|
113
|
+
get textSize() {
|
|
114
|
+
// TODO: Make this configurable via preferences
|
|
115
|
+
return 'medium';
|
|
116
|
+
}
|
|
117
|
+
// Alias for appearance to match Raycast API
|
|
118
|
+
get theme() {
|
|
119
|
+
return this.appearance;
|
|
120
|
+
}
|
|
121
|
+
canAccess(api) {
|
|
122
|
+
// In termcast, all APIs are accessible
|
|
123
|
+
// This method exists for Raycast compatibility
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export const environment = new EnvironmentImpl();
|
|
128
|
+
export async function getSelectedFinderItems() {
|
|
129
|
+
// TODO: Improve cross-platform support
|
|
130
|
+
// Currently only works on macOS using AppleScript
|
|
131
|
+
// Should add support for:
|
|
132
|
+
// 1. Windows Explorer selection (via PowerShell or COM)
|
|
133
|
+
// 2. Linux file managers (Nautilus, Dolphin, etc.)
|
|
134
|
+
if (process.platform === 'darwin') {
|
|
135
|
+
try {
|
|
136
|
+
// Use AppleScript to get selected Finder items
|
|
137
|
+
const script = `
|
|
138
|
+
tell application "Finder"
|
|
139
|
+
set theSelection to selection
|
|
140
|
+
set thePaths to {}
|
|
141
|
+
repeat with theItem in theSelection
|
|
142
|
+
set end of thePaths to POSIX path of (theItem as alias)
|
|
143
|
+
end repeat
|
|
144
|
+
return thePaths
|
|
145
|
+
end tell
|
|
146
|
+
`;
|
|
147
|
+
const result = execSync(`osascript -e '${script}'`, {
|
|
148
|
+
encoding: 'utf8',
|
|
149
|
+
});
|
|
150
|
+
return result.trim().split(', ').filter(Boolean);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// TODO: Implement for other platforms
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
export async function getSelectedText() {
|
|
160
|
+
// TODO: Improve implementation and cross-platform support
|
|
161
|
+
// Current implementation has issues:
|
|
162
|
+
// 1. Modifies the clipboard (should preserve original content)
|
|
163
|
+
// 2. Uses delay which may not be reliable
|
|
164
|
+
// 3. Only works on macOS
|
|
165
|
+
// Should add support for Windows and Linux
|
|
166
|
+
if (process.platform === 'darwin') {
|
|
167
|
+
try {
|
|
168
|
+
// TODO: Save and restore clipboard contents to avoid side effects
|
|
169
|
+
// Use AppleScript to get selected text from frontmost application
|
|
170
|
+
const script = `
|
|
171
|
+
tell application "System Events"
|
|
172
|
+
keystroke "c" using command down
|
|
173
|
+
delay 0.1
|
|
174
|
+
return (the clipboard)
|
|
175
|
+
end tell
|
|
176
|
+
`;
|
|
177
|
+
const result = execSync(`osascript -e '${script}'`, {
|
|
178
|
+
encoding: 'utf8',
|
|
179
|
+
});
|
|
180
|
+
return result.trim();
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return '';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// TODO: Implement for Windows (via PowerShell) and Linux (xclip/xsel)
|
|
187
|
+
return '';
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../src/examples/datepicker.tsx"],"names":[],"mappings":""}
|