@dxos/app-framework 0.8.4-main.ef1bc66f44 → 0.8.4-main.effb148878

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 (436) hide show
  1. package/.storybook/main.mts +1 -3
  2. package/LICENSE +102 -5
  3. package/README.md +1 -1
  4. package/dist/lib/browser/{capability-DU35RXMD.mjs → capability-C4WE22TJ.mjs} +12 -11
  5. package/dist/lib/browser/capability-C4WE22TJ.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-2ZIYRDAF.mjs +95 -0
  7. package/dist/lib/browser/chunk-2ZIYRDAF.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-5GY3YOEL.mjs +28 -0
  9. package/dist/lib/browser/chunk-5GY3YOEL.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-66IXTIVK.mjs} +3 -2
  11. package/dist/lib/browser/chunk-66IXTIVK.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-67GCXX5I.mjs +581 -0
  13. package/dist/lib/browser/chunk-67GCXX5I.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-FJ4765WW.mjs +8 -0
  15. package/dist/lib/browser/{chunk-FHQTHCX7.mjs.map → chunk-FJ4765WW.mjs.map} +3 -3
  16. package/dist/lib/browser/chunk-FO3IYSLV.mjs +68 -0
  17. package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-ZQO3UZ4R.mjs → chunk-IW44C7UL.mjs} +10 -4
  19. package/dist/lib/browser/chunk-IW44C7UL.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-KLHQNYJ2.mjs +422 -0
  21. package/dist/lib/browser/chunk-KLHQNYJ2.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-EIFGKQSA.mjs → chunk-LPWOVOOB.mjs} +14 -42
  23. package/dist/lib/browser/chunk-LPWOVOOB.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-4DQMLMGU.mjs → chunk-LUQOVTWB.mjs} +13 -14
  25. package/dist/lib/browser/chunk-LUQOVTWB.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-KWP6PKIU.mjs → chunk-SLX73WRZ.mjs} +92 -19
  27. package/dist/lib/browser/chunk-SLX73WRZ.mjs.map +7 -0
  28. package/dist/lib/browser/chunk-SZMB3K2N.mjs +517 -0
  29. package/dist/lib/browser/chunk-SZMB3K2N.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-VJ5PFAWC.mjs +1446 -0
  31. package/dist/lib/browser/chunk-VJ5PFAWC.mjs.map +7 -0
  32. package/dist/lib/browser/cli/index.mjs +17 -32
  33. package/dist/lib/browser/cli/index.mjs.map +3 -3
  34. package/dist/lib/browser/common/activation-events.mjs +11 -14
  35. package/dist/lib/browser/common/capabilities.mjs +19 -8
  36. package/dist/lib/browser/core/activation-event.mjs +1 -1
  37. package/dist/lib/browser/core/capability.mjs +5 -1
  38. package/dist/lib/browser/core/plugin-manager.mjs +8 -4
  39. package/dist/lib/browser/core/plugin.mjs +16 -4
  40. package/dist/lib/browser/core/url-loader.mjs +24 -0
  41. package/dist/lib/browser/index.mjs +47 -49
  42. package/dist/lib/browser/index.mjs.map +4 -4
  43. package/dist/lib/browser/meta.json +1 -1
  44. package/dist/lib/browser/process-manager-capability-3Q4TA73T.mjs +89 -0
  45. package/dist/lib/browser/process-manager-capability-3Q4TA73T.mjs.map +7 -0
  46. package/dist/lib/browser/testing/index.mjs +199 -52
  47. package/dist/lib/browser/testing/index.mjs.map +4 -4
  48. package/dist/lib/browser/testing/react.mjs +78 -0
  49. package/dist/lib/browser/testing/react.mjs.map +7 -0
  50. package/dist/lib/browser/ui/index.mjs +25 -20
  51. package/dist/lib/node-esm/{capability-SR2EIZFP.mjs → capability-GPN6OS6M.mjs} +12 -11
  52. package/dist/lib/node-esm/capability-GPN6OS6M.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs → chunk-37Z53PXZ.mjs} +2 -2
  54. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs.map → chunk-37Z53PXZ.mjs.map} +3 -3
  55. package/dist/lib/node-esm/chunk-42UNAKYO.mjs +423 -0
  56. package/dist/lib/node-esm/chunk-42UNAKYO.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-DZ2XLAGI.mjs → chunk-6S45OMUP.mjs} +92 -19
  58. package/dist/lib/node-esm/chunk-6S45OMUP.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-64IMLAS2.mjs → chunk-CTKEZHKF.mjs} +10 -4
  60. package/dist/lib/node-esm/chunk-CTKEZHKF.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-DHSHRYIB.mjs → chunk-FEVJEUD7.mjs} +14 -42
  62. package/dist/lib/node-esm/chunk-FEVJEUD7.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-GBHZF46K.mjs +518 -0
  64. package/dist/lib/node-esm/chunk-GBHZF46K.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-GUE5V5CG.mjs +582 -0
  66. package/dist/lib/node-esm/chunk-GUE5V5CG.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs +29 -0
  68. package/dist/lib/node-esm/chunk-KFZEB6BV.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-J2PHTRHC.mjs → chunk-MXWDXYV2.mjs} +13 -14
  70. package/dist/lib/node-esm/chunk-MXWDXYV2.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-QBUGLR4H.mjs +96 -0
  72. package/dist/lib/node-esm/chunk-QBUGLR4H.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-SFYCO3PT.mjs +1447 -0
  74. package/dist/lib/node-esm/chunk-SFYCO3PT.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
  76. package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-XOCUANHO.mjs} +3 -2
  78. package/dist/lib/node-esm/chunk-XOCUANHO.mjs.map +7 -0
  79. package/dist/lib/node-esm/cli/index.mjs +17 -32
  80. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/common/activation-events.mjs +11 -14
  82. package/dist/lib/node-esm/common/capabilities.mjs +19 -8
  83. package/dist/lib/node-esm/core/activation-event.mjs +1 -1
  84. package/dist/lib/node-esm/core/capability.mjs +5 -1
  85. package/dist/lib/node-esm/core/plugin-manager.mjs +8 -4
  86. package/dist/lib/node-esm/core/plugin.mjs +16 -4
  87. package/dist/lib/node-esm/core/url-loader.mjs +25 -0
  88. package/dist/lib/node-esm/index.mjs +47 -49
  89. package/dist/lib/node-esm/index.mjs.map +4 -4
  90. package/dist/lib/node-esm/meta.json +1 -1
  91. package/dist/lib/node-esm/process-manager-capability-5KCLSNQM.mjs +90 -0
  92. package/dist/lib/node-esm/process-manager-capability-5KCLSNQM.mjs.map +7 -0
  93. package/dist/lib/node-esm/testing/index.mjs +199 -52
  94. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  95. package/dist/lib/node-esm/testing/react.mjs +79 -0
  96. package/dist/lib/node-esm/testing/react.mjs.map +7 -0
  97. package/dist/lib/node-esm/ui/index.mjs +25 -20
  98. package/dist/plugin/node-esm/index.mjs +893 -0
  99. package/dist/plugin/node-esm/index.mjs.map +7 -0
  100. package/dist/plugin/node-esm/meta.json +1 -0
  101. package/dist/types/src/cli/cli.d.ts +1 -3
  102. package/dist/types/src/cli/cli.d.ts.map +1 -1
  103. package/dist/types/src/common/activation-events.d.ts +10 -13
  104. package/dist/types/src/common/activation-events.d.ts.map +1 -1
  105. package/dist/types/src/common/annotations.d.ts +1 -0
  106. package/dist/types/src/common/annotations.d.ts.map +1 -0
  107. package/dist/types/src/common/capabilities.d.ts +113 -12
  108. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  109. package/dist/types/src/common/operations.d.ts +8 -22
  110. package/dist/types/src/common/operations.d.ts.map +1 -1
  111. package/dist/types/src/core/activation-event.d.ts +5 -5
  112. package/dist/types/src/core/activation-event.d.ts.map +1 -1
  113. package/dist/types/src/core/capability-manager.d.ts +5 -0
  114. package/dist/types/src/core/capability-manager.d.ts.map +1 -1
  115. package/dist/types/src/core/capability.d.ts +19 -8
  116. package/dist/types/src/core/capability.d.ts.map +1 -1
  117. package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
  118. package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
  119. package/dist/types/src/core/index.d.ts +6 -0
  120. package/dist/types/src/core/index.d.ts.map +1 -1
  121. package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
  122. package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
  123. package/dist/types/src/core/plugin-manager.d.ts +238 -7
  124. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  125. package/dist/types/src/core/plugin-manifest.d.ts +101 -0
  126. package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
  127. package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
  128. package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
  129. package/dist/types/src/core/plugin.d.ts +182 -7
  130. package/dist/types/src/core/plugin.d.ts.map +1 -1
  131. package/dist/types/src/core/registry.d.ts +107 -0
  132. package/dist/types/src/core/registry.d.ts.map +1 -0
  133. package/dist/types/src/core/url-loader.d.ts +127 -0
  134. package/dist/types/src/core/url-loader.d.ts.map +1 -0
  135. package/dist/types/src/core/url-loader.test.d.ts +2 -0
  136. package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
  137. package/dist/types/src/helpers.d.ts.map +1 -1
  138. package/dist/types/src/index.d.ts +1 -2
  139. package/dist/types/src/index.d.ts.map +1 -1
  140. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts +3 -0
  141. package/dist/types/src/plugin-process-manager/ProcessManagerPlugin.d.ts.map +1 -0
  142. package/dist/types/src/plugin-process-manager/history/capability.d.ts +7 -0
  143. package/dist/types/src/plugin-process-manager/history/capability.d.ts.map +1 -0
  144. package/dist/types/src/plugin-process-manager/history/errors.d.ts +32 -0
  145. package/dist/types/src/plugin-process-manager/history/errors.d.ts.map +1 -0
  146. package/dist/types/src/{plugin-operation → plugin-process-manager}/history/history-tracker.d.ts +1 -1
  147. package/dist/types/src/plugin-process-manager/history/history-tracker.d.ts.map +1 -0
  148. package/dist/types/src/plugin-process-manager/history/history-tracker.test.d.ts.map +1 -0
  149. package/dist/types/src/plugin-process-manager/history/index.d.ts.map +1 -0
  150. package/dist/types/src/{plugin-operation → plugin-process-manager}/history/types.d.ts +1 -1
  151. package/dist/types/src/plugin-process-manager/history/types.d.ts.map +1 -0
  152. package/dist/types/src/{plugin-operation → plugin-process-manager}/history/undo-mapping.d.ts +1 -1
  153. package/dist/types/src/plugin-process-manager/history/undo-mapping.d.ts.map +1 -0
  154. package/dist/types/src/{plugin-operation → plugin-process-manager}/history/undo-registry.d.ts +1 -1
  155. package/dist/types/src/plugin-process-manager/history/undo-registry.d.ts.map +1 -0
  156. package/dist/types/src/plugin-process-manager/history/undo-registry.test.d.ts.map +1 -0
  157. package/dist/types/src/plugin-process-manager/index.d.ts +3 -0
  158. package/dist/types/src/plugin-process-manager/index.d.ts.map +1 -0
  159. package/dist/types/src/plugin-process-manager/meta.d.ts.map +1 -0
  160. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts +8 -0
  161. package/dist/types/src/plugin-process-manager/process-manager-capability.d.ts.map +1 -0
  162. package/dist/types/src/plugin-process-manager/testing.d.ts +59 -0
  163. package/dist/types/src/plugin-process-manager/testing.d.ts.map +1 -0
  164. package/dist/types/src/testing/harness.d.ts +79 -0
  165. package/dist/types/src/testing/harness.d.ts.map +1 -0
  166. package/dist/types/src/testing/index.d.ts +1 -0
  167. package/dist/types/src/testing/index.d.ts.map +1 -1
  168. package/dist/types/src/testing/react.d.ts +27 -0
  169. package/dist/types/src/testing/react.d.ts.map +1 -0
  170. package/dist/types/src/testing/react.test.d.ts +2 -0
  171. package/dist/types/src/testing/react.test.d.ts.map +1 -0
  172. package/dist/types/src/testing/service.d.ts.map +1 -1
  173. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  174. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
  175. package/dist/types/src/ui/components/{App.d.ts → App/App.d.ts} +3 -2
  176. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  177. package/dist/types/src/ui/components/{App.stories.d.ts → App/App.stories.d.ts} +6 -1
  178. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  179. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  180. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  181. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
  182. package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
  183. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
  184. package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
  185. package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
  186. package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
  187. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  188. package/dist/types/src/ui/components/{PluginManagerProvider.d.ts → PluginManager/PluginManagerProvider.d.ts} +1 -1
  189. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  190. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  191. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  192. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +24 -0
  193. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  194. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  195. package/dist/types/src/ui/components/{surface → Surface}/SurfaceInfo.d.ts.map +1 -1
  196. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
  197. package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
  198. package/dist/types/src/ui/components/{surface → Surface}/context.d.ts.map +1 -1
  199. package/dist/types/src/ui/components/Surface/index.d.ts +36 -0
  200. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  201. package/dist/types/src/ui/components/Surface/types.d.ts +197 -0
  202. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  203. package/dist/types/src/ui/components/Surface/types.test.d.ts +2 -0
  204. package/dist/types/src/ui/components/Surface/types.test.d.ts.map +1 -0
  205. package/dist/types/src/ui/components/index.d.ts +3 -3
  206. package/dist/types/src/ui/components/index.d.ts.map +1 -1
  207. package/dist/types/src/ui/hooks/index.d.ts +1 -1
  208. package/dist/types/src/ui/hooks/index.d.ts.map +1 -1
  209. package/dist/types/src/ui/hooks/useApp.d.ts +51 -15
  210. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -1
  211. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  212. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  213. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -1
  214. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -1
  215. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts +30 -0
  216. package/dist/types/src/ui/hooks/useProcessManagerRuntime.d.ts.map +1 -0
  217. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -1
  218. package/dist/types/src/ui/hooks/useSurface.d.ts +2 -2
  219. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -1
  220. package/dist/types/src/ui/index.d.ts +0 -1
  221. package/dist/types/src/ui/index.d.ts.map +1 -1
  222. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +34 -0
  223. package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -0
  224. package/dist/types/src/vite-plugin/boot-loader/index.d.ts +2 -0
  225. package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -0
  226. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +51 -0
  227. package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
  228. package/dist/types/src/vite-plugin/composer/index.d.ts +34 -0
  229. package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -0
  230. package/dist/types/src/vite-plugin/import-map/index.d.ts +28 -0
  231. package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -0
  232. package/dist/types/src/vite-plugin/index.d.ts +5 -0
  233. package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
  234. package/dist/types/src/vite-plugin/manifest.d.ts +41 -0
  235. package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -0
  236. package/dist/types/src/vite-plugin/manifest.test.d.ts +2 -0
  237. package/dist/types/src/vite-plugin/manifest.test.d.ts.map +1 -0
  238. package/dist/types/src/vite-plugin/packages.d.ts +13 -0
  239. package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
  240. package/dist/types/tsconfig.tsbuildinfo +1 -1
  241. package/moon.yml +16 -4
  242. package/package.json +63 -63
  243. package/src/cli/cli.ts +4 -9
  244. package/src/common/activation-events.ts +12 -17
  245. package/src/common/annotations.ts +3 -0
  246. package/src/common/capabilities.ts +160 -29
  247. package/src/common/operations.ts +8 -10
  248. package/src/context.ts +1 -1
  249. package/src/core/activation-event.ts +5 -2
  250. package/src/core/capability-manager.test.ts +1 -1
  251. package/src/core/capability-manager.ts +22 -1
  252. package/src/core/capability.ts +28 -10
  253. package/src/core/edge-registry-plugin-provider.ts +92 -0
  254. package/src/core/index.ts +6 -0
  255. package/src/core/plugin-asset-cache.ts +60 -0
  256. package/src/core/plugin-manager.test.ts +1085 -31
  257. package/src/core/plugin-manager.ts +1180 -189
  258. package/src/core/plugin-manifest.test.ts +75 -0
  259. package/src/core/plugin-manifest.ts +134 -0
  260. package/src/core/plugin.ts +195 -12
  261. package/src/core/registry.ts +163 -0
  262. package/src/core/url-loader.test.ts +221 -0
  263. package/src/core/url-loader.ts +388 -0
  264. package/src/index.ts +1 -2
  265. package/src/plugin-process-manager/ProcessManagerPlugin.ts +24 -0
  266. package/src/{plugin-operation → plugin-process-manager}/history/capability.ts +1 -2
  267. package/src/plugin-process-manager/history/errors.ts +7 -0
  268. package/src/{plugin-operation → plugin-process-manager}/history/history-tracker.test.ts +37 -43
  269. package/src/{plugin-operation → plugin-process-manager}/history/history-tracker.ts +1 -2
  270. package/src/{plugin-operation → plugin-process-manager}/history/types.ts +1 -1
  271. package/src/{plugin-operation → plugin-process-manager}/history/undo-mapping.ts +1 -1
  272. package/src/{plugin-operation → plugin-process-manager}/history/undo-registry.test.ts +3 -4
  273. package/src/{plugin-operation → plugin-process-manager}/history/undo-registry.ts +1 -1
  274. package/src/{plugin-operation → plugin-process-manager}/index.ts +1 -1
  275. package/src/plugin-process-manager/meta.ts +14 -0
  276. package/src/plugin-process-manager/process-manager-capability.ts +178 -0
  277. package/src/{plugin-operation → plugin-process-manager}/testing.ts +26 -45
  278. package/src/testing/harness.ts +247 -0
  279. package/src/testing/index.ts +1 -0
  280. package/src/testing/react.test.tsx +48 -0
  281. package/src/testing/react.tsx +113 -0
  282. package/src/testing/service.ts +4 -4
  283. package/src/testing/withPluginManager.stories.tsx +1 -2
  284. package/src/testing/withPluginManager.tsx +45 -17
  285. package/src/ui/components/App/App.stories.tsx +86 -0
  286. package/src/ui/components/App/App.tsx +81 -0
  287. package/src/{plugin-runtime → ui/components/App}/index.ts +1 -1
  288. package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
  289. package/src/ui/components/Placeholder/Placeholder.tsx +156 -0
  290. package/src/ui/components/Placeholder/index.ts +5 -0
  291. package/src/ui/components/{PluginManagerContext.stories.tsx → PluginManager/PluginManagerContext.stories.tsx} +15 -14
  292. package/src/ui/components/{PluginManagerProvider.ts → PluginManager/PluginManagerProvider.ts} +1 -1
  293. package/src/ui/components/PluginManager/index.ts +5 -0
  294. package/src/ui/components/{surface → Surface}/SurfaceComponent.stories.tsx +25 -23
  295. package/src/ui/components/Surface/SurfaceComponent.tsx +303 -0
  296. package/src/ui/components/{surface → Surface}/SurfaceInfo.tsx +1 -2
  297. package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
  298. package/src/ui/components/Surface/index.ts +54 -0
  299. package/src/ui/components/Surface/types.test.ts +126 -0
  300. package/src/ui/components/Surface/types.ts +269 -0
  301. package/src/ui/components/index.ts +3 -3
  302. package/src/ui/hooks/index.ts +1 -1
  303. package/src/ui/hooks/useApp.test.tsx +159 -0
  304. package/src/ui/hooks/useApp.tsx +236 -33
  305. package/src/ui/hooks/useCapabilities.ts +2 -1
  306. package/src/ui/hooks/useLoading.tsx +14 -6
  307. package/src/ui/hooks/useProcessManagerRuntime.ts +78 -0
  308. package/src/ui/hooks/useSurface.ts +3 -3
  309. package/src/ui/index.ts +0 -1
  310. package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +270 -0
  311. package/src/vite-plugin/boot-loader/boot-loader.css +320 -0
  312. package/src/vite-plugin/boot-loader/boot-loader.js +325 -0
  313. package/src/vite-plugin/boot-loader/index.ts +5 -0
  314. package/src/vite-plugin/boot-loader/loader.ts +123 -0
  315. package/src/vite-plugin/composer/index.ts +306 -0
  316. package/src/vite-plugin/import-map/index.ts +527 -0
  317. package/src/vite-plugin/index.ts +10 -0
  318. package/src/vite-plugin/manifest.test.ts +46 -0
  319. package/src/vite-plugin/manifest.ts +57 -0
  320. package/src/vite-plugin/packages.ts +187 -0
  321. package/tsconfig.json +28 -1
  322. package/tsconfig.node.json +2 -4
  323. package/typedoc.json +2 -4
  324. package/vitest.config.ts +1 -1
  325. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  326. package/dist/lib/browser/capability-7LE5X2NH.mjs +0 -37
  327. package/dist/lib/browser/capability-7LE5X2NH.mjs.map +0 -7
  328. package/dist/lib/browser/capability-DU35RXMD.mjs.map +0 -7
  329. package/dist/lib/browser/chunk-4DQMLMGU.mjs.map +0 -7
  330. package/dist/lib/browser/chunk-EIFGKQSA.mjs.map +0 -7
  331. package/dist/lib/browser/chunk-FHQTHCX7.mjs +0 -8
  332. package/dist/lib/browser/chunk-IGRQWMWW.mjs +0 -80
  333. package/dist/lib/browser/chunk-IGRQWMWW.mjs.map +0 -7
  334. package/dist/lib/browser/chunk-KWP6PKIU.mjs.map +0 -7
  335. package/dist/lib/browser/chunk-NPUEVX42.mjs +0 -34
  336. package/dist/lib/browser/chunk-NPUEVX42.mjs.map +0 -7
  337. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +0 -7
  338. package/dist/lib/browser/chunk-WGWEEBUV.mjs +0 -807
  339. package/dist/lib/browser/chunk-WGWEEBUV.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-YAFEA4GV.mjs +0 -1
  341. package/dist/lib/browser/chunk-YZQ6NFG4.mjs +0 -781
  342. package/dist/lib/browser/chunk-YZQ6NFG4.mjs.map +0 -7
  343. package/dist/lib/browser/chunk-ZQO3UZ4R.mjs.map +0 -7
  344. package/dist/lib/browser/invoker-capability-7QW56NOM.mjs +0 -36
  345. package/dist/lib/browser/invoker-capability-7QW56NOM.mjs.map +0 -7
  346. package/dist/lib/node-esm/capability-OSVYGK4X.mjs +0 -38
  347. package/dist/lib/node-esm/capability-OSVYGK4X.mjs.map +0 -7
  348. package/dist/lib/node-esm/capability-SR2EIZFP.mjs.map +0 -7
  349. package/dist/lib/node-esm/chunk-64IMLAS2.mjs.map +0 -7
  350. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +0 -7
  351. package/dist/lib/node-esm/chunk-DHSHRYIB.mjs.map +0 -7
  352. package/dist/lib/node-esm/chunk-DZ2XLAGI.mjs.map +0 -7
  353. package/dist/lib/node-esm/chunk-J2PHTRHC.mjs.map +0 -7
  354. package/dist/lib/node-esm/chunk-JAZVHID3.mjs +0 -35
  355. package/dist/lib/node-esm/chunk-JAZVHID3.mjs.map +0 -7
  356. package/dist/lib/node-esm/chunk-OQYHRZYF.mjs +0 -81
  357. package/dist/lib/node-esm/chunk-OQYHRZYF.mjs.map +0 -7
  358. package/dist/lib/node-esm/chunk-VV4YHPQQ.mjs +0 -782
  359. package/dist/lib/node-esm/chunk-VV4YHPQQ.mjs.map +0 -7
  360. package/dist/lib/node-esm/chunk-XHAKT6UD.mjs +0 -808
  361. package/dist/lib/node-esm/chunk-XHAKT6UD.mjs.map +0 -7
  362. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs +0 -2
  363. package/dist/lib/node-esm/invoker-capability-CK4AMF2R.mjs +0 -37
  364. package/dist/lib/node-esm/invoker-capability-CK4AMF2R.mjs.map +0 -7
  365. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +0 -3
  366. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +0 -1
  367. package/dist/types/src/plugin-operation/history/capability.d.ts +0 -7
  368. package/dist/types/src/plugin-operation/history/capability.d.ts.map +0 -1
  369. package/dist/types/src/plugin-operation/history/errors.d.ts +0 -5
  370. package/dist/types/src/plugin-operation/history/errors.d.ts.map +0 -1
  371. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +0 -1
  372. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +0 -1
  373. package/dist/types/src/plugin-operation/history/index.d.ts.map +0 -1
  374. package/dist/types/src/plugin-operation/history/types.d.ts.map +0 -1
  375. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +0 -1
  376. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +0 -1
  377. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +0 -1
  378. package/dist/types/src/plugin-operation/index.d.ts +0 -3
  379. package/dist/types/src/plugin-operation/index.d.ts.map +0 -1
  380. package/dist/types/src/plugin-operation/invoker-capability.d.ts +0 -6
  381. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +0 -1
  382. package/dist/types/src/plugin-operation/meta.d.ts.map +0 -1
  383. package/dist/types/src/plugin-operation/testing.d.ts +0 -109
  384. package/dist/types/src/plugin-operation/testing.d.ts.map +0 -1
  385. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +0 -3
  386. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +0 -1
  387. package/dist/types/src/plugin-runtime/capability.d.ts +0 -6
  388. package/dist/types/src/plugin-runtime/capability.d.ts.map +0 -1
  389. package/dist/types/src/plugin-runtime/index.d.ts +0 -2
  390. package/dist/types/src/plugin-runtime/index.d.ts.map +0 -1
  391. package/dist/types/src/plugin-runtime/meta.d.ts +0 -3
  392. package/dist/types/src/plugin-runtime/meta.d.ts.map +0 -1
  393. package/dist/types/src/ui/components/App.d.ts.map +0 -1
  394. package/dist/types/src/ui/components/App.stories.d.ts.map +0 -1
  395. package/dist/types/src/ui/components/DefaultFallback.d.ts +0 -8
  396. package/dist/types/src/ui/components/DefaultFallback.d.ts.map +0 -1
  397. package/dist/types/src/ui/components/ErrorBoundary.d.ts +0 -30
  398. package/dist/types/src/ui/components/ErrorBoundary.d.ts.map +0 -1
  399. package/dist/types/src/ui/components/PluginManagerContext.stories.d.ts.map +0 -1
  400. package/dist/types/src/ui/components/PluginManagerProvider.d.ts.map +0 -1
  401. package/dist/types/src/ui/components/surface/SurfaceComponent.d.ts +0 -12
  402. package/dist/types/src/ui/components/surface/SurfaceComponent.d.ts.map +0 -1
  403. package/dist/types/src/ui/components/surface/SurfaceComponent.stories.d.ts.map +0 -1
  404. package/dist/types/src/ui/components/surface/index.d.ts +0 -5
  405. package/dist/types/src/ui/components/surface/index.d.ts.map +0 -1
  406. package/dist/types/src/ui/components/surface/types.d.ts +0 -94
  407. package/dist/types/src/ui/components/surface/types.d.ts.map +0 -1
  408. package/dist/types/src/ui/hooks/useOperationResolver.d.ts +0 -19
  409. package/dist/types/src/ui/hooks/useOperationResolver.d.ts.map +0 -1
  410. package/src/plugin-operation/OperationPlugin.ts +0 -25
  411. package/src/plugin-operation/history/errors.ts +0 -11
  412. package/src/plugin-operation/invoker-capability.ts +0 -40
  413. package/src/plugin-operation/meta.ts +0 -11
  414. package/src/plugin-runtime/RuntimePlugin.ts +0 -20
  415. package/src/plugin-runtime/capability.ts +0 -53
  416. package/src/plugin-runtime/meta.ts +0 -11
  417. package/src/ui/components/App.stories.tsx +0 -62
  418. package/src/ui/components/App.tsx +0 -57
  419. package/src/ui/components/DefaultFallback.tsx +0 -26
  420. package/src/ui/components/ErrorBoundary.tsx +0 -56
  421. package/src/ui/components/surface/SurfaceComponent.tsx +0 -262
  422. package/src/ui/components/surface/index.ts +0 -8
  423. package/src/ui/components/surface/types.ts +0 -119
  424. package/src/ui/hooks/useOperationResolver.ts +0 -40
  425. /package/dist/lib/browser/{chunk-YAFEA4GV.mjs.map → core/url-loader.mjs.map} +0 -0
  426. /package/dist/lib/node-esm/{chunk-Z4TJPSMP.mjs.map → core/url-loader.mjs.map} +0 -0
  427. /package/dist/types/src/{plugin-operation → plugin-process-manager}/history/history-tracker.test.d.ts +0 -0
  428. /package/dist/types/src/{plugin-operation → plugin-process-manager}/history/index.d.ts +0 -0
  429. /package/dist/types/src/{plugin-operation → plugin-process-manager}/history/undo-registry.test.d.ts +0 -0
  430. /package/dist/types/src/{plugin-operation → plugin-process-manager}/meta.d.ts +0 -0
  431. /package/dist/types/src/ui/components/{PluginManagerContext.stories.d.ts → PluginManager/PluginManagerContext.stories.d.ts} +0 -0
  432. /package/dist/types/src/ui/components/{surface → Surface}/SurfaceComponent.stories.d.ts +0 -0
  433. /package/dist/types/src/ui/components/{surface → Surface}/SurfaceInfo.d.ts +0 -0
  434. /package/dist/types/src/ui/components/{surface → Surface}/context.d.ts +0 -0
  435. /package/src/{plugin-operation → plugin-process-manager}/history/index.ts +0 -0
  436. /package/src/ui/components/{surface → Surface}/context.ts +0 -0
