Re: [whatwg/dom] Introduce `moveBefore()` state-preserving atomic move API (PR #1307)

@domfarolino commented on this pull request.



> + <li><p>Let <var>oldParent</var> be <var>node</var>'s <a for=tree>parent</a>.
+
+ <li><p><a>Assert</a>: <var>oldParent</var> is non-null.
+
+ <li><p>Let <var>index</var> be <var>node</var>'s <a for=tree>index</a>.
+
+ <li>
+  <p>For each <a>live range</a> whose <a for=range>start node</a> is <var>parent</var> and
+  <a for=range>start offset</a> is greater than <var>index</var>, decrease its
+  <a for=range>start offset</a> by 1.</p>
+
+  <p class="note">Note that unlike the traditional <a for=/ lt="remove">removal</a> case, we do not
+  need to update <a>live range</a> state when their <a for=range>start node</a> or
+  <a for=range>end node</a> is an <a>inclusive descendant</a> of the <var>node</var>. This is
+  because said <a>nodes</a> do not get removed from their <a>tree</a>, so ranges associated with
+  them stay intact.</p>

In that case, we wouldn't be able to preserve selection with `moveBefore()`, which is one of the pieces of state we were really hoping to preserve with this API. This is especially annoying when you `moveBefore()` the selection range's start container to somewhere earlier in the doc, or the end container somewhere later. The range is still totally valid, so it seems like we should be able to preserve selection. What do you think?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/pull/1307#discussion_r1838308368
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/dom/pull/1307/review/2429939711@github.com>

Received on Tuesday, 12 November 2024 15:30:10 UTC