@dxos/react-ui-mosaic 0.8.4-main.d05673bc65 → 0.8.4-main.dfabb4ec29

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