@dxos/react-ui-mosaic 0.8.4-main.c85a9c8dae → 0.8.4-main.cb12b3f963
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/{chunk-7S4PIFKU.mjs → chunk-RUQB4JIG.mjs} +237 -226
- package/dist/lib/browser/chunk-RUQB4JIG.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +157 -83
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/playwright/index.mjs +108 -15
- package/dist/lib/browser/playwright/index.mjs.map +3 -3
- package/dist/lib/browser/testing/index.mjs +16 -12
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/translations.mjs +18 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MK6KU66S.mjs → chunk-MYDCPSNY.mjs} +237 -226
- package/dist/lib/node-esm/chunk-MYDCPSNY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +157 -83
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/playwright/index.mjs +108 -15
- package/dist/lib/node-esm/playwright/index.mjs.map +3 -3
- package/dist/lib/node-esm/testing/index.mjs +16 -12
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/translations.mjs +20 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/types/src/components/Board/Board.d.ts +15 -8
- package/dist/types/src/components/Board/Board.d.ts.map +1 -1
- package/dist/types/src/components/Board/Board.stories.d.ts +5 -5
- package/dist/types/src/components/Board/Board.stories.d.ts.map +1 -1
- package/dist/types/src/components/Board/Column.d.ts +12 -12
- package/dist/types/src/components/Board/Column.d.ts.map +1 -1
- package/dist/types/src/components/Board/Item.d.ts +4 -1
- package/dist/types/src/components/Board/Item.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.d.ts +1 -25
- package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Container.d.ts +16 -13
- package/dist/types/src/components/Mosaic/Container.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Mosaic.d.ts +12 -27
- package/dist/types/src/components/Mosaic/Mosaic.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Placeholder.d.ts +8 -8
- package/dist/types/src/components/Mosaic/Placeholder.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Root.d.ts +5 -6
- package/dist/types/src/components/Mosaic/Root.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Stack.d.ts +12 -6
- package/dist/types/src/components/Mosaic/Stack.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Stack.stories.d.ts +11 -0
- package/dist/types/src/components/Mosaic/Stack.stories.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/Tile.d.ts +14 -9
- package/dist/types/src/components/Mosaic/Tile.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/extension.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/styles.d.ts.map +1 -1
- package/dist/types/src/components/Mosaic/types.d.ts.map +1 -1
- package/dist/types/src/components/SearchStack/SearchStack.d.ts +20 -0
- package/dist/types/src/components/SearchStack/SearchStack.d.ts.map +1 -0
- package/dist/types/src/components/SearchStack/SearchStack.stories.d.ts +10 -0
- package/dist/types/src/components/SearchStack/SearchStack.stories.d.ts.map +1 -0
- package/dist/types/src/components/SearchStack/index.d.ts +2 -0
- package/dist/types/src/components/SearchStack/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useContainerDebug.d.ts.map +1 -1
- package/dist/types/src/hooks/useDefaultColumnEventHandler.d.ts.map +1 -1
- package/dist/types/src/hooks/useEventHandlerAdapter.d.ts +1 -1
- package/dist/types/src/hooks/useEventHandlerAdapter.d.ts.map +1 -1
- package/dist/types/src/hooks/useVisibleItems.d.ts.map +1 -1
- package/dist/types/src/playwright/board-manager.d.ts +12 -2
- package/dist/types/src/playwright/board-manager.d.ts.map +1 -1
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
- package/dist/types/src/testing/CardContainer.d.ts.map +1 -1
- package/dist/types/src/testing/DefaultStackTile.d.ts.map +1 -1
- package/dist/types/src/testing/types.d.ts +3 -3
- package/dist/types/src/translations.d.ts +3 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +40 -37
- package/src/AUDIT.md +106 -0
- package/src/components/Board/Board.stories.tsx +23 -22
- package/src/components/Board/Board.tsx +7 -8
- package/src/components/Board/Column.tsx +59 -55
- package/src/components/Board/Item.tsx +32 -29
- package/src/components/Focus/Focus.tsx +2 -102
- package/src/components/Mosaic/Container.tsx +51 -25
- package/src/components/Mosaic/Placeholder.tsx +7 -1
- package/src/components/Mosaic/Root.tsx +199 -205
- package/src/components/Mosaic/Stack.stories.tsx +125 -69
- package/src/components/Mosaic/Stack.tsx +149 -54
- package/src/components/Mosaic/Tile.tsx +46 -36
- package/src/components/SearchStack/SearchStack.stories.tsx +47 -0
- package/src/components/SearchStack/SearchStack.tsx +135 -0
- package/src/components/SearchStack/index.ts +5 -0
- package/src/components/index.ts +1 -0
- package/src/hooks/useContainerDebug.tsx +2 -2
- package/src/hooks/useDefaultColumnEventHandler.ts +0 -1
- package/src/hooks/useEventHandlerAdapter.ts +1 -1
- package/src/playwright/board-manager.ts +156 -23
- package/src/playwright/smoke.spec.ts +10 -5
- package/src/testing/CardContainer.tsx +2 -2
- package/src/testing/DefaultStackTile.tsx +29 -20
- package/src/testing/types.ts +2 -2
- package/src/translations.ts +3 -3
- package/dist/lib/browser/chunk-7S4PIFKU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MK6KU66S.mjs.map +0 -7
|
@@ -22,55 +22,7 @@ var useVisibleItems = ({ id, items, dragging, getId }) => {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
// src/components/Focus/Focus.tsx
|
|
25
|
-
import {
|
|
26
|
-
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
27
|
-
import { Primitive } from "@radix-ui/react-primitive";
|
|
28
|
-
import { Slot } from "@radix-ui/react-slot";
|
|
29
|
-
import React, { createContext, forwardRef, useContext, useRef, useState } from "react";
|
|
30
|
-
import { mx } from "@dxos/ui-theme";
|
|
31
|
-
var FOCUS_STATE_ATTR = "focus-state";
|
|
32
|
-
var FocusContext = /* @__PURE__ */ createContext({});
|
|
33
|
-
var useFocus = () => useContext(FocusContext);
|
|
34
|
-
var Group = /* @__PURE__ */ forwardRef(({ classNames, className, children, asChild, orientation = "vertical", ...props }, forwardedRef) => {
|
|
35
|
-
const rootRef = useRef(null);
|
|
36
|
-
const composedRef = useComposedRefs(rootRef, forwardedRef);
|
|
37
|
-
const Comp = asChild ? Slot : Primitive.div;
|
|
38
|
-
const focusableGroupAttrs = useFocusableGroup({
|
|
39
|
-
tabBehavior: "limited-trap-focus"
|
|
40
|
-
});
|
|
41
|
-
const arrowNavigationAttrs = useArrowNavigationGroup({
|
|
42
|
-
axis: orientation,
|
|
43
|
-
memorizeCurrent: true
|
|
44
|
-
});
|
|
45
|
-
const tabsterAttrs = useMergedTabsterAttributes_unstable(focusableGroupAttrs, arrowNavigationAttrs);
|
|
46
|
-
const [state, setState] = useState();
|
|
47
|
-
return /* @__PURE__ */ React.createElement(FocusContext.Provider, {
|
|
48
|
-
value: {
|
|
49
|
-
setFocus: setState
|
|
50
|
-
}
|
|
51
|
-
}, /* @__PURE__ */ React.createElement(Comp, {
|
|
52
|
-
...props,
|
|
53
|
-
...tabsterAttrs,
|
|
54
|
-
...state && {
|
|
55
|
-
[`data-${FOCUS_STATE_ATTR}`]: state
|
|
56
|
-
},
|
|
57
|
-
tabIndex: 0,
|
|
58
|
-
className: mx([
|
|
59
|
-
// TODO(burdon): Option for border/rounded; ring/outline vs border?
|
|
60
|
-
"outline-hidden border border-separator md:rounded-xs",
|
|
61
|
-
// Focus (e.g., via tabster).
|
|
62
|
-
"focus:!border-accent-surface",
|
|
63
|
-
// Active (e.g., drop target).
|
|
64
|
-
"data-[focus-state=active]:border-neutral-focus-indicator",
|
|
65
|
-
// Error
|
|
66
|
-
"data-[focus-state=error]:border-rose-500"
|
|
67
|
-
], className, classNames),
|
|
68
|
-
ref: composedRef
|
|
69
|
-
}, children));
|
|
70
|
-
});
|
|
71
|
-
var Focus = {
|
|
72
|
-
Group
|
|
73
|
-
};
|
|
25
|
+
import { Focus, useFocus } from "@dxos/react-ui";
|
|
74
26
|
|
|
75
27
|
// src/components/Mosaic/styles.ts
|
|
76
28
|
var styles = {
|
|
@@ -108,23 +60,22 @@ var getSourceData = (source) => {
|
|
|
108
60
|
// src/components/Mosaic/Root.tsx
|
|
109
61
|
import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
|
|
110
62
|
import { monitorForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
111
|
-
import { useComposedRefs
|
|
112
|
-
import { createContext
|
|
113
|
-
import { Primitive
|
|
114
|
-
import { Slot
|
|
115
|
-
import
|
|
63
|
+
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
64
|
+
import { createContext } from "@radix-ui/react-context";
|
|
65
|
+
import { Primitive } from "@radix-ui/react-primitive";
|
|
66
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
67
|
+
import React, { forwardRef, useCallback, useEffect, useRef, useState } from "react";
|
|
116
68
|
import { log } from "@dxos/log";
|
|
117
|
-
import { mx as mx2 } from "@dxos/ui-theme";
|
|
118
69
|
var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-mosaic/src/components/Mosaic/Root.tsx";
|
|
119
|
-
var [MosaicRootContextProvider, useMosaicRootContext] =
|
|
70
|
+
var [MosaicRootContextProvider, useMosaicRootContext] = createContext("MosaicRoot");
|
|
120
71
|
var MOSAIC_ROOT_NAME = "Mosaic.Root";
|
|
121
72
|
var MOSAIC_ROOT_DEBUG_ATTR = "mosaic-debug";
|
|
122
|
-
var MosaicRoot = /* @__PURE__ */
|
|
123
|
-
const rootRef =
|
|
124
|
-
const composedRef =
|
|
125
|
-
const Comp = asChild ?
|
|
126
|
-
const [handlers, setHandlers] =
|
|
127
|
-
const [dragging, setDragging] =
|
|
73
|
+
var MosaicRoot = /* @__PURE__ */ forwardRef(({ children, asChild, debug }, forwardedRef) => {
|
|
74
|
+
const rootRef = useRef(null);
|
|
75
|
+
const composedRef = useComposedRefs(rootRef, forwardedRef);
|
|
76
|
+
const Comp = asChild ? Slot : Primitive.div;
|
|
77
|
+
const [handlers, setHandlers] = useState({});
|
|
78
|
+
const [dragging, setDragging] = useState();
|
|
128
79
|
const getSourceHandler = useCallback((source) => {
|
|
129
80
|
const data = source.data;
|
|
130
81
|
return {
|
|
@@ -169,7 +120,7 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
169
120
|
source: {
|
|
170
121
|
data: sourceData,
|
|
171
122
|
handler: handlers[sourceData.containerId],
|
|
172
|
-
//
|
|
123
|
+
// TODO(burdon): Check id matches.
|
|
173
124
|
container: location.initial.dropTargets.find((target) => target.data.type === "container")?.element
|
|
174
125
|
},
|
|
175
126
|
target: targetData && {
|
|
@@ -199,12 +150,7 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
199
150
|
log("Root.onDragStart", {
|
|
200
151
|
source: source.data,
|
|
201
152
|
location: location.current.dropTargets.map((target) => target.data)
|
|
202
|
-
}, {
|
|
203
|
-
F: __dxlog_file,
|
|
204
|
-
L: 149,
|
|
205
|
-
S: void 0,
|
|
206
|
-
C: (f, a) => f(...a)
|
|
207
|
-
});
|
|
153
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 96, S: void 0 });
|
|
208
154
|
handleChange({
|
|
209
155
|
source,
|
|
210
156
|
location
|
|
@@ -218,12 +164,7 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
218
164
|
log("Root.onDropTargetChange", {
|
|
219
165
|
source: source.data,
|
|
220
166
|
location: location.current.dropTargets.map((target) => target.data)
|
|
221
|
-
}, {
|
|
222
|
-
F: __dxlog_file,
|
|
223
|
-
L: 162,
|
|
224
|
-
S: void 0,
|
|
225
|
-
C: (f, a) => f(...a)
|
|
226
|
-
});
|
|
167
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 109, S: void 0 });
|
|
227
168
|
if (location.current.dropTargets.length === 0) {
|
|
228
169
|
noTargetTimeout = setTimeout(() => setDragging(void 0), 1e3);
|
|
229
170
|
} else {
|
|
@@ -257,33 +198,18 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
257
198
|
log.info("Root.onDrop", {
|
|
258
199
|
source: source.data,
|
|
259
200
|
location: location.current.dropTargets.map((target) => target.data)
|
|
260
|
-
}, {
|
|
261
|
-
F: __dxlog_file,
|
|
262
|
-
L: 191,
|
|
263
|
-
S: void 0,
|
|
264
|
-
C: (f, a) => f(...a)
|
|
265
|
-
});
|
|
201
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 142, S: void 0 });
|
|
266
202
|
const { data: sourceData, handler: sourceHandler } = getSourceHandler(source);
|
|
267
203
|
if (!sourceHandler) {
|
|
268
204
|
log.warn("invalid source", {
|
|
269
205
|
source: sourceData,
|
|
270
206
|
handlers: Object.keys(handlers)
|
|
271
|
-
}, {
|
|
272
|
-
F: __dxlog_file,
|
|
273
|
-
L: 199,
|
|
274
|
-
S: void 0,
|
|
275
|
-
C: (f, a) => f(...a)
|
|
276
|
-
});
|
|
207
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 149, S: void 0 });
|
|
277
208
|
return;
|
|
278
209
|
}
|
|
279
210
|
try {
|
|
280
211
|
if (location.current.dropTargets.length === 0) {
|
|
281
|
-
log.info("cancelled", void 0, {
|
|
282
|
-
F: __dxlog_file,
|
|
283
|
-
L: 214,
|
|
284
|
-
S: void 0,
|
|
285
|
-
C: (f, a) => f(...a)
|
|
286
|
-
});
|
|
212
|
+
log.info("cancelled", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 163, S: void 0 });
|
|
287
213
|
} else {
|
|
288
214
|
const { data: targetData, handler: targetHandler } = getTargetHandler(location);
|
|
289
215
|
if (!targetHandler) {
|
|
@@ -291,12 +217,7 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
291
217
|
source: sourceData,
|
|
292
218
|
location,
|
|
293
219
|
handlers: Object.keys(handlers)
|
|
294
|
-
}, {
|
|
295
|
-
F: __dxlog_file,
|
|
296
|
-
L: 219,
|
|
297
|
-
S: void 0,
|
|
298
|
-
C: (f, a) => f(...a)
|
|
299
|
-
});
|
|
220
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 168, S: void 0 });
|
|
300
221
|
return;
|
|
301
222
|
}
|
|
302
223
|
if (sourceHandler === targetHandler) {
|
|
@@ -308,12 +229,7 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
308
229
|
if (!sourceHandler.onTake) {
|
|
309
230
|
log.warn("invalid source", {
|
|
310
231
|
source: sourceData
|
|
311
|
-
}, {
|
|
312
|
-
F: __dxlog_file,
|
|
313
|
-
L: 235,
|
|
314
|
-
S: void 0,
|
|
315
|
-
C: (f, a) => f(...a)
|
|
316
|
-
});
|
|
232
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 183, S: void 0 });
|
|
317
233
|
return;
|
|
318
234
|
}
|
|
319
235
|
sourceHandler.onTake?.({
|
|
@@ -340,7 +256,7 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
340
256
|
getSourceHandler,
|
|
341
257
|
getTargetHandler
|
|
342
258
|
]);
|
|
343
|
-
return /* @__PURE__ */
|
|
259
|
+
return /* @__PURE__ */ React.createElement(MosaicRootContextProvider, {
|
|
344
260
|
containers: handlers,
|
|
345
261
|
addContainer: (container) => setHandlers((containers) => ({
|
|
346
262
|
...containers,
|
|
@@ -353,8 +269,8 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
353
269
|
};
|
|
354
270
|
}),
|
|
355
271
|
dragging
|
|
356
|
-
}, /* @__PURE__ */
|
|
357
|
-
className:
|
|
272
|
+
}, /* @__PURE__ */ React.createElement(Comp, {
|
|
273
|
+
className: "contents group",
|
|
358
274
|
[`data-${MOSAIC_ROOT_DEBUG_ATTR}`]: debug,
|
|
359
275
|
ref: composedRef
|
|
360
276
|
}, children));
|
|
@@ -362,38 +278,52 @@ var MosaicRoot = /* @__PURE__ */ forwardRef2(({ classNames, children, asChild, d
|
|
|
362
278
|
MosaicRoot.displayName = MOSAIC_ROOT_NAME;
|
|
363
279
|
|
|
364
280
|
// src/components/Mosaic/Container.tsx
|
|
281
|
+
import { autoScrollForElements } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element";
|
|
365
282
|
import { combine as combine2 } from "@atlaskit/pragmatic-drag-and-drop/combine";
|
|
366
283
|
import { dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
367
|
-
import {
|
|
368
|
-
import {
|
|
369
|
-
import {
|
|
370
|
-
import {
|
|
371
|
-
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
284
|
+
import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
|
|
285
|
+
import { createContext as createContext2 } from "@radix-ui/react-context";
|
|
286
|
+
import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
|
|
287
|
+
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
372
288
|
import { bind } from "bind-event-listener";
|
|
373
|
-
import
|
|
374
|
-
import {
|
|
289
|
+
import React2, { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
|
|
290
|
+
import { composable, composableProps } from "@dxos/ui-theme";
|
|
375
291
|
import { isTruthy } from "@dxos/util";
|
|
376
292
|
var MOSAIC_CONTAINER_NAME = "Mosaic.Container";
|
|
377
|
-
var [MosaicContainerContextProvider, useMosaicContainerContext] =
|
|
293
|
+
var [MosaicContainerContextProvider, useMosaicContainerContext] = createContext2("MosaicContainer");
|
|
378
294
|
var MOSAIC_CONTAINER_STATE_ATTR = "mosaic-container-state";
|
|
379
295
|
var MOSAIC_CONTAINER_PLACEHOLDER_WIDTH = "--mosaic-placeholder-width";
|
|
380
296
|
var MOSAIC_CONTAINER_PLACEHOLDER_HEIGHT = "--mosaic-placeholder-height";
|
|
381
297
|
var counter = 0;
|
|
382
|
-
var MosaicContainer =
|
|
383
|
-
const
|
|
384
|
-
const
|
|
385
|
-
const
|
|
298
|
+
var MosaicContainer = composable(({ children, eventHandler: eventHandlerProp, orientation = "vertical", asChild, autoScroll: autoscrollElement, withFocus, currentId, onCurrentChange, debug, ...props }, forwardedRef) => {
|
|
299
|
+
const Comp = asChild ? Slot2 : Primitive2.div;
|
|
300
|
+
const rootRef = useRef2(null);
|
|
301
|
+
const composedRef = useComposedRefs2(rootRef, forwardedRef);
|
|
386
302
|
const eventHandler = useMemo2(() => eventHandlerProp ?? {
|
|
387
303
|
id: `mosaic-container-${counter++}`
|
|
388
304
|
}, [
|
|
389
305
|
eventHandlerProp
|
|
390
306
|
]);
|
|
391
307
|
const { dragging } = useMosaicRootContext(MOSAIC_CONTAINER_NAME);
|
|
392
|
-
const [state, setState] =
|
|
308
|
+
const [state, setState] = useState2({
|
|
393
309
|
type: "idle"
|
|
394
310
|
});
|
|
395
|
-
const [activeLocation, setActiveLocation] =
|
|
396
|
-
const [scrolling, setScrolling] =
|
|
311
|
+
const [activeLocation, setActiveLocation] = useState2();
|
|
312
|
+
const [scrolling, setScrolling] = useState2(false);
|
|
313
|
+
const setCurrentId = useCallback2((id) => onCurrentChange?.(id), [
|
|
314
|
+
onCurrentChange
|
|
315
|
+
]);
|
|
316
|
+
const scrollToRef = useRef2(void 0);
|
|
317
|
+
const registerScrollTo = useCallback2((fn) => {
|
|
318
|
+
scrollToRef.current = fn;
|
|
319
|
+
}, []);
|
|
320
|
+
useEffect2(() => {
|
|
321
|
+
if (currentId) {
|
|
322
|
+
scrollToRef.current?.(currentId);
|
|
323
|
+
}
|
|
324
|
+
}, [
|
|
325
|
+
currentId
|
|
326
|
+
]);
|
|
397
327
|
const { setFocus } = useFocus();
|
|
398
328
|
useEffect2(() => {
|
|
399
329
|
if (withFocus) {
|
|
@@ -528,7 +458,7 @@ var MosaicContainer = /* @__PURE__ */ forwardRef3(({ classNames, className, chil
|
|
|
528
458
|
data,
|
|
529
459
|
autoscrollElement
|
|
530
460
|
]);
|
|
531
|
-
return /* @__PURE__ */
|
|
461
|
+
return /* @__PURE__ */ React2.createElement(MosaicContainerContextProvider, {
|
|
532
462
|
id: eventHandler.id,
|
|
533
463
|
eventHandler,
|
|
534
464
|
orientation,
|
|
@@ -536,14 +466,18 @@ var MosaicContainer = /* @__PURE__ */ forwardRef3(({ classNames, className, chil
|
|
|
536
466
|
dragging: state.type === "active" ? dragging : void 0,
|
|
537
467
|
scrolling,
|
|
538
468
|
activeLocation,
|
|
539
|
-
setActiveLocation
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
469
|
+
setActiveLocation,
|
|
470
|
+
currentId,
|
|
471
|
+
setCurrentId,
|
|
472
|
+
registerScrollTo
|
|
473
|
+
}, /* @__PURE__ */ React2.createElement(Comp, {
|
|
474
|
+
...composableProps(props, {
|
|
475
|
+
classNames: "h-full",
|
|
476
|
+
style: {
|
|
477
|
+
[MOSAIC_CONTAINER_PLACEHOLDER_WIDTH]: state.type === "active" && state.bounds ? `${state.bounds.width}px` : "0px",
|
|
478
|
+
[MOSAIC_CONTAINER_PLACEHOLDER_HEIGHT]: state.type === "active" && state.bounds ? `${state.bounds.height}px` : "0px"
|
|
479
|
+
}
|
|
480
|
+
}),
|
|
547
481
|
[`data-${MOSAIC_CONTAINER_STATE_ATTR}`]: state.type,
|
|
548
482
|
ref: composedRef
|
|
549
483
|
}, children), debug?.());
|
|
@@ -551,27 +485,27 @@ var MosaicContainer = /* @__PURE__ */ forwardRef3(({ classNames, className, chil
|
|
|
551
485
|
MosaicContainer.displayName = MOSAIC_CONTAINER_NAME;
|
|
552
486
|
|
|
553
487
|
// src/components/Mosaic/Tile.tsx
|
|
488
|
+
import { attachClosestEdge, extractClosestEdge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
|
|
554
489
|
import { combine as combine3 } from "@atlaskit/pragmatic-drag-and-drop/combine";
|
|
555
490
|
import { draggable, dropTargetForElements as dropTargetForElements2 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
556
491
|
import { preserveOffsetOnSource } from "@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source";
|
|
557
492
|
import { setCustomNativeDragPreview } from "@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview";
|
|
558
|
-
import { attachClosestEdge, extractClosestEdge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
|
|
559
493
|
import { composeRefs } from "@radix-ui/react-compose-refs";
|
|
560
|
-
import { createContext as
|
|
561
|
-
import { Primitive as
|
|
562
|
-
import { Slot as
|
|
563
|
-
import
|
|
494
|
+
import { createContext as createContext3 } from "@radix-ui/react-context";
|
|
495
|
+
import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
|
|
496
|
+
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
497
|
+
import React3, { useLayoutEffect, useMemo as useMemo3, useRef as useRef3, useState as useState3 } from "react";
|
|
564
498
|
import { createPortal } from "react-dom";
|
|
565
|
-
import {
|
|
499
|
+
import { composableProps as composableProps2, slottable } from "@dxos/ui-theme";
|
|
566
500
|
var MOSAIC_TILE_NAME = "Mosaic.Tile";
|
|
567
|
-
var [MosaicTileContextProvider, useMosaicTileContext] =
|
|
501
|
+
var [MosaicTileContextProvider, useMosaicTileContext] = createContext3("MosaicTile");
|
|
568
502
|
var MOSAIC_TILE_STATE_ATTR = "mosaic-tile-state";
|
|
569
|
-
var MosaicTile =
|
|
570
|
-
const
|
|
503
|
+
var MosaicTile = slottable(({ children, asChild, dragHandle, allowedEdges: allowedEdgesProp, location, id, data: dataProp, draggable: draggableProp, current, debug: _, ...props }, forwardedRef) => {
|
|
504
|
+
const Comp = asChild ? Slot3 : Primitive3.div;
|
|
505
|
+
const rootRef = useRef3(null);
|
|
571
506
|
const composedRef = composeRefs(rootRef, forwardedRef);
|
|
572
|
-
const Comp = asChild ? Slot4 : Primitive4.div;
|
|
573
507
|
const { id: containerId, eventHandler, orientation, scrolling, setActiveLocation } = useMosaicContainerContext(MOSAIC_TILE_NAME);
|
|
574
|
-
const [state, setState] =
|
|
508
|
+
const [state, setState] = useState3({
|
|
575
509
|
type: "idle"
|
|
576
510
|
});
|
|
577
511
|
const allowedEdges = useMemo3(() => allowedEdgesProp || (orientation === "vertical" ? [
|
|
@@ -597,7 +531,7 @@ var MosaicTile = /* @__PURE__ */ forwardRef4(({ classNames, className, children,
|
|
|
597
531
|
]);
|
|
598
532
|
useLayoutEffect(() => {
|
|
599
533
|
const root = rootRef.current;
|
|
600
|
-
if (!root || !containerId || scrolling) {
|
|
534
|
+
if (!draggableProp || !root || !containerId || scrolling) {
|
|
601
535
|
return;
|
|
602
536
|
}
|
|
603
537
|
const handleChange = ({ self, source }) => {
|
|
@@ -691,6 +625,8 @@ var MosaicTile = /* @__PURE__ */ forwardRef4(({ classNames, className, children,
|
|
|
691
625
|
);
|
|
692
626
|
}, [
|
|
693
627
|
rootRef,
|
|
628
|
+
forwardedRef,
|
|
629
|
+
containerId,
|
|
694
630
|
dragHandle,
|
|
695
631
|
eventHandler,
|
|
696
632
|
data,
|
|
@@ -698,19 +634,27 @@ var MosaicTile = /* @__PURE__ */ forwardRef4(({ classNames, className, children,
|
|
|
698
634
|
allowedEdges,
|
|
699
635
|
setActiveLocation
|
|
700
636
|
]);
|
|
701
|
-
|
|
637
|
+
const { className, ...rest } = composableProps2(props, {
|
|
638
|
+
classNames: "relative outline-none"
|
|
639
|
+
});
|
|
640
|
+
return /* @__PURE__ */ React3.createElement(MosaicTileContextProvider, {
|
|
702
641
|
state
|
|
703
|
-
}, /* @__PURE__ */
|
|
704
|
-
...
|
|
642
|
+
}, /* @__PURE__ */ React3.createElement(Comp, {
|
|
643
|
+
...rest,
|
|
644
|
+
"data-object-id": id,
|
|
705
645
|
[`data-${MOSAIC_TILE_STATE_ATTR}`]: state.type,
|
|
706
646
|
role: "listitem",
|
|
707
|
-
|
|
647
|
+
// Pair `current` prop with `aria-current="true"` so the
|
|
648
|
+
// `dx-current` utility (which keys off `aria-[current=true]:`)
|
|
649
|
+
// actually fires. Without this the prop is purely advisory and
|
|
650
|
+
// any `dx-current` styling on the tile would silently no-op.
|
|
651
|
+
"aria-current": current ? "true" : void 0,
|
|
652
|
+
className,
|
|
708
653
|
ref: composedRef
|
|
709
|
-
}, children), state.type === "preview" && /* @__PURE__ */ createPortal(/* @__PURE__ */
|
|
654
|
+
}, children), state.type === "preview" && /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement(Comp, {
|
|
710
655
|
// NOTE: Use to control appearance while dragging.
|
|
711
656
|
[`data-${MOSAIC_TILE_STATE_ATTR}`]: state.type,
|
|
712
|
-
|
|
713
|
-
className: mx4("relative", className, classNames),
|
|
657
|
+
className,
|
|
714
658
|
style: {
|
|
715
659
|
width: `${state.rect.width}px`,
|
|
716
660
|
height: `${state.rect.height}px`
|
|
@@ -720,18 +664,19 @@ var MosaicTile = /* @__PURE__ */ forwardRef4(({ classNames, className, children,
|
|
|
720
664
|
MosaicTile.displayName = MOSAIC_TILE_NAME;
|
|
721
665
|
|
|
722
666
|
// src/components/Mosaic/Placeholder.tsx
|
|
723
|
-
import { dropTargetForElements as dropTargetForElements3 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
724
667
|
import { DropIndicator as NaturalDropIndicator } from "@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box";
|
|
725
|
-
import {
|
|
726
|
-
import {
|
|
727
|
-
import
|
|
728
|
-
import {
|
|
668
|
+
import { dropTargetForElements as dropTargetForElements3 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
669
|
+
import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
|
|
670
|
+
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
671
|
+
import React4, { useLayoutEffect as useLayoutEffect2, useMemo as useMemo4, useRef as useRef4 } from "react";
|
|
672
|
+
import { mx } from "@dxos/ui-theme";
|
|
729
673
|
var MOSAIC_PLACEHOLDER_NAME = "Mosaic.Placeholder";
|
|
730
674
|
var MOSAIC_PLACEHOLDER_ORIENTATION_ATTR = "mosaic-placeholder-orientation";
|
|
731
675
|
var MOSAIC_PLACEHOLDER_STATE_ATTR = "mosaic-placeholder-state";
|
|
676
|
+
var MOSAIC_PLACEHOLDER_LOCATION_ATTR = "mosaic-placeholder-location";
|
|
732
677
|
var MosaicPlaceholder = ({ classNames, children, asChild, orientation = "vertical", location }) => {
|
|
733
|
-
const rootRef =
|
|
734
|
-
const Comp = asChild ?
|
|
678
|
+
const rootRef = useRef4(null);
|
|
679
|
+
const Comp = asChild ? Slot4 : Primitive4.div;
|
|
735
680
|
const { id: containerId, eventHandler, scrolling, activeLocation, setActiveLocation } = useMosaicContainerContext(MOSAIC_PLACEHOLDER_NAME);
|
|
736
681
|
const data = useMemo4(() => ({
|
|
737
682
|
type: "placeholder",
|
|
@@ -771,11 +716,12 @@ var MosaicPlaceholder = ({ classNames, children, asChild, orientation = "vertica
|
|
|
771
716
|
scrolling,
|
|
772
717
|
setActiveLocation
|
|
773
718
|
]);
|
|
774
|
-
return /* @__PURE__ */
|
|
719
|
+
return /* @__PURE__ */ React4.createElement(Comp, {
|
|
775
720
|
[`data-${MOSAIC_PLACEHOLDER_ORIENTATION_ATTR}`]: orientation,
|
|
776
721
|
[`data-${MOSAIC_PLACEHOLDER_STATE_ATTR}`]: data.location === activeLocation ? "active" : "idle",
|
|
722
|
+
[`data-${MOSAIC_PLACEHOLDER_LOCATION_ATTR}`]: String(location),
|
|
777
723
|
role: "none",
|
|
778
|
-
className:
|
|
724
|
+
className: mx("relative", classNames),
|
|
779
725
|
ref: rootRef
|
|
780
726
|
}, children);
|
|
781
727
|
};
|
|
@@ -783,7 +729,7 @@ MosaicPlaceholder.displayName = MOSAIC_PLACEHOLDER_NAME;
|
|
|
783
729
|
var DROP_INDICATOR_NAME = "Mosaic.DropIndicator";
|
|
784
730
|
var MosaicDropIndicator = (props) => {
|
|
785
731
|
const { state } = useMosaicTileContext(DROP_INDICATOR_NAME);
|
|
786
|
-
return state.type === "target" && state.closestEdge ? /* @__PURE__ */
|
|
732
|
+
return state.type === "target" && state.closestEdge ? /* @__PURE__ */ React4.createElement(NaturalDropIndicator, {
|
|
787
733
|
...props,
|
|
788
734
|
edge: state.closestEdge
|
|
789
735
|
}) : null;
|
|
@@ -791,55 +737,66 @@ var MosaicDropIndicator = (props) => {
|
|
|
791
737
|
MosaicDropIndicator.displayName = DROP_INDICATOR_NAME;
|
|
792
738
|
|
|
793
739
|
// src/components/Mosaic/Stack.tsx
|
|
740
|
+
import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
|
|
794
741
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
795
|
-
import
|
|
742
|
+
import React5, { forwardRef as forwardRef2, Fragment, useCallback as useCallback3, useEffect as useEffect3, useRef as useRef5 } from "react";
|
|
796
743
|
import { invariant } from "@dxos/invariant";
|
|
797
|
-
import { mx as
|
|
744
|
+
import { composable as composable2, composableProps as composableProps3, mx as mx2 } from "@dxos/ui-theme";
|
|
798
745
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui-mosaic/src/components/Mosaic/Stack.tsx";
|
|
799
746
|
var MOSAIC_STACK_NAME = "MosaicStack";
|
|
800
|
-
var MosaicStackInner =
|
|
801
|
-
|
|
802
|
-
F: __dxlog_file2,
|
|
803
|
-
L: 75,
|
|
804
|
-
S: void 0,
|
|
805
|
-
A: [
|
|
806
|
-
"Tile",
|
|
807
|
-
""
|
|
808
|
-
]
|
|
809
|
-
});
|
|
810
|
-
const { id, orientation = orientationProp, dragging } = useMosaicContainerContext(MOSAIC_STACK_NAME);
|
|
747
|
+
var MosaicStackInner = composable2(({ orientation: orientationProp = "vertical", getId, items, scrollIntoView = true, Tile, draggable: draggable2 = true, debug, ...props }, forwardedRef) => {
|
|
748
|
+
const { id, orientation = orientationProp, dragging, currentId, registerScrollTo } = useMosaicContainerContext(MOSAIC_STACK_NAME);
|
|
811
749
|
const visibleItems = useVisibleItems({
|
|
812
750
|
id,
|
|
813
751
|
items,
|
|
814
752
|
dragging: dragging?.source.data,
|
|
815
753
|
getId
|
|
816
754
|
});
|
|
817
|
-
invariant(orientation === "vertical" || orientation === "horizontal", `Invalid orientation: ${orientation}`, {
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
755
|
+
invariant(orientation === "vertical" || orientation === "horizontal", `Invalid orientation: ${orientation}`, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 45, S: void 0, A: ["orientation === 'vertical' || orientation === 'horizontal'", "`Invalid orientation: ${orientation}`"] });
|
|
756
|
+
const rootRef = useRef5(null);
|
|
757
|
+
const scrollToId = useCallback3((targetId) => {
|
|
758
|
+
if (!scrollIntoView) {
|
|
759
|
+
return;
|
|
760
|
+
}
|
|
761
|
+
const el = rootRef.current?.querySelector(`[data-object-id="${CSS.escape(targetId)}"]`);
|
|
762
|
+
el?.scrollIntoView({
|
|
763
|
+
block: "nearest",
|
|
764
|
+
behavior: "smooth"
|
|
765
|
+
});
|
|
766
|
+
}, [
|
|
767
|
+
scrollIntoView
|
|
768
|
+
]);
|
|
769
|
+
useEffect3(() => {
|
|
770
|
+
registerScrollTo(scrollToId);
|
|
771
|
+
return () => registerScrollTo(void 0);
|
|
772
|
+
}, [
|
|
773
|
+
registerScrollTo,
|
|
774
|
+
scrollToId
|
|
775
|
+
]);
|
|
776
|
+
const composedRef = useComposedRefs3(rootRef, forwardedRef);
|
|
777
|
+
return /* @__PURE__ */ React5.createElement("div", {
|
|
778
|
+
...composableProps3(props, {
|
|
779
|
+
role: "list",
|
|
780
|
+
classNames: [
|
|
781
|
+
"flex",
|
|
782
|
+
orientation === "horizontal" && "h-full [&>*]:shrink-0",
|
|
783
|
+
orientation === "vertical" && "flex-col"
|
|
784
|
+
]
|
|
785
|
+
}),
|
|
786
|
+
ref: composedRef
|
|
787
|
+
}, draggable2 && /* @__PURE__ */ React5.createElement(InternalPlaceholder, {
|
|
832
788
|
orientation,
|
|
833
789
|
location: 0.5
|
|
834
|
-
}), visibleItems?.map((item, index) => /* @__PURE__ */
|
|
790
|
+
}), visibleItems?.map((item, index) => /* @__PURE__ */ React5.createElement(Fragment, {
|
|
835
791
|
key: getId(item)
|
|
836
|
-
}, /* @__PURE__ */
|
|
792
|
+
}, /* @__PURE__ */ React5.createElement(Tile, {
|
|
837
793
|
id: getId(item),
|
|
838
794
|
data: item,
|
|
839
795
|
location: index + 1,
|
|
840
796
|
draggable: draggable2,
|
|
797
|
+
current: getId(item) === currentId,
|
|
841
798
|
debug
|
|
842
|
-
}), /* @__PURE__ */
|
|
799
|
+
}), draggable2 && /* @__PURE__ */ React5.createElement(InternalPlaceholder, {
|
|
843
800
|
orientation,
|
|
844
801
|
location: index + 1.5
|
|
845
802
|
}))));
|
|
@@ -847,35 +804,86 @@ var MosaicStackInner = /* @__PURE__ */ forwardRef5(({ classNames, className, rol
|
|
|
847
804
|
MosaicStackInner.displayName = MOSAIC_STACK_NAME;
|
|
848
805
|
var MosaicStack = MosaicStackInner;
|
|
849
806
|
var MOSAIC_VIRTUAL_STACK_NAME = "MosaicVirtualStack";
|
|
850
|
-
var MosaicVirtualStackInner = /* @__PURE__ */
|
|
851
|
-
invariant(Tile, void 0, {
|
|
852
|
-
|
|
853
|
-
L: 142,
|
|
854
|
-
S: void 0,
|
|
855
|
-
A: [
|
|
856
|
-
"Tile",
|
|
857
|
-
""
|
|
858
|
-
]
|
|
859
|
-
});
|
|
860
|
-
const { id, dragging } = useMosaicContainerContext(MOSAIC_VIRTUAL_STACK_NAME);
|
|
807
|
+
var MosaicVirtualStackInner = /* @__PURE__ */ forwardRef2(({ orientation = "vertical", getId, items, scrollIntoView = true, Tile, estimateSize, getScrollElement, overscan = 8, gap, onChange, draggable: draggable2 = true, debug, ...props }, forwardedRef) => {
|
|
808
|
+
invariant(Tile, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 101, S: void 0, A: ["Tile", ""] });
|
|
809
|
+
const { id, dragging, currentId, registerScrollTo } = useMosaicContainerContext(MOSAIC_VIRTUAL_STACK_NAME);
|
|
861
810
|
const visibleItems = useVisibleItems({
|
|
862
811
|
id,
|
|
863
812
|
items,
|
|
864
813
|
dragging: dragging?.source.data,
|
|
865
814
|
getId
|
|
866
815
|
});
|
|
816
|
+
const wrappedEstimateSize = draggable2 ? (index) => index % 2 === 0 ? 0 : estimateSize(Math.floor(index / 2)) : estimateSize;
|
|
867
817
|
const virtualizer = useVirtualizer({
|
|
868
|
-
|
|
869
|
-
|
|
818
|
+
// NOTE: When draggable we double the number of items to allow for placeholders.
|
|
819
|
+
count: draggable2 ? visibleItems.length * 2 + 1 : visibleItems.length,
|
|
820
|
+
estimateSize: wrappedEstimateSize,
|
|
821
|
+
gap,
|
|
822
|
+
// Key measurements by stable item ID so the size cache survives scrolling;
|
|
823
|
+
// without this, measurements are indexed by position and are lost when items reorder.
|
|
824
|
+
getItemKey: draggable2 ? (index) => index % 2 === 0 ? `ph-${index}` : getId(visibleItems[Math.floor(index / 2)]) : (index) => getId(visibleItems[index]),
|
|
870
825
|
getScrollElement,
|
|
871
826
|
overscan,
|
|
872
827
|
onChange
|
|
873
828
|
});
|
|
829
|
+
const scrollToId = useCallback3((targetId) => {
|
|
830
|
+
const itemIndex = visibleItems.findIndex((item) => getId(item) === targetId);
|
|
831
|
+
if (itemIndex >= 0) {
|
|
832
|
+
if (!scrollIntoView) {
|
|
833
|
+
return;
|
|
834
|
+
}
|
|
835
|
+
const virtualIndex = draggable2 ? itemIndex * 2 + 1 : itemIndex;
|
|
836
|
+
virtualizer.scrollToIndex(virtualIndex, {
|
|
837
|
+
align: "start",
|
|
838
|
+
behavior: "smooth"
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
}, [
|
|
842
|
+
visibleItems,
|
|
843
|
+
getId,
|
|
844
|
+
draggable2,
|
|
845
|
+
virtualizer,
|
|
846
|
+
scrollIntoView
|
|
847
|
+
]);
|
|
848
|
+
useEffect3(() => {
|
|
849
|
+
registerScrollTo(scrollToId);
|
|
850
|
+
return () => registerScrollTo(void 0);
|
|
851
|
+
}, [
|
|
852
|
+
registerScrollTo,
|
|
853
|
+
scrollToId
|
|
854
|
+
]);
|
|
874
855
|
const virtualItems = virtualizer.getVirtualItems();
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
856
|
+
const getData = (index) => {
|
|
857
|
+
if (draggable2) {
|
|
858
|
+
if (index % 2 === 0) {
|
|
859
|
+
return {
|
|
860
|
+
location: Math.floor(index / 2) + 0.5
|
|
861
|
+
};
|
|
862
|
+
} else {
|
|
863
|
+
return {
|
|
864
|
+
data: visibleItems[Math.floor(index / 2)],
|
|
865
|
+
location: Math.floor(index / 2) + 1
|
|
866
|
+
};
|
|
867
|
+
}
|
|
868
|
+
} else {
|
|
869
|
+
return {
|
|
870
|
+
data: visibleItems[index],
|
|
871
|
+
location: index + 1
|
|
872
|
+
};
|
|
873
|
+
}
|
|
874
|
+
};
|
|
875
|
+
return /* @__PURE__ */ React5.createElement("div", {
|
|
876
|
+
...composableProps3(props, {
|
|
877
|
+
role: "list",
|
|
878
|
+
classNames: [
|
|
879
|
+
// shrink-0 is required: this div sets an explicit height via inline style (getTotalSize).
|
|
880
|
+
// Without it, a parent flex container (e.g. ScrollArea.Viewport) would shrink this div
|
|
881
|
+
// to the viewport height, collapsing the scroll content and causing scrollbar drift.
|
|
882
|
+
"flex shrink-0",
|
|
883
|
+
orientation === "horizontal" && "h-full [&>*]:shrink-0",
|
|
884
|
+
orientation === "vertical" && "flex-col"
|
|
885
|
+
]
|
|
886
|
+
}),
|
|
879
887
|
style: {
|
|
880
888
|
position: "relative",
|
|
881
889
|
...orientation === "vertical" ? {
|
|
@@ -887,43 +895,46 @@ var MosaicVirtualStackInner = /* @__PURE__ */ forwardRef5(({ classNames, classNa
|
|
|
887
895
|
}
|
|
888
896
|
},
|
|
889
897
|
ref: forwardedRef
|
|
890
|
-
}, virtualItems.map((
|
|
891
|
-
const data =
|
|
892
|
-
return /* @__PURE__ */
|
|
893
|
-
key
|
|
894
|
-
"data-index":
|
|
898
|
+
}, virtualItems.map(({ key, index, start }) => {
|
|
899
|
+
const { data, location } = getData(index);
|
|
900
|
+
return /* @__PURE__ */ React5.createElement("div", {
|
|
901
|
+
key,
|
|
902
|
+
"data-index": index,
|
|
895
903
|
style: {
|
|
896
904
|
position: "absolute",
|
|
897
905
|
top: 0,
|
|
898
906
|
left: 0,
|
|
899
907
|
...orientation === "vertical" ? {
|
|
900
908
|
width: "100%",
|
|
901
|
-
transform: `translateY(${
|
|
909
|
+
transform: `translateY(${start}px)`
|
|
902
910
|
} : {
|
|
903
911
|
height: "100%",
|
|
904
|
-
transform: `translateX(${
|
|
912
|
+
transform: `translateX(${start}px)`
|
|
905
913
|
}
|
|
906
914
|
},
|
|
907
915
|
ref: virtualizer.measureElement
|
|
908
|
-
},
|
|
909
|
-
orientation,
|
|
910
|
-
location: Math.floor(virtualItem.index / 2) + 0.5
|
|
911
|
-
}) : /* @__PURE__ */ React6.createElement(Tile, {
|
|
916
|
+
}, data ? /* @__PURE__ */ React5.createElement(Tile, {
|
|
912
917
|
id: getId(data),
|
|
913
918
|
data,
|
|
914
|
-
location
|
|
919
|
+
location,
|
|
920
|
+
draggable: draggable2,
|
|
921
|
+
current: getId(data) === currentId,
|
|
915
922
|
debug
|
|
923
|
+
}) : /* @__PURE__ */ React5.createElement(InternalPlaceholder, {
|
|
924
|
+
orientation,
|
|
925
|
+
location
|
|
916
926
|
}));
|
|
917
927
|
}));
|
|
918
928
|
});
|
|
919
929
|
MosaicVirtualStackInner.displayName = MOSAIC_VIRTUAL_STACK_NAME;
|
|
920
930
|
var MosaicVirtualStack = MosaicVirtualStackInner;
|
|
931
|
+
MosaicVirtualStack[/* @__PURE__ */ Symbol.for("dxos.composable")] = true;
|
|
921
932
|
var InternalPlaceholder = (props) => {
|
|
922
|
-
return /* @__PURE__ */
|
|
933
|
+
return /* @__PURE__ */ React5.createElement(MosaicPlaceholder, {
|
|
923
934
|
...props,
|
|
924
935
|
classNames: styles.placeholder.root
|
|
925
|
-
}, /* @__PURE__ */
|
|
926
|
-
className:
|
|
936
|
+
}, /* @__PURE__ */ React5.createElement("div", {
|
|
937
|
+
className: mx2("flex h-full bg-base-surface border border-dashed border-separator rounded-xs", styles.placeholder.content)
|
|
927
938
|
}));
|
|
928
939
|
};
|
|
929
940
|
InternalPlaceholder.displayName = "InternalPlaceholder";
|
|
@@ -941,8 +952,8 @@ var Mosaic = {
|
|
|
941
952
|
|
|
942
953
|
export {
|
|
943
954
|
useVisibleItems,
|
|
944
|
-
useFocus,
|
|
945
955
|
Focus,
|
|
956
|
+
useFocus,
|
|
946
957
|
styles,
|
|
947
958
|
getSourceData,
|
|
948
959
|
useMosaicRootContext,
|
|
@@ -950,4 +961,4 @@ export {
|
|
|
950
961
|
useMosaicTileContext,
|
|
951
962
|
Mosaic
|
|
952
963
|
};
|
|
953
|
-
//# sourceMappingURL=chunk-
|
|
964
|
+
//# sourceMappingURL=chunk-RUQB4JIG.mjs.map
|