@dxos/react-ui-stack 0.7.5-main.9d2a38b → 0.7.5-main.e9bb01b

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.
@@ -102,8 +102,8 @@ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientati
102
102
  // packages/ui/react-ui-stack/src/components/StackItem.tsx
103
103
  import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
104
104
  import { draggable as draggable2, dropTargetForElements as dropTargetForElements2 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
105
- import { disableNativeDragPreview as disableNativeDragPreview2 } from "@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview";
106
- import { preventUnhandled as preventUnhandled2 } from "@atlaskit/pragmatic-drag-and-drop/prevent-unhandled";
105
+ import { preserveOffsetOnSource } from "@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source";
106
+ import { scrollJustEnoughIntoView } from "@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view";
107
107
  import { attachClosestEdge as attachClosestEdge2, extractClosestEdge as extractClosestEdge2 } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
108
108
  import { useFocusableGroup as useFocusableGroup2 } from "@fluentui/react-tabster";
109
109
  import { composeRefs as composeRefs2 } from "@radix-ui/react-compose-refs";
@@ -162,7 +162,7 @@ var StackItemHeading = ({ children, classNames, ...props }) => {
162
162
  ...props,
163
163
  tabIndex: 0,
164
164
  ...focusableGroupAttrs,
165
- className: mx3("flex items-center ch-focus-ring-inset-over-all relative !border-is-0", orientation === "horizontal" ? "bs-[--rail-size]" : "is-[--rail-size] flex-col", classNames)
165
+ className: mx3("flex items-center dx-focus-ring-inset-over-all relative !border-is-0", orientation === "horizontal" ? "bs-[--rail-size]" : "is-[--rail-size] flex-col", classNames)
166
166
  }, children);
167
167
  };
168
168
  var StackItemHeadingLabel = /* @__PURE__ */ forwardRef3(({ attendableId, related, classNames, ...props }, forwardedRef) => {
@@ -182,7 +182,8 @@ import { preventUnhandled } from "@atlaskit/pragmatic-drag-and-drop/prevent-unha
182
182
  import React5, { useLayoutEffect as useLayoutEffect2, useRef } from "react";
183
183
  import { mx as mx4 } from "@dxos/react-ui-theme";
184
184
  var REM = parseFloat(getComputedStyle(document.documentElement).fontSize);
185
- var MIN_SIZE = 20;
185
+ var MIN_WIDTH = 20;
186
+ var MIN_HEIGHT = 3;
186
187
  var measureStackItem = (element) => {
187
188
  const stackItemElement = element.closest("[data-dx-stack-item]");
188
189
  return stackItemElement?.getBoundingClientRect() ?? {
@@ -191,7 +192,7 @@ var measureStackItem = (element) => {
191
192
  };
192
193
  };
193
194
  var getNextSize = (startSize, location, client) => {
194
- return Math.max(MIN_SIZE, startSize + (location.current.input[client] - location.initial.input[client]) / REM);
195
+ return Math.max(client === "clientX" ? MIN_WIDTH : MIN_HEIGHT, startSize + (location.current.input[client] - location.initial.input[client]) / REM);
195
196
  };
196
197
  var StackItemResizeHandle = () => {
197
198
  const { orientation } = useStack();
@@ -232,18 +233,20 @@ var StackItemResizeHandle = () => {
232
233
  }, []);
233
234
  return /* @__PURE__ */ React5.createElement("button", {
234
235
  ref: buttonRef,
235
- className: mx4(orientation === "horizontal" ? "cursor-col-resize" : "cursor-row-resize", "group absolute is-3 bs-full inline-end-[-1px] !border-lb-0", "before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100", "before:absolute before:block before:inset-block-0 before:inline-end-0 before:is-1 before:bg-accentFocusIndicator")
236
+ className: mx4("group absolute", orientation === "horizontal" ? "cursor-col-resize is-3 bs-full inline-end-[-1px] !border-lb-0 before:inset-block-0 before:inline-end-0 before:is-1" : "cursor-row-resize bs-3 is-full block-end-[-1px] !border-li-0 before:inset-inline-0 before:block-end-0 before:bs-1", "before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100", "before:absolute before:block before:bg-accentFocusIndicator")
236
237
  }, /* @__PURE__ */ React5.createElement("div", {
237
238
  role: "none",
238
- className: "absolute block-start-0 inline-end-[1px] bs-[--rail-size] flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0"
239
- }, /* @__PURE__ */ React5.createElement(DragHandleSignifier, null)));
239
+ className: mx4("absolute flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0", orientation === "horizontal" ? "block-start-0 inline-end-px bs-[--rail-size]" : "inline-start-0 block-end-px is-[--rail-size] flex justify-center")
240
+ }, /* @__PURE__ */ React5.createElement(DragHandleSignifier, {
241
+ orientation
242
+ })));
240
243
  };
