react-dom 19.2.0-canary-462d08f9-20250517 → 19.2.0-canary-c4676e72-20250520

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.
@@ -41,6 +41,14 @@
41
41
  function scriptReplacer(match, prefix, s, suffix) {
42
42
  return "" + prefix + ("s" === s ? "\\u0073" : "\\u0053") + suffix;
43
43
  }
44
+ function getIteratorFn(maybeIterable) {
45
+ if (null === maybeIterable || "object" !== typeof maybeIterable)
46
+ return null;
47
+ maybeIterable =
48
+ (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
49
+ maybeIterable["@@iterator"];
50
+ return "function" === typeof maybeIterable ? maybeIterable : null;
51
+ }
44
52
  function objectName(object) {
45
53
  return Object.prototype.toString
46
54
  .call(object)
@@ -4586,6 +4594,7 @@
4586
4594
  null,
4587
4595
  emptyTreeContext,
4588
4596
  null,
4597
+ null,
4589
4598
  emptyContextObject,
4590
4599
  null
4591
4600
  );
@@ -4641,15 +4650,17 @@
4641
4650
  }
4642
4651
  function createSuspenseBoundary(
4643
4652
  request,
4653
+ row,
4644
4654
  fallbackAbortableTasks,
4645
4655
  contentPreamble,
4646
4656
  fallbackPreamble
4647
4657
  ) {
4648
- return {
4658
+ fallbackAbortableTasks = {
4649
4659
  status: PENDING,
4650
4660
  rootSegmentID: -1,
4651
4661
  parentFlushed: !1,
4652
4662
  pendingTasks: 0,
4663
+ row: row,
4653
4664
  completedSegments: [],
4654
4665
  byteSize: 0,
4655
4666
  fallbackAbortableTasks: fallbackAbortableTasks,
@@ -4664,6 +4675,14 @@
4664
4675
  errorStack: null,
4665
4676
  errorComponentStack: null
4666
4677
  };
4678
+ null !== row &&
4679
+ (row.pendingTasks++,
4680
+ (row = row.boundaries),
4681
+ null !== row &&
4682
+ (request.allPendingTasks++,
4683
+ fallbackAbortableTasks.pendingTasks++,
4684
+ row.push(fallbackAbortableTasks)));
4685
+ return fallbackAbortableTasks;
4667
4686
  }
4668
4687
  function createRenderTask(
4669
4688
  request,
@@ -4679,6 +4698,7 @@
4679
4698
  formatContext,
4680
4699
  context,
4681
4700
  treeContext,
4701
+ row,
4682
4702
  componentStack,
4683
4703
  legacyContext,
4684
4704
  debugTask
@@ -4687,6 +4707,7 @@
4687
4707
  null === blockedBoundary
4688
4708
  ? request.pendingRootTasks++
4689
4709
  : blockedBoundary.pendingTasks++;
4710
+ null !== row && row.pendingTasks++;
4690
4711
  var task = {
4691
4712
  replay: null,
4692
4713
  node: node,
@@ -4703,6 +4724,7 @@
4703
4724
  formatContext: formatContext,
4704
4725
  context: context,
4705
4726
  treeContext: treeContext,
4727
+ row: row,
4706
4728
  componentStack: componentStack,
4707
4729
  thenableState: thenableState
4708
4730
  };
@@ -4723,6 +4745,7 @@
4723
4745
  formatContext,
4724
4746
  context,
4725
4747
  treeContext,
4748
+ row,
4726
4749
  componentStack,
4727
4750
  legacyContext,
4728
4751
  debugTask
@@ -4731,6 +4754,7 @@
4731
4754
  null === blockedBoundary
4732
4755
  ? request.pendingRootTasks++
4733
4756
  : blockedBoundary.pendingTasks++;
4757
+ null !== row && row.pendingTasks++;
4734
4758
  replay.pendingTasks++;
4735
4759
  var task = {
4736
4760
  replay: replay,
@@ -4748,6 +4772,7 @@
4748
4772
  formatContext: formatContext,
4749
4773
  context: context,
4750
4774
  treeContext: treeContext,
4775
+ row: row,
4751
4776
  componentStack: componentStack,
4752
4777
  thenableState: thenableState
4753
4778
  };
@@ -4934,6 +4959,141 @@
4934
4959
  closeWithError(request.destination, error))
4935
4960
  : ((request.status = 13), (request.fatalError = error));
4936
4961
  }
