Three fixes: 1. Framework: render-dom-lake preserves SSR elements during hydration. When client-side render-to-dom encounters a lake with an existing DOM element (from SSR), it reuses that element instead of creating a new one. This prevents the SSR HTML from being replaced with unresolvable raw SX expressions (~tw calls). 2. Stepper: skip rebuild-preview on initial hydration. Uses a non- reactive dict flag (not a signal) to avoid triggering the effect twice. On first run, just initializes the DOM stack from the existing SSR content by computing open-element depth from step types and walking lastElementChild. 3. Stepper: rebuild-preview computes correct DOM stack after re-render. Same depth computation + DOM walk approach. This fixes the bug where do-step after do-back would append elements to the wrong parent (e.g. "sx" span outside h1). Also: increased code view font-size from 0.5rem to 0.85rem. Playwright tests: - lake never shows raw SX during hydration (mutation observer) - back 6 + forward 6 keeps all 4 spans inside h1 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4 lines
10 KiB
Plaintext
4 lines
10 KiB
Plaintext
(sxbc 1 "eaa4afef6843d605"
|
|
(code
|
|
:constants ("special-form-category-map" "defmacro" "Functions & Components" "for-each" "Higher-Order Forms" "defpage" "Domain Definitions" "let" "Binding" "filter" "shift" "Continuations" "and" "Control Flow" "set!" "map-indexed" "dynamic-wind" "Guards" "reduce" "cond" "defquery" "->" "Sequencing & Threading" "let*" "define" "reset" "case" "do" "map" "some" "letrec" "if" "quote" "Quoting" "every?" "defhandler" "fn" "defstyle" "lambda" "defaction" "or" "defcomp" "quasiquote" "when" "begin" "extract-define-kwargs" {:upvalue-count 0 :arity 1 :constants ("slice" 2 "len" "for-each" {:upvalue-count 3 :arity 1 :constants ("<" "+" 1 "=" "type-of" "nth" "keyword" "keyword-name" "dict-set!" "list" "str" "(" "join" " " "map" "serialize" ")") :bytecode (16 0 1 2 0 52 1 0 2 18 0 52 0 0 2 6 33 20 0 5 18 1 16 0 52 5 0 2 52 4 0 1 1 6 0 52 3 0 2 33 94 0 20 7 0 18 1 16 0 52 5 0 2 48 1 17 1 18 1 16 0 1 2 0 52 1 0 2 52 5 0 2 17 2 18 2 16 1 16 2 52 4 0 1 1 9 0 52 3 0 2 33 29 0 1 11 0 1 13 0 20 15 0 16 2 52 14 0 2 52 12 0 2 1 16 0 52 10 0 3 32 6 0 16 2 52 10 0 1 52 8 0 3 32 1 0 2 50)} "range" 0) :bytecode (65 0 0 17 1 16 0 1 1 0 52 0 0 2 17 2 16 2 52 2 0 1 17 3 51 4 0 1 3 1 2 1 1 1 6 0 16 3 52 5 0 2 52 3 0 2 5 16 1 50)} "categorize-special-forms" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("=" "type-of" "list" ">=" "len" 2 "first" "symbol" "symbol-name" "define-special-form" "nth" 1 "extract-define-kwargs" "get" "category" "special-form-category-map" "Other" "not" "has-key?" "dict-set!" "append!" "doc" "" "example" "tail-position" "syntax" "name") :bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 6 33 59 0 5 16 0 52 4 0 1 1 5 0 52 3 0 2 6 33 41 0 5 16 0 52 6 0 1 52 1 0 1 1 7 0 52 0 0 2 6 33 19 0 5 20 8 0 16 0 52 6 0 1 48 1 1 9 0 52 0 0 2 33 188 0 16 0 1 11 0 52 10 0 2 17 1 20 12 0 16 0 48 1 17 2 16 2 1 14 0 52 13 0 2 6 34 18 0 5 20 15 0 16 1 52 13 0 2 6 34 4 0 5 1 16 0 17 3 18 0 16 3 52 18 0 2 52 17 0 1 33 15 0 18 0 16 3 52 2 0 0 52 19 0 3 32 1 0 2 5 18 0 16 3 52 13 0 2 1 21 0 16 2 1 21 0 52 13 0 2 6 34 4 0 5 1 22 0 1 23 0 16 2 1 23 0 52 13 0 2 6 34 4 0 5 1 22 0 1 24 0 16 2 1 24 0 52 13 0 2 6 34 4 0 5 1 22 0 1 25 0 16 2 1 25 0 52 13 0 2 6 34 4 0 5 1 22 0 1 26 0 16 1 65 5 0 52 20 0 2 32 1 0 2 50)}) :bytecode (65 0 0 17 1 51 1 0 1 1 16 0 52 0 0 2 5 16 1 50)} "build-ref-items-with-href" {:upvalue-count 0 :arity 4 :constants ("map" {:upvalue-count 3 :arity 1 :constants ("=" 3 "nth" 0 1 2 "href" "some" {:upvalue-count 1 :arity 1 :constants ("=") :bytecode (16 0 18 0 52 0 0 2 50)} "str" "exists" "desc" "name") :bytecode (18 0 1 1 0 52 0 0 2 33 90 0 16 0 1 3 0 52 2 0 2 17 1 16 0 1 4 0 52 2 0 2 17 2 16 0 1 5 0 52 2 0 2 17 3 1 6 0 16 3 6 33 12 0 5 51 8 0 1 1 18 1 52 7 0 2 33 11 0 18 2 16 1 52 9 0 2 32 1 0 2 1 10 0 16 3 1 11 0 16 2 1 12 0 16 1 65 4 0 32 64 0 16 0 1 3 0 52 2 0 2 17 1 16 0 1 4 0 52 2 0 2 17 2 1 6 0 51 8 0 1 1 18 1 52 7 0 2 33 11 0 18 2 16 1 52 9 0 2 32 1 0 2 1 11 0 16 2 1 12 0 16 1 65 3 0 50)}) :bytecode (51 1 0 1 3 1 2 1 1 16 0 52 0 0 2 50)} "build-reference-data" {:upvalue-count 0 :arity 3 :constants ("attributes" "=" "req-attrs" "build-ref-items-with-href" "get" "/geography/hypermedia/reference/attributes/" 3 "beh-attrs" "uniq-attrs" "headers" "req-headers" "/geography/hypermedia/reference/headers/" "resp-headers" "events" "events-list" "/geography/hypermedia/reference/events/" 2 "js-api" "js-api-list" "map" {:upvalue-count 0 :arity 1 :constants ("desc" "nth" 1 "name" 0) :bytecode (1 0 0 16 0 1 2 0 52 1 0 2 1 3 0 16 0 1 4 0 52 1 0 2 65 2 0 50)}) :bytecode (16 0 6 1 0 0 52 1 0 2 33 82 0 5 1 2 0 20 3 0 16 1 1 2 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 7 0 20 3 0 16 1 1 7 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 8 0 20 3 0 16 1 1 8 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 65 3 0 32 227 0 6 1 9 0 52 1 0 2 33 57 0 5 1 10 0 20 3 0 16 1 1 10 0 52 4 0 2 1 11 0 16 2 1 6 0 48 4 1 12 0 20 3 0 16 1 1 12 0 52 4 0 2 1 11 0 16 2 1 6 0 48 4 65 2 0 32 159 0 6 1 13 0 52 1 0 2 33 32 0 5 1 14 0 20 3 0 16 1 1 14 0 52 4 0 2 1 15 0 16 2 1 16 0 48 4 65 1 0 32 116 0 6 1 17 0 52 1 0 2 33 26 0 5 1 18 0 51 20 0 16 1 1 18 0 52 4 0 2 52 19 0 2 65 1 0 32 79 0 5 1 2 0 20 3 0 16 1 1 2 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 7 0 20 3 0 16 1 1 7 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 1 8 0 20 3 0 16 1 1 8 0 52 4 0 2 1 5 0 16 2 1 6 0 48 4 65 3 0 50)} "build-attr-detail" {:upvalue-count 0 :arity 2 :constants ("nil?" "attr-not-found" "attr-handler" "get" "handler" "attr-title" "attr-example" "example" "attr-description" "description" "attr-demo" "demo" "attr-wire-id" "has-key?" "str" "ref-wire-" "replace" ":" "-" "*" "star") :bytecode (16 1 52 0 0 1 33 10 0 1 1 0 3 65 1 0 32 108 0 1 2 0 16 1 1 4 0 52 3 0 2 1 5 0 16 0 1 6 0 16 1 1 7 0 52 3 0 2 1 1 0 2 1 8 0 16 1 1 9 0 52 3 0 2 1 10 0 16 1 1 11 0 52 3 0 2 1 12 0 16 1 1 4 0 52 13 0 2 33 32 0 1 15 0 16 0 1 17 0 1 18 0 52 16 0 3 1 19 0 1 20 0 52 16 0 3 52 14 0 2 32 1 0 2 65 7 0 50)} "build-header-detail" {:upvalue-count 0 :arity 2 :constants ("nil?" "header-not-found" "header-description" "get" "description" "header-demo" "demo" "header-title" "header-example" "example" "header-direction" "direction") :bytecode (16 1 52 0 0 1 33 10 0 1 1 0 3 65 1 0 32 60 0 1 2 0 16 1 1 4 0 52 3 0 2 1 5 0 16 1 1 6 0 52 3 0 2 1 1 0 2 1 7 0 16 0 1 8 0 16 1 1 9 0 52 3 0 2 1 10 0 16 1 1 11 0 52 3 0 2 65 6 0 50)} "build-event-detail" {:upvalue-count 0 :arity 2 :constants ("nil?" "event-not-found" "event-example" "get" "example" "event-demo" "demo" "event-description" "description" "event-title") :bytecode (16 1 52 0 0 1 33 10 0 1 1 0 3 65 1 0 32 48 0 1 2 0 16 1 1 4 0 52 3 0 2 1 5 0 16 1 1 6 0 52 3 0 2 1 7 0 16 1 1 8 0 52 3 0 2 1 1 0 2 1 9 0 16 0 65 5 0 50)} "build-component-source" {:upvalue-count 0 :arity 1 :constants ("get" "type" "name" "params" "has-children" "body-sx" "affinity" "=" "not-found" "str" ";; component " " not found" "empty?" "list" "&rest" "children" "append" "cons" "&key" "(" "join" " " ")" "island" "defisland" "defcomp" "component" "not" "nil?" "auto" " :affinity " "" "\n ") :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 16 0 1 3 0 52 0 0 2 17 3 16 0 1 4 0 52 0 0 2 17 4 16 0 1 5 0 52 0 0 2 17 5 16 0 1 6 0 52 0 0 2 17 6 16 1 1 8 0 52 7 0 2 33 15 0 1 10 0 16 2 1 11 0 52 9 0 3 32 211 0 16 3 52 12 0 1 33 25 0 16 4 33 13 0 1 14 0 1 15 0 52 13 0 2 32 4 0 52 13 0 0 32 40 0 16 4 33 26 0 1 18 0 16 3 52 17 0 2 1 14 0 1 15 0 52 13 0 2 52 16 0 2 32 9 0 1 18 0 16 3 52 17 0 2 17 7 1 19 0 1 21 0 16 7 52 20 0 2 1 22 0 52 9 0 3 17 8 16 1 1 23 0 52 7 0 2 33 6 0 1 24 0 32 3 0 1 25 0 17 9 16 1 1 26 0 52 7 0 2 6 33 29 0 5 16 6 52 28 0 1 52 27 0 1 6 33 14 0 5 16 6 1 29 0 52 7 0 2 52 27 0 1 33 12 0 1 30 0 16 6 52 9 0 2 32 3 0 1 31 0 17 10 1 19 0 16 9 1 21 0 16 2 1 21 0 16 8 16 10 1 32 0 16 5 1 22 0 52 9 0 10 50)} "build-bundle-analysis" {:upvalue-count 0 :arity 6 :constants ("list" "for-each" {:upvalue-count 3 :arity 1 :constants ("get" "needed-names" "len" ">" 0 "round" "*" "/" 100 "-" "list" "for-each" {:upvalue-count 5 :arity 1 :constants ("get" "not" "nil?" "is-pure" "+" 1 "for-each" {:upvalue-count 1 :arity 1 :constants ("not" "some" {:upvalue-count 1 :arity 1 :constants ("=") :bytecode (16 0 18 0 52 0 0 2 50)} "append!") :bytecode (51 2 0 1 0 18 0 52 1 0 2 52 0 0 1 33 11 0 18 0 16 0 52 3 0 2 32 1 0 2 50)} "io-refs" "list" "append!" "render-target" "deps" "source" "name" "affinity") :bytecode (18 0 16 0 52 0 0 2 17 1 16 1 52 2 0 1 52 1 0 1 33 173 0 16 1 1 3 0 52 0 0 2 33 14 0 18 1 1 5 0 52 4 0 2 19 1 32 39 0 18 2 1 5 0 52 4 0 2 19 2 5 51 7 0 0 3 16 1 1 8 0 52 0 0 2 6 34 5 0 5 52 9 0 0 52 6 0 2 5 18 4 1 8 0 16 1 1 8 0 52 0 0 2 6 34 5 0 5 52 9 0 0 1 11 0 16 1 1 11 0 52 0 0 2 1 12 0 16 1 1 12 0 52 0 0 2 6 34 5 0 5 52 9 0 0 1 13 0 16 1 1 13 0 52 0 0 2 1 14 0 16 0 1 3 0 16 1 1 3 0 52 0 0 2 1 15 0 16 1 1 15 0 52 0 0 2 65 7 0 52 10 0 2 32 1 0 2 50)} "append!" "pure-in-page" "io-refs" "direct" "needed" "io-in-page" "components" "savings" "pct" "path" "name") :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 1 52 2 0 1 17 2 18 0 1 4 0 52 3 0 2 33 22 0 16 2 18 0 52 7 0 2 1 8 0 52 6 0 2 52 5 0 1 32 3 0 1 4 0 17 3 1 8 0 16 3 52 9 0 2 17 4 1 4 0 17 5 1 4 0 17 6 52 10 0 0 17 7 52 10 0 0 17 8 51 12 0 0 1 1 5 1 6 1 7 1 8 16 1 52 11 0 2 5 18 2 1 14 0 16 5 1 15 0 16 7 52 2 0 1 1 16 0 16 0 1 16 0 52 0 0 2 1 17 0 16 2 1 18 0 16 6 1 19 0 16 8 1 20 0 16 4 1 21 0 16 3 1 22 0 16 0 1 22 0 52 0 0 2 1 23 0 16 0 1 23 0 52 0 0 2 65 10 0 52 13 0 2 50)} "total-macros" "pages" "io-count" "pure-count" "total-components") :bytecode (52 0 0 0 17 6 51 2 0 1 2 1 1 1 6 16 0 52 1 0 2 5 1 3 0 16 3 1 4 0 16 6 1 5 0 16 5 1 6 0 16 4 1 7 0 16 2 65 5 0 50)} "build-routing-analysis" {:upvalue-count 0 :arity 1 :constants ("list" 0 "for-each" {:upvalue-count 3 :arity 1 :constants ("not" "nil?" "get" "data" "content-src" "" "server" "Has :data expression — needs server IO" "+" 1 "empty?" "No content expression" "client" "append!" "reason" "mode" "content-expr" ">" "len" 80 "str" "slice" 0 "..." "has-data" "path" "name") :bytecode (16 0 1 3 0 52 2 0 2 52 1 0 1 52 0 0 1 17 1 16 0 1 4 0 52 2 0 2 6 34 4 0 5 1 5 0 17 2 2 17 3 1 5 0 17 4 16 1 33 26 0 1 6 0 17 3 5 1 7 0 17 4 5 18 0 1 9 0 52 8 0 2 19 0 32 52 0 16 2 52 10 0 1 33 26 0 1 6 0 17 3 5 1 11 0 17 4 5 18 0 1 9 0 52 8 0 2 19 0 32 17 0 1 12 0 17 3 5 18 1 1 9 0 52 8 0 2 19 1 5 18 2 1 14 0 16 4 1 15 0 16 3 1 16 0 16 2 52 18 0 1 1 19 0 52 17 0 2 33 22 0 16 2 1 22 0 1 19 0 52 21 0 3 1 23 0 52 20 0 2 32 2 0 16 2 1 24 0 16 1 1 25 0 16 0 1 25 0 52 2 0 2 1 26 0 16 0 1 26 0 52 2 0 2 65 6 0 52 13 0 2 50)} "pages" "total-pages" "+" "server-count" "client-count") :bytecode (52 0 0 0 17 1 1 1 0 17 2 1 1 0 17 3 51 3 0 1 3 1 2 1 1 16 0 52 2 0 2 5 1 4 0 16 1 1 5 0 16 2 16 3 52 6 0 2 1 7 0 16 3 1 8 0 16 2 65 4 0 50)} "build-affinity-analysis" {:upvalue-count 0 :arity 2 :constants ("components" "page-plans") :bytecode (1 0 0 16 0 1 1 0 16 1 65 2 0 50)}) :bytecode (1 1 0 1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 1 7 0 1 8 0 1 9 0 1 4 0 1 10 0 1 11 0 1 12 0 1 13 0 1 14 0 1 8 0 1 15 0 1 4 0 1 16 0 1 17 0 1 18 0 1 4 0 1 19 0 1 13 0 1 20 0 1 6 0 1 21 0 1 22 0 1 23 0 1 8 0 1 24 0 1 8 0 1 25 0 1 11 0 1 26 0 1 13 0 1 27 0 1 22 0 1 28 0 1 4 0 1 29 0 1 4 0 1 30 0 1 8 0 1 31 0 1 13 0 1 32 0 1 33 0 1 34 0 1 4 0 1 35 0 1 6 0 1 36 0 1 2 0 1 37 0 1 6 0 1 38 0 1 2 0 1 39 0 1 6 0 1 40 0 1 13 0 1 41 0 1 2 0 1 42 0 1 33 0 1 43 0 1 13 0 1 44 0 1 22 0 65 35 0 128 0 0 5 51 46 0 128 45 0 5 51 48 0 128 47 0 5 51 50 0 128 49 0 5 51 52 0 128 51 0 5 51 54 0 128 53 0 5 51 56 0 128 55 0 5 51 58 0 128 57 0 5 51 60 0 128 59 0 5 51 62 0 128 61 0 5 51 64 0 128 63 0 5 51 66 0 128 65 0 50)))
|