@dxos/react-ui-stack 0.8.2-main.f11618f → 0.8.2-staging.42af850
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +484 -422
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +472 -411
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node-esm/index.mjs +484 -422
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/components/{Stack.d.ts → Stack/Stack.d.ts} +4 -1
- package/dist/types/src/components/Stack/Stack.d.ts.map +1 -0
- package/dist/types/src/components/Stack/Stack.stories.d.ts +9 -0
- package/dist/types/src/components/Stack/Stack.stories.d.ts.map +1 -0
- package/dist/types/src/components/Stack/index.d.ts +2 -0
- package/dist/types/src/components/Stack/index.d.ts.map +1 -0
- package/dist/types/src/components/StackContext.d.ts +14 -10
- package/dist/types/src/components/StackContext.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/MenuSignifier.d.ts.map +1 -0
- package/dist/types/src/components/{StackItem.d.ts → StackItem/StackItem.d.ts} +14 -5
- package/dist/types/src/components/StackItem/StackItem.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/StackItem.stories.d.ts +8 -0
- package/dist/types/src/components/StackItem/StackItem.stories.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/StackItemContent.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/StackItemDragHandle.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/StackItemResizeHandle.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/StackItemSigil.d.ts.map +1 -0
- package/dist/types/src/components/StackItem/index.d.ts +2 -0
- package/dist/types/src/components/StackItem/index.d.ts.map +1 -0
- package/dist/types/src/components/defs.d.ts +18 -0
- package/dist/types/src/components/defs.d.ts.map +1 -0
- package/dist/types/src/components/deprecated/LayoutControls.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useStackDropForElements.d.ts +3 -4
- package/dist/types/src/hooks/useStackDropForElements.d.ts.map +1 -1
- package/dist/types/src/testing/stack-manager.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +21 -20
- package/src/components/{Stack.stories.tsx → Stack/Stack.stories.tsx} +29 -17
- package/src/components/{Stack.tsx → Stack/Stack.tsx} +37 -5
- package/src/components/Stack/index.ts +5 -0
- package/src/components/StackContext.tsx +21 -13
- package/src/components/StackItem/StackItem.stories.tsx +49 -0
- package/src/components/{StackItem.tsx → StackItem/StackItem.tsx} +90 -11
- package/src/components/{StackItemContent.tsx → StackItem/StackItemContent.tsx} +1 -1
- package/src/components/{StackItemDragHandle.tsx → StackItem/StackItemDragHandle.tsx} +1 -1
- package/src/components/{StackItemHeading.tsx → StackItem/StackItemHeading.tsx} +3 -2
- package/src/components/{StackItemResizeHandle.tsx → StackItem/StackItemResizeHandle.tsx} +1 -1
- package/src/components/{StackItemSigil.tsx → StackItem/StackItemSigil.tsx} +3 -15
- package/src/components/StackItem/index.ts +5 -0
- package/src/components/defs.ts +26 -0
- package/src/components/{LayoutControls.tsx → deprecated/LayoutControls.tsx} +3 -23
- package/src/components/index.ts +2 -2
- package/src/hooks/useStackDropForElements.ts +3 -4
- package/src/testing/stack-manager.ts +6 -6
- package/dist/types/src/components/LayoutControls.d.ts.map +0 -1
- package/dist/types/src/components/MenuSignifier.d.ts.map +0 -1
- package/dist/types/src/components/Stack.d.ts.map +0 -1
- package/dist/types/src/components/Stack.stories.d.ts +0 -8
- package/dist/types/src/components/Stack.stories.d.ts.map +0 -1
- package/dist/types/src/components/StackItem.d.ts.map +0 -1
- package/dist/types/src/components/StackItemContent.d.ts.map +0 -1
- package/dist/types/src/components/StackItemDragHandle.d.ts.map +0 -1
- package/dist/types/src/components/StackItemHeading.d.ts.map +0 -1
- package/dist/types/src/components/StackItemResizeHandle.d.ts.map +0 -1
- package/dist/types/src/components/StackItemSigil.d.ts.map +0 -1
- /package/dist/types/src/components/{MenuSignifier.d.ts → StackItem/MenuSignifier.d.ts} +0 -0
- /package/dist/types/src/components/{StackItemContent.d.ts → StackItem/StackItemContent.d.ts} +0 -0
- /package/dist/types/src/components/{StackItemDragHandle.d.ts → StackItem/StackItemDragHandle.d.ts} +0 -0
- /package/dist/types/src/components/{StackItemHeading.d.ts → StackItem/StackItemHeading.d.ts} +0 -0
- /package/dist/types/src/components/{StackItemResizeHandle.d.ts → StackItem/StackItemResizeHandle.d.ts} +0 -0
- /package/dist/types/src/components/{StackItemSigil.d.ts → StackItem/StackItemSigil.d.ts} +0 -0
- /package/dist/types/src/components/{LayoutControls.d.ts → deprecated/LayoutControls.d.ts} +0 -0
- /package/src/components/{MenuSignifier.tsx → StackItem/MenuSignifier.tsx} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/Stack.tsx", "../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, { Children, type CSSProperties, type ComponentPropsWithRef, forwardRef, useState, useMemo } from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type StackContextValue, StackContext } from './StackContext';\nimport { useStackDropForElements } from '../hooks';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain' | 'contain-fit-content';\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]]';\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\n// TODO(ZaymonFC): Magic 2px to stop overflow (tabster dummies... ask @thure).\nexport const railGridHorizontalContainFitContent =\n 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_fit-content(calc(100%-var(--rail-size)*2+2px))_[content-end]]';\nexport const railGridVerticalContainFitContent =\n 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_fit-content(calc(100%-var(--rail-size)*2+2px))_[content-end]]';\n\nexport const autoScrollRootAttributes = { 'data-drag-autoscroll': 'idle' };\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n size = 'intrinsic',\n onRearrange,\n itemsCount = Children.count(children),\n ...props\n },\n forwardedRef,\n ) => {\n const [stackElement, stackRef] = useState<HTMLDivElement | null>(null);\n const composedItemRef = composeRefs<HTMLDivElement>(stackRef, forwardedRef);\n const arrowNavigationAttrs = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']:\n `repeat(${itemsCount}, min-content) [tabster-dummies] 0`,\n ...style,\n };\n\n const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);\n\n const { dropping } = useStackDropForElements({\n id: props.id,\n element: stackElement,\n selfDroppable,\n orientation,\n onRearrange,\n });\n\n const gridClasses = useMemo(() => {\n if (!rail) {\n return orientation === 'horizontal' ? 'grid-rows-1 pli-1' : 'grid-cols-1 plb-1';\n }\n if (orientation === 'horizontal') {\n return size === 'contain-fit-content' ? railGridHorizontalContainFitContent : railGridHorizontal;\n } else {\n return size === 'contain-fit-content' ? railGridVerticalContainFitContent : railGridVertical;\n }\n }, [rail, orientation, size]);\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>\n <div\n {...props}\n {...arrowNavigationAttrs}\n className={mx(\n 'grid relative',\n gridClasses,\n (size === 'contain' || size === 'contain-fit-content') &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 max-bs-full bs-full'\n : 'overflow-y-auto min-is-0 max-is-full is-full'),\n classNames,\n )}\n data-rail={rail}\n aria-orientation={orientation}\n style={styles}\n ref={composedItemRef}\n >\n {children}\n {selfDroppable && dropping && (\n <ListItem.DropIndicator\n lineInset={8}\n terminalInset={-8}\n gap={-8}\n edge={orientation === 'horizontal' ? 'left' : 'top'}\n />\n )}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\n\nexport type { StackContextValue };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext, useContext } from 'react';\n\nimport { type Size as DndSize } from '@dxos/react-ui-dnd';\n\nimport { type Orientation, type Size } from './Stack';\n\nexport type StackItemSize = DndSize;\n\nexport type StackItemData = { id: string; type: 'column' | 'card' };\n\nexport type StackItemRearrangeHandler<Data extends { id: string } = StackItemData> = (\n source: Data,\n target: Data,\n closestEdge: Edge | null,\n) => void;\n\nexport type StackContextValue = {\n orientation: Orientation;\n rail: boolean;\n size: Size;\n onRearrange?: StackItemRearrangeHandler;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n orientation: 'vertical',\n rail: true,\n size: 'intrinsic',\n});\n\nexport const useStack = () => useContext(StackContext);\n\nexport type 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 2025 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';\nimport { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { type Orientation } from '../components/Stack';\nimport { type StackItemRearrangeHandler, type StackItemData } from '../components/StackContext';\n\n/**\n * Hook to handle drag and drop functionality for Stack components.\n */\nexport const useStackDropForElements = ({\n element,\n selfDroppable,\n orientation,\n id,\n onRearrange,\n}: {\n element: HTMLDivElement | null;\n selfDroppable: boolean;\n orientation: Orientation;\n id?: string;\n onRearrange?: StackItemRearrangeHandler;\n}) => {\n const [dropping, setDropping] = useState(false);\n\n useLayoutEffect(() => {\n if (!element || !selfDroppable) {\n return;\n }\n\n const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';\n\n return combine(\n dropTargetForElements({\n element,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id, type: orientation === 'horizontal' ? 'card' : 'column' },\n { input, element, allowedEdges: [orientation === 'horizontal' ? 'left' : 'top'] },\n );\n },\n onDragEnter: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDrag: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDragLeave: () => {\n return setDropping(false);\n },\n onDrop: ({ self, source }) => {\n setDropping(false);\n if (source.data.type === acceptSourceType && selfDroppable && onRearrange) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n }),\n autoScrollForElements({ element, getAllowedAxis: () => orientation }),\n );\n }, [element, selfDroppable, orientation, id, onRearrange]);\n\n return { dropping };\n};\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 { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { scrollJustEnoughIntoView } from '@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view';\nimport {\n attachClosestEdge,\n extractClosestEdge,\n type Edge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\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, ListItem } from '@dxos/react-ui';\nimport { resizeAttributes, sizeStyle } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, StackItemContext, type StackItemSize, type StackItemData } from './StackContext';\nimport { StackItemContent, type StackItemContentProps } from './StackItemContent';\nimport { StackItemDragHandle, type StackItemDragHandleProps } from './StackItemDragHandle';\nimport {\n StackItemHeading,\n StackItemHeadingLabel,\n type StackItemHeadingProps,\n type StackItemHeadingLabelProps,\n} from './StackItemHeading';\nimport { StackItemResizeHandle, type StackItemResizeHandleProps } from './StackItemResizeHandle';\nimport {\n StackItemSigil,\n type StackItemSigilProps,\n type StackItemSigilAction,\n type StackItemSigilButtonProps,\n StackItemSigilButton,\n} from './StackItemSigil';\n\n// NOTE: 48rem fills the screen on a MacbookPro with the sidebars closed.\nexport const DEFAULT_HORIZONTAL_SIZE = 48 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\nexport type StackItemRootProps = ThemedClassName<ComponentPropsWithRef<'div'>> & {\n item: Omit<StackItemData, 'type'>;\n order?: number;\n size?: StackItemSize;\n onSizeChange?: (nextSize: StackItemSize) => void;\n role?: 'article' | 'section';\n disableRearrange?: boolean;\n focusIndicatorVariant?: 'over-all' | 'group';\n};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n (\n {\n item,\n children,\n classNames,\n size: propsSize,\n onSizeChange,\n role,\n order,\n style,\n disableRearrange,\n focusIndicatorVariant = 'over-all',\n ...props\n },\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, onRearrange } = 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 || disableRearrange) {\n return;\n }\n\n return combine(\n draggable({\n element: itemElement,\n ...(selfDragHandleElement && { dragHandle: selfDragHandleElement }),\n getInitialData: () => ({ id: item.id, type }),\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n document.body.setAttribute('data-drag-preview', 'true');\n scrollJustEnoughIntoView({ element: source.element });\n const { x, y } = preserveOffsetOnSource({ element: source.element, input: location.current.input })({\n container: (source.element.offsetParent ?? document.body) as HTMLElement,\n });\n nativeSetDragImage?.(source.element, x, y);\n },\n onDragStart: () => {\n document.body.removeAttribute('data-drag-preview');\n itemElement?.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'active');\n },\n onDrop: () => {\n itemElement?.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'idle');\n },\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 focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'group/stack-item grid relative',\n focusIndicatorVariant === 'over-all'\n ? 'dx-focus-ring-inset-over-all'\n : orientation === 'horizontal'\n ? 'dx-focus-ring-group-x'\n : 'dx-focus-ring-group-y',\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n classNames,\n )}\n data-dx-stack-item\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, orientation),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {closestEdge && <ListItem.DropIndicator lineInset={8} terminalInset={-8} 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 DragHandle: StackItemDragHandle,\n Sigil: StackItemSigil,\n SigilButton: StackItemSigilButton,\n};\n\nexport type {\n StackItemContentProps,\n StackItemHeadingProps,\n StackItemHeadingLabelProps,\n StackItemResizeHandleProps,\n StackItemDragHandleProps,\n StackItemSigilProps,\n StackItemSigilButtonProps,\n StackItemSigilAction,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef, forwardRef } 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 /**\n * This flag is required in order to clarify a developer experience that seemed like it needed extra boilerplate\n * (`row-span-2`) or was buggy. See the description of the StackItem.Content component itself for more information.\n */\n toolbar?: boolean;\n\n /**\n * Whether to provide for the layout of a statusbar after the content.\n */\n statusbar?: boolean;\n\n /**\n * Whether to set a certain aspect ratio on the content, including the toolbar and statusbar. This is provided for\n * convenience and consistency; it can instead be specified by the `classNames` or `style` props as needed.\n */\n size?: 'intrinsic' | 'video' | 'square';\n};\n\n/**\n * This component should be used by plugins for rendering content within a stack item, a.k.a. a “plank” or “section”.\n * The `toolbar` flag must be provided since this component provides for the layout of content with the toolbar.\n */\nexport const StackItemContent = forwardRef<HTMLDivElement, StackItemContentProps>(\n ({ children, toolbar, statusbar, classNames, size = 'intrinsic', ...props }, forwardedRef) => {\n const { size: stackItemSize } = useStack();\n\n return (\n <div\n role='none'\n {...props}\n className={mx(\n 'group grid grid-cols-[100%]',\n stackItemSize === 'contain' && 'min-bs-0 overflow-hidden',\n size === 'video' ? 'aspect-video' : size === 'square' && 'aspect-square',\n classNames,\n )}\n style={{\n gridTemplateRows: [\n ...(toolbar ? ['var(--rail-action)'] : []),\n '1fr',\n ...(statusbar ? ['var(--statusbar-size)'] : []),\n ].join(' '),\n }}\n data-popover-collision-boundary={true}\n ref={forwardedRef}\n >\n {children}\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nimport { useStackItem } from './StackContext';\n\nexport type StackItemDragHandleProps = ComponentPropsWithoutRef<'button'> & { asChild: boolean };\n\nexport const StackItemDragHandle = ({ asChild, children }: StackItemDragHandleProps) => {\n const { selfDragHandleRef } = useStackItem();\n\n const Root = asChild ? Slot : 'div';\n\n return (\n <Root ref={selfDragHandleRef} role='button'>\n {children}\n </Root>\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 } from './StackContext';\n\nexport type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nexport const StackItemHeading = ({ children, classNames, ...props }: StackItemHeadingProps) => {\n const { orientation } = useStack();\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <div\n role='heading'\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'flex items-center dx-focus-ring-inset-over-all relative !border-is-0',\n orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',\n classNames,\n )}\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\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 self-center',\n classNames,\n )}\n ref={forwardedRef}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { ResizeHandle } from '@dxos/react-ui-dnd';\n\nimport { useStack, useStackItem } from './StackContext';\nimport { DEFAULT_EXTRINSIC_SIZE } from './StackItem';\n\nconst MIN_WIDTH = 20;\nconst MIN_HEIGHT = 3;\n\nexport type StackItemResizeHandleProps = {};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n\n return (\n <ResizeHandle\n side={orientation === 'horizontal' ? 'inline-end' : 'block-end'}\n fallbackSize={DEFAULT_EXTRINSIC_SIZE}\n minSize={orientation === 'horizontal' ? MIN_WIDTH : MIN_HEIGHT}\n size={size}\n onSizeChange={setSize}\n />\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 { Button, type ButtonProps, DropdownMenu, Icon, toLocalizedString, useTranslation } 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'> &\n AttendableId &\n Related & {\n isMenu?: boolean;\n };\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, isMenu = true, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n // TODO(wittjosiah): Disable hover styles when isMenu is false.\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag', classNames]}\n ref={forwardedRef}\n >\n {isMenu && <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\n const hasActions = actionGroups && actionGroups.length > 0;\n\n const button = (\n <StackItemSigilButton\n attendableId={attendableId}\n related={related}\n isMenu={hasActions}\n // TODO(wittjosiah): Better disabling of interactive styles when no action are available.\n // Remove underscore icon when no actions are available?\n classNames={!hasActions && 'cursor-default'}\n >\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n );\n\n if (!hasActions) {\n return button;\n }\n\n return (\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 <DropdownMenu.Trigger asChild ref={forwardedRef}>\n {button}\n </DropdownMenu.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 );\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 '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'>{label}</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--x--regular'\n }\n />\n )}\n {children}\n </ButtonGroup>\n );\n },\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_react", "import_combine", "import_adapter", "import_closest_edge", "import_react_tabster", "import_react_compose_refs", "import_react_ui", "import_react_ui_theme", "import_react_ui_dnd", "import_react_ui_attention", "
|
|
3
|
+
"sources": ["../../../src/components/Stack/Stack.tsx", "../../../src/hooks/useStackDropForElements.ts", "../../../src/components/StackContext.tsx", "../../../src/components/StackItem/StackItem.tsx", "../../../src/components/StackItem/StackItemContent.tsx", "../../../src/components/StackItem/StackItemDragHandle.tsx", "../../../src/components/StackItem/StackItemHeading.tsx", "../../../src/components/StackItem/StackItemResizeHandle.tsx", "../../../src/components/StackItem/StackItemSigil.tsx", "../../../src/components/StackItem/MenuSignifier.tsx", "../../../src/translations.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n Children,\n type CSSProperties,\n type ComponentPropsWithRef,\n forwardRef,\n useState,\n useMemo,\n useCallback,\n} from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStackDropForElements } from '../../hooks';\nimport { StackContext } from '../StackContext';\nimport { type StackContextValue } from '../defs';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain' | 'contain-fit-content';\n\nexport type StackProps = Omit<ThemedClassName<ComponentPropsWithRef<'div'>>, 'aria-orientation'> &\n Partial<StackContextValue> & {\n itemsCount?: number;\n getDropElement?: (stackElement: HTMLDivElement) => HTMLDivElement;\n separatorOnScroll?: number;\n };\n\nexport const railGridHorizontal = 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\n// TODO(ZaymonFC): Magic 2px to stop overflow (tabster dummies... ask @thure).\nexport const railGridHorizontalContainFitContent =\n 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_fit-content(calc(100%-var(--rail-size)*2+2px))_[content-end]]';\nexport const railGridVerticalContainFitContent =\n 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_fit-content(calc(100%-var(--rail-size)*2+2px))_[content-end]]';\n\nexport const autoScrollRootAttributes = { 'data-drag-autoscroll': 'idle' };\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n size = 'intrinsic',\n onRearrange,\n itemsCount = Children.count(children),\n getDropElement,\n separatorOnScroll,\n ...props\n },\n forwardedRef,\n ) => {\n const [stackElement, stackRef] = useState<HTMLDivElement | null>(null);\n const composedItemRef = composeRefs<HTMLDivElement>(stackRef, forwardedRef);\n const arrowNavigationAttrs = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']:\n `repeat(${itemsCount}, min-content) [tabster-dummies] 0`,\n ...style,\n };\n\n const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);\n\n const { dropping } = useStackDropForElements({\n id: props.id,\n element: getDropElement && stackElement ? getDropElement(stackElement) : stackElement,\n selfDroppable,\n orientation,\n onRearrange,\n });\n\n const handleScroll = useCallback(() => {\n if (stackElement && Number.isFinite(separatorOnScroll)) {\n const scrollPosition = orientation === 'horizontal' ? stackElement.scrollLeft : stackElement.scrollTop;\n const scrollSize = orientation === 'horizontal' ? stackElement.scrollWidth : stackElement.scrollHeight;\n const clientSize = orientation === 'horizontal' ? stackElement.clientWidth : stackElement.clientHeight;\n const separatorHost = stackElement.closest('[data-scroll-separator]');\n if (separatorHost) {\n separatorHost.setAttribute('data-scroll-separator', String(scrollPosition > separatorOnScroll!));\n separatorHost.setAttribute(\n 'data-scroll-separator-end',\n String(scrollSize - (scrollPosition + clientSize) > separatorOnScroll!),\n );\n }\n }\n }, [stackElement, separatorOnScroll, orientation]);\n\n const gridClasses = useMemo(() => {\n if (!rail) {\n return orientation === 'horizontal' ? 'grid-rows-1 pli-1' : 'grid-cols-1 plb-1';\n }\n if (orientation === 'horizontal') {\n return size === 'contain-fit-content' ? railGridHorizontalContainFitContent : railGridHorizontal;\n } else {\n return size === 'contain-fit-content' ? railGridVerticalContainFitContent : railGridVertical;\n }\n }, [rail, orientation, size]);\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>\n <div\n {...props}\n {...arrowNavigationAttrs}\n className={mx(\n 'grid relative',\n gridClasses,\n (size === 'contain' || size === 'contain-fit-content') &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 max-bs-full bs-full'\n : 'overflow-y-auto min-is-0 max-is-full is-full'),\n classNames,\n )}\n data-rail={rail}\n aria-orientation={orientation}\n style={styles}\n ref={composedItemRef}\n {...(Number.isFinite(separatorOnScroll) && { onScroll: handleScroll })}\n >\n {children}\n {selfDroppable && dropping && (\n <ListItem.DropIndicator\n lineInset={8}\n terminalInset={-8}\n gap={-8}\n edge={orientation === 'horizontal' ? 'left' : 'top'}\n />\n )}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\n\nexport type { StackContextValue };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';\nimport { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { type StackItemRearrangeHandler, type StackItemData, type Orientation } from '../components';\n\n/**\n * Hook to handle drag and drop functionality for Stack components.\n */\nexport const useStackDropForElements = ({\n id,\n element,\n selfDroppable,\n orientation,\n onRearrange,\n}: {\n id?: string;\n element: HTMLDivElement | null;\n selfDroppable: boolean;\n orientation: Orientation;\n onRearrange?: StackItemRearrangeHandler;\n}) => {\n const [dropping, setDropping] = useState(false);\n\n useLayoutEffect(() => {\n if (!element || !selfDroppable) {\n return;\n }\n\n const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';\n\n return combine(\n dropTargetForElements({\n element,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id, type: orientation === 'horizontal' ? 'card' : 'column' },\n { input, element, allowedEdges: [orientation === 'horizontal' ? 'left' : 'top'] },\n );\n },\n onDragEnter: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDrag: ({ source }) => {\n if (source.data.type === acceptSourceType) {\n setDropping(true);\n }\n },\n onDragLeave: () => {\n return setDropping(false);\n },\n onDrop: ({ self, source }) => {\n setDropping(false);\n if (source.data.type === acceptSourceType && selfDroppable && onRearrange) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n }),\n autoScrollForElements({ element, getAllowedAxis: () => orientation }),\n );\n }, [element, selfDroppable, orientation, id, onRearrange]);\n\n return { dropping };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type Orientation, type Size } from './Stack';\nimport { type StackItemSize, type StackItemRearrangeHandler } from './defs';\n\nexport type StackContextValue = {\n orientation: Orientation;\n rail: boolean;\n size: Size;\n onRearrange?: StackItemRearrangeHandler;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n orientation: 'vertical',\n rail: true,\n size: 'intrinsic',\n});\n\nexport const useStack = () => useContext(StackContext);\n\nexport type ItemDragState =\n | {\n type: 'idle';\n }\n | {\n type: 'preview';\n container: HTMLElement;\n item: any;\n }\n | {\n type: 'is-dragging';\n item: any;\n };\n\nexport const idle: ItemDragState = { type: 'idle' };\n\nexport type StackItemContextValue = {\n selfDragHandleRef: (element: HTMLDivElement | null) => void;\n size: StackItemSize;\n setSize: (nextSize: StackItemSize, commit?: boolean) => void;\n state: ItemDragState;\n setState: (state: ItemDragState) => void;\n};\n\nexport const StackItemContext = createContext<StackItemContextValue>({\n selfDragHandleRef: () => {},\n size: 'min-content',\n setSize: () => {},\n state: idle,\n setState: () => {},\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 { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport {\n attachClosestEdge,\n extractClosestEdge,\n type Edge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n forwardRef,\n useLayoutEffect,\n useState,\n type ComponentPropsWithRef,\n useCallback,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { resizeAttributes, sizeStyle } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { StackItemContent, type StackItemContentProps } from './StackItemContent';\nimport { StackItemDragHandle, type StackItemDragHandleProps } from './StackItemDragHandle';\nimport {\n StackItemHeading,\n StackItemHeadingLabel,\n type StackItemHeadingProps,\n type StackItemHeadingLabelProps,\n} from './StackItemHeading';\nimport { StackItemResizeHandle, type StackItemResizeHandleProps } from './StackItemResizeHandle';\nimport {\n StackItemSigil,\n type StackItemSigilProps,\n type StackItemSigilAction,\n type StackItemSigilButtonProps,\n StackItemSigilButton,\n} from './StackItemSigil';\nimport { useStack, StackItemContext, idle, type ItemDragState, useStackItem } from '../StackContext';\nimport { type StackItemSize, type StackItemData } from '../defs';\n\n// NOTE: 48rem fills the screen on a MacbookPro with the sidebars closed.\nexport const DEFAULT_HORIZONTAL_SIZE = 48 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\ntype StackItemRootProps = ThemedClassName<ComponentPropsWithRef<'div'>> & {\n item: Omit<StackItemData, 'type'>;\n order?: number;\n prevSiblingId?: string;\n nextSiblingId?: string;\n size?: StackItemSize;\n onSizeChange?: (nextSize: StackItemSize) => void;\n role?: 'article' | 'section';\n disableRearrange?: boolean;\n focusIndicatorVariant?: 'over-all' | 'group';\n};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n (\n {\n item,\n children,\n classNames,\n size: propsSize,\n onSizeChange,\n role,\n order,\n prevSiblingId,\n nextSiblingId,\n style,\n disableRearrange,\n focusIndicatorVariant = 'over-all',\n ...props\n },\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 [sourceId, setSourceId] = useState<string | null>(null);\n const [dragState, setDragState] = useState<ItemDragState>(idle);\n const { orientation, rail, onRearrange } = 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 || disableRearrange) {\n return;\n }\n\n return combine(\n draggable({\n element: itemElement,\n ...(selfDragHandleElement && { dragHandle: selfDragHandleElement }),\n getInitialData: () => ({ id: item.id, type }),\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n document.body.setAttribute('data-drag-preview', 'true');\n const offsetFn = preserveOffsetOnSource({ element: source.element, input: location.current.input });\n const rect = source.element.getBoundingClientRect();\n setCustomNativeDragPreview({\n nativeSetDragImage,\n getOffset: ({ container }) => {\n return offsetFn({ container });\n },\n render: ({ container }) => {\n container.style.width = rect.width + 'px';\n setDragState({ type: 'preview', container, item });\n return () => {};\n },\n });\n },\n onDragStart: () => {\n document.body.removeAttribute('data-drag-preview');\n itemElement?.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'active');\n setDragState({ type: 'is-dragging', item });\n },\n onDrop: () => {\n itemElement?.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'idle');\n setDragState(idle);\n },\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 setSourceId(source.data.id as string);\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n setSourceId(source.data.id as string);\n }\n },\n onDragLeave: () => {\n setEdge(null);\n setSourceId(null);\n },\n onDrop: ({ self, source }) => {\n setEdge(null);\n setSourceId(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 focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n // Determine if the drop would result in any changes\n const shouldShowDropIndicator = () => {\n if (!closestEdge || !sourceId) {\n return false;\n }\n\n // Don't show indicator when dragged item is over itself\n if (sourceId === item.id) {\n return false;\n }\n\n // Don't show indicator when dragged item is over the trailing edge of its previous sibling\n const isTrailingEdgeOfPrevSibling =\n prevSiblingId !== undefined &&\n sourceId === prevSiblingId &&\n ((orientation === 'horizontal' && closestEdge === 'left') ||\n (orientation === 'vertical' && closestEdge === 'top'));\n if (isTrailingEdgeOfPrevSibling) {\n return false;\n }\n\n // Don't show indicator when dragged item is over the leading edge of its next sibling\n const isLeadingEdgeOfNextSibling =\n nextSiblingId !== undefined &&\n sourceId === nextSiblingId &&\n ((orientation === 'horizontal' && closestEdge === 'right') ||\n (orientation === 'vertical' && closestEdge === 'bottom'));\n if (isLeadingEdgeOfNextSibling) {\n return false;\n }\n\n return true;\n };\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize, state: dragState, setState: setDragState }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'group/stack-item grid relative',\n focusIndicatorVariant === 'over-all'\n ? 'dx-focus-ring-inset-over-all'\n : orientation === 'horizontal'\n ? 'dx-focus-ring-group-x'\n : 'dx-focus-ring-group-y',\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n classNames,\n )}\n data-dx-stack-item\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, orientation),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {shouldShowDropIndicator() && closestEdge && (\n <ListItem.DropIndicator lineInset={8} terminalInset={-8} edge={closestEdge} />\n )}\n </Root>\n </StackItemContext.Provider>\n );\n },\n);\n\ntype StackItemDragPreviewProps = {\n children: ({ item }: { item: any }) => ReactNode;\n};\n\nexport const StackItemDragPreview = ({ children }: StackItemDragPreviewProps) => {\n const { state } = useStackItem();\n return state?.type === 'preview' ? createPortal(children({ item: state.item }), state.container) : null;\n};\n\nexport const StackItem = {\n Root: StackItemRoot,\n Content: StackItemContent,\n Heading: StackItemHeading,\n HeadingLabel: StackItemHeadingLabel,\n ResizeHandle: StackItemResizeHandle,\n DragHandle: StackItemDragHandle,\n Sigil: StackItemSigil,\n SigilButton: StackItemSigilButton,\n DragPreview: StackItemDragPreview,\n};\n\nexport type {\n StackItemRootProps,\n StackItemContentProps,\n StackItemHeadingProps,\n StackItemHeadingLabelProps,\n StackItemResizeHandleProps,\n StackItemDragHandleProps,\n StackItemSigilProps,\n StackItemSigilButtonProps,\n StackItemSigilAction,\n StackItemDragPreviewProps,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef, forwardRef } 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 /**\n * This flag is required in order to clarify a developer experience that seemed like it needed extra boilerplate\n * (`row-span-2`) or was buggy. See the description of the StackItem.Content component itself for more information.\n */\n toolbar?: boolean;\n\n /**\n * Whether to provide for the layout of a statusbar after the content.\n */\n statusbar?: boolean;\n\n /**\n * Whether to set a certain aspect ratio on the content, including the toolbar and statusbar. This is provided for\n * convenience and consistency; it can instead be specified by the `classNames` or `style` props as needed.\n */\n size?: 'intrinsic' | 'video' | 'square';\n};\n\n/**\n * This component should be used by plugins for rendering content within a stack item, a.k.a. a “plank” or “section”.\n * The `toolbar` flag must be provided since this component provides for the layout of content with the toolbar.\n */\nexport const StackItemContent = forwardRef<HTMLDivElement, StackItemContentProps>(\n ({ children, toolbar, statusbar, classNames, size = 'intrinsic', ...props }, forwardedRef) => {\n const { size: stackItemSize } = useStack();\n\n return (\n <div\n role='none'\n {...props}\n className={mx(\n 'group grid grid-cols-[100%]',\n stackItemSize === 'contain' && 'min-bs-0 overflow-hidden',\n size === 'video' ? 'aspect-video' : size === 'square' && 'aspect-square',\n classNames,\n )}\n style={{\n gridTemplateRows: [\n ...(toolbar ? ['var(--rail-action)'] : []),\n '1fr',\n ...(statusbar ? ['var(--statusbar-size)'] : []),\n ].join(' '),\n }}\n data-popover-collision-boundary={true}\n ref={forwardedRef}\n >\n {children}\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nimport { useStackItem } from '../StackContext';\n\nexport type StackItemDragHandleProps = ComponentPropsWithoutRef<'button'> & { asChild: boolean };\n\nexport const StackItemDragHandle = ({ asChild, children }: StackItemDragHandleProps) => {\n const { selfDragHandleRef } = useStackItem();\n\n const Root = asChild ? Slot : 'div';\n\n return (\n <Root ref={selfDragHandleRef} role='button'>\n {children}\n </Root>\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 } from '../StackContext';\n\nexport type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nexport const StackItemHeading = ({ children, classNames, ...props }: StackItemHeadingProps) => {\n const { orientation } = useStack();\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <div\n role='heading'\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'flex items-center dx-focus-ring-inset-over-all relative !border-is-0 bg-headerSurface border-transparent [[data-scroll-separator=\"true\"]_&]:border-subduedSeparator',\n orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',\n orientation === 'horizontal' ? 'border-be' : 'border-ie',\n classNames,\n )}\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\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 self-center',\n classNames,\n )}\n ref={forwardedRef}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { ResizeHandle } from '@dxos/react-ui-dnd';\n\nimport { DEFAULT_EXTRINSIC_SIZE } from './StackItem';\nimport { useStack, useStackItem } from '../StackContext';\n\nconst MIN_WIDTH = 20;\nconst MIN_HEIGHT = 3;\n\nexport type StackItemResizeHandleProps = {};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n\n return (\n <ResizeHandle\n side={orientation === 'horizontal' ? 'inline-end' : 'block-end'}\n fallbackSize={DEFAULT_EXTRINSIC_SIZE}\n minSize={orientation === 'horizontal' ? MIN_WIDTH : MIN_HEIGHT}\n size={size}\n onSizeChange={setSize}\n />\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, type PropsWithChildren, forwardRef, useState } from 'react';\n\nimport { type ActionLike } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport { Button, type ButtonProps, DropdownMenu, Icon, toLocalizedString, useTranslation } 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'> &\n AttendableId &\n Related & {\n isMenu?: boolean;\n };\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, isMenu = true, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n // TODO(wittjosiah): Disable hover styles when isMenu is false.\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag', classNames]}\n ref={forwardedRef}\n >\n {isMenu && <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\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n\n const hasActions = actionGroups && actionGroups.length > 0;\n\n const button = (\n <StackItemSigilButton\n attendableId={attendableId}\n related={related}\n isMenu={hasActions}\n // TODO(wittjosiah): Better disabling of interactive styles when no action are available.\n // Remove underscore icon when no actions are available?\n classNames={!hasActions && 'cursor-default'}\n >\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n );\n\n if (!hasActions) {\n return button;\n }\n\n return (\n <DropdownMenu.Root open={optionsMenuOpen} onOpenChange={setOptionsMenuOpen}>\n <DropdownMenu.Trigger asChild ref={forwardedRef}>\n {button}\n </DropdownMenu.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 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 );\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 'close label': 'Close',\n 'minify label': 'Minify',\n },\n },\n },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "import_combine", "import_adapter", "import_closest_edge", "import_react_tabster", "import_react_compose_refs", "import_react_ui", "import_react_ui_theme", "import_react_ui_dnd", "import_react_ui_attention", "useStackDropForElements", "id", "element", "selfDroppable", "orientation", "onRearrange", "dropping", "setDropping", "useState", "useLayoutEffect", "acceptSourceType", "combine", "dropTargetForElements", "getData", "input", "attachClosestEdge", "type", "allowedEdges", "onDragEnter", "source", "data", "onDrag", "onDragLeave", "onDrop", "self", "extractClosestEdge", "autoScrollForElements", "getAllowedAxis", "StackContext", "createContext", "rail", "size", "useStack", "useContext", "idle", "StackItemContext", "selfDragHandleRef", "setSize", "state", "setState", "useStackItem", "railGridHorizontal", "railGridVertical", "railGridHorizontalContainFitContent", "railGridVerticalContainFitContent", "autoScrollRootAttributes", "Stack", "forwardRef", "children", "classNames", "style", "itemsCount", "Children", "count", "getDropElement", "separatorOnScroll", "props", "forwardedRef", "stackElement", "stackRef", "composedItemRef", "composeRefs", "arrowNavigationAttrs", "useArrowNavigationGroup", "axis", "styles", "handleScroll", "useCallback", "Number", "isFinite", "scrollPosition", "scrollLeft", "scrollTop", "scrollSize", "scrollWidth", "scrollHeight", "clientSize", "clientWidth", "clientHeight", "separatorHost", "closest", "setAttribute", "String", "gridClasses", "useMemo", "React", "Provider", "value", "div", "className", "mx", "data-rail", "aria-orientation", "ref", "onScroll", "ListItem", "DropIndicator", "lineInset", "terminalInset", "gap", "edge", "StackItemContent", "toolbar", "statusbar", "stackItemSize", "role", "gridTemplateRows", "join", "data-popover-collision-boundary", "StackItemDragHandle", "asChild", "Root", "Slot", "StackItemHeading", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "tabIndex", "StackItemHeadingLabel", "attendableId", "related", "hasAttention", "isAncestor", "isRelated", "useAttention", "h1", "data-attention", "toString", "MIN_WIDTH", "MIN_HEIGHT", "StackItemResizeHandle", "ResizeHandle", "side", "fallbackSize", "DEFAULT_EXTRINSIC_SIZE", "minSize", "onSizeChange", "MenuSignifierHorizontal", "svg", "width", "height", "viewBox", "stroke", "opacity", "line", "x1", "y1", "x2", "y2", "strokeWidth", "strokeLinecap", "strokeDasharray", "strokeDashoffset", "translationKey", "StackItemSigilButton", "isMenu", "variant", "Button", "StackItemSigil", "actions", "actionGroups", "onAction", "triggerLabel", "icon", "t", "useTranslation", "optionsMenuOpen", "setOptionsMenuOpen", "hasActions", "length", "button", "span", "Icon", "DropdownMenu", "open", "onOpenChange", "Trigger", "Portal", "Content", "Viewport", "map", "index", "separator", "Separator", "Fragment", "key", "action", "shortcut", "properties", "keyBinding", "getHostPlatform", "menuItemType", "CheckboxItem", "Item", "onClick", "event", "disabled", "stopPropagation", "checked", "isChecked", "undefined", "testId", "toLocalizedString", "label", "ItemIndicator", "descriptionText", "keySymbols", "Arrow", "DEFAULT_HORIZONTAL_SIZE", "DEFAULT_VERTICAL_SIZE", "StackItemRoot", "item", "propsSize", "order", "prevSiblingId", "nextSiblingId", "disableRearrange", "focusIndicatorVariant", "itemElement", "itemRef", "selfDragHandleElement", "closestEdge", "setEdge", "sourceId", "setSourceId", "dragState", "setDragState", "setInternalSize", "nextSize", "commit", "draggable", "dragHandle", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "location", "document", "body", "offsetFn", "preserveOffsetOnSource", "current", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "render", "onDragStart", "removeAttribute", "shouldShowDropIndicator", "isTrailingEdgeOfPrevSibling", "isLeadingEdgeOfNextSibling", "data-dx-stack-item", "resizeAttributes", "sizeStyle", "StackItemDragPreview", "createPortal", "StackItem", "Heading", "HeadingLabel", "DragHandle", "Sigil", "SigilButton", "DragPreview"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytes":3191,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/hooks/useStackDropForElements.ts":{"bytes":8124,"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-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/hooks/index.ts":{"bytes":653,"imports":[{"path":"packages/ui/react-ui-stack/src/hooks/useStackDropForElements.ts","kind":"import-statement","original":"./useStackDropForElements"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytes":12592,"imports":[{"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","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/hooks/index.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytes":5709,"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/StackItemDragHandle.tsx":{"bytes":2101,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","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":5766,"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":2885,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","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":1870,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytes":19171,"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":24798,"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/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","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/StackItemDragHandle.tsx","kind":"import-statement","original":"./StackItemDragHandle"},{"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":11653,"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":801,"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"},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"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":519,"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":52697},"packages/ui/react-ui-stack/dist/lib/node/index.cjs":{"imports":[{"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","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-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","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":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","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":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","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","StackItemContext","autoScrollRootAttributes","railGridHorizontal","railGridHorizontalContainFitContent","railGridVertical","railGridVerticalContainFitContent","translations","useStack","useStackItem"],"entryPoint":"packages/ui/react-ui-stack/src/index.ts","inputs":{"packages/ui/react-ui-stack/src/components/Stack.tsx":{"bytesInOutput":2995},"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytesInOutput":408},"packages/ui/react-ui-stack/src/hooks/useStackDropForElements.ts":{"bytesInOutput":1927},"packages/ui/react-ui-stack/src/hooks/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/StackItem.tsx":{"bytesInOutput":5772},"packages/ui/react-ui-stack/src/components/StackItemContent.tsx":{"bytesInOutput":895},"packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx":{"bytesInOutput":335},"packages/ui/react-ui-stack/src/components/StackItemHeading.tsx":{"bytesInOutput":1286},"packages/ui/react-ui-stack/src/components/StackItemResizeHandle.tsx":{"bytesInOutput":523},"packages/ui/react-ui-stack/src/components/StackItemSigil.tsx":{"bytesInOutput":4577},"packages/ui/react-ui-stack/src/components/MenuSignifier.tsx":{"bytesInOutput":442},"packages/ui/react-ui-stack/src/translations.ts":{"bytesInOutput":444},"packages/ui/react-ui-stack/src/components/LayoutControls.tsx":{"bytesInOutput":3014},"packages/ui/react-ui-stack/src/index.ts":{"bytesInOutput":0}},"bytes":23980},"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}}}
|
|
1
|
+
{"inputs":{"packages/ui/react-ui-stack/src/components/defs.ts":{"bytes":1252,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/hooks/useStackDropForElements.ts":{"bytes":7940,"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-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/hooks/index.ts":{"bytes":621,"imports":[{"path":"packages/ui/react-ui-stack/src/hooks/useStackDropForElements.ts","kind":"import-statement","original":"./useStackDropForElements"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytes":3412,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack/Stack.tsx":{"bytes":17022,"imports":[{"path":"@preact-signals/safe-react/tracking","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"../StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/Stack/index.ts":{"bytes":476,"imports":[{"path":"packages/ui/react-ui-stack/src/components/Stack/Stack.tsx","kind":"import-statement","original":"./Stack"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem/StackItemContent.tsx":{"bytes":5910,"imports":[{"path":"@preact-signals/safe-react/tracking","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/StackItem/StackItemDragHandle.tsx":{"bytes":2266,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","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/StackItem/StackItemHeading.tsx":{"bytes":6453,"imports":[{"path":"@preact-signals/safe-react/tracking","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":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"../StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem/StackItemResizeHandle.tsx":{"bytes":3058,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItem.tsx","kind":"import-statement","original":"./StackItem"},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"../StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem/MenuSignifier.tsx":{"bytes":3647,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-stack/src/translations.ts":{"bytes":1818,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem/StackItemSigil.tsx":{"bytes":18627,"imports":[{"path":"@preact-signals/safe-react/tracking","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":"packages/ui/react-ui-stack/src/components/StackItem/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/StackItem.tsx":{"bytes":33525,"imports":[{"path":"@preact-signals/safe-react/tracking","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/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItemContent.tsx","kind":"import-statement","original":"./StackItemContent"},{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItemDragHandle.tsx","kind":"import-statement","original":"./StackItemDragHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItemHeading.tsx","kind":"import-statement","original":"./StackItemHeading"},{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItemResizeHandle.tsx","kind":"import-statement","original":"./StackItemResizeHandle"},{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItemSigil.tsx","kind":"import-statement","original":"./StackItemSigil"},{"path":"packages/ui/react-ui-stack/src/components/StackContext.tsx","kind":"import-statement","original":"../StackContext"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/StackItem/index.ts":{"bytes":492,"imports":[{"path":"packages/ui/react-ui-stack/src/components/StackItem/StackItem.tsx","kind":"import-statement","original":"./StackItem"}],"format":"esm"},"packages/ui/react-ui-stack/src/components/index.ts":{"bytes":643,"imports":[{"path":"packages/ui/react-ui-stack/src/components/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/ui/react-ui-stack/src/components/Stack/index.ts","kind":"import-statement","original":"./Stack"},{"path":"packages/ui/react-ui-stack/src/components/StackItem/index.ts","kind":"import-statement","original":"./StackItem"}],"format":"esm"},"packages/ui/react-ui-stack/src/index.ts":{"bytes":686,"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":7195,"imports":[],"format":"esm"},"packages/ui/react-ui-stack/src/testing/index.ts":{"bytes":491,"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":52493},"packages/ui/react-ui-stack/dist/lib/node/index.cjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","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-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["DEFAULT_EXTRINSIC_SIZE","DEFAULT_HORIZONTAL_SIZE","DEFAULT_VERTICAL_SIZE","Stack","StackContext","StackItem","StackItemDragPreview","autoScrollRootAttributes","railGridHorizontal","railGridHorizontalContainFitContent","railGridVertical","railGridVerticalContainFitContent","translations"],"entryPoint":"packages/ui/react-ui-stack/src/index.ts","inputs":{"packages/ui/react-ui-stack/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/Stack/Stack.tsx":{"bytesInOutput":4352},"packages/ui/react-ui-stack/src/hooks/useStackDropForElements.ts":{"bytesInOutput":1927},"packages/ui/react-ui-stack/src/hooks/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/StackContext.tsx":{"bytesInOutput":479},"packages/ui/react-ui-stack/src/components/Stack/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/components/StackItem/StackItem.tsx":{"bytesInOutput":8111},"packages/ui/react-ui-stack/src/components/StackItem/StackItemContent.tsx":{"bytesInOutput":1090},"packages/ui/react-ui-stack/src/components/StackItem/StackItemDragHandle.tsx":{"bytesInOutput":504},"packages/ui/react-ui-stack/src/components/StackItem/StackItemHeading.tsx":{"bytesInOutput":1707},"packages/ui/react-ui-stack/src/components/StackItem/StackItemResizeHandle.tsx":{"bytesInOutput":698},"packages/ui/react-ui-stack/src/components/StackItem/StackItemSigil.tsx":{"bytesInOutput":4743},"packages/ui/react-ui-stack/src/components/StackItem/MenuSignifier.tsx":{"bytesInOutput":679},"packages/ui/react-ui-stack/src/translations.ts":{"bytesInOutput":444},"packages/ui/react-ui-stack/src/components/StackItem/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-stack/src/index.ts":{"bytesInOutput":0}},"bytes":26091},"packages/ui/react-ui-stack/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3683},"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}}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
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;
|
|
6
|
-
"names": ["StackManager", "
|
|
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(): Locator {\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): SectionManager {\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(): Promise<string | null> {\n return this.locator.getAttribute('id');\n }\n\n async remove(): Promise<void> {\n await this.locator.getByTestId('section.drag-handle-menu-trigger').click();\n await this._page.getByTestId('section.remove').click();\n }\n\n async navigateTo(): Promise<void> {\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 }): Promise<void> {\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;EAGX,YAAqBC,SAAkB;SAAlBA,UAAAA;AACnB,SAAKC,QAAQD,QAAQE,KAAI;EAC3B;EAEAC,WAAoB;AAClB,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,OAA+B;AACrC,WAAO,IAAIC,eAAe,KAAKZ,QAAQA,QAAQ,SAAA,EAAWa,IAAIF,KAAAA,CAAAA;EAChE;AACF;AAEO,IAAMC,iBAAN,MAAMA;EAGX,YAAqBZ,SAAkB;SAAlBA,UAAAA;AACnB,SAAKC,QAAQD,QAAQE,KAAI;EAC3B;EAEA,MAAMY,KAA6B;AACjC,WAAO,KAAKd,QAAQS,aAAa,IAAA;EACnC;EAEA,MAAMM,SAAwB;AAC5B,UAAM,KAAKf,QAAQgB,YAAY,kCAAA,EAAoCC,MAAK;AACxE,UAAM,KAAKhB,MAAMe,YAAY,gBAAA,EAAkBC,MAAK;EACtD;EAEA,MAAMC,aAA4B;AAChC,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,GAAkB;AAC9F,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", "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
|
}
|