@ng-native/fabric 0.17.1 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/engine.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  import { type Conditions, type DeferredDeclaration, type StyleCache, type StyleSheet, type TokenValue } from './css.ts';
11
11
  import { type AnimationSpec, type Keyframe, type RunningAnimation, type Transition } from './transition.ts';
12
12
  import { type ComposedDrive, type DrivenProperty, type EventFeed, type FollowingTransform, type NativeAnimated, type ScrollAxis, type ScrollDrive, type ScrollRange, type StaticTransform } from './native-drive.ts';
13
- import type { DrivenChannels } from './scroll-animation.ts';
13
+ import { type DrivenChannels } from './scroll-animation.ts';
14
14
  export type FabricNode = {
15
15
  readonly __fabricNode: unique symbol;
16
16
  } | object;
@@ -18,6 +18,20 @@ export type FabricNode = {
18
18
  import type { HostEngine, HostNode, Settling } from './host.ts';
19
19
  import { type GridLayout, type Rect } from './grid.ts';
20
20
  import { type FlowPlan } from './flow.ts';
21
+ /**
22
+ * A view whose paint native sets with no commit: see `Engine.paintNatively`. The shadow node
23
+ * Fabric holds for it can be behind what it paints, by the keys in `stale`.
24
+ */
25
+ interface PaintState {
26
+ /** The props native paints on the view. */
27
+ readonly keys: Set<string>;
28
+ /** Those native has a newer value of than the shadow node. */
29
+ readonly stale: Set<string>;
30
+ /** Set to commit what is stale with the next merge, whatever changed. */
31
+ sync?: true;
32
+ /** Set where a transform painted is a move by a share of the box: see `repaintShares`. */
33
+ shares?: true;
34
+ }
21
35
  /** A node's scroll-driven animation: what it plays, what drives it, and the frame it commits. */
22
36
  interface ScrollAnimation {
23
37
  readonly spec: AnimationSpec;
@@ -214,6 +228,12 @@ export interface EngineNode extends HostNode {
214
228
  nodeText: string;
215
229
  childList: EngineNode[];
216
230
  parent: EngineNode | null;
231
+ /**
232
+ * A child of this node that holds what is put in it: `appendChild` and `insertBefore` on this
233
+ * node put the child there instead, so a component's template lands inside a view its owner
234
+ * placed in the host element. Only the view itself goes in this node.
235
+ */
236
+ contentView?: EngineNode;
217
237
  listeners: Map<string, Set<(event: unknown) => void>> | null;
218
238
  /** CSS classes on this node, for selector matching. */
219
239
  classes: Set<string> | null;
@@ -319,6 +339,8 @@ export interface EngineNode extends HostNode {
319
339
  * on, or the root. Unset on every node that is not fixed.
320
340
  */
321
341
  fixedTo?: EngineNode;
342
+ /** Set by `markPage`: a `position: fixed` box inside this node is placed against it. */
343
+ page?: true;
322
344
  /**
323
345
  * Set once a child of this node has had an `order`: its children are then committed in that
324
346
  * order, which Yoga has no property for. Left set, since sorting children with none is nothing.
@@ -407,6 +429,10 @@ export interface EngineNode extends HostNode {
407
429
  readonly tag: number;
408
430
  readonly keys: Set<string>;
409
431
  };
432
+ /** What native paints on this view with no commit, while it does: see `paintNatively`. */
433
+ paint?: PaintState;
434
+ /** Props native painted ahead of the shadow node as the painter let go: see `leavePainting`. */
435
+ unsynced?: ReadonlySet<string>;
410
436
  /**
411
437
  * The last `transform` built from the individual transform properties, and what it was built
412
438
  * from. Reused while the parts are the same objects, so an unrelated change does not re-send it.
@@ -483,6 +509,8 @@ export interface EngineNode extends HostNode {
483
509
  * keeps it for the dismissal animation. See `Engine.withheld`.
484
510
  */
485
511
  presented?: true;
512
+ /** Committed and not to be seen or touched yet: see `Engine.hold`. */
513
+ held?: true;
486
514
  /** This node's own props changed. */
487
515
  propsDirty: boolean;
488
516
  /** This node's child list changed. */
@@ -501,6 +529,15 @@ export declare function declareNativeProps(elementName: string, props: Iterable<
501
529
  * host primitive's constructor; see `EngineNode.claimed`.
502
530
  */
503
531
  export declare function claimHost(node: HostNode): void;
532
+ /**
533
+ * Make a view the page of what is inside it: a `position: fixed` box there is placed against this
534
+ * view and not the screen, as it is against a screen of a stack, and follows it as it is given
535
+ * another size. For a layer that is the window to what it holds and need not be the size of the
536
+ * screen. Marked before anything fixed is put in it: it is for as long as the view is. Not for
537
+ * a view that scrolls its overflow: what is fixed in it is committed in what scrolls, and would
538
+ * scroll with it.
539
+ */
540
+ export declare function markPage(node: EngineNode): void;
504
541
  /**
505
542
  * Say that an element scrolls what overflows it, as a browser's does: with `overflow: auto` or
506
543
  * `scroll` it is committed as a scroll view, around one view that holds what it holds. For a
@@ -740,6 +777,10 @@ export declare function onFontsSettled(listener: (families: ReadonlySet<string>)
740
777
  * `Engine.fontsSettled`.
741
778
  */
742
779
  export declare function fontsSettled(families: Iterable<string>): void;
780
+ /** Whether a view name is a text input's, for a committed view, which has a name and no node. */
781
+ export declare const isTextInputView: (viewName: string) => boolean;
782
+ /** Whether a node commits as a text input, the view that takes a cursor, on either platform. */
783
+ export declare const isTextInput: (node: ViewNameNode) => boolean;
743
784
  /**
744
785
  * Commit every `elementName` as a direct child of its nearest `ancestorName`, wherever the
745
786
  * template put it, e.g. `registerHoist('native-header', 'screen')`.
@@ -926,6 +967,8 @@ export interface EngineStats {
926
967
  worstRenderMs: number;
927
968
  createdNodes: number;
928
969
  clonedNodes: number;
970
+ /** Changes of paint native was given in place of a commit: see `paintNatively`. */
971
+ paintedNatively: number;
929
972
  }
930
973
  export declare class Engine implements HostEngine {
931
974
  /** Scopes the CSS resolver's memo. Bumped once per commit. */
@@ -942,7 +985,8 @@ export declare class Engine implements HostEngine {
942
985
  private readonly styles;
943
986
  /** Whether to run the development checks, which a release build skips. */
944
987
  readonly dev: boolean;
945
- private readonly now;
988
+ /** The clock transitions and animations run on, which a script reads where one has got to. */
989
+ readonly now: () => number;
946
990
  private onDirty;
947
991
  private onError;
948
992
  /** Nodes with at least one transition in flight, so a frame walks those and nothing else. */
@@ -1177,6 +1221,27 @@ export declare class Engine implements HostEngine {
1177
1221
  private lastConditions;
1178
1222
  updateConditions(next: Conditions): void;
1179
1223
  createElement(name: string, sheet?: StyleSheet | null): EngineNode;
1224
+ /**
1225
+ * Commit a node without it being seen or touched, or let it be again. A browser paints nothing
1226
+ * until a task and its animation frame are over, and native draws each commit as it comes: what
1227
+ * a library inserts, measures and only then styles is held for the frame between. Over every
1228
+ * opacity and `pointerEvents` it has, an eased one included, which it is committed with again
1229
+ * once let go. Nothing it matches changes, so nothing is styled again.
1230
+ */
1231
+ hold(node: EngineNode, held: boolean): void;
1232
+ /**
1233
+ * Stop showing the last frame of a node's finished `@keyframes` animation, where nothing holds
1234
+ * it there any more: script took its hold away after it ended. The node is what the cascade
1235
+ * gives it again with the next commit.
1236
+ */
1237
+ releaseFinished(node: EngineNode): void;
1238
+ /**
1239
+ * End a node's `@keyframes` animation now, as a script's `finish()` or `cancel()` does: at its
1240
+ * end, which is its last frame where it fills forwards and its resting style where it does not,
1241
+ * or with no effect of it at all. Native is stopped where it plays it, and what the view is drawn
1242
+ * at set there too (see `endedNatively`). It stays ended while the node asks for the same one.
1243
+ */
1244
+ endPlaying(node: EngineNode, how: 'finish' | 'cancel'): void;
1180
1245
  addClass(node: EngineNode, name: string): void;
1181
1246
  removeClass(node: EngineNode, name: string): void;
1182
1247
  /**
@@ -1279,8 +1344,8 @@ export declare class Engine implements HostEngine {
1279
1344
  /** Angular's `@if`/`@for`/`ViewContainerRef` markers. Ordered, never committed. */
1280
1345
  createAnchor(): EngineNode;
1281
1346
  createText(value: string): EngineNode;
1282
- appendChild(parent: EngineNode, child: EngineNode): void;
1283
- insertBefore(parent: EngineNode, child: EngineNode, ref: EngineNode | null): void;
1347
+ appendChild(into: EngineNode, child: EngineNode): void;
1348
+ insertBefore(into: EngineNode, child: EngineNode, ref: EngineNode | null): void;
1284
1349
  /**
1285
1350
  * A node coming under a parent other than the one it is under, or under any once it has been
1286
1351
  * taken out: what is over it may be other than it was styled under. The resolver sees that for
@@ -1597,6 +1662,11 @@ export declare class Engine implements HostEngine {
1597
1662
  * optimisation.
1598
1663
  */
1599
1664
  commit(): boolean;
1665
+ /**
1666
+ * Whether a commit sent native nothing, every change in it being paint native was given
1667
+ * directly: see `paintNatively`. Nothing was laid out, so nothing is read back.
1668
+ */
1669
+ private paintedOnly;
1600
1670
  /** Count a commit that reached native, and how long it took, in `stats`. */
1601
1671
  private countCommit;
1602
1672
  /** A field went out of view focused, in the commit running: see `undisplayed`. */
@@ -1718,6 +1788,11 @@ export declare class Engine implements HostEngine {
1718
1788
  /** Reconcile what is dirty and hand the tree to Fabric, which lays it out before returning. */
1719
1789
  private commitTree;
1720
1790
  private commitWhole;
1791
+ /** The views the last `completeRoot` was given, and how many there have been. */
1792
+ private sentHandles;
1793
+ /** Set in a commit where a change was given to native to paint in place of being committed. */
1794
+ private paintedInstead;
1795
+ private rootsSent;
1721
1796
  /** The fixed boxes each page, or the root, is committed with. */
1722
1797
  private readonly fixedIn;
1723
1798
  /** Boxes found to be fixed while they were being committed under their parent. */
@@ -1726,6 +1801,45 @@ export declare class Engine implements HostEngine {
1726
1801
  private fingerOn;
1727
1802
  /** Boxes that became fixed or absolute with the finger on them, left under their parents. */
1728
1803
  private readonly fixedUnderFinger;
1804
+ /** Whether a node moved with a finger on it waits for the finger to lift: `holdMovesUnderFinger`. */
1805
+ private holdsMoves;
1806
+ /**
1807
+ * The nodes taken out of the parent they are committed under with a finger on them, each with
1808
+ * that parent and the element that came after it there, which it stays before.
1809
+ */
1810
+ private readonly heldMoves;
1811
+ /**
1812
+ * Have a node that is moved to another parent, or taken out, while the first finger down is on
1813
+ * it or on something in it stay committed where it was until the last finger lifts, and then
1814
+ * go where it is. A native view moved to another parent is a view made again, which loses the
1815
+ * touch on it: a web library that drags an element moves it as the drag begins, out of its list
1816
+ * and on to the body, and its drag stopped there. The tree is moved at once, so what reads it
1817
+ * finds the node where it was put, and only what native is told waits. Off, what is held goes
1818
+ * where it is with the next commit.
1819
+ */
1820
+ holdMovesUnderFinger(on: boolean): void;
1821
+ /** A node is taken out of `parent` from `at`: held there, where a finger is on it. */
1822
+ private holdMove;
1823
+ /** Whether a node is held under a parent other than the one it is in now. */
1824
+ private heldElsewhere;
1825
+ /**
1826
+ * Add to a node's child handles each node held under it that has gone from it, before the
1827
+ * element it came before where that is still there: reconciled where it is in the tree, so it
1828
+ * is drawn as it is styled, and as it was last committed once it is out of the tree.
1829
+ */
1830
+ private heldHandles;
1831
+ /**
1832
+ * Have each parent a node is held under committed with its children again: a change to the node
1833
+ * marks the way up from where it is in the tree, and not from where it is committed.
1834
+ */
1835
+ private markHolders;
1836
+ /**
1837
+ * A node is taken out of the page: each node held under it, or under what it holds, is let go,
1838
+ * as there is nowhere left to draw it where it was. One moved elsewhere is drawn there.
1839
+ */
1840
+ private releaseHeldUnder;
1841
+ /** The last finger is up: each node held goes where it is with the next commit. */
1842
+ private releaseMoves;
1729
1843
  /** Note what a finger comes down on, and once the last has lifted move what waited for it. */
1730
1844
  private trackFinger;
1731
1845
  /** The page a box is on: the nearest view that holds one, or the root. */
@@ -1994,7 +2108,8 @@ export declare class Engine implements HostEngine {
1994
2108
  private unfit;
1995
2109
  /**
1996
2110
  * The boxes inside `node` that Yoga sizes from the room on offer and not from their content:
1997
- * one with a percentage width, and one that takes a share of a row from a basis of nothing.
2111
+ * one with a percentage width or a percentage basis in a row, and one that takes a share of a
2112
+ * row from a basis of nothing.
1998
2113
  * Nothing under a box with a width of its own in points is looked at: that width is its
1999
2114
  * content's room whatever it holds.
2000
2115
  */
@@ -2295,7 +2410,10 @@ export declare class Engine implements HostEngine {
2295
2410
  * return fresh objects, so diffing their output would re-send every image and shadow on every
2296
2411
  * unrelated change.
2297
2412
  */
2298
- /** What a touch on an element that keeps a drag holds off, while it lasts: see `holdSwipe`. */
2413
+ /**
2414
+ * What a touch on an element that keeps a drag holds off, while it lasts (see `holdSwipe`), and
2415
+ * a node held unseen (see `hold`).
2416
+ */
2299
2417
  private heldFor;
2300
2418
  /**
2301
2419
  * Exempt from the complexity limit deliberately, as `matchesCompound` is: a flat sequence of
@@ -2586,6 +2704,14 @@ export declare class Engine implements HostEngine {
2586
2704
  * what a pause, other frames or a view made again need, none of which native can be told of.
2587
2705
  */
2588
2706
  private backToScript;
2707
+ /** Each animation started on a node held unseen (see `hold`), to be played once it is let go. */
2708
+ private readonly startsUnheld;
2709
+ /**
2710
+ * Play an animation started on a node held unseen, once it is let go: its clock starts here, as
2711
+ * a browser starts it as it first paints the element. Not where it was paused meanwhile, nor a
2712
+ * second time where it was run again while held, which plays it here already.
2713
+ */
2714
+ private playUnheld;
2589
2715
  /** Start the clock on an animation, unless the node is already playing this one. */
2590
2716
  private startPlaying;
2591
2717
  /** Play an animation that has just started: by native's layout, by native's driver, or here. */
@@ -2740,6 +2866,120 @@ export declare class Engine implements HostEngine {
2740
2866
  private takeBackEased;
2741
2867
  /** Stop a clock native runs, and go on from JavaScript with each transition it was playing. */
2742
2868
  private backToScriptEased;
2869
+ private readonly painter;
2870
+ /** The views native paints, for letting go of those that leave the tree. */
2871
+ private readonly paintedNodes;
2872
+ /** When each prop a view paints with last changed: see `paintedAgain`. */
2873
+ private readonly paintChanges;
2874
+ private quietTimer;
2875
+ /**
2876
+ * Give native the paint a commit would carry, where it is all that changed: a view whose
2877
+ * transform, opacity or background is changed again and again, a progress bar stepped every
2878
+ * 50ms, is painted by a native animated graph and leaves nothing to commit. Answers what is
2879
+ * left of `payload` to commit.
2880
+ *
2881
+ * The first change of a prop is committed as any other. The second within `PAINT_RUN_MS` is
2882
+ * committed too, with `collapsable: false` so the view is kept for native to paint, and from
2883
+ * the next native paints it. The shadow node falls behind what is drawn; it is brought up to
2884
+ * date with the next commit of the view for anything else, once the view has been left alone
2885
+ * for `PAINT_QUIET_MS`, and before anything measures where it is drawn.
2886
+ *
2887
+ * A view a graph of native's has set a transform or an opacity on before is left to
2888
+ * `setOwned`, which sets each later change of those on native: see `Touched`.
2889
+ */
2890
+ private paintNatively;
2891
+ /** The props other graphs of native's set on a view now. */
2892
+ private heldOn;
2893
+ /**
2894
+ * What is left to commit of a payload native was given: nothing, where all it changed is
2895
+ * painted in a run, and otherwise all of it, with what native painted ahead of the shadow node.
2896
+ */
2897
+ private leftOver;
2898
+ /** Set on native what a view paints, of the props no other graph of native's holds. */
2899
+ private paintNow;
2900
+ /**
2901
+ * Whether a run of changes can hand a view to native: a plain view no animation of native's
2902
+ * plays. A transition native plays is played on the painter's graph from then on, and a prop
2903
+ * another graph holds now is committed as before (`heldOn`).
2904
+ */
2905
+ private paintsHere;
2906
+ /** Have native paint a view, with no props yet: `paintRun` adds them. */
2907
+ private paintFrom;
2908
+ /**
2909
+ * Whether a payload changes paint native could paint, and whether each such change is in a
2910
+ * run, where a run can hand the view over. Takes on each prop in a run, and each a graph of
2911
+ * native's has set on the view, which a commit no longer changes (see `Touched`).
2912
+ * A change in no run is committed as well as painted: a fade a press starts and a transition
2913
+ * that ends are a commit each, as they were, and the shadow node is never behind for them.
2914
+ */
2915
+ private paintRun;
2916
+ /**
2917
+ * Nothing to commit of a change native has painted: the view keeps its shadow node, and its
2918
+ * committed props are what the next change is measured from.
2919
+ */
2920
+ private leftToNative;
2921
+ /** A payload with what native painted ahead of the shadow node, which it brings up to date. */
2922
+ private withStale;
2923
+ /** Have native paint a view from the next change, where this one is the second of a run. */
2924
+ private startPainting;
2925
+ /**
2926
+ * Whether a change of a prop a view paints with is the second of a run, soon after the last.
2927
+ * Two at the same moment are one: an animation's last frame and the style it rests at.
2928
+ */
2929
+ private paintedAgain;
2930
+ /** What a view paints for a key: where a transition native eases it is going, if it is. */
2931
+ private paintedValue;
2932
+ /**
2933
+ * What native is to paint for these keys, and those it cannot take: a colour it cannot
2934
+ * parse. A transform the transform node cannot take, a matrix or a move by a share of a box
2935
+ * with no size yet, is painted whole (`PaintValues.transform`).
2936
+ */
2937
+ private paintValues;
2938
+ /**
2939
+ * An opacity as native is to paint it: no lower than what still takes a touch, on a view that
2940
+ * takes presses, as a commit sends it (`stillTouched`).
2941
+ */
2942
+ private touchedOpacity;
2943
+ /** A transform as native is to paint it, and whether it is a share of the view's box. */
2944
+ private transformPainted;
2945
+ /**
2946
+ * Paint again each view painted with a move by a share of its box, after a commit that can
2947
+ * have resized it: the points it was painted with are a share of the box it had.
2948
+ */
2949
+ private repaintShares;
2950
+ /**
2951
+ * Ease a transition on the graph native paints the view by, from where native has it: a
2952
+ * transition aimed somewhere else every 50ms is a value eased on native each time, with no
2953
+ * commit to start it. One native cannot ease this way is eased from JavaScript, and each of
2954
+ * its frames is painted.
2955
+ */
2956
+ private easePainted;
2957
+ /**
2958
+ * Where a transition on a view native paints starts and ends, as native eases them: null
2959
+ * where either is not numbers, which is eased from JavaScript and each frame painted.
2960
+ */
2961
+ private easedEnds;
2962
+ /** Whether a graph of native's has set a prop on the view the node is committed as. */
2963
+ private owns;
2964
+ /**
2965
+ * Let the painter go, for a graph of an animation to move the view: one graph moves a view,
2966
+ * and what the painter eased goes on from JavaScript.
2967
+ */
2968
+ private leavePainting;
2969
+ /** A payload with what native painted before the painter let the view go: see `leavePainting`. */
2970
+ private synced;
2971
+ /** Take back from native every clock it eases on a view but those of `keys`. */
2972
+ private backToScriptAll;
2973
+ /** Native no longer paints a view, which has left the tree. */
2974
+ private stopPainting;
2975
+ /** Bring every view native paints up to date in the shadow tree, once they are left alone. */
2976
+ private quietLater;
2977
+ /**
2978
+ * Commit what native painted ahead of the shadow tree, on every view it paints: where a view
2979
+ * is drawn takes in the transform of each view its native view is in, which is not always
2980
+ * one of its parents here (a hoisted or fixed box is committed elsewhere).
2981
+ */
2982
+ private commitPainted;
2743
2983
  /** A graph of native's was connected to a view: see `Touched`. */
2744
2984
  private touchedNatively;
2745
2985
  /**
@@ -2756,10 +2996,10 @@ export declare class Engine implements HostEngine {
2756
2996
  /** Let go of what native is easing on an element that is going, or gone. */
2757
2997
  private stopEased;
2758
2998
  /**
2759
- * Whether an animation that has finished goes on holding its last frame. With a forwards fill
2760
- * it does, for good: without one the element falls back to whatever the cascade gives it, and
2761
- * 'backwards' fills the start only. Heard, it holds until whoever listens has been told: see
2762
- * `lettingGo`.
2999
+ * Whether an animation that has finished goes on holding its last frame. With a forwards fill,
3000
+ * or held there by script, it does, for good: without one the element falls back to whatever
3001
+ * the cascade gives it, and 'backwards' fills the start only. Heard, it holds until whoever
3002
+ * listens has been told: see `lettingGo`.
2763
3003
  */
2764
3004
  private keeps;
2765
3005
  /** Whether a node, or an element it is in, is `display: none`. */
@@ -2794,6 +3034,8 @@ export declare class Engine implements HostEngine {
2794
3034
  * undefined key, and Fabric keeps what a clone leaves out.
2795
3035
  */
2796
3036
  private processed;
3037
+ /** Copy a list of colours, each through the host's converter, one it cannot read transparent. */
3038
+ private processColorList;
2797
3039
  /** Copy a list of shadow-like objects, running each `color` through the host's converter. */
2798
3040
  private processNestedColors;
2799
3041
  /**
@@ -3077,6 +3319,13 @@ export declare class Engine implements HostEngine {
3077
3319
  * dropped as a browser drops it. Said once per element name and declaration, in development.
3078
3320
  */
3079
3321
  reportDroppedDeclaration(prop: string, value: string, on: string, why: string): void;
3322
+ private readonly platformColours;
3323
+ /**
3324
+ * Said once per token and props: a colour worked out of a token that holds a platform colour,
3325
+ * which has no channels to work with, is dropped. The compiler says so where one sheet holds
3326
+ * both; a token set in one sheet, or bound, and read in another is only known here.
3327
+ */
3328
+ private reportPlatformColour;
3080
3329
  private readonly unreadDisplays;
3081
3330
  /**
3082
3331
  * Said once per token and value: the compiler refuses `display: grid` written out, but a token
@@ -3216,10 +3465,18 @@ export declare class Engine implements HostEngine {
3216
3465
  * costs the depth of one node, on a touch, and only while something is focused.
3217
3466
  */
3218
3467
  get focused(): EngineNode | null;
3468
+ get focusedField(): EngineNode | null;
3469
+ blurFocused(): void;
3219
3470
  /** Whether a node is still part of the tree, rather than in a subtree that was removed. */
3220
3471
  private isAttached;
3221
3472
  /** The host's `resolveAssetSource`, for a component that needs an asset's size up front. */
3222
3473
  resolveAsset(value: unknown): unknown;
3474
+ /**
3475
+ * A drawing's fill that is no colour the host reads, `contrast` as Highcharts writes one for a
3476
+ * label, as the text's colour: native's own black is lost on a dark shape, and the text's is
3477
+ * seen. A stroke native cannot read is left to be dropped, as a browser drops it.
3478
+ */
3479
+ private fillUnread;
3223
3480
  /** A colour prop as `processed` sends it: one dropped as unreadable is null on an update. */
3224
3481
  private colourProp;
3225
3482
  /**
@@ -3243,12 +3500,24 @@ export declare class Engine implements HostEngine {
3243
3500
  color(value: unknown): unknown;
3244
3501
  /** Root-first, so a capture pass reads forwards and a bubble pass reads backwards. */
3245
3502
  private pathTo;
3503
+ /**
3504
+ * Who asks for the touch: the nodes from the root down to `from`, which is the target, or for a
3505
+ * move while a node holds the touch, the lowest node above both it and the target, as React's
3506
+ * responder plugin walks. A node inside the responder never takes the touch back from it.
3507
+ */
3246
3508
  private negotiate;
3247
3509
  private grant;
3248
3510
  private release;
3249
3511
  private tellNative;
3250
3512
  /** Runs before listener propagation, as React's responder plugin does. */
3251
3513
  private runResponder;
3514
+ /**
3515
+ * Asked on every move, not only while nobody holds the touch: a scroll view or a list row's
3516
+ * swipe actions takes a drag from a pressable inside it this way. The responder answering for
3517
+ * itself keeps the touch, as in React. The move then goes to whoever holds the touch after the
3518
+ * asking, the new responder included.
3519
+ */
3520
+ private moveResponder;
3252
3521
  private registerEventHandler;
3253
3522
  /**
3254
3523
  * Fabric's `(instanceHandle, topLevelType, nativeEvent)` callback.
@@ -3324,7 +3593,10 @@ export declare class Engine implements HostEngine {
3324
3593
  * Stop every scroll view a node is in from scrolling, until the touch ends: one held off hands
3325
3594
  * the drag to the one around it. Telling native who holds the touch does this on Android. On
3326
3595
  * iOS a scroll view is held off only by a responder that is over it, never one inside it, so
3327
- * each is told not to scroll.
3596
+ * each is told not to scroll. The scroll views are the ones native has the node's view in,
3597
+ * which is where the finger is: an element moved with a finger on it stays there until the
3598
+ * finger lifts (see `holdMove`), and CDK's drag and drop moves the item it drags to the body in
3599
+ * the move whose default it prevents.
3328
3600
  */
3329
3601
  private holdScroll;
3330
3602
  /** Settle which way a drag set off, and hold native's own off one that set off across. */