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.
@@ -53,8 +53,15 @@ var React = require("react"),
53
53
  REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden"),
54
54
  REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel"),
55
55
  REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"),
56
- MAYBE_ITERATOR_SYMBOL = Symbol.iterator,
57
- isArrayImpl = Array.isArray;
56
+ MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
57
+ function getIteratorFn(maybeIterable) {
58
+ if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
59
+ maybeIterable =
60
+ (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
61
+ maybeIterable["@@iterator"];
62
+ return "function" === typeof maybeIterable ? maybeIterable : null;
63
+ }
64
+ var isArrayImpl = Array.isArray;
58
65
  function murmurhash3_32_gc(key, seed) {
59
66
  var remainder = key.length & 3;
60
67
  var bytes = key.length - remainder;
@@ -4118,6 +4125,7 @@ function createRequest(
4118
4125
  rootFormatContext,
4119
4126
  null,
4120
4127
  emptyTreeContext,
4128
+ null,
4121
4129
  null
4122
4130
  );
4123
4131
  pushComponentStack(children);
@@ -4181,15 +4189,17 @@ function pingTask(request, task) {
4181
4189
  }
4182
4190
  function createSuspenseBoundary(
4183
4191
  request,
4192
+ row,
4184
4193
  fallbackAbortableTasks,
4185
4194
  contentPreamble,
4186
4195
  fallbackPreamble
4187
4196
  ) {
4188
- return {
4197
+ fallbackAbortableTasks = {
4189
4198
  status: 0,
4190
4199
  rootSegmentID: -1,
4191
4200
  parentFlushed: !1,
4192
4201
  pendingTasks: 0,
4202
+ row: row,
4193
4203
  completedSegments: [],
4194
4204
  byteSize: 0,
4195
4205
  fallbackAbortableTasks: fallbackAbortableTasks,
@@ -4201,6 +4211,14 @@ function createSuspenseBoundary(
4201
4211
  trackedContentKeyPath: null,
4202
4212
  trackedFallbackNode: null
4203
4213
  };
4214
+ null !== row &&
4215
+ (row.pendingTasks++,
4216
+ (row = row.boundaries),
4217
+ null !== row &&
4218
+ (request.allPendingTasks++,
4219
+ fallbackAbortableTasks.pendingTasks++,
4220
+ row.push(fallbackAbortableTasks)));
4221
+ return fallbackAbortableTasks;
4204
4222
  }
4205
4223
  function createRenderTask(
4206
4224
  request,
@@ -4216,12 +4234,14 @@ function createRenderTask(
4216
4234
  formatContext,
4217
4235
  context,
4218
4236
  treeContext,
4237
+ row,
4219
4238
  componentStack
4220
4239
  ) {
4221
4240
  request.allPendingTasks++;
4222
4241
  null === blockedBoundary
4223
4242
  ? request.pendingRootTasks++
4224
4243
  : blockedBoundary.pendingTasks++;
4244
+ null !== row && row.pendingTasks++;
4225
4245
  var task = {
4226
4246
  replay: null,
4227
4247
  node: node,
@@ -4238,6 +4258,7 @@ function createRenderTask(
4238
4258
  formatContext: formatContext,
4239
4259
  context: context,
4240
4260
  treeContext: treeContext,
4261
+ row: row,
4241
4262
  componentStack: componentStack,
4242
4263
  thenableState: thenableState
4243
4264
  };
@@ -4257,12 +4278,14 @@ function createReplayTask(
4257
4278
  formatContext,
4258
4279
  context,
4259
4280
  treeContext,
4281
+ row,
4260
4282
  componentStack
4261
4283
  ) {
4262
4284
  request.allPendingTasks++;
4263
4285
  null === blockedBoundary
4264
4286
  ? request.pendingRootTasks++
4265
4287
  : blockedBoundary.pendingTasks++;
4288
+ null !== row && row.pendingTasks++;
4266
4289
  replay.pendingTasks++;
4267
4290
  var task = {
4268
4291
  replay: replay,
@@ -4280,6 +4303,7 @@ function createReplayTask(
4280
4303
  formatContext: formatContext,
4281
4304
  context: context,
4282
4305
  treeContext: treeContext,
4306
+ row: row,
4283
4307
  componentStack: componentStack,
4284
4308
  thenableState: thenableState
4285
4309
  };
@@ -4357,6 +4381,129 @@ function fatalError(request, error) {
4357
4381
  ? ((request.status = 14), closeWithError(request.destination, error))
4358
4382
  : ((request.status = 13), (request.fatalError = error));
4359
4383
  }
4384
+ function finishSuspenseListRow(request, row) {
4385
+ for (row = row.next; null !== row; ) {
4386
+ var unblockedBoundaries = row.boundaries;
4387
+ if (null !== unblockedBoundaries) {
4388
+ row.boundaries = null;
4389
+ for (var i = 0; i < unblockedBoundaries.length; i++)
4390
+ finishedTask(request, unblockedBoundaries[i], null, null);
4391
+ }
4392
+ row.pendingTasks--;
4393
+ if (0 < row.pendingTasks) break;
4394
+ row = row.next;
4395
+ }
4396
+ }
4397
+ function createSuspenseListRow(previousRow) {
4398
+ var newRow = { pendingTasks: 1, boundaries: null, next: null };
4399
+ null !== previousRow &&
4400
+ 0 < previousRow.pendingTasks &&
4401
+ (newRow.pendingTasks++,
4402
+ (newRow.boundaries = []),
4403
+ (previousRow.next = newRow));
4404
+ return newRow;
4405
+ }
4406
+ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4407
+ keyPath = task.keyPath;
4408
+ var prevTreeContext = task.treeContext,
4409
+ prevRow = task.row,
4410
+ totalChildren = rows.length,
4411
+ previousSuspenseListRow = null;
4412
+ if (null !== task.replay) {
4413
+ var resumeSlots = task.replay.slots;
4414
+ if (null !== resumeSlots && "object" === typeof resumeSlots)
4415
+ for (var n = 0; n < totalChildren; n++) {
4416
+ var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
4417
+ node = rows[i];
4418
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4419
+ previousSuspenseListRow
4420
+ );
4421
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4422
+ var resumeSegmentID = resumeSlots[i];
4423
+ "number" === typeof resumeSegmentID
4424
+ ? (resumeNode(request, task, resumeSegmentID, node, i),
4425
+ delete resumeSlots[i])
4426
+ : renderNode(request, task, node, i);
4427
+ 0 === --previousSuspenseListRow.pendingTasks &&
4428
+ finishSuspenseListRow(request, previousSuspenseListRow);
4429
+ }
4430
+ else
4431
+ for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
4432
+ (n =
4433
+ "backwards" !== revealOrder
4434
+ ? resumeSlots
4435
+ : totalChildren - 1 - resumeSlots),
4436
+ (i = rows[n]),
4437
+ (task.row = previousSuspenseListRow =
4438
+ createSuspenseListRow(previousSuspenseListRow)),
4439
+ (task.treeContext = pushTreeContext(
4440
+ prevTreeContext,
4441
+ totalChildren,
4442
+ n
4443
+ )),
4444
+ renderNode(request, task, i, n),
4445
+ 0 === --previousSuspenseListRow.pendingTasks &&
4446
+ finishSuspenseListRow(request, previousSuspenseListRow);
4447
+ } else if ("backwards" !== revealOrder)
4448
+ for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
4449
+ (resumeSlots = rows[revealOrder]),
4450
+ (task.row = previousSuspenseListRow =
4451
+ createSuspenseListRow(previousSuspenseListRow)),
4452
+ (task.treeContext = pushTreeContext(
4453
+ prevTreeContext,
4454
+ totalChildren,
4455
+ revealOrder
4456
+ )),
4457
+ renderNode(request, task, resumeSlots, revealOrder),
4458
+ 0 === --previousSuspenseListRow.pendingTasks &&
4459
+ finishSuspenseListRow(request, previousSuspenseListRow);
4460
+ else {
4461
+ revealOrder = task.blockedSegment;
4462
+ resumeSlots = revealOrder.children.length;
4463
+ n = revealOrder.chunks.length;
4464
+ for (i = totalChildren - 1; 0 <= i; i--) {
4465
+ node = rows[i];
4466
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4467
+ previousSuspenseListRow
4468
+ );
4469
+ task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4470
+ resumeSegmentID = createPendingSegment(
4471
+ request,
4472
+ n,
4473
+ null,
4474
+ task.formatContext,
4475
+ 0 === i ? revealOrder.lastPushedText : !0,
4476
+ !0
4477
+ );
4478
+ revealOrder.children.splice(resumeSlots, 0, resumeSegmentID);
4479
+ task.blockedSegment = resumeSegmentID;
4480
+ try {
4481
+ renderNode(request, task, node, i),
4482
+ resumeSegmentID.lastPushedText &&
4483
+ resumeSegmentID.textEmbedded &&
4484
+ resumeSegmentID.chunks.push(textSeparator),
4485
+ (resumeSegmentID.status = 1),
4486
+ finishedSegment(request, task.blockedBoundary, resumeSegmentID),
4487
+ 0 === --previousSuspenseListRow.pendingTasks &&
4488
+ finishSuspenseListRow(request, previousSuspenseListRow);
4489
+ } catch (thrownValue) {
4490
+ throw (
4491
+ ((resumeSegmentID.status = 12 === request.status ? 3 : 4),
4492
+ thrownValue)
4493
+ );
4494
+ }
4495
+ }
4496
+ task.blockedSegment = revealOrder;
4497
+ revealOrder.lastPushedText = !1;
4498
+ }
4499
+ null !== prevRow &&
4500
+ null !== previousSuspenseListRow &&
4501
+ 0 < previousSuspenseListRow.pendingTasks &&
4502
+ (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
4503
+ task.treeContext = prevTreeContext;
4504
+ task.row = prevRow;
4505
+ task.keyPath = keyPath;
4506
+ }
4360
4507
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
4361
4508
  var prevThenableState = task.thenableState;
4362
4509
  task.thenableState = null;
@@ -4424,9 +4571,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
4424
4571
  var defaultProps = type.defaultProps;
4425
4572
  if (defaultProps) {
4426
4573
  newProps === props && (newProps = assign({}, newProps, props));
4427
- for (var propName$34 in defaultProps)
4428
- void 0 === newProps[propName$34] &&
4429
- (newProps[propName$34] = defaultProps[propName$34]);
4574
+ for (var propName$42 in defaultProps)
4575
+ void 0 === newProps[propName$42] &&
4576
+ (newProps[propName$42] = defaultProps[propName$42]);
4430
4577
  }
4431
4578
  props = newProps;
4432
4579
  newProps = emptyContextObject;
@@ -4486,16 +4633,16 @@ function renderElement(request, task, keyPath, type, props, ref) {
4486
4633
  defaultProps = ref ? type[0] : newProps.state;
4487
4634
  initialState = !0;
4488
4635
  for (ref = ref ? 1 : 0; ref < type.length; ref++)
4489
- (propName$34 = type[ref]),
4490
- (propName$34 =
4491
- "function" === typeof propName$34
4492
- ? propName$34.call(newProps, defaultProps, props, void 0)
4493
- : propName$34),
4494
- null != propName$34 &&
4636
+ (propName$42 = type[ref]),
4637
+ (propName$42 =
4638
+ "function" === typeof propName$42
4639
+ ? propName$42.call(newProps, defaultProps, props, void 0)
4640
+ : propName$42),
4641
+ null != propName$42 &&
4495
4642
  (initialState
4496
4643
  ? ((initialState = !1),
4497
- (defaultProps = assign({}, defaultProps, propName$34)))
4498
- : assign(defaultProps, propName$34));
4644
+ (defaultProps = assign({}, defaultProps, propName$42)))
4645
+ : assign(defaultProps, propName$42));
4499
4646
  newProps.state = defaultProps;
4500
4647
  }
4501
4648
  else defaultProps.queue = null;
@@ -4570,6 +4717,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4570
4717
  task.formatContext,
4571
4718
  task.context,
4572
4719
  task.treeContext,
4720
+ task.row,
4573
4721
  task.componentStack
4574
4722
  )),
4575
4723
  pushComponentStack(keyPath),
@@ -4649,10 +4797,30 @@ function renderElement(request, task, keyPath, type, props, ref) {
4649
4797
  (type.lastPushedText = !1));
4650
4798
  return;
4651
4799
  case REACT_SUSPENSE_LIST_TYPE:
4652
- type = task.keyPath;
4653
- task.keyPath = keyPath;
4654
- renderNodeDestructive(request, task, props.children, -1);
4655
- task.keyPath = type;
4800
+ a: {
4801
+ type = props.children;
4802
+ props = props.revealOrder;
4803
+ if ("forwards" === props || "backwards" === props) {
4804
+ if (isArrayImpl(type)) {
4805
+ renderSuspenseListRows(request, task, keyPath, type, props);
4806
+ break a;
4807
+ }
4808
+ if ((newProps = getIteratorFn(type)))
4809
+ if ((newProps = newProps.call(type))) {
4810
+ defaultProps = newProps.next();
4811
+ if (!defaultProps.done) {
4812
+ do defaultProps = newProps.next();
4813
+ while (!defaultProps.done);
4814
+ renderSuspenseListRows(request, task, keyPath, type, props);
4815
+ }
4816
+ break a;
4817
+ }
4818
+ }
4819
+ props = task.keyPath;
4820
+ task.keyPath = keyPath;
4821
+ renderNodeDestructive(request, task, type, -1);
4822
+ task.keyPath = props;
4823
+ }
4656
4824
  return;
4657
4825
  case REACT_VIEW_TRANSITION_TYPE:
4658
4826
  case REACT_SCOPE_TYPE:
@@ -4661,21 +4829,26 @@ function renderElement(request, task, keyPath, type, props, ref) {
4661
4829
  a: if (null !== task.replay) {
4662
4830
  type = task.keyPath;
4663
4831
  newProps = task.formatContext;
4832
+ defaultProps = task.row;
4664
4833
  task.keyPath = keyPath;
4665
4834
  task.formatContext = getSuspenseContentFormatContext(
4666
4835
  request.resumableState,
4667
4836
  newProps
4668
4837
  );
4838
+ task.row = null;
4669
4839
  keyPath = props.children;
4670
4840
  try {
4671
4841
  renderNode(request, task, keyPath, -1);
4672
4842
  } finally {
4673
- (task.keyPath = type), (task.formatContext = newProps);
4843
+ (task.keyPath = type),
4844
+ (task.formatContext = newProps),
4845
+ (task.row = defaultProps);
4674
4846
  }
4675
4847
  } else {
4676
4848
  type = task.keyPath;
4677
4849
  ref = task.formatContext;
4678
- propName$34 = task.blockedBoundary;
4850
+ var prevRow = task.row;
4851
+ propName$42 = task.blockedBoundary;
4679
4852
  propName = task.blockedPreamble;
4680
4853
  var parentHoistableState = task.hoistableState,
4681
4854
  parentSegment = task.blockedSegment,
@@ -4686,11 +4859,18 @@ function renderElement(request, task, keyPath, type, props, ref) {
4686
4859
  2 > task.formatContext.insertionMode
4687
4860
  ? createSuspenseBoundary(
4688
4861
  request,
4862
+ task.row,
4689
4863
  fallbackAbortSet,
4690
4864
  createPreambleState(),
4691
4865
  createPreambleState()
4692
4866
  )
4693
- : createSuspenseBoundary(request, fallbackAbortSet, null, null);
4867
+ : createSuspenseBoundary(
4868
+ request,
4869
+ task.row,
4870
+ fallbackAbortSet,
4871
+ null,
4872
+ null
4873
+ );
4694
4874
  null !== request.trackedPostpones &&
4695
4875
  (newBoundary.trackedContentKeyPath = keyPath);
4696
4876
  var boundarySegment = createPendingSegment(
@@ -4731,7 +4911,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4731
4911
  boundarySegment.textEmbedded &&
4732
4912
  boundarySegment.chunks.push(textSeparator),
4733
4913
  (boundarySegment.status = 1),
4734
- finishedSegment(request, propName$34, boundarySegment);
4914
+ finishedSegment(request, propName$42, boundarySegment);
4735
4915
  } catch (thrownValue) {
4736
4916
  throw (
4737
4917
  ((boundarySegment.status = 12 === request.status ? 3 : 4),
@@ -4760,6 +4940,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4760
4940
  ),
4761
4941
  task.context,
4762
4942
  task.treeContext,
4943
+ null,
4763
4944
  task.componentStack
4764
4945
  );
4765
4946
  pushComponentStack(task);
@@ -4774,6 +4955,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4774
4955
  request.resumableState,
4775
4956
  ref
4776
4957
  );
4958
+ task.row = null;
4777
4959
  contentRootSegment.status = 6;
4778
4960
  try {
4779
4961
  if (
@@ -4788,18 +4970,21 @@ function renderElement(request, task, keyPath, type, props, ref) {
4788
4970
  0 === newBoundary.status &&
4789
4971
  ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4790
4972
  ) {
4973
+ null !== prevRow &&
4974
+ 0 === --prevRow.pendingTasks &&
4975
+ finishSuspenseListRow(request, prevRow);
4791
4976
  0 === request.pendingRootTasks &&
4792
4977
  task.blockedPreamble &&
4793
4978
  preparePreamble(request);
4794
4979
  break a;
4795
4980
  }
4796
- } catch (thrownValue$29) {
4981
+ } catch (thrownValue$30) {
4797
4982
  (newBoundary.status = 4),
4798
4983
  12 === request.status
4799
4984
  ? ((contentRootSegment.status = 3),
4800
4985
  (newProps = request.fatalError))
4801
4986
  : ((contentRootSegment.status = 4),
4802
- (newProps = thrownValue$29)),
4987
+ (newProps = thrownValue$30)),
4803
4988
  (defaultProps = getThrownInfo(task.componentStack)),
4804
4989
  (initialState = logRecoverableError(
4805
4990
  request,
@@ -4809,19 +4994,20 @@ function renderElement(request, task, keyPath, type, props, ref) {
4809
4994
  (newBoundary.errorDigest = initialState),
4810
4995
  untrackBoundary(request, newBoundary);
4811
4996
  } finally {
4812
- (task.blockedBoundary = propName$34),
4997
+ (task.blockedBoundary = propName$42),
4813
4998
  (task.blockedPreamble = propName),
4814
4999
  (task.hoistableState = parentHoistableState),
4815
5000
  (task.blockedSegment = parentSegment),
4816
5001
  (task.keyPath = type),
4817
- (task.formatContext = ref);
5002
+ (task.formatContext = ref),
5003
+ (task.row = prevRow);
4818
5004
  }
4819
5005
  task = createRenderTask(
4820
5006
  request,
4821
5007
  null,
4822
5008
  fallback,
4823
5009
  -1,
4824
- propName$34,
5010
+ propName$42,
4825
5011
  boundarySegment,
4826
5012
  newBoundary.fallbackPreamble,
4827
5013
  newBoundary.fallbackState,
@@ -4833,6 +5019,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4833
5019
  ),
4834
5020
  task.context,
4835
5021
  task.treeContext,
5022
+ task.row,
4836
5023
  task.componentStack
4837
5024
  );
4838
5025
  pushComponentStack(task);
@@ -5052,6 +5239,7 @@ function retryNode(request, task) {
5052
5239
  null === node$jscomp$0[4] ? null : node$jscomp$0[4][3];
5053
5240
  var prevKeyPath = task.keyPath,
5054
5241
  prevContext = task.formatContext,
5242
+ prevRow = task.row,
5055
5243
  previousReplaySet = task.replay,
5056
5244
  parentBoundary = task.blockedBoundary,
5057
5245
  parentHoistableState = task.hoistableState,
@@ -5062,12 +5250,14 @@ function retryNode(request, task) {
5062
5250
  2 > task.formatContext.insertionMode
5063
5251
  ? createSuspenseBoundary(
5064
5252
  request,
5253
+ task.row,
5065
5254
  fallbackAbortSet,
5066
5255
  createPreambleState(),
5067
5256
  createPreambleState()
5068
5257
  )
5069
5258
  : createSuspenseBoundary(
5070
5259
  request,
5260
+ task.row,
5071
5261
  fallbackAbortSet,
5072
5262
  null,
5073
5263
  null
@@ -5081,6 +5271,7 @@ function retryNode(request, task) {
5081
5271
  request.resumableState,
5082
5272
  prevContext
5083
5273
  );
5274
+ task.row = null;
5084
5275
  task.replay = {
5085
5276
  nodes: ref,
5086
5277
  slots: name,
@@ -5117,9 +5308,10 @@ function retryNode(request, task) {
5117
5308
  (task.hoistableState = parentHoistableState),
5118
5309
  (task.replay = previousReplaySet),
5119
5310
  (task.keyPath = prevKeyPath),
5120
- (task.formatContext = prevContext);
5311
+ (task.formatContext = prevContext),
5312
+ (task.row = prevRow);
5121
5313
  }
5122
- task = createReplayTask(
5314
+ childNodes = createReplayTask(
5123
5315
  request,
5124
5316
  null,
5125
5317
  {
@@ -5139,10 +5331,11 @@ function retryNode(request, task) {
5139
5331
  ),
5140
5332
  task.context,
5141
5333
  task.treeContext,
5334
+ task.row,
5142
5335
  task.componentStack
5143
5336
  );
5144
- pushComponentStack(task);
5145
- request.pingedTasks.push(task);
5337
+ pushComponentStack(childNodes);
5338
+ request.pingedTasks.push(childNodes);
5146
5339
  }
5147
5340
  }
5148
5341
  childIndex.splice(node, 1);
@@ -5167,22 +5360,17 @@ function retryNode(request, task) {
5167
5360
  renderChildrenArray(request, task, node, childIndex);
5168
5361
  return;
5169
5362
  }
5170
- null === node || "object" !== typeof node
5171
- ? (childNodes = null)
5172
- : ((childNodes =
5173
- (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||
5174
- node["@@iterator"]),
5175
- (childNodes = "function" === typeof childNodes ? childNodes : null));
5176
- if (childNodes && (childNodes = childNodes.call(node))) {
5177
- node = childNodes.next();
5178
- if (!node.done) {
5179
- props = [];
5180
- do props.push(node.value), (node = childNodes.next());
5181
- while (!node.done);
5182
- renderChildrenArray(request, task, props, childIndex);
5363
+ if ((childNodes = getIteratorFn(node)))
5364
+ if ((childNodes = childNodes.call(node))) {
5365
+ node = childNodes.next();
5366
+ if (!node.done) {
5367
+ props = [];
5368
+ do props.push(node.value), (node = childNodes.next());
5369
+ while (!node.done);
5370
+ renderChildrenArray(request, task, props, childIndex);
5371
+ }
5372
+ return;
5183
5373
  }
5184
- return;
5185
- }
5186
5374
  if ("function" === typeof node.then)
5187
5375
  return (
5188
5376
  (task.thenableState = null),
@@ -5325,6 +5513,7 @@ function spawnNewSuspendedReplayTask(request, task, thenableState) {
5325
5513
  task.formatContext,
5326
5514
  task.context,
5327
5515
  task.treeContext,
5516
+ task.row,
5328
5517
  task.componentStack
5329
5518
  );
5330
5519
  }
@@ -5354,6 +5543,7 @@ function spawnNewSuspendedRenderTask(request, task, thenableState) {
5354
5543
  task.formatContext,
5355
5544
  task.context,
5356
5545
  task.treeContext,
5546
+ task.row,
5357
5547
  task.componentStack
5358
5548
  );
5359
5549
  }
@@ -5407,15 +5597,15 @@ function renderNode(request, task, node, childIndex) {
5407
5597
  chunkLength = segment.chunks.length;
5408
5598
  try {
5409
5599
  return renderNodeDestructive(request, task, node, childIndex);
5410
- } catch (thrownValue$51) {
5600
+ } catch (thrownValue$58) {
5411
5601
  if (
5412
5602
  (resetHooksState(),
5413
5603
  (segment.children.length = childrenLength),
5414
5604
  (segment.chunks.length = chunkLength),
5415
5605
  (node =
5416
- thrownValue$51 === SuspenseException
5606
+ thrownValue$58 === SuspenseException
5417
5607
  ? getSuspendedThenable()
5418
- : thrownValue$51),
5608
+ : thrownValue$58),
5419
5609
  "object" === typeof node && null !== node)
5420
5610
  ) {
5421
5611
  if ("function" === typeof node.then) {
@@ -5453,9 +5643,10 @@ function renderNode(request, task, node, childIndex) {
5453
5643
  throw node;
5454
5644
  }
5455
5645
  function abortTaskSoft(task) {
5456
- var boundary = task.blockedBoundary;
5457
- task = task.blockedSegment;
5458
- null !== task && ((task.status = 3), finishedTask(this, boundary, task));
5646
+ var boundary = task.blockedBoundary,
5647
+ segment = task.blockedSegment;
5648
+ null !== segment &&
5649
+ ((segment.status = 3), finishedTask(this, boundary, task.row, segment));
5459
5650
  }
5460
5651
  function abortRemainingReplayNodes(
5461
5652
  request$jscomp$0,
@@ -5482,6 +5673,7 @@ function abortRemainingReplayNodes(
5482
5673
  errorDigest = errorDigest$jscomp$0,
5483
5674
  resumedBoundary = createSuspenseBoundary(
5484
5675
  request,
5676
+ null,
5485
5677
  new Set(),
5486
5678
  null,
5487
5679
  null
@@ -5515,6 +5707,10 @@ function abortTask(task, request, error) {
5515
5707
  if (6 === segment.status) return;
5516
5708
  segment.status = 3;
5517
5709
  }
5710
+ segment = task.row;
5711
+ null !== segment &&
5712
+ 0 === --segment.pendingTasks &&
5713
+ finishSuspenseListRow(request, segment);
5518
5714
  segment = getThrownInfo(task.componentStack);
5519
5715
  if (null === boundary) {
5520
5716
  if (13 !== request.status && 14 !== request.status) {
@@ -5659,7 +5855,10 @@ function finishedSegment(request, boundary, segment) {
5659
5855
  : (boundary.byteSize += segmentByteSize);
5660
5856
  }
5661
5857
  }
5662
- function finishedTask(request, boundary, segment) {
5858
+ function finishedTask(request, boundary, row, segment) {
5859
+ null !== row &&
5860
+ 0 === --row.pendingTasks &&
5861
+ finishSuspenseListRow(request, row);
5663
5862
  request.allPendingTasks--;
5664
5863
  if (null === boundary) {
5665
5864
  if (null !== segment && segment.parentFlushed) {
@@ -5688,7 +5887,11 @@ function finishedTask(request, boundary, segment) {
5688
5887
  abortTaskSoft,
5689
5888
  request
5690
5889
  ),
5691
- boundary.fallbackAbortableTasks.clear()),
5890
+ boundary.fallbackAbortableTasks.clear(),
5891
+ (row = boundary.row),
5892
+ null !== row &&
5893
+ 0 === --row.pendingTasks &&
5894
+ finishSuspenseListRow(request, row)),
5692
5895
  0 === request.pendingRootTasks &&
5693
5896
  null === request.trackedPostpones &&
5694
5897
  null !== boundary.contentPreamble &&
@@ -5743,7 +5946,12 @@ function performWork(request$jscomp$2) {
5743
5946
  );
5744
5947
  task.replay.pendingTasks--;
5745
5948
  task.abortSet.delete(task);
5746
- finishedTask(request$jscomp$0, task.blockedBoundary, null);
5949
+ finishedTask(
5950
+ request$jscomp$0,
5951
+ task.blockedBoundary,
5952
+ task.row,
5953
+ null
5954
+ );
5747
5955
  } catch (thrownValue) {
5748
5956
  resetHooksState();
5749
5957
  var x =
@@ -5811,7 +6019,12 @@ function performWork(request$jscomp$2) {
5811
6019
  task.abortSet.delete(task),
5812
6020
  (request$jscomp$1.status = 1),
5813
6021
  finishedSegment(request, task.blockedBoundary, request$jscomp$1),
5814
- finishedTask(request, task.blockedBoundary, request$jscomp$1);
6022
+ finishedTask(
6023
+ request,
6024
+ task.blockedBoundary,
6025
+ task.row,
6026
+ request$jscomp$1
6027
+ );
5815
6028
  } catch (thrownValue) {
5816
6029
  resetHooksState();
5817
6030
  request$jscomp$1.children.length = childrenLength;
@@ -5835,7 +6048,12 @@ function performWork(request$jscomp$2) {
5835
6048
  var errorInfo$jscomp$0 = getThrownInfo(task.componentStack);
5836
6049
  task.abortSet.delete(task);
5837
6050
  request$jscomp$1.status = 4;
5838
- var boundary$jscomp$0 = task.blockedBoundary;
6051
+ var boundary$jscomp$0 = task.blockedBoundary,
6052
+ row = task.row;
6053
+ null !== row &&
6054
+ 0 === --row.pendingTasks &&
6055
+ finishSuspenseListRow(request, row);
6056
+ request.allPendingTasks--;
5839
6057
  request$jscomp$0 = logRecoverableError(
5840
6058
  request,
5841
6059
  x$jscomp$0,
@@ -5854,7 +6072,6 @@ function performWork(request$jscomp$2) {
5854
6072
  null === request.trackedPostpones &&
5855
6073
  null !== boundary$jscomp$0.contentPreamble &&
5856
6074
  preparePreamble(request)));
5857
- request.allPendingTasks--;
5858
6075
  0 === request.allPendingTasks && completeAll(request);
5859
6076
  }
5860
6077
  } finally {
@@ -6000,20 +6217,24 @@ function flushSegment(request, destination, segment, hoistableState) {
6000
6217
  if (null === boundary)
6001
6218
  return flushSubtree(request, destination, segment, hoistableState);
6002
6219
  boundary.parentFlushed = !0;
6003
- if (4 === boundary.status)
6004
- (boundary = boundary.errorDigest),
6005
- writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary),
6006
- writeChunk(destination, clientRenderedSuspenseBoundaryError1),
6007
- boundary &&
6008
- (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
6009
- writeChunk(destination, stringToChunk(escapeTextForBrowser(boundary))),
6010
- writeChunk(
6011
- destination,
6012
- clientRenderedSuspenseBoundaryErrorAttrInterstitial
6013
- )),
6014
- writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2),
6015
- flushSubtree(request, destination, segment, hoistableState);
6016
- else if (1 !== boundary.status)
6220
+ if (4 === boundary.status) {
6221
+ var row = boundary.row;
6222
+ null !== row &&
6223
+ 0 === --row.pendingTasks &&
6224
+ finishSuspenseListRow(request, row);
6225
+ boundary = boundary.errorDigest;
6226
+ writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);
6227
+ writeChunk(destination, clientRenderedSuspenseBoundaryError1);
6228
+ boundary &&
6229
+ (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
6230
+ writeChunk(destination, stringToChunk(escapeTextForBrowser(boundary))),
6231
+ writeChunk(
6232
+ destination,
6233
+ clientRenderedSuspenseBoundaryErrorAttrInterstitial
6234
+ ));
6235
+ writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2);
6236
+ flushSubtree(request, destination, segment, hoistableState);
6237
+ } else if (1 !== boundary.status)
6017
6238
  0 === boundary.status && (boundary.rootSegmentID = request.nextSegmentId++),
6018
6239
  0 < boundary.completedSegments.length &&
6019
6240
  request.partialBoundaries.push(boundary),
@@ -6048,6 +6269,11 @@ function flushSegment(request, destination, segment, hoistableState) {
6048
6269
  ((segment = boundary.contentState),
6049
6270
  segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
6050
6271
  segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
6272
+ segment = boundary.row;
6273
+ null !== segment &&
6274
+ 500 < boundary.byteSize &&
6275
+ 0 === --segment.pendingTasks &&
6276
+ finishSuspenseListRow(request, segment);
6051
6277
  writeChunkAndReturn(destination, startCompletedSuspenseBoundary);
6052
6278
  segment = boundary.completedSegments;
6053
6279
  if (1 !== segment.length)
@@ -6082,6 +6308,11 @@ function flushCompletedBoundary(request, destination, boundary) {
6082
6308
  completedSegments[i]
6083
6309
  );
6084
6310
  completedSegments.length = 0;
6311
+ completedSegments = boundary.row;
6312
+ null !== completedSegments &&
6313
+ 500 < boundary.byteSize &&
6314
+ 0 === --completedSegments.pendingTasks &&
6315
+ finishSuspenseListRow(request, completedSegments);
6085
6316
  writeHoistablesForBoundary(
6086
6317
  destination,
6087
6318
  boundary.contentState,
@@ -6359,12 +6590,12 @@ function flushCompletedQueues(request, destination) {
6359
6590
  writtenBytes = 0;
6360
6591
  var partialBoundaries = request.partialBoundaries;
6361
6592
  for (i = 0; i < partialBoundaries.length; i++) {
6362
- var boundary$54 = partialBoundaries[i];
6593
+ var boundary$62 = partialBoundaries[i];
6363
6594
  a: {
6364
6595
  clientRenderedBoundaries = request;
6365
6596
  boundary = destination;
6366
- flushedByteSize = boundary$54.byteSize;
6367
- var completedSegments = boundary$54.completedSegments;
6597
+ flushedByteSize = boundary$62.byteSize;
6598
+ var completedSegments = boundary$62.completedSegments;
6368
6599
  for (
6369
6600
  JSCompiler_inline_result = 0;
6370
6601
  JSCompiler_inline_result < completedSegments.length;
@@ -6374,7 +6605,7 @@ function flushCompletedQueues(request, destination) {
6374
6605
  !flushPartiallyCompletedSegment(
6375
6606
  clientRenderedBoundaries,
6376
6607
  boundary,
6377
- boundary$54,
6608
+ boundary$62,
6378
6609
  completedSegments[JSCompiler_inline_result]
6379
6610
  )
6380
6611
  ) {
@@ -6386,7 +6617,7 @@ function flushCompletedQueues(request, destination) {
6386
6617
  completedSegments.splice(0, JSCompiler_inline_result);
6387
6618
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6388
6619
  boundary,
6389
- boundary$54.contentState,
6620
+ boundary$62.contentState,
6390
6621
  clientRenderedBoundaries.renderState
6391
6622
  );
6392
6623
  }
@@ -6492,17 +6723,17 @@ function abort(request, reason) {
6492
6723
  }
6493
6724
  null !== request.destination &&
6494
6725
  flushCompletedQueues(request, request.destination);
6495
- } catch (error$56) {
6496
- logRecoverableError(request, error$56, {}), fatalError(request, error$56);
6726
+ } catch (error$64) {
6727
+ logRecoverableError(request, error$64, {}), fatalError(request, error$64);
6497
6728
  }
6498
6729
  }
6499
6730
  function ensureCorrectIsomorphicReactVersion() {
6500
6731
  var isomorphicReactPackageVersion = React.version;
6501
- if ("19.2.0-canary-462d08f9-20250517" !== isomorphicReactPackageVersion)
6732
+ if ("19.2.0-canary-c4676e72-20250520" !== isomorphicReactPackageVersion)
6502
6733
  throw Error(
6503
6734
  'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
6504
6735
  (isomorphicReactPackageVersion +
6505
- "\n - react-dom: 19.2.0-canary-462d08f9-20250517\nLearn more: https://react.dev/warnings/version-mismatch")
6736
+ "\n - react-dom: 19.2.0-canary-c4676e72-20250520\nLearn more: https://react.dev/warnings/version-mismatch")
6506
6737
  );
6507
6738
  }
6508
6739
  ensureCorrectIsomorphicReactVersion();
@@ -6648,4 +6879,4 @@ exports.renderToReadableStream = function (children, options) {
6648
6879
  startWork(request);
6649
6880
  });
6650
6881
  };
6651
- exports.version = "19.2.0-canary-462d08f9-20250517";
6882
+ exports.version = "19.2.0-canary-c4676e72-20250520";