@dxos/plugin-deck 0.8.0 → 0.8.1-main.a06ad20

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.
Files changed (70) hide show
  1. package/dist/lib/browser/{chunk-OEDK54N2.mjs → chunk-63K74E3J.mjs} +10 -8
  2. package/dist/lib/browser/chunk-63K74E3J.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-J65MNI4S.mjs → chunk-ATPSUXXK.mjs} +6 -6
  4. package/dist/lib/browser/{chunk-FT33W5CI.mjs → chunk-FYKBOM3C.mjs} +2 -2
  5. package/dist/lib/browser/chunk-FYKBOM3C.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-KANJBSIX.mjs → chunk-YCKJNTKG.mjs} +4 -4
  7. package/dist/lib/browser/{chunk-KANJBSIX.mjs.map → chunk-YCKJNTKG.mjs.map} +3 -3
  8. package/dist/lib/browser/index.mjs +4 -4
  9. package/dist/lib/browser/index.mjs.map +2 -2
  10. package/dist/lib/browser/{intent-resolver-ZD67BRUI.mjs → intent-resolver-P5BVUQKU.mjs} +3 -3
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/{react-root-2T6BCRK4.mjs → react-root-ZQCTDM4Y.mjs} +5 -5
  13. package/dist/lib/browser/{react-surface-GFMOJSIA.mjs → react-surface-RG3PVPY3.mjs} +5 -5
  14. package/dist/lib/browser/{settings-H35U6NHE.mjs → settings-X3P2HKQJ.mjs} +3 -3
  15. package/dist/lib/browser/{settings-H35U6NHE.mjs.map → settings-X3P2HKQJ.mjs.map} +3 -3
  16. package/dist/lib/browser/{state-U4SHOPJW.mjs → state-2MOTLKVR.mjs} +2 -2
  17. package/dist/lib/browser/types.mjs +1 -1
  18. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  19. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  20. package/dist/types/src/components/DeckLayout/ActiveNode.d.ts +2 -1
  21. package/dist/types/src/components/DeckLayout/ActiveNode.d.ts.map +1 -1
  22. package/dist/types/src/components/DeckLayout/Banner.d.ts +2 -1
  23. package/dist/types/src/components/DeckLayout/Banner.d.ts.map +1 -1
  24. package/dist/types/src/components/DeckLayout/ComplementarySidebar.d.ts +2 -1
  25. package/dist/types/src/components/DeckLayout/ComplementarySidebar.d.ts.map +1 -1
  26. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts +2 -1
  27. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
  28. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts +2 -1
  29. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
  30. package/dist/types/src/components/DeckLayout/Fallback.d.ts +2 -1
  31. package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +1 -1
  32. package/dist/types/src/components/DeckLayout/Fullscreen.d.ts +2 -1
  33. package/dist/types/src/components/DeckLayout/Fullscreen.d.ts.map +1 -1
  34. package/dist/types/src/components/DeckLayout/NodePlankHeading.d.ts +1 -1
  35. package/dist/types/src/components/DeckLayout/NodePlankHeading.d.ts.map +1 -1
  36. package/dist/types/src/components/DeckLayout/Plank.d.ts +1 -1
  37. package/dist/types/src/components/DeckLayout/Plank.d.ts.map +1 -1
  38. package/dist/types/src/components/DeckLayout/PlankError.d.ts +3 -2
  39. package/dist/types/src/components/DeckLayout/PlankError.d.ts.map +1 -1
  40. package/dist/types/src/components/DeckLayout/PlankLoading.d.ts +2 -1
  41. package/dist/types/src/components/DeckLayout/PlankLoading.d.ts.map +1 -1
  42. package/dist/types/src/components/DeckLayout/Sidebar.d.ts +2 -1
  43. package/dist/types/src/components/DeckLayout/Sidebar.d.ts.map +1 -1
  44. package/dist/types/src/components/DeckLayout/SidebarButton.d.ts +4 -3
  45. package/dist/types/src/components/DeckLayout/SidebarButton.d.ts.map +1 -1
  46. package/dist/types/src/components/DeckLayout/StatusBar.d.ts +2 -1
  47. package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +1 -1
  48. package/dist/types/src/components/DeckLayout/Toast.d.ts +2 -1
  49. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  50. package/dist/types/src/components/DeckLayout/Topbar.d.ts +2 -1
  51. package/dist/types/src/components/DeckLayout/Topbar.d.ts.map +1 -1
  52. package/dist/types/src/components/LayoutSettings.d.ts +2 -1
  53. package/dist/types/src/components/LayoutSettings.d.ts.map +1 -1
  54. package/dist/types/src/translations.d.ts +1 -1
  55. package/dist/types/src/types.d.ts +11 -11
  56. package/dist/types/src/types.d.ts.map +1 -1
  57. package/package.json +30 -30
  58. package/src/capabilities/settings.ts +1 -1
  59. package/src/components/DeckLayout/DeckLayout.tsx +3 -2
  60. package/src/components/LayoutSettings.tsx +3 -3
  61. package/src/translations.ts +3 -3
  62. package/src/types.ts +1 -1
  63. package/src/util/useHoistStatusbar.ts +4 -4
  64. package/dist/lib/browser/chunk-FT33W5CI.mjs.map +0 -7
  65. package/dist/lib/browser/chunk-OEDK54N2.mjs.map +0 -7
  66. /package/dist/lib/browser/{chunk-J65MNI4S.mjs.map → chunk-ATPSUXXK.mjs.map} +0 -0
  67. /package/dist/lib/browser/{intent-resolver-ZD67BRUI.mjs.map → intent-resolver-P5BVUQKU.mjs.map} +0 -0
  68. /package/dist/lib/browser/{react-root-2T6BCRK4.mjs.map → react-root-ZQCTDM4Y.mjs.map} +0 -0
  69. /package/dist/lib/browser/{react-surface-GFMOJSIA.mjs.map → react-surface-RG3PVPY3.mjs.map} +0 -0
  70. /package/dist/lib/browser/{state-U4SHOPJW.mjs.map → state-2MOTLKVR.mjs.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  layoutAppliesTopbar,
4
4
  useBreakpoints,
5
5
  useHoistStatusbar
6
- } from "./chunk-KANJBSIX.mjs";
6
+ } from "./chunk-YCKJNTKG.mjs";
7
7
  import {
8
8
  DeckCapabilities
9
9
  } from "./chunk-22AQ5IVX.mjs";
