@dxos/plugin-deck 0.7.5-labs.a279d8c → 0.7.5-main.2567c87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-WUMAJGVA.mjs → chunk-2M4PXYNB.mjs} +3 -3
- package/dist/lib/browser/{chunk-WUMAJGVA.mjs.map → chunk-2M4PXYNB.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +5 -11
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{location-AIO6V3MK.mjs → location-QHRBQBQN.mjs} +2 -2
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-context-G6PDXUI5.mjs → react-context-3BDW7W2N.mjs} +2 -2
- package/dist/lib/browser/{react-root-AWYSGU4Q.mjs → react-root-UL7ZDRVZ.mjs} +2 -2
- package/dist/lib/browser/{react-surface-CLUABFNX.mjs → react-surface-VPNOGGNN.mjs} +2 -2
- package/dist/lib/browser/{url-handler-JRAQRY73.mjs → url-handler-Z5B7LD3N.mjs} +2 -2
- package/dist/types/src/DeckPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/layout/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/layout/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation/index.d.ts +0 -1
- package/dist/types/src/capabilities/navigation/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -31
- package/src/DeckPlugin.ts +0 -6
- package/src/capabilities/navigation/index.ts +0 -1
- package/src/components/DeckLayout/ContentEmpty.tsx +2 -2
- package/dist/lib/browser/tools-4XY7KFQF.mjs +0 -46
- package/dist/lib/browser/tools-4XY7KFQF.mjs.map +0 -7
- package/dist/types/src/capabilities/navigation/tools.d.ts +0 -9
- package/dist/types/src/capabilities/navigation/tools.d.ts.map +0 -1
- package/src/capabilities/navigation/tools.ts +0 -57
- /package/dist/lib/browser/{location-AIO6V3MK.mjs.map → location-QHRBQBQN.mjs.map} +0 -0
- /package/dist/lib/browser/{react-context-G6PDXUI5.mjs.map → react-context-3BDW7W2N.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-AWYSGU4Q.mjs.map → react-root-UL7ZDRVZ.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-CLUABFNX.mjs.map → react-surface-VPNOGGNN.mjs.map} +0 -0
- /package/dist/lib/browser/{url-handler-JRAQRY73.mjs.map → url-handler-Z5B7LD3N.mjs.map} +0 -0
|
@@ -508,11 +508,11 @@ import { mx as mx3 } from "@dxos/react-ui-theme";
|
|
|
508
508
|
var ContentEmpty = () => {
|
|
509
509
|
return /* @__PURE__ */ React8.createElement("div", {
|
|
510
510
|
role: "none",
|
|
511
|
-
className: "min-bs-screen is-dvw sm:is-full p-8 grid grid-rows-[var(--rail-size)_1fr]
|
|
511
|
+
className: "min-bs-screen is-dvw sm:is-full p-8 grid grid-rows-[var(--rail-size)_1fr]",
|
|
512
512
|
"data-testid": "layoutPlugin.firstRunMessage"
|
|
513
513
|
}, /* @__PURE__ */ React8.createElement("div", {
|
|
514
514
|
role: "toolbar",
|
|
515
|
-
className: mx3(soloInlinePadding, "
|
|
515
|
+
className: mx3(soloInlinePadding, "flex items-stretch")
|
|
516
516
|
}, /* @__PURE__ */ React8.createElement(ToggleSidebarButton, null), /* @__PURE__ */ React8.createElement("span", {
|
|
517
517
|
role: "none",
|
|
518
518
|
className: "grow"
|
|
@@ -1049,4 +1049,4 @@ export {
|
|
|
1049
1049
|
DeckLayout,
|
|
1050
1050
|
LayoutSettings
|
|
1051
1051
|
};
|
|
1052
|
-
//# sourceMappingURL=chunk-
|
|
1052
|
+
//# sourceMappingURL=chunk-2M4PXYNB.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/DeckLayout/constants.ts", "../../../src/components/LayoutContext.ts", "../../../src/components/DeckContext.ts", "../../../src/components/DeckLayout/DeckLayout.tsx", "../../../src/components/DeckLayout/ActiveNode.tsx", "../../../src/hooks/useNode.ts", "../../../src/hooks/useNodeActionExpander.ts", "../../../src/hooks/useMainSize.ts", "../../../src/components/DeckLayout/ComplementarySidebar.tsx", "../../../src/components/DeckLayout/PlankError.tsx", "../../../src/components/DeckLayout/NodePlankHeading.tsx", "../../../src/components/DeckLayout/PlankControls.tsx", "../../../src/components/DeckLayout/SidebarButton.tsx", "../../../src/components/fragments.ts", "../../../src/components/DeckLayout/PlankLoading.tsx", "../../../src/components/DeckLayout/ContentEmpty.tsx", "../../../src/components/DeckLayout/Fullscreen.tsx", "../../../src/components/DeckLayout/Fallback.tsx", "../../../src/components/DeckLayout/Plank.tsx", "../../../src/components/DeckLayout/Sidebar.tsx", "../../../src/components/DeckLayout/Banner.tsx", "../../../src/util/useHoistStatusbar.ts", "../../../src/components/DeckLayout/StatusBar.tsx", "../../../src/components/DeckLayout/Toast.tsx", "../../../src/components/DeckLayout/Topbar.tsx", "../../../src/components/LayoutSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nexport const NAV_ID = 'NavTree';\nexport const SURFACE_PREFIX = 'surface:';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Context, createContext, useContext } from 'react';\n\nimport type { Layout } from '@dxos/app-framework';\nimport { raise } from '@dxos/debug';\n\nexport const LayoutContext: Context<Layout | null> = createContext<Layout | null>(null);\n\nexport const useLayout = (): Layout => useContext(LayoutContext) ?? raise(new Error('Missing LayoutContext'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Context, createContext, useContext } from 'react';\n\nimport { type LayoutMode } from '@dxos/app-framework';\nimport { raise } from '@dxos/debug';\n\nexport type PlankSizing = Record<string, number>;\nexport type DeckContextType = {\n plankSizing: PlankSizing;\n currentUndoId: string | undefined;\n layoutModeHistory: LayoutMode[];\n};\n\nexport const DeckContext: Context<DeckContextType | null> = createContext<DeckContextType | null>(null);\n\nexport const useDeckContext = (): DeckContextType => useContext(DeckContext) ?? raise(new Error('Missing DeckContext'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { untracked } from '@preact/signals-core';\nimport React, { useCallback, useEffect, useMemo, useRef, type UIEvent, Fragment } from 'react';\n\nimport {\n firstIdInPart,\n Surface,\n usePluginManager,\n type LayoutParts,\n type Toast as ToastSchema,\n} from '@dxos/app-framework';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { AlertDialog, Dialog as NaturalDialog, Main, Popover, useOnTransition, type MainProps } from '@dxos/react-ui';\nimport { Stack, StackContext, DEFAULT_HORIZONTAL_SIZE } from '@dxos/react-ui-stack';\nimport { mainPaddingTransitions } from '@dxos/react-ui-theme';\n\nimport { ActiveNode } from './ActiveNode';\nimport { ComplementarySidebar, type ComplementarySidebarProps } from './ComplementarySidebar';\nimport { ContentEmpty } from './ContentEmpty';\nimport { Fullscreen } from './Fullscreen';\nimport { Plank } from './Plank';\nimport { Sidebar } from './Sidebar';\nimport { StatusBar } from './StatusBar';\nimport { Toast } from './Toast';\nimport { Topbar } from './Topbar';\nimport { type Overscroll } from '../../types';\nimport { calculateOverscroll, useBreakpoints } from '../../util';\nimport { useHoistStatusbar } from '../../util/useHoistStatusbar';\nimport { useDeckContext } from '../DeckContext';\nimport { useLayout } from '../LayoutContext';\n\nexport type DeckLayoutProps = {\n layoutParts: LayoutParts;\n toasts: ToastSchema[];\n overscroll: Overscroll;\n showHints: boolean;\n onDismissToast: (id: string) => void;\n} & Pick<ComplementarySidebarProps, 'panels'>;\n\nconst PlankSeparator = ({ index }: { index: number }) =>\n index > 0 ? <span role='separator' className='row-span-2 bg-deck is-4' style={{ gridColumn: index * 2 }} /> : null;\n\nexport const DeckLayout = ({ layoutParts, toasts, overscroll, showHints, panels, onDismissToast }: DeckLayoutProps) => {\n const context = useLayout();\n const {\n layoutMode,\n sidebarOpen,\n complementarySidebarOpen,\n dialogOpen,\n dialogContent,\n dialogBlockAlign,\n dialogType,\n popoverOpen,\n popoverContent,\n popoverAnchorId,\n } = context;\n const breakpoint = useBreakpoints();\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n const { plankSizing } = useDeckContext();\n const pluginManager = usePluginManager();\n const fullScreenSlug = useMemo(() => firstIdInPart(layoutParts, 'fullScreen'), [layoutParts]);\n\n const scrollLeftRef = useRef<number | null>();\n const deckRef = useRef<HTMLDivElement>(null);\n\n const isSoloModeLoaded = layoutMode === 'solo' && Boolean(layoutParts.solo?.[0]);\n\n // Ensure the first plank is attended when the deck is first rendered.\n useEffect(() => {\n // NOTE: Not `useAttended` so that the layout component is not re-rendered when the attended list changes.\n const attended = untracked(() => {\n const attention = pluginManager.context.requestCapability(AttentionCapabilities.Attention);\n return attention.current;\n });\n const firstId = isSoloModeLoaded ? firstIdInPart(layoutParts, 'solo') : firstIdInPart(layoutParts, 'main');\n if (attended.length === 0 && firstId) {\n // TODO(wittjosiah): Focusing the type button is a workaround.\n // If the plank is directly focused on first load the focus ring appears.\n document.querySelector<HTMLElement>(`article[data-attendable-id=\"${firstId}\"] button`)?.focus();\n }\n }, []);\n\n /**\n * Clear scroll restoration state if the window is resized\n */\n const handleResize = useCallback(() => {\n scrollLeftRef.current = null;\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize]);\n\n const restoreScroll = useCallback(() => {\n if (deckRef.current && scrollLeftRef.current != null) {\n deckRef.current.scrollLeft = scrollLeftRef.current;\n }\n }, []);\n\n useOnTransition(layoutMode, (mode) => mode !== 'deck', 'deck', restoreScroll);\n\n /**\n * Save scroll position as the user scrolls\n */\n const handleScroll = useCallback(\n (event: UIEvent) => {\n if (layoutMode === 'deck' && event.currentTarget === event.target) {\n scrollLeftRef.current = (event.target as HTMLDivElement).scrollLeft;\n }\n },\n [layoutMode],\n );\n\n const isEmpty = (layoutParts.main?.length ?? 0) === 0 && (layoutParts.solo?.length ?? 0) === 0;\n\n const padding = useMemo(() => {\n if (layoutMode === 'deck' && overscroll === 'centering') {\n return calculateOverscroll(layoutParts.main?.length ?? 0);\n }\n return {};\n }, [layoutMode, overscroll, layoutParts.main]);\n\n const Dialog = dialogType === 'alert' ? AlertDialog : NaturalDialog;\n\n return (\n <Popover.Root\n modal\n open={!!(popoverAnchorId && popoverOpen)}\n onOpenChange={(nextOpen) => {\n if (nextOpen && popoverAnchorId) {\n context.popoverOpen = true;\n } else {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n }\n }}\n >\n <ActiveNode />\n\n {layoutMode === 'fullscreen' && <Fullscreen id={fullScreenSlug} />}\n\n {layoutMode !== 'fullscreen' && (\n <Main.Root\n navigationSidebarOpen={context.sidebarOpen}\n onNavigationSidebarOpenChange={(next) => (context.sidebarOpen = next)}\n complementarySidebarOpen={context.complementarySidebarOpen}\n onComplementarySidebarOpenChange={(next) => (context.complementarySidebarOpen = next)}\n >\n {/* Left sidebar. */}\n <Sidebar />\n\n {/* Right sidebar. */}\n <ComplementarySidebar panels={panels} current={layoutParts.complementary?.[0].id} />\n\n {/* Dialog overlay to dismiss dialogs. */}\n <Main.Overlay />\n\n {/* No content. */}\n {isEmpty && (\n <Main.Content handlesFocus>\n <ContentEmpty />\n </Main.Content>\n )}\n\n {/* Solo/deck mode. */}\n {!isEmpty && (\n <Main.Content\n bounce\n classNames={[\n 'grid !block-start-[env(safe-area-inset-top)] lg:!block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'lg:block-end-[--statusbar-size]',\n ]}\n handlesFocus\n style={\n {\n '--dx-main-sidebarWidth': sidebarOpen ? 'var(--nav-sidebar-size)' : '0px',\n '--dx-main-complementaryWidth': complementarySidebarOpen\n ? 'var(--complementary-sidebar-size)'\n : '0px',\n '--dx-main-contentFirstWidth': `${plankSizing[layoutParts.main?.[0]?.id ?? 'never'] ?? DEFAULT_HORIZONTAL_SIZE}rem`,\n '--dx-main-contentLastWidth': `${plankSizing[layoutParts.main?.[(layoutParts.main?.length ?? 1) - 1]?.id ?? 'never'] ?? DEFAULT_HORIZONTAL_SIZE}rem`,\n } as MainProps['style']\n }\n >\n <div\n role='none'\n className={!isSoloModeLoaded ? 'relative bg-deck overflow-hidden' : 'sr-only'}\n {...(isSoloModeLoaded && { inert: '' })}\n >\n <Stack\n orientation='horizontal'\n size='contain'\n classNames={['absolute inset-block-0 -inset-inline-px', mainPaddingTransitions]}\n onScroll={handleScroll}\n itemsCount={2 * (layoutParts.main?.length ?? 0) - 1}\n style={padding}\n ref={deckRef}\n >\n {layoutParts.main?.map((layoutEntry, index) => (\n <Fragment key={layoutEntry.id}>\n <PlankSeparator index={index} />\n <Plank\n entry={layoutEntry}\n layoutParts={layoutParts}\n part='main'\n layoutMode={layoutMode}\n order={index * 2 + 1}\n />\n </Fragment>\n ))}\n </Stack>\n </div>\n <div\n role='none'\n className={isSoloModeLoaded ? 'relative bg-deck overflow-hidden' : 'sr-only'}\n {...(!isSoloModeLoaded && { inert: '' })}\n >\n <StackContext.Provider value={{ size: 'contain', orientation: 'horizontal', rail: true }}>\n <Plank entry={layoutParts.solo?.[0]} layoutParts={layoutParts} part='solo' layoutMode={layoutMode} />\n </StackContext.Provider>\n </div>\n </Main.Content>\n )}\n\n {/* Status bar. */}\n {breakpoint === 'desktop' && <Topbar />}\n {hoistStatusbar && <StatusBar showHints={showHints} />}\n </Main.Root>\n )}\n\n {/* Global popovers. */}\n <Popover.Portal>\n <Popover.Content\n onEscapeKeyDown={() => {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n }}\n >\n <Popover.Viewport>\n <Surface role='popover' data={popoverContent} limit={1} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n\n {/* Global dialog. */}\n <Dialog.Root open={dialogOpen} onOpenChange={(nextOpen) => (context.dialogOpen = nextOpen)}>\n <Dialog.Overlay blockAlign={dialogBlockAlign}>\n <Surface role='dialog' data={dialogContent} limit={1} />\n </Dialog.Overlay>\n </Dialog.Root>\n\n {/* Global toasts. */}\n {toasts?.map((toast) => (\n <Toast\n {...toast}\n key={toast.id}\n onOpenChange={(open) => {\n if (!open) {\n onDismissToast(toast.id);\n }\n\n return open;\n }}\n />\n ))}\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { useAttended } from '@dxos/react-ui-attention';\n\nimport { useNode, useNodeActionExpander } from '../../hooks';\n\n// TODO(burdon): Factor out to effect in plugin set document title.\nexport const ActiveNode = () => {\n const [id] = useAttended();\n const { graph } = useGraph();\n const activeNode = useNode(graph, id);\n useNodeActionExpander(activeNode);\n\n return (\n <div role='none' className='sr-only'>\n {/* TODO(wittjosiah): Weird that this is a surface, feel like it's not really render logic.\n Probably this lives in React-land currently in order to access translations? */}\n <Surface role='document-title' data={{ subject: activeNode }} limit={1} />\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Graph, type Node } from '@dxos/plugin-graph';\n\n/**\n * React hook to get a node from the graph.\n *\n * @param graph Graph to find the node in.\n * @param id Id of the node to find.\n * @param timeout Optional timeout in milliseconds to wait for the node to be found.\n * @returns Node if found, undefined otherwise.\n */\n// TODO(wittjosiah): Factor out.\nexport const useNode = <T = any>(graph: Graph, id?: string, timeout?: number): Node<T> | undefined => {\n const [nodeState, setNodeState] = useState<Node<T> | undefined>(id ? graph.findNode(id, false) : undefined);\n\n useEffect(() => {\n if (!id && nodeState) {\n setNodeState(undefined);\n }\n\n if (nodeState?.id === id || !id) {\n return;\n }\n\n // Set timeout did not seem to effectively not block the UI thread.\n const frame = requestAnimationFrame(async () => {\n try {\n const node = await graph.waitForNode(id, timeout);\n if (node) {\n setNodeState(node);\n }\n } catch {}\n });\n\n return () => cancelAnimationFrame(frame);\n }, [graph, id, timeout, nodeState?.id]);\n\n return nodeState;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { ACTION_GROUP_TYPE, ACTION_TYPE, getGraph, type Node } from '@dxos/plugin-graph';\n\nconst expandNodeActions = async (node: Node) => {\n const graph = getGraph(node);\n await graph.expand(node, 'outbound', ACTION_GROUP_TYPE);\n await graph.expand(node, 'outbound', ACTION_TYPE);\n};\n\nexport const useNodeActionExpander = (node?: Node) => {\n useEffect(() => {\n if (node) {\n const frame = requestAnimationFrame(() => {\n void expandNodeActions(node);\n });\n return () => cancelAnimationFrame(frame);\n }\n }, [node]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useMainContext } from '@dxos/react-ui';\n\nexport const useMainSize = () => {\n const { navigationSidebarOpen, complementarySidebarOpen } = useMainContext('DeckPluginPlank');\n return {\n 'data-sidebar-inline-start-state': navigationSidebarOpen ? 'open' : 'closed',\n 'data-sidebar-inline-end-state': complementarySidebarOpen ? 'open' : 'closed',\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { createIntent, NavigationAction, SLUG_PATH_SEPARATOR, Surface, useIntentDispatcher } from '@dxos/app-framework';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { Main, ScrollArea, useTranslation, toLocalizedString } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { railGridHorizontal, StackContext, StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { PlankContentError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { CloseComplementarySidebarButton } from './SidebarButton';\nimport { useNode, useNodeActionExpander } from '../../hooks';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type Panel } from '../../types';\nimport { useLayout } from '../LayoutContext';\n\nexport type ComplementarySidebarProps = {\n panels: Panel[];\n current?: string;\n};\n\nexport const ComplementarySidebar = ({ panels, current }: ComplementarySidebarProps) => {\n const { popoverAnchorId } = useLayout();\n const attended = useAttended();\n const panelIds = useMemo(() => panels.map((p) => p.id), [panels]);\n const activePanelId = panelIds.find((p) => p === current) ?? panels[0].id;\n const activeEntryId = attended[0] ? `${attended[0]}${SLUG_PATH_SEPARATOR}${activePanelId}` : undefined;\n const { graph } = useGraph();\n const node = useNode(graph, activeEntryId);\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n useNodeActionExpander(node);\n\n const [internalValue, setInternalValue] = useState(activePanelId);\n\n useEffect(() => {\n setInternalValue(activePanelId);\n }, [activePanelId]);\n\n const handleValueChange = useCallback(\n (nextValue: string) => {\n setInternalValue(nextValue);\n void dispatch(createIntent(NavigationAction.Open, { activeParts: { complementary: nextValue } }));\n },\n [dispatch],\n );\n\n // TODO(burdon): Scroll area should be controlled by surface.\n return (\n <Main.ComplementarySidebar classNames='lg:block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]'>\n <StackContext.Provider value={{ size: 'contain', orientation: 'horizontal', rail: true }}>\n <div role='none' className={mx(railGridHorizontal, 'grid grid-cols-[100%] bs-full')}>\n <Tabs.Root\n orientation='horizontal'\n value={internalValue}\n onValueChange={handleValueChange}\n attendableId={attended[0]}\n classNames='contents'\n >\n <StackItem.Heading classNames='border-be border-separator grid grid-cols-[1fr_min-content] items-stretch'>\n <ScrollArea.Root classNames='flex-1 min-is-0'>\n <ScrollArea.Viewport>\n <Tabs.Tablist classNames='bs-[--rail-content] is-min items-stretch pis-[max(.5rem,env(safe-area-inset-left))] sm:pis-2'>\n {panels.map((panel) => (\n <Tabs.Tab key={panel.id} value={panel.id} classNames='!min-bs-0'>\n {toLocalizedString(panel.label, t)}\n </Tabs.Tab>\n ))}\n </Tabs.Tablist>\n <ScrollArea.Scrollbar orientation='horizontal'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <CloseComplementarySidebarButton />\n </StackItem.Heading>\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n {panels.map((panel) => (\n <Tabs.Tabpanel key={panel.id} value={panel.id} classNames='pbe-[env(safe-area-inset-bottom)]'>\n {panel.id === activePanelId && node && (\n <Surface\n key={activeEntryId}\n role={`complementary--${activePanelId}`}\n data={{\n id: activeEntryId,\n subject: node.properties.object ?? node.properties.space,\n popoverAnchorId,\n }}\n fallback={PlankContentError}\n placeholder={<PlankLoading />}\n />\n )}\n </Tabs.Tabpanel>\n ))}\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Tabs.Root>\n </div>\n </StackContext.Provider>\n </Main.ComplementarySidebar>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type LayoutCoordinate } from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { useTranslation } from '@dxos/react-ui';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { NodePlankHeading } from './NodePlankHeading';\nimport { PlankLoading } from './PlankLoading';\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const PlankContentError = ({ error }: { error?: Error }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const errorString = error?.toString() ?? '';\n return (\n <div role='none' className='overflow-auto p-8 attention-surface grid place-items-center'>\n <p\n role='alert'\n className={mx(\n descriptionText,\n 'break-words border border-dashed border-separator rounded-lg p-8',\n errorString.length < 256 && 'text-lg',\n )}\n >\n {error ? errorString : t('error fallback message')}\n </p>\n </div>\n );\n};\n\nexport const PlankError = ({\n layoutCoordinate,\n node,\n error,\n}: {\n layoutCoordinate: LayoutCoordinate;\n node?: Node;\n error?: Error;\n}) => {\n const [timedOut, setTimedOut] = useState(false);\n useEffect(() => {\n setTimeout(() => setTimedOut(true), 5e3);\n }, []);\n return (\n <>\n <NodePlankHeading coordinate={layoutCoordinate} node={node} pending={!timedOut} />\n {timedOut ? <PlankContentError error={error} /> : <PlankLoading />}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, memo, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n NavigationAction,\n SLUG_PATH_SEPARATOR,\n Surface,\n useIntentDispatcher,\n type LayoutCoordinate,\n} from '@dxos/app-framework';\nimport { type Node, useGraph } from '@dxos/plugin-graph';\nimport { Icon, Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { StackItem, type StackItemSigilAction } from '@dxos/react-ui-stack';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\n\nimport { PlankControls } from './PlankControls';\nimport { ToggleComplementarySidebarButton, ToggleSidebarButton } from './SidebarButton';\nimport { DECK_PLUGIN } from '../../meta';\nimport { useBreakpoints } from '../../util';\nimport { soloInlinePadding } from '../fragments';\n\nexport type NodePlankHeadingProps = {\n coordinate: LayoutCoordinate;\n node?: Node;\n canIncrementStart?: boolean;\n canIncrementEnd?: boolean;\n popoverAnchorId?: string;\n pending?: boolean;\n actions?: StackItemSigilAction[];\n};\n\nexport const NodePlankHeading = memo(\n ({\n coordinate,\n node,\n canIncrementStart,\n canIncrementEnd,\n popoverAnchorId,\n pending,\n actions = [],\n }: NodePlankHeadingProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const { graph } = useGraph();\n const icon = node?.properties?.icon ?? 'ph--placeholder--regular';\n const label = pending\n ? t('pending heading')\n : toLocalizedString(node?.properties?.label ?? ['plank heading fallback label', { ns: DECK_PLUGIN }], t);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${DECK_PLUGIN}/${node.id}` ? Popover.Anchor : Fragment;\n const breakpoint = useBreakpoints();\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n // Load actions for the node.\n node && graph.actions(node);\n });\n\n return () => cancelAnimationFrame(frame);\n }, [node]);\n\n const layoutPart = coordinate.part;\n // NOTE(Zan): Node ids may now contain a path like `${space}:${id}~comments`\n const attendableId = coordinate.entryId.split(SLUG_PATH_SEPARATOR).at(0);\n const capabilities = useMemo(\n () => ({\n solo: layoutPart === 'solo' || layoutPart === 'main',\n incrementStart: canIncrementStart,\n incrementEnd: canIncrementEnd,\n }),\n [breakpoint, layoutPart, canIncrementStart, canIncrementEnd],\n );\n\n return (\n <StackItem.Heading\n classNames={[\n 'plb-1 border-be border-separator items-stretch gap-1',\n layoutPart === 'solo' ? soloInlinePadding : 'pli-1',\n ]}\n >\n <ActionRoot>\n {node ? (\n <StackItem.Sigil\n icon={icon}\n related={layoutPart === 'complementary'}\n attendableId={attendableId}\n triggerLabel={t('actions menu label')}\n actions={[actions, graph.actions(node)].filter((a) => a.length > 0)}\n onAction={(action) =>\n typeof action.data === 'function' && action.data?.({ node: action as Node, caller: DECK_PLUGIN })\n }\n >\n <Surface role='menu-footer' data={{ subject: node.data }} />\n </StackItem.Sigil>\n ) : (\n <StackItem.SigilButton>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} size={5} />\n </StackItem.SigilButton>\n )}\n </ActionRoot>\n {breakpoint !== 'desktop' && <ToggleSidebarButton />}\n <TextTooltip text={label} onlyWhenTruncating>\n <StackItem.HeadingLabel\n attendableId={attendableId}\n related={layoutPart === 'complementary'}\n {...(pending && { classNames: 'text-description' })}\n >\n {label}\n </StackItem.HeadingLabel>\n </TextTooltip>\n {node && layoutPart !== 'complementary' && (\n // TODO(Zan): What are we doing with layout coordinate here?\n <Surface role='navbar-end' data={{ subject: node.data }} />\n )}\n {/* NOTE(thure): Pinning & unpinning are temporarily disabled */}\n <PlankControls\n capabilities={capabilities}\n isSolo={layoutPart === 'solo'}\n onClick={(eventType) => {\n if (!layoutPart) {\n return;\n }\n\n // TODO(Zan): Update this to use the new layout actions.\n if (eventType === 'solo') {\n return dispatch(\n createIntent(NavigationAction.Adjust, {\n type: eventType,\n layoutCoordinate: { part: 'main', entryId: coordinate.entryId },\n }),\n );\n } else if (eventType === 'close') {\n if (layoutPart === 'complementary') {\n return dispatch(createIntent(LayoutAction.SetLayout, { element: 'complementary', state: false }));\n } else {\n return dispatch(\n createIntent(NavigationAction.Close, { activeParts: { [layoutPart]: [coordinate.entryId] } }),\n );\n }\n } else {\n return dispatch(createIntent(NavigationAction.Adjust, { type: eventType, layoutCoordinate: coordinate }));\n }\n }}\n close={layoutPart === 'complementary' ? 'minify-end' : true}\n >\n <ToggleComplementarySidebarButton />\n </PlankControls>\n </StackItem.Heading>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef } from 'react';\n\nimport { type PartAdjustment } from '@dxos/app-framework';\nimport {\n Button,\n ButtonGroup,\n type ButtonGroupProps,\n type ButtonProps,\n Icon,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\n\nexport type PlankControlHandler = (event: PartAdjustment) => void;\n\nexport type PlankCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n solo?: boolean;\n};\n\nexport type PlankControlsProps = Omit<ButtonGroupProps, 'onClick'> & {\n onClick?: PlankControlHandler;\n variant?: 'hide-disabled' | 'default';\n close?: boolean | 'minify-start' | 'minify-end';\n capabilities: PlankCapabilities;\n isSolo?: boolean;\n pin?: 'start' | 'end' | 'both';\n};\n\nconst PlankControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' {...props}>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} size={4} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>{label}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\n// TODO(wittjosiah): Duplicate of stack LayoutControls?\n// Translations were to be duplicated between packages.\nexport const PlankControls = forwardRef<HTMLDivElement, PlankControlsProps>(\n (\n { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden !pli-2 !plb-3' : '!pli-2 !plb-3';\n\n return (\n <ButtonGroup {...props} ref={forwardedRef}>\n {pin && !isSolo && ['both', 'start'].includes(pin) && (\n <PlankControl\n label={t('pin start label')}\n variant='ghost'\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-start')}\n icon='ph--caret-line-left--regular'\n />\n )}\n\n {can.solo && (\n <PlankControl\n label={isSolo ? t('show deck plank label') : t('show solo plank label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('solo')}\n icon={isSolo ? 'ph--arrow-u-down-left--regular' : 'ph--arrows-out--regular'}\n />\n )}\n\n {!isSolo && can.solo && (\n <>\n <PlankControl\n label={t('increment start label')}\n disabled={!can.incrementStart}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-start')}\n icon='ph--caret-left--regular'\n />\n <PlankControl\n label={t('increment end label')}\n disabled={!can.incrementEnd}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-end')}\n icon='ph--caret-right--regular'\n />\n </>\n )}\n\n {pin && !isSolo && ['both', 'end'].includes(pin) && (\n <PlankControl\n label={t('pin end label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-end')}\n icon='ph--caret-line-right--regular'\n />\n )}\n\n {close && !isSolo && (\n <PlankControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\n onClick={() => onClick?.('close')}\n data-testid='plankHeading.close'\n icon={\n close === 'minify-start'\n ? 'ph--caret-line-left--regular'\n : close === 'minify-end'\n ? 'ph--caret-line-right--regular'\n : 'ph--x--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { IconButton, useTranslation } from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\nimport { useLayout } from '../LayoutContext';\n\nexport const ToggleSidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n variant='ghost'\n iconOnly\n icon='ph--sidebar--regular'\n size={4}\n label={t('open navigation sidebar label')}\n onClick={() => (layoutContext.sidebarOpen = !layoutContext.sidebarOpen)}\n classNames='!pli-2 order-first'\n />\n );\n};\n\nexport const CloseSidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n variant='ghost'\n iconOnly\n icon='ph--caret-line-left--regular'\n size={4}\n label={t('close navigation sidebar label')}\n onClick={() => (layoutContext.sidebarOpen = false)}\n classNames='!rounded-none !pli-1 ch-focus-ring-inset pie-[max(.5rem,env(safe-area-inset-left))]'\n />\n );\n};\n\nexport const ToggleComplementarySidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n iconOnly\n onClick={() => (layoutContext.complementarySidebarOpen = !layoutContext.complementarySidebarOpen)}\n variant='ghost'\n label={t('open complementary sidebar label')}\n classNames='!pli-2 !plb-3 [&>svg]:-scale-x-100'\n icon='ph--sidebar-simple--regular'\n size={4}\n />\n );\n};\n\nexport const CloseComplementarySidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n iconOnly\n variant='ghost'\n size={4}\n icon='ph--caret-line-right--regular'\n label={t('close complementary sidebar label')}\n classNames='!rounded-none border-is border-separator ch-focus-ring-inset pie-2 lg:pie-[max(.5rem,env(safe-area-inset-right))]'\n onClick={() => (layoutContext.complementarySidebarOpen = false)}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const soloInlinePadding =\n 'pis-[calc(env(safe-area-inset-left)+.25rem)] pie-[calc(env(safe-area-inset-left)+.25rem)]';\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 PlankLoading = () => {\n return <div role='none' className='grid place-items-center attention-surface' />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ToggleSidebarButton } from './SidebarButton';\nimport { soloInlinePadding } from '../fragments';\n\nexport const ContentEmpty = () => {\n return (\n <div\n role='none'\n className='min-bs-screen is-dvw sm:is-full p-8 grid grid-rows-[var(--rail-size)_1fr] lg:grid-rows-1'\n data-testid='layoutPlugin.firstRunMessage'\n >\n <div role='toolbar' className={mx(soloInlinePadding, 'bs-[--rail-action] flex items-stretch lg:hidden')}>\n <ToggleSidebarButton />\n <span role='none' className='grow' />\n </div>\n <div role='none' className='grid place-items-center'>\n <Surface role='keyshortcuts' />\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { fixedInsetFlexLayout } from '@dxos/react-ui-theme';\n\nimport { Fallback } from './Fallback';\nimport { SURFACE_PREFIX } from './constants';\nimport { useNode } from '../../hooks';\n\nexport const Fullscreen = ({ id }: { id?: string }) => {\n const { graph } = useGraph();\n const fullScreenNode = useNode(graph, id);\n\n return (\n <div role='none' className={fixedInsetFlexLayout}>\n <Surface\n role='main'\n limit={1}\n fallback={Fallback}\n data={{\n subject: fullScreenNode?.data,\n component: id?.startsWith(SURFACE_PREFIX) ? id.slice(SURFACE_PREFIX.length) : undefined,\n }}\n />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { errorText, mx } from '@dxos/react-ui-theme';\n\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const Fallback = () => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <div role='none' className='min-bs-screen is-full flex items-center justify-center p-8'>\n <p\n role='alert'\n className={mx(\n errorText,\n 'border border-error-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg',\n )}\n >\n {t('plugin error message')}\n </p>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, memo, useCallback, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport {\n createIntent,\n indexInPart,\n LayoutAction,\n partLength,\n Surface,\n useIntentDispatcher,\n type Layout,\n type LayoutCoordinate,\n type LayoutEntry,\n type LayoutPart,\n type LayoutParts,\n} from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { StackItem, railGridHorizontal } from '@dxos/react-ui-stack';\nimport { mainIntrinsicSize, mx } from '@dxos/react-ui-theme';\n\nimport { NodePlankHeading } from './NodePlankHeading';\nimport { PlankContentError, PlankError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { useNode, useMainSize } from '../../hooks';\nimport { DeckAction } from '../../types';\nimport { useDeckContext } from '../DeckContext';\nimport { useLayout } from '../LayoutContext';\n\nconst UNKNOWN_ID = 'unknown_id';\n\nexport type PlankProps = {\n entry?: LayoutEntry;\n layoutParts: LayoutParts;\n // TODO(wittjosiah): Remove. Pass in LayoutCoordinate instead of LayoutEntry.\n part: LayoutPart;\n layoutMode: Layout['layoutMode'];\n order?: number;\n};\n\nexport const Plank = memo(({ entry, layoutParts, part, layoutMode, order }: PlankProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const coordinate: LayoutCoordinate = useMemo(() => ({ part, entryId: entry?.id ?? UNKNOWN_ID }), [entry?.id, part]);\n const { popoverAnchorId, scrollIntoView } = useLayout();\n const { plankSizing } = useDeckContext();\n const { graph } = useGraph();\n const node = useNode(graph, entry?.id);\n const rootElement = useRef<HTMLDivElement | null>(null);\n const canResize = layoutMode === 'deck';\n const Root = part === 'solo' ? 'article' : StackItem.Root;\n\n const attendableAttrs = useAttendableAttributes(coordinate.entryId);\n const index = indexInPart(layoutParts, coordinate);\n const length = partLength(layoutParts, part);\n const canIncrementStart = part === 'main' && index !== undefined && index > 0 && length !== undefined && length > 1;\n const canIncrementEnd = part === 'main' && index !== undefined && index < length - 1 && length !== undefined;\n\n const size = plankSizing?.[coordinate.entryId] as number | undefined;\n const setSize = useCallback(\n debounce((nextSize: number) => {\n return dispatch(createIntent(DeckAction.UpdatePlankSize, { id: coordinate.entryId, size: nextSize }));\n }, 200),\n [dispatch, coordinate.entryId],\n );\n\n // TODO(thure): Tabster’s focus group should handle moving focus to Main, but something is blocking it.\n const handleKeyDown = useCallback((event: KeyboardEvent) => {\n if (event.target === event.currentTarget && event.key === 'Escape') {\n rootElement.current?.closest('main')?.focus();\n }\n }, []);\n\n useLayoutEffect(() => {\n if (scrollIntoView === coordinate.entryId) {\n // TODO(wittjosiah): When focused on page load, the focus is always visible.\n // Forcing focus to something smaller than the plank prevents large focus ring in the interim.\n const focusable = rootElement.current?.querySelector('button') || rootElement.current;\n focusable?.focus({ preventScroll: true });\n layoutMode === 'deck' && focusable?.scrollIntoView({ behavior: 'smooth', inline: 'center' });\n // Clear the scroll into view state once it has been actioned.\n void dispatch(createIntent(LayoutAction.ScrollIntoView, { id: undefined }));\n }\n }, [coordinate.entryId, scrollIntoView, layoutMode]);\n\n const isSolo = layoutMode === 'solo' && part === 'solo';\n const isAttendable = isSolo || (layoutMode === 'deck' && part === 'main');\n\n const sizeAttrs = useMainSize();\n\n const data = useMemo(\n () =>\n node && {\n subject: node.data,\n path: entry?.path,\n coordinate,\n popoverAnchorId,\n },\n [node, node?.data, entry?.path, coordinate, popoverAnchorId],\n );\n\n // TODO(wittjosiah): Change prop to accept a component.\n const placeholder = useMemo(() => <PlankLoading />, []);\n\n const className = mx(\n 'attention-surface relative',\n isSolo && mainIntrinsicSize,\n isSolo && railGridHorizontal,\n isSolo ? 'grid absolute inset-0' : '!border-separator border-li',\n );\n\n return (\n <Root\n ref={rootElement}\n data-testid='deck.plank'\n tabIndex={0}\n {...(part === 'solo'\n ? ({ ...sizeAttrs, className } as any)\n : {\n item: { id: entry?.id ?? 'never' },\n size,\n onSizeChange: setSize,\n classNames: className,\n order,\n role: 'article',\n })}\n {...(isAttendable ? attendableAttrs : {})}\n onKeyDown={handleKeyDown}\n >\n {node ? (\n <>\n <NodePlankHeading\n coordinate={coordinate}\n node={node}\n canIncrementStart={canIncrementStart}\n canIncrementEnd={canIncrementEnd}\n popoverAnchorId={popoverAnchorId}\n />\n <Surface\n key={node.id}\n role='article'\n data={data}\n limit={1}\n fallback={PlankContentError}\n placeholder={placeholder}\n />\n </>\n ) : (\n <PlankError layoutCoordinate={coordinate} />\n )}\n {canResize && <StackItem.ResizeHandle />}\n </Root>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Main } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { Banner } from './Banner';\nimport { useBreakpoints } from '../../util';\nimport { useHoistStatusbar } from '../../util/useHoistStatusbar';\nimport { useLayout } from '../LayoutContext';\n\nexport const Sidebar = () => {\n const layoutContext = useLayout();\n const { popoverAnchorId } = layoutContext;\n const breakpoint = useBreakpoints();\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n\n const navigationData = useMemo(() => ({ popoverAnchorId }), [popoverAnchorId]);\n\n return (\n <Main.NavigationSidebar classNames='grid grid-cols-1 grid-rows-[var(--rail-size)_var(--rail-action)_1fr_min-content_min-content] md:grid-rows-[var(--rail-size)_var(--rail-action)_1fr_min-content] lg:grid-rows-[1fr_min-content] overflow-hidden lg:block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]'>\n {breakpoint !== 'desktop' && (\n <>\n <Banner variant='sidebar' />\n <Surface role='search-input' limit={1} />\n </>\n )}\n <div role='none' className={mx('!overflow-y-auto', breakpoint !== 'desktop' && 'border-be border-separator')}>\n <Surface role='navigation' data={navigationData} limit={1} />\n </div>\n {!hoistStatusbar && <Surface role='status-bar--sidebar-footer' limit={1} />}\n </Main.NavigationSidebar>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { CloseSidebarButton, ToggleSidebarButton } from './SidebarButton';\n\nexport const Banner = ({ variant, classNames }: ThemedClassName<{ variant?: 'topbar' | 'sidebar' }>) => {\n return (\n <header\n className={mx(\n 'flex items-stretch relative plb-1 pis-1 pie-2',\n variant === 'topbar' &&\n 'fixed inset-inline-0 block-start-[env(safe-area-inset-top)] bs-[--rail-size] border-be border-separator',\n classNames,\n )}\n >\n {variant === 'sidebar' ? <CloseSidebarButton /> : <ToggleSidebarButton />}\n <span className='self-center grow mis-1'>Composer</span>\n {variant === 'topbar' && (\n <div role='none' className='absolute inset-0 pointer-events-none'>\n <div role='none' className='grid bs-full pointer-fine:p-1 max-is-md mli-auto pointer-events-auto'>\n <Surface role='search-input' limit={1} />\n </div>\n </div>\n )}\n <span role='none' className='grow' />\n <Surface role='header-end' limit={1} />\n <Surface role='notch-start' limit={1} />\n </header>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useLayoutEffect, useState } from 'react';\n\nexport const useHoistStatusbar = (breakpoint: string) => {\n const [safeAreaBottom, setSafeAreaBottom] = useState(Infinity);\n useLayoutEffect(\n () =>\n setSafeAreaBottom(parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-bottom'))),\n [],\n );\n return Number.isFinite(safeAreaBottom) && safeAreaBottom < 1 && breakpoint === 'desktop';\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { mainPadding, mainPaddingTransitions, mx } from '@dxos/react-ui-theme';\n\nimport { useMainSize } from '../../hooks';\n\nexport const StatusBar = ({ showHints }: { showHints?: boolean }) => {\n const sizeAttrs = useMainSize();\n return (\n <div\n role='contentinfo'\n {...sizeAttrs}\n className={mx(\n 'fixed block-end-0 inset-inline-0 flex justify-between items-center border-bs border-separator z-[2] pbe-[env(safe-area-inset-bottom)]',\n mainPadding,\n mainPaddingTransitions,\n )}\n >\n <div role='none'>{showHints && <Surface role='hints' limit={1} />}</div>\n <Surface role='status-bar' limit={1} />\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport type { Toast as ToastProps } from '@dxos/app-framework';\nimport {\n Button,\n Icon,\n Toast as NaturalToast,\n toLocalizedString,\n useTranslation,\n type ToastRootProps,\n} from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\n\n// TODO(wittjosiah): Render remaining duration as a progress bar within the toast.\nexport const Toast = ({\n id,\n title,\n description,\n icon,\n duration,\n actionLabel,\n actionAlt,\n closeLabel,\n onAction,\n onOpenChange,\n}: ToastProps & Pick<ToastRootProps, 'onOpenChange'>) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <NaturalToast.Root data-testid={id} defaultOpen duration={duration} onOpenChange={onOpenChange}>\n <NaturalToast.Body>\n <NaturalToast.Title classNames='items-center'>\n {icon && <Icon icon={icon} size={5} classNames='inline mr-1' />}\n {title && <span>{toLocalizedString(title, t)}</span>}\n </NaturalToast.Title>\n {description && (\n <NaturalToast.Description>{description && toLocalizedString(description, t)}</NaturalToast.Description>\n )}\n </NaturalToast.Body>\n <NaturalToast.Actions>\n {onAction && actionAlt && actionLabel && (\n <NaturalToast.Action altText={toLocalizedString(actionAlt, t)} asChild>\n <Button data-testid='toast.action' variant='primary' onClick={() => onAction?.()}>\n {toLocalizedString(actionLabel, t)}\n </Button>\n </NaturalToast.Action>\n )}\n {closeLabel && (\n <NaturalToast.Close asChild>\n <Button data-testid='toast.close'>{toLocalizedString(closeLabel, t)}</Button>\n </NaturalToast.Close>\n )}\n </NaturalToast.Actions>\n </NaturalToast.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Banner } from './Banner';\n\nexport const Topbar = () => {\n return <Banner variant='topbar' />;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { DECK_PLUGIN } from '../meta';\nimport {\n type NewPlankPositioning,\n NewPlankPositions,\n type DeckSettingsProps,\n type Overscroll,\n OverscrollOptions,\n} from '../types';\n\nconst isSocket = !!(globalThis as any).__args;\n\nexport const LayoutSettings = ({ settings }: { settings: DeckSettingsProps }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <>\n <DeprecatedFormInput label={t('select new plank positioning label')}>\n <Select.Root\n value={settings.newPlankPositioning ?? 'start'}\n onValueChange={(value) => (settings.newPlankPositioning = value as NewPlankPositioning)}\n >\n <Select.TriggerButton placeholder={t('select new plank positioning placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {NewPlankPositions.map((position) => (\n <Select.Option key={position} value={position}>\n {t(`settings new plank position ${position} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings overscroll label')}>\n <Select.Root\n value={settings.overscroll ?? 'none'}\n onValueChange={(value) => (settings.overscroll = value as Overscroll)}\n >\n <Select.TriggerButton placeholder={t('select overscroll placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {OverscrollOptions.map((option) => (\n <Select.Option key={option} value={option}>\n {t(`settings overscroll ${option} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings show hints label')}>\n <Input.Switch checked={settings.showHints} onCheckedChange={(checked) => (settings.showHints = checked)} />\n </DeprecatedFormInput>\n {!isSocket && (\n <DeprecatedFormInput label={t('settings native redirect label')}>\n <Input.Switch\n checked={settings.enableNativeRedirect}\n onCheckedChange={(checked) => (settings.enableNativeRedirect = checked)}\n />\n </DeprecatedFormInput>\n )}\n <DeprecatedFormInput label={t('settings custom slots')}>\n <Input.Switch checked={settings.customSlots} onCheckedChange={(checked) => (settings.customSlots = checked)} />\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings flat deck')}>\n <Input.Switch checked={settings.flatDeck} onCheckedChange={(checked) => (settings.flatDeck = checked)} />\n </DeprecatedFormInput>\n </>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nexport const NAV_ID = 'NavTree';\nexport const SURFACE_PREFIX = 'surface:';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Context, createContext, useContext } from 'react';\n\nimport type { Layout } from '@dxos/app-framework';\nimport { raise } from '@dxos/debug';\n\nexport const LayoutContext: Context<Layout | null> = createContext<Layout | null>(null);\n\nexport const useLayout = (): Layout => useContext(LayoutContext) ?? raise(new Error('Missing LayoutContext'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Context, createContext, useContext } from 'react';\n\nimport { type LayoutMode } from '@dxos/app-framework';\nimport { raise } from '@dxos/debug';\n\nexport type PlankSizing = Record<string, number>;\nexport type DeckContextType = {\n plankSizing: PlankSizing;\n currentUndoId: string | undefined;\n layoutModeHistory: LayoutMode[];\n};\n\nexport const DeckContext: Context<DeckContextType | null> = createContext<DeckContextType | null>(null);\n\nexport const useDeckContext = (): DeckContextType => useContext(DeckContext) ?? raise(new Error('Missing DeckContext'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { untracked } from '@preact/signals-core';\nimport React, { useCallback, useEffect, useMemo, useRef, type UIEvent, Fragment } from 'react';\n\nimport {\n firstIdInPart,\n Surface,\n usePluginManager,\n type LayoutParts,\n type Toast as ToastSchema,\n} from '@dxos/app-framework';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { AlertDialog, Dialog as NaturalDialog, Main, Popover, useOnTransition, type MainProps } from '@dxos/react-ui';\nimport { Stack, StackContext, DEFAULT_HORIZONTAL_SIZE } from '@dxos/react-ui-stack';\nimport { mainPaddingTransitions } from '@dxos/react-ui-theme';\n\nimport { ActiveNode } from './ActiveNode';\nimport { ComplementarySidebar, type ComplementarySidebarProps } from './ComplementarySidebar';\nimport { ContentEmpty } from './ContentEmpty';\nimport { Fullscreen } from './Fullscreen';\nimport { Plank } from './Plank';\nimport { Sidebar } from './Sidebar';\nimport { StatusBar } from './StatusBar';\nimport { Toast } from './Toast';\nimport { Topbar } from './Topbar';\nimport { type Overscroll } from '../../types';\nimport { calculateOverscroll, useBreakpoints } from '../../util';\nimport { useHoistStatusbar } from '../../util/useHoistStatusbar';\nimport { useDeckContext } from '../DeckContext';\nimport { useLayout } from '../LayoutContext';\n\nexport type DeckLayoutProps = {\n layoutParts: LayoutParts;\n toasts: ToastSchema[];\n overscroll: Overscroll;\n showHints: boolean;\n onDismissToast: (id: string) => void;\n} & Pick<ComplementarySidebarProps, 'panels'>;\n\nconst PlankSeparator = ({ index }: { index: number }) =>\n index > 0 ? <span role='separator' className='row-span-2 bg-deck is-4' style={{ gridColumn: index * 2 }} /> : null;\n\nexport const DeckLayout = ({ layoutParts, toasts, overscroll, showHints, panels, onDismissToast }: DeckLayoutProps) => {\n const context = useLayout();\n const {\n layoutMode,\n sidebarOpen,\n complementarySidebarOpen,\n dialogOpen,\n dialogContent,\n dialogBlockAlign,\n dialogType,\n popoverOpen,\n popoverContent,\n popoverAnchorId,\n } = context;\n const breakpoint = useBreakpoints();\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n const { plankSizing } = useDeckContext();\n const pluginManager = usePluginManager();\n const fullScreenSlug = useMemo(() => firstIdInPart(layoutParts, 'fullScreen'), [layoutParts]);\n\n const scrollLeftRef = useRef<number | null>();\n const deckRef = useRef<HTMLDivElement>(null);\n\n const isSoloModeLoaded = layoutMode === 'solo' && Boolean(layoutParts.solo?.[0]);\n\n // Ensure the first plank is attended when the deck is first rendered.\n useEffect(() => {\n // NOTE: Not `useAttended` so that the layout component is not re-rendered when the attended list changes.\n const attended = untracked(() => {\n const attention = pluginManager.context.requestCapability(AttentionCapabilities.Attention);\n return attention.current;\n });\n const firstId = isSoloModeLoaded ? firstIdInPart(layoutParts, 'solo') : firstIdInPart(layoutParts, 'main');\n if (attended.length === 0 && firstId) {\n // TODO(wittjosiah): Focusing the type button is a workaround.\n // If the plank is directly focused on first load the focus ring appears.\n document.querySelector<HTMLElement>(`article[data-attendable-id=\"${firstId}\"] button`)?.focus();\n }\n }, []);\n\n /**\n * Clear scroll restoration state if the window is resized\n */\n const handleResize = useCallback(() => {\n scrollLeftRef.current = null;\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize]);\n\n const restoreScroll = useCallback(() => {\n if (deckRef.current && scrollLeftRef.current != null) {\n deckRef.current.scrollLeft = scrollLeftRef.current;\n }\n }, []);\n\n useOnTransition(layoutMode, (mode) => mode !== 'deck', 'deck', restoreScroll);\n\n /**\n * Save scroll position as the user scrolls\n */\n const handleScroll = useCallback(\n (event: UIEvent) => {\n if (layoutMode === 'deck' && event.currentTarget === event.target) {\n scrollLeftRef.current = (event.target as HTMLDivElement).scrollLeft;\n }\n },\n [layoutMode],\n );\n\n const isEmpty = (layoutParts.main?.length ?? 0) === 0 && (layoutParts.solo?.length ?? 0) === 0;\n\n const padding = useMemo(() => {\n if (layoutMode === 'deck' && overscroll === 'centering') {\n return calculateOverscroll(layoutParts.main?.length ?? 0);\n }\n return {};\n }, [layoutMode, overscroll, layoutParts.main]);\n\n const Dialog = dialogType === 'alert' ? AlertDialog : NaturalDialog;\n\n return (\n <Popover.Root\n modal\n open={!!(popoverAnchorId && popoverOpen)}\n onOpenChange={(nextOpen) => {\n if (nextOpen && popoverAnchorId) {\n context.popoverOpen = true;\n } else {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n }\n }}\n >\n <ActiveNode />\n\n {layoutMode === 'fullscreen' && <Fullscreen id={fullScreenSlug} />}\n\n {layoutMode !== 'fullscreen' && (\n <Main.Root\n navigationSidebarOpen={context.sidebarOpen}\n onNavigationSidebarOpenChange={(next) => (context.sidebarOpen = next)}\n complementarySidebarOpen={context.complementarySidebarOpen}\n onComplementarySidebarOpenChange={(next) => (context.complementarySidebarOpen = next)}\n >\n {/* Left sidebar. */}\n <Sidebar />\n\n {/* Right sidebar. */}\n <ComplementarySidebar panels={panels} current={layoutParts.complementary?.[0].id} />\n\n {/* Dialog overlay to dismiss dialogs. */}\n <Main.Overlay />\n\n {/* No content. */}\n {isEmpty && (\n <Main.Content handlesFocus>\n <ContentEmpty />\n </Main.Content>\n )}\n\n {/* Solo/deck mode. */}\n {!isEmpty && (\n <Main.Content\n bounce\n classNames={[\n 'grid !block-start-[env(safe-area-inset-top)] lg:!block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'lg:block-end-[--statusbar-size]',\n ]}\n handlesFocus\n style={\n {\n '--dx-main-sidebarWidth': sidebarOpen ? 'var(--nav-sidebar-size)' : '0px',\n '--dx-main-complementaryWidth': complementarySidebarOpen\n ? 'var(--complementary-sidebar-size)'\n : '0px',\n '--dx-main-contentFirstWidth': `${plankSizing[layoutParts.main?.[0]?.id ?? 'never'] ?? DEFAULT_HORIZONTAL_SIZE}rem`,\n '--dx-main-contentLastWidth': `${plankSizing[layoutParts.main?.[(layoutParts.main?.length ?? 1) - 1]?.id ?? 'never'] ?? DEFAULT_HORIZONTAL_SIZE}rem`,\n } as MainProps['style']\n }\n >\n <div\n role='none'\n className={!isSoloModeLoaded ? 'relative bg-deck overflow-hidden' : 'sr-only'}\n {...(isSoloModeLoaded && { inert: '' })}\n >\n <Stack\n orientation='horizontal'\n size='contain'\n classNames={['absolute inset-block-0 -inset-inline-px', mainPaddingTransitions]}\n onScroll={handleScroll}\n itemsCount={2 * (layoutParts.main?.length ?? 0) - 1}\n style={padding}\n ref={deckRef}\n >\n {layoutParts.main?.map((layoutEntry, index) => (\n <Fragment key={layoutEntry.id}>\n <PlankSeparator index={index} />\n <Plank\n entry={layoutEntry}\n layoutParts={layoutParts}\n part='main'\n layoutMode={layoutMode}\n order={index * 2 + 1}\n />\n </Fragment>\n ))}\n </Stack>\n </div>\n <div\n role='none'\n className={isSoloModeLoaded ? 'relative bg-deck overflow-hidden' : 'sr-only'}\n {...(!isSoloModeLoaded && { inert: '' })}\n >\n <StackContext.Provider value={{ size: 'contain', orientation: 'horizontal', rail: true }}>\n <Plank entry={layoutParts.solo?.[0]} layoutParts={layoutParts} part='solo' layoutMode={layoutMode} />\n </StackContext.Provider>\n </div>\n </Main.Content>\n )}\n\n {/* Status bar. */}\n {breakpoint === 'desktop' && <Topbar />}\n {hoistStatusbar && <StatusBar showHints={showHints} />}\n </Main.Root>\n )}\n\n {/* Global popovers. */}\n <Popover.Portal>\n <Popover.Content\n onEscapeKeyDown={() => {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n }}\n >\n <Popover.Viewport>\n <Surface role='popover' data={popoverContent} limit={1} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n\n {/* Global dialog. */}\n <Dialog.Root open={dialogOpen} onOpenChange={(nextOpen) => (context.dialogOpen = nextOpen)}>\n <Dialog.Overlay blockAlign={dialogBlockAlign}>\n <Surface role='dialog' data={dialogContent} limit={1} />\n </Dialog.Overlay>\n </Dialog.Root>\n\n {/* Global toasts. */}\n {toasts?.map((toast) => (\n <Toast\n {...toast}\n key={toast.id}\n onOpenChange={(open) => {\n if (!open) {\n onDismissToast(toast.id);\n }\n\n return open;\n }}\n />\n ))}\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { useAttended } from '@dxos/react-ui-attention';\n\nimport { useNode, useNodeActionExpander } from '../../hooks';\n\n// TODO(burdon): Factor out to effect in plugin set document title.\nexport const ActiveNode = () => {\n const [id] = useAttended();\n const { graph } = useGraph();\n const activeNode = useNode(graph, id);\n useNodeActionExpander(activeNode);\n\n return (\n <div role='none' className='sr-only'>\n {/* TODO(wittjosiah): Weird that this is a surface, feel like it's not really render logic.\n Probably this lives in React-land currently in order to access translations? */}\n <Surface role='document-title' data={{ subject: activeNode }} limit={1} />\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Graph, type Node } from '@dxos/plugin-graph';\n\n/**\n * React hook to get a node from the graph.\n *\n * @param graph Graph to find the node in.\n * @param id Id of the node to find.\n * @param timeout Optional timeout in milliseconds to wait for the node to be found.\n * @returns Node if found, undefined otherwise.\n */\n// TODO(wittjosiah): Factor out.\nexport const useNode = <T = any>(graph: Graph, id?: string, timeout?: number): Node<T> | undefined => {\n const [nodeState, setNodeState] = useState<Node<T> | undefined>(id ? graph.findNode(id, false) : undefined);\n\n useEffect(() => {\n if (!id && nodeState) {\n setNodeState(undefined);\n }\n\n if (nodeState?.id === id || !id) {\n return;\n }\n\n // Set timeout did not seem to effectively not block the UI thread.\n const frame = requestAnimationFrame(async () => {\n try {\n const node = await graph.waitForNode(id, timeout);\n if (node) {\n setNodeState(node);\n }\n } catch {}\n });\n\n return () => cancelAnimationFrame(frame);\n }, [graph, id, timeout, nodeState?.id]);\n\n return nodeState;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { ACTION_GROUP_TYPE, ACTION_TYPE, getGraph, type Node } from '@dxos/plugin-graph';\n\nconst expandNodeActions = async (node: Node) => {\n const graph = getGraph(node);\n await graph.expand(node, 'outbound', ACTION_GROUP_TYPE);\n await graph.expand(node, 'outbound', ACTION_TYPE);\n};\n\nexport const useNodeActionExpander = (node?: Node) => {\n useEffect(() => {\n if (node) {\n const frame = requestAnimationFrame(() => {\n void expandNodeActions(node);\n });\n return () => cancelAnimationFrame(frame);\n }\n }, [node]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useMainContext } from '@dxos/react-ui';\n\nexport const useMainSize = () => {\n const { navigationSidebarOpen, complementarySidebarOpen } = useMainContext('DeckPluginPlank');\n return {\n 'data-sidebar-inline-start-state': navigationSidebarOpen ? 'open' : 'closed',\n 'data-sidebar-inline-end-state': complementarySidebarOpen ? 'open' : 'closed',\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { createIntent, NavigationAction, SLUG_PATH_SEPARATOR, Surface, useIntentDispatcher } from '@dxos/app-framework';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { Main, ScrollArea, useTranslation, toLocalizedString } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { railGridHorizontal, StackContext, StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { PlankContentError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { CloseComplementarySidebarButton } from './SidebarButton';\nimport { useNode, useNodeActionExpander } from '../../hooks';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type Panel } from '../../types';\nimport { useLayout } from '../LayoutContext';\n\nexport type ComplementarySidebarProps = {\n panels: Panel[];\n current?: string;\n};\n\nexport const ComplementarySidebar = ({ panels, current }: ComplementarySidebarProps) => {\n const { popoverAnchorId } = useLayout();\n const attended = useAttended();\n const panelIds = useMemo(() => panels.map((p) => p.id), [panels]);\n const activePanelId = panelIds.find((p) => p === current) ?? panels[0].id;\n const activeEntryId = attended[0] ? `${attended[0]}${SLUG_PATH_SEPARATOR}${activePanelId}` : undefined;\n const { graph } = useGraph();\n const node = useNode(graph, activeEntryId);\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n useNodeActionExpander(node);\n\n const [internalValue, setInternalValue] = useState(activePanelId);\n\n useEffect(() => {\n setInternalValue(activePanelId);\n }, [activePanelId]);\n\n const handleValueChange = useCallback(\n (nextValue: string) => {\n setInternalValue(nextValue);\n void dispatch(createIntent(NavigationAction.Open, { activeParts: { complementary: nextValue } }));\n },\n [dispatch],\n );\n\n // TODO(burdon): Scroll area should be controlled by surface.\n return (\n <Main.ComplementarySidebar classNames='lg:block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]'>\n <StackContext.Provider value={{ size: 'contain', orientation: 'horizontal', rail: true }}>\n <div role='none' className={mx(railGridHorizontal, 'grid grid-cols-[100%] bs-full')}>\n <Tabs.Root\n orientation='horizontal'\n value={internalValue}\n onValueChange={handleValueChange}\n attendableId={attended[0]}\n classNames='contents'\n >\n <StackItem.Heading classNames='border-be border-separator grid grid-cols-[1fr_min-content] items-stretch'>\n <ScrollArea.Root classNames='flex-1 min-is-0'>\n <ScrollArea.Viewport>\n <Tabs.Tablist classNames='bs-[--rail-content] is-min items-stretch pis-[max(.5rem,env(safe-area-inset-left))] sm:pis-2'>\n {panels.map((panel) => (\n <Tabs.Tab key={panel.id} value={panel.id} classNames='!min-bs-0'>\n {toLocalizedString(panel.label, t)}\n </Tabs.Tab>\n ))}\n </Tabs.Tablist>\n <ScrollArea.Scrollbar orientation='horizontal'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <CloseComplementarySidebarButton />\n </StackItem.Heading>\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n {panels.map((panel) => (\n <Tabs.Tabpanel key={panel.id} value={panel.id} classNames='pbe-[env(safe-area-inset-bottom)]'>\n {panel.id === activePanelId && node && (\n <Surface\n key={activeEntryId}\n role={`complementary--${activePanelId}`}\n data={{\n id: activeEntryId,\n subject: node.properties.object ?? node.properties.space,\n popoverAnchorId,\n }}\n fallback={PlankContentError}\n placeholder={<PlankLoading />}\n />\n )}\n </Tabs.Tabpanel>\n ))}\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Tabs.Root>\n </div>\n </StackContext.Provider>\n </Main.ComplementarySidebar>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type LayoutCoordinate } from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { useTranslation } from '@dxos/react-ui';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { NodePlankHeading } from './NodePlankHeading';\nimport { PlankLoading } from './PlankLoading';\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const PlankContentError = ({ error }: { error?: Error }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const errorString = error?.toString() ?? '';\n return (\n <div role='none' className='overflow-auto p-8 attention-surface grid place-items-center'>\n <p\n role='alert'\n className={mx(\n descriptionText,\n 'break-words border border-dashed border-separator rounded-lg p-8',\n errorString.length < 256 && 'text-lg',\n )}\n >\n {error ? errorString : t('error fallback message')}\n </p>\n </div>\n );\n};\n\nexport const PlankError = ({\n layoutCoordinate,\n node,\n error,\n}: {\n layoutCoordinate: LayoutCoordinate;\n node?: Node;\n error?: Error;\n}) => {\n const [timedOut, setTimedOut] = useState(false);\n useEffect(() => {\n setTimeout(() => setTimedOut(true), 5e3);\n }, []);\n return (\n <>\n <NodePlankHeading coordinate={layoutCoordinate} node={node} pending={!timedOut} />\n {timedOut ? <PlankContentError error={error} /> : <PlankLoading />}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, memo, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n NavigationAction,\n SLUG_PATH_SEPARATOR,\n Surface,\n useIntentDispatcher,\n type LayoutCoordinate,\n} from '@dxos/app-framework';\nimport { type Node, useGraph } from '@dxos/plugin-graph';\nimport { Icon, Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { StackItem, type StackItemSigilAction } from '@dxos/react-ui-stack';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\n\nimport { PlankControls } from './PlankControls';\nimport { ToggleComplementarySidebarButton, ToggleSidebarButton } from './SidebarButton';\nimport { DECK_PLUGIN } from '../../meta';\nimport { useBreakpoints } from '../../util';\nimport { soloInlinePadding } from '../fragments';\n\nexport type NodePlankHeadingProps = {\n coordinate: LayoutCoordinate;\n node?: Node;\n canIncrementStart?: boolean;\n canIncrementEnd?: boolean;\n popoverAnchorId?: string;\n pending?: boolean;\n actions?: StackItemSigilAction[];\n};\n\nexport const NodePlankHeading = memo(\n ({\n coordinate,\n node,\n canIncrementStart,\n canIncrementEnd,\n popoverAnchorId,\n pending,\n actions = [],\n }: NodePlankHeadingProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const { graph } = useGraph();\n const icon = node?.properties?.icon ?? 'ph--placeholder--regular';\n const label = pending\n ? t('pending heading')\n : toLocalizedString(node?.properties?.label ?? ['plank heading fallback label', { ns: DECK_PLUGIN }], t);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${DECK_PLUGIN}/${node.id}` ? Popover.Anchor : Fragment;\n const breakpoint = useBreakpoints();\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n // Load actions for the node.\n node && graph.actions(node);\n });\n\n return () => cancelAnimationFrame(frame);\n }, [node]);\n\n const layoutPart = coordinate.part;\n // NOTE(Zan): Node ids may now contain a path like `${space}:${id}~comments`\n const attendableId = coordinate.entryId.split(SLUG_PATH_SEPARATOR).at(0);\n const capabilities = useMemo(\n () => ({\n solo: layoutPart === 'solo' || layoutPart === 'main',\n incrementStart: canIncrementStart,\n incrementEnd: canIncrementEnd,\n }),\n [breakpoint, layoutPart, canIncrementStart, canIncrementEnd],\n );\n\n return (\n <StackItem.Heading\n classNames={[\n 'plb-1 border-be border-separator items-stretch gap-1',\n layoutPart === 'solo' ? soloInlinePadding : 'pli-1',\n ]}\n >\n <ActionRoot>\n {node ? (\n <StackItem.Sigil\n icon={icon}\n related={layoutPart === 'complementary'}\n attendableId={attendableId}\n triggerLabel={t('actions menu label')}\n actions={[actions, graph.actions(node)].filter((a) => a.length > 0)}\n onAction={(action) =>\n typeof action.data === 'function' && action.data?.({ node: action as Node, caller: DECK_PLUGIN })\n }\n >\n <Surface role='menu-footer' data={{ subject: node.data }} />\n </StackItem.Sigil>\n ) : (\n <StackItem.SigilButton>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} size={5} />\n </StackItem.SigilButton>\n )}\n </ActionRoot>\n {breakpoint !== 'desktop' && <ToggleSidebarButton />}\n <TextTooltip text={label} onlyWhenTruncating>\n <StackItem.HeadingLabel\n attendableId={attendableId}\n related={layoutPart === 'complementary'}\n {...(pending && { classNames: 'text-description' })}\n >\n {label}\n </StackItem.HeadingLabel>\n </TextTooltip>\n {node && layoutPart !== 'complementary' && (\n // TODO(Zan): What are we doing with layout coordinate here?\n <Surface role='navbar-end' data={{ subject: node.data }} />\n )}\n {/* NOTE(thure): Pinning & unpinning are temporarily disabled */}\n <PlankControls\n capabilities={capabilities}\n isSolo={layoutPart === 'solo'}\n onClick={(eventType) => {\n if (!layoutPart) {\n return;\n }\n\n // TODO(Zan): Update this to use the new layout actions.\n if (eventType === 'solo') {\n return dispatch(\n createIntent(NavigationAction.Adjust, {\n type: eventType,\n layoutCoordinate: { part: 'main', entryId: coordinate.entryId },\n }),\n );\n } else if (eventType === 'close') {\n if (layoutPart === 'complementary') {\n return dispatch(createIntent(LayoutAction.SetLayout, { element: 'complementary', state: false }));\n } else {\n return dispatch(\n createIntent(NavigationAction.Close, { activeParts: { [layoutPart]: [coordinate.entryId] } }),\n );\n }\n } else {\n return dispatch(createIntent(NavigationAction.Adjust, { type: eventType, layoutCoordinate: coordinate }));\n }\n }}\n close={layoutPart === 'complementary' ? 'minify-end' : true}\n >\n <ToggleComplementarySidebarButton />\n </PlankControls>\n </StackItem.Heading>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef } from 'react';\n\nimport { type PartAdjustment } from '@dxos/app-framework';\nimport {\n Button,\n ButtonGroup,\n type ButtonGroupProps,\n type ButtonProps,\n Icon,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\n\nexport type PlankControlHandler = (event: PartAdjustment) => void;\n\nexport type PlankCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n solo?: boolean;\n};\n\nexport type PlankControlsProps = Omit<ButtonGroupProps, 'onClick'> & {\n onClick?: PlankControlHandler;\n variant?: 'hide-disabled' | 'default';\n close?: boolean | 'minify-start' | 'minify-end';\n capabilities: PlankCapabilities;\n isSolo?: boolean;\n pin?: 'start' | 'end' | 'both';\n};\n\nconst PlankControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' {...props}>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} size={4} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>{label}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\n// TODO(wittjosiah): Duplicate of stack LayoutControls?\n// Translations were to be duplicated between packages.\nexport const PlankControls = forwardRef<HTMLDivElement, PlankControlsProps>(\n (\n { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden !pli-2 !plb-3' : '!pli-2 !plb-3';\n\n return (\n <ButtonGroup {...props} ref={forwardedRef}>\n {pin && !isSolo && ['both', 'start'].includes(pin) && (\n <PlankControl\n label={t('pin start label')}\n variant='ghost'\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-start')}\n icon='ph--caret-line-left--regular'\n />\n )}\n\n {can.solo && (\n <PlankControl\n label={isSolo ? t('show deck plank label') : t('show solo plank label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('solo')}\n icon={isSolo ? 'ph--arrow-u-down-left--regular' : 'ph--arrows-out--regular'}\n />\n )}\n\n {!isSolo && can.solo && (\n <>\n <PlankControl\n label={t('increment start label')}\n disabled={!can.incrementStart}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-start')}\n icon='ph--caret-left--regular'\n />\n <PlankControl\n label={t('increment end label')}\n disabled={!can.incrementEnd}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-end')}\n icon='ph--caret-right--regular'\n />\n </>\n )}\n\n {pin && !isSolo && ['both', 'end'].includes(pin) && (\n <PlankControl\n label={t('pin end label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-end')}\n icon='ph--caret-line-right--regular'\n />\n )}\n\n {close && !isSolo && (\n <PlankControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\n onClick={() => onClick?.('close')}\n data-testid='plankHeading.close'\n icon={\n close === 'minify-start'\n ? 'ph--caret-line-left--regular'\n : close === 'minify-end'\n ? 'ph--caret-line-right--regular'\n : 'ph--x--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { IconButton, useTranslation } from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\nimport { useLayout } from '../LayoutContext';\n\nexport const ToggleSidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n variant='ghost'\n iconOnly\n icon='ph--sidebar--regular'\n size={4}\n label={t('open navigation sidebar label')}\n onClick={() => (layoutContext.sidebarOpen = !layoutContext.sidebarOpen)}\n classNames='!pli-2 order-first'\n />\n );\n};\n\nexport const CloseSidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n variant='ghost'\n iconOnly\n icon='ph--caret-line-left--regular'\n size={4}\n label={t('close navigation sidebar label')}\n onClick={() => (layoutContext.sidebarOpen = false)}\n classNames='!rounded-none !pli-1 ch-focus-ring-inset pie-[max(.5rem,env(safe-area-inset-left))]'\n />\n );\n};\n\nexport const ToggleComplementarySidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n iconOnly\n onClick={() => (layoutContext.complementarySidebarOpen = !layoutContext.complementarySidebarOpen)}\n variant='ghost'\n label={t('open complementary sidebar label')}\n classNames='!pli-2 !plb-3 [&>svg]:-scale-x-100'\n icon='ph--sidebar-simple--regular'\n size={4}\n />\n );\n};\n\nexport const CloseComplementarySidebarButton = () => {\n const layoutContext = useLayout();\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n iconOnly\n variant='ghost'\n size={4}\n icon='ph--caret-line-right--regular'\n label={t('close complementary sidebar label')}\n classNames='!rounded-none border-is border-separator ch-focus-ring-inset pie-2 lg:pie-[max(.5rem,env(safe-area-inset-right))]'\n onClick={() => (layoutContext.complementarySidebarOpen = false)}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const soloInlinePadding =\n 'pis-[calc(env(safe-area-inset-left)+.25rem)] pie-[calc(env(safe-area-inset-left)+.25rem)]';\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 PlankLoading = () => {\n return <div role='none' className='grid place-items-center attention-surface' />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ToggleSidebarButton } from './SidebarButton';\nimport { soloInlinePadding } from '../fragments';\n\nexport const ContentEmpty = () => {\n return (\n <div\n role='none'\n className='min-bs-screen is-dvw sm:is-full p-8 grid grid-rows-[var(--rail-size)_1fr]'\n data-testid='layoutPlugin.firstRunMessage'\n >\n <div role='toolbar' className={mx(soloInlinePadding, 'flex items-stretch')}>\n <ToggleSidebarButton />\n <span role='none' className='grow' />\n </div>\n <div role='none' className='grid place-items-center'>\n <Surface role='keyshortcuts' />\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { fixedInsetFlexLayout } from '@dxos/react-ui-theme';\n\nimport { Fallback } from './Fallback';\nimport { SURFACE_PREFIX } from './constants';\nimport { useNode } from '../../hooks';\n\nexport const Fullscreen = ({ id }: { id?: string }) => {\n const { graph } = useGraph();\n const fullScreenNode = useNode(graph, id);\n\n return (\n <div role='none' className={fixedInsetFlexLayout}>\n <Surface\n role='main'\n limit={1}\n fallback={Fallback}\n data={{\n subject: fullScreenNode?.data,\n component: id?.startsWith(SURFACE_PREFIX) ? id.slice(SURFACE_PREFIX.length) : undefined,\n }}\n />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { errorText, mx } from '@dxos/react-ui-theme';\n\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const Fallback = () => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <div role='none' className='min-bs-screen is-full flex items-center justify-center p-8'>\n <p\n role='alert'\n className={mx(\n errorText,\n 'border border-error-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg',\n )}\n >\n {t('plugin error message')}\n </p>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, memo, useCallback, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport {\n createIntent,\n indexInPart,\n LayoutAction,\n partLength,\n Surface,\n useIntentDispatcher,\n type Layout,\n type LayoutCoordinate,\n type LayoutEntry,\n type LayoutPart,\n type LayoutParts,\n} from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { StackItem, railGridHorizontal } from '@dxos/react-ui-stack';\nimport { mainIntrinsicSize, mx } from '@dxos/react-ui-theme';\n\nimport { NodePlankHeading } from './NodePlankHeading';\nimport { PlankContentError, PlankError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { useNode, useMainSize } from '../../hooks';\nimport { DeckAction } from '../../types';\nimport { useDeckContext } from '../DeckContext';\nimport { useLayout } from '../LayoutContext';\n\nconst UNKNOWN_ID = 'unknown_id';\n\nexport type PlankProps = {\n entry?: LayoutEntry;\n layoutParts: LayoutParts;\n // TODO(wittjosiah): Remove. Pass in LayoutCoordinate instead of LayoutEntry.\n part: LayoutPart;\n layoutMode: Layout['layoutMode'];\n order?: number;\n};\n\nexport const Plank = memo(({ entry, layoutParts, part, layoutMode, order }: PlankProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const coordinate: LayoutCoordinate = useMemo(() => ({ part, entryId: entry?.id ?? UNKNOWN_ID }), [entry?.id, part]);\n const { popoverAnchorId, scrollIntoView } = useLayout();\n const { plankSizing } = useDeckContext();\n const { graph } = useGraph();\n const node = useNode(graph, entry?.id);\n const rootElement = useRef<HTMLDivElement | null>(null);\n const canResize = layoutMode === 'deck';\n const Root = part === 'solo' ? 'article' : StackItem.Root;\n\n const attendableAttrs = useAttendableAttributes(coordinate.entryId);\n const index = indexInPart(layoutParts, coordinate);\n const length = partLength(layoutParts, part);\n const canIncrementStart = part === 'main' && index !== undefined && index > 0 && length !== undefined && length > 1;\n const canIncrementEnd = part === 'main' && index !== undefined && index < length - 1 && length !== undefined;\n\n const size = plankSizing?.[coordinate.entryId] as number | undefined;\n const setSize = useCallback(\n debounce((nextSize: number) => {\n return dispatch(createIntent(DeckAction.UpdatePlankSize, { id: coordinate.entryId, size: nextSize }));\n }, 200),\n [dispatch, coordinate.entryId],\n );\n\n // TODO(thure): Tabster’s focus group should handle moving focus to Main, but something is blocking it.\n const handleKeyDown = useCallback((event: KeyboardEvent) => {\n if (event.target === event.currentTarget && event.key === 'Escape') {\n rootElement.current?.closest('main')?.focus();\n }\n }, []);\n\n useLayoutEffect(() => {\n if (scrollIntoView === coordinate.entryId) {\n // TODO(wittjosiah): When focused on page load, the focus is always visible.\n // Forcing focus to something smaller than the plank prevents large focus ring in the interim.\n const focusable = rootElement.current?.querySelector('button') || rootElement.current;\n focusable?.focus({ preventScroll: true });\n layoutMode === 'deck' && focusable?.scrollIntoView({ behavior: 'smooth', inline: 'center' });\n // Clear the scroll into view state once it has been actioned.\n void dispatch(createIntent(LayoutAction.ScrollIntoView, { id: undefined }));\n }\n }, [coordinate.entryId, scrollIntoView, layoutMode]);\n\n const isSolo = layoutMode === 'solo' && part === 'solo';\n const isAttendable = isSolo || (layoutMode === 'deck' && part === 'main');\n\n const sizeAttrs = useMainSize();\n\n const data = useMemo(\n () =>\n node && {\n subject: node.data,\n path: entry?.path,\n coordinate,\n popoverAnchorId,\n },\n [node, node?.data, entry?.path, coordinate, popoverAnchorId],\n );\n\n // TODO(wittjosiah): Change prop to accept a component.\n const placeholder = useMemo(() => <PlankLoading />, []);\n\n const className = mx(\n 'attention-surface relative',\n isSolo && mainIntrinsicSize,\n isSolo && railGridHorizontal,\n isSolo ? 'grid absolute inset-0' : '!border-separator border-li',\n );\n\n return (\n <Root\n ref={rootElement}\n data-testid='deck.plank'\n tabIndex={0}\n {...(part === 'solo'\n ? ({ ...sizeAttrs, className } as any)\n : {\n item: { id: entry?.id ?? 'never' },\n size,\n onSizeChange: setSize,\n classNames: className,\n order,\n role: 'article',\n })}\n {...(isAttendable ? attendableAttrs : {})}\n onKeyDown={handleKeyDown}\n >\n {node ? (\n <>\n <NodePlankHeading\n coordinate={coordinate}\n node={node}\n canIncrementStart={canIncrementStart}\n canIncrementEnd={canIncrementEnd}\n popoverAnchorId={popoverAnchorId}\n />\n <Surface\n key={node.id}\n role='article'\n data={data}\n limit={1}\n fallback={PlankContentError}\n placeholder={placeholder}\n />\n </>\n ) : (\n <PlankError layoutCoordinate={coordinate} />\n )}\n {canResize && <StackItem.ResizeHandle />}\n </Root>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Main } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { Banner } from './Banner';\nimport { useBreakpoints } from '../../util';\nimport { useHoistStatusbar } from '../../util/useHoistStatusbar';\nimport { useLayout } from '../LayoutContext';\n\nexport const Sidebar = () => {\n const layoutContext = useLayout();\n const { popoverAnchorId } = layoutContext;\n const breakpoint = useBreakpoints();\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n\n const navigationData = useMemo(() => ({ popoverAnchorId }), [popoverAnchorId]);\n\n return (\n <Main.NavigationSidebar classNames='grid grid-cols-1 grid-rows-[var(--rail-size)_var(--rail-action)_1fr_min-content_min-content] md:grid-rows-[var(--rail-size)_var(--rail-action)_1fr_min-content] lg:grid-rows-[1fr_min-content] overflow-hidden lg:block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]'>\n {breakpoint !== 'desktop' && (\n <>\n <Banner variant='sidebar' />\n <Surface role='search-input' limit={1} />\n </>\n )}\n <div role='none' className={mx('!overflow-y-auto', breakpoint !== 'desktop' && 'border-be border-separator')}>\n <Surface role='navigation' data={navigationData} limit={1} />\n </div>\n {!hoistStatusbar && <Surface role='status-bar--sidebar-footer' limit={1} />}\n </Main.NavigationSidebar>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { CloseSidebarButton, ToggleSidebarButton } from './SidebarButton';\n\nexport const Banner = ({ variant, classNames }: ThemedClassName<{ variant?: 'topbar' | 'sidebar' }>) => {\n return (\n <header\n className={mx(\n 'flex items-stretch relative plb-1 pis-1 pie-2',\n variant === 'topbar' &&\n 'fixed inset-inline-0 block-start-[env(safe-area-inset-top)] bs-[--rail-size] border-be border-separator',\n classNames,\n )}\n >\n {variant === 'sidebar' ? <CloseSidebarButton /> : <ToggleSidebarButton />}\n <span className='self-center grow mis-1'>Composer</span>\n {variant === 'topbar' && (\n <div role='none' className='absolute inset-0 pointer-events-none'>\n <div role='none' className='grid bs-full pointer-fine:p-1 max-is-md mli-auto pointer-events-auto'>\n <Surface role='search-input' limit={1} />\n </div>\n </div>\n )}\n <span role='none' className='grow' />\n <Surface role='header-end' limit={1} />\n <Surface role='notch-start' limit={1} />\n </header>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useLayoutEffect, useState } from 'react';\n\nexport const useHoistStatusbar = (breakpoint: string) => {\n const [safeAreaBottom, setSafeAreaBottom] = useState(Infinity);\n useLayoutEffect(\n () =>\n setSafeAreaBottom(parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--safe-area-bottom'))),\n [],\n );\n return Number.isFinite(safeAreaBottom) && safeAreaBottom < 1 && breakpoint === 'desktop';\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { mainPadding, mainPaddingTransitions, mx } from '@dxos/react-ui-theme';\n\nimport { useMainSize } from '../../hooks';\n\nexport const StatusBar = ({ showHints }: { showHints?: boolean }) => {\n const sizeAttrs = useMainSize();\n return (\n <div\n role='contentinfo'\n {...sizeAttrs}\n className={mx(\n 'fixed block-end-0 inset-inline-0 flex justify-between items-center border-bs border-separator z-[2] pbe-[env(safe-area-inset-bottom)]',\n mainPadding,\n mainPaddingTransitions,\n )}\n >\n <div role='none'>{showHints && <Surface role='hints' limit={1} />}</div>\n <Surface role='status-bar' limit={1} />\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport type { Toast as ToastProps } from '@dxos/app-framework';\nimport {\n Button,\n Icon,\n Toast as NaturalToast,\n toLocalizedString,\n useTranslation,\n type ToastRootProps,\n} from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\n\n// TODO(wittjosiah): Render remaining duration as a progress bar within the toast.\nexport const Toast = ({\n id,\n title,\n description,\n icon,\n duration,\n actionLabel,\n actionAlt,\n closeLabel,\n onAction,\n onOpenChange,\n}: ToastProps & Pick<ToastRootProps, 'onOpenChange'>) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <NaturalToast.Root data-testid={id} defaultOpen duration={duration} onOpenChange={onOpenChange}>\n <NaturalToast.Body>\n <NaturalToast.Title classNames='items-center'>\n {icon && <Icon icon={icon} size={5} classNames='inline mr-1' />}\n {title && <span>{toLocalizedString(title, t)}</span>}\n </NaturalToast.Title>\n {description && (\n <NaturalToast.Description>{description && toLocalizedString(description, t)}</NaturalToast.Description>\n )}\n </NaturalToast.Body>\n <NaturalToast.Actions>\n {onAction && actionAlt && actionLabel && (\n <NaturalToast.Action altText={toLocalizedString(actionAlt, t)} asChild>\n <Button data-testid='toast.action' variant='primary' onClick={() => onAction?.()}>\n {toLocalizedString(actionLabel, t)}\n </Button>\n </NaturalToast.Action>\n )}\n {closeLabel && (\n <NaturalToast.Close asChild>\n <Button data-testid='toast.close'>{toLocalizedString(closeLabel, t)}</Button>\n </NaturalToast.Close>\n )}\n </NaturalToast.Actions>\n </NaturalToast.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Banner } from './Banner';\n\nexport const Topbar = () => {\n return <Banner variant='topbar' />;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { DECK_PLUGIN } from '../meta';\nimport {\n type NewPlankPositioning,\n NewPlankPositions,\n type DeckSettingsProps,\n type Overscroll,\n OverscrollOptions,\n} from '../types';\n\nconst isSocket = !!(globalThis as any).__args;\n\nexport const LayoutSettings = ({ settings }: { settings: DeckSettingsProps }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <>\n <DeprecatedFormInput label={t('select new plank positioning label')}>\n <Select.Root\n value={settings.newPlankPositioning ?? 'start'}\n onValueChange={(value) => (settings.newPlankPositioning = value as NewPlankPositioning)}\n >\n <Select.TriggerButton placeholder={t('select new plank positioning placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {NewPlankPositions.map((position) => (\n <Select.Option key={position} value={position}>\n {t(`settings new plank position ${position} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings overscroll label')}>\n <Select.Root\n value={settings.overscroll ?? 'none'}\n onValueChange={(value) => (settings.overscroll = value as Overscroll)}\n >\n <Select.TriggerButton placeholder={t('select overscroll placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {OverscrollOptions.map((option) => (\n <Select.Option key={option} value={option}>\n {t(`settings overscroll ${option} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings show hints label')}>\n <Input.Switch checked={settings.showHints} onCheckedChange={(checked) => (settings.showHints = checked)} />\n </DeprecatedFormInput>\n {!isSocket && (\n <DeprecatedFormInput label={t('settings native redirect label')}>\n <Input.Switch\n checked={settings.enableNativeRedirect}\n onCheckedChange={(checked) => (settings.enableNativeRedirect = checked)}\n />\n </DeprecatedFormInput>\n )}\n <DeprecatedFormInput label={t('settings custom slots')}>\n <Input.Switch checked={settings.customSlots} onCheckedChange={(checked) => (settings.customSlots = checked)} />\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings flat deck')}>\n <Input.Switch checked={settings.flatDeck} onCheckedChange={(checked) => (settings.flatDeck = checked)} />\n </DeprecatedFormInput>\n </>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["NAV_ID", "SURFACE_PREFIX", "createContext", "useContext", "raise", "LayoutContext", "createContext", "useLayout", "useContext", "raise", "Error", "createContext", "useContext", "raise", "DeckContext", "createContext", "useDeckContext", "useContext", "raise", "Error", "untracked", "React", "useCallback", "useEffect", "useMemo", "useRef", "Fragment", "firstIdInPart", "Surface", "usePluginManager", "AttentionCapabilities", "AlertDialog", "Dialog", "NaturalDialog", "Main", "Popover", "useOnTransition", "Stack", "StackContext", "DEFAULT_HORIZONTAL_SIZE", "mainPaddingTransitions", "React", "Surface", "useGraph", "useAttended", "useEffect", "useState", "useNode", "graph", "id", "timeout", "nodeState", "setNodeState", "useState", "findNode", "undefined", "useEffect", "frame", "requestAnimationFrame", "node", "waitForNode", "cancelAnimationFrame", "useEffect", "ACTION_GROUP_TYPE", "ACTION_TYPE", "getGraph", "expandNodeActions", "node", "graph", "getGraph", "expand", "ACTION_GROUP_TYPE", "ACTION_TYPE", "useNodeActionExpander", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "useMainContext", "useMainSize", "navigationSidebarOpen", "complementarySidebarOpen", "useMainContext", "ActiveNode", "id", "useAttended", "graph", "useGraph", "activeNode", "useNode", "useNodeActionExpander", "div", "role", "className", "Surface", "data", "subject", "limit", "React", "useCallback", "useEffect", "useMemo", "useState", "createIntent", "NavigationAction", "SLUG_PATH_SEPARATOR", "Surface", "useIntentDispatcher", "useGraph", "Main", "ScrollArea", "useTranslation", "toLocalizedString", "useAttended", "railGridHorizontal", "StackContext", "StackItem", "Tabs", "mx", "React", "useEffect", "useState", "useTranslation", "descriptionText", "mx", "React", "Fragment", "memo", "useEffect", "useMemo", "createIntent", "LayoutAction", "NavigationAction", "SLUG_PATH_SEPARATOR", "Surface", "useIntentDispatcher", "useGraph", "Icon", "Popover", "toLocalizedString", "useTranslation", "StackItem", "TextTooltip", "React", "forwardRef", "Button", "ButtonGroup", "Icon", "Tooltip", "useTranslation", "PlankControl", "icon", "label", "props", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "span", "className", "Icon", "size", "Portal", "Content", "side", "PlankControls", "forwardRef", "onClick", "capabilities", "can", "isSolo", "pin", "close", "children", "forwardedRef", "t", "useTranslation", "DECK_PLUGIN", "buttonClassNames", "ButtonGroup", "ref", "includes", "classNames", "solo", "disabled", "incrementStart", "incrementEnd", "data-testid", "React", "IconButton", "useTranslation", "ToggleSidebarButton", "layoutContext", "useLayout", "t", "useTranslation", "DECK_PLUGIN", "React", "IconButton", "variant", "iconOnly", "icon", "size", "label", "onClick", "sidebarOpen", "classNames", "CloseSidebarButton", "ToggleComplementarySidebarButton", "complementarySidebarOpen", "CloseComplementarySidebarButton", "soloInlinePadding", "NodePlankHeading", "memo", "coordinate", "node", "canIncrementStart", "canIncrementEnd", "popoverAnchorId", "pending", "actions", "t", "useTranslation", "DECK_PLUGIN", "graph", "useGraph", "icon", "properties", "label", "toLocalizedString", "ns", "dispatchPromise", "dispatch", "useIntentDispatcher", "ActionRoot", "id", "Popover", "Anchor", "Fragment", "breakpoint", "useBreakpoints", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "layoutPart", "part", "attendableId", "entryId", "split", "SLUG_PATH_SEPARATOR", "at", "capabilities", "useMemo", "solo", "incrementStart", "incrementEnd", "React", "StackItem", "Heading", "classNames", "soloInlinePadding", "Sigil", "related", "triggerLabel", "filter", "a", "length", "onAction", "action", "data", "caller", "Surface", "role", "subject", "SigilButton", "span", "className", "Icon", "size", "ToggleSidebarButton", "TextTooltip", "text", "onlyWhenTruncating", "HeadingLabel", "PlankControls", "isSolo", "onClick", "eventType", "createIntent", "NavigationAction", "Adjust", "type", "layoutCoordinate", "LayoutAction", "SetLayout", "element", "state", "Close", "activeParts", "close", "ToggleComplementarySidebarButton", "React", "PlankLoading", "React", "div", "role", "className", "PlankContentError", "error", "t", "useTranslation", "DECK_PLUGIN", "errorString", "toString", "React", "div", "role", "className", "p", "mx", "descriptionText", "length", "PlankError", "layoutCoordinate", "node", "timedOut", "setTimedOut", "useState", "useEffect", "setTimeout", "NodePlankHeading", "coordinate", "pending", "PlankLoading", "ComplementarySidebar", "panels", "current", "popoverAnchorId", "useLayout", "attended", "useAttended", "panelIds", "useMemo", "map", "p", "id", "activePanelId", "find", "activeEntryId", "SLUG_PATH_SEPARATOR", "undefined", "graph", "useGraph", "node", "useNode", "t", "useTranslation", "DECK_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "useNodeActionExpander", "internalValue", "setInternalValue", "useState", "useEffect", "handleValueChange", "useCallback", "nextValue", "createIntent", "NavigationAction", "Open", "activeParts", "complementary", "React", "Main", "classNames", "StackContext", "Provider", "value", "size", "orientation", "rail", "div", "role", "className", "mx", "railGridHorizontal", "Tabs", "Root", "onValueChange", "attendableId", "StackItem", "Heading", "ScrollArea", "Viewport", "Tablist", "panel", "Tab", "key", "toLocalizedString", "label", "Scrollbar", "Thumb", "CloseComplementarySidebarButton", "Tabpanel", "Surface", "data", "subject", "properties", "object", "space", "fallback", "PlankContentError", "placeholder", "PlankLoading", "React", "Surface", "mx", "ContentEmpty", "React", "div", "role", "className", "data-testid", "mx", "soloInlinePadding", "ToggleSidebarButton", "span", "Surface", "React", "Surface", "useGraph", "fixedInsetFlexLayout", "React", "useTranslation", "errorText", "mx", "Fallback", "t", "useTranslation", "DECK_PLUGIN", "React", "div", "role", "className", "p", "mx", "errorText", "Fullscreen", "id", "graph", "useGraph", "fullScreenNode", "useNode", "React", "div", "role", "className", "fixedInsetFlexLayout", "Surface", "limit", "fallback", "Fallback", "data", "subject", "component", "startsWith", "SURFACE_PREFIX", "slice", "length", "undefined", "React", "memo", "useCallback", "useLayoutEffect", "useMemo", "useRef", "createIntent", "indexInPart", "LayoutAction", "partLength", "Surface", "useIntentDispatcher", "debounce", "useGraph", "useAttendableAttributes", "StackItem", "railGridHorizontal", "mainIntrinsicSize", "mx", "UNKNOWN_ID", "Plank", "memo", "entry", "layoutParts", "part", "layoutMode", "order", "dispatchPromise", "dispatch", "useIntentDispatcher", "coordinate", "useMemo", "entryId", "id", "popoverAnchorId", "scrollIntoView", "useLayout", "plankSizing", "useDeckContext", "graph", "useGraph", "node", "useNode", "rootElement", "useRef", "canResize", "Root", "StackItem", "attendableAttrs", "useAttendableAttributes", "index", "indexInPart", "length", "partLength", "canIncrementStart", "undefined", "canIncrementEnd", "size", "setSize", "useCallback", "debounce", "nextSize", "createIntent", "DeckAction", "UpdatePlankSize", "handleKeyDown", "event", "target", "currentTarget", "key", "current", "closest", "focus", "useLayoutEffect", "focusable", "querySelector", "preventScroll", "behavior", "inline", "LayoutAction", "ScrollIntoView", "isSolo", "isAttendable", "sizeAttrs", "useMainSize", "data", "subject", "path", "placeholder", "React", "PlankLoading", "className", "mx", "mainIntrinsicSize", "railGridHorizontal", "ref", "data-testid", "tabIndex", "item", "onSizeChange", "classNames", "role", "onKeyDown", "NodePlankHeading", "Surface", "limit", "fallback", "PlankContentError", "PlankError", "layoutCoordinate", "ResizeHandle", "React", "useMemo", "Surface", "Main", "mx", "React", "Surface", "mx", "Banner", "variant", "classNames", "React", "header", "className", "mx", "CloseSidebarButton", "ToggleSidebarButton", "span", "div", "role", "Surface", "limit", "useLayoutEffect", "useState", "useHoistStatusbar", "breakpoint", "safeAreaBottom", "setSafeAreaBottom", "useState", "Infinity", "useLayoutEffect", "parseFloat", "getComputedStyle", "document", "documentElement", "getPropertyValue", "Number", "isFinite", "Sidebar", "layoutContext", "useLayout", "popoverAnchorId", "breakpoint", "useBreakpoints", "hoistStatusbar", "useHoistStatusbar", "navigationData", "useMemo", "React", "Main", "NavigationSidebar", "classNames", "Banner", "variant", "Surface", "role", "limit", "div", "className", "mx", "data", "React", "Surface", "mainPadding", "mainPaddingTransitions", "mx", "StatusBar", "showHints", "sizeAttrs", "useMainSize", "React", "div", "role", "className", "mx", "mainPadding", "mainPaddingTransitions", "Surface", "limit", "React", "Button", "Icon", "Toast", "NaturalToast", "toLocalizedString", "useTranslation", "Toast", "id", "title", "description", "icon", "duration", "actionLabel", "actionAlt", "closeLabel", "onAction", "onOpenChange", "t", "useTranslation", "DECK_PLUGIN", "React", "NaturalToast", "Root", "data-testid", "defaultOpen", "Body", "Title", "classNames", "Icon", "size", "span", "toLocalizedString", "Description", "Actions", "Action", "altText", "asChild", "Button", "variant", "onClick", "Close", "React", "Topbar", "React", "Banner", "variant", "PlankSeparator", "index", "React", "span", "role", "className", "style", "gridColumn", "DeckLayout", "layoutParts", "toasts", "overscroll", "showHints", "panels", "onDismissToast", "context", "useLayout", "layoutMode", "sidebarOpen", "complementarySidebarOpen", "dialogOpen", "dialogContent", "dialogBlockAlign", "dialogType", "popoverOpen", "popoverContent", "popoverAnchorId", "breakpoint", "useBreakpoints", "hoistStatusbar", "useHoistStatusbar", "plankSizing", "useDeckContext", "pluginManager", "usePluginManager", "fullScreenSlug", "useMemo", "firstIdInPart", "scrollLeftRef", "useRef", "deckRef", "isSoloModeLoaded", "Boolean", "solo", "useEffect", "attended", "untracked", "attention", "requestCapability", "AttentionCapabilities", "Attention", "current", "firstId", "length", "document", "querySelector", "focus", "handleResize", "useCallback", "window", "addEventListener", "removeEventListener", "restoreScroll", "scrollLeft", "useOnTransition", "mode", "handleScroll", "event", "currentTarget", "target", "isEmpty", "main", "padding", "calculateOverscroll", "Dialog", "AlertDialog", "NaturalDialog", "Popover", "Root", "modal", "open", "onOpenChange", "nextOpen", "undefined", "ActiveNode", "Fullscreen", "id", "Main", "navigationSidebarOpen", "onNavigationSidebarOpenChange", "next", "onComplementarySidebarOpenChange", "Sidebar", "ComplementarySidebar", "complementary", "Overlay", "Content", "handlesFocus", "ContentEmpty", "bounce", "classNames", "DEFAULT_HORIZONTAL_SIZE", "div", "inert", "Stack", "orientation", "size", "mainPaddingTransitions", "onScroll", "itemsCount", "ref", "map", "layoutEntry", "Fragment", "key", "Plank", "entry", "part", "order", "StackContext", "Provider", "value", "rail", "Topbar", "StatusBar", "Portal", "onEscapeKeyDown", "Viewport", "Surface", "data", "limit", "Arrow", "blockAlign", "toast", "Toast", "React", "Input", "Select", "useTranslation", "DeprecatedFormInput", "isSocket", "globalThis", "__args", "LayoutSettings", "settings", "t", "useTranslation", "DECK_PLUGIN", "React", "DeprecatedFormInput", "label", "Select", "Root", "value", "newPlankPositioning", "onValueChange", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "NewPlankPositions", "map", "position", "Option", "key", "overscroll", "OverscrollOptions", "option", "Input", "Switch", "checked", "showHints", "onCheckedChange", "enableNativeRedirect", "customSlots", "flatDeck"]
|
|
7
7
|
}
|
|
@@ -12,20 +12,19 @@ var DeckState = lazy(() => import("./deck-PLCSKPGL.mjs"));
|
|
|
12
12
|
var AppGraphBuilder = lazy(() => import("./app-graph-builder-67VRUD5K.mjs"));
|
|
13
13
|
var LayoutIntentResolver = lazy(() => import("./intent-resolver-FVOQSTBX.mjs"));
|
|
14
14
|
var LayoutState = lazy(() => import("./state-7I5BD7SE.mjs"));
|
|
15
|
-
var ReactContext = lazy(() => import("./react-context-
|
|
16
|
-
var ReactRoot = lazy(() => import("./react-root-
|
|
15
|
+
var ReactContext = lazy(() => import("./react-context-3BDW7W2N.mjs"));
|
|
16
|
+
var ReactRoot = lazy(() => import("./react-root-UL7ZDRVZ.mjs"));
|
|
17
17
|
|
|
18
18
|
// packages/plugins/plugin-deck/src/capabilities/navigation/index.ts
|
|
19
19
|
import { lazy as lazy2 } from "@dxos/app-framework";
|
|
20
20
|
var CheckAppScheme = lazy2(() => import("./check-app-scheme-GEX6W2R5.mjs"));
|
|
21
|
-
var LocationState = lazy2(() => import("./location-
|
|
21
|
+
var LocationState = lazy2(() => import("./location-QHRBQBQN.mjs"));
|
|
22
22
|
var NavigationIntentResolver = lazy2(() => import("./intent-resolver-K7GW4A2I.mjs"));
|
|
23
|
-
var
|
|
24
|
-
var UrlHandler = lazy2(() => import("./url-handler-JRAQRY73.mjs"));
|
|
23
|
+
var UrlHandler = lazy2(() => import("./url-handler-Z5B7LD3N.mjs"));
|
|
25
24
|
|
|
26
25
|
// packages/plugins/plugin-deck/src/capabilities/settings/index.ts
|
|
27
26
|
import { lazy as lazy3 } from "@dxos/app-framework";
|
|
28
|
-
var ReactSurface = lazy3(() => import("./react-surface-
|
|
27
|
+
var ReactSurface = lazy3(() => import("./react-surface-VPNOGGNN.mjs"));
|
|
29
28
|
var DeckSettings = lazy3(() => import("./settings-FNWW6WIJ.mjs"));
|
|
30
29
|
|
|
31
30
|
// packages/plugins/plugin-deck/src/events.ts
|
|
@@ -183,11 +182,6 @@ var DeckPlugin = () => definePlugin(meta, [
|
|
|
183
182
|
id: `${meta.id}/module/navigation-intent-resolver`,
|
|
184
183
|
activatesOn: Events2.SetupIntents,
|
|
185
184
|
activate: NavigationIntentResolver
|
|
186
|
-
}),
|
|
187
|
-
defineModule({
|
|
188
|
-
id: `${meta.id}/module/navigation-tools`,
|
|
189
|
-
activatesOn: Events2.Startup,
|
|
190
|
-
activate: NavigationTools
|
|
191
185
|
})
|
|
192
186
|
]);
|
|
193
187
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/layout/index.ts", "../../../src/capabilities/navigation/index.ts", "../../../src/capabilities/settings/index.ts", "../../../src/events.ts", "../../../src/DeckPlugin.ts", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const DeckState = lazy(() => import('./deck'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const LayoutIntentResolver = lazy(() => import('./intent-resolver'));\nexport const LayoutState = lazy(() => import('./state'));\nexport const ReactContext = lazy(() => import('./react-context'));\nexport const ReactRoot = lazy(() => import('./react-root'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const CheckAppScheme = lazy(() => import('./check-app-scheme'));\nexport const LocationState = lazy(() => import('./location'));\nexport const NavigationIntentResolver = lazy(() => import('./intent-resolver'));\nexport const
|
|
5
|
-
"mappings": ";;;;;;;;;AAIA,SAASA,YAAY;AAEd,IAAMC,YAAYC,KAAK,MAAM,OAAO,qBAAA,CAAA;AACpC,IAAMC,kBAAkBD,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAME,uBAAuBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC/C,IAAMG,cAAcH,KAAK,MAAM,OAAO,sBAAA,CAAA;AACtC,IAAMI,eAAeJ,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMK,YAAYL,KAAK,MAAM,OAAO,2BAAA,CAAA;;;ACP3C,SAASM,QAAAA,aAAY;AAEd,IAAMC,iBAAiBC,MAAK,MAAM,OAAO,iCAAA,CAAA;AACzC,IAAMC,gBAAgBD,MAAK,MAAM,OAAO,yBAAA,CAAA;AACxC,IAAME,2BAA2BF,MAAK,MAAM,OAAO,gCAAA,CAAA;AACnD,IAAMG,
|
|
6
|
-
"names": ["lazy", "DeckState", "lazy", "AppGraphBuilder", "LayoutIntentResolver", "LayoutState", "ReactContext", "ReactRoot", "lazy", "CheckAppScheme", "lazy", "LocationState", "NavigationIntentResolver", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const DeckState = lazy(() => import('./deck'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const LayoutIntentResolver = lazy(() => import('./intent-resolver'));\nexport const LayoutState = lazy(() => import('./state'));\nexport const ReactContext = lazy(() => import('./react-context'));\nexport const ReactRoot = lazy(() => import('./react-root'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const CheckAppScheme = lazy(() => import('./check-app-scheme'));\nexport const LocationState = lazy(() => import('./location'));\nexport const NavigationIntentResolver = lazy(() => import('./intent-resolver'));\nexport const UrlHandler = lazy(() => import('./url-handler'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const DeckSettings = lazy(() => import('./settings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { DECK_PLUGIN } from './meta';\n\nexport namespace DeckEvents {\n export const StateReady = Events.createStateEvent(`${DECK_PLUGIN}/state-ready`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { allOf, Capabilities, contributes, defineModule, definePlugin, Events, oneOf } from '@dxos/app-framework';\nimport { AttentionEvents } from '@dxos/plugin-attention';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckState,\n LayoutIntentResolver,\n LayoutState,\n LocationState,\n NavigationIntentResolver,\n ReactContext,\n ReactRoot,\n DeckSettings,\n ReactSurface,\n UrlHandler,\n} from './capabilities';\nimport { DeckEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\n\n// NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because\n// our signal implementation needs to add some hidden properties to the produced values.\n// TODO(Zan): Move this to a more global location if we use immer more broadly.\nsetAutoFreeze(false);\n\nexport const DeckPlugin = () =>\n definePlugin(meta, [\n //\n // Settings\n //\n\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: DeckSettings,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.Startup,\n activate: ReactSurface,\n }),\n\n //\n // Layout\n //\n\n defineModule({\n id: `${meta.id}/module/layout`,\n activatesOn: oneOf(Events.Startup, Events.SetupAppGraph),\n activatesAfter: [Events.LayoutReady],\n activate: LayoutState,\n }),\n defineModule({\n id: `${meta.id}/module/deck`,\n activatesOn: oneOf(Events.Startup, Events.SetupAppGraph),\n activatesAfter: [DeckEvents.StateReady],\n activate: DeckState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...stackTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/react-context`,\n activatesOn: Events.Startup,\n activate: ReactContext,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/layout-intent-resolver`,\n activatesOn: Events.SetupIntents,\n activate: LayoutIntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n\n //\n // Navigation\n //\n\n defineModule({\n id: `${meta.id}/module/location`,\n activatesOn: oneOf(Events.Startup, Events.SetupAppGraph),\n activatesAfter: [Events.LocationReady],\n activate: LocationState,\n }),\n defineModule({\n id: `${meta.id}/module/check-app-scheme`,\n activatesOn: Events.SettingsReady,\n activate: CheckAppScheme,\n }),\n defineModule({\n id: `${meta.id}/module/url`,\n activatesOn: allOf(\n Events.DispatcherReady,\n Events.LayoutReady,\n Events.LocationReady,\n AttentionEvents.AttentionReady,\n ),\n activate: UrlHandler,\n }),\n defineModule({\n id: `${meta.id}/module/navigation-intent-resolver`,\n activatesOn: Events.SetupIntents,\n activate: NavigationIntentResolver,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DECK_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DECK_PLUGIN]: {\n 'main header label': 'Main header',\n 'open navigation sidebar label': 'Open navigation sidebar',\n 'close navigation sidebar label': 'Minimize navigation sidebar',\n 'open complementary sidebar label': 'Open sidebar',\n 'close complementary sidebar label': 'Minimize sidebar',\n 'plugin error message': 'Content failed to render.',\n 'content fallback message': 'Unsupported',\n 'content fallback description':\n 'No plugin had a response for the address you navigated to. Double-check the URL, and ensure you’ve enabled a plugin that supports the object.',\n 'toggle fullscreen label': 'Toggle fullscreen',\n 'settings show hints label': 'Show hints',\n 'settings native redirect label': 'Enable native url redirect (experimental)',\n 'settings custom slots': 'Theme option (experimental)',\n 'settings new plank position start label': 'Start',\n 'settings new plank position end label': 'End',\n 'select new plank positioning placeholder': 'Select new plank positioning',\n 'select new plank positioning label': 'New plank positioning',\n 'undo available label': 'Click to undo previous action.',\n 'undo action label': 'Undo',\n 'undo action alt': 'Undo previous action',\n 'undo close label': 'Dismiss',\n 'error fallback message': 'Unable to open this item',\n 'plank heading fallback label': 'Untitled',\n 'actions menu label': 'Options',\n 'settings deck label': 'Disable Deck',\n 'reload required message': 'Reload required.',\n 'pending heading': 'Loading…',\n 'insert plank label': 'Open',\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'show deck plank label': 'Return to deck',\n 'show solo plank label': 'Maximize',\n 'close label': 'Close',\n 'minify label': 'Minify',\n 'settings overscroll label': 'Plank Overscrolling',\n 'select overscroll placeholder': 'Select plank overscrolling behavior',\n 'settings overscroll centering label': 'Centering',\n 'settings overscroll none label': 'None',\n 'settings flat deck': 'Flatten deck appearance',\n 'close current label': 'Close current plank',\n 'close others label': 'Close other planks',\n 'close all label': 'Close all planks',\n },\n },\n },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["lazy", "DeckState", "lazy", "AppGraphBuilder", "LayoutIntentResolver", "LayoutState", "ReactContext", "ReactRoot", "lazy", "CheckAppScheme", "lazy", "LocationState", "NavigationIntentResolver", "UrlHandler", "lazy", "ReactSurface", "lazy", "DeckSettings", "Events", "DeckEvents", "StateReady", "Events", "createStateEvent", "DECK_PLUGIN", "setAutoFreeze", "allOf", "Capabilities", "contributes", "defineModule", "definePlugin", "Events", "oneOf", "AttentionEvents", "translations", "stackTranslations", "DECK_PLUGIN", "setAutoFreeze", "DeckPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupSettings", "activate", "DeckSettings", "Startup", "ReactSurface", "oneOf", "SetupAppGraph", "activatesAfter", "LayoutReady", "LayoutState", "DeckEvents", "StateReady", "DeckState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "stackTranslations", "ReactContext", "ReactRoot", "SetupIntents", "LayoutIntentResolver", "AppGraphBuilder", "LocationReady", "LocationState", "SettingsReady", "CheckAppScheme", "allOf", "DispatcherReady", "AttentionEvents", "AttentionReady", "UrlHandler", "NavigationIntentResolver"]
|
|
7
7
|
}
|