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.
@@ -5978,7 +5978,7 @@ function compileModifiers(eventName, names) {
5978
5978
  return w(this, f, args, ctx);
5979
5979
  };
5980
5980
  }
5981
- var TextNode, CommentNode, ChildsNode, DomNode, FragmentNode, maybeFragment = (xs) => xs.length === 1 ? xs[0] : new FragmentNode(xs), VALID_NODE_RE, ANode, MacroNode, RenderViewId, RenderNode, RenderItNode, RenderEachNode, RenderTextNode, RenderOnceNode, WrapperNode, ShowNode, HideNode, PushViewNameNode, SlotNode, ScopeNode, EachNode, filterAlwaysTrue = (_v, _k, _seq) => true, nullLoopWith = (seq) => ({ seq }), X_OP_CONSUMED, X_OP_WRAPPABLE, X_ATTR_WRAPPERS, WRAPPER_NODES, _htmlBlockTags = "ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CAPTION,COL,COLGROUP,DETAILS,DIALOG,DIV,DD,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HGROUP,HR,LEGEND,LI,MAIN,MENU,NAV,OL,P,PRE,SECTION,SUMMARY,TABLE,TBODY,TD,TFOOT,TH,THEAD,TR,UL", HTML_BLOCK_TAGS, isBlockDomNode = (n) => {
5981
+ var TextNode, CommentNode, ChildsNode, DomNode, FragmentNode, maybeFragment = (xs) => xs.length === 1 ? xs[0] : new FragmentNode(xs), VALID_NODE_RE, ANode, MacroNode, RenderViewId, RenderNode, RenderItNode, RenderEachNode, RenderTextNode, RenderOnceNode, WrapperNode, ShowNode, HideNode, PushViewNameNode, SlotNode, ScopeNode, EachNode, filterAlwaysTrue = (_v, _k, _seq) => true, nullLoopWith = (seq) => ({ iterData: { seq } }), X_OP_CONSUMED, X_OP_WRAPPABLE, X_ATTR_WRAPPERS, WRAPPER_NODES, _htmlBlockTags = "ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CAPTION,COL,COLGROUP,DETAILS,DIALOG,DIV,DD,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HGROUP,HR,LEGEND,LI,MAIN,MENU,NAV,OL,P,PRE,SECTION,SUMMARY,TABLE,TBODY,TD,TFOOT,TH,THEAD,TR,UL", HTML_BLOCK_TAGS, isBlockDomNode = (n) => {
5982
5982
  const node = n instanceof FragmentNode ? n.childs[0] : n;
5983
5983
  return node instanceof DomNode && HTML_BLOCK_TAGS.has(node.tagName);
5984
5984
  }, isMac, fwdIfCtxPred = (pred) => (w) => (that, f, args, ctx) => pred(ctx) ? w(that, f, args, ctx) : that, fwdIfKey = (keyName) => fwdIfCtxPred((ctx) => ctx.e.key === keyName), fwdCtrl, fwdMeta, fwdAlt, metaWraps, MOD_WRAPPERS_BY_EVENT, identityModifierWrapper = (f, _ctx) => f;
@@ -14203,20 +14203,20 @@ class Renderer {
14203
14203
  renderEach(stack, iterInfo, node, viewName) {
14204
14204
  const { seq, filter, loopWith } = iterInfo.eval(stack);
14205
14205
  const r = [];
14206
- const iterData = loopWith.call(stack.it, seq);
14206
+ const { iterData, start, end } = unpackLoopResult(loopWith.call(stack.it, seq), seq);
14207
14207
  getSeqInfo(seq)(seq, (key, value, attrName) => {
14208
14208
  if (filter.call(stack.it, key, value, iterData)) {
14209
14209
  const dom = this.renderIt(stack.enter(value, { key }, true), node, key, viewName);
14210
14210
  this.pushEachEntry(r, node.nodeId, attrName, key, dom);
14211
14211
  }
14212
- });
14212
+ }, start, end);
14213
14213
  return r;
14214
14214
  }
14215
14215
  renderEachWhen(stack, iterInfo, view, nid) {
14216
14216
  const { seq, filter, loopWith, enricher } = iterInfo.eval(stack);
14217
14217
  const r = [];
14218
14218
  const it = stack.it;
14219
- const iterData = loopWith.call(it, seq);
14219
+ const { iterData, start, end } = unpackLoopResult(loopWith.call(it, seq), seq);
14220
14220
  getSeqInfo(seq)(seq, (key, value, attrName) => {
14221
14221
  if (filter.call(it, key, value, iterData)) {
14222
14222
  const cachePath = enricher ? [view, it, value] : [view, value];
@@ -14233,7 +14233,7 @@ class Renderer {
14233
14233
  this.cache.set(cachePath, cacheKey, dom);
14234
14234
  }
14235
14235
  }
14236
- });
14236
+ }, start, end);
14237
14237
  return r;
