@dxos/plugin-deck 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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/PLUGIN.mdl +3 -1
- package/dist/lib/neutral/{DeckLayout-VX2BP4Q2.mjs → DeckLayout-B3RUUV5P.mjs} +4 -3
- package/dist/lib/neutral/DeckLayout-B3RUUV5P.mjs.map +7 -0
- package/dist/lib/neutral/DeckPlugin.mjs +2 -6
- package/dist/lib/neutral/DeckPlugin.mjs.map +3 -3
- package/dist/lib/neutral/DeckSettings-Z7GMB7XJ.mjs +32 -0
- package/dist/lib/neutral/DeckSettings-Z7GMB7XJ.mjs.map +7 -0
- package/dist/lib/neutral/{add-toast-APKTCLIA.mjs → add-toast-BHNEH5UY.mjs} +2 -2
- package/dist/lib/neutral/{adjust-7CZI4GK3.mjs → adjust-MJB6UMRQ.mjs} +16 -10
- package/dist/lib/neutral/adjust-MJB6UMRQ.mjs.map +7 -0
- package/dist/lib/neutral/{app-graph-builder-6HTXRTU2.mjs → app-graph-builder-2F7P4IFQ.mjs} +4 -3
- package/dist/lib/neutral/app-graph-builder-2F7P4IFQ.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +5 -5
- package/dist/lib/neutral/chunk-FKGYHBUB.mjs +8 -0
- package/dist/lib/neutral/{chunk-CL7JIOI5.mjs → chunk-ICOJ4GMB.mjs} +10 -6
- package/dist/lib/neutral/chunk-ICOJ4GMB.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-NGX6RXNV.mjs → chunk-PP32NEVY.mjs} +2 -2
- package/dist/lib/neutral/chunk-PP32NEVY.mjs.map +7 -0
- package/dist/lib/neutral/chunk-SONATB35.mjs +20 -0
- package/dist/lib/neutral/chunk-SONATB35.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Z2B5RSVI.mjs +1096 -0
- package/dist/lib/neutral/chunk-Z2B5RSVI.mjs.map +7 -0
- package/dist/lib/neutral/{close-KJUCFIJ5.mjs → close-2YGB5IIP.mjs} +4 -3
- package/dist/lib/neutral/{close-KJUCFIJ5.mjs.map → close-2YGB5IIP.mjs.map} +1 -1
- package/dist/lib/neutral/components/index.mjs +201 -16
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/containers/index.mjs +6 -11
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/hooks/index.mjs +101 -17
- package/dist/lib/neutral/hooks/index.mjs.map +4 -4
- package/dist/lib/neutral/index.mjs +7 -1
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/{notification-tracker-CUDFRDCF.mjs → notification-tracker-Y5CRTWJM.mjs} +4 -2
- package/dist/lib/neutral/notification-tracker-Y5CRTWJM.mjs.map +7 -0
- package/dist/lib/neutral/{open-VU7YS3HB.mjs → open-P6XQ56M7.mjs} +4 -3
- package/dist/lib/neutral/{open-VU7YS3HB.mjs.map → open-P6XQ56M7.mjs.map} +1 -1
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +1 -1
- package/dist/lib/neutral/{react-surface-O4POQWYL.mjs → react-surface-H63FXUK3.mjs} +2 -2
- package/dist/lib/neutral/{react-surface-O4POQWYL.mjs.map → react-surface-H63FXUK3.mjs.map} +1 -1
- package/dist/lib/neutral/{revert-workspace-24TKG3I7.mjs → revert-workspace-RXWP2TEE.mjs} +2 -2
- package/dist/lib/neutral/{scroll-into-view-3VXT6TWC.mjs → scroll-into-view-HFV5EGYZ.mjs} +2 -2
- package/dist/lib/neutral/{set-RFOLTI57.mjs → set-HOOVB7E4.mjs} +4 -3
- package/dist/lib/neutral/{set-RFOLTI57.mjs.map → set-HOOVB7E4.mjs.map} +1 -1
- package/dist/lib/neutral/{set-layout-mode-AZ73W52Z.mjs → set-layout-mode-XAGSZZGB.mjs} +2 -2
- package/dist/lib/neutral/{state-D3YXB5NP.mjs → state-F4X5GPGZ.mjs} +3 -2
- package/dist/lib/neutral/{state-D3YXB5NP.mjs.map → state-F4X5GPGZ.mjs.map} +1 -1
- package/dist/lib/neutral/{switch-workspace-TBPT23CZ.mjs → switch-workspace-PA7N6EUX.mjs} +2 -2
- package/dist/lib/neutral/translations.mjs +2 -2
- package/dist/lib/neutral/translations.mjs.map +2 -2
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/lib/neutral/{update-companion-5LCY6QME.mjs → update-companion-6A2SKQAI.mjs} +14 -6
- package/dist/lib/neutral/update-companion-6A2SKQAI.mjs.map +7 -0
- package/dist/lib/neutral/{update-complementary-HZ7QXZYE.mjs → update-complementary-K55I5EV5.mjs} +2 -2
- package/dist/lib/neutral/{update-dialog-A7W3R5EI.mjs → update-dialog-Z3GEXMVV.mjs} +2 -2
- package/dist/lib/neutral/{update-plank-size-XHTYBLSD.mjs → update-plank-size-BTESVV7N.mjs} +2 -2
- package/dist/lib/neutral/{update-popover-RDIHG73B.mjs → update-popover-QEVDSZSH.mjs} +2 -2
- package/dist/lib/neutral/{update-sidebar-GEI7USA5.mjs → update-sidebar-VSRCN47U.mjs} +2 -2
- package/dist/lib/neutral/{url-handler-PUS4X33T.mjs → url-handler-ERZXXEYR.mjs} +3 -2
- package/dist/lib/neutral/{url-handler-PUS4X33T.mjs.map → url-handler-ERZXXEYR.mjs.map} +1 -1
- package/dist/types/src/DeckPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/notification-tracker.d.ts +1 -1
- package/dist/types/src/capabilities/notification-tracker.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +1 -5
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -3
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -187
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/tools.d.ts +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts +1 -1
- package/dist/types/src/components/Companion/Companion.d.ts +17 -0
- package/dist/types/src/components/Companion/Companion.d.ts.map +1 -0
- package/dist/types/src/components/Companion/index.d.ts +2 -0
- package/dist/types/src/components/Companion/index.d.ts.map +1 -0
- package/dist/types/src/components/Matrix/Matrix.d.ts +1 -1
- package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -1
- package/dist/types/src/components/Matrix/Matrix.stories.d.ts +2 -2
- package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -1
- package/dist/types/src/components/Matrix/index.d.ts +1 -1
- package/dist/types/src/components/Matrix/index.d.ts.map +1 -1
- package/dist/types/src/components/Pane/Pane.d.ts +45 -0
- package/dist/types/src/components/Pane/Pane.d.ts.map +1 -0
- package/dist/types/src/components/Pane/Pane.stories.d.ts +7 -0
- package/dist/types/src/components/Pane/Pane.stories.d.ts.map +1 -0
- package/dist/types/src/components/Pane/index.d.ts +2 -0
- package/dist/types/src/components/Pane/index.d.ts.map +1 -0
- package/dist/types/src/components/Plank/Plank.d.ts +74 -0
- package/dist/types/src/components/Plank/Plank.d.ts.map +1 -0
- package/dist/types/src/components/Plank/Plank.stories.d.ts +6 -0
- package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -0
- package/dist/types/src/components/Plank/index.d.ts +2 -0
- package/dist/types/src/components/Plank/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +3 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Deck.d.ts +1 -1
- package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -1
- package/dist/types/src/containers/Deck/Deck.stories.d.ts +2 -2
- package/dist/types/src/containers/Deck/DeckPlank.d.ts +21 -0
- package/dist/types/src/containers/Deck/DeckPlank.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/DeckViewport.d.ts +3 -1
- package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -1
- package/dist/types/src/containers/{Plank → Deck}/PlankControls.d.ts +3 -10
- package/dist/types/src/containers/Deck/PlankControls.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/PlankFallback.d.ts +6 -0
- package/dist/types/src/containers/Deck/PlankFallback.d.ts.map +1 -0
- package/dist/types/src/containers/Deck/useDeckPlank.d.ts +49 -0
- package/dist/types/src/containers/Deck/useDeckPlank.d.ts.map +1 -0
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +2 -2
- package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/DeckSettings/DeckSettings.d.ts +1 -1
- package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/DeckSettings/DeckSettings.stories.d.ts +2 -2
- package/dist/types/src/{components → containers}/DeckSettings/DeckSettings.stories.d.ts.map +1 -1
- package/dist/types/src/containers/DeckSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useCompanionSplit.d.ts +28 -0
- package/dist/types/src/hooks/useCompanionSplit.d.ts.map +1 -0
- package/dist/types/src/hooks/useCompanions.d.ts +11 -7
- package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckCompanions.d.ts +2 -2
- package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDeckState.d.ts +1 -1
- package/dist/types/src/hooks/useDeckState.d.ts.map +1 -1
- package/dist/types/src/hooks/useSelectedCompanionVariant.d.ts +6 -0
- package/dist/types/src/hooks/useSelectedCompanionVariant.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/adjust.d.ts.map +1 -1
- package/dist/types/src/operations/update-companion.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/DeckCapabilities.d.ts +2 -2
- package/dist/types/src/types/DeckCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/DeckOperation.d.ts +2 -2
- package/dist/types/src/types/DeckOperation.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +7 -7
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/companion-view-state.d.ts +16 -0
- package/dist/types/src/util/companion-view-state.d.ts.map +1 -0
- package/dist/types/src/util/index.d.ts +1 -0
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/plank-url-params.d.ts +2 -0
- package/dist/types/src/util/plank-url-params.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +49 -47
- package/src/DeckPlugin.ts +1 -2
- package/src/capabilities/app-graph-builder.ts +3 -2
- package/src/capabilities/notification-tracker.ts +3 -1
- package/src/capabilities/react-surface.tsx +1 -1
- package/src/components/Companion/Companion.tsx +91 -0
- package/src/components/Companion/index.ts +5 -0
- package/src/components/Matrix/Matrix.stories.tsx +13 -26
- package/src/components/Matrix/Matrix.tsx +3 -3
- package/src/components/Matrix/SPEC.md +1 -1
- package/src/components/Matrix/index.ts +1 -1
- package/src/components/Pane/Pane.stories.tsx +92 -0
- package/src/components/Pane/Pane.tsx +178 -0
- package/src/components/Pane/index.ts +5 -0
- package/src/components/Plank/Plank.stories.tsx +103 -0
- package/src/components/Plank/Plank.tsx +149 -0
- package/src/components/Plank/index.ts +5 -0
- package/src/components/index.ts +3 -4
- package/src/containers/Deck/Deck.tsx +3 -3
- package/src/containers/Deck/DeckPlank.tsx +187 -0
- package/src/containers/Deck/DeckViewport.tsx +116 -243
- package/src/containers/{Plank → Deck}/PlankControls.tsx +19 -17
- package/src/containers/Deck/PlankFallback.tsx +42 -0
- package/src/containers/Deck/useDeckPlank.ts +219 -0
- package/src/containers/DeckLayout/DeckLayout.stories.tsx +38 -51
- package/src/containers/DeckLayout/Dialog.tsx +1 -1
- package/src/{components → containers}/DeckSettings/DeckSettings.stories.tsx +1 -1
- package/src/containers/DeckSettings/DeckSettings.tsx +42 -0
- package/src/containers/Sidebar/ComplementarySidebar.tsx +2 -2
- package/src/containers/index.ts +1 -1
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useCompanionSplit.ts +78 -0
- package/src/hooks/useCompanions.ts +39 -7
- package/src/hooks/useDeckCompanions.ts +3 -3
- package/src/hooks/useDeckState.ts +1 -1
- package/src/hooks/useSelectedCompanionVariant.ts +14 -0
- package/src/index.ts +7 -0
- package/src/operations/adjust.ts +23 -12
- package/src/operations/update-companion.ts +10 -6
- package/src/translations.ts +2 -2
- package/src/types/DeckCapabilities.ts +1 -1
- package/src/types/DeckOperation.ts +2 -1
- package/src/types/schema.ts +5 -4
- package/src/util/companion-view-state.ts +28 -0
- package/src/util/index.ts +1 -0
- package/src/util/plank-url-params.test.ts +5 -0
- package/src/util/plank-url-params.ts +3 -1
- package/src/util/sanitize-persisted-state.test.ts +1 -1
- package/src/util/set-active.test.ts +1 -1
- package/dist/lib/neutral/DeckLayout-VX2BP4Q2.mjs.map +0 -7
- package/dist/lib/neutral/DeckSettings-CQQZJ2YS.mjs +0 -27
- package/dist/lib/neutral/DeckSettings-CQQZJ2YS.mjs.map +0 -7
- package/dist/lib/neutral/adjust-7CZI4GK3.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-6HTXRTU2.mjs.map +0 -7
- package/dist/lib/neutral/chunk-CL7JIOI5.mjs.map +0 -7
- package/dist/lib/neutral/chunk-DNG3L5QN.mjs +0 -1304
- package/dist/lib/neutral/chunk-DNG3L5QN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-NGX6RXNV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-UZLAR4DR.mjs +0 -8
- package/dist/lib/neutral/notification-tracker-CUDFRDCF.mjs.map +0 -7
- package/dist/lib/neutral/update-companion-5LCY6QME.mjs.map +0 -7
- package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +0 -1
- package/dist/types/src/components/DeckSettings/index.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/Plank.d.ts +0 -17
- package/dist/types/src/containers/Plank/Plank.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/Plank.stories.d.ts +0 -67
- package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankComponent.d.ts +0 -17
- package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankContent.d.ts +0 -10
- package/dist/types/src/containers/Plank/PlankContent.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankControls.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankError.d.ts +0 -15
- package/dist/types/src/containers/Plank/PlankError.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankHeading.d.ts +0 -22
- package/dist/types/src/containers/Plank/PlankHeading.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankLoading.d.ts +0 -3
- package/dist/types/src/containers/Plank/PlankLoading.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/PlankRoot.d.ts +0 -37
- package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +0 -1
- package/dist/types/src/containers/Plank/index.d.ts +0 -4
- package/dist/types/src/containers/Plank/index.d.ts.map +0 -1
- package/src/components/DeckSettings/DeckSettings.tsx +0 -34
- package/src/containers/Plank/Plank.stories.tsx +0 -108
- package/src/containers/Plank/Plank.tsx +0 -22
- package/src/containers/Plank/PlankComponent.tsx +0 -223
- package/src/containers/Plank/PlankContent.tsx +0 -45
- package/src/containers/Plank/PlankError.tsx +0 -82
- package/src/containers/Plank/PlankHeading.tsx +0 -236
- package/src/containers/Plank/PlankLoading.tsx +0 -10
- package/src/containers/Plank/PlankRoot.tsx +0 -49
- package/src/containers/Plank/index.ts +0 -7
- /package/dist/lib/neutral/{add-toast-APKTCLIA.mjs.map → add-toast-BHNEH5UY.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-UZLAR4DR.mjs.map → chunk-FKGYHBUB.mjs.map} +0 -0
- /package/dist/lib/neutral/{revert-workspace-24TKG3I7.mjs.map → revert-workspace-RXWP2TEE.mjs.map} +0 -0
- /package/dist/lib/neutral/{scroll-into-view-3VXT6TWC.mjs.map → scroll-into-view-HFV5EGYZ.mjs.map} +0 -0
- /package/dist/lib/neutral/{set-layout-mode-AZ73W52Z.mjs.map → set-layout-mode-XAGSZZGB.mjs.map} +0 -0
- /package/dist/lib/neutral/{switch-workspace-TBPT23CZ.mjs.map → switch-workspace-PA7N6EUX.mjs.map} +0 -0
- /package/dist/lib/neutral/{update-complementary-HZ7QXZYE.mjs.map → update-complementary-K55I5EV5.mjs.map} +0 -0
- /package/dist/lib/neutral/{update-dialog-A7W3R5EI.mjs.map → update-dialog-Z3GEXMVV.mjs.map} +0 -0
- /package/dist/lib/neutral/{update-plank-size-XHTYBLSD.mjs.map → update-plank-size-BTESVV7N.mjs.map} +0 -0
- /package/dist/lib/neutral/{update-popover-RDIHG73B.mjs.map → update-popover-QEVDSZSH.mjs.map} +0 -0
- /package/dist/lib/neutral/{update-sidebar-GEI7USA5.mjs.map → update-sidebar-VSRCN47U.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/DeckSettings/index.d.ts +0 -0
- /package/src/{components → containers}/DeckSettings/index.ts +0 -0
package/dist/lib/neutral/{notification-tracker-CUDFRDCF.mjs → notification-tracker-Y5CRTWJM.mjs}
RENAMED
|
@@ -3,10 +3,12 @@ import "./chunk-J5LGTIGS.mjs";
|
|
|
3
3
|
// src/capabilities/notification-tracker.ts
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
import * as Fiber from "effect/Fiber";
|
|
6
|
+
import * as Option from "effect/Option";
|
|
6
7
|
import * as Stream from "effect/Stream";
|
|
7
8
|
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
8
9
|
import { SettingsOperation } from "@dxos/app-toolkit";
|
|
9
10
|
import { Process } from "@dxos/compute";
|
|
11
|
+
import { Annotation } from "@dxos/echo";
|
|
10
12
|
import { meta } from "#meta";
|
|
11
13
|
import { DeckCapabilities } from "#types";
|
|
12
14
|
var NOTIFY_TOAST_DURATION = 5e3;
|
|
@@ -39,7 +41,7 @@ var notification_tracker_default = Capability.makeModule(Effect.fnUntraced(funct
|
|
|
39
41
|
if (previous === process.state) {
|
|
40
42
|
continue;
|
|
41
43
|
}
|
|
42
|
-
const notify = process.params.
|
|
44
|
+
const notify = Option.getOrNull(Annotation.getDictionary(process.params.annotations, Process.NotifyAnnotation));
|
|
43
45
|
if (!notify) {
|
|
44
46
|
continue;
|
|
45
47
|
}
|
|
@@ -179,4 +181,4 @@ var notification_tracker_default = Capability.makeModule(Effect.fnUntraced(funct
|
|
|
179
181
|
export {
|
|
180
182
|
notification_tracker_default as default
|
|
181
183
|
};
|
|
182
|
-
//# sourceMappingURL=notification-tracker-
|
|
184
|
+
//# sourceMappingURL=notification-tracker-Y5CRTWJM.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/notification-tracker.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Option from 'effect/Option';\nimport * as Stream from 'effect/Stream';\n\nimport { Capabilities, Capability, type PluginManager } from '@dxos/app-framework';\nimport { type LayoutOperation, SettingsOperation } from '@dxos/app-toolkit';\nimport { Process } from '@dxos/compute';\nimport { Annotation } from '@dxos/echo';\n\nimport { meta } from '#meta';\nimport { DeckCapabilities } from '#types';\n\nconst NOTIFY_TOAST_DURATION = 5_000;\nconst ERROR_TOAST_DURATION = 10_000;\nconst UNDO_TOAST_DURATION = 10_000;\n\n/**\n * The single producer of toasts driven by operation invocations:\n * - Per-invoke notifications ride the process monitor: each invocation spawns a process carrying the\n * caller's `notify` config on its params; this tracker watches process state transitions and toasts\n * on start / success / failure.\n * - Undo toasts come from the history tracker's `undoable` stream (it owns the undo registry lookup);\n * the toast action triggers `historyTracker.undoPromise()`.\n */\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const ephemeralAtom = yield* Capability.get(DeckCapabilities.EphemeralState);\n const monitor = yield* Capability.get(Capabilities.ProcessMonitor);\n const manager = yield* Capability.get(Capabilities.PluginManager);\n const invoker = yield* Capability.get(Capabilities.OperationInvoker);\n\n const addToast = (toast: LayoutOperation.Toast) => {\n const state = registry.get(ephemeralAtom);\n registry.set(ephemeralAtom, { ...state, toasts: [...state.toasts, toast] });\n };\n\n //\n // Notifications — driven by the process monitor.\n //\n\n // Tracks the last-seen state per process so we only toast on transitions.\n const lastState = new Map<Process.ID, Process.State>();\n\n const handleProcesses = (processes: readonly Process.Info[]) => {\n const seen = new Set<Process.ID>();\n for (const process of processes) {\n seen.add(process.pid);\n const previous = lastState.get(process.pid);\n lastState.set(process.pid, process.state);\n if (previous === process.state) {\n continue;\n }\n\n const notify = Option.getOrNull(Annotation.getDictionary(process.params.annotations, Process.NotifyAnnotation));\n if (!notify) {\n continue;\n }\n\n // Transition into RUNNING (the first snapshot may be a pre-RUNNING state like IDLE/HYBERNATING).\n if (previous !== Process.State.RUNNING && process.state === Process.State.RUNNING && notify.start) {\n addToast({ id: `notify-start-${process.pid}`, title: notify.start, duration: NOTIFY_TOAST_DURATION });\n } else if (process.state === Process.State.SUCCEEDED && notify.success) {\n addToast({ id: `notify-success-${process.pid}`, title: notify.success, duration: NOTIFY_TOAST_DURATION });\n } else if (process.state === Process.State.FAILED && notify.error) {\n addToast({\n id: `notify-error-${process.pid}`,\n title: notify.error,\n ...(process.error ? { description: process.error } : {}),\n icon: 'ph--warning--regular',\n duration: ERROR_TOAST_DURATION,\n });\n }\n }\n\n // Drop bookkeeping for processes that have left the tree.\n for (const pid of lastState.keys()) {\n if (!seen.has(pid)) {\n lastState.delete(pid);\n }\n }\n };\n\n const unsubscribeMonitor = registry.subscribe(monitor.processTreeAtom, handleProcesses);\n\n //\n // Plugin failures — show one toast when any plugin fails to activate, with a link to the registry.\n //\n\n let hasShownFailureToast = false;\n\n const handleFailures = (failures: readonly PluginManager.PluginFailure[]) => {\n if (failures.length === 0) {\n hasShownFailureToast = false;\n return;\n }\n if (hasShownFailureToast) {\n return;\n }\n hasShownFailureToast = true;\n // Replace any stale plugin-failure toast so at most one is ever visible.\n const toast: LayoutOperation.Toast = {\n id: 'plugin-failure',\n title: ['plugin-failure.title', { ns: meta.profile.key }],\n description: ['plugin-failure.description', { ns: meta.profile.key }],\n icon: 'ph--warning--regular',\n duration: ERROR_TOAST_DURATION,\n actionLabel: ['plugin-failure-action.label', { ns: meta.profile.key }],\n actionAlt: ['plugin-failure-action.alt', { ns: meta.profile.key }],\n onAction: () => void invoker.invokePromise(SettingsOperation.OpenPluginRegistry),\n };\n const state = registry.get(ephemeralAtom);\n registry.set(ephemeralAtom, {\n ...state,\n toasts: [...state.toasts.filter((t) => t.id !== 'plugin-failure'), toast],\n });\n };\n\n const unsubscribeFailures = registry.subscribe(manager.failed, handleFailures);\n\n //\n // Undo — driven by the history tracker's `undoable` stream (it owns the registry lookup).\n //\n\n const showUndoToast = (message: LayoutOperation.Toast['title'], onUndo: () => void) => {\n const undoId = `notify-undo-${crypto.randomUUID()}`;\n const state = registry.get(ephemeralAtom);\n // Replace the previous undo toast (only the most recent action can be undone).\n const toasts = state.currentUndoId\n ? state.toasts.filter((toast) => toast.id !== state.currentUndoId)\n : state.toasts;\n const toast: LayoutOperation.Toast = {\n id: undoId,\n title: message ?? ['undo-available.label', { ns: meta.profile.key }],\n duration: UNDO_TOAST_DURATION,\n actionLabel: ['undo-action.label', { ns: meta.profile.key }],\n actionAlt: ['undo-action.alt', { ns: meta.profile.key }],\n closeLabel: ['undo-close.label', { ns: meta.profile.key }],\n onAction: onUndo,\n };\n registry.set(ephemeralAtom, { ...state, currentUndoId: undoId, toasts: [...toasts, toast] });\n };\n\n // The history tracker is contributed on ProcessManagerReady, possibly after this module activates;\n // `waitFor` resolves it once available, then we observe its undoable stream.\n const undoFiber = Effect.runFork(\n Effect.gen(function* () {\n const historyTracker = yield* Capability.waitFor(Capabilities.HistoryTracker);\n yield* Stream.fromPubSub(historyTracker.undoable).pipe(\n Stream.runForEach((event) =>\n Effect.sync(() => showUndoToast(event.message, () => void historyTracker.undoPromise())),\n ),\n );\n }).pipe(Effect.provideService(Capability.Service, capabilities)),\n );\n\n // Track all subscriptions so they are torn down when the module deactivates.\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.gen(function* () {\n unsubscribeMonitor();\n unsubscribeFailures();\n yield* Fiber.interrupt(undoFiber);\n }),\n );\n }),\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Effect", "Fiber", "Option", "Stream", "Capabilities", "Capability", "SettingsOperation", "Process", "Annotation", "meta", "DeckCapabilities", "NOTIFY_TOAST_DURATION", "ERROR_TOAST_DURATION", "UNDO_TOAST_DURATION", "makeModule", "fnUntraced", "capabilities", "Service", "registry", "get", "AtomRegistry", "ephemeralAtom", "EphemeralState", "monitor", "ProcessMonitor", "manager", "PluginManager", "invoker", "OperationInvoker", "addToast", "toast", "state", "set", "toasts", "lastState", "Map", "handleProcesses", "processes", "seen", "Set", "process", "add", "pid", "previous", "notify", "getOrNull", "getDictionary", "params", "annotations", "NotifyAnnotation", "State", "RUNNING", "start", "id", "title", "duration", "SUCCEEDED", "success", "FAILED", "error", "description", "icon", "keys", "has", "delete", "unsubscribeMonitor", "subscribe", "processTreeAtom", "hasShownFailureToast", "handleFailures", "failures", "length", "ns", "profile", "key", "actionLabel", "actionAlt", "onAction", "invokePromise", "OpenPluginRegistry", "filter", "t", "unsubscribeFailures", "failed", "showUndoToast", "message", "onUndo", "undoId", "crypto", "randomUUID", "currentUndoId", "closeLabel", "undoFiber", "runFork", "gen", "historyTracker", "waitFor", "HistoryTracker", "fromPubSub", "undoable", "pipe", "runForEach", "event", "sync", "undoPromise", "provideService", "contributes", "Null", "interrupt"]
|
|
7
|
+
}
|
|
@@ -6,10 +6,11 @@ import {
|
|
|
6
6
|
} from "./chunk-GLB73Q6U.mjs";
|
|
7
7
|
import {
|
|
8
8
|
DeckCapabilities_exports
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
10
10
|
import {
|
|
11
11
|
computeActiveUpdates
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PP32NEVY.mjs";
|
|
13
|
+
import "./chunk-SONATB35.mjs";
|
|
13
14
|
import "./chunk-J5LGTIGS.mjs";
|
|
14
15
|
|
|
15
16
|
// src/operations/open.ts
|
|
@@ -156,4 +157,4 @@ var open_default = handler;
|
|
|
156
157
|
export {
|
|
157
158
|
open_default as default
|
|
158
159
|
};
|
|
159
|
-
//# sourceMappingURL=open-
|
|
160
|
+
//# sourceMappingURL=open-P6XQ56M7.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/operations/open.ts"],
|
|
4
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 { AppCapabilities, LayoutOperation, NotFound } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { Context } from '@dxos/context';\nimport { Database, EID, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ObservabilityOperation } from '@dxos/plugin-observability';\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 log('LayoutOperation.Open handler start');\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 client = yield* Capability.get(ClientCapabilities.Client).pipe(\n Effect.catchAll(() => Effect.succeed(undefined)),\n );\n // Existence checkers for the resolved EID: local (load + catchTag) first, then remote (edge).\n const checkLocalExistence = client\n ? (id: EID.EID) => {\n const spaceId = EID.getSpaceId(id);\n const space = spaceId ? client.spaces.get(spaceId) : undefined;\n if (!space) {\n return Effect.succeed(false);\n }\n return Database.load(space.db.makeRef(id)).pipe(\n Effect.as(true),\n Effect.catchTag('EntityNotFoundError', () => Effect.succeed(false)),\n Effect.catchAll(() => Effect.succeed(false)),\n );\n }\n : undefined;\n const checkRemoteExistence = client\n ? NotFound.createEdgeExistenceChecker((spaceId, body) =>\n client.edge.http.execQuery(new Context(), spaceId, body),\n )\n : undefined;\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 NotFound.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 : NotFound.validateNavigationTarget({\n graph,\n subjectId,\n pathResolvers,\n checkLocalExistence,\n checkRemoteExistence,\n }),\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": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "NotFound", "Operation", "Context", "Database", "EID", "Obj", "log", "AttentionCapabilities", "ClientCapabilities", "Graph", "ObservabilityOperation", "LayoutOperation", "graph", "Capability", "get", "AppCapabilities", "AttentionCapabilities", "capabilities", "Service", "client", "ClientCapabilities", "checkLocalExistence", "id", "spaces", "space", "Effect", "succeed", "load", "makeRef", "undefined", "checkRemoteExistence", "NotFound", "createEdgeExistenceChecker", "spaceId", "body", "execQuery", "Context", "input", "expandPath", "subjectId", "pathResolvers", "subject", "Operation", "invoke", "SwitchWorkspace", "workspace", "active", "length", "resolveDXN", "qualifiedPath", "reduce", "deckDxnMap", "Map", "isSome", "opt", "set", "deckId", "concurrency", "Option", "value", "existing", "deck", "next", "openSubjectsOnActiveDeck", "pivotId", "key", "deckUpdates", "attention", "newlyOpen", "schedule", "ScrollIntoView", "onNone", "onSome", "node", "isObject", "properties", "typename"]
|
|
7
7
|
}
|
|
@@ -7,7 +7,7 @@ import { Capabilities, Capability } from "@dxos/app-framework";
|
|
|
7
7
|
import { Surface, useSettingsState } from "@dxos/app-framework/ui";
|
|
8
8
|
import { NotFound } from "@dxos/app-toolkit";
|
|
9
9
|
import { AppSurface, NotFoundArticle } from "@dxos/app-toolkit/ui";
|
|
10
|
-
import { DeckSettings } from "#
|
|
10
|
+
import { DeckSettings } from "#containers";
|
|
11
11
|
import { meta } from "#meta";
|
|
12
12
|
var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
|
|
13
13
|
Surface.create({
|
|
@@ -30,4 +30,4 @@ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capabilit
|
|
|
30
30
|
export {
|
|
31
31
|
react_surface_default as default
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=react-surface-
|
|
33
|
+
//# sourceMappingURL=react-surface-H63FXUK3.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/react-surface.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useSettingsState } from '@dxos/app-framework/ui';\nimport { NotFound } from '@dxos/app-toolkit';\nimport { AppSurface, NotFoundArticle } from '@dxos/app-toolkit/ui';\n\nimport { DeckSettings } from '#
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useSettingsState } from '@dxos/app-framework/ui';\nimport { NotFound } from '@dxos/app-toolkit';\nimport { AppSurface, NotFoundArticle } from '@dxos/app-toolkit/ui';\n\nimport { DeckSettings } from '#containers';\nimport { meta } from '#meta';\nimport { type Settings } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: 'pluginSettings',\n filter: AppSurface.settings(AppSurface.Article, meta.profile.key),\n component: ({ data: { subject } }) => {\n const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);\n return <DeckSettings settings={settings} onSettingsChange={updateSettings} />;\n },\n }),\n Surface.create({\n id: 'notFound',\n filter: Surface.makeFilter(AppSurface.Article, (data) => data.attendableId === NotFound.NOT_FOUND_PATH),\n component: () => <NotFoundArticle />,\n }),\n ]),\n ),\n);\n"],
|
|
5
5
|
"mappings": ";;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,SAASC,wBAAwB;AAC1C,SAASC,gBAAgB;AACzB,SAASC,YAAYC,uBAAuB;AAE5C,SAASC,oBAAoB;AAC7B,SAASC,YAAY;AAGrB,IAAA,wBAAeP,WAAWQ,WAAW,MAC5BC,eACLT,WAAWU,YAAYX,aAAaY,cAAc;EAChDV,QAAQW,OAAO;IACbC,IAAI;IACJC,QAAQV,WAAWW,SAASX,WAAWY,SAAST,KAAKU,QAAQC,GAAG;IAChEC,WAAW,CAAC,EAAEC,MAAM,EAAEC,QAAO,EAAE,MAAE;AAC/B,YAAM,EAAEN,UAAUO,eAAc,IAAKpB,iBAAoCmB,QAAQE,IAAI;AACrF,aAAO,sBAAA,cAACjB,cAAAA;QAAaS;QAAoBS,kBAAkBF;;IAC7D;EACF,CAAA;EACArB,QAAQW,OAAO;IACbC,IAAI;IACJC,QAAQb,QAAQwB,WAAWrB,WAAWY,SAAS,CAACI,SAASA,KAAKM,iBAAiBvB,SAASwB,cAAc;IACtGR,WAAW,MAAM,sBAAA,cAACd,iBAAAA,IAAAA;EACpB,CAAA;CACD,CAAA,CAAA;",
|
|
6
6
|
"names": ["Effect", "React", "Capabilities", "Capability", "Surface", "useSettingsState", "NotFound", "AppSurface", "NotFoundArticle", "DeckSettings", "meta", "makeModule", "succeed", "contributes", "ReactSurface", "create", "id", "filter", "settings", "Article", "profile", "key", "component", "data", "subject", "updateSettings", "atom", "onSettingsChange", "makeFilter", "attendableId", "NOT_FOUND_PATH"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/revert-workspace.ts
|
|
@@ -18,4 +18,4 @@ var revert_workspace_default = handler;
|
|
|
18
18
|
export {
|
|
19
19
|
revert_workspace_default as default
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=revert-workspace-
|
|
21
|
+
//# sourceMappingURL=revert-workspace-RXWP2TEE.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/scroll-into-view.ts
|
|
@@ -18,4 +18,4 @@ var scroll_into_view_default = handler;
|
|
|
18
18
|
export {
|
|
19
19
|
scroll_into_view_default as default
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=scroll-into-view-
|
|
21
|
+
//# sourceMappingURL=scroll-into-view-HFV5EGYZ.mjs.map
|
|
@@ -3,10 +3,11 @@ import {
|
|
|
3
3
|
} from "./chunk-GLB73Q6U.mjs";
|
|
4
4
|
import {
|
|
5
5
|
DeckCapabilities_exports
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
7
7
|
import {
|
|
8
8
|
computeActiveUpdates
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PP32NEVY.mjs";
|
|
10
|
+
import "./chunk-SONATB35.mjs";
|
|
10
11
|
import "./chunk-J5LGTIGS.mjs";
|
|
11
12
|
|
|
12
13
|
// src/operations/set.ts
|
|
@@ -34,4 +35,4 @@ var set_default = handler;
|
|
|
34
35
|
export {
|
|
35
36
|
set_default as default
|
|
36
37
|
};
|
|
37
|
-
//# sourceMappingURL=set-
|
|
38
|
+
//# sourceMappingURL=set-HOOVB7E4.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/operations/set.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\n\nimport { DeckCapabilities } from '../types';\nimport { computeActiveUpdates } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Set> = LayoutOperation.Set.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const deck = yield* DeckCapabilities.getDeck();\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n const { deckUpdates, toAttend } = computeActiveUpdates({\n next: input.subject as string[],\n deck,\n attention,\n });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n\n if (toAttend) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, { subject: toAttend });\n }\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,6BAA6B;AAMtC,IAAMC,UAA6DC,gBAAgBC,IAAIC,KACrFC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAMC,OAAO,OAAOC,yBAAiBC,QAAO;AAC5C,QAAMC,YAAY,OAAOC,WAAWC,IAAIC,sBAAsBC,SAAS;AAEvE,QAAM,EAAEC,aAAaC,SAAQ,IAAKC,qBAAqB;IACrDC,MAAMZ,MAAMa;IACZZ;IACAG;EACF,CAAA;AACA,SAAOU,aAAaC,gBAAgBb,yBAAiBc,OAAO,CAACC,UAAUC,iBAAiBD,OAAOR,WAAAA,CAAAA;AAE/F,MAAIC,UAAU;AACZ,WAAOb,UAAUsB,SAASzB,gBAAgB0B,gBAAgB;MAAEP,SAASH;IAAS,CAAA;EAChF;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,cAAejB;",
|
|
6
6
|
"names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "Operation", "AttentionCapabilities", "handler", "LayoutOperation", "Set", "pipe", "Operation", "withHandler", "fnUntraced", "input", "deck", "DeckCapabilities", "getDeck", "attention", "Capability", "get", "AttentionCapabilities", "Attention", "deckUpdates", "toAttend", "computeActiveUpdates", "next", "subject", "Capabilities", "updateAtomValue", "State", "state", "updateActiveDeck", "schedule", "ScrollIntoView"]
|
|
7
7
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
DeckCapabilities_exports,
|
|
6
6
|
getMode,
|
|
7
7
|
isLayoutMode
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
9
9
|
import "./chunk-J5LGTIGS.mjs";
|
|
10
10
|
|
|
11
11
|
// src/operations/set-layout-mode.ts
|
|
@@ -82,4 +82,4 @@ var set_layout_mode_default = handler;
|
|
|
82
82
|
export {
|
|
83
83
|
set_layout_mode_default as default
|
|
84
84
|
};
|
|
85
|
-
//# sourceMappingURL=set-layout-mode-
|
|
85
|
+
//# sourceMappingURL=set-layout-mode-XAGSZZGB.mjs.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sanitizePersistedState
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PP32NEVY.mjs";
|
|
4
|
+
import "./chunk-SONATB35.mjs";
|
|
4
5
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
6
|
|
|
6
7
|
// src/capabilities/state.ts
|
|
@@ -83,4 +84,4 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
|
83
84
|
export {
|
|
84
85
|
state_default as default
|
|
85
86
|
};
|
|
86
|
-
//# sourceMappingURL=state-
|
|
87
|
+
//# sourceMappingURL=state-F4X5GPGZ.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/state.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { createKvsStore } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\n\nimport { meta } from '#meta';\nimport { DeckCapabilities, type EphemeralDeckState, StoredDeckState, defaultDeck, getMode } from '#types';\n\nimport { sanitizePersistedState } from '../util';\n\n/** Default persisted state. */\nconst defaultDeckState: StoredDeckState = {\n sidebarState: 'expanded',\n complementarySidebarState: 'collapsed',\n complementarySidebarPanel: undefined,\n activeDeck: 'default',\n previousDeck: 'default',\n decks: {\n default: { ...defaultDeck },\n },\n previousMode: {},\n};\n\n/** Default ephemeral state. */\nconst defaultDeckEphemeralState: EphemeralDeckState = {\n dialogContent: null,\n dialogOpen: false,\n dialogBlockAlign: undefined,\n dialogType: undefined,\n popoverContent: null,\n popoverAnchor: undefined,\n popoverAnchorId: undefined,\n popoverOpen: false,\n toasts: [],\n currentUndoId: undefined,\n scrollIntoView: undefined,\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n\n // Persisted state using KVS store.\n const stateAtom = createKvsStore({\n key: `${meta.profile.key}.state`,\n schema: StoredDeckState,\n defaultValue: () => ({ ...defaultDeckState }),\n });\n\n // Ephemeral state (not persisted, but kept alive to prevent GC resets).\n const ephemeralAtom = Atom.make<EphemeralDeckState>({ ...defaultDeckEphemeralState }).pipe(Atom.keepAlive);\n\n // Sanitize persisted state on startup (see sanitizePersistedState for details).\n const currentState = registry.get(stateAtom);\n const sanitizedState = sanitizePersistedState(currentState);\n if (sanitizedState !== currentState) {\n registry.set(stateAtom, sanitizedState);\n }\n\n // Create derived layout atom (read-only) from both state atoms.\n const layoutAtom = Atom.make((get) => {\n const state = get(stateAtom);\n const ephemeral = get(ephemeralAtom);\n const deck = state.decks[state.activeDeck];\n invariant(deck, `Deck not found: ${state.activeDeck}`);\n return {\n mode: getMode(deck),\n dialogOpen: ephemeral.dialogOpen,\n sidebarOpen: state.sidebarState === 'expanded',\n complementarySidebarOpen: state.complementarySidebarState === 'expanded',\n workspace: state.activeDeck,\n active: deck.solo ? [deck.solo] : deck.active,\n inactive: deck.inactive,\n scrollIntoView: ephemeral.scrollIntoView,\n } satisfies AppCapabilities.Layout;\n }).pipe(Atom.keepAlive);\n\n return [\n Capability.contributes(DeckCapabilities.State, stateAtom),\n Capability.contributes(DeckCapabilities.EphemeralState, ephemeralAtom),\n Capability.contributes(AppCapabilities.Layout, layoutAtom),\n ];\n }),\n);\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAE1B,SAASC,YAAY;AACrB,SAASC,kBAA2CC,iBAAiBC,aAAaC,eAAe;AAIjG,IAAA,eAAA;AAG6B,IAAA,mBAAA;EAC3BC,cAAAA;EACAC,2BAAY;EACZC,2BAAc;EACdC,YAAO;gBACI;;IAAiB,SAAA;MAC5B,GAAA;IACAC;EACF;EAEA,cAAA,CAAA;;AAGc,IAAA,4BAAA;EACZC,eAAAA;EACAC,YAAYC;EACZC,kBAAgB;EAChBC,YAAAA;EACAC,gBAAAA;EACAC,eAAa;EACbC,iBAAU;EACVC,aAAAA;EACAC,QAAAA,CAAAA;EACF,eAAA;EAEA,gBAAeC;;IAIX,gBAAA,WAAA,WAAmC,kBAAA,aAAA;AACnC,QAAMC,WAAAA,OAAYC,WAAe,IAAA,aAAA,YAAA;QAE/BC,YAAQC,eAAAA;IACRC,KAAAA,GAAAA,KAAAA,QAAqB,GAAA;YAAE;kBAAoB,OAAA;MAC7C,GAAA;IAEA;EACA,CAAA;AAAmF,QAAGC,gBAAmB,KAAA,KAAA;IAEzG,GAAA;EACA,CAAA,EAAA,KAAMC,KAAAA,SAAeC;AAErB,QAAIC,eAAAA,SAAmBF,IAAAA,SAAc;QACnCC,iBAAaP,uBAAWQ,YAAAA;AAC1B,MAAA,mBAAA,cAAA;AAEA,aAAA,IAAA,WAAA,cAAA;EACA;QAEE,aAAMC,KAAYC,KAAIC,CAAAA,QAAAA;AACtB,UAAMC,QAAOC,IAAAA,SAAYA;AACzBC,UAAAA,YAAiB,IAAA,aAAkBD;AACnC,UAAA,OAAO,MAAA,MAAA,MAAA,UAAA;cACCE,MAAAA,mBAAQH,MAAAA,UAAAA,IAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,QAAAA,uCAAAA,EAAAA,CAAAA;WACdI;MACAC,MAAAA,QAAaJ,IAAAA;MACbK,YAAAA,UAAAA;MACAC,aAAWN,MAAM5B,iBAAU;MAC3BmC,0BAAoB,MAAA,8BAAA;iBAAMC,MAAI;cAAIT,KAAKQ,OAAM;QAC7CE,KAAAA;MACAxB,IAAAA,KAAAA;MACF,UAAA,KAAA;MACMyB,gBAAc,UAAA;IAEtB;UACExB,KAAAA,SAAWyB;SACXzB;IACAA,WAAWyB,YAAYC,iBAAgBC,OAAQC,SAAAA;IAChD,WAAA,YAAA,iBAAA,gBAAA,aAAA;IAEH,WAAA,YAAA,gBAAA,QAAA,UAAA;;;",
|
|
6
6
|
"names": ["Atom", "Effect", "Capabilities", "Capability", "AppCapabilities", "createKvsStore", "invariant", "meta", "DeckCapabilities", "StoredDeckState", "defaultDeck", "getMode", "complementarySidebarPanel", "activeDeck", "previousDeck", "decks", "previousMode", "dialogBlockAlign", "dialogType", "undefined", "popoverContent", "popoverAnchor", "popoverAnchorId", "popoverOpen", "toasts", "currentUndoId", "scrollIntoView", "Capability", "stateAtom", "createKvsStore", "schema", "StoredDeckState", "defaultValue", "pipe", "currentState", "registry", "sanitizedState", "ephemeral", "get", "ephemeralAtom", "deck", "state", "invariant", "getMode", "dialogOpen", "sidebarOpen", "complementarySidebarOpen", "workspace", "active", "solo", "inactive", "Atom", "contributes", "AppCapabilities", "Layout", "layoutAtom"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports,
|
|
3
3
|
defaultDeck
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
5
5
|
import "./chunk-J5LGTIGS.mjs";
|
|
6
6
|
|
|
7
7
|
// src/operations/switch-workspace.ts
|
|
@@ -57,4 +57,4 @@ var switch_workspace_default = handler;
|
|
|
57
57
|
export {
|
|
58
58
|
switch_workspace_default as default
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=switch-workspace-
|
|
60
|
+
//# sourceMappingURL=switch-workspace-PA7N6EUX.mjs.map
|
|
@@ -7,7 +7,6 @@ var translations = [
|
|
|
7
7
|
"en-US": {
|
|
8
8
|
[meta.profile.key]: {
|
|
9
9
|
"plugin.name": "Deck",
|
|
10
|
-
"settings.title": "Deck settings",
|
|
11
10
|
"main-header.label": "Main header",
|
|
12
11
|
"open-navigation-sidebar.label": "Open sidebar",
|
|
13
12
|
"collapse-navigation-sidebar.label": "Close sidebar",
|
|
@@ -41,7 +40,8 @@ var translations = [
|
|
|
41
40
|
"show-fullscreen-plank.label": "Fullscreen",
|
|
42
41
|
"close.label": "Close",
|
|
43
42
|
"minify.label": "Minify",
|
|
44
|
-
"open-companion.label": "Open companion",
|
|
43
|
+
"open-companion.label": "Open companion side-by-side",
|
|
44
|
+
"open-companion-vertical.label": "Open companion stacked",
|
|
45
45
|
"close-companion.label": "Close companion",
|
|
46
46
|
"close-current.label": "Close current plank",
|
|
47
47
|
"close-others.label": "Close other planks",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.profile.key]: {\n 'plugin.name': 'Deck',\n '
|
|
5
|
-
"mappings": ";;;AAMA,SAASA,YAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,KAAKE,QAAQC,GAAG,GAAG;QAClB,eAAe;QACf,
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.profile.key]: {\n 'plugin.name': 'Deck',\n 'main-header.label': 'Main header',\n 'open-navigation-sidebar.label': 'Open sidebar',\n 'collapse-navigation-sidebar.label': 'Close sidebar',\n 'open-complementary-sidebar.label': 'Open context sidebar',\n 'close-complementary-sidebar.label': 'Close 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 '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 object',\n 'error-fallback.copy.label': 'Copy',\n 'plank-heading-fallback.label': 'Untitled',\n 'actions-menu.label': 'Options',\n 'settings.deck.label': 'Disable deck',\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 side-by-side',\n 'open-companion-vertical.label': 'Open companion stacked',\n 'close-companion.label': 'Close companion',\n 'close-current.label': 'Close current plank',\n 'close-others.label': 'Close other planks',\n 'close-all.label': 'Close all planks',\n 'close-navigation-sidebar.button': 'Close',\n 'companion-plank-heading-fallback.label': 'Related',\n 'popover-no-preview.message': 'No preview available.',\n 'plugin-failure.title': 'A plugin failed to activate',\n 'plugin-failure.description': 'See Plugin Registry for details.',\n 'plugin-failure-action.label': 'Open Registry',\n 'plugin-failure-action.alt': 'Open Plugin Registry',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
+
"mappings": ";;;AAMA,SAASA,YAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,KAAKE,QAAQC,GAAG,GAAG;QAClB,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,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,6BAA6B;QAC7B,gCAAgC;QAChC,sBAAsB;QACtB,uBAAuB;QACvB,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,iCAAiC;QACjC,yBAAyB;QACzB,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;QACnB,mCAAmC;QACnC,0CAA0C;QAC1C,8BAA8B;QAC9B,wBAAwB;QACxB,8BAA8B;QAC9B,+BAA+B;QAC/B,6BAA6B;MAC/B;IACF;EACF;;",
|
|
6
6
|
"names": ["meta", "translations", "profile", "key"]
|
|
7
7
|
}
|
|
@@ -3,14 +3,20 @@ import {
|
|
|
3
3
|
} from "./chunk-GLB73Q6U.mjs";
|
|
4
4
|
import {
|
|
5
5
|
DeckCapabilities_exports
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
7
|
+
import "./chunk-PP32NEVY.mjs";
|
|
8
|
+
import {
|
|
9
|
+
COMPANION_VIEW_STATE_CONTEXT,
|
|
10
|
+
companionVariantAspect
|
|
11
|
+
} from "./chunk-SONATB35.mjs";
|
|
7
12
|
import "./chunk-J5LGTIGS.mjs";
|
|
8
13
|
|
|
9
14
|
// src/operations/update-companion.ts
|
|
10
15
|
import * as Effect from "effect/Effect";
|
|
11
|
-
import { Capabilities } from "@dxos/app-framework";
|
|
16
|
+
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
12
17
|
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
13
18
|
import { Operation } from "@dxos/compute";
|
|
19
|
+
import { AttentionCapabilities } from "@dxos/plugin-attention";
|
|
14
20
|
import { getLinkedVariant } from "@dxos/react-ui-attention";
|
|
15
21
|
var handler = LayoutOperation.UpdateCompanion.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
|
|
16
22
|
if (input.subject === null) {
|
|
@@ -18,10 +24,12 @@ var handler = LayoutOperation.UpdateCompanion.pipe(Operation.withHandler(Effect.
|
|
|
18
24
|
companionOpen: false
|
|
19
25
|
}));
|
|
20
26
|
} else {
|
|
21
|
-
const
|
|
27
|
+
const viewState = yield* Capability.get(AttentionCapabilities.ViewState);
|
|
28
|
+
viewState.set(companionVariantAspect, COMPANION_VIEW_STATE_CONTEXT, {
|
|
29
|
+
variant: getLinkedVariant(input.subject)
|
|
30
|
+
});
|
|
22
31
|
yield* Capabilities.updateAtomValue(DeckCapabilities_exports.State, (state) => updateActiveDeck(state, {
|
|
23
|
-
companionOpen: true
|
|
24
|
-
companionVariant: variant
|
|
32
|
+
companionOpen: true
|
|
25
33
|
}));
|
|
26
34
|
}
|
|
27
35
|
})));
|
|
@@ -29,4 +37,4 @@ var update_companion_default = handler;
|
|
|
29
37
|
export {
|
|
30
38
|
update_companion_default as default
|
|
31
39
|
};
|
|
32
|
-
//# sourceMappingURL=update-companion-
|
|
40
|
+
//# sourceMappingURL=update-companion-6A2SKQAI.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/update-companion.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 { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { getLinkedVariant } from '@dxos/react-ui-attention';\n\nimport { DeckCapabilities } from '../types';\nimport { COMPANION_VIEW_STATE_CONTEXT, companionVariantAspect } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.UpdateCompanion> = LayoutOperation.UpdateCompanion.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n if (input.subject === null) {\n // Leave the selected variant intact so reopening the companion restores the last tab.\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) =>\n updateActiveDeck(state, { companionOpen: false }),\n );\n } else {\n // The selected variant is global view state (shared with the split point), not deck state.\n const viewState = yield* Capability.get(AttentionCapabilities.ViewState);\n viewState.set(companionVariantAspect, COMPANION_VIEW_STATE_CONTEXT, {\n variant: getLinkedVariant(input.subject),\n });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) =>\n updateActiveDeck(state, { companionOpen: true }),\n );\n }\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,6BAA6B;AACtC,SAASC,wBAAwB;AAMjC,IAAMC,UAAyEC,gBAAgBC,gBAAgBC,KAC7GC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,MAAIA,MAAMC,YAAY,MAAM;AAE1B,WAAOC,aAAaC,gBAAgBC,yBAAiBC,OAAO,CAACC,UAC3DC,iBAAiBD,OAAO;MAAEE,eAAe;IAAM,CAAA,CAAA;EAEnD,OAAO;AAEL,UAAMC,YAAY,OAAOC,WAAWC,IAAIC,sBAAsBC,SAAS;AACvEJ,cAAUK,IAAIC,wBAAwBC,8BAA8B;MAClEC,SAASC,iBAAiBlB,MAAMC,OAAO;IACzC,CAAA;AACA,WAAOC,aAAaC,gBAAgBC,yBAAiBC,OAAO,CAACC,UAC3DC,iBAAiBD,OAAO;MAAEE,eAAe;IAAK,CAAA,CAAA;EAElD;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,2BAAef;",
|
|
6
|
+
"names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "Operation", "AttentionCapabilities", "getLinkedVariant", "handler", "LayoutOperation", "UpdateCompanion", "pipe", "Operation", "withHandler", "fnUntraced", "input", "subject", "Capabilities", "updateAtomValue", "DeckCapabilities", "State", "state", "updateActiveDeck", "companionOpen", "viewState", "Capability", "get", "AttentionCapabilities", "ViewState", "set", "companionVariantAspect", "COMPANION_VIEW_STATE_CONTEXT", "variant", "getLinkedVariant"]
|
|
7
|
+
}
|
package/dist/lib/neutral/{update-complementary-HZ7QXZYE.mjs → update-complementary-K55I5EV5.mjs}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/update-complementary.ts
|
|
@@ -25,4 +25,4 @@ var update_complementary_default = handler;
|
|
|
25
25
|
export {
|
|
26
26
|
update_complementary_default as default
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=update-complementary-
|
|
28
|
+
//# sourceMappingURL=update-complementary-K55I5EV5.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/update-dialog.ts
|
|
@@ -26,4 +26,4 @@ var update_dialog_default = handler;
|
|
|
26
26
|
export {
|
|
27
27
|
update_dialog_default as default
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=update-dialog-
|
|
29
|
+
//# sourceMappingURL=update-dialog-Z3GEXMVV.mjs.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
DeckCapabilities_exports,
|
|
6
6
|
DeckOperation_exports
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
8
8
|
import "./chunk-J5LGTIGS.mjs";
|
|
9
9
|
|
|
10
10
|
// src/operations/update-plank-size.ts
|
|
@@ -23,4 +23,4 @@ var update_plank_size_default = handler;
|
|
|
23
23
|
export {
|
|
24
24
|
update_plank_size_default as default
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=update-plank-size-
|
|
26
|
+
//# sourceMappingURL=update-plank-size-BTESVV7N.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/update-popover.ts
|
|
@@ -30,4 +30,4 @@ var update_popover_default = handler;
|
|
|
30
30
|
export {
|
|
31
31
|
update_popover_default as default
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=update-popover-
|
|
33
|
+
//# sourceMappingURL=update-popover-QEVDSZSH.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeckCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ICOJ4GMB.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/update-sidebar.ts
|
|
@@ -22,4 +22,4 @@ var update_sidebar_default = handler;
|
|
|
22
22
|
export {
|
|
23
23
|
update_sidebar_default as default
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=update-sidebar-
|
|
25
|
+
//# sourceMappingURL=update-sidebar-VSRCN47U.mjs.map
|
|
@@ -8,7 +8,8 @@ import {
|
|
|
8
8
|
deserializePlanks,
|
|
9
9
|
serializePlanks,
|
|
10
10
|
stripPlanks
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PP32NEVY.mjs";
|
|
12
|
+
import "./chunk-SONATB35.mjs";
|
|
12
13
|
import "./chunk-J5LGTIGS.mjs";
|
|
13
14
|
|
|
14
15
|
// src/capabilities/url-handler.ts
|
|
@@ -226,4 +227,4 @@ var handleDeepLink = Effect.fn(function* (urlString, navigate) {
|
|
|
226
227
|
export {
|
|
227
228
|
url_handler_default as default
|
|
228
229
|
};
|
|
229
|
-
//# sourceMappingURL=url-handler-
|
|
230
|
+
//# sourceMappingURL=url-handler-ERZXXEYR.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/url-handler.ts"],
|
|
4
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, LayoutOperation, NotFound, Paths } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { Node } from '@dxos/plugin-graph';\nimport { isTauri } from '@dxos/util';\n\nimport { DeckCapabilities, type StoredDeckState, defaultDeck } from '#types';\n\nimport { updateActiveDeck } from '../operations/helpers';\nimport { deserializePlanks, serializePlanks, stripPlanks } from '../util';\nimport { shouldDeferNavigationHandlers } from './check-app-scheme';\n\n/** Dispatch all NavigationHandler contributions with a given URL. */\nconst dispatchNavigationHandlers = Effect.fn(function* (url: URL) {\n const handlers = yield* Capability.getAll(AppCapabilities.NavigationHandler);\n yield* Effect.all(\n handlers.map((handler) => handler(url)),\n { concurrency: 'unbounded' },\n );\n});\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const operationService = yield* Capability.get(Capabilities.OperationInvoker);\n const capabilities = yield* Capability.Service;\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const stateAtom = yield* Capability.get(DeckCapabilities.State);\n const settingsAtom = yield* Capability.get(DeckCapabilities.Settings);\n\n const provideServices = <A, E>(effect: Effect.Effect<A, E, Capability.Service | Operation.Service>) =>\n effect.pipe(\n Effect.provideService(Capability.Service, capabilities),\n Effect.provideService(Operation.Service, operationService),\n );\n\n // Helper to get state.\n const getState = () => registry.get(stateAtom);\n\n // Helper to get computed deck from state.\n const getDeck = () => {\n const state = getState();\n const deck = state.decks[state.activeDeck];\n invariant(deck, `Deck not found: ${state.activeDeck}`);\n return deck;\n };\n\n // Helper to update state.\n const updateState = (fn: (current: StoredDeckState) => StoredDeckState) => {\n registry.set(stateAtom, fn(getState()));\n };\n\n const handleNavigation = Effect.fn(function* (url?: URL) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const resolvedUrl = url ?? new URL(window.location.href);\n // When native redirect is active, check-app-scheme owns the initial dispatch\n // to prevent one-time tokens from being consumed before the native app can use them.\n const settings = registry.get(settingsAtom);\n const deferHandlers = settings?.enableNativeRedirect && shouldDeferNavigationHandlers();\n if (!deferHandlers) {\n yield* dispatchNavigationHandlers(resolvedUrl);\n }\n\n const pathname = resolvedUrl.pathname;\n const state = getState();\n if (pathname === '/reset') {\n updateState((s) => ({\n ...s,\n activeDeck: 'default',\n decks: {\n default: { ...defaultDeck },\n },\n }));\n window.location.pathname = '/';\n return;\n }\n\n const qualifiedId = Paths.fromUrlPath(pathname);\n const workspace = Paths.getWorkspaceFromPath(qualifiedId);\n if (workspace !== Node.RootId && workspace !== state.activeDeck) {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: workspace });\n }\n\n const deck = getDeck();\n const activeId = qualifiedId !== workspace ? qualifiedId : undefined;\n if (activeId) {\n // Ensure the object referenced by the URL is open in the deck.\n // Open validates the target and may redirect to 404, returning the resolved IDs.\n const resolvedIds = yield* Operation.invoke(LayoutOperation.Open, { subject: [activeId] });\n // If not already in solo mode, switch to solo for the resolved target.\n if (!deck.solo) {\n yield* Operation.invoke(LayoutOperation.SetLayoutMode, {\n subject: resolvedIds?.[0] ?? activeId,\n mode: 'solo',\n });\n }\n } else if (deck.solo && deck.solo !== NotFound.NOT_FOUND_PATH) {\n // Stay in solo mode; redirect URL to reflect the current solo item.\n // Do not switch to deck mode here — only explicit user action should change layout mode.\n const path = Paths.toUrlPath(deck.solo);\n if (window.location.pathname !== path) {\n history.replaceState(null, '', `${path}${stripPlanks(window.location.search)}`);\n }\n } else if (!activeId && !deck.solo) {\n // Multi-mode: restore planks from query params.\n const plankIds = deserializePlanks(resolvedUrl);\n if (plankIds.length > 0) {\n for (const plankId of plankIds) {\n NotFound.expandPath(graph, plankId);\n }\n updateState((state) => updateActiveDeck(state, { active: plankIds, initialized: true }));\n }\n }\n });\n\n const onPopState = () => void EffectEx.runAndForwardErrors(provideServices(handleNavigation()));\n\n // Install before handleNavigation()/state-sync push entries on top of the sentinel.\n const sentinelKey = installLeaveTrap();\n\n // Landing on the sentinel means a Back is about to leave Composer; confirm and act on it.\n // The guard stops our own back()/forward() from re-entering.\n let handlingSentinel = false;\n const onCurrentEntryChange = () => {\n const current = window.navigation.currentEntry;\n if (handlingSentinel || !current || current.key !== sentinelKey) {\n return;\n }\n handlingSentinel = true;\n queueMicrotask(() => {\n if (window.confirm('Leave Composer?')) {\n history.back(); // Past the sentinel to the prior page.\n } else {\n history.forward(); // Back to where the user was.\n }\n setTimeout(() => {\n handlingSentinel = false;\n });\n });\n };\n\n yield* provideServices(handleNavigation());\n window.addEventListener('popstate', onPopState);\n if ('navigation' in window) {\n window.navigation.addEventListener('currententrychange', onCurrentEntryChange);\n }\n\n // Tauri deep link support.\n let unlistenDeepLink: (() => void) | undefined;\n if (isTauri()) {\n yield* Effect.gen(function* () {\n const { getCurrent, onOpenUrl } = yield* Effect.promise(() => import('@tauri-apps/plugin-deep-link'));\n\n const launchUrls = yield* Effect.promise(() => getCurrent());\n if (launchUrls && launchUrls.length > 0) {\n log('app launched with deep links', { urls: launchUrls });\n for (const urlString of launchUrls) {\n yield* provideServices(handleDeepLink(urlString, handleNavigation));\n }\n }\n\n unlistenDeepLink = yield* Effect.promise(() =>\n onOpenUrl((urls) => {\n for (const urlString of urls) {\n void EffectEx.runAndForwardErrors(provideServices(handleDeepLink(urlString, handleNavigation)));\n }\n }),\n );\n }).pipe(\n Effect.catchAll((error) => Effect.sync(() => log.warn('failed to initialize deep link listener', { error }))),\n );\n }\n\n // Sync URL with layout state changes.\n let lastSolo: string | undefined;\n let lastActiveDeck: string | undefined;\n let lastActiveKey: string | undefined;\n const unsubscribe = registry.subscribe(stateAtom, () => {\n const state = getState();\n const deck = getDeck();\n const solo = deck.solo;\n const activeDeck = state.activeDeck;\n const activeKey = solo ? undefined : JSON.stringify(deck.active);\n\n if (solo !== lastSolo || activeDeck !== lastActiveDeck || activeKey !== lastActiveKey) {\n lastSolo = solo;\n lastActiveDeck = activeDeck;\n lastActiveKey = activeKey;\n\n const path = solo && solo !== NotFound.NOT_FOUND_PATH ? Paths.toUrlPath(solo) : Paths.toUrlPath(activeDeck);\n const search = !solo\n ? serializePlanks(deck.active, window.location.search)\n : stripPlanks(window.location.search);\n const newUrl = `${path}${search}`;\n\n if (`${window.location.pathname}${window.location.search}` !== newUrl) {\n history.pushState(null, '', newUrl);\n }\n }\n });\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n window.removeEventListener('popstate', onPopState);\n if ('navigation' in window) {\n window.navigation.removeEventListener('currententrychange', onCurrentEntryChange);\n }\n unsubscribe();\n unlistenDeepLink?.();\n }),\n );\n }),\n);\n\n/**\n * sessionStorage key holding the sentinel history entry's key. The entry is identified by its\n * (reload-stable) Navigation API key rather than by entry state, because the deck overwrites\n * history state via replaceState during URL sync — which would erase a state marker. sessionStorage\n * survives reloads within the tab and the deck never touches it.\n */\nconst SENTINEL_STORAGE_KEY = 'dxos.composer.deck.leaveTrap.sentinelKey';\n\n/**\n * Insert a \"sentinel\" history entry beneath the app's working entries, so a Back-press that would\n * leave Composer instead lands on the sentinel — where `onCurrentEntryChange` confirms the exit. A\n * cross-document back is uncancelable and `beforeunload` cannot distinguish reload from leave, so\n * this same-document floor is required; reload fires no traversal and is never trapped. Requires the\n * Navigation API (Chromium); no-op otherwise. Idempotent across reloads via the sessionStorage-held\n * entry key, so the sentinel is not duplicated. Returns the sentinel entry's key, or undefined.\n */\nconst installLeaveTrap = (): string | undefined => {\n if (!('navigation' in window)) {\n return undefined;\n }\n const saved = sessionStorage.getItem(SENTINEL_STORAGE_KEY);\n if (saved && window.navigation.entries().some((entry) => entry.key === saved)) {\n // The sentinel survived (reload, or the user returned to Composer after leaving). If we are\n // sitting ON it — e.g. the user left via the sentinel then came back Forward onto it — push a\n // working entry above so the user is above the floor again and the trap re-arms.\n if (window.navigation.currentEntry?.key === saved) {\n history.pushState(null, '', window.location.pathname + window.location.search);\n }\n return saved;\n }\n // history.length > 1 (not navigation.canGoBack, which is false for a cross-origin prior entry)\n // means there is somewhere to leave to; otherwise Back can't exit and no sentinel is needed.\n const key = window.navigation.currentEntry?.key;\n if (key && window.history.length > 1) {\n // Record the current (landing) entry as the sentinel, then push the working entry above it.\n sessionStorage.setItem(SENTINEL_STORAGE_KEY, key);\n history.pushState(null, '', window.location.pathname + window.location.search);\n return key;\n }\n return undefined;\n};\n\n/** Check if a path is a redirect path handled elsewhere (e.g., OAuth). */\nconst isRedirectPath = (pathname: string): boolean => pathname.startsWith('/redirect/');\n\n/** Handle a deep link URL string. Merges query params into window.location and navigates. */\nconst handleDeepLink = Effect.fn(function* (urlString: string, navigate: (url?: URL) => Effect.Effect<void, any, any>) {\n log('deep link received', { url: urlString });\n\n const deepLinkUrl = new URL(urlString);\n\n // For custom schemes (e.g., composer://a/b/c), new URL() treats the first segment as the\n // hostname. Reconstruct the full path from hostname + pathname.\n const fullPath =\n deepLinkUrl.protocol !== 'https:' && deepLinkUrl.protocol !== 'http:' && deepLinkUrl.hostname\n ? '/' + deepLinkUrl.hostname + deepLinkUrl.pathname\n : deepLinkUrl.pathname;\n\n if (isRedirectPath(fullPath)) {\n return;\n }\n\n // Merge deep link query params into the current window URL so handlers can read them.\n const current = new URL(window.location.href);\n if (deepLinkUrl.search) {\n deepLinkUrl.searchParams.forEach((value, key) => current.searchParams.set(key, value));\n }\n current.pathname = fullPath;\n history.replaceState(null, '', current.pathname + current.search);\n\n yield* navigate(current);\n});\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "NotFound", "Paths", "Operation", "EffectEx", "invariant", "log", "Node", "isTauri", "DeckCapabilities", "defaultDeck", "concurrency", "capabilities", "Service", "registry", "Capability", "Capabilities", "AtomRegistry", "stateAtom", "settingsAtom", "get", "DeckCapabilities", "Settings", "provideServices", "effect", "provideService", "getState", "getDeck", "deck", "state", "invariant", "fn", "handleNavigation", "Effect", "URL", "window", "location", "deferHandlers", "dispatchNavigationHandlers", "resolvedUrl", "pathname", "updateState", "activeDeck", "decks", "default", "workspace", "Node", "RootId", "Operation", "invoke", "SwitchWorkspace", "activeId", "subject", "mode", "history", "replaceState", "path", "plankIds", "deserializePlanks", "plankId", "NotFound", "expandPath", "updateActiveDeck", "initialized", "sentinelKey", "installLeaveTrap", "current", "handlingSentinel", "queueMicrotask", "confirm", "back", "forward", "setTimeout", "addEventListener", "launchUrls", "length", "log", "handleDeepLink", "urlString", "unlistenDeepLink", "EffectEx", "runAndForwardErrors", "lastActiveKey", "solo", "activeKey", "lastSolo", "lastActiveDeck", "newUrl", "search", "pushState", "removeEventListener", "unsubscribe", "undefined", "saved", "sessionStorage", "SENTINEL_STORAGE_KEY", "key", "deepLinkUrl", "searchParams", "forEach", "value", "fullPath", "navigate"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckPlugin.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqC,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeckPlugin.d.ts","sourceRoot":"","sources":["../../../src/DeckPlugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA0BhF,eAAO,MAAM,UAAU,4BA0CtB,CAAC;eAEa,UAAU"}
|