@dxos/plugin-deck 0.8.4-main.4a85c3132b → 0.8.4-main.51f1e5ca51

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 (548) hide show
  1. package/dist/lib/browser/add-toast-JWJOQNVL.mjs +24 -0
  2. package/dist/lib/browser/add-toast-JWJOQNVL.mjs.map +7 -0
  3. package/dist/lib/browser/adjust-RG6LIQLX.mjs +95 -0
  4. package/dist/lib/browser/adjust-RG6LIQLX.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-GLB73Q6U.mjs +22 -0
  6. package/dist/lib/browser/chunk-GLB73Q6U.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  8. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-BJDEG7YZ.mjs → chunk-LSZ47AY3.mjs} +3 -29
  10. package/dist/lib/browser/chunk-LSZ47AY3.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-MARE7ZFK.mjs +215 -0
  12. package/dist/lib/browser/chunk-MARE7ZFK.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-XM263CQU.mjs +72 -0
  14. package/dist/lib/browser/chunk-XM263CQU.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-SKBPLX5T.mjs → chunk-ZYYOSX5I.mjs} +22 -34
  16. package/dist/lib/browser/chunk-ZYYOSX5I.mjs.map +7 -0
  17. package/dist/lib/browser/close-URA766JO.mjs +44 -0
  18. package/dist/lib/browser/close-URA766JO.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +78 -125
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/open-OPFOOHCQ.mjs +147 -0
  23. package/dist/lib/browser/open-OPFOOHCQ.mjs.map +7 -0
  24. package/dist/lib/browser/operations/index.mjs +13 -0
  25. package/dist/lib/browser/operations/index.mjs.map +7 -0
  26. package/dist/lib/browser/revert-workspace-KP2Y4QLG.mjs +21 -0
  27. package/dist/lib/browser/revert-workspace-KP2Y4QLG.mjs.map +7 -0
  28. package/dist/lib/browser/scroll-into-view-S5H2FGSQ.mjs +21 -0
  29. package/dist/lib/browser/scroll-into-view-S5H2FGSQ.mjs.map +7 -0
  30. package/dist/lib/browser/set-AEKFFSIX.mjs +37 -0
  31. package/dist/lib/browser/set-AEKFFSIX.mjs.map +7 -0
  32. package/dist/lib/browser/set-layout-mode-CWIGQDFZ.mjs +85 -0
  33. package/dist/lib/browser/set-layout-mode-CWIGQDFZ.mjs.map +7 -0
  34. package/dist/lib/browser/show-undo-XFVEDKYC.mjs +59 -0
  35. package/dist/lib/browser/show-undo-XFVEDKYC.mjs.map +7 -0
  36. package/dist/lib/browser/switch-workspace-DSAAXZSI.mjs +60 -0
  37. package/dist/lib/browser/switch-workspace-DSAAXZSI.mjs.map +7 -0
  38. package/dist/lib/browser/translations.mjs +57 -0
  39. package/dist/lib/browser/translations.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +8 -16
  41. package/dist/lib/browser/update-companion-IDBBBHT3.mjs +32 -0
  42. package/dist/lib/browser/update-companion-IDBBBHT3.mjs.map +7 -0
  43. package/dist/lib/browser/update-complementary-55PNO5MD.mjs +28 -0
  44. package/dist/lib/browser/update-complementary-55PNO5MD.mjs.map +7 -0
  45. package/dist/lib/browser/update-dialog-VNARIANC.mjs +29 -0
  46. package/dist/lib/browser/update-dialog-VNARIANC.mjs.map +7 -0
  47. package/dist/lib/browser/update-plank-size-H63PRRXS.mjs +28 -0
  48. package/dist/lib/browser/update-plank-size-H63PRRXS.mjs.map +7 -0
  49. package/dist/lib/browser/update-popover-ODTPZ3JL.mjs +33 -0
  50. package/dist/lib/browser/update-popover-ODTPZ3JL.mjs.map +7 -0
  51. package/dist/lib/browser/update-sidebar-JDVQ36WK.mjs +25 -0
  52. package/dist/lib/browser/update-sidebar-JDVQ36WK.mjs.map +7 -0
  53. package/dist/lib/node-esm/add-toast-JUTN4GTI.mjs +25 -0
  54. package/dist/lib/node-esm/add-toast-JUTN4GTI.mjs.map +7 -0
  55. package/dist/lib/node-esm/adjust-P5QK33P4.mjs +96 -0
  56. package/dist/lib/node-esm/adjust-P5QK33P4.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-FO7YDJZ3.mjs +216 -0
  58. package/dist/lib/node-esm/chunk-FO7YDJZ3.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  60. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-DGTRKKWZ.mjs → chunk-KY7ZCANM.mjs} +3 -29
  62. package/dist/lib/node-esm/chunk-KY7ZCANM.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-L7OVX7CV.mjs +73 -0
  64. package/dist/lib/node-esm/chunk-L7OVX7CV.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-SHSR2CYO.mjs +24 -0
  66. package/dist/lib/node-esm/chunk-SHSR2CYO.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-IR6ODCNC.mjs → chunk-WGBUTT5K.mjs} +22 -34
  68. package/dist/lib/node-esm/chunk-WGBUTT5K.mjs.map +7 -0
  69. package/dist/lib/node-esm/close-U5VC7ERP.mjs +45 -0
  70. package/dist/lib/node-esm/close-U5VC7ERP.mjs.map +7 -0
  71. package/dist/lib/node-esm/index.mjs +78 -125
  72. package/dist/lib/node-esm/index.mjs.map +4 -4
  73. package/dist/lib/node-esm/meta.json +1 -1
  74. package/dist/lib/node-esm/open-4B3P5XGS.mjs +148 -0
  75. package/dist/lib/node-esm/open-4B3P5XGS.mjs.map +7 -0
  76. package/dist/lib/node-esm/operations/index.mjs +14 -0
  77. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  78. package/dist/lib/node-esm/revert-workspace-QD63M2U7.mjs +22 -0
  79. package/dist/lib/node-esm/revert-workspace-QD63M2U7.mjs.map +7 -0
  80. package/dist/lib/node-esm/scroll-into-view-G5M2EWK7.mjs +22 -0
  81. package/dist/lib/node-esm/scroll-into-view-G5M2EWK7.mjs.map +7 -0
  82. package/dist/lib/node-esm/set-ERJCXZBY.mjs +38 -0
  83. package/dist/lib/node-esm/set-ERJCXZBY.mjs.map +7 -0
  84. package/dist/lib/node-esm/set-layout-mode-BOZD7744.mjs +86 -0
  85. package/dist/lib/node-esm/set-layout-mode-BOZD7744.mjs.map +7 -0
  86. package/dist/lib/node-esm/show-undo-H5BRBYDC.mjs +60 -0
  87. package/dist/lib/node-esm/show-undo-H5BRBYDC.mjs.map +7 -0
  88. package/dist/lib/node-esm/switch-workspace-F54PXE5N.mjs +61 -0
  89. package/dist/lib/node-esm/switch-workspace-F54PXE5N.mjs.map +7 -0
  90. package/dist/lib/node-esm/translations.mjs +58 -0
  91. package/dist/lib/node-esm/translations.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +8 -16
  93. package/dist/lib/node-esm/update-companion-47LMKL5R.mjs +33 -0
  94. package/dist/lib/node-esm/update-companion-47LMKL5R.mjs.map +7 -0
  95. package/dist/lib/node-esm/update-complementary-7VYYG7L2.mjs +29 -0
  96. package/dist/lib/node-esm/update-complementary-7VYYG7L2.mjs.map +7 -0
  97. package/dist/lib/node-esm/update-dialog-CABL7OWW.mjs +30 -0
  98. package/dist/lib/node-esm/update-dialog-CABL7OWW.mjs.map +7 -0
  99. package/dist/lib/node-esm/update-plank-size-WYTSMZF2.mjs +29 -0
  100. package/dist/lib/node-esm/update-plank-size-WYTSMZF2.mjs.map +7 -0
  101. package/dist/lib/node-esm/update-popover-YZDYGL7G.mjs +34 -0
  102. package/dist/lib/node-esm/update-popover-YZDYGL7G.mjs.map +7 -0
  103. package/dist/lib/node-esm/update-sidebar-HV736LUN.mjs +26 -0
  104. package/dist/lib/node-esm/update-sidebar-HV736LUN.mjs.map +7 -0
  105. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/check-app-scheme.d.ts +19 -0
  108. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/index.d.ts +198 -9
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  112. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/settings.d.ts +7 -0
  116. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +38 -22
  118. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/{tools/tools.d.ts → tools.d.ts} +1 -1
  120. package/dist/types/src/capabilities/tools.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/{url-handler/url-handler.d.ts → url-handler.d.ts} +1 -1
  122. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -0
  123. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +6 -0
  124. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -0
  125. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +61 -0
  126. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -0
  127. package/dist/types/src/components/DeckSettings/index.d.ts +2 -0
  128. package/dist/types/src/components/DeckSettings/index.d.ts.map +1 -0
  129. package/dist/types/src/components/Matrix/Matrix.d.ts +41 -0
  130. package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -0
  131. package/dist/types/src/components/Matrix/Matrix.stories.d.ts +17 -0
  132. package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -0
  133. package/dist/types/src/components/Matrix/index.d.ts +3 -0
  134. package/dist/types/src/components/Matrix/index.d.ts.map +1 -0
  135. package/dist/types/src/components/index.d.ts +3 -1
  136. package/dist/types/src/components/index.d.ts.map +1 -1
  137. package/dist/types/src/{components/DeckLayout → containers/Deck}/Banner.d.ts +1 -1
  138. package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -0
  139. package/dist/types/src/containers/Deck/Deck.d.ts +25 -0
  140. package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -0
  141. package/dist/types/src/containers/Deck/Deck.stories.d.ts +61 -0
  142. package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -0
  143. package/dist/types/src/containers/Deck/DeckContent.d.ts +7 -0
  144. package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -0
  145. package/dist/types/src/containers/Deck/DeckRoot.d.ts +39 -0
  146. package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -0
  147. package/dist/types/src/containers/Deck/DeckViewport.d.ts +16 -0
  148. package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -0
  149. package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -0
  150. package/dist/types/src/containers/Deck/index.d.ts +2 -0
  151. package/dist/types/src/containers/Deck/index.d.ts.map +1 -0
  152. package/dist/types/src/{components → containers}/DeckLayout/ActiveNode.d.ts.map +1 -1
  153. package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -0
  154. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +63 -0
  155. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -0
  156. package/dist/types/src/containers/DeckLayout/Dialog.d.ts.map +1 -0
  157. package/dist/types/src/containers/DeckLayout/Fallback.d.ts +2 -0
  158. package/dist/types/src/containers/DeckLayout/Fallback.d.ts.map +1 -0
  159. package/dist/types/src/containers/DeckLayout/Popover.d.ts +5 -0
  160. package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -0
  161. package/dist/types/src/{components → containers}/DeckLayout/Toast.d.ts +1 -1
  162. package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -0
  163. package/dist/types/src/containers/DeckLayout/constants.d.ts.map +1 -0
  164. package/dist/types/src/containers/DeckLayout/index.d.ts +4 -0
  165. package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -0
  166. package/dist/types/src/containers/Plank/Plank.d.ts +17 -0
  167. package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -0
  168. package/dist/types/src/containers/Plank/Plank.stories.d.ts +61 -0
  169. package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -0
  170. package/dist/types/src/containers/Plank/PlankComponent.d.ts +17 -0
  171. package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +1 -0
  172. package/dist/types/src/containers/Plank/PlankContent.d.ts +10 -0
  173. package/dist/types/src/containers/Plank/PlankContent.d.ts.map +1 -0
  174. package/dist/types/src/{components → containers}/Plank/PlankControls.d.ts +5 -6
  175. package/dist/types/src/containers/Plank/PlankControls.d.ts.map +1 -0
  176. package/dist/types/src/{components → containers}/Plank/PlankError.d.ts +2 -2
  177. package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -0
  178. package/dist/types/src/{components → containers}/Plank/PlankHeading.d.ts +3 -2
  179. package/dist/types/src/containers/Plank/PlankHeading.d.ts.map +1 -0
  180. package/dist/types/src/{components → containers}/Plank/PlankLoading.d.ts.map +1 -1
  181. package/dist/types/src/containers/Plank/PlankRoot.d.ts +37 -0
  182. package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -0
  183. package/dist/types/src/containers/Plank/index.d.ts +4 -0
  184. package/dist/types/src/containers/Plank/index.d.ts.map +1 -0
  185. package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -0
  186. package/dist/types/src/containers/Sidebar/Sidebar.d.ts.map +1 -0
  187. package/dist/types/src/{components → containers}/Sidebar/SidebarButton.d.ts +1 -1
  188. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -0
  189. package/dist/types/src/{components → containers}/Sidebar/index.d.ts.map +1 -1
  190. package/dist/types/src/containers/index.d.ts +4 -2
  191. package/dist/types/src/containers/index.d.ts.map +1 -1
  192. package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
  193. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
  194. package/dist/types/src/hooks/useDeckCompanions.d.ts +2 -2
  195. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  196. package/dist/types/src/hooks/useDeckState.d.ts +3 -3
  197. package/dist/types/src/hooks/useDeckState.d.ts.map +1 -1
  198. package/dist/types/src/hooks/useHoistStatusbar.d.ts +1 -1
  199. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  202. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
  203. package/dist/types/src/layout.d.ts +20 -9
  204. package/dist/types/src/layout.d.ts.map +1 -1
  205. package/dist/types/src/layout.test.d.ts +2 -0
  206. package/dist/types/src/layout.test.d.ts.map +1 -0
  207. package/dist/types/src/operations/add-toast.d.ts +5 -0
  208. package/dist/types/src/operations/add-toast.d.ts.map +1 -0
  209. package/dist/types/src/operations/adjust.d.ts +5 -0
  210. package/dist/types/src/operations/adjust.d.ts.map +1 -0
  211. package/dist/types/src/operations/close.d.ts +5 -0
  212. package/dist/types/src/operations/close.d.ts.map +1 -0
  213. package/dist/types/src/operations/definitions.d.ts +15 -0
  214. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  215. package/dist/types/src/operations/helpers.d.ts +3 -0
  216. package/dist/types/src/operations/helpers.d.ts.map +1 -0
  217. package/dist/types/src/operations/index.d.ts +4 -0
  218. package/dist/types/src/operations/index.d.ts.map +1 -0
  219. package/dist/types/src/operations/open.d.ts +5 -0
  220. package/dist/types/src/operations/open.d.ts.map +1 -0
  221. package/dist/types/src/operations/revert-workspace.d.ts +5 -0
  222. package/dist/types/src/operations/revert-workspace.d.ts.map +1 -0
  223. package/dist/types/src/operations/scroll-into-view.d.ts +5 -0
  224. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -0
  225. package/dist/types/src/operations/set-layout-mode.d.ts +9 -0
  226. package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -0
  227. package/dist/types/src/operations/set.d.ts +5 -0
  228. package/dist/types/src/operations/set.d.ts.map +1 -0
  229. package/dist/types/src/operations/show-undo.d.ts +5 -0
  230. package/dist/types/src/operations/show-undo.d.ts.map +1 -0
  231. package/dist/types/src/operations/switch-workspace.d.ts +5 -0
  232. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -0
  233. package/dist/types/src/operations/update-companion.d.ts +5 -0
  234. package/dist/types/src/operations/update-companion.d.ts.map +1 -0
  235. package/dist/types/src/operations/update-complementary.d.ts +5 -0
  236. package/dist/types/src/operations/update-complementary.d.ts.map +1 -0
  237. package/dist/types/src/operations/update-dialog.d.ts +5 -0
  238. package/dist/types/src/operations/update-dialog.d.ts.map +1 -0
  239. package/dist/types/src/operations/update-plank-size.d.ts +5 -0
  240. package/dist/types/src/operations/update-plank-size.d.ts.map +1 -0
  241. package/dist/types/src/operations/update-popover.d.ts +5 -0
  242. package/dist/types/src/operations/update-popover.d.ts.map +1 -0
  243. package/dist/types/src/operations/update-sidebar.d.ts +5 -0
  244. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -0
  245. package/dist/types/src/translations.d.ts +42 -56
  246. package/dist/types/src/translations.d.ts.map +1 -1
  247. package/dist/types/src/types/Settings.d.ts +11 -0
  248. package/dist/types/src/types/Settings.d.ts.map +1 -0
  249. package/dist/types/src/types/capabilities.d.ts +41 -40
  250. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  251. package/dist/types/src/types/events.d.ts.map +1 -1
  252. package/dist/types/src/types/index.d.ts +1 -0
  253. package/dist/types/src/types/index.d.ts.map +1 -1
  254. package/dist/types/src/types/schema.d.ts +44 -104
  255. package/dist/types/src/types/schema.d.ts.map +1 -1
  256. package/dist/types/src/util/index.d.ts +2 -1
  257. package/dist/types/src/util/index.d.ts.map +1 -1
  258. package/dist/types/src/util/layoutAppliesTopbar.d.ts +1 -1
  259. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  260. package/dist/types/src/util/plank-url-params.d.ts +14 -0
  261. package/dist/types/src/util/plank-url-params.d.ts.map +1 -0
  262. package/dist/types/src/util/plank-url-params.test.d.ts +2 -0
  263. package/dist/types/src/util/plank-url-params.test.d.ts.map +1 -0
  264. package/dist/types/src/util/sanitize-persisted-state.d.ts +19 -0
  265. package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -0
  266. package/dist/types/src/util/sanitize-persisted-state.test.d.ts +2 -0
  267. package/dist/types/src/util/sanitize-persisted-state.test.d.ts.map +1 -0
  268. package/dist/types/src/util/set-active.d.ts +2 -2
  269. package/dist/types/src/util/set-active.d.ts.map +1 -1
  270. package/dist/types/src/util/set-active.test.d.ts +2 -0
  271. package/dist/types/src/util/set-active.test.d.ts.map +1 -0
  272. package/dist/types/tsconfig.tsbuildinfo +1 -1
  273. package/package.json +71 -45
  274. package/src/DeckPlugin.ts +10 -16
  275. package/src/capabilities/app-graph-builder.ts +127 -0
  276. package/src/capabilities/check-app-scheme.ts +139 -0
  277. package/src/capabilities/index.ts +14 -10
  278. package/src/capabilities/operation-handler.ts +16 -0
  279. package/src/capabilities/{react-root/react-root.tsx → react-root.tsx} +3 -3
  280. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +12 -14
  281. package/src/capabilities/{settings/settings.ts → settings.ts} +4 -6
  282. package/src/capabilities/{state/state.ts → state.ts} +13 -27
  283. package/src/capabilities/{tools/tools.ts → tools.ts} +6 -6
  284. package/src/capabilities/url-handler.ts +231 -0
  285. package/src/components/DeckSettings/DeckSettings.stories.tsx +38 -0
  286. package/src/components/DeckSettings/DeckSettings.tsx +34 -0
  287. package/src/components/DeckSettings/index.ts +5 -0
  288. package/src/components/Matrix/Matrix.stories.tsx +220 -0
  289. package/src/components/Matrix/Matrix.tsx +205 -0
  290. package/src/components/Matrix/SPEC.md +219 -0
  291. package/src/components/Matrix/index.ts +6 -0
  292. package/src/components/index.ts +6 -2
  293. package/src/{components/DeckLayout → containers/Deck}/Banner.tsx +5 -3
  294. package/src/containers/Deck/Deck.stories.tsx +81 -0
  295. package/src/containers/Deck/Deck.tsx +21 -0
  296. package/src/containers/Deck/DeckContent.tsx +105 -0
  297. package/src/containers/Deck/DeckRoot.tsx +50 -0
  298. package/src/containers/Deck/DeckViewport.tsx +456 -0
  299. package/src/containers/Deck/index.ts +5 -0
  300. package/src/{components → containers}/DeckLayout/ActiveNode.tsx +7 -3
  301. package/src/containers/DeckLayout/DeckLayout.stories.tsx +397 -0
  302. package/src/containers/DeckLayout/DeckLayout.tsx +62 -0
  303. package/src/{components → containers}/DeckLayout/Dialog.tsx +11 -4
  304. package/src/{components → containers}/DeckLayout/Fallback.tsx +3 -3
  305. package/src/{components → containers}/DeckLayout/Popover.tsx +62 -43
  306. package/src/{components → containers}/DeckLayout/Toast.tsx +1 -1
  307. package/src/{components → containers}/DeckLayout/constants.ts +1 -0
  308. package/src/{components → containers}/DeckLayout/index.ts +3 -2
  309. package/src/containers/Plank/Plank.stories.tsx +108 -0
  310. package/src/containers/Plank/Plank.tsx +22 -0
  311. package/src/containers/Plank/PlankComponent.tsx +217 -0
  312. package/src/containers/Plank/PlankContent.tsx +45 -0
  313. package/src/{components → containers}/Plank/PlankControls.tsx +37 -28
  314. package/src/{components → containers}/Plank/PlankError.tsx +20 -4
  315. package/src/{components → containers}/Plank/PlankHeading.tsx +53 -42
  316. package/src/containers/Plank/PlankRoot.tsx +49 -0
  317. package/src/{components → containers}/Plank/index.ts +0 -2
  318. package/src/{components → containers}/Sidebar/ComplementarySidebar.tsx +65 -80
  319. package/src/{components → containers}/Sidebar/Sidebar.tsx +8 -6
  320. package/src/{components → containers}/Sidebar/SidebarButton.tsx +16 -10
  321. package/src/containers/index.ts +5 -2
  322. package/src/hooks/useCompanions.ts +1 -1
  323. package/src/hooks/useDeckCompanions.ts +3 -7
  324. package/src/hooks/useDeckState.ts +11 -20
  325. package/src/hooks/useHoistStatusbar.ts +1 -1
  326. package/src/hooks/useSelectedCompanion.ts +4 -10
  327. package/src/layout.test.ts +59 -0
  328. package/src/layout.ts +38 -40
  329. package/src/meta.ts +1 -1
  330. package/src/operations/add-toast.ts +24 -0
  331. package/src/operations/adjust.ts +83 -0
  332. package/src/operations/close.ts +35 -0
  333. package/src/operations/definitions.ts +49 -0
  334. package/src/operations/helpers.ts +22 -0
  335. package/src/operations/index.ts +26 -0
  336. package/src/operations/open.ts +184 -0
  337. package/src/operations/revert-workspace.ts +22 -0
  338. package/src/operations/scroll-into-view.ts +24 -0
  339. package/src/operations/set-layout-mode.ts +84 -0
  340. package/src/operations/set.ts +36 -0
  341. package/src/operations/show-undo.ts +47 -0
  342. package/src/operations/switch-workspace.ts +60 -0
  343. package/src/operations/update-companion.ts +35 -0
  344. package/src/operations/update-complementary.ts +33 -0
  345. package/src/operations/update-dialog.ts +34 -0
  346. package/src/operations/update-plank-size.ts +29 -0
  347. package/src/operations/update-popover.ts +36 -0
  348. package/src/operations/update-sidebar.ts +28 -0
  349. package/src/translations.ts +42 -55
  350. package/src/types/Settings.ts +42 -0
  351. package/src/types/capabilities.ts +8 -6
  352. package/src/types/events.ts +2 -2
  353. package/src/types/index.ts +1 -0
  354. package/src/types/schema.ts +36 -116
  355. package/src/util/index.ts +2 -1
  356. package/src/util/layoutAppliesTopbar.ts +1 -1
  357. package/src/util/plank-url-params.test.ts +85 -0
  358. package/src/util/plank-url-params.ts +36 -0
  359. package/src/util/sanitize-persisted-state.test.ts +79 -0
  360. package/src/util/sanitize-persisted-state.ts +52 -0
  361. package/src/util/set-active.test.ts +106 -0
  362. package/src/util/set-active.ts +2 -2
  363. package/src/vite-env.d.ts +5 -0
  364. package/dist/lib/browser/Banner-DR6B7XTO.mjs +0 -15
  365. package/dist/lib/browser/Banner-DR6B7XTO.mjs.map +0 -7
  366. package/dist/lib/browser/DeckSettings-HB5TKG2F.mjs +0 -96
  367. package/dist/lib/browser/DeckSettings-HB5TKG2F.mjs.map +0 -7
  368. package/dist/lib/browser/app-graph-builder-22XAL7YE.mjs +0 -123
  369. package/dist/lib/browser/app-graph-builder-22XAL7YE.mjs.map +0 -7
  370. package/dist/lib/browser/check-app-scheme-ZV3QWNNZ.mjs +0 -33
  371. package/dist/lib/browser/check-app-scheme-ZV3QWNNZ.mjs.map +0 -7
  372. package/dist/lib/browser/chunk-BJDEG7YZ.mjs.map +0 -7
  373. package/dist/lib/browser/chunk-FBL4WVYZ.mjs +0 -16
  374. package/dist/lib/browser/chunk-FBL4WVYZ.mjs.map +0 -7
  375. package/dist/lib/browser/chunk-OAPMV5ZR.mjs +0 -280
  376. package/dist/lib/browser/chunk-OAPMV5ZR.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-Q4GUCIRE.mjs +0 -200
  378. package/dist/lib/browser/chunk-Q4GUCIRE.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-SKBPLX5T.mjs.map +0 -7
  380. package/dist/lib/browser/chunk-YGOOWRJE.mjs +0 -1390
  381. package/dist/lib/browser/chunk-YGOOWRJE.mjs.map +0 -7
  382. package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs +0 -580
  383. package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs.map +0 -7
  384. package/dist/lib/browser/react-root-4ESZAM6D.mjs +0 -49
  385. package/dist/lib/browser/react-root-4ESZAM6D.mjs.map +0 -7
  386. package/dist/lib/browser/react-surface-KYQGCALN.mjs +0 -44
  387. package/dist/lib/browser/react-surface-KYQGCALN.mjs.map +0 -7
  388. package/dist/lib/browser/settings-RY2TBSGP.mjs +0 -40
  389. package/dist/lib/browser/settings-RY2TBSGP.mjs.map +0 -7
  390. package/dist/lib/browser/state-CSTTMJ43.mjs +0 -106
  391. package/dist/lib/browser/state-CSTTMJ43.mjs.map +0 -7
  392. package/dist/lib/browser/toolkit-EONRPYA5.mjs +0 -55
  393. package/dist/lib/browser/toolkit-EONRPYA5.mjs.map +0 -7
  394. package/dist/lib/browser/url-handler-EM3SYHHX.mjs +0 -95
  395. package/dist/lib/browser/url-handler-EM3SYHHX.mjs.map +0 -7
  396. package/dist/lib/node-esm/Banner-HR7DPUZU.mjs +0 -16
  397. package/dist/lib/node-esm/Banner-HR7DPUZU.mjs.map +0 -7
  398. package/dist/lib/node-esm/DeckSettings-MWTR7HU2.mjs +0 -97
  399. package/dist/lib/node-esm/DeckSettings-MWTR7HU2.mjs.map +0 -7
  400. package/dist/lib/node-esm/app-graph-builder-GNNNCWGN.mjs +0 -124
  401. package/dist/lib/node-esm/app-graph-builder-GNNNCWGN.mjs.map +0 -7
  402. package/dist/lib/node-esm/check-app-scheme-ZNISVRFH.mjs +0 -34
  403. package/dist/lib/node-esm/check-app-scheme-ZNISVRFH.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-DGTRKKWZ.mjs.map +0 -7
  405. package/dist/lib/node-esm/chunk-EGFOT3DE.mjs +0 -18
  406. package/dist/lib/node-esm/chunk-EGFOT3DE.mjs.map +0 -7
  407. package/dist/lib/node-esm/chunk-IR6ODCNC.mjs.map +0 -7
  408. package/dist/lib/node-esm/chunk-L2NPJPGL.mjs +0 -281
  409. package/dist/lib/node-esm/chunk-L2NPJPGL.mjs.map +0 -7
  410. package/dist/lib/node-esm/chunk-O4IOJICP.mjs +0 -201
  411. package/dist/lib/node-esm/chunk-O4IOJICP.mjs.map +0 -7
  412. package/dist/lib/node-esm/chunk-Z43MBISY.mjs +0 -1391
  413. package/dist/lib/node-esm/chunk-Z43MBISY.mjs.map +0 -7
  414. package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs +0 -581
  415. package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs.map +0 -7
  416. package/dist/lib/node-esm/react-root-YO7IIC75.mjs +0 -50
  417. package/dist/lib/node-esm/react-root-YO7IIC75.mjs.map +0 -7
  418. package/dist/lib/node-esm/react-surface-G7VRKT4U.mjs +0 -45
  419. package/dist/lib/node-esm/react-surface-G7VRKT4U.mjs.map +0 -7
  420. package/dist/lib/node-esm/settings-GYLWWOBK.mjs +0 -41
  421. package/dist/lib/node-esm/settings-GYLWWOBK.mjs.map +0 -7
  422. package/dist/lib/node-esm/state-RQXTBWUX.mjs +0 -107
  423. package/dist/lib/node-esm/state-RQXTBWUX.mjs.map +0 -7
  424. package/dist/lib/node-esm/toolkit-EU3Z2R4H.mjs +0 -56
  425. package/dist/lib/node-esm/toolkit-EU3Z2R4H.mjs.map +0 -7
  426. package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs +0 -96
  427. package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs.map +0 -7
  428. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  429. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  430. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  431. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +0 -5
  432. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +0 -1
  433. package/dist/types/src/capabilities/check-app-scheme/index.d.ts +0 -3
  434. package/dist/types/src/capabilities/check-app-scheme/index.d.ts.map +0 -1
  435. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  436. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  437. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  438. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  439. package/dist/types/src/capabilities/react-root/index.d.ts +0 -6
  440. package/dist/types/src/capabilities/react-root/index.d.ts.map +0 -1
  441. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +0 -1
  442. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  443. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  444. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  445. package/dist/types/src/capabilities/settings/index.d.ts +0 -19
  446. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/settings/settings.d.ts +0 -22
  448. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  449. package/dist/types/src/capabilities/state/index.d.ts +0 -172
  450. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  451. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  452. package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
  453. package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
  454. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +0 -27
  455. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
  456. package/dist/types/src/capabilities/tools/index.d.ts +0 -3
  457. package/dist/types/src/capabilities/tools/index.d.ts.map +0 -1
  458. package/dist/types/src/capabilities/tools/tools.d.ts.map +0 -1
  459. package/dist/types/src/capabilities/url-handler/index.d.ts +0 -3
  460. package/dist/types/src/capabilities/url-handler/index.d.ts.map +0 -1
  461. package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +0 -1
  462. package/dist/types/src/components/DeckLayout/Banner.d.ts.map +0 -1
  463. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts +0 -3
  464. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +0 -1
  465. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +0 -1
  466. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +0 -75
  467. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +0 -1
  468. package/dist/types/src/components/DeckLayout/DeckMain.d.ts +0 -3
  469. package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +0 -1
  470. package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +0 -1
  471. package/dist/types/src/components/DeckLayout/Fallback.d.ts +0 -3
  472. package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +0 -1
  473. package/dist/types/src/components/DeckLayout/Popover.d.ts +0 -5
  474. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +0 -1
  475. package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +0 -1
  476. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +0 -1
  477. package/dist/types/src/components/DeckLayout/Topbar.d.ts +0 -3
  478. package/dist/types/src/components/DeckLayout/Topbar.d.ts.map +0 -1
  479. package/dist/types/src/components/DeckLayout/constants.d.ts.map +0 -1
  480. package/dist/types/src/components/DeckLayout/index.d.ts +0 -4
  481. package/dist/types/src/components/DeckLayout/index.d.ts.map +0 -1
  482. package/dist/types/src/components/Plank/Plank.d.ts +0 -27
  483. package/dist/types/src/components/Plank/Plank.d.ts.map +0 -1
  484. package/dist/types/src/components/Plank/Plank.stories.d.ts +0 -108
  485. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +0 -1
  486. package/dist/types/src/components/Plank/PlankControls.d.ts.map +0 -1
  487. package/dist/types/src/components/Plank/PlankError.d.ts.map +0 -1
  488. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +0 -1
  489. package/dist/types/src/components/Plank/index.d.ts +0 -6
  490. package/dist/types/src/components/Plank/index.d.ts.map +0 -1
  491. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +0 -1
  492. package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +0 -1
  493. package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +0 -1
  494. package/dist/types/src/components/fragments.d.ts +0 -7
  495. package/dist/types/src/components/fragments.d.ts.map +0 -1
  496. package/dist/types/src/containers/Banner/Banner.d.ts +0 -2
  497. package/dist/types/src/containers/Banner/Banner.d.ts.map +0 -1
  498. package/dist/types/src/containers/Banner/index.d.ts +0 -3
  499. package/dist/types/src/containers/Banner/index.d.ts.map +0 -1
  500. package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts +0 -8
  501. package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts.map +0 -1
  502. package/dist/types/src/containers/DeckSettings/index.d.ts +0 -3
  503. package/dist/types/src/containers/DeckSettings/index.d.ts.map +0 -1
  504. package/dist/types/src/util/overscroll.d.ts +0 -47
  505. package/dist/types/src/util/overscroll.d.ts.map +0 -1
  506. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -119
  507. package/src/capabilities/app-graph-builder/index.ts +0 -7
  508. package/src/capabilities/check-app-scheme/check-app-scheme.ts +0 -45
  509. package/src/capabilities/check-app-scheme/index.ts +0 -7
  510. package/src/capabilities/operation-resolver/index.ts +0 -10
  511. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -560
  512. package/src/capabilities/react-root/index.ts +0 -7
  513. package/src/capabilities/react-surface/index.ts +0 -7
  514. package/src/capabilities/settings/index.ts +0 -7
  515. package/src/capabilities/state/index.ts +0 -7
  516. package/src/capabilities/toolkit/index.ts +0 -7
  517. package/src/capabilities/toolkit/toolkit.ts +0 -64
  518. package/src/capabilities/tools/index.ts +0 -7
  519. package/src/capabilities/url-handler/index.ts +0 -7
  520. package/src/capabilities/url-handler/url-handler.ts +0 -96
  521. package/src/components/DeckLayout/ContentEmpty.tsx +0 -30
  522. package/src/components/DeckLayout/DeckLayout.stories.tsx +0 -53
  523. package/src/components/DeckLayout/DeckLayout.tsx +0 -34
  524. package/src/components/DeckLayout/DeckMain.tsx +0 -287
  525. package/src/components/DeckLayout/Topbar.tsx +0 -11
  526. package/src/components/Plank/Plank.stories.tsx +0 -64
  527. package/src/components/Plank/Plank.tsx +0 -302
  528. package/src/components/fragments.ts +0 -19
  529. package/src/containers/Banner/Banner.tsx +0 -5
  530. package/src/containers/Banner/index.ts +0 -7
  531. package/src/containers/DeckSettings/DeckSettings.tsx +0 -113
  532. package/src/containers/DeckSettings/index.ts +0 -7
  533. package/src/util/overscroll.ts +0 -69
  534. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  535. /package/dist/types/src/capabilities/{react-root/react-root.d.ts → react-root.d.ts} +0 -0
  536. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
  537. /package/dist/types/src/{components/DeckLayout → containers/Deck}/StatusBar.d.ts +0 -0
  538. /package/dist/types/src/{components → containers}/DeckLayout/ActiveNode.d.ts +0 -0
  539. /package/dist/types/src/{components → containers}/DeckLayout/DeckLayout.d.ts +0 -0
  540. /package/dist/types/src/{components → containers}/DeckLayout/Dialog.d.ts +0 -0
  541. /package/dist/types/src/{components → containers}/DeckLayout/constants.d.ts +0 -0
  542. /package/dist/types/src/{components → containers}/Plank/PlankLoading.d.ts +0 -0
  543. /package/dist/types/src/{components → containers}/Sidebar/ComplementarySidebar.d.ts +0 -0
  544. /package/dist/types/src/{components → containers}/Sidebar/Sidebar.d.ts +0 -0
  545. /package/dist/types/src/{components → containers}/Sidebar/index.d.ts +0 -0
  546. /package/src/{components/DeckLayout → containers/Deck}/StatusBar.tsx +0 -0
  547. /package/src/{components → containers}/Plank/PlankLoading.tsx +0 -0
  548. /package/src/{components → containers}/Sidebar/index.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-deck",
