tutuca 0.9.64 → 0.9.65

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/tutuca.js CHANGED
@@ -6383,7 +6383,7 @@ class IterInfo {
6383
6383
  }
6384
6384
  }
6385
6385
  var filterAlwaysTrue = (_v, _k, _seq) => true;
6386
- var nullLoopWith = (seq) => ({ seq });
6386
+ var nullLoopWith = (seq) => ({ iterData: { seq } });
6387
6387
  var X_OP_CONSUMED = {
6388
6388
  slot: new Set,
6389
6389
  text: new Set,
@@ -7660,20 +7660,20 @@ class Renderer {
7660
7660
  renderEach(stack, iterInfo, node, viewName) {
7661
7661
  const { seq, filter, loopWith } = iterInfo.eval(stack);
7662
7662
  const r = [];
7663
- const iterData = loopWith.call(stack.it, seq);
7663
+ const { iterData, start, end } = unpackLoopResult(loopWith.call(stack.it, seq), seq);
7664
7664
  getSeqInfo(seq)(seq, (key, value, attrName) => {
7665
7665
  if (filter.call(stack.it, key, value, iterData)) {
7666
7666
  const dom = this.renderIt(stack.enter(value, { key }, true), node, key, viewName);
7667
7667
  this.pushEachEntry(r, node.nodeId, attrName, key, dom);
7668
7668
  }
7669
- });
7669
+ }, start, end);
7670
7670
  return r;
7671
7671
  }
7672
7672
  renderEachWhen(stack, iterInfo, view, nid) {
7673
7673
  const { seq, filter, loopWith, enricher } = iterInfo.eval(stack);
7674
7674
  const r = [];
7675
7675
  const it = stack.it;
7676
- const iterData = loopWith.call(it, seq);
7676
+ const { iterData, start, end } = unpackLoopResult(loopWith.call(it, seq), seq);
7677
7677
  getSeqInfo(seq)(seq, (key, value, attrName) => {
7678
7678
  if (filter.call(it, key, value, iterData)) {
7679
7679
  const cachePath = enricher ? [view, it, value] : [view, value];
@@ -7690,7 +7690,7 @@ class Renderer {
7690
7690
  this.cache.set(cachePath, cacheKey, dom);
7691
7691
  }
7692
7692
  }
7693
- });
7693
+ }, start, end);
7694
7694
  return r;
7695
7695
  }
7696
7696
  renderView(view, stack) {
@@ -7712,14 +7712,32 @@ class Renderer {
7712
7712
  }
7713
7713
  }
7714
7714
  var getSeqInfo = (seq) => isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter;
7715
- var imIndexedIter = (seq, visit) => {
7716
- let i = 0;
7717
- for (const v of seq)
7718
- visit(i++, v, "si");
7715
+ var normalizeRange = (start, end, size) => {
7716
+ let s = start == null ? 0 : start < 0 ? size + start : start;
7717
+ let e = end == null ? size : end < 0 ? size + end : end;
7718
+ s = s < 0 ? 0 : s > size ? size : s;
7719
+ e = e < 0 ? 0 : e > size ? size : e;
7720
+ return [s, e < s ? s : e];
7721
+ };
7722
+ var unpackLoopResult = (result, seq) => {
7723
+ const r = result ?? {};
7724
+ return { iterData: r.iterData ?? { seq }, start: r.start, end: r.end };
7719
7725
  };
7720
- var imKeyedIter = (seq, visit) => {
7721
- for (const [k, v] of seq.toSeq().entries())
7722
- visit(k, v, "sk");
7726
+ var imIndexedIter = (seq, visit, start, end) => {
7727
+ const [s, e] = normalizeRange(start, end, seq.size);
7728
+ for (let i = s;i < e; i++)
7729
+ visit(i, seq.get(i), "si");
7730
+ };
7731
+ var imKeyedIter = (seq, visit, start, end) => {
7732
+ const [s, e] = normalizeRange(start, end, seq.size);
7733
+ let i = 0;
7734
+ for (const [k, v] of seq.toSeq().entries()) {
7735
+ if (i >= e)
7736
+ break;
7737
+ if (i >= s)
7738
+ visit(k, v, "sk");
7739
+ i++;
7740
+ }
7723
7741
  };
7724
7742
  var unkIter = () => {};
7725
7743
  var SEQ_INFO = Symbol.for("tutuca.seqInfo");