react-dom 19.2.0-canary-c4676e72-20250520 → 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.
@@ -321,9 +321,6 @@ function createResumableState(
321
321
  moduleScriptResources: {}
322
322
  };
323
323
  }
324
- function createPreambleState() {
325
- return { htmlChunks: null, headChunks: null, bodyChunks: null };
326
- }
327
324
  function createFormatContext(
328
325
  insertionMode,
329
326
  selectedValue,
@@ -2721,6 +2718,10 @@ function hoistStyleQueueDependency(styleQueue) {
2721
2718
  function hoistStylesheetDependency(stylesheet) {
2722
2719
  this.stylesheets.add(stylesheet);
2723
2720
  }
2721
+ function hoistHoistables(parentState, childState) {
2722
+ childState.styles.forEach(hoistStyleQueueDependency, parentState);
2723
+ childState.stylesheets.forEach(hoistStylesheetDependency, parentState);
2724
+ }
2724
2725
  function createRenderState(resumableState, generateStaticMarkup) {
2725
2726
  var idPrefix = resumableState.idPrefix,
2726
2727
  bootstrapChunks = [],
@@ -2736,17 +2737,16 @@ function createRenderState(resumableState, generateStaticMarkup) {
2736
2737
  "\x3c/script>"
2737
2738
  ));
2738
2739
  bootstrapScriptContent = idPrefix + "P:";
2739
- var JSCompiler_object_inline_segmentPrefix_1633 = idPrefix + "S:";
2740
+ var JSCompiler_object_inline_segmentPrefix_1636 = idPrefix + "S:";
2740
2741
  idPrefix += "B:";
2741
- var JSCompiler_object_inline_preamble_1636 = createPreambleState(),
2742
- JSCompiler_object_inline_preconnects_1646 = new Set(),
2743
- JSCompiler_object_inline_fontPreloads_1647 = new Set(),
2744
- JSCompiler_object_inline_highImagePreloads_1648 = new Set(),
2745
- JSCompiler_object_inline_styles_1649 = new Map(),
2746
- JSCompiler_object_inline_bootstrapScripts_1650 = new Set(),
2747
- JSCompiler_object_inline_scripts_1651 = new Set(),
2748
- JSCompiler_object_inline_bulkPreloads_1652 = new Set(),
2749
- JSCompiler_object_inline_preloads_1653 = {
2742
+ var JSCompiler_object_inline_preconnects_1649 = new Set(),
2743
+ JSCompiler_object_inline_fontPreloads_1650 = new Set(),
2744
+ JSCompiler_object_inline_highImagePreloads_1651 = new Set(),
2745
+ JSCompiler_object_inline_styles_1652 = new Map(),
2746
+ JSCompiler_object_inline_bootstrapScripts_1653 = new Set(),
2747
+ JSCompiler_object_inline_scripts_1654 = new Set(),
2748
+ JSCompiler_object_inline_bulkPreloads_1655 = new Set(),
2749
+ JSCompiler_object_inline_preloads_1656 = {
2750
2750
  images: new Map(),
2751
2751
  stylesheets: new Map(),
2752
2752
  scripts: new Map(),
@@ -2783,7 +2783,7 @@ function createRenderState(resumableState, generateStaticMarkup) {
2783
2783
  scriptConfig.moduleScriptResources[href] = null;
2784
2784
  scriptConfig = [];
2785
2785
  pushLinkImpl(scriptConfig, props);
2786
- JSCompiler_object_inline_bootstrapScripts_1650.add(scriptConfig);
2786
+ JSCompiler_object_inline_bootstrapScripts_1653.add(scriptConfig);
2787
2787
  bootstrapChunks.push('<script src="', escapeTextForBrowser(src), '"');
2788
2788
  "string" === typeof integrity &&
2789
2789
  bootstrapChunks.push(
@@ -2830,7 +2830,7 @@ function createRenderState(resumableState, generateStaticMarkup) {
2830
2830
  (props.moduleScriptResources[scriptConfig] = null),
2831
2831
  (props = []),
2832
2832
  pushLinkImpl(props, integrity),
2833
- JSCompiler_object_inline_bootstrapScripts_1650.add(props),
2833
+ JSCompiler_object_inline_bootstrapScripts_1653.add(props),
2834
2834
  bootstrapChunks.push(
2835
2835
  '<script type="module" src="',
2836
2836
  escapeTextForBrowser(i),
@@ -2852,10 +2852,10 @@ function createRenderState(resumableState, generateStaticMarkup) {
2852
2852
  bootstrapChunks.push(' async="">\x3c/script>');
2853
2853
  return {
2854
2854
  placeholderPrefix: bootstrapScriptContent,
2855
- segmentPrefix: JSCompiler_object_inline_segmentPrefix_1633,
2855
+ segmentPrefix: JSCompiler_object_inline_segmentPrefix_1636,
2856
2856
  boundaryPrefix: idPrefix,
2857
2857
  startInlineScript: "<script",
2858
- preamble: JSCompiler_object_inline_preamble_1636,
2858
+ preamble: { htmlChunks: null, headChunks: null, bodyChunks: null },
2859
2859
  externalRuntimeScript: null,
2860
2860
  bootstrapChunks: bootstrapChunks,
2861
2861
  importMapChunks: [],
@@ -2871,14 +2871,14 @@ function createRenderState(resumableState, generateStaticMarkup) {
2871
2871
  charsetChunks: [],
2872
2872
  viewportChunks: [],
2873
2873
  hoistableChunks: [],
2874
- preconnects: JSCompiler_object_inline_preconnects_1646,
2875
- fontPreloads: JSCompiler_object_inline_fontPreloads_1647,
2876
- highImagePreloads: JSCompiler_object_inline_highImagePreloads_1648,
2877
- styles: JSCompiler_object_inline_styles_1649,
2878
- bootstrapScripts: JSCompiler_object_inline_bootstrapScripts_1650,
2879
- scripts: JSCompiler_object_inline_scripts_1651,
2880
- bulkPreloads: JSCompiler_object_inline_bulkPreloads_1652,
2881
- preloads: JSCompiler_object_inline_preloads_1653,
2874
+ preconnects: JSCompiler_object_inline_preconnects_1649,
2875
+ fontPreloads: JSCompiler_object_inline_fontPreloads_1650,
2876
+ highImagePreloads: JSCompiler_object_inline_highImagePreloads_1651,
2877
+ styles: JSCompiler_object_inline_styles_1652,
2878
+ bootstrapScripts: JSCompiler_object_inline_bootstrapScripts_1653,
2879
+ scripts: JSCompiler_object_inline_scripts_1654,
2880
+ bulkPreloads: JSCompiler_object_inline_bulkPreloads_1655,
2881
+ preloads: JSCompiler_object_inline_preloads_1656,
2882
2882
  stylesToHoist: !1,
2883
2883
  generateStaticMarkup: generateStaticMarkup
2884
2884
  };
@@ -3783,11 +3783,14 @@ function createSuspenseBoundary(
3783
3783
  };
3784
3784
  null !== row &&
3785
3785
  (row.pendingTasks++,
3786
- (row = row.boundaries),
3787
- null !== row &&
3786
+ (contentPreamble = row.boundaries),
3787
+ null !== contentPreamble &&
3788
3788
  (request.allPendingTasks++,
3789
3789
  fallbackAbortableTasks.pendingTasks++,
3790
- row.push(fallbackAbortableTasks)));
3790
+ contentPreamble.push(fallbackAbortableTasks)),
3791
+ (request = row.inheritedHoistables),
3792
+ null !== request &&
3793
+ hoistHoistables(fallbackAbortableTasks.contentState, request));
3791
3794
  return fallbackAbortableTasks;
3792
3795
  }
3793
3796
  function createRenderTask(
@@ -3952,20 +3955,56 @@ function fatalError(request, error) {
3952
3955
  : ((request.status = 13), (request.fatalError = error));
3953
3956
  }
3954
3957
  function finishSuspenseListRow(request, row) {
3955
- for (row = row.next; null !== row; ) {
3956
- var unblockedBoundaries = row.boundaries;
3958
+ unblockSuspenseListRow(request, row.next, row.hoistables);
3959
+ }
3960
+ function unblockSuspenseListRow(request, unblockedRow, inheritedHoistables) {
3961
+ for (; null !== unblockedRow; ) {
3962
+ null !== inheritedHoistables &&
3963
+ (hoistHoistables(unblockedRow.hoistables, inheritedHoistables),
3964
+ (unblockedRow.inheritedHoistables = inheritedHoistables));
3965
+ var unblockedBoundaries = unblockedRow.boundaries;
3957
3966
  if (null !== unblockedBoundaries) {
3958
- row.boundaries = null;
3959
- for (var i = 0; i < unblockedBoundaries.length; i++)
3960
- finishedTask(request, unblockedBoundaries[i], null, null);
3967
+ unblockedRow.boundaries = null;
3968
+ for (var i = 0; i < unblockedBoundaries.length; i++) {
3969
+ var unblockedBoundary = unblockedBoundaries[i];
3970
+ null !== inheritedHoistables &&
3971
+ hoistHoistables(unblockedBoundary.contentState, inheritedHoistables);
3972
+ finishedTask(request, unblockedBoundary, null, null);
3973
+ }
3974
+ }
3975
+ unblockedRow.pendingTasks--;
3976
+ if (0 < unblockedRow.pendingTasks) break;
3977
+ inheritedHoistables = unblockedRow.hoistables;
3978
+ unblockedRow = unblockedRow.next;
3979
+ }
3980
+ }
3981
+ function tryToResolveTogetherRow(request, togetherRow) {
3982
+ var boundaries = togetherRow.boundaries;
3983
+ if (null !== boundaries && togetherRow.pendingTasks === boundaries.length) {
3984
+ for (var allCompleteAndInlinable = !0, i = 0; i < boundaries.length; i++) {
3985
+ var rowBoundary = boundaries[i];
3986
+ if (
3987
+ 1 !== rowBoundary.pendingTasks ||
3988
+ rowBoundary.parentFlushed ||
3989
+ 500 < rowBoundary.byteSize
3990
+ ) {
3991
+ allCompleteAndInlinable = !1;
3992
+ break;
3993
+ }
3961
3994
  }
3962
- row.pendingTasks--;
3963
- if (0 < row.pendingTasks) break;
3964
- row = row.next;
3995
+ allCompleteAndInlinable &&
3996
+ unblockSuspenseListRow(request, togetherRow, togetherRow.hoistables);
3965
3997
  }
3966
3998
  }
3967
3999
  function createSuspenseListRow(previousRow) {
3968
- var newRow = { pendingTasks: 1, boundaries: null, next: null };
4000
+ var newRow = {
4001
+ pendingTasks: 1,
4002
+ boundaries: null,
4003
+ hoistables: createHoistableState(),
4004
+ inheritedHoistables: null,
4005
+ together: !1,
4006
+ next: null
4007
+ };
3969
4008
  null !== previousRow &&
3970
4009
  0 < previousRow.pendingTasks &&
3971
4010
  (newRow.pendingTasks++,
@@ -3974,21 +4013,22 @@ function createSuspenseListRow(previousRow) {
3974
4013
  return newRow;
3975
4014
  }
3976
4015
  function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
3977
- keyPath = task.keyPath;
3978
- var prevTreeContext = task.treeContext,
3979
- prevRow = task.row,
3980
- totalChildren = rows.length,
3981
- previousSuspenseListRow = null;
4016
+ var prevKeyPath = task.keyPath,
4017
+ prevTreeContext = task.treeContext,
4018
+ prevRow = task.row;
4019
+ task.keyPath = keyPath;
4020
+ keyPath = rows.length;
4021
+ var previousSuspenseListRow = null;
3982
4022
  if (null !== task.replay) {
3983
4023
  var resumeSlots = task.replay.slots;
3984
4024
  if (null !== resumeSlots && "object" === typeof resumeSlots)
3985
- for (var n = 0; n < totalChildren; n++) {
3986
- var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
4025
+ for (var n = 0; n < keyPath; n++) {
4026
+ var i = "backwards" !== revealOrder ? n : keyPath - 1 - n,
3987
4027
  node = rows[i];
3988
4028
  task.row = previousSuspenseListRow = createSuspenseListRow(
3989
4029
  previousSuspenseListRow
3990
4030
  );
3991
- task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4031
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
3992
4032
  var resumeSegmentID = resumeSlots[i];
3993
4033
  "number" === typeof resumeSegmentID
3994
4034
  ? (resumeNode(request, task, resumeSegmentID, node, i),
@@ -3998,30 +4038,26 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
3998
4038
  finishSuspenseListRow(request, previousSuspenseListRow);
3999
4039
  }
4000
4040
  else
4001
- for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
4041
+ for (resumeSlots = 0; resumeSlots < keyPath; resumeSlots++)
4002
4042
  (n =
4003
4043
  "backwards" !== revealOrder
4004
4044
  ? resumeSlots
4005
- : totalChildren - 1 - resumeSlots),
4045
+ : keyPath - 1 - resumeSlots),
4006
4046
  (i = rows[n]),
4007
4047
  (task.row = previousSuspenseListRow =
4008
4048
  createSuspenseListRow(previousSuspenseListRow)),
4009
- (task.treeContext = pushTreeContext(
4010
- prevTreeContext,
4011
- totalChildren,
4012
- n
4013
- )),
4049
+ (task.treeContext = pushTreeContext(prevTreeContext, keyPath, n)),
4014
4050
  renderNode(request, task, i, n),
4015
4051
  0 === --previousSuspenseListRow.pendingTasks &&
4016
4052
  finishSuspenseListRow(request, previousSuspenseListRow);
4017
4053
  } else if ("backwards" !== revealOrder)
4018
- for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
4054
+ for (revealOrder = 0; revealOrder < keyPath; revealOrder++)
4019
4055
  (resumeSlots = rows[revealOrder]),
4020
4056
  (task.row = previousSuspenseListRow =
4021
4057
  createSuspenseListRow(previousSuspenseListRow)),
4022
4058
  (task.treeContext = pushTreeContext(
4023
4059
  prevTreeContext,
4024
- totalChildren,
4060
+ keyPath,
4025
4061
  revealOrder
4026
4062
  )),
4027
4063
  renderNode(request, task, resumeSlots, revealOrder),
@@ -4031,12 +4067,12 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4031
4067
  revealOrder = task.blockedSegment;
4032
4068
  resumeSlots = revealOrder.children.length;
4033
4069
  n = revealOrder.chunks.length;
4034
- for (i = totalChildren - 1; 0 <= i; i--) {
4070
+ for (i = keyPath - 1; 0 <= i; i--) {
4035
4071
  node = rows[i];
4036
4072
  task.row = previousSuspenseListRow = createSuspenseListRow(
4037
4073
  previousSuspenseListRow
4038
4074
  );
4039
- task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4075
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
4040
4076
  resumeSegmentID = createPendingSegment(
4041
4077
  request,
4042
4078
  n,
@@ -4074,7 +4110,7 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4074
4110
  (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
4075
4111
  task.treeContext = prevTreeContext;
4076
4112
  task.row = prevRow;
4077
- task.keyPath = keyPath;
4113
+ task.keyPath = prevKeyPath;
4078
4114
  }
4079
4115
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
4080
4116
  var prevThenableState = task.thenableState;
@@ -4143,9 +4179,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
4143
4179
  var defaultProps = type.defaultProps;
4144
4180
  if (defaultProps) {
4145
4181
  newProps === props && (newProps = assign({}, newProps, props));
4146
- for (var propName$42 in defaultProps)
4147
- void 0 === newProps[propName$42] &&
4148
- (newProps[propName$42] = defaultProps[propName$42]);
4182
+ for (var propName$43 in defaultProps)
4183
+ void 0 === newProps[propName$43] &&
4184
+ (newProps[propName$43] = defaultProps[propName$43]);
4149
4185
  }
4150
4186
  props = newProps;
4151
4187
  newProps = emptyContextObject;
@@ -4205,16 +4241,16 @@ function renderElement(request, task, keyPath, type, props, ref) {
4205
4241
  defaultProps = ref ? type[0] : newProps.state;
4206
4242
  initialState = !0;
4207
4243
  for (ref = ref ? 1 : 0; ref < type.length; ref++)
4208
- (propName$42 = type[ref]),
4209
- (propName$42 =
4210
- "function" === typeof propName$42
4211
- ? propName$42.call(newProps, defaultProps, props, void 0)
4212
- : propName$42),
4213
- null != propName$42 &&
4244
+ (propName$43 = type[ref]),
4245
+ (propName$43 =
4246
+ "function" === typeof propName$43
4247
+ ? propName$43.call(newProps, defaultProps, props, void 0)
4248
+ : propName$43),
4249
+ null != propName$43 &&
4214
4250
  (initialState
4215
4251
  ? ((initialState = !1),
4216
- (defaultProps = assign({}, defaultProps, propName$42)))
4217
- : assign(defaultProps, propName$42));
4252
+ (defaultProps = assign({}, defaultProps, propName$43)))
4253
+ : assign(defaultProps, propName$43));
4218
4254
  newProps.state = defaultProps;
4219
4255
  }
4220
4256
  else defaultProps.queue = null;
@@ -4390,10 +4426,25 @@ function renderElement(request, task, keyPath, type, props, ref) {
4390
4426
  break a;
4391
4427
  }
4392
4428
  }
4393
- props = task.keyPath;
4394
- task.keyPath = keyPath;
4395
- renderNodeDestructive(request, task, type, -1);
4396
- task.keyPath = props;
4429
+ "together" === props
4430
+ ? ((props = task.keyPath),
4431
+ (newProps = task.row),
4432
+ (defaultProps = task.row = createSuspenseListRow(null)),
4433
+ (defaultProps.boundaries = []),
4434
+ (defaultProps.together = !0),
4435
+ (task.keyPath = keyPath),
4436
+ renderNodeDestructive(request, task, type, -1),
4437
+ 0 === --defaultProps.pendingTasks &&
4438
+ finishSuspenseListRow(request, defaultProps),
4439
+ (task.keyPath = props),
4440
+ (task.row = newProps),
4441
+ null !== newProps &&
4442
+ 0 < defaultProps.pendingTasks &&
4443
+ (newProps.pendingTasks++, (defaultProps.next = newProps)))
4444
+ : ((props = task.keyPath),
4445
+ (task.keyPath = keyPath),
4446
+ renderNodeDestructive(request, task, type, -1),
4447
+ (task.keyPath = props));
4397
4448
  }
4398
4449
  return;
4399
4450
  case REACT_VIEW_TRANSITION_TYPE:
@@ -4423,28 +4474,19 @@ function renderElement(request, task, keyPath, type, props, ref) {
4423
4474
  ref = task.formatContext;
4424
4475
  var prevRow = task.row,
4425
4476
  parentBoundary = task.blockedBoundary;
4426
- propName$42 = task.blockedPreamble;
4477
+ propName$43 = task.blockedPreamble;
4427
4478
  var parentHoistableState = task.hoistableState;
4428
4479
  propName = task.blockedSegment;
4429
4480
  var fallback = props.fallback;
4430
4481
  props = props.children;
4431
4482
  var fallbackAbortSet = new Set();
4432
- var newBoundary =
4433
- 2 > task.formatContext.insertionMode
4434
- ? createSuspenseBoundary(
4435
- request,
4436
- task.row,
4437
- fallbackAbortSet,
4438
- createPreambleState(),
4439
- createPreambleState()
4440
- )
4441
- : createSuspenseBoundary(
4442
- request,
4443
- task.row,
4444
- fallbackAbortSet,
4445
- null,
4446
- null
4447
- );
4483
+ var newBoundary = createSuspenseBoundary(
4484
+ request,
4485
+ task.row,
4486
+ fallbackAbortSet,
4487
+ null,
4488
+ null
4489
+ );
4448
4490
  null !== request.trackedPostpones &&
4449
4491
  (newBoundary.trackedContentKeyPath = keyPath);
4450
4492
  var boundarySegment = createPendingSegment(
@@ -4495,7 +4537,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4495
4537
  );
4496
4538
  } finally {
4497
4539
  (task.blockedSegment = propName),
4498
- (task.blockedPreamble = propName$42),
4540
+ (task.blockedPreamble = propName$43),
4499
4541
  (task.keyPath = type),
4500
4542
  (task.formatContext = ref);
4501
4543
  }
@@ -4544,18 +4586,21 @@ function renderElement(request, task, keyPath, type, props, ref) {
4544
4586
  ),
4545
4587
  (contentRootSegment.status = 1),
4546
4588
  queueCompletedSegment(newBoundary, contentRootSegment),
4547
- 0 === newBoundary.pendingTasks &&
4548
- 0 === newBoundary.status &&
4549
- ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4589
+ 0 === newBoundary.pendingTasks && 0 === newBoundary.status)
4550
4590
  ) {
4591
+ if (((newBoundary.status = 1), !(500 < newBoundary.byteSize))) {
4592
+ null !== prevRow &&
4593
+ 0 === --prevRow.pendingTasks &&
4594
+ finishSuspenseListRow(request, prevRow);
4595
+ 0 === request.pendingRootTasks &&
4596
+ task.blockedPreamble &&
4597
+ preparePreamble(request);
4598
+ break a;
4599
+ }
4600
+ } else
4551
4601
  null !== prevRow &&
4552
- 0 === --prevRow.pendingTasks &&
4553
- finishSuspenseListRow(request, prevRow);
4554
- 0 === request.pendingRootTasks &&
4555
- task.blockedPreamble &&
4556
- preparePreamble(request);
4557
- break a;
4558
- }
4602
+ prevRow.together &&
4603
+ tryToResolveTogetherRow(request, prevRow);
4559
4604
  } catch (thrownValue$30) {
4560
4605
  (newBoundary.status = 4),
4561
4606
  12 === request.status
@@ -4573,7 +4618,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4573
4618
  untrackBoundary(request, newBoundary);
4574
4619
  } finally {
4575
4620
  (task.blockedBoundary = parentBoundary),
4576
- (task.blockedPreamble = propName$42),
4621
+ (task.blockedPreamble = propName$43),
4577
4622
  (task.hoistableState = parentHoistableState),
4578
4623
  (task.blockedSegment = propName),
4579
4624
  (task.keyPath = type),
@@ -4822,22 +4867,13 @@ function retryNode(request, task) {
4822
4867
  content = props.children,
4823
4868
  fallback = props.fallback,
4824
4869
  fallbackAbortSet = new Set();
4825
- props =
4826
- 2 > task.formatContext.insertionMode
4827
- ? createSuspenseBoundary(
4828
- request,
4829
- task.row,
4830
- fallbackAbortSet,
4831
- createPreambleState(),
4832
- createPreambleState()
4833
- )
4834
- : createSuspenseBoundary(
4835
- request,
4836
- task.row,
4837
- fallbackAbortSet,
4838
- null,
4839
- null
4840
- );
4870
+ props = createSuspenseBoundary(
4871
+ request,
4872
+ task.row,
4873
+ fallbackAbortSet,
4874
+ null,
4875
+ null
4876
+ );
4841
4877
  props.parentFlushed = !0;
4842
4878
  props.rootSegmentID = type;
4843
4879
  task.blockedBoundary = props;
@@ -5173,15 +5209,15 @@ function renderNode(request, task, node, childIndex) {
5173
5209
  chunkLength = segment.chunks.length;
5174
5210
  try {
5175
5211
  return renderNodeDestructive(request, task, node, childIndex);
5176
- } catch (thrownValue$58) {
5212
+ } catch (thrownValue$59) {
5177
5213
  if (
5178
5214
  (resetHooksState(),
5179
5215
  (segment.children.length = childrenLength),
5180
5216
  (segment.chunks.length = chunkLength),
5181
5217
  (node =
5182
- thrownValue$58 === SuspenseException
5218
+ thrownValue$59 === SuspenseException
5183
5219
  ? getSuspendedThenable()
5184
- : thrownValue$58),
5220
+ : thrownValue$59),
5185
5221
  "object" === typeof node && null !== node)
5186
5222
  ) {
5187
5223
  if ("function" === typeof node.then) {
@@ -5283,10 +5319,6 @@ function abortTask(task, request, error) {
5283
5319
  if (6 === segment.status) return;
5284
5320
  segment.status = 3;
5285
5321
  }
5286
- segment = task.row;
5287
- null !== segment &&
5288
- 0 === --segment.pendingTasks &&
5289
- finishSuspenseListRow(request, segment);
5290
5322
  segment = getThrownInfo(task.componentStack);
5291
5323
  if (null === boundary) {
5292
5324
  if (13 !== request.status && 14 !== request.status) {
@@ -5299,32 +5331,40 @@ function abortTask(task, request, error) {
5299
5331
  boundary.pendingTasks--;
5300
5332
  0 === boundary.pendingTasks &&
5301
5333
  0 < boundary.nodes.length &&
5302
- ((task = logRecoverableError(request, error, segment)),
5334
+ ((segment = logRecoverableError(request, error, segment)),
5303
5335
  abortRemainingReplayNodes(
5304
5336
  request,
5305
5337
  null,
5306
5338
  boundary.nodes,
5307
5339
  boundary.slots,
5308
5340
  error,
5309
- task
5341
+ segment
5310
5342
  ));
5311
5343
  request.pendingRootTasks--;
5312
5344
  0 === request.pendingRootTasks && completeShell(request);
5313
5345
  }
5314
5346
  } else
5315
- boundary.pendingTasks--,
5316
- 4 !== boundary.status &&
5317
- ((boundary.status = 4),
5318
- (task = logRecoverableError(request, error, segment)),
5319
- (boundary.status = 4),
5320
- (boundary.errorDigest = task),
5321
- untrackBoundary(request, boundary),
5322
- boundary.parentFlushed &&
5323
- request.clientRenderedBoundaries.push(boundary)),
5347
+ 4 !== boundary.status &&
5348
+ ((boundary.status = 4),
5349
+ (segment = logRecoverableError(request, error, segment)),
5350
+ (boundary.status = 4),
5351
+ (boundary.errorDigest = segment),
5352
+ untrackBoundary(request, boundary),
5353
+ boundary.parentFlushed &&
5354
+ request.clientRenderedBoundaries.push(boundary)),
5355
+ boundary.pendingTasks--,
5356
+ (segment = boundary.row),
5357
+ null !== segment &&
5358
+ 0 === --segment.pendingTasks &&
5359
+ finishSuspenseListRow(request, segment),
5324
5360
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
5325
5361
  return abortTask(fallbackTask, request, error);
5326
5362
  }),
5327
5363
  boundary.fallbackAbortableTasks.clear();
5364
+ task = task.row;
5365
+ null !== task &&
5366
+ 0 === --task.pendingTasks &&
5367
+ finishSuspenseListRow(request, task);
5328
5368
  request.allPendingTasks--;
5329
5369
  0 === request.allPendingTasks && completeAll(request);
5330
5370
  }
@@ -5423,8 +5463,9 @@ function queueCompletedSegment(boundary, segment) {
5423
5463
  }
5424
5464
  function finishedTask(request, boundary, row, segment) {
5425
5465
  null !== row &&
5426
- 0 === --row.pendingTasks &&
5427
- finishSuspenseListRow(request, row);
5466
+ (0 === --row.pendingTasks
5467
+ ? finishSuspenseListRow(request, row)
5468
+ : row.together && tryToResolveTogetherRow(request, row));
5428
5469
  request.allPendingTasks--;
5429
5470
  if (null === boundary) {
5430
5471
  if (null !== segment && segment.parentFlushed) {
@@ -5448,13 +5489,15 @@ function finishedTask(request, boundary, row, segment) {
5448
5489
  boundary.parentFlushed &&
5449
5490
  request.completedBoundaries.push(boundary),
5450
5491
  1 === boundary.status &&
5451
- (500 < boundary.byteSize ||
5492
+ ((row = boundary.row),
5493
+ null !== row &&
5494
+ hoistHoistables(row.hoistables, boundary.contentState),
5495
+ 500 < boundary.byteSize ||
5452
5496
  (boundary.fallbackAbortableTasks.forEach(
5453
5497
  abortTaskSoft,
5454
5498
  request
5455
5499
  ),
5456
5500
  boundary.fallbackAbortableTasks.clear(),
5457
- (row = boundary.row),
5458
5501
  null !== row &&
5459
5502
  0 === --row.pendingTasks &&
5460
5503
  finishSuspenseListRow(request, row)),
@@ -5462,13 +5505,17 @@ function finishedTask(request, boundary, row, segment) {
5462
5505
  null === request.trackedPostpones &&
5463
5506
  null !== boundary.contentPreamble &&
5464
5507
  preparePreamble(request)))
5465
- : null !== segment &&
5466
- segment.parentFlushed &&
5467
- 1 === segment.status &&
5468
- (queueCompletedSegment(boundary, segment),
5469
- 1 === boundary.completedSegments.length &&
5470
- boundary.parentFlushed &&
5471
- request.partialBoundaries.push(boundary)));
5508
+ : (null !== segment &&
5509
+ segment.parentFlushed &&
5510
+ 1 === segment.status &&
5511
+ (queueCompletedSegment(boundary, segment),
5512
+ 1 === boundary.completedSegments.length &&
5513
+ boundary.parentFlushed &&
5514
+ request.partialBoundaries.push(boundary)),
5515
+ (boundary = boundary.row),
5516
+ null !== boundary &&
5517
+ boundary.together &&
5518
+ tryToResolveTogetherRow(request, boundary)));
5472
5519
  0 === request.allPendingTasks && completeAll(request);
5473
5520
  }
5474
5521
  function performWork(request$jscomp$2) {
@@ -5627,19 +5674,25 @@ function performWork(request$jscomp$2) {
5627
5674
  x$jscomp$0,
5628
5675
  errorInfo$jscomp$0
5629
5676
  );
5630
- null === boundary$jscomp$0
5631
- ? fatalError(request, x$jscomp$0)
5632
- : (boundary$jscomp$0.pendingTasks--,
5633
- 4 !== boundary$jscomp$0.status &&
5634
- ((boundary$jscomp$0.status = 4),
5635
- (boundary$jscomp$0.errorDigest = request$jscomp$0),
5636
- untrackBoundary(request, boundary$jscomp$0),
5637
- boundary$jscomp$0.parentFlushed &&
5638
- request.clientRenderedBoundaries.push(boundary$jscomp$0),
5639
- 0 === request.pendingRootTasks &&
5640
- null === request.trackedPostpones &&
5641
- null !== boundary$jscomp$0.contentPreamble &&
5642
- preparePreamble(request)));
5677
+ if (null === boundary$jscomp$0) fatalError(request, x$jscomp$0);
5678
+ else if (
5679
+ (boundary$jscomp$0.pendingTasks--,
5680
+ 4 !== boundary$jscomp$0.status)
5681
+ ) {
5682
+ boundary$jscomp$0.status = 4;
5683
+ boundary$jscomp$0.errorDigest = request$jscomp$0;
5684
+ untrackBoundary(request, boundary$jscomp$0);
5685
+ var boundaryRow = boundary$jscomp$0.row;
5686
+ null !== boundaryRow &&
5687
+ 0 === --boundaryRow.pendingTasks &&
5688
+ finishSuspenseListRow(request, boundaryRow);
5689
+ boundary$jscomp$0.parentFlushed &&
5690
+ request.clientRenderedBoundaries.push(boundary$jscomp$0);
5691
+ 0 === request.pendingRootTasks &&
5692
+ null === request.trackedPostpones &&
5693
+ null !== boundary$jscomp$0.contentPreamble &&
5694
+ preparePreamble(request);
5695
+ }
5643
5696
  0 === request.allPendingTasks && completeAll(request);
5644
5697
  }
5645
5698
  } finally {
@@ -5816,13 +5869,7 @@ function flushSegment(request, destination, segment, hoistableState) {
5816
5869
  request.renderState,
5817
5870
  boundary.rootSegmentID
5818
5871
  ),
5819
- hoistableState &&
5820
- ((boundary = boundary.fallbackState),
5821
- boundary.styles.forEach(hoistStyleQueueDependency, hoistableState),
5822
- boundary.stylesheets.forEach(
5823
- hoistStylesheetDependency,
5824
- hoistableState
5825
- )),
5872
+ hoistableState && hoistHoistables(hoistableState, boundary.fallbackState),
5826
5873
  flushSubtree(request, destination, segment, hoistableState),
5827
5874
  destination.push("\x3c!--/$--\x3e")
5828
5875
  );
@@ -5842,10 +5889,7 @@ function flushSegment(request, destination, segment, hoistableState) {
5842
5889
  destination.push("\x3c!--/$--\x3e")
5843
5890
  );
5844
5891
  flushedByteSize += boundary.byteSize;
5845
- hoistableState &&
5846
- ((segment = boundary.contentState),
5847
- segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
5848
- segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
5892
+ hoistableState && hoistHoistables(hoistableState, boundary.contentState);
5849
5893
  segment = boundary.row;
5850
5894
  null !== segment &&
5851
5895
  500 < boundary.byteSize &&
@@ -6173,12 +6217,12 @@ function flushCompletedQueues(request, destination) {
6173
6217
  completedBoundaries.splice(0, i);
6174
6218
  var partialBoundaries = request.partialBoundaries;
6175
6219
  for (i = 0; i < partialBoundaries.length; i++) {
6176
- var boundary$62 = partialBoundaries[i];
6220
+ var boundary$64 = partialBoundaries[i];
6177
6221
  a: {
6178
6222
  clientRenderedBoundaries = request;
6179
6223
  boundary = destination;
6180
- flushedByteSize = boundary$62.byteSize;
6181
- var completedSegments = boundary$62.completedSegments;
6224
+ flushedByteSize = boundary$64.byteSize;
6225
+ var completedSegments = boundary$64.completedSegments;
6182
6226
  for (
6183
6227
  JSCompiler_inline_result = 0;
6184
6228
  JSCompiler_inline_result < completedSegments.length;
@@ -6188,7 +6232,7 @@ function flushCompletedQueues(request, destination) {
6188
6232
  !flushPartiallyCompletedSegment(
6189
6233
  clientRenderedBoundaries,
6190
6234
  boundary,
6191
- boundary$62,
6235
+ boundary$64,
6192
6236
  completedSegments[JSCompiler_inline_result]
6193
6237
  )
6194
6238
  ) {
@@ -6198,9 +6242,20 @@ function flushCompletedQueues(request, destination) {
6198
6242
  break a;
6199
6243
  }
6200
6244
  completedSegments.splice(0, JSCompiler_inline_result);
6245
+ var row = boundary$64.row;
6246
+ null !== row &&
6247
+ row.together &&
6248
+ 1 === boundary$64.pendingTasks &&
6249
+ (1 === row.pendingTasks
6250
+ ? unblockSuspenseListRow(
6251
+ clientRenderedBoundaries,
6252
+ row,
6253
+ row.hoistables
6254
+ )
6255
+ : row.pendingTasks--);
6201
6256
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6202
6257
  boundary,
6203
- boundary$62.contentState,
6258
+ boundary$64.contentState,
6204
6259
  clientRenderedBoundaries.renderState
6205
6260
  );
6206
6261
  }
@@ -6283,8 +6338,8 @@ function abort(request, reason) {
6283
6338
  }
6284
6339
  null !== request.destination &&
6285
6340
  flushCompletedQueues(request, request.destination);
6286
- } catch (error$64) {
6287
- logRecoverableError(request, error$64, {}), fatalError(request, error$64);
6341
+ } catch (error$66) {
6342
+ logRecoverableError(request, error$66, {}), fatalError(request, error$66);
6288
6343
  }
6289
6344
  }
6290
6345
  function onError() {}
@@ -6353,4 +6408,4 @@ exports.renderToString = function (children, options) {
6353
6408
  'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server'
6354
6409
  );
6355
6410
  };
6356
- exports.version = "19.2.0-canary-c4676e72-20250520";
6411
+ exports.version = "19.2.0-canary-23884812-20250520";