@dxos/plugin-deck 0.8.2-main.f081794 → 0.8.2-main.f11618f
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/{check-app-scheme-SEYECDHI.mjs → check-app-scheme-O7JPE4TM.mjs} +2 -3
- package/dist/lib/browser/check-app-scheme-O7JPE4TM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4QSEGMY3.mjs → chunk-RBJ6DLAC.mjs} +5 -5
- package/dist/lib/browser/{chunk-VP6FCWFV.mjs → chunk-RDFJGGGX.mjs} +78 -53
- package/dist/lib/browser/chunk-RDFJGGGX.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/{intent-resolver-6AK45PT5.mjs → intent-resolver-JKWXWUV6.mjs} +12 -5
- package/dist/lib/browser/intent-resolver-JKWXWUV6.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-KA2IL5RA.mjs → react-root-S6ZAKNZA.mjs} +3 -3
- package/dist/lib/browser/{react-surface-LIPGYEYN.mjs → react-surface-I7WZBOGM.mjs} +3 -3
- package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
- package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
- package/package.json +29 -28
- package/src/capabilities/check-app-scheme.ts +3 -5
- package/src/capabilities/intent-resolver.ts +54 -46
- package/src/components/DeckLayout/Popover.tsx +71 -43
- package/src/components/Plank/Plank.tsx +3 -1
- package/src/components/Plank/PlankControls.tsx +11 -5
- package/src/components/Plank/PlankError.tsx +2 -6
- package/src/components/Plank/PlankHeading.tsx +6 -1
- package/dist/lib/browser/check-app-scheme-SEYECDHI.mjs.map +0 -7
- package/dist/lib/browser/chunk-VP6FCWFV.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-6AK45PT5.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-4QSEGMY3.mjs.map → chunk-RBJ6DLAC.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-KA2IL5RA.mjs.map → react-root-S6ZAKNZA.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-LIPGYEYN.mjs.map → react-surface-I7WZBOGM.mjs.map} +0 -0
|
@@ -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],\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 );\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 { descriptionText, 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(\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 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\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 ]}\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={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--caret-left--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 solo plank label'\n : 'show deck plank label',\n )}\n classNames={buttonClassNames}\n icon={layoutIsAnySolo ? 'ph--corners-in--regular' : 'ph--corners-out--regular'}\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 React, { type PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework';\nimport { Popover } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\n\nexport type DeckPopoverRootProps = PropsWithChildren<{}>;\n\nexport const PopoverRoot = ({ children }: DeckPopoverRootProps) => {\n const context = useCapability(DeckCapabilities.MutableDeckState);\n const virtualRef = useRef<HTMLButtonElement | null>(null);\n const [virtualIter, setVirtualIter] = useState(0);\n\n // TODO(thure): This is a workaround for the difference in `React`ion time between displaying a Popover and rendering\n // the anchor further down the tree. Refactor to use VirtualTrigger or some other approach which does not cause a lag.\n const [delayedPopoverVisibility, setDelayedPopoverVisibility] = useState(false);\n useEffect(() => {\n context.popoverOpen ? setTimeout(() => setDelayedPopoverVisibility(true), 40) : setDelayedPopoverVisibility(false);\n }, [context.popoverOpen]);\n\n const handlePopoverOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (nextOpen && (context.popoverAnchor || context.popoverAnchorId)) {\n context.popoverOpen = true;\n } else {\n context.popoverOpen = false;\n context.popoverAnchor = undefined;\n context.popoverAnchorId = undefined;\n context.popoverSide = undefined;\n }\n },\n [context],\n );\n\n useEffect(() => {\n virtualRef.current = context.popoverAnchor ?? null;\n setVirtualIter((iter) => iter + 1);\n }, [context.popoverAnchor]);\n\n return (\n <Popover.Root\n modal\n open={!!((context.popoverAnchor || context.popoverAnchorId) && delayedPopoverVisibility)}\n onOpenChange={handlePopoverOpenChange}\n >\n {context.popoverAnchor && <Popover.VirtualTrigger key={virtualIter} virtualRef={virtualRef} />}\n {children}\n </Popover.Root>\n );\n};\n\nexport const PopoverContent = () => {\n const context = useCapability(DeckCapabilities.MutableDeckState);\n const handlePopoverClose = useCallback(() => {\n context.popoverOpen = false;\n context.popoverAnchor = undefined;\n context.popoverAnchorId = undefined;\n context.popoverSide = undefined;\n }, [context]);\n\n return (\n <Popover.Portal>\n <Popover.Content side={context.popoverSide} onEscapeKeyDown={handlePopoverClose}>\n <Popover.Viewport>\n <Surface role='popover' data={context.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", "descriptionText", "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", "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", "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", "descriptionText", "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", "React", "useCallback", "useEffect", "useRef", "useState", "Surface", "useCapability", "Popover", "PopoverRoot", "children", "context", "useCapability", "DeckCapabilities", "MutableDeckState", "virtualRef", "useRef", "virtualIter", "setVirtualIter", "useState", "delayedPopoverVisibility", "setDelayedPopoverVisibility", "useEffect", "popoverOpen", "setTimeout", "handlePopoverOpenChange", "useCallback", "nextOpen", "popoverAnchor", "popoverAnchorId", "undefined", "popoverSide", "current", "iter", "React", "Popover", "Root", "modal", "open", "onOpenChange", "VirtualTrigger", "key", "PopoverContent", "handlePopoverClose", "Portal", "Content", "side", "onEscapeKeyDown", "Viewport", "Surface", "role", "data", "popoverContent", "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
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/intent-resolver.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\nimport { pipe } from 'effect';\n\nimport {\n Capabilities,\n createResolver,\n contributes,\n IntentAction,\n LayoutAction,\n type PluginsContext,\n createIntent,\n chain,\n} from '@dxos/app-framework';\nimport { getTypename, S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { isLiveObject } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { type Node } from '@dxos/plugin-graph';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { byPosition, isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities } from './capabilities';\nimport { closeEntry, createEntryId, incrementPlank, openEntry } from '../layout';\nimport { DECK_PLUGIN } from '../meta';\nimport {\n DeckAction,\n type LayoutMode,\n type DeckSettingsProps,\n isLayoutMode,\n getMode,\n defaultDeck,\n PLANK_COMPANION_TYPE,\n} from '../types';\nimport { setActive } from '../util';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: IntentAction.ShowUndo,\n resolve: (data) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n const { undoPromise: undo } = context.requestCapability(Capabilities.IntentDispatcher);\n\n // TODO(wittjosiah): Support undoing further back than the last action.\n if (layout.currentUndoId) {\n layout.toasts = layout.toasts.filter((toast) => toast.id !== layout.currentUndoId);\n }\n layout.currentUndoId = `${IntentAction.ShowUndo._tag}-${Date.now()}`;\n layout.toasts = [\n ...layout.toasts,\n {\n id: layout.currentUndoId,\n title: data.message ?? ['undo available label', { ns: DECK_PLUGIN }],\n duration: 10_000,\n actionLabel: ['undo action label', { ns: DECK_PLUGIN }],\n actionAlt: ['undo action alt', { ns: DECK_PLUGIN }],\n closeLabel: ['undo close label', { ns: DECK_PLUGIN }],\n onAction: () => undo(),\n },\n ];\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdateSidebar.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is S.Schema.Type<typeof LayoutAction.UpdateSidebar.fields.input> =>\n S.is(LayoutAction.UpdateSidebar.fields.input)(data),\n resolve: ({ options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n const next = options?.state ?? layout.sidebarState;\n if (next !== layout.sidebarState) {\n layout.sidebarState = next;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdateComplementary.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is S.Schema.Type<typeof LayoutAction.UpdateComplementary.fields.input> =>\n S.is(LayoutAction.UpdateComplementary.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n\n if (layout.complementarySidebarPanel !== subject) {\n layout.complementarySidebarPanel = subject;\n }\n\n const next = subject ? 'expanded' : options?.state ?? layout.complementarySidebarState;\n if (next !== layout.complementarySidebarState) {\n layout.complementarySidebarState = next;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdateDialog.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is S.Schema.Type<typeof LayoutAction.UpdateDialog.fields.input> =>\n S.is(LayoutAction.UpdateDialog.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.dialogOpen = options.state ?? Boolean(subject);\n layout.dialogContent = subject ? { component: subject, props: options.props } : null;\n layout.dialogBlockAlign = options.blockAlign ?? 'center';\n layout.dialogType = options.type ?? 'default';\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.UpdatePopover.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is S.Schema.Type<typeof LayoutAction.UpdatePopover.fields.input> =>\n S.is(LayoutAction.UpdatePopover.fields.input)(data),\n resolve: ({ subject, options }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.popoverOpen = options.state ?? Boolean(subject);\n layout.popoverContent =\n typeof subject === 'string' ? { component: subject, props: options.props } : subject ? { subject } : null;\n layout.popoverSide = options.side;\n if (options.variant === 'virtual') {\n layout.popoverAnchor = options.anchor;\n } else {\n layout.popoverAnchorId = options.anchorId;\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.AddToast.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is S.Schema.Type<typeof LayoutAction.AddToast.fields.input> =>\n S.is(LayoutAction.AddToast.fields.input)(data),\n resolve: ({ subject }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.toasts.push(subject);\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n // TODO(wittjosiah): This should be able to just be `S.is(LayoutAction.SetLayoutMode.fields.input)`\n // but the filter is not being applied correctly.\n filter: (data): data is S.Schema.Type<typeof LayoutAction.SetLayoutMode.fields.input> => {\n if (!S.is(LayoutAction.SetLayoutMode.fields.input)(data)) {\n return false;\n }\n\n if ('mode' in data.options) {\n return isLayoutMode(data.options.mode);\n }\n\n return true;\n },\n resolve: ({ subject, options }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n\n const setMode = (mode: LayoutMode) => {\n const deck = state.deck;\n const current = deck.solo ? [deck.solo] : deck.active;\n // When un-soloing, the solo entry is added to the deck.\n const next = (\n mode !== 'deck' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]\n ).filter(isNonNullable);\n\n const removed = current.filter((id) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id) => !next.includes(id)), ...removed]));\n deck.inactive = closed;\n\n if (mode !== 'deck' && next[0]) {\n deck.solo = next[0];\n } else if (mode === 'deck' && deck.solo) {\n deck.solo = undefined;\n deck.initialized = true;\n }\n\n if (mode === 'solo--fullscreen') {\n deck.fullscreen = !deck.fullscreen;\n }\n };\n\n return batch(() => {\n if ('mode' in options) {\n const current = getMode(state.deck);\n if (current !== options.mode) {\n state.previousMode[state.activeDeck] = current;\n }\n setMode(options.mode as LayoutMode);\n } else if ('revert' in options) {\n const last = state.previousMode[state.activeDeck];\n setMode(last ?? 'solo');\n } else {\n log.warn('Invalid layout mode', options);\n }\n });\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is S.Schema.Type<typeof LayoutAction.SwitchWorkspace.fields.input> =>\n S.is(LayoutAction.SwitchWorkspace.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n batch(() => {\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n if (!state.activeDeck.startsWith('!')) {\n state.previousDeck = state.activeDeck;\n }\n state.activeDeck = subject;\n if (!state.decks[subject]) {\n state.decks[subject] = { ...defaultDeck };\n }\n });\n\n const first = state.deck.solo ? state.deck.solo : state.deck.active[0];\n if (first) {\n return {\n intents: [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: first })],\n };\n }\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is S.Schema.Type<typeof LayoutAction.RevertWorkspace.fields.input> =>\n S.is(LayoutAction.RevertWorkspace.fields.input)(data),\n resolve: () => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n return {\n intents: [createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: state.previousDeck })],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is S.Schema.Type<typeof LayoutAction.Open.fields.input> =>\n S.is(LayoutAction.Open.fields.input)(data),\n resolve: ({ subject, options }) => {\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DeckSettingsProps>(DECK_PLUGIN)?.value;\n\n const previouslyOpenIds = new Set<string>(state.deck.solo ? [state.deck.solo] : state.deck.active);\n batch(() => {\n const next = state.deck.solo\n ? (subject as string[]).map((id) => createEntryId(id, options?.variant))\n : subject.reduce(\n (acc, entryId) =>\n openEntry(acc, entryId, {\n key: options?.key,\n positioning: options?.positioning ?? settings?.newPlankPositioning,\n pivotId: options?.pivotId,\n variant: options?.variant,\n }),\n state.deck.active,\n );\n\n return setActive({ next, state, attention });\n });\n\n const ids = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const newlyOpen = ids.filter((i) => !previouslyOpenIds.has(i));\n\n return {\n intents: [\n ...(options?.scrollIntoView !== false\n ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: newlyOpen[0] ?? subject[0] })]\n : []),\n createIntent(LayoutAction.Expose, { part: 'navigation', subject: newlyOpen[0] ?? subject[0] }),\n ...newlyOpen.map((subjectId) => {\n const active = graph?.findNode(subjectId)?.data;\n const typename = isLiveObject(active) ? getTypename(active) : undefined;\n return createIntent(ObservabilityAction.SendEvent, {\n name: 'navigation.activate',\n properties: {\n subjectId,\n typename,\n },\n });\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is S.Schema.Type<typeof LayoutAction.Close.fields.input> =>\n S.is(LayoutAction.Close.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const active = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const next = subject.reduce((acc, id) => closeEntry(acc, id), active);\n const toAttend = setActive({ next, state, attention });\n\n const clearCompanionIntents = subject\n .filter((id) => state.deck.activeCompanions && id in state.deck.activeCompanions)\n .map((primary) => createIntent(DeckAction.ChangeCompanion, { primary, companion: null }));\n\n return {\n intents: [\n ...clearCompanionIntents,\n ...(toAttend ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: toAttend })] : []),\n ],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is S.Schema.Type<typeof LayoutAction.Set.fields.input> =>\n S.is(LayoutAction.Set.fields.input)(data),\n resolve: ({ subject }) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const toAttend = setActive({ next: subject as string[], state, attention });\n return {\n intents: toAttend ? [createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: toAttend })] : [],\n };\n },\n }),\n createResolver({\n intent: LayoutAction.UpdateLayout,\n filter: (data): data is S.Schema.Type<typeof LayoutAction.ScrollIntoView.fields.input> =>\n S.is(LayoutAction.ScrollIntoView.fields.input)(data),\n resolve: ({ subject }) => {\n const layout = context.requestCapability(DeckCapabilities.MutableDeckState);\n layout.scrollIntoView = subject;\n },\n }),\n createResolver({\n intent: DeckAction.UpdatePlankSize,\n resolve: (data) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n state.deck.plankSizing[data.id] = data.size;\n },\n }),\n createResolver({\n intent: DeckAction.ChangeCompanion,\n resolve: (data) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n // TODO(thure): Reactivity only works when creating a lexically new `activeCompanions`… Are these not proxy objects?\n if (data.companion === null) {\n const { [data.primary]: _, ...nextActiveCompanions } = state.deck.activeCompanions ?? {};\n state.deck.activeCompanions = nextActiveCompanions;\n } else {\n invariant(data.companion !== data.primary);\n state.deck.activeCompanions = {\n ...state.deck.activeCompanions,\n [data.primary]: data.companion,\n };\n }\n },\n }),\n createResolver({\n intent: DeckAction.Adjust,\n resolve: (adjustment) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n return batch(() => {\n if (adjustment.type === 'increment-end' || adjustment.type === 'increment-start') {\n setActive({\n next: incrementPlank(state.deck.active, adjustment),\n state,\n attention,\n });\n }\n\n if (adjustment.type === 'companion') {\n const node = graph.findNode(adjustment.id);\n const [companion] = node\n ? graph\n .nodes(node, { filter: (n): n is Node<any> => n.type === PLANK_COMPANION_TYPE })\n .toSorted((a, b) => byPosition(a.properties, b.properties))\n : [];\n if (companion) {\n return {\n intents: [\n // TODO(wittjosiah): This should remember the previously selected companion.\n createIntent(DeckAction.ChangeCompanion, { primary: adjustment.id, companion: companion.id }),\n ],\n };\n }\n }\n\n if (adjustment.type.startsWith('solo')) {\n const entryId = adjustment.id;\n if (!state.deck.solo) {\n // Solo the entry.\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, {\n part: 'mode',\n subject: entryId,\n options: { mode: adjustment.type },\n }),\n ],\n };\n } else {\n if (adjustment.type === 'solo--fullscreen') {\n // Toggle fullscreen on the current entry.\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, {\n part: 'mode',\n subject: entryId,\n options: { mode: 'solo--fullscreen' },\n }),\n ],\n };\n } else if (adjustment.type === 'solo') {\n // Un-solo the current entry.\n return {\n intents: [\n // NOTE: The order of these is important.\n pipe(\n createIntent(LayoutAction.SetLayoutMode, { part: 'mode', options: { mode: 'deck' } }),\n chain(LayoutAction.Open, { part: 'main', subject: [entryId] }),\n ),\n ],\n };\n }\n }\n }\n });\n },\n }),\n ]);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["batch", "pipe", "Capabilities", "createResolver", "contributes", "IntentAction", "LayoutAction", "createIntent", "chain", "getTypename", "S", "invariant", "isLiveObject", "log", "AttentionCapabilities", "ObservabilityAction", "byPosition", "isNonNullable", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "IntentAction", "ShowUndo", "resolve", "data", "layout", "requestCapability", "DeckCapabilities", "MutableDeckState", "undoPromise", "undo", "IntentDispatcher", "currentUndoId", "toasts", "filter", "toast", "id", "_tag", "Date", "now", "title", "message", "ns", "DECK_PLUGIN", "duration", "actionLabel", "actionAlt", "closeLabel", "onAction", "LayoutAction", "UpdateLayout", "S", "is", "UpdateSidebar", "fields", "input", "options", "next", "state", "sidebarState", "UpdateComplementary", "subject", "complementarySidebarPanel", "complementarySidebarState", "UpdateDialog", "dialogOpen", "Boolean", "dialogContent", "component", "props", "dialogBlockAlign", "blockAlign", "dialogType", "type", "UpdatePopover", "popoverOpen", "popoverContent", "popoverSide", "side", "variant", "popoverAnchor", "anchor", "popoverAnchorId", "anchorId", "AddToast", "push", "SetLayoutMode", "isLayoutMode", "mode", "setMode", "deck", "current", "solo", "active", "isNonNullable", "removed", "includes", "closed", "Array", "from", "Set", "inactive", "undefined", "initialized", "fullscreen", "batch", "getMode", "previousMode", "activeDeck", "last", "log", "warn", "SwitchWorkspace", "startsWith", "previousDeck", "decks", "defaultDeck", "first", "intents", "createIntent", "ScrollIntoView", "part", "RevertWorkspace", "Open", "graph", "AppGraph", "attention", "AttentionCapabilities", "Attention", "settings", "requestCapabilities", "SettingsStore", "getStore", "value", "previouslyOpenIds", "map", "createEntryId", "reduce", "acc", "entryId", "openEntry", "key", "positioning", "newPlankPositioning", "pivotId", "setActive", "ids", "newlyOpen", "i", "has", "scrollIntoView", "Expose", "subjectId", "findNode", "typename", "isLiveObject", "getTypename", "ObservabilityAction", "SendEvent", "name", "properties", "Close", "closeEntry", "toAttend", "clearCompanionIntents", "activeCompanions", "primary", "DeckAction", "ChangeCompanion", "companion", "UpdatePlankSize", "plankSizing", "size", "_", "nextActiveCompanions", "invariant", "Adjust", "adjustment", "incrementPlank", "node", "nodes", "n", "PLANK_COMPANION_TYPE", "toSorted", "a", "b", "byPosition", "pipe", "chain"]
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|