@dxos/plugin-deck 0.8.1 → 0.8.2-main.2f9c567
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/{check-app-scheme-SEYECDHI.mjs → check-app-scheme-O7JPE4TM.mjs} +2 -3
- package/dist/lib/browser/check-app-scheme-O7JPE4TM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FJBMNSUC.mjs → chunk-AHTP72DY.mjs} +207 -162
- package/dist/lib/browser/chunk-AHTP72DY.mjs.map +7 -0
- package/dist/lib/browser/chunk-E7TOEOGO.mjs +157 -0
- package/dist/lib/browser/chunk-E7TOEOGO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6ZSOFCPP.mjs → chunk-PGSJT5PG.mjs} +8 -7
- package/dist/lib/browser/{chunk-6ZSOFCPP.mjs.map → chunk-PGSJT5PG.mjs.map} +3 -3
- package/dist/lib/browser/chunk-RKYIMUKW.mjs +24 -0
- package/dist/lib/browser/{chunk-B4LOJUWW.mjs.map → chunk-RKYIMUKW.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +5 -3
- package/dist/lib/browser/index.mjs.map +2 -2
- package/dist/lib/browser/{intent-resolver-UDYKO2QW.mjs → intent-resolver-NO6L67KF.mjs} +78 -53
- package/dist/lib/browser/intent-resolver-NO6L67KF.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-XLXN2VEW.mjs → react-root-5RWCIUXV.mjs} +5 -5
- package/dist/lib/browser/{react-surface-WNGMZL7I.mjs → react-surface-DIDOPTH7.mjs} +5 -5
- package/dist/lib/browser/{settings-HMDGSBGO.mjs → settings-C7LX2GXF.mjs} +4 -4
- package/dist/lib/browser/settings-C7LX2GXF.mjs.map +7 -0
- package/dist/lib/browser/{state-7TN26M42.mjs → state-AX74YEJD.mjs} +6 -5
- package/dist/lib/browser/state-AX74YEJD.mjs.map +7 -0
- package/dist/lib/browser/{tools-SC6QEN7R.mjs → tools-7W7KZRAX.mjs} +7 -7
- package/dist/lib/browser/tools-7W7KZRAX.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/browser/{url-handler-ODG4B6NX.mjs → url-handler-AF5SYROZ.mjs} +2 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +8 -6
- package/dist/types/src/capabilities/capabilities.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 +2 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +5 -4
- 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/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Dialog.d.ts +3 -0
- package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +1 -0
- package/dist/types/src/components/DeckLayout/Popover.d.ts +5 -0
- package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -0
- package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankControls.d.ts +2 -2
- package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankHeading.d.ts +3 -2
- package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +106 -104
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util/layoutAppliesTopbar.d.ts +2 -1
- package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
- package/dist/types/src/util/useHoistStatusbar.d.ts +2 -1
- package/dist/types/src/util/useHoistStatusbar.d.ts.map +1 -1
- package/package.json +31 -29
- package/src/capabilities/check-app-scheme.ts +3 -5
- package/src/capabilities/index.ts +2 -2
- package/src/capabilities/intent-resolver.ts +120 -96
- package/src/capabilities/settings.ts +2 -2
- package/src/capabilities/state.ts +3 -2
- package/src/capabilities/tools.ts +4 -3
- package/src/components/DeckLayout/ContentEmpty.tsx +6 -2
- package/src/components/DeckLayout/DeckLayout.tsx +114 -181
- package/src/components/DeckLayout/Dialog.tsx +36 -0
- package/src/components/DeckLayout/Popover.tsx +104 -0
- package/src/components/Plank/Plank.tsx +6 -3
- package/src/components/Plank/PlankControls.tsx +40 -34
- package/src/components/Plank/PlankError.tsx +2 -6
- package/src/components/Plank/PlankHeading.tsx +12 -5
- package/src/components/Sidebar/ComplementarySidebar.tsx +30 -20
- package/src/components/Sidebar/Sidebar.tsx +5 -3
- package/src/translations.ts +2 -0
- package/src/types.ts +75 -71
- package/src/util/layoutAppliesTopbar.ts +8 -2
- package/src/util/useHoistStatusbar.ts +9 -4
- package/dist/lib/browser/check-app-scheme-SEYECDHI.mjs.map +0 -7
- package/dist/lib/browser/chunk-B4LOJUWW.mjs +0 -24
- package/dist/lib/browser/chunk-FJBMNSUC.mjs.map +0 -7
- package/dist/lib/browser/chunk-RJNCG4ND.mjs +0 -154
- package/dist/lib/browser/chunk-RJNCG4ND.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-UDYKO2QW.mjs.map +0 -7
- package/dist/lib/browser/settings-HMDGSBGO.mjs.map +0 -7
- package/dist/lib/browser/state-7TN26M42.mjs.map +0 -7
- package/dist/lib/browser/tools-SC6QEN7R.mjs.map +0 -7
- package/dist/types/src/components/DeckLayout/Fullscreen.d.ts +0 -5
- package/dist/types/src/components/DeckLayout/Fullscreen.d.ts.map +0 -1
- package/src/components/DeckLayout/Fullscreen.tsx +0 -31
- /package/dist/lib/browser/{react-root-XLXN2VEW.mjs.map → react-root-5RWCIUXV.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-WNGMZL7I.mjs.map → react-surface-DIDOPTH7.mjs.map} +0 -0
- /package/dist/lib/browser/{url-handler-ODG4B6NX.mjs.map → url-handler-AF5SYROZ.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/set-active.ts", "../../../src/util/useCompanions.ts", "../../../src/util/overscroll.ts", "../../../src/util/useBreakpoints.ts", "../../../src/util/layoutAppliesTopbar.ts", "../../../src/util/useHoistStatusbar.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\n\nimport { type AttentionManager } from '@dxos/plugin-attention';\n\nimport { type DeckPluginState } from '../types';\n\nexport type SetActiveOptions = {\n next: string[];\n state: DeckPluginState;\n attention?: AttentionManager;\n};\n\nexport const setActive = ({ next, state, attention }: SetActiveOptions) => {\n return batch(() => {\n const active = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const removed = active.filter((id) => !next.includes(id));\n const closed = Array.from(new Set([...state.deck.inactive.filter((id) => !next.includes(id)), ...removed]));\n\n state.deck.inactive = closed;\n\n if (state.deck.solo || !state.deck.initialized) {\n state.deck.solo = next[0];\n } else {\n state.deck.active = next;\n }\n\n if (state.deck.fullscreen && !state.deck.solo) {\n state.deck.fullscreen = false;\n }\n\n if (attention) {\n const attended = attention.current;\n const [attendedId] = Array.from(attended);\n const isAttendedAvailable = !!attendedId && next.includes(attendedId);\n if (!isAttendedAvailable) {\n const attendedIndex = active.indexOf(attendedId);\n // If outside of bounds, focus on the first/last plank, otherwise focus on the new plank in the same position.\n const index = attendedIndex === -1 ? 0 : attendedIndex >= next.length ? next.length - 1 : attendedIndex;\n return next[index];\n }\n }\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { useNode } from '@dxos/plugin-graph';\nimport { byPosition } from '@dxos/util';\n\nimport { PLANK_COMPANION_TYPE } from '../types';\n\nexport const useCompanions = (id?: string) => {\n const { graph } = useAppGraph();\n const node = useNode(graph, id);\n const companions = node ? graph.nodes(node, { type: PLANK_COMPANION_TYPE }) : [];\n return useMemo(() => companions.toSorted((a, b) => byPosition(a.properties, b.properties)), [companions]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { CSSProperties } from 'react';\n\n/**\n * ┌────────────────────────────────────────────────────────────────────────────────────────────────────┐\n * | Overscroll Padding Calculation for Centering Planks on Screen. │\n * ├────────────────────────────────────────────────────────────────────────────────────────────────────┤\n * │ NOTE(Zan): I found the way you calculate the overscroll padding to center a plank on the screen │\n * │ at the edges of the scroll context a bit confusing, so I've diagrammed it here. │\n * │ │\n * │ Multiple Planks: │\n * │ ─────────────── │\n * | Use the following overscroll padding calculation centering the boundary planks on the SCREEN. │\n * │ │\n * │ Left Padding: Right Padding: │\n * │ ┌───┬────┬──────────────────┬──────┐ ┌──────┬──────────────────┬────┬───┐ │\n * │ │ │████│ Ideal │ │ │ │ Ideal │████│ │ │\n * │ │ S │█PL█│ first │ │ │ │ last │█PR█│ C │ │\n * │ │ │████│ plank │ │ │ │ plank │████│ │ │\n * │ └───┴────┴──────────────────┴──────┘ └──────┴──────────────────┴────┴───┘ │\n * │ <--------- screen width -----------> <---------- screen width ----------> │\n * │ │\n * │ PL = ((screen width - Plank Width) / 2) - S │\n * │ PR = ((screen width - Plank Width) / 2) - C │\n * │ │\n * │ S = Sidebar width C = Complementary sidebar width │\n * │ PL = Padding Left PR = Padding Right │\n * │ │\n * │ Single Plank: │\n * │ ───────────── │\n * │ For a single plank we use the following overscroll padding calculation to center the plank in │\n * │ the content area: │\n * │ │\n * │ ┌───┬───────────────────────┬───┬───────────────────────┬───┐ │\n * │ │ │███████████████████████│ │███████████████████████│ │ │\n * │ │ S │█████ Left Padding ████│ P │████ Right Padding ████│ C │ │\n * │ │ │███████████████████████│ │███████████████████████│ │ │\n * │ └───┴───────────────────────┴───┴───────────────────────┴───┘ │\n * │ <------------------------ screen width ---------------------> │\n * │ │\n * │ Left/Right Padding Width = (screen width - S - P - C) / 2 │\n * │ │\n * │ S = Sidebar width (may be 0) │\n * │ P = Plank width (centered) │\n * │ C = Complementary sidebar width (may be 0) │\n * └────────────────────────────────────────────────────────────────────────────────────────────────────┘\n */\nexport const calculateOverscroll = (\n planksCount: number,\n): Pick<CSSProperties, 'paddingInlineStart' | 'paddingInlineEnd'> | undefined => {\n if (!planksCount) {\n return { paddingInlineStart: 0, paddingInlineEnd: 0 };\n }\n if (planksCount === 1) {\n const overscrollPadding =\n 'max(0px, calc(((100dvw - var(--dx-main-sidebarWidth) - var(--dx-main-complementaryWidth) - (var(--dx-main-contentFirstWidth) + 1px)) / 2)))';\n return { paddingInlineStart: overscrollPadding, paddingInlineEnd: overscrollPadding };\n } else {\n return {\n paddingInlineStart:\n 'max(0px, calc(((100dvw - (var(--dx-main-contentFirstWidth) + 1px)) / 2) - var(--dx-main-sidebarWidth)))',\n paddingInlineEnd:\n 'max(0px, calc(((100dvw - (var(--dx-main-contentLastWidth) + 1px)) / 2) - var(--dx-main-complementaryWidth)))',\n };\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMediaQuery } from '@dxos/react-ui';\n\nexport const useBreakpoints = () => {\n const [isNotMobile] = useMediaQuery('md');\n const [isDesktop] = useMediaQuery('lg');\n return isDesktop ? 'desktop' : isNotMobile ? 'tablet' : 'mobile';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const layoutAppliesTopbar = (breakpoint: string) => {\n return document.body.getAttribute('data-platform') === 'win'
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,SAASA,aAAa;AAYf,IAAMC,YAAY,CAAC,EAAEC,MAAMC,OAAOC,UAAS,MAAoB;AACpE,SAAOC,MAAM,MAAA;AACX,UAAMC,SAASH,MAAMI,KAAKC,OAAO;MAACL,MAAMI,KAAKC;QAAQL,MAAMI,KAAKD;AAChE,UAAMG,UAAUH,OAAOI,OAAO,CAACC,OAAO,CAACT,KAAKU,SAASD,EAAAA,CAAAA;AACrD,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIb,MAAMI,KAAKU,SAASP,OAAO,CAACC,OAAO,CAACT,KAAKU,SAASD,EAAAA,CAAAA;SAASF;KAAQ,CAAA;AAEzGN,UAAMI,KAAKU,WAAWJ;AAEtB,QAAIV,MAAMI,KAAKC,QAAQ,CAACL,MAAMI,KAAKW,aAAa;AAC9Cf,YAAMI,KAAKC,OAAON,KAAK,CAAA;IACzB,OAAO;AACLC,YAAMI,KAAKD,SAASJ;IACtB;AAEA,QAAIC,MAAMI,KAAKY,cAAc,CAAChB,MAAMI,KAAKC,MAAM;AAC7CL,YAAMI,KAAKY,aAAa;IAC1B;AAEA,QAAIf,WAAW;AACb,YAAMgB,WAAWhB,UAAUiB;AAC3B,YAAM,CAACC,UAAAA,IAAcR,MAAMC,KAAKK,QAAAA;AAChC,YAAMG,sBAAsB,CAAC,CAACD,cAAcpB,KAAKU,SAASU,UAAAA;AAC1D,UAAI,CAACC,qBAAqB;AACxB,cAAMC,gBAAgBlB,OAAOmB,QAAQH,UAAAA;AAErC,cAAMI,QAAQF,kBAAkB,KAAK,IAAIA,iBAAiBtB,KAAKyB,SAASzB,KAAKyB,SAAS,IAAIH;AAC1F,eAAOtB,KAAKwB,KAAAA;MACd;IACF;EACF,CAAA;AACF;;;AC1CA,SAASE,eAAe;AAExB,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,kBAAkB;AAIpB,IAAMC,gBAAgB,CAACC,OAAAA;AAC5B,QAAM,EAAEC,MAAK,IAAKC,YAAAA;AAClB,QAAMC,OAAOC,QAAQH,OAAOD,EAAAA;AAC5B,QAAMK,aAAaF,OAAOF,MAAMK,MAAMH,MAAM;IAAEI,MAAMC;EAAqB,CAAA,IAAK,CAAA;AAC9E,SAAOC,QAAQ,MAAMJ,WAAWK,SAAS,CAACC,GAAGC,MAAMC,WAAWF,EAAEG,YAAYF,EAAEE,UAAU,CAAA,GAAI;IAACT;GAAW;AAC1G;;;ACiCO,IAAMU,sBAAsB,CACjCC,gBAAAA;AAEA,MAAI,CAACA,aAAa;AAChB,WAAO;MAAEC,oBAAoB;MAAGC,kBAAkB;IAAE;EACtD;AACA,MAAIF,gBAAgB,GAAG;AACrB,UAAMG,oBACJ;AACF,WAAO;MAAEF,oBAAoBE;MAAmBD,kBAAkBC;IAAkB;EACtF,OAAO;AACL,WAAO;MACLF,oBACE;MACFC,kBACE;IACJ;EACF;AACF;;;AChEA,SAASE,qBAAqB;AAEvB,IAAMC,iBAAiB,MAAA;AAC5B,QAAM,CAACC,WAAAA,IAAeC,cAAc,IAAA;AACpC,QAAM,CAACC,SAAAA,IAAaD,cAAc,IAAA;AAClC,SAAOC,YAAY,YAAYF,cAAc,WAAW;AAC1D;;;
|
|
6
|
-
"names": ["batch", "setActive", "next", "state", "attention", "batch", "active", "deck", "solo", "removed", "filter", "id", "includes", "closed", "Array", "from", "Set", "inactive", "initialized", "fullscreen", "attended", "current", "attendedId", "isAttendedAvailable", "attendedIndex", "indexOf", "index", "length", "useMemo", "useAppGraph", "useNode", "byPosition", "useCompanions", "id", "graph", "useAppGraph", "node", "useNode", "companions", "nodes", "type", "PLANK_COMPANION_TYPE", "useMemo", "toSorted", "a", "b", "byPosition", "properties", "calculateOverscroll", "planksCount", "paddingInlineStart", "paddingInlineEnd", "overscrollPadding", "useMediaQuery", "useBreakpoints", "isNotMobile", "useMediaQuery", "isDesktop", "layoutAppliesTopbar", "breakpoint", "document", "body", "getAttribute", "useMemo", "Capabilities", "useCapability", "useThemeContext", "useHoistStatusbar", "breakpoint", "enableStatusbar", "useCapability", "Capabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "safeAreaPadding", "useThemeContext", "useMemo", "bottom"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\n\nimport { type AttentionManager } from '@dxos/plugin-attention';\n\nimport { type DeckPluginState } from '../types';\n\nexport type SetActiveOptions = {\n next: string[];\n state: DeckPluginState;\n attention?: AttentionManager;\n};\n\nexport const setActive = ({ next, state, attention }: SetActiveOptions) => {\n return batch(() => {\n const active = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const removed = active.filter((id) => !next.includes(id));\n const closed = Array.from(new Set([...state.deck.inactive.filter((id) => !next.includes(id)), ...removed]));\n\n state.deck.inactive = closed;\n\n if (state.deck.solo || !state.deck.initialized) {\n state.deck.solo = next[0];\n } else {\n state.deck.active = next;\n }\n\n if (state.deck.fullscreen && !state.deck.solo) {\n state.deck.fullscreen = false;\n }\n\n if (attention) {\n const attended = attention.current;\n const [attendedId] = Array.from(attended);\n const isAttendedAvailable = !!attendedId && next.includes(attendedId);\n if (!isAttendedAvailable) {\n const attendedIndex = active.indexOf(attendedId);\n // If outside of bounds, focus on the first/last plank, otherwise focus on the new plank in the same position.\n const index = attendedIndex === -1 ? 0 : attendedIndex >= next.length ? next.length - 1 : attendedIndex;\n return next[index];\n }\n }\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { useNode } from '@dxos/plugin-graph';\nimport { byPosition } from '@dxos/util';\n\nimport { PLANK_COMPANION_TYPE } from '../types';\n\nexport const useCompanions = (id?: string) => {\n const { graph } = useAppGraph();\n const node = useNode(graph, id);\n const companions = node ? graph.nodes(node, { type: PLANK_COMPANION_TYPE }) : [];\n return useMemo(() => companions.toSorted((a, b) => byPosition(a.properties, b.properties)), [companions]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { CSSProperties } from 'react';\n\n/**\n * ┌────────────────────────────────────────────────────────────────────────────────────────────────────┐\n * | Overscroll Padding Calculation for Centering Planks on Screen. │\n * ├────────────────────────────────────────────────────────────────────────────────────────────────────┤\n * │ NOTE(Zan): I found the way you calculate the overscroll padding to center a plank on the screen │\n * │ at the edges of the scroll context a bit confusing, so I've diagrammed it here. │\n * │ │\n * │ Multiple Planks: │\n * │ ─────────────── │\n * | Use the following overscroll padding calculation centering the boundary planks on the SCREEN. │\n * │ │\n * │ Left Padding: Right Padding: │\n * │ ┌───┬────┬──────────────────┬──────┐ ┌──────┬──────────────────┬────┬───┐ │\n * │ │ │████│ Ideal │ │ │ │ Ideal │████│ │ │\n * │ │ S │█PL█│ first │ │ │ │ last │█PR█│ C │ │\n * │ │ │████│ plank │ │ │ │ plank │████│ │ │\n * │ └───┴────┴──────────────────┴──────┘ └──────┴──────────────────┴────┴───┘ │\n * │ <--------- screen width -----------> <---------- screen width ----------> │\n * │ │\n * │ PL = ((screen width - Plank Width) / 2) - S │\n * │ PR = ((screen width - Plank Width) / 2) - C │\n * │ │\n * │ S = Sidebar width C = Complementary sidebar width │\n * │ PL = Padding Left PR = Padding Right │\n * │ │\n * │ Single Plank: │\n * │ ───────────── │\n * │ For a single plank we use the following overscroll padding calculation to center the plank in │\n * │ the content area: │\n * │ │\n * │ ┌───┬───────────────────────┬───┬───────────────────────┬───┐ │\n * │ │ │███████████████████████│ │███████████████████████│ │ │\n * │ │ S │█████ Left Padding ████│ P │████ Right Padding ████│ C │ │\n * │ │ │███████████████████████│ │███████████████████████│ │ │\n * │ └───┴───────────────────────┴───┴───────────────────────┴───┘ │\n * │ <------------------------ screen width ---------------------> │\n * │ │\n * │ Left/Right Padding Width = (screen width - S - P - C) / 2 │\n * │ │\n * │ S = Sidebar width (may be 0) │\n * │ P = Plank width (centered) │\n * │ C = Complementary sidebar width (may be 0) │\n * └────────────────────────────────────────────────────────────────────────────────────────────────────┘\n */\nexport const calculateOverscroll = (\n planksCount: number,\n): Pick<CSSProperties, 'paddingInlineStart' | 'paddingInlineEnd'> | undefined => {\n if (!planksCount) {\n return { paddingInlineStart: 0, paddingInlineEnd: 0 };\n }\n if (planksCount === 1) {\n const overscrollPadding =\n 'max(0px, calc(((100dvw - var(--dx-main-sidebarWidth) - var(--dx-main-complementaryWidth) - (var(--dx-main-contentFirstWidth) + 1px)) / 2)))';\n return { paddingInlineStart: overscrollPadding, paddingInlineEnd: overscrollPadding };\n } else {\n return {\n paddingInlineStart:\n 'max(0px, calc(((100dvw - (var(--dx-main-contentFirstWidth) + 1px)) / 2) - var(--dx-main-sidebarWidth)))',\n paddingInlineEnd:\n 'max(0px, calc(((100dvw - (var(--dx-main-contentLastWidth) + 1px)) / 2) - var(--dx-main-complementaryWidth)))',\n };\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMediaQuery } from '@dxos/react-ui';\n\nexport const useBreakpoints = () => {\n const [isNotMobile] = useMediaQuery('md');\n const [isDesktop] = useMediaQuery('lg');\n return isDesktop ? 'desktop' : isNotMobile ? 'tablet' : 'mobile';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type LayoutMode } from '../types';\n\nexport const layoutAppliesTopbar = (breakpoint: string, layoutMode?: LayoutMode) => {\n return (\n document.body.getAttribute('data-platform') === 'win' &&\n breakpoint === 'desktop' &&\n layoutMode !== 'solo--fullscreen'\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { Capabilities, useCapability } from '@dxos/app-framework';\nimport { useThemeContext } from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../meta';\nimport type { DeckSettingsProps, LayoutMode } from '../types';\n\nexport const useHoistStatusbar = (breakpoint: string, layoutMode?: LayoutMode): boolean => {\n const enableStatusbar = useCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)!.value\n .enableStatusbar;\n const { safeAreaPadding } = useThemeContext();\n return useMemo(() => {\n return (\n breakpoint === 'desktop' &&\n layoutMode !== 'solo--fullscreen' &&\n !!enableStatusbar &&\n safeAreaPadding?.bottom === 0\n );\n }, [enableStatusbar, breakpoint, safeAreaPadding?.bottom, layoutMode]);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["batch", "setActive", "next", "state", "attention", "batch", "active", "deck", "solo", "removed", "filter", "id", "includes", "closed", "Array", "from", "Set", "inactive", "initialized", "fullscreen", "attended", "current", "attendedId", "isAttendedAvailable", "attendedIndex", "indexOf", "index", "length", "useMemo", "useAppGraph", "useNode", "byPosition", "useCompanions", "id", "graph", "useAppGraph", "node", "useNode", "companions", "nodes", "type", "PLANK_COMPANION_TYPE", "useMemo", "toSorted", "a", "b", "byPosition", "properties", "calculateOverscroll", "planksCount", "paddingInlineStart", "paddingInlineEnd", "overscrollPadding", "useMediaQuery", "useBreakpoints", "isNotMobile", "useMediaQuery", "isDesktop", "layoutAppliesTopbar", "breakpoint", "layoutMode", "document", "body", "getAttribute", "useMemo", "Capabilities", "useCapability", "useThemeContext", "useHoistStatusbar", "breakpoint", "layoutMode", "enableStatusbar", "useCapability", "Capabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "safeAreaPadding", "useThemeContext", "useMemo", "bottom"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// packages/plugins/plugin-deck/src/capabilities/index.ts
|
|
2
|
+
import { lazy } from "@dxos/app-framework";
|
|
3
|
+
var AppGraphBuilder = lazy(() => import("./app-graph-builder-VYZ4IWI3.mjs"));
|
|
4
|
+
var CheckAppScheme = lazy(() => import("./check-app-scheme-O7JPE4TM.mjs"));
|
|
5
|
+
var DeckSettings = lazy(() => import("./settings-C7LX2GXF.mjs"));
|
|
6
|
+
var DeckState = lazy(() => import("./state-AX74YEJD.mjs"));
|
|
7
|
+
var LayoutIntentResolver = lazy(() => import("./intent-resolver-NO6L67KF.mjs"));
|
|
8
|
+
var ReactRoot = lazy(() => import("./react-root-5RWCIUXV.mjs"));
|
|
9
|
+
var ReactSurface = lazy(() => import("./react-surface-DIDOPTH7.mjs"));
|
|
10
|
+
var Tools = lazy(() => import("./tools-7W7KZRAX.mjs"));
|
|
11
|
+
var UrlHandler = lazy(() => import("./url-handler-AF5SYROZ.mjs"));
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
AppGraphBuilder,
|
|
15
|
+
CheckAppScheme,
|
|
16
|
+
DeckSettings,
|
|
17
|
+
DeckState,
|
|
18
|
+
LayoutIntentResolver,
|
|
19
|
+
ReactRoot,
|
|
20
|
+
ReactSurface,
|
|
21
|
+
Tools,
|
|
22
|
+
UrlHandler
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=chunk-RKYIMUKW.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const CheckAppScheme = lazy(() => import('./check-app-scheme'));\nexport const
|
|
5
|
-
"mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,iCAAA,CAAA;AACzC,IAAME,
|
|
6
|
-
"names": ["lazy", "AppGraphBuilder", "lazy", "CheckAppScheme", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const CheckAppScheme = lazy(() => import('./check-app-scheme'));\nexport const DeckSettings = lazy(() => import('./settings'));\nexport const DeckState = lazy(() => import('./state'));\nexport const LayoutIntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Tools = lazy(() => import('./tools'));\nexport const UrlHandler = lazy(() => import('./url-handler'));\n\nexport * from './capabilities';\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,iCAAA,CAAA;AACzC,IAAME,eAAeF,KAAK,MAAM,OAAO,yBAAA,CAAA;AACvC,IAAMG,YAAYH,KAAK,MAAM,OAAO,sBAAA,CAAA;AACpC,IAAMI,uBAAuBJ,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC/C,IAAMK,YAAYL,KAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMM,eAAeN,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMO,QAAQP,KAAK,MAAM,OAAO,sBAAA,CAAA;AAChC,IAAMQ,aAAaR,KAAK,MAAM,OAAO,4BAAA,CAAA;",
|
|
6
|
+
"names": ["lazy", "AppGraphBuilder", "lazy", "CheckAppScheme", "DeckSettings", "DeckState", "LayoutIntentResolver", "ReactRoot", "ReactSurface", "Tools", "UrlHandler"]
|
|
7
7
|
}
|
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
ReactSurface,
|
|
9
9
|
Tools,
|
|
10
10
|
UrlHandler
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-RKYIMUKW.mjs";
|
|
12
12
|
import {
|
|
13
13
|
useCompanions
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-PGSJT5PG.mjs";
|
|
15
15
|
import {
|
|
16
16
|
DeckCapabilities
|
|
17
17
|
} from "./chunk-XMCG42ID.mjs";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-E7TOEOGO.mjs";
|
|
19
19
|
import {
|
|
20
20
|
DECK_PLUGIN,
|
|
21
21
|
meta
|
|
@@ -74,6 +74,8 @@ var translations_default = [
|
|
|
74
74
|
"increment end label": "Move to the right",
|
|
75
75
|
"show deck plank label": "Return to deck",
|
|
76
76
|
"show solo plank label": "Maximize",
|
|
77
|
+
"exit fullscreen label": "Exit fullscreen",
|
|
78
|
+
"show fullscreen plank label": "Fullscreen",
|
|
77
79
|
"close label": "Close",
|
|
78
80
|
"minify label": "Minify",
|
|
79
81
|
"open companion label": "Open companion",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/events.ts", "../../../src/DeckPlugin.ts", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { DECK_PLUGIN } from './meta';\n\nexport namespace DeckEvents {\n export const StateReady = Events.createStateEvent(`${DECK_PLUGIN}/state-ready`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { allOf, Capabilities, contributes, defineModule, definePlugin, Events, oneOf } from '@dxos/app-framework';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n LayoutIntentResolver,\n ReactRoot,\n ReactSurface,\n Tools,\n UrlHandler,\n} from './capabilities';\nimport { DeckEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\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 = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/check-app-scheme`,\n activatesOn: Events.SettingsReady,\n activate: CheckAppScheme,\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: DeckSettings,\n }),\n defineModule({\n id: `${meta.id}/module/layout`,\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: oneOf(Events.SetupSettings, Events.SetupAppGraph),\n activatesAfter: [Events.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...stackTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/layout-intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: LayoutIntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/tools`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: Tools,\n }),\n defineModule({\n id: `${meta.id}/module/url`,\n activatesOn: allOf(Events.DispatcherReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DECK_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DECK_PLUGIN]: {\n 'plugin name': 'Deck',\n 'main header label': 'Main header',\n 'open navigation sidebar label': 'Open sidebar',\n 'collapse navigation sidebar label': 'Minimize sidebar',\n 'open complementary sidebar label': 'Open context sidebar',\n 'close complementary sidebar label': 'Minimize context sidebar',\n 'sidebar title': 'Navigation sidebar',\n 'complementary sidebar title': 'Context sidebar',\n 'plugin error message': 'Content failed to render.',\n 'content fallback message': 'Unsupported',\n 'content fallback description':\n 'No plugin had a response for the address you navigated to. Double-check the URL, and ensure you’ve enabled a plugin that supports the object.',\n 'toggle fullscreen label': 'Toggle fullscreen',\n 'settings show hints label': 'Show hints',\n 'settings native redirect label': 'Enable native url redirect (experimental)',\n 'settings new plank position start label': 'Start',\n 'settings new plank position end label': 'End',\n 'select new plank positioning placeholder': 'Select new plank positioning',\n 'select new plank positioning label': 'New plank positioning',\n 'undo available label': 'Click to undo previous action.',\n 'undo action label': 'Undo',\n 'undo action alt': 'Undo previous action',\n 'undo close label': 'Dismiss',\n 'error fallback message': 'Unable to open this item',\n 'plank heading fallback label': 'Untitled',\n 'actions menu label': 'Options',\n 'settings deck label': 'Disable deck',\n 'reload required message': 'Reload required.',\n 'pending heading': 'Loading…',\n 'insert plank label': 'Open',\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'show deck plank label': 'Return to deck',\n 'show solo plank label': 'Maximize',\n 'close label': 'Close',\n 'minify label': 'Minify',\n 'open companion label': 'Open companion',\n 'close companion label': 'Close companion',\n 'settings overscroll label': 'Plank scrolling',\n 'select overscroll placeholder': 'Select plank scrolling behavior',\n 'settings overscroll centering label': 'Centering',\n 'settings overscroll none label': 'None',\n 'settings enable statusbar label': 'Show status bar',\n 'settings enable deck label': 'Enable Deck',\n 'close current label': 'Close current plank',\n 'close others label': 'Close other planks',\n 'close all label': 'Close all planks',\n 'companion plank heading fallback label': 'Related',\n },\n },\n },\n];\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAc;;UAINC,aAAAA;cACFC,aAAaC,OAAOC,iBAAiB,GAAGC,WAAAA,cAAyB;AAChF,GAFiBJ,eAAAA,aAAAA,CAAAA,EAAAA;;;ACJjB,SAASK,qBAAqB;AAE9B,SAASC,OAAOC,cAAcC,aAAaC,cAAcC,cAAcC,UAAAA,SAAQC,aAAa;AAC5F,SAASC,gBAAgBC,yBAAyB;;;ACDlD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,WAAAA,GAAc;QACb,eAAe;QACf,qBAAqB;QACrB,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,qCAAqC;QACrC,iBAAiB;QACjB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,gCACE;QACF,2BAA2B;QAC3B,6BAA6B;QAC7B,kCAAkC;QAClC,2CAA2C;QAC3C,yCAAyC;QACzC,4CAA4C;QAC5C,sCAAsC;QACtC,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,uBAAuB;QACvB,2BAA2B;QAC3B,mBAAmB;QACnB,sBAAsB;QACtB,gBAAgB;QAChB,mBAAmB;QACnB,iBAAiB;QACjB,yBAAyB;QACzB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,eAAe;QACf,gBAAgB;QAChB,wBAAwB;QACxB,yBAAyB;QACzB,6BAA6B;QAC7B,iCAAiC;QACjC,uCAAuC;QACvC,kCAAkC;QAClC,mCAAmC;QACnC,8BAA8B;QAC9B,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;QACnB,0CAA0C;MAC5C;IACF;EACF;;;;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { DECK_PLUGIN } from './meta';\n\nexport namespace DeckEvents {\n export const StateReady = Events.createStateEvent(`${DECK_PLUGIN}/state-ready`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { allOf, Capabilities, contributes, defineModule, definePlugin, Events, oneOf } from '@dxos/app-framework';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n LayoutIntentResolver,\n ReactRoot,\n ReactSurface,\n Tools,\n UrlHandler,\n} from './capabilities';\nimport { DeckEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\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 = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/check-app-scheme`,\n activatesOn: Events.SettingsReady,\n activate: CheckAppScheme,\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: DeckSettings,\n }),\n defineModule({\n id: `${meta.id}/module/layout`,\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: oneOf(Events.SetupSettings, Events.SetupAppGraph),\n activatesAfter: [Events.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...stackTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/layout-intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: LayoutIntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/tools`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: Tools,\n }),\n defineModule({\n id: `${meta.id}/module/url`,\n activatesOn: allOf(Events.DispatcherReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DECK_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DECK_PLUGIN]: {\n 'plugin name': 'Deck',\n 'main header label': 'Main header',\n 'open navigation sidebar label': 'Open sidebar',\n 'collapse navigation sidebar label': 'Minimize sidebar',\n 'open complementary sidebar label': 'Open context sidebar',\n 'close complementary sidebar label': 'Minimize context sidebar',\n 'sidebar title': 'Navigation sidebar',\n 'complementary sidebar title': 'Context sidebar',\n 'plugin error message': 'Content failed to render.',\n 'content fallback message': 'Unsupported',\n 'content fallback description':\n 'No plugin had a response for the address you navigated to. Double-check the URL, and ensure you’ve enabled a plugin that supports the object.',\n 'toggle fullscreen label': 'Toggle fullscreen',\n 'settings show hints label': 'Show hints',\n 'settings native redirect label': 'Enable native url redirect (experimental)',\n 'settings new plank position start label': 'Start',\n 'settings new plank position end label': 'End',\n 'select new plank positioning placeholder': 'Select new plank positioning',\n 'select new plank positioning label': 'New plank positioning',\n 'undo available label': 'Click to undo previous action.',\n 'undo action label': 'Undo',\n 'undo action alt': 'Undo previous action',\n 'undo close label': 'Dismiss',\n 'error fallback message': 'Unable to open this item',\n 'plank heading fallback label': 'Untitled',\n 'actions menu label': 'Options',\n 'settings deck label': 'Disable deck',\n 'reload required message': 'Reload required.',\n 'pending heading': 'Loading…',\n 'insert plank label': 'Open',\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'show deck plank label': 'Return to deck',\n 'show solo plank label': 'Maximize',\n 'exit fullscreen label': 'Exit fullscreen',\n 'show fullscreen plank label': 'Fullscreen',\n 'close label': 'Close',\n 'minify label': 'Minify',\n 'open companion label': 'Open companion',\n 'close companion label': 'Close companion',\n 'settings overscroll label': 'Plank scrolling',\n 'select overscroll placeholder': 'Select plank scrolling behavior',\n 'settings overscroll centering label': 'Centering',\n 'settings overscroll none label': 'None',\n 'settings enable statusbar label': 'Show status bar',\n 'settings enable deck label': 'Enable Deck',\n 'close current label': 'Close current plank',\n 'close others label': 'Close other planks',\n 'close all label': 'Close all planks',\n 'companion plank heading fallback label': 'Related',\n },\n },\n },\n];\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAc;;UAINC,aAAAA;cACFC,aAAaC,OAAOC,iBAAiB,GAAGC,WAAAA,cAAyB;AAChF,GAFiBJ,eAAAA,aAAAA,CAAAA,EAAAA;;;ACJjB,SAASK,qBAAqB;AAE9B,SAASC,OAAOC,cAAcC,aAAaC,cAAcC,cAAcC,UAAAA,SAAQC,aAAa;AAC5F,SAASC,gBAAgBC,yBAAyB;;;ACDlD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,WAAAA,GAAc;QACb,eAAe;QACf,qBAAqB;QACrB,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,qCAAqC;QACrC,iBAAiB;QACjB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,gCACE;QACF,2BAA2B;QAC3B,6BAA6B;QAC7B,kCAAkC;QAClC,2CAA2C;QAC3C,yCAAyC;QACzC,4CAA4C;QAC5C,sCAAsC;QACtC,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,uBAAuB;QACvB,2BAA2B;QAC3B,mBAAmB;QACnB,sBAAsB;QACtB,gBAAgB;QAChB,mBAAmB;QACnB,iBAAiB;QACjB,yBAAyB;QACzB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,+BAA+B;QAC/B,eAAe;QACf,gBAAgB;QAChB,wBAAwB;QACxB,yBAAyB;QACzB,6BAA6B;QAC7B,iCAAiC;QACjC,uCAAuC;QACvC,kCAAkC;QAClC,mCAAmC;QACnC,8BAA8B;QAC9B,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;QACnB,0CAA0C;MAC5C;IACF;EACF;;;;ADtCFC,cAAc,KAAA;AAEP,IAAMC,aAAa,MACxBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOC;IACpBC,UAAUC;EACZ,CAAA;EACAN,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOI;IACpBF,UAAUG;EACZ,CAAA;EACAR,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;;;;IAIdC,aAAaO,MAAMN,QAAOI,eAAeJ,QAAOO,aAAa;IAC7DC,gBAAgB;MAACR,QAAOS;MAAaC,WAAWC;;IAChDT,UAAUU;EACZ,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOa;IACpBX,UAAU,MAAMY,YAAYC,aAAaC,cAAc;SAAIC;SAAiBC;KAAkB;EAChG,CAAA;EACArB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOmB;IACpBjB,UAAUkB;EACZ,CAAA;EACAvB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOqB;IACpBnB,UAAUoB;EACZ,CAAA;EACAzB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOuB;IACpBrB,UAAUsB;EACZ,CAAA;EACA3B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOO;IACpBL,UAAUuB;EACZ,CAAA;EACA5B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAO0B;IACpBxB,UAAUyB;EACZ,CAAA;EACA9B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAa6B,MAAM5B,QAAO6B,iBAAiBnB,WAAWC,UAAU;IAChET,UAAU4B;EACZ,CAAA;CACD;",
|
|
6
6
|
"names": ["Events", "DeckEvents", "StateReady", "Events", "createStateEvent", "DECK_PLUGIN", "setAutoFreeze", "allOf", "Capabilities", "contributes", "defineModule", "definePlugin", "Events", "oneOf", "translations", "stackTranslations", "DECK_PLUGIN", "setAutoFreeze", "DeckPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SettingsReady", "activate", "CheckAppScheme", "SetupSettings", "DeckSettings", "oneOf", "SetupAppGraph", "activatesAfter", "LayoutReady", "DeckEvents", "StateReady", "DeckState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "stackTranslations", "Startup", "ReactRoot", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "LayoutIntentResolver", "AppGraphBuilder", "SetupArtifactDefinition", "Tools", "allOf", "DispatcherReady", "UrlHandler"]
|
|
7
7
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-FLOVGNYB.mjs";
|
|
7
7
|
import {
|
|
8
8
|
setActive
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PGSJT5PG.mjs";
|
|
10
10
|
import {
|
|
11
11
|
DeckCapabilities
|
|
12
12
|
} from "./chunk-XMCG42ID.mjs";
|
|
@@ -16,18 +16,18 @@ import {
|
|
|
16
16
|
defaultDeck,
|
|
17
17
|
getMode,
|
|
18
18
|
isLayoutMode
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-E7TOEOGO.mjs";
|
|
20
20
|
import {
|
|
21
21
|
DECK_PLUGIN
|
|
22
22
|
} from "./chunk-NSATFAEE.mjs";
|
|
23
23
|
|
|
24
24
|
// packages/plugins/plugin-deck/src/capabilities/intent-resolver.ts
|
|
25
25
|
import { batch } from "@preact/signals-core";
|
|
26
|
-
import { pipe } from "effect";
|
|
26
|
+
import { Schema, Effect, pipe } from "effect";
|
|
27
27
|
import { Capabilities, createResolver, contributes, IntentAction, LayoutAction, createIntent, chain } from "@dxos/app-framework";
|
|
28
|
-
import { getTypename
|
|
28
|
+
import { getTypename } from "@dxos/echo-schema";
|
|
29
29
|
import { invariant } from "@dxos/invariant";
|
|
30
|
-
import {
|
|
30
|
+
import { isLiveObject } from "@dxos/live-object";
|
|
31
31
|
import { log } from "@dxos/log";
|
|
32
32
|
import { AttentionCapabilities } from "@dxos/plugin-attention";
|
|
33
33
|
import { ObservabilityAction } from "@dxos/plugin-observability/types";
|
|
@@ -79,9 +79,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
79
79
|
}),
|
|
80
80
|
createResolver({
|
|
81
81
|
intent: LayoutAction.UpdateLayout,
|
|
82
|
-
// TODO(wittjosiah): This should be able to just be `
|
|
82
|
+
// TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateSidebar.fields.input)`
|
|
83
83
|
// but the filter is not being applied correctly.
|
|
84
|
-
filter: (data) =>
|
|
84
|
+
filter: (data) => Schema.is(LayoutAction.UpdateSidebar.fields.input)(data),
|
|
85
85
|
resolve: ({ options }) => {
|
|
86
86
|
const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
87
87
|
const next = options?.state ?? layout.sidebarState;
|
|
@@ -92,9 +92,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
92
92
|
}),
|
|
93
93
|
createResolver({
|
|
94
94
|
intent: LayoutAction.UpdateLayout,
|
|
95
|
-
// TODO(wittjosiah): This should be able to just be `
|
|
95
|
+
// TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateComplementary.fields.input)`
|
|
96
96
|
// but the filter is not being applied correctly.
|
|
97
|
-
filter: (data) =>
|
|
97
|
+
filter: (data) => Schema.is(LayoutAction.UpdateComplementary.fields.input)(data),
|
|
98
98
|
resolve: ({ subject, options }) => {
|
|
99
99
|
const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
100
100
|
if (layout.complementarySidebarPanel !== subject) {
|
|
@@ -108,9 +108,9 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
108
108
|
}),
|
|
109
109
|
createResolver({
|
|
110
110
|
intent: LayoutAction.UpdateLayout,
|
|
111
|
-
// TODO(wittjosiah): This should be able to just be `
|
|
111
|
+
// TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateDialog.fields.input)`
|
|
112
112
|
// but the filter is not being applied correctly.
|
|
113
|
-
filter: (data) =>
|
|
113
|
+
filter: (data) => Schema.is(LayoutAction.UpdateDialog.fields.input)(data),
|
|
114
114
|
resolve: ({ subject, options }) => {
|
|
115
115
|
const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
116
116
|
layout.dialogOpen = options.state ?? Boolean(subject);
|
|
@@ -124,25 +124,31 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
124
124
|
}),
|
|
125
125
|
createResolver({
|
|
126
126
|
intent: LayoutAction.UpdateLayout,
|
|
127
|
-
// TODO(wittjosiah): This should be able to just be `
|
|
127
|
+
// TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdatePopover.fields.input)`
|
|
128
128
|
// but the filter is not being applied correctly.
|
|
129
|
-
filter: (data) =>
|
|
129
|
+
filter: (data) => Schema.is(LayoutAction.UpdatePopover.fields.input)(data),
|
|
130
130
|
resolve: ({ subject, options }) => {
|
|
131
131
|
const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
132
132
|
layout.popoverOpen = options.state ?? Boolean(subject);
|
|
133
|
-
layout.popoverContent = subject ? {
|
|
133
|
+
layout.popoverContent = typeof subject === "string" ? {
|
|
134
134
|
component: subject,
|
|
135
135
|
props: options.props
|
|
136
|
+
} : subject ? {
|
|
137
|
+
subject
|
|
136
138
|
} : null;
|
|
137
|
-
layout.popoverAnchorId = options.anchorId;
|
|
138
139
|
layout.popoverSide = options.side;
|
|
140
|
+
if (options.variant === "virtual") {
|
|
141
|
+
layout.popoverAnchor = options.anchor;
|
|
142
|
+
} else {
|
|
143
|
+
layout.popoverAnchorId = options.anchorId;
|
|
144
|
+
}
|
|
139
145
|
}
|
|
140
146
|
}),
|
|
141
147
|
createResolver({
|
|
142
148
|
intent: LayoutAction.UpdateLayout,
|
|
143
|
-
// TODO(wittjosiah): This should be able to just be `
|
|
149
|
+
// TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.AddToast.fields.input)`
|
|
144
150
|
// but the filter is not being applied correctly.
|
|
145
|
-
filter: (data) =>
|
|
151
|
+
filter: (data) => Schema.is(LayoutAction.AddToast.fields.input)(data),
|
|
146
152
|
resolve: ({ subject }) => {
|
|
147
153
|
const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
148
154
|
layout.toasts.push(subject);
|
|
@@ -150,10 +156,10 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
150
156
|
}),
|
|
151
157
|
createResolver({
|
|
152
158
|
intent: LayoutAction.UpdateLayout,
|
|
153
|
-
// TODO(wittjosiah): This should be able to just be `
|
|
159
|
+
// TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.SetLayoutMode.fields.input)`
|
|
154
160
|
// but the filter is not being applied correctly.
|
|
155
161
|
filter: (data) => {
|
|
156
|
-
if (!
|
|
162
|
+
if (!Schema.is(LayoutAction.SetLayoutMode.fields.input)(data)) {
|
|
157
163
|
return false;
|
|
158
164
|
}
|
|
159
165
|
if ("mode" in data.options) {
|
|
@@ -186,10 +192,8 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
186
192
|
deck.solo = void 0;
|
|
187
193
|
deck.initialized = true;
|
|
188
194
|
}
|
|
189
|
-
if (mode === "fullscreen"
|
|
190
|
-
deck.fullscreen =
|
|
191
|
-
} else if (mode !== "fullscreen" && deck.fullscreen) {
|
|
192
|
-
deck.fullscreen = false;
|
|
195
|
+
if (mode === "solo--fullscreen") {
|
|
196
|
+
deck.fullscreen = !deck.fullscreen;
|
|
193
197
|
}
|
|
194
198
|
};
|
|
195
199
|
return batch(() => {
|
|
@@ -205,7 +209,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
205
209
|
} else {
|
|
206
210
|
log.warn("Invalid layout mode", options, {
|
|
207
211
|
F: __dxlog_file,
|
|
208
|
-
L:
|
|
212
|
+
L: 198,
|
|
209
213
|
S: void 0,
|
|
210
214
|
C: (f, a) => f(...a)
|
|
211
215
|
});
|
|
@@ -215,7 +219,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
215
219
|
}),
|
|
216
220
|
createResolver({
|
|
217
221
|
intent: LayoutAction.UpdateLayout,
|
|
218
|
-
filter: (data) =>
|
|
222
|
+
filter: (data) => Schema.is(LayoutAction.SwitchWorkspace.fields.input)(data),
|
|
219
223
|
resolve: ({ subject }) => {
|
|
220
224
|
const state = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
221
225
|
batch(() => {
|
|
@@ -244,7 +248,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
244
248
|
}),
|
|
245
249
|
createResolver({
|
|
246
250
|
intent: LayoutAction.UpdateLayout,
|
|
247
|
-
filter: (data) =>
|
|
251
|
+
filter: (data) => Schema.is(LayoutAction.RevertWorkspace.fields.input)(data),
|
|
248
252
|
resolve: () => {
|
|
249
253
|
const state = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
250
254
|
return {
|
|
@@ -259,12 +263,19 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
259
263
|
}),
|
|
260
264
|
createResolver({
|
|
261
265
|
intent: LayoutAction.UpdateLayout,
|
|
262
|
-
filter: (data) =>
|
|
263
|
-
resolve: ({ subject, options }) => {
|
|
266
|
+
filter: (data) => Schema.is(LayoutAction.Open.fields.input)(data),
|
|
267
|
+
resolve: ({ subject, options }) => Effect.gen(function* () {
|
|
264
268
|
const { graph } = context.requestCapability(Capabilities.AppGraph);
|
|
265
269
|
const state = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
266
270
|
const attention = context.requestCapability(AttentionCapabilities.Attention);
|
|
267
271
|
const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DECK_PLUGIN)?.value;
|
|
272
|
+
if (options?.workspace && state.activeDeck !== options?.workspace) {
|
|
273
|
+
const { dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
|
|
274
|
+
yield* dispatch(createIntent(LayoutAction.SwitchWorkspace, {
|
|
275
|
+
part: "workspace",
|
|
276
|
+
subject: options.workspace
|
|
277
|
+
}));
|
|
278
|
+
}
|
|
268
279
|
const previouslyOpenIds = new Set(state.deck.solo ? [
|
|
269
280
|
state.deck.solo
|
|
270
281
|
] : state.deck.active);
|
|
@@ -299,7 +310,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
299
310
|
}),
|
|
300
311
|
...newlyOpen.map((subjectId) => {
|
|
301
312
|
const active = graph?.findNode(subjectId)?.data;
|
|
302
|
-
const typename =
|
|
313
|
+
const typename = isLiveObject(active) ? getTypename(active) : void 0;
|
|
303
314
|
return createIntent(ObservabilityAction.SendEvent, {
|
|
304
315
|
name: "navigation.activate",
|
|
305
316
|
properties: {
|
|
@@ -310,11 +321,11 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
310
321
|
})
|
|
311
322
|
]
|
|
312
323
|
};
|
|
313
|
-
}
|
|
324
|
+
})
|
|
314
325
|
}),
|
|
315
326
|
createResolver({
|
|
316
327
|
intent: LayoutAction.UpdateLayout,
|
|
317
|
-
filter: (data) =>
|
|
328
|
+
filter: (data) => Schema.is(LayoutAction.Close.fields.input)(data),
|
|
318
329
|
resolve: ({ subject }) => {
|
|
319
330
|
const state = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
320
331
|
const attention = context.requestCapability(AttentionCapabilities.Attention);
|
|
@@ -346,7 +357,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
346
357
|
}),
|
|
347
358
|
createResolver({
|
|
348
359
|
intent: LayoutAction.UpdateLayout,
|
|
349
|
-
filter: (data) =>
|
|
360
|
+
filter: (data) => Schema.is(LayoutAction.Set.fields.input)(data),
|
|
350
361
|
resolve: ({ subject }) => {
|
|
351
362
|
const state = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
352
363
|
const attention = context.requestCapability(AttentionCapabilities.Attention);
|
|
@@ -367,7 +378,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
367
378
|
}),
|
|
368
379
|
createResolver({
|
|
369
380
|
intent: LayoutAction.UpdateLayout,
|
|
370
|
-
filter: (data) =>
|
|
381
|
+
filter: (data) => Schema.is(LayoutAction.ScrollIntoView.fields.input)(data),
|
|
371
382
|
resolve: ({ subject }) => {
|
|
372
383
|
const layout = context.requestCapability(DeckCapabilities.MutableDeckState);
|
|
373
384
|
layout.scrollIntoView = subject;
|
|
@@ -390,7 +401,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
390
401
|
} else {
|
|
391
402
|
invariant(data.companion !== data.primary, void 0, {
|
|
392
403
|
F: __dxlog_file,
|
|
393
|
-
L:
|
|
404
|
+
L: 363,
|
|
394
405
|
S: void 0,
|
|
395
406
|
A: [
|
|
396
407
|
"data.companion !== data.primary",
|
|
@@ -435,7 +446,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
435
446
|
};
|
|
436
447
|
}
|
|
437
448
|
}
|
|
438
|
-
if (adjustment.type
|
|
449
|
+
if (adjustment.type.startsWith("solo")) {
|
|
439
450
|
const entryId = adjustment.id;
|
|
440
451
|
if (!state.deck.solo) {
|
|
441
452
|
return {
|
|
@@ -444,28 +455,42 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
444
455
|
part: "mode",
|
|
445
456
|
subject: entryId,
|
|
446
457
|
options: {
|
|
447
|
-
mode:
|
|
458
|
+
mode: adjustment.type
|
|
448
459
|
}
|
|
449
460
|
})
|
|
450
461
|
]
|
|
451
462
|
};
|
|
452
463
|
} else {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
464
|
+
if (adjustment.type === "solo--fullscreen") {
|
|
465
|
+
return {
|
|
466
|
+
intents: [
|
|
467
|
+
createIntent(LayoutAction.SetLayoutMode, {
|
|
468
|
+
part: "mode",
|
|
469
|
+
subject: entryId,
|
|
470
|
+
options: {
|
|
471
|
+
mode: "solo--fullscreen"
|
|
472
|
+
}
|
|
473
|
+
})
|
|
474
|
+
]
|
|
475
|
+
};
|
|
476
|
+
} else if (adjustment.type === "solo") {
|
|
477
|
+
return {
|
|
478
|
+
intents: [
|
|
479
|
+
// NOTE: The order of these is important.
|
|
480
|
+
pipe(createIntent(LayoutAction.SetLayoutMode, {
|
|
481
|
+
part: "mode",
|
|
482
|
+
options: {
|
|
483
|
+
mode: "deck"
|
|
484
|
+
}
|
|
485
|
+
}), chain(LayoutAction.Open, {
|
|
486
|
+
part: "main",
|
|
487
|
+
subject: [
|
|
488
|
+
entryId
|
|
489
|
+
]
|
|
490
|
+
}))
|
|
491
|
+
]
|
|
492
|
+
};
|
|
493
|
+
}
|
|
469
494
|
}
|
|
470
495
|
}
|
|
471
496
|
});
|
|
@@ -475,4 +500,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
|
|
|
475
500
|
export {
|
|
476
501
|
intent_resolver_default as default
|
|
477
502
|
};
|
|
478
|
-
//# sourceMappingURL=intent-resolver-
|
|
503
|
+
//# sourceMappingURL=intent-resolver-NO6L67KF.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/intent-resolver.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\nimport { Schema, Effect, pipe } from 'effect';\n\nimport {\n Capabilities,\n createResolver,\n contributes,\n IntentAction,\n LayoutAction,\n type PluginsContext,\n createIntent,\n chain,\n} from '@dxos/app-framework';\nimport { getTypename } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { isLiveObject } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { type Node } from '@dxos/plugin-graph';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { byPosition, isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities } from './capabilities';\nimport { closeEntry, createEntryId, incrementPlank, openEntry } from '../layout';\nimport { DECK_PLUGIN } from '../meta';\nimport {\n DeckAction,\n type LayoutMode,\n type DeckSettingsProps,\n isLayoutMode,\n getMode,\n defaultDeck,\n PLANK_COMPANION_TYPE,\n} from '../types';\nimport { setActive } from '../util';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: IntentAction.ShowUndo,\n resolve: (data) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n const { undoPromise: undo } = context.requestCapability(Capabilities.IntentDispatcher);\n\n // TODO(wittjosiah): Support undoing further back than the last action.\n if (layout.currentUndoId) {\n layout.toasts = layout.toasts.filter((toast) => toast.id !== layout.currentUndoId);\n }\n layout.currentUndoId = `${IntentAction.ShowUndo._tag}-${Date.now()}`;\n layout.toasts = [\n ...layout.toasts,\n {\n id: layout.currentUndoId,\n title: data.message ?? ['undo available label', { ns: DECK_PLUGIN }],\n duration: 10_000,\n actionLabel: ['undo action label', { ns: DECK_PLUGIN }],\n actionAlt: ['undo action alt', { ns: DECK_PLUGIN }],\n closeLabel: ['undo close label', { ns: DECK_PLUGIN }],\n onAction: () => undo(),\n },\n ];\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateSidebar.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdateSidebar.fields.input> =>\n Schema.is(LayoutAction.UpdateSidebar.fields.input)(data),\n resolve: ({ options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n const next = options?.state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n layout.sidebarState = next;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateComplementary.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdateComplementary.fields.input> =>\n Schema.is(LayoutAction.UpdateComplementary.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n\n if (layout.complementarySidebarPanel !== subject) {\n layout.complementarySidebarPanel = subject;\n }\n\n const next = subject ? 'expanded' : options?.state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n layout.complementarySidebarState = next;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdateDialog.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdateDialog.fields.input> =>\n Schema.is(LayoutAction.UpdateDialog.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.dialogOpen = options.state ?? Boolean(subject);\n layout.dialogContent = subject ? { component: subject, props: options.props } : null;\n layout.dialogBlockAlign = options.blockAlign ?? 'center';\n layout.dialogType = options.type ?? 'default';\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.UpdatePopover.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.UpdatePopover.fields.input> =>\n Schema.is(LayoutAction.UpdatePopover.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.popoverOpen = options.state ?? Boolean(subject);\n layout.popoverContent =\n typeof subject === 'string' ? { component: subject, props: options.props } : subject ? { subject } : null;\n layout.popoverSide = options.side;\n if (options.variant === 'virtual') {\n layout.popoverAnchor = options.anchor;\n } else {\n layout.popoverAnchorId = options.anchorId;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.AddToast.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.AddToast.fields.input> =>\n Schema.is(LayoutAction.AddToast.fields.input)(data),\n resolve: ({ subject }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.toasts.push(subject);\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `Schema.is(LayoutAction.SetLayoutMode.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.SetLayoutMode.fields.input> => {\n if (!Schema.is(LayoutAction.SetLayoutMode.fields.input)(data)) {\n return false;\n }\n\n if ('mode' in data.options) {\n return isLayoutMode(data.options.mode);\n }\n\n return true;\n },\n resolve: ({ subject, options }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n\n const setMode = (mode: LayoutMode) => {\n const deck = state.deck;\n const current = deck.solo ? [deck.solo] : deck.active;\n // When un-soloing, the solo entry is added to the deck.\n const next = (\n mode !== 'deck' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]\n ).filter(isNonNullable);\n\n const removed = current.filter((id) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id) => !next.includes(id)), ...removed]));\n deck.inactive = closed;\n\n if (mode !== 'deck' && next[0]) {\n deck.solo = next[0];\n } else if (mode === 'deck' && deck.solo) {\n deck.solo = undefined;\n deck.initialized = true;\n }\n\n if (mode === 'solo--fullscreen') {\n deck.fullscreen = !deck.fullscreen;\n }\n };\n\n return batch(() => {\n if ('mode' in options) {\n const current = getMode(state.deck);\n if (current !== options.mode) {\n state.previousMode[state.activeDeck] = current;\n }\n setMode(options.mode as LayoutMode);\n } else if ('revert' in options) {\n const last = state.previousMode[state.activeDeck];\n setMode(last ?? 'solo');\n } else {\n log.warn('Invalid layout mode', options);\n }\n });\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.SwitchWorkspace.fields.input> =>\n Schema.is(LayoutAction.SwitchWorkspace.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n batch(() => {\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 if (!state.activeDeck.startsWith('!')) {\n state.previousDeck = state.activeDeck;\n }\n state.activeDeck = subject;\n if (!state.decks[subject]) {\n state.decks[subject] = { ...defaultDeck };\n }\n });\n\n const first = state.deck.solo ? state.deck.solo : state.deck.active[0];\n if (first) {\n return {\n intents: [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: first })],\n };\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.RevertWorkspace.fields.input> =>\n Schema.is(LayoutAction.RevertWorkspace.fields.input)(data),\n resolve: () => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n return {\n intents: [createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: state.previousDeck })],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Open.fields.input> =>\n Schema.is(LayoutAction.Open.fields.input)(data),\n resolve: ({ subject, options }) =>\n Effect.gen(function* () {\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;\n\n if (options?.workspace && state.activeDeck !== options?.workspace) {\n const { dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n yield* dispatch(\n createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: options.workspace }),\n );\n }\n\n const previouslyOpenIds = new Set<string>(state.deck.solo ? [state.deck.solo] : state.deck.active);\n batch(() => {\n const next = state.deck.solo\n ? (subject as string[]).map((id) => createEntryId(id, options?.variant))\n : subject.reduce(\n (acc, entryId) =>\n openEntry(acc, entryId, {\n key: options?.key,\n positioning: options?.positioning ?? settings?.newPlankPositioning,\n pivotId: options?.pivotId,\n variant: options?.variant,\n }),\n state.deck.active,\n );\n\n return setActive({ next, state, attention });\n });\n\n const ids = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const newlyOpen = ids.filter((i) => !previouslyOpenIds.has(i));\n\n return {\n intents: [\n ...(options?.scrollIntoView !== false\n ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: newlyOpen[0] ?? subject[0] })]\n : []),\n createIntent(LayoutAction.Expose, { part: 'navigation', subject: newlyOpen[0] ?? subject[0] }),\n ...newlyOpen.map((subjectId) => {\n const active = graph?.findNode(subjectId)?.data;\n const typename = isLiveObject(active) ? getTypename(active) : undefined;\n return createIntent(ObservabilityAction.SendEvent, {\n name: 'navigation.activate',\n properties: {\n subjectId,\n typename,\n },\n });\n }),\n ],\n };\n }),\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Close.fields.input> =>\n Schema.is(LayoutAction.Close.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const active = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const next = subject.reduce((acc, id) => closeEntry(acc, id), active);\n const toAttend = setActive({ next, state, attention });\n\n const clearCompanionIntents = subject\n .filter((id) => state.deck.activeCompanions && id in state.deck.activeCompanions)\n .map((primary) => createIntent(DeckAction.ChangeCompanion, { primary, companion: null }));\n\n return {\n intents: [\n ...clearCompanionIntents,\n ...(toAttend ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: toAttend })] : []),\n ],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Set.fields.input> =>\n Schema.is(LayoutAction.Set.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const toAttend = setActive({ next: subject as string[], state, attention });\n return {\n intents: toAttend ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: toAttend })] : [],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is Schema.Schema.Type<typeof LayoutAction.ScrollIntoView.fields.input> =>\n Schema.is(LayoutAction.ScrollIntoView.fields.input)(data),\n resolve: ({ subject }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.scrollIntoView = subject;\n },\n }),\n createResolver({\n intent: DeckAction.UpdatePlankSize,\n resolve: (data) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n state.deck.plankSizing[data.id] = data.size;\n },\n }),\n createResolver({\n intent: DeckAction.ChangeCompanion,\n resolve: (data) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n // TODO(thure): Reactivity only works when creating a lexically new `activeCompanions`… Are these not proxy objects?\n if (data.companion === null) {\n const { [data.primary]: _, ...nextActiveCompanions } = state.deck.activeCompanions ?? {};\n state.deck.activeCompanions = nextActiveCompanions;\n } else {\n invariant(data.companion !== data.primary);\n state.deck.activeCompanions = {\n ...state.deck.activeCompanions,\n [data.primary]: data.companion,\n };\n }\n },\n }),\n createResolver({\n intent: DeckAction.Adjust,\n resolve: (adjustment) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n return batch(() => {\n if (adjustment.type === 'increment-end' || adjustment.type === 'increment-start') {\n setActive({\n next: incrementPlank(state.deck.active, adjustment),\n state,\n attention,\n });\n }\n\n if (adjustment.type === 'companion') {\n const node = graph.findNode(adjustment.id);\n const [companion] = node\n ? graph\n .nodes(node, { filter: (n): n is Node<any> => n.type === PLANK_COMPANION_TYPE })\n .toSorted((a, b) => byPosition(a.properties, b.properties))\n : [];\n if (companion) {\n return {\n intents: [\n // TODO(wittjosiah): This should remember the previously selected companion.\n createIntent(DeckAction.ChangeCompanion, { primary: adjustment.id, companion: companion.id }),\n ],\n };\n }\n }\n\n if (adjustment.type.startsWith('solo')) {\n const entryId = adjustment.id;\n if (!state.deck.solo) {\n // Solo the entry.\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, {\n part: 'mode',\n subject: entryId,\n options: { mode: adjustment.type },\n }),\n ],\n };\n } else {\n if (adjustment.type === 'solo--fullscreen') {\n // Toggle fullscreen on the current entry.\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, {\n part: 'mode',\n subject: entryId,\n options: { mode: 'solo--fullscreen' },\n }),\n ],\n };\n } else if (adjustment.type === 'solo') {\n // Un-solo the current entry.\n return {\n intents: [\n // NOTE: The order of these is important.\n pipe(\n createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'deck' } }),\n chain(LayoutAction.Open, { part: 'main', subject: [entryId] }),\n ),\n ],\n };\n }\n }\n }\n });\n },\n }),\n ]);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["batch", "Schema", "Effect", "pipe", "Capabilities", "createResolver", "contributes", "IntentAction", "LayoutAction", "createIntent", "chain", "getTypename", "invariant", "isLiveObject", "log", "AttentionCapabilities", "ObservabilityAction", "byPosition", "isNonNullable", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "IntentAction", "ShowUndo", "resolve", "data", "layout", "requestCapability", "DeckCapabilities", "MutableDeckState", "undoPromise", "undo", "IntentDispatcher", "currentUndoId", "toasts", "filter", "toast", "id", "_tag", "Date", "now", "title", "message", "ns", "DECK_PLUGIN", "duration", "actionLabel", "actionAlt", "closeLabel", "onAction", "LayoutAction", "UpdateLayout", "Schema", "is", "UpdateSidebar", "fields", "input", "options", "next", "state", "sidebarState", "UpdateComplementary", "subject", "complementarySidebarPanel", "complementarySidebarState", "UpdateDialog", "dialogOpen", "Boolean", "dialogContent", "component", "props", "dialogBlockAlign", "blockAlign", "dialogType", "type", "UpdatePopover", "popoverOpen", "popoverContent", "popoverSide", "side", "variant", "popoverAnchor", "anchor", "popoverAnchorId", "anchorId", "AddToast", "push", "SetLayoutMode", "isLayoutMode", "mode", "setMode", "deck", "current", "solo", "active", "isNonNullable", "removed", "includes", "closed", "Array", "from", "Set", "inactive", "undefined", "initialized", "fullscreen", "batch", "getMode", "previousMode", "activeDeck", "last", "log", "warn", "SwitchWorkspace", "startsWith", "previousDeck", "decks", "defaultDeck", "first", "intents", "createIntent", "ScrollIntoView", "part", "RevertWorkspace", "Open", "Effect", "gen", "graph", "AppGraph", "attention", "AttentionCapabilities", "Attention", "settings", "requestCapabilities", "SettingsStore", "getStore", "value", "workspace", "dispatch", "previouslyOpenIds", "map", "createEntryId", "reduce", "acc", "entryId", "openEntry", "key", "positioning", "newPlankPositioning", "pivotId", "setActive", "ids", "newlyOpen", "i", "has", "scrollIntoView", "Expose", "subjectId", "findNode", "typename", "isLiveObject", "getTypename", "ObservabilityAction", "SendEvent", "name", "properties", "Close", "closeEntry", "toAttend", "clearCompanionIntents", "activeCompanions", "primary", "DeckAction", "ChangeCompanion", "companion", "UpdatePlankSize", "plankSizing", "size", "_", "nextActiveCompanions", "invariant", "Adjust", "adjustment", "incrementPlank", "node", "nodes", "n", "PLANK_COMPANION_TYPE", "toSorted", "a", "b", "byPosition", "pipe", "chain"]
|
|
7
|
+
}
|