@dxos/plugin-deck 0.8.4-main.422d1c7879 → 0.8.4-main.43cb759274

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 (381) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +541 -0
  3. package/README.md +1 -1
  4. package/dist/lib/neutral/DeckLayout-YABVXRDU.mjs +291 -0
  5. package/dist/lib/neutral/DeckLayout-YABVXRDU.mjs.map +7 -0
  6. package/dist/lib/neutral/DeckPlugin.mjs +87 -0
  7. package/dist/lib/neutral/DeckPlugin.mjs.map +7 -0
  8. package/dist/lib/neutral/DeckPlugin.node.mjs +18 -0
  9. package/dist/lib/neutral/DeckPlugin.node.mjs.map +7 -0
  10. package/dist/lib/neutral/DeckPlugin.workerd.mjs +16 -0
  11. package/dist/lib/neutral/DeckPlugin.workerd.mjs.map +7 -0
  12. package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs +27 -0
  13. package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs.map +7 -0
  14. package/dist/lib/{browser/add-toast-EUN62IUE.mjs → neutral/add-toast-TNB6DXWU.mjs} +5 -5
  15. package/dist/lib/{browser/add-toast-EUN62IUE.mjs.map → neutral/add-toast-TNB6DXWU.mjs.map} +2 -2
  16. package/dist/lib/{browser/adjust-XWB6ZZ6U.mjs → neutral/adjust-HNU5CCRO.mjs} +15 -17
  17. package/dist/lib/neutral/adjust-HNU5CCRO.mjs.map +7 -0
  18. package/dist/lib/neutral/app-graph-builder-HMLT627T.mjs +129 -0
  19. package/dist/lib/neutral/app-graph-builder-HMLT627T.mjs.map +7 -0
  20. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  21. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  22. package/dist/lib/neutral/check-app-scheme-A7FZVNZO.mjs +10 -0
  23. package/dist/lib/neutral/chunk-BS4EOYMK.mjs +282 -0
  24. package/dist/lib/neutral/chunk-BS4EOYMK.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-GBIGQKYW.mjs +112 -0
  26. package/dist/lib/neutral/chunk-GBIGQKYW.mjs.map +7 -0
  27. package/dist/lib/{browser/chunk-KUTDCWZF.mjs → neutral/chunk-GLB73Q6U.mjs} +2 -10
  28. package/dist/lib/{browser/chunk-KUTDCWZF.mjs.map → neutral/chunk-GLB73Q6U.mjs.map} +2 -2
  29. package/dist/lib/neutral/chunk-OQGC7JYT.mjs +8 -0
  30. package/dist/lib/neutral/chunk-OQGC7JYT.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-PYEY5SEC.mjs +37 -0
  32. package/dist/lib/neutral/chunk-PYEY5SEC.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-Q534NBCS.mjs +1305 -0
  34. package/dist/lib/neutral/chunk-Q534NBCS.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-VHETZ22W.mjs +101 -0
  36. package/dist/lib/neutral/chunk-VHETZ22W.mjs.map +7 -0
  37. package/dist/lib/{browser/chunk-DF2VZ6W3.mjs → neutral/chunk-ZYYOSX5I.mjs} +1 -1
  38. package/dist/lib/{browser/chunk-DF2VZ6W3.mjs.map → neutral/chunk-ZYYOSX5I.mjs.map} +2 -2
  39. package/dist/lib/{browser/close-JXK73YIM.mjs → neutral/close-ASKR22A6.mjs} +12 -12
  40. package/dist/lib/{browser/close-JXK73YIM.mjs.map → neutral/close-ASKR22A6.mjs.map} +2 -2
  41. package/dist/lib/neutral/components/index.mjs +126 -0
  42. package/dist/lib/neutral/components/index.mjs.map +7 -0
  43. package/dist/lib/neutral/containers/index.mjs +32 -0
  44. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  45. package/dist/lib/neutral/hooks/index.mjs +159 -0
  46. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  47. package/dist/lib/{node-esm/types → neutral}/index.mjs +13 -8
  48. package/dist/lib/neutral/meta.json +1 -0
  49. package/dist/lib/neutral/meta.mjs +8 -0
  50. package/dist/lib/neutral/notification-tracker-BYKXOXDE.mjs +128 -0
  51. package/dist/lib/neutral/notification-tracker-BYKXOXDE.mjs.map +7 -0
  52. package/dist/lib/{browser/open-K2JOEW2E.mjs → neutral/open-IFIEYVHG.mjs} +34 -25
  53. package/dist/lib/neutral/open-IFIEYVHG.mjs.map +7 -0
  54. package/dist/lib/neutral/operation-handler-266CVMTW.mjs +13 -0
  55. package/dist/lib/neutral/operation-handler-266CVMTW.mjs.map +7 -0
  56. package/dist/lib/neutral/operations/index.mjs +8 -0
  57. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  58. package/dist/lib/neutral/plugin.mjs +16 -0
  59. package/dist/lib/neutral/plugin.mjs.map +7 -0
  60. package/dist/lib/neutral/react-root-HH5DEUOG.mjs +44 -0
  61. package/dist/lib/neutral/react-root-HH5DEUOG.mjs.map +7 -0
  62. package/dist/lib/neutral/react-surface-3UVVCK3O.mjs +34 -0
  63. package/dist/lib/neutral/react-surface-3UVVCK3O.mjs.map +7 -0
  64. package/dist/lib/{browser/revert-workspace-BNIR5U64.mjs → neutral/revert-workspace-B2QLT2C4.mjs} +5 -5
  65. package/dist/lib/{browser/revert-workspace-BNIR5U64.mjs.map → neutral/revert-workspace-B2QLT2C4.mjs.map} +2 -2
  66. package/dist/lib/{browser/scroll-into-view-4GSKC3GA.mjs → neutral/scroll-into-view-B52C3PJO.mjs} +5 -5
  67. package/dist/lib/{browser/scroll-into-view-4GSKC3GA.mjs.map → neutral/scroll-into-view-B52C3PJO.mjs.map} +2 -2
  68. package/dist/lib/{browser/set-XCG6NIAO.mjs → neutral/set-PA35ONXO.mjs} +11 -11
  69. package/dist/lib/{browser/set-XCG6NIAO.mjs.map → neutral/set-PA35ONXO.mjs.map} +2 -2
  70. package/dist/lib/{browser/set-layout-mode-BEVNGOY2.mjs → neutral/set-layout-mode-RPCCPQRB.mjs} +10 -15
  71. package/dist/lib/neutral/set-layout-mode-RPCCPQRB.mjs.map +7 -0
  72. package/dist/lib/neutral/settings-EGNYUM4T.mjs +33 -0
  73. package/dist/lib/neutral/settings-EGNYUM4T.mjs.map +7 -0
  74. package/dist/lib/neutral/state-IIDXMQUO.mjs +86 -0
  75. package/dist/lib/neutral/state-IIDXMQUO.mjs.map +7 -0
  76. package/dist/lib/{browser/switch-workspace-ICJJWNFT.mjs → neutral/switch-workspace-LZF4KZXH.mjs} +9 -17
  77. package/dist/lib/neutral/switch-workspace-LZF4KZXH.mjs.map +7 -0
  78. package/dist/lib/neutral/translations.mjs +59 -0
  79. package/dist/lib/neutral/translations.mjs.map +7 -0
  80. package/dist/lib/{browser → neutral}/types/index.mjs +7 -5
  81. package/dist/lib/neutral/types/index.mjs.map +7 -0
  82. package/dist/lib/{browser/update-companion-VPCBH3YT.mjs → neutral/update-companion-YUCZZVGY.mjs} +7 -7
  83. package/dist/lib/neutral/update-companion-YUCZZVGY.mjs.map +7 -0
  84. package/dist/lib/{browser/update-complementary-74DEQY6T.mjs → neutral/update-complementary-7FZNB55J.mjs} +6 -6
  85. package/dist/lib/neutral/update-complementary-7FZNB55J.mjs.map +7 -0
  86. package/dist/lib/{browser/update-dialog-6TDUYI5R.mjs → neutral/update-dialog-FNQTSSAP.mjs} +5 -5
  87. package/dist/lib/{browser/update-dialog-6TDUYI5R.mjs.map → neutral/update-dialog-FNQTSSAP.mjs.map} +2 -2
  88. package/dist/lib/neutral/update-plank-size-3YW4NXEY.mjs +26 -0
  89. package/dist/lib/neutral/update-plank-size-3YW4NXEY.mjs.map +7 -0
  90. package/dist/lib/{browser/update-popover-W7E2Z5T6.mjs → neutral/update-popover-G2VUD7E6.mjs} +5 -5
  91. package/dist/lib/{browser/update-popover-W7E2Z5T6.mjs.map → neutral/update-popover-G2VUD7E6.mjs.map} +2 -2
  92. package/dist/lib/{browser/update-sidebar-H3A6ZFRU.mjs → neutral/update-sidebar-KRHPUHUB.mjs} +6 -6
  93. package/dist/lib/{browser/update-sidebar-H3A6ZFRU.mjs.map → neutral/update-sidebar-KRHPUHUB.mjs.map} +2 -2
  94. package/dist/lib/neutral/url-handler-4SW6BFAC.mjs +229 -0
  95. package/dist/lib/neutral/url-handler-4SW6BFAC.mjs.map +7 -0
  96. package/dist/types/src/DeckPlugin.d.ts +1 -0
  97. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  98. package/dist/types/src/DeckPlugin.node.d.ts +4 -0
  99. package/dist/types/src/DeckPlugin.node.d.ts.map +1 -0
  100. package/dist/types/src/DeckPlugin.test.d.ts +2 -0
  101. package/dist/types/src/DeckPlugin.test.d.ts.map +1 -0
  102. package/dist/types/src/DeckPlugin.workerd.d.ts +4 -0
  103. package/dist/types/src/DeckPlugin.workerd.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/check-app-scheme.d.ts +1 -1
  106. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/index.d.ts +30 -29
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/notification-tracker.d.ts +13 -0
  110. package/dist/types/src/capabilities/notification-tracker.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  112. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/state.d.ts +28 -28
  117. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/tools.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/url-handler.d.ts +1 -1
  120. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
  121. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
  122. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +44 -52
  123. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Matrix/Matrix.d.ts +2 -2
  125. package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -1
  126. package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -1
  127. package/dist/types/src/containers/Deck/Banner.d.ts +1 -1
  128. package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -1
  129. package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -1
  130. package/dist/types/src/containers/Deck/Deck.stories.d.ts +44 -52
  131. package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -1
  132. package/dist/types/src/containers/Deck/DeckContent.d.ts +4 -4
  133. package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -1
  134. package/dist/types/src/containers/Deck/DeckRoot.d.ts +5 -8
  135. package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -1
  136. package/dist/types/src/containers/Deck/DeckViewport.d.ts +4 -7
  137. package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -1
  138. package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -1
  139. package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -1
  140. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +44 -52
  141. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
  142. package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -1
  143. package/dist/types/src/containers/DeckLayout/Toast.d.ts +1 -1
  144. package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -1
  145. package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -1
  146. package/dist/types/src/containers/Plank/Plank.d.ts +1 -1
  147. package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -1
  148. package/dist/types/src/containers/Plank/Plank.stories.d.ts +44 -52
  149. package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -1
  150. package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +1 -1
  151. package/dist/types/src/containers/Plank/PlankContent.d.ts +1 -1
  152. package/dist/types/src/containers/Plank/PlankError.d.ts +1 -1
  153. package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -1
  154. package/dist/types/src/containers/Plank/PlankRoot.d.ts +1 -1
  155. package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -1
  156. package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  157. package/dist/types/src/containers/Sidebar/Sidebar.d.ts.map +1 -1
  158. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts +1 -1
  159. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -1
  160. package/dist/types/src/hooks/index.d.ts +0 -1
  161. package/dist/types/src/hooks/index.d.ts.map +1 -1
  162. package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
  163. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
  164. package/dist/types/src/hooks/useDeckCompanions.d.ts +1 -1
  165. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  166. package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
  167. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  168. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
  169. package/dist/types/src/index.d.ts +1 -3
  170. package/dist/types/src/index.d.ts.map +1 -1
  171. package/dist/types/src/layout.d.ts.map +1 -1
  172. package/dist/types/src/meta.d.ts +1 -1
  173. package/dist/types/src/meta.d.ts.map +1 -1
  174. package/dist/types/src/operations/add-toast.d.ts +1 -1
  175. package/dist/types/src/operations/add-toast.d.ts.map +1 -1
  176. package/dist/types/src/operations/adjust.d.ts +3 -3
  177. package/dist/types/src/operations/adjust.d.ts.map +1 -1
  178. package/dist/types/src/operations/close.d.ts +1 -1
  179. package/dist/types/src/operations/close.d.ts.map +1 -1
  180. package/dist/types/src/operations/helpers.d.ts.map +1 -1
  181. package/dist/types/src/operations/index.d.ts +1 -2
  182. package/dist/types/src/operations/index.d.ts.map +1 -1
  183. package/dist/types/src/operations/open.d.ts +1 -1
  184. package/dist/types/src/operations/open.d.ts.map +1 -1
  185. package/dist/types/src/operations/revert-workspace.d.ts +1 -1
  186. package/dist/types/src/operations/revert-workspace.d.ts.map +1 -1
  187. package/dist/types/src/operations/scroll-into-view.d.ts +1 -1
  188. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -1
  189. package/dist/types/src/operations/set-layout-mode.d.ts +1 -1
  190. package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -1
  191. package/dist/types/src/operations/set.d.ts +1 -1
  192. package/dist/types/src/operations/set.d.ts.map +1 -1
  193. package/dist/types/src/operations/switch-workspace.d.ts +1 -1
  194. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -1
  195. package/dist/types/src/operations/update-companion.d.ts +1 -1
  196. package/dist/types/src/operations/update-companion.d.ts.map +1 -1
  197. package/dist/types/src/operations/update-complementary.d.ts +1 -1
  198. package/dist/types/src/operations/update-complementary.d.ts.map +1 -1
  199. package/dist/types/src/operations/update-dialog.d.ts +1 -1
  200. package/dist/types/src/operations/update-dialog.d.ts.map +1 -1
  201. package/dist/types/src/operations/update-plank-size.d.ts +3 -3
  202. package/dist/types/src/operations/update-plank-size.d.ts.map +1 -1
  203. package/dist/types/src/operations/update-popover.d.ts +1 -1
  204. package/dist/types/src/operations/update-popover.d.ts.map +1 -1
  205. package/dist/types/src/operations/update-sidebar.d.ts +1 -1
  206. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -1
  207. package/dist/types/src/plugin.d.ts +4 -0
  208. package/dist/types/src/plugin.d.ts.map +1 -0
  209. package/dist/types/src/translations.d.ts +44 -53
  210. package/dist/types/src/translations.d.ts.map +1 -1
  211. package/dist/types/src/types/DeckCapabilities.d.ts +188 -0
  212. package/dist/types/src/types/DeckCapabilities.d.ts.map +1 -0
  213. package/dist/types/src/types/DeckEvents.d.ts +5 -0
  214. package/dist/types/src/types/DeckEvents.d.ts.map +1 -0
  215. package/dist/types/src/types/DeckOperation.d.ts +15 -0
  216. package/dist/types/src/types/DeckOperation.d.ts.map +1 -0
  217. package/dist/types/src/types/Settings.d.ts +4 -5
  218. package/dist/types/src/types/Settings.d.ts.map +1 -1
  219. package/dist/types/src/types/index.d.ts +3 -2
  220. package/dist/types/src/types/index.d.ts.map +1 -1
  221. package/dist/types/src/types/schema.d.ts +6 -7
  222. package/dist/types/src/types/schema.d.ts.map +1 -1
  223. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  224. package/dist/types/src/util/plank-url-params.d.ts.map +1 -1
  225. package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -1
  226. package/dist/types/src/util/set-active.d.ts.map +1 -1
  227. package/dist/types/tsconfig.tsbuildinfo +1 -1
  228. package/package.json +109 -73
  229. package/src/DeckPlugin.node.ts +17 -0
  230. package/src/DeckPlugin.test.ts +27 -0
  231. package/src/DeckPlugin.ts +16 -4
  232. package/src/DeckPlugin.workerd.ts +16 -0
  233. package/src/capabilities/app-graph-builder.ts +4 -4
  234. package/src/capabilities/index.ts +2 -1
  235. package/src/capabilities/notification-tracker.ts +132 -0
  236. package/src/capabilities/operation-handler.ts +1 -1
  237. package/src/capabilities/react-root.tsx +20 -15
  238. package/src/capabilities/react-surface.tsx +2 -2
  239. package/src/capabilities/settings.ts +1 -2
  240. package/src/capabilities/tools.ts +1 -1
  241. package/src/capabilities/url-handler.ts +73 -2
  242. package/src/components/DeckSettings/DeckSettings.stories.tsx +2 -2
  243. package/src/components/DeckSettings/DeckSettings.tsx +8 -47
  244. package/src/components/Matrix/Matrix.stories.tsx +2 -2
  245. package/src/components/Matrix/Matrix.tsx +1 -1
  246. package/src/containers/Deck/Banner.tsx +2 -2
  247. package/src/containers/Deck/Deck.stories.tsx +1 -1
  248. package/src/containers/Deck/DeckContent.tsx +2 -5
  249. package/src/containers/Deck/DeckViewport.tsx +7 -13
  250. package/src/containers/DeckLayout/ActiveNode.tsx +1 -1
  251. package/src/containers/DeckLayout/DeckLayout.stories.tsx +8 -10
  252. package/src/containers/DeckLayout/Fallback.tsx +2 -2
  253. package/src/containers/DeckLayout/Popover.tsx +31 -26
  254. package/src/containers/DeckLayout/Toast.tsx +19 -29
  255. package/src/containers/Plank/Plank.stories.tsx +3 -3
  256. package/src/containers/Plank/PlankComponent.tsx +3 -2
  257. package/src/containers/Plank/PlankContent.tsx +1 -1
  258. package/src/containers/Plank/PlankError.tsx +6 -3
  259. package/src/containers/Plank/PlankHeading.tsx +5 -5
  260. package/src/containers/Plank/PlankLoading.tsx +1 -1
  261. package/src/containers/Plank/PlankRoot.tsx +1 -1
  262. package/src/containers/Sidebar/ComplementarySidebar.tsx +20 -39
  263. package/src/containers/Sidebar/Sidebar.tsx +5 -10
  264. package/src/containers/Sidebar/SidebarButton.tsx +7 -1
  265. package/src/hooks/index.ts +0 -1
  266. package/src/hooks/useDeckCompanions.ts +1 -1
  267. package/src/index.ts +1 -3
  268. package/src/meta.ts +24 -6
  269. package/src/operations/add-toast.ts +1 -1
  270. package/src/operations/adjust.ts +4 -5
  271. package/src/operations/close.ts +2 -2
  272. package/src/operations/index.ts +1 -4
  273. package/src/operations/open.ts +29 -13
  274. package/src/operations/revert-workspace.ts +1 -1
  275. package/src/operations/scroll-into-view.ts +1 -1
  276. package/src/operations/set-layout-mode.ts +1 -1
  277. package/src/operations/set.ts +2 -2
  278. package/src/operations/switch-workspace.ts +8 -2
  279. package/src/operations/update-companion.ts +1 -1
  280. package/src/operations/update-complementary.ts +1 -1
  281. package/src/operations/update-dialog.ts +1 -1
  282. package/src/operations/update-plank-size.ts +3 -4
  283. package/src/operations/update-popover.ts +1 -1
  284. package/src/operations/update-sidebar.ts +1 -1
  285. package/src/plugin.ts +11 -0
  286. package/src/translations.ts +4 -12
  287. package/src/types/DeckCapabilities.ts +34 -0
  288. package/src/types/DeckEvents.ts +21 -0
  289. package/src/{operations/definitions.ts → types/DeckOperation.ts} +13 -6
  290. package/src/types/Settings.ts +25 -6
  291. package/src/types/index.ts +4 -2
  292. package/src/types/schema.ts +0 -2
  293. package/src/vite-env.d.ts +5 -0
  294. package/dist/lib/browser/adjust-XWB6ZZ6U.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-5LM6A3EC.mjs +0 -208
  296. package/dist/lib/browser/chunk-5LM6A3EC.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-BRZAVPMC.mjs +0 -48
  298. package/dist/lib/browser/chunk-BRZAVPMC.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-FRVCL5NO.mjs +0 -72
  300. package/dist/lib/browser/chunk-FRVCL5NO.mjs.map +0 -7
  301. package/dist/lib/browser/index.mjs +0 -201
  302. package/dist/lib/browser/index.mjs.map +0 -7
  303. package/dist/lib/browser/meta.json +0 -1
  304. package/dist/lib/browser/open-K2JOEW2E.mjs.map +0 -7
  305. package/dist/lib/browser/operations/index.mjs +0 -13
  306. package/dist/lib/browser/operations/index.mjs.map +0 -7
  307. package/dist/lib/browser/set-layout-mode-BEVNGOY2.mjs.map +0 -7
  308. package/dist/lib/browser/show-undo-5RQNREEB.mjs +0 -59
  309. package/dist/lib/browser/show-undo-5RQNREEB.mjs.map +0 -7
  310. package/dist/lib/browser/switch-workspace-ICJJWNFT.mjs.map +0 -7
  311. package/dist/lib/browser/update-companion-VPCBH3YT.mjs.map +0 -7
  312. package/dist/lib/browser/update-complementary-74DEQY6T.mjs.map +0 -7
  313. package/dist/lib/browser/update-plank-size-5VHZOTHE.mjs +0 -28
  314. package/dist/lib/browser/update-plank-size-5VHZOTHE.mjs.map +0 -7
  315. package/dist/lib/node-esm/add-toast-AZM7NFNM.mjs +0 -25
  316. package/dist/lib/node-esm/add-toast-AZM7NFNM.mjs.map +0 -7
  317. package/dist/lib/node-esm/adjust-ICALXQ6F.mjs +0 -96
  318. package/dist/lib/node-esm/adjust-ICALXQ6F.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-A63Q53TW.mjs +0 -73
  320. package/dist/lib/node-esm/chunk-A63Q53TW.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-B7WZXRW4.mjs +0 -209
  322. package/dist/lib/node-esm/chunk-B7WZXRW4.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  324. package/dist/lib/node-esm/chunk-IRWCUYJY.mjs +0 -71
  325. package/dist/lib/node-esm/chunk-IRWCUYJY.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-MB4SDDVY.mjs +0 -50
  327. package/dist/lib/node-esm/chunk-MB4SDDVY.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-MLVJ2ODW.mjs +0 -32
  329. package/dist/lib/node-esm/chunk-MLVJ2ODW.mjs.map +0 -7
  330. package/dist/lib/node-esm/close-GC5V3GD5.mjs +0 -45
  331. package/dist/lib/node-esm/close-GC5V3GD5.mjs.map +0 -7
  332. package/dist/lib/node-esm/index.mjs +0 -202
  333. package/dist/lib/node-esm/index.mjs.map +0 -7
  334. package/dist/lib/node-esm/meta.json +0 -1
  335. package/dist/lib/node-esm/open-XXEHIR6G.mjs +0 -151
  336. package/dist/lib/node-esm/open-XXEHIR6G.mjs.map +0 -7
  337. package/dist/lib/node-esm/operations/index.mjs +0 -14
  338. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  339. package/dist/lib/node-esm/revert-workspace-WCXAL5C6.mjs +0 -22
  340. package/dist/lib/node-esm/revert-workspace-WCXAL5C6.mjs.map +0 -7
  341. package/dist/lib/node-esm/scroll-into-view-2ZNU44ZO.mjs +0 -22
  342. package/dist/lib/node-esm/scroll-into-view-2ZNU44ZO.mjs.map +0 -7
  343. package/dist/lib/node-esm/set-5MO2JCUQ.mjs +0 -38
  344. package/dist/lib/node-esm/set-5MO2JCUQ.mjs.map +0 -7
  345. package/dist/lib/node-esm/set-layout-mode-3RK4HIG7.mjs +0 -91
  346. package/dist/lib/node-esm/set-layout-mode-3RK4HIG7.mjs.map +0 -7
  347. package/dist/lib/node-esm/show-undo-WV7SAYGJ.mjs +0 -60
  348. package/dist/lib/node-esm/show-undo-WV7SAYGJ.mjs.map +0 -7
  349. package/dist/lib/node-esm/switch-workspace-VNM75H66.mjs +0 -69
  350. package/dist/lib/node-esm/switch-workspace-VNM75H66.mjs.map +0 -7
  351. package/dist/lib/node-esm/update-companion-SIB3GWH7.mjs +0 -33
  352. package/dist/lib/node-esm/update-companion-SIB3GWH7.mjs.map +0 -7
  353. package/dist/lib/node-esm/update-complementary-CZTIVIXU.mjs +0 -29
  354. package/dist/lib/node-esm/update-complementary-CZTIVIXU.mjs.map +0 -7
  355. package/dist/lib/node-esm/update-dialog-HEDV5XBB.mjs +0 -30
  356. package/dist/lib/node-esm/update-dialog-HEDV5XBB.mjs.map +0 -7
  357. package/dist/lib/node-esm/update-plank-size-JJLU7VE3.mjs +0 -29
  358. package/dist/lib/node-esm/update-plank-size-JJLU7VE3.mjs.map +0 -7
  359. package/dist/lib/node-esm/update-popover-HI5TU2VT.mjs +0 -34
  360. package/dist/lib/node-esm/update-popover-HI5TU2VT.mjs.map +0 -7
  361. package/dist/lib/node-esm/update-sidebar-QB5BA655.mjs +0 -26
  362. package/dist/lib/node-esm/update-sidebar-QB5BA655.mjs.map +0 -7
  363. package/dist/types/src/hooks/useHoistStatusbar.d.ts +0 -3
  364. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +0 -1
  365. package/dist/types/src/operations/definitions.d.ts +0 -15
  366. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  367. package/dist/types/src/operations/show-undo.d.ts +0 -5
  368. package/dist/types/src/operations/show-undo.d.ts.map +0 -1
  369. package/dist/types/src/types/capabilities.d.ts +0 -191
  370. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  371. package/dist/types/src/types/events.d.ts +0 -7
  372. package/dist/types/src/types/events.d.ts.map +0 -1
  373. package/src/hooks/useHoistStatusbar.ts +0 -24
  374. package/src/operations/show-undo.ts +0 -47
  375. package/src/types/capabilities.ts +0 -35
  376. package/src/types/events.ts +0 -21
  377. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/check-app-scheme-A7FZVNZO.mjs.map} +0 -0
  378. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  379. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  380. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  381. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -0,0 +1,229 @@
