@@ -4540,6 +4540,7 @@ algorithm is passed <var>node</var>, <var>copy</var>, and <var>subtree</var> as
4540
4540
<p class=note> HTML defines <a>cloning steps</a> for several elements, such as <{input}> , <{script}> ,
4541
4541
and <{template}> . SVG ought to do the same for its <{script}> elements, but does not.
4542
4542
4543
+ <div algorithm>
4543
4544
<p> To <dfn export id=concept-node-clone local-lt="clone">clone a node</dfn> given a
4544
4545
<a for=/>node</a> <var> node</var> and an optional <a for=/>document</a> <var> document</var> (default
4545
4546
<var> node</var> 's <a for=Node>node document</a> ) and boolean <var> subtree</var> (default false):
@@ -4551,12 +4552,17 @@ and <{template}>. SVG ought to do the same for its <{script}> elements, but does
4551
4552
<li><p> Let <var> copy</var> be the result of <a>cloning a single node</a> given <var> node</var> ,
4552
4553
<var> document</var> , and <var> subtree</var> .
4553
4554
4555
+ <li><p> <a>Clone a shadow host</a> given <var> node</var> , <var> copy</var> , <var> document</var> , and
4556
+ <var> subtree</var> .
4557
+
4554
4558
<li><p> If <var> subtree</var> is true, then <a>clone a node's children</a> given <var> node</var> ,
4555
4559
<var> copy</var> , <var> document</var> , and <var> subtree</var> .
4556
4560
4557
4561
<li><p> Return <var> copy</var> .
4558
4562
</ol>
4563
+ </div>
4559
4564
4565
+ <div algorithm>
4560
4566
<p> To <dfn export>clone a node's children</dfn> given a <a for=/>node</a> <var> node</var> , a
4561
4567
<a for=/>node</a> <var> copy</var> , a <a for=/>document</a> <var> document</var> , and a boolean
4562
4568
<var> subtree</var> :
@@ -4571,11 +4577,16 @@ and <{template}>. SVG ought to do the same for its <{script}> elements, but does
4571
4577
4572
4578
<li><p> <a for=/>Append</a> <var> childCopy</var> to <var> copy</var> .
4573
4579
4580
+ <li><p> <a>Clone a shadow host</a> given <var> child</var> , <var> childCopy</var> ,
4581
+ <var> document</var> , and <var> subtree</var> .
4582
+
4574
4583
<li><p> <a>Clone a node's children</a> given <var> child</var> , <var> childCopy</var> ,
4575
4584
<var> document</var> , and <var> subtree</var> .
4576
4585
</ol>
4577
4586
</ol>
4587
+ </div>
4578
4588
4589
+ <div algorithm>
4579
4590
<p> To <dfn>clone a single node</dfn> given a <a for=/>node</a> <var> node</var> ,
4580
4591
<a for=/>document</a> <var> document</var> , and boolean <var> subtree</var> :
4581
4592
@@ -4600,29 +4611,7 @@ and <{template}>. SVG ought to do the same for its <{script}> elements, but does
4600
4611
4601
4612
<li><p> <a lt="append an attribute">Append</a> <var> copyAttribute</var> to <var> copy</var> .
4602
4613
</ol>
4603
- </li>
4604
-
4605
- <li>
4606
- <p> If <var> node</var> is a <a for=Element>shadow host</a> and its
4607
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>clonable</a> is true:
4608
-
4609
- <ol>
4610
- <li><p> <a for=/>Assert</a> : <var> copy</var> is not a <a for=Element>shadow host</a> .
4611
-
4612
- <li><p> <a>Attach a shadow root</a> with <var> copy</var> , <var> node</var> 's
4613
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>mode</a>, true, <var>node</var>' s
4614
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>serializable</a>, <var>node</var>' s
4615
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>delegates focus</a>, and <var>node</var>' s
4616
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>slot assignment</a> .
4617
-
4618
- <li><p> Set <var> copy</var> 's <a for=Element>shadow root</a>' s <a for=ShadowRoot>declarative</a>
4619
- to <var> node</var> 's <a for=Element>shadow root</a>' s <a for=ShadowRoot>declarative</a> .
4620
-
4621
- <li><p> <a>Clone a node's children</a> given <var> node</var> 's <a for=Element>shadow root</a> ,
4622
- <var> copy</var> 's <a for=Element>shadow root</a> , <var> document</var> , and <var> subtree</var> .
4623
- </ol>
4624
4614
</ol>
4625
- </li>
4626
4615
4627
4616
<li>
4628
4617
<p> Otherwise, set <var> copy</var> to a <a for=/>node</a> that <a>implements</a> the same
@@ -4668,6 +4657,31 @@ and <{template}>. SVG ought to do the same for its <{script}> elements, but does
4668
4657
4669
4658
<li><p> Return <var> copy</var> .
4670
4659
</ol>
4660
+ </div>
4661
+
4662
+ <div algorithm>
4663
+ <p> To <dfn>clone a shadow host</dfn> given a <a for=/>node</a> <var> node</var> , a <a for=/>node</a>
4664
+ <var> copy</var> , a <a for=/>document</a> <var> document</var> , and a boolean <var> subtree</var> :
4665
+
4666
+ <ol>
4667
+ <li><p> If <var> node</var> is not an <a for=/>element</a> , <a for=Element>shadow host</a> , or its
4668
+ <a for=Element>shadow root</a> 's <a for=ShadowRoot>clonable</a> is false, then return.
4669
+
4670
+ <li><p> <a for=/>Assert</a> : <var> copy</var> is not a <a for=Element>shadow host</a> .
4671
+
4672
+ <li><p> <a>Attach a shadow root</a> with <var> copy</var> , <var> node</var> 's
4673
+ <a for=Element>shadow root</a> 's <a for=ShadowRoot>mode</a>, true, <var>node</var>' s
4674
+ <a for=Element>shadow root</a> 's <a for=ShadowRoot>serializable</a>, <var>node</var>' s
4675
+ <a for=Element>shadow root</a> 's <a for=ShadowRoot>delegates focus</a>, and <var>node</var>' s
4676
+ <a for=Element>shadow root</a> 's <a for=ShadowRoot>slot assignment</a> .
4677
+
4678
+ <li><p> Set <var> copy</var> 's <a for=Element>shadow root</a>' s <a for=ShadowRoot>declarative</a> to
4679
+ <var> node</var> 's <a for=Element>shadow root</a>' s <a for=ShadowRoot>declarative</a> .
4680
+
4681
+ <li><p> <a>Clone a node's children</a> given <var> node</var> 's <a for=Element>shadow root</a> ,
4682
+ <var> copy</var> 's <a for=Element>shadow root</a> , <var> document</var> , and <var> subtree</var> .
4683
+ </ol>
4684
+ </div>
4671
4685
4672
4686
<p> The <dfn method for=Node><code>cloneNode(<var>subtree</var>)</code></dfn> method steps are:
4673
4687
0 commit comments