@@ -13,7 +13,7 @@ import {
13
13
  OverscrollOptions,
14
14
  SLUG_PATH_SEPARATOR,
15
15
  getMode
16
- } from "./chunk-FT33W5CI.mjs";
16
+ } from "./chunk-FYKBOM3C.mjs";
17
17
  import {
18
18
  DECK_PLUGIN
19
19
  } from "./chunk-N7TEPFVR.mjs";
@@ -1056,13 +1056,15 @@ var DeckLayout = ({ overscroll, showHints, onDismissToast }) => {
1056
1056
  }, dialogBlockAlign === "end" ? /* @__PURE__ */ React17.createElement(Surface10, {
1057
1057
  role: "dialog",
1058
1058
  data: dialogContent,
1059
- limit: 1
1059
+ limit: 1,
1060
+ fallback: PlankContentError
1060
1061
  }) : /* @__PURE__ */ React17.createElement(Dialog.Overlay, {
1061
1062
  blockAlign: dialogBlockAlign
1062
1063
  }, /* @__PURE__ */ React17.createElement(Surface10, {
1063
1064
  role: "dialog",
1064
1065
  data: dialogContent,
1065
- limit: 1
1066
+ limit: 1,
1067
+ fallback: PlankContentError
1066
1068
  }))), toasts?.map((toast) => /* @__PURE__ */ React17.createElement(Toast, {
1067
1069
  ...toast,
1068
1070
  key: toast.id,
@@ -1113,10 +1115,10 @@ var LayoutSettings = ({ settings }) => {
1113
1115
  checked: settings.enableNativeRedirect,
1114
1116
  onCheckedChange: (checked) => settings.enableNativeRedirect = checked
1115
1117
  })), /* @__PURE__ */ React18.createElement(DeprecatedFormInput, {
1116
- label: t("settings enable ide-style statusbar label")
1118
+ label: t("settings enable statusbar label")
1117
1119
  }, /* @__PURE__ */ React18.createElement(Input.Switch, {
1118
- checked: settings.enableIdeStyleStatusbar,
1119
- onCheckedChange: (checked) => settings.enableIdeStyleStatusbar = checked
1120
+ checked: settings.enableStatusbar,
1121
+ onCheckedChange: (checked) => settings.enableStatusbar = checked
1120
1122
  })));
1121
1123
  };
1122
1124
 
@@ -1125,4 +1127,4 @@ export {
1125
1127
  DeckLayout,
1126
1128
  LayoutSettings
1127
1129
  };