1
+ import {
2
+ updateActiveDeck
3
+ } from "./chunk-GLB73Q6U.mjs";
4
+ import {
5
+ shouldDeferNavigationHandlers
6
+ } from "./chunk-VHETZ22W.mjs";
7
+ import {
8
+ deserializePlanks,
9
+ serializePlanks,
10
+ stripPlanks
11
+ } from "./chunk-GBIGQKYW.mjs";
12
+ import "./chunk-J5LGTIGS.mjs";
13
+
14
+ // src/capabilities/url-handler.ts
15
+ import * as Effect from "effect/Effect";
16
+ import { Capabilities, Capability } from "@dxos/app-framework";
17
+ import { AppCapabilities, LayoutOperation, NOT_FOUND_PATH, expandPath, fromUrlPath, getWorkspaceFromPath, toUrlPath } from "@dxos/app-toolkit";
18
+ import { Operation } from "@dxos/compute";
19
+ import { runAndForwardErrors } from "@dxos/effect";
20
+ import { invariant } from "@dxos/invariant";
21
+ import { log } from "@dxos/log";
22
+ import { Node } from "@dxos/plugin-graph";
23
+ import { isTauri } from "@dxos/util";
24
+ import { DeckCapabilities, defaultDeck } from "#types";
25
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-deck/src/capabilities/url-handler.ts";
26
+ var dispatchNavigationHandlers = Effect.fn(function* (url) {
27
+ const handlers = yield* Capability.getAll(AppCapabilities.NavigationHandler);
28
+ yield* Effect.all(handlers.map((handler) => handler(url)), {
29
+ concurrency: "unbounded"
30
+ });
31
+ });
32
+ var url_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
33
+ const operationService = yield* Capability.get(Capabilities.OperationInvoker);
34
+ const capabilities = yield* Capability.Service;
35
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
36
+ const stateAtom = yield* Capability.get(DeckCapabilities.State);
37
+ const settingsAtom = yield* Capability.get(DeckCapabilities.Settings);
38
+ const provideServices = (effect) => effect.pipe(Effect.provideService(Capability.Service, capabilities), Effect.provideService(Operation.Service, operationService));
39
+ const getState = () => registry.get(stateAtom);
40
+ const getDeck = () => {
41
+ const state = getState();
42
+ const deck = state.decks[state.activeDeck];
43
+ invariant(deck, `Deck not found: ${state.activeDeck}`, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 36, S: this, A: ["deck", "`Deck not found: ${state.activeDeck}`"] });
44
+ return deck;
45
+ };
46
+ const updateState = (fn2) => {
47
+ registry.set(stateAtom, fn2(getState()));
48
+ };
49
+ const handleNavigation = Effect.fn(function* (url) {
50
+ const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
51
+ const resolvedUrl = url ?? new URL(window.location.href);
52
+ const settings = registry.get(settingsAtom);
53
+ const deferHandlers = settings?.enableNativeRedirect && shouldDeferNavigationHandlers();
54
+ if (!deferHandlers) {
55
+ yield* dispatchNavigationHandlers(resolvedUrl);
56
+ }
57
+ const pathname = resolvedUrl.pathname;
58
+ const state = getState();
59
+ if (pathname === "/reset") {
60
+ updateState((s) => ({
61
+ ...s,
62
+ activeDeck: "default",
63
+ decks: {
64
+ default: {
65
+ ...defaultDeck
66
+ }
67
+ }
68
+ }));
69
+ window.location.pathname = "/";
70
+ return;
71
+ }
72
+ const qualifiedId = fromUrlPath(pathname);
73
+ const workspace = getWorkspaceFromPath(qualifiedId);
74
+ if (workspace !== Node.RootId && workspace !== state.activeDeck) {
75
+ yield* Operation.invoke(LayoutOperation.SwitchWorkspace, {
76
+ subject: workspace
77
+ });
78
+ }
79
+ const deck = getDeck();
80
+ const activeId = qualifiedId !== workspace ? qualifiedId : void 0;
81
+ if (activeId) {
82
+ const resolvedIds = yield* Operation.invoke(LayoutOperation.Open, {
83
+ subject: [
84
+ activeId
85
+ ]
86
+ });
87
+ if (!deck.solo) {
88
+ yield* Operation.invoke(LayoutOperation.SetLayoutMode, {
89
+ subject: resolvedIds?.[0] ?? activeId,
90
+ mode: "solo"
91
+ });
92
+ }
93
+ } else if (deck.solo && deck.solo !== NOT_FOUND_PATH) {
94
+ const path = toUrlPath(deck.solo);
95
+ if (window.location.pathname !== path) {
96
+ history.replaceState(null, "", `${path}${stripPlanks(window.location.search)}`);
97
+ }
98
+ } else if (!activeId && !deck.solo) {
99
+ const plankIds = deserializePlanks(resolvedUrl);
100
+ if (plankIds.length > 0) {
101
+ for (const plankId of plankIds) {
102
+ expandPath(graph, plankId);
103
+ }
104
+ updateState((state2) => updateActiveDeck(state2, {
105
+ active: plankIds,
106
+ initialized: true
107
+ }));
108
+ }
109
+ }
110
+ });
111
+ const onPopState = () => void runAndForwardErrors(provideServices(handleNavigation()));
112
+ const sentinelKey = installLeaveTrap();
113
+ let handlingSentinel = false;
114
+ const onCurrentEntryChange = () => {
115
+ const current = window.navigation.currentEntry;
116
+ if (handlingSentinel || !current || current.key !== sentinelKey) {
117
+ return;
118
+ }
119
+ handlingSentinel = true;
120
+ queueMicrotask(() => {
121
+ if (window.confirm("Leave Composer?")) {
122
+ history.back();
123
+ } else {
124
+ history.forward();
125
+ }
126
+ setTimeout(() => {
127
+ handlingSentinel = false;
128
+ });
129
+ });
130
+ };
131
+ yield* provideServices(handleNavigation());
132
+ window.addEventListener("popstate", onPopState);
133
+ if ("navigation" in window) {
134
+ window.navigation.addEventListener("currententrychange", onCurrentEntryChange);
135
+ }
136
+ let unlistenDeepLink;
137
+ if (isTauri()) {
138
+ yield* Effect.gen(function* () {
139
+ const { getCurrent, onOpenUrl } = yield* Effect.promise(() => import("@tauri-apps/plugin-deep-link"));
140
+ const launchUrls = yield* Effect.promise(() => getCurrent());
141
+ if (launchUrls && launchUrls.length > 0) {
142
+ log("app launched with deep links", {
143
+ urls: launchUrls
144
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 148, S: this });
145
+ for (const urlString of launchUrls) {
146
+ yield* provideServices(handleDeepLink(urlString, handleNavigation));
147
+ }
148
+ }
149
+ unlistenDeepLink = yield* Effect.promise(() => onOpenUrl((urls) => {
150
+ for (const urlString of urls) {
151
+ void runAndForwardErrors(provideServices(handleDeepLink(urlString, handleNavigation)));
152
+ }
153
+ }));
154
+ }).pipe(Effect.catchAll((error) => Effect.sync(() => log.warn("failed to initialize deep link listener", {
155
+ error
156
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 160, S: this }))));
157
+ }
158
+ let lastSolo;
159
+ let lastActiveDeck;
160
+ let lastActiveKey;
161
+ const unsubscribe = registry.subscribe(stateAtom, () => {
162
+ const state = getState();
163
+ const deck = getDeck();
164
+ const solo = deck.solo;
165
+ const activeDeck = state.activeDeck;
166
+ const activeKey = solo ? void 0 : JSON.stringify(deck.active);
167
+ if (solo !== lastSolo || activeDeck !== lastActiveDeck || activeKey !== lastActiveKey) {
168
+ lastSolo = solo;
169
+ lastActiveDeck = activeDeck;
170
+ lastActiveKey = activeKey;
171
+ const path = solo && solo !== NOT_FOUND_PATH ? toUrlPath(solo) : toUrlPath(activeDeck);
172
+ const search = !solo ? serializePlanks(deck.active, window.location.search) : stripPlanks(window.location.search);
173
+ const newUrl = `${path}${search}`;
174
+ if (`${window.location.pathname}${window.location.search}` !== newUrl) {
175
+ history.pushState(null, "", newUrl);
176
+ }
177
+ }
178
+ });
179
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
180
+ window.removeEventListener("popstate", onPopState);
181
+ if ("navigation" in window) {
182
+ window.navigation.removeEventListener("currententrychange", onCurrentEntryChange);
183
+ }
184
+ unsubscribe();
185
+ unlistenDeepLink?.();
186
+ }));
187
+ }));
188
+ var SENTINEL_STORAGE_KEY = "dxos.composer.deck.leaveTrap.sentinelKey";
189
+ var installLeaveTrap = () => {
190
+ if (!("navigation" in window)) {
191
+ return void 0;
192
+ }
193
+ const saved = sessionStorage.getItem(SENTINEL_STORAGE_KEY);
194
+ if (saved && window.navigation.entries().some((entry) => entry.key === saved)) {
195
+ if (window.navigation.currentEntry?.key === saved) {
196
+ history.pushState(null, "", window.location.pathname + window.location.search);
197
+ }
198
+ return saved;
199
+ }
200
+ const key = window.navigation.currentEntry?.key;
201
+ if (key && window.history.length > 1) {
202
+ sessionStorage.setItem(SENTINEL_STORAGE_KEY, key);
203
+ history.pushState(null, "", window.location.pathname + window.location.search);
204
+ return key;
205
+ }
206
+ return void 0;
207
+ };
208
+ var isRedirectPath = (pathname) => pathname.startsWith("/redirect/");
209
+ var handleDeepLink = Effect.fn(function* (urlString, navigate) {
210
+ log("deep link received", {
211
+ url: urlString
212
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 235, S: this });
213
+ const deepLinkUrl = new URL(urlString);
214
+ const fullPath = deepLinkUrl.protocol !== "https:" && deepLinkUrl.protocol !== "http:" && deepLinkUrl.hostname ? "/" + deepLinkUrl.hostname + deepLinkUrl.pathname : deepLinkUrl.pathname;
215
+ if (isRedirectPath(fullPath)) {
216
+ return;
217
+ }
218
+ const current = new URL(window.location.href);
219
+ if (deepLinkUrl.search) {
220
+ deepLinkUrl.searchParams.forEach((value, key) => current.searchParams.set(key, value));
221
+ }
222
+ current.pathname = fullPath;
223
+ history.replaceState(null, "", current.pathname + current.search);
224
+ yield* navigate(current);
225
+ });
226
+ export {
227
+ url_handler_default as default
228
+ };
229
+ //# sourceMappingURL=url-handler-4SW6BFAC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/url-handler.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport {\n AppCapabilities,\n LayoutOperation,\n NOT_FOUND_PATH,\n expandPath,\n fromUrlPath,\n getWorkspaceFromPath,\n toUrlPath,\n} from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { Node } from '@dxos/plugin-graph';\nimport { isTauri } from '@dxos/util';\n\nimport { DeckCapabilities, type StoredDeckState, defaultDeck } from '#types';\n\nimport { updateActiveDeck } from '../operations/helpers';\nimport { deserializePlanks, serializePlanks, stripPlanks } from '../util';\nimport { shouldDeferNavigationHandlers } from './check-app-scheme';\n\n/** Dispatch all NavigationHandler contributions with a given URL. */\nconst dispatchNavigationHandlers = Effect.fn(function* (url: URL) {\n const handlers = yield* Capability.getAll(AppCapabilities.NavigationHandler);\n yield* Effect.all(\n handlers.map((handler) => handler(url)),\n { concurrency: 'unbounded' },\n );\n});\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const operationService = yield* Capability.get(Capabilities.OperationInvoker);\n const capabilities = yield* Capability.Service;\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const stateAtom = yield* Capability.get(DeckCapabilities.State);\n const settingsAtom = yield* Capability.get(DeckCapabilities.Settings);\n\n const provideServices = <A, E>(effect: Effect.Effect<A, E, Capability.Service | Operation.Service>) =>\n effect.pipe(\n Effect.provideService(Capability.Service, capabilities),\n Effect.provideService(Operation.Service, operationService),\n );\n\n // Helper to get state.\n const getState = () => registry.get(stateAtom);\n\n // Helper to get computed deck from state.\n const getDeck = () => {\n const state = getState();\n const deck = state.decks[state.activeDeck];\n invariant(deck, `Deck not found: ${state.activeDeck}`);\n return deck;\n };\n\n // Helper to update state.\n const updateState = (fn: (current: StoredDeckState) => StoredDeckState) => {\n registry.set(stateAtom, fn(getState()));\n };\n\n const handleNavigation = Effect.fn(function* (url?: URL) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const resolvedUrl = url ?? new URL(window.location.href);\n // When native redirect is active, check-app-scheme owns the initial dispatch\n // to prevent one-time tokens from being consumed before the native app can use them.\n const settings = registry.get(settingsAtom);\n const deferHandlers = settings?.enableNativeRedirect && shouldDeferNavigationHandlers();\n if (!deferHandlers) {\n yield* dispatchNavigationHandlers(resolvedUrl);\n }\n\n const pathname = resolvedUrl.pathname;\n const state = getState();\n if (pathname === '/reset') {\n updateState((s) => ({\n ...s,\n activeDeck: 'default',\n decks: {\n default: { ...defaultDeck },\n },\n }));\n window.location.pathname = '/';\n return;\n }\n\n const qualifiedId = fromUrlPath(pathname);\n const workspace = getWorkspaceFromPath(qualifiedId);\n if (workspace !== Node.RootId && workspace !== state.activeDeck) {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: workspace });\n }\n\n const deck = getDeck();\n const activeId = qualifiedId !== workspace ? qualifiedId : undefined;\n if (activeId) {\n // Ensure the object referenced by the URL is open in the deck.\n // Open validates the target and may redirect to 404, returning the resolved IDs.\n const resolvedIds = yield* Operation.invoke(LayoutOperation.Open, { subject: [activeId] });\n // If not already in solo mode, switch to solo for the resolved target.\n if (!deck.solo) {\n yield* Operation.invoke(LayoutOperation.SetLayoutMode, {\n subject: resolvedIds?.[0] ?? activeId,\n mode: 'solo',\n });\n }\n } else if (deck.solo && deck.solo !== NOT_FOUND_PATH) {\n // Stay in solo mode; redirect URL to reflect the current solo item.\n // Do not switch to deck mode here — only explicit user action should change layout mode.\n const path = toUrlPath(deck.solo);\n if (window.location.pathname !== path) {\n history.replaceState(null, '', `${path}${stripPlanks(window.location.search)}`);\n }\n } else if (!activeId && !deck.solo) {\n // Multi-mode: restore planks from query params.\n const plankIds = deserializePlanks(resolvedUrl);\n if (plankIds.length > 0) {\n for (const plankId of plankIds) {\n expandPath(graph, plankId);\n }\n updateState((state) => updateActiveDeck(state, { active: plankIds, initialized: true }));\n }\n }\n });\n\n const onPopState = () => void runAndForwardErrors(provideServices(handleNavigation()));\n\n // Install before handleNavigation()/state-sync push entries on top of the sentinel.\n const sentinelKey = installLeaveTrap();\n\n // Landing on the sentinel means a Back is about to leave Composer; confirm and act on it.\n // The guard stops our own back()/forward() from re-entering.\n let handlingSentinel = false;\n const onCurrentEntryChange = () => {\n const current = window.navigation.currentEntry;\n if (handlingSentinel || !current || current.key !== sentinelKey) {\n return;\n }\n handlingSentinel = true;\n queueMicrotask(() => {\n if (window.confirm('Leave Composer?')) {\n history.back(); // Past the sentinel to the prior page.\n } else {\n history.forward(); // Back to where the user was.\n }\n setTimeout(() => {\n handlingSentinel = false;\n });\n });\n };\n\n yield* provideServices(handleNavigation());\n window.addEventListener('popstate', onPopState);\n if ('navigation' in window) {\n window.navigation.addEventListener('currententrychange', onCurrentEntryChange);\n }\n\n // Tauri deep link support.\n let unlistenDeepLink: (() => void) | undefined;\n if (isTauri()) {\n yield* Effect.gen(function* () {\n const { getCurrent, onOpenUrl } = yield* Effect.promise(() => import('@tauri-apps/plugin-deep-link'));\n\n const launchUrls = yield* Effect.promise(() => getCurrent());\n if (launchUrls && launchUrls.length > 0) {\n log('app launched with deep links', { urls: launchUrls });\n for (const urlString of launchUrls) {\n yield* provideServices(handleDeepLink(urlString, handleNavigation));\n }\n }\n\n unlistenDeepLink = yield* Effect.promise(() =>\n onOpenUrl((urls) => {\n for (const urlString of urls) {\n void runAndForwardErrors(provideServices(handleDeepLink(urlString, handleNavigation)));\n }\n }),\n );\n }).pipe(\n Effect.catchAll((error) => Effect.sync(() => log.warn('failed to initialize deep link listener', { error }))),\n );\n }\n\n // Sync URL with layout state changes.\n let lastSolo: string | undefined;\n let lastActiveDeck: string | undefined;\n let lastActiveKey: string | undefined;\n const unsubscribe = registry.subscribe(stateAtom, () => {\n const state = getState();\n const deck = getDeck();\n const solo = deck.solo;\n const activeDeck = state.activeDeck;\n const activeKey = solo ? undefined : JSON.stringify(deck.active);\n\n if (solo !== lastSolo || activeDeck !== lastActiveDeck || activeKey !== lastActiveKey) {\n lastSolo = solo;\n lastActiveDeck = activeDeck;\n lastActiveKey = activeKey;\n\n const path = solo && solo !== NOT_FOUND_PATH ? toUrlPath(solo) : toUrlPath(activeDeck);\n const search = !solo\n ? serializePlanks(deck.active, window.location.search)\n : stripPlanks(window.location.search);\n const newUrl = `${path}${search}`;\n\n if (`${window.location.pathname}${window.location.search}` !== newUrl) {\n history.pushState(null, '', newUrl);\n }\n }\n });\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n window.removeEventListener('popstate', onPopState);\n if ('navigation' in window) {\n window.navigation.removeEventListener('currententrychange', onCurrentEntryChange);\n }\n unsubscribe();\n unlistenDeepLink?.();\n }),\n );\n }),\n);\n\n/**\n * sessionStorage key holding the sentinel history entry's key. The entry is identified by its\n * (reload-stable) Navigation API key rather than by entry state, because the deck overwrites\n * history state via replaceState during URL sync — which would erase a state marker. sessionStorage\n * survives reloads within the tab and the deck never touches it.\n */\nconst SENTINEL_STORAGE_KEY = 'dxos.composer.deck.leaveTrap.sentinelKey';\n\n/**\n * Insert a \"sentinel\" history entry beneath the app's working entries, so a Back-press that would\n * leave Composer instead lands on the sentinel — where `onCurrentEntryChange` confirms the exit. A\n * cross-document back is uncancelable and `beforeunload` cannot distinguish reload from leave, so\n * this same-document floor is required; reload fires no traversal and is never trapped. Requires the\n * Navigation API (Chromium); no-op otherwise. Idempotent across reloads via the sessionStorage-held\n * entry key, so the sentinel is not duplicated. Returns the sentinel entry's key, or undefined.\n */\nconst installLeaveTrap = (): string | undefined => {\n if (!('navigation' in window)) {\n return undefined;\n }\n const saved = sessionStorage.getItem(SENTINEL_STORAGE_KEY);\n if (saved && window.navigation.entries().some((entry) => entry.key === saved)) {\n // The sentinel survived (reload, or the user returned to Composer after leaving). If we are\n // sitting ON it — e.g. the user left via the sentinel then came back Forward onto it — push a\n // working entry above so the user is above the floor again and the trap re-arms.\n if (window.navigation.currentEntry?.key === saved) {\n history.pushState(null, '', window.location.pathname + window.location.search);\n }\n return saved;\n }\n // history.length > 1 (not navigation.canGoBack, which is false for a cross-origin prior entry)\n // means there is somewhere to leave to; otherwise Back can't exit and no sentinel is needed.\n const key = window.navigation.currentEntry?.key;\n if (key && window.history.length > 1) {\n // Record the current (landing) entry as the sentinel, then push the working entry above it.\n sessionStorage.setItem(SENTINEL_STORAGE_KEY, key);\n history.pushState(null, '', window.location.pathname + window.location.search);\n return key;\n }\n return undefined;\n};\n\n/** Check if a path is a redirect path handled elsewhere (e.g., OAuth). */\nconst isRedirectPath = (pathname: string): boolean => pathname.startsWith('/redirect/');\n\n/** Handle a deep link URL string. Merges query params into window.location and navigates. */\nconst handleDeepLink = Effect.fn(function* (urlString: string, navigate: (url?: URL) => Effect.Effect<void, any, any>) {\n log('deep link received', { url: urlString });\n\n const deepLinkUrl = new URL(urlString);\n\n // For custom schemes (e.g., composer://a/b/c), new URL() treats the first segment as the\n // hostname. Reconstruct the full path from hostname + pathname.\n const fullPath =\n deepLinkUrl.protocol !== 'https:' && deepLinkUrl.protocol !== 'http:' && deepLinkUrl.hostname\n ? '/' + deepLinkUrl.hostname + deepLinkUrl.pathname\n : deepLinkUrl.pathname;\n\n if (isRedirectPath(fullPath)) {\n return;\n }\n\n // Merge deep link query params into the current window URL so handlers can read them.\n const current = new URL(window.location.href);\n if (deepLinkUrl.search) {\n deepLinkUrl.searchParams.forEach((value, key) => current.searchParams.set(key, value));\n }\n current.pathname = fullPath;\n history.replaceState(null, '', current.pathname + current.search);\n\n yield* navigate(current);\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "NOT_FOUND_PATH", "expandPath", "fromUrlPath", "getWorkspaceFromPath", "toUrlPath", "Operation", "runAndForwardErrors", "invariant", "log", "Node", "isTauri", "DeckCapabilities", "defaultDeck", "concurrency", "capabilities", "Service", "registry", "Capability", "Capabilities", "AtomRegistry", "stateAtom", "settingsAtom", "get", "DeckCapabilities", "Settings", "provideServices", "effect", "provideService", "getState", "getDeck", "deck", "state", "invariant", "fn", "handleNavigation", "Effect", "URL", "window", "location", "deferHandlers", "dispatchNavigationHandlers", "resolvedUrl", "pathname", "updateState", "activeDeck", "decks", "default", "workspace", "Node", "Operation", "LayoutOperation", "SwitchWorkspace", "activeId", "subject", "mode", "history", "replaceState", "plankIds", "deserializePlanks", "plankId", "expandPath", "graph", "updateActiveDeck", "initialized", "sentinelKey", "installLeaveTrap", "current", "handlingSentinel", "queueMicrotask", "confirm", "back", "forward", "setTimeout", "addEventListener", "launchUrls", "length", "log", "handleDeepLink", "urlString", "unlistenDeepLink", "runAndForwardErrors", "lastActiveKey", "solo", "activeKey", "lastSolo", "lastActiveDeck", "newUrl", "path", "search", "pushState", "removeEventListener", "unsubscribe", "undefined", "saved", "sessionStorage", "SENTINEL_STORAGE_KEY", "key", "deepLinkUrl", "searchParams", "forEach", "value", "fullPath", "navigate"]
7
+ }
@@ -1,3 +1,4 @@
1
1
  import { Plugin } from '@dxos/app-framework';
