react-markup 0.0.0-experimental-c4676e72-20250520 → 0.0.0-experimental-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.
@@ -2794,6 +2794,10 @@ function hoistStyleQueueDependency(styleQueue) {
2794
2794
  function hoistStylesheetDependency(stylesheet) {
2795
2795
  this.stylesheets.add(stylesheet);
2796
2796
  }
2797
+ function hoistHoistables(parentState, childState) {
2798
+ childState.styles.forEach(hoistStyleQueueDependency, parentState);
2799
+ childState.stylesheets.forEach(hoistStylesheetDependency, parentState);
2800
+ }
2797
2801
  var bind = Function.prototype.bind,
2798
2802
  REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
2799
2803
  function getComponentNameFromType(type) {
@@ -3615,11 +3619,14 @@ function createSuspenseBoundary(
3615
3619
  };
3616
3620
  null !== row &&
3617
3621
  (row.pendingTasks++,
3618
- (row = row.boundaries),
3619
- null !== row &&
3622
+ (contentPreamble = row.boundaries),
3623
+ null !== contentPreamble &&
3620
3624
  (request.allPendingTasks++,
3621
3625
  fallbackAbortableTasks.pendingTasks++,
3622
- row.push(fallbackAbortableTasks)));
3626
+ contentPreamble.push(fallbackAbortableTasks)),
3627
+ (request = row.inheritedHoistables),
3628
+ null !== request &&
3629
+ hoistHoistables(fallbackAbortableTasks.contentState, request));
3623
3630
  return fallbackAbortableTasks;
3624
3631
  }
