react-dom 19.2.0-canary-462d08f9-20250517 → 19.2.0-canary-23884812-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.
@@ -29,8 +29,15 @@ var React = require("react"),
29
29
  REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden"),
30
30
  REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel"),
31
31
  REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"),
32
- MAYBE_ITERATOR_SYMBOL = Symbol.iterator,
33
- isArrayImpl = Array.isArray,
32
+ MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
33
+ function getIteratorFn(maybeIterable) {
34
+ if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
35
+ maybeIterable =
36
+ (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
37
+ maybeIterable["@@iterator"];
38
+ return "function" === typeof maybeIterable ? maybeIterable : null;
39
+ }
40
+ var isArrayImpl = Array.isArray,
34
41
  jsxPropsParents = new WeakMap(),
35
42
  jsxChildrenParents = new WeakMap();
36
43
  function objectName(object) {
@@ -1747,6 +1754,9 @@ function pushTextInstance(target, text, renderState, textEmbedded) {
1747
1754
  target.push(escapeTextForBrowser(text));
1748
1755
  return !0;
1749
1756
  }
1757
+ function pushSegmentFinale(target, renderState, lastPushedText, textEmbedded) {
1758
+ lastPushedText && textEmbedded && target.push("\x3c!-- --\x3e");
1759
+ }
1750
1760
  var styleNameCache = new Map(),
1751
1761
  styleAttributeStart = ' style="',
1752
1762
  styleAssign = ":",
@@ -4607,6 +4617,10 @@ function hoistStyleQueueDependency(styleQueue) {
4607
4617
  function hoistStylesheetDependency(stylesheet) {
4608
4618
  this.stylesheets.add(stylesheet);
4609
4619
  }
4620
+ function hoistHoistables(parentState, childState) {
4621
+ childState.styles.forEach(hoistStyleQueueDependency, parentState);
4622
+ childState.stylesheets.forEach(hoistStylesheetDependency, parentState);
4623
+ }
4610
4624
  var bind = Function.prototype.bind,
4611
4625
  REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
4612
4626
  function getComponentNameFromType(type) {
@@ -5582,6 +5596,7 @@ var CLIENT_RENDERED = 4,
5582
5596
  PENDING = 0,
5583
5597
  COMPLETED = 1,
5584
5598
  FLUSHED = 2,
5599
+ ABORTED = 3,
5585
5600
  POSTPONED = 5,
5586
5601
  CLOSED = 14;
5587
5602
  function defaultErrorHandler(error) {
@@ -5711,6 +5726,7 @@ function createRequest(
5711
5726
  null,
5712
5727
  emptyTreeContext,
5713
5728
  null,
5729
+ null,
5714
5730
  emptyContextObject,
5715
5731
  null
5716
5732
  );
@@ -5733,15 +5749,17 @@ function pingTask(request, task) {
5733
5749
  }
5734
5750
  function createSuspenseBoundary(
5735
5751
  request,
5752
+ row,
5736
5753
  fallbackAbortableTasks,
5737
5754
  contentPreamble,
5738
5755
  fallbackPreamble
5739
5756
  ) {
5740
- return {
5757
+ fallbackAbortableTasks = {
5741
5758
  status: PENDING,
5742
5759
  rootSegmentID: -1,
5743
5760
  parentFlushed: !1,
5744
5761
  pendingTasks: 0,
5762
+ row: row,
5745
5763
  completedSegments: [],
5746
5764
  byteSize: 0,
5747
5765
  fallbackAbortableTasks: fallbackAbortableTasks,
@@ -5756,6 +5774,17 @@ function createSuspenseBoundary(
5756
5774
  errorStack: null,
5757
5775
  errorComponentStack: null
5758
5776
  };
5777
+ null !== row &&
5778
+ (row.pendingTasks++,
5779
+ (contentPreamble = row.boundaries),
5780
+ null !== contentPreamble &&
5781
+ (request.allPendingTasks++,
5782
+ fallbackAbortableTasks.pendingTasks++,
5783
+ contentPreamble.push(fallbackAbortableTasks)),
5784
+ (request = row.inheritedHoistables),
5785
+ null !== request &&
5786
+ hoistHoistables(fallbackAbortableTasks.contentState, request));
5787
+ return fallbackAbortableTasks;
5759
5788
  }
5760
5789
  function createRenderTask(
5761
5790
  request,
@@ -5771,6 +5800,7 @@ function createRenderTask(
5771
5800
  formatContext,
5772
5801
  context,
5773
5802
  treeContext,
5803
+ row,
5774
5804
  componentStack,
5775
5805
  legacyContext,
5776
5806
  debugTask
@@ -5779,6 +5809,7 @@ function createRenderTask(
5779
5809
  null === blockedBoundary
5780
5810
  ? request.pendingRootTasks++
5781
5811
  : blockedBoundary.pendingTasks++;
5812
+ null !== row && row.pendingTasks++;
5782
5813
  var task = {
5783
5814
  replay: null,
5784
5815
  node: node,
@@ -5795,6 +5826,7 @@ function createRenderTask(
5795
5826
  formatContext: formatContext,
5796
5827
  context: context,
5797
5828
  treeContext: treeContext,
5829
+ row: row,
5798
5830
  componentStack: componentStack,
5799
5831
  thenableState: thenableState
5800
5832
  };
@@ -5815,6 +5847,7 @@ function createReplayTask(
5815
5847
  formatContext,
5816
5848
  context,
5817
5849
  treeContext,
5850
+ row,
5818
5851
  componentStack,
5819
5852
  legacyContext,
5820
5853
  debugTask
@@ -5823,6 +5856,7 @@ function createReplayTask(
5823
5856
  null === blockedBoundary
5824
5857
  ? request.pendingRootTasks++
5825
5858
  : blockedBoundary.pendingTasks++;
5859
+ null !== row && row.pendingTasks++;
5826
5860
  replay.pendingTasks++;
5827
5861
  var task = {
5828
5862
  replay: replay,
@@ -5840,6 +5874,7 @@ function createReplayTask(
5840
5874
  formatContext: formatContext,
5841
5875
  context: context,
5842
5876
  treeContext: treeContext,
5877
+ row: row,
5843
5878
  componentStack: componentStack,
5844
5879
  thenableState: thenableState
5845
5880
  };
@@ -6023,6 +6058,173 @@ function fatalError(request, error, errorInfo, debugTask) {
6023
6058
  ? ((request.status = CLOSED), closeWithError(request.destination, error))
6024
6059
  : ((request.status = 13), (request.fatalError = error));
6025
6060
  }
6061
+ function finishSuspenseListRow(request, row) {
6062
+ unblockSuspenseListRow(request, row.next, row.hoistables);
6063
+ }
6064
+ function unblockSuspenseListRow(request, unblockedRow, inheritedHoistables) {
6065
+ for (; null !== unblockedRow; ) {
6066
+ null !== inheritedHoistables &&
6067
+ (hoistHoistables(unblockedRow.hoistables, inheritedHoistables),
6068
+ (unblockedRow.inheritedHoistables = inheritedHoistables));
6069
+ var unblockedBoundaries = unblockedRow.boundaries;
6070
+ if (null !== unblockedBoundaries) {
6071
+ unblockedRow.boundaries = null;
6072
+ for (var i = 0; i < unblockedBoundaries.length; i++) {
6073
+ var unblockedBoundary = unblockedBoundaries[i];
6074
+ null !== inheritedHoistables &&
6075
+ hoistHoistables(unblockedBoundary.contentState, inheritedHoistables);
6076
+ finishedTask(request, unblockedBoundary, null, null);
6077
+ }
6078
+ }
6079
+ unblockedRow.pendingTasks--;
6080
+ if (0 < unblockedRow.pendingTasks) break;
6081
+ inheritedHoistables = unblockedRow.hoistables;
6082
+ unblockedRow = unblockedRow.next;
6083
+ }
6084
+ }
6085
+ function tryToResolveTogetherRow(request, togetherRow) {
6086
+ var boundaries = togetherRow.boundaries;
6087
+ if (null !== boundaries && togetherRow.pendingTasks === boundaries.length) {
6088
+ for (var allCompleteAndInlinable = !0, i = 0; i < boundaries.length; i++) {
6089
+ var rowBoundary = boundaries[i];
6090
+ if (
6091
+ 1 !== rowBoundary.pendingTasks ||
6092
+ rowBoundary.parentFlushed ||
6093
+ 500 < rowBoundary.byteSize
6094
+ ) {
6095
+ allCompleteAndInlinable = !1;
6096
+ break;
6097
+ }
6098
+ }
6099
+ allCompleteAndInlinable &&
6100
+ unblockSuspenseListRow(request, togetherRow, togetherRow.hoistables);
6101
+ }
6102
+ }
6103
+ function createSuspenseListRow(previousRow) {
6104
+ var newRow = {
6105
+ pendingTasks: 1,
6106
+ boundaries: null,
6107
+ hoistables: createHoistableState(),
6108
+ inheritedHoistables: null,
6109
+ together: !1,
6110
+ next: null
6111
+ };
6112
+ null !== previousRow &&
6113
+ 0 < previousRow.pendingTasks &&
6114
+ (newRow.pendingTasks++,
6115
+ (newRow.boundaries = []),
6116
+ (previousRow.next = newRow));
6117
+ return newRow;
6118
+ }
6119
+ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
6120
+ var prevKeyPath = task.keyPath,
6121
+ prevTreeContext = task.treeContext,
6122
+ prevRow = task.row,
6123
+ previousComponentStack = task.componentStack;
6124
+ var previousDebugTask = task.debugTask;
6125
+ pushServerComponentStack(task, task.node.props.children._debugInfo);
6126
+ task.keyPath = keyPath;
6127
+ keyPath = rows.length;
6128
+ var previousSuspenseListRow = null;
6129
+ if (null !== task.replay) {
6130
+ var resumeSlots = task.replay.slots;
6131
+ if (null !== resumeSlots && "object" === typeof resumeSlots)
6132
+ for (var n = 0; n < keyPath; n++) {
6133
+ var i = "backwards" !== revealOrder ? n : keyPath - 1 - n,
6134
+ node = rows[i];
6135
+ task.row = previousSuspenseListRow = createSuspenseListRow(
6136
+ previousSuspenseListRow
6137
+ );
6138
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
6139
+ var resumeSegmentID = resumeSlots[i];
6140
+ "number" === typeof resumeSegmentID
6141
+ ? (resumeNode(request, task, resumeSegmentID, node, i),
6142
+ delete resumeSlots[i])
6143
+ : renderNode(request, task, node, i);
6144
+ 0 === --previousSuspenseListRow.pendingTasks &&
6145
+ finishSuspenseListRow(request, previousSuspenseListRow);
6146
+ }
6147
+ else
6148
+ for (resumeSlots = 0; resumeSlots < keyPath; resumeSlots++)
6149
+ (n =
6150
+ "backwards" !== revealOrder
6151
+ ? resumeSlots
6152
+ : keyPath - 1 - resumeSlots),
6153
+ (i = rows[n]),
6154
+ warnForMissingKey(request, task, i),
6155
+ (task.row = previousSuspenseListRow =
6156
+ createSuspenseListRow(previousSuspenseListRow)),
6157
+ (task.treeContext = pushTreeContext(prevTreeContext, keyPath, n)),
6158
+ renderNode(request, task, i, n),
6159
+ 0 === --previousSuspenseListRow.pendingTasks &&
6160
+ finishSuspenseListRow(request, previousSuspenseListRow);
6161
+ } else if ("backwards" !== revealOrder)
6162
+ for (revealOrder = 0; revealOrder < keyPath; revealOrder++)
6163
+ (resumeSlots = rows[revealOrder]),
6164
+ warnForMissingKey(request, task, resumeSlots),
6165
+ (task.row = previousSuspenseListRow =
6166
+ createSuspenseListRow(previousSuspenseListRow)),
6167
+ (task.treeContext = pushTreeContext(
6168
+ prevTreeContext,
6169
+ keyPath,
6170
+ revealOrder
6171
+ )),
6172
+ renderNode(request, task, resumeSlots, revealOrder),
6173
+ 0 === --previousSuspenseListRow.pendingTasks &&
6174
+ finishSuspenseListRow(request, previousSuspenseListRow);
6175
+ else {
6176
+ revealOrder = task.blockedSegment;
6177
+ resumeSlots = revealOrder.children.length;
6178
+ n = revealOrder.chunks.length;
6179
+ for (i = keyPath - 1; 0 <= i; i--) {
6180
+ node = rows[i];
6181
+ task.row = previousSuspenseListRow = createSuspenseListRow(
6182
+ previousSuspenseListRow
6183
+ );
6184
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
6185
+ resumeSegmentID = createPendingSegment(
6186
+ request,
6187
+ n,
6188
+ null,
6189
+ task.formatContext,
6190
+ 0 === i ? revealOrder.lastPushedText : !0,
6191
+ !0
6192
+ );
6193
+ revealOrder.children.splice(resumeSlots, 0, resumeSegmentID);
6194
+ task.blockedSegment = resumeSegmentID;
6195
+ warnForMissingKey(request, task, node);
6196
+ try {
6197
+ renderNode(request, task, node, i),
6198
+ pushSegmentFinale(
6199
+ resumeSegmentID.chunks,
6200
+ request.renderState,
6201
+ resumeSegmentID.lastPushedText,
6202
+ resumeSegmentID.textEmbedded
6203
+ ),
6204
+ (resumeSegmentID.status = COMPLETED),
6205
+ finishedSegment(request, task.blockedBoundary, resumeSegmentID),
6206
+ 0 === --previousSuspenseListRow.pendingTasks &&
6207
+ finishSuspenseListRow(request, previousSuspenseListRow);
6208
+ } catch (thrownValue) {
6209
+ throw (
6210
+ ((resumeSegmentID.status = 12 === request.status ? ABORTED : 4),
6211
+ thrownValue)
6212
+ );
6213
+ }
6214
+ }
6215
+ task.blockedSegment = revealOrder;
6216
+ revealOrder.lastPushedText = !1;
6217
+ }
6218
+ null !== prevRow &&
6219
+ null !== previousSuspenseListRow &&
6220
+ 0 < previousSuspenseListRow.pendingTasks &&
6221
+ (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
6222
+ task.treeContext = prevTreeContext;
6223
+ task.row = prevRow;
6224
+ task.keyPath = prevKeyPath;
6225
+ task.componentStack = previousComponentStack;
6226
+ task.debugTask = previousDebugTask;
6227
+ }
6026
6228
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
6027
6229
  var prevThenableState = task.thenableState;
6028
6230
  task.thenableState = null;
@@ -6528,7 +6730,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6528
6730
  );
6529
6731
  segment.lastPushedText = !1;
6530
6732
  var _prevContext2 = task.formatContext,
6531
- _prevKeyPath2 = task.keyPath;
6733
+ _prevKeyPath3 = task.keyPath;
6532
6734
  task.keyPath = keyPath;
6533
6735
  if (
6534
6736
  (task.formatContext = getChildFormatContext(_prevContext2, type, props))
@@ -6557,6 +6759,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6557
6759
  task.formatContext,
6558
6760
  task.context,
6559
6761
  task.treeContext,
6762
+ task.row,
6560
6763
  task.componentStack,
6561
6764
  emptyContextObject,
6562
6765
  task.debugTask
@@ -6565,7 +6768,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6565
6768
  request.pingedTasks.push(preambleTask);
6566
6769
  } else renderNode(request, task, _children, -1);
6567
6770
  task.formatContext = _prevContext2;
6568
- task.keyPath = _prevKeyPath2;
6771
+ task.keyPath = _prevKeyPath3;
6569
6772
  a: {
6570
6773
  var target = segment.chunks,
6571
6774
  resumableState = request.resumableState;
@@ -6631,19 +6834,79 @@ function renderElement(request, task, keyPath, type, props, ref) {
6631
6834
  } else if ("hidden" !== props.mode) {
6632
6835
  segment$jscomp$0.chunks.push("\x3c!--&--\x3e");
6633
6836
  segment$jscomp$0.lastPushedText = !1;
6634
- var _prevKeyPath3 = task.keyPath;
6837
+ var _prevKeyPath4 = task.keyPath;
6635
6838
  task.keyPath = keyPath;
6636
6839
  renderNode(request, task, props.children, -1);
6637
- task.keyPath = _prevKeyPath3;
6840
+ task.keyPath = _prevKeyPath4;
6638
6841
  segment$jscomp$0.chunks.push("\x3c!--/&--\x3e");
6639
6842
  segment$jscomp$0.lastPushedText = !1;
6640
6843
  }
6641
6844
  return;
6642
6845
  case REACT_SUSPENSE_LIST_TYPE:
6643
- var _prevKeyPath4 = task.keyPath;
6644
- task.keyPath = keyPath;
6645
- renderNodeDestructive(request, task, props.children, -1);
6646
- task.keyPath = _prevKeyPath4;
6846
+ a: {
6847
+ var children$jscomp$0 = props.children,
6848
+ revealOrder = props.revealOrder;
6849
+ if ("forwards" === revealOrder || "backwards" === revealOrder) {
6850
+ if (isArrayImpl(children$jscomp$0)) {
6851
+ renderSuspenseListRows(
6852
+ request,
6853
+ task,
6854
+ keyPath,
6855
+ children$jscomp$0,
6856
+ revealOrder
6857
+ );
6858
+ break a;
6859
+ }
6860
+ var iteratorFn = getIteratorFn(children$jscomp$0);
6861
+ if (iteratorFn) {
6862
+ var iterator = iteratorFn.call(children$jscomp$0);
6863
+ if (iterator) {
6864
+ validateIterable(
6865
+ task,
6866
+ children$jscomp$0,
6867
+ -1,
6868
+ iterator,
6869
+ iteratorFn
6870
+ );
6871
+ var step = iterator.next();
6872
+ if (!step.done) {
6873
+ var rows = [];
6874
+ do rows.push(step.value), (step = iterator.next());
6875
+ while (!step.done);
6876
+ renderSuspenseListRows(
6877
+ request,
6878
+ task,
6879
+ keyPath,
6880
+ children$jscomp$0,
6881
+ revealOrder
6882
+ );
6883
+ }
6884
+ break a;
6885
+ }
6886
+ }
6887
+ }
6888
+ if ("together" === revealOrder) {
6889
+ var _prevKeyPath2 = task.keyPath,
6890
+ prevRow = task.row,
6891
+ newRow = (task.row = createSuspenseListRow(null));
6892
+ newRow.boundaries = [];
6893
+ newRow.together = !0;
6894
+ task.keyPath = keyPath;
6895
+ renderNodeDestructive(request, task, children$jscomp$0, -1);
6896
+ 0 === --newRow.pendingTasks &&
6897
+ finishSuspenseListRow(request, newRow);
6898
+ task.keyPath = _prevKeyPath2;
6899
+ task.row = prevRow;
6900
+ null !== prevRow &&
6901
+ 0 < newRow.pendingTasks &&
6902
+ (prevRow.pendingTasks++, (newRow.next = prevRow));
6903
+ } else {
6904
+ var prevKeyPath$jscomp$3 = task.keyPath;
6905
+ task.keyPath = keyPath;
6906
+ renderNodeDestructive(request, task, children$jscomp$0, -1);
6907
+ task.keyPath = prevKeyPath$jscomp$3;
6908
+ }
6909
+ }
6647
6910
  return;
6648
6911
  case REACT_VIEW_TRANSITION_TYPE:
6649
6912
  case REACT_SCOPE_TYPE:
@@ -6651,21 +6914,26 @@ function renderElement(request, task, keyPath, type, props, ref) {
6651
6914
  case REACT_SUSPENSE_TYPE:
6652
6915
  a: if (null !== task.replay) {
6653
6916
  var _prevKeyPath = task.keyPath,
6654
- _prevContext = task.formatContext;
6917
+ _prevContext = task.formatContext,
6918
+ _prevRow = task.row;
6655
6919
  task.keyPath = keyPath;
6656
6920
  task.formatContext = getSuspenseContentFormatContext(
6657
6921
  request.resumableState,
6658
6922
  _prevContext
6659
6923
  );
6924
+ task.row = null;
6660
6925
  var _content = props.children;
6661
6926
  try {
6662
6927
  renderNode(request, task, _content, -1);
6663
6928
  } finally {
6664
- (task.keyPath = _prevKeyPath), (task.formatContext = _prevContext);
6929
+ (task.keyPath = _prevKeyPath),
6930
+ (task.formatContext = _prevContext),
6931
+ (task.row = _prevRow);
6665
6932
  }
6666
6933
  } else {
6667
- var prevKeyPath$jscomp$3 = task.keyPath,
6934
+ var prevKeyPath$jscomp$4 = task.keyPath,
6668
6935
  prevContext$jscomp$0 = task.formatContext,
6936
+ prevRow$jscomp$0 = task.row,
6669
6937
  parentBoundary = task.blockedBoundary,
6670
6938
  parentPreamble = task.blockedPreamble,
6671
6939
  parentHoistableState = task.hoistableState,
@@ -6677,11 +6945,18 @@ function renderElement(request, task, keyPath, type, props, ref) {
6677
6945
  task.formatContext.insertionMode < HTML_MODE
6678
6946
  ? createSuspenseBoundary(
6679
6947
  request,
6948
+ task.row,
6680
6949
  fallbackAbortSet,
6681
6950
  createPreambleState(),
6682
6951
  createPreambleState()
6683
6952
  )
6684
- : createSuspenseBoundary(request, fallbackAbortSet, null, null);
6953
+ : createSuspenseBoundary(
6954
+ request,
6955
+ task.row,
6956
+ fallbackAbortSet,
6957
+ null,
6958
+ null
6959
+ );
6685
6960
  null !== request.trackedPostpones &&
6686
6961
  (newBoundary.trackedContentKeyPath = keyPath);
6687
6962
  var boundarySegment = createPendingSegment(
@@ -6726,20 +7001,23 @@ function renderElement(request, task, keyPath, type, props, ref) {
6726
7001
  boundarySegment.status = 6;
6727
7002
  try {
6728
7003
  renderNode(request, task, fallback, -1),
6729
- boundarySegment.lastPushedText &&
6730
- boundarySegment.textEmbedded &&
6731
- boundarySegment.chunks.push("\x3c!-- --\x3e"),
7004
+ pushSegmentFinale(
7005
+ boundarySegment.chunks,
7006
+ request.renderState,
7007
+ boundarySegment.lastPushedText,
7008
+ boundarySegment.textEmbedded
7009
+ ),
6732
7010
  (boundarySegment.status = COMPLETED),
6733
7011
  finishedSegment(request, parentBoundary, boundarySegment);
6734
7012
  } catch (thrownValue) {
6735
7013
  throw (
6736
- ((boundarySegment.status = 12 === request.status ? 3 : 4),
7014
+ ((boundarySegment.status = 12 === request.status ? ABORTED : 4),
6737
7015
  thrownValue)
6738
7016
  );
6739
7017
  } finally {
6740
7018
  (task.blockedSegment = parentSegment),
6741
7019
  (task.blockedPreamble = parentPreamble),
6742
- (task.keyPath = prevKeyPath$jscomp$3),
7020
+ (task.keyPath = prevKeyPath$jscomp$4),
6743
7021
  (task.formatContext = prevContext$jscomp$0);
6744
7022
  }
6745
7023
  var suspendedPrimaryTask = createRenderTask(
@@ -6759,6 +7037,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6759
7037
  ),
6760
7038
  task.context,
6761
7039
  task.treeContext,
7040
+ null,
6762
7041
  task.componentStack,
6763
7042
  emptyContextObject,
6764
7043
  task.debugTask
@@ -6775,30 +7054,43 @@ function renderElement(request, task, keyPath, type, props, ref) {
6775
7054
  request.resumableState,
6776
7055
  prevContext$jscomp$0
6777
7056
  );
7057
+ task.row = null;
6778
7058
  contentRootSegment.status = 6;
6779
7059
  try {
6780
7060
  if (
6781
7061
  (renderNode(request, task, content, -1),
6782
- contentRootSegment.lastPushedText &&
6783
- contentRootSegment.textEmbedded &&
6784
- contentRootSegment.chunks.push("\x3c!-- --\x3e"),
7062
+ pushSegmentFinale(
7063
+ contentRootSegment.chunks,
7064
+ request.renderState,
7065
+ contentRootSegment.lastPushedText,
7066
+ contentRootSegment.textEmbedded
7067
+ ),
6785
7068
  (contentRootSegment.status = COMPLETED),
6786
7069
  finishedSegment(request, newBoundary, contentRootSegment),
6787
7070
  queueCompletedSegment(newBoundary, contentRootSegment),
6788
7071
  0 === newBoundary.pendingTasks &&
6789
- newBoundary.status === PENDING &&
6790
- ((newBoundary.status = COMPLETED),
6791
- !(500 < newBoundary.byteSize)))
7072
+ newBoundary.status === PENDING)
6792
7073
  ) {
6793
- 0 === request.pendingRootTasks &&
6794
- task.blockedPreamble &&
6795
- preparePreamble(request);
6796
- break a;
6797
- }
7074
+ if (
7075
+ ((newBoundary.status = COMPLETED),
7076
+ !(500 < newBoundary.byteSize))
7077
+ ) {
7078
+ null !== prevRow$jscomp$0 &&
7079
+ 0 === --prevRow$jscomp$0.pendingTasks &&
7080
+ finishSuspenseListRow(request, prevRow$jscomp$0);
7081
+ 0 === request.pendingRootTasks &&
7082
+ task.blockedPreamble &&
7083
+ preparePreamble(request);
7084
+ break a;
7085
+ }
7086
+ } else
7087
+ null !== prevRow$jscomp$0 &&
7088
+ prevRow$jscomp$0.together &&
7089
+ tryToResolveTogetherRow(request, prevRow$jscomp$0);
6798
7090
  } catch (thrownValue$2) {
6799
7091
  newBoundary.status = CLIENT_RENDERED;
6800
7092
  if (12 === request.status) {
6801
- contentRootSegment.status = 3;
7093
+ contentRootSegment.status = ABORTED;
6802
7094
  var error = request.fatalError;
6803
7095
  } else (contentRootSegment.status = 4), (error = thrownValue$2);
6804
7096
  var thrownInfo = getThrownInfo(task.componentStack);
@@ -6821,8 +7113,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
6821
7113
  (task.blockedPreamble = parentPreamble),
6822
7114
  (task.hoistableState = parentHoistableState),
6823
7115
  (task.blockedSegment = parentSegment),
6824
- (task.keyPath = prevKeyPath$jscomp$3),
6825
- (task.formatContext = prevContext$jscomp$0);
7116
+ (task.keyPath = prevKeyPath$jscomp$4),
7117
+ (task.formatContext = prevContext$jscomp$0),
7118
+ (task.row = prevRow$jscomp$0);
6826
7119
  }
6827
7120
  var suspendedFallbackTask = createRenderTask(
6828
7121
  request,
@@ -6841,6 +7134,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6841
7134
  ),
6842
7135
  task.context,
6843
7136
  task.treeContext,
7137
+ task.row,
6844
7138
  task.componentStack,
6845
7139
  emptyContextObject,
6846
7140
  task.debugTask
@@ -6859,7 +7153,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6859
7153
  for (var key in props)
6860
7154
  "ref" !== key && (propsWithoutRef[key] = props[key]);
6861
7155
  } else propsWithoutRef = props;
6862
- var children$jscomp$0 = renderWithHooks(
7156
+ var children$jscomp$1 = renderWithHooks(
6863
7157
  request,
6864
7158
  task,
6865
7159
  keyPath,
@@ -6871,7 +7165,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6871
7165
  request,
6872
7166
  task,
6873
7167
  keyPath,
6874
- children$jscomp$0,
7168
+ children$jscomp$1,
6875
7169
  0 !== localIdCounter,
6876
7170
  actionStateCounter,
6877
7171
  actionStateMatchingIndex
@@ -6883,9 +7177,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
6883
7177
  case REACT_PROVIDER_TYPE:
6884
7178
  case REACT_CONTEXT_TYPE:
6885
7179
  var value$jscomp$0 = props.value,
6886
- children$jscomp$1 = props.children;
7180
+ children$jscomp$2 = props.children;
6887
7181
  var prevSnapshot = task.context;
6888
- var prevKeyPath$jscomp$4 = task.keyPath;
7182
+ var prevKeyPath$jscomp$5 = task.keyPath;
6889
7183
  var prevValue = type._currentValue;
6890
7184
  type._currentValue = value$jscomp$0;
6891
7185
  void 0 !== type._currentRenderer &&
@@ -6906,7 +7200,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6906
7200
  currentActiveSnapshot = newNode;
6907
7201
  task.context = newNode;
6908
7202
  task.keyPath = keyPath;
6909
- renderNodeDestructive(request, task, children$jscomp$1, -1);
7203
+ renderNodeDestructive(request, task, children$jscomp$2, -1);
6910
7204
  var prevSnapshot$jscomp$0 = currentActiveSnapshot;
6911
7205
  if (null === prevSnapshot$jscomp$0)
6912
7206
  throw Error(
@@ -6928,7 +7222,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
6928
7222
  var JSCompiler_inline_result$jscomp$0 = (currentActiveSnapshot =
6929
7223
  prevSnapshot$jscomp$0.parent);
6930
7224
  task.context = JSCompiler_inline_result$jscomp$0;
6931
- task.keyPath = prevKeyPath$jscomp$4;
7225
+ task.keyPath = prevKeyPath$jscomp$5;
6932
7226
  prevSnapshot !== task.context &&
6933
7227
  console.error(
6934
7228
  "Popping the context provider did not return back to the original snapshot. This is a bug in React."
@@ -6942,10 +7236,10 @@ function renderElement(request, task, keyPath, type, props, ref) {
6942
7236
  "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."
6943
7237
  );
6944
7238
  var newChildren = render(context$jscomp$0._currentValue),
6945
- prevKeyPath$jscomp$5 = task.keyPath;
7239
+ prevKeyPath$jscomp$6 = task.keyPath;
6946
7240
  task.keyPath = keyPath;
6947
7241
  renderNodeDestructive(request, task, newChildren, -1);
6948
- task.keyPath = prevKeyPath$jscomp$5;
7242
+ task.keyPath = prevKeyPath$jscomp$6;
6949
7243
  return;
6950
7244
  case REACT_LAZY_TYPE:
6951
7245
  var Component = callLazyInitInDEV(type);
@@ -7074,6 +7368,7 @@ function replayElement(
7074
7368
  node = null === node[4] ? null : node[4][3];
7075
7369
  var prevKeyPath = task.keyPath,
7076
7370
  prevContext = task.formatContext,
7371
+ prevRow = task.row,
7077
7372
  previousReplaySet = task.replay,
7078
7373
  parentBoundary = task.blockedBoundary,
7079
7374
  parentHoistableState = task.hoistableState,
@@ -7084,11 +7379,18 @@ function replayElement(
7084
7379
  task.formatContext.insertionMode < HTML_MODE
7085
7380
  ? createSuspenseBoundary(
7086
7381
  request,
7382
+ task.row,
7087
7383
  fallbackAbortSet,
7088
7384
  createPreambleState(),
7089
7385
  createPreambleState()
7090
7386
  )
7091
- : createSuspenseBoundary(request, fallbackAbortSet, null, null);
7387
+ : createSuspenseBoundary(
7388
+ request,
7389
+ task.row,
7390
+ fallbackAbortSet,
7391
+ null,
7392
+ null
7393
+ );
7092
7394
  props.parentFlushed = !0;
7093
7395
  props.rootSegmentID = name;
7094
7396
  task.blockedBoundary = props;
@@ -7098,6 +7400,7 @@ function replayElement(
7098
7400
  request.resumableState,
7099
7401
  prevContext
7100
7402
  );
7403
+ task.row = null;
7101
7404
  task.replay = { nodes: type, slots: ref, pendingTasks: 1 };
7102
7405
  try {
7103
7406
  renderNode(request, task, content, -1);
@@ -7128,7 +7431,8 @@ function replayElement(
7128
7431
  (task.hoistableState = parentHoistableState),
7129
7432
  (task.replay = previousReplaySet),
7130
7433
  (task.keyPath = prevKeyPath),
7131
- (task.formatContext = prevContext);
7434
+ (task.formatContext = prevContext),
7435
+ (task.row = prevRow);
7132
7436
  }
7133
7437
  props = createReplayTask(
7134
7438
  request,
@@ -7146,6 +7450,7 @@ function replayElement(
7146
7450
  ),
7147
7451
  task.context,
7148
7452
  task.treeContext,
7453
+ task.row,
7149
7454
  task.componentStack,
7150
7455
  emptyContextObject,
7151
7456
  task.debugTask
@@ -7159,6 +7464,29 @@ function replayElement(
7159
7464
  }
7160
7465
  }
7161
7466
  }
7467
+ function validateIterable(task, iterable, childIndex, iterator, iteratorFn) {
7468
+ if (iterator === iterable) {
7469
+ if (
7470
+ -1 !== childIndex ||
7471
+ null === task.componentStack ||
7472
+ "function" !== typeof task.componentStack.type ||
7473
+ "[object GeneratorFunction]" !==
7474
+ Object.prototype.toString.call(task.componentStack.type) ||
7475
+ "[object Generator]" !== Object.prototype.toString.call(iterator)
7476
+ )
7477
+ didWarnAboutGenerators ||
7478
+ console.error(
7479
+ "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."
7480
+ ),
7481
+ (didWarnAboutGenerators = !0);
7482
+ } else
7483
+ iterable.entries !== iteratorFn ||
7484
+ didWarnAboutMaps ||
7485
+ (console.error(
7486
+ "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
7487
+ ),
7488
+ (didWarnAboutMaps = !0));
7489
+ }
7162
7490
  function renderNodeDestructive(request, task, node, childIndex) {
7163
7491
  null !== task.replay && "number" === typeof task.replay.slots
7164
7492
  ? resumeNode(request, task, task.replay.slots, node, childIndex)
@@ -7235,52 +7563,27 @@ function retryNode(request, task) {
7235
7563
  "Portals are not currently supported by the server renderer. Render them conditionally so that they only appear on the client render."
7236
7564
  );
7237
7565
  case REACT_LAZY_TYPE:
7238
- node = callLazyInitInDEV(node);
7566
+ type = callLazyInitInDEV(node);
7239
7567
  if (12 === request.status) throw null;
7240
- renderNodeDestructive(request, task, node, childIndex);
7568
+ renderNodeDestructive(request, task, type, childIndex);
7241
7569
  return;
7242
7570
  }
7243
7571
  if (isArrayImpl(node)) {
7244
7572
  renderChildrenArray(request, task, node, childIndex);
7245
7573
  return;
7246
7574
  }
7247
- null === node || "object" !== typeof node
7248
- ? (key = null)
7249
- : ((type =
7250
- (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||
7251
- node["@@iterator"]),
7252
- (key = "function" === typeof type ? type : null));
7253
- if (key && (type = key.call(node))) {
7254
- if (type === node) {
7255
- if (
7256
- -1 !== childIndex ||
7257
- null === task.componentStack ||
7258
- "function" !== typeof task.componentStack.type ||
7259
- "[object GeneratorFunction]" !==
7260
- Object.prototype.toString.call(task.componentStack.type) ||
7261
- "[object Generator]" !== Object.prototype.toString.call(type)
7262
- )
7263
- didWarnAboutGenerators ||
7264
- console.error(
7265
- "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."
7266
- ),
7267
- (didWarnAboutGenerators = !0);
7268
- } else
7269
- node.entries !== key ||
7270
- didWarnAboutMaps ||
7271
- (console.error(
7272
- "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
7273
- ),
7274
- (didWarnAboutMaps = !0));
7275
- node = type.next();
7276
- if (!node.done) {
7277
- key = [];
7278
- do key.push(node.value), (node = type.next());
7279
- while (!node.done);
7280
- renderChildrenArray(request, task, key, childIndex);
7575
+ if ((key = getIteratorFn(node)))
7576
+ if ((type = key.call(node))) {
7577
+ validateIterable(task, node, childIndex, type, key);
7578
+ node = type.next();
7579
+ if (!node.done) {
7580
+ key = [];
7581
+ do key.push(node.value), (node = type.next());
7582
+ while (!node.done);
7583
+ renderChildrenArray(request, task, key, childIndex);
7584
+ }
7585
+ return;
7281
7586
  }
7282
- return;
7283
- }
7284
7587
  if ("function" === typeof node.then)
7285
7588
  return (
7286
7589
  (task.thenableState = null),
@@ -7334,6 +7637,67 @@ function retryNode(request, task) {
7334
7637
  ));
7335
7638
  }
7336
7639
  }
7640
+ function warnForMissingKey(request, task, child) {
7641
+ if (
7642
+ null !== child &&
7643
+ "object" === typeof child &&
7644
+ (child.$$typeof === REACT_ELEMENT_TYPE ||
7645
+ child.$$typeof === REACT_PORTAL_TYPE) &&
7646
+ child._store &&
7647
+ ((!child._store.validated && null == child.key) ||
7648
+ 2 === child._store.validated)
7649
+ ) {
7650
+ if ("object" !== typeof child._store)
7651
+ throw Error(
7652
+ "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue."
7653
+ );
7654
+ child._store.validated = 1;
7655
+ var didWarnForKey = request.didWarnForKey;
7656
+ null == didWarnForKey &&
7657
+ (didWarnForKey = request.didWarnForKey = new WeakSet());
7658
+ request = task.componentStack;
7659
+ if (null !== request && !didWarnForKey.has(request)) {
7660
+ didWarnForKey.add(request);
7661
+ var componentName = getComponentNameFromType(child.type);
7662
+ didWarnForKey = child._owner;
7663
+ var parentOwner = request.owner;
7664
+ request = "";
7665
+ if (parentOwner && "undefined" !== typeof parentOwner.type) {
7666
+ var name = getComponentNameFromType(parentOwner.type);
7667
+ name && (request = "\n\nCheck the render method of `" + name + "`.");
7668
+ }
7669
+ request ||
7670
+ (componentName &&
7671
+ (request =
7672
+ "\n\nCheck the top-level render call using <" +
7673
+ componentName +
7674
+ ">."));
7675
+ componentName = "";
7676
+ null != didWarnForKey &&
7677
+ parentOwner !== didWarnForKey &&
7678
+ ((parentOwner = null),
7679
+ "undefined" !== typeof didWarnForKey.type
7680
+ ? (parentOwner = getComponentNameFromType(didWarnForKey.type))
7681
+ : "string" === typeof didWarnForKey.name &&
7682
+ (parentOwner = didWarnForKey.name),
7683
+ parentOwner &&
7684
+ (componentName = " It was passed a child from " + parentOwner + "."));
7685
+ didWarnForKey = task.componentStack;
7686
+ task.componentStack = {
7687
+ parent: task.componentStack,
7688
+ type: child.type,
7689
+ owner: child._owner,
7690
+ stack: child._debugStack
7691
+ };
7692
+ console.error(
7693
+ 'Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',
7694
+ request,
7695
+ componentName
7696
+ );
7697
+ task.componentStack = didWarnForKey;
7698
+ }
7699
+ }
7700
+ }
7337
7701
  function renderChildrenArray(request, task, children, childIndex) {
7338
7702
  var prevKeyPath = task.keyPath,
7339
7703
  previousComponentStack = task.componentStack;
@@ -7420,75 +7784,11 @@ function renderChildrenArray(request, task, children, childIndex) {
7420
7784
  task.debugTask = previousDebugTask;
7421
7785
  return;
7422
7786
  }
7423
- for (j = 0; j < replayNodes; j++) {
7424
- childIndex = children[j];
7425
- resumeSlots = request;
7426
- node = task;
7427
- error = childIndex;
7428
- if (
7429
- null !== error &&
7430
- "object" === typeof error &&
7431
- (error.$$typeof === REACT_ELEMENT_TYPE ||
7432
- error.$$typeof === REACT_PORTAL_TYPE) &&
7433
- error._store &&
7434
- ((!error._store.validated && null == error.key) ||
7435
- 2 === error._store.validated)
7436
- ) {
7437
- if ("object" !== typeof error._store)
7438
- throw Error(
7439
- "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue."
7440
- );
7441
- error._store.validated = 1;
7442
- thrownInfo = resumeSlots.didWarnForKey;
7443
- null == thrownInfo &&
7444
- (thrownInfo = resumeSlots.didWarnForKey = new WeakSet());
7445
- resumeSlots = node.componentStack;
7446
- if (null !== resumeSlots && !thrownInfo.has(resumeSlots)) {
7447
- thrownInfo.add(resumeSlots);
7448
- var componentName = getComponentNameFromType(error.type);
7449
- thrownInfo = error._owner;
7450
- var parentOwner = resumeSlots.owner;
7451
- resumeSlots = "";
7452
- if (parentOwner && "undefined" !== typeof parentOwner.type) {
7453
- var name = getComponentNameFromType(parentOwner.type);
7454
- name &&
7455
- (resumeSlots = "\n\nCheck the render method of `" + name + "`.");
7456
- }
7457
- resumeSlots ||
7458
- (componentName &&
7459
- (resumeSlots =
7460
- "\n\nCheck the top-level render call using <" +
7461
- componentName +
7462
- ">."));
7463
- componentName = "";
7464
- null != thrownInfo &&
7465
- parentOwner !== thrownInfo &&
7466
- ((parentOwner = null),
7467
- "undefined" !== typeof thrownInfo.type
7468
- ? (parentOwner = getComponentNameFromType(thrownInfo.type))
7469
- : "string" === typeof thrownInfo.name &&
7470
- (parentOwner = thrownInfo.name),
7471
- parentOwner &&
7472
- (componentName =
7473
- " It was passed a child from " + parentOwner + "."));
7474
- thrownInfo = node.componentStack;
7475
- node.componentStack = {
7476
- parent: node.componentStack,
7477
- type: error.type,
7478
- owner: error._owner,
7479
- stack: error._debugStack
7480
- };
7481
- console.error(
7482
- 'Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',
7483
- resumeSlots,
7484
- componentName
7485
- );
7486
- node.componentStack = thrownInfo;
7487
- }
7488
- }
7489
- task.treeContext = pushTreeContext(replay, replayNodes, j);
7490
- renderNode(request, task, childIndex, j);
7491
- }
7787
+ for (j = 0; j < replayNodes; j++)
7788
+ (childIndex = children[j]),
7789
+ warnForMissingKey(request, task, childIndex),
7790
+ (task.treeContext = pushTreeContext(replay, replayNodes, j)),
7791
+ renderNode(request, task, childIndex, j);
7492
7792
  task.treeContext = replay;
7493
7793
  task.keyPath = prevKeyPath;
7494
7794
  task.componentStack = previousComponentStack;
@@ -7517,6 +7817,7 @@ function spawnNewSuspendedReplayTask(request, task, thenableState) {
7517
7817
  task.formatContext,
7518
7818
  task.context,
7519
7819
  task.treeContext,
7820
+ task.row,
7520
7821
  task.componentStack,
7521
7822
  emptyContextObject,
7522
7823
  task.debugTask
@@ -7548,6 +7849,7 @@ function spawnNewSuspendedRenderTask(request, task, thenableState) {
7548
7849
  task.formatContext,
7549
7850
  task.context,
7550
7851
  task.treeContext,
7852
+ task.row,
7551
7853
  task.componentStack,
7552
7854
  emptyContextObject,
7553
7855
  task.debugTask
@@ -7654,9 +7956,11 @@ function renderNode(request, task, node, childIndex) {
7654
7956
  throw node;
7655
7957
  }
7656
7958
  function abortTaskSoft(task) {
7657
- var boundary = task.blockedBoundary;
7658
- task = task.blockedSegment;
7659
- null !== task && ((task.status = 3), finishedTask(this, boundary, task));
7959
+ var boundary = task.blockedBoundary,
7960
+ segment = task.blockedSegment;
7961
+ null !== segment &&
7962
+ ((segment.status = ABORTED),
7963
+ finishedTask(this, boundary, task.row, segment));
7660
7964
  }
7661
7965
  function abortRemainingReplayNodes(
7662
7966
  request$jscomp$0,
@@ -7690,6 +7994,7 @@ function abortRemainingReplayNodes(
7690
7994
  wasAborted = aborted,
7691
7995
  resumedBoundary = createSuspenseBoundary(
7692
7996
  request,
7997
+ null,
7693
7998
  new Set(),
7694
7999
  null,
7695
8000
  null
@@ -7733,7 +8038,7 @@ function abortTask(task, request, error) {
7733
8038
  segment = task.blockedSegment;
7734
8039
  if (null !== segment) {
7735
8040
  if (6 === segment.status) return;
7736
- segment.status = 3;
8041
+ segment.status = ABORTED;
7737
8042
  }
7738
8043
  segment = getThrownInfo(task.componentStack);
7739
8044
  if (null === boundary) {
@@ -7745,36 +8050,44 @@ function abortTask(task, request, error) {
7745
8050
  return;
7746
8051
  }
7747
8052
  boundary.pendingTasks--;
7748
- 0 === boundary.pendingTasks &&
7749
- 0 < boundary.nodes.length &&
7750
- ((task = logRecoverableError(request, error, segment, null)),
8053
+ if (0 === boundary.pendingTasks && 0 < boundary.nodes.length) {
8054
+ var errorDigest = logRecoverableError(request, error, segment, null);
7751
8055
  abortRemainingReplayNodes(
7752
8056
  request,
7753
8057
  null,
7754
8058
  boundary.nodes,
7755
8059
  boundary.slots,
7756
8060
  error,
7757
- task,
8061
+ errorDigest,
7758
8062
  segment,
7759
8063
  !0
7760
- ));
8064
+ );
8065
+ }
7761
8066
  request.pendingRootTasks--;
7762
8067
  0 === request.pendingRootTasks && completeShell(request);
7763
8068
  }
7764
8069
  } else
7765
- boundary.pendingTasks--,
7766
- boundary.status !== CLIENT_RENDERED &&
7767
- ((boundary.status = CLIENT_RENDERED),
7768
- (task = logRecoverableError(request, error, segment, null)),
7769
- (boundary.status = CLIENT_RENDERED),
7770
- encodeErrorForBoundary(boundary, task, error, segment, !0),
7771
- untrackBoundary(request, boundary),
7772
- boundary.parentFlushed &&
7773
- request.clientRenderedBoundaries.push(boundary)),
8070
+ boundary.status !== CLIENT_RENDERED &&
8071
+ ((boundary.status = CLIENT_RENDERED),
8072
+ (errorDigest = logRecoverableError(request, error, segment, null)),
8073
+ (boundary.status = CLIENT_RENDERED),
8074
+ encodeErrorForBoundary(boundary, errorDigest, error, segment, !0),
8075
+ untrackBoundary(request, boundary),
8076
+ boundary.parentFlushed &&
8077
+ request.clientRenderedBoundaries.push(boundary)),
8078
+ boundary.pendingTasks--,
8079
+ (segment = boundary.row),
8080
+ null !== segment &&
8081
+ 0 === --segment.pendingTasks &&
8082
+ finishSuspenseListRow(request, segment),
7774
8083
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
7775
8084
  return abortTask(fallbackTask, request, error);
7776
8085
  }),
7777
8086
  boundary.fallbackAbortableTasks.clear();
8087
+ task = task.row;
8088
+ null !== task &&
8089
+ 0 === --task.pendingTasks &&
8090
+ finishSuspenseListRow(request, task);
7778
8091
  request.allPendingTasks--;
7779
8092
  0 === request.allPendingTasks && completeAll(request);
7780
8093
  }
@@ -7882,7 +8195,11 @@ function finishedSegment(request, boundary, segment) {
7882
8195
  : (boundary.byteSize += segmentByteSize);
7883
8196
  }
7884
8197
  }
7885
- function finishedTask(request, boundary, segment) {
8198
+ function finishedTask(request, boundary, row, segment) {
8199
+ null !== row &&
8200
+ (0 === --row.pendingTasks
8201
+ ? finishSuspenseListRow(request, row)
8202
+ : row.together && tryToResolveTogetherRow(request, row));
7886
8203
  request.allPendingTasks--;
7887
8204
  if (null === boundary) {
7888
8205
  if (null !== segment && segment.parentFlushed) {
@@ -7906,23 +8223,33 @@ function finishedTask(request, boundary, segment) {
7906
8223
  boundary.parentFlushed &&
7907
8224
  request.completedBoundaries.push(boundary),
7908
8225
  boundary.status === COMPLETED &&
7909
- (500 < boundary.byteSize ||
8226
+ ((row = boundary.row),
8227
+ null !== row &&
8228
+ hoistHoistables(row.hoistables, boundary.contentState),
8229
+ 500 < boundary.byteSize ||
7910
8230
  (boundary.fallbackAbortableTasks.forEach(
7911
8231
  abortTaskSoft,
7912
8232
  request
7913
8233
  ),
7914
- boundary.fallbackAbortableTasks.clear()),
8234
+ boundary.fallbackAbortableTasks.clear(),
8235
+ null !== row &&
8236
+ 0 === --row.pendingTasks &&
8237
+ finishSuspenseListRow(request, row)),
7915
8238
  0 === request.pendingRootTasks &&
7916
8239
  null === request.trackedPostpones &&
7917
8240
  null !== boundary.contentPreamble &&
7918
8241
  preparePreamble(request)))
7919
- : null !== segment &&
7920
- segment.parentFlushed &&
7921
- segment.status === COMPLETED &&
7922
- (queueCompletedSegment(boundary, segment),
7923
- 1 === boundary.completedSegments.length &&
7924
- boundary.parentFlushed &&
7925
- request.partialBoundaries.push(boundary)));
8242
+ : (null !== segment &&
8243
+ segment.parentFlushed &&
8244
+ segment.status === COMPLETED &&
8245
+ (queueCompletedSegment(boundary, segment),
8246
+ 1 === boundary.completedSegments.length &&
8247
+ boundary.parentFlushed &&
8248
+ request.partialBoundaries.push(boundary)),
8249
+ (boundary = boundary.row),
8250
+ null !== boundary &&
8251
+ boundary.together &&
8252
+ tryToResolveTogetherRow(request, boundary)));
7926
8253
  0 === request.allPendingTasks && completeAll(request);
7927
8254
  }
7928
8255
  function performWork(request$jscomp$2) {
@@ -7972,7 +8299,12 @@ function performWork(request$jscomp$2) {
7972
8299
  );
7973
8300
  request.replay.pendingTasks--;
7974
8301
  request.abortSet.delete(request);
7975
- finishedTask(request$jscomp$0, request.blockedBoundary, null);
8302
+ finishedTask(
8303
+ request$jscomp$0,
8304
+ request.blockedBoundary,
8305
+ request.row,
8306
+ null
8307
+ );
7976
8308
  } catch (thrownValue) {
7977
8309
  resetHooksState();
7978
8310
  var x =
@@ -8042,9 +8374,12 @@ function performWork(request$jscomp$2) {
8042
8374
  chunkLength = request$jscomp$1.chunks.length;
8043
8375
  try {
8044
8376
  retryNode(request, errorDigest),
8045
- request$jscomp$1.lastPushedText &&
8046
- request$jscomp$1.textEmbedded &&
8047
- request$jscomp$1.chunks.push("\x3c!-- --\x3e"),
8377
+ pushSegmentFinale(
8378
+ request$jscomp$1.chunks,
8379
+ request.renderState,
8380
+ request$jscomp$1.lastPushedText,
8381
+ request$jscomp$1.textEmbedded
8382
+ ),
8048
8383
  errorDigest.abortSet.delete(errorDigest),
8049
8384
  (request$jscomp$1.status = COMPLETED),
8050
8385
  finishedSegment(
@@ -8055,6 +8390,7 @@ function performWork(request$jscomp$2) {
8055
8390
  finishedTask(
8056
8391
  request,
8057
8392
  errorDigest.blockedBoundary,
8393
+ errorDigest.row,
8058
8394
  request$jscomp$1
8059
8395
  );
8060
8396
  } catch (thrownValue) {
@@ -8083,33 +8419,44 @@ function performWork(request$jscomp$2) {
8083
8419
  errorDigest.abortSet.delete(errorDigest);
8084
8420
  request$jscomp$1.status = 4;
8085
8421
  var boundary$jscomp$0 = errorDigest.blockedBoundary,
8422
+ row = errorDigest.row,
8086
8423
  debugTask = errorDigest.debugTask;
8424
+ null !== row &&
8425
+ 0 === --row.pendingTasks &&
8426
+ finishSuspenseListRow(request, row);
8427
+ request.allPendingTasks--;
8087
8428
  prevTaskInDEV = logRecoverableError(
8088
8429
  request,
8089
8430
  x$jscomp$0,
8090
8431
  errorInfo$jscomp$1,
8091
8432
  debugTask
8092
8433
  );
8093
- null === boundary$jscomp$0
8094
- ? fatalError(request, x$jscomp$0, errorInfo$jscomp$1, debugTask)
8095
- : (boundary$jscomp$0.pendingTasks--,
8096
- boundary$jscomp$0.status !== CLIENT_RENDERED &&
8097
- ((boundary$jscomp$0.status = CLIENT_RENDERED),
8098
- encodeErrorForBoundary(
8099
- boundary$jscomp$0,
8100
- prevTaskInDEV,
8101
- x$jscomp$0,
8102
- errorInfo$jscomp$1,
8103
- !1
8104
- ),
8105
- untrackBoundary(request, boundary$jscomp$0),
8106
- boundary$jscomp$0.parentFlushed &&
8107
- request.clientRenderedBoundaries.push(boundary$jscomp$0),
8108
- 0 === request.pendingRootTasks &&
8109
- null === request.trackedPostpones &&
8110
- null !== boundary$jscomp$0.contentPreamble &&
8111
- preparePreamble(request)));
8112
- request.allPendingTasks--;
8434
+ if (null === boundary$jscomp$0)
8435
+ fatalError(request, x$jscomp$0, errorInfo$jscomp$1, debugTask);
8436
+ else if (
8437
+ (boundary$jscomp$0.pendingTasks--,
8438
+ boundary$jscomp$0.status !== CLIENT_RENDERED)
8439
+ ) {
8440
+ boundary$jscomp$0.status = CLIENT_RENDERED;
8441
+ encodeErrorForBoundary(
8442
+ boundary$jscomp$0,
8443
+ prevTaskInDEV,
8444
+ x$jscomp$0,
8445
+ errorInfo$jscomp$1,
8446
+ !1
8447
+ );
8448
+ untrackBoundary(request, boundary$jscomp$0);
8449
+ var boundaryRow = boundary$jscomp$0.row;
8450
+ null !== boundaryRow &&
8451
+ 0 === --boundaryRow.pendingTasks &&
8452
+ finishSuspenseListRow(request, boundaryRow);
8453
+ boundary$jscomp$0.parentFlushed &&
8454
+ request.clientRenderedBoundaries.push(boundary$jscomp$0);
8455
+ 0 === request.pendingRootTasks &&
8456
+ null === request.trackedPostpones &&
8457
+ null !== boundary$jscomp$0.contentPreamble &&
8458
+ preparePreamble(request);
8459
+ }
8113
8460
  0 === request.allPendingTasks && completeAll(request);
8114
8461
  }
8115
8462
  } finally {
@@ -8258,15 +8605,19 @@ function flushSegment(request, destination, segment, hoistableState) {
8258
8605
  return flushSubtree(request, destination, segment, hoistableState);
8259
8606
  boundary.parentFlushed = !0;
8260
8607
  if (boundary.status === CLIENT_RENDERED) {
8261
- var errorDigest = boundary.errorDigest,
8262
- errorMessage = boundary.errorMessage,
8608
+ var row = boundary.row;
8609
+ null !== row &&
8610
+ 0 === --row.pendingTasks &&
8611
+ finishSuspenseListRow(request, row);
8612
+ row = boundary.errorDigest;
8613
+ var errorMessage = boundary.errorMessage,
8263
8614
  errorStack = boundary.errorStack;
8264
8615
  boundary = boundary.errorComponentStack;
8265
8616
  destination.write(startClientRenderedSuspenseBoundary);
8266
8617
  writeChunk(destination, clientRenderedSuspenseBoundaryError1);
8267
- errorDigest &&
8618
+ row &&
8268
8619
  (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
8269
- writeChunk(destination, escapeTextForBrowser(errorDigest)),
8620
+ writeChunk(destination, escapeTextForBrowser(row)),
8270
8621
  writeChunk(
8271
8622
  destination,
8272
8623
  clientRenderedSuspenseBoundaryErrorAttrInterstitial
@@ -8304,13 +8655,7 @@ function flushSegment(request, destination, segment, hoistableState) {
8304
8655
  request.renderState,
8305
8656
  boundary.rootSegmentID
8306
8657
  ),
8307
- hoistableState &&
8308
- ((boundary = boundary.fallbackState),
8309
- boundary.styles.forEach(hoistStyleQueueDependency, hoistableState),
8310
- boundary.stylesheets.forEach(
8311
- hoistStylesheetDependency,
8312
- hoistableState
8313
- )),
8658
+ hoistableState && hoistHoistables(hoistableState, boundary.fallbackState),
8314
8659
  flushSubtree(request, destination, segment, hoistableState);
8315
8660
  else if (
8316
8661
  500 < boundary.byteSize &&
@@ -8326,10 +8671,12 @@ function flushSegment(request, destination, segment, hoistableState) {
8326
8671
  flushSubtree(request, destination, segment, hoistableState);
8327
8672
  else {
8328
8673
  flushedByteSize += boundary.byteSize;
8329
- hoistableState &&
8330
- ((segment = boundary.contentState),
8331
- segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
8332
- segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
8674
+ hoistableState && hoistHoistables(hoistableState, boundary.contentState);
8675
+ segment = boundary.row;
8676
+ null !== segment &&
8677
+ 500 < boundary.byteSize &&
8678
+ 0 === --segment.pendingTasks &&
8679
+ finishSuspenseListRow(request, segment);
8333
8680
  destination.write(startCompletedSuspenseBoundary);
8334
8681
  segment = boundary.completedSegments;
8335
8682
  if (1 !== segment.length)
@@ -8364,6 +8711,11 @@ function flushCompletedBoundary(request, destination, boundary) {
8364
8711
  completedSegments[i]
8365
8712
  );
8366
8713
  completedSegments.length = 0;
8714
+ completedSegments = boundary.row;
8715
+ null !== completedSegments &&
8716
+ 500 < boundary.byteSize &&
8717
+ 0 === --completedSegments.pendingTasks &&
8718
+ finishSuspenseListRow(request, completedSegments);
8367
8719
  writeHoistablesForBoundary(
8368
8720
  destination,
8369
8721
  boundary.contentState,
@@ -8696,6 +9048,17 @@ function flushCompletedQueues(request, destination) {
8696
9048
  break a;
8697
9049
  }
8698
9050
  completedSegments.splice(0, JSCompiler_inline_result);
9051
+ var row = boundary$jscomp$0.row;
9052
+ null !== row &&
9053
+ row.together &&
9054
+ 1 === boundary$jscomp$0.pendingTasks &&
9055
+ (1 === row.pendingTasks
9056
+ ? unblockSuspenseListRow(
9057
+ clientRenderedBoundaries,
9058
+ row,
9059
+ row.hoistables
9060
+ )
9061
+ : row.pendingTasks--);
8699
9062
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
8700
9063
  boundary,
8701
9064
  boundary$jscomp$0.contentState,
@@ -8789,15 +9152,15 @@ function abort(request, reason) {
8789
9152
  fatalError(request, error$4, reason, null);
8790
9153
  }
8791
9154
  }
8792
- var isomorphicReactPackageVersion$jscomp$inline_761 = React.version;
9155
+ var isomorphicReactPackageVersion$jscomp$inline_752 = React.version;
8793
9156
  if (
8794
- "19.2.0-canary-462d08f9-20250517" !==
8795
- isomorphicReactPackageVersion$jscomp$inline_761
9157
+ "19.2.0-canary-23884812-20250520" !==
9158
+ isomorphicReactPackageVersion$jscomp$inline_752
8796
9159
  )
8797
9160
  throw Error(
8798
9161
  'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
8799
- (isomorphicReactPackageVersion$jscomp$inline_761 +
8800
- "\n - react-dom: 19.2.0-canary-462d08f9-20250517\nLearn more: https://react.dev/warnings/version-mismatch")
9162
+ (isomorphicReactPackageVersion$jscomp$inline_752 +
9163
+ "\n - react-dom: 19.2.0-canary-23884812-20250520\nLearn more: https://react.dev/warnings/version-mismatch")
8801
9164
  );
8802
9165
  exports.renderToReadableStream = function (children, options) {
8803
9166
  return new Promise(function (resolve, reject) {
@@ -8890,4 +9253,4 @@ exports.renderToReadableStream = function (children, options) {
8890
9253
  startWork(request$jscomp$0);
8891
9254
  });
8892
9255
  };
8893
- exports.version = "19.2.0-canary-462d08f9-20250517";
9256
+ exports.version = "19.2.0-canary-23884812-20250520";