@dxos/react-ui-stack 0.6.14-main.f49f251 → 0.6.14-staging.027949b

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 (94) hide show
  1. package/dist/lib/browser/index.mjs +494 -335
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/testing/index.mjs +4 -106
  5. package/dist/lib/browser/testing/index.mjs.map +4 -4
  6. package/dist/lib/node/index.cjs +478 -326
  7. package/dist/lib/node/index.cjs.map +4 -4
  8. package/dist/lib/node/meta.json +1 -1
  9. package/dist/lib/node/testing/index.cjs +5 -110
  10. package/dist/lib/node/testing/index.cjs.map +4 -4
  11. package/dist/lib/node-esm/index.mjs +494 -335
  12. package/dist/lib/node-esm/index.mjs.map +4 -4
  13. package/dist/lib/node-esm/meta.json +1 -1
  14. package/dist/lib/node-esm/testing/index.mjs +4 -106
  15. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  16. package/dist/types/src/components/LayoutControls.d.ts +19 -0
  17. package/dist/types/src/components/LayoutControls.d.ts.map +1 -0
  18. package/dist/types/src/components/MenuSignifier.d.ts +4 -0
  19. package/dist/types/src/components/MenuSignifier.d.ts.map +1 -0
  20. package/dist/types/src/components/Stack.d.ts +12 -12
  21. package/dist/types/src/components/Stack.d.ts.map +1 -1
  22. package/dist/types/src/components/Stack.stories.d.ts +6 -83
  23. package/dist/types/src/components/Stack.stories.d.ts.map +1 -1
  24. package/dist/types/src/components/StackContext.d.ts +19 -0
  25. package/dist/types/src/components/StackContext.d.ts.map +1 -0
  26. package/dist/types/src/components/StackItem.d.ts +41 -0
  27. package/dist/types/src/components/StackItem.d.ts.map +1 -0
  28. package/dist/types/src/components/StackItemContent.d.ts +9 -0
  29. package/dist/types/src/components/StackItemContent.d.ts.map +1 -0
  30. package/dist/types/src/components/StackItemHeading.d.ts +8 -0
  31. package/dist/types/src/components/StackItemHeading.d.ts.map +1 -0
  32. package/dist/types/src/components/StackItemResizeHandle.d.ts +3 -0
  33. package/dist/types/src/components/StackItemResizeHandle.d.ts.map +1 -0
  34. package/dist/types/src/components/StackItemSigil.d.ts +31 -0
  35. package/dist/types/src/components/StackItemSigil.d.ts.map +1 -0
  36. package/dist/types/src/components/index.d.ts +2 -1
  37. package/dist/types/src/components/index.d.ts.map +1 -1
  38. package/dist/types/src/testing/EditorContent.d.ts +2 -2
  39. package/dist/types/src/testing/EditorContent.d.ts.map +1 -1
  40. package/dist/types/src/testing/index.d.ts +0 -1
  41. package/dist/types/src/testing/index.d.ts.map +1 -1
  42. package/dist/types/src/testing/stack-manager.d.ts +0 -1
  43. package/dist/types/src/testing/stack-manager.d.ts.map +1 -1
  44. package/dist/types/src/translations.d.ts +8 -8
  45. package/package.json +23 -21
  46. package/src/components/LayoutControls.tsx +131 -0
  47. package/src/components/MenuSignifier.tsx +33 -0
  48. package/src/components/Stack.stories.tsx +109 -182
  49. package/src/components/Stack.tsx +61 -156
  50. package/src/components/StackContext.tsx +38 -0
  51. package/src/components/StackItem.tsx +173 -0
  52. package/src/components/StackItemContent.tsx +49 -0
  53. package/src/components/StackItemHeading.tsx +55 -0
  54. package/src/components/StackItemResizeHandle.tsx +115 -0
  55. package/src/components/StackItemSigil.tsx +170 -0
  56. package/src/components/index.ts +3 -2
  57. package/src/playwright/smoke.spec.ts +3 -3
  58. package/src/testing/EditorContent.tsx +4 -4
  59. package/src/testing/index.ts +2 -1
  60. package/src/testing/stack-manager.ts +3 -7
  61. package/src/translations.ts +8 -8
  62. package/dist/types/src/components/CaretDownUp.d.ts +0 -4
  63. package/dist/types/src/components/CaretDownUp.d.ts.map +0 -1
  64. package/dist/types/src/components/ContentTypes.stories.d.ts +0 -96
  65. package/dist/types/src/components/ContentTypes.stories.d.ts.map +0 -1
  66. package/dist/types/src/components/Deck.stories.d.ts +0 -19
  67. package/dist/types/src/components/Deck.stories.d.ts.map +0 -1
  68. package/dist/types/src/components/Section.d.ts +0 -53
  69. package/dist/types/src/components/Section.d.ts.map +0 -1
  70. package/dist/types/src/components/Section.stories.d.ts +0 -36
  71. package/dist/types/src/components/Section.stories.d.ts.map +0 -1
  72. package/dist/types/src/components/style-fragments.d.ts +0 -2
  73. package/dist/types/src/components/style-fragments.d.ts.map +0 -1
  74. package/dist/types/src/next/Stack.d.ts +0 -9
  75. package/dist/types/src/next/Stack.d.ts.map +0 -1
  76. package/dist/types/src/next/Stack.stories.d.ts +0 -8
  77. package/dist/types/src/next/Stack.stories.d.ts.map +0 -1
  78. package/dist/types/src/next/StackItem.d.ts +0 -14
  79. package/dist/types/src/next/StackItem.d.ts.map +0 -1
  80. package/dist/types/src/next/index.d.ts +0 -2
  81. package/dist/types/src/next/index.d.ts.map +0 -1
  82. package/dist/types/src/testing/TableContent.d.ts +0 -20
  83. package/dist/types/src/testing/TableContent.d.ts.map +0 -1
  84. package/src/components/CaretDownUp.tsx +0 -31
  85. package/src/components/ContentTypes.stories.tsx +0 -104
  86. package/src/components/Deck.stories.tsx +0 -362
  87. package/src/components/Section.stories.tsx +0 -50
  88. package/src/components/Section.tsx +0 -378
  89. package/src/components/style-fragments.ts +0 -5
  90. package/src/next/Stack.stories.tsx +0 -148
  91. package/src/next/Stack.tsx +0 -30
  92. package/src/next/StackItem.tsx +0 -78
  93. package/src/next/index.ts +0 -5
  94. package/src/testing/TableContent.tsx +0 -119
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/components/Stack.tsx", "../../../src/components/Section.tsx", "../../../src/components/CaretDownUp.tsx", "../../../src/components/style-fragments.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup, useFocusableGroup } from '@fluentui/react-tabster';\nimport React, { type ReactNode, forwardRef, useCallback } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { List, useTranslation } from '@dxos/react-ui';\nimport {\n type MosaicContainerProps,\n type MosaicTileComponent,\n Mosaic,\n Path,\n useContainer,\n useItemsWithPreview,\n useMosaic,\n} from '@dxos/react-ui-mosaic';\nimport { dropRingInner } from '@dxos/react-ui-theme';\n\nimport {\n type CollapsedSections,\n type AddSectionPosition,\n SectionTile,\n type StackContextValue,\n type StackItem,\n type StackSectionContent,\n type StackSectionItem,\n} from './Section';\nimport { stackColumns } from './style-fragments';\nimport { translationKey } from '../translations';\n\nexport type Direction = 'horizontal' | 'vertical';\n\nexport type { CollapsedSections, AddSectionPosition };\n\nexport const DEFAULT_TYPE = 'stack-section';\n\nexport type StackProps<TData extends StackSectionContent = StackSectionContent> = Omit<\n MosaicContainerProps<TData, number>,\n 'debug' | 'Component'\n> &\n Omit<StackContextValue<TData>, 'setCollapsedSections'> & {\n items?: StackSectionItem[];\n separation?: boolean; // TODO(burdon): Style.\n onCollapseSection?: (id: string, collapsed: boolean) => void;\n emptyComponent?: ReactNode;\n };\n\nexport const Stack = ({\n id,\n type = DEFAULT_TYPE,\n SectionContent,\n items = [],\n separation = true,\n transform,\n onOver,\n onDrop,\n onAddSection,\n onDeleteSection,\n onNavigateToSection,\n onCollapseSection,\n ...props\n}: StackProps) => {\n const { ref: containerRef, width = 0 } = useResizeDetector<HTMLDivElement>({ refreshRate: 200 });\n const { operation, overItem } = useMosaic();\n const itemsWithPreview = useItemsWithPreview({ path: id, items });\n\n const getOverlayStyle = useCallback(() => ({ width }), [width]);\n const getOverlayProps = useCallback(\n () => ({ itemContext: { transform, SectionContent } }),\n [transform, SectionContent],\n );\n\n // TODO(thure): The root cause of the discrepancy between `activeNodeRect.top` and `overlayNodeRect.top` in Composer\n // in particular is not yet known, so this solution may may backfire in unforeseeable cases.\n const stackModifier = useCallback<Exclude<MosaicContainerProps['modifier'], undefined>>(\n (_activeItem, { transform, activeNodeRect, overlayNodeRect }) => {\n if (activeNodeRect && overlayNodeRect) {\n transform.y += activeNodeRect?.top - overlayNodeRect?.top;\n }\n return transform;\n },\n [],\n );\n\n return (\n <Mosaic.Container\n {...{\n id,\n type,\n Component: SectionTile as MosaicTileComponent<StackSectionItem, HTMLDivElement>,\n getOverlayStyle,\n getOverlayProps,\n onOver,\n onDrop,\n modifier: stackModifier,\n }}\n >\n <Mosaic.DroppableTile\n path={id}\n type={type}\n item={{ id, items: itemsWithPreview }}\n // TODO(wittjosiah): Should this actually be a context?\n itemContext={{\n separation,\n transform,\n onDeleteSection,\n onNavigateToSection,\n onAddSection,\n onCollapseSection,\n SectionContent,\n }}\n isOver={\n overItem &&\n !!overItem.path &&\n Path.hasRoot(overItem.path, id) &&\n (operation === 'copy' || operation === 'transfer')\n }\n Component={StackTile}\n {...props}\n ref={containerRef}\n />\n </Mosaic.Container>\n );\n};\n\nconst StackTile: MosaicTileComponent<StackItem, HTMLOListElement, Pick<StackProps, 'emptyComponent'>> = forwardRef(\n ({ classNames, path, isOver, item: { items }, itemContext, type: _type, emptyComponent, ...props }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const { Component, type } = useContainer();\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const { activeItem } = useMosaic();\n\n // NOTE(thure): Ensure “groupper” is available, but no need to use it here.\n const _group = useFocusableGroup();\n\n // NOTE: Keep outer padding the same as MarkdownMain.\n return (\n <List\n ref={forwardedRef}\n classNames={['grid relative', stackColumns, isOver && dropRingInner, classNames]}\n {...(!activeItem && domAttributes)}\n {...props}\n >\n {items.length > 0 ? (\n <Mosaic.SortableContext items={items} direction='vertical'>\n {items.map((item, index) => (\n <Mosaic.SortableTile\n key={item.id}\n item={item}\n itemContext={itemContext}\n path={path}\n type={type}\n position={index}\n Component={Component}\n />\n ))}\n </Mosaic.SortableContext>\n ) : emptyComponent !== undefined ? (\n <>{emptyComponent}</>\n ) : (\n <p\n className='grid col-span-2 text-center p-4 border border-dashed border-neutral-500/50 rounded'\n data-testid='stack.empty'\n >\n {t('empty stack message')}\n </p>\n )}\n </List>\n );\n },\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusableGroup, useTabsterAttributes } from '@fluentui/react-tabster';\nimport { ArrowLineDown, ArrowLineUp, ArrowSquareOut, CaretUpDown, Trash } from '@phosphor-icons/react';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport React, {\n forwardRef,\n useState,\n type ForwardRefExoticComponent,\n type RefAttributes,\n type FC,\n type PropsWithChildren,\n type ComponentPropsWithRef,\n} from 'react';\n\nimport {\n Button,\n DropdownMenu,\n Icon,\n type Label,\n List,\n ListItem,\n ScrollArea,\n type ThemedClassName,\n Toolbar,\n toLocalizedString,\n useTranslation,\n} from '@dxos/react-ui';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { DropDownMenuDragHandleTrigger, resizeHandle, resizeHandleHorizontal } from '@dxos/react-ui-deck';\nimport {\n type MosaicActiveType,\n type MosaicDataItem,\n type MosaicTileComponent,\n type MosaicTileProps,\n useMosaic,\n} from '@dxos/react-ui-mosaic';\nimport {\n focusRing,\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\n\nimport { CaretDownUp } from './CaretDownUp';\nimport { stackColumns } from './style-fragments';\nimport { translationKey } from '../translations';\n\nconst sectionActionDimensions = 'p-1 shrink-0 min-bs-0 is-[--rail-action] bs-min';\n\nexport type StackSectionContent = MosaicDataItem;\n\nexport type CollapsedSections = Record<string, boolean>;\n\nexport type AddSectionPosition = 'before' | 'after' | 'beforeAll' | 'afterAll';\n\nexport type StackContextValue<TData extends StackSectionContent = StackSectionContent> = {\n SectionContent: FC<{ data: TData }>;\n separation?: boolean;\n isResizable?: boolean;\n transform?: (item: MosaicDataItem, type?: string) => StackSectionItem;\n onDeleteSection?: (path: string) => void;\n onAddSection?: (path: string, position: AddSectionPosition) => void;\n onNavigateToSection?: (object: MosaicDataItem) => void;\n onCollapseSection?: (id: string, collapsed: boolean) => void;\n};\n\nexport type StackItem = MosaicDataItem & {\n items: StackSectionItem[];\n};\n\nexport type StackSectionItem = MosaicDataItem & {\n object: StackSectionContent;\n // TODO(wittjosiah): Use effect schema? Share schema with echo.\n view?: {\n title?: string;\n size?: SectionSize;\n height?: number;\n collapsed?: boolean;\n custom?: Record<string, any>;\n };\n // TODO(wittjosiah): Common type? Factor out?\n metadata?: {\n icon?: string;\n placeholder?: Label;\n viewActions?: (item: StackSectionItem) => StackAction;\n };\n};\n\nexport type StackAction = {\n icon: string;\n label: Label;\n onClick: () => void;\n};\n\nexport type SectionSize = 'intrinsic' | 'extrinsic';\n\nexport type SectionProps = PropsWithChildren<\n {\n // Data props.\n id: string;\n title: string;\n\n // Tile props.\n active?: MosaicActiveType;\n } & Pick<\n MosaicTileProps,\n 'draggableProps' | 'draggableStyle' | 'onDelete' | 'onNavigate' | 'onAddAfter' | 'onAddBefore'\n > &\n Pick<StackContextValue, 'separation' | 'isResizable' | 'onCollapseSection'> &\n Pick<Required<StackSectionItem>['view'], 'collapsed' | 'size'> &\n Pick<Required<StackSectionItem>['metadata'], 'icon'>\n>;\n\nconst resizeHandleStyles = mx(resizeHandle, resizeHandleHorizontal, 'is-full bs-[--rail-action] col-start-2');\n\nexport const Section: ForwardRefExoticComponent<SectionProps & RefAttributes<HTMLLIElement>> = forwardRef<\n HTMLLIElement,\n SectionProps\n>(\n (\n {\n id,\n title,\n icon = 'ph--placeholder--regular',\n size = 'intrinsic',\n collapsed,\n active,\n isResizable,\n draggableProps,\n draggableStyle,\n onDelete,\n onNavigate,\n onAddBefore,\n onAddAfter,\n onCollapseSection,\n children,\n },\n forwardedRef,\n ) => {\n const { t } = useTranslation(translationKey);\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const sectionActionsToolbar = useTabsterAttributes({\n groupper: {},\n focusable: {},\n mover: { cyclic: true, direction: 1, memorizeCurrent: false },\n });\n const sectionContentGroup = useFocusableGroup({});\n const attendableAttrs = useAttendableAttributes(id);\n\n return (\n <CollapsiblePrimitive.Root\n asChild\n open={!collapsed}\n onOpenChange={(nextOpen) => onCollapseSection?.(id, !nextOpen)}\n >\n <ListItem.Root\n ref={forwardedRef}\n id={id}\n {...attendableAttrs}\n classNames={[\n 'grid col-span-2 group/section',\n active === 'overlay' ? stackColumns : 'grid-cols-subgrid snap-start',\n ]}\n style={draggableStyle}\n >\n <div\n role='none'\n className={mx(\n 'grid col-span-2 grid-cols-subgrid',\n 'bg-base attention-surface',\n hoverableControls,\n hoverableFocusedWithinControls,\n (active === 'origin' || active === 'rearrange' || active === 'destination') && 'opacity-0',\n )}\n >\n <div\n role='toolbar'\n aria-orientation='vertical'\n aria-label={t('section controls label')}\n {...(!active && { tabIndex: 0 })}\n {...(!active && sectionActionsToolbar)}\n className={mx(\n 'grid grid-cols-subgrid ch-focus-ring rounded-sm grid-rows-[min-content_min-content_1fr] m-1',\n 'group-has-[[role=toolbar][aria-orientation=horizontal]]/section:pbs-[--rail-action]',\n )}\n >\n <div role='none' className='sticky -block-start-px bg-[--sticky-bg]'>\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: setOptionsMenuOpen,\n }}\n >\n <DropDownMenuDragHandleTrigger active={!!active} variant='ghost' classNames='m-0' {...draggableProps}>\n <Icon icon={icon} size={5} classNames='transition-opacity' />\n </DropDownMenuDragHandleTrigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {collapsed ? (\n <DropdownMenu.Item onClick={onNavigate} data-testid='section.navigate-to'>\n <ArrowSquareOut className={mx(getSize(5), 'mr-2')} />\n <span className='grow'>{t('navigate to section label')}</span>\n </DropdownMenu.Item>\n ) : (\n <CollapsiblePrimitive.Trigger asChild>\n <DropdownMenu.Item>\n <CaretDownUp className={mx(getSize(5), 'mr-2')} />\n <span className='grow'>{t('collapse label')}</span>\n </DropdownMenu.Item>\n </CollapsiblePrimitive.Trigger>\n )}\n <DropdownMenu.Item onClick={onAddBefore} data-testid='section.add-before'>\n <ArrowLineUp className={mx(getSize(5), 'mr-2')} />\n <span className='grow'>{t('add section before label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={onAddAfter} data-testid='section.add-after'>\n <ArrowLineDown className={mx(getSize(5), 'mr-2')} />\n <span className='grow'>{t('add section after label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onDelete?.()} data-testid='section.remove'>\n <Trash className={mx(getSize(5), 'mr-2')} />\n <span className='grow'>{t('remove section label')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n {collapsed ? (\n <CollapsiblePrimitive.Trigger asChild>\n <Button variant='ghost' classNames={sectionActionDimensions}>\n <span className='sr-only'>{t('expand label')}</span>\n <CaretUpDown className={getSize(4)} />\n </Button>\n </CollapsiblePrimitive.Trigger>\n ) : (\n <Button\n variant='ghost'\n classNames={sectionActionDimensions}\n onClick={onNavigate}\n data-testid='section.navigate-to'\n >\n <ArrowSquareOut className={mx(getSize(4))} />\n <span className='sr-only'>{t('navigate to section label')}</span>\n </Button>\n )}\n </div>\n </div>\n\n {/* Main content */}\n\n <ListItem.Heading\n classNames={collapsed ? ['grid grid-rows-subgrid grid-cols-subgrid items-center', focusRing] : 'sr-only'}\n {...(collapsed && { ...sectionContentGroup, tabIndex: 0 })}\n >\n {/*\n TODO(thure): This needs to be made extensible; Markdown document titles especially are difficult.\n Using `Surface` in a UI package like this would be unprecedented and needs motivation.\n Refactoring to use subcomponents is complicated by sections being a sortable Mosaic Tile.\n Reevaluate when work on collections (Folders, Stacks, etc) settles.\n */}\n <span className='truncate'>{title}</span>\n </ListItem.Heading>\n {size === 'intrinsic' ? (\n <CollapsiblePrimitive.Content\n {...(!collapsed && {\n ...sectionContentGroup,\n tabIndex: 0,\n })}\n // TODO(burdon): Add margin to fragment?\n className={mx(focusRing, 'm-[2px]')}\n >\n {children}\n </CollapsiblePrimitive.Content>\n ) : (\n <CollapsiblePrimitive.Content asChild>\n <ScrollArea.Root\n type='always'\n {...(!collapsed && { ...sectionContentGroup, tabIndex: 0 })}\n classNames={mx(focusRing, 'is-full has-[[data-radix-scroll-area-viewport]]:pbe-4')}\n >\n <ScrollArea.Viewport>{children}</ScrollArea.Viewport>\n <ScrollArea.Scrollbar\n orientation='horizontal'\n variant='coarse'\n classNames='hidden has-[div]:flex !inline-end-[max(.25rem,var(--radix-scroll-area-corner-width))]'\n >\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n <ScrollArea.Scrollbar orientation='vertical' variant='coarse' classNames='hidden has-[div]:flex'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n <ScrollArea.Corner />\n </ScrollArea.Root>\n </CollapsiblePrimitive.Content>\n )}\n </div>\n {isResizable && !collapsed && (\n <button className={resizeHandleStyles}>\n <span className='sr-only'>{t('resize section label')}</span>\n </button>\n )}\n </ListItem.Root>\n </CollapsiblePrimitive.Root>\n );\n },\n);\n\nexport type SectionToolbarProps = ThemedClassName<ComponentPropsWithRef<'div'>>;\n\n// TODO(burdon): block-start\nexport const sectionToolbarLayout =\n 'bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity';\n\nexport const SectionToolbar = ({ children, classNames }: SectionToolbarProps) => {\n return (\n <Toolbar.Root orientation='horizontal' classNames={[sectionToolbarLayout, hoverableControlItem, classNames]}>\n {children}\n </Toolbar.Root>\n );\n};\n\nexport const SectionTile: MosaicTileComponent<\n StackSectionItem,\n HTMLLIElement\n // TODO(wittjosiah): If props is specified there is a type error with Mosaic.Container.\n // { itemContext: StackContextValue }\n> = forwardRef(({ path, type, active, draggableStyle, draggableProps, item, itemContext }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const { activeItem } = useMosaic();\n\n const separation = !!itemContext?.separation;\n const isResizable = !!itemContext?.isResizable;\n const { transform, onDeleteSection, onNavigateToSection, onAddSection, onCollapseSection, SectionContent } =\n itemContext as StackContextValue;\n\n const transformedItem = transform\n ? transform(\n item,\n // TODO(wittjosiah): `active` doesn't always seem to be accurate here.\n activeItem?.item.id === item.id ? activeItem?.type : type,\n )\n : item;\n\n const placeholder = transformedItem.metadata?.placeholder ?? ['untitled section title', { ns: translationKey }];\n const title = transformedItem.view?.title ?? toLocalizedString(placeholder, t);\n\n const section = (\n <Section\n ref={forwardedRef}\n title={title}\n id={transformedItem.id}\n size={transformedItem.view?.size}\n icon={transformedItem.metadata?.icon}\n collapsed={transformedItem.view?.collapsed}\n separation={separation}\n active={active}\n draggableProps={draggableProps}\n draggableStyle={draggableStyle}\n onCollapseSection={onCollapseSection}\n isResizable={isResizable}\n onDelete={() => onDeleteSection?.(path)}\n onNavigate={() => onNavigateToSection?.(transformedItem)}\n onAddAfter={() => onAddSection?.(path, 'after')}\n onAddBefore={() => onAddSection?.(path, 'before')}\n >\n {SectionContent && <SectionContent data={transformedItem.object} />}\n </Section>\n );\n\n return active === 'overlay' ? <List>{section}</List> : section;\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type IconProps } from '@phosphor-icons/react';\nimport React from 'react';\n\nexport const CaretDownUp = ({ children, weight, ...props }: IconProps) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' {...props}>\n <rect width='256' height='256' fill='none' />\n <polyline\n points='80 224 128 176 176 224'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n <polyline\n points='80 32 128 80 176 32'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n {children}\n </svg>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const stackColumns = 'grid-cols-[var(--rail-size)_calc(100%-var(--rail-size))]';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'stack';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'empty stack message': 'Drag items into the stack.',\n 'remove section label': 'Delete',\n 'navigate to section label': 'Navigate to item',\n 'untitled section title': 'Untitled section',\n 'add section before label': 'Add before',\n 'add section after label': 'Add after',\n 'expand label': 'Expand',\n 'collapse label': 'Collapse',\n },\n },\n },\n];\n"],
5
- "mappings": "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",
6
- "names": ["import_react_tabster", "import_react", "import_react_ui", "import_react_ui_mosaic", "import_react_ui_theme", "CaretDownUp", "children", "weight", "props", "React", "svg", "xmlns", "viewBox", "rect", "width", "height", "fill", "polyline", "points", "stroke", "strokeLinecap", "strokeLinejoin", "strokeWidth", "stackColumns", "translationKey", "sectionActionDimensions", "resizeHandleStyles", "mx", "resizeHandle", "resizeHandleHorizontal", "Section", "forwardRef", "id", "title", "icon", "size", "collapsed", "active", "isResizable", "draggableProps", "draggableStyle", "onDelete", "onNavigate", "onAddBefore", "onAddAfter", "onCollapseSection", "forwardedRef", "t", "useTranslation", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "sectionActionsToolbar", "useTabsterAttributes", "groupper", "focusable", "mover", "cyclic", "direction", "memorizeCurrent", "sectionContentGroup", "useFocusableGroup", "attendableAttrs", "useAttendableAttributes", "Root", "asChild", "open", "onOpenChange", "nextOpen", "ListItem", "ref", "classNames", "style", "div", "role", "className", "hoverableControls", "hoverableFocusedWithinControls", "aria-orientation", "aria-label", "tabIndex", "DropdownMenu", "DropDownMenuDragHandleTrigger", "variant", "Icon", "Portal", "Content", "Viewport", "Item", "onClick", "data-testid", "ArrowSquareOut", "getSize", "span", "Trigger", "ArrowLineUp", "ArrowLineDown", "Trash", "Arrow", "Button", "CaretUpDown", "Heading", "focusRing", "ScrollArea", "type", "Scrollbar", "orientation", "Thumb", "Corner", "button", "sectionToolbarLayout", "SectionToolbar", "Toolbar", "hoverableControlItem", "SectionTile", "path", "item", "itemContext", "activeItem", "useMosaic", "separation", "transform", "onDeleteSection", "onNavigateToSection", "onAddSection", "SectionContent", "transformedItem", "placeholder", "metadata", "ns", "view", "toLocalizedString", "section", "data", "object", "List", "DEFAULT_TYPE", "Stack", "items", "onOver", "onDrop", "containerRef", "useResizeDetector", "refreshRate", "operation", "overItem", "itemsWithPreview", "useItemsWithPreview", "getOverlayStyle", "useCallback", "getOverlayProps", "stackModifier", "_activeItem", "activeNodeRect", "overlayNodeRect", "y", "top", "Mosaic", "Container", "Component", "modifier", "DroppableTile", "isOver", "Path", "hasRoot", "StackTile", "_type", "emptyComponent", "useContainer", "domAttributes", "useArrowNavigationGroup", "axis", "_group", "dropRingInner", "length", "SortableContext", "map", "index", "SortableTile", "key", "position", "undefined", "p"]
3
+ "sources": ["../../../src/components/Stack.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackItem.tsx", "../../../src/components/StackItemContent.tsx", "../../../src/components/StackItemHeading.tsx", "../../../src/components/StackItemResizeHandle.tsx", "../../../src/components/StackItemSigil.tsx", "../../../src/components/MenuSignifier.tsx", "../../../src/translations.ts", "../../../src/components/LayoutControls.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport React, { Children, type CSSProperties, type ComponentPropsWithRef, forwardRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type StackContextValue, StackContext } from './StackContext';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain';\n\nexport type StackProps = Omit<ThemedClassName<ComponentPropsWithRef<'div'>>, 'aria-orientation'> &\n Partial<StackContextValue> & { itemsCount?: number };\n\nexport const railGridHorizontal = 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n separators = true,\n size = 'intrinsic',\n itemsCount = Children.count(children),\n ...props\n },\n forwardedRef,\n ) => {\n const arrowNavigationGroup = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']: `repeat(${itemsCount}, min-content)`,\n ...style,\n };\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, separators }}>\n <div\n {...props}\n {...arrowNavigationGroup}\n className={mx(\n 'grid relative',\n rail\n ? orientation === 'horizontal'\n ? railGridHorizontal\n : railGridVertical\n : orientation === 'horizontal'\n ? 'grid-rows-1'\n : 'grid-cols-1',\n size === 'contain' &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 bs-full max-bs-full'\n : 'overflow-y-auto min-is-0 is-full max-is-full'),\n separators && (orientation === 'horizontal' ? 'divide-separator divide-x' : 'divide-separator divide-y'),\n classNames,\n )}\n aria-orientation={orientation}\n style={styles}\n ref={forwardedRef}\n >\n {children}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\nexport type { StackContextValue };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type Orientation, type Size } from './Stack';\nimport { type StackItemSize } from './StackItem';\n\nexport type StackContextValue = {\n orientation: Orientation;\n separators: boolean;\n rail: boolean;\n size: Size;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n orientation: 'vertical',\n rail: true,\n size: 'intrinsic',\n separators: true,\n});\n\nexport const useStack = () => useContext(StackContext);\n\ntype StackItemContextValue = {\n selfDragHandleRef: (element: HTMLDivElement | null) => void;\n size: StackItemSize;\n setSize: (nextSize: StackItemSize, commit?: boolean) => void;\n};\n\nexport const StackItemContext = createContext<StackItemContextValue>({\n selfDragHandleRef: () => {},\n size: 'min-content',\n setSize: () => {},\n});\n\nexport const useStackItem = () => useContext(StackItemContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport {\n attachClosestEdge,\n type Edge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { DropIndicator } from '@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, { forwardRef, useLayoutEffect, useState, type ComponentPropsWithRef, useCallback } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, StackItemContext } from './StackContext';\nimport { StackItemContent, type StackItemContentProps } from './StackItemContent';\nimport {\n StackItemHeading,\n StackItemHeadingLabel,\n type StackItemHeadingProps,\n type StackItemHeadingLabelProps,\n} from './StackItemHeading';\nimport { StackItemResizeHandle } from './StackItemResizeHandle';\nimport {\n StackItemSigil,\n type StackItemSigilProps,\n type StackItemSigilAction,\n type StackItemSigilButtonProps,\n StackItemSigilButton,\n} from './StackItemSigil';\n\nexport type StackItemSize = number | 'min-content';\nexport const DEFAULT_HORIZONTAL_SIZE = 44 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\nexport type StackItemData = { id: string; type: 'column' | 'card' };\n\nexport type StackItemRootProps = ThemedClassName<ComponentPropsWithRef<'div'>> & {\n item: Omit<StackItemData, 'type'>;\n order?: number;\n onRearrange?: (source: StackItemData, target: StackItemData, closestEdge: Edge | null) => void;\n size?: StackItemSize;\n onSizeChange?: (nextSize: StackItemSize) => void;\n role?: 'article' | 'section';\n};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n (\n { item, children, classNames, onRearrange, size: propsSize, onSizeChange, role, order, style, ...props },\n forwardedRef,\n ) => {\n const [itemElement, itemRef] = useState<HTMLDivElement | null>(null);\n const [selfDragHandleElement, selfDragHandleRef] = useState<HTMLDivElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const { orientation, rail, separators } = useStack();\n const [size = orientation === 'horizontal' ? DEFAULT_HORIZONTAL_SIZE : DEFAULT_VERTICAL_SIZE, setInternalSize] =\n useState(propsSize);\n\n const Root = role ?? 'div';\n\n const composedItemRef = composeRefs<HTMLDivElement>(itemRef, forwardedRef);\n\n const setSize = useCallback(\n (nextSize: StackItemSize, commit?: boolean) => {\n setInternalSize(nextSize);\n if (commit) {\n onSizeChange?.(nextSize);\n }\n },\n [onSizeChange],\n );\n\n const type = orientation === 'horizontal' ? 'column' : 'card';\n\n useLayoutEffect(() => {\n if (!itemElement || !onRearrange) {\n return;\n }\n return combine(\n draggable({\n element: itemElement,\n ...(selfDragHandleElement && { dragHandle: selfDragHandleElement }),\n getInitialData: () => ({ id: item.id, type }),\n }),\n dropTargetForElements({\n element: itemElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type },\n { input, element, allowedEdges: orientation === 'horizontal' ? ['left', 'right'] : ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [orientation, item, onRearrange, selfDragHandleElement, itemElement]);\n\n const focusGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusGroupAttrs}\n className={mx(\n 'group/stack-item grid relative ch-focus-ring-inset-over-all',\n size === 'min-content' && (orientation === 'horizontal' ? 'is-min' : 'bs-min'),\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n separators && (orientation === 'horizontal' ? 'divide-separator divide-y' : 'divide-separator divide-x'),\n classNames,\n )}\n data-dx-stack-item\n style={{\n ...(size !== 'min-content' && {\n [orientation === 'horizontal' ? 'inlineSize' : 'blockSize']: `${size}rem`,\n }),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {closestEdge && <DropIndicator edge={closestEdge} />}\n </Root>\n </StackItemContext.Provider>\n );\n },\n);\n\nexport const StackItem = {\n Root: StackItemRoot,\n Content: StackItemContent,\n Heading: StackItemHeading,\n HeadingLabel: StackItemHeadingLabel,\n ResizeHandle: StackItemResizeHandle,\n Sigil: StackItemSigil,\n SigilButton: StackItemSigilButton,\n};\n\nexport type {\n StackItemContentProps,\n StackItemHeadingProps,\n StackItemHeadingLabelProps,\n StackItemSigilProps,\n StackItemSigilButtonProps,\n StackItemSigilAction,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack } from './StackContext';\n\nexport type StackItemContentProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n toolbar?: boolean;\n statusbar?: boolean;\n contentSize?: 'cover' | 'intrinsic';\n};\n\nexport const StackItemContent = ({\n children,\n toolbar = true,\n statusbar,\n contentSize = 'cover',\n classNames,\n ...props\n}: StackItemContentProps) => {\n const { size, separators } = useStack();\n\n return (\n <div\n role='none'\n {...props}\n className={mx(\n 'group grid grid-cols-[100%]',\n size === 'contain' && 'min-bs-0 overflow-hidden',\n separators && 'divide-separator divide-y',\n classNames,\n )}\n style={{\n gridTemplateRows: [\n ...(toolbar ? ['var(--rail-action)'] : []),\n '1fr',\n ...(statusbar ? ['var(--statusbar-size)'] : []),\n ].join(' '),\n }}\n >\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport React, { type ComponentPropsWithoutRef, type ComponentPropsWithRef, forwardRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useAttention, type AttendableId, type Related } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, useStackItem } from './StackContext';\n\nexport type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nexport const StackItemHeading = ({ children, classNames, ...props }: StackItemHeadingProps) => {\n const { orientation } = useStack();\n const { selfDragHandleRef } = useStackItem();\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n return (\n <div\n role='heading'\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'flex items-center ch-focus-ring-inset-over-all relative !border-is-0',\n orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',\n classNames,\n )}\n ref={selfDragHandleRef}\n >\n {children}\n </div>\n );\n};\n\nexport type StackItemHeadingLabelProps = ThemedClassName<ComponentPropsWithRef<'h1'>> & AttendableId & Related;\n\nexport const StackItemHeadingLabel = forwardRef<HTMLHeadingElement, StackItemHeadingLabelProps>(\n ({ attendableId, related, classNames, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n return (\n <h1\n {...props}\n data-attention={((related && isRelated) || hasAttention || isAncestor).toString()}\n className={mx(\n 'pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText',\n classNames,\n )}\n ref={forwardedRef}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, useStackItem } from './StackContext';\nimport { DEFAULT_EXTRINSIC_SIZE, type StackItemSize } from './StackItem';\n\nconst REM = parseFloat(getComputedStyle(document.documentElement).fontSize);\n\nconst MIN_SIZE = 20;\n\nconst measureStackItem = (element: HTMLButtonElement): { width: number; height: number } => {\n const stackItemElement = element.closest('[data-dx-stack-item]');\n return stackItemElement?.getBoundingClientRect() ?? { width: DEFAULT_EXTRINSIC_SIZE, height: DEFAULT_EXTRINSIC_SIZE };\n};\n\nconst getNextSize = (startSize: number, location: DragLocationHistory, client: 'clientX' | 'clientY') => {\n return Math.max(MIN_SIZE, startSize + (location.current.input[client] - location.initial.input[client]) / REM);\n};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dragStartSize = useRef<StackItemSize>(size);\n const client = orientation === 'horizontal' ? 'clientX' : 'clientY';\n\n useLayoutEffect(\n () => {\n if (!buttonRef.current || buttonRef.current.hasAttribute('draggable')) {\n return;\n }\n // TODO(thure): This should handle StackItem state vs local state better.\n draggable({\n element: buttonRef.current,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // we will be moving the line to indicate a drag\n // we can disable the native drag preview\n disableNativeDragPreview({ nativeSetDragImage });\n // we don't want any native drop animation for when the user\n // does not drop on a drop target. we want the drag to finish immediately\n preventUnhandled.start();\n },\n onDragStart: () => {\n dragStartSize.current =\n dragStartSize.current === 'min-content'\n ? measureStackItem(buttonRef.current!)[orientation === 'horizontal' ? 'width' : 'height'] / REM\n : dragStartSize.current;\n },\n onDrag: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n setSize(getNextSize(dragStartSize.current, location, client));\n },\n onDrop: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n const nextSize = getNextSize(dragStartSize.current, location, client);\n setSize(nextSize, true);\n dragStartSize.current = nextSize;\n },\n });\n },\n [\n // Note that `size` should not be a dependency here since dragging this adjusts the size.\n ],\n );\n\n return (\n <button\n ref={buttonRef}\n className={mx(\n orientation === 'horizontal' ? 'cursor-col-resize' : 'cursor-row-resize',\n 'group absolute is-3 bs-full inline-end-[-1px] !border-lb-0',\n 'before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100',\n 'before:absolute before:block before:inset-block-0 before:inline-end-0 before:is-1 before:bg-accentFocusIndicator',\n )}\n >\n <div\n role='none'\n className='absolute block-start-0 inline-end-[1px] bs-[--rail-size] flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0'\n >\n <DragHandleSignifier />\n </div>\n </button>\n );\n};\n\nconst DragHandleSignifier = () => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 256 256'\n fill='currentColor'\n className='shrink-0 bs-[1em] is-[1em] text-unAccent'\n >\n {/* two pips: <path d='M256,120c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' /> */}\n <path d='M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,120c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,176c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n </svg>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, type PropsWithChildren, forwardRef, useRef, useState } from 'react';\n\nimport { type ActionLike } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport {\n Button,\n type ButtonProps,\n DropdownMenu,\n Icon,\n toLocalizedString,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { type AttendableId, type Related, useAttention } from '@dxos/react-ui-attention';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { MenuSignifierHorizontal } from './MenuSignifier';\nimport { translationKey } from '../translations';\n\nexport type KeyBinding = {\n windows?: string;\n macos?: string;\n ios?: string;\n linux?: string;\n unknown?: string;\n};\n\nexport type StackItemSigilAction = Pick<ActionLike, 'id' | 'properties' | 'data'>;\n\nexport type StackItemSigilButtonProps = Omit<ButtonProps, 'variant'> & AttendableId & Related;\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['m-1 shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative', classNames]}\n ref={forwardedRef}\n >\n <MenuSignifierHorizontal />\n {children}\n </Button>\n );\n },\n);\n\nexport type StackItemSigilProps = PropsWithChildren<\n {\n attendableId?: string;\n triggerLabel: string;\n actions?: StackItemSigilAction[][];\n icon: string;\n onAction?: (action: StackItemSigilAction) => void;\n } & Related\n>;\n\nexport const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>(\n ({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const suppressNextTooltip = useRef(false);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild ref={forwardedRef}>\n <StackItemSigilButton attendableId={attendableId} related={related}>\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {actionGroups?.map((actions, index) => {\n const separator = index > 0 ? <DropdownMenu.Separator /> : null;\n return (\n <Fragment key={index}>\n {separator}\n {actions.map((action) => {\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n\n const menuItemType = action.properties.menuItemType;\n const Root = menuItemType === 'toggle' ? DropdownMenu.CheckboxItem : DropdownMenu.Item;\n\n return (\n <Root\n key={action.id}\n onClick={(event) => {\n if (action.properties.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n suppressNextTooltip.current = true;\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties.disabled}\n checked={menuItemType === 'toggle' ? action.properties.isChecked : undefined}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon icon={action.properties.icon ?? 'ph--placeholder--regular'} size={4} />\n <span className='grow truncate'>{toLocalizedString(action.properties.label ?? '', t)}</span>\n {menuItemType === 'toggle' && (\n <DropdownMenu.ItemIndicator asChild>\n <Icon icon='ph--check--regular' size={4} />\n </DropdownMenu.ItemIndicator>\n )}\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </Root>\n );\n })}\n </Fragment>\n );\n })}\n {children}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <Tooltip.Portal>\n <Tooltip.Content style={{ zIndex: 70 }} side='bottom'>\n {triggerLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nexport const MenuSignifierHorizontal = () => (\n <svg\n className='absolute block-end-[7px]'\n width={20}\n height={2}\n viewBox='0 0 20 2'\n stroke='currentColor'\n opacity={0.5}\n >\n <line\n x1={0.5}\n y1={0.75}\n x2={19}\n y2={0.75}\n strokeWidth={1.25}\n strokeLinecap='round'\n strokeDasharray='6 20'\n strokeDashoffset='-6.5'\n />\n </svg>\n);\n\nexport const MenuSignifierVertical = () => (\n <svg className='absolute inline-start-1' width={2} height={18} viewBox='0 0 2 18' stroke='currentColor'>\n <line x1={1} y1={3} x2={1} y2={18} strokeWidth={1.5} strokeLinecap='round' strokeDasharray='0 6' />\n </svg>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'stack';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\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 'solo plank label': 'Toggle solo mode',\n 'close label': 'Close',\n 'minify label': 'Minify',\n },\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 { translationKey } from '../translations';\n\nexport type LayoutControlEvent = 'solo' | 'close' | `${'pin' | 'increment'}-${'start' | 'end'}`;\nexport type LayoutControlHandler = (event: LayoutControlEvent) => void;\n\nexport type LayoutCapabilities = {\n incrementStart?: boolean;\n incrementEnd?: boolean;\n solo?: boolean;\n};\n\nexport type LayoutControlsProps = Omit<ButtonGroupProps, 'onClick'> & {\n onClick?: LayoutControlHandler;\n variant?: 'hide-disabled' | 'default';\n close?: boolean | 'minify-start' | 'minify-end';\n capabilities: LayoutCapabilities;\n isSolo?: boolean;\n pin?: 'start' | 'end' | 'both';\n};\n\nconst LayoutControl = ({ 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} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom' classNames='z-[70]'>\n {label}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport const LayoutControls = forwardRef<HTMLDivElement, LayoutControlsProps>(\n (\n { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, ...props },\n forwardedRef,\n ) => {\n const { t } = useTranslation(translationKey);\n const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden !p-1' : '!p-1';\n\n return (\n <ButtonGroup {...props} ref={forwardedRef}>\n {pin && !isSolo && ['both', 'start'].includes(pin) && (\n <LayoutControl\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 <LayoutControl\n label={t('solo layout label')}\n classNames={buttonClassNames}\n onClick={() => onClick?.('solo')}\n icon={isSolo ? 'ph--arrows-in--regular' : 'ph--arrows-out--regular'}\n />\n )}\n\n {!isSolo && can.solo && (\n <>\n <LayoutControl\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 <LayoutControl\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 <LayoutControl\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 <LayoutControl\n label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}\n classNames={buttonClassNames}\n onClick={() => onClick?.('close')}\n data-testid='layoutHeading.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--minus--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_tabster", "import_react_ui_theme", "import_adapter", "import_react_ui_attention", "import_react_ui", "StackContext", "createContext", "orientation", "rail", "size", "separators", "useStack", "useContext", "StackItemContext", "selfDragHandleRef", "setSize", "useStackItem", "railGridHorizontal", "railGridVertical", "Stack", "forwardRef", "children", "classNames", "style", "itemsCount", "Children", "count", "props", "forwardedRef", "arrowNavigationGroup", "useArrowNavigationGroup", "axis", "styles", "React", "Provider", "value", "div", "className", "mx", "aria-orientation", "ref", "StackItemContent", "toolbar", "statusbar", "contentSize", "role", "gridTemplateRows", "join", "StackItemHeading", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "tabIndex", "StackItemHeadingLabel", "attendableId", "related", "hasAttention", "isAncestor", "isRelated", "useAttention", "h1", "data-attention", "toString", "REM", "parseFloat", "getComputedStyle", "document", "documentElement", "fontSize", "MIN_SIZE", "measureStackItem", "element", "stackItemElement", "closest", "getBoundingClientRect", "width", "DEFAULT_EXTRINSIC_SIZE", "height", "getNextSize", "startSize", "location", "client", "Math", "max", "current", "input", "initial", "StackItemResizeHandle", "buttonRef", "useRef", "dragStartSize", "useLayoutEffect", "hasAttribute", "draggable", "onGenerateDragPreview", "nativeSetDragImage", "disableNativeDragPreview", "preventUnhandled", "start", "onDragStart", "onDrag", "onDrop", "nextSize", "button", "DragHandleSignifier", "svg", "xmlns", "viewBox", "fill", "path", "d", "MenuSignifierHorizontal", "stroke", "opacity", "line", "x1", "y1", "x2", "y2", "strokeWidth", "strokeLinecap", "strokeDasharray", "strokeDashoffset", "translationKey", "StackItemSigilButton", "variant", "Button", "StackItemSigil", "actions", "actionGroups", "onAction", "triggerLabel", "icon", "t", "useTranslation", "suppressNextTooltip", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "triggerTooltipOpen", "setTriggerTooltipOpen", "Tooltip", "Root", "open", "onOpenChange", "nextOpen", "DropdownMenu", "Trigger", "asChild", "span", "Icon", "Portal", "Content", "Viewport", "map", "index", "separator", "Separator", "Fragment", "key", "action", "shortcut", "properties", "keyBinding", "getHostPlatform", "menuItemType", "CheckboxItem", "Item", "id", "onClick", "event", "disabled", "stopPropagation", "checked", "isChecked", "undefined", "testId", "toLocalizedString", "label", "ItemIndicator", "descriptionText", "keySymbols", "Arrow", "zIndex", "side", "DEFAULT_HORIZONTAL_SIZE", "DEFAULT_VERTICAL_SIZE", "StackItemRoot", "item", "onRearrange", "propsSize", "onSizeChange", "order", "itemElement", "itemRef", "selfDragHandleElement", "closestEdge", "setEdge", "setInternalSize", "composedItemRef", "composeRefs", "useCallback", "commit", "type", "combine", "dragHandle", "getInitialData", "dropTargetForElements", "getData", "attachClosestEdge", "allowedEdges", "onDragEnter", "self", "source", "data", "extractClosestEdge", "onDragLeave", "focusGroupAttrs", "data-dx-stack-item", "Number", "isFinite", "DropIndicator", "edge", "StackItem", "Heading", "HeadingLabel", "ResizeHandle", "Sigil", "SigilButton", "LayoutControl", "LayoutControls", "capabilities", "can", "isSolo", "pin", "close", "buttonClassNames", "ButtonGroup", "includes", "solo", "incrementStart", "incrementEnd", "data-testid"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-stack/src/components/CaretDownUp.tsx":{"bytes":3080,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/components/style-fragments.ts":{"bytes":707,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/translations.ts":{"bytes":2050,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/components/Section.tsx":{"bytes":39706,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/CaretDownUp.tsx","kind":"import-statement","original":"./CaretDownUp"},{"path":"packages/ui/react-ui-stack/src/components/style-fragments.ts","kind":"import-statement","original":"./style-fragments"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytes":16642,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-resize-detector","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/Section.tsx","kind":"import-statement","original":"./Section"},{"path":"packages/ui/react-ui-stack/src/components/style-fragments.ts","kind":"import-statement","original":"./style-fragments"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/index.ts":{"bytes":832,"imports":[{"path":"packages/ui/react-ui-stack/src/components/Stack.tsx","kind":"import-statement","original":"./Stack"},{"path":"packages/ui/react-ui-stack/src/components/Section.tsx","kind":"import-statement","original":"./Section"}],"format":"esm"},"packages/ui/react-ui-stack/src/index.ts":{"bytes":718,"imports":[{"path":"packages/ui/react-ui-stack/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/testing/generator.ts":{"bytes":12324,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytes":7412,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytes":612,"imports":[{"path":"packages/ui/react-ui-stack/src/testing/generator.ts","kind":"import-statement","original":"./generator"},{"path":"packages/ui/react-ui-stack/src/testing/stack-manager.ts","kind":"import-statement","original":"./stack-manager"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-stack/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33628},"packages/ui/react-ui-stack/dist/lib/node/index.cjs":{"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-resize-detector","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["DEFAULT_TYPE","SectionToolbar","Stack","sectionToolbarLayout","translations"],"entryPoint":"packages/ui/react-ui-stack/src/index.ts","inputs":{"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytesInOutput":3542},"packages/ui/react-ui-stack/src/components/Section.tsx":{"bytesInOutput":10044},"packages/ui/react-ui-stack/src/components/CaretDownUp.tsx":{"bytesInOutput":779},"packages/ui/react-ui-stack/src/components/style-fragments.ts":{"bytesInOutput":79},"packages/ui/react-ui-stack/src/translations.ts":{"bytesInOutput":508},"packages/ui/react-ui-stack/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/index.ts":{"bytesInOutput":0}},"bytes":15510},"packages/ui/react-ui-stack/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9955},"packages/ui/react-ui-stack/dist/lib/node/testing/index.cjs":{"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"exports":["Priority","SectionManager","StackManager","Status","TestObjectGenerator","defaultGenerators","range"],"entryPoint":"packages/ui/react-ui-stack/src/testing/index.ts","inputs":{"packages/ui/react-ui-stack/src/testing/generator.ts":{"bytesInOutput":2244},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytesInOutput":1569}},"bytes":4083}}}
1
+ {"inputs":{"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytes":2741,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytes":7327,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytes":3733,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytes":6082,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytes":14860,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"packages/ui/react-ui-stack/src/components/StackItem.tsx","kind":"import-statement","original":"./StackItem"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytes":3282,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/translations.ts":{"bytes":2010,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytes":20212,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx","kind":"import-statement","original":"./MenuSignifier"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytes":20108,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"packages/ui/react-ui-stack/src/components/StackItemContent.tsx","kind":"import-statement","original":"./StackItemContent"},{"path":"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx","kind":"import-statement","original":"./StackItemHeading"},{"path":"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx","kind":"import-statement","original":"./StackItemResizeHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx","kind":"import-statement","original":"./StackItemSigil"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytes":11771,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/index.ts":{"bytes":701,"imports":[{"path":"packages/ui/react-ui-stack/src/components/Stack.tsx","kind":"import-statement","original":"./Stack"},{"path":"packages/ui/react-ui-stack/src/components/StackItem.tsx","kind":"import-statement","original":"./StackItem"},{"path":"packages/ui/react-ui-stack/src/components/LayoutControls.tsx","kind":"import-statement","original":"./LayoutControls"}],"format":"esm"},"packages/ui/react-ui-stack/src/index.ts":{"bytes":718,"imports":[{"path":"packages/ui/react-ui-stack/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-stack/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytes":7183,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytes":711,"imports":[{"path":"packages/ui/react-ui-stack/src/testing/stack-manager.ts","kind":"import-statement","original":"./stack-manager"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-stack/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":48064},"packages/ui/react-ui-stack/dist/lib/node/index.cjs":{"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["DEFAULT_EXTRINSIC_SIZE","DEFAULT_HORIZONTAL_SIZE","DEFAULT_VERTICAL_SIZE","LayoutControls","Stack","StackContext","StackItem","railGridHorizontal","railGridVertical","translations"],"entryPoint":"packages/ui/react-ui-stack/src/index.ts","inputs":{"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytesInOutput":1616},"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytesInOutput":428},"packages/ui/react-ui-stack/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytesInOutput":4562},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytesInOutput":720},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytesInOutput":1350},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytesInOutput":3741},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytesInOutput":4909},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytesInOutput":442},"packages/ui/react-ui-stack/src/translations.ts":{"bytesInOutput":492},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytesInOutput":3060},"packages/ui/react-ui-stack/src/index.ts":{"bytesInOutput":0}},"bytes":22392},"packages/ui/react-ui-stack/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3597},"packages/ui/react-ui-stack/dist/lib/node/testing/index.cjs":{"imports":[],"exports":["SectionManager","StackManager"],"entryPoint":"packages/ui/react-ui-stack/src/testing/index.ts","inputs":{"packages/ui/react-ui-stack/src/testing/stack-manager.ts":{"bytesInOutput":1516},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytesInOutput":0}},"bytes":1655}}}
@@ -18,123 +18,23 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var testing_exports = {};
20
20
  __export(testing_exports, {
21
- Priority: () => Priority,
22
21
  SectionManager: () => SectionManager,
23
- StackManager: () => StackManager,
24
- Status: () => Status,
25
- TestObjectGenerator: () => TestObjectGenerator,
26
- defaultGenerators: () => defaultGenerators,
27
- range: () => range
22
+ StackManager: () => StackManager
28
23
  });
