@astryxdesign/core 0.7.9-canary.784dc5e → 0.7.9-canary.7aaf2a1

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 (104) hide show
  1. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  2. package/dist/BottomSheet/BottomSheet.js +31 -2
  3. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  4. package/dist/CheckboxInput/CheckboxInput.js +2 -1
  5. package/dist/DateInput/wheelStrip.js +2 -2
  6. package/dist/Drawer/Drawer.d.ts.map +1 -1
  7. package/dist/Drawer/Drawer.js +3 -1
  8. package/dist/InputGroup/InputGroupText.d.ts +2 -1
  9. package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
  10. package/dist/InputGroup/InputGroupText.js +2 -1
  11. package/dist/Item/Item.d.ts.map +1 -1
  12. package/dist/Item/Item.js +4 -1
  13. package/dist/Layer/LayerProvider.d.ts.map +1 -1
  14. package/dist/Layer/LayerProvider.js +8 -7
  15. package/dist/Layer/toastHost.d.ts +77 -0
  16. package/dist/Layer/toastHost.d.ts.map +1 -0
  17. package/dist/Layer/toastHost.js +172 -0
  18. package/dist/Layout/LayoutPanel.d.ts.map +1 -1
  19. package/dist/Layout/LayoutPanel.js +12 -3
  20. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  21. package/dist/OverflowList/OverflowList.js +7 -2
  22. package/dist/Resizable/resizablePane.d.ts +0 -2
  23. package/dist/Resizable/resizablePane.d.ts.map +1 -1
  24. package/dist/Resizable/resizablePane.js +2 -7
  25. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  26. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +16 -56
  27. package/dist/SideNav/SideNav.d.ts.map +1 -1
  28. package/dist/SideNav/SideNav.js +0 -2
  29. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  30. package/dist/SideNav/SideNavItem.js +7 -4
  31. package/dist/Slider/sliderTouchController.js +2 -2
  32. package/dist/Switch/useSwitchTouch.js +4 -4
  33. package/dist/Toast/ToastContext.d.ts +6 -13
  34. package/dist/Toast/ToastContext.d.ts.map +1 -1
  35. package/dist/Toast/ToastContext.js +6 -8
  36. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  37. package/dist/Toast/ToastViewport.js +14 -7
  38. package/dist/Toast/useToast.d.ts.map +1 -1
  39. package/dist/Toast/useToast.js +10 -50
  40. package/dist/animator/createAnimator.js +2 -2
  41. package/dist/gestures/createPanGesture.d.ts +49 -0
  42. package/dist/gestures/createPanGesture.d.ts.map +1 -0
  43. package/dist/gestures/createPanGesture.js +80 -0
  44. package/dist/hooks/index.d.ts +2 -0
  45. package/dist/hooks/index.d.ts.map +1 -1
  46. package/dist/hooks/index.js +2 -1
  47. package/dist/hooks/useOverflow.d.ts +10 -0
  48. package/dist/hooks/useOverflow.d.ts.map +1 -1
  49. package/dist/hooks/useOverflow.js +25 -3
  50. package/dist/hooks/usePanGesture.d.ts +31 -0
  51. package/dist/hooks/usePanGesture.d.ts.map +1 -0
  52. package/dist/hooks/usePanGesture.js +61 -0
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +1 -0
  56. package/dist/internal/touch.d.ts +10 -5
  57. package/dist/internal/touch.d.ts.map +1 -1
  58. package/dist/internal/touch.js +15 -7
  59. package/dist/motion/animator.d.ts +5 -5
  60. package/dist/motion/animator.d.ts.map +1 -1
  61. package/dist/motion/animator.js +7 -6
  62. package/dist/motion/themeTiming.d.ts +63 -0
  63. package/dist/motion/themeTiming.d.ts.map +1 -0
  64. package/dist/motion/themeTiming.js +173 -0
  65. package/dist/utils/focusReturn.d.ts +24 -11
  66. package/dist/utils/focusReturn.d.ts.map +1 -1
  67. package/dist/utils/focusReturn.js +48 -14
  68. package/package.json +4 -4
  69. package/src/BottomSheet/BottomSheet.tsx +39 -2
  70. package/src/CheckboxInput/CheckboxInput.tsx +5 -1
  71. package/src/DateInput/wheelStrip.ts +2 -2
  72. package/src/Drawer/Drawer.tsx +3 -1
  73. package/src/Icon/useIcon.doc.mjs +94 -0
  74. package/src/InputGroup/InputGroupText.doc.mjs +45 -3
  75. package/src/InputGroup/InputGroupText.tsx +2 -1
  76. package/src/Item/Item.doc.mjs +19 -4
  77. package/src/Item/Item.tsx +7 -1
  78. package/src/Layer/LayerProvider.tsx +9 -8
  79. package/src/Layer/toastHost.tsx +212 -0
  80. package/src/Layout/LayoutPanel.tsx +16 -2
  81. package/src/OverflowList/OverflowList.tsx +15 -9
  82. package/src/Resizable/resizablePane.ts +4 -13
  83. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +15 -62
  84. package/src/SideNav/SideNav.tsx +0 -1
  85. package/src/SideNav/SideNavItem.tsx +8 -6
  86. package/src/Slider/sliderTouchController.ts +2 -2
  87. package/src/Switch/useSwitchTouch.ts +4 -4
  88. package/src/Toast/ToastContext.ts +7 -17
  89. package/src/Toast/ToastViewport.tsx +13 -9
  90. package/src/Toast/useToast.tsx +7 -52
  91. package/src/animator/createAnimator.ts +3 -3
  92. package/src/gestures/README.md +2 -1
  93. package/src/gestures/createPanGesture.doc.mjs +145 -0
  94. package/src/gestures/createPanGesture.ts +107 -0
  95. package/src/hooks/index.ts +8 -0
  96. package/src/hooks/useOverflow.ts +25 -3
  97. package/src/hooks/usePanGesture.doc.mjs +159 -0
  98. package/src/hooks/usePanGesture.ts +69 -0
  99. package/src/index.ts +2 -0
  100. package/src/internal/touch.ts +16 -8
  101. package/src/motion/README.md +3 -3
  102. package/src/motion/animator.ts +7 -7
  103. package/src/motion/themeTiming.ts +198 -0
  104. package/src/utils/focusReturn.ts +61 -15
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAuBH,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAyDhD,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAmLhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AAy5BxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAuBH,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA4DhD,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAmLhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AA27BxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
@@ -65,7 +65,7 @@ import { ModalAnnounceProvider } from "../hooks/ModalAnnounceProvider.js";
65
65
  import { useModalOutlet } from "../Layer/modalOutlet.js";
