react-dom 19.2.0-canary-c4676e72-20250520 → 19.2.0-canary-8ce15b0f-20250522

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.
@@ -634,8 +634,8 @@ function getSuspenseViewTransition(parentViewTransition) {
634
634
  ? null
635
635
  : {
636
636
  update: parentViewTransition.update,
637
- enter: null,
638
- exit: null,
637
+ enter: "none",
638
+ exit: "none",
639
639
  share: parentViewTransition.update,
640
640
  name: parentViewTransition.autoName,
641
641
  autoName: parentViewTransition.autoName,
@@ -2457,10 +2457,10 @@ var completeSegmentScript1Full = stringToPrecomputedChunk(
2457
2457
  stringToPrecomputedChunk('<template data-rsi="" data-sid="');
2458
2458
  stringToPrecomputedChunk('" data-pid="');
2459
2459
  var completeBoundaryScriptFunctionOnly = stringToPrecomputedChunk(
2460
- '$RB=[];$RV=function(){$RT=performance.now();var d=$RB;$RB=[];for(var a=0;a<d.length;a+=2){var b=d[a],h=d[a+1],e=b.parentNode;if(e){var f=b.previousSibling,g=0;do{if(b&&8===b.nodeType){var c=b.data;if("/$"===c||"/&"===c)if(0===g)break;else g--;else"$"!==c&&"$?"!==c&&"$~"!==c&&"$!"!==c&&"&"!==c||g++}c=b.nextSibling;e.removeChild(b);b=c}while(b);for(;h.firstChild;)e.insertBefore(h.firstChild,b);f.data="$";f._reactRetry&&f._reactRetry()}}};$RC=function(d,a){if(a=document.getElementById(a))if(a.parentNode.removeChild(a),d=document.getElementById(d))d.previousSibling.data="$~",$RB.push(d,a),2===$RB.length&&setTimeout($RV,("number"!==typeof $RT?0:$RT)+300-performance.now())};'
2460
+ '$RB=[];$RV=function(c){$RT=performance.now();for(var a=0;a<c.length;a+=2){var b=c[a],h=c[a+1],e=b.parentNode;if(e){var f=b.previousSibling,g=0;do{if(b&&8===b.nodeType){var d=b.data;if("/$"===d||"/&"===d)if(0===g)break;else g--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||g++}d=b.nextSibling;e.removeChild(b);b=d}while(b);for(;h.firstChild;)e.insertBefore(h.firstChild,b);f.data="$";f._reactRetry&&f._reactRetry()}}c.length=0};$RC=function(c,a){if(a=document.getElementById(a))if(a.parentNode.removeChild(a),c=document.getElementById(c))c.previousSibling.data="$~",$RB.push(c,a),2===$RB.length&&setTimeout($RV.bind(null,$RB),("number"!==typeof $RT?0:$RT)+300-performance.now())};'
2461
2461
  );
2462
2462
  stringToPrecomputedChunk(
2463
- "$RV=function(a){try{var b=document.__reactViewTransition;if(b){b.finished.then($RV,$RV);return}if(window._useVT){var c=document.__reactViewTransition=document.startViewTransition({update:a,types:[]});c.finished.finally(function(){document.__reactViewTransition===c&&(document.__reactViewTransition=null)});return}}catch(d){}a()}.bind(null,$RV);"
2463
+ '$RV=function(w,f){function h(b,d){var k=b.getAttribute(d);k&&(d=b.style,l.push(b,d.viewTransitionName,d.viewTransitionClass),"auto"!==k&&(d.viewTransitionClass=k),(b=b.getAttribute("vt-name"))||(b="\\u00abT"+F++ +"\\u00bb"),d.viewTransitionName=b,x=!0)}var x=!1,F=0,l=[];try{var e=document.__reactViewTransition;if(e){e.finished.finally($RV.bind(null,f));return}var m=new Map;for(e=1;e<f.length;e+=2)for(var g=f[e].querySelectorAll("[vt-share]"),c=0;c<g.length;c++){var a=g[c];m.set(a.getAttribute("vt-name"),a)}for(g=0;g<f.length;g+=2){var y=f[g],t=y.parentNode;if(t){var r=t.getBoundingClientRect();if(r.left||r.top||r.width||r.height){a=y;for(e=0;a;){if(8===a.nodeType){var p=a.data;if("/$"===p)if(0===e)break;else e--;else"$"!==p&&"$?"!==p&&"$~"!==p&&"$!"!==p||e++}else if(1===a.nodeType){c=a;var z=c.getAttribute("vt-name"),u=m.get(z);h(c,u?"vt-share":"vt-exit");u&&(h(u,"vt-share"),m.set(z,null));var A=c.querySelectorAll("[vt-share]");for(c=0;c<A.length;c++){var B=A[c],C=B.getAttribute("vt-name"),D=m.get(C);\nD&&(h(B,"vt-share"),h(D,"vt-share"),m.set(C,null))}}a=a.nextSibling}for(var q=f[g+1].firstElementChild;q;)null!==m.get(q.getAttribute("vt-name"))&&h(q,"vt-enter"),q=q.nextElementSibling;a=t;do for(var n=a.firstElementChild;n;){var E=n.getAttribute("vt-update");E&&"none"!==E&&!l.includes(n)&&h(n,"vt-update");n=n.nextElementSibling}while((a=a.parentNode)&&1===a.nodeType&&"none"!==a.getAttribute("vt-update"))}}}if(x){var v=document.__reactViewTransition=document.startViewTransition({update:w.bind(null,\nf),types:[]});v.ready.finally(function(){for(var b=l.length-3;0<=b;b-=3){var d=l[b],k=d.style;k.viewTransitionName=l[b+1];k.viewTransitionClass=l[b+1];""===d.getAttribute("style")&&d.removeAttribute("style")}});v.finished.finally(function(){document.__reactViewTransition===v&&(document.__reactViewTransition=null)});$RB=[];return}}catch(b){}w(f)}.bind(null,$RV);'
2464
2464
  );
2465
2465
  var completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC("'),
2466
2466
  completeBoundaryWithStylesScript1FullPartial = stringToPrecomputedChunk(
@@ -3174,6 +3174,10 @@ function hoistStyleQueueDependency(styleQueue) {
3174
3174
  function hoistStylesheetDependency(stylesheet) {
3175
3175
  this.stylesheets.add(stylesheet);
3176
3176
  }
3177
+ function hoistHoistables(parentState, childState) {
3178
+ childState.styles.forEach(hoistStyleQueueDependency, parentState);
3179
+ childState.stylesheets.forEach(hoistStylesheetDependency, parentState);
3180
+ }
3177
3181
  var bind = Function.prototype.bind,
3178
3182
  requestStorage = new async_hooks.AsyncLocalStorage(),
3179
3183
  REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
@@ -4116,11 +4120,14 @@ function createSuspenseBoundary(
4116
4120
  };
4117
4121
  null !== row &&
4118
4122
  (row.pendingTasks++,
4119
- (row = row.boundaries),
4120
- null !== row &&
4123
+ (contentPreamble = row.boundaries),
4124
+ null !== contentPreamble &&
4121
4125
  (request.allPendingTasks++,
4122
4126
  fallbackAbortableTasks.pendingTasks++,
4123
- row.push(fallbackAbortableTasks)));
4127
+ contentPreamble.push(fallbackAbortableTasks)),
4128
+ (request = row.inheritedHoistables),
4129
+ null !== request &&
4130
+ hoistHoistables(fallbackAbortableTasks.contentState, request));
4124
4131
  return fallbackAbortableTasks;
4125
4132
  }
4126
4133
  function createRenderTask(
@@ -4285,20 +4292,56 @@ function fatalError(request, error) {
4285
4292
  : ((request.status = 13), (request.fatalError = error));
4286
4293
  }
4287
4294
  function finishSuspenseListRow(request, row) {
4288
- for (row = row.next; null !== row; ) {
4289
- var unblockedBoundaries = row.boundaries;
4295
+ unblockSuspenseListRow(request, row.next, row.hoistables);
4296
+ }
4297
+ function unblockSuspenseListRow(request, unblockedRow, inheritedHoistables) {
4298
+ for (; null !== unblockedRow; ) {
4299
+ null !== inheritedHoistables &&
4300
+ (hoistHoistables(unblockedRow.hoistables, inheritedHoistables),
4301
+ (unblockedRow.inheritedHoistables = inheritedHoistables));
4302
+ var unblockedBoundaries = unblockedRow.boundaries;
4290
4303
  if (null !== unblockedBoundaries) {
4291
- row.boundaries = null;
4292
- for (var i = 0; i < unblockedBoundaries.length; i++)
4293
- finishedTask(request, unblockedBoundaries[i], null, null);
4304
+ unblockedRow.boundaries = null;
4305
+ for (var i = 0; i < unblockedBoundaries.length; i++) {
4306
+ var unblockedBoundary = unblockedBoundaries[i];
4307
+ null !== inheritedHoistables &&
4308
+ hoistHoistables(unblockedBoundary.contentState, inheritedHoistables);
4309
+ finishedTask(request, unblockedBoundary, null, null);
4310
+ }
4294
4311
  }
4295
- row.pendingTasks--;
4296
- if (0 < row.pendingTasks) break;
4297
- row = row.next;
4312
+ unblockedRow.pendingTasks--;
4313
+ if (0 < unblockedRow.pendingTasks) break;
4314
+ inheritedHoistables = unblockedRow.hoistables;
4315
+ unblockedRow = unblockedRow.next;
4316
+ }
4317
+ }
4318
+ function tryToResolveTogetherRow(request, togetherRow) {
4319
+ var boundaries = togetherRow.boundaries;
4320
+ if (null !== boundaries && togetherRow.pendingTasks === boundaries.length) {
4321
+ for (var allCompleteAndInlinable = !0, i = 0; i < boundaries.length; i++) {
4322
+ var rowBoundary = boundaries[i];
4323
+ if (
4324
+ 1 !== rowBoundary.pendingTasks ||
4325
+ rowBoundary.parentFlushed ||
4326
+ 500 < rowBoundary.byteSize
4327
+ ) {
4328
+ allCompleteAndInlinable = !1;
4329
+ break;
4330
+ }
4331
+ }
4332
+ allCompleteAndInlinable &&
4333
+ unblockSuspenseListRow(request, togetherRow, togetherRow.hoistables);
4298
4334
  }
4299
4335
  }
4300
4336
  function createSuspenseListRow(previousRow) {
4301
- var newRow = { pendingTasks: 1, boundaries: null, next: null };
4337
+ var newRow = {
4338
+ pendingTasks: 1,
4339
+ boundaries: null,
4340
+ hoistables: createHoistableState(),
4341
+ inheritedHoistables: null,
4342
+ together: !1,
4343
+ next: null
4344
+ };
4302
4345
  null !== previousRow &&
4303
4346
  0 < previousRow.pendingTasks &&
4304
4347
  (newRow.pendingTasks++,
@@ -4307,21 +4350,22 @@ function createSuspenseListRow(previousRow) {
4307
4350
  return newRow;
4308
4351
  }
4309
4352
  function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4310
- keyPath = task.keyPath;
4311
- var prevTreeContext = task.treeContext,
4312
- prevRow = task.row,
4313
- totalChildren = rows.length,
4314
- previousSuspenseListRow = null;
4353
+ var prevKeyPath = task.keyPath,
4354
+ prevTreeContext = task.treeContext,
4355
+ prevRow = task.row;
4356
+ task.keyPath = keyPath;
4357
+ keyPath = rows.length;
4358
+ var previousSuspenseListRow = null;
4315
4359
  if (null !== task.replay) {
4316
4360
  var resumeSlots = task.replay.slots;
4317
4361
  if (null !== resumeSlots && "object" === typeof resumeSlots)
4318
- for (var n = 0; n < totalChildren; n++) {
4319
- var i = "backwards" !== revealOrder ? n : totalChildren - 1 - n,
4362
+ for (var n = 0; n < keyPath; n++) {
4363
+ var i = "backwards" !== revealOrder ? n : keyPath - 1 - n,
4320
4364
  node = rows[i];
4321
4365
  task.row = previousSuspenseListRow = createSuspenseListRow(
4322
4366
  previousSuspenseListRow
4323
4367
  );
4324
- task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4368
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
4325
4369
  var resumeSegmentID = resumeSlots[i];
4326
4370
  "number" === typeof resumeSegmentID
4327
4371
  ? (resumeNode(request, task, resumeSegmentID, node, i),
@@ -4331,30 +4375,26 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4331
4375
  finishSuspenseListRow(request, previousSuspenseListRow);
4332
4376
  }
4333
4377
  else
4334
- for (resumeSlots = 0; resumeSlots < totalChildren; resumeSlots++)
4378
+ for (resumeSlots = 0; resumeSlots < keyPath; resumeSlots++)
4335
4379
  (n =
4336
4380
  "backwards" !== revealOrder
4337
4381
  ? resumeSlots
4338
- : totalChildren - 1 - resumeSlots),
4382
+ : keyPath - 1 - resumeSlots),
4339
4383
  (i = rows[n]),
4340
4384
  (task.row = previousSuspenseListRow =
4341
4385
  createSuspenseListRow(previousSuspenseListRow)),
4342
- (task.treeContext = pushTreeContext(
4343
- prevTreeContext,
4344
- totalChildren,
4345
- n
4346
- )),
4386
+ (task.treeContext = pushTreeContext(prevTreeContext, keyPath, n)),
4347
4387
  renderNode(request, task, i, n),
4348
4388
  0 === --previousSuspenseListRow.pendingTasks &&
4349
4389
  finishSuspenseListRow(request, previousSuspenseListRow);
4350
4390
  } else if ("backwards" !== revealOrder)
4351
- for (revealOrder = 0; revealOrder < totalChildren; revealOrder++)
4391
+ for (revealOrder = 0; revealOrder < keyPath; revealOrder++)
4352
4392
  (resumeSlots = rows[revealOrder]),
4353
4393
  (task.row = previousSuspenseListRow =
4354
4394
  createSuspenseListRow(previousSuspenseListRow)),
4355
4395
  (task.treeContext = pushTreeContext(
4356
4396
  prevTreeContext,
4357
- totalChildren,
4397
+ keyPath,
4358
4398
  revealOrder
4359
4399
  )),
4360
4400
  renderNode(request, task, resumeSlots, revealOrder),
@@ -4364,12 +4404,12 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4364
4404
  revealOrder = task.blockedSegment;
4365
4405
  resumeSlots = revealOrder.children.length;
4366
4406
  n = revealOrder.chunks.length;
4367
- for (i = totalChildren - 1; 0 <= i; i--) {
4407
+ for (i = keyPath - 1; 0 <= i; i--) {
4368
4408
  node = rows[i];
4369
4409
  task.row = previousSuspenseListRow = createSuspenseListRow(
4370
4410
  previousSuspenseListRow
4371
4411
  );
4372
- task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);
4412
+ task.treeContext = pushTreeContext(prevTreeContext, keyPath, i);
4373
4413
  resumeSegmentID = createPendingSegment(
4374
4414
  request,
4375
4415
  n,
@@ -4405,7 +4445,7 @@ function renderSuspenseListRows(request, task, keyPath, rows, revealOrder) {
4405
4445
  (prevRow.pendingTasks++, (previousSuspenseListRow.next = prevRow));
4406
4446
  task.treeContext = prevTreeContext;
4407
4447
  task.row = prevRow;
4408
- task.keyPath = keyPath;
4448
+ task.keyPath = prevKeyPath;
4409
4449
  }
4410
4450
  function renderWithHooks(request, task, keyPath, Component, props, secondArg) {
4411
4451
  var prevThenableState = task.thenableState;
@@ -4474,9 +4514,9 @@ function renderElement(request, task, keyPath, type, props, ref) {
4474
4514
  var defaultProps = type.defaultProps;
4475
4515
  if (defaultProps) {
4476
4516
  newProps === props && (newProps = assign({}, newProps, props));
4477
- for (var propName$42 in defaultProps)
4478
- void 0 === newProps[propName$42] &&
4479
- (newProps[propName$42] = defaultProps[propName$42]);
4517
+ for (var propName$43 in defaultProps)
4518
+ void 0 === newProps[propName$43] &&
4519
+ (newProps[propName$43] = defaultProps[propName$43]);
4480
4520
  }
4481
4521
  props = newProps;
4482
4522
  newProps = emptyContextObject;
@@ -4536,16 +4576,16 @@ function renderElement(request, task, keyPath, type, props, ref) {
4536
4576
  defaultProps = ref ? type[0] : newProps.state;
4537
4577
  initialState = !0;
4538
4578
  for (ref = ref ? 1 : 0; ref < type.length; ref++)
4539
- (propName$42 = type[ref]),
4540
- (propName$42 =
4541
- "function" === typeof propName$42
4542
- ? propName$42.call(newProps, defaultProps, props, void 0)
4543
- : propName$42),
4544
- null != propName$42 &&
4579
+ (propName$43 = type[ref]),
4580
+ (propName$43 =
4581
+ "function" === typeof propName$43
4582
+ ? propName$43.call(newProps, defaultProps, props, void 0)
4583
+ : propName$43),
4584
+ null != propName$43 &&
4545
4585
  (initialState
4546
4586
  ? ((initialState = !1),
4547
- (defaultProps = assign({}, defaultProps, propName$42)))
4548
- : assign(defaultProps, propName$42));
4587
+ (defaultProps = assign({}, defaultProps, propName$43)))
4588
+ : assign(defaultProps, propName$43));
4549
4589
  newProps.state = defaultProps;
4550
4590
  }
4551
4591
  else defaultProps.queue = null;
@@ -4719,10 +4759,25 @@ function renderElement(request, task, keyPath, type, props, ref) {
4719
4759
  break a;
4720
4760
  }
4721
4761
  }
4722
- props = task.keyPath;
4723
- task.keyPath = keyPath;
4724
- renderNodeDestructive(request, task, type, -1);
4725
- task.keyPath = props;
4762
+ "together" === props
4763
+ ? ((props = task.keyPath),
4764
+ (newProps = task.row),
4765
+ (defaultProps = task.row = createSuspenseListRow(null)),
4766
+ (defaultProps.boundaries = []),
4767
+ (defaultProps.together = !0),
4768
+ (task.keyPath = keyPath),
4769
+ renderNodeDestructive(request, task, type, -1),
4770
+ 0 === --defaultProps.pendingTasks &&
4771
+ finishSuspenseListRow(request, defaultProps),
4772
+ (task.keyPath = props),
4773
+ (task.row = newProps),
4774
+ null !== newProps &&
4775
+ 0 < defaultProps.pendingTasks &&
4776
+ (newProps.pendingTasks++, (defaultProps.next = newProps)))
4777
+ : ((props = task.keyPath),
4778
+ (task.keyPath = keyPath),
4779
+ renderNodeDestructive(request, task, type, -1),
4780
+ (task.keyPath = props));
4726
4781
  }
4727
4782
  return;
4728
4783
  case REACT_VIEW_TRANSITION_TYPE:
@@ -4751,7 +4806,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4751
4806
  type = task.keyPath;
4752
4807
  ref = task.formatContext;
4753
4808
  var prevRow = task.row;
4754
- propName$42 = task.blockedBoundary;
4809
+ propName$43 = task.blockedBoundary;
4755
4810
  propName = task.blockedPreamble;
4756
4811
  var parentHoistableState = task.hoistableState,
4757
4812
  parentSegment = task.blockedSegment,
@@ -4814,7 +4869,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4814
4869
  boundarySegment.textEmbedded &&
4815
4870
  boundarySegment.chunks.push(textSeparator),
4816
4871
  (boundarySegment.status = 1),
4817
- finishedSegment(request, propName$42, boundarySegment);
4872
+ finishedSegment(request, propName$43, boundarySegment);
4818
4873
  } catch (thrownValue) {
4819
4874
  throw (
4820
4875
  ((boundarySegment.status = 12 === request.status ? 3 : 4),
@@ -4869,18 +4924,21 @@ function renderElement(request, task, keyPath, type, props, ref) {
4869
4924
  (contentRootSegment.status = 1),
4870
4925
  finishedSegment(request, newBoundary, contentRootSegment),
4871
4926
  queueCompletedSegment(newBoundary, contentRootSegment),
4872
- 0 === newBoundary.pendingTasks &&
4873
- 0 === newBoundary.status &&
4874
- ((newBoundary.status = 1), !(500 < newBoundary.byteSize)))
4927
+ 0 === newBoundary.pendingTasks && 0 === newBoundary.status)
4875
4928
  ) {
4929
+ if (((newBoundary.status = 1), !(500 < newBoundary.byteSize))) {
4930
+ null !== prevRow &&
4931
+ 0 === --prevRow.pendingTasks &&
4932
+ finishSuspenseListRow(request, prevRow);
4933
+ 0 === request.pendingRootTasks &&
4934
+ task.blockedPreamble &&
4935
+ preparePreamble(request);
4936
+ break a;
4937
+ }
4938
+ } else
4876
4939
  null !== prevRow &&
4877
- 0 === --prevRow.pendingTasks &&
4878
- finishSuspenseListRow(request, prevRow);
4879
- 0 === request.pendingRootTasks &&
4880
- task.blockedPreamble &&
4881
- preparePreamble(request);
4882
- break a;
4883
- }
4940
+ prevRow.together &&
4941
+ tryToResolveTogetherRow(request, prevRow);
4884
4942
  } catch (thrownValue$30) {
4885
4943
  (newBoundary.status = 4),
4886
4944
  12 === request.status
@@ -4897,7 +4955,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4897
4955
  (newBoundary.errorDigest = initialState),
4898
4956
  untrackBoundary(request, newBoundary);
4899
4957
  } finally {
4900
- (task.blockedBoundary = propName$42),
4958
+ (task.blockedBoundary = propName$43),
4901
4959
  (task.blockedPreamble = propName),
4902
4960
  (task.hoistableState = parentHoistableState),
4903
4961
  (task.blockedSegment = parentSegment),
@@ -4910,7 +4968,7 @@ function renderElement(request, task, keyPath, type, props, ref) {
4910
4968
  null,
4911
4969
  fallback,
4912
4970
  -1,
4913
- propName$42,
4971
+ propName$43,
4914
4972
  boundarySegment,
4915
4973
  newBoundary.fallbackPreamble,
4916
4974
  newBoundary.fallbackState,
@@ -5500,15 +5558,15 @@ function renderNode(request, task, node, childIndex) {
5500
5558
  chunkLength = segment.chunks.length;
5501
5559
  try {
5502
5560
  return renderNodeDestructive(request, task, node, childIndex);
5503
- } catch (thrownValue$58) {
5561
+ } catch (thrownValue$60) {
5504
5562
  if (
5505
5563
  (resetHooksState(),
5506
5564
  (segment.children.length = childrenLength),
5507
5565
  (segment.chunks.length = chunkLength),
5508
5566
  (node =
5509
- thrownValue$58 === SuspenseException
5567
+ thrownValue$60 === SuspenseException
5510
5568
  ? getSuspendedThenable()
5511
- : thrownValue$58),
5569
+ : thrownValue$60),
5512
5570
  "object" === typeof node && null !== node)
5513
5571
  ) {
5514
5572
  if ("function" === typeof node.then) {
@@ -5610,10 +5668,6 @@ function abortTask(task, request, error) {
5610
5668
  if (6 === segment.status) return;
5611
5669
  segment.status = 3;
5612
5670
  }
5613
- segment = task.row;
5614
- null !== segment &&
5615
- 0 === --segment.pendingTasks &&
5616
- finishSuspenseListRow(request, segment);
5617
5671
  segment = getThrownInfo(task.componentStack);
5618
5672
  if (null === boundary) {
5619
5673
  if (13 !== request.status && 14 !== request.status) {
@@ -5626,32 +5680,40 @@ function abortTask(task, request, error) {
5626
5680
  boundary.pendingTasks--;
5627
5681
  0 === boundary.pendingTasks &&
5628
5682
  0 < boundary.nodes.length &&
5629
- ((task = logRecoverableError(request, error, segment)),
5683
+ ((segment = logRecoverableError(request, error, segment)),
5630
5684
  abortRemainingReplayNodes(
5631
5685
  request,
5632
5686
  null,
5633
5687
  boundary.nodes,
5634
5688
  boundary.slots,
5635
5689
  error,
5636
- task
5690
+ segment
5637
5691
  ));
5638
5692
  request.pendingRootTasks--;
5639
5693
  0 === request.pendingRootTasks && completeShell(request);
5640
5694
  }
5641
5695
  } else
5642
- boundary.pendingTasks--,
5643
- 4 !== boundary.status &&
5644
- ((boundary.status = 4),
5645
- (task = logRecoverableError(request, error, segment)),
5646
- (boundary.status = 4),
5647
- (boundary.errorDigest = task),
5648
- untrackBoundary(request, boundary),
5649
- boundary.parentFlushed &&
5650
- request.clientRenderedBoundaries.push(boundary)),
5696
+ 4 !== boundary.status &&
5697
+ ((boundary.status = 4),
5698
+ (segment = logRecoverableError(request, error, segment)),
5699
+ (boundary.status = 4),
5700
+ (boundary.errorDigest = segment),
5701
+ untrackBoundary(request, boundary),
5702
+ boundary.parentFlushed &&
5703
+ request.clientRenderedBoundaries.push(boundary)),
5704
+ boundary.pendingTasks--,
5705
+ (segment = boundary.row),
5706
+ null !== segment &&
5707
+ 0 === --segment.pendingTasks &&
5708
+ finishSuspenseListRow(request, segment),
5651
5709
  boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {
5652
5710
  return abortTask(fallbackTask, request, error);
5653
5711
  }),
5654
5712
  boundary.fallbackAbortableTasks.clear();
5713
+ task = task.row;
5714
+ null !== task &&
5715
+ 0 === --task.pendingTasks &&
5716
+ finishSuspenseListRow(request, task);
5655
5717
  request.allPendingTasks--;
5656
5718
  0 === request.allPendingTasks && completeAll(request);
5657
5719
  }
@@ -5758,55 +5820,120 @@ function finishedSegment(request, boundary, segment) {
5758
5820
  : (boundary.byteSize += segmentByteSize);
5759
5821
  }
5760
5822
  }
5761
- function finishedTask(request, boundary, row, segment) {
5823
+ function finishedTask(request$jscomp$0, boundary, row, segment) {
5762
5824
  null !== row &&
5763
- 0 === --row.pendingTasks &&
5764
- finishSuspenseListRow(request, row);
5765
- request.allPendingTasks--;
5825
+ (0 === --row.pendingTasks
5826
+ ? finishSuspenseListRow(request$jscomp$0, row)
5827
+ : row.together && tryToResolveTogetherRow(request$jscomp$0, row));
5828
+ request$jscomp$0.allPendingTasks--;
5766
5829
  if (null === boundary) {
5767
5830
  if (null !== segment && segment.parentFlushed) {
5768
- if (null !== request.completedRootSegment)
5831
+ if (null !== request$jscomp$0.completedRootSegment)
5769
5832
  throw Error(
5770
5833
  "There can only be one root segment. This is a bug in React."
5771
5834
  );
5772
- request.completedRootSegment = segment;
5835
+ request$jscomp$0.completedRootSegment = segment;
5773
5836
  }
5774
- request.pendingRootTasks--;
5775
- 0 === request.pendingRootTasks && completeShell(request);
5776
- } else
5777
- boundary.pendingTasks--,
5778
- 4 !== boundary.status &&
5779
- (0 === boundary.pendingTasks
5780
- ? (0 === boundary.status && (boundary.status = 1),
5781
- null !== segment &&
5782
- segment.parentFlushed &&
5783
- 1 === segment.status &&
5784
- queueCompletedSegment(boundary, segment),
5785
- boundary.parentFlushed &&
5786
- request.completedBoundaries.push(boundary),
5787
- 1 === boundary.status &&
5788
- (500 < boundary.byteSize ||
5789
- (boundary.fallbackAbortableTasks.forEach(
5790
- abortTaskSoft,
5791
- request
5792
- ),
5793
- boundary.fallbackAbortableTasks.clear(),
5794
- (row = boundary.row),
5795
- null !== row &&
5796
- 0 === --row.pendingTasks &&
5797
- finishSuspenseListRow(request, row)),
5798
- 0 === request.pendingRootTasks &&
5799
- null === request.trackedPostpones &&
5800
- null !== boundary.contentPreamble &&
5801
- preparePreamble(request)))
5802
- : null !== segment &&
5803
- segment.parentFlushed &&
5804
- 1 === segment.status &&
5805
- (queueCompletedSegment(boundary, segment),
5806
- 1 === boundary.completedSegments.length &&
5807
- boundary.parentFlushed &&
5808
- request.partialBoundaries.push(boundary)));
5809
- 0 === request.allPendingTasks && completeAll(request);
5837
+ request$jscomp$0.pendingRootTasks--;
5838
+ 0 === request$jscomp$0.pendingRootTasks && completeShell(request$jscomp$0);
5839
+ } else if ((boundary.pendingTasks--, 4 !== boundary.status))
5840
+ if (0 === boundary.pendingTasks)
5841
+ if (
5842
+ (0 === boundary.status && (boundary.status = 1),
5843
+ null !== segment &&
5844
+ segment.parentFlushed &&
5845
+ 1 === segment.status &&
5846
+ queueCompletedSegment(boundary, segment),
5847
+ boundary.parentFlushed &&
5848
+ request$jscomp$0.completedBoundaries.push(boundary),
5849
+ 1 === boundary.status)
5850
+ )
5851
+ (row = boundary.row),
5852
+ null !== row &&
5853
+ hoistHoistables(row.hoistables, boundary.contentState),
5854
+ 500 < boundary.byteSize ||
5855
+ (boundary.fallbackAbortableTasks.forEach(
5856
+ abortTaskSoft,
5857
+ request$jscomp$0
5858
+ ),
5859
+ boundary.fallbackAbortableTasks.clear(),
5860
+ null !== row &&
5861
+ 0 === --row.pendingTasks &&
5862
+ finishSuspenseListRow(request$jscomp$0, row)),
5863
+ 0 === request$jscomp$0.pendingRootTasks &&
5864
+ null === request$jscomp$0.trackedPostpones &&
5865
+ null !== boundary.contentPreamble &&
5866
+ preparePreamble(request$jscomp$0);
5867
+ else {
5868
+ if (
5869
+ 5 === boundary.status &&
5870
+ ((boundary = boundary.row), null !== boundary)
5871
+ ) {
5872
+ if (null !== request$jscomp$0.trackedPostpones) {
5873
+ row = request$jscomp$0.trackedPostpones;
5874
+ var postponedRow = boundary.next;
5875
+ if (
5876
+ null !== postponedRow &&
5877
+ ((segment = postponedRow.boundaries), null !== segment)
5878
+ )
5879
+ for (
5880
+ postponedRow.boundaries = null, postponedRow = 0;
5881
+ postponedRow < segment.length;
5882
+ postponedRow++
5883
+ ) {
5884
+ var postponedBoundary = segment[postponedRow];
5885
+ var request = request$jscomp$0,
5886
+ trackedPostpones = row;
5887
+ postponedBoundary.status = 5;
5888
+ postponedBoundary.rootSegmentID = request.nextSegmentId++;
5889
+ request = postponedBoundary.trackedContentKeyPath;
5890
+ if (null === request)
5891
+ throw Error(
5892
+ "It should not be possible to postpone at the root. This is a bug in React."
5893
+ );
5894
+ var fallbackReplayNode = postponedBoundary.trackedFallbackNode,
5895
+ children = [],
5896
+ boundaryNode = trackedPostpones.workingMap.get(request);
5897
+ void 0 === boundaryNode
5898
+ ? ((fallbackReplayNode = [
5899
+ request[1],
5900
+ request[2],
5901
+ children,
5902
+ null,
5903
+ fallbackReplayNode,
5904
+ postponedBoundary.rootSegmentID
5905
+ ]),
5906
+ trackedPostpones.workingMap.set(
5907
+ request,
5908
+ fallbackReplayNode
5909
+ ),
5910
+ addToReplayParent(
5911
+ fallbackReplayNode,
5912
+ request[0],
5913
+ trackedPostpones
5914
+ ))
5915
+ : ((boundaryNode[4] = fallbackReplayNode),
5916
+ (boundaryNode[5] = postponedBoundary.rootSegmentID));
5917
+ finishedTask(request$jscomp$0, postponedBoundary, null, null);
5918
+ }
5919
+ }
5920
+ 0 === --boundary.pendingTasks &&
5921
+ finishSuspenseListRow(request$jscomp$0, boundary);
5922
+ }
5923
+ }
5924
+ else
5925
+ null !== segment &&
5926
+ segment.parentFlushed &&
5927
+ 1 === segment.status &&
5928
+ (queueCompletedSegment(boundary, segment),
5929
+ 1 === boundary.completedSegments.length &&
5930
+ boundary.parentFlushed &&
5931
+ request$jscomp$0.partialBoundaries.push(boundary)),
5932
+ (boundary = boundary.row),
5933
+ null !== boundary &&
5934
+ boundary.together &&
5935
+ tryToResolveTogetherRow(request$jscomp$0, boundary);
5936
+ 0 === request$jscomp$0.allPendingTasks && completeAll(request$jscomp$0);
5810
5937
  }
5811
5938
  function performWork(request$jscomp$2) {
5812
5939
  if (14 !== request$jscomp$2.status && 13 !== request$jscomp$2.status) {
@@ -5962,19 +6089,25 @@ function performWork(request$jscomp$2) {
5962
6089
  x$jscomp$0,
5963
6090
  errorInfo$jscomp$0
5964
6091
  );
5965
- null === boundary$jscomp$0
5966
- ? fatalError(request, x$jscomp$0)
5967
- : (boundary$jscomp$0.pendingTasks--,
5968
- 4 !== boundary$jscomp$0.status &&
5969
- ((boundary$jscomp$0.status = 4),
5970
- (boundary$jscomp$0.errorDigest = request$jscomp$0),
5971
- untrackBoundary(request, boundary$jscomp$0),
5972
- boundary$jscomp$0.parentFlushed &&
5973
- request.clientRenderedBoundaries.push(boundary$jscomp$0),
5974
- 0 === request.pendingRootTasks &&
5975
- null === request.trackedPostpones &&
5976
- null !== boundary$jscomp$0.contentPreamble &&
5977
- preparePreamble(request)));
6092
+ if (null === boundary$jscomp$0) fatalError(request, x$jscomp$0);
6093
+ else if (
6094
+ (boundary$jscomp$0.pendingTasks--,
6095
+ 4 !== boundary$jscomp$0.status)
6096
+ ) {
6097
+ boundary$jscomp$0.status = 4;
6098
+ boundary$jscomp$0.errorDigest = request$jscomp$0;
6099
+ untrackBoundary(request, boundary$jscomp$0);
6100
+ var boundaryRow = boundary$jscomp$0.row;
6101
+ null !== boundaryRow &&
6102
+ 0 === --boundaryRow.pendingTasks &&
6103
+ finishSuspenseListRow(request, boundaryRow);
6104
+ boundary$jscomp$0.parentFlushed &&
6105
+ request.clientRenderedBoundaries.push(boundary$jscomp$0);
6106
+ 0 === request.pendingRootTasks &&
6107
+ null === request.trackedPostpones &&
6108
+ null !== boundary$jscomp$0.contentPreamble &&
6109
+ preparePreamble(request);
6110
+ }
5978
6111
  0 === request.allPendingTasks && completeAll(request);
5979
6112
  }
5980
6113
  } finally {
@@ -6146,13 +6279,7 @@ function flushSegment(request, destination, segment, hoistableState) {
6146
6279
  request.renderState,
6147
6280
  boundary.rootSegmentID
6148
6281
  ),
6149
- hoistableState &&
6150
- ((boundary = boundary.fallbackState),
6151
- boundary.styles.forEach(hoistStyleQueueDependency, hoistableState),
6152
- boundary.stylesheets.forEach(
6153
- hoistStylesheetDependency,
6154
- hoistableState
6155
- )),
6282
+ hoistableState && hoistHoistables(hoistableState, boundary.fallbackState),
6156
6283
  flushSubtree(request, destination, segment, hoistableState);
6157
6284
  else if (
6158
6285
  500 < boundary.byteSize &&
@@ -6168,10 +6295,7 @@ function flushSegment(request, destination, segment, hoistableState) {
6168
6295
  flushSubtree(request, destination, segment, hoistableState);
6169
6296
  else {
6170
6297
  flushedByteSize += boundary.byteSize;
6171
- hoistableState &&
6172
- ((segment = boundary.contentState),
6173
- segment.styles.forEach(hoistStyleQueueDependency, hoistableState),
6174
- segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));
6298
+ hoistableState && hoistHoistables(hoistableState, boundary.contentState);
6175
6299
  segment = boundary.row;
6176
6300
  null !== segment &&
6177
6301
  500 < boundary.byteSize &&
@@ -6490,12 +6614,12 @@ function flushCompletedQueues(request, destination) {
6490
6614
  destinationHasCapacity$1 = !0;
6491
6615
  var partialBoundaries = request.partialBoundaries;
6492
6616
  for (i = 0; i < partialBoundaries.length; i++) {
6493
- var boundary$62 = partialBoundaries[i];
6617
+ var boundary$66 = partialBoundaries[i];
6494
6618
  a: {
6495
6619
  clientRenderedBoundaries = request;
6496
6620
  boundary = destination;
6497
- flushedByteSize = boundary$62.byteSize;
6498
- var completedSegments = boundary$62.completedSegments;
6621
+ flushedByteSize = boundary$66.byteSize;
6622
+ var completedSegments = boundary$66.completedSegments;
6499
6623
  for (
6500
6624
  JSCompiler_inline_result = 0;
6501
6625
  JSCompiler_inline_result < completedSegments.length;
@@ -6505,7 +6629,7 @@ function flushCompletedQueues(request, destination) {
6505
6629
  !flushPartiallyCompletedSegment(
6506
6630
  clientRenderedBoundaries,
6507
6631
  boundary,
6508
- boundary$62,
6632
+ boundary$66,
6509
6633
  completedSegments[JSCompiler_inline_result]
6510
6634
  )
6511
6635
  ) {
@@ -6515,9 +6639,20 @@ function flushCompletedQueues(request, destination) {
6515
6639
  break a;
6516
6640
  }
6517
6641
  completedSegments.splice(0, JSCompiler_inline_result);
6642
+ var row = boundary$66.row;
6643
+ null !== row &&
6644
+ row.together &&
6645
+ 1 === boundary$66.pendingTasks &&
6646
+ (1 === row.pendingTasks
6647
+ ? unblockSuspenseListRow(
6648
+ clientRenderedBoundaries,
6649
+ row,
6650
+ row.hoistables
6651
+ )
6652
+ : row.pendingTasks--);
6518
6653
  JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(
6519
6654
  boundary,
6520
- boundary$62.contentState,
6655
+ boundary$66.contentState,
6521
6656
  clientRenderedBoundaries.renderState
6522
6657
  );
6523
6658
  }
@@ -6618,17 +6753,29 @@ function abort(request, reason) {
6618
6753
  }
6619
6754
  null !== request.destination &&
6620
6755
  flushCompletedQueues(request, request.destination);
6621
- } catch (error$64) {
6622
- logRecoverableError(request, error$64, {}), fatalError(request, error$64);
6756
+ } catch (error$68) {
6757
+ logRecoverableError(request, error$68, {}), fatalError(request, error$68);
6758
+ }
6759
+ }
6760
+ function addToReplayParent(node, parentKeyPath, trackedPostpones) {
6761
+ if (null === parentKeyPath) trackedPostpones.rootNodes.push(node);
6762
+ else {
6763
+ var workingMap = trackedPostpones.workingMap,
6764
+ parentNode = workingMap.get(parentKeyPath);
6765
+ void 0 === parentNode &&
6766
+ ((parentNode = [parentKeyPath[1], parentKeyPath[2], [], null]),
6767
+ workingMap.set(parentKeyPath, parentNode),
6768
+ addToReplayParent(parentNode, parentKeyPath[0], trackedPostpones));
6769
+ parentNode[2].push(node);
6623
6770
  }
6624
6771
  }
6625
6772
  function ensureCorrectIsomorphicReactVersion() {
6626
6773
  var isomorphicReactPackageVersion = React.version;
6627
- if ("19.2.0-canary-c4676e72-20250520" !== isomorphicReactPackageVersion)
6774
+ if ("19.2.0-canary-8ce15b0f-20250522" !== isomorphicReactPackageVersion)
6628
6775
  throw Error(
6629
6776
  'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
6630
6777
  (isomorphicReactPackageVersion +
6631
- "\n - react-dom: 19.2.0-canary-c4676e72-20250520\nLearn more: https://react.dev/warnings/version-mismatch")
6778
+ "\n - react-dom: 19.2.0-canary-8ce15b0f-20250522\nLearn more: https://react.dev/warnings/version-mismatch")
6632
6779
  );
6633
6780
  }
6634
6781
  ensureCorrectIsomorphicReactVersion();
@@ -6777,4 +6924,4 @@ exports.renderToPipeableStream = function (children, options) {
6777
6924
  }
6778
6925
  };
6779
6926
  };
6780
- exports.version = "19.2.0-canary-c4676e72-20250520";
6927
+ exports.version = "19.2.0-canary-8ce15b0f-20250522";