29
24
  module.exports = __toCommonJS(testing_exports);
30
- var import_echo_schema = require("@dxos/echo-schema");
31
- var import_random = require("@dxos/random");
32
- var range = (fn, length) => Array.from({
33
- length
34
- }).map((_, i) => fn(i)).filter(Boolean);
35
- var createFactory = ({ createSchema, createData }) => {
36
- const schema = createSchema?.();
37
- return {
38
- schema,
39
- createObject: () => schema ? (0, import_echo_schema.create)(schema, createData()) : (0, import_echo_schema.create)(createData())
40
- };
41
- };
42
- var Status = [
43
- "pending",
44
- "active",
45
- "done"
46
- ];
47
- var Priority = [
48
- 1,
49
- 2,
50
- 3,
51
- 4,
52
- 5
53
- ];
54
- var defaultGenerators = {
55
- document: {
56
- createData: () => ({
57
- title: import_random.faker.lorem.sentence(3),
58
- body: import_random.faker.lorem.sentences({
59
- min: 1,
60
- max: import_random.faker.number.int({
61
- min: 1,
62
- max: 3
63
- })
64
- })
65
- })
66
- },
67
- image: {
68
- createData: () => ({
69
- title: import_random.faker.lorem.sentence(3),
70
- image: import_random.faker.helpers.arrayElement(data.images),
71
- body: import_random.faker.datatype.boolean() ? import_random.faker.lorem.sentences() : void 0
72
- })
73
- },
74
- project: {
75
- createSchema: () => import_echo_schema.S.Struct({
76
- title: import_echo_schema.S.String,
77
- repo: import_echo_schema.S.String,
78
- status: import_echo_schema.S.String,
79
- priority: import_echo_schema.S.Number
80
- }),
81
- createData: () => ({
82
- title: import_random.faker.commerce.productName(),
83
- repo: import_random.faker.datatype.boolean({
84
- probability: 0.3
85
- }) ? import_random.faker.internet.url() : void 0,
86
- status: import_random.faker.helpers.arrayElement(Status),
87
- priority: import_random.faker.helpers.arrayElement(Priority)
88
- })
89
- }
90
- };
91
- var TestObjectGenerator = class {
92
- constructor({ types, factories } = {}) {
93
- this.factories = factories ?? (types ?? Object.keys(defaultGenerators)).reduce((acc, type) => {
94
- acc[type] = createFactory(defaultGenerators[type]);
95
- return acc;
96
- }, {});
97
- }
98
- get schema() {
99
- return Object.values(this.factories).map((f) => f.schema);
100
- }
101
- createObject({ types } = {}) {
102
- const type = import_random.faker.helpers.arrayElement(types ?? Object.keys(this.factories));
103
- const factory = this.factories[type];
104
- return factory?.createObject();
105
- }
106
- createObjects({ types, length }) {
107
- return range(() => this.createObject({
108
- types
109
- }), length);
110
- }
111
- };
112
- var data = {
113
- images: [
114
- "/images/image-1.png",
115
- "/images/image-2.png",
116
- "/images/image-3.png",
117
- "/images/image-4.png",
118
- "/images/image-5.png",
119
- "/images/image-6.png"
120
- ]
121
- };
122
25
  var StackManager = class {
123
26
  constructor(locator) {
124
27
  this.locator = locator;
125
28
  this._page = locator.page();
126
29
  }
127
- empty() {
128
- return this.locator.getByTestId("stack.empty");
129
- }
130
30
  sections() {
131
- return this.locator.locator("li");
31
+ return this.locator.locator("section");
132
32
  }
133
33
  order() {
134
- return this.locator.locator("li").evaluateAll((els) => els.map((el) => el.getAttribute("id")));
34
+ return this.locator.locator("section").evaluateAll((els) => els.map((el) => el.getAttribute("id")));
135
35
  }
136
36
  section(index) {
137
- return new SectionManager(this.locator.locator("li").nth(index));
37
+ return new SectionManager(this.locator.locator("section").nth(index));
138
38
  }
139
39
  };
