@dxos/app-framework 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

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 (481) hide show
  1. package/.storybook/main.mts +2 -4
  2. package/.storybook/preview.mts +2 -2
  3. package/dist/lib/browser/capability-2GL5JAGJ.mjs +37 -0
  4. package/dist/lib/browser/capability-2GL5JAGJ.mjs.map +7 -0
  5. package/dist/lib/browser/capability-7RLVE42K.mjs +34 -0
  6. package/dist/lib/browser/capability-7RLVE42K.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-4CTRO67U.mjs +703 -0
  8. package/dist/lib/browser/chunk-4CTRO67U.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-5RJNZV7K.mjs +44 -0
  10. package/dist/lib/browser/chunk-5RJNZV7K.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
  12. package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-FNKT2QQ2.mjs +145 -0
  14. package/dist/lib/browser/chunk-FNKT2QQ2.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-HE27PNNQ.mjs +824 -0
  16. package/dist/lib/browser/chunk-HE27PNNQ.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  18. package/dist/lib/browser/chunk-NPUEVX42.mjs +34 -0
  19. package/dist/lib/browser/chunk-NPUEVX42.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
  21. package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-REORGDJT.mjs +80 -0
  23. package/dist/lib/browser/chunk-REORGDJT.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-YAFEA4GV.mjs +1 -0
  25. package/dist/lib/browser/chunk-YNFPIQGB.mjs +76 -0
  26. package/dist/lib/browser/chunk-YNFPIQGB.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-ZRWBPIZG.mjs +170 -0
  28. package/dist/lib/browser/chunk-ZRWBPIZG.mjs.map +7 -0
  29. package/dist/lib/browser/cli/index.mjs +89 -0
  30. package/dist/lib/browser/cli/index.mjs.map +7 -0
  31. package/dist/lib/browser/common/activation-events.mjs +23 -0
  32. package/dist/lib/browser/common/capabilities.mjs +45 -0
  33. package/dist/lib/browser/core/activation-event.mjs +20 -0
  34. package/dist/lib/browser/core/activation-event.mjs.map +7 -0
  35. package/dist/lib/browser/core/capability.mjs +28 -0
  36. package/dist/lib/browser/core/capability.mjs.map +7 -0
  37. package/dist/lib/browser/core/plugin-manager.mjs +15 -0
  38. package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
  39. package/dist/lib/browser/core/plugin.mjs +27 -0
  40. package/dist/lib/browser/core/plugin.mjs.map +7 -0
  41. package/dist/lib/browser/index.mjs +87 -148
  42. package/dist/lib/browser/index.mjs.map +4 -4
  43. package/dist/lib/browser/invoker-capability-BNLVNYHU.mjs +36 -0
  44. package/dist/lib/browser/invoker-capability-BNLVNYHU.mjs.map +7 -0
  45. package/dist/lib/browser/meta.json +1 -1
  46. package/dist/lib/browser/testing/index.mjs +81 -26
  47. package/dist/lib/browser/testing/index.mjs.map +4 -4
  48. package/dist/lib/browser/ui/index.mjs +45 -0
  49. package/dist/lib/browser/ui/index.mjs.map +7 -0
  50. package/dist/lib/node-esm/capability-CHIMU6LX.mjs +38 -0
  51. package/dist/lib/node-esm/capability-CHIMU6LX.mjs.map +7 -0
  52. package/dist/lib/node-esm/capability-EVZK4REM.mjs +35 -0
  53. package/dist/lib/node-esm/capability-EVZK4REM.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-2A4PRBIX.mjs +171 -0
  55. package/dist/lib/node-esm/chunk-2A4PRBIX.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-7CPNAEGV.mjs +704 -0
  57. package/dist/lib/node-esm/chunk-7CPNAEGV.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
  59. package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-CJCQS2YL.mjs +146 -0
  61. package/dist/lib/node-esm/chunk-CJCQS2YL.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-DTCHT2X2.mjs +825 -0
  63. package/dist/lib/node-esm/chunk-DTCHT2X2.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  65. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-JAZVHID3.mjs +35 -0
  67. package/dist/lib/node-esm/chunk-JAZVHID3.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-SB5ODNPX.mjs +77 -0
  69. package/dist/lib/node-esm/chunk-SB5ODNPX.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
  71. package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-UFW652GS.mjs +81 -0
  73. package/dist/lib/node-esm/chunk-UFW652GS.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-VUIUFIGT.mjs +45 -0
  75. package/dist/lib/node-esm/chunk-VUIUFIGT.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs +2 -0
  77. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs.map +7 -0
  78. package/dist/lib/node-esm/cli/index.mjs +90 -0
  79. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  80. package/dist/lib/node-esm/common/activation-events.mjs +24 -0
  81. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  82. package/dist/lib/node-esm/common/capabilities.mjs +46 -0
  83. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  84. package/dist/lib/node-esm/core/activation-event.mjs +21 -0
  85. package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
  86. package/dist/lib/node-esm/core/capability.mjs +29 -0
  87. package/dist/lib/node-esm/core/capability.mjs.map +7 -0
  88. package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
  89. package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
  90. package/dist/lib/node-esm/core/plugin.mjs +28 -0
  91. package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
  92. package/dist/lib/node-esm/index.mjs +87 -148
  93. package/dist/lib/node-esm/index.mjs.map +4 -4
  94. package/dist/lib/node-esm/invoker-capability-VF6SP44V.mjs +37 -0
  95. package/dist/lib/node-esm/invoker-capability-VF6SP44V.mjs.map +7 -0
  96. package/dist/lib/node-esm/meta.json +1 -1
  97. package/dist/lib/node-esm/testing/index.mjs +81 -26
  98. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  99. package/dist/lib/node-esm/ui/index.mjs +46 -0
  100. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  101. package/dist/types/src/cli/cli.d.ts +39 -0
  102. package/dist/types/src/cli/cli.d.ts.map +1 -0
  103. package/dist/types/src/cli/index.d.ts +2 -0
  104. package/dist/types/src/cli/index.d.ts.map +1 -0
  105. package/dist/types/src/common/activation-events.d.ts +27 -0
  106. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  107. package/dist/types/src/common/capabilities.d.ts +114 -200
  108. package/dist/types/src/common/capabilities.d.ts.map +1 -1
  109. package/dist/types/src/common/index.d.ts +4 -8
  110. package/dist/types/src/common/index.d.ts.map +1 -1
  111. package/dist/types/src/common/operations.d.ts +33 -0
  112. package/dist/types/src/common/operations.d.ts.map +1 -0
  113. package/dist/types/src/common/translations.d.ts +7 -7
  114. package/dist/types/src/common/translations.d.ts.map +1 -1
  115. package/dist/types/src/context.d.ts +5 -0
  116. package/dist/types/src/context.d.ts.map +1 -0
  117. package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
  118. package/dist/types/src/core/activation-event.d.ts.map +1 -0
  119. package/dist/types/src/core/capability-manager.d.ts +43 -0
  120. package/dist/types/src/core/capability-manager.d.ts.map +1 -0
  121. package/dist/types/src/core/capability-manager.test.d.ts +2 -0
  122. package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
  123. package/dist/types/src/core/capability.d.ts +150 -0
  124. package/dist/types/src/core/capability.d.ts.map +1 -0
  125. package/dist/types/src/core/index.d.ts +5 -4
  126. package/dist/types/src/core/index.d.ts.map +1 -1
  127. package/dist/types/src/core/plugin-manager.d.ts +66 -0
  128. package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
  129. package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
  130. package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
  131. package/dist/types/src/core/plugin.d.ts +96 -34
  132. package/dist/types/src/core/plugin.d.ts.map +1 -1
  133. package/dist/types/src/index.d.ts +3 -4
  134. package/dist/types/src/index.d.ts.map +1 -1
  135. package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
  136. package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
  137. package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
  138. package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
  139. package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
  140. package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
  141. package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
  142. package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
  143. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
  144. package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
  145. package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
  146. package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
  147. package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
  148. package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
  149. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +101 -0
  150. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
  151. package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
  152. package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
  153. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
  154. package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
  155. package/dist/types/src/plugin-operation/index.d.ts +3 -0
  156. package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
  157. package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
  158. package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
  159. package/dist/types/src/plugin-operation/meta.d.ts +3 -0
  160. package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
  161. package/dist/types/src/plugin-operation/testing.d.ts +109 -0
  162. package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
  163. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
  164. package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
  165. package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
  166. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
  167. package/dist/types/src/plugin-runtime/index.d.ts +2 -0
  168. package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
  169. package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
  170. package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
  171. package/dist/types/src/testing/index.d.ts +1 -0
  172. package/dist/types/src/testing/index.d.ts.map +1 -1
  173. package/dist/types/src/testing/service.d.ts +8 -0
  174. package/dist/types/src/testing/service.d.ts.map +1 -0
  175. package/dist/types/src/testing/withPluginManager.d.ts +7 -6
  176. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  177. package/dist/types/src/ui/components/App/App.d.ts +8 -0
  178. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  179. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/App/App.stories.d.ts} +9 -7
  180. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  181. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  182. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  183. package/dist/types/src/{playground/playground.stories.d.ts → ui/components/PluginManager/PluginManagerContext.stories.d.ts} +5 -3
  184. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  185. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
  186. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  187. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  188. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  189. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
  190. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  191. package/dist/types/src/{components/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  192. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  193. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
  194. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  195. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  196. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  197. package/dist/types/src/ui/components/Surface/index.d.ts +20 -0
  198. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  199. package/dist/types/src/ui/components/Surface/types.d.ts +96 -0
  200. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  201. package/dist/types/src/ui/components/index.d.ts +4 -0
  202. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  203. package/dist/types/src/ui/hooks/index.d.ts +7 -0
  204. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  205. package/dist/types/src/{components → ui/hooks}/useApp.d.ts +18 -12
  206. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  207. package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
  208. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  209. package/dist/types/src/{components → ui/hooks}/useLoading.d.ts +1 -2
  210. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  211. package/dist/types/src/ui/hooks/useOperationResolver.d.ts +19 -0
  212. package/dist/types/src/ui/hooks/useOperationResolver.d.ts.map +1 -0
  213. package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
  214. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  215. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  216. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  217. package/dist/types/src/ui/index.d.ts +3 -0
  218. package/dist/types/src/ui/index.d.ts.map +1 -0
  219. package/dist/types/tsconfig.tsbuildinfo +1 -1
  220. package/moon.yml +10 -6
  221. package/package.json +111 -47
  222. package/src/cli/cli.ts +107 -0
  223. package/src/{components → cli}/index.ts +1 -1
  224. package/src/common/activation-events.ts +44 -0
  225. package/src/common/capabilities.ts +174 -213
  226. package/src/common/index.ts +4 -8
  227. package/src/common/operations.ts +38 -0
  228. package/src/common/translations.ts +17 -9
  229. package/src/context.ts +9 -0
  230. package/src/core/{events.ts → activation-event.ts} +5 -5
  231. package/src/core/capability-manager.test.ts +151 -0
  232. package/src/core/capability-manager.ts +171 -0
  233. package/src/core/capability.ts +236 -0
  234. package/src/core/index.ts +5 -4
  235. package/src/core/plugin-manager.test.ts +845 -0
  236. package/src/core/plugin-manager.ts +715 -0
  237. package/src/core/plugin.ts +227 -39
  238. package/src/index.ts +3 -4
  239. package/src/plugin-operation/OperationPlugin.ts +25 -0
  240. package/src/plugin-operation/history/capability.ts +37 -0
  241. package/src/plugin-operation/history/errors.ts +11 -0
  242. package/src/plugin-operation/history/history-tracker.test.ts +380 -0
  243. package/src/plugin-operation/history/history-tracker.ts +129 -0
  244. package/src/plugin-operation/history/index.ts +9 -0
  245. package/src/plugin-operation/history/types.ts +17 -0
  246. package/src/plugin-operation/history/undo-mapping.ts +135 -0
  247. package/src/plugin-operation/history/undo-registry.test.ts +73 -0
  248. package/src/plugin-operation/history/undo-registry.ts +54 -0
  249. package/src/plugin-operation/index.ts +6 -0
  250. package/src/plugin-operation/invoker-capability.ts +40 -0
  251. package/src/plugin-operation/meta.ts +11 -0
  252. package/src/plugin-operation/testing.ts +174 -0
  253. package/src/plugin-runtime/RuntimePlugin.ts +20 -0
  254. package/src/plugin-runtime/capability.ts +53 -0
  255. package/src/{playground/logger → plugin-runtime}/index.ts +1 -1
  256. package/src/plugin-runtime/meta.ts +11 -0
  257. package/src/testing/index.ts +1 -0
  258. package/src/testing/service.ts +52 -0
  259. package/src/testing/withPluginManager.stories.tsx +7 -7
  260. package/src/testing/withPluginManager.tsx +33 -27
  261. package/src/ui/components/App/App.stories.tsx +92 -0
  262. package/src/{components → ui/components/App}/App.tsx +9 -11
  263. package/src/{playground/debug → ui/components/App}/index.ts +1 -1
  264. package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +183 -0
  265. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
  266. package/src/ui/components/PluginManager/index.ts +5 -0
  267. package/src/ui/components/Surface/SurfaceComponent.stories.tsx +143 -0
  268. package/src/ui/components/Surface/SurfaceComponent.tsx +247 -0
  269. package/src/ui/components/Surface/SurfaceInfo.tsx +107 -0
  270. package/src/ui/components/Surface/context.ts +12 -0
  271. package/src/ui/components/Surface/index.ts +20 -0
  272. package/src/ui/components/Surface/types.ts +117 -0
  273. package/src/ui/components/index.ts +7 -0
  274. package/src/ui/hooks/index.ts +10 -0
  275. package/src/ui/hooks/useApp.tsx +213 -0
  276. package/src/ui/hooks/useCapabilities.ts +67 -0
  277. package/src/{components → ui/hooks}/useLoading.tsx +4 -6
  278. package/src/ui/hooks/useOperationResolver.ts +40 -0
  279. package/src/ui/hooks/useSettingsState.ts +26 -0
  280. package/src/ui/hooks/useSurface.ts +13 -0
  281. package/src/ui/index.ts +6 -0
  282. package/tsconfig.json +12 -21
  283. package/tsconfig.node.json +1 -3
  284. package/typedoc.json +2 -4
  285. package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
  286. package/dist/lib/browser/app-graph-builder-77MY7KAY.mjs +0 -138
  287. package/dist/lib/browser/app-graph-builder-77MY7KAY.mjs.map +0 -7
  288. package/dist/lib/browser/chunk-4NFLRSTX.mjs +0 -467
  289. package/dist/lib/browser/chunk-4NFLRSTX.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-OKF2PAWO.mjs +0 -1646
  291. package/dist/lib/browser/chunk-OKF2PAWO.mjs.map +0 -7
  292. package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
  293. package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
  294. package/dist/lib/browser/intent-dispatcher-Y4LZNOBC.mjs +0 -11
  295. package/dist/lib/browser/intent-resolver-XO5OYWVD.mjs +0 -39
  296. package/dist/lib/browser/intent-resolver-XO5OYWVD.mjs.map +0 -7
  297. package/dist/lib/browser/store-E3YSBPJQ.mjs +0 -30
  298. package/dist/lib/browser/store-E3YSBPJQ.mjs.map +0 -7
  299. package/dist/lib/browser/worker.mjs +0 -77
  300. package/dist/lib/node-esm/app-graph-builder-WK7WBM6I.mjs +0 -139
  301. package/dist/lib/node-esm/app-graph-builder-WK7WBM6I.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-7DNZQ6H2.mjs +0 -1648
  303. package/dist/lib/node-esm/chunk-7DNZQ6H2.mjs.map +0 -7
  304. package/dist/lib/node-esm/chunk-AHCD4UYO.mjs +0 -468
  305. package/dist/lib/node-esm/chunk-AHCD4UYO.mjs.map +0 -7
  306. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
  307. package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
  308. package/dist/lib/node-esm/intent-dispatcher-R4CCPBHO.mjs +0 -12
  309. package/dist/lib/node-esm/intent-resolver-NVYY6BQA.mjs +0 -40
  310. package/dist/lib/node-esm/intent-resolver-NVYY6BQA.mjs.map +0 -7
  311. package/dist/lib/node-esm/store-QA5DGTOS.mjs +0 -31
  312. package/dist/lib/node-esm/store-QA5DGTOS.mjs.map +0 -7
  313. package/dist/lib/node-esm/worker.mjs +0 -78
  314. package/dist/types/src/common/collaboration.d.ts +0 -20
  315. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  316. package/dist/types/src/common/events.d.ts +0 -52
  317. package/dist/types/src/common/events.d.ts.map +0 -1
  318. package/dist/types/src/common/file.d.ts +0 -14
  319. package/dist/types/src/common/file.d.ts.map +0 -1
  320. package/dist/types/src/common/graph.d.ts +0 -21
  321. package/dist/types/src/common/graph.d.ts.map +0 -1
  322. package/dist/types/src/common/layout.d.ts +0 -279
  323. package/dist/types/src/common/layout.d.ts.map +0 -1
  324. package/dist/types/src/common/surface.d.ts +0 -59
  325. package/dist/types/src/common/surface.d.ts.map +0 -1
  326. package/dist/types/src/components/App.d.ts +0 -10
  327. package/dist/types/src/components/App.d.ts.map +0 -1
  328. package/dist/types/src/components/App.stories.d.ts.map +0 -1
  329. package/dist/types/src/components/DefaultFallback.d.ts +0 -8
  330. package/dist/types/src/components/DefaultFallback.d.ts.map +0 -1
  331. package/dist/types/src/components/index.d.ts +0 -2
  332. package/dist/types/src/components/index.d.ts.map +0 -1
  333. package/dist/types/src/components/useApp.d.ts.map +0 -1
  334. package/dist/types/src/components/useLoading.d.ts.map +0 -1
  335. package/dist/types/src/core/capabilities.d.ts +0 -117
  336. package/dist/types/src/core/capabilities.d.ts.map +0 -1
  337. package/dist/types/src/core/capabilities.test.d.ts +0 -2
  338. package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
  339. package/dist/types/src/core/events.d.ts.map +0 -1
  340. package/dist/types/src/core/manager.d.ts +0 -126
  341. package/dist/types/src/core/manager.d.ts.map +0 -1
  342. package/dist/types/src/core/manager.test.d.ts +0 -2
  343. package/dist/types/src/core/manager.test.d.ts.map +0 -1
  344. package/dist/types/src/playground/debug/Debug.d.ts +0 -6
  345. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  346. package/dist/types/src/playground/debug/index.d.ts +0 -2
  347. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  348. package/dist/types/src/playground/debug/plugin.d.ts +0 -2
  349. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  350. package/dist/types/src/playground/generator/Main.d.ts +0 -6
  351. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  352. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
  353. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  354. package/dist/types/src/playground/generator/generator.d.ts +0 -7
  355. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  356. package/dist/types/src/playground/generator/index.d.ts +0 -3
  357. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  358. package/dist/types/src/playground/generator/plugin.d.ts +0 -2
  359. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  360. package/dist/types/src/playground/layout/Layout.d.ts +0 -8
  361. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  362. package/dist/types/src/playground/layout/index.d.ts +0 -2
  363. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  364. package/dist/types/src/playground/layout/plugin.d.ts +0 -2
  365. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  366. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
  367. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  368. package/dist/types/src/playground/logger/index.d.ts +0 -2
  369. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  370. package/dist/types/src/playground/logger/plugin.d.ts +0 -2
  371. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  372. package/dist/types/src/playground/logger/schema.d.ts +0 -13
  373. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  374. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  375. package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
  376. package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
  377. package/dist/types/src/plugin-intent/actions.d.ts +0 -36
  378. package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
  379. package/dist/types/src/plugin-intent/errors.d.ts +0 -16
  380. package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
  381. package/dist/types/src/plugin-intent/index.d.ts +0 -6
  382. package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
  383. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
  384. package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
  385. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
  386. package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
  387. package/dist/types/src/plugin-intent/intent.d.ts +0 -63
  388. package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
  389. package/dist/types/src/plugin-intent/meta.d.ts +0 -3
  390. package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
  391. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
  392. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  393. package/dist/types/src/plugin-settings/actions.d.ts +0 -25
  394. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  395. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
  396. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  397. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  398. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  399. package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
  400. package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
  401. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  402. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  403. package/dist/types/src/plugin-settings/store.d.ts +0 -5
  404. package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
  405. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  406. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  407. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  408. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  409. package/dist/types/src/react/IntentContext.d.ts +0 -8
  410. package/dist/types/src/react/IntentContext.d.ts.map +0 -1
  411. package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
  412. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  413. package/dist/types/src/react/Surface.d.ts +0 -12
  414. package/dist/types/src/react/Surface.d.ts.map +0 -1
  415. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  416. package/dist/types/src/react/common.d.ts +0 -13
  417. package/dist/types/src/react/common.d.ts.map +0 -1
  418. package/dist/types/src/react/index.d.ts +0 -7
  419. package/dist/types/src/react/index.d.ts.map +0 -1
  420. package/dist/types/src/react/useCapabilities.d.ts +0 -13
  421. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  422. package/dist/types/src/react/useIntentResolver.d.ts +0 -3
  423. package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
  424. package/dist/types/src/worker.d.ts +0 -4
  425. package/dist/types/src/worker.d.ts.map +0 -1
  426. package/src/common/collaboration.ts +0 -18
  427. package/src/common/events.ts +0 -79
  428. package/src/common/file.ts +0 -22
  429. package/src/common/graph.ts +0 -30
  430. package/src/common/layout.ts +0 -277
  431. package/src/common/surface.ts +0 -83
  432. package/src/components/App.stories.tsx +0 -33
  433. package/src/components/DefaultFallback.tsx +0 -26
  434. package/src/components/useApp.tsx +0 -164
  435. package/src/core/capabilities.test.ts +0 -136
  436. package/src/core/capabilities.ts +0 -259
  437. package/src/core/manager.test.ts +0 -516
  438. package/src/core/manager.ts +0 -604
  439. package/src/playground/debug/Debug.tsx +0 -39
  440. package/src/playground/debug/plugin.ts +0 -16
  441. package/src/playground/generator/Main.tsx +0 -71
  442. package/src/playground/generator/Toolbar.tsx +0 -47
  443. package/src/playground/generator/generator.ts +0 -48
  444. package/src/playground/generator/index.ts +0 -6
  445. package/src/playground/generator/plugin.ts +0 -22
  446. package/src/playground/layout/Layout.tsx +0 -33
  447. package/src/playground/layout/index.ts +0 -5
  448. package/src/playground/layout/plugin.ts +0 -18
  449. package/src/playground/logger/Toolbar.tsx +0 -30
  450. package/src/playground/logger/plugin.ts +0 -41
  451. package/src/playground/logger/schema.ts +0 -12
  452. package/src/playground/playground.stories.tsx +0 -46
  453. package/src/plugin-intent/IntentPlugin.ts +0 -20
  454. package/src/plugin-intent/actions.ts +0 -31
  455. package/src/plugin-intent/errors.ts +0 -40
  456. package/src/plugin-intent/index.ts +0 -9
  457. package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
  458. package/src/plugin-intent/intent-dispatcher.ts +0 -337
  459. package/src/plugin-intent/intent.ts +0 -154
  460. package/src/plugin-intent/meta.ts +0 -10
  461. package/src/plugin-settings/SettingsPlugin.ts +0 -34
  462. package/src/plugin-settings/actions.ts +0 -25
  463. package/src/plugin-settings/app-graph-builder.ts +0 -160
  464. package/src/plugin-settings/index.ts +0 -6
  465. package/src/plugin-settings/intent-resolver.ts +0 -35
  466. package/src/plugin-settings/meta.ts +0 -10
  467. package/src/plugin-settings/store.ts +0 -33
  468. package/src/plugin-settings/translations.ts +0 -19
  469. package/src/react/ErrorBoundary.tsx +0 -56
  470. package/src/react/IntentContext.tsx +0 -35
  471. package/src/react/Surface.stories.tsx +0 -101
  472. package/src/react/Surface.tsx +0 -86
  473. package/src/react/common.ts +0 -13
  474. package/src/react/index.ts +0 -10
  475. package/src/react/useCapabilities.ts +0 -31
  476. package/src/react/useIntentResolver.ts +0 -22
  477. package/src/worker.ts +0 -11
  478. /package/dist/lib/browser/{intent-dispatcher-Y4LZNOBC.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  479. /package/dist/lib/browser/{worker.mjs.map → chunk-YAFEA4GV.mjs.map} +0 -0
  480. /package/dist/lib/{node-esm/intent-dispatcher-R4CCPBHO.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  481. /package/dist/lib/{node-esm/worker.mjs.map → browser/common/capabilities.mjs.map} +0 -0
@@ -1,154 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- export type IntentParams = {
8
- readonly input: Schema.Schema.All;
9
- readonly output: Schema.Schema.All;
10
- };
11
-
12
- export type IntentData<Fields extends IntentParams> =
13
- Schema.Schema.Type<Schema.Struct<Fields>> extends { readonly input: any }
14
- ? Schema.Schema.Type<Schema.Struct<Fields>>['input']
15
- : any;
16
-
17
- export type IntentResultData<Fields extends IntentParams> =
18
- Schema.Schema.Type<Schema.Struct<Fields>> extends { readonly output: any }
19
- ? Schema.Schema.Type<Schema.Struct<Fields>>['output']
20
- : any;
21
-
22
- export type IntentSchema<Tag extends string, Fields extends IntentParams> = Schema.TaggedClass<any, Tag, Fields>;
23
-
24
- /**
25
- * An intent is an abstract description of an operation to be performed.
26
- * Intents allow actions to be performed across plugins.
27
- */
28
- export type Intent<Tag extends string, Fields extends IntentParams> = {
29
- _schema: IntentSchema<Tag, Fields>;
30
-
31
- /**
32
- * The id of the intent.
33
- */
34
- id: Tag;
35
-
36
- /**
37
- * Any data needed to perform the desired action.
38
- */
39
- data: IntentData<Fields>;
40
-
41
- /**
42
- * Whether or not the intent is being undone.
43
- */
44
- undo?: boolean;
45
- };
46
-
47
- export type AnyIntent = Intent<any, any>;
48
-
49
- /**
50
- * Chain of intents to be executed together.
51
- * The result of each intent is merged into the next intent's input data.
52
- */
53
- export type IntentChain<
54
- FirstTag extends string,
55
- LastTag extends string,
56
- FirstFields extends IntentParams,
57
- LastFields extends IntentParams,
58
- > = {
59
- first: Intent<FirstTag, FirstFields>;
60
- last: Intent<LastTag, LastFields>;
61
- all: AnyIntent[];
62
- };
63
-
64
- export type AnyIntentChain = IntentChain<any, any, any, any>;
65
-
66
- /**
67
- * Creates a typed intent.
68
- * @param schema Schema of the intent. Must be a tagged class with input and output schemas.
69
- * @param data Data fulfilling the input schema of the intent.
70
- * @param params.plugin Optional plugin ID to send the intent to.
71
- * @param params.undo Optional flag to indicate that the intent is being undone. Generally not set manually.
72
- */
73
- export const createIntent = <Tag extends string, Fields extends IntentParams>(
74
- schema: IntentSchema<Tag, Fields>,
75
- data: IntentData<Fields> = {},
76
- params: Pick<AnyIntent, 'undo'> = {},
77
- ): IntentChain<Tag, Tag, Fields, Fields> => {
78
- // The output of validateSync breaks proxy objects so this is just used for validation.
79
- // TODO(wittjosiah): Is there a better way to make theses types align?
80
- const _ = Schema.validateSync(schema.fields.input as Schema.Schema<any, any, unknown>)(data);
81
- const intent = {
82
- ...params,
83
- _schema: schema,
84
- id: schema._tag,
85
- data,
86
- } satisfies Intent<Tag, Fields>;
87
-
88
- return {
89
- first: intent,
90
- last: intent,
91
- all: [intent],
92
- };
93
- };
94
-
95
- // TODO(wittjosiah): Add a function for mapping the output of one intent to the input of another.
96
-
97
- /**
98
- * Chain two intents together.
99
- *
100
- * NOTE: Chaining of intents depends on the data inputs and outputs being structs.
101
- */
102
- export const chain =
103
- <
104
- FirstTag extends string,
105
- NextTag extends string,
106
- FirstFields extends IntentParams,
107
- LastFields extends IntentParams,
108
- NextFields extends IntentParams,
109
- >(
110
- schema: IntentSchema<NextTag, NextFields>,
111
- data: Omit<IntentData<NextFields>, keyof IntentResultData<LastFields>> = {},
112
- params: Pick<AnyIntent, 'undo'> = {},
113
- ) =>
114
- (
115
- intent: IntentChain<FirstTag, any, FirstFields, LastFields>,
116
- ): IntentChain<FirstTag, NextTag, FirstFields, NextFields> => {
117
- const intents = 'all' in intent ? intent.all : [intent];
118
- const first = intents[0];
119
- const last = {
120
- ...params,
121
- _schema: schema,
122
- id: schema._tag,
123
- data,
124
- } satisfies Intent<NextTag, NextFields>;
125
-
126
- return {
127
- first,
128
- last,
129
- all: [...intents, last],
130
- };
131
- };
132
-
133
- //
134
- // Intents
135
- //
136
-
137
- // NOTE: Should maintain compatibility with `i18next` (and @dxos/react-ui).
138
- // TODO(wittjosiah): Making this immutable breaks type compatibility.
139
- export const Label = Schema.Union(
140
- Schema.String,
141
- Schema.mutable(
142
- Schema.Tuple(
143
- Schema.String,
144
- Schema.mutable(
145
- Schema.Struct({
146
- ns: Schema.String,
147
- count: Schema.optional(Schema.Number),
148
- defaultValue: Schema.optional(Schema.String),
149
- }),
150
- ),
151
- ),
152
- ),
153
- );
154
- export type Label = Schema.Schema.Type<typeof Label>;
@@ -1,10 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type PluginMeta } from '@dxos/app-framework';
6
-
7
- export const meta: PluginMeta = {
8
- id: 'dxos.org/plugin/intent',
9
- name: 'Intent',
10
- };
@@ -1,34 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capabilities, Events } from '../common';
6
- import { contributes, defineModule, definePlugin, lazy } from '../core';
7
-
8
- import { meta } from './meta';
9
- import { translations } from './translations';
10
-
11
- export const SettingsPlugin = definePlugin(meta, () => [
12
- defineModule({
13
- id: `${meta.id}/module/store`,
14
- activatesOn: Events.Startup,
15
- activatesBefore: [Events.SetupSettings],
16
- activatesAfter: [Events.SettingsReady],
17
- activate: lazy(() => import('./store')),
18
- }),
19
- defineModule({
20
- id: `${meta.id}/module/translations`,
21
- activatesOn: Events.SetupTranslations,
22
- activate: () => contributes(Capabilities.Translations, translations),
23
- }),
24
- defineModule({
25
- id: `${meta.id}/module/intent-resolver`,
26
- activatesOn: Events.SetupIntentResolver,
27
- activate: lazy(() => import('./intent-resolver')),
28
- }),
29
- defineModule({
30
- id: `${meta.id}/module/app-graph-builder`,
31
- activatesOn: Events.SetupAppGraph,
32
- activate: lazy(() => import('./app-graph-builder')),
33
- }),
34
- ]);
@@ -1,25 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { meta } from './meta';
8
-
9
- // TODO(burdon): Document.
10
- export const SETTINGS_ID = '!dxos:settings';
11
- export const SETTINGS_KEY = 'settings';
12
-
13
- export namespace SettingsAction {
14
- export class Open extends Schema.TaggedClass<Open>()(`${meta.id}/open`, {
15
- input: Schema.Struct({
16
- plugin: Schema.optional(Schema.String),
17
- }),
18
- output: Schema.Void,
19
- }) {}
20
-
21
- export class OpenPluginRegistry extends Schema.TaggedClass<OpenPluginRegistry>()(`${meta.id}/open-plugin-registry`, {
22
- input: Schema.Void,
23
- output: Schema.Void,
24
- }) {}
25
- }
@@ -1,160 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Rx } from '@effect-rx/rx-react';
6
- import * as Function from 'effect/Function';
7
- import * as Option from 'effect/Option';
8
-
9
- import { ROOT_ID, createExtension } from '@dxos/app-graph';
10
- import { type SettingsStore, type SettingsValue } from '@dxos/local-storage';
11
- import { isNonNullable } from '@dxos/util';
12
-
13
- import { Capabilities } from '../common';
14
- import { type PluginContext, type PluginMeta, contributes } from '../core';
15
- import { createIntent } from '../plugin-intent';
16
-
17
- import { SETTINGS_ID, SETTINGS_KEY, SettingsAction } from './actions';
18
- import { meta } from './meta';
19
-
20
- export default (context: PluginContext) =>
21
- contributes(Capabilities.AppGraphBuilder, [
22
- createExtension({
23
- id: `${meta.id}/action`,
24
- actions: (node) =>
25
- Rx.make((get) =>
26
- Function.pipe(
27
- get(node),
28
- Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
29
- Option.map(() => [
30
- {
31
- id: meta.id,
32
- data: async () => {
33
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
34
- await dispatch(createIntent(SettingsAction.Open));
35
- },
36
- properties: {
37
- label: ['open settings label', { ns: meta.id }],
38
- icon: 'ph--gear--regular',
39
- disposition: 'menu',
40
- keyBinding: {
41
- macos: 'meta+,',
42
- windows: 'alt+,',
43
- },
44
- },
45
- },
46
- ]),
47
- Option.getOrElse(() => []),
48
- ),
49
- ),
50
- }),
51
- createExtension({
52
- id: `${meta.id}/core`,
53
- connector: (node) =>
54
- Rx.make((get) =>
55
- Function.pipe(
56
- get(node),
57
- Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
58
- Option.map(() => [
59
- {
60
- id: SETTINGS_ID,
61
- type: meta.id,
62
- properties: {
63
- label: ['app settings label', { ns: meta.id }],
64
- icon: 'ph--gear--regular',
65
- disposition: 'pin-end',
66
- position: 'hoist',
67
- testId: 'treeView.appSettings',
68
- },
69
- },
70
- ]),
71
- Option.getOrElse(() => []),
72
- ),
73
- ),
74
- }),
75
- createExtension({
76
- id: `${meta.id}/core-plugins`,
77
- connector: (node) =>
78
- Rx.make((get) =>
79
- Function.pipe(
80
- get(node),
81
- Option.flatMap((node) => (node.id !== SETTINGS_ID ? Option.none() : Option.some(node))),
82
- Option.map(() => {
83
- const manager = get(context.capability(Capabilities.PluginManager));
84
- const [settingsStore] = get(context.capabilities(Capabilities.SettingsStore));
85
- return [
86
- ...manager.plugins
87
- .filter((plugin) => manager.core.includes(plugin.meta.id))
88
- .map((plugin): [PluginMeta, SettingsStore<SettingsValue>] | null => {
89
- const settings = settingsStore?.getStore(plugin.meta.id);
90
- if (!settings) {
91
- return null;
92
- }
93
-
94
- return [plugin.meta, settings];
95
- })
96
- .filter(isNonNullable)
97
- .map(([meta, settings]) => ({
98
- id: `${SETTINGS_KEY}:${meta.id.replaceAll('/', ':')}`,
99
- type: 'category',
100
- data: settings,
101
- properties: {
102
- label: meta.name ?? meta.id,
103
- icon: meta.icon ?? 'ph--circle--regular',
104
- },
105
- })),
106
-
107
- {
108
- id: `${SETTINGS_KEY}:custom-plugins`,
109
- type: 'category',
110
- properties: {
111
- label: ['custom plugins label', { ns: meta.id }],
112
- icon: 'ph--squares-four--regular',
113
- role: 'branch',
114
- disposition: 'collection',
115
- },
116
- },
117
- ];
118
- }),
119
- Option.getOrElse(() => []),
120
- ),
121
- ),
122
- }),
123
- createExtension({
124
- id: `${meta.id}/custom-plugins`,
125
- connector: (node) =>
126
- Rx.make((get) =>
127
- Function.pipe(
128
- get(node),
129
- Option.flatMap((node) =>
130
- node.id !== `${SETTINGS_KEY}:custom-plugins` ? Option.none() : Option.some(node),
131
- ),
132
- Option.map(() => {
133
- const manager = get(context.capability(Capabilities.PluginManager));
134
- const [settingsStore] = get(context.capabilities(Capabilities.SettingsStore));
135
- return manager.plugins
136
- .filter((plugin) => !manager.core.includes(plugin.meta.id))
137
- .map((plugin): [PluginMeta, SettingsStore<SettingsValue>] | null => {
138
- const settings = settingsStore?.getStore(plugin.meta.id);
139
- if (!settings) {
140
- return null;
141
- }
142
-
143
- return [plugin.meta, settings];
144
- })
145
- .filter(isNonNullable)
146
- .map(([meta, settings]) => ({
147
- id: `${SETTINGS_KEY}:${meta.id.replaceAll('/', ':')}`,
148
- type: 'category',
149
- data: settings,
150
- properties: {
151
- label: meta.name ?? meta.id,
152
- icon: meta.icon ?? 'ph--circle--regular',
153
- },
154
- }));
155
- }),
156
- Option.getOrElse(() => []),
157
- ),
158
- ),
159
- }),
160
- ]);
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './actions';
6
- export * from './SettingsPlugin';
@@ -1,35 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import * as Function from 'effect/Function';
6
-
7
- import { Capabilities, LayoutAction } from '../common';
8
- import { contributes } from '../core';
9
- import { chain, createIntent, createResolver } from '../plugin-intent';
10
-
11
- import { SETTINGS_ID, SETTINGS_KEY, SettingsAction } from './actions';
12
-
13
- export default () =>
14
- contributes(
15
- Capabilities.IntentResolver,
16
- createResolver({
17
- intent: SettingsAction.Open,
18
- resolve: ({ plugin }) => {
19
- const openSettings = createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: SETTINGS_ID });
20
- return {
21
- intents: [
22
- plugin
23
- ? Function.pipe(
24
- openSettings,
25
- chain(LayoutAction.Open, {
26
- part: 'main',
27
- subject: [`${SETTINGS_KEY}:${plugin.replaceAll('/', ':')}`],
28
- }),
29
- )
30
- : openSettings,
31
- ],
32
- };
33
- },
34
- }),
35
- );
@@ -1,10 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type PluginMeta } from '@dxos/app-framework';
6
-
7
- export const meta: PluginMeta = {
8
- id: 'dxos.org/plugin/settings',
9
- name: 'Settings',
10
- };
@@ -1,33 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { RootSettingsStore } from '@dxos/local-storage';
6
-
7
- import { Capabilities } from '../common';
8
- import { type PluginContext, contributes } from '../core';
9
-
10
- export default (context: PluginContext) => {
11
- // TODO(wittjosiah): Replace with rx?
12
- const settingsStore = new RootSettingsStore();
13
-
14
- let previous: Capabilities.Settings[] = [];
15
- const registry = context.getCapability(Capabilities.RxRegistry);
16
- const cancel = registry.subscribe(
17
- context.capabilities(Capabilities.Settings),
18
- (allSettings) => {
19
- const added = allSettings.filter((setting) => !previous.includes(setting));
20
- const removed = previous.filter((setting) => !allSettings.includes(setting));
21
- previous = allSettings;
22
- added.forEach((setting) => {
23
- settingsStore.createStore(setting as any);
24
- });
25
- removed.forEach((setting) => {
26
- settingsStore.removeStore(setting.prefix);
27
- });
28
- },
29
- { immediate: true },
30
- );
31
-
32
- return contributes(Capabilities.SettingsStore, settingsStore, () => cancel());
33
- };
@@ -1,19 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Resource } from '@dxos/react-ui';
6
-
7
- import { meta } from './meta';
8
-
9
- export const translations = [
10
- {
11
- 'en-US': {
12
- [meta.id]: {
13
- 'open settings label': 'Open settings',
14
- 'app settings label': 'Settings',
15
- 'custom plugins label': 'Plugins',
16
- },
17
- },
18
- },
19
- ] as const satisfies Resource[];
@@ -1,56 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import React, { Component, type FC, type PropsWithChildren, type ReactNode } from 'react';
6
-
7
- type State = {
8
- error: Error | undefined;
9
- };
10
-
11
- export type ErrorBoundaryProps = PropsWithChildren<{
12
- data?: any;
13
- fallback?: FC<{ data?: any; error: Error }>;
14
- }>;
15
-
16
- /**
17
- * Surface error boundary.
18
- * For basic usage prefer providing a fallback component to `Surface`.
19
- *
20
- * Ref: https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary
21
- */
22
- export class ErrorBoundary extends Component<ErrorBoundaryProps, State> {
23
- static getDerivedStateFromError(error: Error): { error: Error } {
24
- return { error };
25
- }
26
-
27
- override state = { error: undefined };
28
-
29
- override componentDidUpdate(prevProps: ErrorBoundaryProps): void {
30
- if (prevProps.data !== this.props.data) {
31
- this.resetError();
32
- }
33
- }
34
-
35
- override render(): ReactNode {
36
- if (this.state.error) {
37
- const Fallback = this.props.fallback ?? DefaultFallback;
38
- return <Fallback data={this.props.data} error={this.state.error} />;
39
- }
40
-
41
- return this.props.children;
42
- }
43
-
44
- private resetError(): void {
45
- this.setState({ error: undefined });
46
- }
47
- }
48
-
49
- const DefaultFallback: NonNullable<ErrorBoundaryProps['fallback']> = ({ data, error }) => {
50
- return (
51
- <div className='flex flex-col gap-2 overflow-hidden border border-red-500 rounded-sm'>
52
- <h1 className='p-2'>ERROR: {error.message}</h1>
53
- <pre className='p-2 overflow-y-auto text-sm text-subdued'>{JSON.stringify(data, null, 2)}</pre>
54
- </div>
55
- );
56
- };
@@ -1,35 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { type Context, type Provider, createContext, useContext, useEffect } from 'react';
6
-
7
- import { raise } from '@dxos/debug';
8
- import { pick } from '@dxos/util';
9
-
10
- import { Capabilities } from '../common';
11
- import { type AnyIntentResolver, type IntentContext } from '../plugin-intent';
12
-
13
- import { usePluginManager } from './PluginManagerProvider';
14
-
15
- const IntentContext: Context<IntentContext | undefined> = createContext<IntentContext | undefined>(undefined);
16
-
17
- export const useIntentDispatcher = (): Pick<IntentContext, 'dispatch' | 'dispatchPromise'> => {
18
- const context = useContext(IntentContext) ?? raise(new Error('IntentContext not found'));
19
- return pick(context, ['dispatch', 'dispatchPromise']);
20
- };
21
-
22
- export const useIntentResolver = (module: string, resolver: AnyIntentResolver) => {
23
- const manager = usePluginManager();
24
- useEffect(() => {
25
- manager.context.contributeCapability({
26
- module,
27
- interface: Capabilities.IntentResolver,
28
- implementation: resolver,
29
- });
30
-
31
- return () => manager.context.removeCapability(Capabilities.IntentResolver, resolver);
32
- }, [module, resolver]);
33
- };
34
-
35
- export const IntentProvider: Provider<IntentContext | undefined> = IntentContext.Provider;
@@ -1,101 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Meta, type StoryObj } from '@storybook/react-vite';
6
- import React, { useCallback, useState } from 'react';
7
-
8
- import { faker } from '@dxos/random';
9
- import { Button, List, ListItem } from '@dxos/react-ui';
10
- import { withTheme } from '@dxos/react-ui/testing';
11
-
12
- import { Capabilities, createSurface } from '../common';
13
- import { type PluginManager } from '../core';
14
- import { setupPluginManager } from '../testing';
15
-
16
- import { PluginManagerProvider, usePluginManager } from './PluginManagerProvider';
17
- import { Surface, useSurfaces } from './Surface';
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 Component = () => {
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
- const DefaultStory = (props: { manager: PluginManager }) => {
81
- return (
82
- <PluginManagerProvider value={props.manager}>
83
- <Component />
84
- </PluginManagerProvider>
85
- );
86
- };
87
-
88
- const meta = {
89
- title: 'sdk/app-framework/Surface',
90
- render: DefaultStory,
91
- decorators: [withTheme],
92
- args: {
93
- manager: setupPluginManager(),
94
- },
95
- } satisfies Meta<typeof DefaultStory>;
96
-
97
- export default meta;
98
-
99
- type Story = StoryObj<typeof meta>;
100
-
101
- export const Default: Story = {};