@@ -1,782 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- PluginManagerContext
4
- } from "./chunk-UEWJDI2L.mjs";
5
- import {
6
- capabilities_exports
7
- } from "./chunk-OQYHRZYF.mjs";
8
- import {
9
- activation_events_exports
10
- } from "./chunk-JAZVHID3.mjs";
11
- import {
12
- plugin_manager_exports
13
- } from "./chunk-XHAKT6UD.mjs";
14
- import {
15
- __export
16
- } from "./chunk-HSLMI22Q.mjs";
17
-
18
- // src/ui/components/App.tsx
19
- import React4 from "react";
20
-
21
- // src/helpers.ts
22
- var topologicalSort = (nodes) => {
23
- const getDependencies = (nodeId, seen = /* @__PURE__ */ new Set(), path = /* @__PURE__ */ new Set()) => {
24
- if (path.has(nodeId)) {
25
- throw new Error(`Circular dependency detected involving ${nodeId}`);
26
- }
27
- if (seen.has(nodeId)) {
28
- return [];
29
- }
30
- const node = nodes.find((n) => n.id === nodeId);
31
- if (!node) {
32
- throw new Error(`Node ${nodeId} not found but is listed as a dependency`);
33
- }
34
- const newPath = /* @__PURE__ */ new Set([
35
- ...path,
36
- nodeId
37
- ]);
38
- const newSeen = /* @__PURE__ */ new Set([
39
- ...seen,
40
- nodeId
41
- ]);
42
- const dependsOn = node.dependsOn ?? [];
43
- return [
44
- ...dependsOn.flatMap((depId) => getDependencies(depId, newSeen, newPath)),
45
- nodeId
46
- ];
47
- };
48
- const allDependencies = nodes.map((node) => node.id).flatMap((id) => getDependencies(id)).filter((id, index, self) => self.indexOf(id) === index);
49
- return allDependencies.map((id) => nodes.find((node) => node.id === id)).filter((node) => node !== void 0);
50
- };
51
-
52
- // src/ui/hooks/useApp.tsx
53
- import { RegistryContext } from "@effect-atom/atom-react";
54
- import * as Effect from "effect/Effect";
55
- import * as Fiber from "effect/Fiber";
56
- import * as PubSub from "effect/PubSub";
57
- import * as Queue from "effect/Queue";
58
- import React3, { useCallback, useEffect, useMemo, useRef, useState } from "react";
59
- import { runAndForwardErrors } from "@dxos/effect";
60
- import { invariant } from "@dxos/invariant";
61
- import { log } from "@dxos/log";
62
- import { useAsyncEffect, useDefaultValue } from "@dxos/react-hooks";
63
- import { ContextProtocolProvider } from "@dxos/web-context-react";
64
-
65
- // src/ui/components/DefaultFallback.tsx
66
- import React from "react";
67
- var DefaultFallback = ({ error }) => {
68
- return /* @__PURE__ */ React.createElement("div", {
69
- style: {
70
- margin: "1rem",
71
- padding: "1rem",
72
- overflow: "hidden",
73
- border: "4px solid teal",
74
- borderRadius: "1rem"
75
- }
76
- }, /* @__PURE__ */ React.createElement("h1", {
77
- style: {
78
- margin: "0.5rem 0",
79
- fontSize: "1.2rem"
80
- }
81
- }, "ERROR: ", error.message), /* @__PURE__ */ React.createElement("pre", {
82
- style: {
83
- overflow: "auto",
84
- fontSize: "1rem",
85
- whiteSpace: "pre-wrap",
86
- color: "#888888"
87
- }
88
- }, error.stack));
89
- };
90
-
91
- // src/ui/components/ErrorBoundary.tsx
92
- import React2, { Component } from "react";
93
- var ErrorBoundary = class extends Component {
94
- static getDerivedStateFromError(error) {
95
- return {
96
- error
97
- };
98
- }
99
- state = {
100
- error: void 0
101
- };
102
- componentDidUpdate(prevProps) {
103
- if (prevProps.data !== this.props.data) {
104
- this.resetError();
105
- }
106
- }
107
- render() {
108
- if (this.state.error) {
109
- const Fallback = this.props.fallback ?? DefaultFallback2;
110
- return /* @__PURE__ */ React2.createElement(Fallback, {
111
- data: this.props.data,
112
- error: this.state.error
113
- });
114
- }
115
- return this.props.children;
116
- }
117
- resetError() {
118
- this.setState({
119
- error: void 0
120
- });
121
- }
122
- };
123
- var DefaultFallback2 = ({ data, error }) => {
124
- return /* @__PURE__ */ React2.createElement("div", {
125
- className: "flex flex-col gap-2 overflow-hidden border border-red-500 rounded-sm"
126
- }, /* @__PURE__ */ React2.createElement("h1", {
127
- className: "p-2"
128
- }, "ERROR: ", error.message), /* @__PURE__ */ React2.createElement("pre", {
129
- className: "p-2 overflow-y-auto text-sm text-subdued"
130
- }, JSON.stringify(data, null, 2)));
131
- };
132
-
133
- // src/ui/components/PluginManagerProvider.ts
134
- import { createContext, useContext } from "react";
135
- import { raise } from "@dxos/debug";
136
- var PluginManagerContext2 = createContext(void 0);
137
- var usePluginManager = () => useContext(PluginManagerContext2) ?? raise(new Error("Missing PluginManagerContext"));
138
- var PluginManagerProvider = PluginManagerContext2.Provider;
139
-
140
- // src/ui/hooks/useApp.tsx
141
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/app-framework/src/ui/hooks/useApp.tsx";
142
- var ENABLED_KEY = "dxos.org/app-framework/enabled";
143
- var useApp = ({ pluginManager, pluginLoader: pluginLoaderProp, plugins: pluginsProp, core: coreProp, defaults: defaultsProp, setupEvents: setupEventsProp, placeholder, fallback = DefaultFallback, cacheEnabled = false, safeMode = false, debounce = 0, timeout = 3e4 }) => {
144
- const plugins = useDefaultValue(pluginsProp, () => []);
145
- const core = useDefaultValue(coreProp, () => plugins.map(({ meta }) => meta.id));
146
- const defaults = useDefaultValue(defaultsProp, () => []);
147
- const setupEvents = useDefaultValue(setupEventsProp, () => []);
148
- const pluginLoader = useMemo(() => pluginLoaderProp ?? ((id) => Effect.sync(() => {
149
- const plugin = plugins.find((plugin2) => plugin2.meta.id === id);
150
- invariant(plugin, `Plugin not found: ${id}`, {
151
- F: __dxlog_file,
152
- L: 98,
153
- S: void 0,
154
- A: [
155
- "plugin",
156
- "`Plugin not found: ${id}`"
157
- ]
158
- });
159
- return plugin;
160
- })), [
161
- pluginLoaderProp,
162
- plugins
163
- ]);
164
- const readyRef = useRef(false);
165
- const [ready, setReady] = useState(false);
166
- const errorRef = useRef(null);
167
- const [error, setError] = useState(null);
168
- const cached = useMemo(() => JSON.parse(localStorage.getItem(ENABLED_KEY) ?? "[]"), []);
169
- const enabled = useMemo(() => safeMode ? [] : cacheEnabled && cached.length > 0 ? cached : defaults, [
170
- safeMode,
171
- cacheEnabled,
172
- cached,
173
- defaults
174
- ]);
175
- const manager = useMemo(() => pluginManager ?? plugin_manager_exports.make({
176
- pluginLoader,
177
- plugins,
178
- core,
179
- enabled
180
- }), [
181
- pluginManager,
182
- pluginLoader,
183
- plugins,
184
- core,
185
- enabled
186
- ]);
187
- useEffect(() => {
188
- if (!cacheEnabled) {
189
- return;
190
- }
191
- return manager.registry.subscribe(manager.enabled, (value) => {
192
- localStorage.setItem(ENABLED_KEY, JSON.stringify(value));
193
- });
194
- }, [
195
- cacheEnabled,
196
- manager
197
- ]);
198
- useEffect(() => {
199
- setupDevtools(manager);
200
- }, [
201
- manager
202
- ]);
203
- useAsyncEffect(async () => {
204
- manager.capabilities.contribute({
205
- interface: capabilities_exports.PluginManager,
206
- implementation: manager,
207
- module: "dxos.org/app-framework/plugin-manager"
208
- });
209
- manager.capabilities.contribute({
210
- interface: capabilities_exports.AtomRegistry,
211
- implementation: manager.registry,
212
- module: "dxos.org/app-framework/atom-registry"
213
- });
214
- const fiber = Effect.gen(function* () {
215
- const queue = yield* PubSub.subscribe(manager.activation);
216
- const listener = yield* Effect.forkDaemon(Queue.take(queue).pipe(Effect.tap(({ event, state, error: error$ }) => Effect.sync(() => {
217
- if (event === activation_events_exports.Startup.id && state === "activated") {
218
- clearTimeout(timeoutId);
219
- setReady(true);
220
- readyRef.current = true;
221
- }
222
- if (error$ && !readyRef.current) {
223
- setError(error$);
224
- errorRef.current = error$;
225
- }
226
- })), Effect.forever));
227
- yield* Effect.all([
228
- ...setupEvents.map((event) => manager.activate(event)),
229
- manager.activate(activation_events_exports.SetupReactSurface),
230
- manager.activate(activation_events_exports.Startup)
231
- ]);
232
- return yield* Fiber.join(listener);
233
- }).pipe(Effect.scoped, Effect.runFork);
234
- const timeoutId = setTimeout(() => {
235
- if (!readyRef.current && !errorRef.current) {
236
- log.warn("startup timeout diagnostic", {
237
- eventsFired: manager.getEventsFired(),
238
- activeModules: manager.getActive(),
239
- pendingReset: manager.getPendingReset()
240
- }, {
241
- F: __dxlog_file,
242
- L: 178,
243
- S: void 0,
244
- C: (f, a) => f(...a)
245
- });
246
- void runAndForwardErrors(Fiber.interrupt(fiber));
247
- setError(new Error(`Startup timed out after ${timeout}ms`));
248
- }
249
- }, timeout);
250
- return () => {
251
- clearTimeout(timeoutId);
252
- void runAndForwardErrors(Fiber.interrupt(fiber));
253
- manager.capabilities.remove(capabilities_exports.PluginManager, manager);
254
- manager.capabilities.remove(capabilities_exports.AtomRegistry, manager.registry);
255
- };
256
- }, [
257
- manager
258
- ]);
259
- return useCallback(() => /* @__PURE__ */ React3.createElement(ErrorBoundary, {
260
- fallback
261
- }, /* @__PURE__ */ React3.createElement(PluginManagerProvider, {
262
- value: manager
263
- }, /* @__PURE__ */ React3.createElement(ContextProtocolProvider, {
264
- value: manager,
265
- context: PluginManagerContext
266
- }, /* @__PURE__ */ React3.createElement(RegistryContext.Provider, {
267
- value: manager.registry
268
- }, /* @__PURE__ */ React3.createElement(App, {
269
- placeholder,
270
- ready,
271
- error,
272
- debounce
273
- }))))), [
274
- fallback,
275
- manager,
276
- placeholder,
277
- ready,
278
- error
279
- ]);
280
- };
281
- var setupDevtools = (manager) => {
282
- globalThis.composer ??= {};
283
- globalThis.composer.manager = manager;
284
- };
285
-
286
- // src/ui/hooks/useCapabilities.ts
287
- import { useAtomValue } from "@effect-atom/atom-react";
288
- import { useCallback as useCallback2 } from "react";
289
- import { invariant as invariant2 } from "@dxos/invariant";
290
- var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/app-framework/src/ui/hooks/useCapabilities.ts";
291
- var useCapabilities = (interfaceDef) => {
292
- const manager = usePluginManager();
293
- return useAtomValue(manager.capabilities.atom(interfaceDef));
294
- };
295
- var useCapability = (interfaceDef) => {
296
- const capabilities = useCapabilities(interfaceDef);
297
- invariant2(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`, {
298
- F: __dxlog_file2,
299
- L: 30,
300
- S: void 0,
301
- A: [
302
- "capabilities.length > 0",
303
- "`No capability found for ${interfaceDef.identifier}`"
304
- ]
305
- });
306
- return capabilities[0];
307
- };
308
- var useAtomCapability = (atomCapability) => {
309
- const atom = useCapability(atomCapability);
310
- return useAtomValue(atom);
311
- };
312
- var useAtomCapabilityState = (atomCapability) => {
313
- const registry = useCapability(capabilities_exports.AtomRegistry);
314
- const atom = useCapability(atomCapability);
315
- const value = useAtomValue(atom);
316
- const update = useCallback2((fn) => {
317
- registry.set(atom, fn(registry.get(atom)));
318
- }, [
319
- registry,
320
- atom
321
- ]);
322
- return [
323
- value,
324
- update
325
- ];
326
- };
327
- var useOperationInvoker = () => useCapability(capabilities_exports.OperationInvoker);
328
-
329
- // src/ui/hooks/useLoading.tsx
330
- import { useEffect as useEffect2, useState as useState2 } from "react";
331
- var LoadingState = /* @__PURE__ */ (function(LoadingState2) {
332
- LoadingState2[LoadingState2["Loading"] = 0] = "Loading";
333
- LoadingState2[LoadingState2["FadeIn"] = 1] = "FadeIn";
334
- LoadingState2[LoadingState2["FadeOut"] = 2] = "FadeOut";
335
- LoadingState2[LoadingState2["Done"] = 3] = "Done";
336
- return LoadingState2;
337
- })({});
338
- var useLoading = (ready, debounce = 0) => {
339
- const [stage, setStage] = useState2(0);
340
- useEffect2(() => {
341
- if (!debounce) {
342
- return;
343
- }
344
- const i = setInterval(() => {
345
- setStage((stage2) => {
346
- switch (stage2) {
347
- case 0: {
348
- if (!ready) {
349
- return 1;
350
- } else {
351
- clearInterval(i);
352
- return 3;
353
- }
354
- }
355
- case 1: {
356
- if (ready) {
357
- return 2;
358
- }
359
- break;
360
- }
361
- case 2: {
362
- clearInterval(i);
363
- return 3;
364
- }
365
- }
366
- return stage2;
367
- });
368
- }, debounce);
369
- return () => clearInterval(i);
370
- }, [
371
- debounce
372
- ]);
373
- if (!debounce) {
374
- return ready ? 3 : 0;
375
- }
376
- return stage;
377
- };
378
-
379
- // src/ui/hooks/useOperationResolver.ts
380
- import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
381
- var useOperationResolver = (module, resolver) => {
382
- const manager = usePluginManager();
383
- const resolverArray = useMemo2(() => [
384
- resolver
385
- ], [
386
- resolver
387
- ]);
388
- useEffect3(() => {
389
- manager.capabilities.contribute({
390
- module,
391
- interface: capabilities_exports.OperationResolver,
392
- implementation: resolverArray
393
- });
394
- return () => manager.capabilities.remove(capabilities_exports.OperationResolver, resolverArray);
395
- }, [
396
- module,
397
- resolverArray
398
- ]);
399
- };
400
-
401
- // src/ui/hooks/useSettingsState.ts
402
- import { RegistryContext as RegistryContext2, useAtomValue as useAtomValue2 } from "@effect-atom/atom-react";
403
- import { useCallback as useCallback3, useContext as useContext2 } from "react";
404
- var useSettingsState = (atom) => {
405
- const registry = useContext2(RegistryContext2);
406
- const settings = useAtomValue2(atom);
407
- const updateSettings = useCallback3((fn) => {
408
- registry.set(atom, fn(registry.get(atom)));
409
- }, [
410
- registry,
411
- atom
412
- ]);
413
- return {
414
- settings,
415
- updateSettings
416
- };
417
- };
418
-
419
- // src/ui/hooks/useSurface.ts
420
- import { useContext as useContext3 } from "react";
421
- import { raise as raise2 } from "@dxos/debug";
422
-
423
- // src/ui/components/surface/context.ts
424
- import { createContext as createContext2 } from "react";
425
- var SurfaceContext = createContext2(void 0);
426
-
427
- // src/ui/hooks/useSurface.ts
428
- var useSurface = () => {
429
- return useContext3(SurfaceContext) ?? raise2(new Error("Missing SurfaceContext"));
430
- };
431
-
432
- // src/ui/components/App.tsx
433
- var App = ({ placeholder: Placeholder, ready, error, debounce }) => {
434
- const reactContexts = useCapabilities(capabilities_exports.ReactContext);
435
- const reactRoots = useCapabilities(capabilities_exports.ReactRoot);
436
- const stage = useLoading(ready, debounce);
437
- if (error) {
438
- throw error;
439
- }
440
- if (stage < LoadingState.Done) {
441
- if (!Placeholder) {
442
- return null;
443
- }
444
- return /* @__PURE__ */ React4.createElement(Placeholder, {
445
- stage
446
- });
447
- }
448
- const ComposedContext = composeContexts(reactContexts);
449
- return /* @__PURE__ */ React4.createElement(ComposedContext, null, reactRoots.map(({ id, root: Component2 }) => /* @__PURE__ */ React4.createElement(Component2, {
450
- key: id
451
- })));
452
- };
453
- var composeContexts = (contexts) => {
454
- if (contexts.length === 0) {
455
- return ({ children }) => /* @__PURE__ */ React4.createElement(React4.Fragment, null, children);
456
- }
457
- return topologicalSort(contexts).map(({ context }) => context).reduce((Acc, Next) => ({ children }) => /* @__PURE__ */ React4.createElement(Acc, null, /* @__PURE__ */ React4.createElement(Next, null, children)));
458
- };
459
-
460
- // src/ui/components/surface/index.ts
461
- var surface_exports = {};
462
- __export(surface_exports, {
463
- Surface: () => Surface,
464
- create: () => create,
465
- createWeb: () => createWeb,
466
- isAvailable: () => isSurfaceAvailable
467
- });
468
-
469
- // src/ui/components/surface/types.ts
470
- var create = (definition) => ({
471
- ...definition,
472
- kind: "react"
473
- });
474
- var createWeb = (definition) => ({
475
- ...definition,
476
- kind: "web-component"
477
- });
478
-
479
- // src/ui/components/surface/SurfaceComponent.tsx
480
- import React6, { Fragment, Suspense, forwardRef as forwardRef2, memo, useEffect as useEffect4, useMemo as useMemo3, useRef as useRef2 } from "react";
481
- import { log as log2 } from "@dxos/log";
482
- import { useDefaultValue as useDefaultValue2 } from "@dxos/react-hooks";
483
- import { ScrollArea } from "@dxos/react-ui";
484
- import { byPosition } from "@dxos/util";
485
-
486
- // src/ui/components/surface/SurfaceInfo.tsx
487
- import React5, { cloneElement, forwardRef, useCallback as useCallback4, useLayoutEffect, useState as useState3 } from "react";
488
- import { createPortal } from "react-dom";
489
- import { addEventListener, combine } from "@dxos/async";
490
- import { useMergeRefs } from "@dxos/react-hooks";
491
- var SurfaceInfo = /* @__PURE__ */ forwardRef(({ children }, forwardedRef) => {
492
- const [rect, setRect] = useState3(null);
493
- const [expand, setExpand] = useState3(false);
494
- const info = useSurface();
495
- const [root, setRoot] = useState3(null);
496
- const measureRef = useCallback4((node) => setRoot(node), []);
497
- const mergedRef = useMergeRefs([
498
- measureRef,
499
- forwardedRef
500
- ]);
501
- const childWithRef = /* @__PURE__ */ cloneElement(children, {
502
- ref: mergedRef
503
- });
504
- useLayoutEffect(() => {
505
- if (!root) {
506
- setRect(null);
507
- return;
508
- }
509
- const measure = () => {
510
- setRect(root.getBoundingClientRect());
511
- };
512
- const observer = new ResizeObserver(measure);
513
- observer.observe(root);
514
- measure();
515
- return combine(addEventListener(window, "scroll", measure, true), addEventListener(window, "resize", measure), () => {
516
- observer.disconnect();
517
- });
518
- }, [
519
- root
520
- ]);
521
- const padding = 0;
522
- return /* @__PURE__ */ React5.createElement(React5.Fragment, null, childWithRef, rect && /* @__PURE__ */ createPortal(
523
- /* @__PURE__ */ React5.createElement("div", {
524
- role: "none",
525
- className: "z-[100] fixed flex flex-col-reverse scrollbar-none overflow-auto pointer-events-none",
526
- style: {
527
- top: rect.top + padding,
528
- left: rect.left + padding,
529
- width: rect.width - padding * 2,
530
- height: rect.height - padding * 2
531
- }
532
- }, expand ? /* @__PURE__ */ React5.createElement("div", {
533
- className: "absolute inset-0 bg-deckSurface border border-green-500 cursor-pointer pointer-events-auto overflow-auto",
534
- onPointerDown: (ev) => ev.stopPropagation(),
535
- onClick: (ev) => {
536
- ev.stopPropagation();
537
- setExpand(false);
538
- }
539
- }, /* @__PURE__ */ React5.createElement("pre", {
540
- className: "p-2 text-xs text-description font-mono"
541
- }, JSON.stringify({
542
- info
543
- }, null, 2))) : /* @__PURE__ */ React5.createElement("span", {
544
- className: "absolute right-1 bottom-0 flex items-center p-1 text-green-500 opacity-80 hover:opacity-100 text-xl cursor-pointer pointer-events-auto",
545
- title: info.id,
546
- onPointerDown: (ev) => ev.stopPropagation(),
547
- onClick: (ev) => {
548
- ev.stopPropagation();
549
- setExpand(true);
550
- }
551
- }, "\u24D8")),
552
- // TODO(burdon): Create well-known element to gather all debug portals.
553
- document.body
554
- ));
555
- });
556
-
557
- // src/ui/components/surface/SurfaceComponent.tsx
558
- var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/app-framework/src/ui/components/surface/SurfaceComponent.tsx";
559
- var DEFAULT_PLACEHOLDER = /* @__PURE__ */ React6.createElement(Fragment, null);
560
- var DEBUG = import.meta.env.VITE_DEBUG;
561
- var WebComponentWrapper = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ id, role, data, limit, definition, ...rest }, forwardedRef) => {
562
- const containerRef = useRef2(null);
563
- const elementRef = useRef2(null);
564
- const propsRef = useRef2({
565
- id,
566
- role,
567
- data,
568
- limit,
569
- ...rest
570
- });
571
- propsRef.current = {
572
- id,
573
- role,
574
- data,
575
- limit,
576
- ...rest
577
- };
578
- useEffect4(() => {
579
- if (!containerRef.current || elementRef.current) {
580
- return;
581
- }
582
- const element = document.createElement(definition.tagName);
583
- elementRef.current = element;
584
- Object.assign(element, propsRef.current);
585
- containerRef.current.appendChild(element);
586
- if (typeof forwardedRef === "function") {
587
- forwardedRef(element);
588
- } else if (forwardedRef) {
589
- forwardedRef.current = element;
590
- }
591
- return () => {
592
- if (elementRef.current && containerRef.current?.contains(elementRef.current)) {
593
- containerRef.current.removeChild(elementRef.current);
594
- }
595
- if (typeof forwardedRef === "function") {
596
- forwardedRef(null);
597
- } else if (forwardedRef) {
598
- forwardedRef.current = null;
599
- }
600
- elementRef.current = null;
601
- };
602
- }, [
603
- definition.tagName,
604
- forwardedRef
605
- ]);
606
- useEffect4(() => {
607
- const element = elementRef.current;
608
- if (!element) {
609
- return;
610
- }
611
- Object.assign(element, propsRef.current);
612
- });
613
- return /* @__PURE__ */ React6.createElement("div", {
614
- ref: containerRef
615
- });
616
- }));
617
- WebComponentWrapper.displayName = "WebComponentWrapper";
618
- var SurfaceContextProvider = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ id, role, data, limit, fallback = DefaultFallback3, definition, ...rest }, forwardedRef) => {
619
- const contextValue = useMemo3(() => ({
620
- id,
621
- role,
622
- data
623
- }), [
624
- id,
625
- role,
626
- data
627
- ]);
628
- if (definition.kind === "web-component") {
629
- return /* @__PURE__ */ React6.createElement(ErrorBoundary, {
630
- data,
631
- fallback
632
- }, /* @__PURE__ */ React6.createElement(SurfaceContext.Provider, {
633
- value: contextValue
634
- }, /* @__PURE__ */ React6.createElement(WebComponentWrapper, {
635
- id,
636
- role,
637
- data,
638
- limit,
639
- definition,
640
- ref: forwardedRef,
641
- ...rest
642
- })));
643
- }
644
- const Component2 = definition.component;
645
- const debug = DEBUG || "__DX_DEBUG__" in window;
646
- if (debug) {
647
- return /* @__PURE__ */ React6.createElement(ErrorBoundary, {
648
- data,
649
- fallback
650
- }, /* @__PURE__ */ React6.createElement("div", {
651
- role: "none",
652
- className: "contents",
653
- "data-id": id,
654
- "data-role": role
655
- }, /* @__PURE__ */ React6.createElement(SurfaceContext.Provider, {
656
- value: contextValue
657
- }, /* @__PURE__ */ React6.createElement(SurfaceInfo, {
658
- ref: forwardedRef
659
- }, /* @__PURE__ */ React6.createElement(Component2, {
660
- id,
661
- role,
662
- data,
663
- limit,
664
- ...rest
665
- })))));
666
- }
667
- return /* @__PURE__ */ React6.createElement(ErrorBoundary, {
668
- data,
669
- fallback
670
- }, /* @__PURE__ */ React6.createElement("div", {
671
- role: "none",
672
- className: "contents",
673
- "data-id": id,
674
- "data-role": role
675
- }, /* @__PURE__ */ React6.createElement(SurfaceContext.Provider, {
676
- value: contextValue
677
- }, /* @__PURE__ */ React6.createElement(Component2, {
678
- id,
679
- role,
680
- data,
681
- limit,
682
- ...rest,
683
- ref: forwardedRef
684
- }))));
685
- }));
686
- SurfaceContextProvider.displayName = "SurfaceContextProvider";
687
- var Surface = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ id: _id, role, data: dataProp, limit, placeholder = DEFAULT_PLACEHOLDER, ...rest }, forwardedRef) => {
688
- const data = useDefaultValue2(dataProp, () => ({}));
689
- const surfaces = useSurfaces();
690
- const definitions = findCandidates(surfaces, {
691
- role,
692
- data
693
- });
694
- const candidates = limit ? definitions.slice(0, limit) : definitions;
695
- if (DEBUG && candidates.length === 0) {
696
- log2.warn("no candidates for surface", {
697
- role,
698
- data
699
- }, {
700
- F: __dxlog_file3,
701
- L: 185,
702
- S: void 0,
703
- C: (f, a) => f(...a)
704
- });
705
- return null;
706
- }
707
- return /* @__PURE__ */ React6.createElement(Suspense, {
708
- fallback: placeholder
709
- }, candidates.map((definition) => /* @__PURE__ */ React6.createElement(SurfaceContextProvider, {
710
- key: definition.id,
711
- id: definition.id,
712
- role,
713
- data,
714
- limit,
715
- definition,
716
- ref: forwardedRef,
717
- ...rest
718
- })));
719
- }));
720
- Surface.displayName = "Surface";
721
- var findCandidates = (surfaces, { role, data }) => {
722
- return Object.values(surfaces).filter((definition) => Array.isArray(definition.role) ? definition.role.includes(role) : definition.role === role).filter(({ filter }) => filter ? filter(data ?? {}) : true).toSorted(byPosition);
723
- };
724
- var DefaultFallback3 = ({ data, error, dev }) => {
725
- if (dev) {
726
- return /* @__PURE__ */ React6.createElement(ScrollArea.Root, {
727
- orientation: "vertical"
728
- }, /* @__PURE__ */ React6.createElement(ScrollArea.Viewport, {
729
- classNames: "p-4 gap-4"
730
- }, /* @__PURE__ */ React6.createElement("h1", {
731
- className: "flex gap-2 text-sm mbs-2"
732
- }, error.message), /* @__PURE__ */ React6.createElement("pre", {
733
- className: "overflow-auto text-xs text-description"
734
- }, JSON.stringify(data, null, 2))));
735
- }
736
- return /* @__PURE__ */ React6.createElement(ScrollArea.Root, {
737
- orientation: "vertical"
738
- }, /* @__PURE__ */ React6.createElement(ScrollArea.Viewport, {
739
- classNames: "p-4 gap-4 border border-roseFill"
740
- }, /* @__PURE__ */ React6.createElement("h1", {
741
- className: "flex gap-2 text-sm mbs-2 text-errorText"
742
- }, error.message), /* @__PURE__ */ React6.createElement("pre", {
743
- className: "overflow-x-auto text-xs text-description"
744
- }, error.stack), /* @__PURE__ */ React6.createElement("pre", {
745
- className: "overflow-x-auto text-xs text-description"
746
- }, JSON.stringify(data, null, 2))));
747
- };
748
- var useSurfaces = () => {
749
- const surfaces = useCapabilities(capabilities_exports.ReactSurface);
750
- return useMemo3(() => surfaces.flat(), [
751
- surfaces
752
- ]);
753
- };
754
- var isSurfaceAvailable = (capabilityManager, { role, data }) => {
755
- const surfaces = capabilityManager.getAll(capabilities_exports.ReactSurface);
756
- const candidates = findCandidates(surfaces.flat(), {
757
- role,
758
- data
759
- });
760
- return candidates.length > 0;
761
- };
762
-
763
- export {
764
- DefaultFallback,
765
- ErrorBoundary,
766
- usePluginManager,
767
- PluginManagerProvider,
768
- useApp,
769
- useCapabilities,
770
- useCapability,
771
- useAtomCapability,
772
- useAtomCapabilityState,
773
- useOperationInvoker,
774
- LoadingState,
775
- useLoading,
776
- useOperationResolver,
777
- useSettingsState,
778
- useSurface,
779
- App,
780
- surface_exports
781
- };
782
- //# sourceMappingURL=chunk-VV4YHPQQ.mjs.map