@dxos/app-framework 0.7.5-main.9d26e3a → 0.7.5-main.e9bb01b

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 (382) hide show
  1. package/dist/lib/browser/app-graph-builder-F7VZ6LRN.mjs +137 -0
  2. package/dist/lib/browser/app-graph-builder-F7VZ6LRN.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-ATRNTMSS.mjs +1399 -0
  4. package/dist/lib/browser/chunk-ATRNTMSS.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-LDJ3T4V3.mjs +32 -0
  6. package/dist/lib/browser/chunk-LDJ3T4V3.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-WS6SU6HI.mjs +285 -0
  8. package/dist/lib/browser/chunk-WS6SU6HI.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +119 -642
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/intent-dispatcher-E6J7E5Y5.mjs +11 -0
  12. package/dist/lib/browser/intent-resolver-XLE4L3LS.mjs +38 -0
  13. package/dist/lib/browser/intent-resolver-XLE4L3LS.mjs.map +7 -0
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/store-QU2IKFAI.mjs +19 -0
  16. package/dist/lib/browser/store-QU2IKFAI.mjs.map +7 -0
  17. package/dist/lib/browser/testing/index.mjs +74 -0
  18. package/dist/lib/browser/testing/index.mjs.map +7 -0
  19. package/dist/lib/browser/worker.mjs +77 -0
  20. package/dist/lib/node/app-graph-builder-JGBADFF7.cjs +146 -0
  21. package/dist/lib/node/app-graph-builder-JGBADFF7.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-FCMHRU3M.cjs → chunk-QLVQ6PND.cjs} +23 -35
  23. package/dist/lib/node/chunk-QLVQ6PND.cjs.map +7 -0
  24. package/dist/lib/node/chunk-WKC6YMEQ.cjs +1433 -0
  25. package/dist/lib/node/chunk-WKC6YMEQ.cjs.map +7 -0
  26. package/dist/lib/node/chunk-WRWRZKZU.cjs +308 -0
  27. package/dist/lib/node/chunk-WRWRZKZU.cjs.map +7 -0
  28. package/dist/lib/node/index.cjs +125 -665
  29. package/dist/lib/node/index.cjs.map +4 -4
  30. package/dist/lib/node/{plugin-settings-W6UHMH5M.cjs → intent-dispatcher-CFBKDZQR.cjs} +10 -14
  31. package/dist/lib/node/intent-dispatcher-CFBKDZQR.cjs.map +7 -0
  32. package/dist/lib/node/intent-resolver-3TKCXP4S.cjs +45 -0
  33. package/dist/lib/node/intent-resolver-3TKCXP4S.cjs.map +7 -0
  34. package/dist/lib/node/meta.json +1 -1
  35. package/dist/lib/node/store-4QMUUU2A.cjs +34 -0
  36. package/dist/lib/node/store-4QMUUU2A.cjs.map +7 -0
  37. package/dist/lib/node/testing/index.cjs +98 -0
  38. package/dist/lib/node/testing/index.cjs.map +7 -0
  39. package/dist/lib/node/worker.cjs +99 -0
  40. package/dist/lib/node/worker.cjs.map +7 -0
  41. package/dist/lib/node-esm/app-graph-builder-2QEX57NX.mjs +138 -0
  42. package/dist/lib/node-esm/app-graph-builder-2QEX57NX.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-44J2VZBB.mjs +1401 -0
  44. package/dist/lib/node-esm/chunk-44J2VZBB.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-CNJYZNSL.mjs +34 -0
  46. package/dist/lib/node-esm/chunk-CNJYZNSL.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-HTLXL32I.mjs +286 -0
  48. package/dist/lib/node-esm/chunk-HTLXL32I.mjs.map +7 -0
  49. package/dist/lib/node-esm/index.mjs +119 -642
  50. package/dist/lib/node-esm/index.mjs.map +4 -4
  51. package/dist/lib/node-esm/intent-dispatcher-LDQGDZ62.mjs +12 -0
  52. package/dist/lib/node-esm/intent-resolver-7VJWN67U.mjs +39 -0
  53. package/dist/lib/node-esm/intent-resolver-7VJWN67U.mjs.map +7 -0
  54. package/dist/lib/node-esm/meta.json +1 -1
  55. package/dist/lib/node-esm/store-VWDAYUQY.mjs +20 -0
  56. package/dist/lib/node-esm/store-VWDAYUQY.mjs.map +7 -0
  57. package/dist/lib/node-esm/testing/index.mjs +75 -0
  58. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  59. package/dist/lib/node-esm/worker.mjs +78 -0
  60. package/dist/types/src/App.d.ts +22 -13
  61. package/dist/types/src/App.d.ts.map +1 -1
  62. package/dist/types/src/common/capabilities.d.ts +293 -0
  63. package/dist/types/src/common/capabilities.d.ts.map +1 -0
  64. package/dist/types/src/common/events.d.ts +48 -0
  65. package/dist/types/src/common/events.d.ts.map +1 -0
  66. package/dist/types/src/common/file.d.ts +14 -0
  67. package/dist/types/src/common/file.d.ts.map +1 -0
  68. package/dist/types/src/common/graph.d.ts +21 -0
  69. package/dist/types/src/common/graph.d.ts.map +1 -0
  70. package/dist/types/src/common/index.d.ts +8 -0
  71. package/dist/types/src/common/index.d.ts.map +1 -0
  72. package/dist/types/src/common/layout.d.ts +248 -0
  73. package/dist/types/src/common/layout.d.ts.map +1 -0
  74. package/dist/types/src/{plugins/plugin-surface/SurfaceContext.d.ts → common/surface.d.ts} +12 -29
  75. package/dist/types/src/common/surface.d.ts.map +1 -0
  76. package/dist/types/src/common/translations.d.ts +11 -0
  77. package/dist/types/src/common/translations.d.ts.map +1 -0
  78. package/dist/types/src/core/capabilities.d.ts +94 -0
  79. package/dist/types/src/core/capabilities.d.ts.map +1 -0
  80. package/dist/types/src/core/capabilities.test.d.ts +2 -0
  81. package/dist/types/src/core/capabilities.test.d.ts.map +1 -0
  82. package/dist/types/src/core/events.d.ts +58 -0
  83. package/dist/types/src/core/events.d.ts.map +1 -0
  84. package/dist/types/src/core/index.d.ts +5 -0
  85. package/dist/types/src/core/index.d.ts.map +1 -0
  86. package/dist/types/src/core/manager.d.ts +119 -0
  87. package/dist/types/src/core/manager.d.ts.map +1 -0
  88. package/dist/types/src/core/manager.test.d.ts +2 -0
  89. package/dist/types/src/core/manager.test.d.ts.map +1 -0
  90. package/dist/types/src/core/plugin.d.ts +97 -0
  91. package/dist/types/src/core/plugin.d.ts.map +1 -0
  92. package/dist/types/src/helpers.d.ts +10 -0
  93. package/dist/types/src/helpers.d.ts.map +1 -0
  94. package/dist/types/src/helpers.test.d.ts +2 -0
  95. package/dist/types/src/helpers.test.d.ts.map +1 -0
  96. package/dist/types/src/index.d.ts +5 -1
  97. package/dist/types/src/index.d.ts.map +1 -1
  98. package/dist/types/src/playground/debug/Debug.d.ts +6 -0
  99. package/dist/types/src/playground/debug/Debug.d.ts.map +1 -0
  100. package/dist/types/src/playground/debug/index.d.ts +2 -0
  101. package/dist/types/src/playground/debug/index.d.ts.map +1 -0
  102. package/dist/types/src/playground/debug/plugin.d.ts +2 -0
  103. package/dist/types/src/playground/debug/plugin.d.ts.map +1 -0
  104. package/dist/types/src/playground/generator/Main.d.ts +6 -0
  105. package/dist/types/src/playground/generator/Main.d.ts.map +1 -0
  106. package/dist/types/src/playground/generator/Toolbar.d.ts +6 -0
  107. package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -0
  108. package/dist/types/src/playground/generator/generator.d.ts +7 -0
  109. package/dist/types/src/playground/generator/generator.d.ts.map +1 -0
  110. package/dist/types/src/playground/generator/index.d.ts +3 -0
  111. package/dist/types/src/playground/generator/index.d.ts.map +1 -0
  112. package/dist/types/src/playground/generator/plugin.d.ts +2 -0
  113. package/dist/types/src/playground/generator/plugin.d.ts.map +1 -0
  114. package/dist/types/src/playground/layout/Layout.d.ts +8 -0
  115. package/dist/types/src/playground/layout/Layout.d.ts.map +1 -0
  116. package/dist/types/src/playground/layout/index.d.ts +2 -0
  117. package/dist/types/src/playground/layout/index.d.ts.map +1 -0
  118. package/dist/types/src/playground/layout/plugin.d.ts +2 -0
  119. package/dist/types/src/playground/layout/plugin.d.ts.map +1 -0
  120. package/dist/types/src/playground/logger/Toolbar.d.ts +6 -0
  121. package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -0
  122. package/dist/types/src/playground/logger/index.d.ts +2 -0
  123. package/dist/types/src/playground/logger/index.d.ts.map +1 -0
  124. package/dist/types/src/playground/logger/plugin.d.ts +2 -0
  125. package/dist/types/src/playground/logger/plugin.d.ts.map +1 -0
  126. package/dist/types/src/playground/logger/schema.d.ts +13 -0
  127. package/dist/types/src/playground/logger/schema.d.ts.map +1 -0
  128. package/dist/types/src/playground/playground.stories.d.ts +10 -0
  129. package/dist/types/src/playground/playground.stories.d.ts.map +1 -0
  130. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +2 -0
  131. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +1 -0
  132. package/dist/types/src/plugin-intent/actions.d.ts +23 -0
  133. package/dist/types/src/plugin-intent/actions.d.ts.map +1 -0
  134. package/dist/types/src/plugin-intent/errors.d.ts +16 -0
  135. package/dist/types/src/plugin-intent/errors.d.ts.map +1 -0
  136. package/dist/types/src/plugin-intent/index.d.ts +5 -0
  137. package/dist/types/src/plugin-intent/index.d.ts.map +1 -0
  138. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +113 -0
  139. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +1 -0
  140. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +1 -0
  141. package/dist/types/src/{plugins/plugin-intent → plugin-intent}/intent.d.ts +8 -28
  142. package/dist/types/src/plugin-intent/intent.d.ts.map +1 -0
  143. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +2 -0
  144. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -0
  145. package/dist/types/src/plugin-settings/actions.d.ts +27 -0
  146. package/dist/types/src/plugin-settings/actions.d.ts.map +1 -0
  147. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +197 -0
  148. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -0
  149. package/dist/types/src/plugin-settings/index.d.ts +3 -0
  150. package/dist/types/src/plugin-settings/index.d.ts.map +1 -0
  151. package/dist/types/src/plugin-settings/intent-resolver.d.ts +4 -0
  152. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +1 -0
  153. package/dist/types/src/plugin-settings/store.d.ts +5 -0
  154. package/dist/types/src/plugin-settings/store.d.ts.map +1 -0
  155. package/dist/types/src/plugin-settings/translations.d.ts +11 -0
  156. package/dist/types/src/plugin-settings/translations.d.ts.map +1 -0
  157. package/dist/types/src/react/ErrorBoundary.d.ts.map +1 -0
  158. package/dist/types/src/{plugins/plugin-intent → react}/IntentContext.d.ts +2 -2
  159. package/dist/types/src/react/IntentContext.d.ts.map +1 -0
  160. package/dist/types/src/react/PluginManagerProvider.d.ts +10 -0
  161. package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -0
  162. package/dist/types/src/react/Surface.d.ts +12 -0
  163. package/dist/types/src/react/Surface.d.ts.map +1 -0
  164. package/dist/types/src/react/Surface.stories.d.ts +16 -0
  165. package/dist/types/src/react/Surface.stories.d.ts.map +1 -0
  166. package/dist/types/src/react/common.d.ts +12 -0
  167. package/dist/types/src/react/common.d.ts.map +1 -0
  168. package/dist/types/src/react/index.d.ts +7 -0
  169. package/dist/types/src/react/index.d.ts.map +1 -0
  170. package/dist/types/src/react/useCapabilities.d.ts +13 -0
  171. package/dist/types/src/react/useCapabilities.d.ts.map +1 -0
  172. package/dist/types/src/react/useIntentResolver.d.ts +3 -0
  173. package/dist/types/src/react/useIntentResolver.d.ts.map +1 -0
  174. package/dist/types/src/testing/index.d.ts +2 -0
  175. package/dist/types/src/testing/index.d.ts.map +1 -0
  176. package/dist/types/src/testing/withPluginManager.d.ts +10 -0
  177. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -0
  178. package/dist/types/src/testing/withPluginManager.stories.d.ts +5 -0
  179. package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -0
  180. package/dist/types/src/worker.d.ts +4 -0
  181. package/dist/types/src/worker.d.ts.map +1 -0
  182. package/dist/types/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +37 -18
  184. package/project.json +4 -3
  185. package/src/App.tsx +139 -34
  186. package/src/common/capabilities.ts +91 -0
  187. package/src/common/events.ts +72 -0
  188. package/src/common/file.ts +22 -0
  189. package/src/common/graph.ts +30 -0
  190. package/src/{plugins/common → common}/index.ts +3 -2
  191. package/src/common/layout.ts +225 -0
  192. package/src/{plugins/plugin-surface/SurfaceContext.ts → common/surface.ts} +6 -37
  193. package/src/common/translations.ts +17 -0
  194. package/src/core/capabilities.test.ts +116 -0
  195. package/src/core/capabilities.ts +222 -0
  196. package/src/core/events.ts +58 -0
  197. package/src/core/index.ts +8 -0
  198. package/src/core/manager.test.ts +516 -0
  199. package/src/core/manager.ts +511 -0
  200. package/src/core/plugin.ts +131 -0
  201. package/src/helpers.test.ts +97 -0
  202. package/src/helpers.ts +45 -0
  203. package/src/index.ts +6 -3
  204. package/src/playground/debug/Debug.tsx +39 -0
  205. package/src/playground/debug/index.ts +5 -0
  206. package/src/playground/debug/plugin.ts +17 -0
  207. package/src/playground/generator/Main.tsx +71 -0
  208. package/src/playground/generator/Toolbar.tsx +46 -0
  209. package/src/playground/generator/generator.ts +48 -0
  210. package/src/playground/generator/index.ts +6 -0
  211. package/src/playground/generator/plugin.ts +23 -0
  212. package/src/playground/layout/Layout.tsx +33 -0
  213. package/src/playground/layout/index.ts +5 -0
  214. package/src/playground/layout/plugin.ts +17 -0
  215. package/src/playground/logger/Toolbar.tsx +29 -0
  216. package/src/playground/logger/index.ts +5 -0
  217. package/src/playground/logger/plugin.ts +36 -0
  218. package/src/playground/logger/schema.ts +12 -0
  219. package/src/playground/playground.stories.tsx +34 -0
  220. package/src/plugin-intent/IntentPlugin.tsx +20 -0
  221. package/src/plugin-intent/actions.ts +22 -0
  222. package/src/plugin-intent/errors.ts +39 -0
  223. package/src/plugin-intent/index.ts +8 -0
  224. package/src/{plugins/plugin-intent → plugin-intent}/intent-dispatcher.test.ts +83 -63
  225. package/src/{plugins/plugin-intent → plugin-intent}/intent-dispatcher.ts +114 -95
  226. package/src/{plugins/plugin-intent → plugin-intent}/intent.ts +10 -26
  227. package/src/plugin-settings/SettingsPlugin.ts +35 -0
  228. package/src/plugin-settings/actions.ts +27 -0
  229. package/src/plugin-settings/app-graph-builder.ts +122 -0
  230. package/src/plugin-settings/index.ts +6 -0
  231. package/src/plugin-settings/intent-resolver.ts +28 -0
  232. package/src/plugin-settings/store.ts +20 -0
  233. package/src/plugin-settings/translations.ts +17 -0
  234. package/src/{plugins/plugin-intent → react}/IntentContext.tsx +13 -5
  235. package/src/react/PluginManagerProvider.ts +22 -0
  236. package/src/react/Surface.stories.tsx +96 -0
  237. package/src/react/Surface.tsx +75 -0
  238. package/src/react/common.ts +12 -0
  239. package/src/react/index.ts +10 -0
  240. package/src/react/useCapabilities.ts +39 -0
  241. package/src/react/useIntentResolver.ts +22 -0
  242. package/src/testing/index.ts +5 -0
  243. package/src/testing/withPluginManager.stories.tsx +47 -0
  244. package/src/testing/withPluginManager.tsx +75 -0
  245. package/src/worker.ts +11 -0
  246. package/tsconfig.json +16 -4
  247. package/dist/lib/browser/chunk-3E7RY3CE.mjs +0 -72
  248. package/dist/lib/browser/chunk-3E7RY3CE.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-QG25ZU2N.mjs +0 -320
  250. package/dist/lib/browser/chunk-QG25ZU2N.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-SPDTXTOV.mjs +0 -163
  252. package/dist/lib/browser/chunk-SPDTXTOV.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-WBOXEHBE.mjs +0 -51
  254. package/dist/lib/browser/chunk-WBOXEHBE.mjs.map +0 -7
  255. package/dist/lib/browser/plugin-intent-T7Y3MJ5C.mjs +0 -32
  256. package/dist/lib/browser/plugin-settings-5U2L2NRU.mjs +0 -15
  257. package/dist/lib/browser/plugin-surface-OKPF3EQI.mjs +0 -24
  258. package/dist/lib/node/chunk-BW3RNEVI.cjs +0 -185
  259. package/dist/lib/node/chunk-BW3RNEVI.cjs.map +0 -7
  260. package/dist/lib/node/chunk-FCMHRU3M.cjs.map +0 -7
  261. package/dist/lib/node/chunk-QBM42OQ6.cjs +0 -97
  262. package/dist/lib/node/chunk-QBM42OQ6.cjs.map +0 -7
  263. package/dist/lib/node/chunk-VWHAALIN.cjs +0 -344
  264. package/dist/lib/node/chunk-VWHAALIN.cjs.map +0 -7
  265. package/dist/lib/node/plugin-intent-F3TQZIUR.cjs +0 -53
  266. package/dist/lib/node/plugin-intent-F3TQZIUR.cjs.map +0 -7
  267. package/dist/lib/node/plugin-settings-W6UHMH5M.cjs.map +0 -7
  268. package/dist/lib/node/plugin-surface-CCSIONYW.cjs +0 -45
  269. package/dist/lib/node/plugin-surface-CCSIONYW.cjs.map +0 -7
  270. package/dist/lib/node-esm/chunk-3T5UIJY3.mjs +0 -53
  271. package/dist/lib/node-esm/chunk-3T5UIJY3.mjs.map +0 -7
  272. package/dist/lib/node-esm/chunk-4GX7V5ZE.mjs +0 -164
  273. package/dist/lib/node-esm/chunk-4GX7V5ZE.mjs.map +0 -7
  274. package/dist/lib/node-esm/chunk-CFOUYXQ6.mjs +0 -321
  275. package/dist/lib/node-esm/chunk-CFOUYXQ6.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-EYCTSFEJ.mjs +0 -74
  277. package/dist/lib/node-esm/chunk-EYCTSFEJ.mjs.map +0 -7
  278. package/dist/lib/node-esm/plugin-intent-W2HQC6LC.mjs +0 -33
  279. package/dist/lib/node-esm/plugin-settings-H5RHNFVC.mjs +0 -16
  280. package/dist/lib/node-esm/plugin-settings-H5RHNFVC.mjs.map +0 -7
  281. package/dist/lib/node-esm/plugin-surface-V3YET3UL.mjs +0 -25
  282. package/dist/lib/node-esm/plugin-surface-V3YET3UL.mjs.map +0 -7
  283. package/dist/types/src/plugins/common/file.d.ts +0 -22
  284. package/dist/types/src/plugins/common/file.d.ts.map +0 -1
  285. package/dist/types/src/plugins/common/graph.d.ts +0 -51
  286. package/dist/types/src/plugins/common/graph.d.ts.map +0 -1
  287. package/dist/types/src/plugins/common/index.d.ts +0 -7
  288. package/dist/types/src/plugins/common/index.d.ts.map +0 -1
  289. package/dist/types/src/plugins/common/layout.d.ts +0 -176
  290. package/dist/types/src/plugins/common/layout.d.ts.map +0 -1
  291. package/dist/types/src/plugins/common/metadata.d.ts +0 -16
  292. package/dist/types/src/plugins/common/metadata.d.ts.map +0 -1
  293. package/dist/types/src/plugins/common/navigation.d.ts +0 -243
  294. package/dist/types/src/plugins/common/navigation.d.ts.map +0 -1
  295. package/dist/types/src/plugins/common/translations.d.ts +0 -22
  296. package/dist/types/src/plugins/common/translations.d.ts.map +0 -1
  297. package/dist/types/src/plugins/helpers.d.ts +0 -41
  298. package/dist/types/src/plugins/helpers.d.ts.map +0 -1
  299. package/dist/types/src/plugins/index.d.ts +0 -7
  300. package/dist/types/src/plugins/index.d.ts.map +0 -1
  301. package/dist/types/src/plugins/plugin-host/HostPlugin.d.ts +0 -16
  302. package/dist/types/src/plugins/plugin-host/HostPlugin.d.ts.map +0 -1
  303. package/dist/types/src/plugins/plugin-host/PluginContainer.d.ts +0 -14
  304. package/dist/types/src/plugins/plugin-host/PluginContainer.d.ts.map +0 -1
  305. package/dist/types/src/plugins/plugin-host/PluginContext.d.ts +0 -47
  306. package/dist/types/src/plugins/plugin-host/PluginContext.d.ts.map +0 -1
  307. package/dist/types/src/plugins/plugin-host/index.d.ts +0 -6
  308. package/dist/types/src/plugins/plugin-host/index.d.ts.map +0 -1
  309. package/dist/types/src/plugins/plugin-host/plugin.d.ts +0 -104
  310. package/dist/types/src/plugins/plugin-host/plugin.d.ts.map +0 -1
  311. package/dist/types/src/plugins/plugin-host/plugin.test.d.ts +0 -35
  312. package/dist/types/src/plugins/plugin-host/plugin.test.d.ts.map +0 -1
  313. package/dist/types/src/plugins/plugin-intent/IntentContext.d.ts.map +0 -1
  314. package/dist/types/src/plugins/plugin-intent/IntentPlugin.d.ts +0 -8
  315. package/dist/types/src/plugins/plugin-intent/IntentPlugin.d.ts.map +0 -1
  316. package/dist/types/src/plugins/plugin-intent/index.d.ts +0 -7
  317. package/dist/types/src/plugins/plugin-intent/index.d.ts.map +0 -1
  318. package/dist/types/src/plugins/plugin-intent/intent-dispatcher.d.ts +0 -107
  319. package/dist/types/src/plugins/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  320. package/dist/types/src/plugins/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  321. package/dist/types/src/plugins/plugin-intent/intent.d.ts.map +0 -1
  322. package/dist/types/src/plugins/plugin-intent/meta.d.ts +0 -6
  323. package/dist/types/src/plugins/plugin-intent/meta.d.ts.map +0 -1
  324. package/dist/types/src/plugins/plugin-intent/provides.d.ts +0 -16
  325. package/dist/types/src/plugins/plugin-intent/provides.d.ts.map +0 -1
  326. package/dist/types/src/plugins/plugin-settings/SettingsPlugin.d.ts +0 -4
  327. package/dist/types/src/plugins/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  328. package/dist/types/src/plugins/plugin-settings/index.d.ts +0 -4
  329. package/dist/types/src/plugins/plugin-settings/index.d.ts.map +0 -1
  330. package/dist/types/src/plugins/plugin-settings/meta.d.ts +0 -5
  331. package/dist/types/src/plugins/plugin-settings/meta.d.ts.map +0 -1
  332. package/dist/types/src/plugins/plugin-settings/provides.d.ts +0 -26
  333. package/dist/types/src/plugins/plugin-settings/provides.d.ts.map +0 -1
  334. package/dist/types/src/plugins/plugin-surface/ErrorBoundary.d.ts.map +0 -1
  335. package/dist/types/src/plugins/plugin-surface/Surface.d.ts +0 -7
  336. package/dist/types/src/plugins/plugin-surface/Surface.d.ts.map +0 -1
  337. package/dist/types/src/plugins/plugin-surface/SurfaceContext.d.ts.map +0 -1
  338. package/dist/types/src/plugins/plugin-surface/SurfacePlugin.d.ts +0 -7
  339. package/dist/types/src/plugins/plugin-surface/SurfacePlugin.d.ts.map +0 -1
  340. package/dist/types/src/plugins/plugin-surface/helpers.d.ts +0 -21
  341. package/dist/types/src/plugins/plugin-surface/helpers.d.ts.map +0 -1
  342. package/dist/types/src/plugins/plugin-surface/index.d.ts +0 -8
  343. package/dist/types/src/plugins/plugin-surface/index.d.ts.map +0 -1
  344. package/dist/types/src/plugins/plugin-surface/meta.d.ts +0 -5
  345. package/dist/types/src/plugins/plugin-surface/meta.d.ts.map +0 -1
  346. package/dist/types/src/plugins/plugin-surface/provides.d.ts +0 -17
  347. package/dist/types/src/plugins/plugin-surface/provides.d.ts.map +0 -1
  348. package/src/plugins/common/file.ts +0 -36
  349. package/src/plugins/common/graph.ts +0 -70
  350. package/src/plugins/common/layout.ts +0 -173
  351. package/src/plugins/common/metadata.ts +0 -29
  352. package/src/plugins/common/navigation.ts +0 -214
  353. package/src/plugins/common/translations.ts +0 -36
  354. package/src/plugins/helpers.ts +0 -92
  355. package/src/plugins/index.ts +0 -11
  356. package/src/plugins/plugin-host/HostPlugin.tsx +0 -88
  357. package/src/plugins/plugin-host/PluginContainer.tsx +0 -120
  358. package/src/plugins/plugin-host/PluginContext.tsx +0 -79
  359. package/src/plugins/plugin-host/index.ts +0 -12
  360. package/src/plugins/plugin-host/plugin.test.ts +0 -158
  361. package/src/plugins/plugin-host/plugin.ts +0 -133
  362. package/src/plugins/plugin-intent/IntentPlugin.tsx +0 -75
  363. package/src/plugins/plugin-intent/index.ts +0 -13
  364. package/src/plugins/plugin-intent/meta.ts +0 -11
  365. package/src/plugins/plugin-intent/provides.ts +0 -26
  366. package/src/plugins/plugin-settings/SettingsPlugin.tsx +0 -22
  367. package/src/plugins/plugin-settings/index.ts +0 -9
  368. package/src/plugins/plugin-settings/meta.ts +0 -9
  369. package/src/plugins/plugin-settings/provides.ts +0 -34
  370. package/src/plugins/plugin-surface/Surface.tsx +0 -62
  371. package/src/plugins/plugin-surface/SurfacePlugin.tsx +0 -45
  372. package/src/plugins/plugin-surface/helpers.ts +0 -22
  373. package/src/plugins/plugin-surface/index.ts +0 -14
  374. package/src/plugins/plugin-surface/meta.ts +0 -9
  375. package/src/plugins/plugin-surface/provides.ts +0 -27
  376. /package/dist/lib/browser/{plugin-intent-T7Y3MJ5C.mjs.map → intent-dispatcher-E6J7E5Y5.mjs.map} +0 -0
  377. /package/dist/lib/browser/{plugin-settings-5U2L2NRU.mjs.map → worker.mjs.map} +0 -0
  378. /package/dist/lib/{browser/plugin-surface-OKPF3EQI.mjs.map → node-esm/intent-dispatcher-LDQGDZ62.mjs.map} +0 -0
  379. /package/dist/lib/node-esm/{plugin-intent-W2HQC6LC.mjs.map → worker.mjs.map} +0 -0
  380. /package/dist/types/src/{plugins/plugin-intent → plugin-intent}/intent-dispatcher.test.d.ts +0 -0
  381. /package/dist/types/src/{plugins/plugin-surface → react}/ErrorBoundary.d.ts +0 -0
  382. /package/src/{plugins/plugin-surface → react}/ErrorBoundary.tsx +0 -0