4962
+ function finishSuspenseListRow(request, row) {
4963
+ for (row = row.next; null !== row; ) {
4964
+ var unblockedBoundaries = row.boundaries;
4965
+ if (null !== unblockedBoundaries) {
4966
+ row.boundaries = null;
4967
+ for (var i = 0; i < unblockedBoundaries.length; i++)
4968
+ finishedTask(request, unblockedBoundaries[i], null, null);
4969
+ }
4970
+ row.pendingTasks--;
4971
+ if (0 < row.pendingTasks) break;
4972
+ row = row.next;
4973
+ }
4974
+ }
4975
+ function createSuspenseListRow(previousRow) {
4976
+ var newRow = { pendingTasks: 1, boundaries: null, next: null };
4977
+ null !== previousRow &&
4978
+ 0 < previousRow.pendingTasks &&
4979
+ (newRow.pendingTasks++,
4980
+ (newRow.boundaries = []),
4981
+ (previousRow.next = newRow));
4982
+ return newRow;
4983
+ }
4984
+ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4985
+ keyPath = task.keyPath;
4986
+ var previousComponentStack = task.componentStack;
4987
+ var previousDebugTask = task.debugTask;
4988
+ pushServerComponentStack(task, task.node.props.children._debugInfo);
4989
+ var prevTreeContext = task.treeContext,
4990
+ prevRow = task.row,
4991
+ totalChildren = rows.length,
4992
+ previousSuspenseListRow = null;
4993
+ if (null !== task.replay) {
4994
+ var resumeSlots = task.replay.slots;
4995
+ if (null !== resumeSlots && "object" === typeof resumeSlots)
4996
+ for (var n = 0; n < totalChildren; n++) {
4997
+ var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
4998
+ node = rows[i];
4999
+ task.row = previousSuspenseListRow = createSuspenseListRow(
5000
+ previousSuspenseListRow
5001
+ );
5002
+ task.treeContext = pushTreeContext(
5003
+ prevTreeContext,
5004
+ totalChildren,
5005
+ i
5006
+ );
5007
+ var resumeSegmentID = resumeSlots[i];
5008
+ "number" === typeof resumeSegmentID
5009
+ ? (resumeNode(request, task, resumeSegmentID, node, i),
5010
+ delete resumeSlots[i])
5011
+ : renderNode(request, task, node, i);
5012
+ 0 === --previousSuspenseListRow.pendingTasks &&
5013
+ finishSuspenseListRow(request, previousSuspenseListRow);
5014
+ }
5015
+ else
5016
+ for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
5017
+ (n =
5018
+ "backwards" !== revealOrder
5019
+ ? resumeSlots
5020
+ : totalChildren - 1 - resumeSlots),
5021
+ (i = rows[n]),
5022
+ warnForMissingKey(request, task, i),
5023
+ (task.row = previousSuspenseListRow =
5024
+ createSuspenseListRow(previousSuspenseListRow)),
5025
+ (task.treeContext = pushTreeContext(
5026
+ prevTreeContext,
5027
+ totalChildren,
5028
+ n
5029
+ )),
5030
+ renderNode(request, task, i, n),
5031
+ 0 === --previousSuspenseListRow.pendingTasks &&
5032
+ finishSuspenseListRow(request, previousSuspenseListRow);
5033
+ } else if ("backwards" !== revealOrder)
5034
+ for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
5035
+ (resumeSlots = rows[revealOrder]),
5036
+ warnForMissingKey(request, task, resumeSlots),
5037
+ (task.row = previousSuspenseListRow =
5038
+ createSuspenseListRow(previousSuspenseListRow)),
5039
+ (task.treeContext = pushTreeContext(
5040
+ prevTreeContext,
5041
+ totalChildren,
5042
+ revealOrder
5043
+ )),
5044
+ renderNode(request, task, resumeSlots, revealOrder),
5045
+ 0 === --previousSuspenseListRow.pendingTasks &&
5046
+ finishSuspenseListRow(request, previousSuspenseListRow);
5047
+ else {
5048
+ revealOrder = task.blockedSegment;
5049
+ resumeSlots = revealOrder.children.length;
5050
+ n = revealOrder.chunks.length;
5051
+ for (i = totalChildren - 1; 0 <= i; i--) {
5052
+ node = rows[i];
5053
+ task.row = previousSuspenseListRow = createSuspenseListRow(
5054
+ previousSuspenseListRow
5055
+ );
5056
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
5057
+ resumeSegmentID = createPendingSegment(
5058
+ request,
5059
+ n,
5060
+ null,
5061
+ task.formatContext,
5062
+ 0 === i ? revealOrder.lastPushedText : !0,
5063
+ !0
5064
+ );
5065
+ revealOrder.children.splice(resumeSlots, 0, resumeSegmentID);
5066
+ task.blockedSegment = resumeSegmentID;
5067
+ warnForMissingKey(request, task, node);
5068
+ try {
5069
+ renderNode(request, task, node, i),
5070
+ resumeSegmentID.lastPushedText &&
5071
+ resumeSegmentID.textEmbedded &&
5072
+ resumeSegmentID.chunks.push(textSeparator),
5073
+ (resumeSegmentID.status = COMPLETED),
5074
+ finishedSegment(request, task.blockedBoundary, resumeSegmentID),
5075
+ 0 === --previousSuspenseListRow.pendingTasks &&
5076
+ finishSuspenseListRow(request, previousSuspenseListRow);
5077
+ } catch (thrownValue) {
5078
+ throw (
5079
+ ((resumeSegmentID.status = 12 === request.status ? ABORTED : 4),
5080
+ thrownValue)
5081
+ );
5082
+ }
5083
+ }
5084
+ task.blockedSegment = revealOrder;
5085
+ revealOrder.lastPushedText = !1;
5086
+ }
5087
+ null !== prevRow &&
5088
+ null !== previousSuspenseListRow &&
5089
+ 0 < previousSuspenseListRow.pendingTasks &&
5090
+ (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
5091
+ task.treeContext = prevTreeContext;
5092
+ task.row = prevRow;
5093
+ task.keyPath = keyPath;
5094
+ task.componentStack = previousComponentStack;
5095
+ task.debugTask = previousDebugTask;
5096
+ }
4937
5097
  function renderWithHooks(
4938
5098
  request,
4939
5099
  task,
@@ -5507,6 +5667,7 @@
5507
5667
  task.formatContext,
5508
5668
  task.context,
5509
5669
  task.treeContext,
5670
+ task.row,
5510
5671
  task.componentStack,
5511
5672
  emptyContextObject,
5512
5673
  task.debugTask
@@ -5590,10 +5751,53 @@
5590
5751
  }
