Repository navigation
feat(Toast): the swipe follows iOS notification banners under a finger #8121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
vjeux
wants to merge
1,658
commits into
meta:main
Choose a base branch
from
vjeux:uikit/c25-toast-swipe
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+31,241
−659
Draft
Changes from all commits
Commits
Show all changes
1658 commits
Select commit
Hold shift + click to select a range
029e4fd
Merge #8589 (a watcher needs no manageStyle: false) into the host line
cixzhang cd49a87
Merge #8336 (#8315 4e19448b, #8589's README) into the arena fixes
cixzhang 54b35c5
test(gestures): a scroll takes an unclaimed touch from 10 px of trave…
vjeux 32d2acc
Merge #8320 (cixzhang's cd49a87223: #8446 f405e7fa31, #8589's README)…
vjeux af0a0e0
Merge #8293 (cixzhang's #8320 cd49a87223) into #8356
vjeux 3ee997f
Merge #8356 (cixzhang's #8320 cd49a87223) into #8358
vjeux 559ab88
Merge #8358 (cixzhang's #8320 cd49a87223) into #8360
vjeux 702529b
fix(core): the unmount's landing leaves the detached node with nothin…
cixzhang fda011c
Merge #8521 (the unmount's landing leaves nothing running) into pseud…
cixzhang 8715133
docs(interaction): the busy verdict's docs name the thin-window rule
cixzhang 15e8c24
Merge n8045 (the busy docs name the thin-window rule) into n8548
cixzhang bc90acb
Merge n8548 (the busy docs name the thin-window rule) into n8549
cixzhang 7aba599
Merge n8549 (the busy docs name the thin-window rule) into n8446b
cixzhang 9f6748f
fix(core): a waiting move lands on the latest node detached, and disp…
cixzhang a103c43
Merge #8521 (the latest detached node) into pseudo-element support
cixzhang 07b3383
fix(core): a press another hook's isEnabled sync resolves ends after …
cixzhang 4012259
fix(interaction): the compositor record refuses a page that opened wh…
cixzhang 2a6b934
Merge n8548 (the compositor record refuses a page opened while it ran…
cixzhang 9f65026
Merge n8549 (the compositor record refuses a page opened while it ran…
cixzhang 2ec969c
fix(core): a Reduce Motion call naming the opacity a waiting dip retu…
vjeux 298458e
Merge #8076 (2ec969c6: a Reduce Motion call naming the opacity a wait…
vjeux 8a1f2ca
test(gestures): the isEnabled-sync press test names its refs as refs
vjeux 1ddea08
fix(interaction): a traced wait on a missing element reports it missing
cixzhang 213e86e
docs(motion): the Reduce Motion planner's fade length is no role, the…
vjeux 6ef5186
perf(core): a promotion reads no style in its own task
vjeux c440ef6
test(gestures): a recognizer waiting on one a hook's Effect stops rep…
vjeux 70c70e4
Merge #8061 (4c3df941: a screen-edge pan takes the axis across its ed…
vjeux 7088243
Merge #8076 (70c70e41: her #8061 4c3df941, a screen-edge pan claims a…
vjeux 67ff01b
fix(gestures): what a hook's Effect stop unblocks resolves just after it
vjeux 6f4173c
test(core): the mid-dip unmount test reads the element after the defe…
cixzhang 915f9d9
Merge #8521 (the mid-dip unmount test awaits the microtask) into pseu…
cixzhang d2c3c78
feat(gestures): an action group keeps working under a fine pointer, w…
cixzhang cc795a1
Merge d2c3c788f0 (#8072 (an action group under a fine pointer)) as a …
cixzhang 266fa0a
Merge #8072 (d2c3c788: the action-group host exception) and #8446 (1d…
cixzhang 8b0cb36
Merge #8309 (cc795a1e: #8072's action-group fine-pointer exception) a…
cixzhang a490ba1
Merge 1ddea08f3e (#8446 (the harness line's latest)) as a dependency
cixzhang 4ec2b1a
Merge #8315 (8b0cb36f: #8309 cc795a1e, the action-group exception) in…
cixzhang 6f73653
Merge #8315 (8b0cb36f: #8309 cc795a1e) into the gesture watcher
cixzhang 453149e
Merge #8589 (with #8315 8b0cb36f) into the host line
cixzhang 03d8794
Merge 266fa0af50 (#8076 266fa0af (vjeux 70c70e41, #8072 d2c3c788, #84…
cixzhang ecb82db
Merge #8336 (#8315 8b0cb36f: #8309's press delivery after an isEnable…
cixzhang 8d59b3f
Merge #8309 (03d87941: #8076 266fa0af) as a dependency
cixzhang dbcfd32
Merge #8315 (8d59b3f3: #8309 03d87941, #8076 266fa0af) into the gestu…
cixzhang cc0f99a
Merge #8315 (8d59b3f3) into the host line
cixzhang a4f63a8
Merge #8589 (#8315 8d59b3f3) into the host line
cixzhang 8415bf3
Merge #8336 (#8315 8d59b3f3) into the arena fixes
cixzhang d5958e0
test(gestures): useGestureRecognizer attaches an action group the hos…
vjeux ce103c7
feat(gestures): useGestureRecognizer takes actionGroup
vjeux 25b468c
Merge main (2c4f1728: #8056 merged) into play-curves
cixzhang 182ef2e
Merge #8521 (main with #8056) into pseudo-element support
cixzhang 9e06328
fix(core): the host forgets a finger scroll in progress when it stops…
cixzhang da33639
Merge #8336 (the host forgets a finger scroll when it stops listening…
cixzhang 2e60799
fix(gestures): under inputMode 'pointer-events' a finger is tracked o…
cixzhang a13314f
fix(core): a touch only watchers follow gets a passive touchend
cixzhang 557f1b5
Merge 2e60799487 (#8072) as a dependency
cixzhang 793c8db
build(lab): Lab reaches core only through core's exports, with no sec…
cixzhang 6586b84
Merge #8589 (a touch only watchers follow gets a passive touchend) in…
cixzhang 6dfa218
Merge #8336 (#8589's passive touchend for watchers) into the arena fixes
cixzhang 056aae8
Merge 793c8dbd (#8076: Lab reaches core only through core's exports) …
cixzhang b9c3b0b
Merge #8522 (182ef2e9: the animator line carrying main with #8056 lan…
cixzhang 27eeeb8
fix(core): an unmount leaves no will-change read timer on the node it…
cixzhang ee75f00
Merge #8076 (27eeeb8d: main with #8056 merged through her #8522, her …
vjeux 07920f1
Merge #8076 (27eeeb8db4: main with #8056, the Lab route through core'…
vjeux 5d56624
Merge 27eeeb8d (#8076: carries main with #8056 landed, via #8522 182e…
cixzhang c9e274c
Merge #8309 (dd1b1244: #8076 27eeeb8d with #8056, and #8072 2e607994)…
cixzhang de35a73
Merge #8315 (c1776597: #8309 dd1b1244, with #8056 via #8076) into the…
cixzhang 8ada401
test(core): the detached-mid-dip cases read the presented start's inl…
vjeux 366155f
Merge #8589 (#8315 c1776597: #8309 dd1b1244, with #8056 via #8076) in…
cixzhang 3543c87
Merge #8336 (#8315 c1776597) into the arena fixes
cixzhang f3d1b16
Merge #8320 (cixzhang's 2b66ca5ab5: #8076 27eeeb8db4 with main's #805…
vjeux d156e38
docs(core): drawnTranslate's note says nothing about what the inline …
vjeux 15e4de4
Merge #8293 (#8076 27eeeb8db4) into #8356
vjeux 0cabb08
Merge #8358 (#8076 27eeeb8db4) into #8360
vjeux ed0ba77
fix(gestures): the action-group press listens through the shared inpu…
vjeux 09a5bc0
Merge #8356 (#8076 27eeeb8db4; the action-group press on the input st…
vjeux 64056d7
fix(gestures): the action-group press leaves its click to the click g…
vjeux bec2283
fix(gestures): a gesture that cancels itself on a finger's move keeps…
vjeux 35b2a9b
test(gestures): a scroll-edge pan cancels its first moves while every…
vjeux 2ea3544
test(gestures): browser proof that a scroll-edge pull's first move is…
vjeux 90c64e8
feat(gestures): a scroll-edge pan holds its finger from the first mov…
vjeux dd975ae
test(gestures): real-touch states for AST-094 FR18–FR22: 9 and 10 px …
cixzhang a3e07d8
fix(core): the gesture host measures a screen-edge pan's view, so an …
cixzhang 9adbe2d
fix(gestures): a strip authored at the edge region is the edge zone a…
cixzhang 9804fa8
Merge a3e07d88 (#8076: the host's arena environment measures a view) …
cixzhang 1a17882
Merge 9adbe2d8 (#8061: an edge strip within half a pixel of its band …
cixzhang b54cad3
test(gestures): the real-touch edge strip is the band's own 40.2 px, …
cixzhang 9800eb5
fix(gestures): a scroll takes a finger only after its 10 px of travel…
cixzhang 094f554
docs(gestures): the README's touch-action table qualifies the edge pa…
cixzhang e9aaf58
Merge 9800eb54 (#8072: a scroll takes a finger after 10 px; pointer-e…
cixzhang e931f3e
Merge #8309 (c3375f65: #8076 a3e07d88, #8061 9adbe2d8, #8072 9800eb54…
cixzhang 68fdef8
Merge #8315 (8ae65405: #8309 c3375f65 with #8076 a3e07d88, #8061 9adb…
cixzhang 5c59af1
fix(gestures): a finger on an action group under a fine pointer reach…
cixzhang 3657d10
fix(core): with only watchers attached, the host's document listeners…
cixzhang 3be45e7
Merge #8589 (#8315 8ae65405, and its passive-only listeners for watch…
cixzhang aa61f9f
Merge #8336 (#8315 8ae65405; vjeux's scroll-edge hold; #8589's passiv…
cixzhang 81e52e3
Merge 5c59af12 (#8072: a finger on an action group under a fine point…
cixzhang 6a1e493
Merge #8309 (2d4b4bdc: #8072 5c59af12, an action group's finger under…
cixzhang 12c0660
Merge #8315 (10abed58: #8309 2d4b4bdc, #8072 5c59af12: an action grou…
cixzhang 5851f29
Merge #8589 (#8315 10abed58) into the host line
cixzhang 6951829
Merge #8336 (#8315 10abed58) into the arena fixes
cixzhang cba0ad9
Merge main (a00afee502: #8521 merged) into the experimental touch layer
vjeux f5ac3e8
Merge #8076 (cba0ad93f6: main with #8521 merged) into the presented s…
vjeux 050fb02
Merge #8076 (cba0ad93f6: a3e07d889b's edge-zone measuring, main with …
vjeux b3b718c
Merge #8270 (#8076 cba0ad93f6) into #8309
vjeux 12c4d58
Merge #8309 (#8076 cba0ad93f6) into #8315
vjeux 0704b4b
Merge #8315 (#8076 cba0ad93f6) into #8336
vjeux d71becb
Merge #8336 (#8076 cba0ad93f6) into #8320
vjeux e5cde9d
Merge #8320 (#8076 cba0ad93f6: a3e07d889b and main with #8521; her #8…
vjeux 5ee03f2
Merge #8340 (f5ac3e8904: no frame shows where a touch motion is going…
vjeux 407099c
docs(core): drawnTranslate's note wraps at the file's width again
vjeux 0dccda1
Merge #8293 (#8076 cba0ad93f6; #8340 f5ac3e8904) into #8356
vjeux 2a3f1a9
Merge #8356 (#8076 cba0ad93f6; #8340 f5ac3e8904) into #8358
vjeux 7213230
Merge #8358 (#8076 cba0ad93f6; #8340 f5ac3e8904) into #8360
vjeux a90ec2c
test(gestures): a watcher follows a touch the browser scrolls with to…
cixzhang d62fa21
fix(gestures): a scroll-edge pan holds a lone finger only, so a pinch…
cixzhang 24c7477
Merge #8589 (a watcher's real-touch browser test) into the host line
cixzhang 6c20ff0
Merge #8336 (a scroll-edge pan holds a lone finger only; #8589's watc…
cixzhang 0de626e
test(gestures): the 41 px edge-band case skips WebKit like the file's…
cixzhang efdd916
Merge #8309 (c5b1e894: the 41 px edge-band case skips WebKit) as a de…
cixzhang ae6f441
Merge #8315 (2850d32b: #8309 c5b1e894, a WebKit test skip) into the g…
cixzhang 94f3c0a
Merge #8589 (#8315 2850d32b) into the host line
cixzhang d3ba9fe
Merge #8336 (#8315 2850d32b) into the arena fixes
cixzhang b23c845
Merge #8270 (#8076 cba0ad93f6) into #8309
vjeux 27ac6ef
Merge #8315 (#8076 cba0ad93f6) into #8336
vjeux f2d4d0b
Merge #8309 (#8076 cba0ad93f6) into #8315
vjeux 406416e
Merge #8336 (#8076 cba0ad93f6) into #8320
vjeux 003ae0d
Merge #8320 (her 46fb7beee4: the 41 px case skips WebKit; a scroll-ed…
vjeux 45c93cc
Merge #8356 (#8320 46fb7beee4) into #8358
vjeux 87144e2
Merge #8293 (#8320 46fb7beee4) into #8356
vjeux ab71d20
Merge #8358 (#8320 46fb7beee4) into #8360
vjeux beec62a
test(gestures): a scroll-edge pan holds nothing while a second finger…
vjeux eb58587
fix(gestures): a scroll-edge pan holds nothing while a second finger …
vjeux 3bfd7c3
fix(core): the animator reads no style for a node out of the document
vjeux 3d79388
test(gestures): the watcher's browser test checks it reports moves af…
cixzhang e79f0f5
Merge #8589 (the watcher's browser test checks moves after the takeov…
cixzhang e744e52
Merge #8336 (vjeux's two-finger scroll-edge fix; #8589's watcher brow…
cixzhang 2119cfa
Merge #8076 (3bfd7c32da: the animator reads no style for a node out o…
vjeux d70e066
test(core): the press feedback controller imports nothing from the ge…
vjeux fbed9d2
refactor(core): the coarse-pointer query moves to the environment que…
vjeux e585b5b
Merge #8270 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux c645a98
Merge #8309 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux fd4aa33
test(gestures): the watcher's browser test names its record type (lint)
cixzhang cdfff81
Merge #8589 (the watcher browser test's lint fix) into the host line
cixzhang f51a90c
Merge #8336 (#8589's lint fix) into the arena fixes
cixzhang 1ddb1e2
test(gestures): the watcher's real-touch test reads its end before th…
vjeux 2b148b1
Merge #8315 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux 0701cf6
Merge #8336 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux 6c6da32
Merge #8320 (cixzhang's ea8531cd9b: the scroll-edge hold for a lone f…
vjeux f877b37
Merge #8356 (#8320 ea8531cd9b; #8076 3bfd7c32da; the coarse-pointer q…
vjeux d848fde
Merge #8293 (#8320 ea8531cd9b; #8076 3bfd7c32da; the coarse-pointer q…
vjeux 2085cf6
Merge #8358 (#8320 ea8531cd9b; #8076 3bfd7c32da; the coarse-pointer q…
vjeux 16dcb6d
Merge #8320 2fd96979f0 (F2's fY: #8076 3bfd7c32da, the lint fix, the …
vjeux aeefaa4
fix(Toast): a release moving back springs back, and the retract conti…
vjeux 1aade8a
test(gestures): an in-band touch on a wider element decides at 15 px …
vjeux 3d85c30
fix(gestures): an in-band touch decides at 15 px whatever the element…
vjeux 9d0f6f2
Merge #8061 (3d85c303e6: an in-band screen-edge touch decides at 15 p…
vjeux 11dbebf
Merge #8641 (bec2283d0f: a gesture that cancels itself on a finger's …
vjeux d9a1e1a
fix(gestures): an in-band touch decides at 10 px on an element wider …
vjeux e6ab0b9
Merge #8061 (d9a1e1ad19: an in-band touch on an element wider than th…
vjeux e7b5b3c
Merge #8076 (e6ab0b9cd9: #8061 d9a1e1ad19, an in-band screen-edge tou…
vjeux c64fe2e
Merge #8270 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641) into #8309
vjeux 3d7ccb7
Merge #8315 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641) into #8336
vjeux e720276
Merge #8309 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8641's moving…
vjeux 06f3817
Merge the #8589 watcher-test fix (1b6e19f7b0: the real-touch test rea…
vjeux ff7b7f1
Merge #8336 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux 5dcdc88
Merge #8356 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux f473a8b
Merge #8320 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux c13bfec
Merge #8293 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux f06bb9b
test(motion): retire the gate that kept the menus off the gestures table
vjeux bb31b24
Merge #8358 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux c275915
test(gestures): a finger from a browser that sends Touch Events but e…
vjeux a0beb31
fix(gestures): the host reads no Touch Events where it takes fingers …
vjeux bcd1387
Merge #8336 (the host takes a finger once where it reads its pointer …
vjeux d7d9109
Merge #8320 (the host takes a finger once where it reads its pointer …
vjeux 655d296
Merge #8293 (the host takes a finger once where it reads its pointer …
vjeux d93fe7a
Merge #8356 (the host takes a finger once where it reads its pointer …
vjeux 8300fc4
Merge #8320 3d7fa2ebcb (F2's fZ: #8076 e6ab0b9cd9, the watcher-test f…
vjeux 193ccd5
test(motion): the uikit barrel keeps UIKIT_CLICK for importers writte…
vjeux 4bf2891
fix(motion): the uikit barrel keeps UIKIT_CLICK, with the click guard…
vjeux f5d430e
test(Toast): a sideways touchmove lists its touches, as a browser's does
vjeux fad3f13
Merge #8358 (the host takes a finger once where it reads its pointer …
vjeux 930b586
test(core): Core's root, hooks and utils entries carry no gesture code
vjeux d53b591
fix(core): the haptic switch's attribute lives in utils, so Core's pu…
vjeux 3fb31dd
Merge main (6aea9bda01: #8663 merged, one release policy) into the ex…
vjeux 170162d
Merge #8076 (main's #8663 rows in motion/README.md) into #8270
vjeux e001ec5
Merge #8270 (#8076: main's #8663 rows in motion/README.md) into #8309
vjeux 454a26e
Merge #8309 (#8076: main's #8663 rows in motion/README.md) into #8315
vjeux 0c1d99b
Merge #8315 (#8076: main's #8663 rows in motion/README.md) into #8336
vjeux 115d0dc
Merge #8336 (#8076: main's #8663 rows in motion/README.md) into #8320
vjeux 8a1d6a5
Merge #8320 (#8076: main's #8663 rows in motion/README.md; this pull …
vjeux a487255
Merge #8358 (#8076: main's #8663 rows in motion/README.md) into #8360
vjeux 270d0c7
Merge #8356 (#8076: main's #8663 rows in motion/README.md) into #8358
vjeux 5fc105f
Merge #8293 (#8076: main's #8663 rows in motion/README.md) into #8356
vjeux ea3f9f6
Merge #8320 ca71fce61a (F2's fZ2, on #8076 3fb31ddb3e with main 6aea9…
vjeux 389db4e
fix(core): usePressTracker rebuilds its tracker when its options change
vjeux a14f660
test(core): only the utils entry is pinned gesture-free; the root and…
vjeux 504f28e
test(gestures): a recognizer inside a shadow root gets its finger and…
vjeux c37e309
fix(gestures): the host resolves what an input landed on through the …
vjeux f15023b
Merge #8336 (a recognizer inside a shadow root gets its finger: the h…
vjeux a8566b0
Merge #8320 (#8336: a recognizer inside a shadow root gets its finger…
vjeux 82c6d44
Merge #8358 (#8336: a recognizer inside a shadow root gets its finger…
vjeux 7df085b
Merge #8356 (#8336: a recognizer inside a shadow root gets its finger…
vjeux a016dab
Merge #8293 (#8336: a recognizer inside a shadow root gets its finger…
vjeux b039876
test(core): the held-dip proofs wait for the dip to finish, not for 2…
vjeux f594126
test(useMenuPress): the trigger keeps the released tolerance on a fin…
vjeux 93f806d
fix(useMenuPress): the trigger takes its tolerance when its press sta…
vjeux c2b4c56
test(useLongPress): the travel is measured on each axis, as its docum…
vjeux 4e8bd6c
fix(useLongPress): the tolerance is measured on each axis again, as d…
vjeux 8c6b72c
test(gestures): a scroll and its brake see a finger inside an open sh…
vjeux d618f43
fix(gestures): a scroll and its brake compare a finger along the flat…
vjeux 53b1850
Merge #8336 (the host compares a finger with a scroller along the fla…
vjeux a69da45
Merge #8320 (#8336: the host compares a finger with a scroller along …
vjeux b28a3ee
Merge #8293 (#8336: the host compares a finger with a scroller along …
vjeux 9b34a95
Merge #8356 (#8336: the host compares a finger with a scroller along …
vjeux ca21fa9
Merge #8358 (useLongPress measures its tolerance on each axis again, …
vjeux b59c4ac
refactor(useLongPress): the per-press tolerance stays off the public …
vjeux 3846b6a
Merge main 70ea85903c into #8073
vjeux ca2543d
Merge remote-tracking branch 'origin/main' into HEAD
cixzhang 10c62f5
test(core): a mouse press ending early leaves a held row to its owner
vjeux fdf8766
fix(core): a press ended early clears its paint through the one writer
vjeux 63128d3
test(core): pressFeedback.test.ts drops its unused durationToMs import
vjeux f24e872
Merge #8446 ca2543df75 and #8073 63128d3530 into #8076
vjeux 94362e0
Merge main (70ea8590: #8045, #8046 landed)
cixzhang 6f994bc
docs(core): the gestures README names both writers of the press attri…
vjeux 97254a9
Merge #8076 6f994bcdfb into #8360
vjeux 243ff3e
docs(core): pressFeedback says paintPress writes the presses it track…
vjeux 303cac3
docs(changeset): the press-tracking changeset names both writers of t…
vjeux 420b665
test(useMenuPress): a finger held on the trigger keeps FR29's drift a…
vjeux 0ada905
fix(useMenuPress): a finger held on the trigger keeps FR29's drift al…
vjeux 00da8f7
chore(gestures): the gesture files on this line have no unused bindings
vjeux 955f494
test(gestures): a rotation re-based on every change releases at its r…
vjeux ea2dc0d
fix(gestures): a re-based rotation keeps its release velocity
vjeux b548954
test(motion): the Reduce Motion late-dip proof reads what the dip ani…
vjeux a075bcc
test(gestures): a finger inside an open shadow root is down in its sc…
vjeux 7e6d12e
fix(gestures): a finger inside an open shadow root is compared along …
vjeux f91b558
test(gestures): an element stays an action group while any of its att…
vjeux 965905b
fix(gestures): an element is an action group while any of its attachm…
vjeux 6b8f098
test(gestures): a tap on a moving sheet's shadow-root content reaches…
vjeux 16356f3
fix(gestures): the presented hit test descends into open shadow roots
vjeux d632cae
test(gestures): no touch-action rule stays once the last marked eleme…
vjeux cd05643
fix(gestures): a document's or shadow root's touch-action rules go wi…
vjeux 91e5273
docs(gestures): presented hit testing names its review condition, and…
vjeux d3411f0
docs(gestures): the README and the barrel point Lab at @astryxdesign/…
vjeux 65465d1
docs(core): the input stream's notes name the stops it fixes, what st…
vjeux d120ef2
docs(changeset): the build changeset names the treeshakeCompensation …
vjeux 545fa8b
test(gestures): real-touch proofs for a still finger's sub-pixel jitt…
vjeux 1768f21
test(gestures): a retargeted tap with only watchers attached activate…
vjeux c3cc441
docs(core): the input stream's notes no longer list click among the g…
vjeux cba466c
Merge #8360 045f666f7a (the re-folded gesture foundation, which carri…
vjeux bbb4d74
docs(Toast): the record states the notification presentation
vjeux File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/build': patch | ||
| --- | ||
|
|
||
| [fix] `astryxStylex` resolves `defineConsts` values read from another file. With the `{stylexOptions}` form (the one Storybook uses), a file that read only constants from a `.stylex.ts` module lost that import once StyleX compiled it, so the constants never reached the CSS: a constant used as a media-query key failed the build ("Invalid empty selector") and one used as a value shipped as a custom property nothing declares. In either form, a constant defined on the other side of the layer split, or in an Astryx package (compiled with the library class-name prefix) and read from an app file (compiled with its own), stayed unresolved. The `{stylexOptions}` form now passes StyleX `treeshakeCompensation: true` by default (before, its babel pass ran with StyleX's default, `false`), as the plugin form already does; pass `treeshakeCompensation: false` in `stylexOptions` to restore the old behavior. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture recognizers and the menu press model share one guard for the browser's click after a gesture that already acted, swallowing it for 400ms or until the next press. Keyboard and assistive-technology clicks (`detail` 0) always pass. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: a gesture that cancels itself on a finger's move (a long press dragged past its tolerance) keeps that finger claimed until it lifts, so the page never takes the drag over midway; a resting finger is still given back when its gesture is cancelled. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: touch-action derivation, the native scroll probe and haptics for the gesture system. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture hooks call nothing back after unmount; `usePressTracker` brakes with the host by default and keeps one tracker, so an option change or a new ref never drops a press in progress; the recognizer's arena plumbing is `protected`. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: gesture host fixes from review. A page scroll under a still finger keeps the press and its click; watchers and touches nothing can claim get passive listeners only; a claimed pen holds only its own stylus touches; an element's own `touch-action` is never widened; slotted content scrolls with its shadow-tree scroller. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture host becomes the one document-level touch owner: the finger count, touch gates, and a kept press for continuous-tracking controls, whose element gets `touch-action: manipulation` where the pointer is coarse. A scroll lock's page hold and the finger-scroll watch keep their own listeners and ask the host only about the touches it owns. A second finger fails a one-finger pan that has not claimed, so the page can pinch. A scroll-edge pan holds a lone finger from the first move that pulls away from an edge every scroller under it is at, so those moves are cancelled before it begins; with a second finger anywhere on the screen the page keeps its pinch. Where the primary pointer is fine, the host attaches nothing and registers no listener, following the pointer when it changes; a recognizer that reads each event's pointer itself opts out with `perEventPointer`, and a press tracker with it paints a finger's press feedback only, with no control event and no mouse or pen press. A press tracker whose hold acts (a stepper's hold-repeat) can bring a selection lock for its presses, as a recognizer can. Internal, for the touch components that adopt them; not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture system's DOM host (claims, click suppression, the browser's takeover, the pointer behind a contact). Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: UIControl press tracking with control and cell profiles and the gesture hooks. `paintPress` in `utils/pressFeedback.ts` writes `data-astryx-press` for every press it tracks; the action-group tracker writes its groups' presses itself. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture system's README for component authors, with its browser proof in Chromium and WebKit. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: gesture recognizer and arena fixes from review; a pan claims nothing before it begins at 10 pt; one velocity tracker for every gesture (`spec:AST-100`: UIKit's measured blend, a scrolling surface's release through the pan's `scrollVelocity()`, and FR2's release rules). Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: swipe, pinch, rotation, screen-edge pan and hover gesture recognizers. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: a recognizer created with `claimsTouches: false` is a watcher: passive listeners only, simultaneous with every recognizer, and it follows a touch the browser takes for a scroll to the lift. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [fix] The touch press feedback and the gesture recognizers now hear page-wide input through one shared stream on the window's capture phase, so an app's window-capture `stopPropagation`, or a document-capture `stopImmediatePropagation` registered before Core, no longer hides a touch from them. A recognizer that must claim a touch mid-gesture still needs the touch to reach its element. Each event type's listener is passive unless a subscriber cancels it (the gesture host's `touchend` and `contextmenu` while a claiming recognizer or press tracker is attached, the page hold's `touchmove` while it holds, and the click guard's `click` once it first arms), so a page of pressables registers no listener that can hold a scroll. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: `useLongPress` (ContextMenu's long press, and the held finger that opens a menu from its trigger) takes its default duration and tolerance, 500ms and 10px on either axis, from the same source as the long-press gesture recognizer. No behavior changes. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [fix] A finger held on a DropdownMenu trigger may drift up to 13px on each axis and still open the menu under every primary pointer, a phone's, a tablet's and a touchscreen laptop's alike, as AST-094 FR29 allows; it cancelled past 10px. No menu, row or trigger reads the pointer query. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] On iOS, a touch on an element the compositor animator is moving reaches what is drawn: the animator reports each moving element's offset from its layout box, and the gesture host sends the touch, press bounds and the tap's click there instead of to the layout position iOS WebKit hit-tests. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: Reduce Motion for the touch presentations follows design:reduced-motion beyond the animator too. `reducedMotionFade()` gives code beside the animator the animator's own fade (an opacity-only 200 ms cross-fade on a coarse pointer or after a touch release, at once on any other pointer), `animator.reducedMotion()` reports which form a change takes for feedback that plays no fade of its own, and `reducedMotion.stylex.ts` holds the fade's constants for StyleX transitions. The fade's length is not a theme motion role. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [fix] A quick flick toward a toast's edge now dismisses it whatever its height. Before, a flick also had to travel 48 px (the distance that already dismisses a one-line toast), so on any toast up to 120 px tall a flick could only snap back; and its speed was timed by when the browser handled the touches rather than when they happened, which in browsers that deliver moves on the next frame made a quick flick look up to twice as slow. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [feat] Toast takes `presentation`, on `ToastViewport` (every toast it shows) and on `Toast`: `'adaptive'` (the default), `'toast'` or `'notification'`. Under `'adaptive'`, a toast under a finger (a coarse primary pointer, on every touch device, iOS and Android alike) now follows iOS notification banners, as `'notification'` does on every device. The card stays still for the first 14 px of finger travel and then follows at 0.55 of the finger, with no jump. On release, a quick flick toward the edge dismisses even when it barely moved the card, as does a drag that leaves the card far enough out; a release moving back toward rest, or anything else, springs the card back. However a toast is dismissed (a swipe, the close button, the timeout, the app's dismiss), the card leaves as the banner does: it slides past its edge from where it is, continuing a flick's speed, without fading, and its row closes after it. While the card springs back or leaves, touches pass through to the page. Previously a toast under a finger followed Toast's own swipe, the card moving with the finger as it faded and shrank, and faded out when dismissed: `presentation="toast"` keeps that on every device. With a fine pointer the swipe and exit look as they did; a flick now reads the speed at the lift from the shared release filter instead of the drag's average, so a slow drag ending in a quick throw dismisses and a pen that rests before it lifts does not flick. Under reduced motion nothing slides, springs or drifts: on a touch screen the toast fades in place before its row closes, and with a mouse or keyboard it changes at once. | ||
|
|
||
| @vjeux | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture host applies a recognizer's own `selectionLock` to that recognizer's contact and imports no lock itself; a long press brings one only when it has a hold (a `minimumPressDuration` above 0), and `selectionLock: null` opts out. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [fix] Where the primary pointer is fine (a mouse, a trackpad, a touchscreen laptop, a desktop pen tablet), the press feedback controller no longer registers a touch listener: it reads the primary pointer at the first finger or pen press and keeps its `touchcancel` listener only while that pointer is coarse. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the touch presentations' animator drives a pseudo-element such as a dialog's ::backdrop: a static filling animation holds its value after a curve ends and after `set`, a custom property on its host promotes it, and a Reduce Motion dip borrows and hands back the pseudo-element's own opacity. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: useAnimator, a React wrapper around the touch presentations' animator that never re-renders per frame, and browser proofs on the interaction harness that the animator's motion keeps running through a blocked main thread in Chromium and WebKit. Not exported from the package entry point. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: `useFingerScroll(scroller)` tells a finger's scroll from the program's, and the gestures README gains a guide to migrating a raw-touch drag onto the recognizers. Internal to the touch components: not exported from the package entry point or the gestures barrel. | ||
|
|
||
| @vjeux |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This promises the banner swipe "on every touch device, iOS and Android alike", including that "a quick flick toward the edge dismisses". Your recordings in the PR thread show Chrome for Android taking both a slow 60 px drag and a 20 px flick off the card (the card never moves), and Mobile Safari taking a slow drag. Please describe what those browsers do, or change the claim once the 10 pt claim is decided.