Skip to content

Commit bce5226

Browse files
committed
merge most of clone a node and clone a node's children
1 parent 5038354 commit bce5226

File tree

1 file changed

+37
-53
lines changed

1 file changed

+37
-53
lines changed

dom.bs

Lines changed: 37 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4551,16 +4551,48 @@ and <{template}>. SVG ought to do the same for its <{script}> elements, but does
45514551
<li><p><a for=/>Assert</a>: <var>node</var> is not a <a for=/>document</a> or <var>node</var> is
45524552
<var>document</var>.
45534553

4554+
<li><p>Return the result of <a>cloning a node and append</a> given <var>node</var>, null,
4555+
<var>document</var>, and <var>subtree</var>.
4556+
</ol>
4557+
</div>
4558+
4559+
<div algorithm>
4560+
<p>To <dfn export>clone a node and append</dfn> given a <a for=/>node</a> <var>node</var>, a
4561+
<a for=/>node</a>-or-null <var>parent</var>, a <a for=/>document</a> <var>document</var>, and a
4562+
boolean <var>subtree</var>:
4563+
4564+
<ol>
45544565
<li><p>Let <var>copy</var> be the result of <a>cloning a single node</a> given <var>node</var>,
45554566
<var>document</var>, and <var>subtree</var>.
45564567

4557-
<li><p><a>Clone a shadow host</a> given <var>node</var>, <var>copy</var>, <var>document</var>, and
4558-
<var>subtree</var>.
4568+
<li><p>If <var>parent</var> is non-null, then <a for=/>append</a> <var>childCopy</var> to
4569+
<var>parentCopy</var>.
45594570

4560-
<li><p>If <var>subtree</var> is true, then <a>clone a node's children</a> given <var>node</var>,
4561-
<var>copy</var>, <var>document</var>, and <var>subtree</var>.
4571+
<li>
4572+
<p>If <var>node</var> is an <a for=/>element</a>, <a for=Element>shadow host</a>, and its
4573+
<a for=Element>shadow root</a>'s <a for=ShadowRoot>clonable</a> is true:
45624574

4563-
<li><p>Return <var>copy</var>.
4575+
<ol>
4576+
<li><p><a for=/>Assert</a>: <var>copy</var> is not a <a for=Element>shadow host</a>.
4577+
4578+
<li><p><a>Attach a shadow root</a> with <var>copy</var>, <var>node</var>'s
4579+
<a for=Element>shadow root</a>'s <a for=ShadowRoot>mode</a>, true, <var>node</var>'s
4580+
<a for=Element>shadow root</a>'s <a for=ShadowRoot>serializable</a>, <var>node</var>'s
4581+
<a for=Element>shadow root</a>'s <a for=ShadowRoot>delegates focus</a>, and <var>node</var>'s
4582+
<a for=Element>shadow root</a>'s <a for=ShadowRoot>slot assignment</a>.
4583+
4584+
<li><p>Set <var>copy</var>'s <a for=Element>shadow root</a>'s <a for=ShadowRoot>declarative</a>
4585+
to <var>node</var>'s <a for=Element>shadow root</a>'s <a for=ShadowRoot>declarative</a>.
4586+
4587+
<li><p>For each <var>child</var> of <var>node</var>'s <a for=Element>shadow root</a>'s
4588+
<a for=tree>children</a>, in <a>tree order</a>, <a>clone a node and append</a> given
4589+
<var>child</var>, <var>copy</var>'s <a for=Element>shadow root</a>, <var>document</var>, and
4590+
<var>subtree</var>.
4591+
</ol>
4592+
4593+
<li><p>If <var>subtree</var> is true, then for each <var>child</var> of <var>node</var>'s
4594+
<a for=tree>children</a>, in <a>tree order</a>: <a>clone a node and append</a> given
4595+
<var>child</var>, <var>copy</var>, <var>document</var>, and <var>subtree</var>.
45644596
</ol>
45654597
</div>
45664598

@@ -4637,54 +4669,6 @@ and <{template}>. SVG ought to do the same for its <{script}> elements, but does
46374669
</ol>
46384670
</div>
46394671

4640-
<div algorithm>
4641-
<p>To <dfn>clone a shadow host</dfn> given a <a for=/>node</a> <var>node</var>, a <a for=/>node</a>
4642-
<var>copy</var>, a <a for=/>document</a> <var>document</var>, and a boolean <var>subtree</var>:
4643-
4644-
<ol>
4645-
<li><p>If <var>node</var> is not an <a for=/>element</a>, <a for=Element>shadow host</a>, or its
4646-
<a for=Element>shadow root</a>'s <a for=ShadowRoot>clonable</a> is false, then return.
4647-
4648-
<li><p><a for=/>Assert</a>: <var>copy</var> is not a <a for=Element>shadow host</a>.
4649-
4650-
<li><p><a>Attach a shadow root</a> with <var>copy</var>, <var>node</var>'s
4651-
<a for=Element>shadow root</a>'s <a for=ShadowRoot>mode</a>, true, <var>node</var>'s
4652-
<a for=Element>shadow root</a>'s <a for=ShadowRoot>serializable</a>, <var>node</var>'s
4653-
<a for=Element>shadow root</a>'s <a for=ShadowRoot>delegates focus</a>, and <var>node</var>'s
4654-
<a for=Element>shadow root</a>'s <a for=ShadowRoot>slot assignment</a>.
4655-
4656-
<li><p>Set <var>copy</var>'s <a for=Element>shadow root</a>'s <a for=ShadowRoot>declarative</a> to
4657-
<var>node</var>'s <a for=Element>shadow root</a>'s <a for=ShadowRoot>declarative</a>.
4658-
4659-
<li><p><a>Clone a node's children</a> given <var>node</var>'s <a for=Element>shadow root</a>,
4660-
<var>copy</var>'s <a for=Element>shadow root</a>, <var>document</var>, and <var>subtree</var>.
4661-
</ol>
4662-
</div>
4663-
4664-
<div algorithm>
4665-
<p>To <dfn export>clone a node's children</dfn> given a <a for=/>node</a> <var>node</var>, a
4666-
<a for=/>node</a> <var>copy</var>, a <a for=/>document</a> <var>document</var>, and a boolean
4667-
<var>subtree</var>:
4668-
4669-
<ol>
4670-
<li>
4671-
<p>For each <var>child</var> of <var>node</var>'s <a for=tree>children</a>, in <a>tree order</a>:
4672-
4673-
<ol>
4674-
<li><p>Let <var>childCopy</var> be the result of <a>cloning a single node</a> given
4675-
<var>child</var>, <var>document</var>, and <var>subtree</var>.
4676-
4677-
<li><p><a for=/>Append</a> <var>childCopy</var> to <var>copy</var>.
4678-
4679-
<li><p><a>Clone a shadow host</a> given <var>child</var>, <var>childCopy</var>,
4680-
<var>document</var>, and <var>subtree</var>.
4681-
4682-
<li><p><a>Clone a node's children</a> given <var>child</var>, <var>childCopy</var>,
4683-
<var>document</var>, and <var>subtree</var>.
4684-
</ol>
4685-
</ol>
4686-
</div>
4687-
46884672
<div algorithm>
46894673
<p>The <dfn method for=Node><code>cloneNode(<var>subtree</var>)</code></dfn> method steps are:
46904674

0 commit comments

Comments
 (0)