@astryxdesign/core 0.7.6-canary.340cc7c → 0.7.6-canary.47dd87e

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 (45) hide show
  1. package/dist/DateInput/Wheel.d.ts.map +1 -1
  2. package/dist/DateInput/Wheel.js +11 -7
  3. package/dist/DateInput/usePointerDragScroll.d.ts +10 -1
  4. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  5. package/dist/DateInput/usePointerDragScroll.js +25 -9
  6. package/dist/DateInput/useScrollSettle.d.ts +3 -1
  7. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  8. package/dist/DateInput/useScrollSettle.js +37 -8
  9. package/dist/Link/Link.d.ts.map +1 -1
  10. package/dist/Link/Link.js +8 -3
  11. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  12. package/dist/RadioList/RadioListItem.js +6 -1
  13. package/dist/Switch/Switch.d.ts.map +1 -1
  14. package/dist/Switch/Switch.js +5 -2
  15. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  16. package/dist/Toast/ToastViewport.js +19 -3
  17. package/dist/gestures/GestureArena.d.ts +1 -1
  18. package/dist/gestures/GestureArena.d.ts.map +1 -1
  19. package/dist/gestures/GestureArena.js +2 -1
  20. package/dist/gestures/GestureHost.d.ts +2 -3
  21. package/dist/gestures/GestureHost.d.ts.map +1 -1
  22. package/dist/gestures/GestureHost.js +7 -7
  23. package/package.json +4 -4
  24. package/src/Chat/ChatDictationButton.spec.md +126 -81
  25. package/src/DateInput/DateInputTouch.test.tsx +44 -0
  26. package/src/DateInput/Wheel.tsx +9 -6
  27. package/src/DateInput/usePointerDragScroll.ts +34 -10
  28. package/src/DateInput/useScrollSettle.ts +38 -7
  29. package/src/Link/Link.spec.md +3 -2
  30. package/src/Link/Link.tsx +11 -0
  31. package/src/Link/__tests__/Link.truncation.a11y.chromium.spec.ts +58 -0
  32. package/src/OverflowList/OverflowList.spec.md +102 -55
  33. package/src/Pagination/Pagination.spec.md +158 -84
  34. package/src/RadioList/RadioList.spec.md +1 -1
  35. package/src/RadioList/RadioList.test.tsx +28 -0
  36. package/src/RadioList/RadioListItem.tsx +6 -0
  37. package/src/Switch/Switch.spec.md +1 -1
  38. package/src/Switch/Switch.test.tsx +21 -1
  39. package/src/Switch/Switch.tsx +5 -1
  40. package/src/TimeInput/TimeInput.spec.md +13 -13
  41. package/src/Toast/Toast.spec.md +2 -5
  42. package/src/Toast/ToastViewport.test.tsx +79 -0
  43. package/src/Toast/ToastViewport.tsx +21 -3
  44. package/src/gestures/GestureArena.ts +1 -1
  45. package/src/gestures/GestureHost.ts +6 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../src/DateInput/Wheel.tsx"],"names":[],"mappings":"AA8MA,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,GAChB,EAAE,UAAU,+BAgOZ;yBAtOe,KAAK"}
1
+ {"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../src/DateInput/Wheel.tsx"],"names":[],"mappings":"AA8MA,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,GAChB,EAAE,UAAU,+BAmOZ;yBAzOe,KAAK"}
@@ -12,7 +12,7 @@
12
12
  * rubber-banding, and the settle animation are the platform's; all this adds
13
13
  * is `scroll-snap-align: center` on each option, half a viewport of padding at
14
14
  * each end so the first and last option can reach the middle, and a commit
15
- * when the scrolling stops.
15
+ * when the scrolling stops and no finger or mouse drag still holds it.
16
16
  *
17
17
  * The falloff (rows fading and tipping away from the centre) is a CSS
18
18
  * scroll-driven animation on a `view()` timeline — the browser interpolates it
