@dxos/plugin-deck 0.8.2-main.5ca3450 → 0.8.2-main.600d381
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-RKYIMUKW.mjs → chunk-HWEH5OJ7.mjs} +3 -3
- package/dist/lib/browser/{chunk-AHTP72DY.mjs → chunk-ZAL26IIZ.mjs} +25 -26
- package/dist/lib/browser/chunk-ZAL26IIZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-5RWCIUXV.mjs → react-root-SK3KDPHZ.mjs} +3 -3
- package/dist/lib/browser/{react-surface-DIDOPTH7.mjs → react-surface-LSSPY2BU.mjs} +3 -3
- package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +1 -1
- package/package.json +28 -28
- package/src/components/Plank/Plank.stories.tsx +1 -1
- package/src/components/Plank/PlankControls.tsx +3 -23
- package/src/components/Plank/PlankHeading.tsx +6 -3
- package/src/components/Sidebar/SidebarButton.tsx +3 -0
- package/dist/lib/browser/chunk-AHTP72DY.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-RKYIMUKW.mjs.map → chunk-HWEH5OJ7.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-5RWCIUXV.mjs.map → react-root-SK3KDPHZ.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-DIDOPTH7.mjs.map → react-surface-LSSPY2BU.mjs.map} +0 -0
|
@@ -6,15 +6,7 @@ import React, { forwardRef, useCallback } from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
|
-
import {
|
|
10
|
-
Button,
|
|
11
|
-
ButtonGroup,
|
|
12
|
-
type ButtonGroupProps,
|
|
13
|
-
type ButtonProps,
|
|
14
|
-
Icon,
|
|
15
|
-
Tooltip,
|
|
16
|
-
useTranslation,
|
|
17
|
-
} from '@dxos/react-ui';
|
|
9
|
+
import { ButtonGroup, type ButtonGroupProps, type ButtonProps, IconButton, useTranslation } from '@dxos/react-ui';
|
|
18
10
|
|
|
19
11
|
import { DECK_PLUGIN } from '../../meta';
|
|
20
12
|
import { DeckAction, type LayoutMode } from '../../types';
|
|
@@ -39,22 +31,10 @@ export type PlankControlsProps = Omit<ButtonGroupProps, 'onClick'> & {
|
|
|
39
31
|
};
|
|
40
32
|
|
|
41
33
|
const PlankControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {
|
|
42
|
-
return
|
|
43
|
-
<Tooltip.Root>
|
|
44
|
-
<Tooltip.Trigger asChild>
|
|
45
|
-
<Button variant='ghost' {...props}>
|
|
46
|
-
<span className='sr-only'>{label}</span>
|
|
47
|
-
<Icon icon={icon} size={5} />
|
|
48
|
-
</Button>
|
|
49
|
-
</Tooltip.Trigger>
|
|
50
|
-
<Tooltip.Portal>
|
|
51
|
-
<Tooltip.Content side='bottom'>{label}</Tooltip.Content>
|
|
52
|
-
</Tooltip.Portal>
|
|
53
|
-
</Tooltip.Root>
|
|
54
|
-
);
|
|
34
|
+
return <IconButton iconOnly label={label} icon={icon} size={5} variant='ghost' tooltipSide='bottom' {...props} />;
|
|
55
35
|
};
|
|
56
36
|
|
|
57
|
-
const plankControlSpacing = 'pli-2
|
|
37
|
+
const plankControlSpacing = 'pli-2';
|
|
58
38
|
|
|
59
39
|
type PlankComplimentControlsProps = {
|
|
60
40
|
primary?: string;
|
|
@@ -94,9 +94,12 @@ export const PlankHeading = memo(
|
|
|
94
94
|
}
|
|
95
95
|
}, [actions, node, variant, graph]);
|
|
96
96
|
|
|
97
|
-
const handleAction = useCallback(
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
const handleAction = useCallback(
|
|
98
|
+
(action: StackItemSigilAction) => {
|
|
99
|
+
typeof action.data === 'function' && action.data?.({ parent: node, caller: DECK_PLUGIN });
|
|
100
|
+
},
|
|
101
|
+
[node],
|
|
102
|
+
);
|
|
100
103
|
|
|
101
104
|
const handlePlankAction = useCallback(
|
|
102
105
|
(eventType: DeckAction.PartAdjustment) => {
|
|
@@ -50,8 +50,11 @@ export const CloseSidebarButton = () => {
|
|
|
50
50
|
export const ToggleComplementarySidebarButton = ({ inR0, classNames }: ThemedClassName<{ inR0?: boolean }>) => {
|
|
51
51
|
const layoutContext = useCapability(DeckCapabilities.MutableDeckState);
|
|
52
52
|
const { t } = useTranslation(DECK_PLUGIN);
|
|
53
|
+
// TODO(thure): This should have a tooltip but is suppressed because focus is getting set on this twice when the app
|
|
54
|
+
// first mounts, causing even `suppressNextTooltip` not to have the intended effect.
|
|
53
55
|
return (
|
|
54
56
|
<IconButton
|
|
57
|
+
noTooltip
|
|
55
58
|
iconOnly
|
|
56
59
|
onClick={() =>
|
|
57
60
|
(layoutContext.complementarySidebarState =
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/DeckLayout/Banner.tsx", "../../../src/components/Sidebar/ComplementarySidebar.tsx", "../../../src/components/Sidebar/SidebarButton.tsx", "../../../src/components/Plank/Plank.tsx", "../../../src/components/Plank/PlankError.tsx", "../../../src/components/Plank/PlankHeading.tsx", "../../../src/components/Plank/PlankControls.tsx", "../../../src/components/fragments.ts", "../../../src/components/Plank/PlankLoading.tsx", "../../../src/hooks/useNodeActionExpander.ts", "../../../src/hooks/useMainSize.ts", "../../../src/components/Sidebar/Sidebar.tsx", "../../../src/components/DeckLayout/DeckLayout.tsx", "../../../src/components/DeckLayout/ActiveNode.tsx", "../../../src/components/DeckLayout/ContentEmpty.tsx", "../../../src/components/DeckLayout/Dialog.tsx", "../../../src/components/DeckLayout/Popover.tsx", "../../../src/components/DeckLayout/StatusBar.tsx", "../../../src/components/DeckLayout/Toast.tsx", "../../../src/components/DeckLayout/Topbar.tsx", "../../../src/components/DeckSettings/DeckSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { DECK_PLUGIN } from '../../meta';\nimport { CloseSidebarButton, ToggleSidebarButton } from '../Sidebar';\n\nexport const Banner = ({ variant, classNames }: ThemedClassName<{ variant?: 'topbar' | 'sidebar' }>) => {\n const { t } = useTranslation(DECK_PLUGIN);\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'>{t('current app name', { ns: 'appkit' })}</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 2024 DXOS.org\n//\n\nimport React, {\n Fragment,\n type MouseEvent,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n LayoutAction,\n Surface,\n createIntent,\n useAppGraph,\n useCapability,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { Main, useTranslation, toLocalizedString, IconButton, type Label } from '@dxos/react-ui';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { byPosition, type Position } from '@dxos/util';\n\nimport { ToggleComplementarySidebarButton } from './SidebarButton';\nimport { DeckCapabilities } from '../../capabilities';\nimport { DECK_PLUGIN } from '../../meta';\nimport { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, getMode } from '../../types';\nimport { layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\nimport { PlankContentError, PlankLoading } from '../Plank';\n\nconst label = ['complementary sidebar title', { ns: DECK_PLUGIN }] satisfies Label;\n\nconst getCompanionId = (id: string) => {\n const [_, companionId] = id.split(ATTENDABLE_PATH_SEPARATOR);\n return companionId ?? 'never';\n};\n\ntype DeckCompanion = Node<\n any,\n {\n label: Label;\n icon: string;\n // TODO(burdon): Scroll area should be controlled by surface.\n /** If true, the panel will not be wrapped in a scroll area. */\n fixed?: boolean;\n position?: Position;\n }\n>;\n\nconst useDeckCompanions = (): DeckCompanion[] => {\n const { graph } = useAppGraph();\n const companions = graph.nodes(graph.root, { type: DECK_COMPANION_TYPE }) as DeckCompanion[];\n return companions.toSorted((a, b) => byPosition(a.properties, b.properties));\n};\n\nexport type ComplementarySidebarProps = {\n current?: string;\n};\n\nexport const ComplementarySidebar = ({ current }: ComplementarySidebarProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const layout = useCapability(DeckCapabilities.MutableDeckState);\n const layoutMode = getMode(layout.deck);\n const breakpoint = useBreakpoints();\n const topbar = layoutAppliesTopbar(breakpoint, layoutMode);\n const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);\n\n const companions = useDeckCompanions();\n const activeCompanion = companions.find((companion) => getCompanionId(companion.id) === current);\n const activeId = activeCompanion && getCompanionId(activeCompanion.id);\n const [internalValue, setInternalValue] = useState(activeId);\n\n useEffect(() => {\n setInternalValue(activeId);\n }, [activeId]);\n\n const handleTabClick = useCallback(\n (event: MouseEvent) => {\n const nextValue = event.currentTarget.getAttribute('data-value') as string;\n if (nextValue === activeId) {\n layout.complementarySidebarState = layout.complementarySidebarState === 'expanded' ? 'collapsed' : 'expanded';\n } else {\n setInternalValue(nextValue);\n layout.complementarySidebarState = 'expanded';\n void dispatch(createIntent(LayoutAction.UpdateComplementary, { part: 'complementary', subject: nextValue }));\n }\n },\n [layout, activeId, dispatch],\n );\n\n const data = useMemo(\n () =>\n activeCompanion && {\n id: activeCompanion.id,\n subject: activeCompanion.data,\n },\n [activeCompanion?.id, activeCompanion?.data],\n );\n\n useEffect(() => {\n if (!activeId) {\n void dispatch(\n createIntent(LayoutAction.UpdateComplementary, { part: 'complementary', options: { state: 'collapsed' } }),\n );\n }\n }, [activeId, dispatch]);\n\n return (\n <Main.ComplementarySidebar\n label={label}\n classNames={[\n topbar && 'block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'block-end-[--statusbar-size]',\n ]}\n >\n <Tabs.Root orientation='vertical' verticalVariant='stateless' value={internalValue} classNames='contents'>\n <div\n role='none'\n className='absolute z-[1] inset-block-0 inline-end-0 !is-[--r0-size] pbs-[env(safe-area-inset-top)] pbe-[env(safe-area-inset-bottom)] border-is border-separator grid grid-cols-1 grid-rows-[1fr_min-content] bg-baseSurface contain-layout app-drag'\n >\n <Tabs.Tablist classNames='grid grid-cols-1 auto-rows-[--rail-action] p-1 gap-1 !overflow-y-auto'>\n {companions.map((companion) => (\n <Tabs.Tab key={getCompanionId(companion.id)} value={getCompanionId(companion.id)} asChild>\n <IconButton\n label={toLocalizedString(companion.properties.label, t)}\n icon={companion.properties.icon}\n size={5}\n iconOnly\n tooltipSide='left'\n data-value={getCompanionId(companion.id)}\n variant={\n activeId === getCompanionId(companion.id)\n ? layout.complementarySidebarState === 'expanded'\n ? 'primary'\n : 'default'\n : 'ghost'\n }\n onClick={handleTabClick}\n />\n </Tabs.Tab>\n ))}\n </Tabs.Tablist>\n {!hoistStatusbar && (\n <div role='none' className='grid grid-cols-1 auto-rows-[--rail-item] p-1 overflow-y-auto'>\n <Surface role='status-bar--r0-footer' limit={1} />\n </div>\n )}\n <div role='none' className='hidden lg:grid grid-cols-1 auto-rows-[--rail-action] p-1'>\n <ToggleComplementarySidebarButton />\n </div>\n </div>\n {activeId &&\n companions.map((companion) => (\n <Tabs.Tabpanel\n key={getCompanionId(companion.id)}\n value={getCompanionId(companion.id)}\n classNames='absolute data-[state=\"inactive\"]:-z-[1] inset-block-0 inline-start-0 is-[calc(100%-var(--r0-size))] lg:is-[--r1-size] grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content] pbs-[env(safe-area-inset-top)]'\n {...(layout.complementarySidebarState !== 'expanded' && { inert: 'true' })}\n >\n <ComplementarySidebarPanel\n companion={companion}\n activeId={activeId}\n data={data}\n hoistStatusbar={hoistStatusbar}\n />\n </Tabs.Tabpanel>\n ))}\n </Tabs.Root>\n </Main.ComplementarySidebar>\n );\n};\n\ntype ComplementarySidebarPanelProps = {\n companion: DeckCompanion;\n activeId: string;\n data?: {\n id: string;\n subject: any;\n };\n hoistStatusbar: boolean;\n};\n\nconst ScrollArea = ({ children }: PropsWithChildren) => {\n return <div className='flex flex-col grow overflow-x-hidden overflow-y-auto scrollbar-thin'>{children}</div>;\n};\n\nconst ComplementarySidebarPanel = ({ companion, activeId, data, hoistStatusbar }: ComplementarySidebarPanelProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n if (getCompanionId(companion.id) !== activeId && !data) {\n return null;\n }\n\n const Wrapper = companion.properties.fixed ? Fragment : ScrollArea;\n\n return (\n <>\n <h2 className='flex items-center pli-2 border-separator border-be font-medium'>\n {toLocalizedString(companion.properties.label, t)}\n </h2>\n <Wrapper>\n <Surface\n role={`deck-companion--${getCompanionId(companion.id)}`}\n data={data}\n fallback={PlankContentError}\n placeholder={<PlankLoading />}\n />\n </Wrapper>\n {!hoistStatusbar && (\n <div\n role='contentinfo'\n className='flex flex-wrap justify-center items-center border-bs border-separator pbs-1 pbe-[max(env(safe-area-inset-bottom),0.25rem)]'\n >\n <Surface role='status-bar--r1-footer' limit={1} />\n </div>\n )}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\nimport { IconButton, type IconButtonProps, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const ToggleSidebarButton = ({\n classNames,\n variant = 'ghost',\n}: ThemedClassName<Pick<IconButtonProps, 'variant'>>) => {\n const layoutContext = useCapability(DeckCapabilities.MutableDeckState);\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n variant={variant}\n iconOnly\n icon='ph--sidebar--regular'\n size={4}\n label={t('open navigation sidebar label')}\n onClick={() =>\n (layoutContext.sidebarState = layoutContext.sidebarState === 'expanded' ? 'collapsed' : 'expanded')\n }\n classNames={classNames}\n />\n );\n};\n\nexport const CloseSidebarButton = () => {\n const layoutContext = useCapability(DeckCapabilities.MutableDeckState);\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.sidebarState = 'collapsed')}\n classNames='rounded-none pli-1 dx-focus-ring-inset pie-[max(.5rem,env(safe-area-inset-left))]'\n />\n );\n};\n\nexport const ToggleComplementarySidebarButton = ({ inR0, classNames }: ThemedClassName<{ inR0?: boolean }>) => {\n const layoutContext = useCapability(DeckCapabilities.MutableDeckState);\n const { t } = useTranslation(DECK_PLUGIN);\n return (\n <IconButton\n iconOnly\n onClick={() =>\n (layoutContext.complementarySidebarState =\n layoutContext.complementarySidebarState === 'expanded' ? 'collapsed' : 'expanded')\n }\n variant='ghost'\n label={t('open complementary sidebar label')}\n classNames={['[&>svg]:-scale-x-100', classNames]}\n icon='ph--sidebar-simple--regular'\n size={inR0 ? 5 : 4}\n tooltipSide={inR0 ? 'left' : undefined}\n />\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, {\n Fragment,\n type KeyboardEvent,\n type PropsWithChildren,\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport {\n LayoutAction,\n Surface,\n createIntent,\n useCapability,\n useAppGraph,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { useNode, type Node } from '@dxos/plugin-graph';\nimport { ATTENDABLE_PATH_SEPARATOR, useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { StackItem, railGridHorizontal } from '@dxos/react-ui-stack';\nimport { mainIntrinsicSize, mx } from '@dxos/react-ui-theme';\n\nimport { PlankContentError, PlankError } from './PlankError';\nimport { PlankHeading } from './PlankHeading';\nimport { PlankLoading } from './PlankLoading';\nimport { DeckCapabilities } from '../../capabilities';\nimport { useMainSize } from '../../hooks';\nimport { parseEntryId } from '../../layout';\nimport { DeckAction, type LayoutMode, type Part, type ResolvedPart, type DeckSettingsProps } from '../../types';\nimport { useCompanions } from '../../util';\n\nconst UNKNOWN_ID = 'unknown_id';\n\nexport type PlankProps = {\n id?: string;\n companionId?: string;\n part: Part;\n path?: string[];\n order?: number;\n active?: string[];\n layoutMode: LayoutMode;\n settings?: DeckSettingsProps;\n};\n\ntype PlankImplProps = Omit<PlankProps, 'id' | 'companionId' | 'part'> & {\n id: string;\n part: ResolvedPart;\n node?: Node;\n companioned?: 'primary' | 'companion';\n primary?: Node;\n companions?: Node[];\n};\n\nconst PlankImpl = memo(\n ({ id, node, part, path, order, active, layoutMode, companioned, primary, companions, settings }: PlankImplProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { deck, popoverAnchorId, scrollIntoView } = useCapability(DeckCapabilities.DeckState);\n const rootElement = useRef<HTMLDivElement | null>(null);\n const canResize = layoutMode === 'deck';\n const Root = part.startsWith('solo') ? 'article' : StackItem.Root;\n\n const attendableAttrs = useAttendableAttributes(primary?.id ?? id);\n const index = active ? active.findIndex((entryId) => entryId === id) : 0;\n const length = active?.length ?? 1;\n const canIncrementStart = active && index !== undefined && index > 0 && length !== undefined && length > 1;\n const canIncrementEnd = active && index !== undefined && index < length - 1 && length !== undefined;\n\n const { variant } = parseEntryId(id);\n const sizeKey = `${id.split('+')[0]}${variant ? `${ATTENDABLE_PATH_SEPARATOR}${variant}` : ''}`;\n const size = deck.plankSizing[sizeKey] as number | undefined;\n const setSize = useCallback(\n debounce((nextSize: number) => {\n return dispatch(createIntent(DeckAction.UpdatePlankSize, { id: sizeKey, size: nextSize }));\n }, 200),\n [dispatch, sizeKey],\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 === id) {\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, { part: 'current', subject: undefined }));\n }\n }, [id, scrollIntoView, layoutMode]);\n\n const isSolo = layoutMode.startsWith('solo') && part === 'solo';\n const isAttendable =\n (layoutMode.startsWith('solo') && part.startsWith('solo')) || (layoutMode === 'deck' && part === 'deck');\n\n const sizeAttrs = useMainSize();\n\n const data = useMemo(\n () =>\n node && {\n subject: node.data,\n companionTo: primary?.data,\n variant,\n path,\n popoverAnchorId,\n },\n [node, node?.data, path, popoverAnchorId, primary?.data, variant],\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 && 'absolute inset-0',\n part.startsWith('solo') && 'grid',\n part === 'deck' && (companioned === 'companion' ? '!border-separator border-ie' : '!border-separator border-li'),\n part.startsWith('solo-') && 'row-span-2 grid-rows-subgrid min-is-0',\n part === 'solo-companion' && '!border-separator border-is',\n layoutMode === 'solo--fullscreen' &&\n '!transition-[margin-block-start,inline-size] -mbs-[--rail-action] has-[[data-plank-heading]:hover]:mbs-0',\n );\n\n return (\n <Root\n ref={rootElement}\n data-testid='deck.plank'\n tabIndex={0}\n {...(part.startsWith('solo')\n ? ({ ...sizeAttrs, className } as any)\n : {\n item: { id },\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 <PlankHeading\n id={id}\n part={part.startsWith('solo-') ? 'solo' : part}\n node={node}\n layoutMode={layoutMode}\n deckEnabled={settings?.enableDeck}\n canIncrementStart={canIncrementStart}\n canIncrementEnd={canIncrementEnd}\n popoverAnchorId={popoverAnchorId}\n primaryId={primary?.id}\n companioned={companioned}\n companions={companions}\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 id={id} part={part} />\n )}\n {canResize && <StackItem.ResizeHandle />}\n </Root>\n );\n },\n);\n\nconst SplitFrame = ({ children }: PropsWithChildren<{}>) => {\n const sizeAttrs = useMainSize();\n return (\n <div\n role='none'\n className={mx('grid grid-cols-[1fr_1fr] absolute inset-0', railGridHorizontal, mainIntrinsicSize)}\n {...sizeAttrs}\n >\n {children}\n </div>\n );\n};\n\nexport const Plank = ({ id = UNKNOWN_ID, ...props }: PlankProps) => {\n const { graph } = useAppGraph();\n const node = useNode(graph, id);\n const companions = useCompanions(id);\n const currentCompanion = companions.find(({ id }) => id === props.companionId);\n\n if (props.companionId) {\n const Root = props.part === 'solo' ? SplitFrame : Fragment;\n return (\n <Root>\n <PlankImpl\n id={id}\n node={node}\n companioned='primary'\n {...props}\n {...(props.part === 'solo' ? { part: 'solo-primary' } : {})}\n />\n <PlankImpl\n id={props.companionId}\n node={currentCompanion}\n companioned='companion'\n primary={node}\n companions={companions}\n {...props}\n {...(props.part === 'solo' ? { part: 'solo-companion' } : { order: props.order! + 1 })}\n />\n </Root>\n );\n } else {\n return <PlankImpl id={id} node={node} companions={companions} {...props} />;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type Node } from '@dxos/plugin-graph';\nimport { useTranslation } from '@dxos/react-ui';\nimport { descriptionMessage, mx } from '@dxos/react-ui-theme';\n\nimport { PlankHeading, type PlankHeadingProps } from './PlankHeading';\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(descriptionMessage, 'break-words rounded-lg p-8', errorString.length < 256 && 'text-lg')}\n >\n {error ? errorString : t('error fallback message')}\n </p>\n </div>\n );\n};\n\nexport const PlankError = ({\n id,\n part,\n node,\n error,\n}: {\n id: string;\n part: PlankHeadingProps['part'];\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 <PlankHeading id={id} part={part} 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, useCallback, useEffect, useMemo, type MouseEvent } from 'react';\n\nimport { createIntent, LayoutAction, Surface, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { Icon, IconButton, 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 { PlankCompanionControls, PlankControls } from './PlankControls';\nimport { parseEntryId } from '../../layout';\nimport { DECK_PLUGIN } from '../../meta';\nimport { PLANK_COMPANION_TYPE, DeckAction, type ResolvedPart, type LayoutMode } from '../../types';\nimport { useBreakpoints } from '../../util';\nimport { soloInlinePadding } from '../fragments';\n\nconst MAX_COMPANIONS = 5;\n\nexport type PlankHeadingProps = {\n id: string;\n part: ResolvedPart;\n layoutMode?: LayoutMode;\n node?: Node;\n deckEnabled?: boolean;\n canIncrementStart?: boolean;\n canIncrementEnd?: boolean;\n popoverAnchorId?: string;\n primaryId?: string;\n pending?: boolean;\n companioned?: 'primary' | 'companion';\n companions?: Node[];\n actions?: StackItemSigilAction[];\n};\n\nexport const PlankHeading = memo(\n ({\n id,\n part,\n node,\n deckEnabled,\n canIncrementStart,\n canIncrementEnd,\n popoverAnchorId,\n primaryId,\n pending,\n companioned,\n companions,\n layoutMode,\n actions = [],\n }: PlankHeadingProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\n const breakpoint = useBreakpoints();\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\n const isCompanionNode = node?.type === PLANK_COMPANION_TYPE;\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 attendableId = primaryId ?? id;\n const capabilities = useMemo(\n () => ({\n deck: deckEnabled ?? true,\n solo: breakpoint !== 'mobile' && (part === 'solo' || part === 'deck'),\n incrementStart: canIncrementStart,\n incrementEnd: canIncrementEnd,\n companion: !isCompanionNode && companions && companions.length > 0,\n }),\n [breakpoint, part, companions, canIncrementStart, canIncrementEnd, isCompanionNode, deckEnabled],\n );\n\n const { variant } = parseEntryId(id);\n const sigilActions = useMemo(() => {\n if (!node) {\n return undefined;\n } else if (variant) {\n return [];\n } else {\n return [actions, graph.actions(node)].filter((a) => a.length > 0);\n }\n }, [actions, node, variant, graph]);\n\n const handleAction = useCallback((action: StackItemSigilAction) => {\n typeof action.data === 'function' && action.data?.({ node: action as Node, caller: DECK_PLUGIN });\n }, []);\n\n const handlePlankAction = useCallback(\n (eventType: DeckAction.PartAdjustment) => {\n if (eventType.startsWith('solo')) {\n return dispatch(createIntent(DeckAction.Adjust, { type: eventType, id }));\n } else if (eventType === 'close') {\n if (part === 'complementary') {\n return dispatch(\n createIntent(LayoutAction.UpdateComplementary, {\n part: 'complementary',\n options: { state: 'collapsed' },\n }),\n );\n } else {\n return dispatch(\n createIntent(LayoutAction.Close, { part: 'main', subject: [id], options: { state: false } }),\n );\n }\n } else {\n return dispatch(createIntent(DeckAction.Adjust, { type: eventType, id }));\n }\n },\n [dispatch, id, part],\n );\n\n const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${DECK_PLUGIN}/${node.id}` ? Popover.Anchor : Fragment;\n\n const handleTabClick = useCallback(\n (event: MouseEvent) => {\n const target = (event.target as HTMLElement).closest('[data-id]') as HTMLElement | null;\n const tabId = target?.dataset?.id;\n if (primaryId && tabId) {\n void dispatch(\n createIntent(DeckAction.ChangeCompanion, {\n primary: primaryId,\n companion: tabId,\n }),\n );\n }\n },\n [primaryId],\n );\n\n return (\n <StackItem.Heading\n classNames={[\n 'plb-1 border-be border-separator items-stretch gap-1 sticky inline-start-12 app-drag min-is-0 contain-layout',\n part === 'solo' ? soloInlinePadding : 'pli-1',\n layoutMode === 'solo--fullscreen' &&\n 'opacity-0 border-transparent hover:border-separator hover:opacity-100 transition-[border-color,opacity]',\n ]}\n data-plank-heading\n >\n {companions && isCompanionNode ? (\n <div role='none' className='flex-1 min-is-0 overflow-x-auto scrollbar-thin flex gap-1'>\n {companions.map(({ id, properties: { icon, label } }) => (\n <IconButton\n key={id}\n data-id={id}\n icon={icon}\n iconOnly={companions.length > MAX_COMPANIONS && node?.id !== id}\n label={toLocalizedString(label, t)}\n size={5}\n variant={node?.id === id ? 'primary' : 'default'}\n onClick={handleTabClick}\n />\n ))}\n </div>\n ) : (\n <>\n <ActionRoot>\n {node && sigilActions ? (\n <StackItem.Sigil\n icon={icon}\n related={part === 'complementary'}\n attendableId={attendableId}\n triggerLabel={t('actions menu label')}\n actions={sigilActions}\n onAction={handleAction}\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 <TextTooltip text={label} onlyWhenTruncating>\n <StackItem.HeadingLabel\n attendableId={attendableId}\n related={part === 'complementary'}\n {...(pending && { classNames: 'text-description' })}\n >\n {label}\n </StackItem.HeadingLabel>\n </TextTooltip>\n </>\n )}\n {node && part !== 'complementary' && <Surface role='navbar-end' data={{ subject: node.data }} />}\n {companioned === 'companion' ? (\n <PlankCompanionControls primary={primaryId} />\n ) : (\n <PlankControls\n capabilities={capabilities}\n layoutMode={layoutMode}\n close={part === 'complementary' ? 'minify-end' : true}\n onClick={handlePlankAction}\n />\n )}\n </StackItem.Heading>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\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';\nimport { DeckAction, type LayoutMode } from '../../types';\n\nexport type PlankControlHandler = (event: DeckAction.PartAdjustment) => void;\n\nexport type PlankCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n deck?: boolean;\n solo?: boolean;\n companion?: 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 layoutMode?: LayoutMode;\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={5} />\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\nconst plankControlSpacing = 'pli-2 plb-3';\n\ntype PlankComplimentControlsProps = {\n primary?: string;\n};\n\nexport const PlankCompanionControls = forwardRef<HTMLDivElement, PlankComplimentControlsProps>(\n ({ primary }, forwardedRef) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleCloseCompanion = useCallback(() => {\n invariant(primary);\n return dispatch(createIntent(DeckAction.ChangeCompanion, { primary, companion: null }));\n }, []);\n return (\n <div ref={forwardedRef} className='contents app-no-drag'>\n <PlankControl\n label={t('close companion label')}\n variant='ghost'\n icon='ph--x--regular'\n onClick={handleCloseCompanion}\n classNames={plankControlSpacing}\n />\n </div>\n );\n },\n);\n\n// TODO(wittjosiah): Duplicate of stack LayoutControls?\n// Translations were to be duplicated between packages.\n// NOTE(thure): Pinning & unpinning are disabled indefinitely.\nexport const PlankControls = forwardRef<HTMLDivElement, PlankControlsProps>(\n (\n { children, classNames, variant = 'default', capabilities, layoutMode, pin, close = false, onClick, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const buttonClassNames =\n variant === 'hide-disabled' ? `disabled:hidden ${plankControlSpacing}` : plankControlSpacing;\n\n const layoutIsAnySolo = !!layoutMode?.startsWith('solo');\n\n return (\n <ButtonGroup {...props} classNames={['app-no-drag', classNames]} ref={forwardedRef}>\n {capabilities.deck && (\n <>\n {capabilities.solo && (\n <>\n {layoutMode === 'solo' && (\n <PlankControl\n label={t('show fullscreen plank label')}\n classNames={buttonClassNames}\n icon='ph--corners-out--regular'\n onClick={() => onClick?.('solo--fullscreen')}\n />\n )}\n <PlankControl\n label={t(\n layoutMode === 'solo--fullscreen'\n ? 'exit fullscreen label'\n : layoutIsAnySolo\n ? 'show deck plank label'\n : 'show solo plank label',\n )}\n classNames={buttonClassNames}\n icon={\n layoutMode === 'solo--fullscreen'\n ? 'ph--corners-in--regular'\n : layoutIsAnySolo\n ? 'ph--arrows-in-line-horizontal--regular'\n : 'ph--arrows-out-line-horizontal--regular'\n }\n onClick={() => onClick?.(layoutMode === 'solo--fullscreen' ? 'solo--fullscreen' : 'solo')}\n />\n </>\n )}\n\n {!layoutIsAnySolo && (\n <>\n <PlankControl\n label={t('increment start label')}\n disabled={!capabilities.incrementStart}\n classNames={buttonClassNames}\n icon='ph--caret-left--regular'\n onClick={() => onClick?.('increment-start')}\n />\n <PlankControl\n label={t('increment end label')}\n disabled={!capabilities.incrementEnd}\n classNames={buttonClassNames}\n icon='ph--caret-right--regular'\n onClick={() => onClick?.('increment-end')}\n />\n </>\n )}\n </>\n )}\n\n {close && !layoutIsAnySolo && (\n <PlankControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\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 onClick={() => onClick?.('close')}\n />\n )}\n\n {capabilities.companion && (\n <PlankControl\n label={t('open companion label')}\n classNames={buttonClassNames}\n data-testid='plankHeading.companion'\n icon='ph--square-split-horizontal--regular'\n onClick={() => onClick?.('companion')}\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { mx } from '@dxos/react-ui-theme';\n\nexport const soloInlinePadding =\n 'pis-[calc(env(safe-area-inset-left)+.25rem)] pie-[calc(env(safe-area-inset-left)+.25rem)]';\n\nconst sidebarToggleStyles = 'bs-[--rail-item] is-[--rail-item] absolute block-end-2 z-[1] !bg-deck lg:hidden';\n\nexport const fixedSidebarToggleStyles = mx(sidebarToggleStyles, 'inline-start-2');\n\nexport const fixedComplementarySidebarToggleStyles = mx(sidebarToggleStyles, 'inline-end-2');\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 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 { navigationSidebarState, complementarySidebarState } = useMainContext('DeckPluginPlank');\n return {\n 'data-sidebar-inline-start-state': navigationSidebarState,\n 'data-sidebar-inline-end-state': complementarySidebarState,\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework';\nimport { type Label, Main } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\nimport { DECK_PLUGIN } from '../../meta';\nimport { getMode } from '../../types';\nimport { layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\n\nconst label = ['sidebar title', { ns: DECK_PLUGIN }] satisfies Label;\n\nexport const Sidebar = () => {\n const { popoverAnchorId, activeDeck: current, deck } = useCapability(DeckCapabilities.DeckState);\n const breakpoint = useBreakpoints();\n const layoutMode = getMode(deck);\n const topbar = layoutAppliesTopbar(breakpoint, layoutMode);\n const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);\n\n const navigationData = useMemo(\n () => ({ popoverAnchorId, topbar, hoistStatusbar, current }),\n [popoverAnchorId, topbar, hoistStatusbar, current],\n );\n\n return (\n <Main.NavigationSidebar\n label={label}\n classNames={[\n 'grid',\n topbar && 'block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'block-end-[--statusbar-size]',\n ]}\n >\n <Surface role='navigation' data={navigationData} limit={1} />\n </Main.NavigationSidebar>\n );\n};\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 Capabilities,\n LayoutAction,\n createIntent,\n useCapability,\n useIntentDispatcher,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { Main, type MainProps, useMediaQuery, useOnTransition } 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 { ContentEmpty } from './ContentEmpty';\nimport { Dialog } from './Dialog';\nimport { PopoverContent, PopoverRoot } from './Popover';\nimport { StatusBar } from './StatusBar';\nimport { Toast } from './Toast';\nimport { Topbar } from './Topbar';\nimport { DeckCapabilities } from '../../capabilities';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type DeckSettingsProps, getMode } from '../../types';\nimport { calculateOverscroll, layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\nimport { Plank } from '../Plank';\nimport { ComplementarySidebar, Sidebar, ToggleComplementarySidebarButton, ToggleSidebarButton } from '../Sidebar';\nimport { fixedComplementarySidebarToggleStyles, fixedSidebarToggleStyles } from '../fragments';\n\nexport type DeckLayoutProps = {\n onDismissToast: (id: string) => void;\n};\n\nconst PlankSeparator = ({ order }: { order: number }) =>\n order > 0 ? <span role='separator' className='row-span-2 bg-deck is-4' style={{ gridColumn: order }} /> : null;\n\nexport const DeckLayout = ({ onDismissToast }: DeckLayoutProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const settings = useCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)!.value;\n const context = useCapability(DeckCapabilities.MutableDeckState);\n const { sidebarState, complementarySidebarState, complementarySidebarPanel, deck, toasts } = context;\n const { active, activeCompanions, fullscreen, solo, plankSizing } = deck;\n const breakpoint = useBreakpoints();\n const layoutMode = getMode(deck);\n const topbar = layoutAppliesTopbar(breakpoint, layoutMode);\n const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);\n const pluginManager = usePluginManager();\n\n const scrollLeftRef = useRef<number | null>();\n const deckRef = useRef<HTMLDivElement>(null);\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 = solo ?? active[0];\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 // Not using `breakpoint` to avoid firing when breakpoint changes between tablet and desktop.\n // `ssr: false` to avoid using fallback values and flashing into solo mode on startup.\n const [isNotMobile] = useMediaQuery('md', { ssr: false });\n const shouldRevert = useRef(false);\n useEffect(() => {\n if (!isNotMobile && getMode(deck) === 'deck') {\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\n shouldRevert.current = true;\n void dispatch(\n createIntent(LayoutAction.SetLayoutMode, { part: 'mode', subject: attended[0], options: { mode: 'solo' } }),\n );\n } else if (isNotMobile && getMode(deck) === 'solo' && shouldRevert.current) {\n void dispatch(createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { revert: true } }));\n }\n }, [isNotMobile, deck, dispatch]);\n\n // If deck is disabled in settings, ensure that the layout is in solo mode.\n useEffect(() => {\n if (!settings.enableDeck) {\n void dispatch(\n createIntent(LayoutAction.SetLayoutMode, { part: 'mode', subject: active[0], options: { mode: 'solo' } }),\n );\n }\n }, [settings.enableDeck, dispatch, active]);\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 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 (!solo && event.currentTarget === event.target) {\n scrollLeftRef.current = (event.target as HTMLDivElement).scrollLeft;\n }\n },\n [solo],\n );\n\n const isEmpty = !solo && active.length === 0;\n\n const padding = useMemo(() => {\n if (!solo && settings.overscroll === 'centering') {\n return calculateOverscroll(active.length);\n }\n return {};\n }, [solo, settings.overscroll, deck]);\n\n const mainPosition = useMemo(\n () => [\n 'grid !block-start-[env(safe-area-inset-top)]',\n topbar && '!block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'lg:block-end-[--statusbar-size]',\n ],\n [topbar, hoistStatusbar],\n );\n\n const { order, itemsCount }: { order: Record<string, number>; itemsCount: number } = useMemo(() => {\n return active.reduce(\n (acc: { order: Record<string, number>; itemsCount: number }, entryId) => {\n acc.order[entryId] = acc.itemsCount + 1;\n acc.itemsCount += activeCompanions?.[entryId] ? 3 : 2;\n return acc;\n },\n { order: {}, itemsCount: 0 },\n );\n }, [active, activeCompanions]);\n\n return (\n <PopoverRoot>\n <ActiveNode />\n\n <Main.Root\n navigationSidebarState={fullscreen ? 'closed' : context.sidebarState}\n onNavigationSidebarStateChange={(next) => (context.sidebarState = next)}\n complementarySidebarState={fullscreen ? 'closed' : context.complementarySidebarState}\n onComplementarySidebarStateChange={(next) => (context.complementarySidebarState = next)}\n >\n {/* Left sidebar. */}\n <Sidebar />\n\n {/* Right sidebar. */}\n <ComplementarySidebar current={complementarySidebarPanel} />\n\n {/* Dialog overlay to dismiss dialogs. */}\n <Main.Overlay />\n\n {/* No content. */}\n {isEmpty && (\n <Main.Content bounce handlesFocus classNames={mainPosition}>\n <ContentEmpty />\n </Main.Content>\n )}\n\n {/* Solo/deck mode. */}\n {!isEmpty && (\n <Main.Content\n bounce\n classNames={mainPosition}\n handlesFocus\n style={\n {\n '--dx-main-sidebarWidth':\n sidebarState === 'expanded'\n ? 'var(--nav-sidebar-size)'\n : sidebarState === 'collapsed'\n ? 'var(--l0-size)'\n : '0',\n '--dx-main-complementaryWidth':\n complementarySidebarState === 'expanded'\n ? 'var(--complementary-sidebar-size)'\n : complementarySidebarState === 'collapsed'\n ? 'var(--rail-size)'\n : '0',\n '--dx-main-contentFirstWidth': `${plankSizing[active[0] ?? 'never'] ?? DEFAULT_HORIZONTAL_SIZE}rem`,\n '--dx-main-contentLastWidth': `${plankSizing[active[(active.length ?? 1) - 1] ?? 'never'] ?? DEFAULT_HORIZONTAL_SIZE}rem`,\n } as MainProps['style']\n }\n >\n <div\n role='none'\n className={!solo ? 'relative bg-deck overflow-hidden' : 'sr-only'}\n {...(solo && { inert: '' })}\n >\n {!topbar && !fullscreen && <ToggleSidebarButton classNames={fixedSidebarToggleStyles} />}\n {!topbar && !fullscreen && (\n <ToggleComplementarySidebarButton classNames={fixedComplementarySidebarToggleStyles} />\n )}\n <Stack\n ref={deckRef}\n orientation='horizontal'\n size='contain'\n classNames={['absolute inset-block-0 -inset-inline-px', mainPaddingTransitions]}\n itemsCount={itemsCount - 1}\n style={padding}\n onScroll={handleScroll}\n >\n {active.map((entryId) => (\n <Fragment key={entryId}>\n <PlankSeparator order={order[entryId] - 1} />\n <Plank\n id={entryId}\n companionId={activeCompanions?.[entryId]}\n part='deck'\n order={order[entryId]}\n active={active}\n layoutMode={layoutMode}\n settings={settings}\n />\n </Fragment>\n ))}\n </Stack>\n </div>\n <div\n role='none'\n className={solo ? 'relative bg-deck overflow-hidden' : 'sr-only'}\n {...(!solo && { inert: '' })}\n >\n {!topbar && !fullscreen && <ToggleSidebarButton classNames={fixedSidebarToggleStyles} />}\n {!topbar && !fullscreen && (\n <ToggleComplementarySidebarButton classNames={fixedComplementarySidebarToggleStyles} />\n )}\n <StackContext.Provider value={{ size: 'contain', orientation: 'horizontal', rail: true }}>\n <Plank\n id={solo}\n companionId={solo ? activeCompanions?.[solo] : undefined}\n part='solo'\n layoutMode={layoutMode}\n settings={settings}\n />\n </StackContext.Provider>\n </div>\n </Main.Content>\n )}\n\n {/* Topbar. */}\n {topbar && <Topbar />}\n\n {/* Status bar. */}\n {hoistStatusbar && <StatusBar showHints={settings.showHints} />}\n </Main.Root>\n\n {/* Global popovers. */}\n <PopoverContent />\n\n {/* Global dialog. */}\n <Dialog />\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 </PopoverRoot>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface, useAppGraph } from '@dxos/app-framework';\nimport { useNode } from '@dxos/plugin-graph';\nimport { useAttended } from '@dxos/react-ui-attention';\n\nimport { 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 } = useAppGraph();\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 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework';\n\nimport { DeckCapabilities } from '../../capabilities';\nimport { getMode } from '../../types';\nimport { layoutAppliesTopbar, useBreakpoints } from '../../util';\nimport { ToggleSidebarButton } from '../Sidebar';\nimport { fixedSidebarToggleStyles } from '../fragments';\n\nexport const ContentEmpty = () => {\n const breakpoint = useBreakpoints();\n const { deck } = useCapability(DeckCapabilities.MutableDeckState);\n const layoutMode = getMode(deck);\n const topbar = layoutAppliesTopbar(breakpoint, layoutMode);\n return (\n <div\n role='none'\n className='grid place-items-center p-8 relative bg-deck'\n data-testid='layoutPlugin.firstRunMessage'\n >\n <Surface role='keyshortcuts' />\n {!topbar && <ToggleSidebarButton variant='default' classNames={fixedSidebarToggleStyles} />}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework';\nimport { AlertDialog, Dialog as NaturalDialog } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\nimport { PlankContentError } from '../Plank';\n\nexport const Dialog = () => {\n const context = useCapability(DeckCapabilities.MutableDeckState);\n const { dialogType, dialogBlockAlign, dialogContent, dialogOpen } = context;\n const Root = dialogType === 'alert' ? AlertDialog.Root : NaturalDialog.Root;\n const Overlay = dialogType === 'alert' ? AlertDialog.Overlay : NaturalDialog.Overlay;\n\n // TODO(thure): End block alignment affecting `modal` and whether the surface renders in an overlay is tailored to the needs of the ambient chat dialog. As the feature matures, consider separating concerns.\n return (\n <Root\n modal={dialogBlockAlign !== 'end'}\n open={dialogOpen}\n onOpenChange={(nextOpen) => (context.dialogOpen = nextOpen)}\n >\n {dialogBlockAlign === 'end' ? (\n // TODO(burdon): Placeholder creates a suspense boundary; replace with defaults.\n <Surface role='dialog' data={dialogContent} limit={1} fallback={PlankContentError} placeholder={<div />} />\n ) : (\n <Overlay blockAlign={dialogBlockAlign}>\n <Surface role='dialog' data={dialogContent} limit={1} fallback={PlankContentError} />\n </Overlay>\n )}\n </Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework';\nimport { Popover, type PopoverContentInteractOutsideEvent } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\n\nexport type DeckPopoverRootProps = PropsWithChildren<{}>;\n\nconst DEBOUNCE_DELAY = 40;\n\ntype DeckPopoverContextValue = {\n setOpen: (open: boolean) => void;\n};\n\nconst [DeckPopoverProvider, useDeckPopoverContext] = createContext<DeckPopoverContextValue>('DeckPopover');\n\nexport const PopoverRoot = ({ children }: DeckPopoverRootProps) => {\n const layout = useCapability(DeckCapabilities.MutableDeckState);\n const virtualRef = useRef<HTMLButtonElement | null>(null);\n const [virtualIter, setVirtualIter] = useState(0);\n const [open, setOpen] = useState(false);\n const debounceRef = useRef<NodeJS.Timeout | null>(null);\n\n // TODO(thure): This is a workaround for the race condition between displaying a Popover and either rendering\n // the anchor further down the tree or measuring the virtual trigger’s client rect.\n useEffect(() => {\n setOpen(false);\n if (layout.popoverOpen) {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (layout.popoverAnchor && virtualRef.current !== layout.popoverAnchor) {\n virtualRef.current = layout.popoverAnchor ?? null;\n setVirtualIter((iter) => iter + 1);\n }\n debounceRef.current = setTimeout(() => setOpen(true), DEBOUNCE_DELAY);\n }\n }, [layout.popoverOpen, layout.popoverAnchorId, layout.popoverAnchor, layout.popoverContent]);\n\n return (\n <DeckPopoverProvider setOpen={setOpen}>\n <Popover.Root modal={false} open={open}>\n {layout.popoverAnchor && <Popover.VirtualTrigger key={virtualIter} virtualRef={virtualRef} />}\n {children}\n </Popover.Root>\n </DeckPopoverProvider>\n );\n};\n\nexport const PopoverContent = () => {\n const layout = useCapability(DeckCapabilities.MutableDeckState);\n const { setOpen } = useDeckPopoverContext('PopoverContent');\n\n const handleClose = useCallback(\n (event: KeyboardEvent | PopoverContentInteractOutsideEvent) => {\n if (\n // TODO(thure): CodeMirror should not focus itself when it updates.\n event.type === 'dismissableLayer.focusOutside' &&\n (event.currentTarget as HTMLElement | undefined)?.classList.contains('cm-content')\n ) {\n event.preventDefault();\n } else {\n setOpen(false);\n layout.popoverOpen = false;\n layout.popoverAnchor = undefined;\n layout.popoverAnchorId = undefined;\n layout.popoverSide = undefined;\n }\n },\n [setOpen],\n );\n\n const collisionBoundaries: HTMLElement[] = useMemo(() => {\n const closest = layout.popoverAnchor?.closest('[data-popover-collision-boundary]') as\n | HTMLElement\n | null\n | undefined;\n return closest ? [closest] : [];\n }, [layout.popoverAnchor]);\n\n return (\n <Popover.Portal>\n <Popover.Content\n side={layout.popoverSide}\n onInteractOutside={handleClose}\n onEscapeKeyDown={handleClose}\n collisionBoundary={collisionBoundaries}\n sticky='always'\n hideWhenDetached\n >\n <Popover.Viewport>\n <Surface role='popover' data={layout.popoverContent} limit={1} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { useLandmarkMover } from '@dxos/react-ui';\n\nexport const StatusBar = ({ showHints }: { showHints?: boolean }) => {\n const mover = useLandmarkMover(undefined, '3');\n return (\n <div\n role='contentinfo'\n className='fixed block-end-0 inset-inline-0 bs-[--statusbar-size] border-bs border-separator z-[2] flex text-description'\n {...mover}\n >\n {showHints && <Surface role='hints' limit={1} />}\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 LayoutAction } from '@dxos/app-framework';\nimport {\n Button,\n Icon,\n Toast as NaturalToast,\n type ToastRootProps,\n toLocalizedString,\n useTranslation,\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}: LayoutAction.Toast & 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 { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { DECK_PLUGIN } from '../../meta';\nimport {\n type DeckSettingsProps,\n type NewPlankPositioning,\n NewPlankPositions,\n type Overscroll,\n OverscrollOptions,\n} from '../../types';\n\nconst isSocket = !!(globalThis as any).__args;\n\nexport const DeckSettings = ({ settings }: { settings: DeckSettingsProps }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings enable deck label')}>\n <Input.Switch checked={settings.enableDeck} onCheckedChange={(checked) => (settings.enableDeck = checked)} />\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('select new plank positioning label')}>\n <Select.Root\n disabled={!settings.enableDeck}\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 disabled={!settings.enableDeck}\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 enable statusbar label')}>\n <Input.Switch\n checked={settings.enableStatusbar}\n onCheckedChange={(checked) => (settings.enableStatusbar = checked)}\n />\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 </DeprecatedFormContainer>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "Surface", "useTranslation", "mx", "React", "Fragment", "useCallback", "useEffect", "useMemo", "useState", "LayoutAction", "Surface", "createIntent", "useAppGraph", "useCapability", "useIntentDispatcher", "Main", "useTranslation", "toLocalizedString", "IconButton", "Tabs", "byPosition", "React", "useCapability", "IconButton", "useTranslation", "ToggleSidebarButton", "classNames", "variant", "layoutContext", "useCapability", "DeckCapabilities", "MutableDeckState", "t", "useTranslation", "DECK_PLUGIN", "IconButton", "iconOnly", "icon", "size", "label", "onClick", "sidebarState", "CloseSidebarButton", "ToggleComplementarySidebarButton", "inR0", "complementarySidebarState", "tooltipSide", "undefined", "React", "Fragment", "memo", "useCallback", "useLayoutEffect", "useMemo", "useRef", "LayoutAction", "Surface", "createIntent", "useCapability", "useAppGraph", "useIntentDispatcher", "debounce", "useNode", "ATTENDABLE_PATH_SEPARATOR", "useAttendableAttributes", "StackItem", "railGridHorizontal", "mainIntrinsicSize", "mx", "React", "useEffect", "useState", "useTranslation", "descriptionMessage", "mx", "React", "Fragment", "memo", "useCallback", "useEffect", "useMemo", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useIntentDispatcher", "Icon", "IconButton", "Popover", "toLocalizedString", "useTranslation", "StackItem", "TextTooltip", "React", "forwardRef", "useCallback", "createIntent", "useIntentDispatcher", "invariant", "Button", "ButtonGroup", "Icon", "Tooltip", "useTranslation", "PlankControl", "icon", "label", "props", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "span", "className", "Icon", "size", "Portal", "Content", "side", "plankControlSpacing", "PlankCompanionControls", "forwardRef", "primary", "forwardedRef", "t", "useTranslation", "DECK_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleCloseCompanion", "useCallback", "invariant", "createIntent", "DeckAction", "ChangeCompanion", "companion", "div", "ref", "onClick", "classNames", "PlankControls", "children", "capabilities", "layoutMode", "pin", "close", "buttonClassNames", "layoutIsAnySolo", "startsWith", "ButtonGroup", "deck", "solo", "disabled", "incrementStart", "incrementEnd", "data-testid", "mx", "soloInlinePadding", "sidebarToggleStyles", "fixedSidebarToggleStyles", "mx", "fixedComplementarySidebarToggleStyles", "MAX_COMPANIONS", "PlankHeading", "memo", "id", "part", "node", "deckEnabled", "canIncrementStart", "canIncrementEnd", "popoverAnchorId", "primaryId", "pending", "companioned", "companions", "layoutMode", "actions", "t", "useTranslation", "DECK_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "breakpoint", "useBreakpoints", "icon", "properties", "label", "toLocalizedString", "ns", "isCompanionNode", "type", "PLANK_COMPANION_TYPE", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "attendableId", "capabilities", "useMemo", "deck", "solo", "incrementStart", "incrementEnd", "companion", "length", "variant", "parseEntryId", "sigilActions", "undefined", "filter", "a", "handleAction", "useCallback", "action", "data", "caller", "handlePlankAction", "eventType", "startsWith", "createIntent", "DeckAction", "Adjust", "LayoutAction", "UpdateComplementary", "options", "state", "Close", "subject", "ActionRoot", "Popover", "Anchor", "Fragment", "handleTabClick", "event", "target", "closest", "tabId", "dataset", "ChangeCompanion", "primary", "React", "StackItem", "Heading", "classNames", "soloInlinePadding", "data-plank-heading", "div", "role", "className", "map", "IconButton", "key", "data-id", "iconOnly", "size", "onClick", "Sigil", "related", "triggerLabel", "onAction", "Surface", "SigilButton", "span", "Icon", "TextTooltip", "text", "onlyWhenTruncating", "HeadingLabel", "PlankCompanionControls", "PlankControls", "close", "React", "PlankLoading", "React", "div", "role", "className", "PlankContentError", "error", "t", "useTranslation", "DECK_PLUGIN", "errorString", "toString", "React", "div", "role", "className", "p", "mx", "descriptionMessage", "length", "PlankError", "id", "part", "node", "timedOut", "setTimedOut", "useState", "useEffect", "setTimeout", "PlankHeading", "pending", "PlankLoading", "useEffect", "ACTION_GROUP_TYPE", "ACTION_TYPE", "getGraph", "expandNodeActions", "node", "graph", "getGraph", "expand", "ACTION_GROUP_TYPE", "ACTION_TYPE", "useNodeActionExpander", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "useMainContext", "useMainSize", "navigationSidebarState", "complementarySidebarState", "useMainContext", "UNKNOWN_ID", "PlankImpl", "memo", "id", "node", "part", "path", "order", "active", "layoutMode", "companioned", "primary", "companions", "settings", "dispatchPromise", "dispatch", "useIntentDispatcher", "deck", "popoverAnchorId", "scrollIntoView", "useCapability", "DeckCapabilities", "DeckState", "rootElement", "useRef", "canResize", "Root", "startsWith", "StackItem", "attendableAttrs", "useAttendableAttributes", "index", "findIndex", "entryId", "length", "canIncrementStart", "undefined", "canIncrementEnd", "variant", "parseEntryId", "sizeKey", "split", "ATTENDABLE_PATH_SEPARATOR", "size", "plankSizing", "setSize", "useCallback", "debounce", "nextSize", "createIntent", "DeckAction", "UpdatePlankSize", "handleKeyDown", "event", "target", "currentTarget", "key", "current", "closest", "focus", "useLayoutEffect", "focusable", "querySelector", "preventScroll", "behavior", "inline", "LayoutAction", "ScrollIntoView", "subject", "isSolo", "isAttendable", "sizeAttrs", "useMainSize", "data", "useMemo", "companionTo", "placeholder", "React", "PlankLoading", "className", "mx", "mainIntrinsicSize", "railGridHorizontal", "ref", "data-testid", "tabIndex", "item", "onSizeChange", "classNames", "role", "onKeyDown", "PlankHeading", "deckEnabled", "enableDeck", "primaryId", "Surface", "limit", "fallback", "PlankContentError", "PlankError", "ResizeHandle", "SplitFrame", "children", "div", "Plank", "props", "graph", "useAppGraph", "useNode", "useCompanions", "currentCompanion", "find", "companionId", "Fragment", "label", "ns", "DECK_PLUGIN", "getCompanionId", "id", "_", "companionId", "split", "ATTENDABLE_PATH_SEPARATOR", "useDeckCompanions", "graph", "useAppGraph", "companions", "nodes", "root", "type", "DECK_COMPANION_TYPE", "toSorted", "a", "b", "byPosition", "properties", "ComplementarySidebar", "current", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "layout", "useCapability", "DeckCapabilities", "MutableDeckState", "layoutMode", "getMode", "deck", "breakpoint", "useBreakpoints", "topbar", "layoutAppliesTopbar", "hoistStatusbar", "useHoistStatusbar", "activeCompanion", "find", "companion", "activeId", "internalValue", "setInternalValue", "useState", "useEffect", "handleTabClick", "useCallback", "event", "nextValue", "currentTarget", "getAttribute", "complementarySidebarState", "createIntent", "LayoutAction", "UpdateComplementary", "part", "subject", "data", "useMemo", "options", "state", "React", "Main", "classNames", "Tabs", "Root", "orientation", "verticalVariant", "value", "div", "role", "className", "Tablist", "map", "Tab", "key", "asChild", "IconButton", "toLocalizedString", "icon", "size", "iconOnly", "tooltipSide", "data-value", "variant", "onClick", "Surface", "limit", "ToggleComplementarySidebarButton", "Tabpanel", "inert", "ComplementarySidebarPanel", "ScrollArea", "children", "Wrapper", "fixed", "Fragment", "h2", "fallback", "PlankContentError", "placeholder", "PlankLoading", "React", "useMemo", "Surface", "useCapability", "Main", "label", "ns", "DECK_PLUGIN", "Sidebar", "popoverAnchorId", "activeDeck", "current", "deck", "useCapability", "DeckCapabilities", "DeckState", "breakpoint", "useBreakpoints", "layoutMode", "getMode", "topbar", "layoutAppliesTopbar", "hoistStatusbar", "useHoistStatusbar", "navigationData", "useMemo", "React", "Main", "NavigationSidebar", "classNames", "Surface", "role", "data", "limit", "Banner", "variant", "classNames", "t", "useTranslation", "DECK_PLUGIN", "React", "header", "className", "mx", "CloseSidebarButton", "ToggleSidebarButton", "span", "ns", "div", "role", "Surface", "limit", "untracked", "React", "useCallback", "useEffect", "useMemo", "useRef", "Fragment", "Capabilities", "LayoutAction", "createIntent", "useCapability", "useIntentDispatcher", "usePluginManager", "AttentionCapabilities", "Main", "useMediaQuery", "useOnTransition", "Stack", "StackContext", "DEFAULT_HORIZONTAL_SIZE", "mainPaddingTransitions", "React", "Surface", "useAppGraph", "useNode", "useAttended", "ActiveNode", "id", "useAttended", "graph", "useAppGraph", "activeNode", "useNode", "useNodeActionExpander", "React", "div", "role", "className", "Surface", "data", "subject", "limit", "React", "Surface", "useCapability", "ContentEmpty", "breakpoint", "useBreakpoints", "deck", "useCapability", "DeckCapabilities", "MutableDeckState", "layoutMode", "getMode", "topbar", "layoutAppliesTopbar", "React", "div", "role", "className", "data-testid", "Surface", "ToggleSidebarButton", "variant", "classNames", "fixedSidebarToggleStyles", "React", "Surface", "useCapability", "AlertDialog", "Dialog", "NaturalDialog", "Dialog", "context", "useCapability", "DeckCapabilities", "MutableDeckState", "dialogType", "dialogBlockAlign", "dialogContent", "dialogOpen", "Root", "AlertDialog", "NaturalDialog", "Overlay", "React", "modal", "open", "onOpenChange", "nextOpen", "Surface", "role", "data", "limit", "fallback", "PlankContentError", "placeholder", "div", "blockAlign", "createContext", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Surface", "useCapability", "Popover", "DEBOUNCE_DELAY", "DeckPopoverProvider", "useDeckPopoverContext", "createContext", "PopoverRoot", "children", "layout", "useCapability", "DeckCapabilities", "MutableDeckState", "virtualRef", "useRef", "virtualIter", "setVirtualIter", "useState", "open", "setOpen", "debounceRef", "useEffect", "popoverOpen", "current", "clearTimeout", "popoverAnchor", "iter", "setTimeout", "popoverAnchorId", "popoverContent", "React", "Popover", "Root", "modal", "VirtualTrigger", "key", "PopoverContent", "handleClose", "useCallback", "event", "type", "currentTarget", "classList", "contains", "preventDefault", "undefined", "popoverSide", "collisionBoundaries", "useMemo", "closest", "Portal", "Content", "side", "onInteractOutside", "onEscapeKeyDown", "collisionBoundary", "sticky", "hideWhenDetached", "Viewport", "Surface", "role", "data", "limit", "Arrow", "React", "Surface", "useLandmarkMover", "StatusBar", "showHints", "mover", "useLandmarkMover", "undefined", "React", "div", "role", "className", "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", "order", "React", "span", "role", "className", "style", "gridColumn", "DeckLayout", "onDismissToast", "dispatchPromise", "dispatch", "useIntentDispatcher", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "context", "DeckCapabilities", "MutableDeckState", "sidebarState", "complementarySidebarState", "complementarySidebarPanel", "deck", "toasts", "active", "activeCompanions", "fullscreen", "solo", "plankSizing", "breakpoint", "useBreakpoints", "layoutMode", "getMode", "topbar", "layoutAppliesTopbar", "hoistStatusbar", "useHoistStatusbar", "pluginManager", "usePluginManager", "scrollLeftRef", "useRef", "deckRef", "useEffect", "attended", "untracked", "attention", "requestCapability", "AttentionCapabilities", "Attention", "current", "firstId", "length", "document", "querySelector", "focus", "isNotMobile", "useMediaQuery", "ssr", "shouldRevert", "createIntent", "LayoutAction", "SetLayoutMode", "part", "subject", "options", "mode", "revert", "enableDeck", "handleResize", "useCallback", "window", "addEventListener", "removeEventListener", "restoreScroll", "scrollLeft", "useOnTransition", "handleScroll", "event", "currentTarget", "target", "isEmpty", "padding", "useMemo", "overscroll", "calculateOverscroll", "mainPosition", "itemsCount", "reduce", "acc", "entryId", "PopoverRoot", "ActiveNode", "Main", "Root", "navigationSidebarState", "onNavigationSidebarStateChange", "next", "onComplementarySidebarStateChange", "Sidebar", "ComplementarySidebar", "Overlay", "Content", "bounce", "handlesFocus", "classNames", "ContentEmpty", "DEFAULT_HORIZONTAL_SIZE", "div", "inert", "ToggleSidebarButton", "fixedSidebarToggleStyles", "ToggleComplementarySidebarButton", "fixedComplementarySidebarToggleStyles", "Stack", "ref", "orientation", "size", "mainPaddingTransitions", "onScroll", "map", "Fragment", "key", "Plank", "id", "companionId", "StackContext", "Provider", "rail", "undefined", "Topbar", "StatusBar", "showHints", "PopoverContent", "Dialog", "toast", "Toast", "onOpenChange", "open", "React", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "isSocket", "globalThis", "__args", "DeckSettings", "settings", "t", "useTranslation", "DECK_PLUGIN", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "enableDeck", "onCheckedChange", "Select", "Root", "disabled", "value", "newPlankPositioning", "onValueChange", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "NewPlankPositions", "map", "position", "Option", "key", "overscroll", "OverscrollOptions", "option", "enableStatusbar", "showHints", "enableNativeRedirect"]
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|