3
- "version": "0.8.4-main.4a85c3132b",
3
+ "version": "0.8.4-main.51f1e5ca51",
4
4
  "description": "DXOS Surface plugin for the main application layout.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -12,26 +12,42 @@
12
12
  "author": "DXOS.org",
13
13
  "sideEffects": true,
14
14
  "type": "module",
15
+ "imports": {
16
+ "#capabilities": "./src/capabilities/index.ts",
17
+ "#components": "./src/components/index.ts",
18
+ "#containers": "./src/containers/index.ts",
19
+ "#hooks": "./src/hooks/index.ts",
20
+ "#meta": "./src/meta.ts",
21
+ "#operations": "./src/operations/index.ts",
22
+ "#translations": "./src/translations.ts",
23
+ "#types": "./src/types/index.ts"
24
+ },
15
25
  "exports": {
16
26
  ".": {
17
27
  "source": "./src/index.ts",
18
28
  "types": "./dist/types/src/index.d.ts",
19
29
  "browser": "./dist/lib/browser/index.mjs"
20
30
  },
31
+ "./operations": {
32
+ "source": "./src/operations/index.ts",
33
+ "types": "./dist/types/src/operations/index.d.ts",
34
+ "browser": "./dist/lib/browser/operations/index.mjs",
35
+ "node": "./dist/lib/node-esm/operations/index.mjs"
36
+ },
37
+ "./translations": {
38
+ "source": "./src/translations.ts",
39
+ "types": "./dist/types/src/translations.d.ts",
40
+ "browser": "./dist/lib/browser/translations.mjs",
41
+ "node": "./dist/lib/node-esm/translations.mjs"
42
+ },
21
43
  "./types": {
22
44
  "source": "./src/types/index.ts",
23
45
  "types": "./dist/types/src/types/index.d.ts",
24
- "browser": "./dist/lib/browser/types/index.mjs"
46
+ "browser": "./dist/lib/browser/types/index.mjs",
47
+ "node": "./dist/lib/node-esm/types/index.mjs"
25
48
  }
26
49
  },
