@dxos/plugin-deck 0.8.4-main.422d1c7879 → 0.8.4-main.4668b7de9b
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.
- package/LICENSE +102 -5
- package/PLUGIN.mdl +541 -0
- package/README.md +1 -1
- package/dist/lib/neutral/DeckLayout-YABVXRDU.mjs +291 -0
- package/dist/lib/neutral/DeckLayout-YABVXRDU.mjs.map +7 -0
- package/dist/lib/neutral/DeckPlugin.mjs +87 -0
- package/dist/lib/neutral/DeckPlugin.mjs.map +7 -0
- package/dist/lib/neutral/DeckPlugin.node.mjs +18 -0
- package/dist/lib/neutral/DeckPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/DeckPlugin.workerd.mjs +16 -0
- package/dist/lib/neutral/DeckPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs +27 -0
- package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs.map +7 -0
- package/dist/lib/{browser/add-toast-EUN62IUE.mjs → neutral/add-toast-TNB6DXWU.mjs} +5 -5
- package/dist/lib/{browser/add-toast-EUN62IUE.mjs.map → neutral/add-toast-TNB6DXWU.mjs.map} +2 -2
- package/dist/lib/{browser/adjust-XWB6ZZ6U.mjs → neutral/adjust-HNU5CCRO.mjs} +15 -17
- package/dist/lib/neutral/adjust-HNU5CCRO.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-HMLT627T.mjs +129 -0
- package/dist/lib/neutral/app-graph-builder-HMLT627T.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +25 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/check-app-scheme-A7FZVNZO.mjs +10 -0
- package/dist/lib/neutral/chunk-BS4EOYMK.mjs +282 -0
- package/dist/lib/neutral/chunk-BS4EOYMK.mjs.map +7 -0
- package/dist/lib/neutral/chunk-GBIGQKYW.mjs +112 -0
- package/dist/lib/neutral/chunk-GBIGQKYW.mjs.map +7 -0
- package/dist/lib/{browser/chunk-KUTDCWZF.mjs → neutral/chunk-GLB73Q6U.mjs} +2 -10
- package/dist/lib/{browser/chunk-KUTDCWZF.mjs.map → neutral/chunk-GLB73Q6U.mjs.map} +2 -2
- package/dist/lib/neutral/chunk-OQGC7JYT.mjs +8 -0
- package/dist/lib/neutral/chunk-OQGC7JYT.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PYEY5SEC.mjs +37 -0
- package/dist/lib/neutral/chunk-PYEY5SEC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Q534NBCS.mjs +1305 -0
- package/dist/lib/neutral/chunk-Q534NBCS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-VHETZ22W.mjs +101 -0
- package/dist/lib/neutral/chunk-VHETZ22W.mjs.map +7 -0
- package/dist/lib/{browser/chunk-DF2VZ6W3.mjs → neutral/chunk-ZYYOSX5I.mjs} +1 -1
- package/dist/lib/{browser/chunk-DF2VZ6W3.mjs.map → neutral/chunk-ZYYOSX5I.mjs.map} +2 -2
- package/dist/lib/{browser/close-JXK73YIM.mjs → neutral/close-ASKR22A6.mjs} +12 -12
- package/dist/lib/{browser/close-JXK73YIM.mjs.map → neutral/close-ASKR22A6.mjs.map} +2 -2
- package/dist/lib/neutral/components/index.mjs +126 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +32 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +159 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/{node-esm/types → neutral}/index.mjs +13 -8
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/notification-tracker-BYKXOXDE.mjs +128 -0
- package/dist/lib/neutral/notification-tracker-BYKXOXDE.mjs.map +7 -0
- package/dist/lib/{browser/open-K2JOEW2E.mjs → neutral/open-IFIEYVHG.mjs} +34 -25
- package/dist/lib/neutral/open-IFIEYVHG.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-266CVMTW.mjs +13 -0
- package/dist/lib/neutral/operation-handler-266CVMTW.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-root-HH5DEUOG.mjs +44 -0
- package/dist/lib/neutral/react-root-HH5DEUOG.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-3UVVCK3O.mjs +34 -0
- package/dist/lib/neutral/react-surface-3UVVCK3O.mjs.map +7 -0
- package/dist/lib/{browser/revert-workspace-BNIR5U64.mjs → neutral/revert-workspace-B2QLT2C4.mjs} +5 -5
- package/dist/lib/{browser/revert-workspace-BNIR5U64.mjs.map → neutral/revert-workspace-B2QLT2C4.mjs.map} +2 -2
- package/dist/lib/{browser/scroll-into-view-4GSKC3GA.mjs → neutral/scroll-into-view-B52C3PJO.mjs} +5 -5
- package/dist/lib/{browser/scroll-into-view-4GSKC3GA.mjs.map → neutral/scroll-into-view-B52C3PJO.mjs.map} +2 -2
- package/dist/lib/{browser/set-XCG6NIAO.mjs → neutral/set-PA35ONXO.mjs} +11 -11
- package/dist/lib/{browser/set-XCG6NIAO.mjs.map → neutral/set-PA35ONXO.mjs.map} +2 -2
- package/dist/lib/{browser/set-layout-mode-BEVNGOY2.mjs → neutral/set-layout-mode-RPCCPQRB.mjs} +10 -15
- package/dist/lib/neutral/set-layout-mode-RPCCPQRB.mjs.map +7 -0
- package/dist/lib/neutral/settings-EGNYUM4T.mjs +33 -0
- package/dist/lib/neutral/settings-EGNYUM4T.mjs.map +7 -0
- package/dist/lib/neutral/state-IIDXMQUO.mjs +86 -0
- package/dist/lib/neutral/state-IIDXMQUO.mjs.map +7 -0
- package/dist/lib/{browser/switch-workspace-ICJJWNFT.mjs → neutral/switch-workspace-LZF4KZXH.mjs} +9 -17
- package/dist/lib/neutral/switch-workspace-LZF4KZXH.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +59 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/types/index.mjs +7 -5
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/{browser/update-companion-VPCBH3YT.mjs → neutral/update-companion-YUCZZVGY.mjs} +7 -7
- package/dist/lib/neutral/update-companion-YUCZZVGY.mjs.map +7 -0
- package/dist/lib/{browser/update-complementary-74DEQY6T.mjs → neutral/update-complementary-7FZNB55J.mjs} +6 -6
- package/dist/lib/neutral/update-complementary-7FZNB55J.mjs.map +7 -0
- package/dist/lib/{browser/update-dialog-6TDUYI5R.mjs → neutral/update-dialog-FNQTSSAP.mjs} +5 -5
- package/dist/lib/{browser/update-dialog-6TDUYI5R.mjs.map → neutral/update-dialog-FNQTSSAP.mjs.map} +2 -2
- package/dist/lib/neutral/update-plank-size-3YW4NXEY.mjs +26 -0
- package/dist/lib/neutral/update-plank-size-3YW4NXEY.mjs.map +7 -0
- package/dist/lib/{browser/update-popover-W7E2Z5T6.mjs → neutral/update-popover-G2VUD7E6.mjs} +5 -5
- package/dist/lib/{browser/update-popover-W7E2Z5T6.mjs.map → neutral/update-popover-G2VUD7E6.mjs.map} +2 -2
- package/dist/lib/{browser/update-sidebar-H3A6ZFRU.mjs → neutral/update-sidebar-KRHPUHUB.mjs} +6 -6
- package/dist/lib/{browser/update-sidebar-H3A6ZFRU.mjs.map → neutral/update-sidebar-KRHPUHUB.mjs.map} +2 -2
- package/dist/lib/neutral/url-handler-4SW6BFAC.mjs +229 -0
- package/dist/lib/neutral/url-handler-4SW6BFAC.mjs.map +7 -0
- package/dist/types/src/DeckPlugin.d.ts +1 -0
- package/dist/types/src/DeckPlugin.d.ts.map +1 -1
- package/dist/types/src/DeckPlugin.node.d.ts +4 -0
- package/dist/types/src/DeckPlugin.node.d.ts.map +1 -0
- package/dist/types/src/DeckPlugin.test.d.ts +2 -0
- package/dist/types/src/DeckPlugin.test.d.ts.map +1 -0
- package/dist/types/src/DeckPlugin.workerd.d.ts +4 -0
- package/dist/types/src/DeckPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/check-app-scheme.d.ts +1 -1
- package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +30 -29
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/notification-tracker.d.ts +13 -0
- package/dist/types/src/capabilities/notification-tracker.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +28 -28
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/tools.d.ts.map +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +44 -52
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -1
- package/dist/types/src/components/Matrix/Matrix.d.ts +2 -2
- package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -1
- package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Banner.d.ts +1 -1
- package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Deck.stories.d.ts +44 -52
- package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/DeckContent.d.ts +4 -4
- package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/DeckRoot.d.ts +5 -8
- package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/DeckViewport.d.ts +4 -7
- package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +44 -52
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/Toast.d.ts +1 -1
- package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/Plank.d.ts +1 -1
- package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/Plank.stories.d.ts +44 -52
- package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/PlankContent.d.ts +1 -1
- package/dist/types/src/containers/Plank/PlankError.d.ts +1 -1
- package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/PlankRoot.d.ts +1 -1
- package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -1
- package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -1
- package/dist/types/src/containers/Sidebar/Sidebar.d.ts.map +1 -1
- package/dist/types/src/containers/Sidebar/SidebarButton.d.ts +1 -1
- package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
- package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckCompanions.d.ts +1 -1
- package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
- package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
- package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/layout.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/add-toast.d.ts +1 -1
- package/dist/types/src/operations/add-toast.d.ts.map +1 -1
- package/dist/types/src/operations/adjust.d.ts +3 -3
- package/dist/types/src/operations/adjust.d.ts.map +1 -1
- package/dist/types/src/operations/close.d.ts +1 -1
- package/dist/types/src/operations/close.d.ts.map +1 -1
- package/dist/types/src/operations/helpers.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +1 -2
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/open.d.ts +1 -1
- package/dist/types/src/operations/open.d.ts.map +1 -1
- package/dist/types/src/operations/revert-workspace.d.ts +1 -1
- package/dist/types/src/operations/revert-workspace.d.ts.map +1 -1
- package/dist/types/src/operations/scroll-into-view.d.ts +1 -1
- package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -1
- package/dist/types/src/operations/set-layout-mode.d.ts +1 -1
- package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -1
- package/dist/types/src/operations/set.d.ts +1 -1
- package/dist/types/src/operations/set.d.ts.map +1 -1
- package/dist/types/src/operations/switch-workspace.d.ts +1 -1
- package/dist/types/src/operations/switch-workspace.d.ts.map +1 -1
- package/dist/types/src/operations/update-companion.d.ts +1 -1
- package/dist/types/src/operations/update-companion.d.ts.map +1 -1
- package/dist/types/src/operations/update-complementary.d.ts +1 -1
- package/dist/types/src/operations/update-complementary.d.ts.map +1 -1
- package/dist/types/src/operations/update-dialog.d.ts +1 -1
- package/dist/types/src/operations/update-dialog.d.ts.map +1 -1
- package/dist/types/src/operations/update-plank-size.d.ts +3 -3
- package/dist/types/src/operations/update-plank-size.d.ts.map +1 -1
- package/dist/types/src/operations/update-popover.d.ts +1 -1
- package/dist/types/src/operations/update-popover.d.ts.map +1 -1
- package/dist/types/src/operations/update-sidebar.d.ts +1 -1
- package/dist/types/src/operations/update-sidebar.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +44 -53
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/DeckCapabilities.d.ts +188 -0
- package/dist/types/src/types/DeckCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/DeckEvents.d.ts +5 -0
- package/dist/types/src/types/DeckEvents.d.ts.map +1 -0
- package/dist/types/src/types/DeckOperation.d.ts +15 -0
- package/dist/types/src/types/DeckOperation.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +4 -5
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +3 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +6 -7
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
- package/dist/types/src/util/plank-url-params.d.ts.map +1 -1
- package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -1
- package/dist/types/src/util/set-active.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +105 -69
- package/src/DeckPlugin.node.ts +17 -0
- package/src/DeckPlugin.test.ts +27 -0
- package/src/DeckPlugin.ts +16 -4
- package/src/DeckPlugin.workerd.ts +16 -0
- package/src/capabilities/app-graph-builder.ts +4 -4
- package/src/capabilities/index.ts +2 -1
- package/src/capabilities/notification-tracker.ts +132 -0
- package/src/capabilities/operation-handler.ts +1 -1
- package/src/capabilities/react-root.tsx +20 -15
- package/src/capabilities/react-surface.tsx +2 -2
- package/src/capabilities/settings.ts +1 -2
- package/src/capabilities/tools.ts +1 -1
- package/src/capabilities/url-handler.ts +73 -2
- package/src/components/DeckSettings/DeckSettings.stories.tsx +2 -2
- package/src/components/DeckSettings/DeckSettings.tsx +8 -47
- package/src/components/Matrix/Matrix.stories.tsx +2 -2
- package/src/components/Matrix/Matrix.tsx +1 -1
- package/src/containers/Deck/Banner.tsx +2 -2
- package/src/containers/Deck/Deck.stories.tsx +1 -1
- package/src/containers/Deck/DeckContent.tsx +2 -5
- package/src/containers/Deck/DeckViewport.tsx +7 -13
- package/src/containers/DeckLayout/ActiveNode.tsx +1 -1
- package/src/containers/DeckLayout/DeckLayout.stories.tsx +8 -10
- package/src/containers/DeckLayout/Fallback.tsx +2 -2
- package/src/containers/DeckLayout/Popover.tsx +31 -26
- package/src/containers/DeckLayout/Toast.tsx +19 -29
- package/src/containers/Plank/Plank.stories.tsx +3 -3
- package/src/containers/Plank/PlankComponent.tsx +3 -2
- package/src/containers/Plank/PlankContent.tsx +1 -1
- package/src/containers/Plank/PlankError.tsx +6 -3
- package/src/containers/Plank/PlankHeading.tsx +5 -5
- package/src/containers/Plank/PlankLoading.tsx +1 -1
- package/src/containers/Plank/PlankRoot.tsx +1 -1
- package/src/containers/Sidebar/ComplementarySidebar.tsx +20 -39
- package/src/containers/Sidebar/Sidebar.tsx +5 -10
- package/src/containers/Sidebar/SidebarButton.tsx +7 -1
- package/src/hooks/index.ts +0 -1
- package/src/hooks/useDeckCompanions.ts +1 -1
- package/src/index.ts +1 -3
- package/src/meta.ts +24 -6
- package/src/operations/add-toast.ts +1 -1
- package/src/operations/adjust.ts +4 -5
- package/src/operations/close.ts +2 -2
- package/src/operations/index.ts +1 -4
- package/src/operations/open.ts +29 -13
- package/src/operations/revert-workspace.ts +1 -1
- package/src/operations/scroll-into-view.ts +1 -1
- package/src/operations/set-layout-mode.ts +1 -1
- package/src/operations/set.ts +2 -2
- package/src/operations/switch-workspace.ts +8 -2
- package/src/operations/update-companion.ts +1 -1
- package/src/operations/update-complementary.ts +1 -1
- package/src/operations/update-dialog.ts +1 -1
- package/src/operations/update-plank-size.ts +3 -4
- package/src/operations/update-popover.ts +1 -1
- package/src/operations/update-sidebar.ts +1 -1
- package/src/plugin.ts +11 -0
- package/src/translations.ts +4 -12
- package/src/types/DeckCapabilities.ts +34 -0
- package/src/types/DeckEvents.ts +21 -0
- package/src/{operations/definitions.ts → types/DeckOperation.ts} +13 -6
- package/src/types/Settings.ts +25 -6
- package/src/types/index.ts +4 -2
- package/src/types/schema.ts +0 -2
- package/src/vite-env.d.ts +5 -0
- package/dist/lib/browser/adjust-XWB6ZZ6U.mjs.map +0 -7
- package/dist/lib/browser/chunk-5LM6A3EC.mjs +0 -208
- package/dist/lib/browser/chunk-5LM6A3EC.mjs.map +0 -7
- package/dist/lib/browser/chunk-BRZAVPMC.mjs +0 -48
- package/dist/lib/browser/chunk-BRZAVPMC.mjs.map +0 -7
- package/dist/lib/browser/chunk-FRVCL5NO.mjs +0 -72
- package/dist/lib/browser/chunk-FRVCL5NO.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -201
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/open-K2JOEW2E.mjs.map +0 -7
- package/dist/lib/browser/operations/index.mjs +0 -13
- package/dist/lib/browser/operations/index.mjs.map +0 -7
- package/dist/lib/browser/set-layout-mode-BEVNGOY2.mjs.map +0 -7
- package/dist/lib/browser/show-undo-5RQNREEB.mjs +0 -59
- package/dist/lib/browser/show-undo-5RQNREEB.mjs.map +0 -7
- package/dist/lib/browser/switch-workspace-ICJJWNFT.mjs.map +0 -7
- package/dist/lib/browser/update-companion-VPCBH3YT.mjs.map +0 -7
- package/dist/lib/browser/update-complementary-74DEQY6T.mjs.map +0 -7
- package/dist/lib/browser/update-plank-size-5VHZOTHE.mjs +0 -28
- package/dist/lib/browser/update-plank-size-5VHZOTHE.mjs.map +0 -7
- package/dist/lib/node-esm/add-toast-AZM7NFNM.mjs +0 -25
- package/dist/lib/node-esm/add-toast-AZM7NFNM.mjs.map +0 -7
- package/dist/lib/node-esm/adjust-ICALXQ6F.mjs +0 -96
- package/dist/lib/node-esm/adjust-ICALXQ6F.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-A63Q53TW.mjs +0 -73
- package/dist/lib/node-esm/chunk-A63Q53TW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-B7WZXRW4.mjs +0 -209
- package/dist/lib/node-esm/chunk-B7WZXRW4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-IRWCUYJY.mjs +0 -71
- package/dist/lib/node-esm/chunk-IRWCUYJY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MB4SDDVY.mjs +0 -50
- package/dist/lib/node-esm/chunk-MB4SDDVY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MLVJ2ODW.mjs +0 -32
- package/dist/lib/node-esm/chunk-MLVJ2ODW.mjs.map +0 -7
- package/dist/lib/node-esm/close-GC5V3GD5.mjs +0 -45
- package/dist/lib/node-esm/close-GC5V3GD5.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -202
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/open-XXEHIR6G.mjs +0 -151
- package/dist/lib/node-esm/open-XXEHIR6G.mjs.map +0 -7
- package/dist/lib/node-esm/operations/index.mjs +0 -14
- package/dist/lib/node-esm/operations/index.mjs.map +0 -7
- package/dist/lib/node-esm/revert-workspace-WCXAL5C6.mjs +0 -22
- package/dist/lib/node-esm/revert-workspace-WCXAL5C6.mjs.map +0 -7
- package/dist/lib/node-esm/scroll-into-view-2ZNU44ZO.mjs +0 -22
- package/dist/lib/node-esm/scroll-into-view-2ZNU44ZO.mjs.map +0 -7
- package/dist/lib/node-esm/set-5MO2JCUQ.mjs +0 -38
- package/dist/lib/node-esm/set-5MO2JCUQ.mjs.map +0 -7
- package/dist/lib/node-esm/set-layout-mode-3RK4HIG7.mjs +0 -91
- package/dist/lib/node-esm/set-layout-mode-3RK4HIG7.mjs.map +0 -7
- package/dist/lib/node-esm/show-undo-WV7SAYGJ.mjs +0 -60
- package/dist/lib/node-esm/show-undo-WV7SAYGJ.mjs.map +0 -7
- package/dist/lib/node-esm/switch-workspace-VNM75H66.mjs +0 -69
- package/dist/lib/node-esm/switch-workspace-VNM75H66.mjs.map +0 -7
- package/dist/lib/node-esm/update-companion-SIB3GWH7.mjs +0 -33
- package/dist/lib/node-esm/update-companion-SIB3GWH7.mjs.map +0 -7
- package/dist/lib/node-esm/update-complementary-CZTIVIXU.mjs +0 -29
- package/dist/lib/node-esm/update-complementary-CZTIVIXU.mjs.map +0 -7
- package/dist/lib/node-esm/update-dialog-HEDV5XBB.mjs +0 -30
- package/dist/lib/node-esm/update-dialog-HEDV5XBB.mjs.map +0 -7
- package/dist/lib/node-esm/update-plank-size-JJLU7VE3.mjs +0 -29
- package/dist/lib/node-esm/update-plank-size-JJLU7VE3.mjs.map +0 -7
- package/dist/lib/node-esm/update-popover-HI5TU2VT.mjs +0 -34
- package/dist/lib/node-esm/update-popover-HI5TU2VT.mjs.map +0 -7
- package/dist/lib/node-esm/update-sidebar-QB5BA655.mjs +0 -26
- package/dist/lib/node-esm/update-sidebar-QB5BA655.mjs.map +0 -7
- package/dist/types/src/hooks/useHoistStatusbar.d.ts +0 -3
- package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +0 -1
- package/dist/types/src/operations/definitions.d.ts +0 -15
- package/dist/types/src/operations/definitions.d.ts.map +0 -1
- package/dist/types/src/operations/show-undo.d.ts +0 -5
- package/dist/types/src/operations/show-undo.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts +0 -191
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/dist/types/src/types/events.d.ts +0 -7
- package/dist/types/src/types/events.d.ts.map +0 -1
- package/src/hooks/useHoistStatusbar.ts +0 -24
- package/src/operations/show-undo.ts +0 -47
- package/src/types/capabilities.ts +0 -35
- package/src/types/events.ts +0 -21
- /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/check-app-scheme-A7FZVNZO.mjs.map} +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
- /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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckPlugin.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqC,MAAM,EAAE,MAAM,qBAAqB,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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"DeckPlugin.test.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.test.ts"],"names":[],"mappings":""}
|
|
@@ -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
|
|
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/
|
|
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
|
|
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/
|
|
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]: "
|
|
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]: "
|
|
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?: "
|
|
67
|
-
dialogBlockAlign?: "
|
|
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?: "
|
|
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
|
|
95
|
-
|
|
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
|
|
100
|
-
|
|
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?: "
|
|
129
|
-
dialogBlockAlign?: "
|
|
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?: "
|
|
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
|
|
157
|
-
|
|
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
|
|
162
|
-
|
|
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,
|
|
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/
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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"}
|