@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.
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +31 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +2 -1
- package/dist/DateInput/wheelStrip.js +2 -2
- package/dist/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Drawer/Drawer.js +3 -1
- package/dist/InputGroup/InputGroupText.d.ts +2 -1
- package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
- package/dist/InputGroup/InputGroupText.js +2 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -1
- package/dist/Layer/LayerProvider.d.ts.map +1 -1
- package/dist/Layer/LayerProvider.js +8 -7
- package/dist/Layer/toastHost.d.ts +77 -0
- package/dist/Layer/toastHost.d.ts.map +1 -0
- package/dist/Layer/toastHost.js +172 -0
- package/dist/Layout/LayoutPanel.d.ts.map +1 -1
- package/dist/Layout/LayoutPanel.js +12 -3
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +7 -2
- package/dist/Resizable/resizablePane.d.ts +0 -2
- package/dist/Resizable/resizablePane.d.ts.map +1 -1
- package/dist/Resizable/resizablePane.js +2 -7
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +16 -56
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +0 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +7 -4
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Switch/useSwitchTouch.js +4 -4
- package/dist/Toast/ToastContext.d.ts +6 -13
- package/dist/Toast/ToastContext.d.ts.map +1 -1
- package/dist/Toast/ToastContext.js +6 -8
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +14 -7
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +10 -50
- package/dist/animator/createAnimator.js +2 -2
- package/dist/gestures/createPanGesture.d.ts +49 -0
- package/dist/gestures/createPanGesture.d.ts.map +1 -0
- package/dist/gestures/createPanGesture.js +80 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useOverflow.d.ts +10 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +25 -3
- package/dist/hooks/usePanGesture.d.ts +31 -0
- package/dist/hooks/usePanGesture.d.ts.map +1 -0
- package/dist/hooks/usePanGesture.js +61 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/internal/touch.d.ts +10 -5
- package/dist/internal/touch.d.ts.map +1 -1
- package/dist/internal/touch.js +15 -7
- package/dist/motion/animator.d.ts +5 -5
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +7 -6
- package/dist/motion/themeTiming.d.ts +63 -0
- package/dist/motion/themeTiming.d.ts.map +1 -0
- package/dist/motion/themeTiming.js +173 -0
- package/dist/utils/focusReturn.d.ts +24 -11
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +48 -14
- package/package.json +4 -4
- package/src/BottomSheet/BottomSheet.tsx +39 -2
- package/src/CheckboxInput/CheckboxInput.tsx +5 -1
- package/src/DateInput/wheelStrip.ts +2 -2
- package/src/Drawer/Drawer.tsx +3 -1
- package/src/Icon/useIcon.doc.mjs +94 -0
- package/src/InputGroup/InputGroupText.doc.mjs +45 -3
- package/src/InputGroup/InputGroupText.tsx +2 -1
- package/src/Item/Item.doc.mjs +19 -4
- package/src/Item/Item.tsx +7 -1
- package/src/Layer/LayerProvider.tsx +9 -8
- package/src/Layer/toastHost.tsx +212 -0
- package/src/Layout/LayoutPanel.tsx +16 -2
- package/src/OverflowList/OverflowList.tsx +15 -9
- package/src/Resizable/resizablePane.ts +4 -13
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +15 -62
- package/src/SideNav/SideNav.tsx +0 -1
- package/src/SideNav/SideNavItem.tsx +8 -6
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Switch/useSwitchTouch.ts +4 -4
- package/src/Toast/ToastContext.ts +7 -17
- package/src/Toast/ToastViewport.tsx +13 -9
- package/src/Toast/useToast.tsx +7 -52
- package/src/animator/createAnimator.ts +3 -3
- package/src/gestures/README.md +2 -1
- package/src/gestures/createPanGesture.doc.mjs +145 -0
- package/src/gestures/createPanGesture.ts +107 -0
- package/src/hooks/index.ts +8 -0
- package/src/hooks/useOverflow.ts +25 -3
- package/src/hooks/usePanGesture.doc.mjs +159 -0
- package/src/hooks/usePanGesture.ts +69 -0
- package/src/index.ts +2 -0
- package/src/internal/touch.ts +16 -8
- package/src/motion/README.md +3 -3
- package/src/motion/animator.ts +7 -7
- package/src/motion/themeTiming.ts +198 -0
- 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;
|
|
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
|
-
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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 {
|
|
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 =
|
|
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;
|
|
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"}
|
package/dist/Drawer/Drawer.js
CHANGED
|
@@ -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
|
|
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="
|
|
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
|
|
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="
|
|
53
|
+
* <InputGroup label="Website">
|
|
53
54
|
* <InputGroupText>https://</InputGroupText>
|
|
54
55
|
* <TextInput label="URL" isLabelHidden value={url} onChange={setUrl} />
|
|
55
56
|
* </InputGroup>
|
package/dist/Item/Item.d.ts.map
CHANGED
|
@@ -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;
|
|
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 {
|
|
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.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
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
|
|
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(
|
|
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;
|
|
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,+
|
|
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 {
|
|
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
|
-
} =
|
|
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,
|
|
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
|
-
|
|
50
|
+
const sibling = isReversed ? handle.nextElementSibling : handle.previousElementSibling;
|
|
51
|
+
return sibling == null ? null : lent.get(sibling) ?? null;
|
|
57
52
|
}
|
|
58
53
|
|
|
59
54
|
/**
|