2
2
  export declare const DeckPlugin: Plugin.PluginFactory<void>;
3
+ export default DeckPlugin;
3
4
  //# sourceMappingURL=DeckPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeckPlugin.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAwBhF,eAAO,MAAM,UAAU,4BAmCtB,CAAC"}
1
+ {"version":3,"file":"DeckPlugin.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA2BhF,eAAO,MAAM,UAAU,4BA0CtB,CAAC;eAEa,UAAU"}
@@ -0,0 +1,4 @@
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const DeckPlugin: Plugin.PluginFactory<void>;
3
+ export default DeckPlugin;
4
+ //# sourceMappingURL=DeckPlugin.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeckPlugin.node.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C,eAAO,MAAM,UAAU,4BAItB,CAAC;eAEa,UAAU"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DeckPlugin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeckPlugin.test.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const DeckPlugin: Plugin.PluginFactory<void>;
3
+ export default DeckPlugin;
4
+ //# sourceMappingURL=DeckPlugin.workerd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeckPlugin.workerd.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.workerd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C,eAAO,MAAM,UAAU,4BAGtB,CAAC;eAEa,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI/D,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;;AAK/D,wBA+GE"}
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI/D,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC"}
@@ -14,6 +14,6 @@ export declare const shouldDeferNavigationHandlers: () => boolean;
14
14
  * If the app doesn't open: dispatches handlers immediately.
