Repository navigation
feat(core): code outside a component relates to its gesture recognizers by name #8261
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
Closed
+30,413
−186
Closed
Changes from all commits
Commits
Show all changes
87 commits
Select commit
Hold shift + click to select a range
f1b86d7
test(interaction): real touch input for browser interaction proofs
vjeux 4076bf3
spec(AST-094): touch presentations follow UIKit
vjeux 28343b4
chore(core): the UIKit constants table for touch presentations
vjeux c88087c
chore(core): UIKit's spring, decay, rubber-band and projection math
vjeux 081b6c5
feat(core): gesture recognizer core — UIKit's state machine and the a…
vjeux f423ffe
feat(core): tap and long-press recognizers with UIKit's measured thre…
vjeux 4dc2aae
feat(core): one touch presentation resolver
vjeux 706683b
fix(build): resolve defineConsts read across files in astryxStylex
vjeux 2a8b491
chore(core): UIKit's spring, decay, rubber-band and projection math
vjeux 60fc05c
chore(core): a compositor animator for touch presentations
vjeux 968b85f
fix(interaction): release only the lifted finger on a partial lift in…
vjeux 6f2b3e0
test(interaction): curve sampling and deterministic storyboards
vjeux eef784b
fix(interaction): curves end before a held end value; rest judges pre…
vjeux dbbdebc
test(interaction): frame evidence and the BottomSheet exemplar
vjeux 6bd39ce
test(interaction): make the busy-main-thread verdict robust to a load…
vjeux 5cb0543
feat(core): pan gesture recognizer with UIKit's hysteresis and velocity
vjeux 7d58f27
feat(core): swipe, pinch, rotation, screen-edge pan and hover recogni…
vjeux 1a76704
feat(core): touch-action derivation, native scroll probe and haptics
vjeux cfffebf
feat(core): gesture host — claims, click suppression and the browser'…
vjeux 0453495
feat(core): UIControl press tracking, press profiles, the press paint…
vjeux 398d4eb
test(core): gesture browser proof in Chromium and WebKit, and the README
vjeux e9f1e0a
chore(core): the animator plays any curve, drives a pseudo-element, s…
vjeux 90c34de
Merge the interaction harness (#8045) under the animator's browser pr…
vjeux f328e32
chore(core): useAnimator and the animator's browser proofs on the int…
vjeux 9d2d720
feat(core): the touch presentation resolver knows the iOS idiom
vjeux 765a094
feat(core): themes retune touch motion through motion roles
vjeux f87a453
Merge the theme's motion roles into the animator branch
vjeux 65fb64b
feat(core): the animator plays each table spring and curve as its the…
vjeux 5f79e11
Merge the gesture system (#8074) under the experimental touch exports
vjeux 8f0d9c7
Merge the touch presentation resolver (#8062) under the experimental …
vjeux eaf2189
feat(core): experimental motion and gesture subpaths for touch presen…
vjeux 7065daf
fix(core): one touch model on every device; the adaptive change is a …
cixzhang 92ef66c
Merge main into wip/uikit-pr-touch-presentation
cixzhang 398c723
fix(core): the touch resolver reads the theme's compact definition
cixzhang 33ee284
docs(MoreMenu): keep the doc's own formatting; change only the compac…
cixzhang 63e5356
fix(core): the animator's Reduced Motion follows design:reduced-motion
vjeux 18ff410
fix(core): under Reduced Motion, travel lands with a plain write whil…
vjeux 512b368
Merge #8062 (the touch resolver reads the theme's compact definition)…
vjeux 1203525
Merge commit '706683bb99' into uikit/pr-export-t2
vjeux 0268a58
test(build): the cross-file constants fixture keys on a width, not it…
vjeux 38edf28
chore(core): the constants table names only what exists, and dates ev…
vjeux 0783fcd
fix(core): paging past the last page lands on a real page
vjeux b419011
fix(core): an identity at rest leaves the element
vjeux 1264c5b
fix(core): compact follows the active theme's md; the branch drops it…
cixzhang 8103ede
fix(core): the animator's model holds a curve's start until the brows…
vjeux cea95bb
test(core): a fixed child stays fixed after a motion back to identity
vjeux ec08340
docs(spec): drop this branch's stacked copy of AST-094
cixzhang 1dcf753
fix(core): theme motion role ids are checked against the generated li…
vjeux 5aafeaf
fix(core): a motion reads a theme switched earlier in the same task
vjeux a5ec352
fix(core): resolveMotion observes and listens to nothing
vjeux 6f81139
Merge #8075 (defineConsts read across files) into the experimental su…
vjeux 9d8226d
feat(core): the Reduce Motion media keys are StyleX constants
vjeux ced7766
docs(ContextMenu, MoreMenu): the compact edge is the theme md breakpoint
cixzhang fe9fbba
fix(core): reading a motion table registers nothing, and a theme ship…
vjeux 9fff2ac
fix(core): under Reduced Motion, two calls in one frame both land
vjeux 14fe728
feat(core): export the Reduce Motion keys for other packages
vjeux 7c604ea
test(lab): say what the Reduce Motion keys import test proves
vjeux dbd6d17
fix(core): Reduce Motion keys stay literal in a transition
vjeux 0b81c86
fix(core): a retarget of a curve the browser has not started keeps it…
vjeux 970c908
fix(core): a call on the clock of a waiting call from rest starts wit…
vjeux 7091f8b
fix(core): experimental touch hooks stay out of stable search and doc…
vjeux 4d728a7
refactor(core): drop the unused isCompactTouch from the touch present…
vjeux d34d800
test(core): the adaptive menu's compact edges in Chromium and WebKit
vjeux 9960f84
refactor(core): export the animator's settle thresholds
vjeux 65ac34a
test(core): a move during a Reduce Motion dip's fade out ends visible
vjeux 5cb103f
fix(core): a time ahead reads a waiting curve from its call's time
vjeux 49bb28a
fix(core): under Reduce Motion, only a call's own opacity makes it an…
vjeux 189de88
fix(core): theme adaptations have no platform condition
vjeux 601b54e
refactor(core): the animator reads a coarse pointer through TOUCH_QUERY
vjeux 874ca93
docs(core): theme motion examples name a role that exists
vjeux 2164696
fix(core): a page registers and ships only the motion tables it anima…
vjeux 3e2d5e3
test(core): the role registry test checks every table discovery regis…
vjeux b496085
Merge main into the experimental subpaths (lab typechecks with its te…
vjeux c5efd27
Merge main into #8062 (lab typecheck fix aa3b92f320 and current main)
vjeux 7618bd8
test(core): the theme browser proof registers the springs table it re…
vjeux ab35d4b
docs(core): state how a decay behaves under Reduce Motion
vjeux 9dc4ae9
docs(cli): the theme template names no platform condition
vjeux b8642ba
test(core): the touch presentation's browser proofs leave for the des…
vjeux f809dae
test(DropdownMenu): a sub-menu's drill-in follows a theme that moves md
vjeux 4b5e872
refactor(core): readTouchPresentation takes the compact definition it…
vjeux b91dd6c
refactor(core): motion and gesture stay internal, with no experimenta…
cixzhang 54a6ffe
Merge #8062 (the compact definition follows the theme's md point) int…
vjeux a21ddd7
fix(core): Reduced Motion takes no override
cixzhang 5617fbb
fix(core): the Reduce Motion constants stay internal, and the touch c…
vjeux ba4ce66
test(core): a component reaches a motion table only by importing it
vjeux a71f4e5
build(lab): Lab type-checks core's internal motion and gesture modules
vjeux 8e4b380
feat(core): code outside a component relates to its gesture recognize…
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. A constant defined on the library side of the layer split and read on the product side stayed unresolved in either form. A production build now also warns, naming the variable and the rule that reads it, when its stylesheet reads a StyleX-generated custom property that nothing declares; set `undefinedVariables: 'error'` to fail the build instead. | ||
|
|
||
| @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; no component uses them yet. | ||
|
|
||
| @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: code outside a component relates to the component's own gesture recognizers by name, the way a UIKit app uses a recognizer's name and its own delegate (`gestureNamed`, `addGestureDelegate`, `useGestureDelegate`). Not exported from the package entry point; no component uses it yet. | ||
|
|
||
| @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; no component uses it yet. | ||
|
|
||
| @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 pan gesture recognizer, with UIKit's measured hysteresis and velocity filter. Not exported from the package entry point; no component uses it yet. | ||
|
|
||
| @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: UIControl press tracking with control and cell profiles, the shared press paint, delegated press tracking and the gesture hooks. Not exported from the package entry point; no component uses them yet. | ||
|
|
||
| @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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| --- | ||
|
|
||
| [chore] Internal: the gesture recognizer core for touch presentations: UIKit's recognizer state machine and the arena that settles which recognizer owns a touch. Not exported from the package entry point; no component uses it yet. | ||
|
|
||
| @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; no component uses them yet. | ||
|
|
||
| @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: tap and long-press gesture recognizers with UIKit's measured thresholds. Not exported from the package entry point; no component uses them yet. | ||
|
|
||
| @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 experimental touch animator follows design:reduced-motion. Under Reduce Motion every `animate` and `play` (travel or opacity, on a spring or any curve) becomes an opacity-only cross-fade of 200 ms on a coarse primary pointer, or for a call marked `touchRelease`, and completes at once on any other pointer; nothing moves, scales or springs, and travel lands with a plain style write while the element is transparent, never as an animated transform. `timing.reducedMotionCrossFadeMs` is now 200 ms and is no longer a theme role. The `reducedMotion` and `crossfade` call options are removed; `crossfadeAs` stays. `animator.reducedMotion()` reports the mode for feedback with no fade of its own, `reducedMotionFade()` gives the same fade to code beside the animator, and `reducedMotion.stylex.ts` holds its constants for StyleX transitions. | ||
|
|
||
| @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,8 @@ | ||
| --- | ||
| '@astryxdesign/core': patch | ||
| '@astryxdesign/cli': patch | ||
| --- | ||
|
|
||
| [feat] Themes can retune touch motion roles. `defineTheme({motion})` takes `springs`, `durations` and `curves` keyed by motion role, the table path of a measured touch motion value (`springs.sheetPresent`, `navigation.transitionMs`), at the root or in an adaptation rule, and writes one `--motion-*` variable per role it sets. A role the theme leaves out keeps its measured default, an unknown role id is refused, and the duration scale (`fast`, `medium`, `ratio`) is optional when a theme sets only roles. No shipped component reads the roles yet. `astryx docs motion` lists every motion role with its CSS variable and default, and the theme authoring guide and template describe the new fields. | ||
|
|
||
| @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] `presentation="adaptive"` on DropdownMenu, ContextMenu, MoreMenu, Selector and MultiSelector, and a DropdownMenu's or ContextMenu's default sub-menu drill-in, now use the theme's compact definition with a coarse primary pointer: a viewport narrower than the theme's `md` point (768px by default) or shorter than 500px. This is a behavior change. The old default was a bottom sheet at 768px wide and below on a coarse pointer. Now a coarse-pointer screen exactly 768px wide keeps the anchored popover, and a phone in landscape (wider than 768px but shorter than 500px) gets the bottom sheet and the drilled-in sub-menu. A theme that moves `md` moves the edge with it. To pin a component's presentation regardless of the rule, pass `presentation="popover"` or `presentation="bottom-sheet"`; to keep a sub-menu's flyout, pass `presentation="flyout"` on `DropdownMenuSubMenu`. Mouse and keyboard users on desktop see no change, because every case requires a coarse pointer. | ||
|
|
||
| @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 UIKit constants table for touch presentations (springs, scroll physics, timing curves and navigation values), each value with its source and a checked list of the simulator measurements still owed. Not exported from the package entry point; no component reads it yet. | ||
|
|
||
| @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 touch presentations' animator plays any closed-form curve (such as a spring chasing a moving target), drives a pseudo-element such as a dialog's ::backdrop, follows design:reduced-motion (under Reduce Motion, an opacity-only cross-fade of 200 ms on a coarse pointer or after a touch release and an immediate change on any other pointer, with no option or theme value that keeps travel or lengthens the fade; an entrance or exit role orients a slide that changes no opacity), and starts a call from rest when the browser commits it, as Core Animation does. 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: a compositor animator for touch presentations. It plays UIKit's springs, scroll coasts and any closed-form curve as Web Animations on translate, rotate, scale and opacity, so they keep running while JavaScript is busy, and reads values and velocities back from the curves for interruption, retargeting and Reduce Motion cross-fades. Not exported from the package entry point; no component uses it yet. | ||
|
|
||
| @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 spring, decay, rubber-band and projection math of UIKit for touch presentations, as pure functions checked against an independent integration and against values read from UIKit. Not exported from the package entry point; no component uses it yet. | ||
|
|
||
| @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: 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
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
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
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
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.
The animator and
reducedMotion.stylex.tsare internal (no./motionexport), so this[fix]would announce removed options on an "experimental" API nobody can import. Please write it as[chore] Internal: …like the sibling changesets, or fold it intouikit-motion-animator-curves.md.