termcast 1.3.21 → 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.
Files changed (412) hide show
  1. package/dist/ai.d.ts +104 -0
  2. package/dist/ai.d.ts.map +1 -0
  3. package/dist/ai.js +135 -0
  4. package/dist/ai.js.map +1 -0
  5. package/dist/apis/browser-extension.d.ts +18 -0
  6. package/dist/apis/browser-extension.d.ts.map +1 -0
  7. package/dist/apis/browser-extension.js +14 -0
  8. package/dist/apis/browser-extension.js.map +1 -0
  9. package/dist/apis/localstorage.d.ts.map +1 -1
  10. package/dist/apis/localstorage.js +4 -7
  11. package/dist/apis/localstorage.js.map +1 -1
  12. package/dist/apis/oauth.d.ts.map +1 -1
  13. package/dist/apis/oauth.js +5 -1
  14. package/dist/apis/oauth.js.map +1 -1
  15. package/dist/apis/preferences.d.ts.map +1 -1
  16. package/dist/apis/preferences.js +38 -19
  17. package/dist/apis/preferences.js.map +1 -1
  18. package/dist/build.d.ts.map +1 -1
  19. package/dist/build.js +2 -1
  20. package/dist/build.js.map +1 -1
  21. package/dist/cache.d.ts +32 -0
  22. package/dist/cache.d.ts.map +1 -0
  23. package/dist/cache.js +205 -0
  24. package/dist/cache.js.map +1 -0
  25. package/dist/cli.d.ts.map +1 -1
  26. package/dist/cli.js +67 -31
  27. package/dist/cli.js.map +1 -1
  28. package/dist/clipboard.d.ts +36 -0
  29. package/dist/clipboard.d.ts.map +1 -0
  30. package/dist/clipboard.js +154 -0
  31. package/dist/clipboard.js.map +1 -0
  32. package/dist/compile.d.ts.map +1 -1
  33. package/dist/compile.js +22 -5
  34. package/dist/compile.js.map +1 -1
  35. package/dist/components/actions.d.ts.map +1 -1
  36. package/dist/components/actions.js +56 -30
  37. package/dist/components/actions.js.map +1 -1
  38. package/dist/components/detail.d.ts.map +1 -1
  39. package/dist/components/detail.js +4 -0
  40. package/dist/components/detail.js.map +1 -1
  41. package/dist/components/dropdown.d.ts.map +1 -1
  42. package/dist/components/dropdown.js +38 -15
  43. package/dist/components/dropdown.js.map +1 -1
  44. package/dist/components/extension-preferences.d.ts.map +1 -1
  45. package/dist/components/extension-preferences.js +40 -13
  46. package/dist/components/extension-preferences.js.map +1 -1
  47. package/dist/components/form/checkbox.d.ts.map +1 -1
  48. package/dist/components/form/checkbox.js +5 -3
  49. package/dist/components/form/checkbox.js.map +1 -1
  50. package/dist/components/form/date-picker.d.ts.map +1 -1
  51. package/dist/components/form/date-picker.js +5 -3
  52. package/dist/components/form/date-picker.js.map +1 -1
  53. package/dist/components/form/description.d.ts.map +1 -1
  54. package/dist/components/form/description.js +2 -2
  55. package/dist/components/form/description.js.map +1 -1
  56. package/dist/components/form/dropdown.d.ts.map +1 -1
  57. package/dist/components/form/dropdown.js +84 -80
  58. package/dist/components/form/dropdown.js.map +1 -1
  59. package/dist/components/form/file-autocomplete.d.ts +3 -6
  60. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  61. package/dist/components/form/file-autocomplete.js +61 -66
  62. package/dist/components/form/file-autocomplete.js.map +1 -1
  63. package/dist/components/form/file-picker.d.ts.map +1 -1
  64. package/dist/components/form/file-picker.js +33 -30
  65. package/dist/components/form/file-picker.js.map +1 -1
  66. package/dist/components/form/form-end.d.ts.map +1 -1
  67. package/dist/components/form/form-end.js +21 -1
  68. package/dist/components/form/form-end.js.map +1 -1
  69. package/dist/components/form/form-type-only.d.ts +174 -0
  70. package/dist/components/form/form-type-only.d.ts.map +1 -0
  71. package/dist/components/form/form-type-only.js +2 -0
  72. package/dist/components/form/form-type-only.js.map +1 -0
  73. package/dist/components/form/index.d.ts +3 -1
  74. package/dist/components/form/index.d.ts.map +1 -1
  75. package/dist/components/form/index.js +100 -28
  76. package/dist/components/form/index.js.map +1 -1
  77. package/dist/components/form/password-field.d.ts.map +1 -1
  78. package/dist/components/form/password-field.js +5 -3
  79. package/dist/components/form/password-field.js.map +1 -1
  80. package/dist/components/form/text-area.d.ts.map +1 -1
  81. package/dist/components/form/text-area.js +5 -3
  82. package/dist/components/form/text-area.js.map +1 -1
  83. package/dist/components/form/text-field.d.ts.map +1 -1
  84. package/dist/components/form/text-field.js +6 -4
  85. package/dist/components/form/text-field.js.map +1 -1
  86. package/dist/components/form/types.d.ts +5 -0
  87. package/dist/components/form/types.d.ts.map +1 -1
  88. package/dist/components/form/use-form-handling.d.ts +4 -0
  89. package/dist/components/form/use-form-handling.d.ts.map +1 -0
  90. package/dist/components/form/use-form-handling.js +37 -0
  91. package/dist/components/form/use-form-handling.js.map +1 -0
  92. package/dist/components/form/with-left-border.d.ts +2 -1
  93. package/dist/components/form/with-left-border.d.ts.map +1 -1
  94. package/dist/components/form/with-left-border.js +27 -3
  95. package/dist/components/form/with-left-border.js.map +1 -1
  96. package/dist/components/icon.d.ts +1 -0
  97. package/dist/components/icon.d.ts.map +1 -1
  98. package/dist/components/icon.js +24 -8
  99. package/dist/components/icon.js.map +1 -1
  100. package/dist/components/list.d.ts +2 -2
  101. package/dist/components/list.d.ts.map +1 -1
  102. package/dist/components/list.js +140 -62
  103. package/dist/components/list.js.map +1 -1
  104. package/dist/components/loading-bar.d.ts.map +1 -1
  105. package/dist/components/loading-bar.js +2 -2
  106. package/dist/components/loading-bar.js.map +1 -1
  107. package/dist/components/loading-text.d.ts +8 -0
  108. package/dist/components/loading-text.d.ts.map +1 -0
  109. package/dist/components/loading-text.js +58 -0
  110. package/dist/components/loading-text.js.map +1 -0
  111. package/dist/descendants.js +1 -1
  112. package/dist/descendants.js.map +1 -1
  113. package/dist/dev-ui.d.ts +7 -0
  114. package/dist/dev-ui.d.ts.map +1 -0
  115. package/dist/dev-ui.js +118 -0
  116. package/dist/dev-ui.js.map +1 -0
  117. package/dist/environment.d.ts +63 -0
  118. package/dist/environment.d.ts.map +1 -0
  119. package/dist/environment.js +189 -0
  120. package/dist/environment.js.map +1 -0
  121. package/dist/examples/datepicker.d.ts +2 -0
  122. package/dist/examples/datepicker.d.ts.map +1 -0
  123. package/dist/examples/datepicker.js +344 -0
  124. package/dist/examples/datepicker.js.map +1 -0
  125. package/dist/examples/file-autocomplete.vitest.d.ts +2 -0
  126. package/dist/examples/file-autocomplete.vitest.d.ts.map +1 -0
  127. package/dist/examples/file-autocomplete.vitest.js +223 -0
  128. package/dist/examples/file-autocomplete.vitest.js.map +1 -0
  129. package/dist/examples/form-basic-arrow-keys.vitest.d.ts +2 -0
  130. package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +1 -0
  131. package/dist/examples/form-basic-arrow-keys.vitest.js +46 -0
  132. package/dist/examples/form-basic-arrow-keys.vitest.js.map +1 -0
  133. package/dist/examples/form-basic.vitest.d.ts +2 -0
  134. package/dist/examples/form-basic.vitest.d.ts.map +1 -0
  135. package/dist/examples/form-basic.vitest.js +630 -0
  136. package/dist/examples/form-basic.vitest.js.map +1 -0
  137. package/dist/examples/form-dropdown-with-sections.d.ts +2 -0
  138. package/dist/examples/form-dropdown-with-sections.d.ts.map +1 -0
  139. package/dist/examples/form-dropdown-with-sections.js +13 -0
  140. package/dist/examples/form-dropdown-with-sections.js.map +1 -0
  141. package/dist/examples/form-dropdown-with-sections.vitest.d.ts +2 -0
  142. package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +1 -0
  143. package/dist/examples/form-dropdown-with-sections.vitest.js +75 -0
  144. package/dist/examples/form-dropdown-with-sections.vitest.js.map +1 -0
  145. package/dist/examples/form-dropdown.vitest.d.ts +2 -0
  146. package/dist/examples/form-dropdown.vitest.d.ts.map +1 -0
  147. package/dist/examples/form-dropdown.vitest.js +854 -0
  148. package/dist/examples/form-dropdown.vitest.js.map +1 -0
  149. package/dist/examples/form-multiselect-dropdown.d.ts +2 -0
  150. package/dist/examples/form-multiselect-dropdown.d.ts.map +1 -0
  151. package/dist/examples/form-multiselect-dropdown.js +13 -0
  152. package/dist/examples/form-multiselect-dropdown.js.map +1 -0
  153. package/dist/examples/form-scroll.d.ts.map +1 -1
  154. package/dist/examples/form-scroll.js +7 -1
  155. package/dist/examples/form-scroll.js.map +1 -1
  156. package/dist/examples/form-scroll.vitest.d.ts +2 -0
  157. package/dist/examples/form-scroll.vitest.d.ts.map +1 -0
  158. package/dist/examples/form-scroll.vitest.js +211 -0
  159. package/dist/examples/form-scroll.vitest.js.map +1 -0
  160. package/dist/examples/form-tagpicker.vitest.d.ts +2 -0
  161. package/dist/examples/form-tagpicker.vitest.d.ts.map +1 -0
  162. package/dist/examples/form-tagpicker.vitest.js +736 -0
  163. package/dist/examples/form-tagpicker.vitest.js.map +1 -0
  164. package/dist/examples/internal/descendants-filtering.js +1 -1
  165. package/dist/examples/internal/descendants-filtering.js.map +1 -1
  166. package/dist/examples/internal/descendants.js +1 -1
  167. package/dist/examples/internal/descendants.js.map +1 -1
  168. package/dist/examples/internal/nested-boxes.d.ts +2 -0
  169. package/dist/examples/internal/nested-boxes.d.ts.map +1 -0
  170. package/dist/examples/internal/nested-boxes.js +7 -0
  171. package/dist/examples/internal/nested-boxes.js.map +1 -0
  172. package/dist/examples/internal/rhf-custom-ref.js +2 -2
  173. package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
  174. package/dist/examples/internal/scrollbox-demo.js +3 -22
  175. package/dist/examples/internal/scrollbox-demo.js.map +1 -1
  176. package/dist/examples/internal/scrollbox-descendants.d.ts +2 -0
  177. package/dist/examples/internal/scrollbox-descendants.d.ts.map +1 -0
  178. package/dist/examples/internal/scrollbox-descendants.js +83 -0
  179. package/dist/examples/internal/scrollbox-descendants.js.map +1 -0
  180. package/dist/examples/internal/scrollbox-with-descendants.js +4 -8
  181. package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
  182. package/dist/examples/internal/simple-scrollbox.vitest.d.ts +2 -0
  183. package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +1 -0
  184. package/dist/examples/internal/simple-scrollbox.vitest.js +96 -0
  185. package/dist/examples/internal/simple-scrollbox.vitest.js.map +1 -0
  186. package/dist/examples/internal/unicode-square-repro.d.ts +2 -0
  187. package/dist/examples/internal/unicode-square-repro.d.ts.map +1 -0
  188. package/dist/examples/internal/unicode-square-repro.js +7 -0
  189. package/dist/examples/internal/unicode-square-repro.js.map +1 -0
  190. package/dist/examples/list-detail-metadata.d.ts +2 -0
  191. package/dist/examples/list-detail-metadata.d.ts.map +1 -0
  192. package/dist/examples/list-detail-metadata.js +8 -0
  193. package/dist/examples/list-detail-metadata.js.map +1 -0
  194. package/dist/examples/list-dropdown-default.vitest.d.ts +2 -0
  195. package/dist/examples/list-dropdown-default.vitest.d.ts.map +1 -0
  196. package/dist/examples/list-dropdown-default.vitest.js +234 -0
  197. package/dist/examples/list-dropdown-default.vitest.js.map +1 -0
  198. package/dist/examples/list-fetch-data.vitest.d.ts +2 -0
  199. package/dist/examples/list-fetch-data.vitest.d.ts.map +1 -0
  200. package/dist/examples/list-fetch-data.vitest.js +111 -0
  201. package/dist/examples/list-fetch-data.vitest.js.map +1 -0
  202. package/dist/examples/list-filter-navigation.d.ts +2 -0
  203. package/dist/examples/list-filter-navigation.d.ts.map +1 -0
  204. package/dist/examples/list-filter-navigation.js +8 -0
  205. package/dist/examples/list-filter-navigation.js.map +1 -0
  206. package/dist/examples/list-scrollbox.vitest.d.ts +2 -0
  207. package/dist/examples/list-scrollbox.vitest.d.ts.map +1 -0
  208. package/dist/examples/list-scrollbox.vitest.js +93 -0
  209. package/dist/examples/list-scrollbox.vitest.js.map +1 -0
  210. package/dist/examples/list-with-detail-long.d.ts +2 -0
  211. package/dist/examples/list-with-detail-long.d.ts.map +1 -0
  212. package/dist/examples/list-with-detail-long.js +53 -0
  213. package/dist/examples/list-with-detail-long.js.map +1 -0
  214. package/dist/examples/list-with-detail.vitest.d.ts +2 -0
  215. package/dist/examples/list-with-detail.vitest.d.ts.map +1 -0
  216. package/dist/examples/list-with-detail.vitest.js +434 -0
  217. package/dist/examples/list-with-detail.vitest.js.map +1 -0
  218. package/dist/examples/list-with-dropdown.vitest.d.ts +2 -0
  219. package/dist/examples/list-with-dropdown.vitest.d.ts.map +1 -0
  220. package/dist/examples/list-with-dropdown.vitest.js +337 -0
  221. package/dist/examples/list-with-dropdown.vitest.js.map +1 -0
  222. package/dist/examples/list-with-sections.js +5 -1
  223. package/dist/examples/list-with-sections.js.map +1 -1
  224. package/dist/examples/list-with-sections.vitest.d.ts +2 -0
  225. package/dist/examples/list-with-sections.vitest.d.ts.map +1 -0
  226. package/dist/examples/list-with-sections.vitest.js +601 -0
  227. package/dist/examples/list-with-sections.vitest.js.map +1 -0
  228. package/dist/examples/scrollbox-vertical-centering.d.ts +6 -0
  229. package/dist/examples/scrollbox-vertical-centering.d.ts.map +1 -0
  230. package/dist/examples/scrollbox-vertical-centering.js +17 -0
  231. package/dist/examples/scrollbox-vertical-centering.js.map +1 -0
  232. package/dist/examples/simple-file-picker.vitest.d.ts +2 -0
  233. package/dist/examples/simple-file-picker.vitest.d.ts.map +1 -0
  234. package/dist/examples/simple-file-picker.vitest.js +678 -0
  235. package/dist/examples/simple-file-picker.vitest.js.map +1 -0
  236. package/dist/examples/simple-grid.vitest.d.ts +2 -0
  237. package/dist/examples/simple-grid.vitest.d.ts.map +1 -0
  238. package/dist/examples/simple-grid.vitest.js +521 -0
  239. package/dist/examples/simple-grid.vitest.js.map +1 -0
  240. package/dist/examples/simple-navigation.js +10 -4
  241. package/dist/examples/simple-navigation.js.map +1 -1
  242. package/dist/examples/simple-navigation.vitest.d.ts +2 -0
  243. package/dist/examples/simple-navigation.vitest.d.ts.map +1 -0
  244. package/dist/examples/simple-navigation.vitest.js +718 -0
  245. package/dist/examples/simple-navigation.vitest.js.map +1 -0
  246. package/dist/examples/store.vitest.d.ts +2 -0
  247. package/dist/examples/store.vitest.d.ts.map +1 -0
  248. package/dist/examples/store.vitest.js +69 -0
  249. package/dist/examples/store.vitest.js.map +1 -0
  250. package/dist/extensions/dev.d.ts +4 -2
  251. package/dist/extensions/dev.d.ts.map +1 -1
  252. package/dist/extensions/dev.js +61 -10
  253. package/dist/extensions/dev.js.map +1 -1
  254. package/dist/extensions/dev.vitest.d.ts +2 -0
  255. package/dist/extensions/dev.vitest.d.ts.map +1 -0
  256. package/dist/extensions/dev.vitest.js +197 -0
  257. package/dist/extensions/dev.vitest.js.map +1 -0
  258. package/dist/extensions/home.d.ts.map +1 -1
  259. package/dist/extensions/home.js +3 -0
  260. package/dist/extensions/home.js.map +1 -1
  261. package/dist/home-command.d.ts +8 -0
  262. package/dist/home-command.d.ts.map +1 -0
  263. package/dist/home-command.js +181 -0
  264. package/dist/home-command.js.map +1 -0
  265. package/dist/hover-repro.d.ts +2 -0
  266. package/dist/hover-repro.d.ts.map +1 -0
  267. package/dist/hover-repro.js +20 -0
  268. package/dist/hover-repro.js.map +1 -0
  269. package/dist/index.d.ts +1 -0
  270. package/dist/index.d.ts.map +1 -1
  271. package/dist/index.js +2 -0
  272. package/dist/index.js.map +1 -1
  273. package/dist/internal/dialog.d.ts +1 -0
  274. package/dist/internal/dialog.d.ts.map +1 -1
  275. package/dist/internal/dialog.js +27 -18
  276. package/dist/internal/dialog.js.map +1 -1
  277. package/dist/internal/navigation.d.ts +9 -1
  278. package/dist/internal/navigation.d.ts.map +1 -1
  279. package/dist/internal/navigation.js +5 -5
  280. package/dist/internal/navigation.js.map +1 -1
  281. package/dist/internal/offscreen.d.ts +6 -0
  282. package/dist/internal/offscreen.d.ts.map +1 -0
  283. package/dist/internal/offscreen.js +10 -0
  284. package/dist/internal/offscreen.js.map +1 -0
  285. package/dist/internal/providers.d.ts.map +1 -1
  286. package/dist/internal/providers.js +2 -2
  287. package/dist/internal/providers.js.map +1 -1
  288. package/dist/internal/scrollbox.d.ts +1 -10
  289. package/dist/internal/scrollbox.d.ts.map +1 -1
  290. package/dist/internal/scrollbox.js +2 -1
  291. package/dist/internal/scrollbox.js.map +1 -1
  292. package/dist/localstorage.d.ts +13 -0
  293. package/dist/localstorage.d.ts.map +1 -0
  294. package/dist/localstorage.js +190 -0
  295. package/dist/localstorage.js.map +1 -0
  296. package/dist/oauth.d.ts +142 -0
  297. package/dist/oauth.d.ts.map +1 -0
  298. package/dist/oauth.js +551 -0
  299. package/dist/oauth.js.map +1 -0
  300. package/dist/preferences.d.ts +23 -0
  301. package/dist/preferences.d.ts.map +1 -0
  302. package/dist/preferences.js +105 -0
  303. package/dist/preferences.js.map +1 -0
  304. package/dist/state.d.ts +2 -0
  305. package/dist/state.d.ts.map +1 -1
  306. package/dist/state.js +3 -0
  307. package/dist/state.js.map +1 -1
  308. package/dist/store.d.ts +21 -0
  309. package/dist/store.d.ts.map +1 -0
  310. package/dist/store.js +84 -0
  311. package/dist/store.js.map +1 -0
  312. package/dist/swift-loader.d.ts +3 -0
  313. package/dist/swift-loader.d.ts.map +1 -0
  314. package/dist/swift-loader.js +193 -0
  315. package/dist/swift-loader.js.map +1 -0
  316. package/dist/swift-runtime.d.ts +2 -0
  317. package/dist/swift-runtime.d.ts.map +1 -0
  318. package/dist/swift-runtime.js +27 -0
  319. package/dist/swift-runtime.js.map +1 -0
  320. package/dist/toast.d.ts +44 -0
  321. package/dist/toast.d.ts.map +1 -0
  322. package/dist/toast.js +221 -0
  323. package/dist/toast.js.map +1 -0
  324. package/dist/utils/file-system.d.ts +9 -0
  325. package/dist/utils/file-system.d.ts.map +1 -1
  326. package/dist/utils/file-system.js +49 -0
  327. package/dist/utils/file-system.js.map +1 -1
  328. package/dist/utils/run-command.d.ts +25 -1
  329. package/dist/utils/run-command.d.ts.map +1 -1
  330. package/dist/utils/run-command.js +47 -4
  331. package/dist/utils/run-command.js.map +1 -1
  332. package/dist/window.d.ts +12 -0
  333. package/dist/window.d.ts.map +1 -0
  334. package/dist/window.js +48 -0
  335. package/dist/window.js.map +1 -0
  336. package/package.json +12 -10
  337. package/src/apis/browser-extension.tsx +29 -0
  338. package/src/apis/localstorage.test.ts +14 -6
  339. package/src/apis/localstorage.tsx +8 -5
  340. package/src/apis/oauth.tsx +5 -1
  341. package/src/apis/preferences.tsx +48 -22
  342. package/src/build.test.tsx +52 -0
  343. package/src/build.tsx +2 -1
  344. package/src/cli.tsx +78 -37
  345. package/src/compile.tsx +22 -5
  346. package/src/components/actions.tsx +94 -32
  347. package/src/components/detail.tsx +4 -0
  348. package/src/components/dropdown.tsx +47 -14
  349. package/src/components/extension-preferences.tsx +44 -16
  350. package/src/components/form/checkbox.tsx +12 -6
  351. package/src/components/form/date-picker.tsx +12 -6
  352. package/src/components/form/description.tsx +7 -2
  353. package/src/components/form/dropdown.tsx +131 -119
  354. package/src/components/form/file-autocomplete.tsx +90 -108
  355. package/src/components/form/file-picker.tsx +54 -43
  356. package/src/components/form/form-end.tsx +23 -2
  357. package/src/components/form/index.tsx +152 -34
  358. package/src/components/form/password-field.tsx +12 -6
  359. package/src/components/form/text-area.tsx +13 -6
  360. package/src/components/form/text-field.tsx +13 -6
  361. package/src/components/form/types.tsx +6 -0
  362. package/src/components/form/with-left-border.tsx +41 -8
  363. package/src/components/icon.tsx +27 -8
  364. package/src/components/list.tsx +193 -74
  365. package/src/components/loading-bar.tsx +3 -2
  366. package/src/components/loading-text.tsx +79 -0
  367. package/src/descendants.tsx +1 -0
  368. package/src/examples/file-autocomplete.vitest.tsx +130 -125
  369. package/src/examples/form-basic.vitest.tsx +376 -176
  370. package/src/examples/form-dropdown.vitest.tsx +126 -126
  371. package/src/examples/form-scroll.tsx +2 -0
  372. package/src/examples/form-scroll.vitest.tsx +58 -58
  373. package/src/examples/form-tagpicker.vitest.tsx +99 -99
  374. package/src/examples/internal/descendants-filtering.tsx +1 -0
  375. package/src/examples/internal/descendants.tsx +1 -0
  376. package/src/examples/internal/rhf-custom-ref.tsx +2 -0
  377. package/src/examples/internal/scrollbox-demo.tsx +3 -27
  378. package/src/examples/internal/scrollbox-with-descendants.tsx +4 -7
  379. package/src/examples/internal/simple-scrollbox.vitest.tsx +7 -5
  380. package/src/examples/list-detail-metadata.tsx +49 -0
  381. package/src/examples/list-detail-metadata.vitest.tsx +88 -0
  382. package/src/examples/list-dropdown-default.vitest.tsx +51 -51
  383. package/src/examples/list-fetch-data.vitest.tsx +4 -4
  384. package/src/examples/list-scrollbox.vitest.tsx +73 -14
  385. package/src/examples/list-with-detail-long.tsx +70 -0
  386. package/src/examples/list-with-detail.vitest.tsx +198 -92
  387. package/src/examples/list-with-dropdown.vitest.tsx +53 -53
  388. package/src/examples/list-with-sections.tsx +1 -0
  389. package/src/examples/list-with-sections.vitest.tsx +213 -89
  390. package/src/examples/list-with-toast.vitest.tsx +4 -4
  391. package/src/examples/simple-file-picker.vitest.tsx +61 -471
  392. package/src/examples/simple-grid.vitest.tsx +238 -233
  393. package/src/examples/simple-navigation.tsx +15 -7
  394. package/src/examples/simple-navigation.vitest.tsx +121 -210
  395. package/src/examples/store.vitest.tsx +1 -1
  396. package/src/examples/swift-extension.vitest.tsx +148 -0
  397. package/src/examples/synonyms.vitest.tsx +159 -0
  398. package/src/extensions/dev.tsx +74 -7
  399. package/src/extensions/dev.vitest.tsx +97 -31
  400. package/src/extensions/home.tsx +6 -0
  401. package/src/index.tsx +3 -0
  402. package/src/internal/dialog.tsx +43 -30
  403. package/src/internal/navigation.tsx +3 -1
  404. package/src/internal/offscreen.tsx +15 -0
  405. package/src/internal/providers.tsx +4 -2
  406. package/src/internal/scrollbox.tsx +4 -8
  407. package/src/keyboard.test.tsx +69 -0
  408. package/src/state.tsx +7 -0
  409. package/src/swift-loader.tsx +239 -0
  410. package/src/swift-runtime.tsx +36 -0
  411. package/src/utils/file-system.ts +61 -0
  412. package/src/utils/run-command.tsx +75 -6
