@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.
Files changed (99) hide show
  1. package/dist/lib/browser/{chunk-7S4PIFKU.mjs → chunk-RUQB4JIG.mjs} +237 -226
  2. package/dist/lib/browser/chunk-RUQB4JIG.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +157 -83
  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 +16 -12
  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-MK6KU66S.mjs → chunk-MYDCPSNY.mjs} +237 -226
  13. package/dist/lib/node-esm/chunk-MYDCPSNY.mjs.map +7 -0
  14. package/dist/lib/node-esm/index.mjs +157 -83
  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 +16 -12
  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 +16 -13
  34. package/dist/types/src/components/Mosaic/Container.d.ts.map +1 -1
  35. package/dist/types/src/components/Mosaic/Mosaic.d.ts +12 -27
  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 +12 -6
  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 +14 -9
  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 +40 -37
  73. package/src/AUDIT.md +106 -0
  74. package/src/components/Board/Board.stories.tsx +23 -22
  75. package/src/components/Board/Board.tsx +7 -8
  76. package/src/components/Board/Column.tsx +59 -55
  77. package/src/components/Board/Item.tsx +32 -29
  78. package/src/components/Focus/Focus.tsx +2 -102
  79. package/src/components/Mosaic/Container.tsx +51 -25
  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 +149 -54
  84. package/src/components/Mosaic/Tile.tsx +46 -36
  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 +2 -2
  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 +2 -2
  95. package/src/testing/DefaultStackTile.tsx +29 -20
  96. package/src/testing/types.ts +2 -2
  97. package/src/translations.ts +3 -3
  98. package/dist/lib/browser/chunk-7S4PIFKU.mjs.map +0 -7
  99. 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 { 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 { 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 as useComposedRefs2 } from "@radix-ui/react-compose-refs";
112
- import { createContext as createContext2 } from "@radix-ui/react-context";
113
- import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
114
- import { Slot as Slot2 } from "@radix-ui/react-slot";
115
- 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";
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] = createContext2("MosaicRoot");
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__ */ forwardRef2(({ classNames, children, asChild, debug }, forwardedRef) => {
123
- const rootRef = useRef2(null);
124
- const composedRef = useComposedRefs2(rootRef, forwardedRef);
125
- const Comp = asChild ? Slot2 : Primitive2.div;
126
- const [handlers, setHandlers] = useState2({});
127
- 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();
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
- // TOOD(burdon): Check id matches.
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__ */ React2.createElement(MosaicRootContextProvider, {
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__ */ React2.createElement(Comp, {
357
- className: mx2("group", classNames),
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 { autoScrollForElements } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element";
368
- import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
369
- import { createContext as createContext3 } from "@radix-ui/react-context";
370
- import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
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 React3, { forwardRef as forwardRef3, useEffect as useEffect2, useMemo as useMemo2, useRef as useRef3, useState as useState3 } from "react";
374
- import { 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";
375
291
  import { isTruthy } from "@dxos/util";
376
292
  var MOSAIC_CONTAINER_NAME = "Mosaic.Container";
377
- var [MosaicContainerContextProvider, useMosaicContainerContext] = createContext3("MosaicContainer");
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 = /* @__PURE__ */ forwardRef3(({ classNames, className, children, eventHandler: eventHandlerProp, orientation = "vertical", asChild, autoScroll: autoscrollElement, withFocus, debug, ...props }, forwardedRef) => {
383
- const rootRef = useRef3(null);
384
- const composedRef = useComposedRefs3(rootRef, forwardedRef);
385
- const Comp = asChild ? Slot3 : Primitive3.div;
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] = useState3({
308
+ const [state, setState] = useState2({
393
309
  type: "idle"
394
310
  });
395
- const [activeLocation, setActiveLocation] = useState3();
396
- 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
+ ]);
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__ */ React3.createElement(MosaicContainerContextProvider, {
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
- }, /* @__PURE__ */ React3.createElement(Comp, {
541
- className: mx3("h-full", className, classNames),
542
- style: {
543
- [MOSAIC_CONTAINER_PLACEHOLDER_WIDTH]: state.type === "active" && state.bounds ? `${state.bounds.width}px` : "0px",
544
- [MOSAIC_CONTAINER_PLACEHOLDER_HEIGHT]: state.type === "active" && state.bounds ? `${state.bounds.height}px` : "0px"
545
- },
546
- ...props,
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 createContext4 } from "@radix-ui/react-context";
561
- import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
562
- import { Slot as Slot4 } from "@radix-ui/react-slot";
563
- 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";
564
498
  import { createPortal } from "react-dom";
565
- import { mx as mx4 } from "@dxos/ui-theme";
499
+ import { composableProps as composableProps2, slottable } from "@dxos/ui-theme";
566
500
  var MOSAIC_TILE_NAME = "Mosaic.Tile";
567
- var [MosaicTileContextProvider, useMosaicTileContext] = createContext4("MosaicTile");
501
+ var [MosaicTileContextProvider, useMosaicTileContext] = createContext3("MosaicTile");
568
502
  var MOSAIC_TILE_STATE_ATTR = "mosaic-tile-state";
569
- var MosaicTile = /* @__PURE__ */ forwardRef4(({ classNames, className, children, asChild, dragHandle, allowedEdges: allowedEdgesProp, location, id, data: dataProp, debug: _, ...props }, forwardedRef) => {
570
- 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);
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] = useState4({
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
- return /* @__PURE__ */ React4.createElement(MosaicTileContextProvider, {
637
+ const { className, ...rest } = composableProps2(props, {
638
+ classNames: "relative outline-none"
639
+ });
640
+ return /* @__PURE__ */ React3.createElement(MosaicTileContextProvider, {
702
641
  state
703
- }, /* @__PURE__ */ React4.createElement(Comp, {
704
- ...props,
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
- className: mx4("relative", className, classNames),
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__ */ React4.createElement(Comp, {
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
- // TODO(burdon): Configure drop animation.
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 { Primitive as Primitive5 } from "@radix-ui/react-primitive";
726
- import { Slot as Slot5 } from "@radix-ui/react-slot";
727
- import React5, { useLayoutEffect as useLayoutEffect2, useMemo as useMemo4, useRef as useRef5 } from "react";
728
- 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";
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 = useRef5(null);
734
- const Comp = asChild ? Slot5 : Primitive5.div;
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__ */ React5.createElement(Comp, {
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: mx5("relative", classNames),
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__ */ React5.createElement(NaturalDropIndicator, {
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 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";
796
743
  import { invariant } from "@dxos/invariant";
797
- import { mx as mx6 } from "@dxos/ui-theme";
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 = /* @__PURE__ */ forwardRef5(({ classNames, className, role = "list", orientation: orientationProp = "vertical", draggable: draggable2 = true, items, getId, Tile, debug, ...props }, forwardedRef) => {
801
- invariant(Tile, void 0, {
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
- F: __dxlog_file2,
819
- L: 78,
820
- S: void 0,
821
- A: [
822
- "orientation === 'vertical' || orientation === 'horizontal'",
823
- "`Invalid orientation: ${orientation}`"
824
- ]
825
- });
826
- return /* @__PURE__ */ React6.createElement("div", {
827
- ...props,
828
- role,
829
- className: mx6("flex", orientation === "horizontal" && "h-full [&>*]:shrink-0", orientation === "vertical" && "flex-col", classNames, className),
830
- ref: forwardedRef
831
- }, /* @__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, {
832
788
  orientation,
833
789
  location: 0.5
834
- }), visibleItems?.map((item, index) => /* @__PURE__ */ React6.createElement(Fragment, {
790
+ }), visibleItems?.map((item, index) => /* @__PURE__ */ React5.createElement(Fragment, {
835
791
  key: getId(item)
836
- }, /* @__PURE__ */ React6.createElement(Tile, {
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__ */ React6.createElement(InternalPlaceholder, {
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__ */ forwardRef5(({ classNames, className, role = "list", orientation = "vertical", items, getId, Tile, estimateSize, getScrollElement, overscan = 8, onChange, debug, ...props }, forwardedRef) => {
851
- invariant(Tile, void 0, {
852
- F: __dxlog_file2,
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
- count: visibleItems.length * 2 + 1,
869
- 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]),
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
- return /* @__PURE__ */ React6.createElement("div", {
876
- ...props,
877
- role,
878
- className: mx6("flex", orientation === "horizontal" && "h-full [&>*]:shrink-0", orientation === "vertical" && "flex-col", classNames, 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
+ }),
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((virtualItem) => {
891
- const data = visibleItems[Math.floor(virtualItem.index / 2)];
892
- return /* @__PURE__ */ React6.createElement("div", {
893
- key: virtualItem.key,
894
- "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,
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(${virtualItem.start}px)`
909
+ transform: `translateY(${start}px)`
902
910
  } : {
903
911
  height: "100%",
904
- transform: `translateX(${virtualItem.start}px)`
912
+ transform: `translateX(${start}px)`
905
913
  }
906
914
  },
907
915
  ref: virtualizer.measureElement
908
- }, virtualItem.index % 2 === 0 ? /* @__PURE__ */ React6.createElement(InternalPlaceholder, {
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: Math.floor(virtualItem.index / 2) + 1,
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__ */ React6.createElement(MosaicPlaceholder, {
933
+ return /* @__PURE__ */ React5.createElement(MosaicPlaceholder, {
923
934
  ...props,
924
935
  classNames: styles.placeholder.root
925
- }, /* @__PURE__ */ React6.createElement("div", {
926
- 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)
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-7S4PIFKU.mjs.map
964
+ //# sourceMappingURL=chunk-RUQB4JIG.mjs.map