@jsenv/navi 0.30.39 → 0.30.40

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.
@@ -83662,6 +83662,17 @@ const createListItems = () => {
83662
83662
  }
83663
83663
  return null;
83664
83664
  },
83665
+ // Whether a run stands for the item at that index without holding it: the
83666
+ // page it belongs to has not answered yet. An id missing from what the runs
83667
+ // hold says the item is gone only once the page where it stood is in.
83668
+ itemOnItsWayAt: (index) => {
83669
+ for (const locator of locatorByOwner.values()) {
83670
+ if (locator.awaits(index)) {
83671
+ return true;
83672
+ }
83673
+ }
83674
+ return false;
83675
+ },
83665
83676
  // The room the item at that index takes: the room it took when it was
83666
83677
  // last drawn, else the room its run is given for it (see List.Items'
83667
83678
  // itemSize), else undefined.
@@ -86636,10 +86647,14 @@ const useListScrollSync = ({
86636
86647
  // Not there yet, but where it stood is drawn already: the item
86637
86648
  // standing in for it at that index (see holdWindow). The list is placed
86638
86649
  // on that one, measured like any other, and the named item takes over
86639
- // where it lands.
86640
- if (listItems.pagesSignal.peek() === 0) {
86641
- if (typeof scrolledWanted.index === "number") {
86642
- placeItem(findItemElementAt(getListEl(), scrolledWanted.index), scrolledWanted.offset || 0, scrolledWanted.align);
86650
+ // where it lands. Held for as long as the page at that index has not
86651
+ // answered — the first one, or the one a press sends the list to: only
86652
+ // an answer without the item says it is gone.
86653
+ const standInIndex = scrolledWanted.index;
86654
+ const hasStandIn = typeof standInIndex === "number";
86655
+ if (listItems.pagesSignal.peek() === 0 || hasStandIn && listItems.itemOnItsWayAt(standInIndex)) {
86656
+ if (hasStandIn) {
86657
+ placeItem(findItemElementAt(getListEl(), standInIndex), scrolledWanted.offset || 0, scrolledWanted.align);
86643
86658
  }
86644
86659
  return;
86645
86660
  }
@@ -90204,6 +90219,7 @@ const useRunItems = (store, {
90204
90219
  });
90205
90220
  return found;
90206
90221
  },
90222
+ awaits: itemIndex => itemIndex >= runStart && itemIndex < runEnd && getItemAt(itemIndex) === undefined,
90207
90223
  roomAt: roomOf,
90208
90224
  givenRoomAt: givenRoomOf
90209
90225
  });