66
66
  import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
67
67
  import { useFocusRegionContainment } from "../hooks/useFocusTrap.js";
68
- import { returnFocusForLastInput } from "../utils/focusReturn.js";
68
+ import { prepareFocusRepairOnRemoval, returnFocusForLastInput } from "../utils/focusReturn.js";
69
69
  import { useInteractionModalityTracking } from "../utils/interactionModality.js";
70
70
  import { BottomSheetPanel } from "./BottomSheetPanel.js";
71
71
  import { BottomSheetEdgeTint } from "./BottomSheetEdgeTint.js";
@@ -387,7 +387,14 @@ function StandaloneBottomSheet({
387
387
  return;
388
388
  }
389
389
  const key = stackKeyRef.current;
390
- return registerBottomSheet({
390
+ const dialog = dialogRef.current;
391
+ // Removing an open dialog runs no close, so focus would drop to the page.
392
+ // After the commit, the repair sends focus where a close would, if the
393
+ // removal lost focus.
394
+ const repairOnRemoval = dialog == null ? null : prepareFocusRepairOnRemoval(dialog, {
395
+ keepRestingFocus: true
396
+ });
397
+ const leave = registerBottomSheet({
391
398
  key,
392
399
  getElement: () => dialogRef.current,
393
400
  show: () => {
@@ -437,6 +444,28 @@ function StandaloneBottomSheet({
437
444
  }
438
445
  }
439
446
  }, isOpenRef.current, hasScrim);
447
+ return () => {
448
+ // Read before the registry lets go of the sheet beneath. Focus the
449
+ // person had already moved out of the sheet to the page body stays
450
+ // there: the removal did not lose it.
451
+ if (repairOnRemoval != null && isSheetHostPresented(dialog)) {
452
+ const returnTarget = finalFocusRefRef.current?.current ?? triggerRef.current;
453
+ const revealed = hasScrim ? getBottomSheetBeneath(key) : null;
454
+ repairOnRemoval(() => {
455
+ // The sheet beneath left too. Its own repair returns focus for the
456
+ // stack.
457
+ if (revealed != null && !revealed.element.isConnected) {
458
+ return;
459
+ }
460
+ if (revealed != null && (returnTarget == null || !revealed.element.contains(returnTarget))) {
461
+ revealed.focus();
462
+ } else if (returnTarget != null && returnTarget.isConnected) {
463
+ returnFocusForLastInput(returnTarget);
464
+ }
465
+ });
466
+ }
467
+ leave();
468
+ };
440
469
  }, [hasScrim, shouldPresent, writeScrim]);
441
470
  useLayoutEffect(() => {
442
471
  if (!isOpen) {
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EAGf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA6KhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,EAAE,EAAE,MAAM,EACV,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,kBAAkB,EAAE,mBAAmB,EACvC,GAAG,IAAI,EACR,EAAE,kBAAkB,+BAyRpB;yBApTe,aAAa"}
@@ -26,6 +26,7 @@ import { Spinner } from "../Spinner/Spinner.js";
26
26
  import { useTooltip } from "../Tooltip/useTooltip.js";
27
27
  import { mergeProps } from "../utils/mergeProps.js";
28
28
  import { rtlStyles } from "../utils/rtlStyles.js";
29
+ import { withholdCallerHandlers } from "../utils/disabledInteraction.js";
29
30
  import "../Indicator/indicator.markers.stylex.js";
30
31
  import { indicatorScope } from "../Indicator/indicator.markers.stylex.js";
31
32
  import "../internal/indicatorPress.stylex.js";
@@ -327,7 +328,7 @@ export function CheckboxInput({
327
328
  ...stylex.props(styles.checkboxWrapper, wrapperSizeStyles[size], !isDisabled && styles.indicatorPressOverlay, !isDisabled && isRowPressSurface && styles.indicatorRowPressOverlay),
328
329
  ...focusProps,
329
330
  children: [/*#__PURE__*/_jsx("input", {
330
- ...rest,
331
+ ...withholdCallerHandlers(rest, isDisabled),
331
332
  ref: useMergedRefs(ref, indeterminateRef, disabledMessageTooltip.positionRef, inputRef),
332
333
  id: id,
333
334
  type: "checkbox"
@@ -16,7 +16,7 @@
16
16
  */
17
17
 
18
18
  import { canVibrate, playHaptic } from "../gestures/haptics.js";
19
- import { createMotionAnimator } from "../motion/animator.js";
19
+ import { createMotionEngine } from "../motion/animator.js";
20
20
  import { reducedMotionFade } from "../motion/reducedMotion.js";
21
21
  import { picker } from "../motion/uikit/picker.js";
22
22
  import { nearestIndex, reachesRow, tickTimes } from "./wheelPhysics.js";
@@ -55,7 +55,7 @@ function now() {
55
55
  * ```
56
56
  */
57
57
  export function createWheelStrip(initialLayout) {
58
- const animator = createMotionAnimator(null);
58
+ const animator = createMotionEngine(null);
59
59
  let layout = initialLayout;
60
60
  let running = null;
61
61
  let nearestListener = null;
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../src/Drawer/Drawer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EAAgC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAIpE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAoB7C,OAAO,KAAK,EAAC,WAAW,EAAe,MAAM,WAAW,CAAC;AA+MzD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,iDAAiD;IACjD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAEvB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QACb;;;;;;WAMG;QACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;IAEF;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EAAE,UAAU,EAClB,YAAY,EACZ,IAAY,EACZ,KAAW,EACX,YAAY,EACZ,KAAK,EACL,QAAe,EACf,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAsNb;yBAxOe,MAAM"}
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../src/Drawer/Drawer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EAAgC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAIpE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAsB7C,OAAO,KAAK,EAAC,WAAW,EAAe,MAAM,WAAW,CAAC;AA+MzD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,iDAAiD;IACjD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAEvB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QACb;;;;;;WAMG;QACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;IAEF;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EAAE,UAAU,EAClB,YAAY,EACZ,IAAY,EACZ,KAAW,EACX,YAAY,EACZ,KAAK,EACL,QAAe,EACf,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAsNb;yBAxOe,MAAM"}
@@ -64,7 +64,9 @@ import { useSettledOpen } from "../hooks/useSettledOpen.js";
64
64
  import * as stylex from '@stylexjs/stylex';
65
65
  import "../theme/tokens.stylex.js";
66
66
  import { borderVars, colorVars, durationVars, easeVars, shadowVars } from "../theme/tokens.stylex.js";
67
- import { useFocusTrap, useMergedRefs, useScrollLock } from "../hooks/index.js";
67
+ import { useFocusTrap } from "../hooks/useFocusTrap.js";
68
+ import { useMergedRefs } from "../hooks/useMergedRefs.js";
69
+ import { useScrollLock } from "../hooks/useScrollLock.js";
68
70
  import { LayerDepthProvider, useLayerDismissal } from "../Layer/index.js";
69
71
  import { layerTextReset } from "../Layer/layerTextReset.stylex.js";
70
72
  import { layerStructureReset } from "../Layer/layerStructureReset.stylex.js";
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * SYNC: When modified, update these files to stay in sync:
8
8
  * - /packages/core/src/InputGroup/InputGroup.doc.mjs
9
+ * - /packages/core/src/InputGroup/InputGroupText.doc.mjs
9
10
  * - /packages/core/src/InputGroup/index.ts
10
11
  * - /packages/cli/assets/templates/blocks/components/InputGroup/
11
12
  */
@@ -24,7 +25,7 @@ export interface InputGroupTextProps extends BaseProps<HTMLDivElement> {
24
25
  *
25
26
  * @example
26
27
  * ```
27
- * <InputGroup label="URL">
28
+ * <InputGroup label="Website">
28
29
  * <InputGroupText>https://</InputGroupText>
29
30
  * <TextInput label="URL" isLabelHidden value={url} onChange={setUrl} />
30
31
  * </InputGroup>
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroupText.d.ts","sourceRoot":"","sources":["../../src/InputGroup/InputGroupText.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAmD5C,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAerB;yBAtBe,cAAc"}
1
+ {"version":3,"file":"InputGroupText.d.ts","sourceRoot":"","sources":["../../src/InputGroup/InputGroupText.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAmD5C,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAerB;yBAtBe,cAAc"}
@@ -10,6 +10,7 @@
10
10
  *
11
11
  * SYNC: When modified, update these files to stay in sync:
12
12
  * - /packages/core/src/InputGroup/InputGroup.doc.mjs
13
+ * - /packages/core/src/InputGroup/InputGroupText.doc.mjs
13
14
  * - /packages/core/src/InputGroup/index.ts
14
15
  * - /packages/cli/assets/templates/blocks/components/InputGroup/
15
16
  */
@@ -49,7 +50,7 @@ const styles = {
49
50
  *
50
51
  * @example
51
52
  * ```
52
- * <InputGroup label="URL">
53
+ * <InputGroup label="Website">
53
54
  * <InputGroupText>https://</InputGroupText>
54
55
  * <TextInput label="URL" isLabelHidden value={url} onChange={setUrl} />
55
56
  * </InputGroup>
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"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"}
package/dist/Item/Item.js CHANGED
@@ -589,7 +589,10 @@ export function Item({
589
589
  ...(isInteractive ? pressable : undefined),
590
590
  ...mergeProps(themeProps('item', {
591
591
  density,
592
- align
592
+ align,
593
+ highlighted: isHighlighted ? 'highlighted' : null,
594
+ selected: isSelected ? 'selected' : null,
595
+ disabled: isDisabled ? 'disabled' : null
593
596
  }), focusOutlineProps.focusWithin(styles.root, densityStyles[density], align === 'start' && styles.alignStart, align === 'first-line' && styles.alignFirstLine, isInteractive && styles.interactive, isInteractive && interactionOverlayStyles.backgroundColor,
594
597
  // The touch press on a compositor layer (after the overlay, whose
595
598
  // own touch paint it turns off): the release keeps fading while
@@ -1 +1 @@
1
- {"version":3,"file":"LayerProvider.d.ts","sourceRoot":"","sources":["../../src/Layer/LayerProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC9C,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,iDAAiD;IACjD,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAoBD,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EAAE,WAAkC,EACzC,KAAK,GACN,EAAE,kBAAkB,+BAwCpB;yBA5Ce,aAAa"}
1
+ {"version":3,"file":"LayerProvider.d.ts","sourceRoot":"","sources":["../../src/Layer/LayerProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC9C,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,iDAAiD;IACjD,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAqBD,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EAAE,WAAkC,EACzC,KAAK,GACN,EAAE,kBAAkB,+BAwCpB;yBA5Ce,aAAa"}
@@ -4,16 +4,17 @@
4
4
 
5
5
  import { useMemo } from 'react';
6
6
  import { LayerContext, useLayerContext } from "./LayerContext.js";
7
- import { ToastViewport } from "../Toast/ToastViewport.js";
7
+ import { ToastHostOutlet } from "./toastHost.js";
8
8
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
9
9
  /**
10
10
  * App-level provider for layer systems (toast, sheet, imperative modals).
11
11
  *
12
12
  * Optional — hooks fall back to a lazy self-mounting viewport when no
13
- * provider exists. Nested providers are no-ops, except that one declaring an
14
- * `inset` narrows it for the anchored layers in its subtree. `inset` declares
15
- * a persistent bar floating over a viewport edge once; anchored layers and
16
- * toasts both clear it.
13
+ * provider exists. The provider renders the toast viewport once Toast is
14
+ * imported; without Toast it renders no empty viewport. Nested providers are
15
+ * no-ops, except that one declaring an `inset` narrows it for the anchored
16
+ * layers in its subtree. `inset` declares a persistent bar floating over a
17
+ * viewport edge once; anchored layers and toasts both clear it.
17
18
  *
18
19
  * @example
19
20
  * ```
@@ -57,12 +58,12 @@ export function LayerProvider({
57
58
 
58
59
  // The declared inset reaches anchored layers through context — each layer
59
60
  // writes it inline on itself, so a corrective portal cannot escape it — and
60
- // the toast viewport through its prop. Nothing resolves placement through
61
+ // the toast viewport through the outlet. Nothing resolves placement through
61
62
  // the provider (spec:AST-059 FR6). With no inset nothing is written, so a
62
63
  // surface with no provider renders as one under the default provider.
63
64
  return /*#__PURE__*/_jsx(LayerContext, {
64
65
  value: contextValue,
65
- children: /*#__PURE__*/_jsx(ToastViewport, {
66
+ children: /*#__PURE__*/_jsx(ToastHostOutlet, {
66
67
  position: toastConfig.position,
67
68
  maxVisible: toastConfig.maxVisible,
68
69
  inset: toastConfig.inset,
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @file toastHost.tsx
3
+ * @input The toast viewport that Toast registers, and LayerProvider's toast
4
+ * configuration
5
+ * @output ToastContext, registerToastHost, ToastHostOutlet, and the toast
6
+ * queue that the outlet and useToast's fallback root share
7
+ * @position Private layer infrastructure. LayerProvider renders the outlet,
8
+ * and Toast/ToastViewport.tsx registers itself and reads the context.
9
+ *
10
+ * SYNC: When modified, update /packages/core/src/Layer/toastHost.test.tsx and
11
+ * /docs/architecture/layer-runtime.md
12
+ */
13
+ import { type ComponentType, type ReactNode } from 'react';
14
+ import type { ToastDismissReason, ToastEntry } from '../Toast/types.js';
15
+ import type { LayerInset, LayerToastConfig } from './LayerContext.js';
16
+ /** Internal context value for toast state management. */
17
+ export interface ToastContextValue {
18
+ /** Add a toast. */
19
+ addToast: (entry: ToastEntry) => void;
20
+ /** Remove a toast by ID with a reason. */
21
+ removeToast: (id: string, reason: ToastDismissReason) => void;
22
+ /** Find a toast by uniqueID. */
23
+ findByUniqueID: (uniqueID: string) => ToastEntry | undefined;
24
+ }
25
+ /**
26
+ * React context for toast state. It lives in Layer, so LayerProvider can
27
+ * provide it without importing Toast. With no provider it is null, and
28
+ * `useToast` mounts a viewport of its own.
29
+ */
30
+ export declare const ToastContext: import("react").Context<ToastContextValue | null>;
31
+ /**
32
+ * Finds the toast a new one meets by uniqueID, and whether the new one is
33
+ * dropped. An empty uniqueID names no toast. With a namesake held, an ignored
34
+ * toast is dropped and an overwrite takes its place. The viewport and the
35
+ * waiting queue both decide through it, so the rule has one home.
36
+ */
37
+ export declare function findToastNamesake<T extends ToastEntry>(held: ReadonlyArray<T>, entry: ToastEntry): {
38
+ namesake: T | undefined;
39
+ isDropped: boolean;
40
+ };
41
+ /** The props an outlet gives the registered viewport. */
42
+ export interface ToastHostProps {
43
+ position?: LayerToastConfig['position'];
44
+ maxVisible?: LayerToastConfig['maxVisible'];
45
+ inset?: LayerToastConfig['inset'];
46
+ layerInset?: LayerInset;
47
+ children?: ReactNode;
48
+ }
49
+ /**
50
+ * Registers the toast viewport, which every LayerProvider renders from then
51
+ * on. Toast's viewport module calls it as it loads, so an app that never
52
+ * imports Toast carries none of it.
53
+ */
54
+ export declare function registerToastHost(host: ComponentType<ToastHostProps>): void;
55
+ /**
56
+ * A toast context that holds toasts until a viewport's own context takes
57
+ * them. LayerProvider's outlet and useToast's fallback root each use one.
58
+ */
59
+ export interface ToastQueue {
60
+ /** The context to provide. It forwards to the viewport once one connects. */
61
+ readonly context: ToastContextValue;
62
+ /** Connects the viewport's context, or disconnects it with null. */
63
+ connect: (viewport: ToastContextValue | null) => void;
64
+ }
65
+ export declare function createToastQueue(): ToastQueue;
66
+ /** Connects a queue to the toast context of the viewport that renders it. */
67
+ export declare function ToastQueueConnector({ queue }: {
68
+ queue: ToastQueue;
69
+ }): null;
70
+ /**
71
+ * LayerProvider's toast outlet. It always provides the toast context, so the
72
+ * app keeps its place in the tree when the viewport arrives. A toast added
73
+ * before the viewport can take it waits in the queue, and the toasts that
74
+ * wait show in order.
75
+ */
76
+ export declare function ToastHostOutlet({ children, ...config }: ToastHostProps): import("react").JSX.Element;
77
+ //# sourceMappingURL=toastHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toastHost.d.ts","sourceRoot":"","sources":["../../src/Layer/toastHost.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,kBAAkB,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAC,UAAU,EAAE,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAEjE,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,0CAA0C;IAC1C,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9D,gCAAgC;IAChC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;CAC9D;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAG1E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACpD,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,UAAU,GAChB;IAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,CAS/C;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAQ3E;AAcD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,oEAAoE;IACpE,OAAO,EAAE,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAsD7C;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,EAAC,KAAK,EAAC,EAAE;IAAC,KAAK,EAAE,UAAU,CAAA;CAAC,QAgB/D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAC,QAAQ,EAAE,GAAG,MAAM,EAAC,EAAE,cAAc,+BAapE"}
@@ -0,0 +1,172 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file toastHost.tsx
7
+ * @input The toast viewport that Toast registers, and LayerProvider's toast
8
+ * configuration
9
+ * @output ToastContext, registerToastHost, ToastHostOutlet, and the toast
10
+ * queue that the outlet and useToast's fallback root share
11
+ * @position Private layer infrastructure. LayerProvider renders the outlet,
12
+ * and Toast/ToastViewport.tsx registers itself and reads the context.
13
+ *
14
+ * SYNC: When modified, update /packages/core/src/Layer/toastHost.test.tsx and
15
+ * /docs/architecture/layer-runtime.md
16
+ */
17
+ import { createContext, use, useEffect, useState, useSyncExternalStore } from 'react';
18
+
19
+ /** Internal context value for toast state management. */
20
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
21
+ /**
22
+ * React context for toast state. It lives in Layer, so LayerProvider can
23
+ * provide it without importing Toast. With no provider it is null, and
24
+ * `useToast` mounts a viewport of its own.
25
+ */
26
+ export const ToastContext = /*#__PURE__*/createContext(null);
27
+ ToastContext.displayName = 'ToastContext';
28
+
29
+ /**
30
+ * Finds the toast a new one meets by uniqueID, and whether the new one is
31
+ * dropped. An empty uniqueID names no toast. With a namesake held, an ignored
32
+ * toast is dropped and an overwrite takes its place. The viewport and the
33
+ * waiting queue both decide through it, so the rule has one home.
34
+ */
35
+ export function findToastNamesake(held, entry) {
36
+ const {
37
+ uniqueID,
38
+ collisionBehavior = 'overwrite'
39
+ } = entry.options;
40
+ const namesake = uniqueID ? held.find(candidate => candidate.options.uniqueID === uniqueID) : undefined;
41
+ return {
42
+ namesake,
43
+ isDropped: namesake != null && collisionBehavior === 'ignore'
44
+ };
45
+ }
46
+
47
+ /** The props an outlet gives the registered viewport. */
48
+
49
+ let registeredHost = null;
50
+ const hostListeners = new Set();
51
+
52
+ /**
53
+ * Registers the toast viewport, which every LayerProvider renders from then
54
+ * on. Toast's viewport module calls it as it loads, so an app that never
55
+ * imports Toast carries none of it.
56
+ */
57
+ export function registerToastHost(host) {
58
+ if (registeredHost === host) {
59
+ return;
60
+ }
61
+ registeredHost = host;
62
+ for (const listener of hostListeners) {
63
+ listener();
64
+ }
65
+ }
66
+ function subscribeToHost(listener) {
67
+ hostListeners.add(listener);
68
+ return () => {
69
+ hostListeners.delete(listener);
70
+ };
71
+ }
72
+ const readHost = () => registeredHost;
73
+ // The server and the hydrating render show no viewport. The viewport has
74
+ // nothing to show there, and it mounts right after hydration.
75
+ const readNoHost = () => null;
76
+
77
+ /**
78
+ * A toast context that holds toasts until a viewport's own context takes
79
+ * them. LayerProvider's outlet and useToast's fallback root each use one.
80
+ */
81
+
82
+ export function createToastQueue() {
83
+ let viewport = null;
84
+ let waiting = [];
85
+ return {
86
+ context: {
87
+ addToast: entry => {
88
+ if (viewport != null) {
89
+ viewport.addToast(entry);
90
+ return;
91
+ }
92
+ // A waiting toast meets a namesake as the viewport's toasts do.
93
+ const {
94
+ namesake,
95
+ isDropped
96
+ } = findToastNamesake(waiting, entry);
97
+ if (isDropped) {
98
+ return;
99
+ }
100
+ waiting = namesake == null ? [...waiting, entry] : waiting.map(candidate => candidate === namesake ? entry : candidate);
101
+ },
102
+ removeToast: (id, reason) => {
103
+ if (viewport != null) {
104
+ viewport.removeToast(id, reason);
105
+ return;
106
+ }
107
+ const entry = waiting.find(candidate => candidate.id === id);
108
+ if (entry == null) {
109
+ return;
110
+ }
111
+ waiting = waiting.filter(candidate => candidate !== entry);
112
+ // A toast dismissed while it waits still reports its hide, as the
113
+ // viewport reports one for a toast that has not rendered yet. A
114
+ // replaced or ignored namesake is not waiting, so it reports none.
115
+ entry.options.onHide?.(reason);
116
+ },
117
+ findByUniqueID: uniqueID => viewport == null ? waiting.find(entry => entry.options.uniqueID === uniqueID) : viewport.findByUniqueID(uniqueID)
118
+ },
119
+ connect: next => {
120
+ viewport = next;
121
+ if (next == null) {
122
+ return;
123
+ }
124
+ const entries = waiting;
125
+ waiting = [];
126
+ for (const entry of entries) {
127
+ next.addToast(entry);
128
+ }
129
+ }
130
+ };
131
+ }
132
+
133
+ /** Connects a queue to the toast context of the viewport that renders it. */
134
+ export function ToastQueueConnector({
135
+ queue
136
+ }) {
137
+ const viewport = use(ToastContext);
138
+ // Points the queue at the viewport's toast context once the viewport
139
+ // commits, so its addToast can set its state. The context changes with the
140
+ // viewport's props, and the queue stays connected across that change.
141
+ useEffect(() => {
142
+ queue.connect(viewport);
143
+ }, [queue, viewport]);
144
+ // Disconnects the queue when the viewport unmounts.
145
+ useEffect(() => () => {
146
+ queue.connect(null);
147
+ }, [queue]);
148
+ return null;
149
+ }
150
+
151
+ /**
152
+ * LayerProvider's toast outlet. It always provides the toast context, so the
153
+ * app keeps its place in the tree when the viewport arrives. A toast added
154
+ * before the viewport can take it waits in the queue, and the toasts that
155
+ * wait show in order.
156
+ */
157
+ export function ToastHostOutlet({
158
+ children,
159
+ ...config
160
+ }) {
161
+ const Host = useSyncExternalStore(subscribeToHost, readHost, readNoHost);
162
+ const [queue] = useState(createToastQueue);
163
+ return /*#__PURE__*/_jsxs(ToastContext, {
164
+ value: queue.context,
165
+ children: [children, Host == null ? null : /*#__PURE__*/_jsx(Host, {
166
+ ...config,
167
+ children: /*#__PURE__*/_jsx(ToastQueueConnector, {
168
+ queue: queue
169
+ })
170
+ })]
171
+ });
172
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPanel.d.ts","sourceRoot":"","sources":["../../src/Layout/LayoutPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AA6FnC,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,UAAkB,EAClB,YAAmB,EACnB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,KAAK,EACL,SAAS,EAAE,cAAc,EACzB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAkIlB;yBAhJe,WAAW"}
1
+ {"version":3,"file":"LayoutPanel.d.ts","sourceRoot":"","sources":["../../src/Layout/LayoutPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAmGnC,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,UAAkB,EAClB,YAAmB,EACnB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,KAAK,EACL,SAAS,EAAE,cAAc,EACzB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA0IlB;yBAxJe,WAAW"}
@@ -79,6 +79,12 @@ const styles = {
79
79
  kVQacm: "xysyzu8",
80
80
  $$css: true
81
81
  },
82
+ zeroWidth: {
83
+ kZCmMZ: "x1c1uobl",
84
+ kwRFfy: "xyri2b",
85
+ kVQacm: "x7giv3",
86
+ $$css: true
87
+ },
82
88
  dividerEnd: {
83
89
  ke9TFa: "x1lun4ml",
84
90
  k8ry5P: "x18b5jzi",
@@ -205,11 +211,14 @@ export function LayoutPanel({
205
211
  const isStartPanel = area === 'start';
206
212
  const isEndPanel = area === 'end';
207
213
  const isZeroPadding = padding === 0;
214
+ // A collapsed region sizes its panel to 0.
215
+ const isZeroWidth = effectiveWidth === 0;
208
216
 
209
217
  // When no divider, collapse spacing for seamless visual flow
210
- const shouldCollapseSpacing = !hasDivider && !isZeroPadding && padding == null;
218
+ const shouldCollapseSpacing = !hasDivider && !isZeroPadding && padding == null && !isZeroWidth;
219
+ // At width 0 the panel clips its content, so it does not scroll.
211
220
  const region = useScrollRegionProps({
212
- isScrollable,
221
+ isScrollable: isScrollable && !isZeroWidth,
213
222
  role,
214
223
  label
215
224
  });
@@ -226,7 +235,7 @@ export function LayoutPanel({
226
235
  "aria-label": region['aria-label'],
227
236
  ...mergeProps(themeProps('layout-panel'), stylex.props(styles.panel, dynamicStyles.sizing(effectiveWidth ?? null),
228
237
  // Outer padding on container edges (unless component is full bleed)
229
- isStartPanel && !isZeroPadding && padding == null && styles.startPanel, isEndPanel && !isZeroPadding && padding == null && styles.endPanel, !hasHeader && !isZeroPadding && padding == null && styles.noHeader, !hasFooter && !isZeroPadding && padding == null && styles.noFooter, isScrollable && styles.scrollable, isZeroPadding && styles.fullBleed, padding != null && paddingStyles[padding], padding != null && containerPaddingInlineVarStyles[padding], padding != null && containerPaddingBlockStartVarStyles[padding], padding != null && containerPaddingBlockEndVarStyles[padding], hasDivider && dividerStyle, shouldCollapseSpacing && collapseStyle, xstyle), className, style),
238
+ isStartPanel && !isZeroPadding && padding == null && styles.startPanel, isEndPanel && !isZeroPadding && padding == null && styles.endPanel, !hasHeader && !isZeroPadding && padding == null && styles.noHeader, !hasFooter && !isZeroPadding && padding == null && styles.noFooter, isScrollable && styles.scrollable, isZeroPadding && styles.fullBleed, padding != null && paddingStyles[padding], padding != null && containerPaddingInlineVarStyles[padding], padding != null && containerPaddingBlockStartVarStyles[padding], padding != null && containerPaddingBlockEndVarStyles[padding], hasDivider && dividerStyle, shouldCollapseSpacing && collapseStyle, isZeroWidth && styles.zeroWidth, xstyle), className, style),
230
239
  ...props,
231
240
  ...(isConcealed ? {
232
241
  inert: true,
@@ -1 +1 @@
1
- {"version":3,"file":"OverflowList.d.ts","sourceRoot":"","sources":["../../src/OverflowList/OverflowList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAgFhD,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAClE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;IAE3C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,SAAS,CAAC;IAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,GAAO,EACP,eAAmB,EACnB,eAAe,EACf,OAAO,EACP,YAAoB,EACpB,QAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,iBAAiB,+BAsInB;yBArJe,YAAY"}
1
+ {"version":3,"file":"OverflowList.d.ts","sourceRoot":"","sources":["../../src/OverflowList/OverflowList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAgFhD,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAClE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;IAE3C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,SAAS,CAAC;IAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,GAAO,EACP,eAAmB,EACnB,eAAe,EACf,OAAO,EACP,YAAoB,EACpB,QAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,iBAAiB,+BA4InB;yBA3Je,YAAY"}
@@ -21,7 +21,7 @@ import { Children, useCallback, useRef, useState } from 'react';
21
21
  import { isRenderable } from "../utils/isRenderable.js";
22
22
  import * as stylex from '@stylexjs/stylex';
23
23
  import { mergeProps } from "../utils/index.js";
24
- import { useOverflow } from "../hooks/useOverflow.js";
24
+ import { useOverflowInternal } from "../hooks/useOverflow.js";
25
25
  import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
26
26
  import "../theme/tokens.stylex.js";
27
27
  import { spacingVars } from "../theme/tokens.stylex.js";
@@ -176,19 +176,24 @@ export function OverflowList({
176
176
  const gapPx = spacingToPx[gap];
177
177
  const observeParent = behavior === 'observeParent';
178
178
  const isMultiRow = maxRows != null && maxRows > 1;
179
+
180
+ // Only the multi-row path renders from `rowHeight` (it caps the
181
+ // container's height), so only that path tracks it.
179
182
  const {
180
183
  containerRef,
181
184
  measureRef,
182
185
  visibleCount,
183
186
  hasOverflow,
184
187
  rowHeight
185
- } = useOverflow(itemCount, {
188
+ } = useOverflowInternal(itemCount, {
186
189
  gap: gapPx,
187
190
  minVisibleItems,
188
191
  maxVisibleItems,
189
192
  maxRows,
190
193
  collapseFrom,
191
194
  behavior
195
+ }, {
196
+ tracksRows: isMultiRow
192
197
  });
193
198
  const allItems = childArray.map((child, index) => ({
194
199
  child,
@@ -29,8 +29,6 @@ export declare function watchResizablePanes(listener: () => void): () => void;
29
29
  * The pane a resize handle resizes: the lent LayoutPanel just before it, or
30
30
  * just after it when the region is reversed.
31
31
  */
32
- export declare function resizablePaneBeside(handle: Element, side: 'before' | 'after'): ResizablePane | null;
33
- /** The lent panel a handle sizes: before it, or after it when reversed. */
34
32
  export declare function resizablePaneFor(handle: Element, isReversed: boolean): ResizablePane | null;
35
33
  /**
36
34
  * Moves a handle's hold from `held` to `next`, and returns `next`. A pane the
@@ -1 +1 @@
1
- {"version":3,"file":"resizablePane.d.ts","sourceRoot":"","sources":["../../src/Resizable/resizablePane.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3E;AAOD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,IAAI,CAKjE;AAQD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,QAAQ,GAAG,OAAO,GACvB,aAAa,GAAG,IAAI,CAMtB;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,GAClB,aAAa,GAAG,IAAI,CAEtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,WAAW,GAAG,IAAI,GACzB,aAAa,GAAG,IAAI,CAMtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,WAAW,GAAG,IAAI,CAapB;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,iEAAiE;IACjE,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3C;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAwD3D"}
1
+ {"version":3,"file":"resizablePane.d.ts","sourceRoot":"","sources":["../../src/Resizable/resizablePane.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3E;AAOD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,IAAI,CAKjE;AAQD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,GAClB,aAAa,GAAG,IAAI,CAKtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,WAAW,GAAG,IAAI,GACzB,aAAa,GAAG,IAAI,CAMtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,WAAW,GAAG,IAAI,CAapB;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,iEAAiE;IACjE,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3C;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAwD3D"}
@@ -46,14 +46,9 @@ export function watchResizablePanes(listener) {
46
46
  * The pane a resize handle resizes: the lent LayoutPanel just before it, or
47
47
  * just after it when the region is reversed.
48
48
  */
49
- export function resizablePaneBeside(handle, side) {
50
- const sibling = side === 'before' ? handle.previousElementSibling : handle.nextElementSibling;
51
- return sibling == null ? null : lent.get(sibling) ?? null;
52
- }
53
-
54
- /** The lent panel a handle sizes: before it, or after it when reversed. */
55
49
  export function resizablePaneFor(handle, isReversed) {
56
- return resizablePaneBeside(handle, isReversed ? 'after' : 'before');
50
+ const sibling = isReversed ? handle.nextElementSibling : handle.previousElementSibling;
51
+ return sibling == null ? null : lent.get(sibling) ?? null;
57
52
  }
58
53
 
59
54
  /**