241
- var DragHandleSignifier = () => {
244
+ var DragHandleSignifier = ({ orientation }) => {
242
245
  return /* @__PURE__ */ React5.createElement("svg", {
243
246
  xmlns: "http://www.w3.org/2000/svg",
244
247
  viewBox: "0 0 256 256",
245
248
  fill: "currentColor",
246
- className: "shrink-0 bs-[1em] is-[1em] text-unAccent"
249
+ className: mx4("shrink-0 bs-[1em] is-[1em] text-unAccent", orientation === "vertical" && "rotate-90")
247
250
  }, /* @__PURE__ */ React5.createElement("path", {
248
251
  d: "M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z"
249
252
  }), /* @__PURE__ */ React5.createElement("path", {
@@ -258,7 +261,7 @@ var DragHandleSignifier = () => {
258
261
  // packages/ui/react-ui-stack/src/components/StackItemSigil.tsx
259
262
  import React7, { Fragment, forwardRef as forwardRef4, useRef as useRef2, useState as useState2 } from "react";
260
263
  import { keySymbols } from "@dxos/keyboard";
261
- import { Button, DropdownMenu, Icon, toLocalizedString, Tooltip, useTranslation } from "@dxos/react-ui";
264
+ import { Button, DropdownMenu, Icon, toLocalizedString, useTranslation } from "@dxos/react-ui";
262
265
  import { useAttention as useAttention2 } from "@dxos/react-ui-attention";
263
266
  import { descriptionText, mx as mx5 } from "@dxos/react-ui-theme";
264
267
  import { getHostPlatform } from "@dxos/util";
@@ -309,7 +312,7 @@ var StackItemSigilButton = /* @__PURE__ */ forwardRef4(({ attendableId, classNam
309
312
  ...props,
310
313
  variant,
311
314
  classNames: [
312
- "shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative",
315
+ "shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag",
313
316
  classNames
314
317
  ],
315
318
  ref: forwardedRef
@@ -319,18 +322,23 @@ var StackItemSigil = /* @__PURE__ */ forwardRef4(({ actions: actionGroups, onAct
319
322
  const { t } = useTranslation(translationKey);
320
323
  const suppressNextTooltip = useRef2(false);
321
324
  const [optionsMenuOpen, setOptionsMenuOpen] = useState2(false);
322
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
323
- return /* @__PURE__ */ React7.createElement(Tooltip.Root, {
324
- open: triggerTooltipOpen,
325
- onOpenChange: (nextOpen) => {
326
- if (suppressNextTooltip.current) {
327
- setTriggerTooltipOpen(false);
328
- suppressNextTooltip.current = false;
329
- } else {
330
- setTriggerTooltipOpen(nextOpen);
331
- }
332
- }
333
- }, /* @__PURE__ */ React7.createElement(DropdownMenu.Root, {
325
+ const hasActions = actionGroups && actionGroups.length > 0;
326
+ const button = /* @__PURE__ */ React7.createElement(StackItemSigilButton, {
327
+ attendableId,
328
+ related,
329
+ // TODO(wittjosiah): Better disabling of interactive styles when no action are available.
330
+ // Remove underscore icon when no actions are available?
331
+ classNames: !hasActions && "cursor-default"
332
+ }, /* @__PURE__ */ React7.createElement("span", {
333
+ className: "sr-only"
334
+ }, triggerLabel), /* @__PURE__ */ React7.createElement(Icon, {
335
+ icon,
336
+ size: 5
337
+ }));
338
+ if (!hasActions) {
339
+ return button;
340
+ }
341
+ return /* @__PURE__ */ React7.createElement(DropdownMenu.Root, {
334
342
  open: optionsMenuOpen,
335
343
  onOpenChange: (nextOpen) => {
336
344
  if (!nextOpen) {
@@ -338,20 +346,10 @@ var StackItemSigil = /* @__PURE__ */ forwardRef4(({ actions: actionGroups, onAct
338
346
  }
339
347
  return setOptionsMenuOpen(nextOpen);
340
348
  }
341
- }, /* @__PURE__ */ React7.createElement(Tooltip.Trigger, {
342
- asChild: true
343
349
  }, /* @__PURE__ */ React7.createElement(DropdownMenu.Trigger, {
344
350
  asChild: true,
345
351
  ref: forwardedRef
346
- }, /* @__PURE__ */ React7.createElement(StackItemSigilButton, {
347
- attendableId,
348
- related
349
- }, /* @__PURE__ */ React7.createElement("span", {
350
- className: "sr-only"
351
- }, triggerLabel), /* @__PURE__ */ React7.createElement(Icon, {
352
- icon,
353
- size: 5
354
- })))), /* @__PURE__ */ React7.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React7.createElement(DropdownMenu.Content, {
352
+ }, button), /* @__PURE__ */ React7.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React7.createElement(DropdownMenu.Content, {
355
353
  classNames: "z-[31]"
356
354
  }, /* @__PURE__ */ React7.createElement(DropdownMenu.Viewport, null, actionGroups?.map((actions, index) => {
357
355
  const separator = index > 0 ? /* @__PURE__ */ React7.createElement(DropdownMenu.Separator, null) : null;
@@ -392,16 +390,14 @@ var StackItemSigil = /* @__PURE__ */ forwardRef4(({ actions: actionGroups, onAct
392
390
  className: mx5("shrink-0", descriptionText)
393
391
  }, keySymbols(shortcut).join("")));
394
392
  }));
395
- }), children), /* @__PURE__ */ React7.createElement(DropdownMenu.Arrow, null)))), /* @__PURE__ */ React7.createElement(Tooltip.Portal, null, /* @__PURE__ */ React7.createElement(Tooltip.Content, {
396
- side: "bottom"
397
- }, triggerLabel, /* @__PURE__ */ React7.createElement(Tooltip.Arrow, null))));
393
+ }), children), /* @__PURE__ */ React7.createElement(DropdownMenu.Arrow, null))));
398
394
  });
399
395
 
400
396
  // packages/ui/react-ui-stack/src/components/StackItem.tsx
401
397
  var DEFAULT_HORIZONTAL_SIZE = 44;
402
398
  var DEFAULT_VERTICAL_SIZE = "min-content";
403
399
  var DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE;
404
- var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, ...props }, forwardedRef) => {
400
+ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, disableRearrange, ...props }, forwardedRef) => {
405
401
  const [itemElement, itemRef] = useState3(null);
406
402
  const [selfDragHandleElement, selfDragHandleRef] = useState3(null);
407
403
  const [closestEdge, setEdge] = useState3(null);
@@ -419,7 +415,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, s
419
415
  ]);
420
416
  const type = orientation === "horizontal" ? "column" : "card";
421
417
  useLayoutEffect3(() => {
422
- if (!itemElement || !onRearrange) {
418
+ if (!itemElement || !onRearrange || disableRearrange) {
423
419
  return;
424
420
  }
425
421
  return combine(draggable2({
@@ -431,12 +427,21 @@ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, s
431
427
  id: item.id,
432
428
  type
433
429
  }),
434
- // TODO(thure): tabster focus honeypots are causing the preview to render with the wrong dimensions; what do?
435
- onGenerateDragPreview: ({ nativeSetDragImage }) => {
436
- disableNativeDragPreview2({
437
- nativeSetDragImage
430
+ onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {
431
+ document.body.setAttribute("data-drag-preview", "true");
432
+ scrollJustEnoughIntoView({
433
+ element: source.element
438
434
  });
439
- preventUnhandled2.start();
435
+ const { x, y } = preserveOffsetOnSource({
436
+ element: source.element,
437
+ input: location.current.input
438
+ })({
439
+ container: source.element.offsetParent ?? document.body
440
+ });
441
+ nativeSetDragImage?.(source.element, x, y);
442
+ },
443
+ onDragStart: () => {
444
+ document.body.removeAttribute("data-drag-preview");
440
445
  }
441
446
  }), dropTargetForElements2({
442
447
  element: itemElement,
@@ -494,7 +499,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, s
494
499
  ...props,
495
500
  tabIndex: 0,
496
501
  ...focusGroupAttrs,
497
- className: mx6("group/stack-item grid relative ch-focus-ring-inset-over-all", size === "min-content" && (orientation === "horizontal" ? "is-min" : "bs-min"), orientation === "horizontal" ? "grid-rows-subgrid" : "grid-cols-subgrid", rail && (orientation === "horizontal" ? "row-span-2" : "col-span-2"), classNames),
502
+ className: mx6("group/stack-item grid relative dx-focus-ring-inset-over-all", size === "min-content" && (orientation === "horizontal" ? "is-min" : "bs-min"), orientation === "horizontal" ? "grid-rows-subgrid" : "grid-cols-subgrid", rail && (orientation === "horizontal" ? "row-span-2" : "col-span-2"), classNames),
498
503
  "data-dx-stack-item": true,
499
504
  style: {
500
505
  ...size !== "min-content" && {
@@ -523,9 +528,9 @@ var StackItem = {
523
528
 
524
529
  // packages/ui/react-ui-stack/src/components/LayoutControls.tsx
525
530
  import React9, { forwardRef as forwardRef6 } from "react";
526
- import { Button as Button2, ButtonGroup, Icon as Icon2, Tooltip as Tooltip2, useTranslation as useTranslation2 } from "@dxos/react-ui";
531
+ import { Button as Button2, ButtonGroup, Icon as Icon2, Tooltip, useTranslation as useTranslation2 } from "@dxos/react-ui";
527
532
  var LayoutControl = ({ icon, label, ...props }) => {
528
- return /* @__PURE__ */ React9.createElement(Tooltip2.Root, null, /* @__PURE__ */ React9.createElement(Tooltip2.Trigger, {
533
+ return /* @__PURE__ */ React9.createElement(Tooltip.Root, null, /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
529
534
  asChild: true
530
535
  }, /* @__PURE__ */ React9.createElement(Button2, {
531
536
  variant: "ghost",
@@ -534,7 +539,7 @@ var LayoutControl = ({ icon, label, ...props }) => {
534
539
  className: "sr-only"
535
540
  }, label), /* @__PURE__ */ React9.createElement(Icon2, {
536
541
  icon
537
- }))), /* @__PURE__ */ React9.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip2.Content, {
542
+ }))), /* @__PURE__ */ React9.createElement(Tooltip.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip.Content, {
538
543
  side: "bottom"
539
544
  }, label)));
540
545
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/Stack.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackItem.tsx", "../../../src/components/StackItemContent.tsx", "../../../src/components/StackItemDragHandle.tsx", "../../../src/components/StackItemHeading.tsx", "../../../src/components/StackItemResizeHandle.tsx", "../../../src/components/StackItemSigil.tsx", "../../../src/components/MenuSignifier.tsx", "../../../src/translations.ts", "../../../src/components/LayoutControls.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\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 useLayoutEffect,\n useState,\n} from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type StackContextValue, StackContext, type StackItemData } from './StackContext';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain';\n\nexport type StackProps = Omit<ThemedClassName<ComponentPropsWithRef<'div'>>, 'aria-orientation'> &\n Partial<StackContextValue> & { itemsCount?: number };\n\nexport const railGridHorizontal = 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n 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 [dropping, setDropping] = useState(false);\n\n const arrowNavigationGroup = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']: `repeat(${itemsCount}, min-content)`,\n ...style,\n };\n\n const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);\n\n useLayoutEffect(() => {\n if (!stackElement || !selfDroppable) {\n return;\n }\n const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';\n return dropTargetForElements({\n element: stackElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: props.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: () => setDropping(false),\n onDrop: ({ self, source }) => {\n setDropping(false);\n if (source.data.type === acceptSourceType && selfDroppable) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n });\n }, [stackElement, selfDroppable]);\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>\n <div\n {...props}\n {...arrowNavigationGroup}\n className={mx(\n 'grid relative',\n rail\n ? orientation === 'horizontal'\n ? railGridHorizontal\n : railGridVertical\n : orientation === 'horizontal'\n ? 'grid-rows-1'\n : 'grid-cols-1',\n size === 'contain' &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 bs-full max-bs-full'\n : 'overflow-y-auto min-is-0 is-full max-is-full'),\n classNames,\n )}\n aria-orientation={orientation}\n style={styles}\n ref={composedItemRef}\n >\n {children}\n {selfDroppable && dropping && <ListItem.DropIndicator edge={orientation === 'horizontal' ? 'left' : 'top'} />}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\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 Orientation, type Size } from './Stack';\n\nexport type StackItemSize = number | 'min-content';\n\nexport type StackItemData = { id: string; type: 'column' | 'card' };\n\nexport type StackItemRearrangeHandler = (\n source: StackItemData,\n target: StackItemData,\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 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 { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\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 { 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\nexport const DEFAULT_HORIZONTAL_SIZE = 44 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\nexport type 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};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n ({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, ...props }, forwardedRef) => {\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) {\n return;\n }\n return combine(\n draggable({\n element: itemElement,\n ...(selfDragHandleElement && { dragHandle: selfDragHandleElement }),\n getInitialData: () => ({ id: item.id, type }),\n // TODO(thure): tabster focus honeypots are causing the preview to render with the wrong dimensions; what do?\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n disableNativeDragPreview({ nativeSetDragImage });\n preventUnhandled.start();\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 focusGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusGroupAttrs}\n className={mx(\n 'group/stack-item grid relative ch-focus-ring-inset-over-all',\n size === 'min-content' && (orientation === 'horizontal' ? 'is-min' : 'bs-min'),\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n classNames,\n )}\n data-dx-stack-item\n style={{\n ...(size !== 'min-content' && {\n [orientation === 'horizontal' ? 'inlineSize' : 'blockSize']: `${size}rem`,\n }),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {closestEdge && <ListItem.DropIndicator edge={closestEdge} />}\n </Root>\n </StackItemContext.Provider>\n );\n },\n);\n\nexport const StackItem = {\n Root: StackItemRoot,\n Content: StackItemContent,\n Heading: StackItemHeading,\n HeadingLabel: StackItemHeadingLabel,\n ResizeHandle: StackItemResizeHandle,\n 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 * Whether to provide for the layout of a statusbar after the content.\n */\n statusbar?: boolean;\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 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 return (\n <div\n role='heading'\n {...props}\n tabIndex={0}\n {...focusableGroupAttrs}\n className={mx(\n 'flex items-center ch-focus-ring-inset-over-all relative !border-is-0',\n orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',\n classNames,\n )}\n >\n {children}\n </div>\n );\n};\n\nexport type StackItemHeadingLabelProps = ThemedClassName<ComponentPropsWithRef<'h1'>> & AttendableId & Related;\n\nexport const StackItemHeadingLabel = forwardRef<HTMLHeadingElement, StackItemHeadingLabelProps>(\n ({ attendableId, related, classNames, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n return (\n <h1\n {...props}\n data-attention={((related && isRelated) || hasAttention || isAncestor).toString()}\n className={mx(\n 'pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText self-center',\n classNames,\n )}\n ref={forwardedRef}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, useStackItem, type StackItemSize } from './StackContext';\nimport { DEFAULT_EXTRINSIC_SIZE } from './StackItem';\n\nconst REM = parseFloat(getComputedStyle(document.documentElement).fontSize);\n\nconst MIN_SIZE = 20;\n\nconst measureStackItem = (element: HTMLButtonElement): { width: number; height: number } => {\n const stackItemElement = element.closest('[data-dx-stack-item]');\n return stackItemElement?.getBoundingClientRect() ?? { width: DEFAULT_EXTRINSIC_SIZE, height: DEFAULT_EXTRINSIC_SIZE };\n};\n\nconst getNextSize = (startSize: number, location: DragLocationHistory, client: 'clientX' | 'clientY') => {\n return Math.max(MIN_SIZE, startSize + (location.current.input[client] - location.initial.input[client]) / REM);\n};\n\nexport type StackItemResizeHandleProps = {};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dragStartSize = useRef<StackItemSize>(size);\n const client = orientation === 'horizontal' ? 'clientX' : 'clientY';\n\n useLayoutEffect(\n () => {\n if (!buttonRef.current || buttonRef.current.hasAttribute('draggable')) {\n return;\n }\n // TODO(thure): This should handle StackItem state vs local state better.\n draggable({\n element: buttonRef.current,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // We will be moving the line to indicate a drag; we can disable the native drag preview.\n disableNativeDragPreview({ nativeSetDragImage });\n // We don't want any native drop animation for when the user does not drop on a drop target.\n // We want the drag to finish immediately.\n preventUnhandled.start();\n },\n onDragStart: () => {\n dragStartSize.current =\n dragStartSize.current === 'min-content'\n ? measureStackItem(buttonRef.current!)[orientation === 'horizontal' ? 'width' : 'height'] / REM\n : dragStartSize.current;\n },\n onDrag: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n setSize(getNextSize(dragStartSize.current, location, client));\n },\n onDrop: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n const nextSize = getNextSize(dragStartSize.current, location, client);\n setSize(nextSize, true);\n dragStartSize.current = nextSize;\n },\n });\n },\n [\n // Note that `size` should not be a dependency here since dragging this adjusts the size.\n ],\n );\n\n return (\n <button\n ref={buttonRef}\n className={mx(\n orientation === 'horizontal' ? 'cursor-col-resize' : 'cursor-row-resize',\n 'group absolute is-3 bs-full inline-end-[-1px] !border-lb-0',\n 'before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100',\n 'before:absolute before:block before:inset-block-0 before:inline-end-0 before:is-1 before:bg-accentFocusIndicator',\n )}\n >\n <div\n role='none'\n className='absolute block-start-0 inline-end-[1px] bs-[--rail-size] flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0'\n >\n <DragHandleSignifier />\n </div>\n </button>\n );\n};\n\nconst DragHandleSignifier = () => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 256 256'\n fill='currentColor'\n className='shrink-0 bs-[1em] is-[1em] text-unAccent'\n >\n {/* two pips: <path d='M256,120c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' /> */}\n <path d='M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,120c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,176c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n </svg>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, type PropsWithChildren, forwardRef, useRef, useState } from 'react';\n\nimport { type ActionLike } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport {\n Button,\n type ButtonProps,\n DropdownMenu,\n Icon,\n toLocalizedString,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { type AttendableId, type Related, useAttention } from '@dxos/react-ui-attention';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { MenuSignifierHorizontal } from './MenuSignifier';\nimport { translationKey } from '../translations';\n\nexport type KeyBinding = {\n windows?: string;\n macos?: string;\n ios?: string;\n linux?: string;\n unknown?: string;\n};\n\nexport type StackItemSigilAction = Pick<ActionLike, 'id' | 'properties' | 'data'>;\n\nexport type StackItemSigilButtonProps = Omit<ButtonProps, 'variant'> & AttendableId & Related;\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative', classNames]}\n ref={forwardedRef}\n >\n <MenuSignifierHorizontal />\n {children}\n </Button>\n );\n },\n);\n\nexport type StackItemSigilProps = PropsWithChildren<\n {\n attendableId?: string;\n triggerLabel: string;\n actions?: StackItemSigilAction[][];\n icon: string;\n onAction?: (action: StackItemSigilAction) => void;\n } & Related\n>;\n\nexport const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>(\n ({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const suppressNextTooltip = useRef(false);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild ref={forwardedRef}>\n <StackItemSigilButton attendableId={attendableId} related={related}>\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {actionGroups?.map((actions, index) => {\n const separator = index > 0 ? <DropdownMenu.Separator /> : null;\n return (\n <Fragment key={index}>\n {separator}\n {actions.map((action) => {\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n\n const menuItemType = action.properties.menuItemType;\n const Root = menuItemType === 'toggle' ? DropdownMenu.CheckboxItem : DropdownMenu.Item;\n\n return (\n <Root\n key={action.id}\n onClick={(event) => {\n if (action.properties.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n suppressNextTooltip.current = true;\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties.disabled}\n checked={menuItemType === 'toggle' ? action.properties.isChecked : undefined}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon icon={action.properties.icon ?? 'ph--placeholder--regular'} size={4} />\n <span className='grow truncate'>{toLocalizedString(action.properties.label ?? '', t)}</span>\n {menuItemType === 'toggle' && (\n <DropdownMenu.ItemIndicator asChild>\n <Icon icon='ph--check--regular' size={4} />\n </DropdownMenu.ItemIndicator>\n )}\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </Root>\n );\n })}\n </Fragment>\n );\n })}\n {children}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {triggerLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nexport const MenuSignifierHorizontal = () => (\n <svg\n className='absolute block-end-[7px]'\n width={20}\n height={2}\n viewBox='0 0 20 2'\n stroke='currentColor'\n opacity={0.5}\n >\n <line\n x1={0.5}\n y1={0.75}\n x2={19}\n y2={0.75}\n strokeWidth={1.25}\n strokeLinecap='round'\n strokeDasharray='6 20'\n strokeDashoffset='-6.5'\n />\n </svg>\n);\n\nexport const MenuSignifierVertical = () => (\n <svg className='absolute inline-start-1' width={2} height={18} viewBox='0 0 2 18' stroke='currentColor'>\n <line x1={1} y1={3} x2={1} y2={18} strokeWidth={1.5} strokeLinecap='round' strokeDasharray='0 6' />\n </svg>\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'stack';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n '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": ["dropTargetForElements", "attachClosestEdge", "extractClosestEdge", "useArrowNavigationGroup", "composeRefs", "React", "Children", "forwardRef", "useLayoutEffect", "useState", "ListItem", "mx", "createContext", "useContext", "StackContext", "createContext", "orientation", "rail", "size", "useStack", "useContext", "StackItemContext", "selfDragHandleRef", "setSize", "useStackItem", "railGridHorizontal", "railGridVertical", "Stack", "forwardRef", "children", "classNames", "style", "orientation", "rail", "size", "onRearrange", "itemsCount", "Children", "count", "props", "forwardedRef", "stackElement", "stackRef", "useState", "composedItemRef", "composeRefs", "dropping", "setDropping", "arrowNavigationGroup", "useArrowNavigationGroup", "axis", "styles", "selfDroppable", "id", "useLayoutEffect", "acceptSourceType", "dropTargetForElements", "element", "getData", "input", "attachClosestEdge", "type", "allowedEdges", "onDragEnter", "source", "data", "onDrag", "onDragLeave", "onDrop", "self", "extractClosestEdge", "StackContext", "Provider", "value", "div", "className", "mx", "aria-orientation", "ref", "ListItem", "DropIndicator", "edge", "combine", "draggable", "dropTargetForElements", "disableNativeDragPreview", "preventUnhandled", "attachClosestEdge", "extractClosestEdge", "useFocusableGroup", "composeRefs", "React", "forwardRef", "useLayoutEffect", "useState", "useCallback", "ListItem", "mx", "React", "forwardRef", "mx", "StackItemContent", "forwardRef", "children", "toolbar", "statusbar", "classNames", "size", "props", "forwardedRef", "stackItemSize", "useStack", "React", "div", "role", "className", "mx", "style", "gridTemplateRows", "join", "ref", "Slot", "React", "StackItemDragHandle", "asChild", "children", "selfDragHandleRef", "useStackItem", "Root", "Slot", "React", "ref", "role", "useFocusableGroup", "React", "forwardRef", "useAttention", "mx", "StackItemHeading", "children", "classNames", "props", "orientation", "useStack", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "React", "div", "role", "tabIndex", "className", "mx", "StackItemHeadingLabel", "forwardRef", "attendableId", "related", "forwardedRef", "hasAttention", "isAncestor", "isRelated", "useAttention", "h1", "data-attention", "toString", "ref", "draggable", "disableNativeDragPreview", "preventUnhandled", "React", "useLayoutEffect", "useRef", "mx", "REM", "parseFloat", "getComputedStyle", "document", "documentElement", "fontSize", "MIN_SIZE", "measureStackItem", "element", "stackItemElement", "closest", "getBoundingClientRect", "width", "DEFAULT_EXTRINSIC_SIZE", "height", "getNextSize", "startSize", "location", "client", "Math", "max", "current", "input", "initial", "StackItemResizeHandle", "orientation", "useStack", "setSize", "size", "useStackItem", "buttonRef", "useRef", "dragStartSize", "useLayoutEffect", "hasAttribute", "draggable", "onGenerateDragPreview", "nativeSetDragImage", "disableNativeDragPreview", "preventUnhandled", "start", "onDragStart", "onDrag", "onDrop", "nextSize", "React", "button", "ref", "className", "mx", "div", "role", "DragHandleSignifier", "svg", "xmlns", "viewBox", "fill", "path", "d", "React", "Fragment", "forwardRef", "useRef", "useState", "keySymbols", "Button", "DropdownMenu", "Icon", "toLocalizedString", "Tooltip", "useTranslation", "useAttention", "descriptionText", "mx", "getHostPlatform", "React", "MenuSignifierHorizontal", "React", "svg", "className", "width", "height", "viewBox", "stroke", "opacity", "line", "x1", "y1", "x2", "y2", "strokeWidth", "strokeLinecap", "strokeDasharray", "strokeDashoffset", "translationKey", "StackItemSigilButton", "forwardRef", "attendableId", "classNames", "related", "children", "props", "forwardedRef", "hasAttention", "isAncestor", "isRelated", "useAttention", "variant", "React", "Button", "ref", "MenuSignifierHorizontal", "StackItemSigil", "actions", "actionGroups", "onAction", "triggerLabel", "icon", "t", "useTranslation", "translationKey", "suppressNextTooltip", "useRef", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "triggerTooltipOpen", "setTriggerTooltipOpen", "Tooltip", "Root", "open", "onOpenChange", "nextOpen", "current", "DropdownMenu", "Trigger", "asChild", "span", "className", "Icon", "size", "Portal", "Content", "Viewport", "map", "index", "separator", "Separator", "Fragment", "key", "action", "shortcut", "properties", "keyBinding", "getHostPlatform", "menuItemType", "CheckboxItem", "Item", "id", "onClick", "event", "disabled", "stopPropagation", "checked", "isChecked", "undefined", "testId", "toLocalizedString", "label", "ItemIndicator", "mx", "descriptionText", "keySymbols", "join", "Arrow", "side", "DEFAULT_HORIZONTAL_SIZE", "DEFAULT_VERTICAL_SIZE", "DEFAULT_EXTRINSIC_SIZE", "StackItemRoot", "forwardRef", "item", "children", "classNames", "size", "propsSize", "onSizeChange", "role", "order", "style", "props", "forwardedRef", "itemElement", "itemRef", "useState", "selfDragHandleElement", "selfDragHandleRef", "closestEdge", "setEdge", "orientation", "rail", "onRearrange", "useStack", "setInternalSize", "Root", "composedItemRef", "composeRefs", "setSize", "useCallback", "nextSize", "commit", "type", "useLayoutEffect", "combine", "draggable", "element", "dragHandle", "getInitialData", "id", "onGenerateDragPreview", "nativeSetDragImage", "disableNativeDragPreview", "preventUnhandled", "start", "dropTargetForElements", "getData", "input", "attachClosestEdge", "allowedEdges", "onDragEnter", "self", "source", "data", "extractClosestEdge", "onDrag", "onDragLeave", "onDrop", "focusGroupAttrs", "useFocusableGroup", "tabBehavior", "React", "StackItemContext", "Provider", "value", "tabIndex", "className", "mx", "data-dx-stack-item", "Number", "isFinite", "ref", "ListItem", "DropIndicator", "edge", "StackItem", "Content", "StackItemContent", "Heading", "StackItemHeading", "HeadingLabel", "StackItemHeadingLabel", "ResizeHandle", "StackItemResizeHandle", "DragHandle", "StackItemDragHandle", "Sigil", "StackItemSigil", "SigilButton", "StackItemSigilButton", "React", "forwardRef", "Button", "ButtonGroup", "Icon", "Tooltip", "useTranslation", "LayoutControl", "icon", "label", "props", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "span", "className", "Icon", "Portal", "Content", "side", "LayoutControls", "forwardRef", "onClick", "capabilities", "can", "isSolo", "pin", "close", "children", "forwardedRef", "t", "useTranslation", "translationKey", "buttonClassNames", "ButtonGroup", "ref", "includes", "classNames", "solo", "disabled", "incrementStart", "incrementEnd", "data-testid"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\nimport { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\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 useLayoutEffect,\n useState,\n} from 'react';\n\nimport { type ThemedClassName, ListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type StackContextValue, StackContext, type StackItemData } from './StackContext';\n\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Size = 'intrinsic' | 'contain';\n\nexport type StackProps = Omit<ThemedClassName<ComponentPropsWithRef<'div'>>, 'aria-orientation'> &\n Partial<StackContextValue> & { itemsCount?: number };\n\nexport const railGridHorizontal = 'grid-rows-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const railGridVertical = 'grid-cols-[[rail-start]_var(--rail-size)_[content-start]_1fr_[content-end]]';\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n children,\n classNames,\n style,\n orientation = 'vertical',\n rail = true,\n 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 [dropping, setDropping] = useState(false);\n\n const arrowNavigationGroup = useArrowNavigationGroup({ axis: orientation });\n\n const styles: CSSProperties = {\n [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']: `repeat(${itemsCount}, min-content)`,\n ...style,\n };\n\n const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);\n\n useLayoutEffect(() => {\n if (!stackElement || !selfDroppable) {\n return;\n }\n const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';\n return dropTargetForElements({\n element: stackElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: props.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: () => setDropping(false),\n onDrop: ({ self, source }) => {\n setDropping(false);\n if (source.data.type === acceptSourceType && selfDroppable) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n });\n }, [stackElement, selfDroppable]);\n\n return (\n <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>\n <div\n {...props}\n {...arrowNavigationGroup}\n className={mx(\n 'grid relative',\n rail\n ? orientation === 'horizontal'\n ? railGridHorizontal\n : railGridVertical\n : orientation === 'horizontal'\n ? 'grid-rows-1'\n : 'grid-cols-1',\n size === 'contain' &&\n (orientation === 'horizontal'\n ? 'overflow-x-auto min-bs-0 bs-full max-bs-full'\n : 'overflow-y-auto min-is-0 is-full max-is-full'),\n classNames,\n )}\n aria-orientation={orientation}\n style={styles}\n ref={composedItemRef}\n >\n {children}\n {selfDroppable && dropping && <ListItem.DropIndicator edge={orientation === 'horizontal' ? 'left' : 'top'} />}\n </div>\n </StackContext.Provider>\n );\n },\n);\n\nexport { StackContext };\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 Orientation, type Size } from './Stack';\n\nexport type StackItemSize = number | 'min-content';\n\nexport type StackItemData = { id: string; type: 'column' | 'card' };\n\nexport type StackItemRearrangeHandler = (\n source: StackItemData,\n target: StackItemData,\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 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 { 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\nexport const DEFAULT_HORIZONTAL_SIZE = 44 satisfies StackItemSize;\nexport const DEFAULT_VERTICAL_SIZE = 'min-content' satisfies StackItemSize;\nexport const DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE satisfies StackItemSize;\n\nexport type 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};\n\nconst StackItemRoot = forwardRef<HTMLDivElement, StackItemRootProps>(\n (\n { item, children, classNames, size: propsSize, onSizeChange, role, order, style, disableRearrange, ...props },\n forwardedRef,\n ) => {\n const [itemElement, itemRef] = useState<HTMLDivElement | null>(null);\n const [selfDragHandleElement, selfDragHandleRef] = useState<HTMLDivElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const { orientation, rail, 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 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 },\n }),\n dropTargetForElements({\n element: itemElement,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type },\n { input, element, allowedEdges: orientation === 'horizontal' ? ['left', 'right'] : ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [orientation, item, onRearrange, selfDragHandleElement, itemElement]);\n\n const focusGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n return (\n <StackItemContext.Provider value={{ selfDragHandleRef, size, setSize }}>\n <Root\n {...props}\n tabIndex={0}\n {...focusGroupAttrs}\n className={mx(\n 'group/stack-item grid relative dx-focus-ring-inset-over-all',\n size === 'min-content' && (orientation === 'horizontal' ? 'is-min' : 'bs-min'),\n orientation === 'horizontal' ? 'grid-rows-subgrid' : 'grid-cols-subgrid',\n rail && (orientation === 'horizontal' ? 'row-span-2' : 'col-span-2'),\n classNames,\n )}\n data-dx-stack-item\n style={{\n ...(size !== 'min-content' && {\n [orientation === 'horizontal' ? 'inlineSize' : 'blockSize']: `${size}rem`,\n }),\n ...(Number.isFinite(order) && {\n [orientation === 'horizontal' ? 'gridColumn' : 'gridRow']: `${order}`,\n }),\n ...style,\n }}\n ref={composedItemRef}\n >\n {children}\n {closestEdge && <ListItem.DropIndicator edge={closestEdge} />}\n </Root>\n </StackItemContext.Provider>\n );\n },\n);\n\nexport const StackItem = {\n Root: StackItemRoot,\n Content: StackItemContent,\n Heading: StackItemHeading,\n HeadingLabel: StackItemHeadingLabel,\n ResizeHandle: StackItemResizeHandle,\n 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 * Whether to provide for the layout of a statusbar after the content.\n */\n statusbar?: boolean;\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 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 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 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 { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack, useStackItem, type StackItemSize } from './StackContext';\nimport { DEFAULT_EXTRINSIC_SIZE } from './StackItem';\n\nconst REM = parseFloat(getComputedStyle(document.documentElement).fontSize);\n\nconst MIN_WIDTH = 20;\nconst MIN_HEIGHT = 3;\n\nconst measureStackItem = (element: HTMLButtonElement): { width: number; height: number } => {\n const stackItemElement = element.closest('[data-dx-stack-item]');\n return stackItemElement?.getBoundingClientRect() ?? { width: DEFAULT_EXTRINSIC_SIZE, height: DEFAULT_EXTRINSIC_SIZE };\n};\n\nconst getNextSize = (startSize: number, location: DragLocationHistory, client: 'clientX' | 'clientY') => {\n return Math.max(\n client === 'clientX' ? MIN_WIDTH : MIN_HEIGHT,\n startSize + (location.current.input[client] - location.initial.input[client]) / REM,\n );\n};\n\nexport type StackItemResizeHandleProps = {};\n\nexport const StackItemResizeHandle = () => {\n const { orientation } = useStack();\n const { setSize, size } = useStackItem();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dragStartSize = useRef<StackItemSize>(size);\n const client = orientation === 'horizontal' ? 'clientX' : 'clientY';\n\n useLayoutEffect(\n () => {\n if (!buttonRef.current || buttonRef.current.hasAttribute('draggable')) {\n return;\n }\n // TODO(thure): This should handle StackItem state vs local state better.\n draggable({\n element: buttonRef.current,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // We will be moving the line to indicate a drag; we can disable the native drag preview.\n disableNativeDragPreview({ nativeSetDragImage });\n // We don't want any native drop animation for when the user does not drop on a drop target.\n // We want the drag to finish immediately.\n preventUnhandled.start();\n },\n onDragStart: () => {\n dragStartSize.current =\n dragStartSize.current === 'min-content'\n ? measureStackItem(buttonRef.current!)[orientation === 'horizontal' ? 'width' : 'height'] / REM\n : dragStartSize.current;\n },\n onDrag: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n setSize(getNextSize(dragStartSize.current, location, client));\n },\n onDrop: ({ location }) => {\n if (typeof dragStartSize.current !== 'number') {\n return;\n }\n const nextSize = getNextSize(dragStartSize.current, location, client);\n setSize(nextSize, true);\n dragStartSize.current = nextSize;\n },\n });\n },\n [\n // Note that `size` should not be a dependency here since dragging this adjusts the size.\n ],\n );\n\n return (\n <button\n ref={buttonRef}\n className={mx(\n 'group absolute',\n orientation === 'horizontal'\n ? 'cursor-col-resize is-3 bs-full inline-end-[-1px] !border-lb-0 before:inset-block-0 before:inline-end-0 before:is-1'\n : 'cursor-row-resize bs-3 is-full block-end-[-1px] !border-li-0 before:inset-inline-0 before:block-end-0 before:bs-1',\n 'before:transition-opacity before:duration-100 before:ease-in-out before:opacity-0 hover:before:opacity-100 focus-visible:before:opacity-100 active:before:opacity-100',\n 'before:absolute before:block before:bg-accentFocusIndicator',\n )}\n >\n <div\n role='none'\n className={mx(\n 'absolute flex items-center group-hover:opacity-0 group-focus-visible:opacity-0 group-active:opacity-0',\n orientation === 'horizontal'\n ? 'block-start-0 inline-end-px bs-[--rail-size]'\n : 'inline-start-0 block-end-px is-[--rail-size] flex justify-center',\n )}\n >\n <DragHandleSignifier orientation={orientation} />\n </div>\n </button>\n );\n};\n\nconst DragHandleSignifier = ({ orientation }: { orientation: 'horizontal' | 'vertical' }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 256 256'\n fill='currentColor'\n className={mx('shrink-0 bs-[1em] is-[1em] text-unAccent', orientation === 'vertical' && 'rotate-90')}\n >\n {/* two pips: <path d='M256,120c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16v-56c0-8.8,7.2-16,16-16v88Z' /> */}\n <path d='M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,120c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,176c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n <path d='M256,232c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z' />\n </svg>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, type PropsWithChildren, forwardRef, useRef, useState } from 'react';\n\nimport { type ActionLike } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport { 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'> & AttendableId & Related;\n\nexport const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigilButtonProps>(\n ({ attendableId, classNames, related, children, ...props }, forwardedRef) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);\n const variant = (related && isRelated) || hasAttention || isAncestor ? 'primary' : 'ghost';\n return (\n <Button\n {...props}\n variant={variant}\n classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag', classNames]}\n ref={forwardedRef}\n >\n <MenuSignifierHorizontal />\n {children}\n </Button>\n );\n },\n);\n\nexport type StackItemSigilProps = PropsWithChildren<\n {\n attendableId?: string;\n triggerLabel: string;\n actions?: StackItemSigilAction[][];\n icon: string;\n onAction?: (action: StackItemSigilAction) => void;\n } & Related\n>;\n\nexport const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>(\n ({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const suppressNextTooltip = useRef(false);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n\n const hasActions = actionGroups && actionGroups.length > 0;\n\n const button = (\n <StackItemSigilButton\n attendableId={attendableId}\n related={related}\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": ["dropTargetForElements", "attachClosestEdge", "extractClosestEdge", "useArrowNavigationGroup", "composeRefs", "React", "Children", "forwardRef", "useLayoutEffect", "useState", "ListItem", "mx", "createContext", "useContext", "StackContext", "createContext", "orientation", "rail", "size", "useStack", "useContext", "StackItemContext", "selfDragHandleRef", "setSize", "useStackItem", "railGridHorizontal", "railGridVertical", "Stack", "forwardRef", "children", "classNames", "style", "orientation", "rail", "size", "onRearrange", "itemsCount", "Children", "count", "props", "forwardedRef", "stackElement", "stackRef", "useState", "composedItemRef", "composeRefs", "dropping", "setDropping", "arrowNavigationGroup", "useArrowNavigationGroup", "axis", "styles", "selfDroppable", "id", "useLayoutEffect", "acceptSourceType", "dropTargetForElements", "element", "getData", "input", "attachClosestEdge", "type", "allowedEdges", "onDragEnter", "source", "data", "onDrag", "onDragLeave", "onDrop", "self", "extractClosestEdge", "StackContext", "Provider", "value", "div", "className", "mx", "aria-orientation", "ref", "ListItem", "DropIndicator", "edge", "combine", "draggable", "dropTargetForElements", "preserveOffsetOnSource", "scrollJustEnoughIntoView", "attachClosestEdge", "extractClosestEdge", "useFocusableGroup", "composeRefs", "React", "forwardRef", "useLayoutEffect", "useState", "useCallback", "ListItem", "mx", "React", "forwardRef", "mx", "StackItemContent", "forwardRef", "children", "toolbar", "statusbar", "classNames", "size", "props", "forwardedRef", "stackItemSize", "useStack", "React", "div", "role", "className", "mx", "style", "gridTemplateRows", "join", "ref", "Slot", "React", "StackItemDragHandle", "asChild", "children", "selfDragHandleRef", "useStackItem", "Root", "Slot", "React", "ref", "role", "useFocusableGroup", "React", "forwardRef", "useAttention", "mx", "StackItemHeading", "children", "classNames", "props", "orientation", "useStack", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "React", "div", "role", "tabIndex", "className", "mx", "StackItemHeadingLabel", "forwardRef", "attendableId", "related", "forwardedRef", "hasAttention", "isAncestor", "isRelated", "useAttention", "h1", "data-attention", "toString", "ref", "draggable", "disableNativeDragPreview", "preventUnhandled", "React", "useLayoutEffect", "useRef", "mx", "REM", "parseFloat", "getComputedStyle", "document", "documentElement", "fontSize", "MIN_WIDTH", "MIN_HEIGHT", "measureStackItem", "element", "stackItemElement", "closest", "getBoundingClientRect", "width", "DEFAULT_EXTRINSIC_SIZE", "height", "getNextSize", "startSize", "location", "client", "Math", "max", "current", "input", "initial", "StackItemResizeHandle", "orientation", "useStack", "setSize", "size", "useStackItem", "buttonRef", "useRef", "dragStartSize", "useLayoutEffect", "hasAttribute", "draggable", "onGenerateDragPreview", "nativeSetDragImage", "disableNativeDragPreview", "preventUnhandled", "start", "onDragStart", "onDrag", "onDrop", "nextSize", "React", "button", "ref", "className", "mx", "div", "role", "DragHandleSignifier", "svg", "xmlns", "viewBox", "fill", "path", "d", "React", "Fragment", "forwardRef", "useRef", "useState", "keySymbols", "Button", "DropdownMenu", "Icon", "toLocalizedString", "useTranslation", "useAttention", "descriptionText", "mx", "getHostPlatform", "React", "MenuSignifierHorizontal", "React", "svg", "className", "width", "height", "viewBox", "stroke", "opacity", "line", "x1", "y1", "x2", "y2", "strokeWidth", "strokeLinecap", "strokeDasharray", "strokeDashoffset", "translationKey", "StackItemSigilButton", "forwardRef", "attendableId", "classNames", "related", "children", "props", "forwardedRef", "hasAttention", "isAncestor", "isRelated", "useAttention", "variant", "React", "Button", "ref", "MenuSignifierHorizontal", "StackItemSigil", "actions", "actionGroups", "onAction", "triggerLabel", "icon", "t", "useTranslation", "translationKey", "suppressNextTooltip", "useRef", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "hasActions", "length", "button", "span", "className", "Icon", "size", "DropdownMenu", "Root", "open", "onOpenChange", "nextOpen", "current", "Trigger", "asChild", "Portal", "Content", "Viewport", "map", "index", "separator", "Separator", "Fragment", "key", "action", "shortcut", "properties", "keyBinding", "getHostPlatform", "menuItemType", "CheckboxItem", "Item", "id", "onClick", "event", "disabled", "stopPropagation", "checked", "isChecked", "undefined", "testId", "toLocalizedString", "label", "ItemIndicator", "mx", "descriptionText", "keySymbols", "join", "Arrow", "DEFAULT_HORIZONTAL_SIZE", "DEFAULT_VERTICAL_SIZE", "DEFAULT_EXTRINSIC_SIZE", "StackItemRoot", "forwardRef", "item", "children", "classNames", "size", "propsSize", "onSizeChange", "role", "order", "style", "disableRearrange", "props", "forwardedRef", "itemElement", "itemRef", "useState", "selfDragHandleElement", "selfDragHandleRef", "closestEdge", "setEdge", "orientation", "rail", "onRearrange", "useStack", "setInternalSize", "Root", "composedItemRef", "composeRefs", "setSize", "useCallback", "nextSize", "commit", "type", "useLayoutEffect", "combine", "draggable", "element", "dragHandle", "getInitialData", "id", "onGenerateDragPreview", "nativeSetDragImage", "source", "location", "document", "body", "setAttribute", "scrollJustEnoughIntoView", "x", "y", "preserveOffsetOnSource", "input", "current", "container", "offsetParent", "onDragStart", "removeAttribute", "dropTargetForElements", "getData", "attachClosestEdge", "allowedEdges", "onDragEnter", "self", "data", "extractClosestEdge", "onDrag", "onDragLeave", "onDrop", "focusGroupAttrs", "useFocusableGroup", "tabBehavior", "React", "StackItemContext", "Provider", "value", "tabIndex", "className", "mx", "data-dx-stack-item", "Number", "isFinite", "ref", "ListItem", "DropIndicator", "edge", "StackItem", "Content", "StackItemContent", "Heading", "StackItemHeading", "HeadingLabel", "StackItemHeadingLabel", "ResizeHandle", "StackItemResizeHandle", "DragHandle", "StackItemDragHandle", "Sigil", "StackItemSigil", "SigilButton", "StackItemSigilButton", "React", "forwardRef", "Button", "ButtonGroup", "Icon", "Tooltip", "useTranslation", "LayoutControl", "icon", "label", "props", "React", "Tooltip", "Root", "Trigger", "asChild", "Button", "variant", "span", "className", "Icon", "Portal", "Content", "side", "LayoutControls", "forwardRef", "onClick", "capabilities", "can", "isSolo", "pin", "close", "children", "forwardedRef", "t", "useTranslation", "translationKey", "buttonClassNames", "ButtonGroup", "ref", "includes", "classNames", "solo", "disabled", "incrementStart", "incrementEnd", "data-testid"]
7
7
  }