1128
- //# sourceMappingURL=chunk-OEDK54N2.mjs.map
1130
+ //# sourceMappingURL=chunk-63K74E3J.mjs.map
@@ -0,0 +1,7 @@
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/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, useState } 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 } from './ComplementarySidebar';\nimport { ContentEmpty } from './ContentEmpty';\nimport { Fullscreen } from './Fullscreen';\nimport { Plank } from './Plank';\nimport { PlankContentError } from './PlankError';\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};\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, 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 // TODO(thure): This is a workaround for the difference in `React`ion time between displaying a Popover and rendering\n // the anchor further down the tree. Refactor to use VirtualTrigger or some other approach which does not cause a lag.\n const [delayedPopoverVisibility, setDelayedPopoverVisibility] = useState(false);\n useEffect(() => {\n popoverOpen ? setTimeout(() => setDelayedPopoverVisibility(true), 40) : setDelayedPopoverVisibility(false);\n }, [popoverOpen]);\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 const handlePopoverOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (nextOpen && popoverAnchorId) {\n context.popoverOpen = true;\n } else {\n context.popoverOpen = false;\n context.popoverAnchorId = undefined;\n context.popoverSide = undefined;\n }\n },\n [context],\n );\n const handlePopoverClose = useCallback(() => handlePopoverOpenChange(false), [handlePopoverOpenChange]);\n\n return (\n <Popover.Root modal open={!!(popoverAnchorId && delayedPopoverVisibility)} onOpenChange={handlePopoverOpenChange}>\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 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 side={context.popoverSide} onEscapeKeyDown={handlePopoverClose}>\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 {/* TODO(thure): End block alignment affecting `modal` and whether the surface renders in an overlay is tailored\n to the needs of the ambient chat dialog. As the feature matures, consider separating concerns. */}\n <Dialog.Root\n modal={dialogBlockAlign !== 'end'}\n open={dialogOpen}\n onOpenChange={(nextOpen) => (context.dialogOpen = nextOpen)}\n >\n {dialogBlockAlign === 'end' ? (\n <Surface role='dialog' data={dialogContent} limit={1} fallback={PlankContentError} />\n ) : (\n <Dialog.Overlay blockAlign={dialogBlockAlign}>\n <Surface role='dialog' data={dialogContent} limit={1} fallback={PlankContentError} />\n </Dialog.Overlay>\n )}\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 // TODO(ZaymonFC): This leaves the resolved node in an invalid state in the case of a timeout.\n }\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, {\n type PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type MouseEvent,\n Fragment,\n} from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n Surface,\n useAppGraph,\n useCapabilities,\n useCapability,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport {\n Main,\n useTranslation,\n toLocalizedString,\n IconButton,\n ScrollArea as NaturalScrollArea,\n type Label,\n} from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { byPosition } from '@dxos/util';\n\nimport { PlankContentError } from './PlankError';\nimport { PlankLoading } from './PlankLoading';\nimport { ToggleComplementarySidebarButton } from './SidebarButton';\nimport { DeckCapabilities } from '../../capabilities';\nimport { useNode } from '../../hooks';\nimport { DECK_PLUGIN } from '../../meta';\nimport { type Panel } from '../../types';\nimport { layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\n\nexport type ComplementarySidebarProps = {\n current?: string;\n};\n\nconst label = ['complementary sidebar title', { ns: DECK_PLUGIN }] satisfies Label;\n\nexport const ComplementarySidebar = ({ current }: ComplementarySidebarProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const layout = useCapability(DeckCapabilities.MutableDeckState);\n const attended = useAttended();\n const { graph } = useAppGraph();\n const node = useNode(graph, attended[0]);\n const breakpoint = useBreakpoints();\n const topbar = layoutAppliesTopbar(breakpoint);\n const hoistStatusbar = useHoistStatusbar(breakpoint);\n\n const panels = useCapabilities(DeckCapabilities.ComplementaryPanel);\n const availablePanels = panels\n .filter((panel) => {\n if (!node || !panel.filter) {\n return true;\n }\n\n return panel.filter(node);\n })\n .toSorted(byPosition);\n const activePanelId = availablePanels.find((panel) => panel.id === current)?.id ?? availablePanels[0]?.id;\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 const data = useMemo(\n () =>\n node && {\n id: node.id,\n subject: node.data,\n workspace: layout.activeDeck,\n popoverAnchorId: layout.popoverAnchorId,\n },\n [node, layout.popoverAnchorId],\n );\n\n // TODO(burdon): Scroll area should be controlled by surface.\n return (\n <Main.ComplementarySidebar\n label={label}\n classNames={[\n topbar && 'block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'block-end-[--statusbar-size]',\n ]}\n >\n <Tabs.Root\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] pbs-[env(safe-area-inset-top)] pbe-[env(safe-area-inset-bottom)] border-is border-separator grid grid-cols-1 grid-rows-[1fr_min-content] bg-baseSurface contain-layout app-drag'\n >\n <Tabs.Tablist classNames='grid grid-cols-1 auto-rows-[--rail-action] p-1 gap-1 !overflow-y-auto'>\n {availablePanels.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 {availablePanels.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] pbs-[env(safe-area-inset-top)]'\n {...(layout.complementarySidebarState !== 'expanded' && { inert: 'true' })}\n >\n <ComplementarySidebarPanel\n panel={panel}\n activePanelId={activePanelId}\n data={data}\n hoistStatusbar={hoistStatusbar}\n />\n </Tabs.Tabpanel>\n ))}\n </Tabs.Root>\n </Main.ComplementarySidebar>\n );\n};\n\ntype ComplementarySidebarPanelProps = {\n panel: Panel;\n activePanelId: string;\n data?: {\n id: string;\n subject: any;\n workspace: string;\n popoverAnchorId?: string;\n };\n hoistStatusbar: boolean;\n};\n\nconst ScrollArea = ({ children }: PropsWithChildren) => {\n return (\n <NaturalScrollArea.Root>\n <NaturalScrollArea.Viewport>{children}</NaturalScrollArea.Viewport>\n <NaturalScrollArea.Scrollbar orientation='vertical'>\n <NaturalScrollArea.Thumb />\n </NaturalScrollArea.Scrollbar>\n </NaturalScrollArea.Root>\n );\n};\n\nconst ComplementarySidebarPanel = ({ panel, activePanelId, data, hoistStatusbar }: ComplementarySidebarPanelProps) => {\n const { t } = useTranslation(DECK_PLUGIN);\n\n if (panel.id !== activePanelId || !data) {\n return null;\n }\n\n const Wrapper = panel.fixed ? Fragment : ScrollArea;\n\n return (\n <>\n <h2 className='flex items-center pli-2 border-separator border-be font-medium'>\n {toLocalizedString(panel.label, t)}\n </h2>\n <Wrapper>\n <Surface\n role={`complementary--${activePanelId}`}\n data={data}\n fallback={PlankContentError}\n placeholder={<PlankLoading />}\n />\n </Wrapper>\n {!hoistStatusbar && (\n <div\n role='contentinfo'\n className='flex flex-wrap justify-center items-center border-bs border-separator pbs-1 pbe-[max(env(safe-area-inset-bottom),0.25rem)]'\n >\n <Surface role='status-bar--r1-footer' limit={1} />\n </div>\n )}\n </>\n );\n};\n", "//\n// Copyright 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={5} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>{label}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\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 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 key = id.split('+')[0];\n const size = deck.plankSizing[key] as number | undefined;\n const setSize = useCallback(\n debounce((nextSize: number) => {\n return dispatch(createIntent(DeckAction.UpdatePlankSize, { id: key, size: nextSize }));\n }, 200),\n [dispatch, key],\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 { type Label, Main } from '@dxos/react-ui';\n\nimport { DeckCapabilities } from '../../capabilities';\nimport { DECK_PLUGIN } from '../../meta';\nimport { layoutAppliesTopbar, useBreakpoints, useHoistStatusbar } from '../../util';\n\nconst label = ['sidebar title', { ns: DECK_PLUGIN }] satisfies Label;\n\nexport const Sidebar = () => {\n const { popoverAnchorId, activeDeck: current } = 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 label={label}\n classNames={[\n 'grid',\n topbar && 'block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]',\n hoistStatusbar && 'block-end-[--statusbar-size]',\n ]}\n >\n <Surface role='navigation' data={navigationData} limit={1} />\n </Main.NavigationSidebar>\n );\n};\n", "//\n// Copyright 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 statusbar label')}>\n <Input.Switch\n checked={settings.enableStatusbar}\n onCheckedChange={(checked) => (settings.enableStatusbar = 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", "useState", "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", "Fragment", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useCapabilities", "useCapability", "useIntentDispatcher", "Main", "useTranslation", "toLocalizedString", "IconButton", "ScrollArea", "NaturalScrollArea", "useAttended", "Tabs", "byPosition", "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", "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", "label", "ns", "DECK_PLUGIN", "ComplementarySidebar", "current", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "layout", "useCapability", "DeckCapabilities", "MutableDeckState", "attended", "useAttended", "graph", "useAppGraph", "node", "useNode", "breakpoint", "useBreakpoints", "topbar", "layoutAppliesTopbar", "hoistStatusbar", "useHoistStatusbar", "panels", "useCapabilities", "ComplementaryPanel", "availablePanels", "filter", "panel", "toSorted", "byPosition", "activePanelId", "find", "id", "internalValue", "setInternalValue", "useState", "useEffect", "handleTabClick", "useCallback", "event", "nextValue", "currentTarget", "getAttribute", "complementarySidebarState", "createIntent", "LayoutAction", "UpdateComplementary", "part", "subject", "data", "useMemo", "workspace", "activeDeck", "popoverAnchorId", "React", "Main", "classNames", "Tabs", "Root", "orientation", "verticalVariant", "value", "attendableId", "div", "role", "className", "Tablist", "map", "Tab", "key", "asChild", "IconButton", "toLocalizedString", "icon", "size", "iconOnly", "tooltipSide", "data-value", "variant", "onClick", "Surface", "limit", "ToggleComplementarySidebarButton", "Tabpanel", "inert", "ComplementarySidebarPanel", "ScrollArea", "children", "NaturalScrollArea", "Viewport", "Scrollbar", "Thumb", "Wrapper", "fixed", "Fragment", "h2", "fallback", "PlankContentError", "placeholder", "PlankLoading", "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", "key", "split", "size", "plankSizing", "setSize", "useCallback", "debounce", "nextSize", "createIntent", "DeckAction", "UpdatePlankSize", "handleKeyDown", "event", "target", "currentTarget", "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", "label", "ns", "DECK_PLUGIN", "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", "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", "delayedPopoverVisibility", "setDelayedPopoverVisibility", "useState", "useEffect", "setTimeout", "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", "handlePopoverOpenChange", "nextOpen", "undefined", "popoverSide", "handlePopoverClose", "Popover", "Root", "modal", "open", "onOpenChange", "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", "side", "onEscapeKeyDown", "Viewport", "Surface", "data", "limit", "Arrow", "fallback", "PlankContentError", "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", "enableStatusbar"]
7
+ }
@@ -2,11 +2,11 @@
2
2
  import { lazy } from "@dxos/app-framework";
