render-dom-lake: mark reused lakes to prevent SPA nav conflicts

After reusing an SSR lake element, set data-sx-lake-claimed attribute.
Subsequent dom-query uses :not([data-sx-lake-claimed]) to skip already-
reused elements, preventing SPA navigation from picking up stale lakes
from previous pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 15:30:50 +00:00
parent 547d271571
commit bea8779aea
11 changed files with 45 additions and 20 deletions

View File

@@ -433,7 +433,15 @@
(run-post-render-hooks)
(flush-collected-styles)
(set-timeout (fn () (process-elements nil)) 0)
(dom-listen (dom-window) "popstate" (fn (e) (handle-popstate 0)))
(dom-listen
(dom-window)
"popstate"
(fn
(e)
(let
((state (host-get e "state"))
(scrollY (if state (or (dict-get state "scrollY") 0) 0)))
(handle-popstate scrollY))))
(dom-set-attr
(host-get (dom-document) "documentElement")
"data-sx-ready"