@blotch/angular-lynx 22.2.10 → 22.2.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blotch/angular-lynx",
3
- "version": "22.2.10",
3
+ "version": "22.2.11",
4
4
  "description": "Angular renderer for the Lynx cross-platform native UI framework",
5
5
  "homepage": "https://github.com/Blotch-Smart-Frames/AngularLynx#readme",
6
6
  "bugs": {
@@ -4158,6 +4158,18 @@ declare class LayoutTracker {
4158
4158
  */
4159
4159
  observe(observer: (rect: LayoutRect) => void): () => void;
4160
4160
  }
4161
+ /**
4162
+ * Gives a new scroll-view or list a `scroll` handler on iOS, so that a
4163
+ * listener added later hears its scroll events. iOS's scroll-view
4164
+ * (LynxUIScroller) and list (LynxUIListScroll) hand their scroll event
4165
+ * manager the element's event set the first time they're told of one, as the
4166
+ * UI is made, and never a later one. So a scroll handler added after that is
4167
+ * never called, even after a flush: an IntersectionObserver with options adds
4168
+ * one once it has measured its element, which is laid out by then. The
4169
+ * handler does nothing; the listeners added later share it (see
4170
+ * #syncNativeHandler), and Android, which reads the set afresh, needs none.
4171
+ */
4172
+ declare const listenForScrollsFromTheStart: (element: LynxElement) => void;
4161
4173
  declare class LynxElement implements BaseLynxElement {
4162
4174
  #private;
4163
4175
  get element(): ElementRef;
@@ -4187,11 +4199,34 @@ declare class LynxElement implements BaseLynxElement {
4187
4199
  constructor(element: ElementRef);
4188
4200
  /**
4189
4201
  * Drops this wrapper's current native id from the registry. Called when the
4190
- * native ref is swapped (recreate-on-remount) for the STALE id, and by the
4191
- * renderer's destroyNode when Angular tears the element down, so the registry
4192
- * doesn't retain wrappers for dead native refs.
4202
+ * native ref is swapped (recreate-on-remount) for the STALE id, and when the
4203
+ * element is released after Angular destroyed it (see #release), so the
4204
+ * registry doesn't retain wrappers for dead native refs.
4193
4205
  */
4194
4206
  deregisterNative(): void;
4207
+ /**
4208
+ * @internal Angular destroyed this element: the renderer's destroyNode.
4209
+ *
4210
+ * Angular calls destroyNode only for a destroyed view's top-level nodes.
4211
+ * `destroyLView` walks them with `applyView`, which never descends into an
4212
+ * element's children, and the views nested in it (embedded views, child
4213
+ * components' views) are cleaned up by `destroyViewTree` without the
4214
+ * renderer. So this element releases its whole subtree (see #release),
4215
+ * whatever views the elements under it belong to.
4216
+ *
4217
+ * It waits for the commit at the end of the cycle (see
4218
+ * #commitPendingReleases), when the cycle's moves are done: an element
4219
+ * moved out of the subtree in the meantime, as CDK's DomPortal hands its
4220
+ * element back when it's destroyed, isn't under this one any more and
4221
+ * stays registered. An element still in the tree then (a leave animation
4222
+ * delays Angular's removal) is released when its removal commits.
4223
+ */
4224
+ markDestroyed(): void;
4225
+ /**
4226
+ * @internal The children this element keeps out of `#children`, which a
4227
+ * release must reach too: a list's items (see LynxListElement). None here.
4228
+ */
4229
+ virtualChildren(): LynxElement[];
4195
4230
  /**
4196
4231
  * The document stand-in (see global-events), as a DOM element's is its
4197
4232
  * document. Angular resolves a `document:` or `body:` host listener's
@@ -4370,6 +4405,24 @@ declare class LynxElement implements BaseLynxElement {
4370
4405
  * The box from the element's last layout, or null before the first.
4371
4406
  */
4372
4407
  get layoutRect(): LayoutRect | null;
4408
+ /**
4409
+ * Leaves the element's handler for `eventName` to a main-thread directive
4410
+ * (`[mainThreadBindscroll]` and the like), which registers its own with
4411
+ * `__AddEvent`. Lynx keeps one handler per event name (see nativeEventKey),
4412
+ * so registering the element's own afterwards would replace the
4413
+ * directive's: an IntersectionObserver with options, listening for a
4414
+ * scroll-view's scroll events, would stop the app's main-thread scroll
4415
+ * handler. Until releaseNativeEvent, the element's listeners for the event
4416
+ * aren't registered natively, and don't hear it, as they didn't when the
4417
+ * directive registered after them. Counted, as `mainThreadBindscroll` and
4418
+ * `mainThreadCatchscroll` share one.
4419
+ */
4420
+ holdNativeEvent(eventName: string): void;
4421
+ /**
4422
+ * Hands `eventName` back once the directive has removed its handler, and
4423
+ * registers the element's own for the listeners it has for it.
4424
+ */
4425
+ releaseNativeEvent(eventName: string): void;
4373
4426
  }
4374
4427
  /**
4375
4428
  * Commits all queued genuine element removals — a free-function wrapper over
@@ -5922,6 +5975,12 @@ declare class LynxListElement extends LynxElement {
5922
5975
  * for the general "never key a Set/Map on an element ref" constraint.
5923
5976
  */
5924
5977
  getUIChildren(): ElementRef[];
5978
+ /**
5979
+ * The items, anchors included: they live in this linked list, not in the
5980
+ * `#children` a release walks, and a list in a destroyed view must let
5981
+ * them go too (see LynxElement.virtualChildren).
5982
+ */
5983
+ virtualChildren(): LynxElement[];
5925
5984
  /**
5926
5985
  * The UI children list as of the last _processUpdate() call, pre-filtered
5927
5986
  * and cached — for componentAtIndex/componentAtIndexes (create-list-element.ts)