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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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;
@@ -3248,6 +3255,10 @@ function hoistStyleQueueDependency(styleQueue) {
3248
3255
  function hoistStylesheetDependency(stylesheet) {
3249
3256
  this.stylesheets.add(stylesheet);
3250
3257
  }
3258
+ function hoistHoistables(parentState, childState) {
3259
+ childState.styles.forEach(hoistStyleQueueDependency, parentState);
3260
+ childState.stylesheets.forEach(hoistStylesheetDependency, parentState);
3261
+ }
3251
3262
  var bind = Function.prototype.bind,
3252
3263
  REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
3253
3264
  function getComponentNameFromType(type) {
@@ -4074,6 +4085,7 @@ function createRequest(
4074
4085
  rootFormatContext,
4075
4086
  null,
4076
4087
  emptyTreeContext,
4088
+ null,
4077
4089
  null
4078
4090
  );
4079
4091
  pushComponentStack(children);
@@ -4129,15 +4141,17 @@ function pingTask(request, task) {
4129
4141
  }
4130
4142
  function createSuspenseBoundary(
4131
4143
  request,
4144
+ row,
4132
4145
  fallbackAbortableTasks,
4133
4146
  contentPreamble,
4134
4147
  fallbackPreamble
4135
4148
  ) {
4136
- return {
4149
+ fallbackAbortableTasks = {
4137
4150
  status: 0,
4138
4151
  rootSegmentID: -1,
4139
4152
  parentFlushed: !1,
4140
4153
  pendingTasks: 0,
4154
+ row: row,
4141
4155
  completedSegments: [],
4142
4156
  byteSize: 0,
4143
4157
  fallbackAbortableTasks: fallbackAbortableTasks,
@@ -4149,6 +4163,17 @@ function createSuspenseBoundary(
4149
4163
  trackedContentKeyPath: null,
4150
4164
  trackedFallbackNode: null
4151
4165
  };
4166
+ null !== row &&
4167
+ (row.pendingTasks++,
4168
+ (contentPreamble = row.boundaries),
4169
+ null !== contentPreamble &&
4170
+ (request.allPendingTasks++,
4171
+ fallbackAbortableTasks.pendingTasks++,
4172
+ contentPreamble.push(fallbackAbortableTasks)),
4173
+ (request = row.inheritedHoistables),
4174
+ null !== request &&
4175
+ hoistHoistables(fallbackAbortableTasks.contentState, request));
4176
+ return fallbackAbortableTasks;
4152
4177
  }
4153
4178
  function createRenderTask(
4154
4179
  request,
@@ -4164,12 +4189,14 @@ function createRenderTask(
4164
4189
  formatContext,
4165
4190
  context,
4166
4191
  treeContext,
4192
+ row,
4167
4193
  componentStack
4168
4194
  ) {
4169
4195
  request.allPendingTasks++;
4170
4196
  null === blockedBoundary
4171
4197
  ? request.pendingRootTasks++
4172
4198
  : blockedBoundary.pendingTasks++;
4199
+ null !== row && row.pendingTasks++;
4173
4200
  var task = {
4174
4201
  replay: null,
4175
4202
  node: node,
@@ -4186,6 +4213,7 @@ function createRenderTask(
4186
4213
  formatContext: formatContext,
4187
4214
  context: context,
4188
4215
  treeContext: treeContext,
4216
+ row: row,
4189
4217
  componentStack: componentStack,
4190
4218
  thenableState: thenableState
4191
4219
  };
@@ -4205,12 +4233,14 @@ function createReplayTask(
4205
4233
  formatContext,
4206
4234
  context,
4207
4235
  treeContext,
4236
+ row,
4208
4237
  componentStack
4209
4238
  ) {
4210
4239
  request.allPendingTasks++;
4211
4240
  null === blockedBoundary
4212
4241
  ? request.pendingRootTasks++
4213
4242
  : blockedBoundary.pendingTasks++;
4243
+ null !== row && row.pendingTasks++;
4214
4244
  replay.pendingTasks++;
4215
4245
  var task = {
4216
4246
  replay: replay,
@@ -4228,6 +4258,7 @@ function createReplayTask(
4228
4258
  formatContext: formatContext,
4229
4259
  context: context,
4230
4260
  treeContext: treeContext,
4261
+ row: row,
4231
4262
  componentStack: componentStack,
4232
4263
  thenableState: thenableState
4233
4264
  };
@@ -4305,6 +4336,162 @@ function fatalError(request, error) {
4305
4336
  ? ((request.status = 14), closeWithError(request.destination, error))
4306
4337
  : ((request.status = 13), (request.fatalError = error));
4307
4338
  }
4339
+ function finishSuspenseListRow(request, row) {
4340
+ unblockSuspenseListRow(request, row.next, row.hoistables);
4341
+ }
4342
+ function unblockSuspenseListRow(request, unblockedRow, inheritedHoistables) {
4343
+ for (; null !== unblockedRow; ) {
4344
+ null !== inheritedHoistables &&
4345
+ (hoistHoistables(unblockedRow.hoistables, inheritedHoistables),
4346
+ (unblockedRow.inheritedHoistables = inheritedHoistables));
4347
+ var unblockedBoundaries = unblockedRow.boundaries;
4348
+ if (null !== unblockedBoundaries) {
4349
+ unblockedRow.boundaries = null;
4350
+ for (var i = 0; i < unblockedBoundaries.length; i++) {
4351
+ var unblockedBoundary = unblockedBoundaries[i];
4352
+ null !== inheritedHoistables &&
4353
+ hoistHoistables(unblockedBoundary.contentState, inheritedHoistables);
4354
+ finishedTask(request, unblockedBoundary, null, null);
4355
+ }
4356
+ }
4357
+ unblockedRow.pendingTasks--;
4358
+ if (0 < unblockedRow.pendingTasks) break;
4359
+ inheritedHoistables = unblockedRow.hoistables;
4360
+ unblockedRow = unblockedRow.next;
4361
+ }
4362
+ }
4363
+ function tryToResolveTogetherRow(request, togetherRow) {
4364
+ var boundaries = togetherRow.boundaries;
4365
+ if (null !== boundaries && togetherRow.pendingTasks === boundaries.length) {
4366
+ for (var allCompleteAndInlinable = !0, i = 0; i < boundaries.length; i++) {
4367
+ var rowBoundary = boundaries[i];
4368
+ if (
4369
+ 1 !== rowBoundary.pendingTasks ||
4370
+ rowBoundary.parentFlushed ||
4371
+ 500 < rowBoundary.byteSize
4372
+ ) {
4373
+ allCompleteAndInlinable = !1;
4374
+ break;
4375
+ }
4376
+ }
4377
+ allCompleteAndInlinable &&
4378
+ unblockSuspenseListRow(request, togetherRow, togetherRow.hoistables);
4379
+ }
4380
+ }
4381
+ function createSuspenseListRow(previousRow) {
4382
+ var newRow = {
4383
+ pendingTasks: 1,
4384
+ boundaries: null,
4385
+ hoistables: createHoistableState(),
4386
+ inheritedHoistables: null,
4387
+ together: !1,
4388
+ next: null
4389
+ };
4390
+ null !== previousRow &&
4391
+ 0 < previousRow.pendingTasks &&
4392
+ (newRow.pendingTasks++,
4393
+ (newRow.boundaries = []),
4394
+ (previousRow.next = newRow));
4395
+ return newRow;
4396
+ }
4397
+ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4398
+ var prevKeyPath = task.keyPath,
4399
+ prevTreeContext = task.treeContext,
4400
+ prevRow = task.row;
4401
+ task.keyPath = keyPath;
4402
+ keyPath = rows.length;
4403
+ var previousSuspenseListRow = null;
4404
+ if (null !== task.replay) {
4405
+ var resumeSlots = task.replay.slots;
4406
+ if (null !== resumeSlots && "object" === typeof resumeSlots)
4407
+ for (var n = 0; n < keyPath; n++) {
4408
+ var i = "backwards" !== revealOrder ? n : keyPath - 1 - n,
4409
+ node = rows[i];
4410
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4411
+ previousSuspenseListRow
4412
+ );
4413
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
4414
+ var resumeSegmentID = resumeSlots[i];
4415
+ "number" === typeof resumeSegmentID
4416
+ ? (resumeNode(request, task, resumeSegmentID, node, i),
4417
+ delete resumeSlots[i])
4418
+ : renderNode(request, task, node, i);
4419
+ 0 === --previousSuspenseListRow.pendingTasks &&
4420
+ finishSuspenseListRow(request, previousSuspenseListRow);
4421
+ }
4422
+ else
4423
+ for (resumeSlots = 0; resumeSlots < keyPath; resumeSlots++)
4424
+ (n =
4425
+ "backwards" !== revealOrder
4426
+ ? resumeSlots
4427
+ : keyPath - 1 - resumeSlots),
4428
+ (i = rows[n]),
4429
+ (task.row = previousSuspenseListRow =
4430
+ createSuspenseListRow(previousSuspenseListRow)),
4431
+ (task.treeContext = pushTreeContext(prevTreeContext, keyPath, n)),
4432
+ renderNode(request, task, i, n),
4433
+ 0 === --previousSuspenseListRow.pendingTasks &&
4434
+ finishSuspenseListRow(request, previousSuspenseListRow);
4435
+ } else if ("backwards" !== revealOrder)
4436
+ for (revealOrder = 0; revealOrder < keyPath; revealOrder++)
4437
+ (resumeSlots = rows[revealOrder]),
4438
+ (task.row = previousSuspenseListRow =
4439
+ createSuspenseListRow(previousSuspenseListRow)),
4440
+ (task.treeContext = pushTreeContext(
4441
+ prevTreeContext,
4442
+ keyPath,
4443
+ revealOrder
4444
+ )),
4445
+ renderNode(request, task, resumeSlots, revealOrder),
4446
+ 0 === --previousSuspenseListRow.pendingTasks &&
4447
+ finishSuspenseListRow(request, previousSuspenseListRow);
4448
+ else {
4449
+ revealOrder = task.blockedSegment;
4450
+ resumeSlots = revealOrder.children.length;
4451
+ n = revealOrder.chunks.length;
4452
+ for (i = keyPath - 1; 0 <= i; i--) {
4453
+ node = rows[i];
4454
+ task.row = previousSuspenseListRow = createSuspenseListRow(
4455
+ previousSuspenseListRow
4456
+ );
4457
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
4458
+ resumeSegmentID = createPendingSegment(
4459
+ request,
4460
+ n,
4461
+ null,
4462
+ task.formatContext,
4463
+ 0 === i ? revealOrder.lastPushedText : !0,
4464
+ !0
4465
+ );
4466
+ revealOrder.children.splice(resumeSlots, 0, resumeSegmentID);
4467
+ task.blockedSegment = resumeSegmentID;
4468
+ try {
4469
+ renderNode(request, task, node, i),
4470
+ resumeSegmentID.lastPushedText &&
4471
+ resumeSegmentID.textEmbedded &&
4472
+ resumeSegmentID.chunks.push(textSeparator),
4473
+ (resumeSegmentID.status = 1),
4474
+ finishedSegment(request, task.blockedBoundary, resumeSegmentID),
4475
+ 0 === --previousSuspenseListRow.pendingTasks &&
4476
+ finishSuspenseListRow(request, previousSuspenseListRow);
4477
+ } catch (thrownValue) {
4478
+ throw (
4479
+ ((resumeSegmentID.status = 12 === request.status ? 3 : 4),
4480
+ thrownValue)
4481
+ );
4482
+ }
4483
+ }
4484
+ task.blockedSegment = revealOrder;
4485
+ revealOrder.lastPushedText = !1;
4486
+ }
4487
+ null !== prevRow &&
4488
+ null !== previousSuspenseListRow &&
4489
+ 0 < previousSuspenseListRow.pendingTasks &&
4490
+ (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
4491
+ task.treeContext = prevTreeContext;
4492
+ task.row = prevRow;
4493
+ task.keyPath = prevKeyPath;
4494
+ }
4308
4495
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
4309
4496
  var prevThenableState = task.thenableState;
4310
4497
  task.thenableState = null;
@@ -4372,9 +4559,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
4372
4559
  var defaultProps = type.defaultProps;
4373
4560
  if (defaultProps) {
4374
4561
  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]);
4562
+ for (var propName$43 in defaultProps)
4563
+ void 0 === newProps[propName$43] &&
4564
+ (newProps[propName$43] = defaultProps[propName$43]);
4378
4565
  }
4379
4566
  props = newProps;
4380
4567
  newProps = emptyContextObject;
@@ -4434,16 +4621,16 @@ function renderElement(request, task, keyPath, type, props, ref) {
4434
4621
  defaultProps = ref ? type[0] : newProps.state;
4435
4622
  initialState = !0;
4436
4623
  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 &&
4624
+ (propName$43 = type[ref]),
4625
+ (propName$43 =
4626
+ "function" === typeof propName$43
4627
+ ? propName$43.call(newProps, defaultProps, props, void 0)
4628
+ : propName$43),
4629
+ null != propName$43 &&
4443
4630
  (initialState
4444
4631
  ? ((initialState = !1),
4445
- (defaultProps = assign({}, defaultProps, propName$34)))
4446
- : assign(defaultProps, propName$34));
4632
+ (defaultProps = assign({}, defaultProps, propName$43)))
4633
+ : assign(defaultProps, propName$43));
4447
4634
  newProps.state = defaultProps;
4448
4635
  }
4449
4636
  else defaultProps.queue = null;
@@ -4518,6 +4705,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4518
4705
  task.formatContext,
4519
4706
  task.context,
4520
4707
  task.treeContext,
4708
+ task.row,
4521
4709
  task.componentStack
4522
4710
  )),
4523
4711
  pushComponentStack(keyPath),
@@ -4597,10 +4785,45 @@ function renderElement(request, task, keyPath, type, props, ref) {
4597
4785
  (type.lastPushedText = !1));
4598
4786
  return;
4599
4787
  case REACT_SUSPENSE_LIST_TYPE:
4600
- type = task.keyPath;
4601
- task.keyPath = keyPath;
4602
- renderNodeDestructive(request, task, props.children, -1);
4603
- task.keyPath = type;
4788
+ a: {
4789
+ type = props.children;
4790
+ props = props.revealOrder;
4791
+ if ("forwards" === props || "backwards" === props) {
4792
+ if (isArrayImpl(type)) {
4793
+ renderSuspenseListRows(request, task, keyPath, type, props);
4794
+ break a;
4795
+ }
4796
+ if ((newProps = getIteratorFn(type)))
4797
+ if ((newProps = newProps.call(type))) {
4798
+ defaultProps = newProps.next();
4799
+ if (!defaultProps.done) {
4800
+ do defaultProps = newProps.next();
4801
+ while (!defaultProps.done);
4802
+ renderSuspenseListRows(request, task, keyPath, type, props);
4803
+ }
4804
+ break a;
4805
+ }
4806
+ }
4807
+ "together" === props
4808
+ ? ((props = task.keyPath),
4809
+ (newProps = task.row),
4810
+ (defaultProps = task.row = createSuspenseListRow(null)),
4811
+ (defaultProps.boundaries = []),
4812
+ (defaultProps.together = !0),
4813
+ (task.keyPath = keyPath),
4814
+ renderNodeDestructive(request, task, type, -1),
4815
+ 0 === --defaultProps.pendingTasks &&
4816
+ finishSuspenseListRow(request, defaultProps),
4817
+ (task.keyPath = props),
4818
+ (task.row = newProps),
4819
+ null !== newProps &&
4820
+ 0 < defaultProps.pendingTasks &&
4821
+ (newProps.pendingTasks++, (defaultProps.next = newProps)))
4822
+ : ((props = task.keyPath),
4823
+ (task.keyPath = keyPath),
4824
+ renderNodeDestructive(request, task, type, -1),
4825
+ (task.keyPath = props));
4826
+ }
4604
4827
  return;
4605
4828
  case REACT_VIEW_TRANSITION_TYPE:
4606
4829
  case REACT_SCOPE_TYPE:
@@ -4609,21 +4832,26 @@ function renderElement(request, task, keyPath, type, props, ref) {
4609
4832
  a: if (null !== task.replay) {
4610
4833
  type = task.keyPath;
4611
4834
  newProps = task.formatContext;
4835
+ defaultProps = task.row;
4612
4836
  task.keyPath = keyPath;
4613
4837
  task.formatContext = getSuspenseContentFormatContext(
4614
4838
  request.resumableState,
4615
4839
  newProps
4616
4840
  );
4841
+ task.row = null;
4617
4842
  keyPath = props.children;
4618
4843
  try {
4619
4844
  renderNode(request, task, keyPath, -1);
4620
4845
  } finally {
4621
- (task.keyPath = type), (task.formatContext = newProps);
4846
+ (task.keyPath = type),
4847
+ (task.formatContext = newProps),
4848
+ (task.row = defaultProps);
4622
4849
  }
4623
4850
  } else {
4624
4851
  type = task.keyPath;
4625
4852
  ref = task.formatContext;
4626
- propName$34 = task.blockedBoundary;
4853
+ var prevRow = task.row;
4854
+ propName$43 = task.blockedBoundary;
4627
4855
  propName = task.blockedPreamble;
4628
4856
  var parentHoistableState = task.hoistableState,
4629
4857
  parentSegment = task.blockedSegment,
@@ -4634,11 +4862,18 @@ function renderElement(request, task, keyPath, type, props, ref) {
4634
4862
  2 > task.formatContext.insertionMode
4635
4863
  ? createSuspenseBoundary(
4636
4864
  request,
4865
+ task.row,
4637
4866
  fallbackAbortSet,
4638
4867
  createPreambleState(),
4639
4868
  createPreambleState()
4640
4869
  )
4641
- : createSuspenseBoundary(request, fallbackAbortSet, null, null);
4870
+ : createSuspenseBoundary(
4871
+ request,
4872
+ task.row,
4873
+ fallbackAbortSet,
4874
+ null,
4875
+ null
4876
+ );
4642
4877
  null !== request.trackedPostpones &&
4643
4878
  (newBoundary.trackedContentKeyPath = keyPath);
4644
4879
  var boundarySegment = createPendingSegment(
@@ -4679,7 +4914,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4679
4914
  boundarySegment.textEmbedded &&
4680
4915
  boundarySegment.chunks.push(textSeparator),
4681
4916
  (boundarySegment.status = 1),
4682
- finishedSegment(request, propName$34, boundarySegment);
4917
+ finishedSegment(request, propName$43, boundarySegment);
4683
4918
  } catch (thrownValue) {
4684
4919
  throw (
4685
4920
  ((boundarySegment.status = 12 === request.status ? 3 : 4),
@@ -4708,6 +4943,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4708
4943
  ),
4709
4944
  task.context,
4710
4945
  task.treeContext,
4946
+ null,
4711
4947
  task.componentStack
4712
4948
  );
4713
4949
  pushComponentStack(task);
@@ -4722,6 +4958,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4722
4958
  request.resumableState,
4723
4959
  ref
4724
4960
  );
4961
+ task.row = null;
4725
4962
  contentRootSegment.status = 6;
4726
4963
  try {
4727
4964
  if (
@@ -4732,22 +4969,28 @@ function renderElement(request, task, keyPath, type, props, ref) {
4732
4969
  (contentRootSegment.status = 1),
4733
4970
  finishedSegment(request, newBoundary, contentRootSegment),
4734
4971
  queueCompletedSegment(newBoundary, contentRootSegment),
4735
- 0 === newBoundary.pendingTasks &&
4736
- 0 === newBoundary.status &&
4737
- ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4972
+ 0 === newBoundary.pendingTasks && 0 === newBoundary.status)
4738
4973
  ) {
4739
- 0 === request.pendingRootTasks &&
4740
- task.blockedPreamble &&
4741
- preparePreamble(request);
4742
- break a;
4743
- }
4744
- } catch (thrownValue$29) {
4974
+ if (((newBoundary.status = 1), !(500 < newBoundary.byteSize))) {
4975
+ null !== prevRow &&
4976
+ 0 === --prevRow.pendingTasks &&
4977
+ finishSuspenseListRow(request, prevRow);
4978
+ 0 === request.pendingRootTasks &&
4979
+ task.blockedPreamble &&
4980
+ preparePreamble(request);
4981
+ break a;
4982
+ }
4983
+ } else
4984
+ null !== prevRow &&
4985
+ prevRow.together &&
4986
+ tryToResolveTogetherRow(request, prevRow);
4987
+ } catch (thrownValue$30) {
4745
4988
  (newBoundary.status = 4),
4746
4989
  12 === request.status
4747
4990
  ? ((contentRootSegment.status = 3),
4748
4991
  (newProps = request.fatalError))
4749
4992
  : ((contentRootSegment.status = 4),
4750
- (newProps = thrownValue$29)),
4993
+ (newProps = thrownValue$30)),
4751
4994
  (defaultProps = getThrownInfo(task.componentStack)),
4752
4995
  (initialState = logRecoverableError(
4753
4996
  request,
@@ -4757,19 +5000,20 @@ function renderElement(request, task, keyPath, type, props, ref) {
4757
5000
  (newBoundary.errorDigest = initialState),
4758
5001
  untrackBoundary(request, newBoundary);
4759
5002
  } finally {
4760
- (task.blockedBoundary = propName$34),
5003
+ (task.blockedBoundary = propName$43),
4761
5004
  (task.blockedPreamble = propName),
4762
5005
  (task.hoistableState = parentHoistableState),
4763
5006
  (task.blockedSegment = parentSegment),
4764
5007
  (task.keyPath = type),
4765
- (task.formatContext = ref);
5008
+ (task.formatContext = ref),
5009
+ (task.row = prevRow);
4766
5010
  }
4767
5011
  task = createRenderTask(
4768
5012
  request,
4769
5013
  null,
4770
5014
  fallback,
4771
5015
  -1,
4772
- propName$34,
5016
+ propName$43,
4773
5017
  boundarySegment,
4774
5018
  newBoundary.fallbackPreamble,
4775
5019
  newBoundary.fallbackState,
@@ -4781,6 +5025,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4781
5025
  ),
4782
5026
  task.context,
4783
5027
  task.treeContext,
5028
+ task.row,
4784
5029
  task.componentStack
4785
5030
  );
4786
5031
  pushComponentStack(task);
@@ -4992,6 +5237,7 @@ function retryNode(request, task) {
4992
5237
  null === node$jscomp$0[4] ? null : node$jscomp$0[4][3];
4993
5238
  var prevKeyPath = task.keyPath,
4994
5239
  prevContext = task.formatContext,
5240
+ prevRow = task.row,
4995
5241
  previousReplaySet = task.replay,
4996
5242
  parentBoundary = task.blockedBoundary,
4997
5243
  parentHoistableState = task.hoistableState,
@@ -5002,12 +5248,14 @@ function retryNode(request, task) {
5002
5248
  2 > task.formatContext.insertionMode
5003
5249
  ? createSuspenseBoundary(
5004
5250
  request,
5251
+ task.row,
5005
5252
  fallbackAbortSet,
5006
5253
  createPreambleState(),
5007
5254
  createPreambleState()
5008
5255
  )
5009
5256
  : createSuspenseBoundary(
5010
5257
  request,
5258
+ task.row,
5011
5259
  fallbackAbortSet,
5012
5260
  null,
5013
5261
  null
@@ -5021,6 +5269,7 @@ function retryNode(request, task) {
5021
5269
  request.resumableState,
5022
5270
  prevContext
5023
5271
  );
5272
+ task.row = null;
5024
5273
  task.replay = {
5025
5274
  nodes: ref,
5026
5275
  slots: name,
@@ -5055,9 +5304,10 @@ function retryNode(request, task) {
5055
5304
  (task.hoistableState = parentHoistableState),
5056
5305
  (task.replay = previousReplaySet),
5057
5306
  (task.keyPath = prevKeyPath),
5058
- (task.formatContext = prevContext);
5307
+ (task.formatContext = prevContext),
5308
+ (task.row = prevRow);
5059
5309
  }
5060
- task = createReplayTask(
5310
+ childNodes = createReplayTask(
5061
5311
  request,
5062
5312
  null,
5063
5313
  {
@@ -5077,10 +5327,11 @@ function retryNode(request, task) {
5077
5327
  ),
5078
5328
  task.context,
5079
5329
  task.treeContext,
5330
+ task.row,
5080
5331
  task.componentStack
5081
5332
  );
5082
- pushComponentStack(task);
5083
- request.pingedTasks.push(task);
5333
+ pushComponentStack(childNodes);
5334
+ request.pingedTasks.push(childNodes);
5084
5335
  }
5085
5336
  }
5086
5337
  childIndex.splice(node, 1);
@@ -5103,22 +5354,17 @@ function retryNode(request, task) {
5103
5354
  renderChildrenArray(request, task, node, childIndex);
5104
5355
  return;
5105
5356
  }
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);
5357
+ if ((childNodes = getIteratorFn(node)))
5358
+ if ((childNodes = childNodes.call(node))) {
5359
+ node = childNodes.next();
5360
+ if (!node.done) {
5361
+ props = [];
5362
+ do props.push(node.value), (node = childNodes.next());
5363
+ while (!node.done);
5364
+ renderChildrenArray(request, task, props, childIndex);
5365
+ }
5366
+ return;
5119
5367
  }
5120
- return;
5121
- }
5122
5368
  if ("function" === typeof node.then)
5123
5369
  return (
5124
5370
  (task.thenableState = null),
@@ -5260,6 +5506,7 @@ function spawnNewSuspendedReplayTask(request, task, thenableState) {
5260
5506
  task.formatContext,
5261
5507
  task.context,
5262
5508
  task.treeContext,
5509
+ task.row,
5263
5510
  task.componentStack
5264
5511
  );
5265
5512
  }
@@ -5289,6 +5536,7 @@ function spawnNewSuspendedRenderTask(request, task, thenableState) {
5289
5536
  task.formatContext,
5290
5537
  task.context,
5291
5538
  task.treeContext,
5539
+ task.row,
5292
5540
  task.componentStack
5293
5541
  );
5294
5542
  }
@@ -5342,15 +5590,15 @@ function renderNode(request, task, node, childIndex) {
5342
5590
  chunkLength = segment.chunks.length;
5343
5591
  try {
5344
5592
  return renderNodeDestructive(request, task, node, childIndex);
5345
- } catch (thrownValue$51) {
5593
+ } catch (thrownValue$59) {
5346
5594
  if (
5347
5595
  (resetHooksState(),
5348
5596
  (segment.children.length = childrenLength),
5349
5597
  (segment.chunks.length = chunkLength),
5350
5598
  (node =
5351
- thrownValue$51 === SuspenseException
5599
+ thrownValue$59 === SuspenseException
5352
5600
  ? getSuspendedThenable()
5353
- : thrownValue$51),
5601
+ : thrownValue$59),
5354
5602
  "object" === typeof node && null !== node)
5355
5603
  ) {
5356
5604
  if ("function" === typeof node.then) {
@@ -5388,9 +5636,10 @@ function renderNode(request, task, node, childIndex) {
5388
5636
  throw node;
5389
5637
  }
5390
5638
  function abortTaskSoft(task) {
5391
- var boundary = task.blockedBoundary;
5392
- task = task.blockedSegment;
5393
- null !== task && ((task.status = 3), finishedTask(this, boundary, task));
5639
+ var boundary = task.blockedBoundary,
5640
+ segment = task.blockedSegment;
5641
+ null !== segment &&
5642
+ ((segment.status = 3), finishedTask(this, boundary, task.row, segment));
5394
5643
  }
5395
5644
  function abortRemainingReplayNodes(
5396
5645
  request$jscomp$0,
@@ -5417,6 +5666,7 @@ function abortRemainingReplayNodes(
5417
5666
  errorDigest = errorDigest$jscomp$0,
5418
5667
  resumedBoundary = createSuspenseBoundary(
5419
5668
  request,
5669
+ null,
5420
5670
  new Set(),
5421
5671
  null,
5422
5672
  null
@@ -5459,32 +5709,40 @@ function abortTask(task, request, error) {
5459
5709
  boundary.pendingTasks--;
5460
5710
  0 === boundary.pendingTasks &&
5461
5711
  0 < boundary.nodes.length &&
5462
- ((task = logRecoverableError(request, error, segment)),
5712
+ ((segment = logRecoverableError(request, error, segment)),
5463
5713
  abortRemainingReplayNodes(
5464
5714
  request,
5465
5715
  null,
5466
5716
  boundary.nodes,
5467
5717
  boundary.slots,
5468
5718
  error,
5469
- task
5719
+ segment
5470
5720
  ));
5471
5721
  request.pendingRootTasks--;
5472
5722
  0 === request.pendingRootTasks && completeShell(request);
5473
5723
  }
5474
5724
  } else
5475
- boundary.pendingTasks--,
5476
- 4 !== boundary.status &&
5477
- ((boundary.status = 4),
5478
- (task = logRecoverableError(request, error, segment)),
5479
- (boundary.status = 4),
5480
- (boundary.errorDigest = task),
5481
- untrackBoundary(request, boundary),
5482
- boundary.parentFlushed &&
5483
- request.clientRenderedBoundaries.push(boundary)),
5725
+ 4 !== boundary.status &&
5726
+ ((boundary.status = 4),
5727
+ (segment = logRecoverableError(request, error, segment)),
5728
+ (boundary.status = 4),
5729
+ (boundary.errorDigest = segment),
5730
+ untrackBoundary(request, boundary),
5731
+ boundary.parentFlushed &&
5732
+ request.clientRenderedBoundaries.push(boundary)),
5733
+ boundary.pendingTasks--,
5734
+ (segment = boundary.row),
5735
+ null !== segment &&
5736
+ 0 === --segment.pendingTasks &&
5737
+ finishSuspenseListRow(request, segment),
5484
5738
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
5485
5739
  return abortTask(fallbackTask, request, error);
5486
5740
  }),
5487
5741
  boundary.fallbackAbortableTasks.clear();
5742
+ task = task.row;
5743
+ null !== task &&
5744
+ 0 === --task.pendingTasks &&
5745
+ finishSuspenseListRow(request, task);
5488
5746
  request.allPendingTasks--;
5489
5747
  0 === request.allPendingTasks && completeAll(request);
5490
5748
  }
@@ -5591,7 +5849,11 @@ function finishedSegment(request, boundary, segment) {
5591
5849
  : (boundary.byteSize += segmentByteSize);
5592
5850
  }
5593
5851
  }
5594
- function finishedTask(request, boundary, segment) {
5852
+ function finishedTask(request, boundary, row, segment) {
5853
+ null !== row &&
5854
+ (0 === --row.pendingTasks
5855
+ ? finishSuspenseListRow(request, row)
5856
+ : row.together && tryToResolveTogetherRow(request, row));
5595
5857
  request.allPendingTasks--;
5596
5858
  if (null === boundary) {
5597
5859
  if (null !== segment && segment.parentFlushed) {
@@ -5613,23 +5875,33 @@ function finishedTask(request, boundary, segment) {
5613
5875
  boundary.parentFlushed &&
5614
5876
  request.completedBoundaries.push(boundary),
5615
5877
  1 === boundary.status &&
5616
- (500 < boundary.byteSize ||
5878
+ ((row = boundary.row),
5879
+ null !== row &&
5880
+ hoistHoistables(row.hoistables, boundary.contentState),
5881
+ 500 < boundary.byteSize ||
5617
5882
  (boundary.fallbackAbortableTasks.forEach(
5618
5883
  abortTaskSoft,
5619
5884
  request
5620
5885
  ),
5621
- boundary.fallbackAbortableTasks.clear()),
5886
+ boundary.fallbackAbortableTasks.clear(),
5887
+ null !== row &&
5888
+ 0 === --row.pendingTasks &&
5889
+ finishSuspenseListRow(request, row)),
5622
5890
  0 === request.pendingRootTasks &&
5623
5891
  null === request.trackedPostpones &&
5624
5892
  null !== boundary.contentPreamble &&
5625
5893
  preparePreamble(request)))
5626
- : null !== segment &&
5627
- segment.parentFlushed &&
5628
- 1 === segment.status &&
5629
- (queueCompletedSegment(boundary, segment),
5630
- 1 === boundary.completedSegments.length &&
5631
- boundary.parentFlushed &&
5632
- request.partialBoundaries.push(boundary)));
5894
+ : (null !== segment &&
5895
+ segment.parentFlushed &&
5896
+ 1 === segment.status &&
5897
+ (queueCompletedSegment(boundary, segment),
5898
+ 1 === boundary.completedSegments.length &&
5899
+ boundary.parentFlushed &&
5900
+ request.partialBoundaries.push(boundary)),
5901
+ (boundary = boundary.row),
5902
+ null !== boundary &&
5903
+ boundary.together &&
5904
+ tryToResolveTogetherRow(request, boundary)));
5633
5905
  0 === request.allPendingTasks && completeAll(request);
5634
5906
  }
5635
5907
  function performWork(request$jscomp$2) {
@@ -5671,7 +5943,12 @@ function performWork(request$jscomp$2) {
5671
5943
  throw Error(formatProdErrorMessage(488));
5672
5944
  task.replay.pendingTasks--;
5673
5945
  task.abortSet.delete(task);
5674
- finishedTask(request$jscomp$0, task.blockedBoundary, null);
5946
+ finishedTask(
5947
+ request$jscomp$0,
5948
+ task.blockedBoundary,
5949
+ task.row,
5950
+ null
5951
+ );
5675
5952
  } catch (thrownValue) {
5676
5953
  resetHooksState();
5677
5954
  var x =
@@ -5739,7 +6016,12 @@ function performWork(request$jscomp$2) {
5739
6016
  task.abortSet.delete(task),
5740
6017
  (request$jscomp$1.status = 1),
5741
6018
  finishedSegment(request, task.blockedBoundary, request$jscomp$1),
5742
- finishedTask(request, task.blockedBoundary, request$jscomp$1);
6019
+ finishedTask(
6020
+ request,
6021
+ task.blockedBoundary,
6022
+ task.row,
6023
+ request$jscomp$1
6024
+ );
5743
6025
  } catch (thrownValue) {
5744
6026
  resetHooksState();
5745
6027
  request$jscomp$1.children.length = childrenLength;
@@ -5763,26 +6045,36 @@ function performWork(request$jscomp$2) {
5763
6045
  var errorInfo$jscomp$0 = getThrownInfo(task.componentStack);
5764
6046
  task.abortSet.delete(task);
5765
6047
  request$jscomp$1.status = 4;
5766
- var boundary$jscomp$0 = task.blockedBoundary;
6048
+ var boundary$jscomp$0 = task.blockedBoundary,
6049
+ row = task.row;
6050
+ null !== row &&
6051
+ 0 === --row.pendingTasks &&
6052
+ finishSuspenseListRow(request, row);
6053
+ request.allPendingTasks--;
5767
6054
  request$jscomp$0 = logRecoverableError(
5768
6055
  request,
5769
6056
  x$jscomp$0,
5770
6057
  errorInfo$jscomp$0
5771
6058
  );
5772
- null === boundary$jscomp$0
5773
- ? fatalError(request, x$jscomp$0)
5774
- : (boundary$jscomp$0.pendingTasks--,
5775
- 4 !== boundary$jscomp$0.status &&
5776
- ((boundary$jscomp$0.status = 4),
5777
- (boundary$jscomp$0.errorDigest = request$jscomp$0),
5778
- untrackBoundary(request, boundary$jscomp$0),
5779
- boundary$jscomp$0.parentFlushed &&
5780
- request.clientRenderedBoundaries.push(boundary$jscomp$0),
5781
- 0 === request.pendingRootTasks &&
5782
- null === request.trackedPostpones &&
5783
- null !== boundary$jscomp$0.contentPreamble &&
5784
- preparePreamble(request)));
5785
- request.allPendingTasks--;
6059
+ if (null === boundary$jscomp$0) fatalError(request, x$jscomp$0);
6060
+ else if (
6061
+ (boundary$jscomp$0.pendingTasks--,
6062
+ 4 !== boundary$jscomp$0.status)
6063
+ ) {
6064
+ boundary$jscomp$0.status = 4;
6065
+ boundary$jscomp$0.errorDigest = request$jscomp$0;
6066
+ untrackBoundary(request, boundary$jscomp$0);
6067
+ var boundaryRow = boundary$jscomp$0.row;
6068
+ null !== boundaryRow &&
6069
+ 0 === --boundaryRow.pendingTasks &&
6070
+ finishSuspenseListRow(request, boundaryRow);
6071
+ boundary$jscomp$0.parentFlushed &&
6072
+ request.clientRenderedBoundaries.push(boundary$jscomp$0);
6073
+ 0 === request.pendingRootTasks &&
6074
+ null === request.trackedPostpones &&
6075
+ null !== boundary$jscomp$0.contentPreamble &&
6076
+ preparePreamble(request);
6077
+ }
5786
6078
  0 === request.allPendingTasks && completeAll(request);
5787
6079
  }
5788
6080
  } finally {
@@ -5923,20 +6215,24 @@ function flushSegment(request, destination, segment, hoistableState) {
5923
6215
  if (null === boundary)
5924
6216
  return flushSubtree(request, destination, segment, hoistableState);
5925
6217
  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)
6218
+ if (4 === boundary.status) {
6219
+ var row = boundary.row;
6220
+ null !== row &&
6221
+ 0 === --row.pendingTasks &&
6222
+ finishSuspenseListRow(request, row);
6223
+ boundary = boundary.errorDigest;
6224
+ writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);
6225
+ writeChunk(destination, clientRenderedSuspenseBoundaryError1);
6226
+ boundary &&
6227
+ (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),
6228
+ writeChunk(destination, stringToChunk(escapeTextForBrowser(boundary))),
6229
+ writeChunk(
6230
+ destination,
6231
+ clientRenderedSuspenseBoundaryErrorAttrInterstitial
6232
+ ));
6233
+ writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2);
6234
+ flushSubtree(request, destination, segment, hoistableState);
6235
+ } else if (1 !== boundary.status)
5940
6236
  0 === boundary.status && (boundary.rootSegmentID = request.nextSegmentId++),
5941
6237
  0 < boundary.completedSegments.length &&
5942
6238
  request.partialBoundaries.push(boundary),
@@ -5945,13 +6241,7 @@ function flushSegment(request, destination, segment, hoistableState) {
5945
6241
  request.renderState,
5946
6242
  boundary.rootSegmentID
5947
6243
  ),
5948
- hoistableState &&
5949
- ((boundary = boundary.fallbackState),
5950
- boundary.styles.forEach(hoistStyleQueueDependency, hoistableState),
5951
- boundary.stylesheets.forEach(
5952
- hoistStylesheetDependency,
5953
- hoistableState
5954
- )),
6244
+ hoistableState && hoistHoistables(hoistableState, boundary.fallbackState),
5955
6245
  flushSubtree(request, destination, segment, hoistableState);
5956
6246
  else if (
5957
6247
  500 < boundary.byteSize &&
@@ -5967,10 +6257,12 @@ function flushSegment(request, destination, segment, hoistableState) {
5967
6257
  flushSubtree(request, destination, segment, hoistableState);
5968
6258
  else {
5969
6259
  flushedByteSize += boundary.byteSize;
5970
- hoistableState &&
5971
- ((segment = boundary.contentState),
5972
- segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
5973
- segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
6260
+ hoistableState && hoistHoistables(hoistableState, boundary.contentState);
6261
+ segment = boundary.row;
6262
+ null !== segment &&
6263
+ 500 < boundary.byteSize &&
6264
+ 0 === --segment.pendingTasks &&
6265
+ finishSuspenseListRow(request, segment);
5974
6266
  writeChunkAndReturn(destination, startCompletedSuspenseBoundary);
5975
6267
  segment = boundary.completedSegments;
5976
6268
  if (1 !== segment.length) throw Error(formatProdErrorMessage(391));
@@ -6002,6 +6294,11 @@ function flushCompletedBoundary(request, destination, boundary) {
6002
6294
  completedSegments[i]
6003
6295
  );
6004
6296
  completedSegments.length = 0;
6297
+ completedSegments = boundary.row;
6298
+ null !== completedSegments &&
6299
+ 500 < boundary.byteSize &&
6300
+ 0 === --completedSegments.pendingTasks &&
6301
+ finishSuspenseListRow(request, completedSegments);
6005
6302
  writeHoistablesForBoundary(
6006
6303
  destination,
6007
6304
  boundary.contentState,
@@ -6277,12 +6574,12 @@ function flushCompletedQueues(request, destination) {
6277
6574
  writtenBytes = 0;
6278
6575
  var partialBoundaries = request.partialBoundaries;
6279
6576
  for (i = 0; i < partialBoundaries.length; i++) {
6280
- var boundary$54 = partialBoundaries[i];
6577
+ var boundary$64 = partialBoundaries[i];
6281
6578
  a: {
6282
6579
  clientRenderedBoundaries = request;
6283
6580
  boundary = destination;
6284
- flushedByteSize = boundary$54.byteSize;
6285
- var completedSegments = boundary$54.completedSegments;
6581
+ flushedByteSize = boundary$64.byteSize;
6582
+ var completedSegments = boundary$64.completedSegments;
6286
6583
  for (
6287
6584
  JSCompiler_inline_result = 0;
6288
6585
  JSCompiler_inline_result < completedSegments.length;
@@ -6292,7 +6589,7 @@ function flushCompletedQueues(request, destination) {
6292
6589
  !flushPartiallyCompletedSegment(
6293
6590
  clientRenderedBoundaries,
6294
6591
  boundary,
6295
- boundary$54,
6592
+ boundary$64,
6296
6593
  completedSegments[JSCompiler_inline_result]
6297
6594
  )
6298
6595
  ) {
@@ -6302,9 +6599,20 @@ function flushCompletedQueues(request, destination) {
6302
6599
  break a;
6303
6600
  }
6304
6601
  completedSegments.splice(0, JSCompiler_inline_result);
6602
+ var row = boundary$64.row;
6603
+ null !== row &&
6604
+ row.together &&
6605
+ 1 === boundary$64.pendingTasks &&
6606
+ (1 === row.pendingTasks
6607
+ ? unblockSuspenseListRow(
6608
+ clientRenderedBoundaries,
6609
+ row,
6610
+ row.hoistables
6611
+ )
6612
+ : row.pendingTasks--);
6305
6613
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6306
6614
  boundary,
6307
- boundary$54.contentState,
6615
+ boundary$64.contentState,
6308
6616
  clientRenderedBoundaries.renderState
6309
6617
  );
6310
6618
  }
@@ -6397,18 +6705,18 @@ function abort(request, reason) {
6397
6705
  }
6398
6706
  null !== request.destination &&
6399
6707
  flushCompletedQueues(request, request.destination);
6400
- } catch (error$56) {
6401
- logRecoverableError(request, error$56, {}), fatalError(request, error$56);
6708
+ } catch (error$66) {
6709
+ logRecoverableError(request, error$66, {}), fatalError(request, error$66);
6402
6710
  }
6403
6711
  }
6404
6712
  function ensureCorrectIsomorphicReactVersion() {
6405
6713
  var isomorphicReactPackageVersion = React.version;
6406
- if ("19.2.0-canary-462d08f9-20250517" !== isomorphicReactPackageVersion)
6714
+ if ("19.2.0-canary-23884812-20250520" !== isomorphicReactPackageVersion)
6407
6715
  throw Error(
6408
6716
  formatProdErrorMessage(
6409
6717
  527,
6410
6718
  isomorphicReactPackageVersion,
6411
- "19.2.0-canary-462d08f9-20250517"
6719
+ "19.2.0-canary-23884812-20250520"
6412
6720
  )
6413
6721
  );
6414
6722
  }
@@ -6555,4 +6863,4 @@ exports.renderToReadableStream = function (children, options) {
6555
6863
  startWork(request);
6556
6864
  });
6557
6865
  };
6558
- exports.version = "19.2.0-canary-462d08f9-20250517";
6866
+ exports.version = "19.2.0-canary-23884812-20250520";