27
50
  "types": "dist/types/src/index.d.ts",
28
- "typesVersions": {
29
- "*": {
30
- "types": [
31
- "dist/types/src/types/index.d.ts"
32
- ]
33
- }
34
- },
35
51
  "files": [
36
52
  "dist",
37
53
  "src"
@@ -43,57 +59,67 @@
43
59
  "@effect/experimental": "0.58.0",
44
60
  "@fluentui/react-tabster": "9.26.11",
45
61
  "@radix-ui/react-context": "1.1.1",
62
+ "@tauri-apps/plugin-deep-link": "^2.2.0",
46
63
  "immer": "^10.1.1",
47
- "@dxos/ai": "0.8.4-main.4a85c3132b",
48
- "@dxos/app-framework": "0.8.4-main.4a85c3132b",
49
- "@dxos/assistant": "0.8.4-main.4a85c3132b",
50
- "@dxos/async": "0.8.4-main.4a85c3132b",
51
- "@dxos/app-toolkit": "0.8.4-main.4a85c3132b",
52
- "@dxos/blueprints": "0.8.4-main.4a85c3132b",
53
- "@dxos/debug": "0.8.4-main.4a85c3132b",
54
- "@dxos/echo": "0.8.4-main.4a85c3132b",
55
- "@dxos/effect": "0.8.4-main.4a85c3132b",
56
- "@dxos/keyboard": "0.8.4-main.4a85c3132b",
57
- "@dxos/invariant": "0.8.4-main.4a85c3132b",
58
- "@dxos/log": "0.8.4-main.4a85c3132b",
59
- "@dxos/operation": "0.8.4-main.4a85c3132b",
60
- "@dxos/plugin-attention": "0.8.4-main.4a85c3132b",
61
- "@dxos/plugin-observability": "0.8.4-main.4a85c3132b",
62
- "@dxos/plugin-theme": "0.8.4-main.4a85c3132b",
63
- "@dxos/plugin-graph": "0.8.4-main.4a85c3132b",
64
- "@dxos/react-client": "0.8.4-main.4a85c3132b",
65
- "@dxos/react-ui-attention": "0.8.4-main.4a85c3132b",
66
- "@dxos/react-error-boundary": "0.8.4-main.4a85c3132b",
67
- "@dxos/react-ui-form": "0.8.4-main.4a85c3132b",
68
- "@dxos/react-ui-stack": "0.8.4-main.4a85c3132b",
69
- "@dxos/react-ui-tabs": "0.8.4-main.4a85c3132b",
70
- "@dxos/react-ui-text-tooltip": "0.8.4-main.4a85c3132b",
71
- "@dxos/util": "0.8.4-main.4a85c3132b",
72
- "@dxos/ui-types": "0.8.4-main.4a85c3132b",
73
- "@dxos/react-ui-mosaic": "0.8.4-main.4a85c3132b"
64
+ "@dxos/ai": "0.8.4-main.51f1e5ca51",
65
+ "@dxos/app-framework": "0.8.4-main.51f1e5ca51",
66
+ "@dxos/app-graph": "0.8.4-main.51f1e5ca51",
67
+ "@dxos/app-toolkit": "0.8.4-main.51f1e5ca51",
68
+ "@dxos/assistant": "0.8.4-main.51f1e5ca51",
69
+ "@dxos/async": "0.8.4-main.51f1e5ca51",
70
+ "@dxos/context": "0.8.4-main.51f1e5ca51",
71
+ "@dxos/debug": "0.8.4-main.51f1e5ca51",
72
+ "@dxos/effect": "0.8.4-main.51f1e5ca51",
73
+ "@dxos/echo": "0.8.4-main.51f1e5ca51",
74
+ "@dxos/errors": "0.8.4-main.51f1e5ca51",
75
+ "@dxos/compute": "0.8.4-main.51f1e5ca51",
76
+ "@dxos/invariant": "0.8.4-main.51f1e5ca51",
77
+ "@dxos/keyboard": "0.8.4-main.51f1e5ca51",
78
+ "@dxos/log": "0.8.4-main.51f1e5ca51",
79
+ "@dxos/plugin-attention": "0.8.4-main.51f1e5ca51",
80
+ "@dxos/plugin-client": "0.8.4-main.51f1e5ca51",
81
+ "@dxos/plugin-graph": "0.8.4-main.51f1e5ca51",
82
+ "@dxos/plugin-observability": "0.8.4-main.51f1e5ca51",
83
+ "@dxos/plugin-theme": "0.8.4-main.51f1e5ca51",
84
+ "@dxos/react-ui-attention": "0.8.4-main.51f1e5ca51",
85
+ "@dxos/react-error-boundary": "0.8.4-main.51f1e5ca51",
86
+ "@dxos/react-ui-form": "0.8.4-main.51f1e5ca51",
87
+ "@dxos/react-ui-menu": "0.8.4-main.51f1e5ca51",
88
+ "@dxos/react-ui-tabs": "0.8.4-main.51f1e5ca51",
89
+ "@dxos/react-ui-stack": "0.8.4-main.51f1e5ca51",
90
+ "@dxos/ui-types": "0.8.4-main.51f1e5ca51",
91
+ "@dxos/react-ui-text-tooltip": "0.8.4-main.51f1e5ca51",
92
+ "@dxos/react-ui-mosaic": "0.8.4-main.51f1e5ca51",
93
+ "@dxos/util": "0.8.4-main.51f1e5ca51",
94
+ "@dxos/react-client": "0.8.4-main.51f1e5ca51"
74
95
  },