140
40
  var SectionManager = class {
@@ -175,12 +75,7 @@ var SectionManager = class {
175
75
  };
176
76
  // Annotate the CommonJS export names for ESM import in node:
177
77
  0 && (module.exports = {
178
- Priority,
179
78
  SectionManager,
180
- StackManager,
181
- Status,
182
- TestObjectGenerator,
183
- defaultGenerators,
184
- range
79
+ StackManager
185
80
  });
186
81
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/testing/generator.ts", "../../../../src/testing/stack-manager.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { create, type ReactiveObject, S } from '@dxos/echo-schema';\nimport { faker } from '@dxos/random';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/react-ui/testing.\n\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Util.\nexport const range = <T>(fn: (i: number) => T | undefined, length: number): T[] =>\n Array.from({ length })\n .map((_, i) => fn(i))\n .filter(Boolean) as T[];\n\n// TODO(burdon): Commit to using ECHO to generate all test data? Or convert from raw data?\nexport type TestItem = { id: string; type: string } & Record<string, any>;\n\ntype ObjectDataGenerator = {\n createSchema?: () => S.Schema<any>;\n createData: () => any;\n};\n\ntype ObjectFactory<T extends ReactiveObject<any>> = {\n schema?: S.Schema<any>; // TODO(burdon): Support both typed and expando schema.\n createObject: () => T;\n};\n\ntype ObjectFactoryMap = { [type: string]: ObjectFactory<any> };\n\nconst createFactory = ({ createSchema, createData }: ObjectDataGenerator) => {\n const schema = createSchema?.();\n return {\n schema,\n createObject: () => (schema ? create(schema, createData()) : create(createData())),\n };\n};\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport const defaultGenerators: { [type: string]: ObjectDataGenerator } = {\n document: {\n createData: () => ({\n title: faker.lorem.sentence(3),\n body: faker.lorem.sentences({ min: 1, max: faker.number.int({ min: 1, max: 3 }) }),\n }),\n },\n\n image: {\n createData: () => ({\n title: faker.lorem.sentence(3),\n image: faker.helpers.arrayElement(data.images),\n body: faker.datatype.boolean() ? faker.lorem.sentences() : undefined,\n }),\n },\n\n project: {\n createSchema: () =>\n S.Struct({\n title: S.String,\n repo: S.String,\n status: S.String,\n priority: S.Number,\n }),\n createData: () => ({\n title: faker.commerce.productName(),\n repo: faker.datatype.boolean({ probability: 0.3 }) ? faker.internet.url() : undefined,\n status: faker.helpers.arrayElement(Status),\n priority: faker.helpers.arrayElement(Priority),\n }),\n },\n};\n\n/**\n * Typed object generator.\n * @deprecated\n */\n// TODO(wittjosiah): Remove.\nexport class TestObjectGenerator {\n public readonly factories: ObjectFactoryMap;\n\n constructor({ types, factories }: { types?: string[]; factories?: ObjectFactoryMap } = {}) {\n this.factories =\n factories ??\n (types ?? Object.keys(defaultGenerators)).reduce<ObjectFactoryMap>((acc, type) => {\n acc[type] = createFactory(defaultGenerators[type]);\n return acc;\n }, {});\n }\n\n get schema(): S.Schema<any>[] {\n return Object.values(this.factories).map((f) => f.schema!);\n }\n\n createObject({ types }: { types?: string[] } = {}) {\n const type = faker.helpers.arrayElement(types ?? Object.keys(this.factories));\n const factory = this.factories[type];\n return factory?.createObject();\n }\n\n createObjects({ types, length }: { types?: string[]; length: number }) {\n return range(() => this.createObject({ types }), length);\n }\n}\n\n// https://unsplash.com\n// TODO(burdon): Use https://picsum.photos?\nconst data = {\n images: [\n '/images/image-1.png',\n '/images/image-2.png',\n '/images/image-3.png',\n '/images/image-4.png',\n '/images/image-5.png',\n '/images/image-6.png',\n ],\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { Locator, Page } from '@playwright/test';\n\nexport class StackManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n empty() {\n return this.locator.getByTestId('stack.empty');\n }\n\n sections() {\n return this.locator.locator('li');\n }\n\n order() {\n return this.locator.locator('li').evaluateAll((els) => els.map((el) => el.getAttribute('id')));\n }\n\n section(index: number) {\n return new SectionManager(this.locator.locator('li').nth(index));\n }\n}\n\nexport class SectionManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n async id() {\n return this.locator.getAttribute('id');\n }\n\n async remove() {\n await this.locator.getByTestId('section.drag-handle-menu-trigger').click();\n await this._page.getByTestId('section.remove').click();\n }\n\n async navigateTo() {\n await this.locator.getByTestId('section.drag-handle-menu-trigger').click();\n await this._page.getByTestId('section.navigate-to').click();\n }\n\n async dragTo(target: Locator, offset: { x: number; y: number } = { x: 0, y: 0 }) {\n const active = this.locator.getByTestId('section.drag-handle-menu-trigger');\n const box = await target.boundingBox();\n if (box) {\n await active.hover();\n await this._page.mouse.down();\n // Timeouts are for input discretization in WebKit\n await this._page.waitForTimeout(100);\n await this._page.pause();\n await this._page.mouse.move(offset.x + box.x + box.width / 2, offset.y + box.y + box.height / 2, { steps: 4 });\n await this._page.pause();\n await this._page.waitForTimeout(100);\n await this._page.mouse.up();\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["range", "fn", "length", "Array", "from", "map", "_", "i", "filter", "Boolean", "createFactory", "createSchema", "createData", "schema", "createObject", "create", "Status", "Priority", "defaultGenerators", "document", "title", "faker", "lorem", "sentence", "body", "sentences", "min", "max", "number", "int", "image", "helpers", "arrayElement", "data", "images", "datatype", "boolean", "undefined", "project", "S", "Struct", "String", "repo", "status", "priority", "Number", "commerce", "productName", "probability", "internet", "url", "TestObjectGenerator", "constructor", "types", "factories", "Object", "keys", "reduce", "acc", "type", "values", "f", "factory", "createObjects", "StackManager", "locator", "_page", "page", "empty", "getByTestId", "sections", "order", "evaluateAll", "els", "el", "getAttribute", "section", "index", "SectionManager", "nth", "id", "remove", "click", "navigateTo", "dragTo", "target", "offset", "x", "y", "active", "box", "boundingBox", "hover", "mouse", "down", "waitForTimeout", "pause", "move", "width", "height", "steps", "up"]
3
+ "sources": ["../../../../src/testing/stack-manager.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport type { Locator, Page } from '@playwright/test';\n\nexport class StackManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n sections() {\n return this.locator.locator('section');\n }\n\n order() {\n return this.locator.locator('section').evaluateAll((els) => els.map((el) => el.getAttribute('id')));\n }\n\n section(index: number) {\n return new SectionManager(this.locator.locator('section').nth(index));\n }\n}\n\nexport class SectionManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n async id() {\n return this.locator.getAttribute('id');\n }\n\n async remove() {\n await this.locator.getByTestId('section.drag-handle-menu-trigger').click();\n await this._page.getByTestId('section.remove').click();\n }\n\n async navigateTo() {\n await this.locator.getByTestId('section.drag-handle-menu-trigger').click();\n await this._page.getByTestId('section.navigate-to').click();\n }\n\n async dragTo(target: Locator, offset: { x: number; y: number } = { x: 0, y: 0 }) {\n const active = this.locator.getByTestId('section.drag-handle-menu-trigger');\n const box = await target.boundingBox();\n if (box) {\n await active.hover();\n await this._page.mouse.down();\n // Timeouts are for input discretization in WebKit\n await this._page.waitForTimeout(100);\n await this._page.pause();\n await this._page.mouse.move(offset.x + box.x + box.width / 2, offset.y + box.y + box.height / 2, { steps: 4 });\n await this._page.pause();\n await this._page.waitForTimeout(100);\n await this._page.mouse.up();\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,eAAN,MAAMA;EAGXC,YAAqBC,SAAkB;SAAlBA,UAAAA;AACnB,SAAKC,QAAQD,QAAQE,KAAI;EAC3B;EAEAC,WAAW;AACT,WAAO,KAAKH,QAAQA,QAAQ,SAAA;EAC9B;EAEAI,QAAQ;AACN,WAAO,KAAKJ,QAAQA,QAAQ,SAAA,EAAWK,YAAY,CAACC,QAAQA,IAAIC,IAAI,CAACC,OAAOA,GAAGC,aAAa,IAAA,CAAA,CAAA;EAC9F;EAEAC,QAAQC,OAAe;AACrB,WAAO,IAAIC,eAAe,KAAKZ,QAAQA,QAAQ,SAAA,EAAWa,IAAIF,KAAAA,CAAAA;EAChE;AACF;AAEO,IAAMC,iBAAN,MAAMA;EAGXb,YAAqBC,SAAkB;SAAlBA,UAAAA;AACnB,SAAKC,QAAQD,QAAQE,KAAI;EAC3B;EAEA,MAAMY,KAAK;AACT,WAAO,KAAKd,QAAQS,aAAa,IAAA;EACnC;EAEA,MAAMM,SAAS;AACb,UAAM,KAAKf,QAAQgB,YAAY,kCAAA,EAAoCC,MAAK;AACxE,UAAM,KAAKhB,MAAMe,YAAY,gBAAA,EAAkBC,MAAK;EACtD;EAEA,MAAMC,aAAa;AACjB,UAAM,KAAKlB,QAAQgB,YAAY,kCAAA,EAAoCC,MAAK;AACxE,UAAM,KAAKhB,MAAMe,YAAY,qBAAA,EAAuBC,MAAK;EAC3D;EAEA,MAAME,OAAOC,QAAiBC,SAAmC;IAAEC,GAAG;IAAGC,GAAG;EAAE,GAAG;AAC/E,UAAMC,SAAS,KAAKxB,QAAQgB,YAAY,kCAAA;AACxC,UAAMS,MAAM,MAAML,OAAOM,YAAW;AACpC,QAAID,KAAK;AACP,YAAMD,OAAOG,MAAK;AAClB,YAAM,KAAK1B,MAAM2B,MAAMC,KAAI;AAE3B,YAAM,KAAK5B,MAAM6B,eAAe,GAAA;AAChC,YAAM,KAAK7B,MAAM8B,MAAK;AACtB,YAAM,KAAK9B,MAAM2B,MAAMI,KAAKX,OAAOC,IAAIG,IAAIH,IAAIG,IAAIQ,QAAQ,GAAGZ,OAAOE,IAAIE,IAAIF,IAAIE,IAAIS,SAAS,GAAG;QAAEC,OAAO;MAAE,CAAA;AAC5G,YAAM,KAAKlC,MAAM8B,MAAK;AACtB,YAAM,KAAK9B,MAAM6B,eAAe,GAAA;AAChC,YAAM,KAAK7B,MAAM2B,MAAMQ,GAAE;IAC3B;EACF;AACF;",
6
+ "names": ["StackManager", "constructor", "locator", "_page", "page", "sections", "order", "evaluateAll", "els", "map", "el", "getAttribute", "section", "index", "SectionManager", "nth", "id", "remove", "getByTestId", "click", "navigateTo", "dragTo", "target", "offset", "x", "y", "active", "box", "boundingBox", "hover", "mouse", "down", "waitForTimeout", "pause", "move", "width", "height", "steps", "up"]
7
7
  }