5591
5752
  return;
5592
5753
  case REACT_SUSPENSE_LIST_TYPE:
5593
- var _prevKeyPath4 = task.keyPath;
5594
- task.keyPath = keyPath;
5595
- renderNodeDestructive(request, task, props.children, -1);
5596
- task.keyPath = _prevKeyPath4;
5754
+ a: {
5755
+ var children$jscomp$0 = props.children,
5756
+ revealOrder = props.revealOrder;
5757
+ if ("forwards" === revealOrder || "backwards" === revealOrder) {
5758
+ if (isArrayImpl(children$jscomp$0)) {
5759
+ renderSuspenseListRows(
5760
+ request,
5761
+ task,
5762
+ keyPath,
5763
+ children$jscomp$0,
5764
+ revealOrder
5765
+ );
5766
+ break a;
5767
+ }
5768
+ var iteratorFn = getIteratorFn(children$jscomp$0);
5769
+ if (iteratorFn) {
5770
+ var iterator = iteratorFn.call(children$jscomp$0);
5771
+ if (iterator) {
5772
+ validateIterable(
5773
+ task,
5774
+ children$jscomp$0,
5775
+ -1,
5776
+ iterator,
5777
+ iteratorFn
5778
+ );
5779
+ var step = iterator.next();
5780
+ if (!step.done) {
5781
+ var rows = [];
5782
+ do rows.push(step.value), (step = iterator.next());
5783
+ while (!step.done);
5784
+ renderSuspenseListRows(
5785
+ request,
5786
+ task,
5787
+ keyPath,
5788
+ children$jscomp$0,
5789
+ revealOrder
5790
+ );
5791
+ }
5792
+ break a;
5793
+ }
5794
+ }
5795
+ }
5796
+ var prevKeyPath$jscomp$3 = task.keyPath;
5797
+ task.keyPath = keyPath;
5798
+ renderNodeDestructive(request, task, children$jscomp$0, -1);
5799
+ task.keyPath = prevKeyPath$jscomp$3;
5800
+ }
5597
5801
  return;
5598
5802
  case REACT_VIEW_TRANSITION_TYPE:
5599
5803
  case REACT_SCOPE_TYPE:
@@ -5603,22 +5807,26 @@
5603
5807
  case REACT_SUSPENSE_TYPE:
5604
5808
  a: if (null !== task.replay) {
5605
5809
  var _prevKeyPath = task.keyPath,
5606
- _prevContext = task.formatContext;
5810
+ _prevContext = task.formatContext,
5811
+ _prevRow = task.row;
5607
5812
  task.keyPath = keyPath;
5608
5813
  task.formatContext = getSuspenseContentFormatContext(
5609
5814
  request.resumableState,
5610
5815
  _prevContext
5611
5816
  );
5817
+ task.row = null;
5612
5818
  var _content = props.children;
5613
5819
  try {
5614
5820
  renderNode(request, task, _content, -1);
5615
5821
  } finally {
5616
5822
  (task.keyPath = _prevKeyPath),
5617
- (task.formatContext = _prevContext);
5823
+ (task.formatContext = _prevContext),
5824
+ (task.row = _prevRow);
5618
5825
  }
5619
5826
  } else {
5620
- var prevKeyPath$jscomp$3 = task.keyPath,
5827
+ var prevKeyPath$jscomp$4 = task.keyPath,
5621
5828
  prevContext$jscomp$0 = task.formatContext,
5829
+ prevRow = task.row,
5622
5830
  parentBoundary = task.blockedBoundary,
5623
5831
  parentPreamble = task.blockedPreamble,
5624
5832
  parentHoistableState = task.hoistableState,
@@ -5630,12 +5838,14 @@
5630
5838
  task.formatContext.insertionMode < HTML_MODE
5631
5839
  ? createSuspenseBoundary(
5632
5840
  request,
5841
+ task.row,
5633
5842
  fallbackAbortSet,
5634
5843
  createPreambleState(),
5635
5844
  createPreambleState()
5636
5845
  )
5637
5846
  : createSuspenseBoundary(
5638
5847
  request,
5848
+ task.row,
5639
5849
  fallbackAbortSet,
5640
5850
  null,
5641
5851
  null
@@ -5695,13 +5905,14 @@
5695
5905
  finishedSegment(request, parentBoundary, boundarySegment);
5696
5906
  } catch (thrownValue) {
5697
5907
  throw (
5698
- ((boundarySegment.status = 12 === request.status ? 3 : 4),
5908
+ ((boundarySegment.status =
5909
+ 12 === request.status ? ABORTED : 4),
5699
5910
  thrownValue)
5700
5911
  );
5701
5912
  } finally {
5702
5913
  (task.blockedSegment = parentSegment),
5703
5914
  (task.blockedPreamble = parentPreamble),
5704
- (task.keyPath = prevKeyPath$jscomp$3),
5915
+ (task.keyPath = prevKeyPath$jscomp$4),
5705
5916
  (task.formatContext = prevContext$jscomp$0);
5706
5917
  }
5707
5918
  var suspendedPrimaryTask = createRenderTask(
@@ -5721,6 +5932,7 @@
5721
5932
  ),
5722
5933
  task.context,
5723
5934
  task.treeContext,
5935
+ null,
5724
5936
  task.componentStack,
5725
5937
  emptyContextObject,
5726
5938
  task.debugTask
@@ -5737,6 +5949,7 @@
5737
5949
  request.resumableState,
5738
5950
  prevContext$jscomp$0
5739
5951
  );
5952
+ task.row = null;
5740
5953
  contentRootSegment.status = 6;
5741
5954
  try {
5742
5955
  if (
@@ -5752,6 +5965,9 @@
5752
5965
  ((newBoundary.status = COMPLETED),
5753
5966
  !(500 < newBoundary.byteSize)))
5754
5967
  ) {
5968
+ null !== prevRow &&
5969
+ 0 === --prevRow.pendingTasks &&
5970
+ finishSuspenseListRow(request, prevRow);
5755
5971
  0 === request.pendingRootTasks &&
5756
5972
  task.blockedPreamble &&
5757
5973
  preparePreamble(request);
@@ -5760,7 +5976,7 @@
5760
5976
  } catch (thrownValue$2) {
5761
5977
  newBoundary.status = CLIENT_RENDERED;
5762
5978
  if (12 === request.status) {
5763
- contentRootSegment.status = 3;
5979
+ contentRootSegment.status = ABORTED;
5764
5980
  var error = request.fatalError;
5765
5981
  } else
5766
5982
  (contentRootSegment.status = 4), (error = thrownValue$2);
@@ -5784,8 +6000,9 @@
5784
6000
  (task.blockedPreamble = parentPreamble),
5785
6001
  (task.hoistableState = parentHoistableState),
5786
6002
  (task.blockedSegment = parentSegment),
5787
- (task.keyPath = prevKeyPath$jscomp$3),
5788
- (task.formatContext = prevContext$jscomp$0);
6003
+ (task.keyPath = prevKeyPath$jscomp$4),
6004
+ (task.formatContext = prevContext$jscomp$0),
6005
+ (task.row = prevRow);
5789
6006
  }
5790
6007
  var suspendedFallbackTask = createRenderTask(
5791
6008
  request,
@@ -5804,6 +6021,7 @@
5804
6021
  ),
5805
6022
  task.context,
5806
6023
  task.treeContext,
6024
+ task.row,
5807
6025
  task.componentStack,
5808
6026
  emptyContextObject,
5809
6027
  task.debugTask
@@ -5822,7 +6040,7 @@
5822
6040
  for (var key in props)
5823
6041
  "ref" !== key && (propsWithoutRef[key] = props[key]);
5824
6042
  } else propsWithoutRef = props;
