@dxos/plugin-deck 0.7.5-labs.e27f9b9 → 0.7.5-labs.f400bbc
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/{app-graph-builder-CI6ZFMNL.mjs → app-graph-builder-IYHAGFA3.mjs} +6 -2
- package/dist/lib/browser/{app-graph-builder-CI6ZFMNL.mjs.map → app-graph-builder-IYHAGFA3.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-YQ2GWTDU.mjs → chunk-22AQ5IVX.mjs} +1 -1
- package/dist/lib/browser/{chunk-YQ2GWTDU.mjs.map → chunk-22AQ5IVX.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-M2L53AIH.mjs → chunk-FT33W5CI.mjs} +4 -2
- package/dist/lib/browser/chunk-FT33W5CI.mjs.map +7 -0
- package/dist/lib/browser/chunk-G2X3ZDCE.mjs +24 -0
- package/dist/lib/browser/chunk-KANJBSIX.mjs +97 -0
- package/dist/lib/browser/chunk-KANJBSIX.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BTDY6SES.mjs → chunk-O4RFYYQ6.mjs} +120 -125
- package/dist/lib/browser/chunk-O4RFYYQ6.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +13 -6
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-CSXFDKTC.mjs → intent-resolver-ZD67BRUI.mjs} +42 -48
- package/dist/lib/browser/intent-resolver-ZD67BRUI.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-HIHLRMCW.mjs → react-root-6ILKHD5J.mjs} +7 -8
- package/dist/lib/browser/react-root-6ILKHD5J.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-4QVWKQYY.mjs → react-surface-O75FKXAI.mjs} +6 -5
- package/dist/lib/browser/{react-surface-4QVWKQYY.mjs.map → react-surface-O75FKXAI.mjs.map} +1 -1
- package/dist/lib/browser/{settings-WACNLCPB.mjs → settings-H35U6NHE.mjs} +2 -2
- package/dist/lib/browser/{state-VPOYUKK6.mjs → state-U4SHOPJW.mjs} +16 -4
- package/dist/lib/browser/state-U4SHOPJW.mjs.map +7 -0
- package/dist/lib/browser/{tools-5LDJNU56.mjs → tools-64LXGLYR.mjs} +12 -4
- package/dist/lib/browser/tools-64LXGLYR.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/browser/{url-handler-HLF42IHP.mjs → url-handler-MVHTKUYA.mjs} +8 -6
- package/dist/lib/browser/{url-handler-HLF42IHP.mjs.map → url-handler-MVHTKUYA.mjs.map} +3 -3
- package/dist/types/src/DeckPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +110 -110
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +8 -8
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +111 -111
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +5 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/tools.d.ts.map +1 -1
- package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/ActiveNode.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/ActiveNode.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Banner.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/Banner.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/ComplementarySidebar.d.ts +1 -4
- package/dist/types/src/components/DeckLayout/ComplementarySidebar.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/DeckLayout.d.ts +2 -4
- package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Fallback.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Fullscreen.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/Fullscreen.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/NodePlankHeading.d.ts +1 -1
- package/dist/types/src/components/DeckLayout/NodePlankHeading.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Plank.d.ts +1 -1
- package/dist/types/src/components/DeckLayout/Plank.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/PlankError.d.ts +2 -3
- package/dist/types/src/components/DeckLayout/PlankError.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/PlankLoading.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/PlankLoading.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Sidebar.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/Sidebar.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/SidebarButton.d.ts +3 -4
- package/dist/types/src/components/DeckLayout/SidebarButton.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/StatusBar.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Toast.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
- package/dist/types/src/components/DeckLayout/Topbar.d.ts +1 -2
- package/dist/types/src/components/DeckLayout/Topbar.d.ts.map +1 -1
- package/dist/types/src/components/LayoutSettings.d.ts +1 -2
- package/dist/types/src/components/LayoutSettings.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/hooks/useNode.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +11 -1
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +1 -0
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/set-active.d.ts.map +1 -0
- package/dist/types/src/util/useHoistStatusbar.d.ts.map +1 -1
- package/package.json +30 -30
- package/src/DeckPlugin.ts +8 -4
- package/src/capabilities/app-graph-builder.ts +4 -0
- package/src/capabilities/capabilities.ts +3 -6
- package/src/capabilities/intent-resolver.ts +26 -8
- package/src/capabilities/react-root.tsx +1 -3
- package/src/capabilities/state.ts +7 -1
- package/src/capabilities/tools.ts +8 -3
- package/src/capabilities/url-handler.ts +7 -5
- package/src/components/DeckLayout/ComplementarySidebar.tsx +107 -50
- package/src/components/DeckLayout/DeckLayout.tsx +41 -26
- package/src/components/DeckLayout/Plank.tsx +4 -3
- package/src/components/DeckLayout/PlankControls.tsx +1 -1
- package/src/events.ts +1 -0
- package/src/hooks/useNode.ts +3 -1
- package/src/layout.ts +1 -1
- package/src/types.ts +16 -3
- package/src/util/index.ts +1 -0
- package/src/{capabilities → util}/set-active.ts +4 -0
- package/src/util/useHoistStatusbar.ts +4 -8
- package/dist/lib/browser/chunk-BTDY6SES.mjs.map +0 -7
- package/dist/lib/browser/chunk-FZOBKOA2.mjs +0 -24
- package/dist/lib/browser/chunk-M2L53AIH.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-CSXFDKTC.mjs.map +0 -7
- package/dist/lib/browser/react-root-HIHLRMCW.mjs.map +0 -7
- package/dist/lib/browser/state-VPOYUKK6.mjs.map +0 -7
- package/dist/lib/browser/tools-5LDJNU56.mjs.map +0 -7
- package/dist/types/src/capabilities/set-active.d.ts.map +0 -1
- /package/dist/lib/browser/{chunk-FZOBKOA2.mjs.map → chunk-G2X3ZDCE.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-WACNLCPB.mjs.map → settings-H35U6NHE.mjs.map} +0 -0
- /package/dist/types/src/{capabilities → util}/set-active.d.ts +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/DeckLayout/Banner.tsx", "../../../src/components/DeckLayout/SidebarButton.tsx", "../../../src/components/DeckLayout/DeckLayout.tsx", "../../../src/components/DeckLayout/ActiveNode.tsx", "../../../src/hooks/useNode.ts", "../../../src/hooks/useNodeActionExpander.ts", "../../../src/hooks/useMainSize.ts", "../../../src/components/DeckLayout/ComplementarySidebar.tsx", "../../../src/components/DeckLayout/PlankError.tsx", "../../../src/components/DeckLayout/NodePlankHeading.tsx", "../../../src/components/DeckLayout/PlankControls.tsx", "../../../src/util/overscroll.ts", "../../../src/util/useBreakpoints.ts", "../../../src/util/layoutAppliesTopbar.ts", "../../../src/util/useHoistStatusbar.ts", "../../../src/components/fragments.ts", "../../../src/components/DeckLayout/PlankLoading.tsx", "../../../src/components/DeckLayout/ContentEmpty.tsx", "../../../src/components/DeckLayout/Fullscreen.tsx", "../../../src/components/DeckLayout/Fallback.tsx", "../../../src/components/DeckLayout/constants.ts", "../../../src/components/DeckLayout/Plank.tsx", "../../../src/components/DeckLayout/Sidebar.tsx", "../../../src/components/DeckLayout/StatusBar.tsx", "../../../src/components/DeckLayout/Toast.tsx", "../../../src/components/DeckLayout/Topbar.tsx", "../../../src/components/LayoutSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { CloseSidebarButton, ToggleSidebarButton } from './SidebarButton';\n\nexport const Banner = ({ variant, classNames }: ThemedClassName<{ variant?: 'topbar' | 'sidebar' }>) => {\n return (\n <header\n className={mx(\n 'flex items-stretch relative plb-1 pis-1 pie-2',\n variant === 'topbar' &&\n 'fixed inset-inline-0 block-start-[env(safe-area-inset-top)] bs-[--rail-size] border-be border-separator',\n classNames,\n )}\n >\n {variant === 'sidebar' ? <CloseSidebarButton /> : <ToggleSidebarButton />}\n <span className='self-center grow mis-1'>Composer</span>\n {variant === 'topbar' && (\n <div role='none' className='absolute inset-0 pointer-events-none'>\n <div role='none' className='grid bs-full pointer-fine:p-1 max-is-md mli-auto pointer-events-auto'>\n <Surface role='search-input' limit={1} />\n </div>\n </div>\n )}\n <span role='none' className='grow' />\n <Surface role='header-end' limit={1} />\n <Surface role='notch-start' limit={1} />\n </header>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport 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 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 LayoutAction,\n createIntent,\n Surface,\n useCapability,\n useIntentDispatcher,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport {\n AlertDialog,\n Dialog as NaturalDialog,\n Main,\n Popover,\n useOnTransition,\n type MainProps,\n useMediaQuery,\n} from '@dxos/react-ui';\nimport { Stack, StackContext, DEFAULT_HORIZONTAL_SIZE } from '@dxos/react-ui-stack';\nimport { mainPaddingTransitions } from '@dxos/react-ui-theme';\n\nimport { ActiveNode } from './ActiveNode';\nimport { ComplementarySidebar, type ComplementarySidebarProps } from './ComplementarySidebar';\nimport { ContentEmpty } from './ContentEmpty';\nimport { Fullscreen } from './Fullscreen';\nimport { Plank } from './Plank';\nimport { Sidebar } from './Sidebar';\nimport { ToggleComplementarySidebarButton, ToggleSidebarButton } from './SidebarButton';\nimport { StatusBar } from './StatusBar';\nimport { Toast } from './Toast';\nimport { Topbar } from './Topbar';\nimport { DeckCapabilities } from '../../capabilities';\nimport { getMode, type Overscroll } from '../../types';\nimport { calculateOverscroll, layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\nimport { fixedComplementarySidebarToggleStyles, fixedSidebarToggleStyles } from '../fragments';\n\nexport type DeckLayoutProps = {\n overscroll: Overscroll;\n showHints: boolean;\n onDismissToast: (id: string) => void;\n} & Pick<ComplementarySidebarProps, 'panels'>;\n\nconst PlankSeparator = ({ index }: { index: number }) =>\n index > 0 ? <span role='separator' className='row-span-2 bg-deck is-4' style={{ gridColumn: index * 2 }} /> : null;\n\nexport const DeckLayout = ({ overscroll, showHints, panels, onDismissToast }: DeckLayoutProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const context = useCapability(DeckCapabilities.MutableDeckState);\n const {\n sidebarState,\n complementarySidebarState,\n complementarySidebarPanel,\n dialogOpen,\n dialogContent,\n dialogBlockAlign,\n dialogType,\n popoverOpen,\n popoverContent,\n popoverAnchorId,\n deck,\n toasts,\n } = context;\n const { active, fullscreen, solo, plankSizing } = deck;\n const breakpoint = useBreakpoints();\n const topbar = layoutAppliesTopbar(breakpoint);\n const hoistStatusbar = useHoistStatusbar(breakpoint);\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 /**\n * Clear scroll restoration state if the window is resized\n */\n const handleResize = useCallback(() => {\n scrollLeftRef.current = null;\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize]);\n\n const restoreScroll = useCallback(() => {\n if (deckRef.current && scrollLeftRef.current != null) {\n deckRef.current.scrollLeft = scrollLeftRef.current;\n }\n }, []);\n\n const layoutMode = getMode(deck);\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 && overscroll === 'centering') {\n return calculateOverscroll(active.length);\n }\n return {};\n }, [solo, 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 Dialog = dialogType === 'alert' ? AlertDialog : NaturalDialog;\n\n return (\n <Popover.Root\n modal\n open={!!(popoverAnchorId && popoverOpen)}\n onOpenChange={(nextOpen) => {\n if (nextOpen && popoverAnchorId) {\n context.popoverOpen = true;\n } else {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n }\n }}\n >\n <ActiveNode />\n\n {fullscreen && <Fullscreen id={solo} />}\n\n {!fullscreen && (\n <Main.Root\n navigationSidebarState={context.sidebarState}\n onNavigationSidebarStateChange={(next) => (context.sidebarState = next)}\n complementarySidebarState={context.complementarySidebarState}\n onComplementarySidebarStateChange={(next) => (context.complementarySidebarState = next)}\n >\n {/* Left sidebar. */}\n <Sidebar />\n\n {/* Right sidebar. */}\n <ComplementarySidebar panels={panels} 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 && <ToggleSidebarButton classNames={fixedSidebarToggleStyles} />}\n {!topbar && <ToggleComplementarySidebarButton classNames={fixedComplementarySidebarToggleStyles} />}\n <Stack\n orientation='horizontal'\n size='contain'\n classNames={['absolute inset-block-0 -inset-inline-px', mainPaddingTransitions]}\n onScroll={handleScroll}\n itemsCount={2 * (active.length ?? 0) - 1}\n style={padding}\n ref={deckRef}\n >\n {active.map((entryId, index) => (\n <Fragment key={entryId}>\n <PlankSeparator index={index} />\n <Plank id={entryId} part='deck' order={index * 2 + 1} active={active} layoutMode={layoutMode} />\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 && <ToggleSidebarButton classNames={fixedSidebarToggleStyles} />}\n {!topbar && <ToggleComplementarySidebarButton classNames={fixedComplementarySidebarToggleStyles} />}\n <StackContext.Provider value={{ size: 'contain', orientation: 'horizontal', rail: true }}>\n <Plank id={solo} part='solo' layoutMode={layoutMode} />\n </StackContext.Provider>\n </div>\n </Main.Content>\n )}\n\n {/* Status bar. */}\n {topbar && <Topbar />}\n {hoistStatusbar && <StatusBar showHints={showHints} />}\n </Main.Root>\n )}\n\n {/* Global popovers. */}\n <Popover.Portal>\n <Popover.Content\n onEscapeKeyDown={() => {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n }}\n >\n <Popover.Viewport>\n <Surface role='popover' data={popoverContent} limit={1} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n\n {/* Global dialog. */}\n <Dialog.Root open={dialogOpen} onOpenChange={(nextOpen) => (context.dialogOpen = nextOpen)}>\n <Dialog.Overlay blockAlign={dialogBlockAlign}>\n <Surface role='dialog' data={dialogContent} limit={1} />\n </Dialog.Overlay>\n </Dialog.Root>\n\n {/* Global toasts. */}\n {toasts?.map((toast) => (\n <Toast\n {...toast}\n key={toast.id}\n onOpenChange={(open) => {\n if (!open) {\n onDismissToast(toast.id);\n }\n\n return open;\n }}\n />\n ))}\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface, useAppGraph } from '@dxos/app-framework';\nimport { useAttended } from '@dxos/react-ui-attention';\n\nimport { useNode, useNodeActionExpander } from '../../hooks';\n\n// TODO(burdon): Factor out to effect in plugin set document title.\nexport const ActiveNode = () => {\n const [id] = useAttended();\n const { graph } = 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 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Graph, type Node } from '@dxos/plugin-graph';\n\n/**\n * React hook to get a node from the graph.\n *\n * @param graph Graph to find the node in.\n * @param id Id of the node to find.\n * @param timeout Optional timeout in milliseconds to wait for the node to be found.\n * @returns Node if found, undefined otherwise.\n */\n// TODO(wittjosiah): Factor out.\nexport const useNode = <T = any>(graph: Graph, id?: string, timeout?: number): Node<T> | undefined => {\n const [nodeState, setNodeState] = useState<Node<T> | undefined>(id ? graph.findNode(id, false) : undefined);\n\n useEffect(() => {\n if (!id && nodeState) {\n setNodeState(undefined);\n }\n\n if (nodeState?.id === id || !id) {\n return;\n }\n\n // Set timeout did not seem to effectively not block the UI thread.\n const frame = requestAnimationFrame(async () => {\n try {\n const node = await graph.waitForNode(id, timeout);\n if (node) {\n setNodeState(node);\n }\n } catch {}\n });\n\n return () => cancelAnimationFrame(frame);\n }, [graph, id, timeout, nodeState?.id]);\n\n return nodeState;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { ACTION_GROUP_TYPE, ACTION_TYPE, getGraph, type Node } from '@dxos/plugin-graph';\n\nconst expandNodeActions = async (node: Node) => {\n const graph = getGraph(node);\n await graph.expand(node, 'outbound', ACTION_GROUP_TYPE);\n await graph.expand(node, 'outbound', ACTION_TYPE);\n};\n\nexport const useNodeActionExpander = (node?: Node) => {\n useEffect(() => {\n if (node) {\n const frame = requestAnimationFrame(() => {\n void expandNodeActions(node);\n });\n return () => cancelAnimationFrame(frame);\n }\n }, [node]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useMainContext } from '@dxos/react-ui';\n\nexport const useMainSize = () => {\n const { 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, { useCallback, useEffect, useMemo, useState, type MouseEvent } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n Surface,\n useAppGraph,\n useCapability,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { Main, useTranslation, toLocalizedString, IconButton, ScrollArea } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { PlankContentError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { ToggleComplementarySidebarButton } from './SidebarButton';\nimport { DeckCapabilities } from '../../capabilities';\nimport { useNode, useNodeActionExpander } from '../../hooks';\nimport { DECK_PLUGIN } from '../../meta';\nimport { SLUG_PATH_SEPARATOR, type Panel } from '../../types';\nimport { layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\n\nexport type ComplementarySidebarProps = {\n panels: Panel[];\n current?: string;\n};\n\nexport const ComplementarySidebar = ({ panels, current }: ComplementarySidebarProps) => {\n const layout = useCapability(DeckCapabilities.MutableDeckState);\n const attended = useAttended();\n const panelIds = useMemo(() => panels.map((panel) => panel.id), [panels]);\n const activePanelId = panelIds.find((panelId) => panelId === current) ?? panels[0].id;\n const activeEntryId = attended[0] ? `${attended[0]}${SLUG_PATH_SEPARATOR}${activePanelId}` : undefined;\n const { graph } = useAppGraph();\n const node = useNode(graph, activeEntryId);\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n useNodeActionExpander(node);\n const breakpoint = useBreakpoints();\n const topbar = layoutAppliesTopbar(breakpoint);\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n\n const [internalValue, setInternalValue] = useState(activePanelId);\n\n useEffect(() => {\n setInternalValue(activePanelId);\n }, [activePanelId]);\n\n const handleTabClick = useCallback(\n (event: MouseEvent) => {\n const nextValue = event.currentTarget.getAttribute('data-value') as string;\n if (nextValue === activePanelId) {\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, activePanelId, dispatch],\n );\n\n // TODO(burdon): Scroll area should be controlled by surface.\n return (\n <Main.ComplementarySidebar\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\n orientation='vertical'\n verticalVariant='stateless'\n value={internalValue}\n attendableId={attended[0]}\n classNames='contents'\n >\n <div\n role='none'\n className='absolute z-[1] inset-block-0 inline-end-0 !is-[--r0-size] 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 {panels.map((panel) => (\n <Tabs.Tab key={panel.id} value={panel.id} asChild>\n <IconButton\n label={toLocalizedString(panel.label, t)}\n icon={panel.icon}\n size={5}\n iconOnly\n tooltipSide='left'\n data-value={panel.id}\n variant={\n activePanelId === panel.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 {panels.map((panel) => (\n <Tabs.Tabpanel\n key={panel.id}\n value={panel.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]'\n {...(layout.complementarySidebarState !== 'expanded' && { inert: 'true' })}\n >\n {panel.id === activePanelId && node && (\n <>\n <h2 className='flex items-center pli-2 border-separator border-be'>\n {toLocalizedString(panel.label, t)}\n </h2>\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <Surface\n key={activeEntryId}\n role={`complementary--${activePanelId}`}\n data={{\n id: activeEntryId,\n subject: node.properties.object ?? node.properties.space,\n popoverAnchorId: layout.popoverAnchorId,\n }}\n fallback={PlankContentError}\n placeholder={<PlankLoading />}\n />\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {!hoistStatusbar && (\n <div\n role='contentinfo'\n className='flex flex-wrap justify-center items-center border-bs border-separator plb-1'\n >\n <Surface role='status-bar--r1-footer' limit={1} />\n </div>\n )}\n </>\n )}\n </Tabs.Tabpanel>\n ))}\n </Tabs.Root>\n </Main.ComplementarySidebar>\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 { NodePlankHeading, type NodePlankHeadingProps } from './NodePlankHeading';\nimport { PlankLoading } from './PlankLoading';\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const PlankContentError = ({ error }: { error?: Error }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const errorString = error?.toString() ?? '';\n return (\n <div role='none' className='overflow-auto p-8 attention-surface grid place-items-center'>\n <p\n role='alert'\n className={mx(\n descriptionText,\n 'break-words border border-dashed border-separator rounded-lg p-8',\n errorString.length < 256 && 'text-lg',\n )}\n >\n {error ? errorString : t('error fallback message')}\n </p>\n </div>\n );\n};\n\nexport const PlankError = ({\n id,\n part,\n node,\n error,\n}: {\n id: string;\n part: NodePlankHeadingProps['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 <NodePlankHeading 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 } from 'react';\n\nimport { createIntent, LayoutAction, Surface, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Node } from '@dxos/plugin-graph';\nimport { Icon, Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { StackItem, type StackItemSigilAction } from '@dxos/react-ui-stack';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\n\nimport { PlankControls } from './PlankControls';\nimport { DECK_PLUGIN } from '../../meta';\nimport { DeckAction, SLUG_PATH_SEPARATOR } from '../../types';\nimport { useBreakpoints } from '../../util';\nimport { soloInlinePadding } from '../fragments';\n\nexport type NodePlankHeadingProps = {\n id: string;\n part: 'solo' | 'deck' | 'complementary';\n node?: Node;\n canIncrementStart?: boolean;\n canIncrementEnd?: boolean;\n popoverAnchorId?: string;\n pending?: boolean;\n actions?: StackItemSigilAction[];\n};\n\nexport const NodePlankHeading = memo(\n ({\n id,\n part,\n node,\n canIncrementStart,\n canIncrementEnd,\n popoverAnchorId,\n pending,\n actions = [],\n }: NodePlankHeadingProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\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 const { dispatchPromise: dispatch } = useIntentDispatcher();\n const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${DECK_PLUGIN}/${node.id}` ? Popover.Anchor : Fragment;\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 // NOTE(Zan): Node ids may now contain a path like `${space}:${id}~comments`\n const attendableId = id.split(SLUG_PATH_SEPARATOR).at(0);\n const capabilities = useMemo(\n () => ({\n solo: breakpoint !== 'mobile' && (part === 'solo' || part === 'deck'),\n incrementStart: canIncrementStart,\n incrementEnd: canIncrementEnd,\n }),\n [breakpoint, part, canIncrementStart, canIncrementEnd],\n );\n\n const sigilActions = useMemo(\n () => node && [actions, graph.actions(node)].filter((a) => a.length > 0),\n [actions, node, 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 === '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 return (\n <StackItem.Heading\n classNames={[\n 'plb-1 border-be border-separator items-stretch gap-1 sticky inline-start-12 app-drag',\n part === 'solo' ? soloInlinePadding : 'pli-1',\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 {node && part !== 'complementary' && <Surface role='navbar-end' data={{ subject: node.data }} />}\n <PlankControls\n capabilities={capabilities}\n isSolo={part === 'solo'}\n onClick={handlePlankAction}\n close={part === 'complementary' ? 'minify-end' : true}\n />\n </StackItem.Heading>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef } from 'react';\n\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 { type DeckAction } from '../../types';\n\nexport type PlankControlHandler = (event: DeckAction.PartAdjustment) => void;\n\nexport type PlankCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n solo?: boolean;\n};\n\nexport type PlankControlsProps = Omit<ButtonGroupProps, 'onClick'> & {\n onClick?: PlankControlHandler;\n variant?: 'hide-disabled' | 'default';\n close?: boolean | 'minify-start' | 'minify-end';\n capabilities: PlankCapabilities;\n isSolo?: boolean;\n pin?: 'start' | 'end' | 'both';\n};\n\nconst PlankControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' {...props}>\n <span className='sr-only'>{label}</span>\n <Icon icon={icon} size={4} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>{label}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\n// TODO(wittjosiah): Duplicate of stack LayoutControls?\n// Translations were to be duplicated between packages.\n// NOTE(thure): Pinning & unpinning are disabled indefinitely.\nexport const PlankControls = forwardRef<HTMLDivElement, PlankControlsProps>(\n (\n { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, classNames, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden pli-2 plb-3' : 'pli-2 plb-3';\n\n return (\n <ButtonGroup {...props} classNames={['app-no-drag', classNames]} ref={forwardedRef}>\n {/* {pin && !isSolo && ['both', 'start'].includes(pin) && (\n <PlankControl\n label={t('pin start label')}\n variant='ghost'\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-start')}\n icon='ph--caret-line-left--regular'\n />\n )} */}\n\n {can.solo && (\n <PlankControl\n label={isSolo ? t('show deck plank label') : t('show solo plank label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('solo')}\n icon={isSolo ? 'ph--corners-in--regular' : 'ph--corners-out--regular'}\n />\n )}\n\n {!isSolo && can.solo && (\n <>\n <PlankControl\n label={t('increment start label')}\n disabled={!can.incrementStart}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-start')}\n icon='ph--caret-left--regular'\n />\n <PlankControl\n label={t('increment end label')}\n disabled={!can.incrementEnd}\n classNames={buttonClassNames}\n onClick={() => onClick?.('increment-end')}\n icon='ph--caret-right--regular'\n />\n </>\n )}\n\n {/* {pin && !isSolo && ['both', 'end'].includes(pin) && (\n <PlankControl\n label={t('pin end label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('pin-end')}\n icon='ph--caret-line-right--regular'\n />\n )} */}\n\n {close && !isSolo && (\n <PlankControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\n onClick={() => onClick?.('close')}\n data-testid='plankHeading.close'\n icon={\n close === 'minify-start'\n ? 'ph--caret-line-left--regular'\n : close === 'minify-end'\n ? 'ph--caret-line-right--regular'\n : 'ph--x--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { CSSProperties } from 'react';\n\n/**\n * ┌────────────────────────────────────────────────────────────────────────────────────────────────────┐\n * | Overscroll Padding Calculation for Centering Planks on Screen. │\n * ├────────────────────────────────────────────────────────────────────────────────────────────────────┤\n * │ NOTE(Zan): I found the way you calculate the overscroll padding to center a plank on the screen │\n * │ at the edges of the scroll context a bit confusing, so I've diagrammed it here. │\n * │ │\n * │ Multiple Planks: │\n * │ ─────────────── │\n * | Use the following overscroll padding calculation centering the boundary planks on the SCREEN. │\n * │ │\n * │ Left Padding: Right Padding: │\n * │ ┌───┬────┬──────────────────┬──────┐ ┌──────┬──────────────────┬────┬───┐ │\n * │ │ │████│ Ideal │ │ │ │ Ideal │████│ │ │\n * │ │ S │█PL█│ first │ │ │ │ last │█PR█│ C │ │\n * │ │ │████│ plank │ │ │ │ plank │████│ │ │\n * │ └───┴────┴──────────────────┴──────┘ └──────┴──────────────────┴────┴───┘ │\n * │ <--------- screen width -----------> <---------- screen width ----------> │\n * │ │\n * │ PL = ((screen width - Plank Width) / 2) - S │\n * │ PR = ((screen width - Plank Width) / 2) - C │\n * │ │\n * │ S = Sidebar width C = Complementary sidebar width │\n * │ PL = Padding Left PR = Padding Right │\n * │ │\n * │ Single Plank: │\n * │ ───────────── │\n * │ For a single plank we use the following overscroll padding calculation to center the plank in │\n * │ the content area: │\n * │ │\n * │ ┌───┬───────────────────────┬───┬───────────────────────┬───┐ │\n * │ │ │███████████████████████│ │███████████████████████│ │ │\n * │ │ S │█████ Left Padding ████│ P │████ Right Padding ████│ C │ │\n * │ │ │███████████████████████│ │███████████████████████│ │ │\n * │ └───┴───────────────────────┴───┴───────────────────────┴───┘ │\n * │ <------------------------ screen width ---------------------> │\n * │ │\n * │ Left/Right Padding Width = (screen width - S - P - C) / 2 │\n * │ │\n * │ S = Sidebar width (may be 0) │\n * │ P = Plank width (centered) │\n * │ C = Complementary sidebar width (may be 0) │\n * └────────────────────────────────────────────────────────────────────────────────────────────────────┘\n */\nexport const calculateOverscroll = (\n planksCount: number,\n): Pick<CSSProperties, 'paddingInlineStart' | 'paddingInlineEnd'> | undefined => {\n if (!planksCount) {\n return { paddingInlineStart: 0, paddingInlineEnd: 0 };\n }\n if (planksCount === 1) {\n const overscrollPadding =\n 'max(0px, calc(((100dvw - var(--dx-main-sidebarWidth) - var(--dx-main-complementaryWidth) - (var(--dx-main-contentFirstWidth) + 1px)) / 2)))';\n return { paddingInlineStart: overscrollPadding, paddingInlineEnd: overscrollPadding };\n } else {\n return {\n paddingInlineStart:\n 'max(0px, calc(((100dvw - (var(--dx-main-contentFirstWidth) + 1px)) / 2) - var(--dx-main-sidebarWidth)))',\n paddingInlineEnd:\n 'max(0px, calc(((100dvw - (var(--dx-main-contentLastWidth) + 1px)) / 2) - var(--dx-main-complementaryWidth)))',\n };\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMediaQuery } from '@dxos/react-ui';\n\nexport const useBreakpoints = () => {\n const [isNotMobile] = useMediaQuery('md');\n const [isDesktop] = useMediaQuery('lg');\n return isDesktop ? 'desktop' : isNotMobile ? 'tablet' : 'mobile';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const layoutAppliesTopbar = (breakpoint: string) => {\n return document.body.getAttribute('data-platform') === 'win' && breakpoint === 'desktop';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { Capabilities, useCapability } from '@dxos/app-framework';\n\nimport { DECK_PLUGIN } from '../meta';\nimport type { DeckSettingsProps } from '../types';\n\nexport const useHoistStatusbar = (breakpoint: string) => {\n const enableIdeStyleStatusbar = useCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)!\n .value.enableIdeStyleStatusbar;\n return useMemo(() => {\n return (\n breakpoint === 'desktop' &&\n enableIdeStyleStatusbar &&\n // NOTE(thure): this last predicate depends on a head script that measures `env(safe-area-bottom)` on resize;\n // see that of composer-app for an example.\n document.body.getAttribute('data-safe-area-bottom') === '0'\n );\n }, [enableIdeStyleStatusbar, breakpoint]);\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 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework';\n\nimport { ToggleSidebarButton } from './SidebarButton';\nimport { layoutAppliesTopbar, useBreakpoints } from '../../util';\nimport { fixedSidebarToggleStyles } from '../fragments';\n\nexport const ContentEmpty = () => {\n const breakpoint = useBreakpoints();\n const topbar = layoutAppliesTopbar(breakpoint);\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 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface, useAppGraph } from '@dxos/app-framework';\nimport { fixedInsetFlexLayout } from '@dxos/react-ui-theme';\n\nimport { Fallback } from './Fallback';\nimport { SURFACE_PREFIX } from './constants';\nimport { useNode } from '../../hooks';\n\nexport const Fullscreen = ({ id }: { id?: string }) => {\n const { graph } = useAppGraph();\n const fullScreenNode = useNode(graph, id);\n\n return (\n <div role='none' className={fixedInsetFlexLayout}>\n <Surface\n role='main'\n limit={1}\n fallback={Fallback}\n data={{\n subject: fullScreenNode?.data,\n component: id?.startsWith(SURFACE_PREFIX) ? id.slice(SURFACE_PREFIX.length) : undefined,\n }}\n />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { errorText, mx } from '@dxos/react-ui-theme';\n\nimport { DECK_PLUGIN } from '../../meta';\n\nexport const Fallback = () => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <div role='none' className='min-bs-screen is-full flex items-center justify-center p-8'>\n <p\n role='alert'\n className={mx(\n errorText,\n 'border border-error-400/50 rounded-lg flex items-center justify-center p-8 font-normal text-lg',\n )}\n >\n {t('plugin error message')}\n </p>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const NAV_ID = 'NavTree';\nexport const SURFACE_PREFIX = 'surface:';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, memo, useCallback, useLayoutEffect, useMemo, useRef } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n Surface,\n useCapability,\n useAppGraph,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { StackItem, railGridHorizontal } from '@dxos/react-ui-stack';\nimport { mainIntrinsicSize, mx } from '@dxos/react-ui-theme';\n\nimport { NodePlankHeading, type NodePlankHeadingProps } from './NodePlankHeading';\nimport { PlankContentError, PlankError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { DeckCapabilities } from '../../capabilities';\nimport { useNode, useMainSize } from '../../hooks';\nimport { DeckAction, type LayoutMode } from '../../types';\n\nconst UNKNOWN_ID = 'unknown_id';\n\nexport type PlankProps = {\n id?: string;\n part: NodePlankHeadingProps['part'];\n path?: string[];\n order?: number;\n active?: string[];\n layoutMode: LayoutMode;\n};\n\nexport const Plank = memo(({ id = UNKNOWN_ID, part, path, order, active, layoutMode }: PlankProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { deck, popoverAnchorId, scrollIntoView } = useCapability(DeckCapabilities.DeckState);\n const { graph } = useAppGraph();\n const node = useNode(graph, id);\n const rootElement = useRef<HTMLDivElement | null>(null);\n const canResize = layoutMode === 'deck';\n const Root = part === 'solo' ? 'article' : StackItem.Root;\n\n const attendableAttrs = useAttendableAttributes(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 size = deck.plankSizing[id] as number | undefined;\n const setSize = useCallback(\n debounce((nextSize: number) => {\n return dispatch(createIntent(DeckAction.UpdatePlankSize, { id, size: nextSize }));\n }, 200),\n [dispatch, id],\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 === 'solo' && part === 'solo';\n const isAttendable = isSolo || (layoutMode === 'deck' && part === 'deck');\n\n const sizeAttrs = useMainSize();\n\n const data = useMemo(\n () =>\n node && {\n subject: node.data,\n path,\n popoverAnchorId,\n },\n [node, node?.data, path, popoverAnchorId],\n );\n\n // TODO(wittjosiah): Change prop to accept a component.\n const placeholder = useMemo(() => <PlankLoading />, []);\n\n const className = mx(\n 'attention-surface relative',\n isSolo && mainIntrinsicSize,\n isSolo && railGridHorizontal,\n isSolo ? 'grid absolute inset-0' : '!border-separator border-li',\n );\n\n return (\n <Root\n ref={rootElement}\n data-testid='deck.plank'\n tabIndex={0}\n {...(part === 'solo'\n ? ({ ...sizeAttrs, className } as any)\n : {\n item: { id },\n size,\n onSizeChange: setSize,\n classNames: className,\n order,\n role: 'article',\n })}\n {...(isAttendable ? attendableAttrs : {})}\n onKeyDown={handleKeyDown}\n >\n {node ? (\n <>\n <NodePlankHeading\n id={id}\n part={part}\n node={node}\n canIncrementStart={canIncrementStart}\n canIncrementEnd={canIncrementEnd}\n popoverAnchorId={popoverAnchorId}\n />\n <Surface\n key={node.id}\n role='article'\n data={data}\n limit={1}\n fallback={PlankContentError}\n placeholder={placeholder}\n />\n </>\n ) : (\n <PlankError id={id} part={part} />\n )}\n {canResize && <StackItem.ResizeHandle />}\n </Root>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface, useCapability } from '@dxos/app-framework';\nimport { Main } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\nimport { layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\n\nexport const Sidebar = () => {\n const { popoverAnchorId, activeDeck: current } = useCapability(DeckCapabilities.DeckState);\n const breakpoint = useBreakpoints();\n const topbar = layoutAppliesTopbar(breakpoint);\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n\n const navigationData = useMemo(\n () => ({ popoverAnchorId, topbar, hoistStatusbar, current }),\n [popoverAnchorId, topbar, hoistStatusbar, current],\n );\n\n return (\n <Main.NavigationSidebar\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 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 toLocalizedString,\n useTranslation,\n type ToastRootProps,\n} from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../../meta';\n\n// TODO(wittjosiah): Render remaining duration as a progress bar within the toast.\nexport const Toast = ({\n id,\n title,\n description,\n icon,\n duration,\n actionLabel,\n actionAlt,\n closeLabel,\n onAction,\n onOpenChange,\n}: 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 NewPlankPositioning,\n NewPlankPositions,\n type DeckSettingsProps,\n type Overscroll,\n OverscrollOptions,\n} from '../types';\n\nconst isSocket = !!(globalThis as any).__args;\n\nexport const LayoutSettings = ({ settings }: { settings: DeckSettingsProps }) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('select new plank positioning label')}>\n <Select.Root\n value={settings.newPlankPositioning ?? 'start'}\n onValueChange={(value) => (settings.newPlankPositioning = value as NewPlankPositioning)}\n >\n <Select.TriggerButton placeholder={t('select new plank positioning placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {NewPlankPositions.map((position) => (\n <Select.Option key={position} value={position}>\n {t(`settings new plank position ${position} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings overscroll label')}>\n <Select.Root\n value={settings.overscroll ?? 'none'}\n onValueChange={(value) => (settings.overscroll = value as Overscroll)}\n >\n <Select.TriggerButton placeholder={t('select overscroll placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {OverscrollOptions.map((option) => (\n <Select.Option key={option} value={option}>\n {t(`settings overscroll ${option} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings show hints label')}>\n <Input.Switch checked={settings.showHints} onCheckedChange={(checked) => (settings.showHints = checked)} />\n </DeprecatedFormInput>\n {!isSocket && (\n <DeprecatedFormInput label={t('settings native redirect label')}>\n <Input.Switch\n checked={settings.enableNativeRedirect}\n onCheckedChange={(checked) => (settings.enableNativeRedirect = checked)}\n />\n </DeprecatedFormInput>\n )}\n <DeprecatedFormInput label={t('settings enable ide-style statusbar label')}>\n <Input.Switch\n checked={settings.enableIdeStyleStatusbar}\n onCheckedChange={(checked) => (settings.enableIdeStyleStatusbar = checked)}\n />\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "Surface", "mx", "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", "Banner", "variant", "classNames", "React", "header", "className", "mx", "CloseSidebarButton", "ToggleSidebarButton", "span", "div", "role", "Surface", "limit", "untracked", "React", "useCallback", "useEffect", "useMemo", "useRef", "Fragment", "LayoutAction", "createIntent", "Surface", "useCapability", "useIntentDispatcher", "usePluginManager", "AttentionCapabilities", "AlertDialog", "Dialog", "NaturalDialog", "Main", "Popover", "useOnTransition", "useMediaQuery", "Stack", "StackContext", "DEFAULT_HORIZONTAL_SIZE", "mainPaddingTransitions", "React", "Surface", "useAppGraph", "useAttended", "useEffect", "useState", "useNode", "graph", "id", "timeout", "nodeState", "setNodeState", "useState", "findNode", "undefined", "useEffect", "frame", "requestAnimationFrame", "node", "waitForNode", "cancelAnimationFrame", "useEffect", "ACTION_GROUP_TYPE", "ACTION_TYPE", "getGraph", "expandNodeActions", "node", "graph", "getGraph", "expand", "ACTION_GROUP_TYPE", "ACTION_TYPE", "useNodeActionExpander", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "useMainContext", "useMainSize", "navigationSidebarState", "complementarySidebarState", "useMainContext", "ActiveNode", "id", "useAttended", "graph", "useAppGraph", "activeNode", "useNode", "useNodeActionExpander", "React", "div", "role", "className", "Surface", "data", "subject", "limit", "React", "useCallback", "useEffect", "useMemo", "useState", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useCapability", "useIntentDispatcher", "Main", "useTranslation", "toLocalizedString", "IconButton", "ScrollArea", "useAttended", "Tabs", "React", "useEffect", "useState", "useTranslation", "descriptionText", "mx", "React", "Fragment", "memo", "useCallback", "useEffect", "useMemo", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useIntentDispatcher", "Icon", "Popover", "toLocalizedString", "useTranslation", "StackItem", "TextTooltip", "React", "forwardRef", "Button", "ButtonGroup", "Icon", "Tooltip", "useTranslation", "PlankControl", "icon", "label", "props", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "span", "className", "Icon", "size", "Portal", "Content", "side", "PlankControls", "forwardRef", "onClick", "capabilities", "can", "isSolo", "pin", "close", "children", "classNames", "forwardedRef", "t", "useTranslation", "DECK_PLUGIN", "buttonClassNames", "ButtonGroup", "ref", "solo", "disabled", "incrementStart", "incrementEnd", "data-testid", "calculateOverscroll", "planksCount", "paddingInlineStart", "paddingInlineEnd", "overscrollPadding", "useMediaQuery", "useBreakpoints", "isNotMobile", "useMediaQuery", "isDesktop", "layoutAppliesTopbar", "breakpoint", "document", "body", "getAttribute", "useMemo", "Capabilities", "useCapability", "useHoistStatusbar", "breakpoint", "enableIdeStyleStatusbar", "useCapability", "Capabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "useMemo", "document", "body", "getAttribute", "mx", "soloInlinePadding", "sidebarToggleStyles", "fixedSidebarToggleStyles", "mx", "fixedComplementarySidebarToggleStyles", "NodePlankHeading", "memo", "id", "part", "node", "canIncrementStart", "canIncrementEnd", "popoverAnchorId", "pending", "actions", "t", "useTranslation", "DECK_PLUGIN", "graph", "useAppGraph", "breakpoint", "useBreakpoints", "icon", "properties", "label", "toLocalizedString", "ns", "dispatchPromise", "dispatch", "useIntentDispatcher", "ActionRoot", "Popover", "Anchor", "Fragment", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "attendableId", "split", "SLUG_PATH_SEPARATOR", "at", "capabilities", "useMemo", "solo", "incrementStart", "incrementEnd", "sigilActions", "filter", "a", "length", "handleAction", "useCallback", "action", "data", "caller", "handlePlankAction", "eventType", "createIntent", "DeckAction", "Adjust", "type", "LayoutAction", "UpdateComplementary", "options", "state", "Close", "subject", "React", "StackItem", "Heading", "classNames", "soloInlinePadding", "Sigil", "related", "triggerLabel", "onAction", "Surface", "role", "SigilButton", "span", "className", "Icon", "size", "TextTooltip", "text", "onlyWhenTruncating", "HeadingLabel", "PlankControls", "isSolo", "onClick", "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", "NodePlankHeading", "pending", "PlankLoading", "ComplementarySidebar", "panels", "current", "layout", "useCapability", "DeckCapabilities", "MutableDeckState", "attended", "useAttended", "panelIds", "useMemo", "map", "panel", "id", "activePanelId", "find", "panelId", "activeEntryId", "SLUG_PATH_SEPARATOR", "undefined", "graph", "useAppGraph", "node", "useNode", "t", "useTranslation", "DECK_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "useNodeActionExpander", "breakpoint", "useBreakpoints", "topbar", "layoutAppliesTopbar", "hoistStatusbar", "useHoistStatusbar", "internalValue", "setInternalValue", "useState", "useEffect", "handleTabClick", "useCallback", "event", "nextValue", "currentTarget", "getAttribute", "complementarySidebarState", "createIntent", "LayoutAction", "UpdateComplementary", "part", "subject", "React", "Main", "classNames", "Tabs", "Root", "orientation", "verticalVariant", "value", "attendableId", "div", "role", "className", "Tablist", "Tab", "key", "asChild", "IconButton", "label", "toLocalizedString", "icon", "size", "iconOnly", "tooltipSide", "data-value", "variant", "onClick", "Surface", "limit", "ToggleComplementarySidebarButton", "Tabpanel", "inert", "h2", "ScrollArea", "Viewport", "data", "properties", "object", "space", "popoverAnchorId", "fallback", "PlankContentError", "placeholder", "PlankLoading", "Scrollbar", "Thumb", "React", "Surface", "ContentEmpty", "breakpoint", "useBreakpoints", "topbar", "layoutAppliesTopbar", "React", "div", "role", "className", "data-testid", "Surface", "ToggleSidebarButton", "variant", "classNames", "fixedSidebarToggleStyles", "React", "Surface", "useAppGraph", "fixedInsetFlexLayout", "React", "useTranslation", "errorText", "mx", "Fallback", "t", "useTranslation", "DECK_PLUGIN", "React", "div", "role", "className", "p", "mx", "errorText", "SURFACE_PREFIX", "Fullscreen", "id", "graph", "useAppGraph", "fullScreenNode", "useNode", "React", "div", "role", "className", "fixedInsetFlexLayout", "Surface", "limit", "fallback", "Fallback", "data", "subject", "component", "startsWith", "SURFACE_PREFIX", "slice", "length", "undefined", "React", "memo", "useCallback", "useLayoutEffect", "useMemo", "useRef", "createIntent", "LayoutAction", "Surface", "useCapability", "useAppGraph", "useIntentDispatcher", "debounce", "useAttendableAttributes", "StackItem", "railGridHorizontal", "mainIntrinsicSize", "mx", "UNKNOWN_ID", "Plank", "memo", "id", "part", "path", "order", "active", "layoutMode", "dispatchPromise", "dispatch", "useIntentDispatcher", "deck", "popoverAnchorId", "scrollIntoView", "useCapability", "DeckCapabilities", "DeckState", "graph", "useAppGraph", "node", "useNode", "rootElement", "useRef", "canResize", "Root", "StackItem", "attendableAttrs", "useAttendableAttributes", "index", "findIndex", "entryId", "length", "canIncrementStart", "undefined", "canIncrementEnd", "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", "placeholder", "React", "PlankLoading", "className", "mx", "mainIntrinsicSize", "railGridHorizontal", "ref", "data-testid", "tabIndex", "item", "onSizeChange", "classNames", "role", "onKeyDown", "NodePlankHeading", "Surface", "limit", "fallback", "PlankContentError", "PlankError", "ResizeHandle", "React", "useMemo", "Surface", "useCapability", "Main", "Sidebar", "popoverAnchorId", "activeDeck", "current", "useCapability", "DeckCapabilities", "DeckState", "breakpoint", "useBreakpoints", "topbar", "layoutAppliesTopbar", "hoistStatusbar", "useHoistStatusbar", "navigationData", "useMemo", "React", "Main", "NavigationSidebar", "classNames", "Surface", "role", "data", "limit", "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", "index", "React", "span", "role", "className", "style", "gridColumn", "DeckLayout", "overscroll", "showHints", "panels", "onDismissToast", "dispatchPromise", "dispatch", "useIntentDispatcher", "context", "useCapability", "DeckCapabilities", "MutableDeckState", "sidebarState", "complementarySidebarState", "complementarySidebarPanel", "dialogOpen", "dialogContent", "dialogBlockAlign", "dialogType", "popoverOpen", "popoverContent", "popoverAnchorId", "deck", "toasts", "active", "fullscreen", "solo", "plankSizing", "breakpoint", "useBreakpoints", "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", "getMode", "createIntent", "LayoutAction", "SetLayoutMode", "part", "subject", "options", "mode", "revert", "handleResize", "useCallback", "window", "addEventListener", "removeEventListener", "restoreScroll", "scrollLeft", "layoutMode", "useOnTransition", "handleScroll", "event", "currentTarget", "target", "isEmpty", "padding", "useMemo", "calculateOverscroll", "mainPosition", "Dialog", "AlertDialog", "NaturalDialog", "Popover", "Root", "modal", "open", "onOpenChange", "nextOpen", "undefined", "ActiveNode", "Fullscreen", "id", "Main", "navigationSidebarState", "onNavigationSidebarStateChange", "next", "onComplementarySidebarStateChange", "Sidebar", "ComplementarySidebar", "Overlay", "Content", "bounce", "handlesFocus", "classNames", "ContentEmpty", "DEFAULT_HORIZONTAL_SIZE", "div", "inert", "ToggleSidebarButton", "fixedSidebarToggleStyles", "ToggleComplementarySidebarButton", "fixedComplementarySidebarToggleStyles", "Stack", "orientation", "size", "mainPaddingTransitions", "onScroll", "itemsCount", "ref", "map", "entryId", "Fragment", "key", "Plank", "order", "StackContext", "Provider", "value", "rail", "Topbar", "StatusBar", "Portal", "onEscapeKeyDown", "Viewport", "Surface", "data", "limit", "Arrow", "blockAlign", "toast", "Toast", "React", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "isSocket", "globalThis", "__args", "LayoutSettings", "settings", "t", "useTranslation", "DECK_PLUGIN", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Select", "Root", "value", "newPlankPositioning", "onValueChange", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "NewPlankPositions", "map", "position", "Option", "key", "overscroll", "OverscrollOptions", "option", "Input", "Switch", "checked", "showHints", "onCheckedChange", "enableNativeRedirect", "enableIdeStyleStatusbar"]
|
|
7
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// packages/plugins/plugin-deck/src/capabilities/index.ts
|
|
2
|
-
import { lazy } from "@dxos/app-framework";
|
|
3
|
-
var AppGraphBuilder = lazy(() => import("./app-graph-builder-CI6ZFMNL.mjs"));
|
|
4
|
-
var CheckAppScheme = lazy(() => import("./check-app-scheme-S3EYUPMF.mjs"));
|
|
5
|
-
var LayoutIntentResolver = lazy(() => import("./intent-resolver-CSXFDKTC.mjs"));
|
|
6
|
-
var ReactRoot = lazy(() => import("./react-root-HIHLRMCW.mjs"));
|
|
7
|
-
var ReactSurface = lazy(() => import("./react-surface-4QVWKQYY.mjs"));
|
|
8
|
-
var DeckSettings = lazy(() => import("./settings-WACNLCPB.mjs"));
|
|
9
|
-
var DeckState = lazy(() => import("./state-VPOYUKK6.mjs"));
|
|
10
|
-
var Tools = lazy(() => import("./tools-5LDJNU56.mjs"));
|
|
11
|
-
var UrlHandler = lazy(() => import("./url-handler-HLF42IHP.mjs"));
|
|
12
|
-
|
|
13
|
-
export {
|
|
14
|
-
AppGraphBuilder,
|
|
15
|
-
CheckAppScheme,
|
|
16
|
-
LayoutIntentResolver,
|
|
17
|
-
ReactRoot,
|
|
18
|
-
ReactSurface,
|
|
19
|
-
DeckSettings,
|
|
20
|
-
DeckState,
|
|
21
|
-
Tools,
|
|
22
|
-
UrlHandler
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=chunk-FZOBKOA2.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { LayoutAction } from '@dxos/app-framework';\nimport { S } from '@dxos/echo-schema';\nimport { type Label } from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from './meta';\n\n// TODO(Zan): In the future we should consider adding new planks adjacent to the attended plank.\nexport const NewPlankPositions = ['start', 'end'] as const;\nexport type NewPlankPositioning = (typeof NewPlankPositions)[number];\n\nexport const OverscrollOptions = ['none', 'centering'] as const;\nexport type Overscroll = (typeof OverscrollOptions)[number];\n\n// TODO(wittjosiah): Include a predicate for whether the panel is visible for the current subject.\nexport type Panel = { id: string; label: Label; icon: string };\n\nexport const DeckSettingsSchema = S.mutable(\n S.Struct({\n showHints: S.Boolean,\n enableNativeRedirect: S.Boolean,\n enableIdeStyleStatusbar: S.Boolean,\n newPlankPositioning: S.Literal(...NewPlankPositions),\n overscroll: S.Literal(...OverscrollOptions),\n }),\n);\n\nexport type DeckSettingsProps = S.Schema.Type<typeof DeckSettingsSchema>;\n\nconst LayoutMode = S.Union(S.Literal('deck'), S.Literal('solo'), S.Literal('fullscreen'));\nexport const isLayoutMode = (value: any): value is LayoutMode => S.is(LayoutMode)(value);\nexport type LayoutMode = S.Schema.Type<typeof LayoutMode>;\n\nexport const PlankSizing = S.Record({ key: S.String, value: S.Number });\nexport type PlankSizing = S.Schema.Type<typeof PlankSizing>;\n\nexport const Deck = S.Struct({\n initialized: S.Boolean.annotations({\n description: \"If false, the deck has not yet left solo mode and new planks should be solo'd.\",\n }),\n active: S.mutable(S.Array(S.String)),\n inactive: S.mutable(S.Array(S.String)),\n solo: S.optional(S.String),\n fullscreen: S.Boolean,\n plankSizing: S.mutable(PlankSizing),\n});\nexport type Deck = S.Schema.Type<typeof Deck>;\n\nexport const DeckState = S.mutable(\n S.Struct({\n sidebarState: S.Literal('closed', 'collapsed', 'expanded'),\n complementarySidebarState: S.Literal('closed', 'collapsed', 'expanded'),\n complementarySidebarPanel: S.optional(S.String),\n\n dialogOpen: S.Boolean,\n /**\n * Data to be passed to the dialog Surface.\n */\n dialogContent: S.optional(S.Any),\n dialogBlockAlign: S.optional(S.Literal('start', 'center')),\n dialogType: S.optional(S.Literal('default', 'alert')),\n\n popoverOpen: S.Boolean,\n /**\n * Data to be passed to the popover Surface.\n */\n popoverContent: S.optional(S.Any),\n popoverAnchorId: S.optional(S.String),\n\n toasts: S.mutable(S.Array(LayoutAction.Toast)),\n currentUndoId: S.optional(S.String),\n\n activeDeck: S.String,\n decks: S.mutable(S.Record({ key: S.String, value: S.mutable(Deck) })),\n previousMode: S.mutable(S.Record({ key: S.String, value: LayoutMode })),\n deck: S.mutable(Deck),\n\n /**\n * The identifier of a component to scroll into view when it is mounted.\n */\n scrollIntoView: S.optional(S.String),\n }),\n);\n\nexport type DeckState = S.Schema.Type<typeof DeckState>;\n\nexport const getMode = (deck: Deck): LayoutMode => {\n if (deck.solo) {\n return deck.fullscreen ? 'fullscreen' : 'solo';\n }\n\n return 'deck';\n};\n\n// NOTE: Chosen from RFC 1738’s `safe` characters: http://www.faqs.org/rfcs/rfc1738.html\nexport const SLUG_PATH_SEPARATOR = '~';\n\nexport const DECK_ACTION = `${DECK_PLUGIN}/action`;\n\nexport namespace DeckAction {\n const PartAdjustmentSchema = S.Union(\n S.Literal('close').annotations({ description: 'Close the plank.' }),\n S.Literal('solo').annotations({ description: 'Solo the plank.' }),\n S.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n S.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n );\n export type PartAdjustment = S.Schema.Type<typeof PartAdjustmentSchema>;\n export const Adjustment = S.mutable(S.Struct({ id: S.String, type: PartAdjustmentSchema }));\n export type Adjustment = S.Schema.Type<typeof Adjustment>;\n\n /**\n * An atomic transaction to apply to the deck, describing which element to move to which location.\n */\n export class Adjust extends S.TaggedClass<Adjust>()(`${DECK_ACTION}/adjust`, {\n input: Adjustment,\n output: S.Void,\n }) {}\n\n export class UpdatePlankSize extends S.TaggedClass<UpdatePlankSize>()(`${DECK_ACTION}/update-plank-size`, {\n input: S.Struct({\n id: S.String,\n size: S.Number,\n }),\n output: S.Void,\n }) {}\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["LayoutAction", "S", "NewPlankPositions", "OverscrollOptions", "DeckSettingsSchema", "S", "mutable", "Struct", "showHints", "Boolean", "enableNativeRedirect", "enableIdeStyleStatusbar", "newPlankPositioning", "Literal", "overscroll", "LayoutMode", "Union", "isLayoutMode", "value", "is", "PlankSizing", "Record", "key", "String", "Number", "Deck", "initialized", "annotations", "description", "active", "Array", "inactive", "solo", "optional", "fullscreen", "plankSizing", "DeckState", "sidebarState", "complementarySidebarState", "complementarySidebarPanel", "dialogOpen", "dialogContent", "Any", "dialogBlockAlign", "dialogType", "popoverOpen", "popoverContent", "popoverAnchorId", "toasts", "LayoutAction", "Toast", "currentUndoId", "activeDeck", "decks", "previousMode", "deck", "scrollIntoView", "getMode", "SLUG_PATH_SEPARATOR", "DECK_ACTION", "DECK_PLUGIN", "DeckAction", "PartAdjustmentSchema", "Adjustment", "id", "type", "Adjust", "TaggedClass", "input", "output", "Void", "UpdatePlankSize", "size"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/intent-resolver.ts", "../../../src/capabilities/set-active.ts", "../../../src/layout.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 { isReactiveObject } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { nonNullable } from '@dxos/util';\n\nimport { DeckCapabilities } from './capabilities';\nimport { setActive } from './set-active';\nimport { closeEntry, incrementPlank, openEntry } from '../layout';\nimport { DECK_PLUGIN } from '../meta';\nimport { DeckAction, type LayoutMode, type DeckSettingsProps, isLayoutMode, getMode } from '../types';\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 = subject ? { component: subject, props: options.props } : null;\n layout.popoverAnchorId = options.anchorId;\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 === 'solo' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]\n ).filter(nonNullable);\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 === 'solo' && next[0]) {\n deck.solo = next[0];\n } else if (mode !== 'solo' && deck.solo) {\n deck.solo = undefined;\n deck.initialized = true;\n }\n\n if (mode === 'fullscreen' && !deck.fullscreen) {\n deck.fullscreen = true;\n } else if (mode !== 'fullscreen' && deck.fullscreen) {\n deck.fullscreen = false;\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 state.activeDeck = subject;\n if (!state.decks[subject]) {\n state.decks[subject] = { initialized: false, active: [], inactive: [], fullscreen: false, plankSizing: {} };\n }\n });\n\n const first = state.decks[state.activeDeck].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.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[])\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 }),\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((id) => {\n const active = graph?.findNode(id)?.data;\n const typename = isReactiveObject(active) ? getTypename(active) : undefined;\n return createIntent(ObservabilityAction.SendEvent, {\n name: 'navigation.activate',\n properties: {\n id,\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 next = subject.reduce((acc, id) => closeEntry(acc, id), state.deck.active);\n const toAttend = setActive({ next, 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.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.Adjust,\n resolve: (adjustment) => {\n const state = context.requestCapability(DeckCapabilities.MutableDeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\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 === '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: 'solo' },\n }),\n ],\n };\n } else {\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// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\n\nimport { type AttentionManager } from '@dxos/plugin-attention';\n\nimport { type DeckState } from '../types';\n\nexport type SetActiveOptions = {\n next: string[];\n state: DeckState;\n attention?: AttentionManager;\n};\n\nexport const setActive = ({ next, state, attention }: SetActiveOptions) => {\n return batch(() => {\n const active = state.deck.solo ? [state.deck.solo] : state.deck.active;\n const removed = active.filter((id) => !next.includes(id));\n const closed = Array.from(new Set([...state.deck.inactive.filter((id) => !next.includes(id)), ...removed]));\n\n state.deck.inactive = closed;\n\n if (state.deck.solo || !state.deck.initialized) {\n state.deck.solo = next[0];\n } else {\n state.deck.active = next;\n }\n\n if (attention) {\n const attended = attention.current;\n const [attendedId] = Array.from(attended);\n const isAttendedAvailable = !!attendedId && next.includes(attendedId);\n if (!isAttendedAvailable) {\n const attendedIndex = active.indexOf(attendedId);\n // If outside of bounds, focus on the first/last plank, otherwise focus on the new plank in the same position.\n const index = attendedIndex === -1 ? 0 : attendedIndex >= next.length ? next.length - 1 : attendedIndex;\n return next[index];\n }\n }\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { produce } from 'immer';\n\nimport { type DeckAction, type NewPlankPositioning } from './types';\n\ntype OpenLayoutEntryOptions = { key?: string; positioning?: NewPlankPositioning; pivotId?: string };\n\nexport const openEntry = (deck: string[], entryId: string, options?: OpenLayoutEntryOptions): string[] => {\n return produce(deck, (draft) => {\n // Check that the entry is not already in the part\n if (draft.find((id) => id === entryId)) {\n return;\n }\n\n const key = options?.key;\n const plankPositioning = options?.positioning ?? 'start';\n const pivotId = options?.pivotId;\n\n if (key) {\n const index = draft.findIndex((id) => id.startsWith(key));\n if (index !== -1) {\n draft.splice(index, 1, entryId);\n return;\n }\n }\n\n if (pivotId) {\n const pivotIndex = draft.findIndex((id) => id === pivotId);\n if (pivotIndex !== -1) {\n if (plankPositioning === 'start') {\n draft.splice(pivotIndex, 0, entryId);\n } else {\n draft.splice(pivotIndex + 1, 0, entryId);\n }\n return;\n }\n }\n\n // If no pivot found or provided, fall back to original behavior\n if (plankPositioning === 'start') {\n draft.unshift(entryId);\n } else {\n draft.push(entryId);\n }\n });\n};\n\nexport const closeEntry = (deck: string[], entryId: string): string[] => {\n return produce(deck, (draft) => {\n const index = draft.findIndex((id) => id === entryId);\n if (index !== -1) {\n draft.splice(index, 1);\n }\n });\n};\n\nexport const incrementPlank = (deck: string[], adjustment: DeckAction.Adjustment): string[] => {\n return produce(deck, (draft) => {\n const index = draft.findIndex((id) => id === adjustment.id);\n if (\n index === -1 ||\n (adjustment.type === 'increment-start' && index === 0) ||\n (adjustment.type === 'increment-end' && index === draft.length - 1)\n ) {\n return;\n }\n\n if (adjustment.type === 'increment-start') {\n // Swap the current item with the previous item.\n [draft[index - 1], draft[index]] = [draft[index], draft[index - 1]];\n } else if (adjustment.type === 'increment-end') {\n // Swap the current item with the next item.\n [draft[index], draft[index + 1]] = [draft[index + 1], draft[index]];\n }\n });\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["batch", "pipe", "Capabilities", "createResolver", "contributes", "IntentAction", "LayoutAction", "createIntent", "chain", "getTypename", "S", "isReactiveObject", "log", "AttentionCapabilities", "ObservabilityAction", "nonNullable", "batch", "setActive", "next", "state", "attention", "batch", "active", "deck", "solo", "removed", "filter", "id", "includes", "closed", "Array", "from", "Set", "inactive", "initialized", "attended", "current", "attendedId", "isAttendedAvailable", "attendedIndex", "indexOf", "index", "length", "produce", "openEntry", "deck", "entryId", "options", "produce", "draft", "find", "id", "key", "plankPositioning", "positioning", "pivotId", "index", "findIndex", "startsWith", "splice", "pivotIndex", "unshift", "push", "closeEntry", "incrementPlank", "adjustment", "type", "length", "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", "popoverAnchorId", "anchorId", "AddToast", "push", "SetLayoutMode", "isLayoutMode", "mode", "setMode", "deck", "current", "solo", "active", "nonNullable", "removed", "includes", "closed", "Array", "from", "Set", "inactive", "undefined", "initialized", "fullscreen", "batch", "getMode", "previousMode", "activeDeck", "last", "log", "warn", "SwitchWorkspace", "decks", "plankSizing", "first", "intents", "createIntent", "ScrollIntoView", "part", "Open", "graph", "AppGraph", "attention", "AttentionCapabilities", "Attention", "settings", "requestCapabilities", "SettingsStore", "getStore", "value", "previouslyOpenIds", "reduce", "acc", "entryId", "openEntry", "key", "positioning", "newPlankPositioning", "pivotId", "setActive", "ids", "newlyOpen", "i", "has", "scrollIntoView", "Expose", "map", "findNode", "typename", "isReactiveObject", "getTypename", "ObservabilityAction", "SendEvent", "name", "properties", "Close", "closeEntry", "toAttend", "DeckAction", "UpdatePlankSize", "size", "Adjust", "adjustment", "incrementPlank", "pipe", "chain"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-root.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, contributes, useCapabilities, useCapability } from '@dxos/app-framework';\n\nimport { DeckCapabilities } from './capabilities';\nimport { DeckLayout } from '../components';\nimport { DECK_PLUGIN } from '../meta';\nimport { type DeckSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactRoot, {\n id: DECK_PLUGIN,\n root: () => {\n const layout = useCapability(DeckCapabilities.MutableDeckState);\n const settings = useCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)!.value;\n const panels = useCapabilities(DeckCapabilities.ComplementaryPanel);\n\n const handleDismissToast = useCallback(\n (id: string) => {\n const index = layout.toasts.findIndex((toast) => toast.id === id);\n if (index !== -1) {\n // Allow time for the toast to animate out.\n // TODO(burdon): Factor out and unregister timeout.\n setTimeout(() => {\n if (layout.toasts[index].id === layout.currentUndoId) {\n layout.currentUndoId = undefined;\n }\n layout.toasts.splice(index, 1);\n }, 1_000);\n }\n },\n [layout.toasts],\n );\n\n return (\n <DeckLayout\n showHints={settings.showHints}\n overscroll={settings.overscroll}\n panels={panels}\n onDismissToast={handleDismissToast}\n />\n );\n },\n });\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAASC,cAAcC,aAAaC,iBAAiBC,qBAAqB;AAO1E,IAAA,qBAAe,MACbC,YAAYC,aAAaC,WAAW;EAClCC,IAAIC;EACJC,MAAM,MAAA;AACJ,UAAMC,SAASC,cAAcC,iBAAiBC,gBAAgB;AAC9D,UAAMC,WAAWH,cAAcN,aAAaU,aAAa,EAAEC,SAA4BR,WAAAA,EAAcS;AACrG,UAAMC,SAASC,gBAAgBP,iBAAiBQ,kBAAkB;AAElE,UAAMC,qBAAqBC,YACzB,CAACf,OAAAA;AACC,YAAMgB,QAAQb,OAAOc,OAAOC,UAAU,CAACC,UAAUA,MAAMnB,OAAOA,EAAAA;AAC9D,UAAIgB,UAAU,IAAI;AAGhBI,mBAAW,MAAA;AACT,cAAIjB,OAAOc,OAAOD,KAAAA,EAAOhB,OAAOG,OAAOkB,eAAe;AACpDlB,mBAAOkB,gBAAgBC;UACzB;AACAnB,iBAAOc,OAAOM,OAAOP,OAAO,CAAA;QAC9B,GAAG,GAAA;MACL;IACF,GACA;MAACb,OAAOc;KAAO;AAGjB,WACE,sBAAA,cAACO,YAAAA;MACCC,WAAWlB,SAASkB;MACpBC,YAAYnB,SAASmB;MACrBf;MACAgB,gBAAgBb;;EAGtB;AACF,CAAA;",
|
|
6
|
-
"names": ["React", "useCallback", "Capabilities", "contributes", "useCapabilities", "useCapability", "contributes", "Capabilities", "ReactRoot", "id", "DECK_PLUGIN", "root", "layout", "useCapability", "DeckCapabilities", "MutableDeckState", "settings", "SettingsStore", "getStore", "value", "panels", "useCapabilities", "ComplementaryPanel", "handleDismissToast", "useCallback", "index", "toasts", "findIndex", "toast", "setTimeout", "currentUndoId", "undefined", "splice", "DeckLayout", "showHints", "overscroll", "onDismissToast"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/state.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { create } from '@dxos/live-object';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { type SidebarState } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from './capabilities';\nimport { DECK_PLUGIN } from '../meta';\nimport { getMode, type Deck, type DeckState } from '../types';\n\nconst boolean = /true|false/;\n\n// TODO(thure, 18 Feb 2025): Remove after the next release.\n\nconst migrateSidebarStateDefaults = {\n [`${DECK_PLUGIN}/complementary-sidebar-state`]: 'expanded',\n [`${DECK_PLUGIN}/sidebar-state`]: 'collapsed',\n};\n\nconst migrateSidebarState = () => {\n Object.entries(migrateSidebarStateDefaults).forEach(([key, defaultValue]) => {\n if (boolean.test(localStorage.getItem(key) ?? 'never')) {\n localStorage.setItem(key, defaultValue);\n }\n });\n};\n\nexport default () => {\n migrateSidebarState();\n\n const state = new LocalStorageStore<DeckState>(DECK_PLUGIN, {\n sidebarState: 'expanded',\n complementarySidebarState: 'collapsed',\n complementarySidebarPanel: undefined,\n dialogContent: null,\n dialogOpen: false,\n dialogBlockAlign: undefined,\n dialogType: undefined,\n popoverContent: null,\n popoverAnchorId: undefined,\n popoverOpen: false,\n toasts: [],\n currentUndoId: undefined,\n activeDeck: 'default',\n decks: {\n default: {\n initialized: false,\n active: [],\n inactive: [],\n fullscreen: false,\n solo: undefined,\n plankSizing: {},\n },\n },\n get deck() {\n const deck = this.decks[this.activeDeck];\n invariant(deck, `Deck not found: ${this.activeDeck}`);\n return deck;\n },\n previousMode: {},\n scrollIntoView: undefined,\n });\n\n state\n .prop({ key: 'sidebarState', type: LocalStorageStore.enum<SidebarState>() })\n .prop({ key: 'complementarySidebarState', type: LocalStorageStore.enum<SidebarState>() })\n .prop({ key: 'decks', type: LocalStorageStore.json<Record<string, Deck>>() })\n .prop({ key: 'activeDeck', type: LocalStorageStore.string() });\n\n const layout = create<Capabilities.Layout>({\n get mode() {\n return getMode(state.values.deck);\n },\n get dialogOpen() {\n return state.values.dialogOpen;\n },\n get sidebarOpen() {\n return state.values.sidebarState === 'expanded';\n },\n get complementarySidebarOpen() {\n return state.values.complementarySidebarState === 'expanded';\n },\n get active() {\n return state.values.deck.solo ? [state.values.deck.solo] : state.values.deck.active;\n },\n get inactive() {\n return state.values.deck.inactive;\n },\n get scrollIntoView() {\n return state.values.scrollIntoView;\n },\n });\n\n return [\n contributes(DeckCapabilities.DeckState, state.values, () => state.close()),\n contributes(Capabilities.Layout, layout),\n ];\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,SAASC,yBAAyB;;AAOlC,IAAMC,UAAU;AAIhB,IAAMC,8BAA8B;EAClC,CAAC,GAAGC,WAAAA,8BAAyC,GAAG;EAChD,CAAC,GAAGA,WAAAA,gBAA2B,GAAG;AACpC;AAEA,IAAMC,sBAAsB,MAAA;AAC1BC,SAAOC,QAAQJ,2BAAAA,EAA6BK,QAAQ,CAAC,CAACC,KAAKC,YAAAA,MAAa;AACtE,QAAIR,QAAQS,KAAKC,aAAaC,QAAQJ,GAAAA,KAAQ,OAAA,GAAU;AACtDG,mBAAaE,QAAQL,KAAKC,YAAAA;IAC5B;EACF,CAAA;AACF;AAEA,IAAA,gBAAe,MAAA;AACbL,sBAAAA;AAEA,QAAMU,QAAQ,IAAIC,kBAA6BZ,aAAa;IAC1Da,cAAc;IACdC,2BAA2B;IAC3BC,2BAA2BC;IAC3BC,eAAe;IACfC,YAAY;IACZC,kBAAkBH;IAClBI,YAAYJ;IACZK,gBAAgB;IAChBC,iBAAiBN;IACjBO,aAAa;IACbC,QAAQ,CAAA;IACRC,eAAeT;IACfU,YAAY;IACZC,OAAO;MACLC,SAAS;QACPC,aAAa;QACbC,QAAQ,CAAA;QACRC,UAAU,CAAA;QACVC,YAAY;QACZC,MAAMjB;QACNkB,aAAa,CAAC;MAChB;IACF;IACA,IAAIC,OAAO;AACT,YAAMA,OAAO,KAAKR,MAAM,KAAKD,UAAU;AACvCU,gBAAUD,MAAM,mBAAmB,KAAKT,UAAU,IAAE;;;;;;;;;AACpD,aAAOS;IACT;IACAE,cAAc,CAAC;IACfC,gBAAgBtB;EAClB,CAAA;AAEAL,QACG4B,KAAK;IAAElC,KAAK;IAAgBmC,MAAM5B,kBAAkB6B,KAAI;EAAiB,CAAA,EACzEF,KAAK;IAAElC,KAAK;IAA6BmC,MAAM5B,kBAAkB6B,KAAI;EAAiB,CAAA,EACtFF,KAAK;IAAElC,KAAK;IAASmC,MAAM5B,kBAAkB8B,KAAI;EAAyB,CAAA,EAC1EH,KAAK;IAAElC,KAAK;IAAcmC,MAAM5B,kBAAkB+B,OAAM;EAAG,CAAA;AAE9D,QAAMC,SAASC,OAA4B;IACzC,IAAIC,OAAO;AACT,aAAOC,QAAQpC,MAAMqC,OAAOb,IAAI;IAClC;IACA,IAAIjB,aAAa;AACf,aAAOP,MAAMqC,OAAO9B;IACtB;IACA,IAAI+B,cAAc;AAChB,aAAOtC,MAAMqC,OAAOnC,iBAAiB;IACvC;IACA,IAAIqC,2BAA2B;AAC7B,aAAOvC,MAAMqC,OAAOlC,8BAA8B;IACpD;IACA,IAAIgB,SAAS;AACX,aAAOnB,MAAMqC,OAAOb,KAAKF,OAAO;QAACtB,MAAMqC,OAAOb,KAAKF;UAAQtB,MAAMqC,OAAOb,KAAKL;IAC/E;IACA,IAAIC,WAAW;AACb,aAAOpB,MAAMqC,OAAOb,KAAKJ;IAC3B;IACA,IAAIO,iBAAiB;AACnB,aAAO3B,MAAMqC,OAAOV;IACtB;EACF,CAAA;AAEA,SAAO;IACLa,YAAYC,iBAAiBC,WAAW1C,MAAMqC,QAAQ,MAAMrC,MAAM2C,MAAK,CAAA;IACvEH,YAAYI,aAAaC,QAAQZ,MAAAA;;AAErC;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "invariant", "create", "LocalStorageStore", "boolean", "migrateSidebarStateDefaults", "DECK_PLUGIN", "migrateSidebarState", "Object", "entries", "forEach", "key", "defaultValue", "test", "localStorage", "getItem", "setItem", "state", "LocalStorageStore", "sidebarState", "complementarySidebarState", "complementarySidebarPanel", "undefined", "dialogContent", "dialogOpen", "dialogBlockAlign", "dialogType", "popoverContent", "popoverAnchorId", "popoverOpen", "toasts", "currentUndoId", "activeDeck", "decks", "default", "initialized", "active", "inactive", "fullscreen", "solo", "plankSizing", "deck", "invariant", "previousMode", "scrollIntoView", "prop", "type", "enum", "json", "string", "layout", "create", "mode", "getMode", "values", "sidebarOpen", "complementarySidebarOpen", "contributes", "DeckCapabilities", "DeckState", "close", "Capabilities", "Layout"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/tools.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n contributes,\n createIntent,\n Capabilities,\n LayoutAction,\n type PromiseIntentDispatcher,\n} from '@dxos/app-framework';\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport { S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n dispatch?: PromiseIntentDispatcher;\n pivotId?: string;\n }\n}\n\nexport default () =>\n contributes(Capabilities.Tools, [\n defineTool({\n name: 'show',\n // TODO(ZaymonFC): We should update the prompt to teach the LLM the difference between object ids and fully qualified ids.\n description:\n 'Show an item in the app. Use this tool to open an artifact. When supplying IDs to show, they must be fully qualified like space:object.',\n // TODO(wittjosiah): Refactor Layout/Navigation/Deck actions so that they can be used directly.\n schema: S.Struct({\n id: S.String.annotations({\n description: 'The ID of the item to show.',\n }),\n pivotId: S.optional(\n S.String.annotations({\n description: 'The ID of the chat. If provided, the item will be added after the pivot item.',\n }),\n ),\n }),\n execute: async ({ id }, { extensions }) => {\n invariant(extensions?.dispatch, 'No intent dispatcher');\n const { data, error } = await extensions.dispatch(\n createIntent(LayoutAction.Open, {\n subject: [id],\n part: 'main',\n options: {\n pivotId: extensions.pivotId,\n positioning: 'end',\n },\n }),\n );\n if (error) {\n return ToolResult.Error(error.message);\n }\n\n return ToolResult.Success(data);\n },\n }),\n ]);\n"],
|
|
5
|
-
"mappings": ";AAIA,SACEA,aACAC,cACAC,cACAC,oBAEK;AACP,SAASC,YAAYC,kBAAkB;AACvC,SAASC,SAAS;AAClB,SAASC,iBAAiB;;AAU1B,IAAA,gBAAe,MACbP,YAAYE,aAAaM,OAAO;EAC9BJ,WAAW;IACTK,MAAM;;IAENC,aACE;;IAEFC,QAAQL,EAAEM,OAAO;MACfC,IAAIP,EAAEQ,OAAOC,YAAY;QACvBL,aAAa;MACf,CAAA;MACAM,SAASV,EAAEW,SACTX,EAAEQ,OAAOC,YAAY;QACnBL,aAAa;MACf,CAAA,CAAA;IAEJ,CAAA;IACAQ,SAAS,OAAO,EAAEL,GAAE,GAAI,EAAEM,WAAU,MAAE;AACpCZ,gBAAUY,YAAYC,UAAU,wBAAA;;;;;;;;;AAChC,YAAM,EAAEC,MAAMC,MAAK,IAAK,MAAMH,WAAWC,SACvCnB,aAAaE,aAAaoB,MAAM;QAC9BC,SAAS;UAACX;;QACVY,MAAM;QACNC,SAAS;UACPV,SAASG,WAAWH;UACpBW,aAAa;QACf;MACF,CAAA,CAAA;AAEF,UAAIL,OAAO;AACT,eAAOjB,WAAWuB,MAAMN,MAAMO,OAAO;MACvC;AAEA,aAAOxB,WAAWyB,QAAQT,IAAAA;IAC5B;EACF,CAAA;CACD;",
|
|
6
|
-
"names": ["contributes", "createIntent", "Capabilities", "LayoutAction", "defineTool", "ToolResult", "S", "invariant", "Tools", "name", "description", "schema", "Struct", "id", "String", "annotations", "pivotId", "optional", "execute", "extensions", "dispatch", "data", "error", "Open", "subject", "part", "options", "positioning", "Error", "message", "Success"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set-active.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/set-active.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,SAAS,+BAAgC,gBAAgB,uBA0BrE,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|