@@ -2279,6 +2279,36 @@ steps:
2279
2279
<li><p> If <var> slot</var> is non-null, then run <a>assign slottables</a> for <var> slot</var> .
2280
2280
</ol>
2281
2281
2282
+ <p> To <dfn noexport>update slots</dfn> , given <var> removedNodes</var> , <var> parent</var> , and
2283
+ <var> addedNodes</var> , run these steps:
2284
+
2285
+ <ol>
2286
+ <li>
2287
+ <p> For each <var> removedNode</var> in <var> removedNodes</var> :
2288
+
2289
+ <ol>
2290
+ <li><p> If <var> removedNode</var> is <a for=slotable>assigned</a> , then run
2291
+ <a>assign slotables</a> for <var> removedNode</var> 's <a>assigned slot</a> .
2292
+
2293
+ <li><p> If <var> removedNode</var> has an <a>inclusive descendant</a> that is a <a>slot</a> , then
2294
+ run <a>assign slotables for a tree</a> with <var> removedNode</var> .
2295
+ </ol>
2296
+
2297
+ <li><p> If <var> parent</var> 's <a for=tree>root</a> is a <a for=/>shadow root</a> and
2298
+ <var> parent</var> is a <a>slot</a> whose <a for=slot>assigned nodes</a> is the empty list, then run
2299
+ <a>signal a slot change</a> for <var> parent</var> .
2300
+
2301
+ <li><p> Run <a>assign slotables for a tree</a> with <var> parent</var> 's <a for=tree>root</a> .
2302
+
2303
+ <li>
2304
+ <p> For each <var> addedNode</var> in <var> addedNodes</var> :
2305
+
2306
+ <ol>
2307
+ <li><p> If <var> parent</var> is a <a for=Element>shadow host</a> and <var> addedNode</var> is a
2308
+ <a>slotable</a> , then <a>assign a slot</a> for <var> addedNode</var> .
2309
+ </ol>
2310
+ </ol>
2311
+
2282
2312
<h5 id=signaling-slot-change>Signaling slot change</h5>
2283
2313
2284
2314
<p> Each <a>similar-origin window agent</a> has <dfn noexport id=signal-slot-list>signal slots</dfn>
@@ -2432,14 +2462,8 @@ before a <var>child</var>, with an optional <i>suppress observers flag</i>, run
2432
2462
<li><p> Otherwise, <a for=set>insert</a> <var> node</var> into <var> parent</var> 's
2433
2463
<a for=tree>children</a> before <var> child</var> 's <a for=tree>index</a> .
2434
2464
2435
- <li><p> If <var> parent</var> is a <a for=Element>shadow host</a> and <var> node</var> is a
2436
- <a>slottable</a> , then <a>assign a slot</a> for <var> node</var> .
2437
-
2438
- <li><p> If <var> parent</var> 's <a for=tree>root</a> is a <a for=/>shadow root</a> , and
2439
- <var> parent</var> is a <a>slot</a> whose <a for=slot>assigned nodes</a> is the empty list,
2440
- then run <a>signal a slot change</a> for <var> parent</var> .
2441
-
2442
- <li><p> Run <a>assign slottables for a tree</a> with <var> node</var> 's <a for=tree>root</a> .
2465
+ <li><p> If the <i> suppress observers flag</i> is unset, then <a>update slots</a> with « »,
2466
+ <var> parent</var> , and « <var> node</var> ».
2443
2467
2444
2468
<li>
2445
2469
<p> For each <a>shadow-including inclusive descendant</a> <var> inclusiveDescendant</var> of
@@ -2469,7 +2493,7 @@ before a <var>child</var>, with an optional <i>suppress observers flag</i>, run
2469
2493
</li>
2470
2494
</ol>
2471
2495
2472
- <li><p> If <i> suppress observers flag</i> is unset, then <a>queue a tree mutation record</a> for
2496
+ <li><p> If the <i> suppress observers flag</i> is unset, then <a>queue a tree mutation record</a> for
2473
2497
<var> parent</var> with <var> nodes</var> , « », <var> previousSibling</var> , and <var> child</var> .
2474
2498
2475
2499
<li><p> Run the <a>children changed steps</a> for <var> parent</var> .
@@ -2559,6 +2583,9 @@ within a <var>parent</var>, run these steps:
2559
2583
<li><p> <a for=/>Insert</a> <var> node</var> into <var> parent</var> before <var> referenceChild</var>
2560
2584
with the <i> suppress observers flag</i> set.
2561
2585
2586
+ <li><p> <a>Update slots</a> with « <var> removedNodes</var> », <var> parent</var> , and
2587
+ « <var> nodes</var> ».
2588
+
2562
2589
<li><p> <a>Queue a tree mutation record</a> for <var> parent</var> with <var> nodes</var> ,
2563
2590
<var> removedNodes</var> , <var> previousSibling</var> , and <var> referenceChild</var> .
2564
2591
@@ -2585,6 +2612,9 @@ within a <var>parent</var>, run these steps:
2585
2612
<li><p> If <var> node</var> is non-null, then <a for=/>insert</a> <var> node</var> into
2586
2613
<var> parent</var> before null with the <i> suppress observers flag</i> set.
2587
2614
2615
+ <li><p> If the <i> suppress observers flag</i> is unset, then <a>update slots</a> with
2616
+ « <var> removedNodes</var> », <var> parent</var> , and « <var> addedNodes</var> ».
2617
+
2588
2618
<li><p> If either <var> addedNodes</var> or <var> removedNodes</var> <a for=set>is not empty</a> ,
2589
2619
then <a>queue a tree mutation record</a> for <var> parent</var> with <var> addedNodes</var> ,
2590
2620
<var> removedNodes</var> , null, and null.
@@ -2649,21 +2679,8 @@ indicated in the <a for=/>remove</a> algorithm below.
2649
2679
2650
2680
<li><p> <a for=set>Remove</a> <var> node</var> from its <var> parent</var> 's <a for=tree>children</a> .
2651
2681
2652
- <li><p> If <var> node</var> is <a for=slottable>assigned</a> , then run <a>assign slottables</a> for
2653
- <var> node</var> 's <a>assigned slot</a> .
2654
-
2655
- <li><p> If <var> parent</var> 's <a for=tree>root</a> is a <a for=/>shadow root</a> , and
2656
- <var> parent</var> is a <a>slot</a> whose <a for=slot>assigned nodes</a> is the empty list,
2657
- then run <a>signal a slot change</a> for <var> parent</var> .
2658
-
2659
- <li>
2660
- <p> If <var> node</var> has an <a>inclusive descendant</a> that is a <a>slot</a> , then:
2661
-
2662
- <ol>
2663
- <li><p> Run <a>assign slottables for a tree</a> with <var> parent</var> 's <a for=tree>root</a> .
2664
-
2665
- <li><p> Run <a>assign slottables for a tree</a> with <var> node</var> .
2666
- </ol>
2682
+ <li><p> If the <i> suppress observers flag</i> is unset, then <a>update slots</a> with
2683
+ « <var> node</var> », <var> parent</var> , and « ».
2667
2684
2668
2685
<li><p> Run the <a>removing steps</a> with <var> node</var> and <var> parent</var> .
2669
2686
@@ -2701,7 +2718,7 @@ indicated in the <a for=/>remove</a> algorithm below.
2701
2718
<a for="transient registered observer">source</a> is <var> registered</var> to <var> node</var> 's
2702
2719
<a>registered observer list</a> .
2703
2720
2704
- <li><p> If <i> suppress observers flag</i> is unset, then <a>queue a tree mutation record</a> for
2721
+ <li><p> If the <i> suppress observers flag</i> is unset, then <a>queue a tree mutation record</a> for
2705
2722
<var> parent</var> with « », « <var> node</var> », <var> oldPreviousSibling</var> , and
2706
2723
<var> oldNextSibling</var> .
2707
2724
0 commit comments