@@ -99,6 +99,15 @@ export function Wheel({
99
99
  // `selectedIndex` only catches up when the wheel settles.
100
100
  const [activeIndex, setActiveIndex] = useState(selectedIndex);
101
101
 
102
+ // A mouse cannot drag a scroll container, so without this the wheel ignores
103
+ // the one gesture its shape invites. Touch is untouched — it pans natively,
104
+ // with momentum this could not match. See usePointerDragScroll. The drag it
105
+ // holds is not rest either: the settle below waits for its release, as it
106
+ // waits for a finger's (useScrollSettle).
107
+ const {
108
+ isDraggingRef
109
+ } = usePointerDragScroll(scrollerRef, isActive);
110
+
102
111
  // Row height in px, read from layout rather than assumed, so a theme that
103
112
  // retunes --date-input-touch-wheel-item-size still lands on the right row.
104
113
  const itemBlockSize = useCallback(() => {
@@ -138,7 +147,7 @@ export function Wheel({
138
147
  if (option.value !== value) {
139
148
  onChange(option.value);
140
149
  }
141
- }, isActive);
150
+ }, isActive, isDraggingRef);
142
151
 
143
152
  // Park the committed row under the band whenever the wheel is shown, or the
144
153
  // value is changed from outside (the calendar scrolled to another month).
@@ -210,11 +219,6 @@ export function Wheel({
210
219
  useOwnScrollGesture(scrollerRef, 'all', {
211
220
  isEnabled: isActive
212
221
  });
213
-
214
- // A mouse cannot drag a scroll container, so without this the wheel ignores
215
- // the one gesture its shape invites. Touch is untouched — it pans natively,
216
- // with momentum this could not match. See usePointerDragScroll.
217
- usePointerDragScroll(scrollerRef, isActive);
218
222
  const moveBy = useCallback(delta => {
219
223
  const next = Math.min(options.length - 1, Math.max(0, activeIndex + delta));
220
224
  const option = options[next];
@@ -3,6 +3,15 @@
3
3
  * press of the button itself, and a wheel row is a click target.
4
4
  */
5
5
  export declare const DRAG_SLOP = 4;
6
+ /** What {@link usePointerDragScroll} reports back about the drag. */
7
+ export type PointerDragScrollState = {
8
+ /**
9
+ * True while a mouse drag holds the container: from the press that moved
10
+ * past {@link DRAG_SLOP} until its release. Pass it to `useScrollSettle`,
11
+ * which treats a held drag as it treats a finger still down.
12
+ */
13
+ isDraggingRef: React.RefObject<boolean>;
14
+ };
6
15
  /**
7
16
  * Let a mouse drag `ref`'s contents, on a container that already scrolls and
8
17
  * snaps for touch.
@@ -11,5 +20,5 @@ export declare const DRAG_SLOP = 4;
11
20
  * @param isEnabled - skip while the wheel is hidden; a hidden panel keeps its
12
21
  * layout box, so its listeners would otherwise still be live
13
22
  */
14
- export declare function usePointerDragScroll(ref: React.RefObject<HTMLElement | null>, isEnabled?: boolean): void;
23
+ export declare function usePointerDragScroll(ref: React.RefObject<HTMLElement | null>, isEnabled?: boolean): PointerDragScrollState;
15
24
  //# sourceMappingURL=usePointerDragScroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePointerDragScroll.d.ts","sourceRoot":"","sources":["../../src/DateInput/usePointerDragScroll.ts"],"names":[],"mappings":"AA+CA;;;GAGG;AACH,eAAO,MAAM,SAAS,IAAI,CAAC;AAK3B;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,SAAS,GAAE,OAAc,GACxB,IAAI,CA8IN"}
1
+ {"version":3,"file":"usePointerDragScroll.d.ts","sourceRoot":"","sources":["../../src/DateInput/usePointerDragScroll.ts"],"names":[],"mappings":"AAwDA;;;GAGG;AACH,eAAO,MAAM,SAAS,IAAI,CAAC;AAK3B,qEAAqE;AACrE,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACzC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,SAAS,GAAE,OAAc,GACxB,sBAAsB,CAmJxB"}
@@ -5,7 +5,8 @@
5
5
  /**
6
6
  * @file usePointerDragScroll.ts
7
7
  * @input A scroll container ref
8
- * @output Lets a mouse drag the container's contents the way a finger does
8
+ * @output Lets a mouse drag the container's contents the way a finger does,
9
+ * and reports while a drag holds it (`isDraggingRef`)
9
10
  * @position Internal behavior hook; consumed by Wheel.tsx
10
11
  *
11
12
  * ## Why this exists
@@ -38,11 +39,19 @@
38
39
  * then jumps a whole one. The drag therefore suspends snapping, and restores
39
40
  * it once the release has settled somewhere legal.
40
41
  *
42
+ * ## A held drag is not rest
43
+ *
44
+ * Every `scrollTop` the drag assigns is a programmatic scroll, and Chromium
45
+ * ends each one with a `scrollend` — 14 moves, 14 of them. A settle listening
46
+ * for `scrollend` alone would commit the row under the band at every step,
47
+ * with the button still down. `isDraggingRef` tells `useScrollSettle` the
48
+ * drag is still held, the way a touch that has not ended does.
49
+ *
41
50
  * SYNC: When modified, update:
42
51
  * - /packages/core/src/DateInput/Wheel.tsx
43
52
  * - /packages/core/src/DateInput/DateInputTouch.test.tsx
44
53
  */
45
- import { useEffect } from 'react';
54
+ import { useEffect, useRef } from 'react';
46
55
 
47
56
  /**
48
57
  * Movement below this stays a click. A mouse shifts a pixel or two under the
@@ -53,6 +62,8 @@ export const DRAG_SLOP = 4;
53
62
  /** How long to wait for a release's settle before restoring snapping. */
54
63
  const SETTLE_FALLBACK_MS = 260;
55
64
 
65
+ /** What {@link usePointerDragScroll} reports back about the drag. */
66
+
56
67
  /**
57
68
  * Let a mouse drag `ref`'s contents, on a container that already scrolls and
58
69
  * snaps for touch.
@@ -62,6 +73,7 @@ const SETTLE_FALLBACK_MS = 260;
62
73
  * layout box, so its listeners would otherwise still be live
63
74
  */
64
75
  export function usePointerDragScroll(ref, isEnabled = true) {
76
+ const isDraggingRef = useRef(false);
65
77
  useEffect(() => {
66
78
  const element = ref.current;
67
79
  if (element == null || !isEnabled) {
@@ -70,9 +82,9 @@ export function usePointerDragScroll(ref, isEnabled = true) {
70
82
  let pointerId = null;
71
83
  let originY = 0;
72
84
  let originScrollTop = 0;
73
- let isDragging = false;
85
+ isDraggingRef.current = false;
74
86
  // Survives from the drag's end to the click it produces, which is the
75
- // whole reason it is not just `isDragging`.
87
+ // whole reason it is not just `isDraggingRef`.
76
88
  let wasDragged = false;
77
89
  let restoreTimer;
78
90
  const restoreSnap = () => {
@@ -112,7 +124,7 @@ export function usePointerDragScroll(ref, isEnabled = true) {
112
124
  pointerId = event.pointerId;
113
125
  originY = event.clientY;
114
126
  originScrollTop = element.scrollTop;
115
- isDragging = false;
127
+ isDraggingRef.current = false;
116
128
  // Not captured yet: a press that never moves has to stay a click on the
117
129
  // row under it, and capturing here would retarget that click.
118
130
  };
@@ -121,11 +133,11 @@ export function usePointerDragScroll(ref, isEnabled = true) {
121
133
  return;
122
134
  }
123
135
  const delta = event.clientY - originY;
124
- if (!isDragging) {
136
+ if (!isDraggingRef.current) {
125
137
  if (Math.abs(delta) < DRAG_SLOP) {
126
138
  return;
127
139
  }
128
- isDragging = true;
140
+ isDraggingRef.current = true;
129
141
  element.setPointerCapture(event.pointerId);
130
142
  suspendSnap();
131
143
  // Dragging across rows would otherwise select their text, leaving the
@@ -141,10 +153,10 @@ export function usePointerDragScroll(ref, isEnabled = true) {
141
153
  return;
142
154
  }
143
155
  pointerId = null;
144
- if (!isDragging) {
156
+ if (!isDraggingRef.current) {
145
157
  return;
146
158
  }
147
- isDragging = false;
159
+ isDraggingRef.current = false;
148
160
  wasDragged = true;
149
161
  element.style.removeProperty('user-select');
150
162
  if (element.hasPointerCapture(event.pointerId)) {
@@ -200,9 +212,13 @@ export function usePointerDragScroll(ref, isEnabled = true) {
200
212
  element.removeEventListener('click', onClickCapture, {
201
213
  capture: true
202
214
  });
215
+ isDraggingRef.current = false;
203
216
  restoreSnap();
204
217
  };
205
218
  }, [ref, isEnabled]);
219
+ return {
220
+ isDraggingRef
221
+ };
206
222
  }
207
223
 
208
224
  /**
@@ -21,6 +21,8 @@ export type ScrollSettleState = {
21
21
  * @param ref - the scroll container
22
22
  * @param onSettle - called with the settled element; may change every render
23
23
  * @param isEnabled - skip attaching while false (e.g. a hidden panel)
24
+ * @param isHeldRef - true while a mouse drag holds the scroller
25
+ * (usePointerDragScroll's `isDraggingRef`): not rest, however quiet
24
26
  */
25
- export declare function useScrollSettle(ref: React.RefObject<HTMLElement | null>, onSettle: (element: HTMLElement) => void, isEnabled?: boolean): ScrollSettleState;
27
+ export declare function useScrollSettle(ref: React.RefObject<HTMLElement | null>, onSettle: (element: HTMLElement) => void, isEnabled?: boolean, isHeldRef?: React.RefObject<boolean>): ScrollSettleState;
26
28
  //# sourceMappingURL=useScrollSettle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollSettle.d.ts","sourceRoot":"","sources":["../../src/DateInput/useScrollSettle.ts"],"names":[],"mappings":"AAsDA;;;;;GAKG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,EACxC,SAAS,GAAE,OAAc,GACxB,iBAAiB,CA+EnB"}
1
+ {"version":3,"file":"useScrollSettle.d.ts","sourceRoot":"","sources":["../../src/DateInput/useScrollSettle.ts"],"names":[],"mappings":"AA0DA;;;;;GAKG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,EACxC,SAAS,GAAE,OAAc,EACzB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GACnC,iBAAiB,CAuGnB"}
@@ -4,7 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file useScrollSettle.ts
7
- * @input A scroll container ref and a settle callback
7
+ * @input A scroll container ref, a settle callback, and optionally whether a
8
+ * mouse drag holds it (usePointerDragScroll's `isDraggingRef`)
8
9
  * @output Calls back once, after scrolling (including momentum) stops
9
10
  * @position Internal behavior hook; consumed by Wheel.tsx and MonthScroller.tsx
10
11
  *
@@ -27,7 +28,10 @@
27
28
  * moment without lifting and the scroll events stop, so the timer fires
28
29
  * and the value commits to whatever is under the band. Chrome hides this
29
30
  * because it has `scrollend`, which does not fire until the touch is
30
- * released.
31
+ * released. A mouse drag (usePointerDragScroll) is held the same way, and
32
+ * there Chrome gives no cover at all: each `scrollTop` the drag assigns
33
+ * ends in its own `scrollend`, so the settle waits for the drag's
34
+ * `pointerup` as it waits for `touchend`.
31
35
  *
32
36
  * 2. **Momentum is not rest either.** iOS momentum runs on the UI thread and
33
37
  * keeps going for a second or more after the finger is gone, and its scroll
@@ -41,7 +45,7 @@
41
45
  * underneath, and the fresh scroll events start the next premature settle —
42
46
  * each one landing a row further along, which is why the month climbed.
43
47
  *
44
- * So: the settle waits for the touch to end, and then for a quiet period
48
+ * So: the settle waits for the touch or the mouse drag to end, and then for a quiet period
45
49
  * measured from the LAST scroll event, which is what makes it outlast
46
50
  * momentum however long it runs. {@link useScrollSettle} also reports whether
47
51
  * the scroller is at rest, so a caller can refuse to reposition one that is
@@ -67,8 +71,10 @@ export const SCROLL_QUIET_MS = 220;
67
71
  * @param ref - the scroll container
68
72
  * @param onSettle - called with the settled element; may change every render
69
73
  * @param isEnabled - skip attaching while false (e.g. a hidden panel)
74
+ * @param isHeldRef - true while a mouse drag holds the scroller
75
+ * (usePointerDragScroll's `isDraggingRef`): not rest, however quiet
70
76
  */
71
- export function useScrollSettle(ref, onSettle, isEnabled = true) {
77
+ export function useScrollSettle(ref, onSettle, isEnabled = true, isHeldRef) {
72
78
  // The callback closes over render-fresh values (the option list, the current
73
79
  // value); keeping it in a ref means the listeners attach once instead of
74
80
  // re-attaching mid-scroll, which would drop an in-flight settle.
@@ -84,10 +90,17 @@ export function useScrollSettle(ref, onSettle, isEnabled = true) {
84
90
  let timer;
85
91
  let hasSettled = false;
86
92
  let isTouching = false;
93
+ // Whether a mouse drag held this gesture, so its release re-arms the
94
+ // settle; a plain click does not.
95
+ let wasHeld = false;
87
96
  const settle = () => {
88
- // A finger still on the glass is not rest, however quiet the scroller
89
- // has gone. The release re-arms this.
90
- if (hasSettled || isTouching) {
97
+ // A finger still on the glass, or a mouse button still holding a drag,
98
+ // is not rest, however quiet the scroller has gone. The release re-arms
99
+ // this.
100
+ if (isHeldRef?.current) {
101
+ wasHeld = true;
102
+ }
103
+ if (hasSettled || isTouching || isHeldRef?.current) {
91
104
  return;
92
105
  }
93
106
  hasSettled = true;
@@ -106,6 +119,9 @@ export function useScrollSettle(ref, onSettle, isEnabled = true) {
106
119
  // the last of it however long it runs.
107
120
  hasSettled = false;
108
121
  isAtRestRef.current = false;
122
+ if (isHeldRef?.current) {
123
+ wasHeld = true;
124
+ }
109
125
  arm();
110
126
  };
111
127
  const onTouchStart = () => {
@@ -121,6 +137,15 @@ export function useScrollSettle(ref, onSettle, isEnabled = true) {
121
137
  // produces no further scroll events at all.
122
138
  arm();
123
139
  };
140
+ const onPointerEnd = () => {
141
+ // The drag's release: its glide to the nearest row re-arms this on its
142
+ // own, and the timer covers a release already on a row, which scrolls
143
+ // no further.
144
+ if (wasHeld) {
145
+ wasHeld = false;
146
+ arm();
147
+ }
148
+ };
124
149
  element.addEventListener('scroll', onScroll, {
125
150
  passive: true
126
151
  });
@@ -134,6 +159,8 @@ export function useScrollSettle(ref, onSettle, isEnabled = true) {
134
159
  element.addEventListener('touchcancel', onTouchEnd, {
135
160
  passive: true
136
161
  });
162
+ element.addEventListener('pointerup', onPointerEnd);
163
+ element.addEventListener('pointercancel', onPointerEnd);
137
164
  return () => {
138
165
  clearTimeout(timer);
139
166
  element.removeEventListener('scroll', onScroll);
@@ -141,8 +168,10 @@ export function useScrollSettle(ref, onSettle, isEnabled = true) {
141
168
  element.removeEventListener('touchstart', onTouchStart);
142
169
  element.removeEventListener('touchend', onTouchEnd);
143
170
  element.removeEventListener('touchcancel', onTouchEnd);
171
+ element.removeEventListener('pointerup', onPointerEnd);
172
+ element.removeEventListener('pointercancel', onPointerEnd);
144
173
  };
145
- }, [ref, isEnabled]);
174
+ }, [ref, isEnabled, isHeldRef]);
146
175
  return {
147
176
  isAtRestRef
148
177
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link/Link.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAsG/C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAC1C,iBAAiB,GAAG,iBAAiB,CACtC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACvD;;;;;OAKG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC;IACnD;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EACF,KAAK,EACL,IAAI,EACJ,YAAoB,EACpB,UAAkB,EAClB,cAAsB,EACtB,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,eAAe,EACvB,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,IAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAgB,EAChB,OAAkB,EAClB,QAAY,EACZ,QAAQ,EACR,GAAG,EAAE,YAAY,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAoJX;yBA7Ke,IAAI"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link/Link.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AA8G/C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAC1C,iBAAiB,GAAG,iBAAiB,CACtC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACvD;;;;;OAKG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC;IACnD;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EACF,KAAK,EACL,IAAI,EACJ,YAAoB,EACpB,UAAkB,EAClB,cAAsB,EACtB,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,eAAe,EACvB,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,IAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAgB,EAChB,OAAkB,EAClB,QAAY,EACZ,QAAQ,EACR,GAAG,EAAE,YAAY,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAuJX;yBAhLe,IAAI"}
package/dist/Link/Link.js CHANGED
@@ -53,6 +53,11 @@ const styles = {
53
53
  kAMwcw: "xlr8y92",
54
54
  $$css: true
55
55
  },
56
+ truncating: {
57
+ ks0D6T: "x193iq5w",
58
+ k7Eaqz: "xeuugli",
59
+ $$css: true
60
+ },
56
61
  buttonReset: {
57
62
  kWkggS: "xjbqb8w",
58
63
  ksu8eU: "xng3xce",
@@ -206,7 +211,7 @@ export function Link({
206
211
  }), focusOutlineProps.focusVisible(styles.base, styles.buttonReset, linkColorStyles[color],
207
212
  // The system's pressed overlay behind the text; the hover stays the
208
213
  // colour change above, so a press is the one background it paints.
209
- !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
214
+ !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, maxLines > 0 && styles.truncating, xstyle), className, style),
210
215
  ...props,
211
216
  ...(isDisabled ? disabledInteractionProps(props.onKeyDown) : null),
212
217
  children: sharedContent
@@ -226,7 +231,7 @@ export function Link({
226
231
  tabIndex: 0,
227
232
  ...mergeProps(themeProps('link', {
228
233
  color
229
- }), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, styles.disabled, xstyle), className, style),
234
+ }), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, styles.disabled, maxLines > 0 && styles.truncating, xstyle), className, style),
230
235
  ...props,
231
236
  ...disabledInteractionProps(props.onKeyDown),
232
237
  children: sharedContent
@@ -244,7 +249,7 @@ export function Link({
244
249
  tabIndex: isDisabled ? -1 : undefined,
245
250
  ...mergeProps(themeProps('link', {
246
251
  color
247
- }), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
252
+ }), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, maxLines > 0 && styles.truncating, xstyle), className, style),
248
253
  ...props,
249
254
  children: sharedContent
250
255
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RadioListItem.d.ts","sourceRoot":"","sources":["../../src/RadioList/RadioListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AA0I7C,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EAAE,cAAsB,EAClC,YAAY,EACZ,UAAU,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,GAAG,IAAI,EACR,EAAE,kBAAkB,qBAqKpB;yBApLe,aAAa"}
1
+ {"version":3,"file":"RadioListItem.d.ts","sourceRoot":"","sources":["../../src/RadioList/RadioListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAAqB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AA0I7C,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EAAE,cAAsB,EAClC,YAAY,EACZ,UAAU,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,GAAG,IAAI,EACR,EAAE,kBAAkB,qBA2KpB;yBA1Le,aAAa"}
@@ -198,7 +198,12 @@ export function RadioListItem({
198
198
  // from submission, matching a natively disabled control.
199
199
  ,
200
200
  form: keepsFocusableForMessage ? '' : undefined,
201
- required: context.isRequired,
201
+ required: context.isRequired
202
+ // Chromium reports an unanswered native-required radio invalid before
203
+ // any interaction; the invalid state follows the group's status
204
+ // instead (RadioList FR6).
205
+ ,
206
+ "aria-invalid": context.isRequired ? context.status?.type === 'error' : undefined,
202
207
  onChange: () => {
203
208
  if (isDisabled) {
204
209
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/Switch/Switch.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/Switch/Switch.tsx"],"names":[],"mappings":"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"}
@@ -401,8 +401,11 @@ export function Switch({
401
401
  // than the field wrapper via `...rest`.
402
402
  ,
403
403
  "aria-labelledby": ariaLabelledByProp,
404
- "aria-describedby": ariaDescribedBy,
405
- "aria-invalid": status?.type === 'error' ? true : undefined,
404
+ "aria-describedby": ariaDescribedBy
405
+ // Chromium reports an unchecked native-required checkbox invalid before
406
+ // any interaction; the invalid state follows status instead.
407
+ ,
408
+ "aria-invalid": status?.type === 'error' ? true : isRequired ? false : undefined,
406
409
  "aria-busy": isBusy || undefined,
407
410
  ...stylex.props(styles.input, rtlStyles.centerInline('-50%'), styles.inputCoarse, inputSizeStyles[size], isDisabled && styles.inputDisabled, isBusy && styles.inputBusy, switchFocusInput)
408
411
  }), /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ToastViewport.d.ts","sourceRoot":"","sources":["../../src/Toast/ToastViewport.tsx"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAa,aAAa,EAAqB,MAAM,SAAS,CAAC;AAG3E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAiItD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACtE;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAyGD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAsB,EACtB,UAAc,EACd,KAAK,EACL,UAAU,EACV,UAAiB,EACjB,QAAQ,GACT,EAAE,kBAAkB,+BAigBpB;yBAxgBe,aAAa"}
1
+ {"version":3,"file":"ToastViewport.d.ts","sourceRoot":"","sources":["../../src/Toast/ToastViewport.tsx"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAa,aAAa,EAAqB,MAAM,SAAS,CAAC;AAG3E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAiItD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACtE;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAyGD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAsB,EACtB,UAAc,EACd,KAAK,EACL,UAAU,EACV,UAAiB,EACjB,QAAQ,GACT,EAAE,kBAAkB,+BAmhBpB;yBA1hBe,aAAa"}
@@ -243,10 +243,13 @@ export function ToastViewport({
243
243
  // Toasts dispatched since the last commit, by id: a dismiss() called
244
244
  // before the toast first renders still finds it (and its onHide).
245
245
  const pendingEntriesRef = useRef(new Map());
246
- // The element that was focused before the user jumped into the viewport
247
- // (via F6). Used to restore focus once all toasts are dismissed so focus
248
- // never falls to <body>.
246
+ // The element that was focused before focus entered the viewport, by F6,
247
+ // Tab or a click. Used to restore focus once all toasts are dismissed so
248
+ // focus never falls to <body> (FR10).
249
249
  const prevFocusRef = useRef(null);
250
+ // The element focus last reached inside the viewport's React tree,
251
+ // portaled toast content included.
252
+ const lastFocusedWithinRef = useRef(null);
250
253
  // When a toast is dismissed while focus lives inside it, we need to move
251
254
  // focus to a sensible neighbor after that toast unmounts. This holds the
252
255
  // id of the toast whose removal should trigger a focus handoff.
@@ -626,6 +629,19 @@ export function ToastViewport({
626
629
  const isReversed = position === 'topEnd' || position === 'topStart';
627
630
  const viewport = /*#__PURE__*/_jsx("div", {
628
631
  ref: viewportRef,
632
+ onFocus: event => {
633
+ // Focus entering from outside, however it came, is where a dismissal
634
+ // of the last toast returns it. React also delivers focus inside a
635
+ // toast's portaled content here, so focus coming back from the last
636
+ // element focused within is not an entry, though it sits outside
637
+ // this element.
638
+ const from = event.relatedTarget;
639
+ const fromWithin = from === lastFocusedWithinRef.current || from instanceof Node && event.currentTarget.contains(from);
640
+ lastFocusedWithinRef.current = event.target;
641
+ if (from instanceof HTMLElement && !fromWithin) {
642
+ prevFocusRef.current = from;
643
+ }
644
+ },
629
645
  role: hasToasts ? 'region' : undefined,
630
646
  "aria-label": hasToasts ? t('@astryx.toast.viewport') : undefined,
631
647
  tabIndex: hasToasts ? -1 : undefined
@@ -138,7 +138,6 @@ export declare class GestureArena {
138
138
  setTimer(recognizer: GestureRecognizer, deadline: number, callback: () => void): void;
139
139
  /** @internal */
140
140
  clearTimer(recognizer: GestureRecognizer): void;
141
- /** Cancel an active recognizer, or fail a possible one. */
142
141
  /**
143
142
  * Runs `body`, code outside input that stops recognizers (an Effect that
144
143
  * turns one off or detaches it), without resolving what those stops
@@ -151,6 +150,7 @@ export declare class GestureArena {
151
150
  deferResolution(body: () => void): void;
152
151
  /** The last event's time, or now before any event. */
153
152
  private lastEventTime;
153
+ /** Cancel an active recognizer, or fail a possible one. */
154
154
  stop(recognizer: GestureRecognizer): void;
155
155
  private attemptRecognition;
156
156
  /** Whether `winner` being recognized prevents `other`. */
@@ -1 +1 @@
1
- {"version":3,"file":"GestureArena.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureArena.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GestureArena.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureArena.ts"],"names":[],"mappings":"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"}
@@ -405,7 +405,6 @@ export class GestureArena {
405
405
  }
406
406
  }
407
407
 
408
- /** Cancel an active recognizer, or fail a possible one. */
409
408
  /**
410
409
  * Runs `body`, code outside input that stops recognizers (an Effect that
411
410
  * turns one off or detaches it), without resolving what those stops
@@ -435,6 +434,8 @@ export class GestureArena {
435
434
  lastEventTime() {
436
435
  return Number.isFinite(this.latestTime) ? this.latestTime : this.clock.now();
437
436
  }
437
+
438
+ /** Cancel an active recognizer, or fail a possible one. */
438
439
  stop(recognizer) {
439
440
  // A cancel from code between events happens at the last event's time:
440
441
  // wall time would run deadlines ahead of input still queued (FR16).
@@ -59,7 +59,6 @@ export declare class GestureHost {
59
59
  private readonly touchIds;
60
60
  /** Touch.identifier → the element the finger landed on. */
61
61
  private readonly touchTargets;
62
- /** Finger targets with listeners of their own, and how many fingers each. */
63
62
  /**
64
63
  * Finger targets with listeners of their own: how many fingers each, and
65
64
  * how many of those a recognizer could claim while they move (only those
@@ -102,19 +101,19 @@ export declare class GestureHost {
102
101
  private readonly claimedLifts;
103
102
  /** Fingers still waiting for their pointerdown, by arena id. */
104
103
  private readonly unpairedTouches;
105
- /** The last position fed per contact, so one channel's echo is dropped. */
106
104
  /** The elements each held contact turned selection off on. */
107
105
  private readonly heldSelectionBy;
108
106
  private readonly isPrimaryPointerCoarse;
109
107
  private readonly coarseQuery;
110
108
  private isWatchingPointer;
111
109
  private readonly onPointerKindChange;
110
+ /** The last position fed per contact, so one channel's echo is dropped. */
112
111
  private readonly lastFed;
113
112
  /** When a finger was last down or lifted, and where it landed. */
114
113
  private lastTouch;
115
- /** The last scroll a finger drove, and when. */
116
114
  /** Scrollers a recognizer is scrolling itself this frame (ownScroll). */
117
115
  private readonly ownedScrolls;
116
+ /** The last scroll a finger drove, and when. */
118
117
  private lastScroll;
119
118
  private nextId;
120
119
  private isInstalled;
@@ -1 +1 @@
1
- {"version":3,"file":"GestureHost.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GestureHost.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureHost.ts"],"names":[],"mappings":"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"}
@@ -120,10 +120,6 @@ function claimsWhileMoving(recognizer) {
120
120
  return recognizer.acceptsTouchInput && recognizer.kind !== 'tap';
121
121
  }
122
122
 
123
- /**
124
- * Run `task` in the next frame, before it paints: a read there styles what
125
- * the frame must style anyway, and its writes are what the frame shows.
126
- */
127
123
  /**
128
124
  * A CSS-wide keyword, which names no touch-action of its own: the value in
129
125
  * force resolves it (`initial` and `unset` to `auto`, `inherit` to the
@@ -133,6 +129,11 @@ function isCssWideKeyword(value) {
133
129
  return CSS_WIDE_KEYWORDS.has(value.trim().toLowerCase());
134
130
  }
135
131
  const CSS_WIDE_KEYWORDS = new Set(['initial', 'inherit', 'unset', 'revert', 'revert-layer']);
132
+
133
+ /**
134
+ * Run `task` in the next frame, before it paints: a read there styles what
135
+ * the frame must style anyway, and its writes are what the frame shows.
136
+ */
136
137
  function inNextFrame(view, task) {
137
138
  if (view != null && typeof view.requestAnimationFrame === 'function') {
138
139
  view.requestAnimationFrame(task);
@@ -193,7 +194,6 @@ export class GestureHost {
193
194
  touchIds = new Map();
194
195
  /** Touch.identifier → the element the finger landed on. */
195
196
  touchTargets = new Map();
196
- /** Finger targets with listeners of their own, and how many fingers each. */
197
197
  /**
198
198
  * Finger targets with listeners of their own: how many fingers each, and
199
199
  * how many of those a recognizer could claim while they move (only those
@@ -236,17 +236,17 @@ export class GestureHost {
236
236
  claimedLifts = [];
237
237
  /** Fingers still waiting for their pointerdown, by arena id. */
238
238
  unpairedTouches = new Map();
239
- /** The last position fed per contact, so one channel's echo is dropped. */
240
239
  /** The elements each held contact turned selection off on. */
241
240
  heldSelectionBy = new Map();
242
241
  isWatchingPointer = false;
243
242
  onPointerKindChange = () => this.refreshAll();
243
+ /** The last position fed per contact, so one channel's echo is dropped. */
244
244
  lastFed = new Map();
245
245
  /** When a finger was last down or lifted, and where it landed. */
246
246
  lastTouch = null;
247
- /** The last scroll a finger drove, and when. */
248
247
  /** Scrollers a recognizer is scrolling itself this frame (ownScroll). */
249
248
  ownedScrolls = new Set();
249
+ /** The last scroll a finger drove, and when. */
250
250
  lastScroll = null;
251
251
  nextId = 1;
252
252
  isInstalled = false;