75
96
  "devDependencies": {
76
97
  "@effect-atom/atom-react": "^0.5.0",
77
98
  "@effect/platform": "0.94.4",
78
99
  "@types/react": "~19.2.7",
79
100
  "@types/react-dom": "~19.2.3",
80
- "effect": "3.19.16",
101
+ "effect": "3.20.0",
81
102
  "react": "~19.2.3",
82
103
  "react-dom": "~19.2.3",
83
- "vite": "^7.1.11",
84
- "@dxos/plugin-testing": "0.8.4-main.4a85c3132b",
85
- "@dxos/react-ui": "0.8.4-main.4a85c3132b",
86
- "@dxos/ui-theme": "0.8.4-main.4a85c3132b",
87
- "@dxos/storybook-utils": "0.8.4-main.4a85c3132b"
104
+ "vite": "^8.0.10",
105
+ "@dxos/plugin-testing": "0.8.4-main.51f1e5ca51",
106
+ "@dxos/random": "0.8.4-main.51f1e5ca51",
107
+ "@dxos/react-hooks": "0.8.4-main.51f1e5ca51",
108
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.51f1e5ca51",
109
+ "@dxos/schema": "0.8.4-main.51f1e5ca51",
110
+ "@dxos/storybook-utils": "0.8.4-main.51f1e5ca51",
111
+ "@dxos/react-ui": "0.8.4-main.51f1e5ca51",
112
+ "@dxos/types": "0.8.4-main.51f1e5ca51",
113
+ "@dxos/ui-theme": "0.8.4-main.51f1e5ca51"
88
114
  },