5825
- var children$jscomp$0 = renderWithHooks(
6043
+ var children$jscomp$1 = renderWithHooks(
5826
6044
  request,
5827
6045
  task,
5828
6046
  keyPath,
@@ -5834,7 +6052,7 @@
5834
6052
  request,
5835
6053
  task,
5836
6054
  keyPath,
5837
- children$jscomp$0,
6055
+ children$jscomp$1,
5838
6056
  0 !== localIdCounter,
5839
6057
  actionStateCounter,
5840
6058
  actionStateMatchingIndex
@@ -5846,9 +6064,9 @@
5846
6064
  case REACT_PROVIDER_TYPE:
5847
6065
  case REACT_CONTEXT_TYPE:
5848
6066
  var value$jscomp$0 = props.value,
5849
- children$jscomp$1 = props.children;
6067
+ children$jscomp$2 = props.children;
5850
6068
  var prevSnapshot = task.context;
5851
- var prevKeyPath$jscomp$4 = task.keyPath;
6069
+ var prevKeyPath$jscomp$5 = task.keyPath;
5852
6070
  var prevValue = type._currentValue;
5853
6071
  type._currentValue = value$jscomp$0;
5854
6072
  void 0 !== type._currentRenderer &&
@@ -5869,7 +6087,7 @@
5869
6087
  currentActiveSnapshot = newNode;
5870
6088
  task.context = newNode;
5871
6089
  task.keyPath = keyPath;
5872
- renderNodeDestructive(request, task, children$jscomp$1, -1);
6090
+ renderNodeDestructive(request, task, children$jscomp$2, -1);
5873
6091
  var prevSnapshot$jscomp$0 = currentActiveSnapshot;
5874
6092
  if (null === prevSnapshot$jscomp$0)
5875
6093
  throw Error(
@@ -5891,7 +6109,7 @@
5891
6109
  var JSCompiler_inline_result$jscomp$0 = (currentActiveSnapshot =
5892
6110
  prevSnapshot$jscomp$0.parent);
5893
6111
  task.context = JSCompiler_inline_result$jscomp$0;
5894
- task.keyPath = prevKeyPath$jscomp$4;
6112
+ task.keyPath = prevKeyPath$jscomp$5;
5895
6113
  prevSnapshot !== task.context &&
5896
6114
  console.error(
5897
6115
  "Popping the context provider did not return back to the original snapshot. This is a bug in React."
@@ -5905,10 +6123,10 @@
5905
6123
  "A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it."
5906
6124
  );
5907
6125
  var newChildren = render(context$jscomp$0._currentValue),
5908
- prevKeyPath$jscomp$5 = task.keyPath;
6126
+ prevKeyPath$jscomp$6 = task.keyPath;
5909
6127
  task.keyPath = keyPath;
5910
6128
  renderNodeDestructive(request, task, newChildren, -1);
5911
- task.keyPath = prevKeyPath$jscomp$5;
6129
+ task.keyPath = prevKeyPath$jscomp$6;
5912
6130
  return;
5913
6131
  case REACT_LAZY_TYPE:
5914
6132
  var Component = callLazyInitInDEV(type);
@@ -6040,6 +6258,7 @@
6040
6258
  node = null === node[4] ? null : node[4][3];
6041
6259
  var prevKeyPath = task.keyPath,
6042
6260
  prevContext = task.formatContext,
6261
+ prevRow = task.row,
6043
6262
  previousReplaySet = task.replay,
6044
6263
  parentBoundary = task.blockedBoundary,
6045
6264
  parentHoistableState = task.hoistableState,
@@ -6050,12 +6269,14 @@
6050
6269
  task.formatContext.insertionMode < HTML_MODE
6051
6270
  ? createSuspenseBoundary(
6052
6271
  request,
6272
+ task.row,
6053
6273
  fallbackAbortSet,
6054
6274
  createPreambleState(),
6055
6275
  createPreambleState()
6056
6276
  )
6057
6277
  : createSuspenseBoundary(
6058
6278
  request,
6279
+ task.row,
6059
6280
  fallbackAbortSet,
6060
6281
  null,
6061
6282
  null
@@ -6069,6 +6290,7 @@
6069
6290
  request.resumableState,
6070
6291
  prevContext
6071
6292
  );
6293
+ task.row = null;
6072
6294
  task.replay = { nodes: type, slots: ref, pendingTasks: 1 };
6073
6295
  try {
6074
6296
  renderNode(request, task, content, -1);
@@ -6102,7 +6324,8 @@
6102
6324
  (task.hoistableState = parentHoistableState),
6103
6325
  (task.replay = previousReplaySet),
6104
6326
  (task.keyPath = prevKeyPath),
6105
- (task.formatContext = prevContext);
6327
+ (task.formatContext = prevContext),
6328
+ (task.row = prevRow);
6106
6329
  }
6107
6330
  props = createReplayTask(
6108
6331
  request,
@@ -6120,6 +6343,7 @@
6120
6343
  ),
6121
6344
  task.context,
6122
6345
  task.treeContext,
6346
+ task.row,
6123
6347
  task.componentStack,
6124
6348
  emptyContextObject,
6125
6349
  task.debugTask
@@ -6133,6 +6357,35 @@
6133
6357
  }
6134
6358
  }
6135
6359
  }