@@ -0,0 +1,20 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { RootSettingsStore } from '@dxos/local-storage';
6
+
7
+ import { Capabilities } from '../common';
8
+ import { contributes, type PluginsContext } from '../core';
9
+
10
+ export default (context: PluginsContext) => {
11
+ // TODO(wittjosiah): This should subscribe to capabilities and create stores for newly added settings objects.
12
+ const allSettings = context.requestCapabilities(Capabilities.Settings);
13
+ const settingsStore = new RootSettingsStore();
14
+
15
+ allSettings.forEach((setting) => {
16
+ settingsStore.createStore(setting as any);
17
+ });
18
+
19
+ return contributes(Capabilities.SettingsStore, settingsStore);
20
+ };
@@ -0,0 +1,17 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { SETTINGS_PLUGIN } from './actions';
6
+
7
+ export default [
8
+ {
9
+ 'en-US': {
10
+ [SETTINGS_PLUGIN]: {
11
+ 'open settings label': 'Open settings',
12
+ 'app settings label': 'Settings',
13
+ 'custom plugins label': 'Plugins',
14
+ },
15
+ },
16
+ },
17
+ ];
@@ -7,7 +7,9 @@ import { type Context, createContext, useContext, type Provider, useEffect } fro
7
7
  import { raise } from '@dxos/debug';