89
115
  "peerDependencies": {
90
116
  "@effect-atom/atom-react": "^0.5.0",
91
117
  "@effect/platform": "0.94.4",
92
- "effect": "3.19.16",
118
+ "effect": "3.20.0",
93
119
  "react": "~19.2.3",
94
120
  "react-dom": "~19.2.3",
95
- "@dxos/react-ui": "0.8.4-main.4a85c3132b",
96
- "@dxos/ui-theme": "0.8.4-main.4a85c3132b"
121
+ "@dxos/ui-theme": "0.8.4-main.51f1e5ca51",
122
+ "@dxos/react-ui": "0.8.4-main.51f1e5ca51"
97
123
  },
98
124
  "publishConfig": {
99
125
  "access": "public"
package/src/DeckPlugin.ts CHANGED
@@ -6,22 +6,21 @@ import { setAutoFreeze } from 'immer';
6
6
 
7
7
  import { ActivationEvent, ActivationEvents, Plugin } from '@dxos/app-framework';
8
8
  import { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';
9
- import { translations as stackTranslations } from '@dxos/react-ui-stack';
9
+ import { translations as stackTranslations } from '@dxos/react-ui-stack/translations';
10
10
 
11
11
  import {
12
12
  AppGraphBuilder,
13
13
  CheckAppScheme,
14
14
  DeckSettings,
15
15
  DeckState,
16
- LayoutOperationResolver,
16
+ OperationHandler,
17
17
  ReactRoot,
18
18
  ReactSurface,
19
- Toolkit,
20
19
  UrlHandler,
21
- } from './capabilities';
22
- import { meta } from './meta';
23
- import { translations } from './translations';
24
- import { DeckEvents } from './types';
20
+ } from '#capabilities';
21
+ import { meta } from '#meta';
22
+ import { translations } from '#translations';
23
+ import { DeckEvents } from '#types';
25
24
 
26
25
  // NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because
27
26
  // our signal implementation needs to add some hidden properties to the produced values.
@@ -30,16 +29,16 @@ setAutoFreeze(false);
30
29
 
31
30
  export const DeckPlugin = Plugin.define(meta).pipe(
32
31
  AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),
33
- AppPlugin.addOperationResolverModule({ activate: LayoutOperationResolver }),
32
+ AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),
34
33
  AppPlugin.addSurfaceModule({ activate: ReactSurface }),