6360
+ function validateIterable(
6361
+ task,
6362
+ iterable,
6363
+ childIndex,
6364
+ iterator,
6365
+ iteratorFn
6366
+ ) {
6367
+ if (iterator === iterable) {
6368
+ if (
6369
+ -1 !== childIndex ||
6370
+ null === task.componentStack ||
6371
+ "function" !== typeof task.componentStack.type ||
6372
+ "[object GeneratorFunction]" !==
6373
+ Object.prototype.toString.call(task.componentStack.type) ||
6374
+ "[object Generator]" !== Object.prototype.toString.call(iterator)
6375
+ )
6376
+ didWarnAboutGenerators ||
6377
+ console.error(
6378
+ "Using Iterators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. You can also use an Iterable that can iterate multiple times over the same items."
6379
+ ),
6380
+ (didWarnAboutGenerators = !0);
6381
+ } else
6382
+ iterable.entries !== iteratorFn ||
6383
+ didWarnAboutMaps ||
6384
+ (console.error(
6385
+ "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
6386
+ ),
6387
+ (didWarnAboutMaps = !0));
6388
+ }
6136
6389
  function renderNodeDestructive(request, task, node, childIndex) {
6137
6390
  null !== task.replay && "number" === typeof task.replay.slots
6138
6391
  ? resumeNode(request, task, task.replay.slots, node, childIndex)
@@ -6209,52 +6462,27 @@
6209
6462
  "Portals are not currently supported by the server renderer. Render them conditionally so that they only appear on the client render."
6210
6463
  );
6211
6464
  case REACT_LAZY_TYPE:
6212
- node = callLazyInitInDEV(node);
6465
+ type = callLazyInitInDEV(node);
6213
6466
  if (12 === request.status) throw null;
6214
- renderNodeDestructive(request, task, node, childIndex);
6467
+ renderNodeDestructive(request, task, type, childIndex);
6215
6468
  return;
6216
6469
  }
6217
6470
  if (isArrayImpl(node)) {
6218
6471
  renderChildrenArray(request, task, node, childIndex);
6219
6472
  return;
6220
6473
  }
6221
- null === node || "object" !== typeof node
6222
- ? (key = null)
6223
- : ((type =
6224
- (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||
6225
- node["@@iterator"]),
6226
- (key = "function" === typeof type ? type : null));
6227
- if (key && (type = key.call(node))) {
6228
- if (type === node) {
6229
- if (
6230
- -1 !== childIndex ||
6231
- null === task.componentStack ||
6232
- "function" !== typeof task.componentStack.type ||
6233
- "[object GeneratorFunction]" !==
6234
- Object.prototype.toString.call(task.componentStack.type) ||
6235
- "[object Generator]" !== Object.prototype.toString.call(type)
6236
- )
6237
- didWarnAboutGenerators ||
6238
- console.error(
6239
- "Using Iterators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. You can also use an Iterable that can iterate multiple times over the same items."
6240
- ),
6241
- (didWarnAboutGenerators = !0);
6242
- } else
6243
- node.entries !== key ||
6244
- didWarnAboutMaps ||
6245
- (console.error(
6246
- "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
6247
- ),
6248
- (didWarnAboutMaps = !0));
6249
- node = type.next();
6250
- if (!node.done) {
6251
- key = [];
6252
- do key.push(node.value), (node = type.next());
6253
- while (!node.done);
6254
- renderChildrenArray(request, task, key, childIndex);
6474
+ if ((key = getIteratorFn(node)))
6475
+ if ((type = key.call(node))) {
6476
+ validateIterable(task, node, childIndex, type, key);
6477
+ node = type.next();
6478
+ if (!node.done) {
6479
+ key = [];
6480
+ do key.push(node.value), (node = type.next());
6481
+ while (!node.done);
6482
+ renderChildrenArray(request, task, key, childIndex);
6483
+ }
6484
+ return;
6255
6485
  }
6256
- return;
6257
- }
6258
6486
  if ("function" === typeof node.then)
6259
6487
  return (
6260
6488
  (task.thenableState = null),
@@ -6313,6 +6541,69 @@
6313
6541
  ));
6314
6542
  }
