@dxos/app-framework 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (420) 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/capability.mjs +28 -0
  31. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  32. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  33. package/dist/lib/browser/core/plugin.mjs +27 -0
  34. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  35. package/dist/lib/browser/index.mjs +162 -128
  36. package/dist/lib/browser/index.mjs.map +4 -4
  37. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +32 -0
  38. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +7 -0
  39. package/dist/lib/browser/meta.json +1 -1
  40. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +64 -0
  41. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +7 -0
  42. package/dist/lib/browser/react/index.mjs +46 -0
  43. package/dist/lib/browser/react/index.mjs.map +7 -0
  44. package/dist/lib/browser/testing/index.mjs +68 -22
  45. package/dist/lib/browser/testing/index.mjs.map +4 -4
  46. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +150 -0
  47. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +7 -0
  48. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs +34 -0
  49. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +7 -0
  50. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +32 -0
  51. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-663A54LQ.mjs +171 -0
  53. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +747 -0
  55. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
  57. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +733 -0
  59. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs +146 -0
  61. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  63. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-STMXUEPO.mjs +78 -0
  65. package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
  67. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +78 -0
  69. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs +808 -0
  71. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +7 -0
  72. package/dist/lib/node-esm/common/index.mjs +39 -0
  73. package/dist/lib/node-esm/common/index.mjs.map +7 -0
  74. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  75. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  76. package/dist/lib/node-esm/core/capability.mjs +29 -0
  77. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  78. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  79. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  80. package/dist/lib/node-esm/core/plugin.mjs +28 -0
  81. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  82. package/dist/lib/node-esm/index.mjs +162 -128
  83. package/dist/lib/node-esm/index.mjs.map +4 -4
  84. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +33 -0
  85. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +7 -0
  86. package/dist/lib/node-esm/meta.json +1 -1
  87. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +65 -0
  88. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +7 -0
  89. package/dist/lib/node-esm/react/index.mjs +47 -0
  90. package/dist/lib/node-esm/react/index.mjs.map +7 -0
  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 +48 -13
  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 -4
  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 +8 -0
  203. package/dist/types/src/react/App.d.ts.map +1 -0
  204. package/dist/types/src/react/App.stories.d.ts.map +1 -0
  205. package/dist/types/src/react/DefaultFallback.d.ts.map +1 -0
  206. package/dist/types/src/react/PluginManagerContext.stories.d.ts +13 -0
  207. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +1 -0
  208. package/dist/types/src/react/PluginManagerProvider.d.ts +2 -2
  209. package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -1
  210. package/dist/types/src/react/Surface.d.ts +8 -6
  211. package/dist/types/src/react/Surface.d.ts.map +1 -1
  212. package/dist/types/src/react/Surface.stories.d.ts +3 -6
  213. package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
  214. package/dist/types/src/react/SurfaceInfo.d.ts +11 -0
  215. package/dist/types/src/react/SurfaceInfo.d.ts.map +1 -0
  216. package/dist/types/src/react/common.d.ts +13 -12
  217. package/dist/types/src/react/common.d.ts.map +1 -1
  218. package/dist/types/src/react/index.d.ts +3 -1
  219. package/dist/types/src/react/index.d.ts.map +1 -1
  220. package/dist/types/src/react/types.d.ts +12 -0
  221. package/dist/types/src/react/types.d.ts.map +1 -0
  222. package/dist/types/src/{components → react}/useApp.d.ts +7 -6
  223. package/dist/types/src/react/useApp.d.ts.map +1 -0
  224. package/dist/types/src/react/useCapabilities.d.ts +16 -3
  225. package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
  226. package/dist/types/src/{components → react}/useLoading.d.ts +1 -2
  227. package/dist/types/src/react/useLoading.d.ts.map +1 -0
  228. package/dist/types/src/react/useOperationResolver.d.ts +19 -0
  229. package/dist/types/src/react/useOperationResolver.d.ts.map +1 -0
  230. package/dist/types/src/testing/index.d.ts +1 -0
  231. package/dist/types/src/testing/index.d.ts.map +1 -1
  232. package/dist/types/src/testing/service.d.ts +8 -0
  233. package/dist/types/src/testing/service.d.ts.map +1 -0
  234. package/dist/types/src/testing/withPluginManager.d.ts +4 -4
  235. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  236. package/dist/types/tsconfig.tsbuildinfo +1 -1
  237. package/moon.yml +6 -2
  238. package/package.json +101 -45
  239. package/src/cli.ts +107 -0
  240. package/src/common/activation-event.ts +99 -0
  241. package/src/common/capability.ts +343 -0
  242. package/src/common/collaboration.ts +23 -10
  243. package/src/common/graph.ts +2 -2
  244. package/src/common/index.ts +4 -3
  245. package/src/common/operations.ts +412 -0
  246. package/src/common/plugin.ts +364 -0
  247. package/src/common/surface.ts +56 -19
  248. package/src/common/translations.ts +20 -0
  249. package/src/context.ts +9 -0
  250. package/src/core/{events.ts → activation-event.ts} +5 -5
  251. package/src/core/capability-manager.test.ts +151 -0
  252. package/src/core/capability-manager.ts +171 -0
  253. package/src/core/capability.ts +236 -0
  254. package/src/core/index.ts +5 -4
  255. package/src/core/plugin-manager.test.ts +845 -0
  256. package/src/core/plugin-manager.ts +696 -0
  257. package/src/core/plugin.ts +221 -39
  258. package/src/index.ts +5 -4
  259. package/src/playground/debug/Debug.tsx +26 -16
  260. package/src/playground/debug/plugin.ts +8 -8
  261. package/src/playground/generator/Main.tsx +20 -11
  262. package/src/playground/generator/Toolbar.tsx +26 -16
  263. package/src/playground/generator/generator.ts +27 -27
  264. package/src/playground/generator/plugin.ts +11 -12
  265. package/src/playground/layout/Layout.tsx +11 -7
  266. package/src/playground/layout/plugin.ts +8 -8
  267. package/src/playground/logger/Toolbar.tsx +19 -16
  268. package/src/playground/logger/plugin.ts +24 -23
  269. package/src/playground/logger/schema.ts +10 -0
  270. package/src/playground/playground.stories.tsx +14 -6
  271. package/src/plugin-operation/OperationPlugin.ts +25 -0
  272. package/src/plugin-operation/history/capability.ts +37 -0
  273. package/src/plugin-operation/history/errors.ts +11 -0
  274. package/src/plugin-operation/history/history-tracker.test.ts +380 -0
  275. package/src/plugin-operation/history/history-tracker.ts +129 -0
  276. package/src/plugin-operation/history/index.ts +9 -0
  277. package/src/plugin-operation/history/types.ts +17 -0
  278. package/src/plugin-operation/history/undo-mapping.ts +132 -0
  279. package/src/plugin-operation/history/undo-registry.test.ts +73 -0
  280. package/src/plugin-operation/history/undo-registry.ts +54 -0
  281. package/src/plugin-operation/index.ts +6 -0
  282. package/src/plugin-operation/invoker-capability.ts +40 -0
  283. package/src/plugin-operation/meta.ts +11 -0
  284. package/src/plugin-operation/testing.ts +174 -0
  285. package/src/plugin-runtime/RuntimePlugin.ts +20 -0
  286. package/src/plugin-runtime/capability.ts +53 -0
  287. package/src/{components → plugin-runtime}/index.ts +1 -1
  288. package/src/plugin-runtime/meta.ts +11 -0
  289. package/src/plugin-settings/SettingsPlugin.ts +11 -26
  290. package/src/plugin-settings/actions.ts +39 -0
  291. package/src/plugin-settings/app-graph-builder.ts +122 -142
  292. package/src/plugin-settings/meta.ts +2 -2
  293. package/src/plugin-settings/operation-resolver.ts +55 -0
  294. package/src/plugin-settings/translations.ts +1 -1
  295. package/src/react/App.stories.tsx +63 -0
  296. package/src/{components → react}/App.tsx +11 -10
  297. package/src/{components → react}/DefaultFallback.tsx +1 -1
  298. package/src/react/PluginManagerContext.stories.tsx +184 -0
  299. package/src/react/PluginManagerProvider.ts +2 -2
  300. package/src/react/Surface.stories.tsx +91 -51
  301. package/src/react/Surface.tsx +226 -45
  302. package/src/react/SurfaceInfo.tsx +107 -0
  303. package/src/react/common.ts +29 -5
  304. package/src/react/index.ts +5 -1
  305. package/src/react/types.ts +27 -0
  306. package/src/react/useApp.tsx +209 -0
  307. package/src/react/useCapabilities.ts +37 -5
  308. package/src/{components → react}/useLoading.tsx +4 -6
  309. package/src/react/useOperationResolver.ts +40 -0
  310. package/src/testing/index.ts +1 -0
  311. package/src/testing/service.ts +52 -0
  312. package/src/testing/withPluginManager.stories.tsx +5 -5
  313. package/src/testing/withPluginManager.tsx +21 -23
  314. package/tsconfig.json +25 -7
  315. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  316. package/dist/lib/browser/app-graph-builder-PSA3RESL.mjs +0 -138
  317. package/dist/lib/browser/app-graph-builder-PSA3RESL.mjs.map +0 -7
  318. package/dist/lib/browser/chunk-2VZ4RF4A.mjs +0 -1608
  319. package/dist/lib/browser/chunk-2VZ4RF4A.mjs.map +0 -7
  320. package/dist/lib/browser/chunk-CPVYIS24.mjs +0 -451
  321. package/dist/lib/browser/chunk-CPVYIS24.mjs.map +0 -7
  322. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  323. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  324. package/dist/lib/browser/intent-dispatcher-BND6IF4U.mjs +0 -11
  325. package/dist/lib/browser/intent-resolver-27FJAJDE.mjs +0 -39
  326. package/dist/lib/browser/intent-resolver-27FJAJDE.mjs.map +0 -7
  327. package/dist/lib/browser/store-F545UOIR.mjs +0 -30
  328. package/dist/lib/browser/store-F545UOIR.mjs.map +0 -7
  329. package/dist/lib/browser/worker.mjs +0 -77
  330. package/dist/lib/node-esm/app-graph-builder-VJGZ6KH7.mjs +0 -139
  331. package/dist/lib/node-esm/app-graph-builder-VJGZ6KH7.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-3RRWO5TD.mjs +0 -1610
  333. package/dist/lib/node-esm/chunk-3RRWO5TD.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-MN37WUJ2.mjs +0 -452
  335. package/dist/lib/node-esm/chunk-MN37WUJ2.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  337. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  338. package/dist/lib/node-esm/intent-dispatcher-254AZ6EE.mjs +0 -12
  339. package/dist/lib/node-esm/intent-resolver-NPMOPNFL.mjs +0 -40
  340. package/dist/lib/node-esm/intent-resolver-NPMOPNFL.mjs.map +0 -7
  341. package/dist/lib/node-esm/store-CINC4R4L.mjs +0 -31
  342. package/dist/lib/node-esm/store-CINC4R4L.mjs.map +0 -7
  343. package/dist/lib/node-esm/worker.mjs +0 -78
  344. package/dist/types/src/common/capabilities.d.ts +0 -201
  345. package/dist/types/src/common/capabilities.d.ts.map +0 -1
  346. package/dist/types/src/common/events.d.ts +0 -52
  347. package/dist/types/src/common/events.d.ts.map +0 -1
  348. package/dist/types/src/common/layout.d.ts +0 -279
  349. package/dist/types/src/common/layout.d.ts.map +0 -1
  350. package/dist/types/src/components/App.d.ts +0 -10
  351. package/dist/types/src/components/App.d.ts.map +0 -1
  352. package/dist/types/src/components/App.stories.d.ts.map +0 -1
  353. package/dist/types/src/components/DefaultFallback.d.ts.map +0 -1
  354. package/dist/types/src/components/index.d.ts +0 -2
  355. package/dist/types/src/components/index.d.ts.map +0 -1
  356. package/dist/types/src/components/useApp.d.ts.map +0 -1
  357. package/dist/types/src/components/useLoading.d.ts.map +0 -1
  358. package/dist/types/src/core/capabilities.d.ts +0 -117
  359. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  360. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  361. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  362. package/dist/types/src/core/events.d.ts.map +0 -1
  363. package/dist/types/src/core/manager.d.ts +0 -126
  364. package/dist/types/src/core/manager.d.ts.map +0 -1
  365. package/dist/types/src/core/manager.test.d.ts +0 -2
  366. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  367. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  368. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  369. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  370. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  371. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  372. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  373. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  374. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  375. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  376. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  377. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  378. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  379. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  380. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  381. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  382. package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
  383. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  384. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  385. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  386. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  387. package/dist/types/src/react/IntentContext.d.ts +0 -8
  388. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  389. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  390. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  391. package/dist/types/src/worker.d.ts +0 -4
  392. package/dist/types/src/worker.d.ts.map +0 -1
  393. package/src/common/capabilities.ts +0 -217
  394. package/src/common/events.ts +0 -79
  395. package/src/common/layout.ts +0 -277
  396. package/src/components/App.stories.tsx +0 -33
  397. package/src/components/useApp.tsx +0 -164
  398. package/src/core/capabilities.test.ts +0 -136
  399. package/src/core/capabilities.ts +0 -263
  400. package/src/core/manager.test.ts +0 -516
  401. package/src/core/manager.ts +0 -604
  402. package/src/plugin-intent/IntentPlugin.ts +0 -20
  403. package/src/plugin-intent/actions.ts +0 -31
  404. package/src/plugin-intent/errors.ts +0 -40
  405. package/src/plugin-intent/index.ts +0 -9
  406. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  407. package/src/plugin-intent/intent-dispatcher.ts +0 -337
  408. package/src/plugin-intent/intent.ts +0 -154
  409. package/src/plugin-intent/meta.ts +0 -10
  410. package/src/plugin-settings/intent-resolver.ts +0 -35
  411. package/src/plugin-settings/store.ts +0 -33
  412. package/src/react/IntentContext.tsx +0 -35
  413. package/src/react/useIntentResolver.ts +0 -22
  414. package/src/worker.ts +0 -11
  415. /package/dist/lib/browser/{intent-dispatcher-BND6IF4U.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  416. /package/dist/lib/browser/{worker.mjs.map → common/index.mjs.map} +0 -0
  417. /package/dist/lib/{node-esm/intent-dispatcher-254AZ6EE.mjs.map → browser/core/activation-event.mjs.map} +0 -0
  418. /package/dist/lib/{node-esm/worker.mjs.map → browser/core/capability.mjs.map} +0 -0
  419. /package/dist/types/src/{components → react}/App.stories.d.ts +0 -0
  420. /package/dist/types/src/{components → react}/DefaultFallback.d.ts +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