3625
3632
  function createRenderTask(
@@ -3788,20 +3795,56 @@ function fatalError(request, error) {
3788
3795
  : ((request.status = 13), (request.fatalError = error));
3789
3796
  }
3790
3797
  function finishSuspenseListRow(request, row) {
3791
- for (row = row.next; null !== row; ) {
3792
- var unblockedBoundaries = row.boundaries;
3798
+ unblockSuspenseListRow(request, row.next, row.hoistables);
3799
+ }
3800
+ function unblockSuspenseListRow(request, unblockedRow, inheritedHoistables) {
3801
+ for (; null !== unblockedRow; ) {
3802
+ null !== inheritedHoistables &&
3803
+ (hoistHoistables(unblockedRow.hoistables, inheritedHoistables),
3804
+ (unblockedRow.inheritedHoistables = inheritedHoistables));
3805
+ var unblockedBoundaries = unblockedRow.boundaries;
3793
3806
  if (null !== unblockedBoundaries) {
3794
- row.boundaries = null;
3795
- for (var i = 0; i < unblockedBoundaries.length; i++)
3796
- finishedTask(request, unblockedBoundaries[i], null, null);
3807
+ unblockedRow.boundaries = null;
3808
+ for (var i = 0; i < unblockedBoundaries.length; i++) {
3809
+ var unblockedBoundary = unblockedBoundaries[i];
3810
+ null !== inheritedHoistables &&
3811
+ hoistHoistables(unblockedBoundary.contentState, inheritedHoistables);
3812
+ finishedTask(request, unblockedBoundary, null, null);
3813
+ }
3814
+ }
3815
+ unblockedRow.pendingTasks--;
3816
+ if (0 < unblockedRow.pendingTasks) break;
3817
+ inheritedHoistables = unblockedRow.hoistables;
3818
+ unblockedRow = unblockedRow.next;
3819
+ }
3820
+ }
3821
+ function tryToResolveTogetherRow(request, togetherRow) {
3822
+ var boundaries = togetherRow.boundaries;
3823
+ if (null !== boundaries && togetherRow.pendingTasks === boundaries.length) {
3824
+ for (var allCompleteAndInlinable = !0, i = 0; i < boundaries.length; i++) {
3825
+ var rowBoundary = boundaries[i];
3826
+ if (
3827
+ 1 !== rowBoundary.pendingTasks ||
3828
+ rowBoundary.parentFlushed ||
3829
+ 500 < rowBoundary.byteSize
3830
+ ) {
3831
+ allCompleteAndInlinable = !1;
3832
+ break;
3833
+ }
3797
3834
  }
3798
- row.pendingTasks--;
3799
- if (0 < row.pendingTasks) break;
3800
- row = row.next;
3835
+ allCompleteAndInlinable &&
3836
+ unblockSuspenseListRow(request, togetherRow, togetherRow.hoistables);
3801
3837
  }
3802
3838
  }
3803
3839
  function createSuspenseListRow(previousRow) {
3804
- var newRow = { pendingTasks: 1, boundaries: null, next: null };
3840
+ var newRow = {
3841
+ pendingTasks: 1,
3842
+ boundaries: null,
3843
+ hoistables: createHoistableState(),
3844
+ inheritedHoistables: null,
3845
+ together: !1,
3846
+ next: null
3847
+ };
3805
3848
  null !== previousRow &&
3806
3849
  0 < previousRow.pendingTasks &&
3807
3850
  (newRow.pendingTasks++,
@@ -3810,21 +3853,22 @@ function createSuspenseListRow(previousRow) {
3810
3853
  return newRow;
3811
3854
  }
3812
3855
  function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
3813
- keyPath = task.keyPath;
3814
- var prevTreeContext = task.treeContext,
3815
- prevRow = task.row,
3816
- totalChildren = rows.length,
3817
- previousSuspenseListRow = null;
3856
+ var prevKeyPath = task.keyPath,
3857
+ prevTreeContext = task.treeContext,
3858
+ prevRow = task.row;
3859
+ task.keyPath = keyPath;
3860
+ keyPath = rows.length;
3861
+ var previousSuspenseListRow = null;
3818
3862
  if (null !== task.replay) {
3819
3863
  var resumeSlots = task.replay.slots;
3820
3864
  if (null !== resumeSlots && "object" === typeof resumeSlots)
3821
- for (var n = 0; n < totalChildren; n++) {
3822
- var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
3865
+ for (var n = 0; n < keyPath; n++) {
3866
+ var i = "backwards" !== revealOrder ? n : keyPath - 1 - n,
3823
3867
  node = rows[i];
3824
3868
  task.row = previousSuspenseListRow = createSuspenseListRow(
3825
3869
  previousSuspenseListRow
3826
3870
  );
3827
- task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
3871
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
3828
3872
  var resumeSegmentID = resumeSlots[i];
3829
3873
  "number" === typeof resumeSegmentID
3830
3874
  ? (resumeNode(request, task, resumeSegmentID, node, i),
@@ -3834,30 +3878,26 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
3834
3878
  finishSuspenseListRow(request, previousSuspenseListRow);
3835
3879
  }
3836
3880
  else
3837
- for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
3881
+ for (resumeSlots = 0; resumeSlots < keyPath; resumeSlots++)
3838
3882
  (n =
3839
3883
  "backwards" !== revealOrder
3840
3884
  ? resumeSlots
3841
- : totalChildren - 1 - resumeSlots),
3885
+ : keyPath - 1 - resumeSlots),
3842
3886
  (i = rows[n]),
3843
3887
  (task.row = previousSuspenseListRow =
3844
3888
  createSuspenseListRow(previousSuspenseListRow)),
3845
- (task.treeContext = pushTreeContext(
3846
- prevTreeContext,
3847
- totalChildren,
3848
- n
3849
- )),
3889
+ (task.treeContext = pushTreeContext(prevTreeContext, keyPath, n)),
3850
3890
  renderNode(request, task, i, n),
3851
3891
  0 === --previousSuspenseListRow.pendingTasks &&
3852
3892
  finishSuspenseListRow(request, previousSuspenseListRow);
3853
3893
  } else if ("backwards" !== revealOrder)
3854
- for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
3894
+ for (revealOrder = 0; revealOrder < keyPath; revealOrder++)
3855
3895
  (resumeSlots = rows[revealOrder]),
3856
3896
  (task.row = previousSuspenseListRow =
3857
3897
  createSuspenseListRow(previousSuspenseListRow)),
3858
3898
  (task.treeContext = pushTreeContext(
3859
3899
  prevTreeContext,
3860
- totalChildren,
3900
+ keyPath,
3861
3901
  revealOrder
3862
3902
  )),
3863
3903
  renderNode(request, task, resumeSlots, revealOrder),
@@ -3867,12 +3907,12 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
3867
3907
  revealOrder = task.blockedSegment;
3868
3908
  resumeSlots = revealOrder.children.length;
3869
3909
  n = revealOrder.chunks.length;
3870
- for (i = totalChildren - 1; 0 <= i; i--) {
3910
+ for (i = keyPath - 1; 0 <= i; i--) {
3871
3911
  node = rows[i];
3872
3912
  task.row = previousSuspenseListRow = createSuspenseListRow(
3873
3913
  previousSuspenseListRow
3874
3914
  );
3875
- task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
3915
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
3876
3916
  resumeSegmentID = createPendingSegment(
3877
3917
  request,
3878
3918
  n,
@@ -3904,7 +3944,7 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
3904
3944
  (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
3905
3945
  task.treeContext = prevTreeContext;
3906
3946
  task.row = prevRow;
3907
- task.keyPath = keyPath;
3947
+ task.keyPath = prevKeyPath;
3908
3948
  }
3909
3949
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
3910
3950
  var prevThenableState = task.thenableState;
@@ -3973,9 +4013,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
3973
4013
  var defaultProps = type.defaultProps;
3974
4014
  if (defaultProps) {
3975
4015
  newProps === props && (newProps = assign({}, newProps, props));
3976
- for (var propName$35 in defaultProps)
3977
- void 0 === newProps[propName$35] &&
3978
- (newProps[propName$35] = defaultProps[propName$35]);
4016
+ for (var propName$36 in defaultProps)
4017
+ void 0 === newProps[propName$36] &&
4018
+ (newProps[propName$36] = defaultProps[propName$36]);
3979
4019
  }
3980
4020
  var JSCompiler_inline_result = newProps;
3981
4021
  var context = emptyContextObject,
@@ -4142,13 +4182,13 @@ function renderElement(request, task, keyPath, type, props, ref) {
4142
4182
  textEmbedded
4143
4183
  );
4144
4184
  segment.lastPushedText = !1;
4145
- var prevContext$33 = task.formatContext,
4146
- prevKeyPath$34 = task.keyPath;
4185
+ var prevContext$34 = task.formatContext,
4186
+ prevKeyPath$35 = task.keyPath;
4147
4187
  task.keyPath = keyPath;
4148
4188
  if (
4149
4189
  3 ===
4150
4190
  (task.formatContext = getChildFormatContext(
4151
- prevContext$33,
4191
+ prevContext$34,
4152
4192
  type,
4153
4193
  props
4154
4194
  )).insertionMode
@@ -4182,8 +4222,8 @@ function renderElement(request, task, keyPath, type, props, ref) {
4182
4222
  pushComponentStack(preambleTask);
4183
4223
  request.pingedTasks.push(preambleTask);
4184
4224
  } else renderNode(request, task, JSCompiler_inline_result$jscomp$2, -1);
4185
- task.formatContext = prevContext$33;
4186
- task.keyPath = prevKeyPath$34;
4225
+ task.formatContext = prevContext$34;
4226
+ task.keyPath = prevKeyPath$35;
4187
4227
  a: {
4188
4228
  var target$jscomp$0 = segment.chunks,
4189
4229
  resumableState$jscomp$0 = request.resumableState;
@@ -4208,19 +4248,19 @@ function renderElement(request, task, keyPath, type, props, ref) {
4208
4248
  case "wbr":
4209
4249
  break a;
4210
4250
  case "body":
4211
- if (1 >= prevContext$33.insertionMode) {
4251
+ if (1 >= prevContext$34.insertionMode) {
4212
4252
  resumableState$jscomp$0.hasBody = !0;
4213
4253
  break a;
4214
4254
  }
4215
4255
  break;
4216
4256
  case "html":
4217
- if (0 === prevContext$33.insertionMode) {
4257
+ if (0 === prevContext$34.insertionMode) {
4218
4258
  resumableState$jscomp$0.hasHtml = !0;
4219
4259
  break a;
4220
4260
  }
4221
4261
  break;
4222
4262
  case "head":
4223
- if (1 >= prevContext$33.insertionMode) break a;
4263
+ if (1 >= prevContext$34.insertionMode) break a;
4224
4264
  }
4225
4265
  target$jscomp$0.push(endChunkForTag(type));
4226
4266
  }
@@ -4248,10 +4288,10 @@ function renderElement(request, task, keyPath, type, props, ref) {
4248
4288
  }
4249
4289
  } else if ("hidden" !== props.mode) {
4250
4290
  segment$jscomp$0.lastPushedText = !1;
4251
- var prevKeyPath$37 = task.keyPath;
4291
+ var prevKeyPath$38 = task.keyPath;
4252
4292
  task.keyPath = keyPath;
4253
4293
  renderNode(request, task, props.children, -1);
4254
- task.keyPath = prevKeyPath$37;
4294
+ task.keyPath = prevKeyPath$38;
4255
4295
  segment$jscomp$0.lastPushedText = !1;
4256
4296
  }
4257
4297
  return;
@@ -4330,10 +4370,27 @@ function renderElement(request, task, keyPath, type, props, ref) {
4330
4370
  }
4331
4371
  }
4332
4372
  }
4333
- var prevKeyPath$jscomp$3 = task.keyPath;
4334
- task.keyPath = keyPath;
4335
- renderNodeDestructive(request, task, children$jscomp$0, -1);
4336
- task.keyPath = prevKeyPath$jscomp$3;
4373
+ if ("together" === revealOrder) {
4374
+ var prevKeyPath$32 = task.keyPath,
4375
+ prevRow = task.row,
4376
+ newRow = (task.row = createSuspenseListRow(null));
4377
+ newRow.boundaries = [];
4378
+ newRow.together = !0;
4379
+ task.keyPath = keyPath;
4380
+ renderNodeDestructive(request, task, children$jscomp$0, -1);
4381
+ 0 === --newRow.pendingTasks &&
4382
+ finishSuspenseListRow(request, newRow);
4383
+ task.keyPath = prevKeyPath$32;
4384
+ task.row = prevRow;
4385
+ null !== prevRow &&
4386
+ 0 < newRow.pendingTasks &&
4387
+ (prevRow.pendingTasks++, (newRow.next = prevRow));
4388
+ } else {
4389
+ var prevKeyPath$jscomp$3 = task.keyPath;
4390
+ task.keyPath = keyPath;
4391
+ renderNodeDestructive(request, task, children$jscomp$0, -1);
4392
+ task.keyPath = prevKeyPath$jscomp$3;
4393
+ }
4337
4394
  }
4338
4395
  return;
4339
4396
  case REACT_VIEW_TRANSITION_TYPE:
@@ -4381,7 +4438,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4381
4438
  } else {
4382
4439
  var prevKeyPath$jscomp$5 = task.keyPath,
4383
4440
  prevContext$jscomp$1 = task.formatContext,
4384
- prevRow = task.row,
4441
+ prevRow$jscomp$0 = task.row,
4385
4442
  parentBoundary = task.blockedBoundary,
4386
4443
  parentPreamble = task.blockedPreamble,
4387
4444
  parentHoistableState = task.hoistableState,
@@ -4500,18 +4557,21 @@ function renderElement(request, task, keyPath, type, props, ref) {
4500
4557
  (renderNode(request, task, content, -1),
4501
4558
  (contentRootSegment.status = 1),
4502
4559
  queueCompletedSegment(newBoundary, contentRootSegment),
4503
- 0 === newBoundary.pendingTasks &&
4504
- 0 === newBoundary.status &&
4505
- ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4560
+ 0 === newBoundary.pendingTasks && 0 === newBoundary.status)
4506
4561
  ) {
4507
- null !== prevRow &&
4508
- 0 === --prevRow.pendingTasks &&
4509
- finishSuspenseListRow(request, prevRow);
4510
- 0 === request.pendingRootTasks &&
4511
- task.blockedPreamble &&
4512
- preparePreamble(request);
4513
- break a;
4514
- }
4562
+ if (((newBoundary.status = 1), !(500 < newBoundary.byteSize))) {
4563
+ null !== prevRow$jscomp$0 &&
4564
+ 0 === --prevRow$jscomp$0.pendingTasks &&
4565
+ finishSuspenseListRow(request, prevRow$jscomp$0);
4566
+ 0 === request.pendingRootTasks &&
4567
+ task.blockedPreamble &&
4568
+ preparePreamble(request);
4569
+ break a;
4570
+ }
4571
+ } else
4572
+ null !== prevRow$jscomp$0 &&
4573
+ prevRow$jscomp$0.together &&
4574
+ tryToResolveTogetherRow(request, prevRow$jscomp$0);
4515
4575
  } catch (thrownValue$20) {
4516
4576
  newBoundary.status = 4;
4517
4577
  if (12 === request.status) {
@@ -4537,7 +4597,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4537
4597
  (task.blockedSegment = parentSegment),
4538
4598
  (task.keyPath = prevKeyPath$jscomp$5),
4539
4599
  (task.formatContext = prevContext$jscomp$1),
4540
- (task.row = prevRow);
4600
+ (task.row = prevRow$jscomp$0);
4541
4601
  }
4542
4602
  var suspendedFallbackTask = createRenderTask(
4543
4603
  request,
@@ -5081,9 +5141,9 @@ function trackPostpone(request, trackedPostpones, task, segment) {
5081
5141
  addToReplayParent(segment, boundaryKeyPath[0], trackedPostpones);
5082
5142
  return;
5083
5143
  }
5084
- var boundaryNode$46 = trackedPostpones.workingMap.get(boundaryKeyPath);
5085
- void 0 === boundaryNode$46
5086
- ? ((boundaryNode$46 = [
5144
+ var boundaryNode$47 = trackedPostpones.workingMap.get(boundaryKeyPath);
5145
+ void 0 === boundaryNode$47
5146
+ ? ((boundaryNode$47 = [
5087
5147
  boundaryKeyPath[1],
5088
5148
  boundaryKeyPath[2],
5089
5149
  children,
@@ -5091,13 +5151,13 @@ function trackPostpone(request, trackedPostpones, task, segment) {
5091
5151
  fallbackReplayNode,
5092
5152
  boundary.rootSegmentID
5093
5153
  ]),
5094
- trackedPostpones.workingMap.set(boundaryKeyPath, boundaryNode$46),
5154
+ trackedPostpones.workingMap.set(boundaryKeyPath, boundaryNode$47),
5095
5155
  addToReplayParent(
5096
- boundaryNode$46,
5156
+ boundaryNode$47,
5097
5157
  boundaryKeyPath[0],
5098
5158
  trackedPostpones
5099
5159
  ))
5100
- : ((boundaryKeyPath = boundaryNode$46),
5160
+ : ((boundaryKeyPath = boundaryNode$47),
5101
5161
  (boundaryKeyPath[4] = fallbackReplayNode),
5102
5162
  (boundaryKeyPath[5] = boundary.rootSegmentID));
5103
5163
  }
@@ -5251,15 +5311,15 @@ function renderNode(request, task, node, childIndex) {
5251
5311
  chunkLength = segment.chunks.length;
5252
5312
  try {
5253
5313
  return renderNodeDestructive(request, task, node, childIndex);
5254
- } catch (thrownValue$58) {
5314
+ } catch (thrownValue$59) {
5255
5315
  if (
5256
5316
  (resetHooksState(),
5257
5317
  (segment.children.length = childrenLength),
5258
5318
  (segment.chunks.length = chunkLength),
5259
5319
  (childIndex =
5260
- thrownValue$58 === SuspenseException
5320
+ thrownValue$59 === SuspenseException
5261
5321
  ? getSuspendedThenable()
5262
- : thrownValue$58),
5322
+ : thrownValue$59),
5263
5323
  "object" === typeof childIndex && null !== childIndex)
5264
5324
  ) {
5265
5325
  if ("function" === typeof childIndex.then) {
@@ -5412,10 +5472,6 @@ function abortTask(task, request, error) {
5412
5472
  if (6 === segment.status) return;
5413
5473
  segment.status = 3;
5414
5474
  }
5415
- var row = task.row;
5416
- null !== row &&
5417
- 0 === --row.pendingTasks &&
5418
- finishSuspenseListRow(request, row);
5419
5475
  var errorInfo = getThrownInfo(task.componentStack);
5420
5476
  if (null === boundary) {
5421
5477
  if (13 !== request.status && 14 !== request.status) {
@@ -5428,7 +5484,7 @@ function abortTask(task, request, error) {
5428
5484
  null !== boundary && null !== segment
5429
5485
  ? (logPostpone(request, error.message, errorInfo),
5430
5486
  trackPostpone(request, boundary, task, segment),
5431
- finishedTask(request, null, row, segment))
5487
+ finishedTask(request, null, task.row, segment))
5432
5488
  : ((task = Error(
5433
5489
  "The render was aborted with postpone when the shell is incomplete. Reason: " +
5434
5490
  error.message
@@ -5439,7 +5495,7 @@ function abortTask(task, request, error) {
5439
5495
  ? ((boundary = request.trackedPostpones),
5440
5496
  logRecoverableError(request, error, errorInfo),
5441
5497
  trackPostpone(request, boundary, task, segment),
5442
- finishedTask(request, null, row, segment))
5498
+ finishedTask(request, null, task.row, segment))
5443
5499
  : (logRecoverableError(request, error, errorInfo),
5444
5500
  fatalError(request, error));
5445
5501
  return;
@@ -5465,22 +5521,21 @@ function abortTask(task, request, error) {
5465
5521
  0 === request.pendingRootTasks && completeShell(request);
5466
5522
  }
5467
5523
  } else {
5468
- boundary.pendingTasks--;
5469
- var trackedPostpones$61 = request.trackedPostpones;
5524
+ var trackedPostpones$62 = request.trackedPostpones;
5470
5525
  if (4 !== boundary.status) {
5471
- if (null !== trackedPostpones$61 && null !== segment)
5526
+ if (null !== trackedPostpones$62 && null !== segment)
5472
5527
  return (
5473
5528
  "object" === typeof error &&
5474
5529
  null !== error &&
5475
5530
  error.$$typeof === REACT_POSTPONE_TYPE
5476
5531
  ? logPostpone(request, error.message, errorInfo)
5477
5532
  : logRecoverableError(request, error, errorInfo),
5478
- trackPostpone(request, trackedPostpones$61, task, segment),
5533
+ trackPostpone(request, trackedPostpones$62, task, segment),
5479
5534
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
5480
5535
  return abortTask(fallbackTask, request, error);
5481
5536
  }),
5482
5537
  boundary.fallbackAbortableTasks.clear(),
5483
- finishedTask(request, boundary, row, segment)
5538
+ finishedTask(request, boundary, task.row, segment)
5484
5539
  );
5485
5540
  boundary.status = 4;
5486
5541
  if (
@@ -5491,7 +5546,7 @@ function abortTask(task, request, error) {
5491
5546
  logPostpone(request, error.message, errorInfo);
5492
5547
  if (null !== request.trackedPostpones && null !== segment) {
5493
5548
  trackPostpone(request, request.trackedPostpones, task, segment);
5494
- finishedTask(request, task.blockedBoundary, row, segment);
5549
+ finishedTask(request, task.blockedBoundary, task.row, segment);
5495
5550
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
5496
5551
  return abortTask(fallbackTask, request, error);
5497
5552
  });
@@ -5505,11 +5560,20 @@ function abortTask(task, request, error) {
5505
5560
  untrackBoundary(request, boundary);
5506
5561
  boundary.parentFlushed && request.clientRenderedBoundaries.push(boundary);
5507
5562
  }
5563
+ boundary.pendingTasks--;
5564
+ errorInfo = boundary.row;
5565
+ null !== errorInfo &&
5566
+ 0 === --errorInfo.pendingTasks &&
5567
+ finishSuspenseListRow(request, errorInfo);
5508
5568
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
5509
5569
  return abortTask(fallbackTask, request, error);
5510
5570
  });
5511
5571
  boundary.fallbackAbortableTasks.clear();
5512
5572
  }
5573
+ task = task.row;
5574
+ null !== task &&
5575
+ 0 === --task.pendingTasks &&
5576
+ finishSuspenseListRow(request, task);
5513
5577
  request.allPendingTasks--;
5514
5578
  0 === request.allPendingTasks && completeAll(request);
5515
5579
  }
@@ -5608,8 +5672,9 @@ function queueCompletedSegment(boundary, segment) {
5608
5672
  }
5609
5673
  function finishedTask(request, boundary, row, segment) {
5610
5674
  null !== row &&
5611
- 0 === --row.pendingTasks &&
5612
- finishSuspenseListRow(request, row);
5675
+ (0 === --row.pendingTasks
5676
+ ? finishSuspenseListRow(request, row)
5677
+ : row.together && tryToResolveTogetherRow(request, row));
5613
5678
  request.allPendingTasks--;
5614
5679
  if (null === boundary) {
5615
5680
  if (null !== segment && segment.parentFlushed) {
@@ -5633,13 +5698,15 @@ function finishedTask(request, boundary, row, segment) {
5633
5698
  boundary.parentFlushed &&
5634
5699
  request.completedBoundaries.push(boundary),
5635
5700
  1 === boundary.status &&
5636
- (500 < boundary.byteSize ||
5701
+ ((row = boundary.row),
5702
+ null !== row &&
5703
+ hoistHoistables(row.hoistables, boundary.contentState),
5704
+ 500 < boundary.byteSize ||
5637
5705
  (boundary.fallbackAbortableTasks.forEach(
5638
5706
  abortTaskSoft,
5639
5707
  request
5640
5708
  ),
5641
5709
  boundary.fallbackAbortableTasks.clear(),
5642
- (row = boundary.row),
5643
5710
  null !== row &&
5644
5711
  0 === --row.pendingTasks &&
5645
5712
  finishSuspenseListRow(request, row)),
@@ -5647,13 +5714,17 @@ function finishedTask(request, boundary, row, segment) {
5647
5714
  null === request.trackedPostpones &&
5648
5715
  null !== boundary.contentPreamble &&
5649
5716
  preparePreamble(request)))
5650
- : null !== segment &&
5651
- segment.parentFlushed &&
5652
- 1 === segment.status &&
5653
- (queueCompletedSegment(boundary, segment),
5654
- 1 === boundary.completedSegments.length &&
5655
- boundary.parentFlushed &&
5656
- request.partialBoundaries.push(boundary)));
5717
+ : (null !== segment &&
5718
+ segment.parentFlushed &&
5719
+ 1 === segment.status &&
5720
+ (queueCompletedSegment(boundary, segment),
5721
+ 1 === boundary.completedSegments.length &&
5722
+ boundary.parentFlushed &&
5723
+ request.partialBoundaries.push(boundary)),
5724
+ (boundary = boundary.row),
5725
+ null !== boundary &&
5726
+ boundary.together &&
5727
+ tryToResolveTogetherRow(request, boundary)));
5657
5728
  0 === request.allPendingTasks && completeAll(request);
5658
5729
  }
5659
5730
  function performWork(request$jscomp$1) {
@@ -5805,13 +5876,13 @@ function performWork(request$jscomp$1) {
5805
5876
  null !== request.trackedPostpones &&
5806
5877
  x$jscomp$0.$$typeof === REACT_POSTPONE_TYPE
5807
5878
  ) {
5808
- var trackedPostpones$65 = request.trackedPostpones;
5879
+ var trackedPostpones$67 = request.trackedPostpones;
5809
5880
  task.abortSet.delete(task);
5810
5881
  var postponeInfo = getThrownInfo(task.componentStack);
5811
5882
  logPostpone(request, x$jscomp$0.message, postponeInfo);
5812
5883
  trackPostpone(
5813
5884
  request,
5814
- trackedPostpones$65,
5885
+ trackedPostpones$67,
5815
5886
  task,
5816
5887
  segment$jscomp$0
5817
5888
  );
@@ -5847,19 +5918,22 @@ function performWork(request$jscomp$1) {
5847
5918
  x$jscomp$0,
5848
5919
  errorInfo$jscomp$0
5849
5920
  ));
5850
- null === boundary
5851
- ? fatalError(request, x$jscomp$0)
5852
- : (boundary.pendingTasks--,
5853
- 4 !== boundary.status &&
5854
- ((boundary.status = 4),
5855
- (boundary.errorDigest = request$jscomp$0),
5856
- untrackBoundary(request, boundary),
5857
- boundary.parentFlushed &&
5858
- request.clientRenderedBoundaries.push(boundary),
5859
- 0 === request.pendingRootTasks &&
5860
- null === request.trackedPostpones &&
5861
- null !== boundary.contentPreamble &&
5862
- preparePreamble(request)));
5921
+ if (null === boundary) fatalError(request, x$jscomp$0);
5922
+ else if ((boundary.pendingTasks--, 4 !== boundary.status)) {
5923
+ boundary.status = 4;
5924
+ boundary.errorDigest = request$jscomp$0;
5925
+ untrackBoundary(request, boundary);
5926
+ var boundaryRow = boundary.row;
5927
+ null !== boundaryRow &&
5928
+ 0 === --boundaryRow.pendingTasks &&
5929
+ finishSuspenseListRow(request, boundaryRow);
5930
+ boundary.parentFlushed &&
5931
+ request.clientRenderedBoundaries.push(boundary);
5932
+ 0 === request.pendingRootTasks &&
5933
+ null === request.trackedPostpones &&
5934
+ null !== boundary.contentPreamble &&
5935
+ preparePreamble(request);
5936
+ }
5863
5937
  0 === request.allPendingTasks && completeAll(request);
5864
5938
  }
5865
5939
  } finally {
@@ -6024,13 +6098,7 @@ function flushSegment(request, destination, segment, hoistableState) {
6024
6098
  request.renderState,
6025
6099
  boundary.rootSegmentID
6026
6100
  ),
6027
- hoistableState &&
6028
- ((boundary = boundary.fallbackState),
6029
- boundary.styles.forEach(hoistStyleQueueDependency, hoistableState),
6030
- boundary.stylesheets.forEach(
6031
- hoistStylesheetDependency,
6032
- hoistableState
6033
- )),
6101
+ hoistableState && hoistHoistables(hoistableState, boundary.fallbackState),
6034
6102
  flushSubtree(request, destination, segment, hoistableState),
6035
6103
  destination.push("\x3c!--/$--\x3e")
6036
6104
  );
@@ -6050,10 +6118,7 @@ function flushSegment(request, destination, segment, hoistableState) {
6050
6118
  destination.push("\x3c!--/$--\x3e")
6051
6119
  );
6052
6120
  flushedByteSize += boundary.byteSize;
6053
- hoistableState &&
6054
- ((segment = boundary.contentState),
6055
- segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
6056
- segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
6121
+ hoistableState && hoistHoistables(hoistableState, boundary.contentState);
6057
6122
  segment = boundary.row;
6058
6123
  null !== segment &&
6059
6124
  500 < boundary.byteSize &&
@@ -6400,12 +6465,12 @@ function flushCompletedQueues(request, destination) {
6400
6465
  completedBoundaries.splice(0, i);
6401
6466
  var partialBoundaries = request.partialBoundaries;
6402
6467
  for (i = 0; i < partialBoundaries.length; i++) {
6403
- var boundary$69 = partialBoundaries[i];
6468
+ var boundary$71 = partialBoundaries[i];
6404
6469
  a: {
6405
6470
  clientRenderedBoundaries = request;
6406
6471
  boundary = destination;
6407
- flushedByteSize = boundary$69.byteSize;
6408
- var completedSegments = boundary$69.completedSegments;
6472
+ flushedByteSize = boundary$71.byteSize;
6473
+ var completedSegments = boundary$71.completedSegments;
6409
6474
  for (
6410
6475
  JSCompiler_inline_result = 0;
6411
6476
  JSCompiler_inline_result < completedSegments.length;
@@ -6415,7 +6480,7 @@ function flushCompletedQueues(request, destination) {
6415
6480
  !flushPartiallyCompletedSegment(
6416
6481
  clientRenderedBoundaries,
6417
6482
  boundary,
6418
- boundary$69,
6483
+ boundary$71,
6419
6484
  completedSegments[JSCompiler_inline_result]
6420
6485
  )
6421
6486
  ) {
@@ -6425,9 +6490,20 @@ function flushCompletedQueues(request, destination) {
6425
6490
  break a;
6426
6491
  }
6427
6492
  completedSegments.splice(0, JSCompiler_inline_result);
6493
+ var row = boundary$71.row;
6494
+ null !== row &&
6495
+ row.together &&
6496
+ 1 === boundary$71.pendingTasks &&
6497
+ (1 === row.pendingTasks
6498
+ ? unblockSuspenseListRow(
6499
+ clientRenderedBoundaries,
6500
+ row,
6501
+ row.hoistables
6502
+ )
6503
+ : row.pendingTasks--);
6428
6504
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6429
6505
  boundary,
6430
- boundary$69.contentState,
6506
+ boundary$71.contentState,
6431
6507
  clientRenderedBoundaries.renderState
6432
6508
  );
6433
6509
  }
@@ -6498,8 +6574,8 @@ function abort(request, reason) {
6498
6574
  }
6499
6575
  null !== request.destination &&
6500
6576
  flushCompletedQueues(request, request.destination);
6501
- } catch (error$71) {
6502
- logRecoverableError(request, error$71, {}), fatalError(request, error$71);
6577
+ } catch (error$73) {
6578
+ logRecoverableError(request, error$73, {}), fatalError(request, error$73);
6503
6579
  }
6504
6580
  }
6505
6581
  function addToReplayParent(node, parentKeyPath, trackedPostpones) {
@@ -6573,4 +6649,4 @@ exports.experimental_renderToHTML = function (children, options) {
6573
6649
  });
6574
6650
  });
6575
6651
  };
6576
- exports.version = "19.2.0-experimental-c4676e72-20250520";
6652
+ exports.version = "19.2.0-experimental-23884812-20250520";