6315
6543
  }
6544
+ function warnForMissingKey(request, task, child) {
6545
+ if (
6546
+ null !== child &&
6547
+ "object" === typeof child &&
6548
+ (child.$$typeof === REACT_ELEMENT_TYPE ||
6549
+ child.$$typeof === REACT_PORTAL_TYPE) &&
6550
+ child._store &&
6551
+ ((!child._store.validated && null == child.key) ||
6552
+ 2 === child._store.validated)
6553
+ ) {
6554
+ if ("object" !== typeof child._store)
6555
+ throw Error(
6556
+ "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue."
6557
+ );
6558
+ child._store.validated = 1;
6559
+ var didWarnForKey = request.didWarnForKey;
6560
+ null == didWarnForKey &&
6561
+ (didWarnForKey = request.didWarnForKey = new WeakSet());
6562
+ request = task.componentStack;
6563
+ if (null !== request && !didWarnForKey.has(request)) {
6564
+ didWarnForKey.add(request);
6565
+ var componentName = getComponentNameFromType(child.type);
6566
+ didWarnForKey = child._owner;
6567
+ var parentOwner = request.owner;
6568
+ request = "";
6569
+ if (parentOwner && "undefined" !== typeof parentOwner.type) {
6570
+ var name = getComponentNameFromType(parentOwner.type);
6571
+ name &&
6572
+ (request = "\n\nCheck the render method of `" + name + "`.");
6573
+ }
6574
+ request ||
6575
+ (componentName &&
6576
+ (request =
6577
+ "\n\nCheck the top-level render call using <" +
6578
+ componentName +
6579
+ ">."));
6580
+ componentName = "";
6581
+ null != didWarnForKey &&
6582
+ parentOwner !== didWarnForKey &&
6583
+ ((parentOwner = null),
6584
+ "undefined" !== typeof didWarnForKey.type
6585
+ ? (parentOwner = getComponentNameFromType(didWarnForKey.type))
6586
+ : "string" === typeof didWarnForKey.name &&
6587
+ (parentOwner = didWarnForKey.name),
6588
+ parentOwner &&
6589
+ (componentName =
6590
+ " It was passed a child from " + parentOwner + "."));
6591
+ didWarnForKey = task.componentStack;
6592
+ task.componentStack = {
6593
+ parent: task.componentStack,
6594
+ type: child.type,
6595
+ owner: child._owner,
6596
+ stack: child._debugStack
6597
+ };
6598
+ console.error(
6599
+ 'Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',
6600
+ request,
6601
+ componentName
6602
+ );
6603
+ task.componentStack = didWarnForKey;
6604
+ }
6605
+ }
6606
+ }
6316
6607
  function renderChildrenArray(request, task, children, childIndex) {
6317
6608
  var prevKeyPath = task.keyPath,
6318
6609
  previousComponentStack = task.componentStack;
@@ -6406,76 +6697,11 @@
6406
6697
  task.debugTask = previousDebugTask;
6407
6698
  return;
6408
6699
  }
6409
- for (j = 0; j < replayNodes; j++) {
6410
- childIndex = children[j];
6411
- resumeSlots = request;
6412
- node = task;
6413
- error = childIndex;
6414
- if (
6415
- null !== error &&
6416
- "object" === typeof error &&
6417
- (error.$$typeof === REACT_ELEMENT_TYPE ||
6418
- error.$$typeof === REACT_PORTAL_TYPE) &&
6419
- error._store &&
6420
- ((!error._store.validated && null == error.key) ||
6421
- 2 === error._store.validated)
6422
- ) {
6423
- if ("object" !== typeof error._store)
6424
- throw Error(
6425
- "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue."
6426
- );
6427
- error._store.validated = 1;
6428
- thrownInfo = resumeSlots.didWarnForKey;
6429
- null == thrownInfo &&
6430
- (thrownInfo = resumeSlots.didWarnForKey = new WeakSet());
6431
- resumeSlots = node.componentStack;
6432
- if (null !== resumeSlots && !thrownInfo.has(resumeSlots)) {
6433
- thrownInfo.add(resumeSlots);
6434
- var componentName = getComponentNameFromType(error.type);
6435
- thrownInfo = error._owner;
6436
- var parentOwner = resumeSlots.owner;
6437
- resumeSlots = "";
6438
- if (parentOwner && "undefined" !== typeof parentOwner.type) {
6439
- var name = getComponentNameFromType(parentOwner.type);
6440
- name &&
6441
- (resumeSlots =
6442
- "\n\nCheck the render method of `" + name + "`.");
6443
- }
6444
- resumeSlots ||
6445
- (componentName &&
6446
- (resumeSlots =
6447
- "\n\nCheck the top-level render call using <" +
6448
- componentName +
6449
- ">."));
6450
- componentName = "";
6451
- null != thrownInfo &&
6452
- parentOwner !== thrownInfo &&
6453
- ((parentOwner = null),
6454
- "undefined" !== typeof thrownInfo.type
6455
- ? (parentOwner = getComponentNameFromType(thrownInfo.type))
6456
- : "string" === typeof thrownInfo.name &&
6457
- (parentOwner = thrownInfo.name),
6458
- parentOwner &&
6459
- (componentName =
6460
- " It was passed a child from " + parentOwner + "."));
6461
- thrownInfo = node.componentStack;
6462
- node.componentStack = {
6463
- parent: node.componentStack,
6464
- type: error.type,
6465
- owner: error._owner,
6466
- stack: error._debugStack
6467
- };
6468
- console.error(
6469
- 'Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',
6470
- resumeSlots,
6471
- componentName
6472
- );
6473
- node.componentStack = thrownInfo;
6474
- }
6475
- }
6476
- task.treeContext = pushTreeContext(replay, replayNodes, j);
6477
- renderNode(request, task, childIndex, j);
6478
- }
6700
+ for (j = 0; j < replayNodes; j++)
6701
+ (childIndex = children[j]),
6702
+ warnForMissingKey(request, task, childIndex),
6703
+ (task.treeContext = pushTreeContext(replay, replayNodes, j)),
6704
+ renderNode(request, task, childIndex, j);
6479
6705
  task.treeContext = replay;
