bobe 0.0.27 → 0.0.28

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/bobe.esm.js CHANGED
@@ -195,6 +195,8 @@ function macInc(arr) {
195
195
  return candyLast;
196
196
  }
197
197
 
198
+ const KEY_INDEX = '__BOBE_KEY_INDEX';
199
+
198
200
  const _excluded = ["dentStack", "isFirstToken"];
199
201
  class Interpreter {
200
202
  constructor(tokenizer) {
@@ -539,9 +541,9 @@ class Interpreter {
539
541
  }
540
542
  if (s > e1) {
541
543
  if (s <= e2) {
542
- const lastAfter = children.at(-1)?.realAfter || forNode.realBefore;
544
+ const firstBefore = s > 0 ? children.at(-1)?.realAfter || forNode.realBefore : forNode.realBefore;
543
545
  for (let i = e2; i >= s; i--) {
544
- this.insertForItem(forNode, i, data, newChildren, lastAfter, snapshotForUpdate);
546
+ this.insertForItem(forNode, i, data, newChildren, firstBefore, snapshotForUpdate);
545
547
  }
546
548
  }
547
549
  } else if (s > e2) {
@@ -664,6 +666,9 @@ class Interpreter {
664
666
  if (indexName) {
665
667
  child.data[indexName] = i;
666
668
  }
669
+ } else {
670
+ indexName = indexName || KEY_INDEX;
671
+ child.data[indexName] = i;
667
672
  }
668
673
  }
669
674
  forItemId = 0;
@@ -693,9 +698,10 @@ class Interpreter {
693
698
  getItemData(forNode, i, parentData) {
694
699
  const arr = forNode.arr,
695
700
  itemExp = forNode.itemExp,
696
- indexName = forNode.indexName,
697
701
  vars = forNode.vars,
698
- arrSignal = forNode.arrSignal;
702
+ arrSignal = forNode.arrSignal,
703
+ getKey = forNode.getKey;
704
+ let indexName = forNode.indexName;
699
705
  let data;
700
706
  if (typeof itemExp === 'string') {
701
707
  data = deepSignal(indexName ? {
@@ -705,13 +711,16 @@ class Interpreter {
705
711
  [itemExp]: arr[i]
706
712
  }, getPulling());
707
713
  } else {
708
- data = deepSignal(indexName ? {
714
+ indexName = indexName ?? KEY_INDEX;
715
+ const rawData = {
709
716
  [indexName]: i
710
- } : {}, getPulling());
711
- const computedData = new Computed(() => itemExp(arrSignal.get()[i]));
717
+ };
718
+ data = deepSignal(rawData, getPulling());
719
+ const computedData = new Computed(() => itemExp(arrSignal.get()[getKey ? data[indexName] : i]));
712
720
  const cells = data[Keys.Meta].cells;
713
721
  for (let i = 0; i < vars.length; i++) {
714
722
  const name = vars[i];
723
+ rawData[name] = undefined;
715
724
  cells.set(name, new Computed(() => computedData.get()[name]));
716
725
  }
717
726
  }