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.
@@ -68,8 +68,15 @@ var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
68
68
  REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden"),
69
69
  REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel"),
70
70
  REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"),
71
- MAYBE_ITERATOR_SYMBOL = Symbol.iterator,
72
- isArrayImpl = Array.isArray;
71
+ MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
72
+ function getIteratorFn(maybeIterable) {
73
+ if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
74
+ maybeIterable =
75
+ (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
76
+ maybeIterable["@@iterator"];
77
+ return "function" === typeof maybeIterable ? maybeIterable : null;
78
+ }
79
+ var isArrayImpl = Array.isArray;
73
80
  function murmurhash3_32_gc(key, seed) {
74
81
  var remainder = key.length & 3;
75
82
  var bytes = key.length - remainder;
@@ -4074,6 +4081,7 @@ function createRequest(
4074
4081
  rootFormatContext,
4075
4082
  null,
4076
4083
  emptyTreeContext,
4084
+ null,
4077
4085
  null
4078
4086
  );
4079
4087
  pushComponentStack(children);
@@ -4129,15 +4137,17 @@ function pingTask(request, task) {
4129
4137
  }
4130
4138
  function createSuspenseBoundary(
4131
4139
  request,
4140
+ row,
4132
4141
  fallbackAbortableTasks,
4133
4142
  contentPreamble,
4134
4143
  fallbackPreamble
4135
4144
  ) {
4136
- return {
4145
+ fallbackAbortableTasks = {
4137
4146
  status: 0,
4138
4147
  rootSegmentID: -1,
4139
4148
  parentFlushed: !1,
4140
4149
  pendingTasks: 0,
4150
+ row: row,
4141
4151
  completedSegments: [],
4142
4152
  byteSize: 0,
4143
4153
  fallbackAbortableTasks: fallbackAbortableTasks,
@@ -4149,6 +4159,14 @@ function createSuspenseBoundary(
4149
4159
  trackedContentKeyPath: null,
4150
4160
  trackedFallbackNode: null
4151
4161
  };
4162
+ null !== row &&
4163
+ (row.pendingTasks++,
4164
+ (row = row.boundaries),
4165
+ null !== row &&
4166
+ (request.allPendingTasks++,
4167
+ fallbackAbortableTasks.pendingTasks++,
4168
+ row.push(fallbackAbortableTasks)));
4169
+ return fallbackAbortableTasks;
4152
4170
  }
4153
4171
  function createRenderTask(
4154
4172
  request,
@@ -4164,12 +4182,14 @@ function createRenderTask(
4164
4182
  formatContext,
4165
4183
  context,
4166
4184
  treeContext,
4185
+ row,
4167
4186
  componentStack
4168
4187
  ) {
4169
4188
  request.allPendingTasks++;
4170
4189
  null === blockedBoundary
4171
4190
  ? request.pendingRootTasks++
4172
4191
  : blockedBoundary.pendingTasks++;
4192
+ null !== row && row.pendingTasks++;
4173
4193
  var task = {
4174
4194
  replay: null,
4175
4195
  node: node,
@@ -4186,6 +4206,7 @@ function createRenderTask(
4186
4206
  formatContext: formatContext,
4187
4207
  context: context,
4188
4208
  treeContext: treeContext,
4209
+ row: row,
4189
4210
  componentStack: componentStack,
4190
4211
  thenableState: thenableState
4191
4212
  };
@@ -4205,12 +4226,14 @@ function createReplayTask(
4205
4226
  formatContext,
4206
4227
  context,
4207
4228
  treeContext,
4229
+ row,
4208
4230
  componentStack
4209
4231
  ) {
4210
4232
  request.allPendingTasks++;
4211
4233
  null === blockedBoundary
4212
4234
  ? request.pendingRootTasks++
4213
4235
  : blockedBoundary.pendingTasks++;
4236
+ null !== row && row.pendingTasks++;
4214
4237
  replay.pendingTasks++;
4215
4238
  var task = {
4216
4239
  replay: replay,
@@ -4228,6 +4251,7 @@ function createReplayTask(
4228
4251
  formatContext: formatContext,
4229
4252
  context: context,
4230
4253
  treeContext: treeContext,
4254
+ row: row,
4231
4255
  componentStack: componentStack,
4232
4256
  thenableState: thenableState
4233
4257
  };
@@ -4305,6 +4329,129 @@ function fatalError(request, error) {
4305
4329
  ? ((request.status = 14), closeWithError(request.destination, error))
4306
4330
  : ((request.status = 13), (request.fatalError = error));
4307
4331
  }
4332
+ function finishSuspenseListRow(request, row) {
4333
+ for (row = row.next; null !== row; ) {
4334
+ var unblockedBoundaries = row.boundaries;
4335
+ if (null !== unblockedBoundaries) {
4336
+ row.boundaries = null;
4337
+ for (var i = 0; i < unblockedBoundaries.length; i++)
4338
+ finishedTask(request, unblockedBoundaries[i], null, null);
4339
+ }
4340
+ row.pendingTasks--;
4341
+ if (0 < row.pendingTasks) break;
4342
+ row = row.next;
4343
+ }
4344
+ }
4345
+ function createSuspenseListRow(previousRow) {
4346
+ var newRow = { pendingTasks: 1, boundaries: null, next: null };
4347
+ null !== previousRow &&
4348
+ 0 < previousRow.pendingTasks &&
4349
+ (newRow.pendingTasks++,
4350
+ (newRow.boundaries = []),
4351
+ (previousRow.next = newRow));
4352
+ return newRow;
4353
+ }
4354
+ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4355
+ keyPath = task.keyPath;
4356
+ var prevTreeContext = task.treeContext,
4357
+ prevRow = task.row,
4358
+ totalChildren = rows.length,
4359
+ previousSuspenseListRow = null;
4360
+ if (null !== task.replay) {
4361
+ var resumeSlots = task.replay.slots;
4362
+ if (null !== resumeSlots && "object" === typeof resumeSlots)
4363
+ for (var n = 0; n < totalChildren; n++) {
4364
+ var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
4365
+ node = rows[i];
4366
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4367
+ previousSuspenseListRow
4368
+ );
4369
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4370
+ var resumeSegmentID = resumeSlots[i];
4371
+ "number" === typeof resumeSegmentID
4372
+ ? (resumeNode(request, task, resumeSegmentID, node, i),
4373
+ delete resumeSlots[i])
4374
+ : renderNode(request, task, node, i);
4375
+ 0 === --previousSuspenseListRow.pendingTasks &&
4376
+ finishSuspenseListRow(request, previousSuspenseListRow);
4377
+ }
4378
+ else
4379
+ for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
4380
+ (n =
4381
+ "backwards" !== revealOrder
4382
+ ? resumeSlots
4383
+ : totalChildren - 1 - resumeSlots),
4384
+ (i = rows[n]),
4385
+ (task.row = previousSuspenseListRow =
4386
+ createSuspenseListRow(previousSuspenseListRow)),
4387
+ (task.treeContext = pushTreeContext(
4388
+ prevTreeContext,
4389
+ totalChildren,
4390
+ n
4391
+ )),
4392
+ renderNode(request, task, i, n),
4393
+ 0 === --previousSuspenseListRow.pendingTasks &&
4394
+ finishSuspenseListRow(request, previousSuspenseListRow);
4395
+ } else if ("backwards" !== revealOrder)
4396
+ for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
4397
+ (resumeSlots = rows[revealOrder]),
4398
+ (task.row = previousSuspenseListRow =
4399
+ createSuspenseListRow(previousSuspenseListRow)),
4400
+ (task.treeContext = pushTreeContext(
4401
+ prevTreeContext,
4402
+ totalChildren,
4403
+ revealOrder
4404
+ )),
4405
+ renderNode(request, task, resumeSlots, revealOrder),
4406
+ 0 === --previousSuspenseListRow.pendingTasks &&
4407
+ finishSuspenseListRow(request, previousSuspenseListRow);
4408
+ else {
4409
+ revealOrder = task.blockedSegment;
4410
+ resumeSlots = revealOrder.children.length;
4411
+ n = revealOrder.chunks.length;
4412
+ for (i = totalChildren - 1; 0 <= i; i--) {
4413
+ node = rows[i];
4414
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4415
+ previousSuspenseListRow
4416
+ );
4417
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4418
+ resumeSegmentID = createPendingSegment(
4419
+ request,
4420
+ n,
4421
+ null,
4422
+ task.formatContext,
4423
+ 0 === i ? revealOrder.lastPushedText : !0,
4424
+ !0
4425
+ );
4426
+ revealOrder.children.splice(resumeSlots, 0, resumeSegmentID);
4427
+ task.blockedSegment = resumeSegmentID;
4428
+ try {
4429
+ renderNode(request, task, node, i),
4430
+ resumeSegmentID.lastPushedText &&
4431
+ resumeSegmentID.textEmbedded &&
4432
+ resumeSegmentID.chunks.push(textSeparator),
4433
+ (resumeSegmentID.status = 1),
4434
+ finishedSegment(request, task.blockedBoundary, resumeSegmentID),
4435
+ 0 === --previousSuspenseListRow.pendingTasks &&
4436
+ finishSuspenseListRow(request, previousSuspenseListRow);
4437
+ } catch (thrownValue) {
4438
+ throw (
4439
+ ((resumeSegmentID.status = 12 === request.status ? 3 : 4),
4440
+ thrownValue)
4441
+ );
4442
+ }
4443
+ }
4444
+ task.blockedSegment = revealOrder;
4445
+ revealOrder.lastPushedText = !1;
4446
+ }
4447
+ null !== prevRow &&
4448
+ null !== previousSuspenseListRow &&
4449
+ 0 < previousSuspenseListRow.pendingTasks &&
4450
+ (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
4451
+ task.treeContext = prevTreeContext;
4452
+ task.row = prevRow;
4453
+ task.keyPath = keyPath;
4454
+ }
4308
4455
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
4309
4456
  var prevThenableState = task.thenableState;
4310
4457
  task.thenableState = null;
@@ -4372,9 +4519,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
4372
4519
  var defaultProps = type.defaultProps;
4373
4520
  if (defaultProps) {
4374
4521
  newProps === props && (newProps = assign({}, newProps, props));
4375
- for (var propName$34 in defaultProps)
4376
- void 0 === newProps[propName$34] &&
4377
- (newProps[propName$34] = defaultProps[propName$34]);
4522
+ for (var propName$42 in defaultProps)
4523
+ void 0 === newProps[propName$42] &&
4524
+ (newProps[propName$42] = defaultProps[propName$42]);
4378
4525
  }
4379
4526
  props = newProps;
4380
4527
  newProps = emptyContextObject;
@@ -4434,16 +4581,16 @@ function renderElement(request, task, keyPath, type, props, ref) {
4434
4581
  defaultProps = ref ? type[0] : newProps.state;
4435
4582
  initialState = !0;
4436
4583
  for (ref = ref ? 1 : 0; ref < type.length; ref++)
4437
- (propName$34 = type[ref]),
4438
- (propName$34 =
4439
- "function" === typeof propName$34
4440
- ? propName$34.call(newProps, defaultProps, props, void 0)
4441
- : propName$34),
4442
- null != propName$34 &&
4584
+ (propName$42 = type[ref]),
4585
+ (propName$42 =
4586
+ "function" === typeof propName$42
4587
+ ? propName$42.call(newProps, defaultProps, props, void 0)
4588
+ : propName$42),
4589
+ null != propName$42 &&
4443
4590
  (initialState
4444
4591
  ? ((initialState = !1),
4445
- (defaultProps = assign({}, defaultProps, propName$34)))
4446
- : assign(defaultProps, propName$34));
4592
+ (defaultProps = assign({}, defaultProps, propName$42)))
4593
+ : assign(defaultProps, propName$42));
4447
4594
  newProps.state = defaultProps;
4448
4595
  }
4449
4596
  else defaultProps.queue = null;
@@ -4518,6 +4665,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4518
4665
  task.formatContext,
4519
4666
  task.context,
4520
4667
  task.treeContext,
4668
+ task.row,
4521
4669
  task.componentStack
4522
4670
  )),
4523
4671
  pushComponentStack(keyPath),
@@ -4597,10 +4745,30 @@ function renderElement(request, task, keyPath, type, props, ref) {
4597
4745
  (type.lastPushedText = !1));
4598
4746
  return;
4599
4747
  case REACT_SUSPENSE_LIST_TYPE:
4600
- type = task.keyPath;
4601
- task.keyPath = keyPath;
4602
- renderNodeDestructive(request, task, props.children, -1);
4603
- task.keyPath = type;
4748
+ a: {
4749
+ type = props.children;
4750
+ props = props.revealOrder;
4751
+ if ("forwards" === props || "backwards" === props) {
4752
+ if (isArrayImpl(type)) {
4753
+ renderSuspenseListRows(request, task, keyPath, type, props);
4754
+ break a;
4755
+ }
4756
+ if ((newProps = getIteratorFn(type)))
4757
+ if ((newProps = newProps.call(type))) {
4758
+ defaultProps = newProps.next();
4759
+ if (!defaultProps.done) {
4760
+ do defaultProps = newProps.next();
4761
+ while (!defaultProps.done);
4762
+ renderSuspenseListRows(request, task, keyPath, type, props);
4763
+ }
4764
+ break a;
4765
+ }
4766
+ }
4767
+ props = task.keyPath;
4768
+ task.keyPath = keyPath;
4769
+ renderNodeDestructive(request, task, type, -1);
4770
+ task.keyPath = props;
4771
+ }
4604
4772
  return;
4605
4773
  case REACT_VIEW_TRANSITION_TYPE:
4606
4774
  case REACT_SCOPE_TYPE:
@@ -4609,21 +4777,26 @@ function renderElement(request, task, keyPath, type, props, ref) {
4609
4777
  a: if (null !== task.replay) {
4610
4778
  type = task.keyPath;
4611
4779
  newProps = task.formatContext;
4780
+ defaultProps = task.row;
4612
4781
  task.keyPath = keyPath;
4613
4782
  task.formatContext = getSuspenseContentFormatContext(
4614
4783
  request.resumableState,
4615
4784
  newProps
4616
4785
  );
4786
+ task.row = null;
4617
4787
  keyPath = props.children;
4618
4788
  try {
4619
4789
  renderNode(request, task, keyPath, -1);
4620
4790
  } finally {
4621
- (task.keyPath = type), (task.formatContext = newProps);
4791
+ (task.keyPath = type),
4792
+ (task.formatContext = newProps),
4793
+ (task.row = defaultProps);
4622
4794
  }
4623
4795
  } else {
4624
4796
  type = task.keyPath;
4625
4797
  ref = task.formatContext;
4626
- propName$34 = task.blockedBoundary;
4798
+ var prevRow = task.row;
4799
+ propName$42 = task.blockedBoundary;
4627
4800
  propName = task.blockedPreamble;
4628
4801
  var parentHoistableState = task.hoistableState,
4629
4802
  parentSegment = task.blockedSegment,
@@ -4634,11 +4807,18 @@ function renderElement(request, task, keyPath, type, props, ref) {
4634
4807
  2 > task.formatContext.insertionMode
4635
4808
  ? createSuspenseBoundary(
4636
4809
  request,
4810
+ task.row,
4637
4811
  fallbackAbortSet,
4638
4812
  createPreambleState(),
4639
4813
  createPreambleState()
4640
4814
  )
4641
- : createSuspenseBoundary(request, fallbackAbortSet, null, null);
4815
+ : createSuspenseBoundary(
4816
+ request,
4817
+ task.row,
4818
+ fallbackAbortSet,
4819
+ null,
4820
+ null
4821
+ );
4642
4822
  null !== request.trackedPostpones &&
4643
4823
  (newBoundary.trackedContentKeyPath = keyPath);
4644
4824
  var boundarySegment = createPendingSegment(
@@ -4679,7 +4859,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4679
4859
  boundarySegment.textEmbedded &&
4680
4860
  boundarySegment.chunks.push(textSeparator),
4681
4861
  (boundarySegment.status = 1),
4682
- finishedSegment(request, propName$34, boundarySegment);
4862
+ finishedSegment(request, propName$42, boundarySegment);
4683
4863
  } catch (thrownValue) {
4684
4864
  throw (
4685
4865
  ((boundarySegment.status = 12 === request.status ? 3 : 4),
@@ -4708,6 +4888,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4708
4888
  ),
4709
4889
  task.context,
4710
4890
  task.treeContext,
4891
+ null,
4711
4892
  task.componentStack
4712
4893
  );
4713
4894
  pushComponentStack(task);
@@ -4722,6 +4903,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4722
4903
  request.resumableState,
4723
4904
  ref
4724
4905
  );
4906
+ task.row = null;
4725
4907
  contentRootSegment.status = 6;
4726
4908
  try {
4727
4909
  if (
@@ -4736,18 +4918,21 @@ function renderElement(request, task, keyPath, type, props, ref) {
4736
4918
  0 === newBoundary.status &&
4737
4919
  ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4738
4920
  ) {
4921
+ null !== prevRow &&
4922
+ 0 === --prevRow.pendingTasks &&
4923
+ finishSuspenseListRow(request, prevRow);
4739
4924
  0 === request.pendingRootTasks &&
4740
4925
  task.blockedPreamble &&
4741
4926
  preparePreamble(request);
4742
4927
  break a;
4743
4928
  }
4744
- } catch (thrownValue$29) {
4929
+ } catch (thrownValue$30) {
4745
4930
  (newBoundary.status = 4),
4746
4931
  12 === request.status
4747
4932
  ? ((contentRootSegment.status = 3),
4748
4933
  (newProps = request.fatalError))
4749
4934
  : ((contentRootSegment.status = 4),
4750
- (newProps = thrownValue$29)),
4935
+ (newProps = thrownValue$30)),
4751
4936
  (defaultProps = getThrownInfo(task.componentStack)),
4752
4937
  (initialState = logRecoverableError(
4753
4938
  request,
@@ -4757,19 +4942,20 @@ function renderElement(request, task, keyPath, type, props, ref) {
4757
4942
  (newBoundary.errorDigest = initialState),
4758
4943
  untrackBoundary(request, newBoundary);
4759
4944
  } finally {
4760
- (task.blockedBoundary = propName$34),
4945
+ (task.blockedBoundary = propName$42),
4761
4946
  (task.blockedPreamble = propName),
4762
4947
  (task.hoistableState = parentHoistableState),
4763
4948
  (task.blockedSegment = parentSegment),
4764
4949
  (task.keyPath = type),
4765
- (task.formatContext = ref);
4950
+ (task.formatContext = ref),
4951
+ (task.row = prevRow);
4766
4952
  }
4767
4953
  task = createRenderTask(
4768
4954
  request,
4769
4955
  null,
4770
4956
  fallback,
4771
4957
  -1,
4772
- propName$34,
4958
+ propName$42,
4773
4959
  boundarySegment,
4774
4960
  newBoundary.fallbackPreamble,
4775
4961
  newBoundary.fallbackState,
@@ -4781,6 +4967,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4781
4967
  ),
4782
4968
  task.context,
4783
4969
  task.treeContext,
4970
+ task.row,
4784
4971
  task.componentStack
4785
4972
  );
4786
4973
  pushComponentStack(task);
@@ -4992,6 +5179,7 @@ function retryNode(request, task) {
4992
5179
  null === node$jscomp$0[4] ? null : node$jscomp$0[4][3];
4993
5180
  var prevKeyPath = task.keyPath,
4994
5181
  prevContext = task.formatContext,
5182
+ prevRow = task.row,
4995
5183
  previousReplaySet = task.replay,
4996
5184
  parentBoundary = task.blockedBoundary,
4997
5185
  parentHoistableState = task.hoistableState,
@@ -5002,12 +5190,14 @@ function retryNode(request, task) {
5002
5190
  2 > task.formatContext.insertionMode
5003
5191
  ? createSuspenseBoundary(
5004
5192
  request,
5193
+ task.row,
5005
5194
  fallbackAbortSet,
5006
5195
  createPreambleState(),
5007
5196
  createPreambleState()
5008
5197
  )
5009
5198
  : createSuspenseBoundary(
5010
5199
  request,
5200
+ task.row,
5011
5201
  fallbackAbortSet,
5012
5202
  null,
5013
5203
  null
@@ -5021,6 +5211,7 @@ function retryNode(request, task) {
5021
5211
  request.resumableState,
5022
5212
  prevContext
5023
5213
  );
5214
+ task.row = null;
5024
5215
  task.replay = {
5025
5216
  nodes: ref,
5026
5217
  slots: name,
@@ -5055,9 +5246,10 @@ function retryNode(request, task) {
5055
5246
  (task.hoistableState = parentHoistableState),
5056
5247
  (task.replay = previousReplaySet),
5057
5248
  (task.keyPath = prevKeyPath),
5058
- (task.formatContext = prevContext);
5249
+ (task.formatContext = prevContext),
5250
+ (task.row = prevRow);
5059
5251
  }
5060
- task = createReplayTask(
5252
+ childNodes = createReplayTask(
5061
5253
  request,
5062
5254
  null,
5063
5255
  {
@@ -5077,10 +5269,11 @@ function retryNode(request, task) {
5077
5269
  ),
5078
5270
  task.context,
5079
5271
  task.treeContext,
5272
+ task.row,
5080
5273
  task.componentStack
5081
5274
  );
5082
- pushComponentStack(task);
5083
- request.pingedTasks.push(task);
5275
+ pushComponentStack(childNodes);
5276
+ request.pingedTasks.push(childNodes);
5084
5277
  }
5085
5278
  }
5086
5279
  childIndex.splice(node, 1);
@@ -5103,22 +5296,17 @@ function retryNode(request, task) {
5103
5296
  renderChildrenArray(request, task, node, childIndex);
5104
5297
  return;
5105
5298
  }
5106
- null === node || "object" !== typeof node
5107
- ? (childNodes = null)
5108
- : ((childNodes =
5109
- (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||
5110
- node["@@iterator"]),
5111
- (childNodes = "function" === typeof childNodes ? childNodes : null));
5112
- if (childNodes && (childNodes = childNodes.call(node))) {
5113
- node = childNodes.next();
5114
- if (!node.done) {
5115
- props = [];
5116
- do props.push(node.value), (node = childNodes.next());
5117
- while (!node.done);
5118
- renderChildrenArray(request, task, props, childIndex);
5299
+ if ((childNodes = getIteratorFn(node)))
5300
+ if ((childNodes = childNodes.call(node))) {
5301
+ node = childNodes.next();
5302
+ if (!node.done) {
5303
+ props = [];
5304
+ do props.push(node.value), (node = childNodes.next());
5305
+ while (!node.done);
5306
+ renderChildrenArray(request, task, props, childIndex);
5307
+ }
5308
+ return;
5119
5309
  }
5120
- return;
5121
- }
5122
5310
  if ("function" === typeof node.then)
5123
5311
  return (
5124
5312
  (task.thenableState = null),
@@ -5260,6 +5448,7 @@ function spawnNewSuspendedReplayTask(request, task, thenableState) {
5260
5448
  task.formatContext,
5261
5449
  task.context,
5262
5450
  task.treeContext,
5451
+ task.row,
5263
5452
  task.componentStack
5264
5453
  );
5265
5454
  }
@@ -5289,6 +5478,7 @@ function spawnNewSuspendedRenderTask(request, task, thenableState) {
5289
5478
  task.formatContext,
5290
5479
  task.context,
5291
5480
  task.treeContext,
5481
+ task.row,
5292
5482
  task.componentStack
5293
5483
  );
5294
5484
  }
@@ -5342,15 +5532,15 @@ function renderNode(request, task, node, childIndex) {
5342
5532
  chunkLength = segment.chunks.length;
5343
5533
  try {
5344
5534
  return renderNodeDestructive(request, task, node, childIndex);
5345
- } catch (thrownValue$51) {
5535
+ } catch (thrownValue$58) {
5346
5536
  if (
5347
5537
  (resetHooksState(),
5348
5538
  (segment.children.length = childrenLength),
5349
5539
  (segment.chunks.length = chunkLength),
5350
5540
  (node =
5351
- thrownValue$51 === SuspenseException
5541
+ thrownValue$58 === SuspenseException
5352
5542
  ? getSuspendedThenable()
5353
- : thrownValue$51),
5543
+ : thrownValue$58),
5354
5544
  "object" === typeof node && null !== node)
5355
5545
  ) {
5356
5546
  if ("function" === typeof node.then) {
@@ -5388,9 +5578,10 @@ function renderNode(request, task, node, childIndex) {
5388
5578
  throw node;
5389
5579
  }
5390
5580
  function abortTaskSoft(task) {
5391
- var boundary = task.blockedBoundary;
5392
- task = task.blockedSegment;
5393
- null !== task && ((task.status = 3), finishedTask(this, boundary, task));
5581
+ var boundary = task.blockedBoundary,
5582
+ segment = task.blockedSegment;
5583
+ null !== segment &&
5584
+ ((segment.status = 3), finishedTask(this, boundary, task.row, segment));
5394
5585
  }
5395
5586
  function abortRemainingReplayNodes(
5396
5587
  request$jscomp$0,
@@ -5417,6 +5608,7 @@ function abortRemainingReplayNodes(
5417
5608
  errorDigest = errorDigest$jscomp$0,
5418
5609
  resumedBoundary = createSuspenseBoundary(
5419
5610
  request,
5611
+ null,
5420
5612
  new Set(),
5421
5613
  null,
5422
5614
  null
@@ -5447,6 +5639,10 @@ function abortTask(task, request, error) {
5447
5639
  if (6 === segment.status) return;
5448
5640
  segment.status = 3;
5449
5641
  }
5642
+ segment = task.row;
5643
+ null !== segment &&
5644
+ 0 === --segment.pendingTasks &&
5645
+ finishSuspenseListRow(request, segment);
5450
5646
  segment = getThrownInfo(task.componentStack);
5451
5647
  if (null === boundary) {
5452
5648
  if (13 !== request.status && 14 !== request.status) {
@@ -5591,7 +5787,10 @@ function finishedSegment(request, boundary, segment) {
5591
5787
  : (boundary.byteSize += segmentByteSize);
5592
5788
  }
5593
5789
  }
5594
- function finishedTask(request, boundary, segment) {
5790
+ function finishedTask(request, boundary, row, segment) {
5791
+ null !== row &&
5792
+ 0 === --row.pendingTasks &&
5793
+ finishSuspenseListRow(request, row);
5595
5794
  request.allPendingTasks--;
5596
5795
  if (null === boundary) {
5597
5796
  if (null !== segment && segment.parentFlushed) {
@@ -5618,7 +5817,11 @@ function finishedTask(request, boundary, segment) {
5618
5817
  abortTaskSoft,
5619
5818
  request
5620
5819
  ),
5621
- boundary.fallbackAbortableTasks.clear()),
5820
+ boundary.fallbackAbortableTasks.clear(),
5821
+ (row = boundary.row),
5822
+ null !== row &&
5823
+ 0 === --row.pendingTasks &&
5824
+ finishSuspenseListRow(request, row)),
5622
5825
  0 === request.pendingRootTasks &&
5623
5826
  null === request.trackedPostpones &&
5624
5827
  null !== boundary.contentPreamble &&
@@ -5671,7 +5874,12 @@ function performWork(request$jscomp$2) {
5671
5874
  throw Error(formatProdErrorMessage(488));
5672
5875
  task.replay.pendingTasks--;
5673
5876
  task.abortSet.delete(task);
5674
- finishedTask(request$jscomp$0, task.blockedBoundary, null);
5877
+ finishedTask(
5878
+ request$jscomp$0,
5879
+ task.blockedBoundary,
5880
+ task.row,
5881
+ null
5882
+ );
5675
5883
  } catch (thrownValue) {
5676
5884
  resetHooksState();
5677
5885
  var x =
@@ -5739,7 +5947,12 @@ function performWork(request$jscomp$2) {
5739
5947
  task.abortSet.delete(task),
5740
5948
  (request$jscomp$1.status = 1),
5741
5949
  finishedSegment(request, task.blockedBoundary, request$jscomp$1),
5742
- finishedTask(request, task.blockedBoundary, request$jscomp$1);
5950
+ finishedTask(
5951
+ request,
5952
+ task.blockedBoundary,
5953
+ task.row,
5954
+ request$jscomp$1
5955
+ );
5743
5956
  } catch (thrownValue) {
5744
5957
  resetHooksState();
5745
5958
  request$jscomp$1.children.length = childrenLength;
@@ -5763,7 +5976,12 @@ function performWork(request$jscomp$2) {
5763
5976
  var errorInfo$jscomp$0 = getThrownInfo(task.componentStack);
5764
5977
  task.abortSet.delete(task);
5765
5978
  request$jscomp$1.status = 4;
5766
- var boundary$jscomp$0 = task.blockedBoundary;
5979
+ var boundary$jscomp$0 = task.blockedBoundary,
5980
+ row = task.row;
5981
+ null !== row &&
5982
+ 0 === --row.pendingTasks &&
5983
+ finishSuspenseListRow(request, row);
5984
+ request.allPendingTasks--;
5767
5985
  request$jscomp$0 = logRecoverableError(
5768
5986
  request,
5769
5987
  x$jscomp$0,
@@ -5782,7 +6000,6 @@ function performWork(request$jscomp$2) {
5782
6000
  null === request.trackedPostpones &&
5783
6001
  null !== boundary$jscomp$0.contentPreamble &&
5784
6002
  preparePreamble(request)));
5785
- request.allPendingTasks--;
5786
6003
  0 === request.allPendingTasks && completeAll(request);
5787
6004
  }
5788
6005
  } finally {
@@ -5923,20 +6140,24 @@ function flushSegment(request, destination, segment, hoistableState) {
5923
6140
  if (null === boundary)
5924
6141
  return flushSubtree(request, destination, segment, hoistableState);
5925
6142
  boundary.parentFlushed = !0;
5926
- if (4 === boundary.status)
5927
- (boundary = boundary.errorDigest),
5928
- writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary),
5929
- writeChunk(destination, clientRenderedSuspenseBoundaryError1),
5930
- boundary &&
5931
- (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
5932
- writeChunk(destination, stringToChunk(escapeTextForBrowser(boundary))),
5933
- writeChunk(
5934
- destination,
5935
- clientRenderedSuspenseBoundaryErrorAttrInterstitial
5936
- )),
5937
- writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2),
5938
- flushSubtree(request, destination, segment, hoistableState);
5939
- else if (1 !== boundary.status)
6143
+ if (4 === boundary.status) {
6144
+ var row = boundary.row;
6145
+ null !== row &&
6146
+ 0 === --row.pendingTasks &&
6147
+ finishSuspenseListRow(request, row);
6148
+ boundary = boundary.errorDigest;
6149
+ writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);
6150
+ writeChunk(destination, clientRenderedSuspenseBoundaryError1);
6151
+ boundary &&
6152
+ (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
6153
+ writeChunk(destination, stringToChunk(escapeTextForBrowser(boundary))),
6154
+ writeChunk(
6155
+ destination,
6156
+ clientRenderedSuspenseBoundaryErrorAttrInterstitial
6157
+ ));
6158
+ writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2);
6159
+ flushSubtree(request, destination, segment, hoistableState);
6160
+ } else if (1 !== boundary.status)
5940
6161
  0 === boundary.status && (boundary.rootSegmentID = request.nextSegmentId++),
5941
6162
  0 < boundary.completedSegments.length &&
5942
6163
  request.partialBoundaries.push(boundary),
@@ -5971,6 +6192,11 @@ function flushSegment(request, destination, segment, hoistableState) {
5971
6192
  ((segment = boundary.contentState),
5972
6193
  segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
5973
6194
  segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
6195
+ segment = boundary.row;
6196
+ null !== segment &&
6197
+ 500 < boundary.byteSize &&
6198
+ 0 === --segment.pendingTasks &&
6199
+ finishSuspenseListRow(request, segment);
5974
6200
  writeChunkAndReturn(destination, startCompletedSuspenseBoundary);
5975
6201
  segment = boundary.completedSegments;
5976
6202
  if (1 !== segment.length) throw Error(formatProdErrorMessage(391));
@@ -6002,6 +6228,11 @@ function flushCompletedBoundary(request, destination, boundary) {
6002
6228
  completedSegments[i]
6003
6229
  );
6004
6230
  completedSegments.length = 0;
6231
+ completedSegments = boundary.row;
6232
+ null !== completedSegments &&
6233
+ 500 < boundary.byteSize &&
6234
+ 0 === --completedSegments.pendingTasks &&
6235
+ finishSuspenseListRow(request, completedSegments);
6005
6236
  writeHoistablesForBoundary(
6006
6237
  destination,
6007
6238
  boundary.contentState,
@@ -6277,12 +6508,12 @@ function flushCompletedQueues(request, destination) {
6277
6508
  writtenBytes = 0;
6278
6509
  var partialBoundaries = request.partialBoundaries;
6279
6510
  for (i = 0; i < partialBoundaries.length; i++) {
6280
- var boundary$54 = partialBoundaries[i];
6511
+ var boundary$62 = partialBoundaries[i];
6281
6512
  a: {
6282
6513
  clientRenderedBoundaries = request;
6283
6514
  boundary = destination;
6284
- flushedByteSize = boundary$54.byteSize;
6285
- var completedSegments = boundary$54.completedSegments;
6515
+ flushedByteSize = boundary$62.byteSize;
6516
+ var completedSegments = boundary$62.completedSegments;
6286
6517
  for (
6287
6518
  JSCompiler_inline_result = 0;
6288
6519
  JSCompiler_inline_result < completedSegments.length;
@@ -6292,7 +6523,7 @@ function flushCompletedQueues(request, destination) {
6292
6523
  !flushPartiallyCompletedSegment(
6293
6524
  clientRenderedBoundaries,
6294
6525
  boundary,
6295
- boundary$54,
6526
+ boundary$62,
6296
6527
  completedSegments[JSCompiler_inline_result]
6297
6528
  )
6298
6529
  ) {
@@ -6304,7 +6535,7 @@ function flushCompletedQueues(request, destination) {
6304
6535
  completedSegments.splice(0, JSCompiler_inline_result);
6305
6536
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6306
6537
  boundary,
6307
- boundary$54.contentState,
6538
+ boundary$62.contentState,
6308
6539
  clientRenderedBoundaries.renderState
6309
6540
  );
6310
6541
  }
@@ -6397,18 +6628,18 @@ function abort(request, reason) {
6397
6628
  }
6398
6629
  null !== request.destination &&
6399
6630
  flushCompletedQueues(request, request.destination);
6400
- } catch (error$56) {
6401
- logRecoverableError(request, error$56, {}), fatalError(request, error$56);
6631
+ } catch (error$64) {
6632
+ logRecoverableError(request, error$64, {}), fatalError(request, error$64);
6402
6633
  }
6403
6634
  }
6404
6635
  function ensureCorrectIsomorphicReactVersion() {
6405
6636
  var isomorphicReactPackageVersion = React.version;
6406
- if ("19.2.0-canary-462d08f9-20250517" !== isomorphicReactPackageVersion)
6637
+ if ("19.2.0-canary-c4676e72-20250520" !== isomorphicReactPackageVersion)
6407
6638
  throw Error(
6408
6639
  formatProdErrorMessage(
6409
6640
  527,
6410
6641
  isomorphicReactPackageVersion,
6411
- "19.2.0-canary-462d08f9-20250517"
6642
+ "19.2.0-canary-c4676e72-20250520"
6412
6643
  )
6413
6644
  );
6414
6645
  }
@@ -6555,4 +6786,4 @@ exports.renderToReadableStream = function (children, options) {
6555
6786
  startWork(request);
6556
6787
  });
6557
6788
  };
6558
- exports.version = "19.2.0-canary-462d08f9-20250517";
6789
+ exports.version = "19.2.0-canary-c4676e72-20250520";