@astryxdesign/core 0.7.6 → 0.7.7-canary.1d04d40
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/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +23 -3
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +16 -9
- package/dist/Chat/ChatComposerInput.d.ts +9 -0
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +2 -0
- package/dist/Chat/ChatMessage.js +2 -2
- package/dist/Chat/chatMessage.vars.stylex.d.ts +8 -8
- package/dist/Chat/chatMessage.vars.stylex.js +8 -8
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +8 -1
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +72 -2
- package/dist/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Drawer/Drawer.js +6 -0
- package/dist/DropdownMenu/useMenuOverflow.d.ts +13 -3
- package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
- package/dist/DropdownMenu/useMenuOverflow.js +31 -8
- package/dist/Field/PanelSearchInput.d.ts.map +1 -1
- package/dist/Field/PanelSearchInput.js +8 -1
- package/dist/Field/textEntryTraits.d.ts +6 -6
- package/dist/Field/textEntryTraits.js +6 -6
- package/dist/Layer/layerClickBoundary.d.ts +7 -1
- package/dist/Layer/layerClickBoundary.d.ts.map +1 -1
- package/dist/Layer/layerClickBoundary.js +2 -2
- package/dist/Layer/usePressPin.d.ts +95 -0
- package/dist/Layer/usePressPin.d.ts.map +1 -0
- package/dist/Layer/usePressPin.js +335 -0
- package/dist/Layer/useTouchTrigger.d.ts +23 -1
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +29 -2
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +1 -0
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +20 -9
- package/dist/ProgressBar/ProgressBarTouch.d.ts +29 -0
- package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -0
- package/dist/ProgressBar/ProgressBarTouch.js +91 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +25 -13
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +404 -131
- package/dist/Slider/sliderTouchController.d.ts +189 -0
- package/dist/Slider/sliderTouchController.d.ts.map +1 -0
- package/dist/Slider/sliderTouchController.js +1017 -0
- package/dist/Slider/useSliderTouch.d.ts +22 -0
- package/dist/Slider/useSliderTouch.d.ts.map +1 -0
- package/dist/Slider/useSliderTouch.js +56 -0
- package/dist/Tooltip/Tooltip.d.ts +30 -6
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +5 -0
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +31 -5
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +59 -18
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +19 -9
- package/dist/astryx.css +40 -6
- package/dist/gestures/GestureArena.d.ts +21 -2
- package/dist/gestures/GestureArena.d.ts.map +1 -1
- package/dist/gestures/GestureArena.js +23 -3
- package/dist/gestures/GestureHost.d.ts +123 -3
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +791 -12
- package/dist/gestures/GestureRecognizer.d.ts +15 -1
- package/dist/gestures/GestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/GestureRecognizer.js +12 -0
- package/dist/gestures/PanGestureRecognizer.d.ts +8 -0
- package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/PinchGestureRecognizer.d.ts +5 -1
- package/dist/gestures/PinchGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/PinchGestureRecognizer.js +10 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +3 -3
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/ScreenEdgePanGestureRecognizer.js +7 -5
- package/dist/gestures/nativeScroll.d.ts +16 -2
- package/dist/gestures/nativeScroll.d.ts.map +1 -1
- package/dist/gestures/nativeScroll.js +39 -8
- package/dist/gestures/recognizerInternals.d.ts +4 -2
- package/dist/gestures/recognizerInternals.d.ts.map +1 -1
- package/dist/gestures/types.d.ts +11 -0
- package/dist/gestures/types.d.ts.map +1 -1
- package/dist/gestures/types.js +7 -0
- package/dist/gestures/wheelSegmenter.d.ts +45 -0
- package/dist/gestures/wheelSegmenter.d.ts.map +1 -0
- package/dist/gestures/wheelSegmenter.js +98 -0
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +140 -19
- package/dist/motion/paging.d.ts +58 -0
- package/dist/motion/paging.d.ts.map +1 -0
- package/dist/motion/paging.js +128 -0
- package/dist/motion/uikit/index.d.ts +5 -3
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +5 -3
- package/dist/motion/uikit/paging.d.ts +160 -0
- package/dist/motion/uikit/paging.d.ts.map +1 -0
- package/dist/motion/uikit/paging.js +162 -0
- package/dist/motion/uikit/progressBar.d.ts +59 -0
- package/dist/motion/uikit/progressBar.d.ts.map +1 -0
- package/dist/motion/uikit/progressBar.js +82 -0
- package/dist/motion/uikit/scroll.d.ts +0 -19
- package/dist/motion/uikit/scroll.d.ts.map +1 -1
- package/dist/motion/uikit/scroll.js +2 -21
- package/dist/motion/uikit/slider.d.ts +97 -0
- package/dist/motion/uikit/slider.d.ts.map +1 -0
- package/dist/motion/uikit/slider.js +111 -0
- package/dist/motion/uikit/springs.d.ts +46 -1
- package/dist/motion/uikit/springs.d.ts.map +1 -1
- package/dist/motion/uikit/springs.js +48 -4
- package/dist/utils/selectionLock.d.ts +43 -0
- package/dist/utils/selectionLock.d.ts.map +1 -1
- package/dist/utils/selectionLock.js +394 -6
- package/package.json +5 -5
- package/src/AppShell/AppShell.doc.mjs +10 -0
- package/src/AppShell/AppShell.tsx +48 -2
- package/src/BottomSheet/BottomSheetPanel.tsx +16 -9
- package/src/Chat/Chat.doc.mjs +1 -0
- package/src/Chat/ChatComposerInput.doc.mjs +11 -0
- package/src/Chat/ChatComposerInput.tsx +11 -0
- package/src/Chat/ChatMessage.tsx +2 -2
- package/src/Chat/chatMessage.vars.stylex.ts +8 -8
- package/src/CommandPalette/CommandPaletteInput.tsx +6 -0
- package/src/DateInput/MonthScroller.tsx +63 -5
- package/src/Drawer/Drawer.tsx +6 -0
- package/src/DropdownMenu/useMenuOverflow.ts +44 -8
- package/src/Field/PanelSearchInput.tsx +6 -0
- package/src/Field/textEntryTraits.ts +6 -6
- package/src/Layer/layerClickBoundary.ts +2 -2
- package/src/Layer/usePressPin.ts +481 -0
- package/src/Layer/useTouchTrigger.ts +37 -1
- package/src/Link/Link.tsx +3 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
- package/src/ProgressBar/ProgressBar.tsx +82 -11
- package/src/ProgressBar/ProgressBarTouch.ts +109 -0
- package/src/Selector/Selector.tsx +29 -2
- package/src/Slider/Slider.doc.mjs +11 -7
- package/src/Slider/Slider.tsx +539 -132
- package/src/Slider/sliderTouchController.ts +1209 -0
- package/src/Slider/useSliderTouch.ts +78 -0
- package/src/Tooltip/Tooltip.doc.mjs +21 -6
- package/src/Tooltip/Tooltip.tsx +42 -5
- package/src/Tooltip/index.ts +1 -0
- package/src/Tooltip/useTooltip.doc.mjs +4 -2
- package/src/Tooltip/useTooltip.tsx +84 -21
- package/src/Typeahead/BaseTypeahead.tsx +16 -8
- package/src/gestures/GestureArena.ts +45 -4
- package/src/gestures/GestureHost.ts +949 -12
- package/src/gestures/GestureRecognizer.ts +28 -0
- package/src/gestures/PanGestureRecognizer.ts +8 -0
- package/src/gestures/PinchGestureRecognizer.ts +16 -1
- package/src/gestures/README.md +82 -3
- package/src/gestures/ScreenEdgePanGestureRecognizer.ts +7 -5
- package/src/gestures/nativeScroll.ts +49 -9
- package/src/gestures/recognizerInternals.ts +9 -2
- package/src/gestures/types.ts +12 -0
- package/src/gestures/wheelSegmenter.ts +114 -0
- package/src/motion/MEASUREMENTS.md +8 -1
- package/src/motion/README.md +6 -3
- package/src/motion/animator.ts +193 -25
- package/src/motion/paging.ts +138 -0
- package/src/motion/uikit/index.ts +5 -3
- package/src/motion/uikit/paging.ts +162 -0
- package/src/motion/uikit/progressBar.ts +82 -0
- package/src/motion/uikit/scroll.ts +2 -18
- package/src/motion/uikit/slider.ts +105 -0
- package/src/motion/uikit/springs.ts +37 -2
- package/src/utils/selectionLock.ts +501 -6
- package/dist/motion/selectPage.d.ts +0 -26
- package/dist/motion/selectPage.d.ts.map +0 -1
- package/dist/motion/selectPage.js +0 -55
- package/src/motion/selectPage.ts +0 -55
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file ProgressBar.tsx
|
|
7
|
-
* @input Uses React, useId, stylex,
|
|
7
|
+
* @input Uses React, useId, stylex, tokens and ProgressBarTouch
|
|
8
8
|
* @output Exports ProgressBar component, ProgressBarProps, ProgressBarVariant types
|
|
9
9
|
* @position Core implementation; consumed by index.ts
|
|
10
10
|
*
|
|
@@ -24,11 +24,13 @@ import { mergeProps } from "../utils/index.js";
|
|
|
24
24
|
import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
|
|
25
25
|
import { themeProps } from "../utils/themeProps.js";
|
|
26
26
|
import { VisuallyHidden } from "../VisuallyHidden/index.js";
|
|
27
|
-
import {
|
|
27
|
+
import { useProgressBarTouch } from "./ProgressBarTouch.js";
|
|
28
|
+
|
|
28
29
|
// Every mark is wrapped in a Tooltip (marks always carry a label), so load it
|
|
29
30
|
// lazily: a ProgressBar with no marks never bundles the Tooltip chunk. While it
|
|
30
31
|
// loads, the Suspense fallback shows the bare mark, so nothing disappears; the
|
|
31
32
|
// tooltip simply attaches once the chunk is ready.
|
|
33
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
32
34
|
const LazyProgressBarMarkTooltip = /*#__PURE__*/lazy(async () => import("./ProgressBarMarkTooltip.js"));
|
|
33
35
|
|
|
34
36
|
/**
|
|
@@ -69,18 +71,22 @@ const styles = {
|
|
|
69
71
|
$$css: true
|
|
70
72
|
},
|
|
71
73
|
fill: {
|
|
72
|
-
kzqmXN: "xh8yej3 xtyencx",
|
|
74
|
+
kzqmXN: "xh8yej3 xtyencx x1j61smm",
|
|
73
75
|
kZKoxP: "x5yr21d",
|
|
74
76
|
kMeerF: "xcthrzx",
|
|
75
77
|
k3XXqK: "x815t2r",
|
|
76
78
|
kjBf7l: "x3teovq",
|
|
77
79
|
kInvED: "xvr1dqx",
|
|
78
80
|
kaIpWk: "xjspbzw",
|
|
79
|
-
k3aq6I: "x8mk83g x13s8k5t x1xwfpud x10rjfdt",
|
|
81
|
+
k3aq6I: "x8mk83g x13s8k5t x1xwfpud x1ayxeub x1rvio82 x10rjfdt",
|
|
80
82
|
k6sLGO: "x1so62im x1mfxj9n",
|
|
81
83
|
k1ekBW: "x11xpdln x18hto2h",
|
|
82
|
-
kIyJzY: "x80gvsz xo2sced x1r9o9eb",
|
|
83
|
-
kAMwcw: "xlr8y92",
|
|
84
|
+
kIyJzY: "x80gvsz x1k32oa2 x11y4s09 xo2sced x1r9o9eb",
|
|
85
|
+
kAMwcw: "xlr8y92 x1itqrb8",
|
|
86
|
+
$$css: true
|
|
87
|
+
},
|
|
88
|
+
fillEmpty: {
|
|
89
|
+
kSiTet: "x17di44q",
|
|
84
90
|
$$css: true
|
|
85
91
|
},
|
|
86
92
|
indeterminateFill: {
|
|
@@ -277,8 +283,12 @@ export function ProgressBar({
|
|
|
277
283
|
const valueText = formatValueLabel(clampedValue, safeMax);
|
|
278
284
|
const showValueLabel = hasValueLabel && !isIndeterminate;
|
|
279
285
|
const fillVariant = isDisabled ? 'disabled' : variant;
|
|
286
|
+
// Under a finger the fill moves as UIProgressView's does and draws at least
|
|
287
|
+
// 16px; what that needs from script is the touch layer's (ProgressBarTouch).
|
|
288
|
+
const touch = useProgressBarTouch(percentage, !isIndeterminate && (marks?.length ?? 0) > 0);
|
|
280
289
|
const fillStyle = {
|
|
281
|
-
'--_progress-bar-fill': `${percentage}
|
|
290
|
+
'--_progress-bar-fill': `${percentage}%`,
|
|
291
|
+
...touch.fillVars
|
|
282
292
|
};
|
|
283
293
|
|
|
284
294
|
// Marks make no sense without a determinate value, so they are only drawn
|
|
@@ -298,7 +308,7 @@ export function ProgressBar({
|
|
|
298
308
|
value: mark.value,
|
|
299
309
|
label: mark.label,
|
|
300
310
|
pct,
|
|
301
|
-
isOnFill: percentage > 0 && pct <=
|
|
311
|
+
isOnFill: percentage > 0 && pct <= touch.drawnPercentage
|
|
302
312
|
};
|
|
303
313
|
}) : [];
|
|
304
314
|
return /*#__PURE__*/_jsxs("div", {
|
|
@@ -354,6 +364,7 @@ export function ProgressBar({
|
|
|
354
364
|
"aria-valuemax": isIndeterminate ? undefined : safeMax,
|
|
355
365
|
"aria-labelledby": labelId,
|
|
356
366
|
"aria-valuetext": isIndeterminate ? undefined : valueText,
|
|
367
|
+
ref: touch.trackRef,
|
|
357
368
|
...mergeProps(themeProps('progress-bar-track'), {
|
|
358
369
|
className: "xh8yej3 xdk7pt xwmxj5m xjspbzw xb3r6kr"
|
|
359
370
|
}),
|
|
@@ -364,7 +375,7 @@ export function ProgressBar({
|
|
|
364
375
|
}) : /*#__PURE__*/_jsx("div", {
|
|
365
376
|
...mergeProps(themeProps('progress-bar-fill', {
|
|
366
377
|
variant: fillVariant
|
|
367
|
-
}), stylex.props(styles.fill, variantStyles[fillVariant])),
|
|
378
|
+
}), stylex.props(styles.fill, percentage === 0 && styles.fillEmpty, variantStyles[fillVariant])),
|
|
368
379
|
style: fillStyle
|
|
369
380
|
})
|
|
370
381
|
}), resolvedMarks.map(mark => {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file ProgressBarTouch.ts
|
|
3
|
+
* @input Uses React, the touch presentation resolver, the shared resize
|
|
4
|
+
* observer, and the progress table's roles (through resolveMotion)
|
|
5
|
+
* @output useProgressBarTouch: the fill's touch variables (move length,
|
|
6
|
+
* curve, return offset, minimum length) and, under a finger with marks,
|
|
7
|
+
* the share of the track the fill draws
|
|
8
|
+
* @position ProgressBar's touch layer, imported only by ProgressBar.tsx
|
|
9
|
+
*
|
|
10
|
+
* SYNC: When modified, update /packages/core/src/ProgressBar/ProgressBar.tsx
|
|
11
|
+
* (its touch styles read these variables and the 16px minimum) and
|
|
12
|
+
* /packages/core/src/motion/uikit/progressBar.ts.
|
|
13
|
+
*/
|
|
14
|
+
import { type RefObject } from 'react';
|
|
15
|
+
/**
|
|
16
|
+
* Under a finger the fill never draws shorter than this above zero:
|
|
17
|
+
* UIProgressView's minimum, two track heights, on ProgressBar's 8px track.
|
|
18
|
+
*/
|
|
19
|
+
export declare const TOUCH_MIN_FILL_PX: number;
|
|
20
|
+
export interface ProgressBarTouch {
|
|
21
|
+
/** The fill's touch timing variables, set inline on the fill. */
|
|
22
|
+
fillVars: Record<'--_progress-bar-move' | '--_progress-bar-curve' | '--_progress-bar-flip' | '--_progress-bar-min', string>;
|
|
23
|
+
/** The track, measured under a finger when the bar has marks. */
|
|
24
|
+
trackRef: RefObject<HTMLDivElement | null>;
|
|
25
|
+
/** The share of the track the fill draws (0–100), for placing marks. */
|
|
26
|
+
drawnPercentage: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function useProgressBarTouch(percentage: number, hasMarks: boolean): ProgressBarTouch;
|
|
29
|
+
//# sourceMappingURL=ProgressBarTouch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBarTouch.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBarTouch.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAA8B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAUlE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QACiC,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CACZ,sBAAsB,GACtB,uBAAuB,GACvB,sBAAsB,GACtB,qBAAqB,EACvB,MAAM,CACP,CAAC;IACF,iEAAiE;IACjE,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3C,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,GAChB,gBAAgB,CAuDlB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file ProgressBarTouch.ts
|
|
7
|
+
* @input Uses React, the touch presentation resolver, the shared resize
|
|
8
|
+
* observer, and the progress table's roles (through resolveMotion)
|
|
9
|
+
* @output useProgressBarTouch: the fill's touch variables (move length,
|
|
10
|
+
* curve, return offset, minimum length) and, under a finger with marks,
|
|
11
|
+
* the share of the track the fill draws
|
|
12
|
+
* @position ProgressBar's touch layer, imported only by ProgressBar.tsx
|
|
13
|
+
*
|
|
14
|
+
* SYNC: When modified, update /packages/core/src/ProgressBar/ProgressBar.tsx
|
|
15
|
+
* (its touch styles read these variables and the 16px minimum) and
|
|
16
|
+
* /packages/core/src/motion/uikit/progressBar.ts.
|
|
17
|
+
*/
|
|
18
|
+
import { useEffect, useRef, useState } from 'react';
|
|
19
|
+
import { formatMotionRoleValue } from "../motion/roles.js";
|
|
20
|
+
import { resolveMotion } from "../motion/resolveMotion.js";
|
|
21
|
+
import { progressBar } from "../motion/uikit/progressBar.js";
|
|
22
|
+
import { observeResize } from "../utils/sharedResizeObserver.js";
|
|
23
|
+
import { useTouchPresentation } from "../utils/touchPresentation.js";
|
|
24
|
+
|
|
25
|
+
/** The track's height. */
|
|
26
|
+
const TRACK_HEIGHT_PX = 8;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Under a finger the fill never draws shorter than this above zero:
|
|
30
|
+
* UIProgressView's minimum, two track heights, on ProgressBar's 8px track.
|
|
31
|
+
*/
|
|
32
|
+
export const TOUCH_MIN_FILL_PX = progressBar.progressView.minimumFillHeights * TRACK_HEIGHT_PX;
|
|
33
|
+
export function useProgressBarTouch(percentage, hasMarks) {
|
|
34
|
+
// The touch fill's duration comes from how far the value moved since the
|
|
35
|
+
// last value, the model change that UIKit measures. It holds until the next
|
|
36
|
+
// change, so a re-render with the same value keeps it.
|
|
37
|
+
const [motion, setMotion] = useState({
|
|
38
|
+
percentage,
|
|
39
|
+
change: 0,
|
|
40
|
+
flip: 0
|
|
41
|
+
});
|
|
42
|
+
const isNewValue = motion.percentage !== percentage;
|
|
43
|
+
// The share of the track the value moved (0–1). `flip` steps through three
|
|
44
|
+
// values on every change (see the fill's touch transform).
|
|
45
|
+
const change = isNewValue ? Math.abs(percentage - motion.percentage) / 100 : motion.change;
|
|
46
|
+
const flip = isNewValue ? (motion.flip + 1) % 3 : motion.flip;
|
|
47
|
+
if (isNewValue) {
|
|
48
|
+
setMotion({
|
|
49
|
+
percentage,
|
|
50
|
+
change,
|
|
51
|
+
flip
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Under a finger the fill draws at least TOUCH_MIN_FILL_PX long, so a mark
|
|
56
|
+
// it covers there sits on the fill. That length is a share of the track's
|
|
57
|
+
// width, which only layout knows. So the track is measured, but only under
|
|
58
|
+
// a finger and only when the bar has marks.
|
|
59
|
+
const {
|
|
60
|
+
isTouch
|
|
61
|
+
} = useTouchPresentation();
|
|
62
|
+
const watchesTrack = isTouch && hasMarks;
|
|
63
|
+
const trackRef = useRef(null);
|
|
64
|
+
const [trackWidth, setTrackWidth] = useState(0);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
const element = trackRef.current;
|
|
67
|
+
if (!watchesTrack || element == null) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// The shared observer; its first call (on registration) carries no
|
|
71
|
+
// contentRect, so that one reads the box.
|
|
72
|
+
return observeResize(element, entry => {
|
|
73
|
+
setTrackWidth(entry.contentRect?.width ?? element.getBoundingClientRect().width);
|
|
74
|
+
});
|
|
75
|
+
}, [watchesTrack]);
|
|
76
|
+
const drawnPercentage = watchesTrack && percentage > 0 && trackWidth > 0 ? Math.max(percentage, TOUCH_MIN_FILL_PX / trackWidth * 100) : percentage;
|
|
77
|
+
|
|
78
|
+
// CSS applies the theme's tempo to this duration.
|
|
79
|
+
const fillTrackMs = resolveMotion(null, progressBar, 'fillTrackMs');
|
|
80
|
+
const curve = resolveMotion(null, progressBar.curves.fill);
|
|
81
|
+
return {
|
|
82
|
+
fillVars: {
|
|
83
|
+
'--_progress-bar-move': `${Math.round(change * fillTrackMs * 1000) / 1000}ms`,
|
|
84
|
+
'--_progress-bar-curve': formatMotionRoleValue('curve', curve),
|
|
85
|
+
'--_progress-bar-flip': String(flip),
|
|
86
|
+
'--_progress-bar-min': `${TOUCH_MIN_FILL_PX}px`
|
|
87
|
+
},
|
|
88
|
+
trackRef,
|
|
89
|
+
drawnPercentage
|
|
90
|
+
};
|
|
91
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../src/Selector/Selector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAUZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAE5D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../src/Selector/Selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,8 @@ import { useIndicator } from "../Indicator/index.js";
|
|
|
27
27
|
import { Field, inputStatusBorderStyles, inputStatusHoverShadowStyles, inputWrapperStyles } from "../Field/index.js";
|
|
28
28
|
import { Divider } from "../Divider/index.js";
|
|
29
29
|
import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
|
|
30
|
+
import "../motion/reducedMotion.stylex.js";
|
|
31
|
+
import { reducedMotionFadeConsts } from "../motion/reducedMotion.stylex.js";
|
|
30
32
|
import { useKeepLayerOpenProps } from "../Layer/useLayer.js";
|
|
31
33
|
import { InternalInputClearButton } from "../Field/InputClearButton.js";
|
|
32
34
|
import { Spinner } from "../Spinner/index.js";
|
|
@@ -67,6 +69,14 @@ import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComp
|
|
|
67
69
|
import english from "../i18n/generated-english/Selector/Selector.generated.js";
|
|
68
70
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
69
71
|
registerEnglishFallback(english);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* A guess, confirmed by the open measure: more options than this overflow
|
|
75
|
+
* the popover listbox's 300 px block size even at 24 px rows, under the
|
|
76
|
+
* smallest default row (28 px). A wrong guess (a theme with shorter rows, a
|
|
77
|
+
* taller bottom sheet) costs only the measure's correction.
|
|
78
|
+
*/
|
|
79
|
+
const MOST_ROWS_THAT_FIT = 12;
|
|
70
80
|
const styles = {
|
|
71
81
|
triggerContainer: {
|
|
72
82
|
kVAEAm: "x1n2onr6",
|
|
@@ -750,7 +760,9 @@ export function Selector(props) {
|
|
|
750
760
|
return match == null ? -1 : Number(match[1]);
|
|
751
761
|
}, []);
|
|
752
762
|
// Re-measured when the option set changes; the count is the dependency.
|
|
753
|
-
|
|
763
|
+
// A list longer than the most rows that can fit cannot fit, so it starts
|
|
764
|
+
// as a scroll container and the open measure only confirms it.
|
|
765
|
+
const listboxHasOverflow = useMenuOverflow(listboxRef, filteredItems.length, surface.isOpen, filteredItems.length > MOST_ROWS_THAT_FIT);
|
|
754
766
|
const listboxPress = useMenuPress({
|
|
755
767
|
menuRef: listboxRef,
|
|
756
768
|
itemSelector: '[role="option"]:not([aria-disabled="true"])',
|
|
@@ -1083,16 +1095,16 @@ export function Selector(props) {
|
|
|
1083
1095
|
...listboxPress.menuProps,
|
|
1084
1096
|
...{
|
|
1085
1097
|
0: {
|
|
1086
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr
|
|
1098
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas x1j4r261"
|
|
1087
1099
|
},
|
|
1088
1100
|
2: {
|
|
1089
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr
|
|
1101
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas xge0x1e xish69e"
|
|
1090
1102
|
},
|
|
1091
1103
|
1: {
|
|
1092
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr
|
|
1104
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas x1j4r261 x2hg6jq"
|
|
1093
1105
|
},
|
|
1094
1106
|
3: {
|
|
1095
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr
|
|
1107
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas xge0x1e xish69e x2hg6jq"
|
|
1096
1108
|
}
|
|
1097
1109
|
}[!!listboxHasOverflow << 1 | !!(surface.activePresentation === 'popover' && variant === 'input') << 0],
|
|
1098
1110
|
children: renderOptions()
|
|
@@ -1114,28 +1126,28 @@ export function Selector(props) {
|
|
|
1114
1126
|
onKeyDown: surface.activePresentation === 'bottom-sheet' ? handleTriggerKeyDown : undefined,
|
|
1115
1127
|
...{
|
|
1116
1128
|
0: {
|
|
1117
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr
|
|
1129
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas x1j4r261"
|
|
1118
1130
|
},
|
|
1119
1131
|
4: {
|
|
1120
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr
|
|
1132
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas xge0x1e xish69e"
|
|
1121
1133
|
},
|
|
1122
1134
|
2: {
|
|
1123
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr
|
|
1135
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas x1j4r261 x2hg6jq"
|
|
1124
1136
|
},
|
|
1125
1137
|
6: {
|
|
1126
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr
|
|
1138
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1hc1fzr x19991ni xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas xge0x1e xish69e x2hg6jq"
|
|
1127
1139
|
},
|
|
1128
1140
|
1: {
|
|
1129
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj x1j4r261 xg01cxk
|
|
1141
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas x1j4r261 xg01cxk x13b0p5u"
|
|
1130
1142
|
},
|
|
1131
1143
|
5: {
|
|
1132
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj xge0x1e xish69e xg01cxk
|
|
1144
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x7a5moj xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas xge0x1e xish69e xg01cxk x13b0p5u"
|
|
1133
1145
|
},
|
|
1134
1146
|
3: {
|
|
1135
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k x1j4r261 x2hg6jq xg01cxk
|
|
1147
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas x1j4r261 x2hg6jq xg01cxk x13b0p5u"
|
|
1136
1148
|
},
|
|
1137
1149
|
7: {
|
|
1138
|
-
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k xge0x1e xish69e x2hg6jq xg01cxk
|
|
1150
|
+
className: "x9f619 xuyqlj2 x1odjw0f x1a2a7pz xu0wf1k xuedmi6 x7jh41u xuh6ohu xwji4o3 x15tucas xge0x1e xish69e x2hg6jq xg01cxk x13b0p5u"
|
|
1139
1151
|
}
|
|
1140
1152
|
}[!!listboxHasOverflow << 2 | !!(surface.activePresentation === 'popover' && variant === 'input') << 1 | !!(surface.activePresentation === 'popover' && !isPositioned) << 0],
|
|
1141
1153
|
children: renderOptions()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../src/Slider/Slider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../src/Slider/Slider.tsx"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAMhD,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAwB9C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,mBAAmB,CAAC,cAAc,CAAC,EACnC,UAAU,CACX;IACC,mDAAmD;IACnD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,8DAA8D;IAC9D,KAAK,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,8CAA8C;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC7C,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAChD,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAuf/D;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,WAAW,+BAwmClD;yBAxmCe,MAAM"}
|