15
15
  * In Safari: universal links handle this natively, so the check is skipped.
16
16
  */
17
- declare const _default: (props: void) => Effect.Effect<void, Error | import("@dxos/operation").NoHandlerError, Capability.Service>;
17
+ declare const _default: (props: void) => Effect.Effect<void, Error | import("@dxos/compute").NoHandlerError, Capability.Service>;
18
18
  export default _default;
19
19
  //# sourceMappingURL=check-app-scheme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-app-scheme.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/check-app-scheme.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAuF/D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,QAAO,OAEhD,CAAC;AAEF;;;;;;;;GAQG;;AACH,wBA4BE"}
1
+ {"version":3,"file":"check-app-scheme.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/check-app-scheme.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAuF/D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,QAAO,OAEhD,CAAC;AAEF;;;;;;;;GAQG"}
@@ -1,7 +1,8 @@
1
1
  import { Capability } from '@dxos/app-framework';
2
- import { OperationHandlerSet } from '@dxos/operation';
2
+ import { OperationHandlerSet } from '@dxos/compute';
3
3
  export declare const AppGraphBuilder: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-graph").BuilderExtensions>>, Error>;
4
4
  export declare const CheckAppScheme: Capability.LazyCapability<void, void, Error>;
5
+ export declare const NotificationTracker: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<null>>, Error>;
5
6
  export declare const OperationHandler: Capability.LazyCapability<OperationHandlerSet.OperationHandlerSet, Capability.ModuleReturn, Error>;