package/dist/oauth.js ADDED
@@ -0,0 +1,551 @@
1
+ /**
2
+ * OAuth Implicit Flow Implementation
3
+ *
4
+ * The implicit flow returns tokens directly in the redirect URL fragment
5
+ * without requiring a client secret. This is ideal for public clients
6
+ * like browser extensions and CLI tools that need ID tokens.
7
+ *
8
+ * Key features:
9
+ * - Implicit flow for public clients (no client secret required)
10
+ * - Direct token retrieval without server-side exchange
11
+ * - Support for ID tokens and access tokens
12
+ * - Automatic token storage and retrieval
13
+ * - Token expiration checking with buffer
14
+ * - Provider configuration with name and icon
15
+ *
16
+ * Usage:
17
+ * const client = new OAuth.PKCEClient({
18
+ * redirectMethod: OAuth.RedirectMethod.AppURI,
19
+ * providerName: "Google",
20
+ * providerIcon: "google-icon.png"
21
+ * })
22
+ *
23
+ * const authRequest = await client.authorizationRequest({
24
+ * endpoint: "https://accounts.google.com/o/oauth2/v2/auth",
25
+ * clientId: "your-client-id",
26
+ * scope: "openid email profile"
27
+ * })
28
+ *
29
+ * const authResponse = await client.authorize(authRequest)
30
+ * // Tokens are returned directly (idToken, accessToken)
31
+ * await client.setTokens({
32
+ * accessToken: authResponse.accessToken,
33
+ * idToken: authResponse.idToken
34
+ * })
35
+ */
36
+ import crypto from 'node:crypto';
37
+ import http from 'node:http';
38
+ import { logger } from '@termcast/cli/src/logger';
39
+ import { LocalStorage } from '@termcast/cli/src/localstorage';
40
+ import { exec } from 'node:child_process';
41
+ import { promisify } from 'node:util';
42
+ const execAsync = promisify(exec);
43
+ export var OAuth;
44
+ (function (OAuth) {
45
+ let RedirectMethod;
46
+ (function (RedirectMethod) {
47
+ RedirectMethod["Web"] = "web";
48
+ RedirectMethod["App"] = "app";
49
+ RedirectMethod["AppURI"] = "appURI";
50
+ RedirectMethod["Device"] = "device";
51
+ RedirectMethod["Implicit"] = "implicit";
52
+ })(RedirectMethod = OAuth.RedirectMethod || (OAuth.RedirectMethod = {}));
53
+ class PKCEClient {
54
+ redirectMethod;
55
+ providerName;
56
+ providerIcon;
57
+ providerId;
58
+ description;
59
+ storageKey;
60
+ implicitFlowTokens; // Store tokens from implicit flow
61
+ // Properties expected by @raycast/utils
62
+ isAuthorizing = false;
63
+ authorizationURL;
64
+ constructor(options) {
65
+ this.redirectMethod = options.redirectMethod;
66
+ this.providerName = options.providerName;
67
+ this.providerIcon = options.providerIcon;
68
+ this.providerId =
69
+ options.providerId ||
70
+ options.providerName.toLowerCase().replace(/\s+/g, '-');
71
+ this.description = options.description;
72
+ this.storageKey = `oauth-${this.providerId}`;
73
+ // Bind all methods to this instance
74
+ this.authorizationRequest = this.authorizationRequest.bind(this);
75
+ this.authorize = this.authorize.bind(this);
76
+ this.setTokens = this.setTokens.bind(this);
77
+ this.getTokens = this.getTokens.bind(this);
78
+ this.removeTokens = this.removeTokens.bind(this);
79
+ this.generateCodeVerifier = this.generateCodeVerifier.bind(this);
80
+ this.generateCodeChallenge = this.generateCodeChallenge.bind(this);
81
+ logger.log('PKCEClient initialized', {
82
+ providerName: this.providerName,
83
+ providerId: this.providerId,
84
+ redirectMethod: this.redirectMethod,
85
+ });
86
+ }
87
+ async authorizationRequest(options) {
88
+ // Generate PKCE parameters
89
+ const codeVerifier = this.generateCodeVerifier();
90
+ const codeChallenge = this.generateCodeChallenge(codeVerifier);
91
+ const state = crypto.randomBytes(32).toString('hex');
92
+ // Always use localhost for implicit flow
93
+ const redirectURI = 'http://localhost:8989/oauth/callback';
94
+ const request = {
95
+ codeChallenge,
96
+ codeVerifier,
97
+ state,
98
+ redirectURI,
99
+ toURL: () => {
100
+ // Always use implicit flow parameters
101
+ const params = new URLSearchParams({
102
+ response_type: options.extraParameters?.response_type || 'id_token token',
103
+ client_id: options.clientId,
104
+ redirect_uri: redirectURI,
105
+ scope: options.scope,
106
+ state: state,
107
+ nonce: crypto.randomBytes(32).toString('hex'),
108
+ ...options.extraParameters,
109
+ });
110
+ return `${options.endpoint}?${params.toString()}`;
111
+ },
112
+ };
113
+ return request;
114
+ }
115
+ async authorizeDevice(options) {
116
+ logger.log('Starting device authorization flow', {
117
+ endpoint: options.endpoint,
118
+ });
119
+ // Step 1: Request device and user codes
120
+ const deviceResponse = await this.requestDeviceCode(options);
121
+ // Step 2: Open browser with the verification URL
122
+ // Use the complete URL if available (it includes the user code)
123
+ const url = deviceResponse.verificationUrlComplete ||
124
+ `${deviceResponse.verificationUrl}?user_code=${deviceResponse.userCode}`;
125
+ logger.log('Opening browser for device authorization', {
126
+ url: deviceResponse.verificationUrl,
127
+ userCode: deviceResponse.userCode,
128
+ });
129
+ try {
130
+ const platform = process.platform;
131
+ let command;
132
+ if (platform === 'darwin') {
133
+ command = `open "${url}"`;
134
+ }
135
+ else if (platform === 'win32') {
136
+ command = `start "" "${url}"`;
137
+ }
138
+ else {
139
+ command = `xdg-open "${url}" || sensible-browser "${url}" || x-www-browser "${url}"`;
140
+ }
141
+ await execAsync(command);
142
+ logger.log('Browser opened successfully with device authorization URL');
143
+ }
144
+ catch (error) {
145
+ logger.error('Failed to open browser automatically:', error);
146
+ logger.log('Please manually open:', url);
147
+ }
148
+ // Step 3: Poll for authorization
149
+ const tokenResponse = await this.pollForToken({
150
+ ...options,
151
+ deviceCode: deviceResponse.deviceCode,
152
+ interval: deviceResponse.interval,
153
+ expiresIn: deviceResponse.expiresIn,
154
+ });
155
+ return {
156
+ authorizationCode: tokenResponse.access_token,
157
+ state: undefined,
158
+ };
159
+ }
160
+ async requestDeviceCode(options) {
161
+ const params = new URLSearchParams({
162
+ client_id: options.clientId,
163
+ scope: options.scope,
164
+ });
165
+ const response = await fetch(options.endpoint, {
166
+ method: 'POST',
167
+ headers: {
168
+ 'Content-Type': 'application/x-www-form-urlencoded',
169
+ },
170
+ body: params.toString(),
171
+ });
172
+ if (!response.ok) {
173
+ const error = await response.text();
174
+ logger.error('Device code request failed:', error);
175
+ throw new Error(`Failed to request device code: ${response.statusText}`);
176
+ }
177
+ const data = (await response.json());
178
+ return {
179
+ deviceCode: data.device_code,
180
+ userCode: data.user_code,
181
+ verificationUrl: data.verification_url ||
182
+ data.verification_uri ||
183
+ 'https://www.google.com/device',
184
+ verificationUrlComplete: data.verification_url_complete || data.verification_uri_complete,
185
+ expiresIn: data.expires_in,
186
+ interval: data.interval || 5,
187
+ };
188
+ }
189
+ async pollForToken(options) {
190
+ const tokenEndpoint = options.endpoint.replace('/device/code', '/token');
191
+ const startTime = Date.now();
192
+ const expiresAt = startTime + options.expiresIn * 1000;
193
+ while (Date.now() < expiresAt) {
194
+ // Wait for the specified interval
195
+ await new Promise((resolve) => setTimeout(resolve, options.interval * 1000));
196
+ const params = new URLSearchParams({
197
+ client_id: options.clientId,
198
+ device_code: options.deviceCode,
199
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
200
+ });
201
+ // Add client secret if provided (required for Google)
202
+ if (options.clientSecret) {
203
+ params.append('client_secret', options.clientSecret);
204
+ }
205
+ try {
206
+ const response = await fetch(tokenEndpoint, {
207
+ method: 'POST',
208
+ headers: {
209
+ 'Content-Type': 'application/x-www-form-urlencoded',
210
+ },
211
+ body: params.toString(),
212
+ });
213
+ const data = (await response.json());
214
+ if (response.ok && data.access_token) {
215
+ logger.log('Device authorization successful');
216
+ return data;
217
+ }
218
+ // Check for specific error codes
219
+ if (data.error === 'authorization_pending') {
220
+ // User hasn't authorized yet, continue polling
221
+ continue;
222
+ }
223
+ else if (data.error === 'slow_down') {
224
+ // Increase interval
225
+ options.interval = (data.interval || options.interval) + 1;
226
+ logger.log('Slowing down polling interval to', options.interval);
227
+ }
228
+ else if (data.error === 'access_denied') {
229
+ throw new Error('User denied access');
230
+ }
231
+ else if (data.error === 'expired_token') {
232
+ throw new Error('Device code expired');
233
+ }
234
+ else if (data.error) {
235
+ throw new Error(`OAuth error: ${data.error} - ${data.error_description || ''}`);
236
+ }
237
+ }
238
+ catch (error) {
239
+ if (error instanceof Error && error.message.includes('denied')) {
240
+ throw error;
241
+ }
242
+ logger.error('Error polling for token:', error);
243
+ }
244
+ }
245
+ throw new Error('Device authorization timeout');
246
+ }
247
+ async authorize(options) {
248
+ const url = 'toURL' in options ? options.toURL() : options.url;
249
+ const expectedState = 'toURL' in options ? options.state : undefined;
250
+ logger.log('Starting OAuth implicit flow authorization', { url });
251
+ this.isAuthorizing = true;
252
+ this.authorizationURL = url;
253
+ return new Promise((resolve, reject) => {
254
+ const port = 8989;
255
+ // Create a local server to handle the OAuth callback
256
+ const server = http.createServer((req, res) => {
257
+ const requestUrl = new URL(req.url || '', `http://localhost:${port}`);
258
+ // Check if this is the callback
259
+ if (requestUrl.pathname === '/oauth/callback') {
260
+ // For implicit flow, tokens come in the fragment (#), not query
261
+ // We need to serve an HTML page that extracts the fragment and sends it back
262
+ res.writeHead(200, { 'Content-Type': 'text/html' });
263
+ res.end(`
264
+ <!DOCTYPE html>
265
+ <html>
266
+ <head>
267
+ <title>OAuth Authorization</title>
268
+ <style>
269
+ body {
270
+ font-family: system-ui;
271
+ padding: 40px;
272
+ text-align: center;
273
+ background: #f5f5f5;
274
+ }
275
+ .success { color: #28a745; }
276
+ .error { color: #dc3545; }
277
+ .token-info {
278
+ background: white;
279
+ padding: 20px;
280
+ border-radius: 8px;
281
+ margin: 20px auto;
282
+ max-width: 600px;
283
+ text-align: left;
284
+ }
285
+ </style>
286
+ </head>
287
+ <body>
288
+ <h1 id="status">Processing...</h1>
289
+ <div id="message"></div>
290
+ <script>
291
+ // Extract tokens from URL fragment
292
+ const hash = window.location.hash.substring(1);
293
+ const params = new URLSearchParams(hash);
294
+
295
+ const data = {
296
+ access_token: params.get('access_token'),
297
+ id_token: params.get('id_token'),
298
+ expires_in: params.get('expires_in'),
299
+ token_type: params.get('token_type'),
300
+ scope: params.get('scope'),
301
+ state: params.get('state'),
302
+ error: params.get('error'),
303
+ error_description: params.get('error_description')
304
+ };
305
+
306
+ // Send tokens back to our server
307
+ fetch('/oauth/implicit-callback', {
308
+ method: 'POST',
309
+ headers: { 'Content-Type': 'application/json' },
310
+ body: JSON.stringify(data)
311
+ }).then(response => {
312
+ if (response.ok) {
313
+ document.getElementById('status').className = 'success';
314
+ document.getElementById('status').innerHTML = '&#10003; Authorization Successful';
315
+ document.getElementById('message').innerHTML =
316
+ '<p>You can close this window and return to the terminal.</p>' +
317
+ '<div class="token-info">' +
318
+ (data.id_token ? '<p><strong>ID Token received:</strong> Yes</p>' : '') +
319
+ (data.access_token ? '<p><strong>Access Token received:</strong> Yes</p>' : '') +
320
+ (data.expires_in ? '<p><strong>Expires in:</strong> ' + data.expires_in + ' seconds</p>' : '') +
321
+ '</div>';
322
+ } else {
323
+ document.getElementById('status').className = 'error';
324
+ document.getElementById('status').textContent = 'Authorization Failed';
325
+ document.getElementById('message').textContent = data.error_description || data.error || 'Unknown error';
326
+ }
327
+ setTimeout(() => window.close(), 3000);
328
+ }).catch(err => {
329
+ document.getElementById('status').className = 'error';
330
+ document.getElementById('status').textContent = 'Communication Error';
331
+ document.getElementById('message').textContent = err.message;
332
+ });
333
+ </script>
334
+ </body>
335
+ </html>
336
+ `);
337
+ }
338
+ else if (requestUrl.pathname === '/oauth/implicit-callback') {
339
+ // Handle the tokens sent from the browser
340
+ let body = '';
341
+ req.on('data', (chunk) => {
342
+ body += chunk;
343
+ });
344
+ req.on('end', () => {
345
+ try {
346
+ const data = JSON.parse(body);
347
+ if (data.error) {
348
+ res.writeHead(400, {
349
+ 'Content-Type': 'application/json',
350
+ });
351
+ res.end(JSON.stringify({ error: data.error }));
352
+ server.close();
353
+ reject(new Error(`OAuth error: ${data.error} - ${data.error_description || ''}`));
354
+ return;
355
+ }
356
+ // Validate state
357
+ if (data.state !== expectedState) {
358
+ res.writeHead(400, {
359
+ 'Content-Type': 'application/json',
360
+ });
361
+ res.end(JSON.stringify({
362
+ error: 'state_mismatch',
363
+ }));
364
+ server.close();
365
+ reject(new Error('OAuth state mismatch'));
366
+ return;
367
+ }
368
+ res.writeHead(200, {
369
+ 'Content-Type': 'application/json',
370
+ });
371
+ res.end(JSON.stringify({ success: true }));
372
+ server.close();
373
+ this.isAuthorizing = false;
374
+ // For implicit flow, save tokens immediately since we won't do token exchange
375
+ const tokens = {
376
+ accessToken: data.access_token || '',
377
+ idToken: data.id_token,
378
+ expiresIn: data.expires_in ? parseInt(data.expires_in) : 3600,
379
+ scope: data.scope,
380
+ };
381
+ // Store tokens in memory for later retrieval
382
+ this.implicitFlowTokens = tokens;
383
+ // Save tokens directly to storage
384
+ this.setTokens(tokens)
385
+ .then(() => {
386
+ logger.log('Implicit flow tokens saved directly');
387
+ // Return the tokens (authorizationCode is a dummy value for compatibility)
388
+ resolve({
389
+ authorizationCode: 'implicit_flow_dummy_code', // Dummy code for compatibility
390
+ accessToken: data.access_token,
391
+ idToken: data.id_token,
392
+ state: data.state,
393
+ });
394
+ })
395
+ .catch((err) => {
396
+ logger.error('Failed to save implicit flow tokens:', err);
397
+ reject(err);
398
+ });
399
+ }
400
+ catch (error) {
401
+ res.writeHead(500, {
402
+ 'Content-Type': 'application/json',
403
+ });
404
+ res.end(JSON.stringify({ error: 'parse_error' }));
405
+ server.close();
406
+ reject(error);
407
+ }
408
+ });
409
+ }
410
+ else {
411
+ res.writeHead(404, { 'Content-Type': 'text/plain' });
412
+ res.end('Not found');
413
+ }
414
+ });
415
+ server.listen(port, async () => {
416
+ logger.log(`OAuth implicit flow server listening on http://localhost:${port}/oauth/callback`);
417
+ // Open the browser
418
+ try {
419
+ const platform = process.platform;
420
+ let command;
421
+ if (platform === 'darwin') {
422
+ command = `open "${url}"`;
423
+ }
424
+ else if (platform === 'win32') {
425
+ command = `start "" "${url}"`;
426
+ }
427
+ else {
428
+ // Linux and others
429
+ command = `xdg-open "${url}" || sensible-browser "${url}" || x-www-browser "${url}"`;
430
+ }
431
+ await execAsync(command);
432
+ logger.log('Browser opened for implicit flow authorization');
433
+ }
434
+ catch (error) {
435
+ server.close();
436
+ reject(new Error(`Failed to open browser: ${error}`));
437
+ }
438
+ });
439
+ server.on('error', (error) => {
440
+ logger.error('OAuth implicit flow server error:', error);
441
+ reject(error);
442
+ });
443
+ // Set a timeout for the authorization
444
+ setTimeout(() => {
445
+ server.close();
446
+ reject(new Error('OAuth authorization timeout'));
447
+ }, 5 * 60 * 1000); // 5 minutes timeout
448
+ });
449
+ }
450
+ async setTokens(options) {
451
+ // Convert TokenResponse to TokenSetOptions if needed
452
+ const tokenSet = 'access_token' in options
453
+ ? {
454
+ accessToken: options.access_token,
455
+ refreshToken: options.refresh_token,
456
+ idToken: options.id_token,
457
+ expiresIn: options.expires_in,
458
+ scope: options.scope,
459
+ }
460
+ : options;
461
+ const storedTokenSet = {
462
+ ...tokenSet,
463
+ updatedAt: new Date(),
464
+ isExpired: function () {
465
+ if (!this.expiresIn)
466
+ return false;
467
+ const expiresAt = new Date(this.updatedAt.getTime() + this.expiresIn * 1000);
468
+ // Add 10 seconds buffer
469
+ return new Date().getTime() > expiresAt.getTime() - 10000;
470
+ },
471
+ };
472
+ const dataToStore = {
473
+ ...storedTokenSet,
474
+ updatedAt: storedTokenSet.updatedAt.toISOString(),
475
+ };
476
+ logger.log('Storing tokens for', this.providerId, {
477
+ storageKey: this.storageKey,
478
+ hasAccessToken: !!tokenSet.accessToken,
479
+ hasRefreshToken: !!tokenSet.refreshToken,
480
+ hasIdToken: !!tokenSet.idToken,
481
+ expiresIn: tokenSet.expiresIn,
482
+ });
483
+ await LocalStorage.setItem(this.storageKey, JSON.stringify(dataToStore));
484
+ // Verify storage
485
+ const stored = await LocalStorage.getItem(this.storageKey);
486
+ if (stored) {
487
+ logger.log('Tokens successfully stored and verified for', this.providerId);
488
+ }
489
+ else {
490
+ logger.error('Failed to verify token storage for', this.providerId);
491
+ }
492
+ }
493
+ async getTokens() {
494
+ logger.log('Getting tokens for', this.providerId, {
495
+ storageKey: this.storageKey,
496
+ });
497
+ const stored = await LocalStorage.getItem(this.storageKey);
498
+ if (!stored) {
499
+ logger.log('No tokens found for', this.providerId);
500
+ return undefined;
501
+ }
502
+ const parsed = JSON.parse(stored);
503
+ const tokenSet = {
504
+ ...parsed,
505
+ updatedAt: new Date(parsed.updatedAt),
506
+ isExpired: function () {
507
+ if (!this.expiresIn)
508
+ return false;
509
+ const expiresAt = new Date(this.updatedAt.getTime() + this.expiresIn * 1000);
510
+ // Add 10 seconds buffer
511
+ return new Date().getTime() > expiresAt.getTime() - 10000;
512
+ },
513
+ };
514
+ logger.log('Retrieved tokens for', this.providerId, {
515
+ hasAccessToken: !!tokenSet.accessToken,
516
+ hasRefreshToken: !!tokenSet.refreshToken,
517
+ isExpired: tokenSet.isExpired(),
518
+ });
519
+ return tokenSet;
520
+ }
521
+ async removeTokens() {
522
+ await LocalStorage.removeItem(this.storageKey);
523
+ this.implicitFlowTokens = undefined; // Clear in-memory tokens
524
+ logger.log('Tokens removed for', this.providerId);
525
+ }
526
+ // Method to check if we have implicit flow tokens ready
527
+ hasImplicitFlowTokens() {
528
+ return !!this.implicitFlowTokens;
529
+ }
530
+ // Method to get implicit flow tokens (for mocking token exchange)
531
+ getImplicitFlowTokens() {
532
+ if (!this.implicitFlowTokens)
533
+ return undefined;
534
+ return {
535
+ access_token: this.implicitFlowTokens.accessToken,
536
+ id_token: this.implicitFlowTokens.idToken,
537
+ expires_in: this.implicitFlowTokens.expiresIn,
538
+ scope: this.implicitFlowTokens.scope,
539
+ refresh_token: this.implicitFlowTokens.refreshToken,
540
+ };
541
+ }
542
+ generateCodeVerifier() {
543
+ return crypto.randomBytes(32).toString('base64url');
544
+ }
545
+ generateCodeChallenge(verifier) {
546
+ return crypto.createHash('sha256').update(verifier).digest('base64url');
547
+ }
548
+ }
549
+ OAuth.PKCEClient = PKCEClient;
550
+ })(OAuth || (OAuth = {}));
551
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type PreferenceValues = {
2
+ [preferenceName: string]: any;
3
+ };
4
+ /**
5
+ * A function to access the preference values that have been passed to the command.
6
+ * Each preference name is mapped to its value, and the defined default values are used as fallback values.
7
+ *
8
+ * @returns An object with the preference names as property key and the typed value as property value.
9
+ */
10
+ export declare function getPreferenceValues<Values extends PreferenceValues = PreferenceValues>(): Values;
11
+ /**
12
+ * Opens the extension's preferences screen.
13
+ *
14
+ * @returns A Promise that resolves when the extensions preferences screen is opened.
15
+ */
16
+ export declare function openExtensionPreferences(): Promise<void>;
17
+ /**
18
+ * Opens the command's preferences screen.
19
+ *
20
+ * @returns A Promise that resolves when the command's preferences screen is opened.
21
+ */
22
+ export declare function openCommandPreferences(): Promise<void>;
23
+ //# sourceMappingURL=preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../src/preferences.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,cAAc,EAAE,MAAM,GAAG,GAAG,CAAA;CAC9B,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,SAAS,gBAAgB,GAAG,gBAAgB,KAC/C,MAAM,CA4DV;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB9D;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B5D"}