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.
@@ -33,8 +33,15 @@ var util = require("util"),
33
33
  REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden"),
34
34
  REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel"),
35
35
  REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"),
36
- MAYBE_ITERATOR_SYMBOL = Symbol.iterator,
37
- isArrayImpl = Array.isArray,
36
+ MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
37
+ function getIteratorFn(maybeIterable) {
38
+ if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
39
+ maybeIterable =
40
+ (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
41
+ maybeIterable["@@iterator"];
42
+ return "function" === typeof maybeIterable ? maybeIterable : null;
43
+ }
44
+ var isArrayImpl = Array.isArray,
38
45
  scheduleMicrotask = queueMicrotask;
39
46
  function flushBuffered(destination) {
40
47
  "function" === typeof destination.flush && destination.flush();
@@ -4024,6 +4031,7 @@ function createRequest(
4024
4031
  rootFormatContext,
4025
4032
  null,
4026
4033
  emptyTreeContext,
4034
+ null,
4027
4035
  null
4028
4036
  );
4029
4037
  pushComponentStack(children);
@@ -4084,15 +4092,17 @@ function pingTask(request, task) {
4084
4092
  }
4085
4093
  function createSuspenseBoundary(
4086
4094
  request,
4095
+ row,
4087
4096
  fallbackAbortableTasks,
4088
4097
  contentPreamble,
4089
4098
  fallbackPreamble
4090
4099
  ) {
4091
- return {
4100
+ fallbackAbortableTasks = {
4092
4101
  status: 0,
4093
4102
  rootSegmentID: -1,
4094
4103
  parentFlushed: !1,
4095
4104
  pendingTasks: 0,
4105
+ row: row,
4096
4106
  completedSegments: [],
4097
4107
  byteSize: 0,
4098
4108
  fallbackAbortableTasks: fallbackAbortableTasks,
@@ -4104,6 +4114,14 @@ function createSuspenseBoundary(
4104
4114
  trackedContentKeyPath: null,
4105
4115
  trackedFallbackNode: null
4106
4116
  };
4117
+ null !== row &&
4118
+ (row.pendingTasks++,
4119
+ (row = row.boundaries),
4120
+ null !== row &&
4121
+ (request.allPendingTasks++,
4122
+ fallbackAbortableTasks.pendingTasks++,
4123
+ row.push(fallbackAbortableTasks)));
4124
+ return fallbackAbortableTasks;
4107
4125
  }
4108
4126
  function createRenderTask(
4109
4127
  request,
@@ -4119,12 +4137,14 @@ function createRenderTask(
4119
4137
  formatContext,
4120
4138
  context,
4121
4139
  treeContext,
4140
+ row,
4122
4141
  componentStack
4123
4142
  ) {
4124
4143
  request.allPendingTasks++;
4125
4144
  null === blockedBoundary
4126
4145
  ? request.pendingRootTasks++
4127
4146
  : blockedBoundary.pendingTasks++;
4147
+ null !== row && row.pendingTasks++;
4128
4148
  var task = {
4129
4149
  replay: null,
4130
4150
  node: node,
@@ -4141,6 +4161,7 @@ function createRenderTask(
4141
4161
  formatContext: formatContext,
4142
4162
  context: context,
4143
4163
  treeContext: treeContext,
4164
+ row: row,
4144
4165
  componentStack: componentStack,
4145
4166
  thenableState: thenableState
4146
4167
  };
@@ -4160,12 +4181,14 @@ function createReplayTask(
4160
4181
  formatContext,
4161
4182
  context,
4162
4183
  treeContext,
4184
+ row,
4163
4185
  componentStack
4164
4186
  ) {
4165
4187
  request.allPendingTasks++;
4166
4188
  null === blockedBoundary
4167
4189
  ? request.pendingRootTasks++
4168
4190
  : blockedBoundary.pendingTasks++;
4191
+ null !== row && row.pendingTasks++;
4169
4192
  replay.pendingTasks++;
4170
4193
  var task = {
4171
4194
  replay: replay,
@@ -4183,6 +4206,7 @@ function createReplayTask(
4183
4206
  formatContext: formatContext,
4184
4207
  context: context,
4185
4208
  treeContext: treeContext,
4209
+ row: row,
4186
4210
  componentStack: componentStack,
4187
4211
  thenableState: thenableState
4188
4212
  };
@@ -4260,6 +4284,129 @@ function fatalError(request, error) {
4260
4284
  ? ((request.status = 14), request.destination.destroy(error))
4261
4285
  : ((request.status = 13), (request.fatalError = error));
4262
4286
  }
4287
+ function finishSuspenseListRow(request, row) {
4288
+ for (row = row.next; null !== row; ) {
4289
+ var unblockedBoundaries = row.boundaries;
4290
+ if (null !== unblockedBoundaries) {
4291
+ row.boundaries = null;
4292
+ for (var i = 0; i < unblockedBoundaries.length; i++)
4293
+ finishedTask(request, unblockedBoundaries[i], null, null);
4294
+ }
4295
+ row.pendingTasks--;
4296
+ if (0 < row.pendingTasks) break;
4297
+ row = row.next;
4298
+ }
4299
+ }
4300
+ function createSuspenseListRow(previousRow) {
4301
+ var newRow = { pendingTasks: 1, boundaries: null, next: null };
4302
+ null !== previousRow &&
4303
+ 0 < previousRow.pendingTasks &&
4304
+ (newRow.pendingTasks++,
4305
+ (newRow.boundaries = []),
4306
+ (previousRow.next = newRow));
4307
+ return newRow;
4308
+ }
4309
+ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4310
+ keyPath = task.keyPath;
4311
+ var prevTreeContext = task.treeContext,
4312
+ prevRow = task.row,
4313
+ totalChildren = rows.length,
4314
+ previousSuspenseListRow = null;
4315
+ if (null !== task.replay) {
4316
+ var resumeSlots = task.replay.slots;
4317
+ if (null !== resumeSlots && "object" === typeof resumeSlots)
4318
+ for (var n = 0; n < totalChildren; n++) {
4319
+ var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
4320
+ node = rows[i];
4321
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4322
+ previousSuspenseListRow
4323
+ );
4324
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4325
+ var resumeSegmentID = resumeSlots[i];
4326
+ "number" === typeof resumeSegmentID
4327
+ ? (resumeNode(request, task, resumeSegmentID, node, i),
4328
+ delete resumeSlots[i])
4329
+ : renderNode(request, task, node, i);
4330
+ 0 === --previousSuspenseListRow.pendingTasks &&
4331
+ finishSuspenseListRow(request, previousSuspenseListRow);
4332
+ }
4333
+ else
4334
+ for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
4335
+ (n =
4336
+ "backwards" !== revealOrder
4337
+ ? resumeSlots
4338
+ : totalChildren - 1 - resumeSlots),
4339
+ (i = rows[n]),
4340
+ (task.row = previousSuspenseListRow =
4341
+ createSuspenseListRow(previousSuspenseListRow)),
4342
+ (task.treeContext = pushTreeContext(
4343
+ prevTreeContext,
4344
+ totalChildren,
4345
+ n
4346
+ )),
4347
+ renderNode(request, task, i, n),
4348
+ 0 === --previousSuspenseListRow.pendingTasks &&
4349
+ finishSuspenseListRow(request, previousSuspenseListRow);
4350
+ } else if ("backwards" !== revealOrder)
4351
+ for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
4352
+ (resumeSlots = rows[revealOrder]),
4353
+ (task.row = previousSuspenseListRow =
4354
+ createSuspenseListRow(previousSuspenseListRow)),
4355
+ (task.treeContext = pushTreeContext(
4356
+ prevTreeContext,
4357
+ totalChildren,
4358
+ revealOrder
4359
+ )),
4360
+ renderNode(request, task, resumeSlots, revealOrder),
4361
+ 0 === --previousSuspenseListRow.pendingTasks &&
4362
+ finishSuspenseListRow(request, previousSuspenseListRow);
4363
+ else {
4364
+ revealOrder = task.blockedSegment;
4365
+ resumeSlots = revealOrder.children.length;
4366
+ n = revealOrder.chunks.length;
4367
+ for (i = totalChildren - 1; 0 <= i; i--) {
4368
+ node = rows[i];
4369
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4370
+ previousSuspenseListRow
4371
+ );
4372
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4373
+ resumeSegmentID = createPendingSegment(
4374
+ request,
4375
+ n,
4376
+ null,
4377
+ task.formatContext,
4378
+ 0 === i ? revealOrder.lastPushedText : !0,
4379
+ !0
4380
+ );
4381
+ revealOrder.children.splice(resumeSlots, 0, resumeSegmentID);
4382
+ task.blockedSegment = resumeSegmentID;
4383
+ try {
4384
+ renderNode(request, task, node, i),
4385
+ resumeSegmentID.lastPushedText &&
4386
+ resumeSegmentID.textEmbedded &&
4387
+ resumeSegmentID.chunks.push(textSeparator),
4388
+ (resumeSegmentID.status = 1),
4389
+ finishedSegment(request, task.blockedBoundary, resumeSegmentID),
4390
+ 0 === --previousSuspenseListRow.pendingTasks &&
4391
+ finishSuspenseListRow(request, previousSuspenseListRow);
4392
+ } catch (thrownValue) {
4393
+ throw (
4394
+ ((resumeSegmentID.status = 12 === request.status ? 3 : 4),
4395
+ thrownValue)
4396
+ );
4397
+ }
4398
+ }
4399
+ task.blockedSegment = revealOrder;
4400
+ revealOrder.lastPushedText = !1;
4401
+ }
4402
+ null !== prevRow &&
4403
+ null !== previousSuspenseListRow &&
4404
+ 0 < previousSuspenseListRow.pendingTasks &&
4405
+ (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
4406
+ task.treeContext = prevTreeContext;
4407
+ task.row = prevRow;
4408
+ task.keyPath = keyPath;
4409
+ }
4263
4410
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
4264
4411
  var prevThenableState = task.thenableState;
4265
4412
  task.thenableState = null;
@@ -4327,9 +4474,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
4327
4474
  var defaultProps = type.defaultProps;
4328
4475
  if (defaultProps) {
4329
4476
  newProps === props && (newProps = assign({}, newProps, props));
4330
- for (var propName$34 in defaultProps)
4331
- void 0 === newProps[propName$34] &&
4332
- (newProps[propName$34] = defaultProps[propName$34]);
4477
+ for (var propName$42 in defaultProps)
4478
+ void 0 === newProps[propName$42] &&
4479
+ (newProps[propName$42] = defaultProps[propName$42]);
4333
4480
  }
4334
4481
  props = newProps;
4335
4482
  newProps = emptyContextObject;
@@ -4389,16 +4536,16 @@ function renderElement(request, task, keyPath, type, props, ref) {
4389
4536
  defaultProps = ref ? type[0] : newProps.state;
4390
4537
  initialState = !0;
4391
4538
  for (ref = ref ? 1 : 0; ref < type.length; ref++)
4392
- (propName$34 = type[ref]),
4393
- (propName$34 =
4394
- "function" === typeof propName$34
4395
- ? propName$34.call(newProps, defaultProps, props, void 0)
4396
- : propName$34),
4397
- null != propName$34 &&
4539
+ (propName$42 = type[ref]),
4540
+ (propName$42 =
4541
+ "function" === typeof propName$42
4542
+ ? propName$42.call(newProps, defaultProps, props, void 0)
4543
+ : propName$42),
4544
+ null != propName$42 &&
4398
4545
  (initialState
4399
4546
  ? ((initialState = !1),
4400
- (defaultProps = assign({}, defaultProps, propName$34)))
4401
- : assign(defaultProps, propName$34));
4547
+ (defaultProps = assign({}, defaultProps, propName$42)))
4548
+ : assign(defaultProps, propName$42));
4402
4549
  newProps.state = defaultProps;
4403
4550
  }
4404
4551
  else defaultProps.queue = null;
@@ -4473,6 +4620,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4473
4620
  task.formatContext,
4474
4621
  task.context,
4475
4622
  task.treeContext,
4623
+ task.row,
4476
4624
  task.componentStack
4477
4625
  )),
4478
4626
  pushComponentStack(keyPath),
@@ -4552,10 +4700,30 @@ function renderElement(request, task, keyPath, type, props, ref) {
4552
4700
  (type.lastPushedText = !1));
4553
4701
  return;
4554
4702
  case REACT_SUSPENSE_LIST_TYPE:
4555
- type = task.keyPath;
4556
- task.keyPath = keyPath;
4557
- renderNodeDestructive(request, task, props.children, -1);
4558
- task.keyPath = type;
4703
+ a: {
4704
+ type = props.children;
4705
+ props = props.revealOrder;
4706
+ if ("forwards" === props || "backwards" === props) {
4707
+ if (isArrayImpl(type)) {
4708
+ renderSuspenseListRows(request, task, keyPath, type, props);
4709
+ break a;
4710
+ }
4711
+ if ((newProps = getIteratorFn(type)))
4712
+ if ((newProps = newProps.call(type))) {
4713
+ defaultProps = newProps.next();
4714
+ if (!defaultProps.done) {
4715
+ do defaultProps = newProps.next();
4716
+ while (!defaultProps.done);
4717
+ renderSuspenseListRows(request, task, keyPath, type, props);
4718
+ }
4719
+ break a;
4720
+ }
4721
+ }
4722
+ props = task.keyPath;
4723
+ task.keyPath = keyPath;
4724
+ renderNodeDestructive(request, task, type, -1);
4725
+ task.keyPath = props;
4726
+ }
4559
4727
  return;
4560
4728
  case REACT_VIEW_TRANSITION_TYPE:
4561
4729
  case REACT_SCOPE_TYPE:
@@ -4564,21 +4732,26 @@ function renderElement(request, task, keyPath, type, props, ref) {
4564
4732
  a: if (null !== task.replay) {
4565
4733
  type = task.keyPath;
4566
4734
  newProps = task.formatContext;
4735
+ defaultProps = task.row;
4567
4736
  task.keyPath = keyPath;
4568
4737
  task.formatContext = getSuspenseContentFormatContext(
4569
4738
  request.resumableState,
4570
4739
  newProps
4571
4740
  );
4741
+ task.row = null;
4572
4742
  keyPath = props.children;
4573
4743
  try {
4574
4744
  renderNode(request, task, keyPath, -1);
4575
4745
  } finally {
4576
- (task.keyPath = type), (task.formatContext = newProps);
4746
+ (task.keyPath = type),
4747
+ (task.formatContext = newProps),
4748
+ (task.row = defaultProps);
4577
4749
  }
4578
4750
  } else {
4579
4751
  type = task.keyPath;
4580
4752
  ref = task.formatContext;
4581
- propName$34 = task.blockedBoundary;
4753
+ var prevRow = task.row;
4754
+ propName$42 = task.blockedBoundary;
4582
4755
  propName = task.blockedPreamble;
4583
4756
  var parentHoistableState = task.hoistableState,
4584
4757
  parentSegment = task.blockedSegment,
@@ -4589,11 +4762,18 @@ function renderElement(request, task, keyPath, type, props, ref) {
4589
4762
  2 > task.formatContext.insertionMode
4590
4763
  ? createSuspenseBoundary(
4591
4764
  request,
4765
+ task.row,
4592
4766
  fallbackAbortSet,
4593
4767
  createPreambleState(),
4594
4768
  createPreambleState()
4595
4769
  )
4596
- : createSuspenseBoundary(request, fallbackAbortSet, null, null);
4770
+ : createSuspenseBoundary(
4771
+ request,
4772
+ task.row,
4773
+ fallbackAbortSet,
4774
+ null,
4775
+ null
4776
+ );
4597
4777
  null !== request.trackedPostpones &&
4598
4778
  (newBoundary.trackedContentKeyPath = keyPath);
4599
4779
  var boundarySegment = createPendingSegment(
@@ -4634,7 +4814,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4634
4814
  boundarySegment.textEmbedded &&
4635
4815
  boundarySegment.chunks.push(textSeparator),
4636
4816
  (boundarySegment.status = 1),
4637
- finishedSegment(request, propName$34, boundarySegment);
4817
+ finishedSegment(request, propName$42, boundarySegment);
4638
4818
  } catch (thrownValue) {
4639
4819
  throw (
4640
4820
  ((boundarySegment.status = 12 === request.status ? 3 : 4),
@@ -4663,6 +4843,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4663
4843
  ),
4664
4844
  task.context,
4665
4845
  task.treeContext,
4846
+ null,
4666
4847
  task.componentStack
4667
4848
  );
4668
4849
  pushComponentStack(task);
@@ -4677,6 +4858,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4677
4858
  request.resumableState,
4678
4859
  ref
4679
4860
  );
4861
+ task.row = null;
4680
4862
  contentRootSegment.status = 6;
4681
4863
  try {
4682
4864
  if (
@@ -4691,18 +4873,21 @@ function renderElement(request, task, keyPath, type, props, ref) {
4691
4873
  0 === newBoundary.status &&
4692
4874
  ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4693
4875
  ) {
4876
+ null !== prevRow &&
4877
+ 0 === --prevRow.pendingTasks &&
4878
+ finishSuspenseListRow(request, prevRow);
4694
4879
  0 === request.pendingRootTasks &&
4695
4880
  task.blockedPreamble &&
4696
4881
  preparePreamble(request);
4697
4882
  break a;
4698
4883
  }
4699
- } catch (thrownValue$29) {
4884
+ } catch (thrownValue$30) {
4700
4885
  (newBoundary.status = 4),
4701
4886
  12 === request.status
4702
4887
  ? ((contentRootSegment.status = 3),
4703
4888
  (newProps = request.fatalError))
4704
4889
  : ((contentRootSegment.status = 4),
4705
- (newProps = thrownValue$29)),
4890
+ (newProps = thrownValue$30)),
4706
4891
  (defaultProps = getThrownInfo(task.componentStack)),
4707
4892
  (initialState = logRecoverableError(
4708
4893
  request,
@@ -4712,19 +4897,20 @@ function renderElement(request, task, keyPath, type, props, ref) {
4712
4897
  (newBoundary.errorDigest = initialState),
4713
4898
  untrackBoundary(request, newBoundary);
4714
4899
  } finally {
4715
- (task.blockedBoundary = propName$34),
4900
+ (task.blockedBoundary = propName$42),
4716
4901
  (task.blockedPreamble = propName),
4717
4902
  (task.hoistableState = parentHoistableState),
4718
4903
  (task.blockedSegment = parentSegment),
4719
4904
  (task.keyPath = type),
4720
- (task.formatContext = ref);
4905
+ (task.formatContext = ref),
4906
+ (task.row = prevRow);
4721
4907
  }
4722
4908
  task = createRenderTask(
4723
4909
  request,
4724
4910
  null,
4725
4911
  fallback,
4726
4912
  -1,
4727
- propName$34,
4913
+ propName$42,
4728
4914
  boundarySegment,
4729
4915
  newBoundary.fallbackPreamble,
4730
4916
  newBoundary.fallbackState,
@@ -4736,6 +4922,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4736
4922
  ),
4737
4923
  task.context,
4738
4924
  task.treeContext,
4925
+ task.row,
4739
4926
  task.componentStack
4740
4927
  );
4741
4928
  pushComponentStack(task);
@@ -4955,6 +5142,7 @@ function retryNode(request, task) {
4955
5142
  null === node$jscomp$0[4] ? null : node$jscomp$0[4][3];
4956
5143
  var prevKeyPath = task.keyPath,
4957
5144
  prevContext = task.formatContext,
5145
+ prevRow = task.row,
4958
5146
  previousReplaySet = task.replay,
4959
5147
  parentBoundary = task.blockedBoundary,
4960
5148
  parentHoistableState = task.hoistableState,
@@ -4965,12 +5153,14 @@ function retryNode(request, task) {
4965
5153
  2 > task.formatContext.insertionMode
4966
5154
  ? createSuspenseBoundary(
4967
5155
  request,
5156
+ task.row,
4968
5157
  fallbackAbortSet,
4969
5158
  createPreambleState(),
4970
5159
  createPreambleState()
4971
5160
  )
4972
5161
  : createSuspenseBoundary(
4973
5162
  request,
5163
+ task.row,
4974
5164
  fallbackAbortSet,
4975
5165
  null,
4976
5166
  null
@@ -4984,6 +5174,7 @@ function retryNode(request, task) {
4984
5174
  request.resumableState,
4985
5175
  prevContext
4986
5176
  );
5177
+ task.row = null;
4987
5178
  task.replay = {
4988
5179
  nodes: ref,
4989
5180
  slots: name,
@@ -5020,9 +5211,10 @@ function retryNode(request, task) {
5020
5211
  (task.hoistableState = parentHoistableState),
5021
5212
  (task.replay = previousReplaySet),
5022
5213
  (task.keyPath = prevKeyPath),
5023
- (task.formatContext = prevContext);
5214
+ (task.formatContext = prevContext),
5215
+ (task.row = prevRow);
5024
5216
  }
5025
- task = createReplayTask(
5217
+ childNodes = createReplayTask(
5026
5218
  request,
5027
5219
  null,
5028
5220
  {
@@ -5042,10 +5234,11 @@ function retryNode(request, task) {
5042
5234
  ),
5043
5235
  task.context,
5044
5236
  task.treeContext,
5237
+ task.row,
5045
5238
  task.componentStack
5046
5239
  );
5047
- pushComponentStack(task);
5048
- request.pingedTasks.push(task);
5240
+ pushComponentStack(childNodes);
5241
+ request.pingedTasks.push(childNodes);
5049
5242
  }
5050
5243
  }
5051
5244
  childIndex.splice(node, 1);
@@ -5070,22 +5263,17 @@ function retryNode(request, task) {
5070
5263
  renderChildrenArray(request, task, node, childIndex);
5071
5264
  return;
5072
5265
  }
5073
- null === node || "object" !== typeof node
5074
- ? (childNodes = null)
5075
- : ((childNodes =
5076
- (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||
5077
- node["@@iterator"]),
5078
- (childNodes = "function" === typeof childNodes ? childNodes : null));
5079
- if (childNodes && (childNodes = childNodes.call(node))) {
5080
- node = childNodes.next();
5081
- if (!node.done) {
5082
- props = [];
5083
- do props.push(node.value), (node = childNodes.next());
5084
- while (!node.done);
5085
- renderChildrenArray(request, task, props, childIndex);
5266
+ if ((childNodes = getIteratorFn(node)))
5267
+ if ((childNodes = childNodes.call(node))) {
5268
+ node = childNodes.next();
5269
+ if (!node.done) {
5270
+ props = [];
5271
+ do props.push(node.value), (node = childNodes.next());
5272
+ while (!node.done);
5273
+ renderChildrenArray(request, task, props, childIndex);
5274
+ }
5275
+ return;
5086
5276
  }
5087
- return;
5088
- }
5089
5277
  if ("function" === typeof node.then)
5090
5278
  return (
5091
5279
  (task.thenableState = null),
@@ -5228,6 +5416,7 @@ function spawnNewSuspendedReplayTask(request, task, thenableState) {
5228
5416
  task.formatContext,
5229
5417
  task.context,
5230
5418
  task.treeContext,
5419
+ task.row,
5231
5420
  task.componentStack
5232
5421
  );
5233
5422
  }
@@ -5257,6 +5446,7 @@ function spawnNewSuspendedRenderTask(request, task, thenableState) {
5257
5446
  task.formatContext,
5258
5447
  task.context,
5259
5448
  task.treeContext,
5449
+ task.row,
5260
5450
  task.componentStack
5261
5451
  );
5262
5452
  }
@@ -5310,15 +5500,15 @@ function renderNode(request, task, node, childIndex) {
5310
5500
  chunkLength = segment.chunks.length;
5311
5501
  try {
5312
5502
  return renderNodeDestructive(request, task, node, childIndex);
5313
- } catch (thrownValue$51) {
5503
+ } catch (thrownValue$58) {
5314
5504
  if (
5315
5505
  (resetHooksState(),
5316
5506
  (segment.children.length = childrenLength),
5317
5507
  (segment.chunks.length = chunkLength),
5318
5508
  (node =
5319
- thrownValue$51 === SuspenseException
5509
+ thrownValue$58 === SuspenseException
5320
5510
  ? getSuspendedThenable()
5321
- : thrownValue$51),
5511
+ : thrownValue$58),
5322
5512
  "object" === typeof node && null !== node)
5323
5513
  ) {
5324
5514
  if ("function" === typeof node.then) {
@@ -5356,9 +5546,10 @@ function renderNode(request, task, node, childIndex) {
5356
5546
  throw node;
5357
5547
  }
5358
5548
  function abortTaskSoft(task) {
5359
- var boundary = task.blockedBoundary;
5360
- task = task.blockedSegment;
5361
- null !== task && ((task.status = 3), finishedTask(this, boundary, task));
5549
+ var boundary = task.blockedBoundary,
5550
+ segment = task.blockedSegment;
5551
+ null !== segment &&
5552
+ ((segment.status = 3), finishedTask(this, boundary, task.row, segment));
5362
5553
  }
5363
5554
  function abortRemainingReplayNodes(
5364
5555
  request$jscomp$0,
@@ -5385,6 +5576,7 @@ function abortRemainingReplayNodes(
5385
5576
  errorDigest = errorDigest$jscomp$0,
5386
5577
  resumedBoundary = createSuspenseBoundary(
5387
5578
  request,
5579
+ null,
5388
5580
  new Set(),
5389
5581
  null,
5390
5582
  null
@@ -5418,6 +5610,10 @@ function abortTask(task, request, error) {
5418
5610
  if (6 === segment.status) return;
5419
5611
  segment.status = 3;
5420
5612
  }
5613
+ segment = task.row;
5614
+ null !== segment &&
5615
+ 0 === --segment.pendingTasks &&
5616
+ finishSuspenseListRow(request, segment);
5421
5617
  segment = getThrownInfo(task.componentStack);
5422
5618
  if (null === boundary) {
5423
5619
  if (13 !== request.status && 14 !== request.status) {
@@ -5562,7 +5758,10 @@ function finishedSegment(request, boundary, segment) {
5562
5758
  : (boundary.byteSize += segmentByteSize);
5563
5759
  }
5564
5760
  }
5565
- function finishedTask(request, boundary, segment) {
5761
+ function finishedTask(request, boundary, row, segment) {
5762
+ null !== row &&
5763
+ 0 === --row.pendingTasks &&
5764
+ finishSuspenseListRow(request, row);
5566
5765
  request.allPendingTasks--;
5567
5766
  if (null === boundary) {
5568
5767
  if (null !== segment && segment.parentFlushed) {
@@ -5591,7 +5790,11 @@ function finishedTask(request, boundary, segment) {
5591
5790
  abortTaskSoft,
5592
5791
  request
5593
5792
  ),
5594
- boundary.fallbackAbortableTasks.clear()),
5793
+ boundary.fallbackAbortableTasks.clear(),
5794
+ (row = boundary.row),
5795
+ null !== row &&
5796
+ 0 === --row.pendingTasks &&
5797
+ finishSuspenseListRow(request, row)),
5595
5798
  0 === request.pendingRootTasks &&
5596
5799
  null === request.trackedPostpones &&
5597
5800
  null !== boundary.contentPreamble &&
@@ -5646,7 +5849,12 @@ function performWork(request$jscomp$2) {
5646
5849
  );
5647
5850
  task.replay.pendingTasks--;
5648
5851
  task.abortSet.delete(task);
5649
- finishedTask(request$jscomp$0, task.blockedBoundary, null);
5852
+ finishedTask(
5853
+ request$jscomp$0,
5854
+ task.blockedBoundary,
5855
+ task.row,
5856
+ null
5857
+ );
5650
5858
  } catch (thrownValue) {
5651
5859
  resetHooksState();
5652
5860
  var x =
@@ -5714,7 +5922,12 @@ function performWork(request$jscomp$2) {
5714
5922
  task.abortSet.delete(task),
5715
5923
  (request$jscomp$1.status = 1),
5716
5924
  finishedSegment(request, task.blockedBoundary, request$jscomp$1),
5717
- finishedTask(request, task.blockedBoundary, request$jscomp$1);
5925
+ finishedTask(
5926
+ request,
5927
+ task.blockedBoundary,
5928
+ task.row,
5929
+ request$jscomp$1
5930
+ );
5718
5931
  } catch (thrownValue) {
5719
5932
  resetHooksState();
5720
5933
  request$jscomp$1.children.length = childrenLength;
@@ -5738,7 +5951,12 @@ function performWork(request$jscomp$2) {
5738
5951
  var errorInfo$jscomp$0 = getThrownInfo(task.componentStack);
5739
5952
  task.abortSet.delete(task);
5740
5953
  request$jscomp$1.status = 4;
5741
- var boundary$jscomp$0 = task.blockedBoundary;
5954
+ var boundary$jscomp$0 = task.blockedBoundary,
5955
+ row = task.row;
5956
+ null !== row &&
5957
+ 0 === --row.pendingTasks &&
5958
+ finishSuspenseListRow(request, row);
5959
+ request.allPendingTasks--;
5742
5960
  request$jscomp$0 = logRecoverableError(
5743
5961
  request,
5744
5962
  x$jscomp$0,
@@ -5757,7 +5975,6 @@ function performWork(request$jscomp$2) {
5757
5975
  null === request.trackedPostpones &&
5758
5976
  null !== boundary$jscomp$0.contentPreamble &&
5759
5977
  preparePreamble(request)));
5760
- request.allPendingTasks--;
5761
5978
  0 === request.allPendingTasks && completeAll(request);
5762
5979
  }
5763
5980
  } finally {
@@ -5903,20 +6120,24 @@ function flushSegment(request, destination, segment, hoistableState) {
5903
6120
  if (null === boundary)
5904
6121
  return flushSubtree(request, destination, segment, hoistableState);
5905
6122
  boundary.parentFlushed = !0;
5906
- if (4 === boundary.status)
5907
- (boundary = boundary.errorDigest),
5908
- writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary),
5909
- writeChunk(destination, clientRenderedSuspenseBoundaryError1),
5910
- boundary &&
5911
- (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
5912
- writeChunk(destination, escapeTextForBrowser(boundary)),
5913
- writeChunk(
5914
- destination,
5915
- clientRenderedSuspenseBoundaryErrorAttrInterstitial
5916
- )),
5917
- writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2),
5918
- flushSubtree(request, destination, segment, hoistableState);
5919
- else if (1 !== boundary.status)
6123
+ if (4 === boundary.status) {
6124
+ var row = boundary.row;
6125
+ null !== row &&
6126
+ 0 === --row.pendingTasks &&
6127
+ finishSuspenseListRow(request, row);
6128
+ boundary = boundary.errorDigest;
6129
+ writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);
6130
+ writeChunk(destination, clientRenderedSuspenseBoundaryError1);
6131
+ boundary &&
6132
+ (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
6133
+ writeChunk(destination, escapeTextForBrowser(boundary)),
6134
+ writeChunk(
6135
+ destination,
6136
+ clientRenderedSuspenseBoundaryErrorAttrInterstitial
6137
+ ));
6138
+ writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2);
6139
+ flushSubtree(request, destination, segment, hoistableState);
6140
+ } else if (1 !== boundary.status)
5920
6141
  0 === boundary.status && (boundary.rootSegmentID = request.nextSegmentId++),
5921
6142
  0 < boundary.completedSegments.length &&
5922
6143
  request.partialBoundaries.push(boundary),
@@ -5951,6 +6172,11 @@ function flushSegment(request, destination, segment, hoistableState) {
5951
6172
  ((segment = boundary.contentState),
5952
6173
  segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
5953
6174
  segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
6175
+ segment = boundary.row;
6176
+ null !== segment &&
6177
+ 500 < boundary.byteSize &&
6178
+ 0 === --segment.pendingTasks &&
6179
+ finishSuspenseListRow(request, segment);
5954
6180
  writeChunkAndReturn(destination, startCompletedSuspenseBoundary);
5955
6181
  segment = boundary.completedSegments;
5956
6182
  if (1 !== segment.length)
@@ -5985,6 +6211,11 @@ function flushCompletedBoundary(request, destination, boundary) {
5985
6211
  completedSegments[i]
5986
6212
  );
5987
6213
  completedSegments.length = 0;
6214
+ completedSegments = boundary.row;
6215
+ null !== completedSegments &&
6216
+ 500 < boundary.byteSize &&
6217
+ 0 === --completedSegments.pendingTasks &&
6218
+ finishSuspenseListRow(request, completedSegments);
5988
6219
  writeHoistablesForBoundary(
5989
6220
  destination,
5990
6221
  boundary.contentState,
@@ -6259,12 +6490,12 @@ function flushCompletedQueues(request, destination) {
6259
6490
  destinationHasCapacity$1 = !0;
6260
6491
  var partialBoundaries = request.partialBoundaries;
6261
6492
  for (i = 0; i < partialBoundaries.length; i++) {
6262
- var boundary$54 = partialBoundaries[i];
6493
+ var boundary$62 = partialBoundaries[i];
6263
6494
  a: {
6264
6495
  clientRenderedBoundaries = request;
6265
6496
  boundary = destination;
6266
- flushedByteSize = boundary$54.byteSize;
6267
- var completedSegments = boundary$54.completedSegments;
6497
+ flushedByteSize = boundary$62.byteSize;
6498
+ var completedSegments = boundary$62.completedSegments;
6268
6499
  for (
6269
6500
  JSCompiler_inline_result = 0;
6270
6501
  JSCompiler_inline_result < completedSegments.length;
@@ -6274,7 +6505,7 @@ function flushCompletedQueues(request, destination) {
6274
6505
  !flushPartiallyCompletedSegment(
6275
6506
  clientRenderedBoundaries,
6276
6507
  boundary,
6277
- boundary$54,
6508
+ boundary$62,
6278
6509
  completedSegments[JSCompiler_inline_result]
6279
6510
  )
6280
6511
  ) {
@@ -6286,7 +6517,7 @@ function flushCompletedQueues(request, destination) {
6286
6517
  completedSegments.splice(0, JSCompiler_inline_result);
6287
6518
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6288
6519
  boundary,
6289
- boundary$54.contentState,
6520
+ boundary$62.contentState,
6290
6521
  clientRenderedBoundaries.renderState
6291
6522
  );
6292
6523
  }
@@ -6387,17 +6618,17 @@ function abort(request, reason) {
6387
6618
  }
6388
6619
  null !== request.destination &&
6389
6620
  flushCompletedQueues(request, request.destination);
6390
- } catch (error$56) {
6391
- logRecoverableError(request, error$56, {}), fatalError(request, error$56);
6621
+ } catch (error$64) {
6622
+ logRecoverableError(request, error$64, {}), fatalError(request, error$64);
6392
6623
  }
6393
6624
  }
6394
6625
  function ensureCorrectIsomorphicReactVersion() {
6395
6626
  var isomorphicReactPackageVersion = React.version;
6396
- if ("19.2.0-canary-462d08f9-20250517" !== isomorphicReactPackageVersion)
6627
+ if ("19.2.0-canary-c4676e72-20250520" !== isomorphicReactPackageVersion)
6397
6628
  throw Error(
6398
6629
  'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
6399
6630
  (isomorphicReactPackageVersion +
6400
- "\n - react-dom: 19.2.0-canary-462d08f9-20250517\nLearn more: https://react.dev/warnings/version-mismatch")
6631
+ "\n - react-dom: 19.2.0-canary-c4676e72-20250520\nLearn more: https://react.dev/warnings/version-mismatch")
6401
6632
  );
6402
6633
  }
6403
6634
  ensureCorrectIsomorphicReactVersion();
@@ -6546,4 +6777,4 @@ exports.renderToPipeableStream = function (children, options) {
6546
6777
  }
6547
6778
  };
6548
6779
  };
6549
- exports.version = "19.2.0-canary-462d08f9-20250517";
6780
+ exports.version = "19.2.0-canary-c4676e72-20250520";