@dxos/plugin-simple-layout 0.8.4-main.d05673bc65 → 0.8.4-main.d9fc60f731
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +102 -5
- package/dist/lib/neutral/SimpleLayoutPlugin.mjs +52 -0
- package/dist/lib/neutral/SimpleLayoutPlugin.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-MSPO34DT.mjs +21 -0
- package/dist/lib/neutral/app-graph-builder-MSPO34DT.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +21 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-7UDV3JDT.mjs +22 -0
- package/dist/lib/neutral/chunk-7UDV3JDT.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FD2CAY4Q.mjs +26 -0
- package/dist/lib/neutral/chunk-FD2CAY4Q.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-OK5336TS.mjs +22 -0
- package/dist/lib/neutral/chunk-OK5336TS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QRTV5UNX.mjs +8 -0
- package/dist/lib/neutral/chunk-QRTV5UNX.mjs.map +7 -0
- package/dist/lib/neutral/close-WKMURGUB.mjs +35 -0
- package/dist/lib/neutral/close-WKMURGUB.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +929 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +332 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +14 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/open-APISM3AA.mjs +63 -0
- package/dist/lib/neutral/open-APISM3AA.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-EAIE7KPR.mjs +13 -0
- package/dist/lib/neutral/operation-handler-EAIE7KPR.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/{browser/react-root-WVQYY2JA.mjs → neutral/react-root-VE265VX4.mjs} +5 -8
- package/dist/lib/neutral/react-root-VE265VX4.mjs.map +7 -0
- package/dist/lib/{browser/react-surface-VLBR37ED.mjs → neutral/react-surface-N3PGKIYV.mjs} +16 -14
- package/dist/lib/neutral/react-surface-N3PGKIYV.mjs.map +7 -0
- package/dist/lib/neutral/revert-workspace-ST6NZUNG.mjs +22 -0
- package/dist/lib/neutral/revert-workspace-ST6NZUNG.mjs.map +7 -0
- package/dist/lib/neutral/set-6ZRLWPJS.mjs +22 -0
- package/dist/lib/neutral/set-6ZRLWPJS.mjs.map +7 -0
- package/dist/lib/neutral/set-layout-mode-L22HRCKS.mjs +13 -0
- package/dist/lib/neutral/set-layout-mode-L22HRCKS.mjs.map +7 -0
- package/dist/lib/{browser/spotlight-dismiss-67PHYS5B.mjs → neutral/spotlight-dismiss-EIYW5E7M.mjs} +7 -15
- package/dist/lib/{node-esm/spotlight-dismiss-RMLRZUVY.mjs.map → neutral/spotlight-dismiss-EIYW5E7M.mjs.map} +3 -3
- package/dist/lib/{browser/state-TXSMUWYI.mjs → neutral/state-7NXKBLPY.mjs} +5 -6
- package/dist/lib/neutral/state-7NXKBLPY.mjs.map +7 -0
- package/dist/lib/neutral/switch-workspace-PYWPTMFO.mjs +25 -0
- package/dist/lib/neutral/switch-workspace-PYWPTMFO.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +36 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +10 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/neutral/update-complementary-HKWF5OXT.mjs +33 -0
- package/dist/lib/neutral/update-complementary-HKWF5OXT.mjs.map +7 -0
- package/dist/lib/neutral/update-dialog-P4ASXCE7.mjs +30 -0
- package/dist/lib/neutral/update-dialog-P4ASXCE7.mjs.map +7 -0
- package/dist/lib/neutral/update-popover-REAKC2GN.mjs +34 -0
- package/dist/lib/neutral/update-popover-REAKC2GN.mjs.map +7 -0
- package/dist/lib/neutral/update-sidebar-O5SQPR6Q.mjs +12 -0
- package/dist/lib/neutral/update-sidebar-O5SQPR6Q.mjs.map +7 -0
- package/dist/lib/neutral/url-handler-GZXUUAHD.mjs +129 -0
- package/dist/lib/neutral/url-handler-GZXUUAHD.mjs.map +7 -0
- package/dist/types/src/SimpleLayoutPlugin.d.ts +2 -1
- package/dist/types/src/SimpleLayoutPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +21 -6
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/{spotlight-dismiss/spotlight-dismiss.d.ts → spotlight-dismiss.d.ts} +1 -1
- package/dist/types/src/capabilities/spotlight-dismiss.d.ts.map +1 -0
- package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +3 -3
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/capabilities/{url-handler/url-handler.d.ts → url-handler.d.ts} +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts.map +1 -0
- package/dist/types/src/components/ContentError.stories.d.ts +26 -19
- package/dist/types/src/components/ContentError.stories.d.ts.map +1 -1
- package/dist/types/src/components/DebugOverlay/DebugOverlay.d.ts +19 -0
- package/dist/types/src/components/DebugOverlay/DebugOverlay.d.ts.map +1 -0
- package/dist/types/src/components/DebugOverlay/index.d.ts +2 -0
- package/dist/types/src/components/DebugOverlay/index.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Home/Home.d.ts.map +1 -1
- package/dist/types/src/components/Loading/Loading.d.ts +3 -0
- package/dist/types/src/components/Loading/Loading.d.ts.map +1 -0
- package/dist/types/src/components/{ContentLoading/ContentLoading.stories.d.ts → Loading/Loading.stories.d.ts} +1 -1
- package/dist/types/src/components/Loading/Loading.stories.d.ts.map +1 -0
- package/dist/types/src/components/Loading/index.d.ts +2 -0
- package/dist/types/src/components/Loading/index.d.ts.map +1 -0
- package/dist/types/src/components/MobileLayout/MobileLayout.d.ts +2 -2
- package/dist/types/src/components/MobileLayout/MobileLayout.d.ts.map +1 -1
- package/dist/types/src/components/MobileLayout/MobileLayout.stories.d.ts.map +1 -1
- package/dist/types/src/components/NavBranch/NavBranch.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/AppBar.d.ts +5 -7
- package/dist/types/src/components/SimpleLayout/AppBar.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/AppBar.stories.d.ts +29 -22
- package/dist/types/src/components/SimpleLayout/AppBar.stories.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/Drawer.d.ts +4 -7
- package/dist/types/src/components/SimpleLayout/Drawer.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/Main.d.ts +4 -7
- package/dist/types/src/components/SimpleLayout/Main.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/NavBar.d.ts +5 -7
- package/dist/types/src/components/SimpleLayout/NavBar.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/NavBar.stories.d.ts +29 -23
- package/dist/types/src/components/SimpleLayout/NavBar.stories.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/SimpleLayout.d.ts.map +1 -1
- package/dist/types/src/components/SimpleLayout/SimpleLayout.stories.d.ts +26 -25
- package/dist/types/src/components/SimpleLayout/SimpleLayout.stories.d.ts.map +1 -1
- package/dist/types/src/components/hooks.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/actions.d.ts +3 -3
- package/dist/types/src/hooks/actions.d.ts.map +1 -1
- package/dist/types/src/hooks/useAppBarProps.d.ts +2 -2
- package/dist/types/src/hooks/useAppBarProps.d.ts.map +1 -1
- package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
- package/dist/types/src/hooks/useDrawerActions.d.ts.map +1 -1
- package/dist/types/src/hooks/useSimpleLayoutState.d.ts +3 -3
- package/dist/types/src/hooks/useSimpleLayoutState.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/close.d.ts +5 -0
- package/dist/types/src/operations/close.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/operations/open.d.ts +5 -0
- package/dist/types/src/operations/open.d.ts.map +1 -0
- package/dist/types/src/operations/revert-workspace.d.ts +5 -0
- package/dist/types/src/operations/revert-workspace.d.ts.map +1 -0
- package/dist/types/src/operations/set-layout-mode.d.ts +5 -0
- package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -0
- package/dist/types/src/operations/set.d.ts +5 -0
- package/dist/types/src/operations/set.d.ts.map +1 -0
- package/dist/types/src/operations/state-access.d.ts +8 -0
- package/dist/types/src/operations/state-access.d.ts.map +1 -0
- package/dist/types/src/operations/switch-workspace.d.ts +5 -0
- package/dist/types/src/operations/switch-workspace.d.ts.map +1 -0
- package/dist/types/src/operations/update-complementary.d.ts +5 -0
- package/dist/types/src/operations/update-complementary.d.ts.map +1 -0
- package/dist/types/src/operations/update-dialog.d.ts +5 -0
- package/dist/types/src/operations/update-dialog.d.ts.map +1 -0
- package/dist/types/src/operations/update-popover.d.ts +5 -0
- package/dist/types/src/operations/update-popover.d.ts.map +1 -0
- package/dist/types/src/operations/update-sidebar.d.ts +5 -0
- package/dist/types/src/operations/update-sidebar.d.ts.map +1 -0
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +26 -20
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/{capabilities.d.ts → SimpleLayoutCapabilities.d.ts} +12 -10
- package/dist/types/src/types/SimpleLayoutCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/SimpleLayoutEvents.d.ts +4 -0
- package/dist/types/src/types/SimpleLayoutEvents.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +87 -37
- package/src/SimpleLayoutPlugin.ts +19 -8
- package/src/capabilities/app-graph-builder.ts +21 -0
- package/src/capabilities/index.ts +13 -6
- package/src/capabilities/operation-handler.ts +14 -0
- package/src/capabilities/{react-root/react-root.tsx → react-root.tsx} +2 -2
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +13 -6
- package/src/capabilities/{state/state.tsx → state.tsx} +5 -6
- package/src/capabilities/url-handler.ts +164 -0
- package/src/components/ContentError.stories.tsx +1 -1
- package/src/components/DebugOverlay/DebugOverlay.tsx +96 -0
- package/src/components/DebugOverlay/index.ts +5 -0
- package/src/components/Dialog/Dialog.tsx +14 -3
- package/src/components/Home/Home.tsx +31 -31
- package/src/components/{ContentLoading/ContentLoading.stories.tsx → Loading/Loading.stories.tsx} +4 -4
- package/src/components/{ContentLoading/ContentLoading.tsx → Loading/Loading.tsx} +2 -2
- package/src/components/{ContentLoading → Loading}/index.ts +1 -1
- package/src/components/MobileLayout/MobileLayout.stories.tsx +21 -17
- package/src/components/MobileLayout/MobileLayout.tsx +118 -51
- package/src/components/NavBranch/NavBranch.tsx +27 -33
- package/src/components/Popover/Popover.tsx +17 -21
- package/src/components/SimpleLayout/AppBar.stories.tsx +10 -10
- package/src/components/SimpleLayout/AppBar.tsx +63 -60
- package/src/components/SimpleLayout/Drawer.tsx +30 -22
- package/src/components/SimpleLayout/Main.tsx +19 -23
- package/src/components/SimpleLayout/NavBar.stories.tsx +2 -2
- package/src/components/SimpleLayout/NavBar.tsx +8 -9
- package/src/components/SimpleLayout/SimpleLayout.stories.tsx +46 -69
- package/src/components/SimpleLayout/SimpleLayout.tsx +33 -34
- package/src/components/hooks.ts +1 -1
- package/src/components/index.ts +2 -1
- package/src/hooks/actions.ts +9 -6
- package/src/hooks/useAppBarProps.ts +9 -29
- package/src/hooks/useDrawerActions.ts +7 -7
- package/src/hooks/useNavbarActions.ts +4 -4
- package/src/hooks/useSimpleLayoutState.ts +7 -5
- package/src/index.ts +2 -1
- package/src/meta.ts +7 -4
- package/src/operations/close.ts +34 -0
- package/src/operations/index.ts +16 -0
- package/src/operations/open.ts +82 -0
- package/src/operations/revert-workspace.ts +22 -0
- package/src/operations/set-layout-mode.ts +12 -0
- package/src/operations/set.ts +23 -0
- package/src/operations/state-access.ts +21 -0
- package/src/operations/switch-workspace.ts +26 -0
- package/src/operations/update-complementary.ts +35 -0
- package/src/operations/update-dialog.ts +28 -0
- package/src/operations/update-popover.ts +35 -0
- package/src/operations/update-sidebar.ts +12 -0
- package/src/plugin.ts +11 -0
- package/src/translations.ts +21 -19
- package/src/types/{capabilities.ts → SimpleLayoutCapabilities.ts} +6 -18
- package/src/types/SimpleLayoutEvents.ts +15 -0
- package/src/types/index.ts +2 -2
- package/dist/lib/browser/chunk-MDPEKLKR.mjs +0 -1163
- package/dist/lib/browser/chunk-MDPEKLKR.mjs.map +0 -7
- package/dist/lib/browser/chunk-MRR7PXSM.mjs +0 -29
- package/dist/lib/browser/chunk-MRR7PXSM.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -101
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/operation-resolver-VTZ6HZ4B.mjs +0 -194
- package/dist/lib/browser/operation-resolver-VTZ6HZ4B.mjs.map +0 -7
- package/dist/lib/browser/react-root-WVQYY2JA.mjs.map +0 -7
- package/dist/lib/browser/react-surface-VLBR37ED.mjs.map +0 -7
- package/dist/lib/browser/spotlight-dismiss-67PHYS5B.mjs.map +0 -7
- package/dist/lib/browser/state-TXSMUWYI.mjs.map +0 -7
- package/dist/lib/browser/url-handler-RBRONH7S.mjs +0 -151
- package/dist/lib/browser/url-handler-RBRONH7S.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DCKASLMP.mjs +0 -1164
- package/dist/lib/node-esm/chunk-DCKASLMP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WMNTJ2MK.mjs +0 -31
- package/dist/lib/node-esm/chunk-WMNTJ2MK.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -102
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/operation-resolver-R7CQ6ERU.mjs +0 -195
- package/dist/lib/node-esm/operation-resolver-R7CQ6ERU.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-XBNDM7BE.mjs +0 -22
- package/dist/lib/node-esm/react-root-XBNDM7BE.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-U5NHA367.mjs +0 -45
- package/dist/lib/node-esm/react-surface-U5NHA367.mjs.map +0 -7
- package/dist/lib/node-esm/spotlight-dismiss-RMLRZUVY.mjs +0 -68
- package/dist/lib/node-esm/state-JMX6FAG4.mjs +0 -49
- package/dist/lib/node-esm/state-JMX6FAG4.mjs.map +0 -7
- package/dist/lib/node-esm/url-handler-QSMCH3JB.mjs +0 -152
- package/dist/lib/node-esm/url-handler-QSMCH3JB.mjs.map +0 -7
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root/index.d.ts +0 -6
- package/dist/types/src/capabilities/react-root/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root/react-root.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/spotlight-dismiss/index.d.ts +0 -3
- package/dist/types/src/capabilities/spotlight-dismiss/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/spotlight-dismiss/spotlight-dismiss.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/index.d.ts +0 -13
- package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
- package/dist/types/src/capabilities/url-handler/index.d.ts +0 -3
- package/dist/types/src/capabilities/url-handler/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +0 -1
- package/dist/types/src/components/ContentLoading/ContentLoading.d.ts +0 -3
- package/dist/types/src/components/ContentLoading/ContentLoading.d.ts.map +0 -1
- package/dist/types/src/components/ContentLoading/ContentLoading.stories.d.ts.map +0 -1
- package/dist/types/src/components/ContentLoading/index.d.ts +0 -2
- package/dist/types/src/components/ContentLoading/index.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/dist/types/src/types/events.d.ts +0 -6
- package/dist/types/src/types/events.d.ts.map +0 -1
- package/src/capabilities/operation-resolver/index.ts +0 -10
- package/src/capabilities/operation-resolver/operation-resolver.ts +0 -202
- package/src/capabilities/react-root/index.ts +0 -7
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/spotlight-dismiss/index.ts +0 -7
- package/src/capabilities/state/index.ts +0 -9
- package/src/capabilities/url-handler/index.ts +0 -7
- package/src/capabilities/url-handler/url-handler.ts +0 -133
- package/src/types/events.ts +0 -15
- /package/dist/types/src/capabilities/{react-root/react-root.d.ts → react-root.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
- /package/src/capabilities/{spotlight-dismiss/spotlight-dismiss.ts → spotlight-dismiss.ts} +0 -0
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SimpleLayoutState
|
|
3
|
-
} from "./chunk-MRR7PXSM.mjs";
|
|
4
|
-
|
|
5
|
-
// src/capabilities/operation-resolver/operation-resolver.ts
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
8
|
-
import { getCompanionVariant, LayoutOperation, isPinnedWorkspace } from "@dxos/app-toolkit";
|
|
9
|
-
import { Operation, OperationResolver } from "@dxos/operation";
|
|
10
|
-
var MAX_HISTORY_LENGTH = 50;
|
|
11
|
-
var operation_resolver_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
12
|
-
const registry = yield* Capability.get(Capabilities.AtomRegistry);
|
|
13
|
-
const stateAtom = yield* Capability.get(SimpleLayoutState);
|
|
14
|
-
const getState = () => registry.get(stateAtom);
|
|
15
|
-
const updateState = (fn) => {
|
|
16
|
-
registry.set(stateAtom, fn(getState()));
|
|
17
|
-
};
|
|
18
|
-
return Capability.contributes(Capabilities.OperationResolver, [
|
|
19
|
-
//
|
|
20
|
-
// SetLayoutMode
|
|
21
|
-
//
|
|
22
|
-
// TODO(burdon): No-op for to fix startup bug?
|
|
23
|
-
OperationResolver.make({
|
|
24
|
-
operation: LayoutOperation.SetLayoutMode,
|
|
25
|
-
handler: Effect.fnUntraced(function* () {
|
|
26
|
-
})
|
|
27
|
-
}),
|
|
28
|
-
//
|
|
29
|
-
// UpdateSidebar - No-op for simple layout.
|
|
30
|
-
//
|
|
31
|
-
OperationResolver.make({
|
|
32
|
-
operation: LayoutOperation.UpdateSidebar,
|
|
33
|
-
handler: () => Effect.void
|
|
34
|
-
}),
|
|
35
|
-
//
|
|
36
|
-
// UpdateComplementary - Controls companion drawer.
|
|
37
|
-
//
|
|
38
|
-
// TODO(wittjosiah): Not sure if we should be using this for the drawer.
|
|
39
|
-
OperationResolver.make({
|
|
40
|
-
operation: LayoutOperation.UpdateComplementary,
|
|
41
|
-
handler: Effect.fnUntraced(function* (input) {
|
|
42
|
-
if (input.state === "closed") {
|
|
43
|
-
updateState((state) => ({
|
|
44
|
-
...state,
|
|
45
|
-
drawerState: "closed"
|
|
46
|
-
}));
|
|
47
|
-
} else if (input.subject) {
|
|
48
|
-
const variant = getCompanionVariant(input.subject);
|
|
49
|
-
updateState((state) => ({
|
|
50
|
-
...state,
|
|
51
|
-
companionVariant: variant,
|
|
52
|
-
drawerState: input.state === "expanded" ? "expanded" : "open"
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
})
|
|
56
|
-
}),
|
|
57
|
-
//
|
|
58
|
-
// UpdateDialog
|
|
59
|
-
//
|
|
60
|
-
OperationResolver.make({
|
|
61
|
-
operation: LayoutOperation.UpdateDialog,
|
|
62
|
-
handler: Effect.fnUntraced(function* (input) {
|
|
63
|
-
updateState((state) => ({
|
|
64
|
-
...state,
|
|
65
|
-
dialogOpen: input.state ?? Boolean(input.subject),
|
|
66
|
-
dialogType: input.type ?? "default",
|
|
67
|
-
dialogBlockAlign: input.blockAlign ?? "center",
|
|
68
|
-
dialogOverlayClasses: input.overlayClasses,
|
|
69
|
-
dialogOverlayStyle: input.overlayStyle,
|
|
70
|
-
dialogContent: input.subject ? {
|
|
71
|
-
component: input.subject,
|
|
72
|
-
props: input.props
|
|
73
|
-
} : void 0
|
|
74
|
-
}));
|
|
75
|
-
})
|
|
76
|
-
}),
|
|
77
|
-
//
|
|
78
|
-
// UpdatePopover
|
|
79
|
-
//
|
|
80
|
-
OperationResolver.make({
|
|
81
|
-
operation: LayoutOperation.UpdatePopover,
|
|
82
|
-
handler: Effect.fnUntraced(function* (input) {
|
|
83
|
-
updateState((state) => ({
|
|
84
|
-
...state,
|
|
85
|
-
popoverOpen: input.state ?? Boolean(input.subject),
|
|
86
|
-
popoverKind: input.kind ?? "base",
|
|
87
|
-
popoverTitle: input.kind === "card" ? input.title : void 0,
|
|
88
|
-
popoverContent: typeof input.subject === "string" ? {
|
|
89
|
-
component: input.subject,
|
|
90
|
-
props: input.props
|
|
91
|
-
} : input.subject ? {
|
|
92
|
-
subject: input.subject
|
|
93
|
-
} : void 0,
|
|
94
|
-
popoverSide: input.side,
|
|
95
|
-
popoverVariant: input.variant,
|
|
96
|
-
popoverAnchor: input.variant === "virtual" ? input.anchor : state.popoverAnchor,
|
|
97
|
-
popoverAnchorId: input.variant !== "virtual" ? input.anchorId : state.popoverAnchorId
|
|
98
|
-
}));
|
|
99
|
-
})
|
|
100
|
-
}),
|
|
101
|
-
//
|
|
102
|
-
// SwitchWorkspace
|
|
103
|
-
//
|
|
104
|
-
OperationResolver.make({
|
|
105
|
-
operation: LayoutOperation.SwitchWorkspace,
|
|
106
|
-
handler: Effect.fnUntraced(function* (input) {
|
|
107
|
-
updateState((state) => ({
|
|
108
|
-
...state,
|
|
109
|
-
// TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.
|
|
110
|
-
// Ideally this should be worked into the data model in a generic way.
|
|
111
|
-
previousWorkspace: !isPinnedWorkspace(state.workspace) ? state.workspace : state.previousWorkspace,
|
|
112
|
-
workspace: input.subject,
|
|
113
|
-
active: void 0,
|
|
114
|
-
// Clear history when switching workspaces.
|
|
115
|
-
history: []
|
|
116
|
-
}));
|
|
117
|
-
})
|
|
118
|
-
}),
|
|
119
|
-
//
|
|
120
|
-
// RevertWorkspace
|
|
121
|
-
//
|
|
122
|
-
OperationResolver.make({
|
|
123
|
-
operation: LayoutOperation.RevertWorkspace,
|
|
124
|
-
handler: Effect.fnUntraced(function* () {
|
|
125
|
-
const state = getState();
|
|
126
|
-
yield* Operation.invoke(LayoutOperation.SwitchWorkspace, {
|
|
127
|
-
subject: state.previousWorkspace
|
|
128
|
-
});
|
|
129
|
-
})
|
|
130
|
-
}),
|
|
131
|
-
//
|
|
132
|
-
// Open
|
|
133
|
-
//
|
|
134
|
-
OperationResolver.make({
|
|
135
|
-
operation: LayoutOperation.Open,
|
|
136
|
-
handler: Effect.fnUntraced(function* (input) {
|
|
137
|
-
const id = input.subject[0];
|
|
138
|
-
updateState((state) => {
|
|
139
|
-
const newHistory = state.active ? [
|
|
140
|
-
...state.history,
|
|
141
|
-
state.active
|
|
142
|
-
] : state.history;
|
|
143
|
-
const trimmedHistory = newHistory.length > MAX_HISTORY_LENGTH ? newHistory.slice(-MAX_HISTORY_LENGTH) : newHistory;
|
|
144
|
-
return {
|
|
145
|
-
...state,
|
|
146
|
-
active: id,
|
|
147
|
-
history: trimmedHistory
|
|
148
|
-
};
|
|
149
|
-
});
|
|
150
|
-
})
|
|
151
|
-
}),
|
|
152
|
-
//
|
|
153
|
-
// Close
|
|
154
|
-
//
|
|
155
|
-
OperationResolver.make({
|
|
156
|
-
operation: LayoutOperation.Close,
|
|
157
|
-
handler: Effect.fnUntraced(function* () {
|
|
158
|
-
updateState((state) => {
|
|
159
|
-
if (state.history.length > 0) {
|
|
160
|
-
const newHistory = [
|
|
161
|
-
...state.history
|
|
162
|
-
];
|
|
163
|
-
const previousActive = newHistory.pop();
|
|
164
|
-
return {
|
|
165
|
-
...state,
|
|
166
|
-
active: previousActive,
|
|
167
|
-
history: newHistory
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
return {
|
|
171
|
-
...state,
|
|
172
|
-
active: void 0
|
|
173
|
-
};
|
|
174
|
-
});
|
|
175
|
-
})
|
|
176
|
-
}),
|
|
177
|
-
//
|
|
178
|
-
// Set
|
|
179
|
-
//
|
|
180
|
-
OperationResolver.make({
|
|
181
|
-
operation: LayoutOperation.Set,
|
|
182
|
-
handler: Effect.fnUntraced(function* (input) {
|
|
183
|
-
updateState((state) => ({
|
|
184
|
-
...state,
|
|
185
|
-
active: input.subject[0]
|
|
186
|
-
}));
|
|
187
|
-
})
|
|
188
|
-
})
|
|
189
|
-
]);
|
|
190
|
-
}));
|
|
191
|
-
export {
|
|
192
|
-
operation_resolver_default as default
|
|
193
|
-
};
|
|
194
|
-
//# sourceMappingURL=operation-resolver-VTZ6HZ4B.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/operation-resolver/operation-resolver.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 { getCompanionVariant, LayoutOperation, isPinnedWorkspace } from '@dxos/app-toolkit';\nimport { Operation, OperationResolver } from '@dxos/operation';\n\nimport { type SimpleLayoutState, SimpleLayoutState as SimpleLayoutStateCapability } from '../../types';\n\n/** Maximum number of items to keep in navigation history. */\nconst MAX_HISTORY_LENGTH = 50;\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const stateAtom = yield* Capability.get(SimpleLayoutStateCapability);\n\n const getState = () => registry.get(stateAtom);\n const updateState = (fn: (current: SimpleLayoutState) => SimpleLayoutState) => {\n registry.set(stateAtom, fn(getState()));\n };\n\n return Capability.contributes(Capabilities.OperationResolver, [\n //\n // SetLayoutMode\n //\n // TODO(burdon): No-op for to fix startup bug?\n OperationResolver.make({\n operation: LayoutOperation.SetLayoutMode,\n handler: Effect.fnUntraced(function* () {}),\n }),\n\n //\n // UpdateSidebar - No-op for simple layout.\n //\n OperationResolver.make({\n operation: LayoutOperation.UpdateSidebar,\n handler: () => Effect.void,\n }),\n\n //\n // UpdateComplementary - Controls companion drawer.\n //\n // TODO(wittjosiah): Not sure if we should be using this for the drawer.\n OperationResolver.make({\n operation: LayoutOperation.UpdateComplementary,\n handler: Effect.fnUntraced(function* (input) {\n if (input.state === 'closed') {\n updateState((state) => ({\n ...state,\n drawerState: 'closed',\n }));\n } else if (input.subject) {\n const variant = getCompanionVariant(input.subject);\n updateState((state) => ({\n ...state,\n companionVariant: variant,\n drawerState: input.state === 'expanded' ? 'expanded' : 'open',\n }));\n }\n }),\n }),\n\n //\n // UpdateDialog\n //\n OperationResolver.make({\n operation: LayoutOperation.UpdateDialog,\n handler: Effect.fnUntraced(function* (input) {\n updateState((state) => ({\n ...state,\n dialogOpen: input.state ?? Boolean(input.subject),\n dialogType: input.type ?? 'default',\n dialogBlockAlign: input.blockAlign ?? 'center',\n dialogOverlayClasses: input.overlayClasses,\n dialogOverlayStyle: input.overlayStyle,\n dialogContent: input.subject ? { component: input.subject, props: input.props } : undefined,\n }));\n }),\n }),\n\n //\n // UpdatePopover\n //\n OperationResolver.make({\n operation: LayoutOperation.UpdatePopover,\n handler: Effect.fnUntraced(function* (input) {\n updateState((state) => ({\n ...state,\n popoverOpen: input.state ?? Boolean(input.subject),\n popoverKind: input.kind ?? 'base',\n popoverTitle: input.kind === 'card' ? input.title : undefined,\n popoverContent:\n typeof input.subject === 'string'\n ? { component: input.subject, props: input.props }\n : input.subject\n ? { subject: input.subject }\n : undefined,\n popoverSide: input.side,\n popoverVariant: input.variant,\n popoverAnchor: input.variant === 'virtual' ? input.anchor : state.popoverAnchor,\n popoverAnchorId: input.variant !== 'virtual' ? input.anchorId : state.popoverAnchorId,\n }));\n }),\n }),\n\n //\n // SwitchWorkspace\n //\n OperationResolver.make({\n operation: LayoutOperation.SwitchWorkspace,\n handler: Effect.fnUntraced(function* (input) {\n updateState((state) => ({\n ...state,\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n previousWorkspace: !isPinnedWorkspace(state.workspace) ? state.workspace : state.previousWorkspace,\n workspace: input.subject,\n active: undefined,\n // Clear history when switching workspaces.\n history: [],\n }));\n }),\n }),\n\n //\n // RevertWorkspace\n //\n OperationResolver.make({\n operation: LayoutOperation.RevertWorkspace,\n handler: Effect.fnUntraced(function* () {\n const state = getState();\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, {\n subject: state.previousWorkspace,\n });\n }),\n }),\n\n //\n // Open\n //\n OperationResolver.make({\n operation: LayoutOperation.Open,\n handler: Effect.fnUntraced(function* (input) {\n const id = input.subject[0];\n updateState((state) => {\n const newHistory = state.active ? [...state.history, state.active] : state.history;\n const trimmedHistory =\n newHistory.length > MAX_HISTORY_LENGTH ? newHistory.slice(-MAX_HISTORY_LENGTH) : newHistory;\n return {\n ...state,\n active: id,\n history: trimmedHistory,\n };\n });\n }),\n }),\n\n //\n // Close\n //\n OperationResolver.make({\n operation: LayoutOperation.Close,\n handler: Effect.fnUntraced(function* () {\n updateState((state) => {\n // Pop from history if available.\n if (state.history.length > 0) {\n const newHistory = [...state.history];\n const previousActive = newHistory.pop();\n return {\n ...state,\n active: previousActive,\n history: newHistory,\n };\n }\n // No history, just clear active.\n return {\n ...state,\n active: undefined,\n };\n });\n }),\n }),\n\n //\n // Set\n //\n OperationResolver.make({\n operation: LayoutOperation.Set,\n handler: Effect.fnUntraced(function* (input) {\n updateState((state) => ({\n ...state,\n active: input.subject[0],\n }));\n }),\n }),\n ]);\n }),\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "getCompanionVariant", "LayoutOperation", "isPinnedWorkspace", "Operation", "OperationResolver", "MAX_HISTORY_LENGTH", "Capability", "makeModule", "fnUntraced", "registry", "get", "Capabilities", "AtomRegistry", "stateAtom", "SimpleLayoutStateCapability", "getState", "updateState", "fn", "set", "contributes", "OperationResolver", "make", "operation", "LayoutOperation", "SetLayoutMode", "handler", "UpdateSidebar", "void", "UpdateComplementary", "input", "state", "drawerState", "subject", "variant", "getCompanionVariant", "companionVariant", "UpdateDialog", "dialogOpen", "Boolean", "dialogType", "type", "dialogBlockAlign", "blockAlign", "dialogOverlayClasses", "overlayClasses", "dialogOverlayStyle", "overlayStyle", "dialogContent", "component", "props", "undefined", "UpdatePopover", "popoverOpen", "popoverKind", "kind", "popoverTitle", "title", "popoverContent", "popoverSide", "side", "popoverVariant", "popoverAnchor", "anchor", "popoverAnchorId", "anchorId", "SwitchWorkspace", "previousWorkspace", "isPinnedWorkspace", "workspace", "active", "history", "RevertWorkspace", "Operation", "invoke", "Open", "id", "newHistory", "trimmedHistory", "length", "slice", "Close", "previousActive", "pop", "Set"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-root/react-root.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';\n\nimport { SimpleLayout } from '../../components';\nimport { meta } from '../../meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactRoot, {\n id: meta.id,\n root: () => {\n return <SimpleLayout />;\n },\n }),\n ),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AAKzC,IAAA,qBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,WAAW;EAC7CC,IAAIC,KAAKD;EACTE,MAAM,MAAA;AACJ,WAAO,sBAAA,cAACC,cAAAA,IAAAA;EACV;AACF,CAAA,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "React", "Capabilities", "Capability", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactRoot", "id", "meta", "root", "SimpleLayout"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface/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 } from '@dxos/app-framework/ui';\nimport { Node } from '@dxos/plugin-graph';\n\nimport { Home, NavBranch } from '../../components';\nimport { meta } from '../../meta';\n\ntype SurfaceData = {\n attendableId: string;\n properties: Record<string, any>;\n};\n\nconst ALLOWED_DISPOSITIONS = ['workspace', 'user-account', 'pin-end', 'alternate-tree'];\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: `${meta.id}.home`,\n role: 'article',\n filter: (data): data is SurfaceData => data.attendableId === Node.RootId,\n component: () => <Home />,\n }),\n Surface.create({\n id: `${meta.id}.nav-branch`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is SurfaceData => {\n const props = data.properties as Record<string, any>;\n return ALLOWED_DISPOSITIONS.includes(props?.disposition) || props?.role === 'branch';\n },\n component: ({ data }) => <NavBranch id={data.attendableId} />,\n }),\n ]),\n ),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,YAAY;AAUrB,IAAMC,uBAAuB;EAAC;EAAa;EAAgB;EAAW;;AAEtE,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SAA8BA,KAAKC,iBAAiBC,KAAKC;IAClEC,WAAW,MAAM,sBAAA,cAACC,MAAAA,IAAAA;EACpB,CAAA;EACAX,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNQ,UAAU;IACVP,QAAQ,CAACC,SAAAA;AACP,YAAMO,QAAQP,KAAKQ;AACnB,aAAOrB,qBAAqBsB,SAASF,OAAOG,WAAAA,KAAgBH,OAAOT,SAAS;IAC9E;IACAM,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACW,WAAAA;MAAUf,IAAII,KAAKC;;EAC/C,CAAA;CACD,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "React", "Capabilities", "Capability", "Surface", "Node", "ALLOWED_DISPOSITIONS", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "attendableId", "Node", "RootId", "component", "Home", "position", "props", "properties", "includes", "disposition", "NavBranch"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/spotlight-dismiss/spotlight-dismiss.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// Based on the frontend-driven dismiss pattern from:\n// https://github.com/Jedliu/tauri-template-demo\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { isTauri } from '@dxos/util';\n\n/**\n * Get the Tauri window API from the global object.\n */\nconst getTauriWindow = (): any => {\n const tauri = (globalThis as any).__TAURI__;\n return tauri?.window;\n};\n\n/**\n * Get the Tauri core API (invoke) from the global object.\n */\nconst getTauriCore = (): any => {\n const tauri = (globalThis as any).__TAURI__;\n return tauri?.core;\n};\n\nexport type SpotlightDismissOptions = {\n /** Whether running in popover window context. */\n isPopover?: boolean;\n};\n\n/**\n * Capability that sets up spotlight panel dismiss behavior.\n * When running in Tauri popover mode, listens for focus loss and Escape key\n * to dismiss the spotlight panel. Runs at startup before React renders.\n */\nexport default Capability.makeModule(({ isPopover = false }: SpotlightDismissOptions = {}) =>\n Effect.promise(async () => {\n if (!isPopover || !isTauri()) {\n return [];\n }\n\n // Set up focus listener.\n let focusCleanup: (() => void) | undefined;\n try {\n const tauriWindow = getTauriWindow();\n const tauriCore = getTauriCore();\n if (tauriWindow && tauriCore) {\n const win = tauriWindow.getCurrentWindow();\n focusCleanup = await win.onFocusChanged(async ({ payload }: { payload: boolean }) => {\n if (!payload) {\n await tauriCore.invoke('hide_spotlight');\n }\n });\n }\n } catch (err) {\n log.catch(err);\n }\n\n // Set up Escape key listener.\n const handleKeyDown = async (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n try {\n const tauriCore = getTauriCore();\n if (tauriCore) {\n await tauriCore.invoke('hide_spotlight');\n }\n } catch (err) {\n log.catch(err);\n }\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n focusCleanup?.();\n window.removeEventListener('keydown', handleKeyDown);\n }),\n );\n }),\n);\n"],
|
|
5
|
-
"mappings": ";AAOA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,WAAW;AACpB,SAASC,eAAe;;AAKxB,IAAMC,iBAAiB,MAAA;AACrB,QAAMC,QAASC,WAAmBC;AAClC,SAAOF,OAAOG;AAChB;AAKA,IAAMC,eAAe,MAAA;AACnB,QAAMJ,QAASC,WAAmBC;AAClC,SAAOF,OAAOK;AAChB;AAYA,IAAA,4BAAeT,WAAWU,WAAW,CAAC,EAAEC,YAAY,MAAK,IAA8B,CAAC,MAC/EC,eAAQ,YAAA;AACb,MAAI,CAACD,aAAa,CAACT,QAAAA,GAAW;AAC5B,WAAO,CAAA;EACT;AAGA,MAAIW;AACJ,MAAI;AACF,UAAMC,cAAcX,eAAAA;AACpB,UAAMY,YAAYP,aAAAA;AAClB,QAAIM,eAAeC,WAAW;AAC5B,YAAMC,MAAMF,YAAYG,iBAAgB;AACxCJ,qBAAe,MAAMG,IAAIE,eAAe,OAAO,EAAEC,QAAO,MAAwB;AAC9E,YAAI,CAACA,SAAS;AACZ,gBAAMJ,UAAUK,OAAO,gBAAA;QACzB;MACF,CAAA;IACF;EACF,SAASC,KAAK;AACZpB,QAAIqB,MAAMD,KAAAA,QAAAA;;;;;;EACZ;AAGA,QAAME,gBAAgB,OAAOC,UAAAA;AAC3B,QAAIA,MAAMC,QAAQ,UAAU;AAC1BD,YAAME,eAAc;AACpB,UAAI;AACF,cAAMX,YAAYP,aAAAA;AAClB,YAAIO,WAAW;AACb,gBAAMA,UAAUK,OAAO,gBAAA;QACzB;MACF,SAASC,KAAK;AACZpB,YAAIqB,MAAMD,KAAAA,QAAAA;;;;;;MACZ;IACF;EACF;AACAd,SAAOoB,iBAAiB,WAAWJ,aAAAA;AAEnC,SAAOvB,WAAW4B,YAAY7B,aAAa8B,MAAM,MAAM,MAC9CC,YAAK,MAAA;AACVjB,mBAAAA;AACAN,WAAOwB,oBAAoB,WAAWR,aAAAA;EACxC,CAAA,CAAA;AAEJ,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "log", "isTauri", "getTauriWindow", "tauri", "globalThis", "__TAURI__", "window", "getTauriCore", "core", "makeModule", "isPopover", "promise", "focusCleanup", "tauriWindow", "tauriCore", "win", "getCurrentWindow", "onFocusChanged", "payload", "invoke", "err", "catch", "handleKeyDown", "event", "key", "preventDefault", "addEventListener", "contributes", "Null", "sync", "removeEventListener"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/state/state.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Node } from '@dxos/plugin-graph';\n\nimport { type SimpleLayoutState } from '../../types';\nimport { SimpleLayoutState as SimpleLayoutStateCapability } from '../../types';\n\nconst defaultState: SimpleLayoutState = {\n dialogOpen: false,\n workspace: Node.RootId,\n previousWorkspace: Node.RootId,\n history: [],\n isPopover: false,\n companionVariant: undefined,\n drawerState: 'closed',\n};\n\nexport type SimpleLayoutStateOptions = {\n initialState?: Partial<SimpleLayoutState>;\n};\n\nexport default Capability.makeModule(({ initialState }: SimpleLayoutStateOptions = {}) =>\n Effect.sync(() => {\n const stateAtom = Atom.make<SimpleLayoutState>({ ...defaultState, ...initialState });\n\n const layoutAtom = Atom.make((get): AppCapabilities.Layout => {\n const state = get(stateAtom);\n return {\n mode: 'simple',\n dialogOpen: state.dialogOpen,\n sidebarOpen: false,\n complementarySidebarOpen: false,\n workspace: state.workspace,\n active: state.active ? [state.active] : [],\n inactive: [],\n scrollIntoView: undefined,\n };\n });\n\n return [\n Capability.contributes(SimpleLayoutStateCapability, stateAtom),\n Capability.contributes(AppCapabilities.Layout, layoutAtom),\n ];\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,YAAY;AAKrB,IAAMC,eAAkC;EACtCC,YAAY;EACZC,WAAWC,KAAKC;EAChBC,mBAAmBF,KAAKC;EACxBE,SAAS,CAAA;EACTC,WAAW;EACXC,kBAAkBC;EAClBC,aAAa;AACf;AAMA,IAAA,gBAAeC,WAAWC,WAAW,CAAC,EAAEC,aAAY,IAA+B,CAAC,MAC3EC,YAAK,MAAA;AACV,QAAMC,YAAYC,KAAKC,KAAwB;IAAE,GAAGjB;IAAc,GAAGa;EAAa,CAAA;AAElF,QAAMK,aAAaF,KAAKC,KAAK,CAACE,QAAAA;AAC5B,UAAMC,QAAQD,IAAIJ,SAAAA;AAClB,WAAO;MACLM,MAAM;MACNpB,YAAYmB,MAAMnB;MAClBqB,aAAa;MACbC,0BAA0B;MAC1BrB,WAAWkB,MAAMlB;MACjBsB,QAAQJ,MAAMI,SAAS;QAACJ,MAAMI;UAAU,CAAA;MACxCC,UAAU,CAAA;MACVC,gBAAgBjB;IAClB;EACF,CAAA;AAEA,SAAO;IACLE,WAAWgB,YAAYC,mBAA6Bb,SAAAA;IACpDJ,WAAWgB,YAAYE,gBAAgBC,QAAQZ,UAAAA;;AAEnD,CAAA,CAAA;",
|
|
6
|
-
"names": ["Atom", "Effect", "Capability", "AppCapabilities", "Node", "defaultState", "dialogOpen", "workspace", "Node", "RootId", "previousWorkspace", "history", "isPopover", "companionVariant", "undefined", "drawerState", "Capability", "makeModule", "initialState", "sync", "stateAtom", "Atom", "make", "layoutAtom", "get", "state", "mode", "sidebarOpen", "complementarySidebarOpen", "active", "inactive", "scrollIntoView", "contributes", "SimpleLayoutStateCapability", "AppCapabilities", "Layout"]
|
|
7
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SimpleLayoutState
|
|
3
|
-
} from "./chunk-MRR7PXSM.mjs";
|
|
4
|
-
|
|
5
|
-
// src/capabilities/url-handler/url-handler.ts
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
8
|
-
import { LayoutOperation, fromUrlPath, getWorkspaceFromPath, toUrlPath } from "@dxos/app-toolkit";
|
|
9
|
-
import { log } from "@dxos/log";
|
|
10
|
-
import { isTauri } from "@dxos/util";
|
|
11
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-simple-layout/src/capabilities/url-handler/url-handler.ts";
|
|
12
|
-
var url_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
13
|
-
const { invokeSync } = yield* Capability.get(Capabilities.OperationInvoker);
|
|
14
|
-
const handlePathNavigation = (pathname) => {
|
|
15
|
-
log.info("[UrlHandler] Navigating to path", {
|
|
16
|
-
pathname
|
|
17
|
-
}, {
|
|
18
|
-
F: __dxlog_file,
|
|
19
|
-
L: 30,
|
|
20
|
-
S: this,
|
|
21
|
-
C: (f, a) => f(...a)
|
|
22
|
-
});
|
|
23
|
-
const qualifiedId = fromUrlPath(pathname);
|
|
24
|
-
const workspace = getWorkspaceFromPath(qualifiedId);
|
|
25
|
-
invokeSync(LayoutOperation.SwitchWorkspace, {
|
|
26
|
-
subject: workspace
|
|
27
|
-
});
|
|
28
|
-
const activeId = qualifiedId !== workspace ? qualifiedId : void 0;
|
|
29
|
-
if (activeId) {
|
|
30
|
-
invokeSync(LayoutOperation.Open, {
|
|
31
|
-
subject: [
|
|
32
|
-
activeId
|
|
33
|
-
]
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
const onNavigation = handleNavigation(handlePathNavigation);
|
|
38
|
-
yield* Effect.sync(() => onNavigation());
|
|
39
|
-
window.addEventListener("popstate", onNavigation);
|
|
40
|
-
let unlistenDeepLink;
|
|
41
|
-
if (isTauri()) {
|
|
42
|
-
yield* Effect.tryPromise({
|
|
43
|
-
try: async () => {
|
|
44
|
-
const { getCurrent, onOpenUrl } = await import("@tauri-apps/plugin-deep-link");
|
|
45
|
-
const launchUrls = await getCurrent();
|
|
46
|
-
if (launchUrls && launchUrls.length > 0) {
|
|
47
|
-
log.info("[UrlHandler] App launched with deep links", {
|
|
48
|
-
urls: launchUrls
|
|
49
|
-
}, {
|
|
50
|
-
F: __dxlog_file,
|
|
51
|
-
L: 56,
|
|
52
|
-
S: this,
|
|
53
|
-
C: (f, a) => f(...a)
|
|
54
|
-
});
|
|
55
|
-
for (const url of launchUrls) {
|
|
56
|
-
handleDeepLink(url, handlePathNavigation);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
unlistenDeepLink = await onOpenUrl((urls) => {
|
|
60
|
-
log.info("[UrlHandler] Deep links received", {
|
|
61
|
-
urls
|
|
62
|
-
}, {
|
|
63
|
-
F: __dxlog_file,
|
|
64
|
-
L: 63,
|
|
65
|
-
S: this,
|
|
66
|
-
C: (f, a) => f(...a)
|
|
67
|
-
});
|
|
68
|
-
for (const url of urls) {
|
|
69
|
-
handleDeepLink(url, handlePathNavigation);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
log.info("[UrlHandler] Deep link listener initialized", void 0, {
|
|
73
|
-
F: __dxlog_file,
|
|
74
|
-
L: 69,
|
|
75
|
-
S: this,
|
|
76
|
-
C: (f, a) => f(...a)
|
|
77
|
-
});
|
|
78
|
-
},
|
|
79
|
-
catch: (error) => {
|
|
80
|
-
log.warn("[UrlHandler] Failed to initialize deep link listener", {
|
|
81
|
-
error
|
|
82
|
-
}, {
|
|
83
|
-
F: __dxlog_file,
|
|
84
|
-
L: 72,
|
|
85
|
-
S: this,
|
|
86
|
-
C: (f, a) => f(...a)
|
|
87
|
-
});
|
|
88
|
-
return error;
|
|
89
|
-
}
|
|
90
|
-
}).pipe(Effect.catchAll(() => Effect.void));
|
|
91
|
-
}
|
|
92
|
-
let lastWorkspace;
|
|
93
|
-
let lastActive;
|
|
94
|
-
const unsubscribe = yield* Capabilities.subscribeAtom(SimpleLayoutState, (state) => {
|
|
95
|
-
const { workspace, active } = state;
|
|
96
|
-
if (workspace !== lastWorkspace || active !== lastActive) {
|
|
97
|
-
lastWorkspace = workspace;
|
|
98
|
-
lastActive = active;
|
|
99
|
-
const path = active ? toUrlPath(active) : toUrlPath(workspace);
|
|
100
|
-
if (window.location.pathname !== path) {
|
|
101
|
-
history.pushState(null, "", `${path}${window.location.search}`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
|
|
106
|
-
window.removeEventListener("popstate", onNavigation);
|
|
107
|
-
unsubscribe();
|
|
108
|
-
unlistenDeepLink?.();
|
|
109
|
-
}));
|
|
110
|
-
}));
|
|
111
|
-
var isRedirectPath = (pathname) => pathname.startsWith("/redirect/");
|
|
112
|
-
var handleNavigation = (navigate) => () => navigate(window.location.pathname);
|
|
113
|
-
var handleDeepLink = (urlString, navigate) => {
|
|
114
|
-
log.info("[UrlHandler] Deep link received", {
|
|
115
|
-
url: urlString
|
|
116
|
-
}, {
|
|
117
|
-
F: __dxlog_file,
|
|
118
|
-
L: 122,
|
|
119
|
-
S: void 0,
|
|
120
|
-
C: (f, a) => f(...a)
|
|
121
|
-
});
|
|
122
|
-
try {
|
|
123
|
-
const url = new URL(urlString);
|
|
124
|
-
if (isRedirectPath(url.pathname)) {
|
|
125
|
-
log.info("[UrlHandler] Skipping redirect path (handled elsewhere)", {
|
|
126
|
-
pathname: url.pathname
|
|
127
|
-
}, {
|
|
128
|
-
F: __dxlog_file,
|
|
129
|
-
L: 126,
|
|
130
|
-
S: void 0,
|
|
131
|
-
C: (f, a) => f(...a)
|
|
132
|
-
});
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
navigate(url.pathname);
|
|
136
|
-
} catch (error) {
|
|
137
|
-
log.warn("[UrlHandler] Failed to parse deep link URL", {
|
|
138
|
-
urlString,
|
|
139
|
-
error
|
|
140
|
-
}, {
|
|
141
|
-
F: __dxlog_file,
|
|
142
|
-
L: 131,
|
|
143
|
-
S: void 0,
|
|
144
|
-
C: (f, a) => f(...a)
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
export {
|
|
149
|
-
url_handler_default as default
|
|
150
|
-
};
|
|
151
|
-
//# sourceMappingURL=url-handler-RBRONH7S.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/url-handler/url-handler.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, fromUrlPath, getWorkspaceFromPath, toUrlPath } from '@dxos/app-toolkit';\nimport { log } from '@dxos/log';\nimport { isTauri } from '@dxos/util';\n\nimport { type SimpleLayoutState, SimpleLayoutState as SimpleLayoutStateCapability } from '../../types';\n\n/**\n * URL handler for simple layout that syncs browser URL with layout state.\n * URL paths map directly to qualified graph IDs with the leading `root` segment stripped.\n * Root is represented as `/`.\n *\n * On mobile Tauri, also listens for deep links via the deep-link plugin.\n */\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const { invokeSync } = yield* Capability.get(Capabilities.OperationInvoker);\n\n /**\n * Handle navigation from a pathname.\n * Restores the qualified graph ID and dispatches layout operations.\n */\n const handlePathNavigation = (pathname: string) => {\n log.info('[UrlHandler] Navigating to path', { pathname });\n\n const qualifiedId = fromUrlPath(pathname);\n const workspace = getWorkspaceFromPath(qualifiedId);\n\n invokeSync(LayoutOperation.SwitchWorkspace, { subject: workspace });\n\n const activeId = qualifiedId !== workspace ? qualifiedId : undefined;\n if (activeId) {\n invokeSync(LayoutOperation.Open, { subject: [activeId] });\n }\n };\n\n const onNavigation = handleNavigation(handlePathNavigation);\n\n yield* Effect.sync(() => onNavigation());\n window.addEventListener('popstate', onNavigation);\n\n let unlistenDeepLink: (() => void) | undefined;\n if (isTauri()) {\n yield* Effect.tryPromise({\n try: async () => {\n const { getCurrent, onOpenUrl } = await import('@tauri-apps/plugin-deep-link');\n\n const launchUrls = await getCurrent();\n if (launchUrls && launchUrls.length > 0) {\n log.info('[UrlHandler] App launched with deep links', { urls: launchUrls });\n for (const url of launchUrls) {\n handleDeepLink(url, handlePathNavigation);\n }\n }\n\n unlistenDeepLink = await onOpenUrl((urls) => {\n log.info('[UrlHandler] Deep links received', { urls });\n for (const url of urls) {\n handleDeepLink(url, handlePathNavigation);\n }\n });\n\n log.info('[UrlHandler] Deep link listener initialized');\n },\n catch: (error) => {\n log.warn('[UrlHandler] Failed to initialize deep link listener', { error });\n return error;\n },\n }).pipe(Effect.catchAll(() => Effect.void));\n }\n\n let lastWorkspace: string | undefined;\n let lastActive: string | undefined;\n const unsubscribe = yield* Capabilities.subscribeAtom(SimpleLayoutStateCapability, (state: SimpleLayoutState) => {\n const { workspace, active } = state;\n\n if (workspace !== lastWorkspace || active !== lastActive) {\n lastWorkspace = workspace;\n lastActive = active;\n\n const path = active ? toUrlPath(active) : toUrlPath(workspace);\n if (window.location.pathname !== path) {\n history.pushState(null, '', `${path}${window.location.search}`);\n }\n }\n });\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n window.removeEventListener('popstate', onNavigation);\n unsubscribe();\n unlistenDeepLink?.();\n }),\n );\n }),\n);\n\n/**\n * Check if a path is a special redirect path that shouldn't be navigated to.\n * These paths are handled by other systems (e.g., OAuth).\n */\nconst isRedirectPath = (pathname: string): boolean => pathname.startsWith('/redirect/');\n\n/**\n * Returns a handler for navigation events (initial load and popstate) that navigates to current pathname.\n */\nconst handleNavigation =\n (navigate: (pathname: string) => void): (() => void) =>\n () =>\n navigate(window.location.pathname);\n\n/**\n * Handle deep link URL from Tauri. Parses the URL and calls navigate unless it's a redirect path.\n */\nconst handleDeepLink = (urlString: string, navigate: (pathname: string) => void): void => {\n log.info('[UrlHandler] Deep link received', { url: urlString });\n try {\n const url = new URL(urlString);\n if (isRedirectPath(url.pathname)) {\n log.info('[UrlHandler] Skipping redirect path (handled elsewhere)', { pathname: url.pathname });\n return;\n }\n navigate(url.pathname);\n } catch (error) {\n log.warn('[UrlHandler] Failed to parse deep link URL', { urlString, error });\n }\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "fromUrlPath", "getWorkspaceFromPath", "toUrlPath", "log", "isTauri", "Capability", "makeModule", "fnUntraced", "invokeSync", "get", "Capabilities", "OperationInvoker", "handlePathNavigation", "pathname", "log", "info", "qualifiedId", "fromUrlPath", "workspace", "getWorkspaceFromPath", "LayoutOperation", "SwitchWorkspace", "subject", "activeId", "undefined", "Open", "onNavigation", "handleNavigation", "sync", "window", "addEventListener", "unlistenDeepLink", "isTauri", "tryPromise", "try", "getCurrent", "onOpenUrl", "launchUrls", "length", "urls", "url", "handleDeepLink", "catch", "error", "warn", "pipe", "catchAll", "void", "lastWorkspace", "lastActive", "unsubscribe", "subscribeAtom", "SimpleLayoutStateCapability", "state", "active", "path", "toUrlPath", "location", "history", "pushState", "search", "contributes", "Null", "removeEventListener", "isRedirectPath", "startsWith", "navigate", "urlString", "URL"]
|
|
7
|
-
}
|