6
7
  export declare const ReactRoot: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<Readonly<{
7
8
  id: string;
@@ -17,10 +18,10 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
17
18
  previousDeck: string;
18
19
  decks: {
19
20
  [x: string]: {
20
- solo?: string | undefined;
21
21
  initialized: boolean;
22
22
  active: string[];
23
23
  inactive: string[];
24
+ solo?: string | undefined;
24
25
  fullscreen: boolean;
25
26
  plankSizing: {
26
27
  [x: string]: number;
@@ -33,7 +34,7 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
33
34
  };
34
35
  };
35
36
  previousMode: {
36
- [x: string]: "solo" | "multi" | "solo--fullscreen";
37
+ [x: string]: "multi" | "solo" | "solo--fullscreen";
37
38
  };
38
39
  }, {
39
40
  sidebarState: "closed" | "collapsed" | "expanded";
@@ -43,10 +44,10 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
43
44
  previousDeck: string;
44
45
  decks: {
45
46
  [x: string]: {
46
- solo?: string | undefined;
47
47
  initialized: boolean;
48
48
  active: string[];
49
49
  inactive: string[];
50
+ solo?: string | undefined;
50
51
  fullscreen: boolean;
51
52
  plankSizing: {
52
53
  [x: string]: number;
@@ -59,12 +60,12 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
59
60
  };
60
61
  };
61
62
  previousMode: {
62
- [x: string]: "solo" | "multi" | "solo--fullscreen";
63
+ [x: string]: "multi" | "solo" | "solo--fullscreen";
63
64
  };
64
65
  }>>>, Capability.Capability<Capability.InterfaceDef<import("@effect-atom/atom/Atom").Writable<{
65
66
  dialogOpen: boolean;
66
- dialogType?: "default" | "alert" | undefined;
67
- dialogBlockAlign?: "start" | "center" | "end" | undefined;
67
+ dialogType?: "alert" | "default" | undefined;
68
+ dialogBlockAlign?: "center" | "end" | "start" | undefined;
68
69
  dialogOverlayClasses?: string | undefined;
69
70
  dialogOverlayStyle?: {
70
71
  readonly [x: string]: any;
@@ -74,12 +75,12 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
74
75
  readonly props?: any;
75
76
  } | null;
76
77
  popoverOpen: boolean;
77
- popoverSide?: "top" | "right" | "bottom" | "left" | undefined;
78
+ popoverSide?: "bottom" | "left" | "right" | "top" | undefined;
78
79
  popoverAnchor?: any;
79
80
  popoverAnchorId?: string | undefined;
80
81
  popoverKind?: "base" | "card" | undefined;
81
82
  popoverTitle?: string | [string, {
82
- ns: string;
83
+ ns: string | readonly string[];
83
84
  count?: number | undefined;
84
85
  defaultValue?: string | undefined;
85
86
  }] | undefined;
@@ -91,31 +92,31 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
91
92
  readonly subject: any;
92
93
  } | null;
93
94
  toasts: {
94
- readonly description?: string | [string, {
95
- ns: string;
95
+ readonly id: string;
96
+ readonly title?: string | [string, {
97
+ ns: string | readonly string[];
96
98
  count?: number | undefined;
97
99
  defaultValue?: string | undefined;
98
100
  }] | undefined;
99
- readonly id: string;
100
- readonly title?: string | [string, {
101
- ns: string;
101
+ readonly description?: string | [string, {
102
+ ns: string | readonly string[];
102
103
  count?: number | undefined;
103
104
  defaultValue?: string | undefined;
104
105
  }] | undefined;
105
106
  readonly icon?: string | undefined;
106
107
  readonly duration?: number | undefined;
107
108
  readonly closeLabel?: string | [string, {
108
- ns: string;
109
+ ns: string | readonly string[];
109
110
  count?: number | undefined;
110
111
  defaultValue?: string | undefined;
111
112
  }] | undefined;
112
113
  readonly actionLabel?: string | [string, {
113
- ns: string;
114
+ ns: string | readonly string[];
114
115
  count?: number | undefined;
115
116
  defaultValue?: string | undefined;
116
117
  }] | undefined;
117
118
  readonly actionAlt?: string | [string, {
118
- ns: string;
119
+ ns: string | readonly string[];
119
120
  count?: number | undefined;
120
121
  defaultValue?: string | undefined;
121
122
  }] | undefined;
@@ -125,8 +126,8 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
125
126
  scrollIntoView?: string | undefined;
126
127
  }, {
127
128
  dialogOpen: boolean;
128
- dialogType?: "default" | "alert" | undefined;
129
- dialogBlockAlign?: "start" | "center" | "end" | undefined;
129
+ dialogType?: "alert" | "default" | undefined;
130
+ dialogBlockAlign?: "center" | "end" | "start" | undefined;
130
131
  dialogOverlayClasses?: string | undefined;
131
132
  dialogOverlayStyle?: {
132
133
  readonly [x: string]: any;
@@ -136,12 +137,12 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
136
137
  readonly props?: any;
137
138
  } | null;
138
139
  popoverOpen: boolean;
139
- popoverSide?: "top" | "right" | "bottom" | "left" | undefined;
140
+ popoverSide?: "bottom" | "left" | "right" | "top" | undefined;
140
141
  popoverAnchor?: any;
141
142
  popoverAnchorId?: string | undefined;
142
143
  popoverKind?: "base" | "card" | undefined;
143
144
  popoverTitle?: string | [string, {
144
- ns: string;
145
+ ns: string | readonly string[];
145
146
  count?: number | undefined;
146
147
  defaultValue?: string | undefined;
147
148
  }] | undefined;
@@ -153,31 +154,31 @@ export declare const DeckState: Capability.LazyCapability<void, [Capability.Capa
153
154
  readonly subject: any;
154
155
  } | null;
155
156
  toasts: {
156
- readonly description?: string | [string, {
157
- ns: string;
157
+ readonly id: string;
158
+ readonly title?: string | [string, {
159
+ ns: string | readonly string[];
158
160
  count?: number | undefined;
159
161
  defaultValue?: string | undefined;
160
162
  }] | undefined;
161
- readonly id: string;
162
- readonly title?: string | [string, {
163
- ns: string;
163
+ readonly description?: string | [string, {
164
+ ns: string | readonly string[];
164
165
  count?: number | undefined;
165
166
  defaultValue?: string | undefined;
166
167
  }] | undefined;
167
168
  readonly icon?: string | undefined;
168
169
  readonly duration?: number | undefined;
169
170
  readonly closeLabel?: string | [string, {
170
- ns: string;
171
+ ns: string | readonly string[];
171
172
  count?: number | undefined;
172
173
  defaultValue?: string | undefined;
173
174
  }] | undefined;
174
175
  readonly actionLabel?: string | [string, {
175
- ns: string;
176
+ ns: string | readonly string[];
176
177
  count?: number | undefined;
177
178
  defaultValue?: string | undefined;
178
179
  }] | undefined;
179
180
  readonly actionAlt?: string | [string, {
180
- ns: string;
181
+ ns: string | readonly string[];
181
182
  count?: number | undefined;
182
183
  defaultValue?: string | undefined;
183
184
  }] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,eAAe,qIAA0E,CAAC;AACvG,eAAO,MAAM,cAAc,8CAAwE,CAAC;AACpG,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,SAAS;;;YAA6D,CAAC;AACpF,eAAO,MAAM,YAAY,iJAAmE,CAAC;AAC7F,eAAO,MAAM,YAAY,uTAA8D,CAAC;AACxF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAwD,CAAC;AAC/E,eAAO,MAAM,UAAU,8FAA+D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,eAAe,qIAA0E,CAAC;AACvG,eAAO,MAAM,cAAc,8CAAwE,CAAC;AACpG,eAAO,MAAM,mBAAmB,8FAAiF,CAAC;AAClH,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,SAAS;;;YAA6D,CAAC;AACpF,eAAO,MAAM,YAAY,iJAAmE,CAAC;AAC7F,eAAO,MAAM,YAAY,uTAA8D,CAAC;AACxF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAwD,CAAC;AAC/E,eAAO,MAAM,UAAU,8FAA+D,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ /**
4
+ * The single producer of toasts driven by operation invocations:
5
+ * - Per-invoke notifications ride the process monitor: each invocation spawns a process carrying the
6
+ * caller's `notify` config on its params; this tracker watches process state transitions and toasts
7
+ * on start / success / failure.
8
+ * - Undo toasts come from the history tracker's `undoable` stream (it owns the undo registry lookup);
9
+ * the toast action triggers `historyTracker.undoPromise()`.
10
+ */
11
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<null>>, Error, Capability.Service>;
12
+ export default _default;
13
+ //# sourceMappingURL=notification-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-tracker.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/notification-tracker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAW/D;;;;;;;GAOG"}
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- import type { OperationHandlerSet } from '@dxos/operation';
3
+ import type { OperationHandlerSet } from '@dxos/compute';
4
4
  declare const _default: (props: OperationHandlerSet.OperationHandlerSet) => Effect.Effect<Capability.ModuleReturn, Error, Capability.Service>;
5
5
  export default _default;
6
6
  //# sourceMappingURL=operation-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation-handler.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/operation-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;;AAI3D,wBAIE"}
1
+ {"version":3,"file":"operation-handler.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/operation-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"react-root.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-root.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;;;;;AAM/D,wBAiCE"}
1
+ {"version":3,"file":"react-root.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-root.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAS/D,wBAmBE"}
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAoB,QAAQ,EAAE,MAAM,QAAQ,CAAC;;AAEpD,wBAuBE"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAoB,QAAQ,EAAE,MAAM,QAAQ,CAAC"}