14238
14238
  }
14239
14239
  renderView(view, stack) {
@@ -14254,13 +14254,29 @@ class Renderer {
14254
14254
  return new VComment(`§${JSON.stringify(info)}§`);
14255
14255
  }
14256
14256
  }
14257
- var DATASET_ATTRS, getSeqInfo = (seq) => isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter, imIndexedIter = (seq, visit) => {
14257
+ var DATASET_ATTRS, getSeqInfo = (seq) => isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter, normalizeRange = (start, end, size) => {
14258
+ let s = start == null ? 0 : start < 0 ? size + start : start;
14259
+ let e = end == null ? size : end < 0 ? size + end : end;
14260
+ s = s < 0 ? 0 : s > size ? size : s;
14261
+ e = e < 0 ? 0 : e > size ? size : e;
14262
+ return [s, e < s ? s : e];
14263
+ }, unpackLoopResult = (result, seq) => {
14264
+ const r = result ?? {};
14265
+ return { iterData: r.iterData ?? { seq }, start: r.start, end: r.end };
14266
+ }, imIndexedIter = (seq, visit, start, end) => {
14267
+ const [s, e] = normalizeRange(start, end, seq.size);
14268
+ for (let i = s;i < e; i++)
14269
+ visit(i, seq.get(i), "si");
14270
+ }, imKeyedIter = (seq, visit, start, end) => {
14271
+ const [s, e] = normalizeRange(start, end, seq.size);
14258
14272
  let i = 0;
14259
- for (const v of seq)
14260
- visit(i++, v, "si");
14261
- }, imKeyedIter = (seq, visit) => {
14262
- for (const [k, v] of seq.toSeq().entries())
14263
- visit(k, v, "sk");
14273
+ for (const [k, v] of seq.toSeq().entries()) {
14274
+ if (i >= e)
14275
+ break;
14276
+ if (i >= s)
14277
+ visit(k, v, "sk");
14278
+ i++;
14279
+ }
14264
14280
  }, unkIter = () => {}, SEQ_INFO;
14265
14281
  var init_renderer = __esm(() => {
14266
14282
  init_immutable();
@@ -9678,7 +9678,7 @@ class IterInfo {
9678
9678
  }
9679
9679
  }
9680
9680
  var filterAlwaysTrue = (_v, _k, _seq) => true;
9681
- var nullLoopWith = (seq) => ({ seq });
9681
+ var nullLoopWith = (seq) => ({ iterData: { seq } });
9682
9682
  var X_OP_CONSUMED = {
9683
9683
  slot: new Set,
9684
9684
  text: new Set,
@@ -14941,20 +14941,20 @@ class Renderer {
14941
14941
  renderEach(stack, iterInfo, node, viewName) {
14942
14942
  const { seq, filter, loopWith } = iterInfo.eval(stack);
14943
14943
  const r = [];
14944
- const iterData = loopWith.call(stack.it, seq);
14944
+ const { iterData, start, end } = unpackLoopResult(loopWith.call(stack.it, seq), seq);
14945
14945
  getSeqInfo(seq)(seq, (key, value, attrName) => {
14946
14946
  if (filter.call(stack.it, key, value, iterData)) {
14947
14947
  const dom = this.renderIt(stack.enter(value, { key }, true), node, key, viewName);
14948
14948
  this.pushEachEntry(r, node.nodeId, attrName, key, dom);
14949
14949
  }
14950
- });
14950
+ }, start, end);
14951
14951
  return r;
14952
14952
  }
14953
14953
  renderEachWhen(stack, iterInfo, view, nid) {
14954
14954
  const { seq, filter, loopWith, enricher } = iterInfo.eval(stack);
14955
14955
  const r = [];
14956
14956
  const it = stack.it;
14957
- const iterData = loopWith.call(it, seq);
14957
+ const { iterData, start, end } = unpackLoopResult(loopWith.call(it, seq), seq);
14958
14958
  getSeqInfo(seq)(seq, (key, value, attrName) => {
14959
14959
  if (filter.call(it, key, value, iterData)) {
14960
14960
  const cachePath = enricher ? [view, it, value] : [view, value];
@@ -14971,7 +14971,7 @@ class Renderer {
14971
14971
  this.cache.set(cachePath, cacheKey, dom);
14972
14972
  }
14973
14973
  }
14974
- });
14974
+ }, start, end);
14975
14975
  return r;
14976
14976
  }