35
34
  AppPlugin.addTranslationsModule({ translations: [...translations, ...stackTranslations] }),
36
35
  Plugin.addModule({
37
36
  activatesOn: AppActivationEvents.SetupSettings,
38
- activatesAfter: [DeckEvents.SettingsReady],
37
+ firesAfterActivation: [DeckEvents.SettingsReady],
39
38
  activate: DeckSettings,
40
39
  }),
41
40
  Plugin.addModule({
42
- activatesOn: DeckEvents.SettingsReady,
41
+ activatesOn: ActivationEvent.allOf(DeckEvents.SettingsReady, ActivationEvents.OperationInvokerReady),
43
42
  activate: CheckAppScheme,
44
43
  }),
45
44
  Plugin.addModule({
@@ -47,7 +46,7 @@ export const DeckPlugin = Plugin.define(meta).pipe(
47
46
  // Should this be a different event?
48
47
  // Should settings store be renamed to be more generic?
49
48
  activatesOn: ActivationEvent.oneOf(AppActivationEvents.SetupSettings, AppActivationEvents.SetupAppGraph),
50
- activatesAfter: [AppActivationEvents.LayoutReady, DeckEvents.StateReady],
49
+ firesAfterActivation: [AppActivationEvents.LayoutReady, DeckEvents.StateReady],
51
50
  activate: DeckState,
52
51
  }),
53
52
  Plugin.addModule({
@@ -58,11 +57,6 @@ export const DeckPlugin = Plugin.define(meta).pipe(
58
57
  // activatesOn: Events.SetupArtifactDefinition,
59
58
  // activate: Tools,
60
59
  // }),
61
- Plugin.addModule({
62
- // TODO(wittjosiah): Shouldn't use the startup event.
63
- activatesOn: ActivationEvents.Startup,
64
- activate: Toolkit,
65
- }),
66
60
  Plugin.addModule({
67
61
  activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents.StateReady),
68
62
  activate: UrlHandler,
@@ -0,0 +1,127 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities, AppNode, LayoutOperation } from '@dxos/app-toolkit';
9
+ import { Operation } from '@dxos/compute';
10
+ import { AttentionCapabilities } from '@dxos/plugin-attention/types';
11
+ import { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';
12
+
13
+ import { meta } from '#meta';
14
+ import { DeckCapabilities } from '#types';
15
+
16
+ export default Capability.makeModule(
17
+ Effect.fnUntraced(function* () {
18
+ const extensions = yield* Effect.all([
19
+ GraphBuilder.createExtension({
20
+ id: 'not-found',
21
+ match: NodeMatcher.whenRoot,
22
+ connector: () => Effect.succeed([AppNode.makeNotFound()]),
23
+ }),
24
+
25
+ GraphBuilder.createExtension({
26
+ id: 'root',
27
+ match: NodeMatcher.whenRoot,
28
+ actions: (_node, get) =>
29
+ Effect.gen(function* () {
30
+ // NOTE(Zan): This is currently disabled.
31
+ // TODO(Zan): Fullscreen needs to know the active node and provide that to the layout part.
32
+ // const _fullscreen = {
33
+ // id: `${LayoutAction.UpdateLayout._tag}/fullscreen`,
34
+ // data: async () => {
35
+ // const { dispatchPromise: dispatch } = context.get(Capabilities.IntentDispatcher);
36
+ // await dispatch(
37
+ // createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'fullscreen' } }),
38
+ // );
39
+ // },
40
+ // properties: {
41
+ // label: ['toggle-fullscreen.label', { ns: meta.id }],
42
+ // icon: 'ph--arrows-out--regular',
43
+ // keyBinding: {
44
+ // macos: 'ctrl+meta+f',
45
+ // windows: 'shift+ctrl+f',
46
+ // },
47
+ // },
48
+ // };
49
+
50
+ const closeCurrent = {
51
+ id: `${LayoutOperation.Close.meta.key}.current`,
52
+ data: Effect.fnUntraced(function* () {
53
+ const attention = yield* Capability.get(AttentionCapabilities.Attention);
54
+ const attended = attention.getCurrent().at(-1);
55
+ if (attended) {
56
+ yield* Operation.invoke(LayoutOperation.Close, { subject: [attended] });
57
+ }
58
+ }),
59
+ properties: {
60
+ label: ['close-current.label', { ns: meta.id }],
61
+ icon: 'ph--x--regular',
62
+ },
63
+ };
64
+
65
+ const closeOthers = {
66
+ id: `${LayoutOperation.Close.meta.key}.others`,
67
+ data: Effect.fnUntraced(function* () {
68
+ const attention = yield* Capability.get(AttentionCapabilities.Attention);
69
+ const deck = yield* DeckCapabilities.getDeck();
70
+ const attended = attention.getCurrent().at(-1);
71
+ const ids = deck.active.filter((id: string) => id !== attended) ?? [];
72
+ yield* Operation.invoke(LayoutOperation.Close, { subject: ids });
73
+ }),
74
+ properties: {
75
+ label: ['close-others.label', { ns: meta.id }],
76
+ icon: 'ph--x-square--regular',
77
+ },
78
+ };
79
+
80
+ const closeAll = {
81
+ id: `${LayoutOperation.Close.meta.key}.all`,
82
+ data: Effect.fnUntraced(function* () {
83
+ const deck = yield* DeckCapabilities.getDeck();
84
+ yield* Operation.invoke(LayoutOperation.Close, { subject: deck.active });
85
+ }),
86
+ properties: {
87
+ label: ['close-all.label', { ns: meta.id }],
88
+ icon: 'ph--x-circle--regular',
89
+ },
90
+ };
91
+
92
+ const state = get(yield* Capability.get(DeckCapabilities.State));
93
+ const deck = state.decks[state.activeDeck];
94
+
95
+ const toggleSidebar = {
96
+ id: `${LayoutOperation.UpdateSidebar.meta.key}.nav`,
97
+ data: Effect.fnUntraced(function* () {
98
+ yield* Capabilities.updateAtomValue(DeckCapabilities.State, (s) => ({
99
+ ...s,
100
+ sidebarState: s.sidebarState === 'expanded' ? ('collapsed' as const) : ('expanded' as const),
101
+ }));
102
+ }),
103
+ properties: {
104
+ label: [
105
+ state.sidebarState === 'expanded'
106
+ ? 'collapse-navigation-sidebar.label'
107
+ : 'open-navigation-sidebar.label',
108
+ { ns: meta.id },
109
+ ],
110
+ icon: 'ph--sidebar--regular',
111
+ keyBinding: {
112
+ macos: "meta+'",
113
+ },
114
+ disposition: 'pin-end',
115
+ position: 'fallback',
116
+ l0Breakpoint: 'lg',
117
+ },
118
+ };
119
+
120
+ return !deck?.solo ? [closeCurrent, closeOthers, closeAll, toggleSidebar] : [toggleSidebar];
121
+ }),
122
+ }),
123
+ ]);
124
+
125
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions.flat());
126
+ }),
127
+ );
@@ -0,0 +1,139 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import { APP_SCHEME, AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
9
+ import { runAndForwardErrors } from '@dxos/effect';
10
+ import { isTauri } from '@dxos/util';
11
+
12
+ import { DeckCapabilities } from '#types';
13
+
14
+ /** Identifier for the native redirect dialog surface (defined in welcome plugin). */
15
+ const NATIVE_REDIRECT_DIALOG = 'org.dxos.plugin.welcome.component.native-redirect-dialog';
16
+
17
+ const SCHEME_TIMEOUT_MS = 500;
18
+
19
+ const isSafari = (): boolean => {
20
+ const ua = navigator.userAgent;
21
+ return ua.includes('Safari') && !ua.includes('Chrome') && !ua.includes('Chromium');
22
+ };
23
+
24
+ /** Check if the current page URL can be converted to a valid custom scheme URL. */
25
+ const canRedirectToScheme = (): boolean => {
26
+ try {
27
+ const schemeUrl = APP_SCHEME + window.location.pathname.replace(/^\/+/, '') + window.location.search;
28
+ new URL(schemeUrl);
29
+ return true;
30
+ } catch {
31
+ return false;
32
+ }
33
+ };
34
+
35
+ /**
36
+ * Try to open the native app via custom scheme.
37
+ * Resolves `true` if the app opened (page lost focus), `false` if it didn't within the timeout.
38
+ */
39
+ const tryOpenNativeApp = (): Promise<boolean> => {
40
+ return new Promise((resolve) => {
41
+ let resolved = false;
42
+
43
+ const onBlur = () => {
44
+ if (!resolved) {
45
+ resolved = true;
46
+ cleanup();
47
+ resolve(true);
48
+ }
49
+ };
50
+
51
+ const cleanup = () => {
52
+ window.removeEventListener('blur', onBlur);
53
+ document.removeEventListener('visibilitychange', onVisibilityChange);
54
+ };
55
+
56
+ const onVisibilityChange = () => {
57
+ if (document.hidden) {
58
+ onBlur();
59
+ }
60
+ };
61
+
62
+ window.addEventListener('blur', onBlur);
63
+ document.addEventListener('visibilitychange', onVisibilityChange);
64
+
65
+ // Try the scheme via hidden iframe.
66
+ const schemeUrl = APP_SCHEME + window.location.pathname.replace(/^\/+/, '') + window.location.search;
67
+ const iframe = document.createElement('iframe');
68
+ iframe.style.display = 'none';
69
+ iframe.src = schemeUrl;
70
+ document.body.appendChild(iframe);
71
+ setTimeout(() => iframe.remove(), 3000);
72
+
73
+ // If no blur within timeout, the app isn't running.
74
+ setTimeout(() => {
75
+ if (!resolved) {
76
+ resolved = true;
77
+ cleanup();
78
+ resolve(false);
79
+ }
80
+ }, SCHEME_TIMEOUT_MS);
81
+ });
82
+ };
83
+
84
+ /** Dispatch all NavigationHandler contributions with the current page URL. */
85
+ const dispatchNavigationHandlers = Effect.fn(function* () {
86
+ const url = new URL(window.location.href);
87
+ const handlers = yield* Capability.getAll(AppCapabilities.NavigationHandler);
88
+ yield* Effect.all(
89
+ handlers.map((handler) => handler(url)),
90
+ { concurrency: 'unbounded' },
91
+ );
92
+ });
93
+
94
+ /**
95
+ * Checks whether the native redirect setting is enabled and the redirect should be attempted.
96
+ * Exported for the URL handler to decide whether to defer NavigationHandler dispatch.
97
+ */
98
+ export const shouldDeferNavigationHandlers = (): boolean => {
99
+ return !isTauri() && !isSafari() && !import.meta.env.DEV && canRedirectToScheme();
100
+ };
101
+
102
+ /**
103
+ * When running in a web browser (not Tauri) with native redirect enabled,
104
+ * tries to open the native app via custom scheme. Defers NavigationHandlers
105
+ * to prevent the web app from consuming one-time tokens before the native app.
106
+ *
107
+ * If the app opens: shows dialog with "Open here" callback that dispatches handlers.
108
+ * If the app doesn't open: dispatches handlers immediately.
109
+ * In Safari: universal links handle this natively, so the check is skipped.
110
+ */
111
+ export default Capability.makeModule(
112
+ Effect.fnUntraced(function* () {
113
+ const capabilities = yield* Capability.Service;
114
+ const { invoke } = yield* Capability.get(Capabilities.OperationInvoker);
115
+ const settings = yield* Capabilities.getAtomValue(DeckCapabilities.Settings);
116
+
117
+ if (!settings?.enableNativeRedirect || !shouldDeferNavigationHandlers()) {
118
+ return;
119
+ }
120
+
121
+ const appOpened = yield* Effect.promise(() => tryOpenNativeApp());
122
+ if (appOpened) {
123
+ const onOpenHere = () =>
124
+ Effect.gen(function* () {
125
+ yield* dispatchNavigationHandlers();
126
+ yield* invoke(LayoutOperation.UpdateDialog, { state: false });
127
+ }).pipe(Effect.provideService(Capability.Service, capabilities), runAndForwardErrors);
128
+
129
+ yield* invoke(LayoutOperation.UpdateDialog, {
130
+ subject: NATIVE_REDIRECT_DIALOG,
131
+ type: 'alert',
132
+ overlayClasses: 'dark bg-neutral-950!',
133
+ props: { onOpenHere },
134
+ });
135
+ } else {
136
+ yield* dispatchNavigationHandlers();
137
+ }
138
+ }),
139
+ );
@@ -2,13 +2,17 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './app-graph-builder';
6
- export * from './check-app-scheme';
7
- export * from './operation-resolver';
8
- export * from './react-root';
9
- export * from './react-surface';
10
- export * from './settings';
11
- export * from './state';
12
- export * from './toolkit';
13
- // export * from './tools';
14
- export * from './url-handler';
5
+ import { Capability } from '@dxos/app-framework';
6
+ import { OperationHandlerSet } from '@dxos/compute';
7
+
8
+ export const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));
9
+ export const CheckAppScheme = Capability.lazy('CheckAppScheme', () => import('./check-app-scheme'));
10
+ export const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(
11
+ 'OperationHandler',
12
+ () => import('./operation-handler'),
13
+ );
14
+ export const ReactRoot = Capability.lazy('ReactRoot', () => import('./react-root'));
15
+ export const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));
16
+ export const DeckSettings = Capability.lazy('DeckSettings', () => import('./settings'));
17
+ export const DeckState = Capability.lazy('DeckState', () => import('./state'));
18
+ export const UrlHandler = Capability.lazy('UrlHandler', () => import('./url-handler'));
@@ -0,0 +1,16 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import type { OperationHandlerSet } from '@dxos/compute';
9
+
10
+ import { DeckOperationHandlerSet } from '#operations';
11
+
12
+ export default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(
13
+ Effect.fnUntraced(function* () {
14
+ return Capability.contributes(Capabilities.OperationHandler, DeckOperationHandlerSet);
15
+ }),
16
+ );
@@ -7,9 +7,9 @@ import React, { useCallback } from 'react';
7
7
 
8
8
  import { Capabilities, Capability } from '@dxos/app-framework';
9
9
 
10
- import { DeckLayout } from '../../components';
11
- import { useDeckState } from '../../hooks';
12
- import { meta } from '../../meta';
10
+ import { DeckLayout } from '#containers';
11
+ import { useDeckState } from '#hooks';
12
+ import { meta } from '#meta';
13
13
 
14
14
  export default Capability.makeModule(() =>
15
15
  Effect.succeed(
@@ -7,31 +7,29 @@ import React from 'react';
7
7
 
8
8
  import { Capabilities, Capability } from '@dxos/app-framework';
9
9
  import { Surface, useSettingsState } from '@dxos/app-framework/ui';
10
- import { AppCapabilities } from '@dxos/app-toolkit';
10
+ import { NOT_FOUND_PATH } from '@dxos/app-toolkit';
11
+ import { AppSurface, NotFoundArticle } from '@dxos/app-toolkit/ui';
11
12
 
12
- import { Banner, DeckSettings } from '../../containers';
13
- import { meta } from '../../meta';
14
- import { type DeckSettingsProps } from '../../types';
13
+ import { DeckSettings } from '#components';
14
+ import { meta } from '#meta';
15
+ import { type Settings } from '#types';
15
16
 
16
17
  export default Capability.makeModule(() =>
17
18
  Effect.succeed(
18
19
  Capability.contributes(Capabilities.ReactSurface, [
19
20
  Surface.create({
20
- id: `${meta.id}/plugin-settings`,
21
- role: 'article',
22
- filter: (data): data is { subject: AppCapabilities.Settings } =>
23
- AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
21
+ id: 'plugin-settings',
22
+ filter: AppSurface.settings(AppSurface.Article, meta.id),
24
23
  component: ({ data: { subject } }) => {
25
- const { settings, updateSettings } = useSettingsState<DeckSettingsProps>(subject.atom);
24
+ const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);
26
25
  return <DeckSettings settings={settings} onSettingsChange={updateSettings} />;
27
26
  },
28
27
  }),
29
28
  Surface.create({
30
- id: `${meta.id}/banner`,
31
- role: 'banner',
32
- component: ({ data }: { data: { variant?: 'topbar' | 'sidebar' } }) => {
33
- return <Banner variant={data.variant} />;
34
- },
29
+ id: 'not-found',
30
+ role: 'article',
31
+ filter: (data): data is { attendableId: string } => data.attendableId === NOT_FOUND_PATH,
32
+ component: () => <NotFoundArticle />,
35
33
  }),
36
34
  ]),
37
35
  ),
@@ -8,21 +8,19 @@ import { Capability } from '@dxos/app-framework';
8
8
  import { AppCapabilities } from '@dxos/app-toolkit';
9
9
  import { createKvsStore } from '@dxos/effect';
10
10
 
11
- import { meta } from '../../meta';
12
- import { DeckCapabilities, DeckSettingsSchema } from '../../types';
11
+ import { meta } from '#meta';
12
+ import { DeckCapabilities, Settings } from '#types';
13
13
 
14
14
  export default Capability.makeModule(() =>
15
15
  Effect.sync(() => {
16
16
  const settingsAtom = createKvsStore({
17
17
  key: meta.id,
18
- schema: DeckSettingsSchema,
18
+ schema: Settings.Settings,
19
19
  defaultValue: () => ({
20
20
  showHints: false,
21
21
  enableDeck: false,
22
22
  enableStatusbar: false,
23
23
  enableNativeRedirect: false,
24
- newPlankPositioning: 'start' as const,
25
- overscroll: 'none' as const,
26
24
  encapsulatedPlanks: false,
27
25
  }),
28
26
  });
@@ -31,7 +29,7 @@ export default Capability.makeModule(() =>
31
29
  Capability.contributes(DeckCapabilities.Settings, settingsAtom),
32
30
  Capability.contributes(AppCapabilities.Settings, {
33
31
  prefix: meta.id,
34
- schema: DeckSettingsSchema,
32
+ schema: Settings.Settings,
35
33
  atom: settingsAtom,
36
34
  }),
37
35
  ];