@dxos/plugin-deck 0.8.4-main.e8ec1fe → 0.8.4-main.effb148878
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/README.md +1 -1
- package/dist/lib/neutral/DeckLayout-NBVPPAQP.mjs +278 -0
- package/dist/lib/neutral/DeckLayout-NBVPPAQP.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/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/neutral/add-toast-H2PK2S3H.mjs +24 -0
- package/dist/lib/neutral/add-toast-H2PK2S3H.mjs.map +7 -0
- package/dist/lib/neutral/adjust-J6ZPQ5BT.mjs +93 -0
- package/dist/lib/neutral/adjust-J6ZPQ5BT.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-MRA3OMKO.mjs +129 -0
- package/dist/lib/neutral/app-graph-builder-MRA3OMKO.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-3WIBNTUT.mjs +35 -0
- package/dist/lib/neutral/chunk-3WIBNTUT.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FBN443XP.mjs +8 -0
- package/dist/lib/neutral/chunk-FBN443XP.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FSIEKCMR.mjs +1305 -0
- package/dist/lib/neutral/chunk-FSIEKCMR.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-HD44H4CJ.mjs +280 -0
- package/dist/lib/neutral/chunk-HD44H4CJ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-VHETZ22W.mjs +101 -0
- package/dist/lib/neutral/chunk-VHETZ22W.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ZYYOSX5I.mjs +69 -0
- package/dist/lib/neutral/chunk-ZYYOSX5I.mjs.map +7 -0
- package/dist/lib/neutral/close-IPQTWQXS.mjs +44 -0
- package/dist/lib/neutral/close-IPQTWQXS.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/neutral/hooks/index.mjs +159 -0
- 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-OAKTKZM2.mjs +149 -0
- package/dist/lib/neutral/open-OAKTKZM2.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-WZ6KH27J.mjs +41 -0
- 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-PLY4YQ4X.mjs +21 -0
- package/dist/lib/neutral/revert-workspace-PLY4YQ4X.mjs.map +7 -0
- package/dist/lib/neutral/scroll-into-view-INJL3YOV.mjs +21 -0
- package/dist/lib/neutral/scroll-into-view-INJL3YOV.mjs.map +7 -0
- package/dist/lib/neutral/set-CQ6AO7QB.mjs +37 -0
- package/dist/lib/neutral/set-CQ6AO7QB.mjs.map +7 -0
- package/dist/lib/neutral/set-layout-mode-NBPJRYGC.mjs +85 -0
- package/dist/lib/neutral/set-layout-mode-NBPJRYGC.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/show-undo-EZH7JPAV.mjs +59 -0
- package/dist/lib/neutral/show-undo-EZH7JPAV.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/neutral/switch-workspace-UCFFW3B6.mjs +60 -0
- package/dist/lib/neutral/switch-workspace-UCFFW3B6.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +58 -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-NCPRS5MP.mjs +32 -0
- package/dist/lib/neutral/update-companion-NCPRS5MP.mjs.map +7 -0
- package/dist/lib/neutral/update-complementary-4RERA3VA.mjs +28 -0
- package/dist/lib/neutral/update-complementary-4RERA3VA.mjs.map +7 -0
- package/dist/lib/neutral/update-dialog-GMFMY7KZ.mjs +29 -0
- package/dist/lib/neutral/update-dialog-GMFMY7KZ.mjs.map +7 -0
- package/dist/lib/neutral/update-plank-size-TO7RMHQM.mjs +26 -0
- package/dist/lib/neutral/update-plank-size-TO7RMHQM.mjs.map +7 -0
- package/dist/lib/neutral/update-popover-H3KBQQZ4.mjs +33 -0
- package/dist/lib/neutral/update-popover-H3KBQQZ4.mjs.map +7 -0
- package/dist/lib/neutral/update-sidebar-OM7EGDQR.mjs +25 -0
- package/dist/lib/neutral/update-sidebar-OM7EGDQR.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 +3 -1
- 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 +4 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/check-app-scheme.d.ts +17 -2
- package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +196 -12
- 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 +4 -2
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +3 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +5 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +136 -49
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/tools.d.ts +4 -3
- package/dist/types/src/capabilities/tools.d.ts.map +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts +3 -2
- package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +4 -4
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +62 -0
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/DeckSettings/index.d.ts +1 -1
- package/dist/types/src/components/DeckSettings/index.d.ts.map +1 -1
- 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 -2
- 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 +62 -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/containers/DeckLayout/ActiveNode.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +64 -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 +3 -3
- 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 +62 -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/containers/Plank/PlankError.d.ts +15 -0
- package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/Plank/PlankHeading.d.ts +5 -4
- 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 +6 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +2 -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 +4 -4
- package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckState.d.ts +17 -0
- package/dist/types/src/hooks/useDeckState.d.ts.map +1 -0
- package/dist/types/src/hooks/useMainSize.d.ts +2 -2
- package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
- package/dist/types/src/hooks/useNodeActionExpander.d.ts +1 -1
- package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
- package/dist/types/src/hooks/useSelectedCompanion.d.ts +13 -0
- package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -4
- 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 +2 -2
- 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 +43 -55
- 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 +10 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +4 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +64 -64
- 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 +19 -4
- 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 +130 -61
- package/src/DeckPlugin.node.ts +17 -0
- package/src/DeckPlugin.test.ts +27 -0
- package/src/DeckPlugin.ts +32 -56
- package/src/DeckPlugin.workerd.ts +16 -0
- package/src/capabilities/app-graph-builder.ts +111 -127
- package/src/capabilities/check-app-scheme.ts +123 -24
- package/src/capabilities/index.ts +13 -14
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/react-root.tsx +37 -30
- package/src/capabilities/react-surface.tsx +28 -22
- package/src/capabilities/settings.ts +29 -20
- package/src/capabilities/state.ts +74 -96
- package/src/capabilities/tools.ts +57 -50
- package/src/capabilities/url-handler.ts +221 -50
- package/src/components/DeckSettings/DeckSettings.stories.tsx +37 -0
- package/src/components/DeckSettings/DeckSettings.tsx +19 -88
- package/src/components/DeckSettings/index.ts +2 -2
- 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 -3
- package/src/containers/Deck/Banner.tsx +41 -0
- package/src/containers/Deck/Deck.stories.tsx +81 -0
- package/src/containers/Deck/Deck.tsx +21 -0
- package/src/containers/Deck/DeckContent.tsx +102 -0
- package/src/containers/Deck/DeckRoot.tsx +50 -0
- package/src/containers/Deck/DeckViewport.tsx +450 -0
- package/src/{components/DeckLayout → containers/Deck}/StatusBar.tsx +4 -4
- package/src/containers/Deck/index.ts +5 -0
- package/src/{components → containers}/DeckLayout/ActiveNode.tsx +9 -4
- package/src/containers/DeckLayout/DeckLayout.stories.tsx +395 -0
- package/src/containers/DeckLayout/DeckLayout.tsx +62 -0
- package/src/containers/DeckLayout/Dialog.tsx +52 -0
- package/src/containers/DeckLayout/Fallback.tsx +24 -0
- package/src/containers/DeckLayout/Popover.tsx +162 -0
- package/src/{components → containers}/DeckLayout/Toast.tsx +5 -5
- 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 +218 -0
- package/src/containers/Plank/PlankContent.tsx +45 -0
- package/src/{components → containers}/Plank/PlankControls.tsx +43 -37
- package/src/containers/Plank/PlankError.tsx +82 -0
- package/src/{components → containers}/Plank/PlankHeading.tsx +67 -64
- 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/containers/Sidebar/ComplementarySidebar.tsx +192 -0
- package/src/containers/Sidebar/Sidebar.tsx +39 -0
- package/src/containers/Sidebar/SidebarButton.tsx +100 -0
- package/src/containers/index.ts +11 -0
- package/src/hooks/index.ts +2 -1
- package/src/hooks/useCompanions.ts +3 -3
- package/src/hooks/useDeckCompanions.ts +8 -11
- package/src/hooks/useDeckState.ts +73 -0
- package/src/hooks/useMainSize.ts +2 -2
- package/src/hooks/useNodeActionExpander.ts +4 -4
- package/src/hooks/useSelectedCompanion.ts +32 -0
- package/src/index.ts +1 -4
- package/src/layout.test.ts +59 -0
- package/src/layout.ts +38 -40
- package/src/meta.ts +22 -5
- 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 +186 -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 +66 -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 +43 -54
- package/src/types/DeckCapabilities.ts +34 -0
- package/src/types/DeckEvents.ts +21 -0
- package/src/types/DeckOperation.ts +53 -0
- package/src/types/Settings.ts +36 -0
- package/src/types/index.ts +5 -0
- package/src/types/schema.ts +49 -58
- package/src/util/index.ts +2 -1
- package/src/util/layoutAppliesTopbar.ts +2 -2
- 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 +50 -30
- package/src/vite-env.d.ts +5 -0
- package/dist/lib/browser/app-graph-builder-D74NTOMK.mjs +0 -128
- package/dist/lib/browser/app-graph-builder-D74NTOMK.mjs.map +0 -7
- package/dist/lib/browser/check-app-scheme-HIEVFAAX.mjs +0 -32
- package/dist/lib/browser/check-app-scheme-HIEVFAAX.mjs.map +0 -7
- package/dist/lib/browser/chunk-5KMJPIQC.mjs +0 -16
- package/dist/lib/browser/chunk-5KMJPIQC.mjs.map +0 -7
- package/dist/lib/browser/chunk-CNTGBCMK.mjs +0 -145
- package/dist/lib/browser/chunk-CNTGBCMK.mjs.map +0 -7
- package/dist/lib/browser/chunk-F3VCCHVL.mjs +0 -162
- package/dist/lib/browser/chunk-F3VCCHVL.mjs.map +0 -7
- package/dist/lib/browser/chunk-QKCGZ45E.mjs +0 -128
- package/dist/lib/browser/chunk-QKCGZ45E.mjs.map +0 -7
- package/dist/lib/browser/chunk-UXLU6CMW.mjs +0 -16
- package/dist/lib/browser/chunk-UXLU6CMW.mjs.map +0 -7
- package/dist/lib/browser/chunk-VBYJ664A.mjs +0 -132
- package/dist/lib/browser/chunk-VBYJ664A.mjs.map +0 -7
- package/dist/lib/browser/chunk-VUJ6UNIJ.mjs +0 -1553
- package/dist/lib/browser/chunk-VUJ6UNIJ.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -174
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-UA4YQGAC.mjs +0 -524
- package/dist/lib/browser/intent-resolver-UA4YQGAC.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-root-JAMHKYWN.mjs +0 -44
- package/dist/lib/browser/react-root-JAMHKYWN.mjs.map +0 -7
- package/dist/lib/browser/react-surface-6LW337ZT.mjs +0 -40
- package/dist/lib/browser/react-surface-6LW337ZT.mjs.map +0 -7
- package/dist/lib/browser/settings-SDPTOCCM.mjs +0 -30
- package/dist/lib/browser/settings-SDPTOCCM.mjs.map +0 -7
- package/dist/lib/browser/state-7IFAGZQO.mjs +0 -12
- package/dist/lib/browser/toolkit-L5CFXJCF.mjs +0 -52
- package/dist/lib/browser/toolkit-L5CFXJCF.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -32
- package/dist/lib/browser/url-handler-QEYGYE2H.mjs +0 -70
- package/dist/lib/browser/url-handler-QEYGYE2H.mjs.map +0 -7
- package/dist/types/src/capabilities/capabilities.d.ts +0 -184
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/toolkit.d.ts +0 -25
- package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
- package/dist/types/src/components/DeckLayout/ActiveNode.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 -74
- 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 -89
- 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 +0 -13
- 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 -4
- package/dist/types/src/components/fragments.d.ts.map +0 -1
- package/dist/types/src/events.d.ts +0 -4
- package/dist/types/src/events.d.ts.map +0 -1
- 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/util/overscroll.d.ts +0 -47
- package/dist/types/src/util/overscroll.d.ts.map +0 -1
- package/src/capabilities/capabilities.ts +0 -14
- package/src/capabilities/intent-resolver.ts +0 -471
- package/src/capabilities/toolkit.ts +0 -66
- package/src/components/DeckLayout/Banner.tsx +0 -39
- package/src/components/DeckLayout/ContentEmpty.tsx +0 -31
- package/src/components/DeckLayout/DeckLayout.stories.tsx +0 -63
- package/src/components/DeckLayout/DeckLayout.tsx +0 -32
- package/src/components/DeckLayout/DeckMain.tsx +0 -281
- package/src/components/DeckLayout/Dialog.tsx +0 -36
- package/src/components/DeckLayout/Fallback.tsx +0 -28
- package/src/components/DeckLayout/Popover.tsx +0 -95
- package/src/components/DeckLayout/Topbar.tsx +0 -11
- package/src/components/Plank/Plank.stories.tsx +0 -54
- package/src/components/Plank/Plank.tsx +0 -299
- package/src/components/Plank/PlankError.tsx +0 -49
- package/src/components/Sidebar/ComplementarySidebar.tsx +0 -214
- package/src/components/Sidebar/Sidebar.tsx +0 -42
- package/src/components/Sidebar/SidebarButton.tsx +0 -88
- package/src/components/fragments.ts +0 -14
- package/src/events.ts +0 -11
- package/src/hooks/useHoistStatusbar.ts +0 -27
- package/src/util/overscroll.ts +0 -69
- /package/dist/lib/{browser/state-7IFAGZQO.mjs.map → neutral/check-app-scheme-A7FZVNZO.mjs.map} +0 -0
- /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +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 → containers}/Sidebar/index.ts +0 -0
package/LICENSE
CHANGED
|
@@ -1,8 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
Copyright (c) 2022 DXOS
|
|
1
|
+
# Functional Source License, Version 1.1, ALv2 Future License
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
## Abbreviation
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
FSL-1.1-Apache-2.0
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 DXOS
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under
|
|
20
|
+
these Terms and Conditions, as indicated by our inclusion of these Terms and
|
|
21
|
+
Conditions with the Software.
|
|
22
|
+
|
|
23
|
+
### License Grant
|
|
24
|
+
|
|
25
|
+
Subject to your compliance with this License Grant and the Patents,
|
|
26
|
+
Redistribution and Trademark clauses below, we hereby grant you the right to
|
|
27
|
+
use, copy, modify, create derivative works, publicly perform, publicly display
|
|
28
|
+
and redistribute the Software for any Permitted Purpose identified below.
|
|
29
|
+
|
|
30
|
+
### Permitted Purpose
|
|
31
|
+
|
|
32
|
+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
|
|
33
|
+
means making the Software available to others in a commercial product or
|
|
34
|
+
service that:
|
|
35
|
+
|
|
36
|
+
1. substitutes for the Software;
|
|
37
|
+
|
|
38
|
+
2. substitutes for any other product or service we offer using the Software
|
|
39
|
+
that exists as of the date we make the Software available; or
|
|
40
|
+
|
|
41
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
42
|
+
|
|
43
|
+
Permitted Purposes specifically include using the Software:
|
|
44
|
+
|
|
45
|
+
1. for your internal use and access;
|
|
46
|
+
|
|
47
|
+
2. for non-commercial education;
|
|
48
|
+
|
|
49
|
+
3. for non-commercial research; and
|
|
50
|
+
|
|
51
|
+
4. in connection with professional services that you provide to a licensee
|
|
52
|
+
using the Software in accordance with these Terms and Conditions.
|
|
53
|
+
|
|
54
|
+
### Patents
|
|
55
|
+
|
|
56
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our
|
|
57
|
+
patents, the license grant above includes a license under our patents. If you
|
|
58
|
+
make a claim against any party that the Software infringes or contributes to
|
|
59
|
+
the infringement of any patent, then your patent license to the Software ends
|
|
60
|
+
immediately.
|
|
61
|
+
|
|
62
|
+
### Redistribution
|
|
63
|
+
|
|
64
|
+
The Terms and Conditions apply to all copies, modifications and derivatives of
|
|
65
|
+
the Software.
|
|
66
|
+
|
|
67
|
+
If you redistribute any copies, modifications or derivatives of the Software,
|
|
68
|
+
you must include a copy of or a link to these Terms and Conditions and not
|
|
69
|
+
remove any copyright notices provided in or with the Software.
|
|
70
|
+
|
|
71
|
+
### Disclaimer
|
|
72
|
+
|
|
73
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
|
|
74
|
+
IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
|
|
75
|
+
PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
|
|
76
|
+
|
|
77
|
+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
|
|
78
|
+
SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
|
|
79
|
+
EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
80
|
+
|
|
81
|
+
### Trademarks
|
|
82
|
+
|
|
83
|
+
Except for displaying the License Details and identifying us as the origin of
|
|
84
|
+
the Software, you have no right under these Terms and Conditions to use our
|
|
85
|
+
trademarks, trade names, service marks or product names.
|
|
86
|
+
|
|
87
|
+
## Grant of Future License
|
|
88
|
+
|
|
89
|
+
We hereby irrevocably grant you an additional license to use the Software under
|
|
90
|
+
the Apache License, Version 2.0 that is effective on the second anniversary of
|
|
91
|
+
the date we make the Software available. On or after that date, you may use the
|
|
92
|
+
Software under the Apache License, Version 2.0, in which case the following
|
|
93
|
+
will apply:
|
|
94
|
+
|
|
95
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
96
|
+
this file except in compliance with the License.
|
|
97
|
+
|
|
98
|
+
You may obtain a copy of the License at
|
|
99
|
+
|
|
100
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
101
|
+
|
|
102
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
|
103
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
104
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
105
|
+
specific language governing permissions and limitations under the License.
|
package/README.md
CHANGED
|
@@ -12,4 +12,4 @@ DXOS Surface plugin for the main application layout.
|
|
|
12
12
|
|
|
13
13
|
Your ideas, issues, and code are most welcome. Please take a look at our [community code of conduct](https://github.com/dxos/dxos/blob/main/CODE_OF_CONDUCT.md), the [issue guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-issues), and the [PR contribution guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-prs).
|
|
14
14
|
|
|
15
|
-
License: [
|
|
15
|
+
License: [FSL-1.1-Apache-2.0](./LICENSE) Copyright 2023 © DXOS
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Deck,
|
|
3
|
+
PlankErrorFallback
|
|
4
|
+
} from "./chunk-FSIEKCMR.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, Type } 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.getType(popoverSubject), Option.fromNullable, Option.map(Type.getSchema), Option.flatMap(Annotation.IconAnnotation.get), Option.map(({ icon: icon2 }) => icon2), Option.getOrElse(() => "ph--circle-dashed--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.Header, 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-NBVPPAQP.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, Type } 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.getType(popoverSubject),\n Option.fromNullable,\n Option.map(Type.getSchema),\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.map(({ icon }) => icon),\n Option.getOrElse(() => 'ph--circle-dashed--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.Header>\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.Header>\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", "Type", "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", "getType", "fromNullable", "map", "getSchema", "flatMap", "IconAnnotation", "get", "getOrElse", "handleClose", "popoverSide", "handleInteractOutside", "event", "type", "currentTarget", "classList", "contains", "preventDefault", "Portal", "Content", "side", "sticky", "hideWhenDetached", "onInteractOutside", "onEscapeKeyDown", "Viewport", "popoverKind", "data", "limit", "border", "classNames", "Header", "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.ProcessManagerReady),
|
|
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.ProcessManagerReady, 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.ProcessManagerReady),\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.ProcessManagerReady, 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,mBAAmB;IACjGV,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,qBAAqBf,WAAWmB,UAAU;IAC9Fd,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", "ProcessManagerReady", "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,16 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/DeckPlugin.workerd.ts
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { OperationHandler } from "#capabilities";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
var DeckPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({
|
|
9
|
+
activate: OperationHandler
|
|
10
|
+
}), Plugin.make);
|
|
11
|
+
var DeckPlugin_workerd_default = DeckPlugin;
|
|
12
|
+
export {
|
|
13
|
+
DeckPlugin,
|
|
14
|
+
DeckPlugin_workerd_default as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=DeckPlugin.workerd.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/DeckPlugin.workerd.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\n\nexport const DeckPlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n Plugin.make,\n);\n\nexport default DeckPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,wBAAwB;AACjC,SAASC,YAAY;AAEd,IAAMC,aAAaJ,OAAOK,OAAOF,IAAAA,EAAMG,KAC5CL,UAAUM,0BAA0B;EAAEC,UAAUN;AAAiB,CAAA,GACjEF,OAAOS,IAAI;AAGb,IAAA,6BAAeL;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "OperationHandler", "meta", "DeckPlugin", "define", "pipe", "addOperationHandlerModule", "activate", "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
|
+
}
|