@moldable-ai/ui 0.2.18 → 0.2.20

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 (587) hide show
  1. package/dist/catalog/catalog-manifest.d.ts +6 -0
  2. package/dist/catalog/catalog-manifest.d.ts.map +1 -0
  3. package/dist/catalog/catalog-manifest.js +105 -0
  4. package/dist/catalog/catalog-types.d.ts +54 -0
  5. package/dist/catalog/catalog-types.d.ts.map +1 -0
  6. package/dist/catalog/catalog-types.js +14 -0
  7. package/dist/catalog/component-catalog.d.ts +14 -0
  8. package/dist/catalog/component-catalog.d.ts.map +1 -0
  9. package/dist/catalog/component-catalog.js +39 -0
  10. package/dist/catalog/core-catalog.d.ts +6 -0
  11. package/dist/catalog/core-catalog.d.ts.map +1 -0
  12. package/dist/catalog/core-catalog.js +105 -0
  13. package/dist/catalog/index.d.ts +5 -0
  14. package/dist/catalog/index.d.ts.map +1 -0
  15. package/dist/catalog/index.js +4 -0
  16. package/dist/components/app-error-boundary.d.ts +1 -0
  17. package/dist/components/app-error-boundary.d.ts.map +1 -1
  18. package/dist/components/app-error-boundary.js +13 -0
  19. package/dist/components/chat/chat-image-lightbox.d.ts +9 -0
  20. package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -0
  21. package/dist/components/chat/chat-image-lightbox.js +9 -0
  22. package/dist/components/chat/chat-message.d.ts +19 -1
  23. package/dist/components/chat/chat-message.d.ts.map +1 -1
  24. package/dist/components/chat/chat-message.js +66 -16
  25. package/dist/components/chat/chat-messages.d.ts +5 -2
  26. package/dist/components/chat/chat-messages.d.ts.map +1 -1
  27. package/dist/components/chat/chat-messages.js +61 -6
  28. package/dist/components/chat/chat-panel.d.ts +67 -17
  29. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  30. package/dist/components/chat/chat-panel.js +250 -159
  31. package/dist/components/chat/conversation-history.d.ts +39 -5
  32. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  33. package/dist/components/chat/conversation-history.js +192 -26
  34. package/dist/components/chat/index.d.ts +3 -2
  35. package/dist/components/chat/index.d.ts.map +1 -1
  36. package/dist/components/chat/index.js +3 -2
  37. package/dist/components/chat/model-effort-power-effects.d.ts +7 -0
  38. package/dist/components/chat/model-effort-power-effects.d.ts.map +1 -0
  39. package/dist/components/chat/model-effort-power-effects.js +54 -0
  40. package/dist/components/chat/model-effort-selector.d.ts +26 -0
  41. package/dist/components/chat/model-effort-selector.d.ts.map +1 -0
  42. package/dist/components/chat/model-effort-selector.js +179 -0
  43. package/dist/components/chat/model-effort-ultra-effects.d.ts +5 -0
  44. package/dist/components/chat/model-effort-ultra-effects.d.ts.map +1 -0
  45. package/dist/components/chat/model-effort-ultra-effects.js +56 -0
  46. package/dist/components/chat/tool-handlers.d.ts.map +1 -1
  47. package/dist/components/chat/tool-handlers.js +40 -2
  48. package/dist/components/chat/vertical-scroll-fade.d.ts +6 -0
  49. package/dist/components/chat/vertical-scroll-fade.d.ts.map +1 -0
  50. package/dist/components/chat/vertical-scroll-fade.js +12 -0
  51. package/dist/components/hardware/bluetooth-panel-helpers.d.ts +9 -0
  52. package/dist/components/hardware/bluetooth-panel-helpers.d.ts.map +1 -0
  53. package/dist/components/hardware/bluetooth-panel-helpers.js +37 -0
  54. package/dist/components/hardware/bluetooth-panel.d.ts +56 -0
  55. package/dist/components/hardware/bluetooth-panel.d.ts.map +1 -0
  56. package/dist/components/hardware/bluetooth-panel.js +470 -0
  57. package/dist/components/hardware/camera-preview.d.ts +39 -0
  58. package/dist/components/hardware/camera-preview.d.ts.map +1 -0
  59. package/dist/components/hardware/camera-preview.js +228 -0
  60. package/dist/components/hardware/capability-badge.d.ts +23 -0
  61. package/dist/components/hardware/capability-badge.d.ts.map +1 -0
  62. package/dist/components/hardware/capability-badge.js +39 -0
  63. package/dist/components/hardware/capability-matrix.d.ts +14 -0
  64. package/dist/components/hardware/capability-matrix.d.ts.map +1 -0
  65. package/dist/components/hardware/capability-matrix.js +97 -0
  66. package/dist/components/hardware/clipboard-button.d.ts +26 -0
  67. package/dist/components/hardware/clipboard-button.d.ts.map +1 -0
  68. package/dist/components/hardware/clipboard-button.js +114 -0
  69. package/dist/components/hardware/device-io-controls.d.ts +4 -0
  70. package/dist/components/hardware/device-io-controls.d.ts.map +1 -0
  71. package/dist/components/hardware/device-io-controls.js +28 -0
  72. package/dist/components/hardware/device-list.d.ts +20 -0
  73. package/dist/components/hardware/device-list.d.ts.map +1 -0
  74. package/dist/components/hardware/device-list.js +14 -0
  75. package/dist/components/hardware/display-map.d.ts +23 -0
  76. package/dist/components/hardware/display-map.d.ts.map +1 -0
  77. package/dist/components/hardware/display-map.js +114 -0
  78. package/dist/components/hardware/haptic-button.d.ts +26 -0
  79. package/dist/components/hardware/haptic-button.d.ts.map +1 -0
  80. package/dist/components/hardware/haptic-button.js +94 -0
  81. package/dist/components/hardware/hardware-panel.d.ts +11 -0
  82. package/dist/components/hardware/hardware-panel.d.ts.map +1 -0
  83. package/dist/components/hardware/hardware-panel.js +28 -0
  84. package/dist/components/hardware/hid-panel.d.ts +40 -0
  85. package/dist/components/hardware/hid-panel.d.ts.map +1 -0
  86. package/dist/components/hardware/hid-panel.js +373 -0
  87. package/dist/components/hardware/index.d.ts +27 -0
  88. package/dist/components/hardware/index.d.ts.map +1 -0
  89. package/dist/components/hardware/index.js +26 -0
  90. package/dist/components/hardware/live-indicator.d.ts +15 -0
  91. package/dist/components/hardware/live-indicator.d.ts.map +1 -0
  92. package/dist/components/hardware/live-indicator.js +26 -0
  93. package/dist/components/hardware/local-auth-button.d.ts +33 -0
  94. package/dist/components/hardware/local-auth-button.d.ts.map +1 -0
  95. package/dist/components/hardware/local-auth-button.js +115 -0
  96. package/dist/components/hardware/location-panel.d.ts +29 -0
  97. package/dist/components/hardware/location-panel.d.ts.map +1 -0
  98. package/dist/components/hardware/location-panel.js +154 -0
  99. package/dist/components/hardware/microphone-meter.d.ts +35 -0
  100. package/dist/components/hardware/microphone-meter.d.ts.map +1 -0
  101. package/dist/components/hardware/microphone-meter.js +244 -0
  102. package/dist/components/hardware/midi-monitor.d.ts +54 -0
  103. package/dist/components/hardware/midi-monitor.d.ts.map +1 -0
  104. package/dist/components/hardware/midi-monitor.js +534 -0
  105. package/dist/components/hardware/notification-panel.d.ts +24 -0
  106. package/dist/components/hardware/notification-panel.d.ts.map +1 -0
  107. package/dist/components/hardware/notification-panel.js +124 -0
  108. package/dist/components/hardware/power-blocker-controller.d.ts +19 -0
  109. package/dist/components/hardware/power-blocker-controller.d.ts.map +1 -0
  110. package/dist/components/hardware/power-blocker-controller.js +83 -0
  111. package/dist/components/hardware/power-panel.d.ts +67 -0
  112. package/dist/components/hardware/power-panel.d.ts.map +1 -0
  113. package/dist/components/hardware/power-panel.js +309 -0
  114. package/dist/components/hardware/readout.d.ts +10 -0
  115. package/dist/components/hardware/readout.d.ts.map +1 -0
  116. package/dist/components/hardware/readout.js +11 -0
  117. package/dist/components/hardware/screen-share-preview.d.ts +36 -0
  118. package/dist/components/hardware/screen-share-preview.d.ts.map +1 -0
  119. package/dist/components/hardware/screen-share-preview.js +191 -0
  120. package/dist/components/hardware/secure-storage-panel.d.ts +36 -0
  121. package/dist/components/hardware/secure-storage-panel.d.ts.map +1 -0
  122. package/dist/components/hardware/secure-storage-panel.js +193 -0
  123. package/dist/components/hardware/serial-console.d.ts +64 -0
  124. package/dist/components/hardware/serial-console.d.ts.map +1 -0
  125. package/dist/components/hardware/serial-console.js +399 -0
  126. package/dist/components/hardware/shortcut-recorder.d.ts +35 -0
  127. package/dist/components/hardware/shortcut-recorder.d.ts.map +1 -0
  128. package/dist/components/hardware/shortcut-recorder.js +217 -0
  129. package/dist/components/hardware/stream-log.d.ts +35 -0
  130. package/dist/components/hardware/stream-log.d.ts.map +1 -0
  131. package/dist/components/hardware/stream-log.js +65 -0
  132. package/dist/components/hardware/system-audio-monitor.d.ts +34 -0
  133. package/dist/components/hardware/system-audio-monitor.d.ts.map +1 -0
  134. package/dist/components/hardware/system-audio-monitor.js +275 -0
  135. package/dist/components/hardware/usb-panel.d.ts +54 -0
  136. package/dist/components/hardware/usb-panel.d.ts.map +1 -0
  137. package/dist/components/hardware/usb-panel.js +363 -0
  138. package/dist/components/hardware/use-capability.d.ts +20 -0
  139. package/dist/components/hardware/use-capability.d.ts.map +1 -0
  140. package/dist/components/hardware/use-capability.js +61 -0
  141. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts +9 -0
  142. package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts.map +1 -0
  143. package/dist/components/native-capabilities/bluetooth-panel-helpers.js +37 -0
  144. package/dist/components/native-capabilities/bluetooth-panel.d.ts +56 -0
  145. package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -0
  146. package/dist/components/native-capabilities/bluetooth-panel.js +470 -0
  147. package/dist/components/native-capabilities/camera-preview.d.ts +39 -0
  148. package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -0
  149. package/dist/components/native-capabilities/camera-preview.js +228 -0
  150. package/dist/components/native-capabilities/capability-badge.d.ts +23 -0
  151. package/dist/components/native-capabilities/capability-badge.d.ts.map +1 -0
  152. package/dist/components/native-capabilities/capability-badge.js +39 -0
  153. package/dist/components/native-capabilities/capability-matrix.d.ts +14 -0
  154. package/dist/components/native-capabilities/capability-matrix.d.ts.map +1 -0
  155. package/dist/components/native-capabilities/capability-matrix.js +97 -0
  156. package/dist/components/native-capabilities/clipboard-button.d.ts +26 -0
  157. package/dist/components/native-capabilities/clipboard-button.d.ts.map +1 -0
  158. package/dist/components/native-capabilities/clipboard-button.js +99 -0
  159. package/dist/components/native-capabilities/device-io-controls.d.ts +4 -0
  160. package/dist/components/native-capabilities/device-io-controls.d.ts.map +1 -0
  161. package/dist/components/native-capabilities/device-io-controls.js +28 -0
  162. package/dist/components/native-capabilities/device-list.d.ts +20 -0
  163. package/dist/components/native-capabilities/device-list.d.ts.map +1 -0
  164. package/dist/components/native-capabilities/device-list.js +14 -0
  165. package/dist/components/native-capabilities/display-map.d.ts +23 -0
  166. package/dist/components/native-capabilities/display-map.d.ts.map +1 -0
  167. package/dist/components/native-capabilities/display-map.js +114 -0
  168. package/dist/components/native-capabilities/haptic-button.d.ts +26 -0
  169. package/dist/components/native-capabilities/haptic-button.d.ts.map +1 -0
  170. package/dist/components/native-capabilities/haptic-button.js +94 -0
  171. package/dist/components/native-capabilities/hid-panel.d.ts +40 -0
  172. package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -0
  173. package/dist/components/native-capabilities/hid-panel.js +373 -0
  174. package/dist/components/native-capabilities/index.d.ts +27 -0
  175. package/dist/components/native-capabilities/index.d.ts.map +1 -0
  176. package/dist/components/native-capabilities/index.js +26 -0
  177. package/dist/components/native-capabilities/live-indicator.d.ts +15 -0
  178. package/dist/components/native-capabilities/live-indicator.d.ts.map +1 -0
  179. package/dist/components/native-capabilities/live-indicator.js +26 -0
  180. package/dist/components/native-capabilities/local-auth-button.d.ts +33 -0
  181. package/dist/components/native-capabilities/local-auth-button.d.ts.map +1 -0
  182. package/dist/components/native-capabilities/local-auth-button.js +115 -0
  183. package/dist/components/native-capabilities/location-panel.d.ts +29 -0
  184. package/dist/components/native-capabilities/location-panel.d.ts.map +1 -0
  185. package/dist/components/native-capabilities/location-panel.js +146 -0
  186. package/dist/components/native-capabilities/microphone-meter.d.ts +35 -0
  187. package/dist/components/native-capabilities/microphone-meter.d.ts.map +1 -0
  188. package/dist/components/native-capabilities/microphone-meter.js +244 -0
  189. package/dist/components/native-capabilities/midi-monitor.d.ts +54 -0
  190. package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -0
  191. package/dist/components/native-capabilities/midi-monitor.js +534 -0
  192. package/dist/components/native-capabilities/native-capability-panel.d.ts +11 -0
  193. package/dist/components/native-capabilities/native-capability-panel.d.ts.map +1 -0
  194. package/dist/components/native-capabilities/native-capability-panel.js +28 -0
  195. package/dist/components/native-capabilities/notification-panel.d.ts +24 -0
  196. package/dist/components/native-capabilities/notification-panel.d.ts.map +1 -0
  197. package/dist/components/native-capabilities/notification-panel.js +124 -0
  198. package/dist/components/native-capabilities/power-blocker-controller.d.ts +19 -0
  199. package/dist/components/native-capabilities/power-blocker-controller.d.ts.map +1 -0
  200. package/dist/components/native-capabilities/power-blocker-controller.js +83 -0
  201. package/dist/components/native-capabilities/power-panel.d.ts +67 -0
  202. package/dist/components/native-capabilities/power-panel.d.ts.map +1 -0
  203. package/dist/components/native-capabilities/power-panel.js +309 -0
  204. package/dist/components/native-capabilities/readout.d.ts +10 -0
  205. package/dist/components/native-capabilities/readout.d.ts.map +1 -0
  206. package/dist/components/native-capabilities/readout.js +11 -0
  207. package/dist/components/native-capabilities/screen-share-preview.d.ts +36 -0
  208. package/dist/components/native-capabilities/screen-share-preview.d.ts.map +1 -0
  209. package/dist/components/native-capabilities/screen-share-preview.js +191 -0
  210. package/dist/components/native-capabilities/secure-storage-panel.d.ts +36 -0
  211. package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -0
  212. package/dist/components/native-capabilities/secure-storage-panel.js +193 -0
  213. package/dist/components/native-capabilities/serial-console.d.ts +64 -0
  214. package/dist/components/native-capabilities/serial-console.d.ts.map +1 -0
  215. package/dist/components/native-capabilities/serial-console.js +399 -0
  216. package/dist/components/native-capabilities/shortcut-recorder.d.ts +35 -0
  217. package/dist/components/native-capabilities/shortcut-recorder.d.ts.map +1 -0
  218. package/dist/components/native-capabilities/shortcut-recorder.js +217 -0
  219. package/dist/components/native-capabilities/stream-log.d.ts +35 -0
  220. package/dist/components/native-capabilities/stream-log.d.ts.map +1 -0
  221. package/dist/components/native-capabilities/stream-log.js +65 -0
  222. package/dist/components/native-capabilities/system-audio-monitor.d.ts +34 -0
  223. package/dist/components/native-capabilities/system-audio-monitor.d.ts.map +1 -0
  224. package/dist/components/native-capabilities/system-audio-monitor.js +275 -0
  225. package/dist/components/native-capabilities/usb-panel.d.ts +54 -0
  226. package/dist/components/native-capabilities/usb-panel.d.ts.map +1 -0
  227. package/dist/components/native-capabilities/usb-panel.js +363 -0
  228. package/dist/components/native-capabilities/use-capability.d.ts +20 -0
  229. package/dist/components/native-capabilities/use-capability.d.ts.map +1 -0
  230. package/dist/components/native-capabilities/use-capability.js +61 -0
  231. package/dist/components/ui/app-frame.d.ts +22 -0
  232. package/dist/components/ui/app-frame.d.ts.map +1 -0
  233. package/dist/components/ui/app-frame.js +56 -0
  234. package/dist/components/ui/button-group.d.ts +1 -1
  235. package/dist/components/ui/button.js +1 -1
  236. package/dist/components/ui/color-well.d.ts +13 -0
  237. package/dist/components/ui/color-well.d.ts.map +1 -0
  238. package/dist/components/ui/color-well.js +30 -0
  239. package/dist/components/ui/date-field.d.ts +19 -0
  240. package/dist/components/ui/date-field.d.ts.map +1 -0
  241. package/dist/components/ui/date-field.js +54 -0
  242. package/dist/components/ui/edge-fade.d.ts +11 -0
  243. package/dist/components/ui/edge-fade.d.ts.map +1 -0
  244. package/dist/components/ui/edge-fade.js +41 -0
  245. package/dist/components/ui/empty.js +1 -1
  246. package/dist/components/ui/field.d.ts +1 -1
  247. package/dist/components/ui/grid.d.ts +24 -0
  248. package/dist/components/ui/grid.d.ts.map +1 -0
  249. package/dist/components/ui/grid.js +234 -0
  250. package/dist/components/ui/icon-button.d.ts +15 -0
  251. package/dist/components/ui/icon-button.d.ts.map +1 -0
  252. package/dist/components/ui/icon-button.js +15 -0
  253. package/dist/components/ui/index.d.ts +19 -0
  254. package/dist/components/ui/index.d.ts.map +1 -1
  255. package/dist/components/ui/index.js +19 -0
  256. package/dist/components/ui/inspector.d.ts +15 -0
  257. package/dist/components/ui/inspector.d.ts.map +1 -0
  258. package/dist/components/ui/inspector.js +26 -0
  259. package/dist/components/ui/kbd.d.ts +1 -1
  260. package/dist/components/ui/list.d.ts +24 -0
  261. package/dist/components/ui/list.d.ts.map +1 -0
  262. package/dist/components/ui/list.js +224 -0
  263. package/dist/components/ui/message-scroller-layout-stability.d.ts +33 -0
  264. package/dist/components/ui/message-scroller-layout-stability.d.ts.map +1 -0
  265. package/dist/components/ui/message-scroller-layout-stability.js +153 -0
  266. package/dist/components/ui/message-scroller.d.ts +11 -0
  267. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  268. package/dist/components/ui/message-scroller.js +37 -0
  269. package/dist/components/ui/notification-dot.d.ts +4 -0
  270. package/dist/components/ui/notification-dot.d.ts.map +1 -0
  271. package/dist/components/ui/notification-dot.js +7 -0
  272. package/dist/components/ui/number-input.d.ts +16 -0
  273. package/dist/components/ui/number-input.d.ts.map +1 -0
  274. package/dist/components/ui/number-input.js +56 -0
  275. package/dist/components/ui/panel.d.ts +18 -0
  276. package/dist/components/ui/panel.d.ts.map +1 -0
  277. package/dist/components/ui/panel.js +40 -0
  278. package/dist/components/ui/popover.js +1 -1
  279. package/dist/components/ui/search-field.d.ts +19 -0
  280. package/dist/components/ui/search-field.d.ts.map +1 -0
  281. package/dist/components/ui/search-field.js +64 -0
  282. package/dist/components/ui/segmented-control.d.ts +21 -0
  283. package/dist/components/ui/segmented-control.d.ts.map +1 -0
  284. package/dist/components/ui/segmented-control.js +61 -0
  285. package/dist/components/ui/sidebar.js +1 -1
  286. package/dist/components/ui/slider.d.ts +4 -1
  287. package/dist/components/ui/slider.d.ts.map +1 -1
  288. package/dist/components/ui/slider.js +2 -2
  289. package/dist/components/ui/sonner.d.ts +4 -3
  290. package/dist/components/ui/sonner.d.ts.map +1 -1
  291. package/dist/components/ui/sonner.js +7 -6
  292. package/dist/components/ui/split-view.d.ts +11 -0
  293. package/dist/components/ui/split-view.d.ts.map +1 -0
  294. package/dist/components/ui/split-view.js +13 -0
  295. package/dist/components/ui/status.d.ts +13 -0
  296. package/dist/components/ui/status.d.ts.map +1 -0
  297. package/dist/components/ui/status.js +36 -0
  298. package/dist/components/ui/table.d.ts +11 -2
  299. package/dist/components/ui/table.d.ts.map +1 -1
  300. package/dist/components/ui/table.js +28 -6
  301. package/dist/components/ui/text.d.ts +17 -0
  302. package/dist/components/ui/text.d.ts.map +1 -0
  303. package/dist/components/ui/text.js +55 -0
  304. package/dist/components/ui/toggle.js +1 -1
  305. package/dist/components/ui/toolbar.d.ts +20 -0
  306. package/dist/components/ui/toolbar.d.ts.map +1 -0
  307. package/dist/components/ui/toolbar.js +52 -0
  308. package/dist/index.d.ts +2 -0
  309. package/dist/index.d.ts.map +1 -1
  310. package/dist/index.js +4 -0
  311. package/dist/lib/frame-lifecycle.d.ts +28 -0
  312. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  313. package/dist/lib/frame-lifecycle.js +84 -0
  314. package/dist/lib/native-capabilities/access.d.ts +13 -0
  315. package/dist/lib/native-capabilities/access.d.ts.map +1 -0
  316. package/dist/lib/native-capabilities/access.js +53 -0
  317. package/dist/lib/native-capabilities/bluetooth-access.d.ts +14 -0
  318. package/dist/lib/native-capabilities/bluetooth-access.d.ts.map +1 -0
  319. package/dist/lib/native-capabilities/bluetooth-access.js +43 -0
  320. package/dist/lib/native-capabilities/bluetooth-connection.d.ts +19 -0
  321. package/dist/lib/native-capabilities/bluetooth-connection.d.ts.map +1 -0
  322. package/dist/lib/native-capabilities/bluetooth-connection.js +88 -0
  323. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +7 -0
  324. package/dist/lib/native-capabilities/bluetooth-gatt.d.ts.map +1 -0
  325. package/dist/lib/native-capabilities/bluetooth-gatt.js +77 -0
  326. package/dist/lib/native-capabilities/bluetooth-internal.d.ts +10 -0
  327. package/dist/lib/native-capabilities/bluetooth-internal.d.ts.map +1 -0
  328. package/dist/lib/native-capabilities/bluetooth-internal.js +105 -0
  329. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +33 -0
  330. package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts.map +1 -0
  331. package/dist/lib/native-capabilities/bluetooth-native-fallback.js +214 -0
  332. package/dist/lib/native-capabilities/bluetooth-types.d.ts +85 -0
  333. package/dist/lib/native-capabilities/bluetooth-types.d.ts.map +1 -0
  334. package/dist/lib/native-capabilities/bluetooth-types.js +2 -0
  335. package/dist/lib/native-capabilities/bluetooth.d.ts +7 -0
  336. package/dist/lib/native-capabilities/bluetooth.d.ts.map +1 -0
  337. package/dist/lib/native-capabilities/bluetooth.js +4 -0
  338. package/dist/lib/native-capabilities/bridge.d.ts +23 -0
  339. package/dist/lib/native-capabilities/bridge.d.ts.map +1 -0
  340. package/dist/lib/native-capabilities/bridge.js +266 -0
  341. package/dist/lib/native-capabilities/capabilities.d.ts +7 -0
  342. package/dist/lib/native-capabilities/capabilities.d.ts.map +1 -0
  343. package/dist/lib/native-capabilities/capabilities.js +95 -0
  344. package/dist/lib/native-capabilities/clipboard.d.ts +11 -0
  345. package/dist/lib/native-capabilities/clipboard.d.ts.map +1 -0
  346. package/dist/lib/native-capabilities/clipboard.js +58 -0
  347. package/dist/lib/native-capabilities/device-io-errors.d.ts +11 -0
  348. package/dist/lib/native-capabilities/device-io-errors.d.ts.map +1 -0
  349. package/dist/lib/native-capabilities/device-io-errors.js +82 -0
  350. package/dist/lib/native-capabilities/displays.d.ts +38 -0
  351. package/dist/lib/native-capabilities/displays.d.ts.map +1 -0
  352. package/dist/lib/native-capabilities/displays.js +12 -0
  353. package/dist/lib/native-capabilities/global-shortcuts.d.ts +86 -0
  354. package/dist/lib/native-capabilities/global-shortcuts.d.ts.map +1 -0
  355. package/dist/lib/native-capabilities/global-shortcuts.js +351 -0
  356. package/dist/lib/native-capabilities/haptics.d.ts +25 -0
  357. package/dist/lib/native-capabilities/haptics.d.ts.map +1 -0
  358. package/dist/lib/native-capabilities/haptics.js +18 -0
  359. package/dist/lib/native-capabilities/hid-native.d.ts +26 -0
  360. package/dist/lib/native-capabilities/hid-native.d.ts.map +1 -0
  361. package/dist/lib/native-capabilities/hid-native.js +229 -0
  362. package/dist/lib/native-capabilities/hid.d.ts +52 -0
  363. package/dist/lib/native-capabilities/hid.d.ts.map +1 -0
  364. package/dist/lib/native-capabilities/hid.js +163 -0
  365. package/dist/lib/native-capabilities/index.d.ts +40 -0
  366. package/dist/lib/native-capabilities/index.d.ts.map +1 -0
  367. package/dist/lib/native-capabilities/index.js +21 -0
  368. package/dist/lib/native-capabilities/local-authentication.d.ts +32 -0
  369. package/dist/lib/native-capabilities/local-authentication.d.ts.map +1 -0
  370. package/dist/lib/native-capabilities/local-authentication.js +46 -0
  371. package/dist/lib/native-capabilities/location.d.ts +49 -0
  372. package/dist/lib/native-capabilities/location.d.ts.map +1 -0
  373. package/dist/lib/native-capabilities/location.js +114 -0
  374. package/dist/lib/native-capabilities/media-permissions.d.ts +28 -0
  375. package/dist/lib/native-capabilities/media-permissions.d.ts.map +1 -0
  376. package/dist/lib/native-capabilities/media-permissions.js +37 -0
  377. package/dist/lib/native-capabilities/media.d.ts +17 -0
  378. package/dist/lib/native-capabilities/media.d.ts.map +1 -0
  379. package/dist/lib/native-capabilities/media.js +104 -0
  380. package/dist/lib/native-capabilities/midi-access.d.ts +13 -0
  381. package/dist/lib/native-capabilities/midi-access.d.ts.map +1 -0
  382. package/dist/lib/native-capabilities/midi-access.js +68 -0
  383. package/dist/lib/native-capabilities/midi-internal.d.ts +12 -0
  384. package/dist/lib/native-capabilities/midi-internal.d.ts.map +1 -0
  385. package/dist/lib/native-capabilities/midi-internal.js +88 -0
  386. package/dist/lib/native-capabilities/midi-native-fallback.d.ts +27 -0
  387. package/dist/lib/native-capabilities/midi-native-fallback.d.ts.map +1 -0
  388. package/dist/lib/native-capabilities/midi-native-fallback.js +127 -0
  389. package/dist/lib/native-capabilities/midi-ports.d.ts +6 -0
  390. package/dist/lib/native-capabilities/midi-ports.d.ts.map +1 -0
  391. package/dist/lib/native-capabilities/midi-ports.js +115 -0
  392. package/dist/lib/native-capabilities/midi-types.d.ts +25 -0
  393. package/dist/lib/native-capabilities/midi-types.d.ts.map +1 -0
  394. package/dist/lib/native-capabilities/midi-types.js +1 -0
  395. package/dist/lib/native-capabilities/midi.d.ts +6 -0
  396. package/dist/lib/native-capabilities/midi.d.ts.map +1 -0
  397. package/dist/lib/native-capabilities/midi.js +3 -0
  398. package/dist/lib/native-capabilities/native-device-io.d.ts +28 -0
  399. package/dist/lib/native-capabilities/native-device-io.d.ts.map +1 -0
  400. package/dist/lib/native-capabilities/native-device-io.js +91 -0
  401. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts +13 -0
  402. package/dist/lib/native-capabilities/native-device-lifecycle.d.ts.map +1 -0
  403. package/dist/lib/native-capabilities/native-device-lifecycle.js +40 -0
  404. package/dist/lib/native-capabilities/notifications.d.ts +38 -0
  405. package/dist/lib/native-capabilities/notifications.d.ts.map +1 -0
  406. package/dist/lib/native-capabilities/notifications.js +50 -0
  407. package/dist/lib/native-capabilities/power-session.d.ts +113 -0
  408. package/dist/lib/native-capabilities/power-session.d.ts.map +1 -0
  409. package/dist/lib/native-capabilities/power-session.js +264 -0
  410. package/dist/lib/native-capabilities/secure-storage.d.ts +36 -0
  411. package/dist/lib/native-capabilities/secure-storage.d.ts.map +1 -0
  412. package/dist/lib/native-capabilities/secure-storage.js +64 -0
  413. package/dist/lib/native-capabilities/serial-native.d.ts +23 -0
  414. package/dist/lib/native-capabilities/serial-native.d.ts.map +1 -0
  415. package/dist/lib/native-capabilities/serial-native.js +181 -0
  416. package/dist/lib/native-capabilities/serial.d.ts +76 -0
  417. package/dist/lib/native-capabilities/serial.d.ts.map +1 -0
  418. package/dist/lib/native-capabilities/serial.js +215 -0
  419. package/dist/lib/native-capabilities/system-audio.d.ts +127 -0
  420. package/dist/lib/native-capabilities/system-audio.d.ts.map +1 -0
  421. package/dist/lib/native-capabilities/system-audio.js +330 -0
  422. package/dist/lib/native-capabilities/types.d.ts +62 -0
  423. package/dist/lib/native-capabilities/types.d.ts.map +1 -0
  424. package/dist/lib/native-capabilities/types.js +27 -0
  425. package/dist/lib/native-capabilities/usb-native.d.ts +39 -0
  426. package/dist/lib/native-capabilities/usb-native.d.ts.map +1 -0
  427. package/dist/lib/native-capabilities/usb-native.js +217 -0
  428. package/dist/lib/native-capabilities/usb.d.ts +85 -0
  429. package/dist/lib/native-capabilities/usb.d.ts.map +1 -0
  430. package/dist/lib/native-capabilities/usb.js +225 -0
  431. package/dist/lib/native-hardware/bluetooth-access.d.ts +14 -0
  432. package/dist/lib/native-hardware/bluetooth-access.d.ts.map +1 -0
  433. package/dist/lib/native-hardware/bluetooth-access.js +40 -0
  434. package/dist/lib/native-hardware/bluetooth-connection.d.ts +19 -0
  435. package/dist/lib/native-hardware/bluetooth-connection.d.ts.map +1 -0
  436. package/dist/lib/native-hardware/bluetooth-connection.js +88 -0
  437. package/dist/lib/native-hardware/bluetooth-gatt.d.ts +7 -0
  438. package/dist/lib/native-hardware/bluetooth-gatt.d.ts.map +1 -0
  439. package/dist/lib/native-hardware/bluetooth-gatt.js +77 -0
  440. package/dist/lib/native-hardware/bluetooth-internal.d.ts +10 -0
  441. package/dist/lib/native-hardware/bluetooth-internal.d.ts.map +1 -0
  442. package/dist/lib/native-hardware/bluetooth-internal.js +105 -0
  443. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts +33 -0
  444. package/dist/lib/native-hardware/bluetooth-native-fallback.d.ts.map +1 -0
  445. package/dist/lib/native-hardware/bluetooth-native-fallback.js +214 -0
  446. package/dist/lib/native-hardware/bluetooth-types.d.ts +85 -0
  447. package/dist/lib/native-hardware/bluetooth-types.d.ts.map +1 -0
  448. package/dist/lib/native-hardware/bluetooth-types.js +2 -0
  449. package/dist/lib/native-hardware/bluetooth.d.ts +7 -0
  450. package/dist/lib/native-hardware/bluetooth.d.ts.map +1 -0
  451. package/dist/lib/native-hardware/bluetooth.js +4 -0
  452. package/dist/lib/native-hardware/bridge.d.ts +23 -0
  453. package/dist/lib/native-hardware/bridge.d.ts.map +1 -0
  454. package/dist/lib/native-hardware/bridge.js +266 -0
  455. package/dist/lib/native-hardware/capabilities.d.ts +7 -0
  456. package/dist/lib/native-hardware/capabilities.d.ts.map +1 -0
  457. package/dist/lib/native-hardware/capabilities.js +95 -0
  458. package/dist/lib/native-hardware/clipboard.d.ts +11 -0
  459. package/dist/lib/native-hardware/clipboard.d.ts.map +1 -0
  460. package/dist/lib/native-hardware/clipboard.js +55 -0
  461. package/dist/lib/native-hardware/device-io-errors.d.ts +11 -0
  462. package/dist/lib/native-hardware/device-io-errors.d.ts.map +1 -0
  463. package/dist/lib/native-hardware/device-io-errors.js +82 -0
  464. package/dist/lib/native-hardware/displays.d.ts +38 -0
  465. package/dist/lib/native-hardware/displays.d.ts.map +1 -0
  466. package/dist/lib/native-hardware/displays.js +12 -0
  467. package/dist/lib/native-hardware/global-shortcuts.d.ts +86 -0
  468. package/dist/lib/native-hardware/global-shortcuts.d.ts.map +1 -0
  469. package/dist/lib/native-hardware/global-shortcuts.js +351 -0
  470. package/dist/lib/native-hardware/haptics.d.ts +25 -0
  471. package/dist/lib/native-hardware/haptics.d.ts.map +1 -0
  472. package/dist/lib/native-hardware/haptics.js +18 -0
  473. package/dist/lib/native-hardware/hid-native.d.ts +26 -0
  474. package/dist/lib/native-hardware/hid-native.d.ts.map +1 -0
  475. package/dist/lib/native-hardware/hid-native.js +229 -0
  476. package/dist/lib/native-hardware/hid.d.ts +52 -0
  477. package/dist/lib/native-hardware/hid.d.ts.map +1 -0
  478. package/dist/lib/native-hardware/hid.js +160 -0
  479. package/dist/lib/native-hardware/index.d.ts +38 -0
  480. package/dist/lib/native-hardware/index.d.ts.map +1 -0
  481. package/dist/lib/native-hardware/index.js +20 -0
  482. package/dist/lib/native-hardware/local-authentication.d.ts +32 -0
  483. package/dist/lib/native-hardware/local-authentication.d.ts.map +1 -0
  484. package/dist/lib/native-hardware/local-authentication.js +46 -0
  485. package/dist/lib/native-hardware/location.d.ts +49 -0
  486. package/dist/lib/native-hardware/location.d.ts.map +1 -0
  487. package/dist/lib/native-hardware/location.js +114 -0
  488. package/dist/lib/native-hardware/media-permissions.d.ts +28 -0
  489. package/dist/lib/native-hardware/media-permissions.d.ts.map +1 -0
  490. package/dist/lib/native-hardware/media-permissions.js +37 -0
  491. package/dist/lib/native-hardware/media.d.ts +17 -0
  492. package/dist/lib/native-hardware/media.d.ts.map +1 -0
  493. package/dist/lib/native-hardware/media.js +99 -0
  494. package/dist/lib/native-hardware/midi-access.d.ts +13 -0
  495. package/dist/lib/native-hardware/midi-access.d.ts.map +1 -0
  496. package/dist/lib/native-hardware/midi-access.js +66 -0
  497. package/dist/lib/native-hardware/midi-internal.d.ts +12 -0
  498. package/dist/lib/native-hardware/midi-internal.d.ts.map +1 -0
  499. package/dist/lib/native-hardware/midi-internal.js +88 -0
  500. package/dist/lib/native-hardware/midi-native-fallback.d.ts +27 -0
  501. package/dist/lib/native-hardware/midi-native-fallback.d.ts.map +1 -0
  502. package/dist/lib/native-hardware/midi-native-fallback.js +127 -0
  503. package/dist/lib/native-hardware/midi-ports.d.ts +6 -0
  504. package/dist/lib/native-hardware/midi-ports.d.ts.map +1 -0
  505. package/dist/lib/native-hardware/midi-ports.js +115 -0
  506. package/dist/lib/native-hardware/midi-types.d.ts +25 -0
  507. package/dist/lib/native-hardware/midi-types.d.ts.map +1 -0
  508. package/dist/lib/native-hardware/midi-types.js +1 -0
  509. package/dist/lib/native-hardware/midi.d.ts +6 -0
  510. package/dist/lib/native-hardware/midi.d.ts.map +1 -0
  511. package/dist/lib/native-hardware/midi.js +3 -0
  512. package/dist/lib/native-hardware/native-device-io.d.ts +28 -0
  513. package/dist/lib/native-hardware/native-device-io.d.ts.map +1 -0
  514. package/dist/lib/native-hardware/native-device-io.js +91 -0
  515. package/dist/lib/native-hardware/native-device-lifecycle.d.ts +13 -0
  516. package/dist/lib/native-hardware/native-device-lifecycle.d.ts.map +1 -0
  517. package/dist/lib/native-hardware/native-device-lifecycle.js +40 -0
  518. package/dist/lib/native-hardware/notifications.d.ts +38 -0
  519. package/dist/lib/native-hardware/notifications.d.ts.map +1 -0
  520. package/dist/lib/native-hardware/notifications.js +50 -0
  521. package/dist/lib/native-hardware/power-session.d.ts +113 -0
  522. package/dist/lib/native-hardware/power-session.d.ts.map +1 -0
  523. package/dist/lib/native-hardware/power-session.js +264 -0
  524. package/dist/lib/native-hardware/secure-storage.d.ts +36 -0
  525. package/dist/lib/native-hardware/secure-storage.d.ts.map +1 -0
  526. package/dist/lib/native-hardware/secure-storage.js +64 -0
  527. package/dist/lib/native-hardware/serial-native.d.ts +23 -0
  528. package/dist/lib/native-hardware/serial-native.d.ts.map +1 -0
  529. package/dist/lib/native-hardware/serial-native.js +181 -0
  530. package/dist/lib/native-hardware/serial.d.ts +76 -0
  531. package/dist/lib/native-hardware/serial.d.ts.map +1 -0
  532. package/dist/lib/native-hardware/serial.js +212 -0
  533. package/dist/lib/native-hardware/system-audio.d.ts +127 -0
  534. package/dist/lib/native-hardware/system-audio.d.ts.map +1 -0
  535. package/dist/lib/native-hardware/system-audio.js +330 -0
  536. package/dist/lib/native-hardware/types.d.ts +62 -0
  537. package/dist/lib/native-hardware/types.d.ts.map +1 -0
  538. package/dist/lib/native-hardware/types.js +27 -0
  539. package/dist/lib/native-hardware/usb-native.d.ts +39 -0
  540. package/dist/lib/native-hardware/usb-native.d.ts.map +1 -0
  541. package/dist/lib/native-hardware/usb-native.js +217 -0
  542. package/dist/lib/native-hardware/usb.d.ts +85 -0
  543. package/dist/lib/native-hardware/usb.d.ts.map +1 -0
  544. package/dist/lib/native-hardware/usb.js +222 -0
  545. package/docs/README.md +37 -0
  546. package/docs/accessibility.md +32 -0
  547. package/docs/app-anatomy.md +72 -0
  548. package/docs/component-catalog.md +59 -0
  549. package/docs/component-guide-template.md +37 -0
  550. package/docs/design-tokens.md +172 -0
  551. package/docs/foundations.md +56 -0
  552. package/docs/native-integration.md +33 -0
  553. package/docs/standalone-app-windows.md +128 -0
  554. package/package.json +9 -3
  555. package/src/components/ui/alert.md +55 -0
  556. package/src/components/ui/app-frame.md +33 -0
  557. package/src/components/ui/badge.md +57 -0
  558. package/src/components/ui/button.md +76 -0
  559. package/src/components/ui/color-well.md +11 -0
  560. package/src/components/ui/combobox.md +43 -0
  561. package/src/components/ui/date-field.md +32 -0
  562. package/src/components/ui/edge-fade.md +7 -0
  563. package/src/components/ui/empty.md +82 -0
  564. package/src/components/ui/field.md +77 -0
  565. package/src/components/ui/grid.md +105 -0
  566. package/src/components/ui/icon-button.md +36 -0
  567. package/src/components/ui/inspector.md +11 -0
  568. package/src/components/ui/item.md +87 -0
  569. package/src/components/ui/list.md +107 -0
  570. package/src/components/ui/notification-dot.md +7 -0
  571. package/src/components/ui/number-input.md +19 -0
  572. package/src/components/ui/panel.md +11 -0
  573. package/src/components/ui/resizable.md +66 -0
  574. package/src/components/ui/scroll-area.md +68 -0
  575. package/src/components/ui/search-field.md +33 -0
  576. package/src/components/ui/segmented-control.md +39 -0
  577. package/src/components/ui/sidebar.md +113 -0
  578. package/src/components/ui/sonner.md +37 -0
  579. package/src/components/ui/split-view.md +15 -0
  580. package/src/components/ui/status.md +12 -0
  581. package/src/components/ui/table.md +35 -0
  582. package/src/components/ui/tabs.md +66 -0
  583. package/src/components/ui/text.md +17 -0
  584. package/src/components/ui/toggle-group.md +80 -0
  585. package/src/components/ui/toggle.md +73 -0
  586. package/src/components/ui/toolbar.md +21 -0
  587. package/src/styles/index.css +868 -3