6480
6706
  task.keyPath = prevKeyPath;
6481
6707
  task.componentStack = previousComponentStack;
@@ -6504,6 +6730,7 @@
6504
6730
  task.formatContext,
6505
6731
  task.context,
6506
6732
  task.treeContext,
6733
+ task.row,
6507
6734
  task.componentStack,
6508
6735
  emptyContextObject,
6509
6736
  task.debugTask
@@ -6535,6 +6762,7 @@
6535
6762
  task.formatContext,
6536
6763
  task.context,
6537
6764
  task.treeContext,
6765
+ task.row,
6538
6766
  task.componentStack,
6539
6767
  emptyContextObject,
6540
6768
  task.debugTask
@@ -6649,9 +6877,11 @@
6649
6877
  throw node;
6650
6878
  }
6651
6879
  function abortTaskSoft(task) {
6652
- var boundary = task.blockedBoundary;
6653
- task = task.blockedSegment;
6654
- null !== task && ((task.status = 3), finishedTask(this, boundary, task));
6880
+ var boundary = task.blockedBoundary,
6881
+ segment = task.blockedSegment;
6882
+ null !== segment &&
6883
+ ((segment.status = ABORTED),
6884
+ finishedTask(this, boundary, task.row, segment));
6655
6885
  }
6656
6886
  function abortRemainingReplayNodes(
6657
6887
  request$jscomp$0,
@@ -6685,6 +6915,7 @@
6685
6915
  wasAborted = aborted,
6686
6916
  resumedBoundary = createSuspenseBoundary(
6687
6917
  request,
6918
+ null,
6688
6919
  new Set(),
6689
6920
  null,
6690
6921
  null
@@ -6729,8 +6960,12 @@
6729
6960
  segment = task.blockedSegment;
6730
6961
  if (null !== segment) {
6731
6962
  if (6 === segment.status) return;
6732
- segment.status = 3;
6963
+ segment.status = ABORTED;
6733
6964
  }
6965
+ segment = task.row;
6966
+ null !== segment &&
6967
+ 0 === --segment.pendingTasks &&
6968
+ finishSuspenseListRow(request, segment);
6734
6969
  segment = getThrownInfo(task.componentStack);
6735
6970
  if (null === boundary) {
6736
6971
  if (13 !== request.status && request.status !== CLOSED) {
@@ -6882,7 +7117,10 @@
6882
7117
  : (boundary.byteSize += segmentByteSize);
6883
7118
  }
6884
7119
  }
6885
- function finishedTask(request, boundary, segment) {
7120
+ function finishedTask(request, boundary, row, segment) {
7121
+ null !== row &&
7122
+ 0 === --row.pendingTasks &&
7123
+ finishSuspenseListRow(request, row);
6886
7124
  request.allPendingTasks--;
6887
7125
  if (null === boundary) {
6888
7126
  if (null !== segment && segment.parentFlushed) {
@@ -6911,7 +7149,11 @@
6911
7149
  abortTaskSoft,
6912
7150
  request
6913
7151
  ),
6914
- boundary.fallbackAbortableTasks.clear()),
7152
+ boundary.fallbackAbortableTasks.clear(),
7153
+ (row = boundary.row),
7154
+ null !== row &&
7155
+ 0 === --row.pendingTasks &&
7156
+ finishSuspenseListRow(request, row)),
6915
7157
  0 === request.pendingRootTasks &&
6916
7158
  null === request.trackedPostpones &&
6917
7159
  null !== boundary.contentPreamble &&
@@ -6975,7 +7217,12 @@
6975
7217
  );
6976
7218
  request.replay.pendingTasks--;
6977
7219
  request.abortSet.delete(request);
6978
- finishedTask(request$jscomp$0, request.blockedBoundary, null);
7220
+ finishedTask(
7221
+ request$jscomp$0,
7222
+ request.blockedBoundary,
7223
+ request.row,
7224
+ null
7225
+ );
6979
7226
  } catch (thrownValue) {
6980
7227
  resetHooksState();
6981
7228
  var x =
@@ -7058,6 +7305,7 @@
7058
7305
  finishedTask(
7059
7306
  request,
7060
7307
  errorDigest.blockedBoundary,
7308
+ errorDigest.row,
7061
7309
  request$jscomp$1
7062
7310
  );
7063
7311
  } catch (thrownValue) {
@@ -7086,7 +7334,12 @@
7086
7334
  errorDigest.abortSet.delete(errorDigest);
7087
7335
  request$jscomp$1.status = 4;
7088
7336
  var boundary$jscomp$0 = errorDigest.blockedBoundary,
7337
+ row = errorDigest.row,
7089
7338
  debugTask = errorDigest.debugTask;
7339
+ null !== row &&
7340
+ 0 === --row.pendingTasks &&
7341
+ finishSuspenseListRow(request, row);
7342
+ request.allPendingTasks--;
7090
7343
  prevTaskInDEV = logRecoverableError(
7091
7344
  request,
7092
7345
  x$jscomp$0,
@@ -7119,7 +7372,6 @@
7119
7372
  null === request.trackedPostpones &&
7120
7373
  null !== boundary$jscomp$0.contentPreamble &&
7121
7374
  preparePreamble(request)));
7122
- request.allPendingTasks--;
7123
7375
  0 === request.allPendingTasks && completeAll(request);
7124
7376
  }
