@@ -4097,7 +4097,7 @@ interface Node : EventTarget {
4097
4097
[CEReactions] attribute DOMString? textContent;
4098
4098
[CEReactions] undefined normalize();
4099
4099
4100
- [CEReactions, NewObject] Node cloneNode(optional boolean deep = false);
4100
+ [CEReactions, NewObject] Node cloneNode(optional boolean subtree = false);
4101
4101
boolean isEqualNode(Node? otherNode);
4102
4102
boolean isSameNode(Node? otherNode); // legacy alias of ===
4103
4103
@@ -4520,9 +4520,9 @@ each <a for=tree>descendant</a> <a>exclusive <code>Text</code> node</a> <var>nod
4520
4520
<hr>
4521
4521
4522
4522
<dl class=domintro>
4523
- <dt><code><var> node</var> . <a method for=Node lt=cloneNode()>cloneNode([<var>deep </var> = false])</a> </code>
4523
+ <dt><code><var> node</var> . <a method for=Node lt=cloneNode()>cloneNode([<var>subtree </var> = false])</a> </code>
4524
4524
<dd> Returns a copy of <var> node</var> . If
4525
- <var> deep </var> is true, the copy also includes the
4525
+ <var> subtree </var> is true, the copy also includes the
4526
4526
<var> node</var> 's <a for=tree>descendants</a> .
4527
4527
4528
4528
<dt><code><var> node</var> . {{Node/isEqualNode(otherNode)}} </code>
@@ -4534,31 +4534,59 @@ each <a for=tree>descendant</a> <a>exclusive <code>Text</code> node</a> <var>nod
4534
4534
4535
4535
<a lt="Other applicable specifications">Specifications</a> may define
4536
4536
<dfn export id=concept-node-clone-ext>cloning steps</dfn> for all or some <a for=/>nodes</a> . The
4537
- algorithm is passed <var> copy </var> , <var> node </var> , <var> document </var> , and an optional
4538
- <i > clone children flag </i> , as indicated in the <a lt="clone a node">clone </a> algorithm.
4537
+ algorithm is passed <var> node </var> , <var> copy </var> , and <var> subtree </var> as indicated in the
4538
+ <a >clone a single node</a> algorithm.
4539
4539
4540
- <p class=note> HTML defines <a>cloning steps</a> for <{script}> and <{input}>
4541
- elements. SVG ought to do the same for its <{script}> elements, but does not call this out
4542
- at the moment.
4540
+ <p class=note> HTML defines <a>cloning steps</a> for several elements, such as <{input}> , <{script}> ,
4541
+ and <{template}> . SVG ought to do the same for its <{script}> elements, but does not.
4543
4542
4544
- <p> To <dfn export id=concept-node-clone lt="clone a node" local-lt="clone">clone</dfn> a
4545
- <var> node</var> , with an optional <var> document</var> and <i> clone children flag</i> , run these
4546
- steps:
4547
- <!-- This algorithm is used by dom-Node-cloneNode, dom-Document-importNode,
4548
- dom-Range-extractContents, dom-Range-cloneContents -->
4543
+ <p> To <dfn export id=concept-node-clone local-lt="clone">clone a node</dfn> given a
4544
+ <a for=/>node</a> <var> node</var> and an optional <a for=/>document</a> <var> document</var> (default
4545
+ <var> node</var> 's <a for=Node>node document</a> ) and boolean <var> subtree</var> (default false):
4549
4546
4550
4547
<ol>
4551
- <li><p> If <var> document</var> is not given, then set <var> document</var> to <var> node</var> 's
4552
- <a for=Node>node document</a> .
4553
-
4554
4548
<li> <a for=/>Assert</a> : <var> node</var> is not a <a for=/>document</a> or <var> node</var> is
4555
4549
<var> document</var> .
4556
4550
4551
+ <li><p> Let <var> copy</var> be the result of <a>cloning a single node</a> given <var> node</var> ,
4552
+ <var> document</var> , and <var> subtree</var> .
4553
+
4554
+ <li><p> If <var> subtree</var> is true, then <a>clone a node's children</a> given <var> node</var> ,
4555
+ <var> copy</var> , <var> document</var> , and <var> subtree</var> .
4556
+
4557
+ <li><p> Return <var> copy</var> .
4558
+ </ol>
4559
+
4560
+ <p> To <dfn export>clone a node's children</dfn> given a <a for=/>node</a> <var> node</var> , a
4561
+ <a for=/>node</a> <var> copy</var> , a <a for=/>document</a> <var> document</var> , and a boolean
4562
+ <var> subtree</var> :
4563
+
4564
+ <ol>
4565
+ <li>
4566
+ <p> For each <var> child</var> of <var> node</var> 's <a for=tree>children</a> , in <a>tree order</a> :
4567
+
4568
+ <ol>
4569
+ <li><p> Let <var> childCopy</var> be the result of <a>cloning a single node</a> given
4570
+ <var> node</var> , <var> document</var> , and <var> subtree</var> .
4571
+
4572
+ <li><p> <a for=/>Append</a> <var> childCopy</var> to <var> copy</var> .
4573
+
4574
+ <li><p> <a>Clone a node's children</a> given <var> child</var> , <var> childCopy</var> ,
4575
+ <var> document</var> , and <var> subtree</var> .
4576
+ </ol>
4577
+ </ol>
4578
+
4579
+ <p> To <dfn>clone a single node</dfn> given a <a for=/>node</a> <var> node</var> ,
4580
+ <a for=/>document</a> <var> document</var> , and boolean <var> subtree</var> :
4581
+
4582
+ <ol>
4583
+ <li><p> Let <var> copy</var> be null.
4584
+
4557
4585
<li>
4558
4586
<p> If <var> node</var> is an <a for=/>element</a> :
4559
4587
4560
4588
<ol>
4561
- <li><p> Let <var> copy</var> be the result of <a>creating an element</a> , given
4589
+ <li><p> Set <var> copy</var> to the result of <a>creating an element</a> , given
4562
4590
<var> document</var> , <var> node</var> 's <a for=Element>local name</a>, <var>node</var>' s
4563
4591
<a for=Element>namespace</a> , <var> node</var> 's <a for=Element>namespace prefix</a> , and
4564
4592
<var> node</var> 's <a><code>is</code> value</a> .
@@ -4573,11 +4601,31 @@ dom-Range-extractContents, dom-Range-cloneContents -->
4573
4601
<li><p> <a lt="append an attribute">Append</a> <var> copyAttribute</var> to <var> copy</var> .
4574
4602
</ol>
4575
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> Assert: <var> copy</var> is not a <a for=Element>shadow host</a> .
4611
+
4612
+ <li><p> Run <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> , and <var> document</var> .
4623
+ </ol>
4576
4624
</ol>
4577
4625
</li>
4578
4626
4579
4627
<li>
4580
- <p> Otherwise, let <var> copy</var> be a <a for=/>node</a> that <a>implements</a> the same
4628
+ <p> Otherwise, set <var> copy</var> to a <a for=/>node</a> that <a>implements</a> the same
4581
4629
interfaces as <var> node</var> , and fulfills these additional requirements, switching on the
4582
4630
interface <var> node</var> <a>implements</a> :
4583
4631
@@ -4607,53 +4655,28 @@ dom-Range-extractContents, dom-Range-cloneContents -->
4607
4655
<dd><p> Do nothing.
4608
4656
</dl>
4609
4657
4658
+ <li><p> <a for=/>Assert</a> : <var> copy</var> is a <a for=/>node</a> .
4659
+
4610
4660
<li><p> If <var> node</var> is a <a for=/>document</a> , then set <var> document</var> to
4611
4661
<var> copy</var> .
4612
4662
4613
4663
<li><p> Set <var> copy</var> 's <a for=Node>node document</a> to <var> document</var> .
4614
4664
4615
4665
<li><p> Run any <a>cloning steps</a> defined for <var> node</var> in
4616
- <a>other applicable specifications</a> and pass <var> copy</var> , <var> node</var> ,
4617
- <var> document</var> , and the <i> clone children flag</i> if set, as parameters.
4618
-
4619
- <li><p> If the <i> clone children flag</i> is set, then for each <a for=tree>child</a>
4620
- <var> child</var> of <var> node</var> , in <a>tree order</a> : <a>append</a> the result of
4621
- <a lt="clone a node">cloning</a> <var> child</var> with <var> document</var> and the
4622
- <i> clone children flag</i> set, to <var> copy</var> .
4623
-
4624
- <li>
4625
- <p> If <var> node</var> is a <a for=Element>shadow host</a> whose <a for=/>shadow root</a> 's
4626
- <a for=ShadowRoot>clonable</a> is true:
4627
-
4628
- <ol>
4629
- <li><p> Assert: <var> copy</var> is not a <a for=Element>shadow host</a> .
4630
-
4631
- <li><p> Run <a>attach a shadow root</a> with <var> copy</var> , <var> node</var> 's
4632
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>mode</a>, true, <var>node</var>' s
4633
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>serializable</a>, <var>node</var>' s
4634
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>delegates focus</a>, and <var>node</var>' s
4635
- <a for=Element>shadow root</a> 's <a for=ShadowRoot>slot assignment</a> .
4636
-
4637
- <li><p> Set <var> copy</var> 's <a for=Element>shadow root</a>' s <a for=ShadowRoot>declarative</a>
4638
- to <var> node</var> 's <a for=Element>shadow root</a>' s <a for=ShadowRoot>declarative</a> .
4639
-
4640
- <li><p> For each <a for=tree>child</a> <var> child</var> of <var> node</var> 's
4641
- <a for=Element>shadow root</a> , in <a>tree order</a> : <a>append</a> the result of
4642
- <a lt="clone a node">cloning</a> <var> child</var> with <var> document</var> and the
4643
- <i> clone children flag</i> set, to <var> copy</var> 's <a for=Element>shadow root</a> .
4644
- </ol>
4666
+ <a>other applicable specifications</a> and pass <var> node</var> , <var> copy</var> , and
4667
+ <var> subtree</var> .
4645
4668
4646
4669
<li><p> Return <var> copy</var> .
4647
4670
</ol>
4648
4671
4649
- <p> The <dfn method for=Node><code>cloneNode(<var>deep </var>)</code></dfn> method steps are:
4672
+ <p> The <dfn method for=Node><code>cloneNode(<var>subtree </var>)</code></dfn> method steps are:
4650
4673
4651
4674
<ol>
4652
4675
<li><p> If <a>this</a> is a <a for=/>shadow root</a> , then <a>throw</a> a
4653
4676
"{{NotSupportedError!!exception}} " {{DOMException}} .
4654
4677
4655
- <li><p> Return a <a lt="clone a node">clone </a> of <a>this</a> , with the
4656
- <i> clone children flag </i> set if <var> deep </var> is true .
4678
+ <li><p> Return the result of <a>cloning a node</a> given <a>this</a> , <a>this</a> 's
4679
+ <a for=Node>node document</a> , and <var> subtree </var> .
4657
4680
</ol>
4658
4681
4659
4682
<p> A <a for=/>node</a> <var> A</var> <dfn export for=Node id=concept-node-equals>equals</dfn> a
@@ -5126,7 +5149,7 @@ interface Document : Node {
5126
5149
[NewObject] Comment createComment(DOMString data);
5127
5150
[NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
5128
5151
5129
- [CEReactions, NewObject] Node importNode(Node node, optional boolean deep = false);
5152
+ [CEReactions, NewObject] Node importNode(Node node, optional boolean subtree = false);
5130
5153
[CEReactions] Node adoptNode(Node node);
5131
5154
5132
5155
[NewObject] Attr createAttribute(DOMString localName);
@@ -5552,9 +5575,9 @@ method steps are:
5552
5575
<hr>
5553
5576
5554
5577
<dl class=domintro>
5555
- <dt><var> clone</var> = <var> document</var> . <a method for=Document lt=importNode()>importNode(<var>node</var> [, <var>deep </var> = false])</a>
5578
+ <dt><var> clone</var> = <var> document</var> . <a method for=Document lt=importNode()>importNode(<var>node</var> [, <var>subtree </var> = false])</a>
5556
5579
<dd>
5557
- <p> Returns a copy of <var> node</var> . If <var> deep </var> is true, the copy also includes the
5580
+ <p> Returns a copy of <var> node</var> . If <var> subtree </var> is true, the copy also includes the
5558
5581
<var> node</var> 's <a for=tree>descendants</a> .
5559
5582
5560
5583
<p> If <var> node</var> is a <a>document</a> or a <a for=/>shadow root</a> , throws a
@@ -5571,15 +5594,15 @@ method steps are:
5571
5594
"{{HierarchyRequestError!!exception}} " {{DOMException}} .
5572
5595
</dl>
5573
5596
5574
- <p> The <dfn method for=Document><code>importNode(<var>node</var>, <var>deep </var>)</code></dfn>
5597
+ <p> The <dfn method for=Document><code>importNode(<var>node</var>, <var>subtree </var>)</code></dfn>
5575
5598
method steps are:
5576
5599
5577
5600
<ol>
5578
5601
<li><p> If <var> node</var> is a <a>document</a> or <a for=/>shadow root</a> , then <a>throw</a> a
5579
5602
"{{NotSupportedError!!exception}} " {{DOMException}} .
5580
5603
5581
- <li><p> Return a <a lt="clone a node">clone </a> of <var> node</var> , with <a>this</a> and the
5582
- <i> clone children flag </i> set if < var>deep </var> is true .
5604
+ <li><p> Return the result of <a>cloning a node</a> given <var> node</var> , <a>this</a> , and
5605
+ <var> subtree </var> .
5583
5606
</ol>
5584
5607
5585
5608
<p> <a lt="Other applicable specifications">Specifications</a> may define
0 commit comments