8
8
  import { pick } from '@dxos/util';
9
9
 
10
- import { type AnyIntentResolver, type IntentContext } from './intent-dispatcher';
10
+ import { usePluginManager } from './PluginManagerProvider';
11
+ import { Capabilities } from '../common';
12
+ import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
11
13
 
12
14
  const IntentContext: Context<IntentContext | undefined> = createContext<IntentContext | undefined>(undefined);
13
15
 
@@ -16,11 +18,17 @@ export const useIntentDispatcher = (): Pick<IntentContext, 'dispatch' | 'dispatc
16
18
  return pick(context, ['dispatch', 'dispatchPromise']);
17
19
  };
18
20
 
19
- export const useIntentResolver = (pluginId: string, resolver: AnyIntentResolver) => {
20
- const { registerResolver } = useContext(IntentContext) ?? raise(new Error('IntentContext not found'));
21
+ export const useIntentResolver = (module: string, resolver: AnyIntentResolver) => {
22
+ const manager = usePluginManager();
21
23
  useEffect(() => {
22
- return registerResolver(pluginId, resolver);
23
- }, [pluginId, resolver]);
24
+ manager.context.contributeCapability({
25
+ module,
26
+ interface: Capabilities.IntentResolver,
27
+ implementation: resolver,
28
+ });
29
+
30
+ return () => manager.context.removeCapability(Capabilities.IntentResolver, resolver);
31
+ }, [module, resolver]);
24
32
  };