3
3
  var AppGraphBuilder = lazy(() => import("./app-graph-builder-IYHAGFA3.mjs"));
4
4
  var CheckAppScheme = lazy(() => import("./check-app-scheme-S3EYUPMF.mjs"));
5
- var LayoutIntentResolver = lazy(() => import("./intent-resolver-ZD67BRUI.mjs"));
6
- var ReactRoot = lazy(() => import("./react-root-2T6BCRK4.mjs"));
7
- var ReactSurface = lazy(() => import("./react-surface-GFMOJSIA.mjs"));
8
- var DeckSettings = lazy(() => import("./settings-H35U6NHE.mjs"));
9
- var DeckState = lazy(() => import("./state-U4SHOPJW.mjs"));
5
+ var LayoutIntentResolver = lazy(() => import("./intent-resolver-P5BVUQKU.mjs"));
6
+ var ReactRoot = lazy(() => import("./react-root-ZQCTDM4Y.mjs"));
7
+ var ReactSurface = lazy(() => import("./react-surface-RG3PVPY3.mjs"));
8
+ var DeckSettings = lazy(() => import("./settings-X3P2HKQJ.mjs"));
9
+ var DeckState = lazy(() => import("./state-2MOTLKVR.mjs"));
10
10
  var Tools = lazy(() => import("./tools-64LXGLYR.mjs"));
11
11
  var UrlHandler = lazy(() => import("./url-handler-MVHTKUYA.mjs"));
12
12
 
@@ -21,4 +21,4 @@ export {
21
21
  Tools,
22
22
  UrlHandler
23
23
  };