7125
7377
  } finally {
@@ -7271,18 +7523,19 @@
7271
7523
  return flushSubtree(request, destination, segment, hoistableState);
7272
7524
  boundary.parentFlushed = !0;
7273
7525
  if (boundary.status === CLIENT_RENDERED) {
7274
- var errorDigest = boundary.errorDigest,
7275
- errorMessage = boundary.errorMessage,
7526
+ var row = boundary.row;
7527
+ null !== row &&
7528
+ 0 === --row.pendingTasks &&
7529
+ finishSuspenseListRow(request, row);
7530
+ row = boundary.errorDigest;
7531
+ var errorMessage = boundary.errorMessage,
7276
7532
  errorStack = boundary.errorStack;
7277
7533
  boundary = boundary.errorComponentStack;
7278
7534
  writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);
7279
7535
  writeChunk(destination, clientRenderedSuspenseBoundaryError1);
7280
- errorDigest &&
7536
+ row &&
7281
7537
  (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
7282
- writeChunk(
7283
- destination,
7284
- stringToChunk(escapeTextForBrowser(errorDigest))
7285
- ),
7538
+ writeChunk(destination, stringToChunk(escapeTextForBrowser(row))),
7286
7539
  writeChunk(
7287
7540
  destination,
7288
7541
  clientRenderedSuspenseBoundaryErrorAttrInterstitial
@@ -7358,6 +7611,11 @@
7358
7611
  hoistStylesheetDependency,
7359
7612
  hoistableState
7360
7613
  ));
7614
+ segment = boundary.row;
7615
+ null !== segment &&
7616
+ 500 < boundary.byteSize &&
7617
+ 0 === --segment.pendingTasks &&
7618
+ finishSuspenseListRow(request, segment);
7361
7619
  writeChunkAndReturn(destination, startCompletedSuspenseBoundary);
7362
7620
  segment = boundary.completedSegments;
7363
7621
  if (1 !== segment.length)
@@ -7397,6 +7655,11 @@
7397
7655
  completedSegments[i]
7398
7656
  );
7399
7657
  completedSegments.length = 0;
7658
+ completedSegments = boundary.row;
7659
+ null !== completedSegments &&
7660
+ 500 < boundary.byteSize &&
7661
+ 0 === --completedSegments.pendingTasks &&
7662
+ finishSuspenseListRow(request, completedSegments);
7400
7663
  writeHoistablesForBoundary(
7401
7664
  destination,
7402
7665
  boundary.contentState,
@@ -7911,11 +8174,11 @@
7911
8174
  }
7912
8175
  function ensureCorrectIsomorphicReactVersion() {
7913
8176
  var isomorphicReactPackageVersion = React.version;
7914
- if ("19.2.0-canary-462d08f9-20250517" !== isomorphicReactPackageVersion)
8177
+ if ("19.2.0-canary-c4676e72-20250520" !== isomorphicReactPackageVersion)
7915
8178
  throw Error(
7916
8179
  'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
7917
8180
  (isomorphicReactPackageVersion +
7918
- "\n - react-dom: 19.2.0-canary-462d08f9-20250517\nLearn more: https://react.dev/warnings/version-mismatch")
8181
+ "\n - react-dom: 19.2.0-canary-c4676e72-20250520\nLearn more: https://react.dev/warnings/version-mismatch")
7919
8182
  );
7920
8183
  }
7921
8184
  var React = require("react"),
@@ -9447,6 +9710,7 @@
9447
9710
  PENDING = 0,
9448
9711
  COMPLETED = 1,
9449
9712
  FLUSHED = 2,
9713
+ ABORTED = 3,
9450
9714
  POSTPONED = 5,
9451
9715
  CLOSED = 14,
9452
9716
  currentRequest = null,
@@ -9601,5 +9865,5 @@
9601
9865
  startWork(request);
9602
9866
  });
9603
9867
  };
9604
- exports.version = "19.2.0-canary-462d08f9-20250517";
9868
+ exports.version = "19.2.0-canary-c4676e72-20250520";
9605
9869
  })();