@dxos/plugin-deck 0.8.4-main.4a85c3132b → 0.8.4-main.4f23b4e393
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/dist/lib/neutral/DeckLayout-6SICSSUF.mjs +278 -0
- package/dist/lib/neutral/DeckLayout-6SICSSUF.mjs.map +7 -0
- package/dist/lib/neutral/DeckPlugin.mjs +70 -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/DeckSettings-W5I57OXM.mjs +27 -0
- package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs.map +7 -0
- package/dist/lib/neutral/add-toast-2OMTFZ2L.mjs +24 -0
- package/dist/lib/neutral/add-toast-2OMTFZ2L.mjs.map +7 -0
- package/dist/lib/neutral/adjust-RXTF3IT3.mjs +93 -0
- package/dist/lib/neutral/adjust-RXTF3IT3.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-GZYYAN5B.mjs +129 -0
- package/dist/lib/neutral/app-graph-builder-GZYYAN5B.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +23 -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-4MYX2NT3.mjs +1335 -0
- package/dist/lib/neutral/chunk-4MYX2NT3.mjs.map +7 -0
- package/dist/lib/neutral/chunk-64ODQD6S.mjs +282 -0
- package/dist/lib/neutral/chunk-64ODQD6S.mjs.map +7 -0
- package/dist/lib/neutral/chunk-6MOYMDKQ.mjs +8 -0
- package/dist/lib/neutral/chunk-6MOYMDKQ.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/neutral/chunk-GLB73Q6U.mjs +22 -0
- package/dist/lib/neutral/chunk-GLB73Q6U.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/{browser/chunk-FBL4WVYZ.mjs → neutral/chunk-JMYWDX4I.mjs} +6 -3
- package/dist/lib/{browser/chunk-FBL4WVYZ.mjs.map → neutral/chunk-JMYWDX4I.mjs.map} +3 -3
- package/dist/lib/neutral/chunk-VHETZ22W.mjs +101 -0
- package/dist/lib/neutral/chunk-VHETZ22W.mjs.map +7 -0
- package/dist/lib/{browser/chunk-SKBPLX5T.mjs → neutral/chunk-ZYYOSX5I.mjs} +22 -34
- package/dist/lib/neutral/chunk-ZYYOSX5I.mjs.map +7 -0
- package/dist/lib/neutral/close-DG5IVQCE.mjs +44 -0
- package/dist/lib/neutral/close-DG5IVQCE.mjs.map +7 -0
- 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/{browser/chunk-Q4GUCIRE.mjs → neutral/hooks/index.mjs} +34 -56
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +38 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/open-SGYZO7RF.mjs +147 -0
- package/dist/lib/neutral/open-SGYZO7RF.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/{browser/react-root-4ESZAM6D.mjs → neutral/react-root-WZ6KH27J.mjs} +6 -14
- package/dist/lib/neutral/react-root-WZ6KH27J.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-KAAZDHV3.mjs +34 -0
- package/dist/lib/neutral/react-surface-KAAZDHV3.mjs.map +7 -0
- package/dist/lib/neutral/revert-workspace-V6D7W6CL.mjs +21 -0
- package/dist/lib/neutral/revert-workspace-V6D7W6CL.mjs.map +7 -0
- package/dist/lib/neutral/scroll-into-view-UM446Q2T.mjs +21 -0
- package/dist/lib/neutral/scroll-into-view-UM446Q2T.mjs.map +7 -0
- package/dist/lib/neutral/set-JFFKT32S.mjs +37 -0
- package/dist/lib/neutral/set-JFFKT32S.mjs.map +7 -0
- package/dist/lib/neutral/set-layout-mode-I4YV5V2Y.mjs +85 -0
- package/dist/lib/neutral/set-layout-mode-I4YV5V2Y.mjs.map +7 -0
- package/dist/lib/{browser/settings-RY2TBSGP.mjs → neutral/settings-FE7AC5VS.mjs} +7 -13
- package/dist/lib/neutral/settings-FE7AC5VS.mjs.map +7 -0
- package/dist/lib/neutral/show-undo-ZCMF4J2Q.mjs +59 -0
- package/dist/lib/neutral/show-undo-ZCMF4J2Q.mjs.map +7 -0
- package/dist/lib/{browser/state-CSTTMJ43.mjs → neutral/state-IIDXMQUO.mjs} +14 -34
- package/dist/lib/neutral/state-IIDXMQUO.mjs.map +7 -0
- package/dist/lib/neutral/switch-workspace-CVDYG5YZ.mjs +60 -0
- package/dist/lib/neutral/switch-workspace-CVDYG5YZ.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +57 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +34 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/neutral/update-companion-VPCM7FJX.mjs +32 -0
- package/dist/lib/neutral/update-companion-VPCM7FJX.mjs.map +7 -0
- package/dist/lib/neutral/update-complementary-SEQ6DDWA.mjs +28 -0
- package/dist/lib/neutral/update-complementary-SEQ6DDWA.mjs.map +7 -0
- package/dist/lib/neutral/update-dialog-VDHYE4QH.mjs +29 -0
- package/dist/lib/neutral/update-dialog-VDHYE4QH.mjs.map +7 -0
- package/dist/lib/neutral/update-plank-size-ZXOUZD7Y.mjs +26 -0
- package/dist/lib/neutral/update-plank-size-ZXOUZD7Y.mjs.map +7 -0
- package/dist/lib/neutral/update-popover-VFP32W57.mjs +33 -0
- package/dist/lib/neutral/update-popover-VFP32W57.mjs.map +7 -0
- package/dist/lib/neutral/update-sidebar-O5HBOXYH.mjs +25 -0
- package/dist/lib/neutral/update-sidebar-O5HBOXYH.mjs.map +7 -0
- package/dist/lib/neutral/url-handler-3QTKEM2K.mjs +184 -0
- package/dist/lib/neutral/url-handler-3QTKEM2K.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/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/check-app-scheme.d.ts +19 -0
- package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +198 -9
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +7 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +38 -22
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/capabilities/{tools/tools.d.ts → tools.d.ts} +1 -1
- package/dist/types/src/capabilities/tools.d.ts.map +1 -0
- package/dist/types/src/capabilities/{url-handler/url-handler.d.ts → url-handler.d.ts} +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts.map +1 -0
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +6 -0
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -0
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +61 -0
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/DeckSettings/index.d.ts +2 -0
- package/dist/types/src/components/DeckSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/Matrix/Matrix.d.ts +41 -0
- package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -0
- package/dist/types/src/components/Matrix/Matrix.stories.d.ts +17 -0
- package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -0
- package/dist/types/src/components/Matrix/index.d.ts +3 -0
- package/dist/types/src/components/Matrix/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +3 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/{components/DeckLayout → containers/Deck}/Banner.d.ts +1 -1
- package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/Deck.d.ts +25 -0
- package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/Deck.stories.d.ts +61 -0
- package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/DeckContent.d.ts +7 -0
- package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/DeckRoot.d.ts +39 -0
- package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/DeckViewport.d.ts +16 -0
- package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/index.d.ts +2 -0
- package/dist/types/src/containers/Deck/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/DeckLayout/ActiveNode.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +63 -0
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/Dialog.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/Fallback.d.ts +2 -0
- package/dist/types/src/containers/DeckLayout/Fallback.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/Popover.d.ts +5 -0
- package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/DeckLayout/Toast.d.ts +1 -1
- package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/constants.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/index.d.ts +4 -0
- package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -0
- package/dist/types/src/containers/Plank/Plank.d.ts +17 -0
- package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -0
- package/dist/types/src/containers/Plank/Plank.stories.d.ts +61 -0
- package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -0
- package/dist/types/src/containers/Plank/PlankComponent.d.ts +17 -0
- package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +1 -0
- package/dist/types/src/containers/Plank/PlankContent.d.ts +10 -0
- package/dist/types/src/containers/Plank/PlankContent.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Plank/PlankControls.d.ts +5 -6
- package/dist/types/src/containers/Plank/PlankControls.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Plank/PlankError.d.ts +2 -2
- package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Plank/PlankHeading.d.ts +3 -2
- package/dist/types/src/containers/Plank/PlankHeading.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Plank/PlankLoading.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/PlankRoot.d.ts +37 -0
- package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -0
- package/dist/types/src/containers/Plank/index.d.ts +4 -0
- package/dist/types/src/containers/Plank/index.d.ts.map +1 -0
- package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -0
- package/dist/types/src/containers/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Sidebar/SidebarButton.d.ts +1 -1
- package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Sidebar/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +4 -2
- package/dist/types/src/containers/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 +2 -2
- package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckState.d.ts +3 -3
- package/dist/types/src/hooks/useDeckState.d.ts.map +1 -1
- package/dist/types/src/hooks/useHoistStatusbar.d.ts +1 -1
- package/dist/types/src/hooks/useHoistStatusbar.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 +20 -9
- package/dist/types/src/layout.d.ts.map +1 -1
- package/dist/types/src/layout.test.d.ts +2 -0
- package/dist/types/src/layout.test.d.ts.map +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/add-toast.d.ts +5 -0
- package/dist/types/src/operations/add-toast.d.ts.map +1 -0
- package/dist/types/src/operations/adjust.d.ts +5 -0
- package/dist/types/src/operations/adjust.d.ts.map +1 -0
- package/dist/types/src/operations/close.d.ts +5 -0
- package/dist/types/src/operations/close.d.ts.map +1 -0
- package/dist/types/src/operations/helpers.d.ts +3 -0
- package/dist/types/src/operations/helpers.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/operations/open.d.ts +5 -0
- package/dist/types/src/operations/open.d.ts.map +1 -0
- package/dist/types/src/operations/revert-workspace.d.ts +5 -0
- package/dist/types/src/operations/revert-workspace.d.ts.map +1 -0
- package/dist/types/src/operations/scroll-into-view.d.ts +5 -0
- package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -0
- package/dist/types/src/operations/set-layout-mode.d.ts +9 -0
- package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -0
- package/dist/types/src/operations/set.d.ts +5 -0
- package/dist/types/src/operations/set.d.ts.map +1 -0
- package/dist/types/src/operations/show-undo.d.ts +5 -0
- package/dist/types/src/operations/show-undo.d.ts.map +1 -0
- package/dist/types/src/operations/switch-workspace.d.ts +5 -0
- package/dist/types/src/operations/switch-workspace.d.ts.map +1 -0
- package/dist/types/src/operations/update-companion.d.ts +5 -0
- package/dist/types/src/operations/update-companion.d.ts.map +1 -0
- package/dist/types/src/operations/update-complementary.d.ts +5 -0
- package/dist/types/src/operations/update-complementary.d.ts.map +1 -0
- package/dist/types/src/operations/update-dialog.d.ts +5 -0
- package/dist/types/src/operations/update-dialog.d.ts.map +1 -0
- package/dist/types/src/operations/update-plank-size.d.ts +5 -0
- package/dist/types/src/operations/update-plank-size.d.ts.map +1 -0
- package/dist/types/src/operations/update-popover.d.ts +5 -0
- package/dist/types/src/operations/update-popover.d.ts.map +1 -0
- package/dist/types/src/operations/update-sidebar.d.ts +5 -0
- package/dist/types/src/operations/update-sidebar.d.ts.map +1 -0
- 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 +42 -56
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/{capabilities/state/index.d.ts → types/DeckCapabilities.d.ts} +51 -35
- 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 +11 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +4 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +43 -104
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +2 -1
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/layoutAppliesTopbar.d.ts +1 -1
- package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
- package/dist/types/src/util/plank-url-params.d.ts +14 -0
- package/dist/types/src/util/plank-url-params.d.ts.map +1 -0
- package/dist/types/src/util/plank-url-params.test.d.ts +2 -0
- package/dist/types/src/util/plank-url-params.test.d.ts.map +1 -0
- package/dist/types/src/util/sanitize-persisted-state.d.ts +19 -0
- package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -0
- package/dist/types/src/util/sanitize-persisted-state.test.d.ts +2 -0
- package/dist/types/src/util/sanitize-persisted-state.test.d.ts.map +1 -0
- package/dist/types/src/util/set-active.d.ts +2 -2
- package/dist/types/src/util/set-active.d.ts.map +1 -1
- package/dist/types/src/util/set-active.test.d.ts +2 -0
- package/dist/types/src/util/set-active.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +108 -52
- package/src/DeckPlugin.node.ts +17 -0
- package/src/DeckPlugin.test.ts +27 -0
- package/src/DeckPlugin.ts +12 -16
- package/src/capabilities/app-graph-builder.ts +127 -0
- package/src/capabilities/check-app-scheme.ts +139 -0
- package/src/capabilities/index.ts +14 -10
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/{react-root/react-root.tsx → react-root.tsx} +3 -3
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +12 -14
- package/src/capabilities/{settings/settings.ts → settings.ts} +4 -6
- package/src/capabilities/{state/state.ts → state.ts} +13 -27
- package/src/capabilities/{tools/tools.ts → tools.ts} +6 -6
- package/src/capabilities/url-handler.ts +231 -0
- package/src/components/DeckSettings/DeckSettings.stories.tsx +38 -0
- package/src/components/DeckSettings/DeckSettings.tsx +34 -0
- package/src/components/DeckSettings/index.ts +5 -0
- package/src/components/Matrix/Matrix.stories.tsx +220 -0
- package/src/components/Matrix/Matrix.tsx +205 -0
- package/src/components/Matrix/SPEC.md +219 -0
- package/src/components/Matrix/index.ts +6 -0
- package/src/components/index.ts +6 -2
- package/src/{components/DeckLayout → containers/Deck}/Banner.tsx +7 -5
- package/src/containers/Deck/Deck.stories.tsx +81 -0
- package/src/containers/Deck/Deck.tsx +21 -0
- package/src/containers/Deck/DeckContent.tsx +105 -0
- package/src/containers/Deck/DeckRoot.tsx +50 -0
- package/src/containers/Deck/DeckViewport.tsx +451 -0
- package/src/containers/Deck/index.ts +5 -0
- package/src/{components → containers}/DeckLayout/ActiveNode.tsx +8 -4
- package/src/containers/DeckLayout/DeckLayout.stories.tsx +397 -0
- package/src/containers/DeckLayout/DeckLayout.tsx +62 -0
- package/src/{components → containers}/DeckLayout/Dialog.tsx +11 -4
- package/src/{components → containers}/DeckLayout/Fallback.tsx +4 -4
- package/src/{components → containers}/DeckLayout/Popover.tsx +62 -43
- package/src/{components → containers}/DeckLayout/Toast.tsx +1 -1
- package/src/{components → containers}/DeckLayout/constants.ts +1 -0
- package/src/{components → containers}/DeckLayout/index.ts +3 -2
- package/src/containers/Plank/Plank.stories.tsx +108 -0
- package/src/containers/Plank/Plank.tsx +22 -0
- package/src/containers/Plank/PlankComponent.tsx +217 -0
- package/src/containers/Plank/PlankContent.tsx +45 -0
- package/src/{components → containers}/Plank/PlankControls.tsx +37 -28
- package/src/{components → containers}/Plank/PlankError.tsx +20 -4
- package/src/{components → containers}/Plank/PlankHeading.tsx +53 -42
- package/src/{components → containers}/Plank/PlankLoading.tsx +1 -1
- package/src/containers/Plank/PlankRoot.tsx +49 -0
- package/src/{components → containers}/Plank/index.ts +0 -2
- package/src/{components → containers}/Sidebar/ComplementarySidebar.tsx +66 -83
- package/src/{components → containers}/Sidebar/Sidebar.tsx +8 -6
- package/src/{components → containers}/Sidebar/SidebarButton.tsx +16 -10
- package/src/containers/index.ts +5 -2
- package/src/hooks/useCompanions.ts +1 -1
- package/src/hooks/useDeckCompanions.ts +3 -7
- package/src/hooks/useDeckState.ts +11 -20
- package/src/hooks/useHoistStatusbar.ts +1 -1
- package/src/hooks/useSelectedCompanion.ts +4 -10
- package/src/index.ts +1 -3
- package/src/layout.test.ts +59 -0
- package/src/layout.ts +38 -40
- package/src/meta.ts +2 -1
- package/src/operations/add-toast.ts +24 -0
- package/src/operations/adjust.ts +82 -0
- package/src/operations/close.ts +35 -0
- package/src/operations/helpers.ts +22 -0
- package/src/operations/index.ts +24 -0
- package/src/operations/open.ts +184 -0
- package/src/operations/revert-workspace.ts +22 -0
- package/src/operations/scroll-into-view.ts +24 -0
- package/src/operations/set-layout-mode.ts +84 -0
- package/src/operations/set.ts +36 -0
- package/src/operations/show-undo.ts +47 -0
- package/src/operations/switch-workspace.ts +60 -0
- package/src/operations/update-companion.ts +35 -0
- package/src/operations/update-complementary.ts +33 -0
- package/src/operations/update-dialog.ts +34 -0
- package/src/operations/update-plank-size.ts +28 -0
- package/src/operations/update-popover.ts +36 -0
- package/src/operations/update-sidebar.ts +28 -0
- package/src/plugin.ts +11 -0
- package/src/translations.ts +42 -55
- package/src/types/DeckCapabilities.ts +34 -0
- package/src/types/DeckEvents.ts +21 -0
- package/src/types/DeckOperation.ts +51 -0
- package/src/types/Settings.ts +42 -0
- package/src/types/index.ts +5 -2
- package/src/types/schema.ts +35 -117
- package/src/util/index.ts +2 -1
- package/src/util/layoutAppliesTopbar.ts +1 -1
- package/src/util/plank-url-params.test.ts +85 -0
- package/src/util/plank-url-params.ts +36 -0
- package/src/util/sanitize-persisted-state.test.ts +79 -0
- package/src/util/sanitize-persisted-state.ts +52 -0
- package/src/util/set-active.test.ts +106 -0
- package/src/util/set-active.ts +2 -2
- package/src/vite-env.d.ts +5 -0
- package/dist/lib/browser/Banner-DR6B7XTO.mjs +0 -15
- package/dist/lib/browser/Banner-DR6B7XTO.mjs.map +0 -7
- package/dist/lib/browser/DeckSettings-HB5TKG2F.mjs +0 -96
- package/dist/lib/browser/DeckSettings-HB5TKG2F.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-22XAL7YE.mjs +0 -123
- package/dist/lib/browser/app-graph-builder-22XAL7YE.mjs.map +0 -7
- package/dist/lib/browser/check-app-scheme-ZV3QWNNZ.mjs +0 -33
- package/dist/lib/browser/check-app-scheme-ZV3QWNNZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-BJDEG7YZ.mjs +0 -74
- package/dist/lib/browser/chunk-BJDEG7YZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-OAPMV5ZR.mjs +0 -280
- package/dist/lib/browser/chunk-OAPMV5ZR.mjs.map +0 -7
- package/dist/lib/browser/chunk-Q4GUCIRE.mjs.map +0 -7
- package/dist/lib/browser/chunk-SKBPLX5T.mjs.map +0 -7
- package/dist/lib/browser/chunk-YGOOWRJE.mjs +0 -1390
- package/dist/lib/browser/chunk-YGOOWRJE.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -185
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs +0 -580
- package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs.map +0 -7
- package/dist/lib/browser/react-root-4ESZAM6D.mjs.map +0 -7
- package/dist/lib/browser/react-surface-KYQGCALN.mjs +0 -44
- package/dist/lib/browser/react-surface-KYQGCALN.mjs.map +0 -7
- package/dist/lib/browser/settings-RY2TBSGP.mjs.map +0 -7
- package/dist/lib/browser/state-CSTTMJ43.mjs.map +0 -7
- package/dist/lib/browser/toolkit-EONRPYA5.mjs +0 -55
- package/dist/lib/browser/toolkit-EONRPYA5.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -40
- package/dist/lib/browser/url-handler-EM3SYHHX.mjs +0 -95
- package/dist/lib/browser/url-handler-EM3SYHHX.mjs.map +0 -7
- package/dist/lib/node-esm/Banner-HR7DPUZU.mjs +0 -16
- package/dist/lib/node-esm/Banner-HR7DPUZU.mjs.map +0 -7
- package/dist/lib/node-esm/DeckSettings-MWTR7HU2.mjs +0 -97
- package/dist/lib/node-esm/DeckSettings-MWTR7HU2.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-GNNNCWGN.mjs +0 -124
- package/dist/lib/node-esm/app-graph-builder-GNNNCWGN.mjs.map +0 -7
- package/dist/lib/node-esm/check-app-scheme-ZNISVRFH.mjs +0 -34
- package/dist/lib/node-esm/check-app-scheme-ZNISVRFH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DGTRKKWZ.mjs +0 -76
- package/dist/lib/node-esm/chunk-DGTRKKWZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EGFOT3DE.mjs +0 -18
- package/dist/lib/node-esm/chunk-EGFOT3DE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IR6ODCNC.mjs +0 -83
- package/dist/lib/node-esm/chunk-IR6ODCNC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-L2NPJPGL.mjs +0 -281
- package/dist/lib/node-esm/chunk-L2NPJPGL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-O4IOJICP.mjs +0 -201
- package/dist/lib/node-esm/chunk-O4IOJICP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Z43MBISY.mjs +0 -1391
- package/dist/lib/node-esm/chunk-Z43MBISY.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -186
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs +0 -581
- package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-YO7IIC75.mjs +0 -50
- package/dist/lib/node-esm/react-root-YO7IIC75.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-G7VRKT4U.mjs +0 -45
- package/dist/lib/node-esm/react-surface-G7VRKT4U.mjs.map +0 -7
- package/dist/lib/node-esm/settings-GYLWWOBK.mjs +0 -41
- package/dist/lib/node-esm/settings-GYLWWOBK.mjs.map +0 -7
- package/dist/lib/node-esm/state-RQXTBWUX.mjs +0 -107
- package/dist/lib/node-esm/state-RQXTBWUX.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-EU3Z2R4H.mjs +0 -56
- package/dist/lib/node-esm/toolkit-EU3Z2R4H.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -41
- package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs +0 -96
- package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +0 -5
- package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +0 -1
- package/dist/types/src/capabilities/check-app-scheme/index.d.ts +0 -3
- package/dist/types/src/capabilities/check-app-scheme/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root/index.d.ts +0 -6
- package/dist/types/src/capabilities/react-root/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root/react-root.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/index.d.ts +0 -19
- package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +0 -22
- package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
- package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
- package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts +0 -27
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
- package/dist/types/src/capabilities/tools/index.d.ts +0 -3
- package/dist/types/src/capabilities/tools/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/tools/tools.d.ts.map +0 -1
- package/dist/types/src/capabilities/url-handler/index.d.ts +0 -3
- package/dist/types/src/capabilities/url-handler/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/Banner.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts +0 -3
- package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +0 -75
- package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/DeckMain.d.ts +0 -3
- package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/Fallback.d.ts +0 -3
- package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/Popover.d.ts +0 -5
- package/dist/types/src/components/DeckLayout/Popover.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/Toast.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/Topbar.d.ts +0 -3
- package/dist/types/src/components/DeckLayout/Topbar.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/constants.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/index.d.ts +0 -4
- package/dist/types/src/components/DeckLayout/index.d.ts.map +0 -1
- package/dist/types/src/components/Plank/Plank.d.ts +0 -27
- package/dist/types/src/components/Plank/Plank.d.ts.map +0 -1
- package/dist/types/src/components/Plank/Plank.stories.d.ts +0 -108
- package/dist/types/src/components/Plank/Plank.stories.d.ts.map +0 -1
- package/dist/types/src/components/Plank/PlankControls.d.ts.map +0 -1
- package/dist/types/src/components/Plank/PlankError.d.ts.map +0 -1
- package/dist/types/src/components/Plank/PlankHeading.d.ts.map +0 -1
- package/dist/types/src/components/Plank/index.d.ts +0 -6
- package/dist/types/src/components/Plank/index.d.ts.map +0 -1
- package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +0 -1
- package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +0 -1
- package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +0 -1
- package/dist/types/src/components/fragments.d.ts +0 -7
- package/dist/types/src/components/fragments.d.ts.map +0 -1
- package/dist/types/src/containers/Banner/Banner.d.ts +0 -2
- package/dist/types/src/containers/Banner/Banner.d.ts.map +0 -1
- package/dist/types/src/containers/Banner/index.d.ts +0 -3
- package/dist/types/src/containers/Banner/index.d.ts.map +0 -1
- package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts +0 -8
- package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts.map +0 -1
- package/dist/types/src/containers/DeckSettings/index.d.ts +0 -3
- package/dist/types/src/containers/DeckSettings/index.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts +0 -190
- 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/dist/types/src/util/overscroll.d.ts +0 -47
- package/dist/types/src/util/overscroll.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -119
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/check-app-scheme/check-app-scheme.ts +0 -45
- package/src/capabilities/check-app-scheme/index.ts +0 -7
- package/src/capabilities/operation-resolver/index.ts +0 -10
- package/src/capabilities/operation-resolver/operation-resolver.ts +0 -560
- package/src/capabilities/react-root/index.ts +0 -7
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/settings/index.ts +0 -7
- package/src/capabilities/state/index.ts +0 -7
- package/src/capabilities/toolkit/index.ts +0 -7
- package/src/capabilities/toolkit/toolkit.ts +0 -64
- package/src/capabilities/tools/index.ts +0 -7
- package/src/capabilities/url-handler/index.ts +0 -7
- package/src/capabilities/url-handler/url-handler.ts +0 -96
- package/src/components/DeckLayout/ContentEmpty.tsx +0 -30
- package/src/components/DeckLayout/DeckLayout.stories.tsx +0 -53
- package/src/components/DeckLayout/DeckLayout.tsx +0 -34
- package/src/components/DeckLayout/DeckMain.tsx +0 -287
- package/src/components/DeckLayout/Topbar.tsx +0 -11
- package/src/components/Plank/Plank.stories.tsx +0 -64
- package/src/components/Plank/Plank.tsx +0 -302
- package/src/components/fragments.ts +0 -19
- package/src/containers/Banner/Banner.tsx +0 -5
- package/src/containers/Banner/index.ts +0 -7
- package/src/containers/DeckSettings/DeckSettings.tsx +0 -113
- package/src/containers/DeckSettings/index.ts +0 -7
- package/src/types/capabilities.ts +0 -33
- package/src/types/events.ts +0 -21
- package/src/util/overscroll.ts +0 -69
- /package/dist/lib/{browser/types/index.mjs.map → neutral/check-app-scheme-A7FZVNZO.mjs.map} +0 -0
- /package/dist/lib/{node-esm/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-root/react-root.d.ts → react-root.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
- /package/dist/types/src/{components/DeckLayout → containers/Deck}/StatusBar.d.ts +0 -0
- /package/dist/types/src/{components → containers}/DeckLayout/ActiveNode.d.ts +0 -0
- /package/dist/types/src/{components → containers}/DeckLayout/DeckLayout.d.ts +0 -0
- /package/dist/types/src/{components → containers}/DeckLayout/Dialog.d.ts +0 -0
- /package/dist/types/src/{components → containers}/DeckLayout/constants.d.ts +0 -0
- /package/dist/types/src/{components → containers}/Plank/PlankLoading.d.ts +0 -0
- /package/dist/types/src/{components → containers}/Sidebar/ComplementarySidebar.d.ts +0 -0
- /package/dist/types/src/{components → containers}/Sidebar/Sidebar.d.ts +0 -0
- /package/dist/types/src/{components → containers}/Sidebar/index.d.ts +0 -0
- /package/src/{components/DeckLayout → containers/Deck}/StatusBar.tsx +0 -0
- /package/src/{components → containers}/Sidebar/index.ts +0 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Deck,
|
|
3
|
+
PlankErrorFallback
|
|
4
|
+
} from "./chunk-4MYX2NT3.mjs";
|
|
5
|
+
import "./chunk-GBIGQKYW.mjs";
|
|
6
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
7
|
+
|
|
8
|
+
// src/containers/DeckLayout/DeckLayout.tsx
|
|
9
|
+
import React5, { useCallback as useCallback3 } from "react";
|
|
10
|
+
import { useAtomCapability, useOperationInvoker, usePluginManager } from "@dxos/app-framework/ui";
|
|
11
|
+
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
12
|
+
import { Mosaic } from "@dxos/react-ui-mosaic";
|
|
13
|
+
import { useDeckState as useDeckState3 } from "#hooks";
|
|
14
|
+
import { DeckCapabilities, getMode } from "#types";
|
|
15
|
+
|
|
16
|
+
// src/containers/DeckLayout/ActiveNode.tsx
|
|
17
|
+
import React from "react";
|
|
18
|
+
import { Surface } from "@dxos/app-framework/ui";
|
|
19
|
+
import { AppSurface, useAppGraph } from "@dxos/app-toolkit/ui";
|
|
20
|
+
import { useNode } from "@dxos/plugin-graph";
|
|
21
|
+
import { useAttended } from "@dxos/react-ui-attention";
|
|
22
|
+
import { useNodeActionExpander } from "#hooks";
|
|
23
|
+
var ActiveNode = () => {
|
|
24
|
+
const [id] = useAttended();
|
|
25
|
+
const { graph } = useAppGraph();
|
|
26
|
+
const activeNode = useNode(graph, id);
|
|
27
|
+
useNodeActionExpander(activeNode);
|
|
28
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
29
|
+
className: "sr-only"
|
|
30
|
+
}, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
31
|
+
type: AppSurface.DocumentTitle,
|
|
32
|
+
data: {
|
|
33
|
+
subject: activeNode
|
|
34
|
+
},
|
|
35
|
+
limit: 1
|
|
36
|
+
}));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// src/containers/DeckLayout/Dialog.tsx
|
|
40
|
+
import React2, { useCallback } from "react";
|
|
41
|
+
import { Surface as Surface2 } from "@dxos/app-framework/ui";
|
|
42
|
+
import { AppSurface as AppSurface2 } from "@dxos/app-toolkit/ui";
|
|
43
|
+
import { AlertDialog, Dialog as NaturalDialog } from "@dxos/react-ui";
|
|
44
|
+
import { useDeckState } from "#hooks";
|
|
45
|
+
var Dialog = () => {
|
|
46
|
+
const { state, updateEphemeral } = useDeckState();
|
|
47
|
+
const { dialogOpen, dialogType, dialogBlockAlign, dialogOverlayClasses, dialogOverlayStyle, dialogContent } = state;
|
|
48
|
+
const Root = dialogType === "alert" ? AlertDialog.Root : NaturalDialog.Root;
|
|
49
|
+
const Overlay = dialogType === "alert" ? AlertDialog.Overlay : NaturalDialog.Overlay;
|
|
50
|
+
const handleOpenChange = useCallback((nextOpen) => {
|
|
51
|
+
updateEphemeral((s) => ({
|
|
52
|
+
...s,
|
|
53
|
+
dialogOpen: nextOpen
|
|
54
|
+
}));
|
|
55
|
+
}, [
|
|
56
|
+
updateEphemeral
|
|
57
|
+
]);
|
|
58
|
+
return /* @__PURE__ */ React2.createElement(Root, {
|
|
59
|
+
modal: dialogBlockAlign !== "end",
|
|
60
|
+
open: dialogOpen,
|
|
61
|
+
onOpenChange: handleOpenChange
|
|
62
|
+
}, dialogBlockAlign === "end" ? (
|
|
63
|
+
// TODO(burdon): Placeholder creates a suspense boundary; replace with defaults.
|
|
64
|
+
/* @__PURE__ */ React2.createElement(Surface2.Surface, {
|
|
65
|
+
type: AppSurface2.Dialog,
|
|
66
|
+
data: dialogContent ?? void 0,
|
|
67
|
+
limit: 1,
|
|
68
|
+
fallback: PlankErrorFallback,
|
|
69
|
+
placeholder: /* @__PURE__ */ React2.createElement("div", null)
|
|
70
|
+
})
|
|
71
|
+
) : /* @__PURE__ */ React2.createElement(Overlay, {
|
|
72
|
+
blockAlign: dialogBlockAlign,
|
|
73
|
+
classNames: dialogOverlayClasses,
|
|
74
|
+
style: dialogOverlayStyle
|
|
75
|
+
}, /* @__PURE__ */ React2.createElement(Surface2.Surface, {
|
|
76
|
+
type: AppSurface2.Dialog,
|
|
77
|
+
data: dialogContent ?? void 0,
|
|
78
|
+
limit: 1,
|
|
79
|
+
fallback: PlankErrorFallback
|
|
80
|
+
})));
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// src/containers/DeckLayout/Popover.tsx
|
|
84
|
+
import { createContext } from "@radix-ui/react-context";
|
|
85
|
+
import * as Function from "effect/Function";
|
|
86
|
+
import * as Option from "effect/Option";
|
|
87
|
+
import React3, { useCallback as useCallback2, useEffect, useRef, useState } from "react";
|
|
88
|
+
import { Surface as Surface3 } from "@dxos/app-framework/ui";
|
|
89
|
+
import { AppSurface as AppSurface3, useObjectMenuItems } from "@dxos/app-toolkit/ui";
|
|
90
|
+
import { Annotation, Obj } from "@dxos/echo";
|
|
91
|
+
import { Card, Popover, toLocalizedString, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
92
|
+
import { Menu } from "@dxos/react-ui-menu";
|
|
93
|
+
import { useDeckState as useDeckState2 } from "#hooks";
|
|
94
|
+
import { meta } from "#meta";
|
|
95
|
+
var DEBOUNCE_DELAY = 40;
|
|
96
|
+
var [DeckPopoverProvider, useDeckPopoverContext] = createContext("DeckPopover");
|
|
97
|
+
var PopoverRoot = ({ children }) => {
|
|
98
|
+
const { state } = useDeckState2();
|
|
99
|
+
const virtualRef = useRef(null);
|
|
100
|
+
const [virtualIter, setVirtualIter] = useState(0);
|
|
101
|
+
const [open, setOpen] = useState(false);
|
|
102
|
+
const debounceRef = useRef(null);
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
setOpen(false);
|
|
105
|
+
if (state.popoverOpen) {
|
|
106
|
+
if (debounceRef.current) {
|
|
107
|
+
clearTimeout(debounceRef.current);
|
|
108
|
+
}
|
|
109
|
+
if (state.popoverAnchor && virtualRef.current !== state.popoverAnchor) {
|
|
110
|
+
virtualRef.current = state.popoverAnchor ?? null;
|
|
111
|
+
setVirtualIter((iter) => iter + 1);
|
|
112
|
+
}
|
|
113
|
+
debounceRef.current = setTimeout(() => setOpen(true), DEBOUNCE_DELAY);
|
|
114
|
+
}
|
|
115
|
+
}, [
|
|
116
|
+
state.popoverOpen,
|
|
117
|
+
state.popoverAnchorId,
|
|
118
|
+
state.popoverAnchor,
|
|
119
|
+
state.popoverContent
|
|
120
|
+
]);
|
|
121
|
+
return /* @__PURE__ */ React3.createElement(DeckPopoverProvider, {
|
|
122
|
+
setOpen
|
|
123
|
+
}, /* @__PURE__ */ React3.createElement(Popover.Root, {
|
|
124
|
+
modal: false,
|
|
125
|
+
open
|
|
126
|
+
}, state.popoverAnchor && /* @__PURE__ */ React3.createElement(Popover.VirtualTrigger, {
|
|
127
|
+
key: virtualIter,
|
|
128
|
+
virtualRef
|
|
129
|
+
}), children));
|
|
130
|
+
};
|
|
131
|
+
var PopoverContent = () => {
|
|
132
|
+
const { t } = useTranslation(meta.id);
|
|
133
|
+
const { state, updateEphemeral } = useDeckState2();
|
|
134
|
+
const { setOpen } = useDeckPopoverContext("PopoverContent");
|
|
135
|
+
const popoverSubject = state.popoverContent && "subject" in state.popoverContent ? state.popoverContent.subject : void 0;
|
|
136
|
+
const isObjectPopover = Obj.isObject(popoverSubject);
|
|
137
|
+
const objectMenuItems = useObjectMenuItems(popoverSubject);
|
|
138
|
+
const title = state.popoverTitle ? toLocalizedString(state.popoverTitle, t) : "Unknown";
|
|
139
|
+
const icon = isObjectPopover ? Function.pipe(Obj.getSchema(popoverSubject), Option.fromNullable, Option.flatMap(Annotation.IconAnnotation.get), Option.map(({ icon: icon2 }) => icon2), Option.getOrElse(() => "ph--placeholder--regular")) : void 0;
|
|
140
|
+
const handleClose = useCallback2(() => {
|
|
141
|
+
setOpen(false);
|
|
142
|
+
updateEphemeral((state2) => ({
|
|
143
|
+
...state2,
|
|
144
|
+
popoverOpen: false,
|
|
145
|
+
popoverAnchor: void 0,
|
|
146
|
+
popoverAnchorId: void 0,
|
|
147
|
+
popoverSide: void 0
|
|
148
|
+
}));
|
|
149
|
+
}, [
|
|
150
|
+
updateEphemeral
|
|
151
|
+
]);
|
|
152
|
+
const handleInteractOutside = useCallback2((event) => {
|
|
153
|
+
if (
|
|
154
|
+
// TODO(thure): CodeMirror should not focus itself when it updates.
|
|
155
|
+
event.type === "dismissableLayer.focusOutside" && event.currentTarget?.classList.contains("cm-content")
|
|
156
|
+
) {
|
|
157
|
+
event.preventDefault();
|
|
158
|
+
} else {
|
|
159
|
+
handleClose();
|
|
160
|
+
}
|
|
161
|
+
}, [
|
|
162
|
+
handleClose
|
|
163
|
+
]);
|
|
164
|
+
return /* @__PURE__ */ React3.createElement(Popover.Portal, null, /* @__PURE__ */ React3.createElement(Popover.Content, {
|
|
165
|
+
side: state.popoverSide,
|
|
166
|
+
sticky: "always",
|
|
167
|
+
hideWhenDetached: true,
|
|
168
|
+
onInteractOutside: handleInteractOutside,
|
|
169
|
+
onEscapeKeyDown: handleInteractOutside
|
|
170
|
+
}, /* @__PURE__ */ React3.createElement(Popover.Viewport, null, state.popoverKind === "base" && state.popoverContent && "component" in state.popoverContent && /* @__PURE__ */ React3.createElement(Surface3.Surface, {
|
|
171
|
+
type: AppSurface3.Popover,
|
|
172
|
+
data: state.popoverContent,
|
|
173
|
+
limit: 1
|
|
174
|
+
}), state.popoverKind === "card" && /* @__PURE__ */ React3.createElement(Menu.Root, null, /* @__PURE__ */ React3.createElement(Card.Root, {
|
|
175
|
+
border: false,
|
|
176
|
+
classNames: "dx-card-popover"
|
|
177
|
+
}, /* @__PURE__ */ React3.createElement(Card.Toolbar, null, /* @__PURE__ */ React3.createElement(Card.IconBlock, {
|
|
178
|
+
padding: true
|
|
179
|
+
}, icon && /* @__PURE__ */ React3.createElement(Card.Icon, {
|
|
180
|
+
icon
|
|
181
|
+
})), /* @__PURE__ */ React3.createElement(Card.Title, null, title), /* @__PURE__ */ React3.createElement(Card.IconBlock, {
|
|
182
|
+
padding: true
|
|
183
|
+
}, /* @__PURE__ */ React3.createElement(Menu.Trigger, {
|
|
184
|
+
asChild: true,
|
|
185
|
+
disabled: !objectMenuItems.length
|
|
186
|
+
}, /* @__PURE__ */ React3.createElement(Toolbar.IconButton, {
|
|
187
|
+
variant: "ghost",
|
|
188
|
+
icon: "ph--dots-three-vertical--regular",
|
|
189
|
+
iconOnly: true,
|
|
190
|
+
label: "Actions"
|
|
191
|
+
})), /* @__PURE__ */ React3.createElement(Menu.Content, {
|
|
192
|
+
items: objectMenuItems
|
|
193
|
+
}))), state.popoverContent && "subject" in state.popoverContent && /* @__PURE__ */ React3.createElement(Surface3.Surface, {
|
|
194
|
+
type: AppSurface3.Card,
|
|
195
|
+
data: state.popoverContent,
|
|
196
|
+
limit: 1
|
|
197
|
+
})))), /* @__PURE__ */ React3.createElement(Popover.Arrow, null)));
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// src/containers/DeckLayout/Toast.tsx
|
|
201
|
+
import React4 from "react";
|
|
202
|
+
import { Button, Icon, Toast as NaturalToast, toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
203
|
+
import { meta as meta2 } from "#meta";
|
|
204
|
+
var Toast = ({ id, title, description, icon, duration, actionLabel, actionAlt, closeLabel, onAction, onOpenChange }) => {
|
|
205
|
+
const { t } = useTranslation2(meta2.id);
|
|
206
|
+
return /* @__PURE__ */ React4.createElement(NaturalToast.Root, {
|
|
207
|
+
"data-testid": id,
|
|
208
|
+
defaultOpen: true,
|
|
209
|
+
duration,
|
|
210
|
+
onOpenChange
|
|
211
|
+
}, /* @__PURE__ */ React4.createElement(NaturalToast.Body, null, /* @__PURE__ */ React4.createElement(NaturalToast.Title, {
|
|
212
|
+
classNames: "items-center"
|
|
213
|
+
}, icon && /* @__PURE__ */ React4.createElement(Icon, {
|
|
214
|
+
icon,
|
|
215
|
+
classNames: "inline mr-1"
|
|
216
|
+
}), title && /* @__PURE__ */ React4.createElement("span", null, toLocalizedString2(title, t))), description && /* @__PURE__ */ React4.createElement(NaturalToast.Description, null, description && toLocalizedString2(description, t))), /* @__PURE__ */ React4.createElement(NaturalToast.Actions, null, onAction && actionAlt && actionLabel && /* @__PURE__ */ React4.createElement(NaturalToast.Action, {
|
|
217
|
+
altText: toLocalizedString2(actionAlt, t),
|
|
218
|
+
asChild: true
|
|
219
|
+
}, /* @__PURE__ */ React4.createElement(Button, {
|
|
220
|
+
"data-testid": "toast.action",
|
|
221
|
+
variant: "primary",
|
|
222
|
+
onClick: () => onAction?.()
|
|
223
|
+
}, toLocalizedString2(actionLabel, t))), closeLabel && /* @__PURE__ */ React4.createElement(NaturalToast.Close, {
|
|
224
|
+
asChild: true
|
|
225
|
+
}, /* @__PURE__ */ React4.createElement(Button, {
|
|
226
|
+
"data-testid": "toast.close"
|
|
227
|
+
}, toLocalizedString2(closeLabel, t)))));
|
|
228
|
+
};
|
|
229
|
+
var Toaster = ({ toasts, onDismissToast }) => {
|
|
230
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, toasts?.map((toast) => /* @__PURE__ */ React4.createElement(Toast, {
|
|
231
|
+
...toast,
|
|
232
|
+
key: toast.id,
|
|
233
|
+
onOpenChange: (open) => {
|
|
234
|
+
if (!open) {
|
|
235
|
+
onDismissToast?.(toast.id);
|
|
236
|
+
}
|
|
237
|
+
return open;
|
|
238
|
+
}
|
|
239
|
+
})));
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
// src/containers/DeckLayout/DeckLayout.tsx
|
|
243
|
+
var DeckLayout = ({ onDismissToast }) => {
|
|
244
|
+
const settings = useAtomCapability(DeckCapabilities.Settings);
|
|
245
|
+
const pluginManager = usePluginManager();
|
|
246
|
+
const { invokePromise } = useOperationInvoker();
|
|
247
|
+
const { deck, state, updateState } = useDeckState3();
|
|
248
|
+
const layoutMode = getMode(deck);
|
|
249
|
+
const { toasts } = state;
|
|
250
|
+
const handleLayoutChange = useCallback3((request) => {
|
|
251
|
+
void invokePromise(LayoutOperation.SetLayoutMode, request);
|
|
252
|
+
}, [
|
|
253
|
+
invokePromise
|
|
254
|
+
]);
|
|
255
|
+
return /* @__PURE__ */ React5.createElement(Mosaic.Root, null, /* @__PURE__ */ React5.createElement(PopoverRoot, null, /* @__PURE__ */ React5.createElement(ActiveNode, null), /* @__PURE__ */ React5.createElement(Deck.Root, {
|
|
256
|
+
settings,
|
|
257
|
+
pluginManager,
|
|
258
|
+
layoutMode,
|
|
259
|
+
deck,
|
|
260
|
+
state,
|
|
261
|
+
updateState,
|
|
262
|
+
onLayoutChange: handleLayoutChange
|
|
263
|
+
}, /* @__PURE__ */ React5.createElement(Deck.Content, null, /* @__PURE__ */ React5.createElement(Deck.Viewport, null, deck.solo ? /* @__PURE__ */ React5.createElement(Deck.SoloMode, null) : deck.active.length === 0 ? /* @__PURE__ */ React5.createElement(Deck.ContentEmpty, null) : /* @__PURE__ */ React5.createElement(Deck.MultiMode, null)))), /* @__PURE__ */ React5.createElement(PopoverContent, null), /* @__PURE__ */ React5.createElement(Dialog, null), /* @__PURE__ */ React5.createElement(Toaster, {
|
|
264
|
+
toasts,
|
|
265
|
+
onDismissToast
|
|
266
|
+
})));
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// src/containers/DeckLayout/constants.ts
|
|
270
|
+
var NAV_ID = "NavTree";
|
|
271
|
+
|
|
272
|
+
// src/containers/DeckLayout/index.ts
|
|
273
|
+
var DeckLayout_default = DeckLayout;
|
|
274
|
+
export {
|
|
275
|
+
NAV_ID,
|
|
276
|
+
DeckLayout_default as default
|
|
277
|
+
};
|
|
278
|
+
//# sourceMappingURL=DeckLayout-6SICSSUF.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/DeckLayout/DeckLayout.tsx", "../../../src/containers/DeckLayout/ActiveNode.tsx", "../../../src/containers/DeckLayout/Dialog.tsx", "../../../src/containers/DeckLayout/Popover.tsx", "../../../src/containers/DeckLayout/Toast.tsx", "../../../src/containers/DeckLayout/constants.ts", "../../../src/containers/DeckLayout/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { useAtomCapability, useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Mosaic } from '@dxos/react-ui-mosaic';\n\nimport { useDeckState } from '#hooks';\nimport { DeckCapabilities, getMode } from '#types';\n\nimport { Deck, type DeckLayoutChangeRequest } from '../Deck';\nimport { ActiveNode } from './ActiveNode';\nimport { Dialog } from './Dialog';\nimport { PopoverContent, PopoverRoot } from './Popover';\nimport { Toaster, type ToasterProps } from './Toast';\n\nexport type DeckLayoutProps = Pick<ToasterProps, 'onDismissToast'>;\n\nexport const DeckLayout = ({ onDismissToast }: DeckLayoutProps) => {\n const settings = useAtomCapability(DeckCapabilities.Settings);\n const pluginManager = usePluginManager();\n const { invokePromise } = useOperationInvoker();\n const { deck, state, updateState } = useDeckState();\n const layoutMode = getMode(deck);\n const { toasts } = state;\n\n const handleLayoutChange = useCallback(\n (request: DeckLayoutChangeRequest) => {\n void invokePromise(LayoutOperation.SetLayoutMode, request);\n },\n [invokePromise],\n );\n\n return (\n <Mosaic.Root>\n <PopoverRoot>\n <ActiveNode />\n <Deck.Root\n settings={settings}\n pluginManager={pluginManager}\n layoutMode={layoutMode}\n deck={deck}\n state={state}\n updateState={updateState}\n onLayoutChange={handleLayoutChange}\n >\n <Deck.Content>\n <Deck.Viewport>\n {deck.solo ? <Deck.SoloMode /> : deck.active.length === 0 ? <Deck.ContentEmpty /> : <Deck.MultiMode />}\n </Deck.Viewport>\n </Deck.Content>\n </Deck.Root>\n <PopoverContent />\n <Dialog />\n <Toaster toasts={toasts} onDismissToast={onDismissToast} />\n </PopoverRoot>\n </Mosaic.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface, useAppGraph } from '@dxos/app-toolkit/ui';\nimport { useNode } from '@dxos/plugin-graph';\nimport { useAttended } from '@dxos/react-ui-attention';\n\nimport { useNodeActionExpander } from '#hooks';\n\n// TODO(burdon): Factor out to effect in plugin set document title.\nexport const ActiveNode = () => {\n const [id] = useAttended();\n const { graph } = useAppGraph();\n const activeNode = useNode(graph, id);\n useNodeActionExpander(activeNode);\n\n return (\n <div className='sr-only'>\n {/* TODO(wittjosiah): Weird that this is a surface, feel like it's not really render logic.\n Probably this lives in React-land currently in order to access translations? */}\n <Surface.Surface\n type={AppSurface.DocumentTitle}\n data={{ subject: activeNode } satisfies AppSurface.DocumentTitleData}\n limit={1}\n />\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { AlertDialog, Dialog as NaturalDialog } from '@dxos/react-ui';\n\nimport { useDeckState } from '#hooks';\n\nimport { PlankErrorFallback } from '../Plank';\n\nexport const Dialog = () => {\n const { state, updateEphemeral } = useDeckState();\n const { dialogOpen, dialogType, dialogBlockAlign, dialogOverlayClasses, dialogOverlayStyle, dialogContent } = state;\n const Root = dialogType === 'alert' ? AlertDialog.Root : NaturalDialog.Root;\n const Overlay = dialogType === 'alert' ? AlertDialog.Overlay : NaturalDialog.Overlay;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n updateEphemeral((s) => ({ ...s, dialogOpen: nextOpen }));\n },\n [updateEphemeral],\n );\n\n // TODO(thure): End block alignment affecting `modal` and whether the surface renders in an overlay is tailored to the needs of the ambient chat dialog. As the feature matures, consider separating concerns.\n return (\n <Root modal={dialogBlockAlign !== 'end'} open={dialogOpen} onOpenChange={handleOpenChange}>\n {dialogBlockAlign === 'end' ? (\n // TODO(burdon): Placeholder creates a suspense boundary; replace with defaults.\n <Surface.Surface\n type={AppSurface.Dialog}\n data={dialogContent ?? undefined}\n limit={1}\n fallback={PlankErrorFallback}\n placeholder={<div />}\n />\n ) : (\n <Overlay blockAlign={dialogBlockAlign} classNames={dialogOverlayClasses} style={dialogOverlayStyle}>\n <Surface.Surface\n type={AppSurface.Dialog}\n data={dialogContent ?? undefined}\n limit={1}\n fallback={PlankErrorFallback}\n />\n </Overlay>\n )}\n </Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport React, { type PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface, useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Annotation, Obj } from '@dxos/echo';\nimport {\n Card,\n Popover,\n type PopoverContentInteractOutsideEvent,\n toLocalizedString,\n Toolbar,\n useTranslation,\n} from '@dxos/react-ui';\nimport { Menu } from '@dxos/react-ui-menu';\n\nimport { useDeckState } from '#hooks';\nimport { meta } from '#meta';\n\nconst DEBOUNCE_DELAY = 40;\n\ntype DeckPopoverContextValue = {\n setOpen: (open: boolean) => void;\n};\n\nconst [DeckPopoverProvider, useDeckPopoverContext] = createContext<DeckPopoverContextValue>('DeckPopover');\n\nexport type PopoverRootProps = PropsWithChildren;\n\nexport const PopoverRoot = ({ children }: PopoverRootProps) => {\n const { state } = useDeckState();\n const virtualRef = useRef<HTMLButtonElement | null>(null);\n const [virtualIter, setVirtualIter] = useState(0);\n const [open, setOpen] = useState(false);\n const debounceRef = useRef<NodeJS.Timeout | null>(null);\n\n // TODO(thure): This is a workaround for the race condition between displaying a Popover and either rendering\n // the anchor further down the tree or measuring the virtual trigger's client rect.\n useEffect(() => {\n setOpen(false);\n if (state.popoverOpen) {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (state.popoverAnchor && virtualRef.current !== state.popoverAnchor) {\n virtualRef.current = state.popoverAnchor ?? null;\n setVirtualIter((iter) => iter + 1);\n }\n debounceRef.current = setTimeout(() => setOpen(true), DEBOUNCE_DELAY);\n }\n }, [state.popoverOpen, state.popoverAnchorId, state.popoverAnchor, state.popoverContent]);\n\n return (\n <DeckPopoverProvider setOpen={setOpen}>\n <Popover.Root modal={false} open={open}>\n {state.popoverAnchor && <Popover.VirtualTrigger key={virtualIter} virtualRef={virtualRef} />}\n {children}\n </Popover.Root>\n </DeckPopoverProvider>\n );\n};\n\nexport const PopoverContent = () => {\n const { t } = useTranslation(meta.id);\n const { state, updateEphemeral } = useDeckState();\n const { setOpen } = useDeckPopoverContext('PopoverContent');\n const popoverSubject =\n state.popoverContent && 'subject' in state.popoverContent ? state.popoverContent.subject : undefined;\n const isObjectPopover = Obj.isObject(popoverSubject);\n const objectMenuItems = useObjectMenuItems(popoverSubject);\n const title = state.popoverTitle ? toLocalizedString(state.popoverTitle, t) : 'Unknown';\n const icon = isObjectPopover\n ? Function.pipe(\n Obj.getSchema(popoverSubject),\n Option.fromNullable,\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.map(({ icon }) => icon),\n Option.getOrElse(() => 'ph--placeholder--regular'),\n )\n : undefined;\n\n const handleClose = useCallback(() => {\n setOpen(false);\n updateEphemeral((state) => ({\n ...state,\n popoverOpen: false,\n popoverAnchor: undefined,\n popoverAnchorId: undefined,\n popoverSide: undefined,\n }));\n }, [updateEphemeral]);\n\n const handleInteractOutside = useCallback(\n (event: KeyboardEvent | PopoverContentInteractOutsideEvent) => {\n if (\n // TODO(thure): CodeMirror should not focus itself when it updates.\n event.type === 'dismissableLayer.focusOutside' &&\n (event.currentTarget as HTMLElement | undefined)?.classList.contains('cm-content')\n ) {\n event.preventDefault();\n } else {\n handleClose();\n }\n },\n [handleClose],\n );\n\n return (\n <Popover.Portal>\n <Popover.Content\n side={state.popoverSide}\n sticky='always'\n hideWhenDetached\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleInteractOutside}\n >\n <Popover.Viewport>\n {/* Base popover */}\n {state.popoverKind === 'base' && state.popoverContent && 'component' in state.popoverContent && (\n <Surface.Surface type={AppSurface.Popover} data={state.popoverContent} limit={1} />\n )}\n\n {/* Card popover */}\n {state.popoverKind === 'card' && (\n <Menu.Root>\n <Card.Root border={false} classNames='dx-card-popover'>\n <Card.Toolbar>\n <Card.IconBlock padding>{icon && <Card.Icon icon={icon} />}</Card.IconBlock>\n <Card.Title>{title}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Card.IconBlock padding>\n <Menu.Trigger asChild disabled={!objectMenuItems.length}>\n <Toolbar.IconButton\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n iconOnly\n label='Actions'\n />\n </Menu.Trigger>\n <Menu.Content items={objectMenuItems} />\n </Card.IconBlock>\n </Card.Toolbar>\n\n {state.popoverContent && 'subject' in state.popoverContent && (\n <Surface.Surface type={AppSurface.Card} data={state.popoverContent} limit={1} />\n )}\n </Card.Root>\n </Menu.Root>\n )}\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type LayoutOperation } from '@dxos/app-toolkit';\nimport {\n Button,\n Icon,\n Toast as NaturalToast,\n type ToastRootProps,\n toLocalizedString,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\n// TODO(wittjosiah): Render remaining duration as a progress bar within the toast.\nexport const Toast = ({\n id,\n title,\n description,\n icon,\n duration,\n actionLabel,\n actionAlt,\n closeLabel,\n onAction,\n onOpenChange,\n}: LayoutOperation.Toast & Pick<ToastRootProps, 'onOpenChange'>) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <NaturalToast.Root data-testid={id} defaultOpen duration={duration} onOpenChange={onOpenChange}>\n <NaturalToast.Body>\n <NaturalToast.Title classNames='items-center'>\n {icon && <Icon icon={icon} classNames='inline mr-1' />}\n {title && <span>{toLocalizedString(title, t)}</span>}\n </NaturalToast.Title>\n {description && (\n <NaturalToast.Description>{description && toLocalizedString(description, t)}</NaturalToast.Description>\n )}\n </NaturalToast.Body>\n <NaturalToast.Actions>\n {onAction && actionAlt && actionLabel && (\n <NaturalToast.Action altText={toLocalizedString(actionAlt, t)} asChild>\n <Button data-testid='toast.action' variant='primary' onClick={() => onAction?.()}>\n {toLocalizedString(actionLabel, t)}\n </Button>\n </NaturalToast.Action>\n )}\n {closeLabel && (\n <NaturalToast.Close asChild>\n <Button data-testid='toast.close'>{toLocalizedString(closeLabel, t)}</Button>\n </NaturalToast.Close>\n )}\n </NaturalToast.Actions>\n </NaturalToast.Root>\n );\n};\n\nexport type ToasterProps = {\n toasts?: LayoutOperation.Toast[];\n onDismissToast?: (id: string) => void;\n};\n\nexport const Toaster = ({ toasts, onDismissToast }: ToasterProps) => {\n return (\n <>\n {toasts?.map((toast) => (\n <Toast\n {...toast}\n key={toast.id}\n onOpenChange={(open: boolean) => {\n if (!open) {\n onDismissToast?.(toast.id);\n }\n\n return open;\n }}\n />\n ))}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const NAV_ID = 'NavTree';\n\nexport const SURFACE_PREFIX = 'surface:';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DeckLayout } from './DeckLayout';\n\nexport { NAV_ID } from './constants';\n\nexport default DeckLayout;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useCallback", "useAtomCapability", "useOperationInvoker", "usePluginManager", "LayoutOperation", "Mosaic", "useDeckState", "DeckCapabilities", "getMode", "React", "Surface", "AppSurface", "useAppGraph", "useNode", "useAttended", "useNodeActionExpander", "ActiveNode", "id", "graph", "activeNode", "div", "className", "type", "DocumentTitle", "data", "subject", "limit", "React", "useCallback", "Surface", "AppSurface", "AlertDialog", "Dialog", "NaturalDialog", "useDeckState", "Dialog", "state", "updateEphemeral", "useDeckState", "dialogOpen", "dialogType", "dialogBlockAlign", "dialogOverlayClasses", "dialogOverlayStyle", "dialogContent", "Root", "AlertDialog", "NaturalDialog", "Overlay", "handleOpenChange", "useCallback", "nextOpen", "s", "React", "modal", "open", "onOpenChange", "Surface", "type", "AppSurface", "data", "undefined", "limit", "fallback", "PlankErrorFallback", "placeholder", "div", "blockAlign", "classNames", "style", "createContext", "Function", "Option", "React", "useCallback", "useEffect", "useRef", "useState", "Surface", "AppSurface", "useObjectMenuItems", "Annotation", "Obj", "Card", "Popover", "toLocalizedString", "Toolbar", "useTranslation", "Menu", "useDeckState", "meta", "DEBOUNCE_DELAY", "DeckPopoverProvider", "useDeckPopoverContext", "PopoverRoot", "children", "state", "virtualRef", "virtualIter", "setVirtualIter", "open", "setOpen", "debounceRef", "popoverOpen", "current", "clearTimeout", "popoverAnchor", "iter", "setTimeout", "popoverAnchorId", "popoverContent", "Root", "modal", "VirtualTrigger", "key", "PopoverContent", "t", "id", "updateEphemeral", "popoverSubject", "subject", "undefined", "isObjectPopover", "isObject", "objectMenuItems", "title", "popoverTitle", "icon", "pipe", "getSchema", "fromNullable", "flatMap", "IconAnnotation", "get", "map", "getOrElse", "handleClose", "popoverSide", "handleInteractOutside", "event", "type", "currentTarget", "classList", "contains", "preventDefault", "Portal", "Content", "side", "sticky", "hideWhenDetached", "onInteractOutside", "onEscapeKeyDown", "Viewport", "popoverKind", "data", "limit", "border", "classNames", "IconBlock", "padding", "Icon", "Title", "Trigger", "asChild", "disabled", "length", "IconButton", "variant", "iconOnly", "label", "items", "Arrow", "React", "Button", "Icon", "Toast", "NaturalToast", "toLocalizedString", "useTranslation", "meta", "id", "title", "description", "icon", "duration", "actionLabel", "actionAlt", "closeLabel", "onAction", "onOpenChange", "t", "Root", "data-testid", "defaultOpen", "Body", "Title", "classNames", "span", "Description", "Actions", "Action", "altText", "asChild", "variant", "onClick", "Close", "Toaster", "toasts", "onDismissToast", "map", "toast", "key", "open", "DeckLayout", "onDismissToast", "settings", "useAtomCapability", "DeckCapabilities", "Settings", "pluginManager", "usePluginManager", "invokePromise", "useOperationInvoker", "deck", "state", "updateState", "useDeckState", "layoutMode", "getMode", "toasts", "handleLayoutChange", "useCallback", "request", "LayoutOperation", "SetLayoutMode", "React", "Mosaic", "Root", "PopoverRoot", "ActiveNode", "Deck", "onLayoutChange", "Content", "Viewport", "solo", "SoloMode", "active", "length", "ContentEmpty", "MultiMode", "PopoverContent", "Dialog", "Toaster", "NAV_ID", "DeckLayout"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/DeckPlugin.ts
|
|
4
|
+
import { setAutoFreeze } from "immer";
|
|
5
|
+
import { ActivationEvent, ActivationEvents, Plugin } from "@dxos/app-framework";
|
|
6
|
+
import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
|
|
7
|
+
import { translations as stackTranslations } from "@dxos/react-ui-stack/translations";
|
|
8
|
+
import { AppGraphBuilder, CheckAppScheme, DeckSettings, DeckState, OperationHandler, ReactRoot, ReactSurface, UrlHandler } from "#capabilities";
|
|
9
|
+
import { meta } from "#meta";
|
|
10
|
+
import { translations } from "#translations";
|
|
11
|
+
import { DeckEvents } from "#types";
|
|
12
|
+
setAutoFreeze(false);
|
|
13
|
+
var DeckPlugin = Plugin.define(meta).pipe(
|
|
14
|
+
AppPlugin.addAppGraphModule({
|
|
15
|
+
activate: AppGraphBuilder
|
|
16
|
+
}),
|
|
17
|
+
AppPlugin.addOperationHandlerModule({
|
|
18
|
+
activate: OperationHandler
|
|
19
|
+
}),
|
|
20
|
+
AppPlugin.addSurfaceModule({
|
|
21
|
+
activate: ReactSurface
|
|
22
|
+
}),
|
|
23
|
+
AppPlugin.addTranslationsModule({
|
|
24
|
+
translations: [
|
|
25
|
+
...translations,
|
|
26
|
+
...stackTranslations
|
|
27
|
+
]
|
|
28
|
+
}),
|
|
29
|
+
Plugin.addModule({
|
|
30
|
+
activatesOn: AppActivationEvents.SetupSettings,
|
|
31
|
+
firesAfterActivation: [
|
|
32
|
+
DeckEvents.SettingsReady
|
|
33
|
+
],
|
|
34
|
+
activate: DeckSettings
|
|
35
|
+
}),
|
|
36
|
+
Plugin.addModule({
|
|
37
|
+
activatesOn: ActivationEvent.allOf(DeckEvents.SettingsReady, ActivationEvents.OperationInvokerReady),
|
|
38
|
+
activate: CheckAppScheme
|
|
39
|
+
}),
|
|
40
|
+
Plugin.addModule({
|
|
41
|
+
// TODO(wittjosiah): Does not integrate with settings store.
|
|
42
|
+
// Should this be a different event?
|
|
43
|
+
// Should settings store be renamed to be more generic?
|
|
44
|
+
activatesOn: ActivationEvent.oneOf(AppActivationEvents.SetupSettings, AppActivationEvents.SetupAppGraph),
|
|
45
|
+
firesAfterActivation: [
|
|
46
|
+
AppActivationEvents.LayoutReady,
|
|
47
|
+
DeckEvents.StateReady
|
|
48
|
+
],
|
|
49
|
+
activate: DeckState
|
|
50
|
+
}),
|
|
51
|
+
Plugin.addModule({
|
|
52
|
+
activatesOn: ActivationEvents.Startup,
|
|
53
|
+
activate: ReactRoot
|
|
54
|
+
}),
|
|
55
|
+
// Plugin.addModule({
|
|
56
|
+
// activatesOn: Events.SetupArtifactDefinition,
|
|
57
|
+
// activate: Tools,
|
|
58
|
+
// }),
|
|
59
|
+
Plugin.addModule({
|
|
60
|
+
activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents.StateReady),
|
|
61
|
+
activate: UrlHandler
|
|
62
|
+
}),
|
|
63
|
+
Plugin.make
|
|
64
|
+
);
|
|
65
|
+
var DeckPlugin_default = DeckPlugin;
|
|
66
|
+
export {
|
|
67
|
+
DeckPlugin,
|
|
68
|
+
DeckPlugin_default as default
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=DeckPlugin.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/DeckPlugin.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { ActivationEvent, ActivationEvents, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack/translations';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n OperationHandler,\n ReactRoot,\n ReactSurface,\n UrlHandler,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { DeckEvents } from '#types';\n\n// NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because\n// our signal implementation needs to add some hidden properties to the produced values.\n// TODO(Zan): Move this to a more global location if we use immer more broadly.\nsetAutoFreeze(false);\n\nexport const DeckPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations: [...translations, ...stackTranslations] }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n firesAfterActivation: [DeckEvents.SettingsReady],\n activate: DeckSettings,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(DeckEvents.SettingsReady, ActivationEvents.OperationInvokerReady),\n activate: CheckAppScheme,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: ActivationEvent.oneOf(AppActivationEvents.SetupSettings, AppActivationEvents.SetupAppGraph),\n firesAfterActivation: [AppActivationEvents.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvents.Startup,\n activate: ReactRoot,\n }),\n // Plugin.addModule({\n // activatesOn: Events.SetupArtifactDefinition,\n // activate: Tools,\n // }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n Plugin.make,\n);\n\nexport default DeckPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,qBAAqB;AAE9B,SAASC,iBAAiBC,kBAAkBC,cAAc;AAC1D,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,gBAAgBC,yBAAyB;AAElD,SACEC,iBACAC,gBACAC,cACAC,WACAC,kBACAC,WACAC,cACAC,kBACK;AACP,SAASC,YAAY;AACrB,SAASV,oBAAoB;AAC7B,SAASW,kBAAkB;AAK3BjB,cAAc,KAAA;AAEP,IAAMkB,aAAaf,OAAOgB,OAAOH,IAAAA,EAAMI;EAC5Cf,UAAUgB,kBAAkB;IAAEC,UAAUd;EAAgB,CAAA;EACxDH,UAAUkB,0BAA0B;IAAED,UAAUV;EAAiB,CAAA;EACjEP,UAAUmB,iBAAiB;IAAEF,UAAUR;EAAa,CAAA;EACpDT,UAAUoB,sBAAsB;IAAEnB,cAAc;SAAIA;SAAiBC;;EAAmB,CAAA;EACxFJ,OAAOuB,UAAU;IACfC,aAAavB,oBAAoBwB;IACjCC,sBAAsB;MAACZ,WAAWa;;IAClCR,UAAUZ;EACZ,CAAA;EACAP,OAAOuB,UAAU;IACfC,aAAa1B,gBAAgB8B,MAAMd,WAAWa,eAAe5B,iBAAiB8B,qBAAqB;IACnGV,UAAUb;EACZ,CAAA;EACAN,OAAOuB,UAAU;;;;IAIfC,aAAa1B,gBAAgBgC,MAAM7B,oBAAoBwB,eAAexB,oBAAoB8B,aAAa;IACvGL,sBAAsB;MAACzB,oBAAoB+B;MAAalB,WAAWmB;;IACnEd,UAAUX;EACZ,CAAA;EACAR,OAAOuB,UAAU;IACfC,aAAazB,iBAAiBmC;IAC9Bf,UAAUT;EACZ,CAAA;;;;;EAKAV,OAAOuB,UAAU;IACfC,aAAa1B,gBAAgB8B,MAAM7B,iBAAiB8B,uBAAuBf,WAAWmB,UAAU;IAChGd,UAAUP;EACZ,CAAA;EACAZ,OAAOmC;AAAI;AAGb,IAAA,qBAAepB;",
|
|
6
|
+
"names": ["setAutoFreeze", "ActivationEvent", "ActivationEvents", "Plugin", "AppActivationEvents", "AppPlugin", "translations", "stackTranslations", "AppGraphBuilder", "CheckAppScheme", "DeckSettings", "DeckState", "OperationHandler", "ReactRoot", "ReactSurface", "UrlHandler", "meta", "DeckEvents", "DeckPlugin", "define", "pipe", "addAppGraphModule", "activate", "addOperationHandlerModule", "addSurfaceModule", "addTranslationsModule", "addModule", "activatesOn", "SetupSettings", "firesAfterActivation", "SettingsReady", "allOf", "OperationInvokerReady", "oneOf", "SetupAppGraph", "LayoutReady", "StateReady", "Startup", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/DeckPlugin.node.ts
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { AppGraphBuilder, OperationHandler } from "#capabilities";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
var DeckPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
|
|
9
|
+
activate: AppGraphBuilder
|
|
10
|
+
}), AppPlugin.addOperationHandlerModule({
|
|
11
|
+
activate: OperationHandler
|
|
12
|
+
}), Plugin.make);
|
|
13
|
+
var DeckPlugin_node_default = DeckPlugin;
|
|
14
|
+
export {
|
|
15
|
+
DeckPlugin,
|
|
16
|
+
DeckPlugin_node_default as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=DeckPlugin.node.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/DeckPlugin.node.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { AppGraphBuilder, OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\n\nexport const DeckPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n Plugin.make,\n);\n\nexport default DeckPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,iBAAiBC,wBAAwB;AAClD,SAASC,YAAY;AAEd,IAAMC,aAAaL,OAAOM,OAAOF,IAAAA,EAAMG,KAC5CN,UAAUO,kBAAkB;EAAEC,UAAUP;AAAgB,CAAA,GACxDD,UAAUS,0BAA0B;EAAED,UAAUN;AAAiB,CAAA,GACjEH,OAAOW,IAAI;AAGb,IAAA,0BAAeN;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "AppGraphBuilder", "OperationHandler", "meta", "DeckPlugin", "define", "pipe", "addAppGraphModule", "activate", "addOperationHandlerModule", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/components/DeckSettings/DeckSettings.tsx
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { useTranslation } from "@dxos/react-ui";
|
|
6
|
+
import { Settings as SettingsForm } from "@dxos/react-ui-form";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
import { Settings } from "#types";
|
|
9
|
+
var isSocket = !!globalThis.__args;
|
|
10
|
+
var DeckSettings = ({ settings, onSettingsChange }) => {
|
|
11
|
+
const { t } = useTranslation(meta.id);
|
|
12
|
+
return /* @__PURE__ */ React.createElement(SettingsForm.Viewport, null, /* @__PURE__ */ React.createElement(SettingsForm.Section, {
|
|
13
|
+
title: t("settings.title", {
|
|
14
|
+
ns: meta.id
|
|
15
|
+
})
|
|
16
|
+
}, /* @__PURE__ */ React.createElement(SettingsForm.FieldSet, {
|
|
17
|
+
readonly: !onSettingsChange,
|
|
18
|
+
schema: Settings.Settings,
|
|
19
|
+
visible: (path) => path !== "enableNativeRedirect" || !isSocket,
|
|
20
|
+
values: settings,
|
|
21
|
+
onValuesChanged: (values) => onSettingsChange?.(() => values)
|
|
22
|
+
})));
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
DeckSettings as default
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=DeckSettings-W5I57OXM.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/DeckSettings/DeckSettings.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Settings as SettingsForm } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { Settings } from '#types';\n\nconst isSocket = !!(globalThis as any).__args;\n\nexport type DeckSettingsProps = AppSurface.SettingsArticleProps<Settings.Settings>;\n\nexport const DeckSettings = ({ settings, onSettingsChange }: DeckSettingsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={t('settings.title', { ns: meta.id })}>\n <SettingsForm.FieldSet\n readonly={!onSettingsChange}\n schema={Settings.Settings}\n visible={(path) => path !== 'enableNativeRedirect' || !isSocket}\n values={settings}\n onValuesChanged={(values) => onSettingsChange?.(() => values)}\n />\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,WAAW;AAGlB,SAASC,sBAAsB;AAC/B,SAASC,YAAYC,oBAAoB;AAEzC,SAASC,YAAY;AACrB,SAASF,gBAAgB;AAEzB,IAAMG,WAAW,CAAC,CAAEC,WAAmBC;AAIhC,IAAMC,eAAe,CAAC,EAAEC,UAAUC,iBAAgB,MAAqB;AAC5E,QAAM,EAAEC,EAAC,IAAKV,eAAeG,KAAKQ,EAAE;AAEpC,SACE,sBAAA,cAACT,aAAaU,UAAQ,MACpB,sBAAA,cAACV,aAAaW,SAAO;IAACC,OAAOJ,EAAE,kBAAkB;MAAEK,IAAIZ,KAAKQ;IAAG,CAAA;KAC7D,sBAAA,cAACT,aAAac,UAAQ;IACpBC,UAAU,CAACR;IACXS,QAAQjB,SAASA;IACjBkB,SAAS,CAACC,SAASA,SAAS,0BAA0B,CAAChB;IACvDiB,QAAQb;IACRc,iBAAiB,CAACD,WAAWZ,mBAAmB,MAAMY,MAAAA;;AAKhE;",
|
|
6
|
+
"names": ["React", "useTranslation", "Settings", "SettingsForm", "meta", "isSocket", "globalThis", "__args", "DeckSettings", "settings", "onSettingsChange", "t", "id", "Viewport", "Section", "title", "ns", "FieldSet", "readonly", "schema", "visible", "path", "values", "onValuesChanged"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DeckCapabilities_exports
|
|
3
|
+
} from "./chunk-64ODQD6S.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/operations/add-toast.ts
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { Capabilities } from "@dxos/app-framework";
|
|
9
|
+
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
10
|
+
import { Operation } from "@dxos/compute";
|
|
11
|
+
var handler = LayoutOperation.AddToast.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
|
|
12
|
+
yield* Capabilities.updateAtomValue(DeckCapabilities_exports.EphemeralState, (state) => ({
|
|
13
|
+
...state,
|
|
14
|
+
toasts: [
|
|
15
|
+
...state.toasts,
|
|
16
|
+
input
|
|
17
|
+
]
|
|
18
|
+
}));
|
|
19
|
+
})));
|
|
20
|
+
var add_toast_default = handler;
|
|
21
|
+
export {
|
|
22
|
+
add_toast_default as default
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=add-toast-2OMTFZ2L.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/add-toast.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n\nimport { DeckCapabilities } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.AddToast> = LayoutOperation.AddToast.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n yield* Capabilities.updateAtomValue(DeckCapabilities.EphemeralState, (state) => ({\n ...state,\n toasts: [...state.toasts, input as LayoutOperation.Toast],\n }));\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAI1B,IAAMC,UAAkEC,gBAAgBC,SAASC,KAC/FC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,SAAOC,aAAaC,gBAAgBC,yBAAiBC,gBAAgB,CAACC,WAAW;IAC/E,GAAGA;IACHC,QAAQ;SAAID,MAAMC;MAAQN;;EAC5B,EAAA;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,oBAAeP;",
|
|
6
|
+
"names": ["Effect", "Capabilities", "LayoutOperation", "Operation", "handler", "LayoutOperation", "AddToast", "pipe", "Operation", "withHandler", "fnUntraced", "input", "Capabilities", "updateAtomValue", "DeckCapabilities", "EphemeralState", "state", "toasts"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
incrementPlank
|
|
3
|
+
} from "./chunk-ZYYOSX5I.mjs";
|
|
4
|
+
import {
|
|
5
|
+
updateActiveDeck
|
|
6
|
+
} from "./chunk-GLB73Q6U.mjs";
|
|
7
|
+
import {
|
|
8
|
+
DeckCapabilities_exports,
|
|
9
|
+
DeckOperation_exports,
|
|
10
|
+
PLANK_COMPANION_TYPE
|
|
11
|
+
} from "./chunk-64ODQD6S.mjs";
|
|
12
|
+
import {
|
|
13
|
+
computeActiveUpdates
|
|
14
|
+
} from "./chunk-GBIGQKYW.mjs";
|
|
15
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
16
|
+
|
|
17
|
+
// src/operations/adjust.ts
|
|
18
|
+
import * as Effect from "effect/Effect";
|
|
19
|
+
import * as Function from "effect/Function";
|
|
20
|
+
import * as Option from "effect/Option";
|
|
21
|
+
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
22
|
+
import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
|
|
23
|
+
import { Operation } from "@dxos/compute";
|
|
24
|
+
import { AttentionCapabilities } from "@dxos/plugin-attention";
|
|
25
|
+
import { Graph } from "@dxos/plugin-graph";
|
|
26
|
+
import { byPosition } from "@dxos/util";
|
|
27
|
+
var handler = DeckOperation_exports.Adjust.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
|
|
28
|
+
const _state = yield* Capabilities.getAtomValue(DeckCapabilities_exports.State);
|
|
29
|
+
const deck = yield* DeckCapabilities_exports.getDeck();
|
|
30
|
+
const attention = yield* Capability.get(AttentionCapabilities.Attention);
|
|
31
|
+
const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
|
|
32
|
+
let soloOperation;
|
|
33
|
+
if (input.type === "increment-end" || input.type === "increment-start") {
|
|
34
|
+
const next = incrementPlank(deck.active, input);
|
|
35
|
+
const { deckUpdates } = computeActiveUpdates({
|
|
36
|
+
next,
|
|
37
|
+
deck,
|
|
38
|
+
attention
|
|
39
|
+
});
|
|
40
|
+
yield* Capabilities.updateAtomValue(DeckCapabilities_exports.State, (state) => updateActiveDeck(state, deckUpdates));
|
|
41
|
+
}
|
|
42
|
+
if (input.type.startsWith("solo")) {
|
|
43
|
+
const entryId = input.id;
|
|
44
|
+
if (!deck.solo) {
|
|
45
|
+
soloOperation = {
|
|
46
|
+
type: "solo",
|
|
47
|
+
entryId,
|
|
48
|
+
mode: input.type
|
|
49
|
+
};
|
|
50
|
+
} else {
|
|
51
|
+
if (input.type === "solo--fullscreen") {
|
|
52
|
+
soloOperation = {
|
|
53
|
+
type: "solo",
|
|
54
|
+
entryId,
|
|
55
|
+
mode: "solo--fullscreen"
|
|
56
|
+
};
|
|
57
|
+
} else if (input.type === "solo") {
|
|
58
|
+
soloOperation = {
|
|
59
|
+
type: "unsolo",
|
|
60
|
+
entryId
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (soloOperation?.type === "solo") {
|
|
66
|
+
yield* Operation.invoke(LayoutOperation.SetLayoutMode, {
|
|
67
|
+
subject: soloOperation.entryId,
|
|
68
|
+
mode: soloOperation.mode
|
|
69
|
+
});
|
|
70
|
+
} else if (soloOperation?.type === "unsolo") {
|
|
71
|
+
yield* Operation.invoke(LayoutOperation.SetLayoutMode, {
|
|
72
|
+
mode: "multi"
|
|
73
|
+
});
|
|
74
|
+
yield* Operation.invoke(LayoutOperation.Open, {
|
|
75
|
+
subject: [
|
|
76
|
+
soloOperation.entryId
|
|
77
|
+
]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (input.type === "companion") {
|
|
81
|
+
const companion = Function.pipe(Graph.getNode(graph, input.id), Option.map((node) => Graph.getConnections(graph, node.id, "child").filter((n) => n.type === PLANK_COMPANION_TYPE).toSorted((a, b) => byPosition(a.properties, b.properties))), Option.flatMap((companions) => companions.length > 0 ? Option.some(companions[0]) : Option.none()));
|
|
82
|
+
if (Option.isSome(companion)) {
|
|
83
|
+
yield* Operation.invoke(LayoutOperation.UpdateCompanion, {
|
|
84
|
+
subject: companion.value.id
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
})));
|
|
89
|
+
var adjust_default = handler;
|
|
90
|
+
export {
|
|
91
|
+
adjust_default as default
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=adjust-RXTF3IT3.mjs.map
|