@dxos/app-framework 0.8.4-main.7ace549 → 0.8.4-main.937b3ca

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