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