@dxos/react-ui-stack 0.7.5-main.9d26e3a → 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.
- package/dist/lib/browser/index.mjs +70 -64
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +61 -55
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +70 -64
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/StackItem.d.ts +8 -1
- package/dist/types/src/components/StackItem.d.ts.map +1 -1
- package/dist/types/src/components/StackItemContent.d.ts +35 -2
- package/dist/types/src/components/StackItemContent.d.ts.map +1 -1
- package/dist/types/src/components/StackItemResizeHandle.d.ts.map +1 -1
- package/dist/types/src/components/StackItemSigil.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -27
- package/src/components/StackItem.tsx +19 -9
- package/src/components/StackItemContent.tsx +45 -27
- package/src/components/StackItemHeading.tsx +2 -2
- package/src/components/StackItemResizeHandle.tsx +20 -9
- package/src/components/StackItemSigil.tsx +90 -103
- package/dist/types/src/testing/EditorContent.d.ts +0 -8
- package/dist/types/src/testing/EditorContent.d.ts.map +0 -1
- package/src/testing/EditorContent.tsx +0 -60
|
@@ -102,24 +102,24 @@ 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 {
|
|
106
|
-
import {
|
|
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";
|
|
110
|
-
import React8, { forwardRef as
|
|
110
|
+
import React8, { forwardRef as forwardRef5, useLayoutEffect as useLayoutEffect3, useState as useState3, useCallback } from "react";
|
|
111
111
|
import { ListItem as ListItem2 } from "@dxos/react-ui";
|
|
112
112
|
import { mx as mx6 } from "@dxos/react-ui-theme";
|
|
113
113
|
|
|
114
114
|
// packages/ui/react-ui-stack/src/components/StackItemContent.tsx
|
|
115
|
-
import React2 from "react";
|
|
115
|
+
import React2, { forwardRef as forwardRef2 } from "react";
|
|
116
116
|
import { mx as mx2 } from "@dxos/react-ui-theme";
|
|
117
|
-
var StackItemContent = ({ children, toolbar
|
|
118
|
-
const { size } = useStack();
|
|
117
|
+
var StackItemContent = /* @__PURE__ */ forwardRef2(({ children, toolbar, statusbar, classNames, size = "intrinsic", ...props }, forwardedRef) => {
|
|
118
|
+
const { size: stackItemSize } = useStack();
|
|
119
119
|
return /* @__PURE__ */ React2.createElement("div", {
|
|
120
120
|
role: "none",
|
|
121
121
|
...props,
|
|
122
|
-
className: mx2("group grid grid-cols-[100%]",
|
|
122
|
+
className: mx2("group grid grid-cols-[100%]", stackItemSize === "contain" && "min-bs-0 overflow-hidden", size === "video" ? "aspect-video" : size === "square" && "aspect-square", classNames),
|
|
123
123
|
style: {
|
|
124
124
|
gridTemplateRows: [
|
|
125
125
|
...toolbar ? [
|
|
@@ -130,9 +130,10 @@ var StackItemContent = ({ children, toolbar = true, statusbar, classNames, ...pr
|
|
|
130
130
|
"var(--statusbar-size)"
|
|
131
131
|
] : []
|
|
132
132
|
].join(" ")
|
|
133
|
-
}
|
|
133
|
+
},
|
|
134
|
+
ref: forwardedRef
|
|
134
135
|
}, children);
|
|
135
|
-
};
|
|
136
|
+
});
|
|
136
137
|
|
|
137
138
|
// packages/ui/react-ui-stack/src/components/StackItemDragHandle.tsx
|
|
138
139
|
import { Slot } from "@radix-ui/react-slot";
|
|
@@ -148,7 +149,7 @@ var StackItemDragHandle = ({ asChild, children }) => {
|
|
|
148
149
|
|
|
149
150
|
// packages/ui/react-ui-stack/src/components/StackItemHeading.tsx
|
|
150
151
|
import { useFocusableGroup } from "@fluentui/react-tabster";
|
|
151
|
-
import React4, { forwardRef as
|
|
152
|
+
import React4, { forwardRef as forwardRef3 } from "react";
|
|
152
153
|
import { useAttention } from "@dxos/react-ui-attention";
|
|
153
154
|
import { mx as mx3 } from "@dxos/react-ui-theme";
|
|
154
155
|
var StackItemHeading = ({ children, classNames, ...props }) => {
|
|
@@ -161,15 +162,15 @@ var StackItemHeading = ({ children, classNames, ...props }) => {
|
|
|
161
162
|
...props,
|
|
162
163
|
tabIndex: 0,
|
|
163
164
|
...focusableGroupAttrs,
|
|
164
|
-
className: mx3("flex items-center
|
|
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)
|
|
165
166
|
}, children);
|
|
166
167
|
};
|
|
167
|
-
var StackItemHeadingLabel = /* @__PURE__ */
|
|
168
|
+
var StackItemHeadingLabel = /* @__PURE__ */ forwardRef3(({ attendableId, related, classNames, ...props }, forwardedRef) => {
|
|
168
169
|
const { hasAttention, isAncestor, isRelated } = useAttention(attendableId);
|
|
169
170
|
return /* @__PURE__ */ React4.createElement("h1", {
|
|
170
171
|
...props,
|
|
171
172
|
"data-attention": (related && isRelated || hasAttention || isAncestor).toString(),
|
|
172
|
-
className: mx3("pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText", classNames),
|
|
173
|
+
className: mx3("pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText self-center", classNames),
|
|
173
174
|
ref: forwardedRef
|
|
174
175
|
});
|
|
175
176
|
});
|
|
@@ -181,7 +182,8 @@ import { preventUnhandled } from "@atlaskit/pragmatic-drag-and-drop/prevent-unha
|
|
|
181
182
|
import React5, { useLayoutEffect as useLayoutEffect2, useRef } from "react";
|
|
182
183
|
import { mx as mx4 } from "@dxos/react-ui-theme";
|
|
183
184
|
var REM = parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
184
|
-
var
|
|
185
|
+
var MIN_WIDTH = 20;
|
|
186
|
+
var MIN_HEIGHT = 3;
|
|
185
187
|
var measureStackItem = (element) => {
|
|
186
188
|
const stackItemElement = element.closest("[data-dx-stack-item]");
|
|
187
189
|
return stackItemElement?.getBoundingClientRect() ?? {
|
|
@@ -190,7 +192,7 @@ var measureStackItem = (element) => {
|
|
|
190
192
|
};
|
|
191
193
|
};
|
|
192
194
|
var getNextSize = (startSize, location, client) => {
|
|
193
|
-
return Math.max(
|
|
195
|
+
return Math.max(client === "clientX" ? MIN_WIDTH : MIN_HEIGHT, startSize + (location.current.input[client] - location.initial.input[client]) / REM);
|
|
194
196
|
};
|
|
195
197
|
var StackItemResizeHandle = () => {
|
|
196
198
|
const { orientation } = useStack();
|
|
@@ -231,18 +233,20 @@ var StackItemResizeHandle = () => {
|
|
|
231
233
|
}, []);
|
|
232
234
|
return /* @__PURE__ */ React5.createElement("button", {
|
|
233
235
|
ref: buttonRef,
|
|
234
|
-
className: mx4(orientation === "horizontal" ? "cursor-col-resize" : "cursor-row-resize
|
|
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")
|
|
235
237
|
}, /* @__PURE__ */ React5.createElement("div", {
|
|
236
238
|
role: "none",
|
|
237
|
-
className: "absolute
|
|
238
|
-
}, /* @__PURE__ */ React5.createElement(DragHandleSignifier,
|
|
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
|
+
})));
|
|
239
243
|
};
|
|
240
|
-
var DragHandleSignifier = () => {
|
|
244
|
+
var DragHandleSignifier = ({ orientation }) => {
|
|
241
245
|
return /* @__PURE__ */ React5.createElement("svg", {
|
|
242
246
|
xmlns: "http://www.w3.org/2000/svg",
|
|
243
247
|
viewBox: "0 0 256 256",
|
|
244
248
|
fill: "currentColor",
|
|
245
|
-
className: "shrink-0 bs-[1em] is-[1em] text-unAccent"
|
|
249
|
+
className: mx4("shrink-0 bs-[1em] is-[1em] text-unAccent", orientation === "vertical" && "rotate-90")
|
|
246
250
|
}, /* @__PURE__ */ React5.createElement("path", {
|
|
247
251
|
d: "M256,64c-8.8,0-16-7.2-16-16s7.2-16,16-16v32Z"
|
|
248
252
|
}), /* @__PURE__ */ React5.createElement("path", {
|
|
@@ -255,9 +259,9 @@ var DragHandleSignifier = () => {
|
|
|
255
259
|
};
|
|
256
260
|
|
|
257
261
|
// packages/ui/react-ui-stack/src/components/StackItemSigil.tsx
|
|
258
|
-
import React7, { Fragment, forwardRef as
|
|
262
|
+
import React7, { Fragment, forwardRef as forwardRef4, useRef as useRef2, useState as useState2 } from "react";
|
|
259
263
|
import { keySymbols } from "@dxos/keyboard";
|
|
260
|
-
import { Button, DropdownMenu, Icon, toLocalizedString,
|
|
264
|
+
import { Button, DropdownMenu, Icon, toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
261
265
|
import { useAttention as useAttention2 } from "@dxos/react-ui-attention";
|
|
262
266
|
import { descriptionText, mx as mx5 } from "@dxos/react-ui-theme";
|
|
263
267
|
import { getHostPlatform } from "@dxos/util";
|
|
@@ -301,35 +305,40 @@ var translations_default = [
|
|
|
301
305
|
];
|
|
302
306
|
|
|
303
307
|
// packages/ui/react-ui-stack/src/components/StackItemSigil.tsx
|
|
304
|
-
var StackItemSigilButton = /* @__PURE__ */
|
|
308
|
+
var StackItemSigilButton = /* @__PURE__ */ forwardRef4(({ attendableId, classNames, related, children, ...props }, forwardedRef) => {
|
|
305
309
|
const { hasAttention, isAncestor, isRelated } = useAttention2(attendableId);
|
|
306
310
|
const variant = related && isRelated || hasAttention || isAncestor ? "primary" : "ghost";
|
|
307
311
|
return /* @__PURE__ */ React7.createElement(Button, {
|
|
308
312
|
...props,
|
|
309
313
|
variant,
|
|
310
314
|
classNames: [
|
|
311
|
-
"
|
|
315
|
+
"shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag",
|
|
312
316
|
classNames
|
|
313
317
|
],
|
|
314
318
|
ref: forwardedRef
|
|
315
319
|
}, /* @__PURE__ */ React7.createElement(MenuSignifierHorizontal, null), children);
|
|
316
320
|
});
|
|
317
|
-
var StackItemSigil = /* @__PURE__ */
|
|
321
|
+
var StackItemSigil = /* @__PURE__ */ forwardRef4(({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {
|
|
318
322
|
const { t } = useTranslation(translationKey);
|
|
319
323
|
const suppressNextTooltip = useRef2(false);
|
|
320
324
|
const [optionsMenuOpen, setOptionsMenuOpen] = useState2(false);
|
|
321
|
-
const
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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, {
|
|
333
342
|
open: optionsMenuOpen,
|
|
334
343
|
onOpenChange: (nextOpen) => {
|
|
335
344
|
if (!nextOpen) {
|
|
@@ -337,20 +346,10 @@ var StackItemSigil = /* @__PURE__ */ forwardRef3(({ actions: actionGroups, onAct
|
|
|
337
346
|
}
|
|
338
347
|
return setOptionsMenuOpen(nextOpen);
|
|
339
348
|
}
|
|
340
|
-
}, /* @__PURE__ */ React7.createElement(Tooltip.Trigger, {
|
|
341
|
-
asChild: true
|
|
342
349
|
}, /* @__PURE__ */ React7.createElement(DropdownMenu.Trigger, {
|
|
343
350
|
asChild: true,
|
|
344
351
|
ref: forwardedRef
|
|
345
|
-
}, /* @__PURE__ */ React7.createElement(
|
|
346
|
-
attendableId,
|
|
347
|
-
related
|
|
348
|
-
}, /* @__PURE__ */ React7.createElement("span", {
|
|
349
|
-
className: "sr-only"
|
|
350
|
-
}, triggerLabel), /* @__PURE__ */ React7.createElement(Icon, {
|
|
351
|
-
icon,
|
|
352
|
-
size: 5
|
|
353
|
-
})))), /* @__PURE__ */ React7.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React7.createElement(DropdownMenu.Content, {
|
|
352
|
+
}, button), /* @__PURE__ */ React7.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React7.createElement(DropdownMenu.Content, {
|
|
354
353
|
classNames: "z-[31]"
|
|
355
354
|
}, /* @__PURE__ */ React7.createElement(DropdownMenu.Viewport, null, actionGroups?.map((actions, index) => {
|
|
356
355
|
const separator = index > 0 ? /* @__PURE__ */ React7.createElement(DropdownMenu.Separator, null) : null;
|
|
@@ -391,16 +390,14 @@ var StackItemSigil = /* @__PURE__ */ forwardRef3(({ actions: actionGroups, onAct
|
|
|
391
390
|
className: mx5("shrink-0", descriptionText)
|
|
392
391
|
}, keySymbols(shortcut).join("")));
|
|
393
392
|
}));
|
|
394
|
-
}), children), /* @__PURE__ */ React7.createElement(DropdownMenu.Arrow, null))))
|
|
395
|
-
side: "bottom"
|
|
396
|
-
}, triggerLabel, /* @__PURE__ */ React7.createElement(Tooltip.Arrow, null))));
|
|
393
|
+
}), children), /* @__PURE__ */ React7.createElement(DropdownMenu.Arrow, null))));
|
|
397
394
|
});
|
|
398
395
|
|
|
399
396
|
// packages/ui/react-ui-stack/src/components/StackItem.tsx
|
|
400
397
|
var DEFAULT_HORIZONTAL_SIZE = 44;
|
|
401
398
|
var DEFAULT_VERTICAL_SIZE = "min-content";
|
|
402
399
|
var DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE;
|
|
403
|
-
var StackItemRoot = /* @__PURE__ */
|
|
400
|
+
var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, size: propsSize, onSizeChange, role, order, style, disableRearrange, ...props }, forwardedRef) => {
|
|
404
401
|
const [itemElement, itemRef] = useState3(null);
|
|
405
402
|
const [selfDragHandleElement, selfDragHandleRef] = useState3(null);
|
|
406
403
|
const [closestEdge, setEdge] = useState3(null);
|
|
@@ -418,7 +415,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef4(({ item, children, classNames, s
|
|
|
418
415
|
]);
|
|
419
416
|
const type = orientation === "horizontal" ? "column" : "card";
|
|
420
417
|
useLayoutEffect3(() => {
|
|
421
|
-
if (!itemElement || !onRearrange) {
|
|
418
|
+
if (!itemElement || !onRearrange || disableRearrange) {
|
|
422
419
|
return;
|
|
423
420
|
}
|
|
424
421
|
return combine(draggable2({
|
|
@@ -430,12 +427,21 @@ var StackItemRoot = /* @__PURE__ */ forwardRef4(({ item, children, classNames, s
|
|
|
430
427
|
id: item.id,
|
|
431
428
|
type
|
|
432
429
|
}),
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
430
|
+
onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {
|
|
431
|
+
document.body.setAttribute("data-drag-preview", "true");
|
|
432
|
+
scrollJustEnoughIntoView({
|
|
433
|
+
element: source.element
|
|
437
434
|
});
|
|
438
|
-
|
|
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");
|
|
439
445
|
}
|
|
440
446
|
}), dropTargetForElements2({
|
|
441
447
|
element: itemElement,
|
|
@@ -493,7 +499,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef4(({ item, children, classNames, s
|
|
|
493
499
|
...props,
|
|
494
500
|
tabIndex: 0,
|
|
495
501
|
...focusGroupAttrs,
|
|
496
|
-
className: mx6("group/stack-item grid relative
|
|
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),
|
|
497
503
|
"data-dx-stack-item": true,
|
|
498
504
|
style: {
|
|
499
505
|
...size !== "min-content" && {
|
|
@@ -521,10 +527,10 @@ var StackItem = {
|
|
|
521
527
|
};
|
|
522
528
|
|
|
523
529
|
// packages/ui/react-ui-stack/src/components/LayoutControls.tsx
|
|
524
|
-
import React9, { forwardRef as
|
|
525
|
-
import { Button as Button2, ButtonGroup, Icon as Icon2, Tooltip
|
|
530
|
+
import React9, { forwardRef as forwardRef6 } from "react";
|
|
531
|
+
import { Button as Button2, ButtonGroup, Icon as Icon2, Tooltip, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
526
532
|
var LayoutControl = ({ icon, label, ...props }) => {
|
|
527
|
-
return /* @__PURE__ */ React9.createElement(
|
|
533
|
+
return /* @__PURE__ */ React9.createElement(Tooltip.Root, null, /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
|
|
528
534
|
asChild: true
|
|
529
535
|
}, /* @__PURE__ */ React9.createElement(Button2, {
|
|
530
536
|
variant: "ghost",
|
|
@@ -533,11 +539,11 @@ var LayoutControl = ({ icon, label, ...props }) => {
|
|
|
533
539
|
className: "sr-only"
|
|
534
540
|
}, label), /* @__PURE__ */ React9.createElement(Icon2, {
|
|
535
541
|
icon
|
|
536
|
-
}))), /* @__PURE__ */ React9.createElement(
|
|
542
|
+
}))), /* @__PURE__ */ React9.createElement(Tooltip.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip.Content, {
|
|
537
543
|
side: "bottom"
|
|
538
544
|
}, label)));
|
|
539
545
|
};
|
|
540
|
-
var LayoutControls = /* @__PURE__ */
|
|
546
|
+
var LayoutControls = /* @__PURE__ */ forwardRef6(({ onClick, variant = "default", capabilities: can, isSolo, pin, close = false, children, ...props }, forwardedRef) => {
|
|
541
547
|
const { t } = useTranslation2(translationKey);
|
|
542
548
|
const buttonClassNames = variant === "hide-disabled" ? "disabled:hidden !p-1" : "!p-1";
|
|
543
549
|
return /* @__PURE__ */ React9.createElement(ButtonGroup, {
|
|
@@ -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 } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useStack } from './StackContext';\n\nexport type StackItemContentProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {\n toolbar?: boolean;\n statusbar?: boolean;\n};\n\nexport const StackItemContent = ({\n children,\n toolbar = true,\n statusbar,\n classNames,\n ...props\n}: StackItemContentProps) => {\n const { size } = useStack();\n\n return (\n <div\n role='none'\n {...props}\n className={mx('group grid grid-cols-[100%]', size === 'contain' && 'min-bs-0 overflow-hidden', classNames)}\n style={{\n gridTemplateRows: [\n ...(toolbar ? ['var(--rail-action)'] : []),\n '1fr',\n ...(statusbar ? ['var(--statusbar-size)'] : []),\n ].join(' '),\n }}\n >\n {children}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { 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',\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={['m-1 shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative', classNames]}\n ref={forwardedRef}\n >\n <MenuSignifierHorizontal />\n {children}\n </Button>\n );\n },\n);\n\nexport type StackItemSigilProps = PropsWithChildren<\n {\n attendableId?: string;\n triggerLabel: string;\n actions?: StackItemSigilAction[][];\n icon: string;\n onAction?: (action: StackItemSigilAction) => void;\n } & Related\n>;\n\nexport const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>(\n ({ actions: actionGroups, onAction, triggerLabel, attendableId, icon, related, children }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const suppressNextTooltip = useRef(false);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild ref={forwardedRef}>\n <StackItemSigilButton attendableId={attendableId} related={related}>\n <span className='sr-only'>{triggerLabel}</span>\n <Icon icon={icon} size={5} />\n </StackItemSigilButton>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {actionGroups?.map((actions, index) => {\n const separator = index > 0 ? <DropdownMenu.Separator /> : null;\n return (\n <Fragment key={index}>\n {separator}\n {actions.map((action) => {\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n\n const menuItemType = action.properties.menuItemType;\n const Root = menuItemType === 'toggle' ? DropdownMenu.CheckboxItem : DropdownMenu.Item;\n\n return (\n <Root\n key={action.id}\n onClick={(event) => {\n if (action.properties.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n suppressNextTooltip.current = true;\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties.disabled}\n checked={menuItemType === 'toggle' ? action.properties.isChecked : undefined}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon icon={action.properties.icon ?? 'ph--placeholder--regular'} size={4} />\n <span className='grow truncate'>{toLocalizedString(action.properties.label ?? '', t)}</span>\n {menuItemType === 'toggle' && (\n <DropdownMenu.ItemIndicator asChild>\n <Icon icon='ph--check--regular' size={4} />\n </DropdownMenu.ItemIndicator>\n )}\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </Root>\n );\n })}\n </Fragment>\n );\n })}\n {children}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <Tooltip.Portal>\n <Tooltip.Content 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", "
|
|
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
|
}
|