14977
14977
  renderView(view, stack) {
@@ -14993,14 +14993,32 @@ class Renderer {
14993
14993
  }
14994
14994
  }
14995
14995
  var getSeqInfo = (seq) => isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter;
14996
- var imIndexedIter = (seq, visit) => {
14996
+ var normalizeRange = (start, end, size) => {
14997
+ let s = start == null ? 0 : start < 0 ? size + start : start;
14998
+ let e = end == null ? size : end < 0 ? size + end : end;
14999
+ s = s < 0 ? 0 : s > size ? size : s;
15000
+ e = e < 0 ? 0 : e > size ? size : e;
15001
+ return [s, e < s ? s : e];
15002
+ };
15003
+ var unpackLoopResult = (result, seq) => {
15004
+ const r = result ?? {};
15005
+ return { iterData: r.iterData ?? { seq }, start: r.start, end: r.end };
15006
+ };
15007
+ var imIndexedIter = (seq, visit, start, end) => {
15008
+ const [s, e] = normalizeRange(start, end, seq.size);
15009
+ for (let i = s;i < e; i++)
15010
+ visit(i, seq.get(i), "si");
15011
+ };
15012
+ var imKeyedIter = (seq, visit, start, end) => {
15013
+ const [s, e] = normalizeRange(start, end, seq.size);
14997
15014
  let i = 0;
14998
- for (const v of seq)
14999
- visit(i++, v, "si");
15000
- };
15001
- var imKeyedIter = (seq, visit) => {
15002
- for (const [k, v] of seq.toSeq().entries())
15003
- visit(k, v, "sk");
15015
+ for (const [k, v] of seq.toSeq().entries()) {
15016
+ if (i >= e)
15017
+ break;
15018
+ if (i >= s)
15019
+ visit(k, v, "sk");
15020
+ i++;
15021
+ }
15004
15022
  };
15005
15023
  var unkIter = () => {};
15006
15024
  var SEQ_INFO = Symbol.for("tutuca.seqInfo");
@@ -15304,14 +15322,22 @@ function docComponents(normalized, { name = null } = {}) {
15304
15322
  }
15305
15323
  // src/util/testing.js
15306
15324
  var filterAlwaysTrue2 = () => true;
15307
- var nullLoopWith2 = (seq) => ({ seq });
15308
- var plainArrayIter = (seq, visit) => {
15309
- for (let i = 0;i < seq.length; i++)
15325
+ var nullLoopWith2 = (seq) => ({ iterData: { seq } });
15326
+ var plainArrayIter = (seq, visit, start, end) => {
15327
+ const [s, e] = normalizeRange(start, end, seq.length);
15328
+ for (let i = s;i < e; i++)
15310
15329
  visit(i, seq[i]);
15311
15330
  };
15312
- var plainMapIter = (seq, visit) => {
15313
- for (const [k, v] of seq.entries())
15314
- visit(k, v);
15331
+ var plainMapIter = (seq, visit, start, end) => {
15332
+ const [s, e] = normalizeRange(start, end, seq.size);
15333
+ let i = 0;
15334
+ for (const [k, v] of seq.entries()) {
15335
+ if (i >= e)
15336
+ break;
15337
+ if (i >= s)
15338
+ visit(k, v);
15339
+ i++;
15340
+ }
15315
15341
  };
15316
15342
  function pickIter(seq) {
15317
15343
  if (Array.isArray(seq))
@@ -15334,7 +15360,7 @@ function collectIterBindings(Comp, compInstance, seq, opts = {}) {
15334
15360
  const loopWithFn = resolveAlter(Comp, opts.loopWith) ?? nullLoopWith2;
15335
15361
  const enrichFn = resolveAlter(Comp, opts.enrichWith);
15336
15362
  const it = compInstance;
15337
- const iterData = loopWithFn.call(it, seq);
15363
+ const { iterData, start, end } = unpackLoopResult(loopWithFn.call(it, seq), seq);
15338
15364
  const out = [];
15339
15365
  const iter = pickIter(seq);
15340
15366
  iter(seq, (key, value) => {
@@ -15344,7 +15370,7 @@ function collectIterBindings(Comp, compInstance, seq, opts = {}) {
15344
15370
  if (enrichFn)
15345
15371
  enrichFn.call(it, binds, key, value, iterData);
15346
15372
  out.push(binds);
15347
- });
15373
+ }, start, end);
15348
15374
  return out;
15349
15375
  }
15350
15376