24
- //# sourceMappingURL=chunk-J65MNI4S.mjs.map
24
+ //# sourceMappingURL=chunk-ATPSUXXK.mjs.map
@@ -16,7 +16,7 @@ var OverscrollOptions = [
16
16
  var DeckSettingsSchema = S.mutable(S.Struct({
17
17
  showHints: S.Boolean,
18
18
  enableNativeRedirect: S.Boolean,
19
- enableIdeStyleStatusbar: S.Boolean,
19
+ enableStatusbar: S.Boolean,
20
20
  newPlankPositioning: S.Literal(...NewPlankPositions),
21
21
  overscroll: S.Literal(...OverscrollOptions)
22
22
  }));
@@ -125,4 +125,4 @@ export {
125
125
  DECK_ACTION,
126
126
  DeckAction
127
127
  };
128
- //# sourceMappingURL=chunk-FT33W5CI.mjs.map
128
+ //# sourceMappingURL=chunk-FYKBOM3C.mjs.map
@@ -0,0 +1,7 @@
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 Node } from '@dxos/plugin-graph';\nimport { type Label } from '@dxos/react-ui';\nimport { type Position } from '@dxos/util';\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\nexport type Panel = {\n id: string;\n label: Label;\n icon: string;\n position?: Position;\n /**\n * If true, the panel will now be wrapped in a scroll area.\n */\n fixed?: boolean;\n filter?: (node: Node) => boolean;\n};\n\nexport const DeckSettingsSchema = S.mutable(\n S.Struct({\n showHints: S.Boolean,\n enableNativeRedirect: S.Boolean,\n enableStatusbar: 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', 'end')),\n dialogType: S.optional(S.Literal('default', 'alert')),\n\n popoverOpen: S.Boolean,\n popoverSide: S.optional(S.Literal('top', 'right', 'bottom', 'left')),\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 previousDeck: 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", "enableStatusbar", "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", "popoverSide", "popoverContent", "popoverAnchorId", "toasts", "LayoutAction", "Toast", "currentUndoId", "activeDeck", "previousDeck", "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
+ }
@@ -76,12 +76,12 @@ import { useMemo } from "react";
76
76
  import { Capabilities, useCapability } from "@dxos/app-framework";
77
77
  import { useThemeContext } from "@dxos/react-ui";
78
78
  var useHoistStatusbar = (breakpoint) => {
79
- const enableIdeStyleStatusbar = useCapability(Capabilities.SettingsStore).getStore(DECK_PLUGIN).value.enableIdeStyleStatusbar;
79
+ const enableStatusbar = useCapability(Capabilities.SettingsStore).getStore(DECK_PLUGIN).value.enableStatusbar;
80
80
  const { safeAreaPadding } = useThemeContext();
81
81
  return useMemo(() => {
82
- return breakpoint === "desktop" && enableIdeStyleStatusbar && safeAreaPadding?.bottom === 0;
82
+ return breakpoint === "desktop" && enableStatusbar && safeAreaPadding?.bottom === 0;
83
83
  }, [
84
- enableIdeStyleStatusbar,
84
+ enableStatusbar,
85
85
  breakpoint,
86
86
  safeAreaPadding?.bottom
87
87
  ]);
@@ -94,4 +94,4 @@ export {
94
94
  layoutAppliesTopbar,
95
95
  useHoistStatusbar
96
96
  };
97
- //# sourceMappingURL=chunk-KANJBSIX.mjs.map
97
+ //# sourceMappingURL=chunk-YCKJNTKG.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/set-active.ts", "../../../src/util/overscroll.ts", "../../../src/util/useBreakpoints.ts", "../../../src/util/layoutAppliesTopbar.ts", "../../../src/util/useHoistStatusbar.ts"],
4
- "sourcesContent": ["//\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 (state.deck.fullscreen && !state.deck.solo) {\n state.deck.fullscreen = false;\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 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';\nimport { useThemeContext } from '@dxos/react-ui';\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 const { safeAreaPadding } = useThemeContext();\n return useMemo(() => {\n return breakpoint === 'desktop' && enableIdeStyleStatusbar && safeAreaPadding?.bottom === 0;\n }, [enableIdeStyleStatusbar, breakpoint, safeAreaPadding?.bottom]);\n};\n"],
5
- "mappings": ";;;;;AAIA,SAASA,aAAa;AAYf,IAAMC,YAAY,CAAC,EAAEC,MAAMC,OAAOC,UAAS,MAAoB;AACpE,SAAOC,MAAM,MAAA;AACX,UAAMC,SAASH,MAAMI,KAAKC,OAAO;MAACL,MAAMI,KAAKC;QAAQL,MAAMI,KAAKD;AAChE,UAAMG,UAAUH,OAAOI,OAAO,CAACC,OAAO,CAACT,KAAKU,SAASD,EAAAA,CAAAA;AACrD,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIb,MAAMI,KAAKU,SAASP,OAAO,CAACC,OAAO,CAACT,KAAKU,SAASD,EAAAA,CAAAA;SAASF;KAAQ,CAAA;AAEzGN,UAAMI,KAAKU,WAAWJ;AAEtB,QAAIV,MAAMI,KAAKC,QAAQ,CAACL,MAAMI,KAAKW,aAAa;AAC9Cf,YAAMI,KAAKC,OAAON,KAAK,CAAA;IACzB,OAAO;AACLC,YAAMI,KAAKD,SAASJ;IACtB;AAEA,QAAIC,MAAMI,KAAKY,cAAc,CAAChB,MAAMI,KAAKC,MAAM;AAC7CL,YAAMI,KAAKY,aAAa;IAC1B;AAEA,QAAIf,WAAW;AACb,YAAMgB,WAAWhB,UAAUiB;AAC3B,YAAM,CAACC,UAAAA,IAAcR,MAAMC,KAAKK,QAAAA;AAChC,YAAMG,sBAAsB,CAAC,CAACD,cAAcpB,KAAKU,SAASU,UAAAA;AAC1D,UAAI,CAACC,qBAAqB;AACxB,cAAMC,gBAAgBlB,OAAOmB,QAAQH,UAAAA;AAErC,cAAMI,QAAQF,kBAAkB,KAAK,IAAIA,iBAAiBtB,KAAKyB,SAASzB,KAAKyB,SAAS,IAAIH;AAC1F,eAAOtB,KAAKwB,KAAAA;MACd;IACF;EACF,CAAA;AACF;;;ACIO,IAAME,sBAAsB,CACjCC,gBAAAA;AAEA,MAAI,CAACA,aAAa;AAChB,WAAO;MAAEC,oBAAoB;MAAGC,kBAAkB;IAAE;EACtD;AACA,MAAIF,gBAAgB,GAAG;AACrB,UAAMG,oBACJ;AACF,WAAO;MAAEF,oBAAoBE;MAAmBD,kBAAkBC;IAAkB;EACtF,OAAO;AACL,WAAO;MACLF,oBACE;MACFC,kBACE;IACJ;EACF;AACF;;;AChEA,SAASE,qBAAqB;AAEvB,IAAMC,iBAAiB,MAAA;AAC5B,QAAM,CAACC,WAAAA,IAAeC,cAAc,IAAA;AACpC,QAAM,CAACC,SAAAA,IAAaD,cAAc,IAAA;AAClC,SAAOC,YAAY,YAAYF,cAAc,WAAW;AAC1D;;;ACNO,IAAMG,sBAAsB,CAACC,eAAAA;AAClC,SAAOC,SAASC,KAAKC,aAAa,eAAA,MAAqB,SAASH,eAAe;AACjF;;;ACFA,SAASI,eAAe;AAExB,SAASC,cAAcC,qBAAqB;AAC5C,SAASC,uBAAuB;AAKzB,IAAMC,oBAAoB,CAACC,eAAAA;AAChC,QAAMC,0BAA0BC,cAAcC,aAAaC,aAAa,EAAEC,SAA4BC,WAAAA,EACnGC,MAAMN;AACT,QAAM,EAAEO,gBAAe,IAAKC,gBAAAA;AAC5B,SAAOC,QAAQ,MAAA;AACb,WAAOV,eAAe,aAAaC,2BAA2BO,iBAAiBG,WAAW;EAC5F,GAAG;IAACV;IAAyBD;IAAYQ,iBAAiBG;GAAO;AACnE;",
6
- "names": ["batch", "setActive", "next", "state", "attention", "batch", "active", "deck", "solo", "removed", "filter", "id", "includes", "closed", "Array", "from", "Set", "inactive", "initialized", "fullscreen", "attended", "current", "attendedId", "isAttendedAvailable", "attendedIndex", "indexOf", "index", "length", "calculateOverscroll", "planksCount", "paddingInlineStart", "paddingInlineEnd", "overscrollPadding", "useMediaQuery", "useBreakpoints", "isNotMobile", "useMediaQuery", "isDesktop", "layoutAppliesTopbar", "breakpoint", "document", "body", "getAttribute", "useMemo", "Capabilities", "useCapability", "useThemeContext", "useHoistStatusbar", "breakpoint", "enableIdeStyleStatusbar", "useCapability", "Capabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "safeAreaPadding", "useThemeContext", "useMemo", "bottom"]
4
+ "sourcesContent": ["//\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 (state.deck.fullscreen && !state.deck.solo) {\n state.deck.fullscreen = false;\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 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';\nimport { useThemeContext } from '@dxos/react-ui';\n\nimport { DECK_PLUGIN } from '../meta';\nimport type { DeckSettingsProps } from '../types';\n\nexport const useHoistStatusbar = (breakpoint: string) => {\n const enableStatusbar = useCapability(Capabilities.SettingsStore).getStore<DeckSettingsProps>(DECK_PLUGIN)!.value\n .enableStatusbar;\n const { safeAreaPadding } = useThemeContext();\n return useMemo(() => {\n return breakpoint === 'desktop' && enableStatusbar && safeAreaPadding?.bottom === 0;\n }, [enableStatusbar, breakpoint, safeAreaPadding?.bottom]);\n};\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,aAAa;AAYf,IAAMC,YAAY,CAAC,EAAEC,MAAMC,OAAOC,UAAS,MAAoB;AACpE,SAAOC,MAAM,MAAA;AACX,UAAMC,SAASH,MAAMI,KAAKC,OAAO;MAACL,MAAMI,KAAKC;QAAQL,MAAMI,KAAKD;AAChE,UAAMG,UAAUH,OAAOI,OAAO,CAACC,OAAO,CAACT,KAAKU,SAASD,EAAAA,CAAAA;AACrD,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIb,MAAMI,KAAKU,SAASP,OAAO,CAACC,OAAO,CAACT,KAAKU,SAASD,EAAAA,CAAAA;SAASF;KAAQ,CAAA;AAEzGN,UAAMI,KAAKU,WAAWJ;AAEtB,QAAIV,MAAMI,KAAKC,QAAQ,CAACL,MAAMI,KAAKW,aAAa;AAC9Cf,YAAMI,KAAKC,OAAON,KAAK,CAAA;IACzB,OAAO;AACLC,YAAMI,KAAKD,SAASJ;IACtB;AAEA,QAAIC,MAAMI,KAAKY,cAAc,CAAChB,MAAMI,KAAKC,MAAM;AAC7CL,YAAMI,KAAKY,aAAa;IAC1B;AAEA,QAAIf,WAAW;AACb,YAAMgB,WAAWhB,UAAUiB;AAC3B,YAAM,CAACC,UAAAA,IAAcR,MAAMC,KAAKK,QAAAA;AAChC,YAAMG,sBAAsB,CAAC,CAACD,cAAcpB,KAAKU,SAASU,UAAAA;AAC1D,UAAI,CAACC,qBAAqB;AACxB,cAAMC,gBAAgBlB,OAAOmB,QAAQH,UAAAA;AAErC,cAAMI,QAAQF,kBAAkB,KAAK,IAAIA,iBAAiBtB,KAAKyB,SAASzB,KAAKyB,SAAS,IAAIH;AAC1F,eAAOtB,KAAKwB,KAAAA;MACd;IACF;EACF,CAAA;AACF;;;ACIO,IAAME,sBAAsB,CACjCC,gBAAAA;AAEA,MAAI,CAACA,aAAa;AAChB,WAAO;MAAEC,oBAAoB;MAAGC,kBAAkB;IAAE;EACtD;AACA,MAAIF,gBAAgB,GAAG;AACrB,UAAMG,oBACJ;AACF,WAAO;MAAEF,oBAAoBE;MAAmBD,kBAAkBC;IAAkB;EACtF,OAAO;AACL,WAAO;MACLF,oBACE;MACFC,kBACE;IACJ;EACF;AACF;;;AChEA,SAASE,qBAAqB;AAEvB,IAAMC,iBAAiB,MAAA;AAC5B,QAAM,CAACC,WAAAA,IAAeC,cAAc,IAAA;AACpC,QAAM,CAACC,SAAAA,IAAaD,cAAc,IAAA;AAClC,SAAOC,YAAY,YAAYF,cAAc,WAAW;AAC1D;;;ACNO,IAAMG,sBAAsB,CAACC,eAAAA;AAClC,SAAOC,SAASC,KAAKC,aAAa,eAAA,MAAqB,SAASH,eAAe;AACjF;;;ACFA,SAASI,eAAe;AAExB,SAASC,cAAcC,qBAAqB;AAC5C,SAASC,uBAAuB;AAKzB,IAAMC,oBAAoB,CAACC,eAAAA;AAChC,QAAMC,kBAAkBC,cAAcC,aAAaC,aAAa,EAAEC,SAA4BC,WAAAA,EAAcC,MACzGN;AACH,QAAM,EAAEO,gBAAe,IAAKC,gBAAAA;AAC5B,SAAOC,QAAQ,MAAA;AACb,WAAOV,eAAe,aAAaC,mBAAmBO,iBAAiBG,WAAW;EACpF,GAAG;IAACV;IAAiBD;IAAYQ,iBAAiBG;GAAO;AAC3D;",
6
+ "names": ["batch", "setActive", "next", "state", "attention", "batch", "active", "deck", "solo", "removed", "filter", "id", "includes", "closed", "Array", "from", "Set", "inactive", "initialized", "fullscreen", "attended", "current", "attendedId", "isAttendedAvailable", "attendedIndex", "indexOf", "index", "length", "calculateOverscroll", "planksCount", "paddingInlineStart", "paddingInlineEnd", "overscrollPadding", "useMediaQuery", "useBreakpoints", "isNotMobile", "useMediaQuery", "isDesktop", "layoutAppliesTopbar", "breakpoint", "document", "body", "getAttribute", "useMemo", "Capabilities", "useCapability", "useThemeContext", "useHoistStatusbar", "breakpoint", "enableStatusbar", "useCapability", "Capabilities", "SettingsStore", "getStore", "DECK_PLUGIN", "value", "safeAreaPadding", "useThemeContext", "useMemo", "bottom"]
7
7
  }
@@ -8,7 +8,7 @@ import {
8
8
  ReactSurface,
9
9
  Tools,
10
10
  UrlHandler
11
- } from "./chunk-J65MNI4S.mjs";
11
+ } from "./chunk-ATPSUXXK.mjs";
12
12
  import {
13
13
  DeckCapabilities
14
14
  } from "./chunk-22AQ5IVX.mjs";
@@ -73,11 +73,11 @@ var translations_default = [
73
73
  "show solo plank label": "Maximize",
74
74
  "close label": "Close",
75
75
  "minify label": "Minify",
76
- "settings overscroll label": "Plank overscrolling",
77
- "select overscroll placeholder": "Select plank overscrolling behavior",
76
+ "settings overscroll label": "Plank scrolling",
77
+ "select overscroll placeholder": "Select plank scrolling behavior",
78
78
  "settings overscroll centering label": "Centering",
79
79
  "settings overscroll none label": "None",
80
- "settings enable ide-style statusbar label": "IDE-style statusbar",
80
+ "settings enable statusbar label": "Show status bar",
81
81
  "close current label": "Close current plank",
82
82
  "close others label": "Close other planks",
83
83
  "close all label": "Close all planks"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/events.ts", "../../../src/DeckPlugin.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { DECK_PLUGIN } from './meta';\n\nexport namespace DeckEvents {\n export const SetupComplementaryPanels = Events.createStateEvent(`${DECK_PLUGIN}/setup-complementary-panels`);\n export const StateReady = Events.createStateEvent(`${DECK_PLUGIN}/state-ready`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { allOf, Capabilities, contributes, defineModule, definePlugin, Events, oneOf } from '@dxos/app-framework';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n LayoutIntentResolver,\n ReactRoot,\n ReactSurface,\n Tools,\n UrlHandler,\n} from './capabilities';\nimport { DeckEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\n\n// NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because\n// our signal implementation needs to add some hidden properties to the produced values.\n// TODO(Zan): Move this to a more global location if we use immer more broadly.\nsetAutoFreeze(false);\n\nexport const DeckPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/check-app-scheme`,\n activatesOn: Events.SettingsReady,\n activate: CheckAppScheme,\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: DeckSettings,\n }),\n defineModule({\n id: `${meta.id}/module/layout`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: oneOf(Events.SetupSettings, Events.SetupAppGraph),\n activatesAfter: [Events.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...stackTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activatesBefore: [DeckEvents.SetupComplementaryPanels],\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/layout-intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: LayoutIntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/tools`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: Tools,\n }),\n defineModule({\n id: `${meta.id}/module/url`,\n activatesOn: allOf(Events.DispatcherReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DECK_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DECK_PLUGIN]: {\n 'plugin name': 'Deck',\n 'main header label': 'Main header',\n 'open navigation sidebar label': 'Open sidebar',\n 'collapse navigation sidebar label': 'Minimize sidebar',\n 'open complementary sidebar label': 'Open context sidebar',\n 'close complementary sidebar label': 'Minimize context sidebar',\n 'sidebar title': 'Navigation sidebar',\n 'complementary sidebar title': 'Context sidebar',\n 'plugin error message': 'Content failed to render.',\n 'content fallback message': 'Unsupported',\n 'content fallback description':\n 'No plugin had a response for the address you navigated to. Double-check the URL, and ensure you’ve enabled a plugin that supports the object.',\n 'toggle fullscreen label': 'Toggle fullscreen',\n 'settings show hints label': 'Show hints',\n 'settings native redirect label': 'Enable native url redirect (experimental)',\n 'settings new plank position start label': 'Start',\n 'settings new plank position end label': 'End',\n 'select new plank positioning placeholder': 'Select new plank positioning',\n 'select new plank positioning label': 'New plank positioning',\n 'undo available label': 'Click to undo previous action.',\n 'undo action label': 'Undo',\n 'undo action alt': 'Undo previous action',\n 'undo close label': 'Dismiss',\n 'error fallback message': 'Unable to open this item',\n 'plank heading fallback label': 'Untitled',\n 'actions menu label': 'Options',\n 'settings deck label': 'Disable deck',\n 'reload required message': 'Reload required.',\n 'pending heading': 'Loading…',\n 'insert plank label': 'Open',\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'show deck plank label': 'Return to deck',\n 'show solo plank label': 'Maximize',\n 'close label': 'Close',\n 'minify label': 'Minify',\n 'settings overscroll label': 'Plank overscrolling',\n 'select overscroll placeholder': 'Select plank overscrolling behavior',\n 'settings overscroll centering label': 'Centering',\n 'settings overscroll none label': 'None',\n 'settings enable ide-style statusbar label': 'IDE-style statusbar',\n 'close current label': 'Close current plank',\n 'close others label': 'Close other planks',\n 'close all label': 'Close all planks',\n },\n },\n },\n];\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAc;;UAINC,aAAAA;cACFC,2BAA2BC,OAAOC,iBAAiB,GAAGC,WAAAA,6BAAwC;cAC9FC,aAAaH,OAAOC,iBAAiB,GAAGC,WAAAA,cAAyB;AAChF,GAHiBJ,eAAAA,aAAAA,CAAAA,EAAAA;;;ACJjB,SAASM,qBAAqB;AAE9B,SAASC,OAAOC,cAAcC,aAAaC,cAAcC,cAAcC,UAAAA,SAAQC,aAAa;AAC5F,SAASC,gBAAgBC,yBAAyB;;;ACDlD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,WAAAA,GAAc;QACb,eAAe;QACf,qBAAqB;QACrB,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,qCAAqC;QACrC,iBAAiB;QACjB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,gCACE;QACF,2BAA2B;QAC3B,6BAA6B;QAC7B,kCAAkC;QAClC,2CAA2C;QAC3C,yCAAyC;QACzC,4CAA4C;QAC5C,sCAAsC;QACtC,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,uBAAuB;QACvB,2BAA2B;QAC3B,mBAAmB;QACnB,sBAAsB;QACtB,gBAAgB;QAChB,mBAAmB;QACnB,iBAAiB;QACjB,yBAAyB;QACzB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,eAAe;QACf,gBAAgB;QAChB,6BAA6B;QAC7B,iCAAiC;QACjC,uCAAuC;QACvC,kCAAkC;QAClC,6CAA6C;QAC7C,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;MACrB;IACF;EACF;;;;ADhCFC,cAAc,KAAA;AAEP,IAAMC,aAAa,MACxBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOC;IACpBC,UAAUC;EACZ,CAAA;EACAN,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOI;IACpBF,UAAUG;EACZ,CAAA;EACAR,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;;;;IAIdC,aAAaO,MAAMN,QAAOI,eAAeJ,QAAOO,aAAa;IAC7DC,gBAAgB;MAACR,QAAOS;MAAaC,WAAWC;;IAChDT,UAAUU;EACZ,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOa;IACpBX,UAAU,MAAMY,YAAYC,aAAaC,cAAc;SAAIC;SAAiBC;KAAkB;EAChG,CAAA;EACArB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOmB;IACpBC,iBAAiB;MAACV,WAAWW;;IAC7BnB,UAAUoB;EACZ,CAAA;EACAzB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOuB;IACpBrB,UAAUsB;EACZ,CAAA;EACA3B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOyB;IACpBvB,UAAUwB;EACZ,CAAA;EACA7B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOO;IACpBL,UAAUyB;EACZ,CAAA;EACA9B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAO4B;IACpB1B,UAAU2B;EACZ,CAAA;EACAhC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAa+B,MAAM9B,QAAO+B,iBAAiBrB,WAAWC,UAAU;IAChET,UAAU8B;EACZ,CAAA;CACD;",
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { DECK_PLUGIN } from './meta';\n\nexport namespace DeckEvents {\n export const SetupComplementaryPanels = Events.createStateEvent(`${DECK_PLUGIN}/setup-complementary-panels`);\n export const StateReady = Events.createStateEvent(`${DECK_PLUGIN}/state-ready`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { allOf, Capabilities, contributes, defineModule, definePlugin, Events, oneOf } from '@dxos/app-framework';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n LayoutIntentResolver,\n ReactRoot,\n ReactSurface,\n Tools,\n UrlHandler,\n} from './capabilities';\nimport { DeckEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\n\n// NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because\n// our signal implementation needs to add some hidden properties to the produced values.\n// TODO(Zan): Move this to a more global location if we use immer more broadly.\nsetAutoFreeze(false);\n\nexport const DeckPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/check-app-scheme`,\n activatesOn: Events.SettingsReady,\n activate: CheckAppScheme,\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: DeckSettings,\n }),\n defineModule({\n id: `${meta.id}/module/layout`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: oneOf(Events.SetupSettings, Events.SetupAppGraph),\n activatesAfter: [Events.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...stackTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activatesBefore: [DeckEvents.SetupComplementaryPanels],\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/layout-intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: LayoutIntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/tools`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: Tools,\n }),\n defineModule({\n id: `${meta.id}/module/url`,\n activatesOn: allOf(Events.DispatcherReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DECK_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DECK_PLUGIN]: {\n 'plugin name': 'Deck',\n 'main header label': 'Main header',\n 'open navigation sidebar label': 'Open sidebar',\n 'collapse navigation sidebar label': 'Minimize sidebar',\n 'open complementary sidebar label': 'Open context sidebar',\n 'close complementary sidebar label': 'Minimize context sidebar',\n 'sidebar title': 'Navigation sidebar',\n 'complementary sidebar title': 'Context sidebar',\n 'plugin error message': 'Content failed to render.',\n 'content fallback message': 'Unsupported',\n 'content fallback description':\n 'No plugin had a response for the address you navigated to. Double-check the URL, and ensure you’ve enabled a plugin that supports the object.',\n 'toggle fullscreen label': 'Toggle fullscreen',\n 'settings show hints label': 'Show hints',\n 'settings native redirect label': 'Enable native url redirect (experimental)',\n 'settings new plank position start label': 'Start',\n 'settings new plank position end label': 'End',\n 'select new plank positioning placeholder': 'Select new plank positioning',\n 'select new plank positioning label': 'New plank positioning',\n 'undo available label': 'Click to undo previous action.',\n 'undo action label': 'Undo',\n 'undo action alt': 'Undo previous action',\n 'undo close label': 'Dismiss',\n 'error fallback message': 'Unable to open this item',\n 'plank heading fallback label': 'Untitled',\n 'actions menu label': 'Options',\n 'settings deck label': 'Disable deck',\n 'reload required message': 'Reload required.',\n 'pending heading': 'Loading…',\n 'insert plank label': 'Open',\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'show deck plank label': 'Return to deck',\n 'show solo plank label': 'Maximize',\n 'close label': 'Close',\n 'minify label': 'Minify',\n 'settings overscroll label': 'Plank scrolling',\n 'select overscroll placeholder': 'Select plank scrolling behavior',\n 'settings overscroll centering label': 'Centering',\n 'settings overscroll none label': 'None',\n 'settings enable statusbar label': 'Show status bar',\n 'close current label': 'Close current plank',\n 'close others label': 'Close other planks',\n 'close all label': 'Close all planks',\n },\n },\n },\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAIA,SAASA,cAAc;;UAINC,aAAAA;cACFC,2BAA2BC,OAAOC,iBAAiB,GAAGC,WAAAA,6BAAwC;cAC9FC,aAAaH,OAAOC,iBAAiB,GAAGC,WAAAA,cAAyB;AAChF,GAHiBJ,eAAAA,aAAAA,CAAAA,EAAAA;;;ACJjB,SAASM,qBAAqB;AAE9B,SAASC,OAAOC,cAAcC,aAAaC,cAAcC,cAAcC,UAAAA,SAAQC,aAAa;AAC5F,SAASC,gBAAgBC,yBAAyB;;;ACDlD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,WAAAA,GAAc;QACb,eAAe;QACf,qBAAqB;QACrB,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,qCAAqC;QACrC,iBAAiB;QACjB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,gCACE;QACF,2BAA2B;QAC3B,6BAA6B;QAC7B,kCAAkC;QAClC,2CAA2C;QAC3C,yCAAyC;QACzC,4CAA4C;QAC5C,sCAAsC;QACtC,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,uBAAuB;QACvB,2BAA2B;QAC3B,mBAAmB;QACnB,sBAAsB;QACtB,gBAAgB;QAChB,mBAAmB;QACnB,iBAAiB;QACjB,yBAAyB;QACzB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,eAAe;QACf,gBAAgB;QAChB,6BAA6B;QAC7B,iCAAiC;QACjC,uCAAuC;QACvC,kCAAkC;QAClC,mCAAmC;QACnC,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;MACrB;IACF;EACF;;;;ADhCFC,cAAc,KAAA;AAEP,IAAMC,aAAa,MACxBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOC;IACpBC,UAAUC;EACZ,CAAA;EACAN,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOI;IACpBF,UAAUG;EACZ,CAAA;EACAR,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;;;;IAIdC,aAAaO,MAAMN,QAAOI,eAAeJ,QAAOO,aAAa;IAC7DC,gBAAgB;MAACR,QAAOS;MAAaC,WAAWC;;IAChDT,UAAUU;EACZ,CAAA;EACAf,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOa;IACpBX,UAAU,MAAMY,YAAYC,aAAaC,cAAc;SAAIC;SAAiBC;KAAkB;EAChG,CAAA;EACArB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOmB;IACpBC,iBAAiB;MAACV,WAAWW;;IAC7BnB,UAAUoB;EACZ,CAAA;EACAzB,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOuB;IACpBrB,UAAUsB;EACZ,CAAA;EACA3B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOyB;IACpBvB,UAAUwB;EACZ,CAAA;EACA7B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAOO;IACpBL,UAAUyB;EACZ,CAAA;EACA9B,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,QAAO4B;IACpB1B,UAAU2B;EACZ,CAAA;EACAhC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAa+B,MAAM9B,QAAO+B,iBAAiBrB,WAAWC,UAAU;IAChET,UAAU8B;EACZ,CAAA;CACD;",
6
6
  "names": ["Events", "DeckEvents", "SetupComplementaryPanels", "Events", "createStateEvent", "DECK_PLUGIN", "StateReady", "setAutoFreeze", "allOf", "Capabilities", "contributes", "defineModule", "definePlugin", "Events", "oneOf", "translations", "stackTranslations", "DECK_PLUGIN", "setAutoFreeze", "DeckPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SettingsReady", "activate", "CheckAppScheme", "SetupSettings", "DeckSettings", "oneOf", "SetupAppGraph", "activatesAfter", "LayoutReady", "DeckEvents", "StateReady", "DeckState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "stackTranslations", "Startup", "activatesBefore", "SetupComplementaryPanels", "ReactRoot", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "LayoutIntentResolver", "AppGraphBuilder", "SetupArtifactDefinition", "Tools", "allOf", "DispatcherReady", "UrlHandler"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  setActive
3
- } from "./chunk-KANJBSIX.mjs";
3
+ } from "./chunk-YCKJNTKG.mjs";
4
4
  import {
5
5
  DeckCapabilities
6
6
  } from "./chunk-22AQ5IVX.mjs";
@@ -8,7 +8,7 @@ import {
8
8
  DeckAction,
9
9
  getMode,
10
10
  isLayoutMode
11
- } from "./chunk-FT33W5CI.mjs";
11
+ } from "./chunk-FYKBOM3C.mjs";
12
12
  import {
13
13
  DECK_PLUGIN
14
14
  } from "./chunk-N7TEPFVR.mjs";
@@ -485,4 +485,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
485
485
  export {
486
486
  intent_resolver_default as default
487
487
  };
488
- //# sourceMappingURL=intent-resolver-ZD67BRUI.mjs.map
488
+ //# sourceMappingURL=intent-resolver-P5BVUQKU.mjs.map