@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,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/Home/Home.tsx", "../../../src/components/hooks.ts", "../../../src/components/SimpleLayout/SimpleLayout.tsx", "../../../src/hooks/useAppBarProps.ts", "../../../src/hooks/useCompanions.ts", "../../../src/hooks/actions.ts", "../../../src/hooks/useDrawerActions.ts", "../../../src/components/ContentLoading/ContentLoading.tsx", "../../../src/components/MobileLayout/MobileLayout.tsx", "../../../src/components/Popover/Popover.tsx", "../../../src/components/SimpleLayout/AppBar.tsx", "../../../src/components/SimpleLayout/Main.tsx", "../../../src/components/SimpleLayout/NavBar.tsx", "../../../src/components/NavBranch/NavBranch.tsx", "../../../src/hooks/useSimpleLayoutState.ts", "../../../src/hooks/useNavbarActions.ts", "../../../src/components/Dialog/Dialog.tsx", "../../../src/components/SimpleLayout/Drawer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, useConnections } from '@dxos/plugin-graph';\nimport { Avatar, Icon, Panel, ScrollArea, Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\nimport { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchList, useSearchListItem, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { mx } from '@dxos/ui-theme';\nimport { byPosition } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { useExpandPath } from '../hooks';\n\nexport type HomeProps = {};\n\n/**\n * Home screen.\n */\nexport const Home = (_: HomeProps) => {\n const { t } = useTranslation(meta.id);\n const userAccountItem = useItemsByDisposition('user-account')[0];\n const pinnedItems = useItemsByDisposition('pin-end', true);\n const workspaceItems = useItemsByDisposition('workspace');\n useExpandPath(Node.RootId);\n\n const items = useMemo(\n () => [...(userAccountItem ? [userAccountItem] : []), ...pinnedItems, ...workspaceItems],\n [userAccountItem, pinnedItems, workspaceItems],\n );\n\n const { results, handleSearch } = useSearchListResults({\n items,\n extract: (node) => toLocalizedString(node.properties.label, t),\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <SearchList.Input placeholder={t('search placeholder')} autoFocus />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <SearchList.Content>\n <Mosaic.Container asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport classNames='p-2'>\n <Mosaic.Stack items={results} getId={(node) => node.id} Tile={WorkspaceTile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </SearchList.Content>\n </Panel.Content>\n </Panel.Root>\n </SearchList.Root>\n );\n};\n\nconst WorkspaceTile: MosaicStackTileComponent<Node.Node> = (props) => {\n const data = props.data;\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n const { selectedValue, registerItem, unregisterItem } = useSearchListItem();\n const name = toLocalizedString(data.properties.label, t);\n const isSelected = selectedValue === data.id;\n const cardRef = useRef<HTMLDivElement>(null);\n\n useExpandPath(data.id);\n\n const handleSelect = useCallback(\n () => invokePromise(LayoutOperation.SwitchWorkspace, { subject: data.id }),\n [invokePromise, data.id],\n );\n\n // Register this workspace with the search context.\n useEffect(() => {\n if (cardRef.current) {\n registerItem(data.id, cardRef.current, handleSelect);\n }\n\n return () => unregisterItem(data.id);\n }, [data.id, handleSelect, registerItem, unregisterItem]);\n\n // Scroll into view when selected.\n useEffect(() => {\n if (isSelected && cardRef.current) {\n cardRef.current.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isSelected]);\n\n return (\n <Card.Root\n role='button'\n fullWidth\n tabIndex={-1} // TODO(burdon): Use Mosaic.Focus.\n data-selected={isSelected}\n classNames={mx('dx-focus-ring', isSelected && 'bg-hover-overlay')}\n onClick={handleSelect}\n ref={cardRef}\n >\n <Card.Toolbar density='coarse'>\n <Avatar.Root>\n <Avatar.Content\n icon={data.properties.icon}\n hue={data.properties.hue}\n hueVariant='transparent'\n variant='square'\n size={12}\n fallback={name}\n />\n <Avatar.Label>{name}</Avatar.Label>\n <Icon icon='ph--caret-right--regular' />\n </Avatar.Root>\n </Card.Toolbar>\n </Card.Root>\n );\n};\n\n/** Filters nodes by disposition. */\nconst filterItems = (node: Node.Node, disposition: string) => {\n return node.properties.disposition === disposition;\n};\n\n/** Returns root-level items filtered by disposition. */\nconst useItemsByDisposition = (disposition: string, sort = false) => {\n const { graph } = useAppGraph();\n const connections = useConnections(graph, Node.RootId, 'child');\n const filtered = connections.filter((node) => filterItems(node, disposition));\n return sort ? filtered.toSorted((a, b) => byPosition(a.properties, b.properties)) : filtered;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { expandAttendableId } from '@dxos/react-ui-attention';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Graph } from '@dxos/plugin-graph';\n\n/**\n * Expand graph nodes along the full path from root to the given node ID.\n * Walks each progressive prefix, ensuring ancestor nodes are materialized\n * before attempting to access their children.\n */\nexport const useExpandPath = (nodeId?: string) => {\n const { graph } = useAppGraph();\n\n useEffect(() => {\n if (nodeId) {\n for (const prefix of expandAttendableId(nodeId)) {\n Graph.expand(graph, prefix, 'child');\n }\n }\n }, [nodeId, graph]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Splitter, type SplitterMode } from '@dxos/react-ui';\nimport { Mosaic } from '@dxos/react-ui-mosaic';\n\nimport { useSimpleLayoutState } from '../../hooks';\nimport { Dialog } from '../Dialog';\nimport { MobileLayout } from '../MobileLayout';\nimport { PopoverContent, PopoverRoot } from '../Popover';\n\nimport { Drawer } from './Drawer';\nimport { Main } from './Main';\n\n// TODO(burdon): Mobile/Desktop variance?\nexport const SimpleLayout = () => {\n const { state } = useSimpleLayoutState();\n const [keyboardOpen, setKeyboardOpen] = useState(false);\n const [splitterMode, setSplitterMode] = useState<SplitterMode>('upper');\n\n const drawerRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (keyboardOpen) {\n // Determine which panel has focus and expand that one.\n const activeElement = document.activeElement;\n const drawerHasFocus = drawerRef.current?.contains(activeElement);\n setSplitterMode(drawerHasFocus ? 'lower' : 'upper');\n } else {\n setSplitterMode(state.drawerState === 'closed' ? 'upper' : state.drawerState === 'open' ? 'both' : 'lower');\n }\n }, [state.drawerState, keyboardOpen]);\n\n return (\n <Mosaic.Root classNames='contents'>\n <MobileLayout.Root\n classNames='bg-toolbar-surface'\n onKeyboardOpenChange={(keyboardOpen: boolean) => setKeyboardOpen(keyboardOpen)}\n >\n <MobileLayout.Panel safe={{ top: true, bottom: splitterMode === 'upper' }}>\n <PopoverRoot>\n <Splitter.Root mode={splitterMode} ratio={0.55}>\n <Splitter.Panel position='upper'>\n <Main />\n </Splitter.Panel>\n <Splitter.Panel position='lower' ref={drawerRef}>\n <Drawer />\n </Splitter.Panel>\n </Splitter.Root>\n <Dialog />\n <PopoverContent />\n </PopoverRoot>\n </MobileLayout.Panel>\n </MobileLayout.Root>\n </Mosaic.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport { useCallback, useMemo } from 'react';\n\nimport { useCapability, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Graph, Node, useActionRunner, useNode } from '@dxos/plugin-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type ActionGraphProps } from '@dxos/react-ui-menu';\n\nimport { type AppBarProps } from '../components';\nimport { meta } from '../meta';\nimport { SimpleLayoutState as SimpleLayoutStateCapability } from '../types';\n\n/**\n * Hook that computes all AppBar props from the app graph.\n * Derives activeId from state atom. Returns props ready to spread into the AppBar component.\n */\nexport const useAppBarProps = (): Omit<AppBarProps, 'classNames'> => {\n const { t } = useTranslation(meta.id);\n const stateAtom = useCapability(SimpleLayoutStateCapability);\n const state = useAtomValue(stateAtom);\n const { graph } = useAppGraph();\n const { invokeSync } = useOperationInvoker();\n const runAction = useActionRunner();\n\n // Derive activeId from state.\n const activeId = state.active ?? state.workspace;\n const node = useNode(graph, activeId);\n\n // Compute title from node label.\n const title = node ? toLocalizedString(node.properties.label, t) : undefined;\n\n // Build actions atom filtering by disposition.\n // Derive activeId from state atom so we don't need to recreate this atom when it changes.\n const actionsAtom = useMemo(\n () =>\n Atom.make((get): ActionGraphProps => {\n const state = get(stateAtom);\n const activeId = state.active ?? state.workspace;\n const allActions = activeId ? get(graph.actions(activeId)) : [];\n const filtered = allActions.filter((action) =>\n ['list-item', 'list-item-primary', 'heading-list-item'].includes(action.properties.disposition),\n );\n const nodes: ActionGraphProps['nodes'] = filtered as ActionGraphProps['nodes'];\n const edges: ActionGraphProps['edges'] = filtered.map((action) => ({\n source: 'root',\n target: action.id,\n relation: 'child',\n }));\n\n // Add alternate-tree action (e.g. Settings) from the workspace node.\n const workspaceConnections = state.workspace ? get(graph.connections(state.workspace, 'child')) : [];\n const alternateTreeNode = workspaceConnections.find(\n (node: Node.Node) => node.properties.disposition === 'alternate-tree',\n );\n if (alternateTreeNode && activeId !== alternateTreeNode.id) {\n const settingsAction = {\n id: `appbar-settings-${alternateTreeNode.id}`,\n type: Node.ActionType,\n data: () => Effect.sync(() => invokeSync(LayoutOperation.Open, { subject: [alternateTreeNode.id] })),\n properties: {\n label: alternateTreeNode.properties.label ?? alternateTreeNode.id,\n icon: alternateTreeNode.properties.icon ?? 'ph--placeholder--regular',\n },\n };\n nodes.push(settingsAction);\n edges.push({ source: 'root', target: settingsAction.id, relation: 'child' });\n }\n\n return { nodes, edges };\n }),\n [graph, stateAtom],\n );\n\n // Back button logic.\n const showBackButton = activeId !== undefined && activeId !== Node.RootId;\n\n const onBack = useCallback(() => {\n if (state.active) {\n const isWorkspace = Graph.getNode(graph, state.active).pipe(\n Option.map((node) => node.properties.disposition === 'workspace'),\n Option.getOrElse(() => false),\n );\n\n // If history is empty and this is a workspace, go to home.\n if (state.history.length === 0 && isWorkspace) {\n invokeSync(LayoutOperation.SwitchWorkspace, { subject: Node.RootId });\n } else {\n // Otherwise, close (which will pop from history or clear active).\n invokeSync(LayoutOperation.Close, { subject: [state.active] });\n }\n } else {\n invokeSync(LayoutOperation.SwitchWorkspace, { subject: Node.RootId });\n }\n }, [graph, invokeSync, state.active, state.history.length]);\n\n // Compute popover anchor ID.\n const popoverAnchorId = node && state.popoverAnchorId === `${meta.id}:${node.id}` ? state.popoverAnchorId : undefined;\n\n return {\n title,\n actions: actionsAtom,\n showBackButton,\n popoverAnchorId,\n onBack: onBack,\n onAction: runAction,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { useConnections } from '@dxos/plugin-graph';\nimport { byPosition } from '@dxos/util';\n\nimport { PLANK_COMPANION_TYPE } from './actions';\n\n/**\n * @deprecated Adopt the pattern from useNavbarActions (deriving from graph atoms)\n * or merge the Drawer companion display into the NavBar component.\n */\nexport const useCompanions = (nodeId?: string) => {\n const { graph } = useAppGraph();\n const nodes = useConnections(graph, nodeId, 'child');\n const companions = nodes.filter((node) => node.type === PLANK_COMPANION_TYPE);\n return useMemo(() => companions.toSorted((a, b) => byPosition(a.properties, b.properties)), [companions]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { type AppCapabilities, getCompanionVariant } from '@dxos/app-toolkit';\nimport { Node } from '@dxos/plugin-graph';\nimport { type ActionGraphProps } from '@dxos/react-ui-menu';\nimport { byPosition } from '@dxos/util';\n\nimport { type SimpleLayoutState } from '../types';\n\n// TODO(wittjosiah): Factor out to shared location with plugin-deck.\nexport const PLANK_COMPANION_TYPE = 'org.dxos.plugin.deck.plank-companion';\n\nexport type CompanionActionsConfig = {\n /** Prefix for companion action IDs (e.g. 'navbar' or 'drawer') */\n idPrefix: string;\n /** Optional: highlight companion with this variant */\n selectedVariant?: string;\n /** State updater for toggling the drawer. */\n updateState: (fn: (state: SimpleLayoutState) => SimpleLayoutState) => void;\n};\n\n/**\n * Creates action graph nodes and edges for companion actions.\n * Shared logic between useNavbarActions and useDrawerActions.\n */\n// TODO(burdon): Use builder pattern.\nexport const createCompanionActions = (\n graph: AppCapabilities.AppGraph['graph'],\n stateAtom: Atom.Atom<SimpleLayoutState>,\n get: (atom: Atom.Atom<any>) => any,\n config: CompanionActionsConfig,\n): Pick<ActionGraphProps, 'nodes' | 'edges'> => {\n const { idPrefix, selectedVariant, updateState } = config;\n\n // Derive activeId from state atom.\n const state = get(stateAtom);\n const activeId = state.active ?? state.workspace;\n\n // Get companions from graph connections for activeId.\n const activeConnections = activeId ? get(graph.connections(activeId, 'child')) : [];\n const companions = activeConnections\n .filter((node: Node.Node) => node.type === PLANK_COMPANION_TYPE)\n .toSorted((a: Node.Node, b: Node.Node) => byPosition(a.properties, b.properties));\n\n const nodes: ActionGraphProps['nodes'] = [];\n const edges: ActionGraphProps['edges'] = [];\n\n companions.forEach((companion: Node.Node) => {\n const companionVariant = getCompanionVariant(companion.id);\n const companionAction = {\n id: `${idPrefix}-companion-${companion.id}`,\n type: Node.ActionType,\n properties: {\n icon: companion.properties.icon ?? 'ph--placeholder--regular',\n label: companion.properties.label,\n iconOnly: true,\n ...(selectedVariant !== undefined && {\n variant: selectedVariant === companionVariant ? 'primary' : 'ghost',\n }),\n },\n data: () =>\n Effect.sync(() =>\n updateState((current) => {\n const closing = current.companionVariant === companionVariant && current.drawerState !== 'closed';\n return {\n ...current,\n companionVariant: closing ? undefined : companionVariant,\n drawerState: closing ? 'closed' : 'open',\n };\n }),\n ),\n };\n nodes.push(companionAction);\n edges.push({ source: 'root', target: companionAction.id, relation: 'child' });\n });\n\n return { nodes, edges };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, useActionRunner } from '@dxos/plugin-graph';\nimport { useTranslation } from '@dxos/react-ui';\nimport { type ActionExecutor, type ActionGraphProps, createGapSeparator } from '@dxos/react-ui-menu';\n\nimport { useMobileLayout } from '../components';\nimport { meta } from '../meta';\nimport { SimpleLayoutState as SimpleLayoutStateCapability } from '../types';\n\nimport { createCompanionActions } from './actions';\nimport { useSimpleLayoutState } from './useSimpleLayoutState';\n\nexport type DrawerActions = {\n /** Action graph atom for the drawer. */\n actions: Atom.Atom<ActionGraphProps>;\n /** Action executor callback. */\n onAction: ActionExecutor;\n};\n\n/**\n * Builds the drawer actions including companion tabs and toolbar buttons.\n */\nexport const useDrawerActions = (consumerName: string): DrawerActions => {\n const { t } = useTranslation(meta.id);\n const stateAtom = useCapability(SimpleLayoutStateCapability);\n const { graph } = useAppGraph();\n const runAction = useActionRunner();\n const { updateState } = useSimpleLayoutState();\n const { keyboardOpen } = useMobileLayout(consumerName);\n\n // Create a computed atom that derives everything from graph connections and state.\n const actionsAtom = useMemo(\n () =>\n Atom.make((get): ActionGraphProps => {\n // Derive drawer state from state atom.\n const state = get(stateAtom);\n\n // Add companion tab actions.\n const { nodes, edges } = createCompanionActions(graph, stateAtom, get, {\n idPrefix: 'drawer',\n selectedVariant: state.companionVariant,\n updateState,\n });\n\n // Add gap separator before toolbar buttons.\n const gapSeparator = createGapSeparator('drawer-gap');\n nodes.push(...gapSeparator.nodes);\n edges.push(...gapSeparator.edges);\n\n // Add expand/collapse toggle button (hidden when keyboard is open).\n if (!keyboardOpen) {\n const isExpanded = state.drawerState === 'expanded';\n const toggleExpandAction = {\n id: 'drawer-toggle-expand',\n type: Node.ActionType,\n properties: {\n icon: isExpanded ? 'ph--arrow-down--regular' : 'ph--arrow-up--regular',\n label: isExpanded ? t('collapse drawer label') : t('expand drawer label'),\n iconOnly: true,\n },\n data: () =>\n Effect.sync(() => updateState((state) => ({ ...state, drawerState: isExpanded ? 'open' : 'expanded' }))),\n };\n nodes.push(toggleExpandAction);\n edges.push({ source: 'root', target: toggleExpandAction.id, relation: 'child' });\n }\n\n // Add close button.\n const closeAction = {\n id: 'drawer-close',\n type: Node.ActionType,\n properties: {\n icon: 'ph--x--regular',\n label: t('close drawer label'),\n iconOnly: true,\n },\n data: () =>\n Effect.sync(() =>\n updateState((state) => ({ ...state, drawerState: 'closed', companionVariant: undefined })),\n ),\n };\n nodes.push(closeAction);\n edges.push({ source: 'root', target: closeAction.id, relation: 'child' });\n\n return { nodes, edges };\n }),\n [graph, stateAtom, updateState, keyboardOpen, t],\n );\n\n return { actions: actionsAtom, onAction: runAction };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\n// TODO(burdon): Show skeleton: https://github.com/dxos/dxos/issues/8259\nexport const ContentLoading = () => {\n return <div role='none' className='grid place-items-center dx-attention-surface' />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, forwardRef, useEffect, useState } from 'react';\n\nimport { addEventListener, combine } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\n// TODO(burdon): Move into @dxos/react-ui?\n\nconst MOBILE_LAYOUT_NAME = 'MobileLayout';\nconst MOBILE_LAYOUT_ROOT_NAME = 'MobileLayout.Root';\nconst MOBILE_LAYOUT_PANEL_NAME = 'MobileLayout.Panel';\n\n//\n// Context\n//\n\ntype MobileLayoutContextValue = {\n keyboardOpen: boolean;\n};\n\nconst [MobileLayoutProvider, useMobileLayout] = createContext<MobileLayoutContextValue>(MOBILE_LAYOUT_NAME);\n\n//\n// Root\n//\n\ntype MobileLayoutRootProps = ThemedClassName<\n PropsWithChildren<{\n transition?: number;\n onKeyboardOpenChange?: (nextState: boolean) => void;\n }>\n>;\n\n/**\n * Mobile layout root container that handles iOS keyboard detection.\n */\n// TODO(burdon): Should this be ios-only?\nconst MobileLayoutRoot = forwardRef<HTMLDivElement, MobileLayoutRootProps>(\n ({ classNames, children, transition = 250, onKeyboardOpenChange, ...props }, forwardedRef) => {\n const { open: keyboardOpen } = useIOSKeyboard();\n useAutoScroll();\n useEffect(() => onKeyboardOpenChange?.(keyboardOpen), [onKeyboardOpenChange, keyboardOpen]);\n useLockBodyScroll(keyboardOpen);\n\n return (\n <MobileLayoutProvider keyboardOpen={keyboardOpen}>\n <div\n {...props}\n role='none'\n style={{\n transition: `h-size ${transition}ms ease-out`,\n blockSize: 'calc(100vh - var(--kb-height, 0px))',\n }}\n className={mx('absolute top-0 left-0 right-0 flex flex-col', classNames)}\n ref={forwardedRef}\n >\n {children}\n </div>\n </MobileLayoutProvider>\n );\n },\n);\n\nMobileLayoutRoot.displayName = MOBILE_LAYOUT_ROOT_NAME;\n\n//\n// Panel\n//\n\ntype MobileLayoutPanelProps = ThemedClassName<\n PropsWithChildren<{\n safe?: {\n top: boolean;\n bottom: boolean;\n };\n }>\n>;\n\n/**\n * Mobile layout panel that applies safe area insets.\n */\nconst MobileLayoutPanel = forwardRef<HTMLDivElement, MobileLayoutPanelProps>(\n ({ classNames, children, safe, ...props }, forwardedRef) => {\n return (\n <div\n {...props}\n role='none'\n style={{\n paddingTop: safe?.top ? 'env(safe-area-inset-top)' : undefined,\n paddingBottom: safe?.bottom ? `calc((1 - var(--kb-open, 0)) * env(safe-area-inset-bottom))` : undefined,\n }}\n className={mx('relative h-full flex flex-col overflow-hidden', classNames)}\n ref={forwardedRef}\n >\n {children}\n </div>\n );\n },\n);\n\nMobileLayoutPanel.displayName = MOBILE_LAYOUT_PANEL_NAME;\n\n//\n// Exports\n//\n\nexport const MobileLayout = {\n Root: MobileLayoutRoot,\n Panel: MobileLayoutPanel,\n};\n\nexport { useMobileLayout };\n\nexport type { MobileLayoutRootProps, MobileLayoutPanelProps };\n\n/**\n * Prevent auto-scroll when input is focused.\n */\nconst useAutoScroll = () => {\n useEffect(() => {\n // Prevent auto-scroll when input is focused.\n return addEventListener(\n document,\n 'focus',\n (event: FocusEvent) => {\n const target = event.target as HTMLElement;\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n (target.tagName === 'DIV' && target.isContentEditable)\n ) {\n // Prevent default focus behavior.\n event.preventDefault();\n\n // Manually focus without scroll.\n target.focus({ preventScroll: true });\n\n // Lock current scroll position.\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n requestAnimationFrame(() => {\n window.scrollTo(scrollX, scrollY);\n });\n\n // TODO(burdon): Scroll to position in parent; this may need to be via an intent,\n // since it may be plugin-specific (e.g., codemirror document.)\n }\n },\n // Important: focus events don't bubble, so capture phase is required.\n { capture: true },\n );\n }, []);\n};\n\n/**\n * Prevent iOS Safari viewport scroll when enabled.\n * Setting overflow:hidden doesn't work on iOS, so we must preventDefault on touchmove events.\n * Only allows scrolling if the target is within a scrollable container.\n */\nconst useLockBodyScroll = (enabled: boolean) => {\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const isScrollable = (el: HTMLElement | null, axis: 'x' | 'y'): boolean => {\n while (el && el !== document.body) {\n const style = getComputedStyle(el);\n if (axis === 'y') {\n const overflow = style.overflowY;\n if ((overflow === 'auto' || overflow === 'scroll') && el.scrollHeight > el.clientHeight) {\n return true;\n }\n } else {\n const overflow = style.overflowX;\n if ((overflow === 'auto' || overflow === 'scroll') && el.scrollWidth > el.clientWidth) {\n return true;\n }\n }\n\n el = el.parentElement;\n }\n\n return false;\n };\n\n let touchStartX = 0;\n let touchStartY = 0;\n\n return combine(\n // Record initial touch position.\n addEventListener(\n document,\n 'touchstart',\n (event: TouchEvent) => {\n const touch = event.touches[0];\n touchStartX = touch.clientX;\n touchStartY = touch.clientY;\n },\n { passive: true },\n ),\n\n // Prevent scrolling the viewport.\n addEventListener(\n document,\n 'touchmove',\n (event: TouchEvent) => {\n const touch = event.touches[0];\n const dx = Math.abs(touch.clientX - touchStartX);\n const dy = Math.abs(touch.clientY - touchStartY);\n if (!isScrollable(event.target as HTMLElement, dx > dy ? 'x' : 'y')) {\n event.preventDefault();\n }\n },\n { passive: false },\n ),\n );\n }, [enabled]);\n};\n\n//\n// Hooks\n//\n\ntype IOSKeyboard = {\n open: boolean;\n height: number;\n};\n\n/**\n * Mobile container that handles iOS keyboard layout adjustments.\n *\n * Uses two strategies for keyboard detection:\n * 1. Tauri iOS: Native keyboard plugin for reliable height/animation events.\n * 2. Web/PWA: visualViewport API as fallback.\n *\n * iPhone (portrait, points)\n * - Without predictive bar: ~291 pt\n * - With predictive bar: ~335 pt\n * - With accessory view: ~380–420 pt\n *\n * Example:\n * - Viewport: 874 (entire screen)\n * - SafeArea: 96 (62+34)\n * - Main: 778\n * - Keyboard: 318; 413 (incl. Input Accessory View)\n *\n * CSS Variables set on document.documentElement:\n * --vvh: Visual viewport height (use as container height).\n * --kb-height: Keyboard height in pixels.\n * --kb-open: 1 when keyboard is open, 0 when closed.\n *\n * NOTE: By default when an input is selected on iOS the Input Accessory View is shown above the keyboard.\n * This can be disabled by setting the `inputAccessoryView` property to `false`.\n *\n * On iOS (Tauri), listens for 'keyboard' CustomEvents dispatched by the native KeyboardObserver.swift.\n * Falls back to VisualViewport API on other platforms.\n */\nconst useIOSKeyboard = (): IOSKeyboard => {\n const [open, setOpen] = useState(false);\n const [height, setHeight] = useState(0);\n\n // Detect keybaord state.\n useEffect(() => {\n const viewport = window.visualViewport;\n if (!viewport) {\n return;\n }\n\n // Handler for VisualViewport resize (fallback for non-iOS).\n const initialHeight = viewport.height ?? window.innerHeight;\n\n const updateState = (keyboardHeight: number, keyboardOpen: boolean) => {\n setOpen(keyboardOpen);\n setHeight(keyboardHeight);\n\n const vvh = initialHeight - keyboardHeight;\n document.documentElement.style.setProperty('--vvh', `${vvh}px`);\n document.documentElement.style.setProperty('--kb-height', `${keyboardHeight}px`);\n document.documentElement.style.setProperty('--kb-open', keyboardOpen ? '1' : '0');\n log.info('viewport size', { initialHeight, vvh, keyboardHeight, keyboardOpen });\n };\n\n return combine(\n // Handler for native iOS keyboard events (from KeyboardObserver.swift).\n addEventListener(\n window,\n 'keyboard' as any,\n (event: CustomEvent<{ type: 'show' | 'hide'; height: number; duration: number }>) => {\n const { type, height } = event.detail;\n log.info('keyboard event', { type, height });\n updateState(height, type === 'show');\n },\n ),\n );\n }, []);\n\n return { open, height };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { useObjectNavigate } from '@dxos/app-toolkit/ui';\nimport { Popover, type PopoverContentInteractOutsideEvent, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\n\nimport { useSimpleLayoutState } from '../../hooks';\nimport { meta } from '../../meta';\n\nconst DEBOUNCE_DELAY = 40;\n\ntype LayoutPopoverContextValue = {\n setOpen: (open: boolean) => void;\n};\n\nconst [LayoutPopoverProvider, useLayoutPopoverContext] = createContext<LayoutPopoverContextValue>('LayoutPopover');\n\nexport const PopoverRoot = ({ children }: PropsWithChildren) => {\n const { state } = useSimpleLayoutState();\n const [open, setOpen] = useState(false);\n const virtualRef = useRef<HTMLButtonElement | null>(null);\n const [virtualIter, setVirtualIter] = useState(0);\n const debounceRef = useRef<NodeJS.Timeout | null>(null);\n\n // TODO(thure): This is a workaround for the race condition between displaying a Popover and either rendering\n // the anchor further down the tree or measuring the virtual trigger's client rect.\n useEffect(() => {\n setOpen(false);\n if (state.popoverOpen) {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (state.popoverAnchor && virtualRef.current !== state.popoverAnchor) {\n virtualRef.current = state.popoverAnchor ?? null;\n setVirtualIter((iter) => iter + 1);\n }\n debounceRef.current = setTimeout(() => setOpen(true), DEBOUNCE_DELAY);\n }\n }, [state.popoverOpen, state.popoverAnchorId, state.popoverAnchor, state.popoverContent]);\n\n return (\n <LayoutPopoverProvider setOpen={setOpen}>\n <Popover.Root modal={false} open={open}>\n {state.popoverAnchor && <Popover.VirtualTrigger key={virtualIter} virtualRef={virtualRef} />}\n {children}\n </Popover.Root>\n </LayoutPopoverProvider>\n );\n};\n\n// Extracts the subject from popover content if it has one, otherwise returns the content as-is.\nconst getPopoverSubject = (content: unknown): unknown =>\n content && typeof content === 'object' && 'subject' in content ? (content as { subject: unknown }).subject : content;\n\nexport const PopoverContent = () => {\n const { t } = useTranslation(meta.id);\n const { state, updateState } = useSimpleLayoutState();\n const { setOpen } = useLayoutPopoverContext('PopoverContent');\n const handleNavigate = useObjectNavigate(getPopoverSubject(state.popoverContent));\n\n const handleClose = useCallback(() => {\n setOpen(false);\n updateState((s) => ({\n ...s,\n popoverOpen: false,\n popoverAnchor: undefined,\n popoverAnchorId: undefined,\n popoverSide: undefined,\n }));\n }, [setOpen, updateState]);\n\n const handleInteractOutside = useCallback(\n (event: KeyboardEvent | PopoverContentInteractOutsideEvent) => {\n if (\n // TODO(thure): CodeMirror should not focus itself when it updates.\n event.type === 'dismissableLayer.focusOutside' &&\n (event.currentTarget as HTMLElement | undefined)?.classList.contains('cm-content')\n ) {\n event.preventDefault();\n } else {\n handleClose();\n }\n },\n [handleClose],\n );\n\n const collisionBoundaries: HTMLElement[] = useMemo(() => {\n const closest = state.popoverAnchor?.closest('[data-popover-collision-boundary]') as HTMLElement | null | undefined;\n return closest ? [closest] : [];\n }, [state.popoverAnchor]);\n\n return (\n <Popover.Portal>\n <Popover.Content\n side={state.popoverSide}\n sticky='always'\n hideWhenDetached\n collisionBoundary={collisionBoundaries}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleInteractOutside}\n >\n <Popover.Viewport>\n {state.popoverKind === 'base' && <Surface.Surface role='popover' data={state.popoverContent} limit={1} />}\n {state.popoverKind === 'card' && (\n <Card.Root border={false} classNames='dx-card-popover'>\n <Card.Toolbar>\n {/* TODO(wittjosiah): Cleaner way to handle no drag handle in toolbar? */}\n <span />\n {state.popoverTitle ? (\n <Card.Title onClick={handleNavigate}>{toLocalizedString(state.popoverTitle, t)}</Card.Title>\n ) : (\n <span />\n )}\n <Card.CloseIconButton onClick={handleClose} />\n </Card.Toolbar>\n <Surface.Surface role='card--content' data={state.popoverContent} limit={1} />\n </Card.Root>\n )}\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom, useAtomValue } from '@effect-atom/atom-react';\nimport React, { Fragment } from 'react';\n\nimport { IconButton, Popover, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { type ActionExecutor, type ActionGraphProps, Menu, useMenuActions } from '@dxos/react-ui-menu';\nimport { mx, osTranslations } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { useMobileLayout } from '../MobileLayout';\n\nconst APP_BAR_NAME = 'SimpleLayout.AppBar';\n\nexport type AppBarProps = ThemedClassName<{\n /** Title/label to display in the banner. */\n title?: string;\n /** Action graph atom for the dropdown menu. */\n actions: Atom.Atom<ActionGraphProps>;\n /** Whether to show the back button. */\n showBackButton?: boolean;\n /** Popover anchor ID for the dropdown trigger. */\n popoverAnchorId?: string;\n /** Action executor callback. */\n onAction?: ActionExecutor;\n /** Callback when back button is clicked. */\n onBack?: () => void;\n}>;\n\n/**\n * AppBar component that renders a title, optional back button, and actions dropdown.\n */\nexport const AppBar = ({\n classNames,\n title,\n actions,\n showBackButton,\n popoverAnchorId,\n onAction,\n onBack,\n}: AppBarProps) => {\n const { t } = useTranslation(meta.id);\n const menu = useMenuActions(actions);\n const actionsValue = useAtomValue(actions);\n const hasActions = actionsValue.nodes.length > 0;\n const { keyboardOpen } = useMobileLayout(APP_BAR_NAME);\n\n // Fall back to app name if no title provided.\n const displayTitle = title ?? t('current app name', { ns: osTranslations });\n\n // Wrap the menu trigger with Popover.Anchor when the popoverAnchorId is set.\n const AnchorRoot = popoverAnchorId ? Popover.Anchor : Fragment;\n\n return (\n <Toolbar.Root\n role='banner'\n classNames={mx(\n 'grid grid-cols-[var(--dx-rail-size)_1fr_var(--dx-rail-size)] items-center',\n 'dx-density-fine',\n classNames,\n )}\n >\n {keyboardOpen ? (\n <IconButton variant='ghost' icon='ph--x--regular' iconOnly label={t('done label')} />\n ) : showBackButton ? (\n <IconButton variant='ghost' icon='ph--caret-left--regular' iconOnly label={t('back label')} onClick={onBack} />\n ) : (\n <div />\n )}\n <h1 className='text-center truncate font-thin uppercase'>{displayTitle}</h1>\n {hasActions ? (\n <AnchorRoot>\n <Menu.Root {...menu} caller={meta.id} onAction={onAction}>\n <Menu.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n iconOnly\n label={t('actions menu label')}\n />\n </Menu.Trigger>\n <Menu.Content />\n </Menu.Root>\n </AnchorRoot>\n ) : (\n <span />\n )}\n </Toolbar.Root>\n );\n};\n\nAppBar.displayName = APP_BAR_NAME;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { useNode } from '@dxos/plugin-graph';\nimport { ErrorFallback } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useAppBarProps, useNavbarActions, useSimpleLayoutState } from '../../hooks';\nimport { ContentLoading } from '../ContentLoading';\nimport { useExpandPath } from '../hooks';\nimport { useMobileLayout } from '../MobileLayout';\n\nimport { AppBar } from './AppBar';\nimport { NavBar } from './NavBar';\n\nconst MAIN_NAME = 'SimpleLayout.Main';\n\n/**\n * Main content component.\n */\nexport const Main = () => {\n const { state } = useSimpleLayoutState();\n const id = state.active ?? state.workspace;\n const attentionAttrs = useAttentionAttributes(id);\n const { keyboardOpen } = useMobileLayout(MAIN_NAME);\n const { actions, onAction } = useNavbarActions();\n const appBarProps = useAppBarProps();\n\n const placeholder = useMemo(() => <ContentLoading />, []);\n\n const { graph } = useAppGraph();\n const node = useNode(graph, id);\n const data = useMemo(() => {\n return (\n node && {\n attendableId: id,\n subject: node.data,\n properties: node.properties,\n popoverAnchorId: state.popoverAnchorId,\n }\n );\n }, [id, node, node?.data, node?.properties, state.popoverAnchorId]);\n\n useExpandPath(id);\n\n // TODO(burdon): BUG: When showing ANY statusbar the size progressively shrinks when the keyboard opens/closes.\n const showNavBar = !keyboardOpen && !state.isPopover && state.drawerState === 'closed';\n\n return (\n <div\n role='none'\n className={mx(\n 'h-full grid overflow-hidden bg-toolbar-surface',\n showNavBar\n ? 'grid-rows-[var(--dx-rail-action)_1fr_var(--dx-toolbar-size)]'\n : 'grid-rows-[var(--dx-rail-action)_1fr]',\n )}\n {...attentionAttrs}\n >\n <AppBar {...appBarProps} />\n <article className='h-full overflow-hidden bg-base-surface'>\n <Surface.Surface\n key={id}\n role='article'\n data={data}\n limit={1}\n fallback={ErrorFallback}\n placeholder={placeholder}\n />\n </article>\n {showNavBar && <NavBar classNames='border-y border-subdued-separator' actions={actions} onAction={onAction} />}\n </div>\n );\n};\n\nMain.displayName = MAIN_NAME;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport React from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { type ActionExecutor, type ActionGraphProps, Menu, useMenuActions } from '@dxos/react-ui-menu';\nimport { mx } from '@dxos/ui-theme';\n\nconst NAVBAR_NAME = 'SimpleLayout.NavBar';\n\nexport type NavBarProps = ThemedClassName<{\n /** Action graph atom for the toolbar. */\n actions: Atom.Atom<ActionGraphProps>;\n /** Action executor callback. */\n onAction?: ActionExecutor;\n}>;\n\n/**\n * Presentational navbar component that renders a toolbar from an action graph.\n */\nexport const NavBar = ({ classNames, actions, onAction }: NavBarProps) => {\n const menu = useMenuActions(actions);\n\n return (\n <Menu.Root {...menu} alwaysActive onAction={onAction}>\n <Menu.Toolbar density='coarse' classNames={mx(classNames)} />\n </Menu.Root>\n );\n};\n\nNavBar.displayName = NAVBAR_NAME;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { type Node, useConnections } from '@dxos/plugin-graph';\nimport { Avatar, Icon, Panel, ScrollArea, Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\nimport { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchList, useSearchListItem, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { useExpandPath } from '../hooks';\n\nexport type NavBranchProps = {\n id: string;\n};\n\n/**\n * Renders the children of a graph branch node as a searchable mosaic list.\n * Used for any node with `role: 'branch'` or a workspace disposition, including\n * spaces, collection sections, type sections, and schema nodes.\n */\nexport const NavBranch = ({ id }: NavBranchProps) => {\n const { t } = useTranslation(meta.id);\n const { graph } = useAppGraph();\n\n useExpandPath(id);\n\n const children = useConnections(graph, id, 'child');\n\n // TODO(wittjosiah): Move alternate-tree nodes to a non-child relation so they don't need filtering.\n const visibleChildren = useMemo(\n () => children.filter((node) => node.properties.disposition !== 'alternate-tree'),\n [children],\n );\n\n const { results, handleSearch } = useSearchListResults({\n items: visibleChildren,\n extract: (child) => toLocalizedString(child.properties.label, t),\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n {/* TODO(wittjosiah): Search should be pluggable. Must support searching via ECHO query inside a space. */}\n <SearchList.Input placeholder={t('search placeholder')} autoFocus />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <SearchList.Content>\n <Mosaic.Container asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport classNames='p-2'>\n <Mosaic.Stack items={results} getId={(child) => child.id} Tile={NavBranchTile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </SearchList.Content>\n </Panel.Content>\n </Panel.Root>\n </SearchList.Root>\n );\n};\n\nconst NavBranchTile: MosaicStackTileComponent<Node.Node> = (props) => {\n const data = props.data;\n const { t } = useTranslation(meta.id);\n const { invokeSync } = useOperationInvoker();\n const ref = useRef<HTMLDivElement>(null);\n const { selectedValue, registerItem, unregisterItem } = useSearchListItem();\n const isSelected = selectedValue === data.id;\n\n const name = toLocalizedString(data.properties.label, t);\n\n const handleSelect = useCallback(\n () => invokeSync(LayoutOperation.Open, { subject: [data.id] }),\n [invokeSync, data.id],\n );\n\n // Register this item with the search context.\n useEffect(() => {\n if (ref.current) {\n registerItem(data.id, ref.current, handleSelect);\n }\n\n return () => unregisterItem(data.id);\n }, [data.id, handleSelect, registerItem, unregisterItem]);\n\n // Scroll into view when selected.\n useEffect(() => {\n if (isSelected && ref.current) {\n ref.current.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }, [isSelected]);\n\n return (\n <Card.Root\n ref={ref}\n role='button'\n fullWidth\n tabIndex={-1} // TODO(burdon): Use Mosaic.Focus.\n data-selected={isSelected}\n classNames={mx('dx-focus-ring', isSelected && 'bg-hover-overlay')}\n onClick={handleSelect}\n >\n <Card.Toolbar density='coarse'>\n <Avatar.Root>\n <Avatar.Content\n hue={data.properties.hue}\n icon={data.properties.icon}\n hueVariant='transparent'\n variant='square'\n size={12}\n fallback={name}\n />\n <Avatar.Label>{name}</Avatar.Label>\n <Icon icon='ph--caret-right--regular' />\n </Avatar.Root>\n </Card.Toolbar>\n </Card.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useContext } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\n\nimport { SimpleLayoutState } from '../types';\n\nexport type UseSimpleLayoutState = {\n state: SimpleLayoutState;\n updateState: (fn: (current: SimpleLayoutState) => SimpleLayoutState) => void;\n};\n\nexport const useSimpleLayoutState = (): UseSimpleLayoutState => {\n const registry = useContext(RegistryContext);\n const stateAtom = useCapability(SimpleLayoutState);\n const state = useAtomValue(stateAtom);\n\n const updateState = useCallback(\n (fn: (current: SimpleLayoutState) => SimpleLayoutState) => {\n registry.set(stateAtom, fn(registry.get(stateAtom)));\n },\n [registry, stateAtom],\n );\n\n return { state, updateState };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, useActionRunner } from '@dxos/plugin-graph';\nimport { useTranslation } from '@dxos/react-ui';\nimport {\n type ActionExecutor,\n type ActionGraphProps,\n createGapSeparator,\n createMenuItemGroup,\n} from '@dxos/react-ui-menu';\n\nimport { meta } from '../meta';\nimport { SimpleLayoutState } from '../types';\n\nimport { createCompanionActions } from './actions';\nimport { useSimpleLayoutState } from './useSimpleLayoutState';\n\nconst MAIN_MENU_GROUP_ID = 'navbar-main-menu';\n\nexport type NavbarActions = {\n /** Action graph atom for the navbar. */\n actions: Atom.Atom<ActionGraphProps>;\n /** Action executor callback. */\n onAction: ActionExecutor;\n};\n\n/**\n * Builds the navbar actions including companion icons, separator, and main menu dropdown.\n * Derives everything from graph connection atoms for proper reactivity.\n */\nexport const useNavbarActions = (): NavbarActions => {\n const { t } = useTranslation(meta.id);\n const { graph } = useAppGraph();\n const runAction = useActionRunner();\n const stateAtom = useCapability(SimpleLayoutState);\n const { updateState } = useSimpleLayoutState();\n\n // Create a computed atom that derives everything from graph connections and state.\n const actionsAtom = useMemo(\n () =>\n Atom.make((get): ActionGraphProps => {\n // Add companion actions.\n const { nodes, edges } = createCompanionActions(graph, stateAtom, get, {\n idPrefix: 'navbar',\n updateState,\n });\n\n // Add gap separator.\n const gapSeparator = createGapSeparator('navbar-gap');\n nodes.push(...gapSeparator.nodes);\n edges.push(...gapSeparator.edges);\n\n // Add main menu dropdown group.\n const mainMenuGroup = createMenuItemGroup(MAIN_MENU_GROUP_ID, {\n variant: 'dropdownMenu',\n icon: 'ph--list--regular',\n iconOnly: true,\n label: t('main menu label'),\n testId: 'simpleLayoutPlugin.addSpace',\n });\n nodes.push(mainMenuGroup);\n edges.push({ source: 'root', target: mainMenuGroup.id, relation: 'child' });\n\n // Get menu actions from root actions (on 'action' edge relation).\n const rootActions = get(graph.actions(Node.RootId));\n const menuActions = rootActions.filter((node) => node.properties.disposition === 'menu');\n\n // Add menu actions as children of the dropdown group.\n menuActions.forEach((menuAction) => {\n nodes.push(menuAction as ActionGraphProps['nodes'][number]);\n edges.push({ source: MAIN_MENU_GROUP_ID, target: menuAction.id, relation: 'child' });\n });\n\n return { nodes, edges };\n }),\n [graph, stateAtom, updateState, t],\n );\n\n return { actions: actionsAtom, onAction: runAction };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AlertDialog, Dialog as NaturalDialog } from '@dxos/react-ui';\nimport { ErrorFallback } from '@dxos/react-ui';\n\nimport { useSimpleLayoutState } from '../../hooks';\n\nexport const Dialog = () => {\n const { state, updateState } = useSimpleLayoutState();\n\n const DialogRoot = state.dialogType === 'alert' ? AlertDialog.Root : NaturalDialog.Root;\n const DialogOverlay = state.dialogType === 'alert' ? AlertDialog.Overlay : NaturalDialog.Overlay;\n\n return (\n <DialogRoot\n modal={state.dialogBlockAlign !== 'end'}\n open={state.dialogOpen}\n onOpenChange={(nextOpen) => updateState((state) => ({ ...state, dialogOpen: nextOpen }))}\n >\n {state.dialogBlockAlign === 'end' ? (\n <Surface.Surface role='dialog' data={state.dialogContent} limit={1} fallback={ErrorFallback} />\n ) : (\n <DialogOverlay\n blockAlign={state.dialogBlockAlign}\n classNames={state.dialogOverlayClasses}\n style={state.dialogOverlayStyle}\n >\n <Surface.Surface role='dialog' data={state.dialogContent} limit={1} fallback={ErrorFallback} />\n </DialogOverlay>\n )}\n </DialogRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { getCompanionVariant } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { type Node, useNode } from '@dxos/plugin-graph';\nimport { ErrorFallback, Panel } from '@dxos/react-ui';\nimport { Menu, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { useCompanions, useDrawerActions, useSimpleLayoutState } from '../../hooks';\nimport { ContentLoading } from '../ContentLoading';\n\nconst DRAWER_NAME = 'SimpleLayout.Drawer';\n\n/**\n * Companion drawer component.\n */\nexport const Drawer = () => {\n const { graph } = useAppGraph();\n const { state: layoutState } = useSimpleLayoutState();\n\n const placeholder = useMemo(() => <ContentLoading />, []);\n\n // Get all companions for the current active (primary) item.\n const activeId = layoutState.active ?? layoutState.workspace;\n const companions = useCompanions(activeId);\n const { companionId, variant } = useSelectedCompanion(companions, layoutState.companionVariant);\n\n // Get node for the selected companion.\n const node = useNode(graph, companionId);\n const parentNode = useNode(graph, activeId);\n\n // Build Surface data for the companion content.\n const data = useMemo(() => {\n return (\n node && {\n attendableId: companionId,\n subject: node.data,\n companionTo: parentNode?.data,\n properties: node.properties,\n variant,\n }\n );\n }, [companionId, node, parentNode, variant]);\n\n // Get drawer actions (tabs + toolbar buttons).\n const { actions, onAction } = useDrawerActions(DRAWER_NAME);\n const menu = useMenuActions(actions);\n\n return (\n <Panel.Root>\n <Panel.Toolbar>\n <Menu.Root {...menu} alwaysActive onAction={onAction}>\n <Menu.Toolbar density='coarse' />\n </Menu.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Surface.Surface role='article' data={data} limit={1} fallback={ErrorFallback} placeholder={placeholder} />\n </Panel.Content>\n </Panel.Root>\n );\n};\n\nDrawer.displayName = DRAWER_NAME;\n\n/**\n * Resolves which companion to show based on variant preference.\n * Falls back to first available if preferred variant not available.\n */\nconst useSelectedCompanion = (companions: Node.Node[], preferredVariant?: string) => {\n const selectedCompanion = useMemo(() => {\n if (companions.length === 0) {\n return undefined;\n }\n\n // Try to find companion matching the preferred variant.\n if (preferredVariant) {\n const preferred = companions.find((c) => getCompanionVariant(c.id) === preferredVariant);\n if (preferred) {\n return preferred;\n }\n }\n\n // Fallback to first companion.\n return companions[0];\n }, [companions, preferredVariant]);\n\n const companionId = selectedCompanion?.id;\n const variant = companionId ? getCompanionVariant(companionId) : undefined;\n\n return { selectedCompanion, companionId, variant };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "useOperationInvoker", "LayoutOperation", "useAppGraph", "Node", "useConnections", "Avatar", "Icon", "Panel", "ScrollArea", "Toolbar", "toLocalizedString", "useTranslation", "Card", "Mosaic", "SearchList", "useSearchListItem", "useSearchListResults", "mx", "byPosition", "useEffect", "expandAttendableId", "useAppGraph", "Graph", "useExpandPath", "nodeId", "graph", "useAppGraph", "useEffect", "prefix", "expandAttendableId", "Graph", "expand", "Home", "_", "t", "useTranslation", "meta", "id", "userAccountItem", "useItemsByDisposition", "pinnedItems", "workspaceItems", "useExpandPath", "Node", "RootId", "items", "useMemo", "results", "handleSearch", "useSearchListResults", "extract", "node", "toLocalizedString", "properties", "label", "SearchList", "Root", "onSearch", "Panel", "Toolbar", "asChild", "Input", "placeholder", "autoFocus", "Content", "Mosaic", "Container", "ScrollArea", "orientation", "Viewport", "classNames", "Stack", "getId", "Tile", "WorkspaceTile", "props", "data", "invokePromise", "useOperationInvoker", "selectedValue", "registerItem", "unregisterItem", "useSearchListItem", "name", "isSelected", "cardRef", "useRef", "handleSelect", "useCallback", "LayoutOperation", "SwitchWorkspace", "subject", "useEffect", "current", "scrollIntoView", "block", "behavior", "Card", "role", "fullWidth", "tabIndex", "data-selected", "mx", "onClick", "ref", "density", "Avatar", "icon", "hue", "hueVariant", "variant", "size", "fallback", "Label", "Icon", "filterItems", "disposition", "sort", "graph", "useAppGraph", "connections", "useConnections", "filtered", "filter", "toSorted", "a", "b", "byPosition", "React", "useEffect", "useRef", "useState", "Splitter", "Mosaic", "Atom", "useAtomValue", "Effect", "Option", "useCallback", "useMemo", "useCapability", "useOperationInvoker", "LayoutOperation", "useAppGraph", "Graph", "Node", "useActionRunner", "useNode", "toLocalizedString", "useTranslation", "useAppBarProps", "t", "useTranslation", "meta", "id", "stateAtom", "useCapability", "SimpleLayoutStateCapability", "state", "useAtomValue", "graph", "useAppGraph", "invokeSync", "useOperationInvoker", "runAction", "useActionRunner", "activeId", "active", "workspace", "node", "useNode", "title", "toLocalizedString", "properties", "label", "undefined", "actionsAtom", "useMemo", "Atom", "make", "get", "allActions", "actions", "filtered", "filter", "action", "includes", "disposition", "nodes", "edges", "map", "source", "target", "relation", "workspaceConnections", "connections", "alternateTreeNode", "find", "settingsAction", "type", "Node", "ActionType", "data", "sync", "LayoutOperation", "Open", "subject", "icon", "push", "showBackButton", "RootId", "onBack", "useCallback", "isWorkspace", "Graph", "getNode", "pipe", "getOrElse", "history", "length", "SwitchWorkspace", "Close", "popoverAnchorId", "onAction", "useMemo", "useAppGraph", "useConnections", "byPosition", "Effect", "getCompanionVariant", "Node", "byPosition", "PLANK_COMPANION_TYPE", "createCompanionActions", "graph", "stateAtom", "get", "config", "idPrefix", "selectedVariant", "updateState", "state", "activeId", "active", "workspace", "activeConnections", "connections", "companions", "filter", "node", "type", "toSorted", "a", "b", "byPosition", "properties", "nodes", "edges", "forEach", "companion", "companionVariant", "getCompanionVariant", "id", "companionAction", "Node", "ActionType", "icon", "label", "iconOnly", "undefined", "variant", "data", "sync", "current", "closing", "drawerState", "push", "source", "target", "relation", "useCompanions", "nodeId", "graph", "useAppGraph", "nodes", "useConnections", "companions", "filter", "node", "type", "PLANK_COMPANION_TYPE", "useMemo", "toSorted", "a", "b", "byPosition", "properties", "Atom", "Effect", "useMemo", "useCapability", "useAppGraph", "Node", "useActionRunner", "useTranslation", "createGapSeparator", "React", "ContentLoading", "React", "div", "role", "className", "createContext", "React", "forwardRef", "useEffect", "useState", "addEventListener", "combine", "log", "mx", "MOBILE_LAYOUT_NAME", "MOBILE_LAYOUT_ROOT_NAME", "MOBILE_LAYOUT_PANEL_NAME", "MobileLayoutProvider", "useMobileLayout", "MobileLayoutRoot", "classNames", "children", "transition", "onKeyboardOpenChange", "props", "forwardedRef", "open", "keyboardOpen", "useIOSKeyboard", "useAutoScroll", "useLockBodyScroll", "div", "role", "style", "blockSize", "className", "ref", "displayName", "MobileLayoutPanel", "safe", "paddingTop", "top", "undefined", "paddingBottom", "bottom", "MobileLayout", "Root", "Panel", "useAutoScroll", "useEffect", "addEventListener", "document", "event", "target", "tagName", "isContentEditable", "preventDefault", "focus", "preventScroll", "scrollX", "window", "scrollY", "requestAnimationFrame", "scrollTo", "capture", "useLockBodyScroll", "enabled", "isScrollable", "el", "axis", "body", "style", "getComputedStyle", "overflow", "overflowY", "scrollHeight", "clientHeight", "overflowX", "scrollWidth", "clientWidth", "parentElement", "touchStartX", "touchStartY", "combine", "touch", "touches", "clientX", "clientY", "passive", "dx", "Math", "abs", "dy", "useIOSKeyboard", "open", "setOpen", "useState", "height", "setHeight", "viewport", "visualViewport", "initialHeight", "innerHeight", "updateState", "keyboardHeight", "keyboardOpen", "vvh", "documentElement", "setProperty", "log", "info", "type", "detail", "createContext", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Surface", "useObjectNavigate", "Popover", "toLocalizedString", "useTranslation", "Card", "DEBOUNCE_DELAY", "LayoutPopoverProvider", "useLayoutPopoverContext", "createContext", "PopoverRoot", "children", "state", "useSimpleLayoutState", "open", "setOpen", "useState", "virtualRef", "useRef", "virtualIter", "setVirtualIter", "debounceRef", "useEffect", "popoverOpen", "current", "clearTimeout", "popoverAnchor", "iter", "setTimeout", "popoverAnchorId", "popoverContent", "React", "Popover", "Root", "modal", "VirtualTrigger", "key", "getPopoverSubject", "content", "subject", "PopoverContent", "t", "useTranslation", "meta", "id", "updateState", "handleNavigate", "useObjectNavigate", "handleClose", "useCallback", "s", "undefined", "popoverSide", "handleInteractOutside", "event", "type", "currentTarget", "classList", "contains", "preventDefault", "collisionBoundaries", "useMemo", "closest", "Portal", "Content", "side", "sticky", "hideWhenDetached", "collisionBoundary", "onInteractOutside", "onEscapeKeyDown", "Viewport", "popoverKind", "Surface", "role", "data", "limit", "Card", "border", "classNames", "Toolbar", "span", "popoverTitle", "Title", "onClick", "toLocalizedString", "CloseIconButton", "Arrow", "useAtomValue", "React", "Fragment", "IconButton", "Popover", "Toolbar", "useTranslation", "Menu", "useMenuActions", "mx", "osTranslations", "APP_BAR_NAME", "AppBar", "classNames", "title", "actions", "showBackButton", "popoverAnchorId", "onAction", "onBack", "t", "useTranslation", "meta", "id", "menu", "useMenuActions", "actionsValue", "useAtomValue", "hasActions", "nodes", "length", "keyboardOpen", "useMobileLayout", "displayTitle", "ns", "osTranslations", "AnchorRoot", "Popover", "Anchor", "Fragment", "React", "Toolbar", "Root", "role", "mx", "IconButton", "variant", "icon", "iconOnly", "label", "onClick", "div", "h1", "className", "Menu", "caller", "Trigger", "asChild", "Content", "span", "displayName", "React", "useMemo", "Surface", "useAppGraph", "useNode", "ErrorFallback", "useAttentionAttributes", "mx", "React", "Menu", "useMenuActions", "mx", "NAVBAR_NAME", "NavBar", "classNames", "actions", "onAction", "menu", "useMenuActions", "React", "Menu", "Root", "alwaysActive", "Toolbar", "density", "mx", "displayName", "MAIN_NAME", "Main", "state", "useSimpleLayoutState", "id", "active", "workspace", "attentionAttrs", "useAttentionAttributes", "keyboardOpen", "useMobileLayout", "actions", "onAction", "useNavbarActions", "appBarProps", "useAppBarProps", "placeholder", "useMemo", "React", "ContentLoading", "graph", "useAppGraph", "node", "useNode", "data", "attendableId", "subject", "properties", "popoverAnchorId", "useExpandPath", "showNavBar", "isPopover", "drawerState", "div", "role", "className", "mx", "AppBar", "article", "Surface", "key", "limit", "fallback", "ErrorFallback", "NavBar", "classNames", "displayName", "React", "useCallback", "useEffect", "useMemo", "useRef", "useOperationInvoker", "LayoutOperation", "useAppGraph", "useConnections", "Avatar", "Icon", "Panel", "ScrollArea", "Toolbar", "toLocalizedString", "useTranslation", "Card", "Mosaic", "SearchList", "useSearchListItem", "useSearchListResults", "mx", "NavBranch", "id", "t", "useTranslation", "meta", "graph", "useAppGraph", "useExpandPath", "children", "useConnections", "visibleChildren", "useMemo", "filter", "node", "properties", "disposition", "results", "handleSearch", "useSearchListResults", "items", "extract", "child", "toLocalizedString", "label", "React", "SearchList", "Root", "onSearch", "Panel", "Toolbar", "asChild", "Input", "placeholder", "autoFocus", "Content", "Mosaic", "Container", "ScrollArea", "orientation", "Viewport", "classNames", "Stack", "getId", "Tile", "NavBranchTile", "props", "data", "invokeSync", "useOperationInvoker", "ref", "useRef", "selectedValue", "registerItem", "unregisterItem", "useSearchListItem", "isSelected", "name", "handleSelect", "useCallback", "LayoutOperation", "Open", "subject", "useEffect", "current", "scrollIntoView", "block", "behavior", "Card", "role", "fullWidth", "tabIndex", "data-selected", "mx", "onClick", "density", "Avatar", "hue", "icon", "hueVariant", "variant", "size", "fallback", "Label", "Icon", "RegistryContext", "useAtomValue", "useCallback", "useContext", "useCapability", "useSimpleLayoutState", "registry", "useContext", "RegistryContext", "stateAtom", "useCapability", "SimpleLayoutState", "state", "useAtomValue", "updateState", "useCallback", "fn", "set", "get", "useDrawerActions", "consumerName", "t", "useTranslation", "meta", "id", "stateAtom", "useCapability", "SimpleLayoutStateCapability", "graph", "useAppGraph", "runAction", "useActionRunner", "updateState", "useSimpleLayoutState", "keyboardOpen", "useMobileLayout", "actionsAtom", "useMemo", "Atom", "make", "get", "state", "nodes", "edges", "createCompanionActions", "idPrefix", "selectedVariant", "companionVariant", "gapSeparator", "createGapSeparator", "push", "isExpanded", "drawerState", "toggleExpandAction", "type", "Node", "ActionType", "properties", "icon", "label", "iconOnly", "data", "sync", "source", "target", "relation", "closeAction", "undefined", "actions", "onAction", "Atom", "useMemo", "useCapability", "useAppGraph", "Node", "useActionRunner", "useTranslation", "createGapSeparator", "createMenuItemGroup", "MAIN_MENU_GROUP_ID", "useNavbarActions", "t", "useTranslation", "meta", "id", "graph", "useAppGraph", "runAction", "useActionRunner", "stateAtom", "useCapability", "SimpleLayoutState", "updateState", "useSimpleLayoutState", "actionsAtom", "useMemo", "Atom", "make", "get", "nodes", "edges", "createCompanionActions", "idPrefix", "gapSeparator", "createGapSeparator", "push", "mainMenuGroup", "createMenuItemGroup", "variant", "icon", "iconOnly", "label", "testId", "source", "target", "relation", "rootActions", "actions", "Node", "RootId", "menuActions", "filter", "node", "properties", "disposition", "forEach", "menuAction", "onAction", "React", "Surface", "AlertDialog", "Dialog", "NaturalDialog", "ErrorFallback", "Dialog", "state", "updateState", "useSimpleLayoutState", "DialogRoot", "dialogType", "AlertDialog", "Root", "NaturalDialog", "DialogOverlay", "Overlay", "React", "modal", "dialogBlockAlign", "open", "dialogOpen", "onOpenChange", "nextOpen", "Surface", "role", "data", "dialogContent", "limit", "fallback", "ErrorFallback", "blockAlign", "classNames", "dialogOverlayClasses", "style", "dialogOverlayStyle", "React", "useMemo", "Surface", "getCompanionVariant", "useAppGraph", "useNode", "ErrorFallback", "Panel", "Menu", "useMenuActions", "DRAWER_NAME", "Drawer", "graph", "useAppGraph", "state", "layoutState", "useSimpleLayoutState", "placeholder", "useMemo", "React", "ContentLoading", "activeId", "active", "workspace", "companions", "useCompanions", "companionId", "variant", "useSelectedCompanion", "companionVariant", "node", "useNode", "parentNode", "data", "attendableId", "subject", "companionTo", "properties", "actions", "onAction", "useDrawerActions", "menu", "useMenuActions", "Panel", "Root", "Toolbar", "Menu", "alwaysActive", "density", "Content", "asChild", "Surface", "role", "limit", "fallback", "ErrorFallback", "displayName", "preferredVariant", "selectedCompanion", "length", "undefined", "preferred", "find", "c", "getCompanionVariant", "id", "SimpleLayout", "state", "useSimpleLayoutState", "keyboardOpen", "setKeyboardOpen", "useState", "splitterMode", "setSplitterMode", "drawerRef", "useRef", "useEffect", "activeElement", "document", "drawerHasFocus", "current", "contains", "drawerState", "React", "Mosaic", "Root", "classNames", "MobileLayout", "onKeyboardOpenChange", "Panel", "safe", "top", "bottom", "PopoverRoot", "Splitter", "mode", "ratio", "position", "Main", "ref", "Drawer", "Dialog", "PopoverContent"]
|
|
7
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// src/meta.ts
|
|
2
|
-
import { trim } from "@dxos/util";
|
|
3
|
-
var meta = {
|
|
4
|
-
id: "org.dxos.plugin.simple-layout",
|
|
5
|
-
name: "Simple Layout",
|
|
6
|
-
description: trim`
|
|
7
|
-
Minimal layout plugin for simplified UI contexts like popover windows.
|
|
8
|
-
Provides basic content rendering without sidebars or complex navigation.
|
|
9
|
-
`,
|
|
10
|
-
icon: "ph--layout--regular"
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
// src/types/capabilities.ts
|
|
14
|
-
import { Capability } from "@dxos/app-framework";
|
|
15
|
-
var SimpleLayoutState = Capability.make(`${meta.id}.state`);
|
|
16
|
-
|
|
17
|
-
// src/types/events.ts
|
|
18
|
-
import { AppActivationEvents } from "@dxos/app-toolkit";
|
|
19
|
-
(function(SimpleLayoutEvents2) {
|
|
20
|
-
SimpleLayoutEvents2.StateReady = AppActivationEvents.createStateEvent(SimpleLayoutState.identifier);
|
|
21
|
-
})(SimpleLayoutEvents || (SimpleLayoutEvents = {}));
|
|
22
|
-
var SimpleLayoutEvents;
|
|
23
|
-
|
|
24
|
-
export {
|
|
25
|
-
meta,
|
|
26
|
-
SimpleLayoutState,
|
|
27
|
-
SimpleLayoutEvents
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=chunk-MRR7PXSM.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts", "../../../src/types/capabilities.ts", "../../../src/types/events.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.simple-layout',\n name: 'Simple Layout',\n description: trim`\n Minimal layout plugin for simplified UI contexts like popover windows.\n Provides basic content rendering without sidebars or complex navigation.\n `,\n icon: 'ph--layout--regular',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Label } from '@dxos/react-ui';\n\nimport { meta } from '../meta';\n\nexport type DrawerState = 'closed' | 'open' | 'expanded';\n\n// TODO(wittjosiah): Handle toasts.\nexport type SimpleLayoutState = {\n /** Data to be passed to the main content Surface. */\n content?: any;\n\n previousWorkspace: string;\n workspace: string;\n active?: string;\n\n dialogOpen: boolean;\n dialogType?: 'default' | 'alert';\n dialogBlockAlign?: 'start' | 'center' | 'end';\n dialogOverlayClasses?: string;\n dialogOverlayStyle?: Record<string, any>;\n /** Data to be passed to the dialog Surface. */\n dialogContent?: any;\n\n popoverOpen?: boolean;\n popoverSide?: 'top' | 'right' | 'bottom' | 'left';\n popoverVariant?: 'virtual' | 'react';\n popoverAnchor?: HTMLButtonElement;\n popoverAnchorId?: string;\n popoverKind?: 'base' | 'card';\n popoverTitle?: Label;\n popoverContent?: any;\n\n /** Bottom drawer state. */\n drawerState: DrawerState;\n\n /** Stack of previously active item IDs for back navigation. */\n history: string[];\n\n /** Whether running in popover window context (hides mobile-specific UI). */\n isPopover?: boolean;\n\n /** Variant of the companion to display in the drawer (e.g., \"comments\", \"assistant-chat\"). */\n companionVariant?: string;\n};\n\nexport const SimpleLayoutState = Capability.make<Atom.Writable<SimpleLayoutState>>(`${meta.id}.state`);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { SimpleLayoutState } from './capabilities';\n\nexport namespace SimpleLayoutEvents {\n /** Fired when SimpleLayoutState capability is ready. */\n export const StateReady: ActivationEvent.ActivationEvent = AppActivationEvents.createStateEvent(\n SimpleLayoutState.identifier,\n );\n}\n"],
|
|
5
|
-
"mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;AACR;;;ACTA,SAASC,kBAAkB;AA8CpB,IAAMC,oBAAoBC,WAAWC,KAAuC,GAAGC,KAAKC,EAAE,QAAQ;;;AC/CrG,SAASC,2BAA2B;UAInBC,qBAAAA;sBAEFC,aAA8CC,oBAAoBC,iBAC7EC,kBAAkBC,UAAU;AAEhC,GALiBL,uBAAAA,qBAAAA,CAAAA,EAAAA;;",
|
|
6
|
-
"names": ["trim", "meta", "id", "name", "description", "trim", "icon", "Capability", "SimpleLayoutState", "Capability", "make", "meta", "id", "AppActivationEvents", "SimpleLayoutEvents", "StateReady", "AppActivationEvents", "createStateEvent", "SimpleLayoutState", "identifier"]
|
|
7
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SimpleLayoutEvents,
|
|
3
|
-
meta
|
|
4
|
-
} from "./chunk-MRR7PXSM.mjs";
|
|
5
|
-
|
|
6
|
-
// src/SimpleLayoutPlugin.ts
|
|
7
|
-
import { ActivationEvent, ActivationEvents, Capability as Capability6, Plugin } from "@dxos/app-framework";
|
|
8
|
-
import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
|
|
9
|
-
|
|
10
|
-
// src/capabilities/operation-resolver/index.ts
|
|
11
|
-
import { Capability as Capability$ } from "@dxos/app-framework";
|
|
12
|
-
var OperationResolver = Capability$.lazy("OperationResolver", () => import("./operation-resolver-VTZ6HZ4B.mjs"));
|
|
13
|
-
|
|
14
|
-
// src/capabilities/react-root/index.ts
|
|
15
|
-
import { Capability } from "@dxos/app-framework";
|
|
16
|
-
var ReactRoot = Capability.lazy("ReactRoot", () => import("./react-root-WVQYY2JA.mjs"));
|
|
17
|
-
|
|
18
|
-
// src/capabilities/react-surface/index.ts
|
|
19
|
-
import { Capability as Capability2 } from "@dxos/app-framework";
|
|
20
|
-
var ReactSurface = Capability2.lazy("ReactSurface", () => import("./react-surface-VLBR37ED.mjs"));
|
|
21
|
-
|
|
22
|
-
// src/capabilities/spotlight-dismiss/index.ts
|
|
23
|
-
import { Capability as Capability3 } from "@dxos/app-framework";
|
|
24
|
-
var SpotlightDismiss = Capability3.lazy("SpotlightDismiss", () => import("./spotlight-dismiss-67PHYS5B.mjs"));
|
|
25
|
-
|
|
26
|
-
// src/capabilities/state/index.ts
|
|
27
|
-
import { Capability as Capability4 } from "@dxos/app-framework";
|
|
28
|
-
var State = Capability4.lazy("State", () => import("./state-TXSMUWYI.mjs"));
|
|
29
|
-
|
|
30
|
-
// src/capabilities/url-handler/index.ts
|
|
31
|
-
import { Capability as Capability5 } from "@dxos/app-framework";
|
|
32
|
-
var UrlHandler = Capability5.lazy("UrlHandler", () => import("./url-handler-RBRONH7S.mjs"));
|
|
33
|
-
|
|
34
|
-
// src/translations.ts
|
|
35
|
-
var translations = [
|
|
36
|
-
{
|
|
37
|
-
"en-US": {
|
|
38
|
-
[meta.id]: {
|
|
39
|
-
"plugin name": "Simple layout",
|
|
40
|
-
"settings title": "Simple layout settings",
|
|
41
|
-
"workspaces heading": "Workspaces",
|
|
42
|
-
"settings heading": "Settings",
|
|
43
|
-
"back label": "Back",
|
|
44
|
-
"browse label": "Browse",
|
|
45
|
-
"notifications label": "Notifications",
|
|
46
|
-
"profile label": "Profile",
|
|
47
|
-
"app menu label": "App menu",
|
|
48
|
-
"main menu label": "Main menu",
|
|
49
|
-
"companions menu label": "Companions",
|
|
50
|
-
"error fallback message": "An error occurred",
|
|
51
|
-
"search placeholder": "Search...",
|
|
52
|
-
"drawer label": "Drawer",
|
|
53
|
-
"close drawer label": "Close drawer",
|
|
54
|
-
"expand drawer label": "Expand drawer",
|
|
55
|
-
"collapse drawer label": "Collapse drawer",
|
|
56
|
-
"actions menu label": "Actions"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
];
|
|
61
|
-
|
|
62
|
-
// src/SimpleLayoutPlugin.ts
|
|
63
|
-
var SimpleLayoutPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationResolverModule({
|
|
64
|
-
activate: OperationResolver
|
|
65
|
-
}), AppPlugin.addTranslationsModule({
|
|
66
|
-
translations
|
|
67
|
-
}), Plugin.addModule(({ isPopover = false }) => ({
|
|
68
|
-
id: Capability6.getModuleTag(State),
|
|
69
|
-
activatesOn: ActivationEvents.Startup,
|
|
70
|
-
activatesAfter: [
|
|
71
|
-
SimpleLayoutEvents.StateReady,
|
|
72
|
-
AppActivationEvents.LayoutReady
|
|
73
|
-
],
|
|
74
|
-
activate: () => State({
|
|
75
|
-
initialState: {
|
|
76
|
-
isPopover
|
|
77
|
-
}
|
|
78
|
-
})
|
|
79
|
-
})), Plugin.addModule(({ isPopover = false }) => ({
|
|
80
|
-
id: Capability6.getModuleTag(SpotlightDismiss),
|
|
81
|
-
activatesOn: ActivationEvents.Startup,
|
|
82
|
-
activate: () => SpotlightDismiss({
|
|
83
|
-
isPopover
|
|
84
|
-
})
|
|
85
|
-
})), Plugin.addModule({
|
|
86
|
-
id: Capability6.getModuleTag(ReactRoot),
|
|
87
|
-
activatesOn: ActivationEvents.Startup,
|
|
88
|
-
activate: ReactRoot
|
|
89
|
-
}), Plugin.addModule({
|
|
90
|
-
id: Capability6.getModuleTag(ReactSurface),
|
|
91
|
-
activatesOn: ActivationEvents.Startup,
|
|
92
|
-
activate: ReactSurface
|
|
93
|
-
}), Plugin.addModule({
|
|
94
|
-
id: Capability6.getModuleTag(UrlHandler),
|
|
95
|
-
activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, SimpleLayoutEvents.StateReady),
|
|
96
|
-
activate: UrlHandler
|
|
97
|
-
}), Plugin.make);
|
|
98
|
-
export {
|
|
99
|
-
SimpleLayoutPlugin
|
|
100
|
-
};
|
|
101
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/SimpleLayoutPlugin.ts", "../../../src/capabilities/operation-resolver/index.ts", "../../../src/capabilities/react-root/index.ts", "../../../src/capabilities/react-surface/index.ts", "../../../src/capabilities/spotlight-dismiss/index.ts", "../../../src/capabilities/state/index.ts", "../../../src/capabilities/url-handler/index.ts", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvent, ActivationEvents, Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\n\nimport { OperationResolver, ReactRoot, ReactSurface, SpotlightDismiss, State, UrlHandler } from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { SimpleLayoutEvents } from './types';\n\nexport type SimpleLayoutPluginOptions = {\n /** Whether running in popover window context (hides mobile-specific UI). */\n isPopover?: boolean;\n};\n\nexport const SimpleLayoutPlugin = Plugin.define<SimpleLayoutPluginOptions>(meta).pipe(\n AppPlugin.addOperationResolverModule({ activate: OperationResolver }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule(({ isPopover = false }) => ({\n id: Capability.getModuleTag(State),\n activatesOn: ActivationEvents.Startup,\n activatesAfter: [SimpleLayoutEvents.StateReady, AppActivationEvents.LayoutReady],\n activate: () => State({ initialState: { isPopover } }),\n })),\n Plugin.addModule(({ isPopover = false }) => ({\n id: Capability.getModuleTag(SpotlightDismiss),\n activatesOn: ActivationEvents.Startup,\n activate: () => SpotlightDismiss({ isPopover }),\n })),\n Plugin.addModule({\n id: Capability.getModuleTag(ReactRoot),\n activatesOn: ActivationEvents.Startup,\n activate: ReactRoot,\n }),\n Plugin.addModule({\n id: Capability.getModuleTag(ReactSurface),\n activatesOn: ActivationEvents.Startup,\n activate: ReactSurface,\n }),\n Plugin.addModule({\n id: Capability.getModuleTag(UrlHandler),\n activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, SimpleLayoutEvents.StateReady),\n activate: UrlHandler,\n }),\n Plugin.make,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Capability, Capability as Capability$ } from '@dxos/app-framework';\n\nexport const OperationResolver: Capability.LazyCapability = Capability$.lazy(\n 'OperationResolver',\n () => import('./operation-resolver'),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactRoot = Capability.lazy('ReactRoot', () => import('./react-root'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const SpotlightDismiss = Capability.lazy('SpotlightDismiss', () => import('./spotlight-dismiss'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const State = Capability.lazy('State', () => import('./state'));\n\nexport type { SimpleLayoutStateOptions } from './state';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const UrlHandler = Capability.lazy('UrlHandler', () => import('./url-handler'));\n", "//\n// Copyright 2025 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.id]: {\n 'plugin name': 'Simple layout',\n 'settings title': 'Simple layout settings',\n 'workspaces heading': 'Workspaces',\n 'settings heading': 'Settings',\n 'back label': 'Back',\n 'browse label': 'Browse',\n 'notifications label': 'Notifications',\n 'profile label': 'Profile',\n 'app menu label': 'App menu',\n 'main menu label': 'Main menu',\n 'companions menu label': 'Companions',\n 'error fallback message': 'An error occurred',\n 'search placeholder': 'Search...',\n 'drawer label': 'Drawer',\n 'close drawer label': 'Close drawer',\n 'expand drawer label': 'Expand drawer',\n 'collapse drawer label': 'Collapse drawer',\n 'actions menu label': 'Actions',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,SAASA,iBAAiBC,kBAAkBC,cAAAA,aAAYC,cAAc;AACtE,SAASC,qBAAqBC,iBAAiB;;;ACD/C,SAA0BC,cAAcC,mBAAmB;AAEpD,IAAMC,oBAA+CC,YAAYC,KACtE,qBACA,MAAM,OAAO,mCAAA,CAAA;;;ACJf,SAASC,kBAAkB;AAEpB,IAAMC,YAAYC,WAAWC,KAAK,aAAa,MAAM,OAAO,2BAAA,CAAA;;;ACFnE,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,eAAeC,YAAWC,KAAK,gBAAgB,MAAM,OAAO,8BAAA,CAAA;;;ACFzE,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,mBAAmBC,YAAWC,KAAK,oBAAoB,MAAM,OAAO,kCAAA,CAAA;;;ACFjF,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,QAAQC,YAAWC,KAAK,SAAS,MAAM,OAAO,sBAAA,CAAA;;;ACF3D,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,aAAaC,YAAWC,KAAK,cAAc,MAAM,OAAO,4BAAA,CAAA;;;ACE9D,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,kBAAkB;QAClB,sBAAsB;QACtB,oBAAoB;QACpB,cAAc;QACd,gBAAgB;QAChB,uBAAuB;QACvB,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;QACnB,yBAAyB;QACzB,0BAA0B;QAC1B,sBAAsB;QACtB,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,yBAAyB;QACzB,sBAAsB;MACxB;IACF;EACF;;;;APfK,IAAMC,qBAAqBC,OAAOC,OAAkCC,IAAAA,EAAMC,KAC/EC,UAAUC,2BAA2B;EAAEC,UAAUC;AAAkB,CAAA,GACnEH,UAAUI,sBAAsB;EAAEC;AAAa,CAAA,GAC/CT,OAAOU,UAAU,CAAC,EAAEC,YAAY,MAAK,OAAQ;EAC3CC,IAAIC,YAAWC,aAAaC,KAAAA;EAC5BC,aAAaC,iBAAiBC;EAC9BC,gBAAgB;IAACC,mBAAmBC;IAAYC,oBAAoBC;;EACpEjB,UAAU,MAAMS,MAAM;IAAES,cAAc;MAAEb;IAAU;EAAE,CAAA;AACtD,EAAA,GACAX,OAAOU,UAAU,CAAC,EAAEC,YAAY,MAAK,OAAQ;EAC3CC,IAAIC,YAAWC,aAAaW,gBAAAA;EAC5BT,aAAaC,iBAAiBC;EAC9BZ,UAAU,MAAMmB,iBAAiB;IAAEd;EAAU,CAAA;AAC/C,EAAA,GACAX,OAAOU,UAAU;EACfE,IAAIC,YAAWC,aAAaY,SAAAA;EAC5BV,aAAaC,iBAAiBC;EAC9BZ,UAAUoB;AACZ,CAAA,GACA1B,OAAOU,UAAU;EACfE,IAAIC,YAAWC,aAAaa,YAAAA;EAC5BX,aAAaC,iBAAiBC;EAC9BZ,UAAUqB;AACZ,CAAA,GACA3B,OAAOU,UAAU;EACfE,IAAIC,YAAWC,aAAac,UAAAA;EAC5BZ,aAAaa,gBAAgBC,MAAMb,iBAAiBc,uBAAuBX,mBAAmBC,UAAU;EACxGf,UAAUsB;AACZ,CAAA,GACA5B,OAAOgC,IAAI;",
|
|
6
|
-
"names": ["ActivationEvent", "ActivationEvents", "Capability", "Plugin", "AppActivationEvents", "AppPlugin", "Capability", "Capability$", "OperationResolver", "Capability$", "lazy", "Capability", "ReactRoot", "Capability", "lazy", "Capability", "ReactSurface", "Capability", "lazy", "Capability", "SpotlightDismiss", "Capability", "lazy", "Capability", "State", "Capability", "lazy", "Capability", "UrlHandler", "Capability", "lazy", "translations", "meta", "id", "SimpleLayoutPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addOperationResolverModule", "activate", "OperationResolver", "addTranslationsModule", "translations", "addModule", "isPopover", "id", "Capability", "getModuleTag", "State", "activatesOn", "ActivationEvents", "Startup", "activatesAfter", "SimpleLayoutEvents", "StateReady", "AppActivationEvents", "LayoutReady", "initialState", "SpotlightDismiss", "ReactRoot", "ReactSurface", "UrlHandler", "ActivationEvent", "allOf", "OperationInvokerReady", "make"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"src/meta.ts":{"bytes":1495,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/types/capabilities.ts":{"bytes":2825,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/events.ts":{"bytes":1600,"imports":[{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"src/types/capabilities.ts","kind":"import-statement","original":"./capabilities"}],"format":"esm"},"src/types/index.ts":{"bytes":568,"imports":[{"path":"src/types/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/types/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"src/capabilities/operation-resolver/operation-resolver.ts":{"bytes":24000,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"src/capabilities/operation-resolver/index.ts":{"bytes":1105,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/operation-resolver/operation-resolver.ts","kind":"dynamic-import","original":"./operation-resolver"}],"format":"esm"},"src/components/ContentLoading/ContentLoading.tsx":{"bytes":1245,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/ContentLoading/index.ts":{"bytes":508,"imports":[{"path":"src/components/ContentLoading/ContentLoading.tsx","kind":"import-statement","original":"./ContentLoading"}],"format":"esm"},"src/components/hooks.ts":{"bytes":2611,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"format":"esm"},"src/components/Home/Home.tsx":{"bytes":17352,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"src/components/hooks.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"src/components/Home/index.ts":{"bytes":472,"imports":[{"path":"src/components/Home/Home.tsx","kind":"import-statement","original":"./Home"}],"format":"esm"},"src/components/MobileLayout/MobileLayout.tsx":{"bytes":27245,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/MobileLayout/index.ts":{"bytes":500,"imports":[{"path":"src/components/MobileLayout/MobileLayout.tsx","kind":"import-statement","original":"./MobileLayout"}],"format":"esm"},"src/hooks/useAppBarProps.ts":{"bytes":16719,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/hooks/actions.ts":{"bytes":9400,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useCompanions.ts":{"bytes":2953,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/hooks/actions.ts","kind":"import-statement","original":"./actions"}],"format":"esm"},"src/hooks/useSimpleLayoutState.ts":{"bytes":2929,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/hooks/useDrawerActions.ts":{"bytes":12778,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/hooks/actions.ts","kind":"import-statement","original":"./actions"},{"path":"src/hooks/useSimpleLayoutState.ts","kind":"import-statement","original":"./useSimpleLayoutState"}],"format":"esm"},"src/hooks/useNavbarActions.ts":{"bytes":10188,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"},{"path":"src/hooks/actions.ts","kind":"import-statement","original":"./actions"},{"path":"src/hooks/useSimpleLayoutState.ts","kind":"import-statement","original":"./useSimpleLayoutState"}],"format":"esm"},"src/hooks/index.ts":{"bytes":1012,"imports":[{"path":"src/hooks/useAppBarProps.ts","kind":"import-statement","original":"./useAppBarProps"},{"path":"src/hooks/useCompanions.ts","kind":"import-statement","original":"./useCompanions"},{"path":"src/hooks/actions.ts","kind":"import-statement","original":"./actions"},{"path":"src/hooks/useDrawerActions.ts","kind":"import-statement","original":"./useDrawerActions"},{"path":"src/hooks/useNavbarActions.ts","kind":"import-statement","original":"./useNavbarActions"},{"path":"src/hooks/useSimpleLayoutState.ts","kind":"import-statement","original":"./useSimpleLayoutState"}],"format":"esm"},"src/components/Popover/Popover.tsx":{"bytes":16785,"imports":[{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"src/components/Popover/index.ts":{"bytes":482,"imports":[{"path":"src/components/Popover/Popover.tsx","kind":"import-statement","original":"./Popover"}],"format":"esm"},"src/components/SimpleLayout/AppBar.tsx":{"bytes":9365,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"src/components/MobileLayout/index.ts","kind":"import-statement","original":"../MobileLayout"}],"format":"esm"},"src/components/SimpleLayout/NavBar.tsx":{"bytes":3027,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/SimpleLayout/Main.tsx":{"bytes":9103,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/ContentLoading/index.ts","kind":"import-statement","original":"../ContentLoading"},{"path":"src/components/hooks.ts","kind":"import-statement","original":"../hooks"},{"path":"src/components/MobileLayout/index.ts","kind":"import-statement","original":"../MobileLayout"},{"path":"src/components/SimpleLayout/AppBar.tsx","kind":"import-statement","original":"./AppBar"},{"path":"src/components/SimpleLayout/NavBar.tsx","kind":"import-statement","original":"./NavBar"}],"format":"esm"},"src/components/Dialog/Dialog.tsx":{"bytes":5085,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"}],"format":"esm"},"src/components/Dialog/index.ts":{"bytes":480,"imports":[{"path":"src/components/Dialog/Dialog.tsx","kind":"import-statement","original":"./Dialog"}],"format":"esm"},"src/components/SimpleLayout/Drawer.tsx":{"bytes":11097,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/ContentLoading/index.ts","kind":"import-statement","original":"../ContentLoading"}],"format":"esm"},"src/components/SimpleLayout/SimpleLayout.tsx":{"bytes":7492,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/Dialog/index.ts","kind":"import-statement","original":"../Dialog"},{"path":"src/components/MobileLayout/index.ts","kind":"import-statement","original":"../MobileLayout"},{"path":"src/components/Popover/index.ts","kind":"import-statement","original":"../Popover"},{"path":"src/components/SimpleLayout/Drawer.tsx","kind":"import-statement","original":"./Drawer"},{"path":"src/components/SimpleLayout/Main.tsx","kind":"import-statement","original":"./Main"}],"format":"esm"},"src/components/SimpleLayout/index.ts":{"bytes":748,"imports":[{"path":"src/components/SimpleLayout/AppBar.tsx","kind":"import-statement","original":"./AppBar"},{"path":"src/components/SimpleLayout/Main.tsx","kind":"import-statement","original":"./Main"},{"path":"src/components/SimpleLayout/NavBar.tsx","kind":"import-statement","original":"./NavBar"},{"path":"src/components/SimpleLayout/SimpleLayout.tsx","kind":"import-statement","original":"./SimpleLayout"}],"format":"esm"},"src/components/NavBranch/NavBranch.tsx":{"bytes":15556,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"src/components/hooks.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"src/components/NavBranch/index.ts":{"bytes":490,"imports":[{"path":"src/components/NavBranch/NavBranch.tsx","kind":"import-statement","original":"./NavBranch"}],"format":"esm"},"src/components/index.ts":{"bytes":949,"imports":[{"path":"src/components/ContentLoading/index.ts","kind":"import-statement","original":"./ContentLoading"},{"path":"src/components/Home/index.ts","kind":"import-statement","original":"./Home"},{"path":"src/components/MobileLayout/index.ts","kind":"import-statement","original":"./MobileLayout"},{"path":"src/components/Popover/index.ts","kind":"import-statement","original":"./Popover"},{"path":"src/components/SimpleLayout/index.ts","kind":"import-statement","original":"./SimpleLayout"},{"path":"src/components/NavBranch/index.ts","kind":"import-statement","original":"./NavBranch"}],"format":"esm"},"src/capabilities/react-root/react-root.tsx":{"bytes":2030,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"src/capabilities/react-root/index.ts":{"bytes":889,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-root/react-root.tsx","kind":"dynamic-import","original":"./react-root"}],"format":"esm"},"src/capabilities/react-surface/react-surface.tsx":{"bytes":4827,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"src/capabilities/react-surface/index.ts":{"bytes":917,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/capabilities/spotlight-dismiss/spotlight-dismiss.ts":{"bytes":8388,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/spotlight-dismiss/index.ts":{"bytes":957,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/spotlight-dismiss/spotlight-dismiss.ts","kind":"dynamic-import","original":"./spotlight-dismiss"}],"format":"esm"},"src/capabilities/state/state.tsx":{"bytes":5542,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"src/capabilities/state/index.ts":{"bytes":923,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/state/state.tsx","kind":"dynamic-import","original":"./state"}],"format":"esm"},"src/capabilities/url-handler/url-handler.ts":{"bytes":17021,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../../types"},{"path":"@tauri-apps/plugin-deep-link","kind":"dynamic-import","external":true}],"format":"esm"},"src/capabilities/url-handler/index.ts":{"bytes":897,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/url-handler/url-handler.ts","kind":"dynamic-import","original":"./url-handler"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":991,"imports":[{"path":"src/capabilities/operation-resolver/index.ts","kind":"import-statement","original":"./operation-resolver"},{"path":"src/capabilities/react-root/index.ts","kind":"import-statement","original":"./react-root"},{"path":"src/capabilities/react-surface/index.ts","kind":"import-statement","original":"./react-surface"},{"path":"src/capabilities/spotlight-dismiss/index.ts","kind":"import-statement","original":"./spotlight-dismiss"},{"path":"src/capabilities/state/index.ts","kind":"import-statement","original":"./state"},{"path":"src/capabilities/url-handler/index.ts","kind":"import-statement","original":"./url-handler"}],"format":"esm"},"src/translations.ts":{"bytes":3310,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/SimpleLayoutPlugin.ts":{"bytes":6773,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":490,"imports":[{"path":"src/SimpleLayoutPlugin.ts","kind":"import-statement","original":"./SimpleLayoutPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7284},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/operation-resolver-VTZ6HZ4B.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-root-WVQYY2JA.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-VLBR37ED.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/spotlight-dismiss-67PHYS5B.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/state-TXSMUWYI.mjs","kind":"dynamic-import"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/url-handler-RBRONH7S.mjs","kind":"dynamic-import"}],"exports":["SimpleLayoutPlugin"],"entryPoint":"src/index.ts","inputs":{"src/SimpleLayoutPlugin.ts":{"bytesInOutput":1329},"src/capabilities/operation-resolver/index.ts":{"bytesInOutput":179},"src/capabilities/index.ts":{"bytesInOutput":0},"src/capabilities/react-root/index.ts":{"bytesInOutput":139},"src/capabilities/react-surface/index.ts":{"bytesInOutput":164},"src/capabilities/spotlight-dismiss/index.ts":{"bytesInOutput":176},"src/capabilities/state/index.ts":{"bytesInOutput":142},"src/capabilities/url-handler/index.ts":{"bytesInOutput":158},"src/translations.ts":{"bytesInOutput":847},"src/index.ts":{"bytesInOutput":0}},"bytes":3615},"dist/lib/browser/operation-resolver-VTZ6HZ4B.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11396},"dist/lib/browser/operation-resolver-VTZ6HZ4B.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/operation-resolver/operation-resolver.ts","inputs":{"src/capabilities/operation-resolver/operation-resolver.ts":{"bytesInOutput":5941}},"bytes":6172},"dist/lib/browser/react-root-WVQYY2JA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1027},"dist/lib/browser/react-root-WVQYY2JA.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MDPEKLKR.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-root/react-root.tsx","inputs":{"src/capabilities/react-root/react-root.tsx":{"bytesInOutput":358}},"bytes":600},"dist/lib/browser/react-surface-VLBR37ED.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2474},"dist/lib/browser/react-surface-VLBR37ED.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MDPEKLKR.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface/react-surface.tsx","inputs":{"src/capabilities/react-surface/react-surface.tsx":{"bytesInOutput":1027}},"bytes":1286},"dist/lib/browser/chunk-MDPEKLKR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93083},"dist/lib/browser/chunk-MDPEKLKR.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true}],"exports":["Home","NavBranch","SimpleLayout"],"inputs":{"src/components/Home/Home.tsx":{"bytesInOutput":4472},"src/components/hooks.ts":{"bytesInOutput":456},"src/components/SimpleLayout/SimpleLayout.tsx":{"bytesInOutput":1829},"src/hooks/useAppBarProps.ts":{"bytesInOutput":3717},"src/hooks/index.ts":{"bytesInOutput":0},"src/hooks/useCompanions.ts":{"bytesInOutput":571},"src/hooks/actions.ts":{"bytesInOutput":1814},"src/hooks/useDrawerActions.ts":{"bytesInOutput":2666},"src/components/ContentLoading/ContentLoading.tsx":{"bytesInOutput":201},"src/components/ContentLoading/index.ts":{"bytesInOutput":0},"src/components/index.ts":{"bytesInOutput":0},"src/components/Home/index.ts":{"bytesInOutput":0},"src/components/MobileLayout/MobileLayout.tsx":{"bytesInOutput":5786},"src/components/MobileLayout/index.ts":{"bytesInOutput":0},"src/components/Popover/Popover.tsx":{"bytesInOutput":4279},"src/components/Popover/index.ts":{"bytesInOutput":0},"src/components/SimpleLayout/AppBar.tsx":{"bytesInOutput":2233},"src/components/SimpleLayout/index.ts":{"bytesInOutput":0},"src/components/SimpleLayout/Main.tsx":{"bytesInOutput":2122},"src/components/SimpleLayout/NavBar.tsx":{"bytesInOutput":564},"src/components/NavBranch/NavBranch.tsx":{"bytesInOutput":4112},"src/components/NavBranch/index.ts":{"bytesInOutput":0},"src/hooks/useSimpleLayoutState.ts":{"bytesInOutput":599},"src/hooks/useNavbarActions.ts":{"bytesInOutput":2034},"src/components/Dialog/Dialog.tsx":{"bytesInOutput":1279},"src/components/Dialog/index.ts":{"bytesInOutput":0},"src/components/SimpleLayout/Drawer.tsx":{"bytesInOutput":2648}},"bytes":42426},"dist/lib/browser/spotlight-dismiss-67PHYS5B.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4092},"dist/lib/browser/spotlight-dismiss-67PHYS5B.mjs":{"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/spotlight-dismiss/spotlight-dismiss.ts","inputs":{"src/capabilities/spotlight-dismiss/spotlight-dismiss.ts":{"bytesInOutput":1823}},"bytes":1989},"dist/lib/browser/state-TXSMUWYI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2885},"dist/lib/browser/state-TXSMUWYI.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/state/state.tsx","inputs":{"src/capabilities/state/state.tsx":{"bytesInOutput":1111}},"bytes":1291},"dist/lib/browser/url-handler-RBRONH7S.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8154},"dist/lib/browser/url-handler-RBRONH7S.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MRR7PXSM.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@tauri-apps/plugin-deep-link","kind":"dynamic-import","external":true}],"exports":["default"],"entryPoint":"src/capabilities/url-handler/url-handler.ts","inputs":{"src/capabilities/url-handler/url-handler.ts":{"bytesInOutput":4436}},"bytes":4639},"dist/lib/browser/chunk-MRR7PXSM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3204},"dist/lib/browser/chunk-MRR7PXSM.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true}],"exports":["SimpleLayoutEvents","SimpleLayoutState","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":323},"src/types/capabilities.ts":{"bytesInOutput":111},"src/types/index.ts":{"bytesInOutput":0},"src/types/events.ts":{"bytesInOutput":270}},"bytes":880}}}
|