- From: Carlos Lopez <notifications@github.com>
- Date: Fri, 21 Jul 2023 08:40:07 -0700
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <WICG/webcomponents/issues/1021@github.com>
First off, this is not related to the DOM Parts API. This is related to the [part] attribute and `::part()` CSS syntax Essentially, instead of my current structure is Interpolate (once): * Walk document fragment tree * * autogenerate an ID to each node that will be referenced later if non available * Store interpolated fragment Store References (once per element): * clone interpolated fragment * **find to-be-referenced nodes by fragment.getElementById(name)** * store reference of nodes * remove ID if it was autogenerated * append clone to ShadowRoot Render * use node reference list to update DOM * allow attributeChangedCallback to fire As it stands, there's only one DOM walk needed and it's on interpolation. While `getElementById` is faster, likely because it's indexed by the browser, than walking the nodes, using an XPath, or `querySelector([part="foo"])`, it gets convoluted when the ID is needed for anchor destinations (`#hash`). Because `[part]` is "just as unique" as `[id]`, but without the conflict with HTMLAnchorElement, it should be "just as good" as `getElementById`. I had considered if this should be on `ShadowRoot`'s prototype, but that would mean you would have to attach it to the `ShadowRoot` first, before you can find the nodes. There is some value to do more `DocumentFragment` manipulation before landing on the active document. Mixing in with DOM-Parts could be interesting, though I'd imagine the API will get renamed before shipping: https://github.com/WICG/webcomponents/issues/902 -- Reply to this email directly or view it on GitHub: https://github.com/WICG/webcomponents/issues/1021 You are receiving this because you are subscribed to this thread. Message ID: <WICG/webcomponents/issues/1021@github.com>
Received on Friday, 21 July 2023 15:40:12 UTC