@dxos/plugin-deck 0.8.4-main.422d1c7879 → 0.8.4-main.51f1e5ca51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{add-toast-EUN62IUE.mjs → add-toast-JWJOQNVL.mjs} +3 -3
- package/dist/lib/browser/{add-toast-EUN62IUE.mjs.map → add-toast-JWJOQNVL.mjs.map} +1 -1
- package/dist/lib/browser/{adjust-XWB6ZZ6U.mjs → adjust-RG6LIQLX.mjs} +7 -7
- package/dist/lib/browser/{adjust-XWB6ZZ6U.mjs.map → adjust-RG6LIQLX.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-KUTDCWZF.mjs → chunk-GLB73Q6U.mjs} +2 -10
- package/dist/lib/browser/{chunk-KUTDCWZF.mjs.map → chunk-GLB73Q6U.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-BRZAVPMC.mjs → chunk-LSZ47AY3.mjs} +1 -1
- package/dist/lib/browser/{chunk-5LM6A3EC.mjs → chunk-MARE7ZFK.mjs} +22 -15
- package/dist/lib/browser/{chunk-5LM6A3EC.mjs.map → chunk-MARE7ZFK.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-FRVCL5NO.mjs → chunk-XM263CQU.mjs} +2 -2
- package/dist/lib/browser/chunk-XM263CQU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DF2VZ6W3.mjs → chunk-ZYYOSX5I.mjs} +1 -1
- package/dist/lib/browser/{chunk-DF2VZ6W3.mjs.map → chunk-ZYYOSX5I.mjs.map} +2 -2
- package/dist/lib/browser/{close-JXK73YIM.mjs → close-URA766JO.mjs} +6 -6
- package/dist/lib/browser/{close-JXK73YIM.mjs.map → close-URA766JO.mjs.map} +1 -1
- package/dist/lib/browser/index.mjs +7 -70
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{open-K2JOEW2E.mjs → open-OPFOOHCQ.mjs} +7 -10
- package/dist/lib/browser/open-OPFOOHCQ.mjs.map +7 -0
- package/dist/lib/browser/operations/index.mjs +3 -3
- package/dist/lib/browser/operations/index.mjs.map +3 -3
- package/dist/lib/browser/{revert-workspace-BNIR5U64.mjs → revert-workspace-KP2Y4QLG.mjs} +3 -3
- package/dist/lib/browser/{revert-workspace-BNIR5U64.mjs.map → revert-workspace-KP2Y4QLG.mjs.map} +1 -1
- package/dist/lib/browser/{scroll-into-view-4GSKC3GA.mjs → scroll-into-view-S5H2FGSQ.mjs} +3 -3
- package/dist/lib/browser/{scroll-into-view-4GSKC3GA.mjs.map → scroll-into-view-S5H2FGSQ.mjs.map} +1 -1
- package/dist/lib/browser/{set-XCG6NIAO.mjs → set-AEKFFSIX.mjs} +5 -5
- package/dist/lib/browser/{set-XCG6NIAO.mjs.map → set-AEKFFSIX.mjs.map} +1 -1
- package/dist/lib/browser/{set-layout-mode-BEVNGOY2.mjs → set-layout-mode-CWIGQDFZ.mjs} +5 -10
- package/dist/lib/browser/set-layout-mode-CWIGQDFZ.mjs.map +7 -0
- package/dist/lib/browser/{show-undo-5RQNREEB.mjs → show-undo-XFVEDKYC.mjs} +3 -3
- package/dist/lib/browser/{show-undo-5RQNREEB.mjs.map → show-undo-XFVEDKYC.mjs.map} +1 -1
- package/dist/lib/browser/{switch-workspace-ICJJWNFT.mjs → switch-workspace-DSAAXZSI.mjs} +4 -12
- package/dist/lib/browser/switch-workspace-DSAAXZSI.mjs.map +7 -0
- package/dist/lib/browser/translations.mjs +57 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/browser/{update-companion-VPCBH3YT.mjs → update-companion-IDBBBHT3.mjs} +4 -4
- package/dist/lib/browser/{update-companion-VPCBH3YT.mjs.map → update-companion-IDBBBHT3.mjs.map} +1 -1
- package/dist/lib/browser/{update-complementary-74DEQY6T.mjs → update-complementary-55PNO5MD.mjs} +3 -3
- package/dist/lib/browser/{update-complementary-74DEQY6T.mjs.map → update-complementary-55PNO5MD.mjs.map} +1 -1
- package/dist/lib/browser/{update-dialog-6TDUYI5R.mjs → update-dialog-VNARIANC.mjs} +3 -3
- package/dist/lib/browser/{update-dialog-6TDUYI5R.mjs.map → update-dialog-VNARIANC.mjs.map} +1 -1
- package/dist/lib/browser/{update-plank-size-5VHZOTHE.mjs → update-plank-size-H63PRRXS.mjs} +5 -5
- package/dist/lib/browser/{update-plank-size-5VHZOTHE.mjs.map → update-plank-size-H63PRRXS.mjs.map} +1 -1
- package/dist/lib/browser/{update-popover-W7E2Z5T6.mjs → update-popover-ODTPZ3JL.mjs} +3 -3
- package/dist/lib/browser/{update-popover-W7E2Z5T6.mjs.map → update-popover-ODTPZ3JL.mjs.map} +1 -1
- package/dist/lib/browser/{update-sidebar-H3A6ZFRU.mjs → update-sidebar-JDVQ36WK.mjs} +3 -3
- package/dist/lib/browser/{update-sidebar-H3A6ZFRU.mjs.map → update-sidebar-JDVQ36WK.mjs.map} +1 -1
- package/dist/lib/node-esm/{add-toast-AZM7NFNM.mjs → add-toast-JUTN4GTI.mjs} +3 -3
- package/dist/lib/node-esm/{add-toast-AZM7NFNM.mjs.map → add-toast-JUTN4GTI.mjs.map} +1 -1
- package/dist/lib/node-esm/{adjust-ICALXQ6F.mjs → adjust-P5QK33P4.mjs} +7 -7
- package/dist/lib/node-esm/{adjust-ICALXQ6F.mjs.map → adjust-P5QK33P4.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-B7WZXRW4.mjs → chunk-FO7YDJZ3.mjs} +22 -15
- package/dist/lib/node-esm/{chunk-B7WZXRW4.mjs.map → chunk-FO7YDJZ3.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-MB4SDDVY.mjs → chunk-KY7ZCANM.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-A63Q53TW.mjs → chunk-L7OVX7CV.mjs} +2 -2
- package/dist/lib/node-esm/chunk-L7OVX7CV.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MLVJ2ODW.mjs → chunk-SHSR2CYO.mjs} +2 -10
- package/dist/lib/node-esm/{chunk-MLVJ2ODW.mjs.map → chunk-SHSR2CYO.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-IRWCUYJY.mjs → chunk-WGBUTT5K.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-IRWCUYJY.mjs.map → chunk-WGBUTT5K.mjs.map} +2 -2
- package/dist/lib/node-esm/{close-GC5V3GD5.mjs → close-U5VC7ERP.mjs} +6 -6
- package/dist/lib/node-esm/{close-GC5V3GD5.mjs.map → close-U5VC7ERP.mjs.map} +1 -1
- package/dist/lib/node-esm/index.mjs +7 -70
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{open-XXEHIR6G.mjs → open-4B3P5XGS.mjs} +7 -10
- package/dist/lib/node-esm/open-4B3P5XGS.mjs.map +7 -0
- package/dist/lib/node-esm/operations/index.mjs +3 -3
- package/dist/lib/node-esm/operations/index.mjs.map +3 -3
- package/dist/lib/node-esm/{revert-workspace-WCXAL5C6.mjs → revert-workspace-QD63M2U7.mjs} +3 -3
- package/dist/lib/node-esm/{revert-workspace-WCXAL5C6.mjs.map → revert-workspace-QD63M2U7.mjs.map} +1 -1
- package/dist/lib/node-esm/{scroll-into-view-2ZNU44ZO.mjs → scroll-into-view-G5M2EWK7.mjs} +3 -3
- package/dist/lib/node-esm/{scroll-into-view-2ZNU44ZO.mjs.map → scroll-into-view-G5M2EWK7.mjs.map} +1 -1
- package/dist/lib/node-esm/{set-5MO2JCUQ.mjs → set-ERJCXZBY.mjs} +5 -5
- package/dist/lib/node-esm/{set-5MO2JCUQ.mjs.map → set-ERJCXZBY.mjs.map} +1 -1
- package/dist/lib/node-esm/{set-layout-mode-3RK4HIG7.mjs → set-layout-mode-BOZD7744.mjs} +5 -10
- package/dist/lib/node-esm/set-layout-mode-BOZD7744.mjs.map +7 -0
- package/dist/lib/node-esm/{show-undo-WV7SAYGJ.mjs → show-undo-H5BRBYDC.mjs} +3 -3
- package/dist/lib/node-esm/{show-undo-WV7SAYGJ.mjs.map → show-undo-H5BRBYDC.mjs.map} +1 -1
- package/dist/lib/node-esm/{switch-workspace-VNM75H66.mjs → switch-workspace-F54PXE5N.mjs} +4 -12
- package/dist/lib/node-esm/switch-workspace-F54PXE5N.mjs.map +7 -0
- package/dist/lib/node-esm/translations.mjs +58 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/lib/node-esm/{update-companion-SIB3GWH7.mjs → update-companion-47LMKL5R.mjs} +4 -4
- package/dist/lib/node-esm/{update-companion-SIB3GWH7.mjs.map → update-companion-47LMKL5R.mjs.map} +1 -1
- package/dist/lib/node-esm/{update-complementary-CZTIVIXU.mjs → update-complementary-7VYYG7L2.mjs} +3 -3
- package/dist/lib/node-esm/{update-complementary-CZTIVIXU.mjs.map → update-complementary-7VYYG7L2.mjs.map} +1 -1
- package/dist/lib/node-esm/{update-dialog-HEDV5XBB.mjs → update-dialog-CABL7OWW.mjs} +3 -3
- package/dist/lib/node-esm/{update-dialog-HEDV5XBB.mjs.map → update-dialog-CABL7OWW.mjs.map} +1 -1
- package/dist/lib/node-esm/{update-plank-size-JJLU7VE3.mjs → update-plank-size-WYTSMZF2.mjs} +5 -5
- package/dist/lib/node-esm/{update-plank-size-JJLU7VE3.mjs.map → update-plank-size-WYTSMZF2.mjs.map} +1 -1
- package/dist/lib/node-esm/{update-popover-HI5TU2VT.mjs → update-popover-YZDYGL7G.mjs} +3 -3
- package/dist/lib/node-esm/{update-popover-HI5TU2VT.mjs.map → update-popover-YZDYGL7G.mjs.map} +1 -1
- package/dist/lib/node-esm/{update-sidebar-QB5BA655.mjs → update-sidebar-HV736LUN.mjs} +3 -3
- package/dist/lib/node-esm/{update-sidebar-QB5BA655.mjs.map → update-sidebar-HV736LUN.mjs.map} +1 -1
- package/dist/types/src/DeckPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +17 -17
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +16 -16
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/tools.d.ts.map +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +42 -52
- package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -1
- package/dist/types/src/components/Matrix/Matrix.d.ts +2 -2
- package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -1
- package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Banner.d.ts +1 -1
- package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Deck.stories.d.ts +42 -52
- package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/DeckContent.d.ts +4 -4
- package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/DeckRoot.d.ts +5 -8
- package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/DeckViewport.d.ts +4 -7
- package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +42 -52
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/Toast.d.ts +1 -1
- package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -1
- package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/Plank.d.ts +1 -1
- package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/Plank.stories.d.ts +42 -52
- package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/PlankContent.d.ts +1 -1
- package/dist/types/src/containers/Plank/PlankError.d.ts +1 -1
- package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -1
- package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -1
- package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -1
- package/dist/types/src/containers/Sidebar/SidebarButton.d.ts +1 -1
- package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -1
- package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
- package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckCompanions.d.ts +1 -1
- package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/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/layout.d.ts.map +1 -1
- package/dist/types/src/operations/add-toast.d.ts +1 -1
- package/dist/types/src/operations/add-toast.d.ts.map +1 -1
- package/dist/types/src/operations/adjust.d.ts +1 -1
- package/dist/types/src/operations/adjust.d.ts.map +1 -1
- package/dist/types/src/operations/close.d.ts +1 -1
- package/dist/types/src/operations/close.d.ts.map +1 -1
- package/dist/types/src/operations/definitions.d.ts +2 -2
- package/dist/types/src/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/operations/helpers.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +1 -1
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/open.d.ts +1 -1
- package/dist/types/src/operations/open.d.ts.map +1 -1
- package/dist/types/src/operations/revert-workspace.d.ts +1 -1
- package/dist/types/src/operations/revert-workspace.d.ts.map +1 -1
- package/dist/types/src/operations/scroll-into-view.d.ts +1 -1
- package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -1
- package/dist/types/src/operations/set-layout-mode.d.ts +1 -1
- package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -1
- package/dist/types/src/operations/set.d.ts +1 -1
- package/dist/types/src/operations/set.d.ts.map +1 -1
- package/dist/types/src/operations/show-undo.d.ts +1 -1
- package/dist/types/src/operations/show-undo.d.ts.map +1 -1
- package/dist/types/src/operations/switch-workspace.d.ts +1 -1
- package/dist/types/src/operations/switch-workspace.d.ts.map +1 -1
- package/dist/types/src/operations/update-companion.d.ts +1 -1
- package/dist/types/src/operations/update-companion.d.ts.map +1 -1
- package/dist/types/src/operations/update-complementary.d.ts +1 -1
- package/dist/types/src/operations/update-complementary.d.ts.map +1 -1
- package/dist/types/src/operations/update-dialog.d.ts +1 -1
- package/dist/types/src/operations/update-dialog.d.ts.map +1 -1
- package/dist/types/src/operations/update-plank-size.d.ts +1 -1
- package/dist/types/src/operations/update-plank-size.d.ts.map +1 -1
- package/dist/types/src/operations/update-popover.d.ts +1 -1
- package/dist/types/src/operations/update-popover.d.ts.map +1 -1
- package/dist/types/src/operations/update-sidebar.d.ts +1 -1
- package/dist/types/src/operations/update-sidebar.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +42 -53
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +5 -5
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +16 -16
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/types/events.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
- package/dist/types/src/util/plank-url-params.d.ts.map +1 -1
- package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -1
- package/dist/types/src/util/set-active.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +51 -45
- package/src/DeckPlugin.ts +2 -3
- package/src/capabilities/app-graph-builder.ts +2 -2
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/operation-handler.ts +1 -1
- package/src/capabilities/settings.ts +1 -1
- package/src/capabilities/url-handler.ts +1 -1
- package/src/components/DeckSettings/DeckSettings.stories.tsx +2 -1
- package/src/components/DeckSettings/DeckSettings.tsx +8 -47
- package/src/components/Matrix/Matrix.stories.tsx +1 -1
- package/src/containers/Deck/Deck.stories.tsx +1 -1
- package/src/containers/DeckLayout/DeckLayout.stories.tsx +1 -1
- package/src/containers/Plank/Plank.stories.tsx +1 -1
- package/src/containers/Sidebar/SidebarButton.tsx +7 -1
- package/src/hooks/useDeckCompanions.ts +1 -1
- package/src/operations/add-toast.ts +1 -1
- package/src/operations/adjust.ts +1 -1
- package/src/operations/close.ts +1 -1
- package/src/operations/definitions.ts +1 -1
- package/src/operations/index.ts +1 -1
- package/src/operations/open.ts +1 -1
- package/src/operations/revert-workspace.ts +1 -1
- package/src/operations/scroll-into-view.ts +1 -1
- package/src/operations/set-layout-mode.ts +1 -1
- package/src/operations/set.ts +1 -1
- package/src/operations/show-undo.ts +1 -1
- package/src/operations/switch-workspace.ts +1 -1
- package/src/operations/update-companion.ts +1 -1
- package/src/operations/update-complementary.ts +1 -1
- package/src/operations/update-dialog.ts +1 -1
- package/src/operations/update-plank-size.ts +1 -1
- package/src/operations/update-popover.ts +1 -1
- package/src/operations/update-sidebar.ts +1 -1
- package/src/translations.ts +2 -12
- package/src/types/Settings.ts +30 -5
- package/dist/lib/browser/chunk-FRVCL5NO.mjs.map +0 -7
- package/dist/lib/browser/open-K2JOEW2E.mjs.map +0 -7
- package/dist/lib/browser/set-layout-mode-BEVNGOY2.mjs.map +0 -7
- package/dist/lib/browser/switch-workspace-ICJJWNFT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-A63Q53TW.mjs.map +0 -7
- package/dist/lib/node-esm/open-XXEHIR6G.mjs.map +0 -7
- package/dist/lib/node-esm/set-layout-mode-3RK4HIG7.mjs.map +0 -7
- package/dist/lib/node-esm/switch-workspace-VNM75H66.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-BRZAVPMC.mjs.map → chunk-LSZ47AY3.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-MB4SDDVY.mjs.map → chunk-KY7ZCANM.mjs.map} +0 -0
package/src/types/Settings.ts
CHANGED
|
@@ -7,11 +7,36 @@
|
|
|
7
7
|
import * as Schema from 'effect/Schema';
|
|
8
8
|
|
|
9
9
|
export const Settings = Schema.Struct({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
enableDeck: Schema.optional(
|
|
11
|
+
Schema.Boolean.annotations({
|
|
12
|
+
title: 'Enable Deck',
|
|
13
|
+
description: 'Display multiple panels side by side instead of one at a time.',
|
|
14
|
+
}),
|
|
15
|
+
),
|
|
14
16
|
// TODO(burdon): Rename layoutMode? (e.g., bento | encapsulated?)
|
|
15
|
-
encapsulatedPlanks: Schema.optional(
|
|
17
|
+
encapsulatedPlanks: Schema.optional(
|
|
18
|
+
Schema.Boolean.annotations({
|
|
19
|
+
title: 'Encapsulated planks',
|
|
20
|
+
description: 'Render each plank inside its own isolated container.',
|
|
21
|
+
}),
|
|
22
|
+
),
|
|
23
|
+
enableStatusbar: Schema.optional(
|
|
24
|
+
Schema.Boolean.annotations({
|
|
25
|
+
title: 'Show status bar',
|
|
26
|
+
description: 'Display a status bar at the bottom of the application.',
|
|
27
|
+
}),
|
|
28
|
+
),
|
|
29
|
+
showHints: Schema.optional(
|
|
30
|
+
Schema.Boolean.annotations({
|
|
31
|
+
title: 'Show hints',
|
|
32
|
+
description: 'Show helpful tips and keyboard shortcut hints in the interface.',
|
|
33
|
+
}),
|
|
34
|
+
),
|
|
35
|
+
enableNativeRedirect: Schema.optional(
|
|
36
|
+
Schema.Boolean.annotations({
|
|
37
|
+
title: 'Enable native url redirect',
|
|
38
|
+
description: 'Redirect supported URLs to the native desktop application.',
|
|
39
|
+
}),
|
|
40
|
+
),
|
|
16
41
|
}).pipe(Schema.mutable);
|
|
17
42
|
export interface Settings extends Schema.Schema.Type<typeof Settings> {}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/definitions.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '#meta';\n\nconst PartAdjustment = Schema.Union(\n Schema.Literal('close').annotations({ description: 'Close the plank.' }),\n Schema.Literal('companion').annotations({ description: 'Open the companion plank.' }),\n Schema.Literal('solo').annotations({ description: 'Solo the plank.' }),\n Schema.Literal('solo--fullscreen').annotations({ description: 'Fullscreen the plank.' }),\n Schema.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n Schema.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n);\n\nexport type PartAdjustment = Schema.Schema.Type<typeof PartAdjustment>;\n\nexport const Adjust = Operation.make({\n meta: {\n key: `${meta.id}.operation.adjust`,\n name: 'Adjust',\n description: 'Adjust the layout of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to adjust.' }),\n type: PartAdjustment.annotations({ description: 'The type of adjustment to make.' }),\n }),\n output: Schema.Void,\n});\n\nexport const UpdatePlankSize = Operation.make({\n meta: {\n key: `${meta.id}.operation.update-plank-size`,\n name: 'Update Plank Size',\n description: 'Update the size of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to resize.' }),\n size: Schema.Number.annotations({ description: 'The new size of the plank.' }),\n }),\n output: Schema.Void,\n});\n"],
|
|
5
|
-
"mappings": ";;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAE1B,SAASC,YAAY;AAErB,IAAMC,iBAAwBC,aACrBC,eAAQ,OAAA,EAASC,YAAY;EAAEC,aAAa;AAAmB,CAAA,GAC/DF,eAAQ,WAAA,EAAaC,YAAY;EAAEC,aAAa;AAA4B,CAAA,GAC5EF,eAAQ,MAAA,EAAQC,YAAY;EAAEC,aAAa;AAAkB,CAAA,GAC7DF,eAAQ,kBAAA,EAAoBC,YAAY;EAAEC,aAAa;AAAwB,CAAA,GAC/EF,eAAQ,iBAAA,EAAmBC,YAAY;EAAEC,aAAa;AAAgD,CAAA,GACtGF,eAAQ,eAAA,EAAiBC,YAAY;EAAEC,aAAa;AAA8C,CAAA,CAAA;AAKpG,IAAMC,SAASC,UAAUC,KAAK;EACnCC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9Ec,MAAMlB,eAAeG,YAAY;MAAEC,aAAa;IAAkC,CAAA;EACpF,CAAA;EACAe,QAAeC;AACjB,CAAA;AAEO,IAAMC,kBAAkBf,UAAUC,KAAK;EAC5CC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9EkB,MAAaC,cAAOpB,YAAY;MAAEC,aAAa;IAA6B,CAAA;EAC9E,CAAA;EACAe,QAAeC;AACjB,CAAA;",
|
|
6
|
-
"names": ["Schema", "Capability", "Operation", "meta", "PartAdjustment", "Union", "Literal", "annotations", "description", "Adjust", "Operation", "make", "meta", "key", "id", "name", "services", "Capability", "Service", "input", "Struct", "String", "type", "output", "Void", "UpdatePlankSize", "size", "Number"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/open.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport {\n AppCapabilities,\n LayoutOperation,\n createEdgeExistenceChecker,\n expandPath,\n validateNavigationTarget,\n} from '@dxos/app-toolkit';\nimport { Context } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention/types';\nimport { ClientCapabilities } from '@dxos/plugin-client/types';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/operations';\n\nimport { openSubjectsOnActiveDeck } from '../layout';\nimport { DeckCapabilities } from '../types';\nimport { computeActiveUpdates } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Open> = LayoutOperation.Open.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n // Validate navigation targets, redirecting to 404 if not found.\n const capabilities = yield* Capability.Service;\n const pathResolvers = capabilities.getAll(AppCapabilities.NavigationPathResolver);\n const checkRemoteExistence = yield* Capability.get(ClientCapabilities.Client).pipe(\n Effect.map((client) =>\n createEdgeExistenceChecker((spaceId, body) => client.edge.http.execQuery(new Context(), spaceId, body)),\n ),\n Effect.catchAll(() => Effect.succeed(undefined)),\n );\n\n // Immediate: skip 404 / resolver checks but still expand the path (same as validate’s first step).\n if (input.navigation === 'immediate') {\n for (const subjectId of input.subject) {\n expandPath(graph, subjectId);\n }\n }\n\n const validatedSubjects = yield* Effect.all(\n input.subject.map((subjectId) =>\n input.navigation === 'immediate'\n ? Effect.succeed(subjectId)\n : validateNavigationTarget({ graph, subjectId, pathResolvers, checkRemoteExistence }),\n ),\n );\n input = { ...input, subject: validatedSubjects };\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n if (input.workspace && state.activeDeck !== input.workspace) {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: input.workspace });\n }\n }\n\n // Dedup subjects against the active deck using DXN identity.\n // The same object can appear under different graph paths (e.g., via collections vs types).\n // Resolve each subject's DXN and, if it matches an already-open deck item, remap the\n // subject to the existing deck entry so that openEntry's exact-match check succeeds.\n // Only needed in multi (deck) mode; solo mode replaces the single visible item anyway.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const active = !deck.solo && deck.initialized ? deck.active : [];\n if (active.length > 0 && input.subject.length > 0) {\n const resolveDxn = (qualifiedPath: string) =>\n Effect.reduce(pathResolvers, Option.none<string>(), (acc, resolver) =>\n Option.isSome(acc)\n ? Effect.succeed(acc)\n : resolver(qualifiedPath).pipe(\n Effect.map((opt) => Option.map(opt, (dxn) => dxn.toString())),\n Effect.catchAll(() => Effect.succeed(Option.none<string>())),\n ),\n );\n\n // Build DXN → deck item ID map for active items.\n const deckDxnMap = new Map<string, string>();\n yield* Effect.all(\n active.map((deckId) =>\n resolveDxn(deckId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n deckDxnMap.set(opt.value, deckId);\n }\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n\n // Remap subjects whose DXN matches an existing deck item.\n if (deckDxnMap.size > 0) {\n const remapped = yield* Effect.all(\n input.subject.map((subjectId) =>\n resolveDxn(subjectId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n const existing = deckDxnMap.get(opt.value);\n if (existing && existing !== subjectId) {\n return existing;\n }\n }\n return subjectId;\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n input = { ...input, subject: remapped };\n }\n }\n }\n\n // Compute the next active deck state and apply it.\n // In solo or uninitialized mode the subject list replaces the deck entirely.\n // In multi (deck) mode, subjects are merged via openSubjectsOnActiveDeck which\n // uses stack semantics (truncate after pivot, then push new entries).\n let previouslyOpenIds: Set<string>;\n {\n const deck = yield* DeckCapabilities.getDeck();\n previouslyOpenIds = new Set<string>(deck.solo ? [deck.solo] : deck.active);\n const next =\n deck.solo || !deck.initialized\n ? [...input.subject]\n : openSubjectsOnActiveDeck(deck.active, input.subject, {\n pivotId: input.pivotId,\n key: input.key,\n });\n\n const { deckUpdates, toAttend: _toAttend } = computeActiveUpdates({ next, deck, attention });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n }\n\n // Schedule side-effects for the newly opened items: scroll into view, expose in\n // the navigation sidebar, and emit observability events.\n // When nothing is newly opened (subject was already visible), the fallback\n // `input.subject[0]` still triggers scroll and expose so the user is taken there.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const ids = deck.solo ? [deck.solo] : deck.active;\n const newlyOpen = ids.filter((i: string) => !previouslyOpenIds.has(i));\n\n if (input.scrollIntoView !== false && (newlyOpen[0] ?? input.subject[0])) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, {\n subject: newlyOpen[0] ?? input.subject[0],\n });\n }\n\n if (newlyOpen[0] ?? input.subject[0]) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject: newlyOpen[0] ?? input.subject[0] });\n }\n\n for (const subjectId of newlyOpen) {\n const typename = Option.match(Graph.getNode(graph, subjectId), {\n onNone: () => undefined,\n onSome: (node) => {\n const active = node.data;\n return Obj.isObject(active) ? Obj.getTypename(active) : undefined;\n },\n });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, {\n name: 'navigation.activate',\n properties: { subjectId, typename },\n });\n }\n }\n\n return validatedSubjects;\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SACEC,iBACAC,iBACAC,4BACAC,YACAC,gCACK;AACP,SAASC,eAAe;AACxB,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,6BAA6B;AACtC,SAASC,0BAA0B;AACnC,SAASC,aAAa;AACtB,SAASC,8BAA8B;;AAOvC,IAAMC,UAA8DC,gBAAgBC,KAAKC,KACvFC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAM,EAAEC,MAAK,IAAK,OAAOC,WAAWC,IAAIC,gBAAgBC,QAAQ;AAChE,QAAMC,YAAY,OAAOJ,WAAWC,IAAII,sBAAsBC,SAAS;AAGvE,QAAMC,eAAe,OAAOP,WAAWQ;AACvC,QAAMC,gBAAgBF,aAAaG,OAAOR,gBAAgBS,sBAAsB;AAChF,QAAMC,uBAAuB,OAAOZ,WAAWC,IAAIY,mBAAmBC,MAAM,EAAEpB,KACrEqB,WAAI,CAACC,WACVC,2BAA2B,CAACC,SAASC,SAASH,OAAOI,KAAKC,KAAKC,UAAU,IAAIC,QAAAA,QAAAA;;;MAAWL,SAASC,IAAAA,CAAAA,CAAAA,GAE5FK,gBAAS,MAAaC,eAAQC,MAAAA,CAAAA,CAAAA;AAIvC,MAAI5B,MAAM6B,eAAe,aAAa;AACpC,eAAWC,aAAa9B,MAAM+B,SAAS;AACrCC,iBAAW/B,OAAO6B,SAAAA;IACpB;EACF;AAEA,QAAMG,oBAAoB,OAAcC,WACtClC,MAAM+B,QAAQd,IAAI,CAACa,cACjB9B,MAAM6B,eAAe,cACVF,eAAQG,SAAAA,IACfK,yBAAyB;IAAElC;IAAO6B;IAAWnB;IAAeG;EAAqB,CAAA,CAAA,CAAA;AAGzFd,UAAQ;IAAE,GAAGA;IAAO+B,SAASE;EAAkB;AAE/C;AACE,UAAMG,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,QAAIxC,MAAMyC,aAAaL,MAAMM,eAAe1C,MAAMyC,WAAW;AAC3D,aAAO5C,UAAU8C,OAAOjD,gBAAgBkD,iBAAiB;QAAEb,SAAS/B,MAAMyC;MAAU,CAAA;IACtF;EACF;AAOA;AACE,UAAMI,OAAO,OAAON,iBAAiBO,QAAO;AAC5C,UAAMC,SAAS,CAACF,KAAKG,QAAQH,KAAKI,cAAcJ,KAAKE,SAAS,CAAA;AAC9D,QAAIA,OAAOG,SAAS,KAAKlD,MAAM+B,QAAQmB,SAAS,GAAG;AACjD,YAAMC,aAAa,CAACC,kBACXC,cAAO1C,eAAsB2C,YAAI,GAAY,CAACC,KAAKC,aACjDC,cAAOF,GAAAA,IACH5B,eAAQ4B,GAAAA,IACfC,SAASJ,aAAAA,EAAexD,KACfqB,WAAI,CAACyC,QAAezC,WAAIyC,KAAK,CAACC,QAAQA,IAAIC,SAAQ,CAAA,CAAA,GAClDlC,gBAAS,MAAaC,eAAe2B,YAAI,CAAA,CAAA,CAAA,CAAA;AAK1D,YAAMO,aAAa,oBAAIC,IAAAA;AACvB,aAAc5B,WACZa,OAAO9B,IAAI,CAAC8C,WACVZ,WAAWY,MAAAA,EAAQnE,KACVqB,WAAI,CAACyC,QAAAA;AACV,YAAWD,cAAOC,GAAAA,GAAM;AACtBG,qBAAWG,IAAIN,IAAIO,OAAOF,MAAAA;QAC5B;MACF,CAAA,CAAA,CAAA,GAGJ;QAAEG,aAAa;MAAY,CAAA;AAI7B,UAAIL,WAAWM,OAAO,GAAG;AACvB,cAAMC,WAAW,OAAclC,WAC7BlC,MAAM+B,QAAQd,IAAI,CAACa,cACjBqB,WAAWrB,SAAAA,EAAWlC,KACbqB,WAAI,CAACyC,QAAAA;AACV,cAAWD,cAAOC,GAAAA,GAAM;AACtB,kBAAMW,WAAWR,WAAW1D,IAAIuD,IAAIO,KAAK;AACzC,gBAAII,YAAYA,aAAavC,WAAW;AACtC,qBAAOuC;YACT;UACF;AACA,iBAAOvC;QACT,CAAA,CAAA,CAAA,GAGJ;UAAEoC,aAAa;QAAY,CAAA;AAE7BlE,gBAAQ;UAAE,GAAGA;UAAO+B,SAASqC;QAAS;MACxC;IACF;EACF;AAMA,MAAIE;AACJ;AACE,UAAMzB,OAAO,OAAON,iBAAiBO,QAAO;AAC5CwB,wBAAoB,IAAIC,IAAY1B,KAAKG,OAAO;MAACH,KAAKG;QAAQH,KAAKE,MAAM;AACzE,UAAMyB,OACJ3B,KAAKG,QAAQ,CAACH,KAAKI,cACf;SAAIjD,MAAM+B;QACV0C,yBAAyB5B,KAAKE,QAAQ/C,MAAM+B,SAAS;MACnD2C,SAAS1E,MAAM0E;MACfC,KAAK3E,MAAM2E;IACb,CAAA;AAEN,UAAM,EAAEC,aAAaC,UAAUC,UAAS,IAAKC,qBAAqB;MAAEP;MAAM3B;MAAMvC;IAAU,CAAA;AAC1F,WAAO+B,aAAa2C,gBAAgBzC,iBAAiBC,OAAO,CAACJ,UAAU6C,iBAAiB7C,OAAOwC,WAAAA,CAAAA;EACjG;AAMA;AACE,UAAM/B,OAAO,OAAON,iBAAiBO,QAAO;AAC5C,UAAMoC,MAAMrC,KAAKG,OAAO;MAACH,KAAKG;QAAQH,KAAKE;AAC3C,UAAMoC,YAAYD,IAAIE,OAAO,CAACC,MAAc,CAACf,kBAAkBgB,IAAID,CAAAA,CAAAA;AAEnE,QAAIrF,MAAMuF,mBAAmB,UAAUJ,UAAU,CAAA,KAAMnF,MAAM+B,QAAQ,CAAA,IAAK;AACxE,aAAOlC,UAAU2F,SAAS9F,gBAAgB+F,gBAAgB;QACxD1D,SAASoD,UAAU,CAAA,KAAMnF,MAAM+B,QAAQ,CAAA;MACzC,CAAA;IACF;AAEA,QAAIoD,UAAU,CAAA,KAAMnF,MAAM+B,QAAQ,CAAA,GAAI;AACpC,aAAOlC,UAAU2F,SAAS9F,gBAAgBgG,QAAQ;QAAE3D,SAASoD,UAAU,CAAA,KAAMnF,MAAM+B,QAAQ,CAAA;MAAG,CAAA;IAChG;AAEA,eAAWD,aAAaqD,WAAW;AACjC,YAAMQ,WAAkBC,aAAMC,MAAMC,QAAQ7F,OAAO6B,SAAAA,GAAY;QAC7DiE,QAAQ,MAAMnE;QACdoE,QAAQ,CAACC,SAAAA;AACP,gBAAMlD,SAASkD,KAAKC;AACpB,iBAAOC,IAAIC,SAASrD,MAAAA,IAAUoD,IAAIE,YAAYtD,MAAAA,IAAUnB;QAC1D;MACF,CAAA;AACA,aAAO/B,UAAU2F,SAASc,uBAAuBC,WAAW;QAC1DC,MAAM;QACNC,YAAY;UAAE3E;UAAW6D;QAAS;MACpC,CAAA;IACF;EACF;AAEA,SAAO1D;AACT,CAAA,CAAA,CAAA;AAIJ,IAAA,eAAexC;",
|
|
6
|
-
"names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "createEdgeExistenceChecker", "expandPath", "validateNavigationTarget", "Context", "Obj", "Operation", "AttentionCapabilities", "ClientCapabilities", "Graph", "ObservabilityOperation", "handler", "LayoutOperation", "Open", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "attention", "AttentionCapabilities", "Attention", "capabilities", "Service", "pathResolvers", "getAll", "NavigationPathResolver", "checkRemoteExistence", "ClientCapabilities", "Client", "map", "client", "createEdgeExistenceChecker", "spaceId", "body", "edge", "http", "execQuery", "Context", "catchAll", "succeed", "undefined", "navigation", "subjectId", "subject", "expandPath", "validatedSubjects", "all", "validateNavigationTarget", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "workspace", "activeDeck", "invoke", "SwitchWorkspace", "deck", "getDeck", "active", "solo", "initialized", "length", "resolveDxn", "qualifiedPath", "reduce", "none", "acc", "resolver", "isSome", "opt", "dxn", "toString", "deckDxnMap", "Map", "deckId", "set", "value", "concurrency", "size", "remapped", "existing", "previouslyOpenIds", "Set", "next", "openSubjectsOnActiveDeck", "pivotId", "key", "deckUpdates", "toAttend", "_toAttend", "computeActiveUpdates", "updateAtomValue", "updateActiveDeck", "ids", "newlyOpen", "filter", "i", "has", "scrollIntoView", "schedule", "ScrollIntoView", "Expose", "typename", "match", "Graph", "getNode", "onNone", "onSome", "node", "data", "Obj", "isObject", "getTypename", "ObservabilityOperation", "SendEvent", "name", "properties"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/set-layout-mode.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 { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\nimport { isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities, type DeckState, type LayoutMode, getMode, isLayoutMode } from '../types';\nimport { updateActiveDeck } from './helpers';\n\n/**\n * Transitions between layout modes (multi, solo, solo--fullscreen) or reverts to the previous mode.\n * Computes which planks become active/inactive and persists the previous mode for revert support.\n */\nconst handler: Operation.WithHandler<typeof LayoutOperation.SetLayoutMode> = LayoutOperation.SetLayoutMode.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n if ('mode' in input && !isLayoutMode(input.mode)) {\n return;\n }\n\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = yield* DeckCapabilities.getDeck();\n\n const computeModeUpdate = (mode: LayoutMode, subject?: string): Partial<DeckState> => {\n const current = deck.solo ? [deck.solo] : deck.active;\n const next = (mode !== 'multi' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]).filter(\n isNonNullable,\n );\n\n const removed = current.filter((id: string) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id: string) => !next.includes(id)), ...removed]));\n\n const soloUpdate =\n mode !== 'multi' && next[0]\n ? { solo: next[0] }\n : mode === 'multi' && deck.solo\n ? { solo: undefined, initialized: true }\n : {};\n\n const fullscreenUpdate = mode === 'solo--fullscreen' ? { fullscreen: !deck.fullscreen } : {};\n\n return {\n inactive: closed,\n ...soloUpdate,\n ...fullscreenUpdate,\n };\n };\n\n if ('mode' in input) {\n const currentMode = getMode(deck);\n const subject = 'subject' in input ? input.subject : undefined;\n const deckUpdates = computeModeUpdate(input.mode as LayoutMode, subject);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newPreviousMode =\n currentMode !== input.mode\n ? { ...state.previousMode, [state.activeDeck]: currentMode }\n : state.previousMode;\n return {\n ...updateActiveDeck(state, deckUpdates),\n previousMode: newPreviousMode,\n };\n });\n\n if (subject) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject });\n }\n } else if ('revert' in input) {\n const deckUpdates = computeModeUpdate(state.previousMode[state.activeDeck]);\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n } else {\n log.warn('Invalid layout mode', input);\n }\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;;AAS9B,IAAMC,UAAuEC,gBAAgBC,cAAcC,KACzGC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,MAAI,UAAUA,SAAS,CAACC,aAAaD,MAAME,IAAI,GAAG;AAChD;EACF;AAEA,QAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,QAAMC,OAAO,OAAOF,iBAAiBG,QAAO;AAE5C,QAAMC,oBAAoB,CAACR,MAAkBS,YAAAA;AAC3C,UAAMC,UAAUJ,KAAKK,OAAO;MAACL,KAAKK;QAAQL,KAAKM;AAC/C,UAAMC,QAAQb,SAAS,UAAU;MAACS,WAAWH,KAAKK,QAAQL,KAAKM,OAAO,CAAA;QAAM;SAAIN,KAAKM;MAAQN,KAAKK;OAAOG,OACvGC,aAAAA;AAGF,UAAMC,UAAUN,QAAQI,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;AAC9D,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIhB,KAAKiB,SAAST,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;SAASD;KAAQ,CAAA;AAE3G,UAAMQ,aACJxB,SAAS,WAAWa,KAAK,CAAA,IACrB;MAAEF,MAAME,KAAK,CAAA;IAAG,IAChBb,SAAS,WAAWM,KAAKK,OACvB;MAAEA,MAAMc;MAAWC,aAAa;IAAK,IACrC,CAAC;AAET,UAAMC,mBAAmB3B,SAAS,qBAAqB;MAAE4B,YAAY,CAACtB,KAAKsB;IAAW,IAAI,CAAC;AAE3F,WAAO;MACLL,UAAUJ;MACV,GAAGK;MACH,GAAGG;IACL;EACF;AAEA,MAAI,UAAU7B,OAAO;AACnB,UAAM+B,cAAcC,QAAQxB,IAAAA;AAC5B,UAAMG,UAAU,aAAaX,QAAQA,MAAMW,UAAUgB;AACrD,UAAMM,cAAcvB,kBAAkBV,MAAME,MAAoBS,OAAAA;AAEhE,WAAOP,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMgC,kBACJJ,gBAAgB/B,MAAME,OAClB;QAAE,GAAGC,OAAMiC;QAAc,CAACjC,OAAMkC,UAAU,GAAGN;MAAY,IACzD5B,OAAMiC;AACZ,aAAO;QACL,GAAGE,iBAAiBnC,QAAO8B,WAAAA;QAC3BG,cAAcD;MAChB;IACF,CAAA;AAEA,QAAIxB,SAAS;AACX,aAAOd,UAAU0C,SAAS7C,gBAAgB8C,QAAQ;QAAE7B;MAAQ,CAAA;IAC9D;EACF,WAAW,YAAYX,OAAO;AAC5B,UAAMiC,cAAcvB,kBAAkBP,MAAMiC,aAAajC,MAAMkC,UAAU,CAAC;AAC1E,WAAOjC,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAUmC,iBAAiBnC,QAAO8B,WAAAA,CAAAA;EACjG,OAAO;AACLQ,QAAIC,KAAK,uBAAuB1C,OAAAA;;;;;;EAClC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,0BAAeP;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "LayoutOperation", "log", "Operation", "isNonNullable", "handler", "LayoutOperation", "SetLayoutMode", "pipe", "Operation", "withHandler", "fnUntraced", "input", "isLayoutMode", "mode", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "deck", "getDeck", "computeModeUpdate", "subject", "current", "solo", "active", "next", "filter", "isNonNullable", "removed", "id", "includes", "closed", "Array", "from", "Set", "inactive", "soloUpdate", "undefined", "initialized", "fullscreenUpdate", "fullscreen", "currentMode", "getMode", "deckUpdates", "updateAtomValue", "newPreviousMode", "previousMode", "activeDeck", "updateActiveDeck", "schedule", "Expose", "log", "warn"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/switch-workspace.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, isPinnedWorkspace, LayoutOperation } from '@dxos/app-toolkit';\nimport { invariant } from '@dxos/invariant';\nimport { Operation } from '@dxos/operation';\nimport { Graph, Node } from '@dxos/plugin-graph';\n\nimport { DeckCapabilities, defaultDeck } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.SwitchWorkspace> = LayoutOperation.SwitchWorkspace.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n const shouldUpdatePrevious = !isPinnedWorkspace(state.activeDeck);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newDecks = state.decks[input.subject]\n ? state.decks\n : { ...state.decks, [input.subject]: { ...defaultDeck } };\n return {\n ...state,\n previousDeck: shouldUpdatePrevious ? state.activeDeck : state.previousDeck,\n activeDeck: input.subject,\n decks: newDecks,\n };\n });\n }\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = state.decks[input.subject];\n invariant(deck, `Deck not found: ${input.subject}`);\n\n const first = deck.solo ? deck.solo : deck.active[0];\n if (first) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, { subject: first });\n } else {\n const [item] = Graph.getConnections(graph, input.subject, 'child').filter(\n (node) => !Node.isActionLike(node) && !node.properties.disposition,\n );\n if (item) {\n yield* Operation.schedule(LayoutOperation.Open, { subject: [item.id] });\n }\n }\n }\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiBC,mBAAmBC,uBAAuB;AACpE,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,OAAOC,YAAY;;AAI5B,IAAMC,UAAyEC,gBAAgBC,gBAAgBC,KAC7GC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAM,EAAEC,MAAK,IAAK,OAAOC,WAAWC,IAAIC,gBAAgBC,QAAQ;AAEhE;AACE,UAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AAGrE,UAAMC,uBAAuB,CAACC,kBAAkBN,MAAMO,UAAU;AAEhE,WAAON,aAAaO,gBAAgBL,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMS,WAAWT,OAAMU,MAAMhB,MAAMiB,OAAO,IACtCX,OAAMU,QACN;QAAE,GAAGV,OAAMU;QAAO,CAAChB,MAAMiB,OAAO,GAAG;UAAE,GAAGC;QAAY;MAAE;AAC1D,aAAO;QACL,GAAGZ;QACHa,cAAcR,uBAAuBL,OAAMO,aAAaP,OAAMa;QAC9DN,YAAYb,MAAMiB;QAClBD,OAAOD;MACT;IACF,CAAA;EACF;AAEA;AACE,UAAMT,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,UAAMU,OAAOd,MAAMU,MAAMhB,MAAMiB,OAAO;AACtCI,cAAUD,MAAM,mBAAmBpB,MAAMiB,OAAO,IAAE;;;;;;;;;AAElD,UAAMK,QAAQF,KAAKG,OAAOH,KAAKG,OAAOH,KAAKI,OAAO,CAAA;AAClD,QAAIF,OAAO;AACT,aAAOzB,UAAU4B,SAAS/B,gBAAgBgC,gBAAgB;QAAET,SAASK;MAAM,CAAA;IAC7E,OAAO;AACL,YAAM,CAACK,IAAAA,IAAQC,MAAMC,eAAe5B,OAAOD,MAAMiB,SAAS,OAAA,EAASa,OACjE,CAACC,SAAS,CAACC,KAAKC,aAAaF,IAAAA,KAAS,CAACA,KAAKG,WAAWC,WAAW;AAEpE,UAAIR,MAAM;AACR,eAAO9B,UAAU4B,SAAS/B,gBAAgB0C,MAAM;UAAEnB,SAAS;YAACU,KAAKU;;QAAI,CAAA;MACvE;IACF;EACF;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,2BAAe5C;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "isPinnedWorkspace", "LayoutOperation", "invariant", "Operation", "Graph", "Node", "handler", "LayoutOperation", "SwitchWorkspace", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "shouldUpdatePrevious", "isPinnedWorkspace", "activeDeck", "updateAtomValue", "newDecks", "decks", "subject", "defaultDeck", "previousDeck", "deck", "invariant", "first", "solo", "active", "schedule", "ScrollIntoView", "item", "Graph", "getConnections", "filter", "node", "Node", "isActionLike", "properties", "disposition", "Open", "id"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/definitions.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '#meta';\n\nconst PartAdjustment = Schema.Union(\n Schema.Literal('close').annotations({ description: 'Close the plank.' }),\n Schema.Literal('companion').annotations({ description: 'Open the companion plank.' }),\n Schema.Literal('solo').annotations({ description: 'Solo the plank.' }),\n Schema.Literal('solo--fullscreen').annotations({ description: 'Fullscreen the plank.' }),\n Schema.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n Schema.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n);\n\nexport type PartAdjustment = Schema.Schema.Type<typeof PartAdjustment>;\n\nexport const Adjust = Operation.make({\n meta: {\n key: `${meta.id}.operation.adjust`,\n name: 'Adjust',\n description: 'Adjust the layout of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to adjust.' }),\n type: PartAdjustment.annotations({ description: 'The type of adjustment to make.' }),\n }),\n output: Schema.Void,\n});\n\nexport const UpdatePlankSize = Operation.make({\n meta: {\n key: `${meta.id}.operation.update-plank-size`,\n name: 'Update Plank Size',\n description: 'Update the size of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to resize.' }),\n size: Schema.Number.annotations({ description: 'The new size of the plank.' }),\n }),\n output: Schema.Void,\n});\n"],
|
|
5
|
-
"mappings": ";;;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAE1B,SAASC,YAAY;AAErB,IAAMC,iBAAwBC,aACrBC,eAAQ,OAAA,EAASC,YAAY;EAAEC,aAAa;AAAmB,CAAA,GAC/DF,eAAQ,WAAA,EAAaC,YAAY;EAAEC,aAAa;AAA4B,CAAA,GAC5EF,eAAQ,MAAA,EAAQC,YAAY;EAAEC,aAAa;AAAkB,CAAA,GAC7DF,eAAQ,kBAAA,EAAoBC,YAAY;EAAEC,aAAa;AAAwB,CAAA,GAC/EF,eAAQ,iBAAA,EAAmBC,YAAY;EAAEC,aAAa;AAAgD,CAAA,GACtGF,eAAQ,eAAA,EAAiBC,YAAY;EAAEC,aAAa;AAA8C,CAAA,CAAA;AAKpG,IAAMC,SAASC,UAAUC,KAAK;EACnCC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9Ec,MAAMlB,eAAeG,YAAY;MAAEC,aAAa;IAAkC,CAAA;EACpF,CAAA;EACAe,QAAeC;AACjB,CAAA;AAEO,IAAMC,kBAAkBf,UAAUC,KAAK;EAC5CC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9EkB,MAAaC,cAAOpB,YAAY;MAAEC,aAAa;IAA6B,CAAA;EAC9E,CAAA;EACAe,QAAeC;AACjB,CAAA;",
|
|
6
|
-
"names": ["Schema", "Capability", "Operation", "meta", "PartAdjustment", "Union", "Literal", "annotations", "description", "Adjust", "Operation", "make", "meta", "key", "id", "name", "services", "Capability", "Service", "input", "Struct", "String", "type", "output", "Void", "UpdatePlankSize", "size", "Number"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/open.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport {\n AppCapabilities,\n LayoutOperation,\n createEdgeExistenceChecker,\n expandPath,\n validateNavigationTarget,\n} from '@dxos/app-toolkit';\nimport { Context } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention/types';\nimport { ClientCapabilities } from '@dxos/plugin-client/types';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/operations';\n\nimport { openSubjectsOnActiveDeck } from '../layout';\nimport { DeckCapabilities } from '../types';\nimport { computeActiveUpdates } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Open> = LayoutOperation.Open.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n // Validate navigation targets, redirecting to 404 if not found.\n const capabilities = yield* Capability.Service;\n const pathResolvers = capabilities.getAll(AppCapabilities.NavigationPathResolver);\n const checkRemoteExistence = yield* Capability.get(ClientCapabilities.Client).pipe(\n Effect.map((client) =>\n createEdgeExistenceChecker((spaceId, body) => client.edge.http.execQuery(new Context(), spaceId, body)),\n ),\n Effect.catchAll(() => Effect.succeed(undefined)),\n );\n\n // Immediate: skip 404 / resolver checks but still expand the path (same as validate’s first step).\n if (input.navigation === 'immediate') {\n for (const subjectId of input.subject) {\n expandPath(graph, subjectId);\n }\n }\n\n const validatedSubjects = yield* Effect.all(\n input.subject.map((subjectId) =>\n input.navigation === 'immediate'\n ? Effect.succeed(subjectId)\n : validateNavigationTarget({ graph, subjectId, pathResolvers, checkRemoteExistence }),\n ),\n );\n input = { ...input, subject: validatedSubjects };\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n if (input.workspace && state.activeDeck !== input.workspace) {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: input.workspace });\n }\n }\n\n // Dedup subjects against the active deck using DXN identity.\n // The same object can appear under different graph paths (e.g., via collections vs types).\n // Resolve each subject's DXN and, if it matches an already-open deck item, remap the\n // subject to the existing deck entry so that openEntry's exact-match check succeeds.\n // Only needed in multi (deck) mode; solo mode replaces the single visible item anyway.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const active = !deck.solo && deck.initialized ? deck.active : [];\n if (active.length > 0 && input.subject.length > 0) {\n const resolveDxn = (qualifiedPath: string) =>\n Effect.reduce(pathResolvers, Option.none<string>(), (acc, resolver) =>\n Option.isSome(acc)\n ? Effect.succeed(acc)\n : resolver(qualifiedPath).pipe(\n Effect.map((opt) => Option.map(opt, (dxn) => dxn.toString())),\n Effect.catchAll(() => Effect.succeed(Option.none<string>())),\n ),\n );\n\n // Build DXN → deck item ID map for active items.\n const deckDxnMap = new Map<string, string>();\n yield* Effect.all(\n active.map((deckId) =>\n resolveDxn(deckId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n deckDxnMap.set(opt.value, deckId);\n }\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n\n // Remap subjects whose DXN matches an existing deck item.\n if (deckDxnMap.size > 0) {\n const remapped = yield* Effect.all(\n input.subject.map((subjectId) =>\n resolveDxn(subjectId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n const existing = deckDxnMap.get(opt.value);\n if (existing && existing !== subjectId) {\n return existing;\n }\n }\n return subjectId;\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n input = { ...input, subject: remapped };\n }\n }\n }\n\n // Compute the next active deck state and apply it.\n // In solo or uninitialized mode the subject list replaces the deck entirely.\n // In multi (deck) mode, subjects are merged via openSubjectsOnActiveDeck which\n // uses stack semantics (truncate after pivot, then push new entries).\n let previouslyOpenIds: Set<string>;\n {\n const deck = yield* DeckCapabilities.getDeck();\n previouslyOpenIds = new Set<string>(deck.solo ? [deck.solo] : deck.active);\n const next =\n deck.solo || !deck.initialized\n ? [...input.subject]\n : openSubjectsOnActiveDeck(deck.active, input.subject, {\n pivotId: input.pivotId,\n key: input.key,\n });\n\n const { deckUpdates, toAttend: _toAttend } = computeActiveUpdates({ next, deck, attention });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n }\n\n // Schedule side-effects for the newly opened items: scroll into view, expose in\n // the navigation sidebar, and emit observability events.\n // When nothing is newly opened (subject was already visible), the fallback\n // `input.subject[0]` still triggers scroll and expose so the user is taken there.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const ids = deck.solo ? [deck.solo] : deck.active;\n const newlyOpen = ids.filter((i: string) => !previouslyOpenIds.has(i));\n\n if (input.scrollIntoView !== false && (newlyOpen[0] ?? input.subject[0])) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, {\n subject: newlyOpen[0] ?? input.subject[0],\n });\n }\n\n if (newlyOpen[0] ?? input.subject[0]) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject: newlyOpen[0] ?? input.subject[0] });\n }\n\n for (const subjectId of newlyOpen) {\n const typename = Option.match(Graph.getNode(graph, subjectId), {\n onNone: () => undefined,\n onSome: (node) => {\n const active = node.data;\n return Obj.isObject(active) ? Obj.getTypename(active) : undefined;\n },\n });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, {\n name: 'navigation.activate',\n properties: { subjectId, typename },\n });\n }\n }\n\n return validatedSubjects;\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "createEdgeExistenceChecker", "expandPath", "validateNavigationTarget", "Context", "Obj", "Operation", "AttentionCapabilities", "ClientCapabilities", "Graph", "ObservabilityOperation", "handler", "LayoutOperation", "Open", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "attention", "AttentionCapabilities", "Attention", "capabilities", "Service", "pathResolvers", "getAll", "NavigationPathResolver", "checkRemoteExistence", "ClientCapabilities", "Client", "map", "client", "createEdgeExistenceChecker", "spaceId", "body", "edge", "http", "execQuery", "Context", "catchAll", "succeed", "undefined", "navigation", "subjectId", "subject", "expandPath", "validatedSubjects", "all", "validateNavigationTarget", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "workspace", "activeDeck", "invoke", "SwitchWorkspace", "deck", "getDeck", "active", "solo", "initialized", "length", "resolveDxn", "qualifiedPath", "reduce", "none", "acc", "resolver", "isSome", "opt", "dxn", "toString", "deckDxnMap", "Map", "deckId", "set", "value", "concurrency", "size", "remapped", "existing", "previouslyOpenIds", "Set", "next", "openSubjectsOnActiveDeck", "pivotId", "key", "deckUpdates", "toAttend", "_toAttend", "computeActiveUpdates", "updateAtomValue", "updateActiveDeck", "ids", "newlyOpen", "filter", "i", "has", "scrollIntoView", "schedule", "ScrollIntoView", "Expose", "typename", "match", "Graph", "getNode", "onNone", "onSome", "node", "data", "Obj", "isObject", "getTypename", "ObservabilityOperation", "SendEvent", "name", "properties"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/set-layout-mode.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 { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\nimport { isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities, type DeckState, type LayoutMode, getMode, isLayoutMode } from '../types';\nimport { updateActiveDeck } from './helpers';\n\n/**\n * Transitions between layout modes (multi, solo, solo--fullscreen) or reverts to the previous mode.\n * Computes which planks become active/inactive and persists the previous mode for revert support.\n */\nconst handler: Operation.WithHandler<typeof LayoutOperation.SetLayoutMode> = LayoutOperation.SetLayoutMode.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n if ('mode' in input && !isLayoutMode(input.mode)) {\n return;\n }\n\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = yield* DeckCapabilities.getDeck();\n\n const computeModeUpdate = (mode: LayoutMode, subject?: string): Partial<DeckState> => {\n const current = deck.solo ? [deck.solo] : deck.active;\n const next = (mode !== 'multi' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]).filter(\n isNonNullable,\n );\n\n const removed = current.filter((id: string) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id: string) => !next.includes(id)), ...removed]));\n\n const soloUpdate =\n mode !== 'multi' && next[0]\n ? { solo: next[0] }\n : mode === 'multi' && deck.solo\n ? { solo: undefined, initialized: true }\n : {};\n\n const fullscreenUpdate = mode === 'solo--fullscreen' ? { fullscreen: !deck.fullscreen } : {};\n\n return {\n inactive: closed,\n ...soloUpdate,\n ...fullscreenUpdate,\n };\n };\n\n if ('mode' in input) {\n const currentMode = getMode(deck);\n const subject = 'subject' in input ? input.subject : undefined;\n const deckUpdates = computeModeUpdate(input.mode as LayoutMode, subject);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newPreviousMode =\n currentMode !== input.mode\n ? { ...state.previousMode, [state.activeDeck]: currentMode }\n : state.previousMode;\n return {\n ...updateActiveDeck(state, deckUpdates),\n previousMode: newPreviousMode,\n };\n });\n\n if (subject) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject });\n }\n } else if ('revert' in input) {\n const deckUpdates = computeModeUpdate(state.previousMode[state.activeDeck]);\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n } else {\n log.warn('Invalid layout mode', input);\n }\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;;AAS9B,IAAMC,UAAuEC,gBAAgBC,cAAcC,KACzGC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,MAAI,UAAUA,SAAS,CAACC,aAAaD,MAAME,IAAI,GAAG;AAChD;EACF;AAEA,QAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,QAAMC,OAAO,OAAOF,iBAAiBG,QAAO;AAE5C,QAAMC,oBAAoB,CAACR,MAAkBS,YAAAA;AAC3C,UAAMC,UAAUJ,KAAKK,OAAO;MAACL,KAAKK;QAAQL,KAAKM;AAC/C,UAAMC,QAAQb,SAAS,UAAU;MAACS,WAAWH,KAAKK,QAAQL,KAAKM,OAAO,CAAA;QAAM;SAAIN,KAAKM;MAAQN,KAAKK;OAAOG,OACvGC,aAAAA;AAGF,UAAMC,UAAUN,QAAQI,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;AAC9D,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIhB,KAAKiB,SAAST,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;SAASD;KAAQ,CAAA;AAE3G,UAAMQ,aACJxB,SAAS,WAAWa,KAAK,CAAA,IACrB;MAAEF,MAAME,KAAK,CAAA;IAAG,IAChBb,SAAS,WAAWM,KAAKK,OACvB;MAAEA,MAAMc;MAAWC,aAAa;IAAK,IACrC,CAAC;AAET,UAAMC,mBAAmB3B,SAAS,qBAAqB;MAAE4B,YAAY,CAACtB,KAAKsB;IAAW,IAAI,CAAC;AAE3F,WAAO;MACLL,UAAUJ;MACV,GAAGK;MACH,GAAGG;IACL;EACF;AAEA,MAAI,UAAU7B,OAAO;AACnB,UAAM+B,cAAcC,QAAQxB,IAAAA;AAC5B,UAAMG,UAAU,aAAaX,QAAQA,MAAMW,UAAUgB;AACrD,UAAMM,cAAcvB,kBAAkBV,MAAME,MAAoBS,OAAAA;AAEhE,WAAOP,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMgC,kBACJJ,gBAAgB/B,MAAME,OAClB;QAAE,GAAGC,OAAMiC;QAAc,CAACjC,OAAMkC,UAAU,GAAGN;MAAY,IACzD5B,OAAMiC;AACZ,aAAO;QACL,GAAGE,iBAAiBnC,QAAO8B,WAAAA;QAC3BG,cAAcD;MAChB;IACF,CAAA;AAEA,QAAIxB,SAAS;AACX,aAAOd,UAAU0C,SAAS7C,gBAAgB8C,QAAQ;QAAE7B;MAAQ,CAAA;IAC9D;EACF,WAAW,YAAYX,OAAO;AAC5B,UAAMiC,cAAcvB,kBAAkBP,MAAMiC,aAAajC,MAAMkC,UAAU,CAAC;AAC1E,WAAOjC,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAUmC,iBAAiBnC,QAAO8B,WAAAA,CAAAA;EACjG,OAAO;AACLQ,QAAIC,KAAK,uBAAuB1C,OAAAA;;;;;;EAClC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,0BAAeP;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "LayoutOperation", "log", "Operation", "isNonNullable", "handler", "LayoutOperation", "SetLayoutMode", "pipe", "Operation", "withHandler", "fnUntraced", "input", "isLayoutMode", "mode", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "deck", "getDeck", "computeModeUpdate", "subject", "current", "solo", "active", "next", "filter", "isNonNullable", "removed", "id", "includes", "closed", "Array", "from", "Set", "inactive", "soloUpdate", "undefined", "initialized", "fullscreenUpdate", "fullscreen", "currentMode", "getMode", "deckUpdates", "updateAtomValue", "newPreviousMode", "previousMode", "activeDeck", "updateActiveDeck", "schedule", "Expose", "log", "warn"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/switch-workspace.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, isPinnedWorkspace, LayoutOperation } from '@dxos/app-toolkit';\nimport { invariant } from '@dxos/invariant';\nimport { Operation } from '@dxos/operation';\nimport { Graph, Node } from '@dxos/plugin-graph';\n\nimport { DeckCapabilities, defaultDeck } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.SwitchWorkspace> = LayoutOperation.SwitchWorkspace.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n const shouldUpdatePrevious = !isPinnedWorkspace(state.activeDeck);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newDecks = state.decks[input.subject]\n ? state.decks\n : { ...state.decks, [input.subject]: { ...defaultDeck } };\n return {\n ...state,\n previousDeck: shouldUpdatePrevious ? state.activeDeck : state.previousDeck,\n activeDeck: input.subject,\n decks: newDecks,\n };\n });\n }\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = state.decks[input.subject];\n invariant(deck, `Deck not found: ${input.subject}`);\n\n const first = deck.solo ? deck.solo : deck.active[0];\n if (first) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, { subject: first });\n } else {\n const [item] = Graph.getConnections(graph, input.subject, 'child').filter(\n (node) => !Node.isActionLike(node) && !node.properties.disposition,\n );\n if (item) {\n yield* Operation.schedule(LayoutOperation.Open, { subject: [item.id] });\n }\n }\n }\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiBC,mBAAmBC,uBAAuB;AACpE,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,OAAOC,YAAY;;AAI5B,IAAMC,UAAyEC,gBAAgBC,gBAAgBC,KAC7GC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAM,EAAEC,MAAK,IAAK,OAAOC,WAAWC,IAAIC,gBAAgBC,QAAQ;AAEhE;AACE,UAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AAGrE,UAAMC,uBAAuB,CAACC,kBAAkBN,MAAMO,UAAU;AAEhE,WAAON,aAAaO,gBAAgBL,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMS,WAAWT,OAAMU,MAAMhB,MAAMiB,OAAO,IACtCX,OAAMU,QACN;QAAE,GAAGV,OAAMU;QAAO,CAAChB,MAAMiB,OAAO,GAAG;UAAE,GAAGC;QAAY;MAAE;AAC1D,aAAO;QACL,GAAGZ;QACHa,cAAcR,uBAAuBL,OAAMO,aAAaP,OAAMa;QAC9DN,YAAYb,MAAMiB;QAClBD,OAAOD;MACT;IACF,CAAA;EACF;AAEA;AACE,UAAMT,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,UAAMU,OAAOd,MAAMU,MAAMhB,MAAMiB,OAAO;AACtCI,cAAUD,MAAM,mBAAmBpB,MAAMiB,OAAO,IAAE;;;;;;;;;AAElD,UAAMK,QAAQF,KAAKG,OAAOH,KAAKG,OAAOH,KAAKI,OAAO,CAAA;AAClD,QAAIF,OAAO;AACT,aAAOzB,UAAU4B,SAAS/B,gBAAgBgC,gBAAgB;QAAET,SAASK;MAAM,CAAA;IAC7E,OAAO;AACL,YAAM,CAACK,IAAAA,IAAQC,MAAMC,eAAe5B,OAAOD,MAAMiB,SAAS,OAAA,EAASa,OACjE,CAACC,SAAS,CAACC,KAAKC,aAAaF,IAAAA,KAAS,CAACA,KAAKG,WAAWC,WAAW;AAEpE,UAAIR,MAAM;AACR,eAAO9B,UAAU4B,SAAS/B,gBAAgB0C,MAAM;UAAEnB,SAAS;YAACU,KAAKU;;QAAI,CAAA;MACvE;IACF;EACF;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,2BAAe5C;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "isPinnedWorkspace", "LayoutOperation", "invariant", "Operation", "Graph", "Node", "handler", "LayoutOperation", "SwitchWorkspace", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "shouldUpdatePrevious", "isPinnedWorkspace", "activeDeck", "updateAtomValue", "newDecks", "decks", "subject", "defaultDeck", "previousDeck", "deck", "invariant", "first", "solo", "active", "schedule", "ScrollIntoView", "item", "Graph", "getConnections", "filter", "node", "Node", "isActionLike", "properties", "disposition", "Open", "id"]
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|