25
33
 
26
34
  export const IntentProvider: Provider<IntentContext | undefined> = IntentContext.Provider;
@@ -0,0 +1,22 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { createContext, useContext } from 'react';
6
+
7
+ import { raise } from '@dxos/debug';
8
+
9
+ import { type PluginManager } from '../core';
10
+
11
+ const PluginManagerContext = createContext<PluginManager | undefined>(undefined);
12
+
13
+ /**
14
+ * Get the plugin manager.
15
+ */
16
+ export const usePluginManager = (): PluginManager =>
17
+ useContext(PluginManagerContext) ?? raise(new Error('Missing PluginManagerContext'));
18
+
19
+ /**
20
+ * Context provider for a plugin manager.
21
+ */
22
+ export const PluginManagerProvider = PluginManagerContext.Provider;
@@ -0,0 +1,96 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import '@dxos-theme';
6
+
7
+ import React, { useCallback, useState } from 'react';
8
+
9
+ import { faker } from '@dxos/random';
10
+ import { Button, List, ListItem } from '@dxos/react-ui';
11
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
12
+
13
+ import { PluginManagerProvider, usePluginManager } from './PluginManagerProvider';
14
+ import { Surface, useSurfaces } from './Surface';
15
+ import { Capabilities, createSurface } from '../common';
16
+ import { type PluginManager } from '../core';
17
+ import { setupPluginManager } from '../testing';
18
+
19
+ const randomColor = (): string => {
20
+ const hue = faker.number.int({ min: 0, max: 360 });
21
+ const saturation = faker.number.int({ min: 50, max: 90 });
22
+ const lightness = faker.number.int({ min: 40, max: 70 });
23
+ return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
24
+ };
25
+
26
+ const Story = () => {
27
+ const manager = usePluginManager();
28
+ const surfaces = useSurfaces();
29
+ const [picked, setPicked] = useState('test');
30
+
31
+ const handleAdd = useCallback(() => {
32
+ const id = `test-${faker.number.int({ min: 0, max: 1_000_000 })}`;
33
+ const backgroundColor = randomColor();
34
+
35
+ manager.context.contributeCapability({
36
+ module: 'test',
37
+ interface: Capabilities.ReactSurface,
38
+ implementation: createSurface({
39
+ id,
40
+ role: id,
41
+ component: () => (
42
+ <div className='flex-1' style={{ backgroundColor }}>
43
+ {id}
44
+ </div>
45
+ ),
46
+ }),
47
+ });
48
+
49
+ setPicked(id);
50
+ }, [manager]);
51
+
52
+ const handlePick = useCallback(() => {
53
+ setPicked(faker.helpers.arrayElement(surfaces).id);
54
+ }, [surfaces]);
55
+
56
+ return (
57
+ <div className='flex flex-col gap-2'>
58
+ <div className='flex gap-2'>
59
+ <Button onClick={handleAdd}>Add</Button>
60
+ <Button onClick={handlePick}>Pick</Button>
61
+ </div>
62
+ <div className='flex gap-2'>
63
+ <div className='flex-1'>
64
+ <List itemSizes='one'>
65
+ {surfaces.map((surface) => (
66
+ <ListItem.Root key={surface.id} id={surface.id}>
67
+ <ListItem.Heading classNames='grow pbs-2'>{surface.id}</ListItem.Heading>
68
+ </ListItem.Root>
69
+ ))}
70
+ </List>
71
+ </div>
72
+ <div className='flex-1'>
73
+ <Surface role={picked} limit={1} />
74
+ </div>
75
+ </div>
76
+ </div>
77
+ );
78
+ };
79
+
80
+ export default {
81
+ title: 'sdk/app-framework/Surface',
82
+ render: ({ manager }: { manager: PluginManager }) => {
83
+ return (
84
+ <PluginManagerProvider value={manager}>
85
+ <Story />
86
+ </PluginManagerProvider>
87
+ );
88
+ },
89
+ // NOTE: Intentionally not using withPluginManager to try to reduce surface area of the story.
90
+ decorators: [withTheme, withLayout({ tooltips: true })],
91
+ args: {
92
+ manager: setupPluginManager(),
93
+ },
94
+ };
95
+
96
+ export const Default = {};
@@ -0,0 +1,75 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React, { memo, forwardRef, Suspense, useMemo } from 'react';
6
+
7
+ import { useDefaultValue } from '@dxos/react-hooks';
8
+ import { byPosition } from '@dxos/util';
9
+
10
+ import { ErrorBoundary } from './ErrorBoundary';
11
+ import { useCapabilities } from './useCapabilities';
12
+ import { Capabilities, type SurfaceDefinition, type SurfaceProps } from '../common';
13
+ import { type PluginsContext } from '../core';
14
+
15
+ /**
16
+ * @internal
17
+ */
18
+ export const useSurfaces = () => {
19
+ const surfaces = useCapabilities(Capabilities.ReactSurface);
20
+ return useMemo(() => surfaces.flat(), [surfaces]);
21
+ };
22
+
23
+ const findCandidates = (surfaces: SurfaceDefinition[], { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {
24
+ return Object.values(surfaces)
25
+ .filter((definition) =>
26
+ Array.isArray(definition.role) ? definition.role.includes(role) : definition.role === role,
27
+ )
28
+ .filter(({ filter }) => (filter ? filter(data ?? {}) : true))
29
+ .toSorted(byPosition);
30
+ };
31
+
32
+ /**
33
+ * @returns `true` if there is a contributed surface which matches the specified role & data, `false` otherwise.
34
+ */
35
+ export const isSurfaceAvailable = (context: PluginsContext, { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {
36
+ const surfaces = context.requestCapabilities(Capabilities.ReactSurface);
37
+ const candidates = findCandidates(surfaces.flat(), { role, data });
38
+ return candidates.length > 0;
39
+ };
40
+
41
+ /**
42
+ * A surface is a named region of the screen that can be populated by plugins.
43
+ */
44
+ export const Surface = memo(
45
+ forwardRef<HTMLElement, SurfaceProps>(
46
+ ({ id: _id, role, data: _data, limit, fallback, placeholder, ...rest }, forwardedRef) => {
47
+ // TODO(wittjosiah): This will make all surfaces depend on a single signal.
48
+ // This isn't ideal because it means that any change to the data will cause all surfaces to re-render.
49
+ // This effectively means that plugin modules which contribute surfaces need to all be activated at startup.
50
+ // This should be fine for now because it's how it worked prior to capabilities api anyways.
51
+ // In the future, it would be nice to be able to bucket the surface contributions by role.
52
+ const surfaces = useSurfaces();
53
+ const data = useDefaultValue(_data, () => ({}));
54
+
55
+ // NOTE: Memoizing the candidates makes the surface not re-render based on reactivity within data.
56
+ const definitions = findCandidates(surfaces, { role, data });
57
+ const candidates = limit ? definitions.slice(0, limit) : definitions;
58
+ const nodes = candidates.map(({ component: Component, id }) => (
59
+ <Component ref={forwardedRef} key={id} id={id} role={role} data={data} limit={limit} {...rest} />
60
+ ));
61
+
62
+ const suspense = placeholder ? <Suspense fallback={placeholder}>{nodes}</Suspense> : nodes;
63
+
64
+ return fallback ? (
65
+ <ErrorBoundary data={data} fallback={fallback}>
66
+ {suspense}
67
+ </ErrorBoundary>
68
+ ) : (
69
+ suspense
70
+ );
71
+ },
72
+ ),
73
+ );
74
+
75
+ Surface.displayName = 'Surface';
@@ -0,0 +1,12 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useCapability } from './useCapabilities';
6
+ import { Capabilities } from '../common';
7
+
8
+ export const useIntentDispatcher = () => useCapability(Capabilities.IntentDispatcher);
9
+
10
+ export const useAppGraph = () => useCapability(Capabilities.AppGraph);
11
+
12
+ export const useLayout = () => useCapability(Capabilities.Layout);
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './common';
6
+ export * from './ErrorBoundary';
7
+ export * from './PluginManagerProvider';
8
+ export * from './Surface';
9
+ export * from './useCapabilities';
10
+ export * from './useIntentResolver';
@@ -0,0 +1,39 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { computed } from '@preact/signals-core';
6
+ import { useMemo } from 'react';
7
+
8
+ import { usePluginManager } from './PluginManagerProvider';
9
+ import { type InterfaceDef } from '../core';
10
+
11
+ /**
12
+ * Hook to request capabilities from the plugin context.
13
+ * @returns An array of capabilities.
14
+ */
15
+ export const useCapabilities = <T, U extends T = T>(
16
+ interfaceDef: InterfaceDef<T>,
17
+ filter?: (capability: T, moduleId: string) => capability is U,
18
+ ) => {
19
+ const manager = usePluginManager();
20
+ const signal = useMemo(
21
+ () => computed(() => manager.context.requestCapabilities(interfaceDef, filter)),
22
+ [interfaceDef],
23
+ );
24
+ return signal.value;
25
+ };
26
+
27
+ /**
28
+ * Hook to request a capability from the plugin context.
29
+ * @returns The capability.
30
+ * @throws If no capability is found.
31
+ */
32
+ export const useCapability = <T, U extends T = T>(
33
+ interfaceDef: InterfaceDef<T>,
34
+ filter?: (capability: T, moduleId: string) => capability is U,
35
+ ) => {
36
+ const manager = usePluginManager();
37
+ const signal = useMemo(() => computed(() => manager.context.requestCapability(interfaceDef, filter)), [interfaceDef]);
38
+ return signal.value;
39
+ };
@@ -0,0 +1,22 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { useEffect } from 'react';
6
+
7
+ import { Capabilities } from '../common';
8
+ import { type AnyIntentResolver } from '../plugin-intent';
9
+ import { usePluginManager } from '../react';
10
+
11
+ export const useIntentResolver = (module: string, resolver: AnyIntentResolver) => {
12
+ const manager = usePluginManager();
13
+ useEffect(() => {
14
+ manager.context.contributeCapability({
15
+ module,
16
+ interface: Capabilities.IntentResolver,
17
+ implementation: resolver,
18
+ });
19
+
20
+ return () => manager.context.removeCapability(Capabilities.IntentResolver, resolver);
21
+ }, [module, resolver]);
22
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './withPluginManager';
@@ -0,0 +1,47 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+
4
+ //
5
+
6
+ import React from 'react';
7
+
8
+ import { withTheme, type Meta } from '@dxos/storybook-utils';
9
+
10
+ import { withPluginManager } from './withPluginManager';
11
+ import { Capabilities, createSurface } from '../common';
12
+ import { contributes } from '../core';
13
+ import { Surface } from '../react';
14
+
15
+ const Render = () => {
16
+ console.log('Render');
17
+ return (
18
+ <div>
19
+ <div>Hello</div>
20
+ <Surface role='main' />
21
+ </div>
22
+ );
23
+ };
24
+
25
+ const meta: Meta = {
26
+ title: 'sdk/app-framework/withPluginManager',
27
+ render: Render,
28
+ decorators: [
29
+ withTheme,
30
+ withPluginManager({
31
+ capabilities: [
32
+ contributes(
33
+ Capabilities.ReactSurface,
34
+ createSurface({
35
+ id: 'test',
36
+ role: 'main',
37
+ component: ({ role }) => <span>{JSON.stringify({ role })}</span>,
38
+ }),
39
+ ),
40
+ ],
41
+ }),
42
+ ],
43
+ };
44
+
45
+ export default meta;
46
+
47
+ export const Default = {};
@@ -0,0 +1,75 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Decorator } from '@storybook/react';
6
+ import React, { useEffect } from 'react';
7
+
8
+ import { raise } from '@dxos/debug';
9
+
10
+ import { createApp, type CreateAppOptions } from '../App';
11
+ import { Capabilities, Events } from '../common';
12
+ import { type AnyCapability, contributes, defineModule, definePlugin, PluginManager } from '../core';
13
+
14
+ /**
15
+ * @internal
16
+ */
17
+ export const setupPluginManager = ({
18
+ capabilities,
19
+ plugins = [],
20
+ core = plugins.map(({ meta }) => meta.id),
21
+ ...options
22
+ }: CreateAppOptions & { capabilities?: AnyCapability[] } = {}) => {
23
+ const pluginManager = new PluginManager({
24
+ pluginLoader: () => raise(new Error('Not implemented')),
25
+ plugins: [StoryPlugin(), ...plugins],
26
+ core: [STORY_PLUGIN, ...core],
27
+ ...options,
28
+ });
29
+
30
+ if (capabilities) {
31
+ capabilities.forEach((capability) => {
32
+ pluginManager.context.contributeCapability({
33
+ interface: capability.interface,
34
+ implementation: capability.implementation,
35
+ module: 'story',
36
+ });
37
+ });
38
+ }
39
+
40
+ return pluginManager;
41
+ };
42
+
43
+ /**
44
+ * Wraps a story with a plugin manager.
45
+ */
46
+ export const withPluginManager = (options: CreateAppOptions & { capabilities?: AnyCapability[] } = {}): Decorator => {
47
+ const pluginManager = setupPluginManager(options);
48
+ const App = createApp({ pluginManager });
49
+
50
+ return (Story, context) => {
51
+ useEffect(() => {
52
+ const capability = contributes(Capabilities.ReactRoot, {
53
+ id: context.id,
54
+ root: () => <Story />,
55
+ });
56
+
57
+ pluginManager.context.contributeCapability({
58
+ ...capability,
59
+ module: 'dxos.org/app-framework/withPluginManager',
60
+ });
61
+
62
+ return () => pluginManager.context.removeCapability(capability.interface, capability.implementation);
63
+ }, []);
64
+
65
+ return <App />;
66
+ };
67
+ };
68
+
69
+ // No-op plugin to ensure there exists at least one plugin for the startup event.
70
+ // This is necessary because `createApp` expects the startup event to complete before the app is ready.
71
+ const STORY_PLUGIN = 'dxos.org/app-framework/story';
72
+ const StoryPlugin = () =>
73
+ definePlugin({ id: STORY_PLUGIN }, [
74
+ defineModule({ id: STORY_PLUGIN, activatesOn: Events.Startup, activate: () => [] }),
75
+ ]);
package/src/worker.ts ADDED
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ // Entrypoint for using plugins in workers runtimes (e.g. Cloudflare Workers, etc.)
6
+ // Excludes all frontend code & dependencies (e.g. localStorage, React, etc.)
7
+
8
+ export * from './core';
9
+ // NOTE: Common includes browser capabilities but they are types only.
10
+ export * from './common';
11
+ export * from './plugin-intent';
package/tsconfig.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "ESNext"
9
9
  ],
10
10
  "module": "ESNext",
11
- "outDir": "dist"
11
+ "outDir": "./dist/types"
12
12
  },
13
13
  "exclude": [
14
14
  "/node_modules/"
@@ -20,9 +20,6 @@
20
20
  {
21
21
  "path": "../../common/async"
22
22
  },
23
- {
24
- "path": "../../common/context"
25
- },
26
23
  {
27
24
  "path": "../../common/debug"
28
25
  },
@@ -35,18 +32,33 @@
35
32
  {
36
33
  "path": "../../common/log"
37
34
  },
35
+ {
36
+ "path": "../../common/random"
37
+ },
38
+ {
39
+ "path": "../../common/storybook-utils"
40
+ },
38
41
  {
39
42
  "path": "../../common/util"
40
43
  },
41
44
  {
42
45
  "path": "../../core/echo/echo-schema"
43
46
  },
47
+ {
48
+ "path": "../../core/echo/echo-signals"
49
+ },
44
50
  {
45
51
  "path": "../../core/echo/live-object"
46
52
  },
47
53
  {
48
54
  "path": "../../ui/primitives/react-hooks"
49
55
  },
56
+ {
57
+ "path": "../../ui/react-ui"
58
+ },
59
+ {
60
+ "path": "../../ui/react-ui-syntax-highlighter"
61
+ },
50
62
  {
51
63
  "path": "../app-graph"
52
64
  },
@@ -1,72 +0,0 @@
1
- // packages/sdk/app-framework/src/plugins/helpers.ts
2
- import { Context } from "@dxos/context";
3
- import { raise } from "@dxos/debug";
4
- import { invariant } from "@dxos/invariant";
5
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/app-framework/src/plugins/helpers.ts";
6
- var findPlugin = (plugins, id) => {
7
- return plugins.find((plugin) => plugin.meta.id === id || typeof plugin.meta.shortId === "string" && plugin.meta.shortId === id);
8
- };
9
- var getPlugin = (plugins, id) => {
10
- return findPlugin(plugins, id) ?? raise(new Error(`Plugin not found: ${id}`));
11
- };
12
- var filterPlugins = (plugins, predicate) => plugins.map((plugin) => predicate(plugin)).filter((plugin) => !!plugin);
13
- var resolvePlugin = (plugins, predicate) => filterPlugins(plugins, predicate)[0];
14
- var PluginContext = class {
15
- constructor() {
16
- // TODO(burdon): Use Resource (@dima)?
17
- this.ctx = new Context(void 0, {
18
- F: __dxlog_file,
19
- L: 50
20
- });
21
- }
22
- init(plugins) {
23
- this._plugins = plugins;
24
- }
25
- getPlugin(id) {
26
- invariant(this._plugins, void 0, {
27
- F: __dxlog_file,
28
- L: 59,
29
- S: this,
30
- A: [
31
- "this._plugins",
32
- ""
33
- ]
34
- });
35
- return getPlugin(this._plugins, id);
36
- }
37
- resolvePlugin(resolver, required = false) {
38
- invariant(this._plugins, "context not initialized", {
39
- F: __dxlog_file,
40
- L: 65,
41
- S: this,
42
- A: [
43
- "this._plugins",
44
- "'context not initialized'"
45
- ]
46
- });
47
- const plugin = resolvePlugin(this._plugins, resolver);
48
- if (required && !plugin) {
49
- throw new Error("Plugin not found.");
50
- }
51
- return plugin;
52
- }
53
- onDispose(cb) {
54
- this.ctx.onDispose(cb);
55
- }
56
- dispose() {
57
- void this.ctx.dispose();
58
- }
59
- };
60
- var definePlugin = (cb) => {
61
- const context = new PluginContext();
62
- return () => cb(context);
63
- };
64
-
65
- export {
66
- findPlugin,
67
- getPlugin,
68
- filterPlugins,
69
- resolvePlugin,
70
- definePlugin
71
- };
72
- //# sourceMappingURL=chunk-3E7RY3CE.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugins/helpers.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Context, type DisposeCallback } from '@dxos/context';\nimport { raise } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\n\nimport { type Plugin, type PluginDefinition } from './plugin-host';\n\n/**\n * Resolvers allow different instances of plugins to provide a particular capability.\n */\nexport type PluginResolver<T> = (plugin: Plugin) => Plugin<T> | undefined;\n\n/**\n * Find a plugin by ID.\n */\nexport const findPlugin = <T>(plugins: Plugin[], id: string): Plugin<T> | undefined => {\n return plugins.find(\n (plugin) => plugin.meta.id === id || (typeof plugin.meta.shortId === 'string' && plugin.meta.shortId === id),\n ) as Plugin<T>;\n};\n\n/**\n * Find a plugin by ID, or raise an error if not found.\n */\nexport const getPlugin = <T>(plugins: Plugin[], id: string): Plugin<T> => {\n return findPlugin(plugins, id) ?? raise(new Error(`Plugin not found: ${id}`));\n};\n\n/**\n * Filter a list of plugins to only those that match a predicate.\n */\nexport const filterPlugins = <T>(plugins: Plugin[], predicate: PluginResolver<T>): Plugin<T>[] =>\n plugins.map((plugin) => predicate(plugin)).filter((plugin): plugin is Plugin<T> => !!plugin);\n\n/**\n * Resolves a plugin by predicate.\n *\n * @example\n * import { parseIntentPlugin, resolvePlugin } from '@dxos/app-framework';\n * const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n */\nexport const resolvePlugin = <T>(plugins: Plugin[], predicate: PluginResolver<T>): Plugin<T> | undefined =>\n filterPlugins(plugins, predicate)[0];\n\nclass PluginContext {\n // TODO(burdon): Use Resource (@dima)?\n public readonly ctx = new Context();\n\n private _plugins?: Plugin[];\n\n init(plugins: Plugin[]) {\n this._plugins = plugins;\n }\n\n getPlugin<T>(id: string): Plugin<T> {\n invariant(this._plugins);\n return getPlugin(this._plugins, id);\n }\n\n resolvePlugin<T>(resolver: PluginResolver<T>): Plugin<T>;\n resolvePlugin<T>(resolver: PluginResolver<T>, required = false): Plugin<T> | undefined {\n invariant(this._plugins, 'context not initialized');\n const plugin = resolvePlugin(this._plugins, resolver);\n if (required && !plugin) {\n // TODO(burdon): Resolver should have a name.\n throw new Error('Plugin not found.');\n }\n\n return plugin;\n }\n\n onDispose(cb: DisposeCallback) {\n this.ctx.onDispose(cb);\n }\n\n dispose() {\n void this.ctx.dispose();\n }\n}\n\n/**\n * Plugin helper with dependency injection and life-cycle support.\n */\nexport const definePlugin = <Provides>(\n cb: (context: PluginContext) => PluginDefinition<Provides>,\n): (() => PluginDefinition<Provides>) => {\n const context = new PluginContext();\n return () => cb(context);\n};\n"],
5
- "mappings": ";AAIA,SAASA,eAAqC;AAC9C,SAASC,aAAa;AACtB,SAASC,iBAAiB;;AAYnB,IAAMC,aAAa,CAAIC,SAAmBC,OAAAA;AAC/C,SAAOD,QAAQE,KACb,CAACC,WAAWA,OAAOC,KAAKH,OAAOA,MAAO,OAAOE,OAAOC,KAAKC,YAAY,YAAYF,OAAOC,KAAKC,YAAYJ,EAAAA;AAE7G;AAKO,IAAMK,YAAY,CAAIN,SAAmBC,OAAAA;AAC9C,SAAOF,WAAWC,SAASC,EAAAA,KAAOJ,MAAM,IAAIU,MAAM,qBAAqBN,EAAAA,EAAI,CAAA;AAC7E;AAKO,IAAMO,gBAAgB,CAAIR,SAAmBS,cAClDT,QAAQU,IAAI,CAACP,WAAWM,UAAUN,MAAAA,CAAAA,EAASQ,OAAO,CAACR,WAAgC,CAAC,CAACA,MAAAA;AAShF,IAAMS,gBAAgB,CAAIZ,SAAmBS,cAClDD,cAAcR,SAASS,SAAAA,EAAW,CAAA;AAEpC,IAAMI,gBAAN,MAAMA;EAAN;AAEkBC;eAAM,IAAIlB,QAAAA,QAAAA;;;;;EAI1BmB,KAAKf,SAAmB;AACtB,SAAKgB,WAAWhB;EAClB;EAEAM,UAAaL,IAAuB;AAClCH,cAAU,KAAKkB,UAAQ,QAAA;;;;;;;;;AACvB,WAAOV,UAAU,KAAKU,UAAUf,EAAAA;EAClC;EAGAW,cAAiBK,UAA6BC,WAAW,OAA8B;AACrFpB,cAAU,KAAKkB,UAAU,2BAAA;;;;;;;;;AACzB,UAAMb,SAASS,cAAc,KAAKI,UAAUC,QAAAA;AAC5C,QAAIC,YAAY,CAACf,QAAQ;AAEvB,YAAM,IAAII,MAAM,mBAAA;IAClB;AAEA,WAAOJ;EACT;EAEAgB,UAAUC,IAAqB;AAC7B,SAAKN,IAAIK,UAAUC,EAAAA;EACrB;EAEAC,UAAU;AACR,SAAK,KAAKP,IAAIO,QAAO;EACvB;AACF;AAKO,IAAMC,eAAe,CAC1BF,OAAAA;AAEA,QAAMG,UAAU,IAAIV,cAAAA;AACpB,SAAO,MAAMO,GAAGG,OAAAA;AAClB;",
6
- "names": ["Context", "raise", "invariant", "findPlugin", "plugins", "id", "find", "plugin", "meta", "shortId", "getPlugin", "Error", "filterPlugins", "predicate", "map", "filter", "resolvePlugin", "PluginContext", "ctx", "init", "_plugins", "resolver", "required", "onDispose", "cb", "dispose", "definePlugin", "context"]
7
- }