@@ -0,0 +1,49 @@
1
+ export declare const MOLDABLE_LOCATION_MIN_TIMEOUT_MS = 1;
2
+ export declare const MOLDABLE_LOCATION_MAX_TIMEOUT_MS = 60000;
3
+ export declare const MOLDABLE_LOCATION_MAX_CACHE_AGE_MS = 86400000;
4
+ /**
5
+ * Options accepted by the native one-shot location bridge.
6
+ *
7
+ * Unlike the browser's unrestricted `PositionOptions`, the native bridge
8
+ * requires integer millisecond values, a 1-60,000 ms timeout, and a
9
+ * 0-86,400,000 ms maximum cache age.
10
+ */
11
+ export interface MoldableLocationOptions {
12
+ enableHighAccuracy?: boolean;
13
+ timeout?: number;
14
+ maximumAge?: number;
15
+ }
16
+ export type MoldableLocationAuthorization = 'granted' | 'denied' | 'restricted' | 'not-determined' | 'unknown' | 'unsupported';
17
+ export interface MoldableLocationAuthorizationState {
18
+ authorization: MoldableLocationAuthorization;
19
+ servicesEnabled: boolean;
20
+ canRequest: boolean;
21
+ settingsRequired: boolean;
22
+ detail?: string;
23
+ }
24
+ export interface MoldableLocationCoordinates {
25
+ latitude: number;
26
+ longitude: number;
27
+ accuracy: number;
28
+ altitude: number | null;
29
+ altitudeAccuracy: number | null;
30
+ heading: number | null;
31
+ speed: number | null;
32
+ }
33
+ export interface MoldableLocationResult {
34
+ coords: MoldableLocationCoordinates;
35
+ timestamp: number;
36
+ }
37
+ export declare const NATIVE_LOCATION_REQUEST_TYPE: "moldable:native-location-request";
38
+ export declare const NATIVE_LOCATION_RESULT_TYPE: "moldable:native-location-result";
39
+ /** Reads macOS location authorization without requesting a position or prompting. */
40
+ export declare function getMoldableLocationAuthorizationStatus(): Promise<MoldableLocationAuthorizationState>;
41
+ /**
42
+ * Gets one browser-shaped location fix.
43
+ *
44
+ * Packaged macOS apps use Moldable's native Core Location bridge. Other
45
+ * runtimes fall back to navigator.geolocation only when the host explicitly
46
+ * reports that native location is unsupported.
47
+ */
48
+ export declare function getMoldableCurrentPosition(options?: MoldableLocationOptions): Promise<MoldableLocationResult>;
49
+ //# sourceMappingURL=location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../src/lib/native-capabilities/location.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gCAAgC,IAAI,CAAA;AACjD,eAAO,MAAM,gCAAgC,QAAS,CAAA;AACtD,eAAO,MAAM,kCAAkC,WAAa,CAAA;AAE5D;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,SAAS,GACT,aAAa,CAAA;AAEjB,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,6BAA6B,CAAA;IAC5C,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,2BAA2B,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,4BAA4B,EACvC,kCAA2C,CAAA;AAC7C,eAAO,MAAM,2BAA2B,EACtC,iCAA0C,CAAA;AAE5C,qFAAqF;AACrF,wBAAgB,sCAAsC,IAAI,OAAO,CAAC,kCAAkC,CAAC,CAQpG;AAoGD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAqBjC"}
@@ -0,0 +1,114 @@
1
+ import { NativeCapabilityBridgeError, callNativeCapabilityBridge, toNativeCapabilityBridgeError, } from './bridge';
2
+ export const MOLDABLE_LOCATION_MIN_TIMEOUT_MS = 1;
3
+ export const MOLDABLE_LOCATION_MAX_TIMEOUT_MS = 60_000;
4
+ export const MOLDABLE_LOCATION_MAX_CACHE_AGE_MS = 86_400_000;
5
+ export const NATIVE_LOCATION_REQUEST_TYPE = 'moldable:native-location-request';
6
+ export const NATIVE_LOCATION_RESULT_TYPE = 'moldable:native-location-result';
7
+ /** Reads macOS location authorization without requesting a position or prompting. */
8
+ export function getMoldableLocationAuthorizationStatus() {
9
+ return callNativeCapabilityBridge({
10
+ type: NATIVE_LOCATION_REQUEST_TYPE,
11
+ action: 'getStatus',
12
+ }, NATIVE_LOCATION_RESULT_TYPE);
13
+ }
14
+ function locationError(error) {
15
+ if (error instanceof NativeCapabilityBridgeError)
16
+ return error;
17
+ let code = 'host_error';
18
+ let retryable = false;
19
+ let cause;
20
+ if (isGeolocationError(error)) {
21
+ cause = error.code;
22
+ if (error.code === 1)
23
+ code = 'permission_denied';
24
+ else if (error.code === 2) {
25
+ code = 'unavailable';
26
+ retryable = true;
27
+ }
28
+ else if (error.code === 3) {
29
+ code = 'timeout';
30
+ retryable = true;
31
+ }
32
+ }
33
+ else if (error instanceof DOMException) {
34
+ cause = error.name;
35
+ if (error.name === 'NotSupportedError')
36
+ code = 'unsupported';
37
+ else if (error.name === 'NotAllowedError' ||
38
+ error.name === 'SecurityError') {
39
+ code = 'permission_denied';
40
+ }
41
+ }
42
+ const fallbackMessage = 'Unable to get current location';
43
+ return toNativeCapabilityBridgeError({
44
+ code,
45
+ message: error instanceof Error || isGeolocationError(error)
46
+ ? error.message || fallbackMessage
47
+ : fallbackMessage,
48
+ details: {
49
+ capability: 'location',
50
+ ...(cause !== undefined ? { cause } : {}),
51
+ },
52
+ retryable,
53
+ }, fallbackMessage);
54
+ }
55
+ function isGeolocationError(error) {
56
+ return (typeof error === 'object' &&
57
+ error !== null &&
58
+ 'code' in error &&
59
+ typeof error.code === 'number' &&
60
+ 'message' in error &&
61
+ typeof error.message === 'string');
62
+ }
63
+ function getBrowserCurrentPosition(options = {}) {
64
+ if (typeof navigator === 'undefined' ||
65
+ !navigator.geolocation ||
66
+ typeof navigator.geolocation.getCurrentPosition !== 'function') {
67
+ return Promise.reject(locationError(new DOMException('Geolocation API unavailable', 'NotSupportedError')));
68
+ }
69
+ return new Promise((resolve, reject) => {
70
+ navigator.geolocation.getCurrentPosition((position) => {
71
+ resolve({
72
+ coords: {
73
+ latitude: position.coords.latitude,
74
+ longitude: position.coords.longitude,
75
+ accuracy: position.coords.accuracy,
76
+ altitude: position.coords.altitude,
77
+ altitudeAccuracy: position.coords.altitudeAccuracy,
78
+ heading: position.coords.heading,
79
+ speed: position.coords.speed,
80
+ },
81
+ timestamp: position.timestamp,
82
+ });
83
+ }, (error) => reject(locationError(error)), options);
84
+ });
85
+ }
86
+ function isEmbeddedInMoldable() {
87
+ return typeof window !== 'undefined' && window.parent !== window;
88
+ }
89
+ /**
90
+ * Gets one browser-shaped location fix.
91
+ *
92
+ * Packaged macOS apps use Moldable's native Core Location bridge. Other
93
+ * runtimes fall back to navigator.geolocation only when the host explicitly
94
+ * reports that native location is unsupported.
95
+ */
96
+ export async function getMoldableCurrentPosition(options = {}) {
97
+ if (!isEmbeddedInMoldable())
98
+ return getBrowserCurrentPosition(options);
99
+ try {
100
+ const nativeTimeout = options.timeout ?? 10_000;
101
+ return await callNativeCapabilityBridge({
102
+ type: NATIVE_LOCATION_REQUEST_TYPE,
103
+ action: 'getCurrentPosition',
104
+ options,
105
+ }, NATIVE_LOCATION_RESULT_TYPE, { timeoutMs: Math.max(nativeTimeout + 2_000, 12_000) });
106
+ }
107
+ catch (error) {
108
+ const mapped = locationError(error);
109
+ if (mapped.code === 'unsupported' || mapped.code === 'not_in_moldable') {
110
+ return getBrowserCurrentPosition(options);
111
+ }
112
+ throw mapped;
113
+ }
114
+ }
@@ -0,0 +1,28 @@
1
+ import { type NativeCapabilityBridgeOptions } from './bridge';
2
+ export declare const NATIVE_MEDIA_PERMISSION_REQUEST_TIMEOUT_MS = 125000;
3
+ export type MoldableMediaPermission = 'camera' | 'microphone' | 'screen-recording';
4
+ export type MoldableMediaPermissionStatus = 'granted' | 'denied' | 'restricted' | 'not-determined' | 'unknown' | 'unsupported';
5
+ export interface MoldableMediaPermissionState {
6
+ permission: MoldableMediaPermission;
7
+ status: MoldableMediaPermissionStatus;
8
+ canRequest: boolean;
9
+ settingsRequired: boolean;
10
+ detail?: string;
11
+ }
12
+ export interface MoldableMediaPermissionDiagnostics {
13
+ platform: string;
14
+ capturedAtMs: number;
15
+ /** Capture source choice remains owned by the OS/webview picker. */
16
+ captureSourceBoundary: 'system-picker';
17
+ permissions: MoldableMediaPermissionState[];
18
+ }
19
+ /** Reads native OS authorization without opening hardware or showing a prompt. */
20
+ export declare function getMoldableMediaPermissionStatus(permission: MoldableMediaPermission, options?: NativeCapabilityBridgeOptions): Promise<MoldableMediaPermissionState>;
21
+ /**
22
+ * Requests OS permission from a direct user action. This never selects or
23
+ * enumerates a display source; display capture still uses the system picker.
24
+ */
25
+ export declare function requestMoldableMediaPermission(permission: MoldableMediaPermission, options?: NativeCapabilityBridgeOptions): Promise<MoldableMediaPermissionState>;
26
+ /** Returns a current, non-capturing diagnostic snapshot for all media permissions. */
27
+ export declare function getMoldableMediaPermissionDiagnostics(options?: NativeCapabilityBridgeOptions): Promise<MoldableMediaPermissionDiagnostics>;
28
+ //# sourceMappingURL=media-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-permissions.d.ts","sourceRoot":"","sources":["../../../src/lib/native-capabilities/media-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAEnC,MAAM,UAAU,CAAA;AAOjB,eAAO,MAAM,0CAA0C,SAAU,CAAA;AAEjE,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,YAAY,GACZ,kBAAkB,CAAA;AACtB,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,SAAS,GACT,aAAa,CAAA;AAEjB,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,uBAAuB,CAAA;IACnC,MAAM,EAAE,6BAA6B,CAAA;IACrC,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,qBAAqB,EAAE,eAAe,CAAA;IACtC,WAAW,EAAE,4BAA4B,EAAE,CAAA;CAC5C;AAQD,kFAAkF;AAClF,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,uBAAuB,EACnC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,4BAA4B,CAAC,CAUvC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,uBAAuB,EACnC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,4BAA4B,CAAC,CAevC;AAED,sFAAsF;AACtF,wBAAgB,qCAAqC,CACnD,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,kCAAkC,CAAC,CAS7C"}
@@ -0,0 +1,37 @@
1
+ import { callNativeCapabilityBridge, } from './bridge';
2
+ const NATIVE_MEDIA_PERMISSION_REQUEST_TYPE = 'moldable:native-media-permission';
3
+ const NATIVE_MEDIA_PERMISSION_RESULT_TYPE = 'moldable:native-media-permission-result';
4
+ export const NATIVE_MEDIA_PERMISSION_REQUEST_TIMEOUT_MS = 125_000;
5
+ function capabilityFor(permission) {
6
+ return permission === 'screen-recording' ? 'screen-capture' : permission;
7
+ }
8
+ /** Reads native OS authorization without opening hardware or showing a prompt. */
9
+ export function getMoldableMediaPermissionStatus(permission, options = {}) {
10
+ return callNativeCapabilityBridge({
11
+ type: NATIVE_MEDIA_PERMISSION_REQUEST_TYPE,
12
+ action: 'getStatus',
13
+ permission,
14
+ }, NATIVE_MEDIA_PERMISSION_RESULT_TYPE, options);
15
+ }
16
+ /**
17
+ * Requests OS permission from a direct user action. This never selects or
18
+ * enumerates a display source; display capture still uses the system picker.
19
+ */
20
+ export function requestMoldableMediaPermission(permission, options = {}) {
21
+ return callNativeCapabilityBridge({
22
+ type: NATIVE_MEDIA_PERMISSION_REQUEST_TYPE,
23
+ action: 'request',
24
+ permission,
25
+ capability: capabilityFor(permission),
26
+ }, NATIVE_MEDIA_PERMISSION_RESULT_TYPE, {
27
+ ...options,
28
+ timeoutMs: options.timeoutMs ?? NATIVE_MEDIA_PERMISSION_REQUEST_TIMEOUT_MS,
29
+ });
30
+ }
31
+ /** Returns a current, non-capturing diagnostic snapshot for all media permissions. */
32
+ export function getMoldableMediaPermissionDiagnostics(options = {}) {
33
+ return callNativeCapabilityBridge({
34
+ type: NATIVE_MEDIA_PERMISSION_REQUEST_TYPE,
35
+ action: 'getDiagnostics',
36
+ }, NATIVE_MEDIA_PERMISSION_RESULT_TYPE, options);
37
+ }
@@ -0,0 +1,17 @@
1
+ import type { NativeCapabilityId } from './types';
2
+ type MediaCapability = Extract<NativeCapabilityId, 'camera' | 'microphone' | 'screen-capture'>;
3
+ /**
4
+ * Enumerates browser-visible audio and video input/output devices.
5
+ * Pass the capability that initiated the enumeration for accurate error details.
6
+ */
7
+ export declare function enumerateMoldableMediaDevices(capability?: Extract<MediaCapability, 'camera' | 'microphone'>): Promise<MediaDeviceInfo[]>;
8
+ /** Requests a video-only camera stream using the standard MediaDevices API. */
9
+ export declare function getMoldableCameraStream(constraints?: boolean | MediaTrackConstraints): Promise<MediaStream>;
10
+ /** Requests an audio-only microphone stream using the standard MediaDevices API. */
11
+ export declare function getMoldableMicrophoneStream(constraints?: boolean | MediaTrackConstraints): Promise<MediaStream>;
12
+ /** Requests a screen/window stream using the standard display-media picker. */
13
+ export declare function getMoldableDisplayStream(options?: DisplayMediaStreamOptions): Promise<MediaStream>;
14
+ /** Stops every audio and video track owned by a stream. Safe to call repeatedly. */
15
+ export declare function stopMoldableMediaStream(stream: MediaStream): void;
16
+ export {};
17
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/lib/native-capabilities/media.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAA6B,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE5E,KAAK,eAAe,GAAG,OAAO,CAC5B,kBAAkB,EAClB,QAAQ,GAAG,YAAY,GAAG,gBAAgB,CAC3C,CAAA;AAmED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,GAAE,OAAO,CAAC,eAAe,EAAE,QAAQ,GAAG,YAAY,CAAY,GACvE,OAAO,CAAC,eAAe,EAAE,CAAC,CAU5B;AAED,+EAA+E;AAC/E,wBAAsB,uBAAuB,CAC3C,WAAW,GAAE,OAAO,GAAG,qBAA4B,GAClD,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,oFAAoF;AACpF,wBAAsB,2BAA2B,CAC/C,WAAW,GAAE,OAAO,GAAG,qBAA4B,GAClD,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,+EAA+E;AAC/E,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,yBAAyD,GACjE,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAEjE"}
@@ -0,0 +1,104 @@
1
+ import { assertMoldableNativeCapabilityAccess, requireMoldableNativeCapabilityAccess, } from './access';
2
+ import { NativeCapabilityBridgeError, toNativeCapabilityBridgeError, } from './bridge';
3
+ function mediaDevicesFor(capability, method) {
4
+ if (typeof navigator === 'undefined' ||
5
+ !navigator.mediaDevices ||
6
+ typeof navigator.mediaDevices[method] !== 'function') {
7
+ throw mediaError(capability, new DOMException('Media API unavailable', 'NotSupportedError'));
8
+ }
9
+ return navigator.mediaDevices;
10
+ }
11
+ function mediaError(capability, error) {
12
+ if (error instanceof NativeCapabilityBridgeError)
13
+ return error;
14
+ const name = error instanceof DOMException ? error.name : undefined;
15
+ let code = 'host_error';
16
+ let retryable = false;
17
+ if (name === 'NotSupportedError')
18
+ code = 'unsupported';
19
+ else if (name === 'NotAllowedError' || name === 'SecurityError') {
20
+ code = 'permission_denied';
21
+ }
22
+ else if (name === 'AbortError') {
23
+ code = 'aborted';
24
+ retryable = true;
25
+ }
26
+ else if (name === 'NotFoundError' ||
27
+ name === 'DevicesNotFoundError' ||
28
+ name === 'NotReadableError' ||
29
+ name === 'TrackStartError') {
30
+ code = 'unavailable';
31
+ retryable = true;
32
+ }
33
+ else if (name === 'OverconstrainedError' ||
34
+ name === 'ConstraintNotSatisfiedError' ||
35
+ error instanceof TypeError) {
36
+ code = 'invalid_request';
37
+ }
38
+ const fallbackMessage = `Unable to access ${capability}`;
39
+ return toNativeCapabilityBridgeError({
40
+ code,
41
+ message: error instanceof Error
42
+ ? error.message || fallbackMessage
43
+ : fallbackMessage,
44
+ details: { capability, ...(name ? { cause: name } : {}) },
45
+ retryable,
46
+ }, fallbackMessage);
47
+ }
48
+ /**
49
+ * Enumerates browser-visible audio and video input/output devices.
50
+ * Pass the capability that initiated the enumeration for accurate error details.
51
+ */
52
+ export async function enumerateMoldableMediaDevices(capability = 'camera') {
53
+ try {
54
+ await assertMoldableNativeCapabilityAccess(capability);
55
+ return await mediaDevicesFor(capability, 'enumerateDevices').enumerateDevices();
56
+ }
57
+ catch (error) {
58
+ throw mediaError(capability, error);
59
+ }
60
+ }
61
+ /** Requests a video-only camera stream using the standard MediaDevices API. */
62
+ export async function getMoldableCameraStream(constraints = true) {
63
+ const capability = 'camera';
64
+ try {
65
+ await requireMoldableNativeCapabilityAccess(capability);
66
+ return await mediaDevicesFor(capability, 'getUserMedia').getUserMedia({
67
+ audio: false,
68
+ video: constraints,
69
+ });
70
+ }
71
+ catch (error) {
72
+ throw mediaError(capability, error);
73
+ }
74
+ }
75
+ /** Requests an audio-only microphone stream using the standard MediaDevices API. */
76
+ export async function getMoldableMicrophoneStream(constraints = true) {
77
+ const capability = 'microphone';
78
+ try {
79
+ await requireMoldableNativeCapabilityAccess(capability);
80
+ return await mediaDevicesFor(capability, 'getUserMedia').getUserMedia({
81
+ audio: constraints,
82
+ video: false,
83
+ });
84
+ }
85
+ catch (error) {
86
+ throw mediaError(capability, error);
87
+ }
88
+ }
89
+ /** Requests a screen/window stream using the standard display-media picker. */
90
+ export async function getMoldableDisplayStream(options = { video: true, audio: false }) {
91
+ const capability = 'screen-capture';
92
+ try {
93
+ await requireMoldableNativeCapabilityAccess(capability);
94
+ return await mediaDevicesFor(capability, 'getDisplayMedia').getDisplayMedia(options);
95
+ }
96
+ catch (error) {
97
+ throw mediaError(capability, error);
98
+ }
99
+ }
100
+ /** Stops every audio and video track owned by a stream. Safe to call repeatedly. */
101
+ export function stopMoldableMediaStream(stream) {
102
+ for (const track of stream.getTracks())
103
+ track.stop();
104
+ }
@@ -0,0 +1,13 @@
1
+ import type { MoldableMIDIAccessOptions, MoldableMIDIConnectionOptions } from './midi-types';
2
+ /** Checks only whether this runtime exposes Web MIDI; it does not request permission. */
3
+ export declare function isMoldableMIDISupported(): boolean;
4
+ /**
5
+ * Requests Web MIDI access. Invoke this directly from a trusted user action.
6
+ * SysEx access is disabled unless `sysex: true` is explicitly supplied.
7
+ */
8
+ export declare function requestMoldableMIDIAccess(options?: MoldableMIDIAccessOptions): Promise<MIDIAccess>;
9
+ export declare function getMoldableMIDIInputs(access: MIDIAccess): MIDIInput[];
10
+ export declare function getMoldableMIDIOutputs(access: MIDIAccess): MIDIOutput[];
11
+ /** Subscribes to device connection changes and returns an idempotent cleanup. */
12
+ export declare function observeMoldableMIDIState(access: MIDIAccess, listener: (event: MIDIConnectionEvent) => void, options?: MoldableMIDIConnectionOptions): () => void;
13
+ //# sourceMappingURL=midi-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midi-access.d.ts","sourceRoot":"","sources":["../../../src/lib/native-capabilities/midi-access.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,cAAc,CAAA;AAiBrB,yFAAyF;AACzF,wBAAgB,uBAAuB,IAAI,OAAO,CAKjD;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,UAAU,CAAC,CAuBrB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,CAIrE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,CAIvE;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,EAC9C,OAAO,GAAE,6BAAkC,GAC1C,MAAM,IAAI,CAaZ"}
@@ -0,0 +1,68 @@
1
+ import { requireMoldableNativeCapabilityAccess } from './access';
2
+ import { toNativeCapabilityBridgeError } from './bridge';
3
+ import { abortableMIDI, midiError } from './midi-internal';
4
+ function assertUserGesture() {
5
+ if (typeof navigator === 'undefined')
6
+ return;
7
+ const activation = navigator.userActivation;
8
+ if (activation && !activation.isActive) {
9
+ throw toNativeCapabilityBridgeError({
10
+ code: 'invalid_request',
11
+ message: 'MIDI access must be requested from a user-initiated action.',
12
+ details: { capability: 'midi', cause: 'user_gesture_required' },
13
+ retryable: true,
14
+ });
15
+ }
16
+ }
17
+ /** Checks only whether this runtime exposes Web MIDI; it does not request permission. */
18
+ export function isMoldableMIDISupported() {
19
+ return (typeof navigator !== 'undefined' &&
20
+ typeof navigator.requestMIDIAccess === 'function');
21
+ }
22
+ /**
23
+ * Requests Web MIDI access. Invoke this directly from a trusted user action.
24
+ * SysEx access is disabled unless `sysex: true` is explicitly supplied.
25
+ */
26
+ export async function requestMoldableMIDIAccess(options = {}) {
27
+ const operation = 'request MIDI access';
28
+ if (!isMoldableMIDISupported()) {
29
+ throw midiError(new DOMException('Web MIDI is unavailable', 'NotSupportedError'), operation);
30
+ }
31
+ assertUserGesture();
32
+ try {
33
+ await requireMoldableNativeCapabilityAccess('midi', options);
34
+ return await abortableMIDI(navigator.requestMIDIAccess({
35
+ software: options.software,
36
+ sysex: options.sysex === true,
37
+ }), options.signal, operation);
38
+ }
39
+ catch (error) {
40
+ throw midiError(error, operation);
41
+ }
42
+ }
43
+ export function getMoldableMIDIInputs(access) {
44
+ const inputs = [];
45
+ access.inputs.forEach((input) => inputs.push(input));
46
+ return inputs;
47
+ }
48
+ export function getMoldableMIDIOutputs(access) {
49
+ const outputs = [];
50
+ access.outputs.forEach((output) => outputs.push(output));
51
+ return outputs;
52
+ }
53
+ /** Subscribes to device connection changes and returns an idempotent cleanup. */
54
+ export function observeMoldableMIDIState(access, listener, options = {}) {
55
+ if (options.signal?.aborted)
56
+ return () => undefined;
57
+ let active = true;
58
+ const cleanup = () => {
59
+ if (!active)
60
+ return;
61
+ active = false;
62
+ access.removeEventListener('statechange', listener);
63
+ options.signal?.removeEventListener('abort', cleanup);
64
+ };
65
+ access.addEventListener('statechange', listener);
66
+ options.signal?.addEventListener('abort', cleanup, { once: true });
67
+ return cleanup;
68
+ }
@@ -0,0 +1,12 @@
1
+ import { NativeCapabilityBridgeError } from './bridge';
2
+ export type ClearableMIDIOutput = MIDIOutput & {
3
+ clear?: () => void;
4
+ };
5
+ export declare function midiError(error: unknown, operation: string): NativeCapabilityBridgeError;
6
+ export declare function midiAborted(operation: string): NativeCapabilityBridgeError;
7
+ export declare function abortableMIDI<T>(promise: Promise<T>, signal: AbortSignal | undefined, operation: string, onLateResolution?: (value: T) => void): Promise<T>;
8
+ export declare function findMIDIPort<TPort extends MIDIPort>(ports: {
9
+ forEach(callback: (port: TPort) => void): void;
10
+ }, id: string): TPort | undefined;
11
+ export declare function missingMIDIPort(type: 'input' | 'output', id: string): never;
12
+ //# sourceMappingURL=midi-internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midi-internal.d.ts","sourceRoot":"","sources":["../../../src/lib/native-capabilities/midi-internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE5B,MAAM,UAAU,CAAA;AAGjB,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAErE,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,GAChB,2BAA2B,CAoC7B;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B,CAK1E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GACpC,OAAO,CAAC,CAAC,CAAC,CA+BZ;AAED,wBAAgB,YAAY,CAAC,KAAK,SAAS,QAAQ,EACjD,KAAK,EAAE;IAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CAAE,EACzD,EAAE,EAAE,MAAM,GACT,KAAK,GAAG,SAAS,CAMnB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAO3E"}
@@ -0,0 +1,88 @@
1
+ import { NativeCapabilityBridgeError, toNativeCapabilityBridgeError, } from './bridge';
2
+ export function midiError(error, operation) {
3
+ if (error instanceof NativeCapabilityBridgeError)
4
+ return error;
5
+ const name = error instanceof DOMException ? error.name : undefined;
6
+ let code = 'host_error';
7
+ let retryable = false;
8
+ if (name === 'NotSupportedError')
9
+ code = 'unsupported';
10
+ else if (name === 'NotAllowedError' || name === 'SecurityError') {
11
+ code = 'permission_denied';
12
+ }
13
+ else if (name === 'AbortError')
14
+ code = 'aborted';
15
+ else if (name === 'NotFoundError') {
16
+ code = 'unavailable';
17
+ retryable = true;
18
+ }
19
+ else if (name === 'InvalidAccessError' || name === 'InvalidStateError') {
20
+ code = 'unavailable';
21
+ retryable = true;
22
+ }
23
+ else if (error instanceof TypeError)
24
+ code = 'invalid_request';
25
+ const fallbackMessage = `Unable to ${operation}`;
26
+ return toNativeCapabilityBridgeError({
27
+ code,
28
+ message: error instanceof Error
29
+ ? error.message || fallbackMessage
30
+ : fallbackMessage,
31
+ details: {
32
+ capability: 'midi',
33
+ operation,
34
+ ...(name ? { cause: name } : {}),
35
+ },
36
+ retryable,
37
+ }, fallbackMessage);
38
+ }
39
+ export function midiAborted(operation) {
40
+ return midiError(new DOMException(`MIDI ${operation} was aborted`, 'AbortError'), operation);
41
+ }
42
+ export function abortableMIDI(promise, signal, operation, onLateResolution) {
43
+ if (!signal)
44
+ return promise;
45
+ if (signal.aborted)
46
+ return Promise.reject(midiAborted(operation));
47
+ return new Promise((resolve, reject) => {
48
+ let settled = false;
49
+ const onAbort = () => {
50
+ if (settled)
51
+ return;
52
+ settled = true;
53
+ reject(midiAborted(operation));
54
+ };
55
+ signal.addEventListener('abort', onAbort, { once: true });
56
+ void promise.then((value) => {
57
+ signal.removeEventListener('abort', onAbort);
58
+ if (settled) {
59
+ onLateResolution?.(value);
60
+ return;
61
+ }
62
+ settled = true;
63
+ resolve(value);
64
+ }, (error) => {
65
+ signal.removeEventListener('abort', onAbort);
66
+ if (settled)
67
+ return;
68
+ settled = true;
69
+ reject(error);
70
+ });
71
+ });
72
+ }
73
+ export function findMIDIPort(ports, id) {
74
+ let result;
75
+ ports.forEach((port) => {
76
+ if (port.id === id)
77
+ result = port;
78
+ });
79
+ return result;
80
+ }
81
+ export function missingMIDIPort(type, id) {
82
+ throw toNativeCapabilityBridgeError({
83
+ code: 'unavailable',
84
+ message: `MIDI ${type} ${id} is unavailable.`,
85
+ details: { capability: 'midi', portType: type, portId: id },
86
+ retryable: true,
87
+ });
88
+ }
@@ -0,0 +1,27 @@
1
+ import type { MoldableMIDIAccessOptions } from './midi-types';
2
+ export type MoldableMIDITransport = {
3
+ kind: 'web-midi';
4
+ access: MIDIAccess;
5
+ } | {
6
+ kind: 'desktop-bridge';
7
+ access: MoldableNativeMIDIAccess;
8
+ };
9
+ export interface MoldableNativeMIDIPort {
10
+ readonly id: string;
11
+ readonly kind: 'input' | 'output';
12
+ readonly name: string;
13
+ readonly closed: boolean;
14
+ /** Native fallback sends immediately; Web MIDI retains scheduled sends. */
15
+ send(data: Iterable<number>): Promise<void>;
16
+ observeMessages(listener: (data: Uint8Array, timestamp: number) => void): () => void;
17
+ close(): Promise<void>;
18
+ }
19
+ export interface MoldableNativeMIDIAccess {
20
+ requestPort(kind: 'input' | 'output'): Promise<MoldableNativeMIDIPort>;
21
+ }
22
+ /**
23
+ * Uses Web MIDI when the webview implements it; otherwise returns the scoped
24
+ * desktop fallback. Native port selection always opens the host-owned chooser.
25
+ */
26
+ export declare function requestMoldableMIDIWithFallback(options?: MoldableMIDIAccessOptions): Promise<MoldableMIDITransport>;
27
+ //# sourceMappingURL=midi-native-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midi-native-fallback.d.ts","sourceRoot":"","sources":["../../../src/lib/native-capabilities/midi-native-fallback.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAO7D,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,CAAA;AAEhE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,2EAA2E;IAC3E,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,eAAe,CACb,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GACtD,MAAM,IAAI,CAAA;IACb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACvE;AA+HD;;;GAGG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAwChC"}