Files
rose-ash/shared/static/wasm/sx/hs-htmx.sxbc
giles 4aa49e42e8 htmx demos working: activation, fetch, swap, OOB filtering, test runner page
- htmx-boot-subtree! wired into process-elements for auto-activation
- Fixed cond compilation bug in hx-verb-info (Clojure-style flat cond)
- Platform io-fetch upgraded: method/body/headers support, full response dict
- Replaced perform IO ops with browser primitives (set-timeout, browser-confirm, etc)
- SX→HTML rendering in hx-do-swap with OOB section filtering
- hx-collect-params: collects input name/value for all methods
- Handler naming: ex-{slug} convention, removed perform IO dependencies
- Test runner page at (test.(applications.(htmx))) with iframe-based runner
- Header "test" link on every page linking to test URL
- Page file restructure: 285 files moved to URL-matching paths (a/b/c/index.sx)
- page-functions.sx: ~100 component name references updated
- _test added to skip_dirs, test- file prefix convention for test files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 11:56:15 +00:00

4 lines
37 KiB
Plaintext

(sxbc 1 "ca358d21a134783c"
(code
:constants ("HX-CONFIG-DEFAULTS" "defaultTimeout" 60000 "transitions" "defaultSwap" "innerHTML" "requestClass" "htmx-request" "defaultSettleDelay" 1 "implicitInheritance" "noSwap" "list" 204 304 "HX-REQUEST-CLASS" "url-encode-params" {:upvalue-count 0 :arity 1 :constants ("Encode dict as URL query string: {:a 1 :b 2} → 'a=1&b=2'." "map" {:upvalue-count 1 :arity 1 :constants ("str" "=" "get") :bytecode (16 0 52 0 0 1 1 1 0 18 0 16 0 52 2 0 2 52 0 0 3 50)} "keys" "join" "&") :bytecode (1 0 0 5 51 2 0 1 0 16 0 52 3 0 1 52 1 0 2 17 1 1 5 0 16 1 52 4 0 2 50)} "sx-url-with-params" {:upvalue-count 0 :arity 2 :constants ("Embed params as :key \"value\" keywords inside an SX URL's innermost paren.\n /sx/(a.(b)) + {:q \"hi\"} → /sx/(a.(b :q \"hi\"))" "not" "contains?" "(" "str" "?" "url-encode-params" "-" "len" 1 0 ">=" "=" "nth" ")" "+" "slice" "join" " " "map" {:upvalue-count 1 :arity 1 :constants ("str" ":" " \"" "get" "\"") :bytecode (1 1 0 16 0 1 2 0 18 0 16 0 52 3 0 2 1 4 0 52 0 0 5 50)} "keys") :bytecode (1 0 0 5 16 0 1 3 0 52 2 0 2 52 1 0 1 33 19 0 16 0 1 5 0 20 6 0 16 1 48 1 52 4 0 3 32 198 1 16 0 52 8 0 1 1 9 0 52 7 0 2 17 2 1 10 0 17 3 16 2 1 10 0 52 11 0 2 6 33 16 0 5 16 0 16 2 52 13 0 2 1 14 0 52 12 0 2 33 26 0 16 3 1 9 0 52 15 0 2 17 3 5 16 2 1 9 0 52 7 0 2 17 2 32 1 0 2 5 16 2 1 10 0 52 11 0 2 6 33 16 0 5 16 0 16 2 52 13 0 2 1 14 0 52 12 0 2 33 26 0 16 3 1 9 0 52 15 0 2 17 3 5 16 2 1 9 0 52 7 0 2 17 2 32 1 0 2 5 16 2 1 10 0 52 11 0 2 6 33 16 0 5 16 0 16 2 52 13 0 2 1 14 0 52 12 0 2 33 26 0 16 3 1 9 0 52 15 0 2 17 3 5 16 2 1 9 0 52 7 0 2 17 2 32 1 0 2 5 16 2 1 10 0 52 11 0 2 6 33 16 0 5 16 0 16 2 52 13 0 2 1 14 0 52 12 0 2 33 26 0 16 3 1 9 0 52 15 0 2 17 3 5 16 2 1 9 0 52 7 0 2 17 2 32 1 0 2 5 16 2 1 10 0 52 11 0 2 6 33 16 0 5 16 0 16 2 52 13 0 2 1 14 0 52 12 0 2 33 26 0 16 3 1 9 0 52 15 0 2 17 3 5 16 2 1 9 0 52 7 0 2 17 2 32 1 0 2 5 16 2 1 10 0 52 11 0 2 6 33 16 0 5 16 0 16 2 52 13 0 2 1 14 0 52 12 0 2 33 26 0 16 3 1 9 0 52 15 0 2 17 3 5 16 2 1 9 0 52 7 0 2 17 2 32 1 0 2 5 16 0 1 10 0 16 2 1 9 0 52 15 0 2 52 16 0 3 17 4 16 0 16 2 1 9 0 52 15 0 2 52 16 0 2 17 5 1 18 0 51 20 0 1 1 16 1 52 21 0 1 52 19 0 2 52 17 0 2 17 6 16 4 1 18 0 16 6 16 5 52 4 0 4 50)} "hx-element-config" {:upvalue-count 0 :arity 2 :constants ("Read config value: hx-config JSON on element → global defaults." "dom-get-attr" "hx-config" "json-parse" "get" "HX-CONFIG-DEFAULTS") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 2 16 2 33 34 0 20 3 0 16 2 48 1 17 3 16 3 16 1 52 4 0 2 6 34 10 0 5 20 5 0 16 1 52 4 0 2 32 9 0 20 5 0 16 1 52 4 0 2 50)} "hx-walk-inherited" {:upvalue-count 0 :arity 2 :constants ("Walk ancestors looking for attr:inherited." "str" ":inherited" "dom-parent" "not" "dom-get-attr" "hx-walk-inherited") :bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 17 2 20 3 0 16 0 48 1 17 3 16 3 52 4 0 1 33 4 0 2 32 30 0 20 5 0 16 3 16 2 48 2 17 4 16 4 33 5 0 16 4 32 9 0 20 6 0 16 3 16 1 49 2 50)} "hx-resolve-attr" {:upvalue-count 0 :arity 2 :constants ("Resolve attribute, checking :inherited on ancestors.\n v4 default: no implicit inheritance." "dom-get-attr" "hx-walk-inherited") :bytecode (1 0 0 5 20 1 0 16 0 16 1 48 2 6 34 10 0 5 20 2 0 16 0 16 1 49 2 50)} "hx-verb-info" {:upvalue-count 0 :arity 1 :constants ("Scan verb attributes. Returns (method url) or nil.\n v4 supports both hx-get='/url' and hx-action='/url' hx-method='get'." "dom-get-attr" "hx-get" "hx-post" "hx-put" "hx-delete" "hx-patch" "hx-action" "hx-method" "list" "GET" "POST" "PUT" "DELETE" "PATCH" "upcase") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 20 1 0 16 0 1 3 0 48 2 17 2 20 1 0 16 0 1 4 0 48 2 17 3 20 1 0 16 0 1 5 0 48 2 17 4 20 1 0 16 0 1 6 0 48 2 17 5 20 1 0 16 0 1 7 0 48 2 17 6 20 1 0 16 0 1 8 0 48 2 17 7 16 1 33 12 0 1 10 0 16 1 52 9 0 2 32 113 0 16 2 33 12 0 1 11 0 16 2 52 9 0 2 32 96 0 16 3 33 12 0 1 12 0 16 3 52 9 0 2 32 79 0 16 4 33 12 0 1 13 0 16 4 52 9 0 2 32 62 0 16 5 33 12 0 1 14 0 16 5 52 9 0 2 32 45 0 16 6 6 33 3 0 5 16 7 33 15 0 16 7 52 15 0 1 16 6 52 9 0 2 32 18 0 16 6 33 12 0 1 10 0 16 6 52 9 0 2 32 1 0 2 50)} "hx-default-trigger" {:upvalue-count 0 :arity 1 :constants ("Default trigger: form→submit, input/select/textarea→change, else→click." "downcase" "dom-tag-name" "=" "form" "submit" "input" "textarea" "select" "change" "click") :bytecode (1 0 0 5 20 2 0 16 0 48 1 52 1 0 1 17 1 16 1 1 4 0 52 3 0 2 33 6 0 1 5 0 32 49 0 16 1 1 6 0 52 3 0 2 6 34 24 0 5 16 1 1 7 0 52 3 0 2 6 34 10 0 5 16 1 1 8 0 52 3 0 2 33 6 0 1 9 0 32 3 0 1 10 0 50)} "hx-parse-time" {:upvalue-count 0 :arity 1 :constants ("Parse time spec: '500ms'→500, '1s'→1000, '2m'→120000." "not" "ends-with?" "ms" "parse-number" "slice" 0 "-" "len" 2 "s" "*" 1000 1 "m" 60000) :bytecode (1 0 0 5 16 0 52 1 0 1 33 4 0 2 32 143 0 16 0 1 3 0 52 2 0 2 33 29 0 16 0 1 6 0 16 0 52 8 0 1 1 9 0 52 7 0 2 52 5 0 3 52 4 0 1 32 102 0 16 0 1 10 0 52 2 0 2 33 36 0 1 12 0 16 0 1 6 0 16 0 52 8 0 1 1 13 0 52 7 0 2 52 5 0 3 52 4 0 1 52 11 0 2 32 54 0 16 0 1 14 0 52 2 0 2 33 36 0 1 15 0 16 0 1 6 0 16 0 52 8 0 1 1 13 0 52 7 0 2 52 5 0 3 52 4 0 1 52 11 0 2 32 6 0 16 0 52 4 0 1 50)} "hx-parse-trigger" {:upvalue-count 0 :arity 2 :constants ("Parse hx-trigger spec. Returns {:event :delay :throttle :once :changed :from :filter}." "not" "filter" "delay" "throttle" "from" "event" "hx-default-trigger" "changed" "once" "split" "trim" " " "first" "for-each" {:upvalue-count 6 :arity 1 :constants ("starts-with?" "delay:" "hx-parse-time" "slice" 6 "throttle:" 9 "=" "once" "changed" "from:" 5 "[") :bytecode (16 0 1 1 0 52 0 0 2 33 19 0 20 2 0 16 0 1 4 0 52 3 0 2 48 1 19 0 32 113 0 16 0 1 5 0 52 0 0 2 33 19 0 20 2 0 16 0 1 6 0 52 3 0 2 48 1 19 1 32 82 0 16 0 1 8 0 52 7 0 2 33 6 0 3 19 2 32 64 0 16 0 1 9 0 52 7 0 2 33 6 0 3 19 3 32 46 0 16 0 1 10 0 52 0 0 2 33 14 0 16 0 1 11 0 52 3 0 2 19 4 32 20 0 16 0 1 12 0 52 0 0 2 33 7 0 16 0 19 5 32 1 0 2 50)} "rest") :bytecode (1 0 0 5 16 0 52 1 0 1 33 40 0 1 2 0 2 1 3 0 2 1 4 0 2 1 5 0 2 1 6 0 20 7 0 16 1 48 1 1 8 0 4 1 9 0 4 65 7 0 32 105 0 16 0 52 11 0 1 1 12 0 52 10 0 2 17 2 16 2 52 13 0 1 17 3 2 17 4 2 17 5 4 17 6 4 17 7 2 17 8 2 17 9 51 15 0 1 4 1 5 1 6 1 7 1 8 1 9 16 2 52 16 0 1 52 14 0 2 5 1 2 0 16 9 1 3 0 16 4 1 4 0 16 5 1 5 0 16 8 1 6 0 16 3 1 8 0 16 7 1 9 0 16 6 65 7 0 50)} "hx-resolve-target" {:upvalue-count 0 :arity 2 :constants ("Resolve hx-target: nil→el, 'this'→el, 'closest sel'→walk up, '#id'→query." "hx-resolve-attr" "hx-target" "not" "=" "this" "body" "dom-body" "starts-with?" "closest " "dom-closest" "slice" 8 "find " "dom-query" 5 "next " "hs-next" "previous " "hs-previous" 9) :bytecode (1 0 0 5 16 1 6 34 11 0 5 20 1 0 16 0 1 2 0 48 2 17 2 16 2 52 3 0 1 33 5 0 16 0 32 173 0 16 2 1 5 0 52 4 0 2 33 5 0 16 0 32 156 0 16 2 1 6 0 52 4 0 2 33 8 0 20 7 0 49 0 32 136 0 16 2 1 9 0 52 8 0 2 33 19 0 20 10 0 16 0 16 2 1 12 0 52 11 0 2 49 2 32 105 0 16 2 1 13 0 52 8 0 2 33 19 0 20 14 0 16 0 16 2 1 15 0 52 11 0 2 49 2 32 74 0 16 2 1 16 0 52 8 0 2 33 19 0 20 17 0 16 0 16 2 1 15 0 52 11 0 2 49 2 32 43 0 16 2 1 18 0 52 8 0 2 33 19 0 20 19 0 16 0 16 2 1 20 0 52 11 0 2 49 2 32 12 0 20 14 0 20 7 0 48 0 16 2 49 2 50)} "hx-normalize-swap-mode" {:upvalue-count 0 :arity 1 :constants ("Normalize v4 swap aliases to canonical names." "=" "before" "beforebegin" "after" "afterend" "prepend" "afterbegin" "append" "beforeend") :bytecode (1 0 0 5 16 0 1 2 0 52 1 0 2 33 6 0 1 3 0 32 56 0 16 0 1 4 0 52 1 0 2 33 6 0 1 5 0 32 38 0 16 0 1 6 0 52 1 0 2 33 6 0 1 7 0 32 20 0 16 0 1 8 0 52 1 0 2 33 6 0 1 9 0 32 2 0 16 0 50)} "hx-parse-swap-spec" {:upvalue-count 0 :arity 1 :constants ("Parse swap spec with all v4 modifiers.\n Returns {:mode :swap-delay :settle-delay :scroll :show-target :transition :strip :target :ignore-title}." "not" "ignore-title" "transition" "target" "strip" "scroll" "mode" "innerHTML" "settle-delay" "show-target" "swap-delay" "split" " " "hx-normalize-swap-mode" "first" "for-each" {:upvalue-count 8 :arity 1 :constants ("starts-with?" "swap:" "hx-parse-time" "slice" 5 "settle:" 7 "scroll:" "show:" "showTarget:" 11 "scrollTarget:" 13 "=" "transition:true" "strip:true" "target:" "ignoreTitle:true") :bytecode (16 0 1 1 0 52 0 0 2 33 19 0 20 2 0 16 0 1 4 0 52 3 0 2 48 1 19 0 32 216 0 16 0 1 5 0 52 0 0 2 33 19 0 20 2 0 16 0 1 6 0 52 3 0 2 48 1 19 1 32 185 0 16 0 1 7 0 52 0 0 2 33 14 0 16 0 1 6 0 52 3 0 2 19 2 32 159 0 16 0 1 8 0 52 0 0 2 33 14 0 16 0 1 4 0 52 3 0 2 19 2 32 133 0 16 0 1 9 0 52 0 0 2 33 14 0 16 0 1 10 0 52 3 0 2 19 3 32 107 0 16 0 1 11 0 52 0 0 2 33 14 0 16 0 1 12 0 52 3 0 2 19 3 32 81 0 16 0 1 14 0 52 13 0 2 33 6 0 3 19 4 32 63 0 16 0 1 15 0 52 13 0 2 33 6 0 3 19 5 32 45 0 16 0 1 16 0 52 0 0 2 33 14 0 16 0 1 6 0 52 3 0 2 19 6 32 19 0 16 0 1 17 0 52 13 0 2 33 6 0 3 19 7 32 1 0 2 50)} "rest") :bytecode (1 0 0 5 16 0 52 1 0 1 33 44 0 1 2 0 4 1 3 0 4 1 4 0 2 1 5 0 4 1 6 0 2 1 7 0 1 8 0 1 9 0 2 1 10 0 2 1 11 0 2 65 9 0 32 126 0 16 0 1 13 0 52 12 0 2 17 1 20 14 0 16 1 52 15 0 1 48 1 17 2 2 17 3 2 17 4 2 17 5 2 17 6 4 17 7 4 17 8 2 17 9 4 17 10 51 17 0 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 16 1 52 18 0 1 52 16 0 2 5 1 2 0 16 10 1 3 0 16 7 1 4 0 16 9 1 5 0 16 8 1 6 0 16 5 1 7 0 16 2 1 9 0 16 4 1 10 0 16 6 1 11 0 16 3 65 9 0 50)} "hx-swap!" {:upvalue-count 0 :arity 3 :constants ("Swap content into target. Supports all v4 modes." "=" "innerHTML" "dom-set-inner-html" "outerHTML" "dom-insert-adjacent-html" "afterend" "dom-remove" "beforeend" "afterbegin" "beforebegin" "delete" "none" "textContent" "dom-set-text-content" "innerMorph" "outerMorph") :bytecode (1 0 0 5 16 2 1 2 0 52 1 0 2 33 12 0 20 3 0 16 0 16 1 49 2 32 17 1 16 2 1 4 0 52 1 0 2 33 23 0 20 5 0 16 0 1 6 0 16 1 48 3 5 20 7 0 16 0 49 1 32 238 0 16 2 1 6 0 52 1 0 2 33 15 0 20 5 0 16 0 1 6 0 16 1 49 3 32 211 0 16 2 1 8 0 52 1 0 2 33 15 0 20 5 0 16 0 1 8 0 16 1 49 3 32 184 0 16 2 1 9 0 52 1 0 2 33 15 0 20 5 0 16 0 1 9 0 16 1 49 3 32 157 0 16 2 1 10 0 52 1 0 2 33 15 0 20 5 0 16 0 1 10 0 16 1 49 3 32 130 0 16 2 1 11 0 52 1 0 2 33 10 0 20 7 0 16 0 49 1 32 108 0 16 2 1 12 0 52 1 0 2 33 4 0 2 32 92 0 16 2 1 13 0 52 1 0 2 33 12 0 20 14 0 16 0 16 1 49 2 32 68 0 16 2 1 15 0 52 1 0 2 33 12 0 20 3 0 16 0 16 1 49 2 32 44 0 16 2 1 16 0 52 1 0 2 33 23 0 20 5 0 16 0 1 6 0 16 1 48 3 5 20 7 0 16 0 49 1 32 9 0 20 3 0 16 0 16 1 49 2 50)} "hx-select-fragment" {:upvalue-count 0 :arity 2 :constants ("Extract fragment matching selector from HTML response (hx-select)." "not" "dom-parse-html" "dom-query" "dom-outer-html") :bytecode (1 0 0 5 16 1 52 1 0 1 33 5 0 16 0 32 37 0 20 2 0 16 0 48 1 17 2 20 3 0 16 2 16 1 48 2 17 3 16 3 33 10 0 20 4 0 16 3 49 1 32 2 0 16 0 50)} "hx-element-source-id" {:upvalue-count 0 :arity 1 :constants ("Format element as tagName#id for v4 HX-Source header." "downcase" "dom-tag-name" "dom-get-attr" "id" "str" "#") :bytecode (1 0 0 5 20 2 0 16 0 48 1 52 1 0 1 17 1 20 3 0 16 0 1 4 0 48 2 17 2 16 2 33 14 0 16 1 1 6 0 16 2 52 5 0 3 32 2 0 16 1 50)} "hx-form-values" {:upvalue-count 0 :arity 1 :constants ("Extract name=value pairs from form inputs." "dom-query-all" "input, select, textarea" "for-each" {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "name" "element-value" "assoc") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 2 0 16 0 48 1 17 2 16 1 33 15 0 18 0 16 1 16 2 52 3 0 3 19 0 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 65 0 0 17 2 51 4 0 1 2 16 1 52 3 0 2 5 16 2 50)} "hx-collect-params" {:upvalue-count 0 :arity 2 :constants ("Collect request params: form values + hx-include + hx-vals + element name/value." "=" "downcase" "dom-tag-name" "form" "hx-form-values" "input" "select" "textarea" "dom-get-attr" "name" "assoc" "element-value" "hx-include" "dom-query" "merge" "hx-vals" "json-parse") :bytecode (1 0 0 5 65 0 0 17 2 20 3 0 16 0 48 1 52 2 0 1 1 4 0 52 1 0 2 33 12 0 20 5 0 16 0 48 1 17 2 32 1 0 2 5 20 3 0 16 0 48 1 52 2 0 1 17 3 16 3 1 6 0 52 1 0 2 6 34 24 0 5 16 3 1 7 0 52 1 0 2 6 34 10 0 5 16 3 1 8 0 52 1 0 2 33 41 0 20 9 0 16 0 1 10 0 48 2 17 4 16 4 33 20 0 16 2 16 4 20 12 0 16 0 48 1 52 11 0 3 17 2 32 1 0 2 32 1 0 2 5 20 9 0 16 0 1 13 0 48 2 17 3 16 3 33 36 0 20 14 0 16 3 48 1 17 4 16 4 33 18 0 16 2 20 5 0 16 4 48 1 52 15 0 2 17 2 32 1 0 2 32 1 0 2 5 20 9 0 16 0 1 16 0 48 2 17 3 16 3 33 31 0 20 17 0 16 3 48 1 17 4 16 4 33 13 0 16 2 16 4 52 15 0 2 17 2 32 1 0 2 32 1 0 2 5 16 2 50)} "hx-build-headers" {:upvalue-count 0 :arity 2 :constants ("Build v4 request headers." "HX-Source" "hx-element-source-id" "HX-Request" "true" "Accept" "text/html" "HX-Request-Type" "partial" "assoc" "HX-Target" "HX-Current-URL" "browser-location-href" "hx-resolve-attr" "hx-headers" "json-parse" "merge") :bytecode (1 0 0 5 1 1 0 20 2 0 16 0 48 1 1 3 0 1 4 0 1 5 0 1 6 0 1 7 0 1 8 0 65 4 0 17 2 16 1 33 21 0 16 2 1 10 0 20 2 0 16 1 48 1 52 9 0 3 17 2 32 1 0 2 5 16 2 1 11 0 20 12 0 48 0 52 9 0 3 17 2 5 20 13 0 16 0 1 14 0 48 2 17 3 16 3 33 31 0 20 15 0 16 3 48 1 17 4 16 4 33 13 0 16 2 16 4 52 16 0 2 17 2 32 1 0 2 32 1 0 2 5 16 2 50)} "hx-request" {:upvalue-count 0 :arity 4 :constants ("Issue HTTP request with v4 conventions.\n Returns {:status :body :headers} for status-based dispatch." "hx-collect-params" "hx-build-headers" "dom-get-attr" "hx-encoding" "dom-get-data" "hx-etag" "=" "GET" "DELETE" "empty?" "str" "?" "url-encode-params" "multipart/form-data" "json-stringify" "not" "assoc" "Content-Type" "application/json" "If-None-Match" "list" io-fetch "host-get" "status" "body" "headers" "etag" "dom-set-data") :bytecode (1 0 0 5 20 1 0 16 0 16 2 48 2 17 4 20 2 0 16 0 16 3 48 2 17 5 20 3 0 16 0 1 4 0 48 2 17 6 20 5 0 16 0 1 6 0 48 2 17 7 16 2 1 8 0 52 7 0 2 6 34 10 0 5 16 2 1 9 0 52 7 0 2 33 33 0 16 4 52 10 0 1 33 5 0 16 1 32 16 0 16 1 1 12 0 20 13 0 16 4 48 1 52 11 0 3 32 2 0 16 1 17 8 16 2 1 8 0 52 7 0 2 6 34 10 0 5 16 2 1 9 0 52 7 0 2 33 4 0 2 32 24 0 16 6 1 14 0 52 7 0 2 33 5 0 16 4 32 7 0 20 15 0 16 4 48 1 17 9 16 9 6 33 14 0 5 16 6 1 14 0 52 7 0 2 52 16 0 1 33 17 0 16 5 1 18 0 1 19 0 52 17 0 3 17 5 32 1 0 2 5 16 7 33 16 0 16 5 1 20 0 16 7 52 17 0 3 17 5 32 1 0 2 5 1 22 0 16 8 16 2 16 9 16 5 52 21 0 5 112 17 10 20 23 0 16 10 1 24 0 48 2 17 11 20 23 0 16 10 1 25 0 48 2 17 12 20 23 0 16 10 1 26 0 48 2 17 13 20 23 0 16 13 1 27 0 48 2 33 23 0 20 28 0 16 0 1 6 0 20 23 0 16 13 1 27 0 48 2 48 3 32 1 0 2 5 1 24 0 16 11 1 26 0 16 13 1 25 0 16 12 65 3 0 50)} "hx-process-oob!" {:upvalue-count 0 :arity 1 :constants ("Process out-of-band swaps: elements with hx-swap-oob." "dom-parse-html" "dom-query-all" "[hx-swap-oob]" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "hx-swap-oob" "id" "dom-query" "dom-body" "str" "#" "hx-normalize-swap-mode" "=" "true" "innerHTML" "dom-remove-attr" "hx-swap!" "dom-outer-html") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 0 0 16 0 1 2 0 48 2 17 2 16 2 33 87 0 20 3 0 20 4 0 48 0 1 6 0 16 2 52 5 0 2 48 2 17 3 20 7 0 16 1 1 9 0 52 8 0 2 33 6 0 1 10 0 32 2 0 16 1 48 1 17 4 16 3 33 30 0 20 11 0 16 0 1 1 0 48 2 5 20 12 0 16 3 20 13 0 16 0 48 1 16 4 49 3 32 1 0 2 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 20 2 0 16 1 1 3 0 48 2 17 2 51 5 0 16 2 52 4 0 2 50)} "hx-process-partials!" {:upvalue-count 0 :arity 1 :constants ("Process <hx-partial> elements: each specifies its own target + swap.\n v4: swaps in document order after main content." "dom-parse-html" "dom-query-all" "hx-partial" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "hx-target" "hx-swap" "innerHTML" "dom-query" "dom-body" "hx-normalize-swap-mode" "hx-swap!" "dom-inner-html") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 20 0 0 16 0 1 2 0 48 2 6 34 4 0 5 1 3 0 17 2 16 1 33 51 0 20 4 0 20 5 0 48 0 16 1 48 2 17 3 20 6 0 16 2 48 1 17 4 16 3 33 19 0 20 7 0 16 3 20 8 0 16 0 48 1 16 4 49 3 32 1 0 2 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 20 2 0 16 1 1 3 0 48 2 17 2 51 5 0 16 2 52 4 0 2 50)} "hx-parse-status-modifiers" {:upvalue-count 0 :arity 1 :constants ("Parse hx-status modifier string: 'swap:innerHTML target:#errors push:false'." "split" " " "target" "transition" "swap" "select" "push" "replace" "for-each" {:upvalue-count 1 :arity 1 :constants ("starts-with?" "swap:" "assoc" "swap" "slice" 5 "target:" "target" 7 "select:" "select" "push:" "push" "replace:" "replace" 8 "transition:" "transition" 11) :bytecode (16 0 1 1 0 52 0 0 2 33 23 0 18 0 1 3 0 16 0 1 5 0 52 4 0 2 52 2 0 3 19 0 32 176 0 16 0 1 6 0 52 0 0 2 33 23 0 18 0 1 7 0 16 0 1 8 0 52 4 0 2 52 2 0 3 19 0 32 141 0 16 0 1 9 0 52 0 0 2 33 23 0 18 0 1 10 0 16 0 1 8 0 52 4 0 2 52 2 0 3 19 0 32 106 0 16 0 1 11 0 52 0 0 2 33 23 0 18 0 1 12 0 16 0 1 5 0 52 4 0 2 52 2 0 3 19 0 32 71 0 16 0 1 13 0 52 0 0 2 33 23 0 18 0 1 14 0 16 0 1 15 0 52 4 0 2 52 2 0 3 19 0 32 36 0 16 0 1 16 0 52 0 0 2 33 23 0 18 0 1 17 0 16 0 1 18 0 52 4 0 2 52 2 0 3 19 0 32 1 0 2 50)}) :bytecode (1 0 0 5 16 0 1 2 0 52 1 0 2 17 1 1 3 0 2 1 4 0 2 1 5 0 2 1 6 0 2 1 7 0 2 1 8 0 2 65 6 0 17 2 51 10 0 1 2 16 1 52 9 0 2 5 16 2 50)} "hx-status-matches?" {:upvalue-count 0 :arity 2 :constants ("Check if status matches pattern: '404'='404', '50x'=500-509, '5xx'=500-599." "=" "len" 3 "ends-with?" "xx" "slice" 0 1 "x" "not" 2) :bytecode (1 0 0 5 16 0 16 1 52 1 0 2 33 4 0 3 32 153 0 16 1 52 2 0 1 1 3 0 52 1 0 2 6 33 43 0 5 16 1 1 5 0 52 4 0 2 6 33 29 0 5 16 0 1 7 0 1 8 0 52 6 0 3 16 1 1 7 0 1 8 0 52 6 0 3 52 1 0 2 33 4 0 3 32 86 0 16 1 52 2 0 1 1 3 0 52 1 0 2 6 33 61 0 5 16 1 1 9 0 52 4 0 2 6 33 47 0 5 16 1 1 5 0 52 4 0 2 52 10 0 1 6 33 29 0 5 16 0 1 7 0 1 11 0 52 6 0 3 16 1 1 7 0 1 11 0 52 6 0 3 52 1 0 2 33 4 0 3 32 1 0 4 50)} "hx-parse-status-rules" {:upvalue-count 0 :arity 1 :constants ("Scan element for hx-status:CODE attributes. Returns list of rule dicts." "dom-attr-list" "list" "for-each" {:upvalue-count 1 :arity 1 :constants ("get" "name" "value" "starts-with?" "hx-status:" "slice" 10 "not" "ends-with?" "x" 3 "xx" 2 1 "append" "list" "merge" "specificity" "code" "hx-parse-status-modifiers") :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 16 1 1 4 0 52 3 0 2 33 113 0 16 1 1 6 0 52 5 0 2 17 3 16 3 1 9 0 52 8 0 2 52 7 0 1 33 6 0 1 10 0 32 39 0 16 3 1 9 0 52 8 0 2 6 33 14 0 5 16 3 1 11 0 52 8 0 2 52 7 0 1 33 6 0 1 12 0 32 3 0 1 13 0 17 4 18 0 1 17 0 16 4 1 18 0 16 3 65 2 0 20 19 0 16 2 48 1 52 16 0 2 52 15 0 1 52 14 0 2 19 0 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 52 2 0 0 17 2 51 4 0 1 2 16 1 52 3 0 2 5 16 2 50)} "hx-match-status" {:upvalue-count 0 :arity 2 :constants ("Match HTTP status against rules. Returns best match (highest specificity) or nil." "str" 0 "for-each" {:upvalue-count 3 :arity 1 :constants ("get" "code" "specificity" "hx-status-matches?" ">") :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 20 3 0 18 0 16 1 48 2 6 33 9 0 5 16 2 18 1 52 4 0 2 33 12 0 16 0 19 2 5 16 2 19 1 32 1 0 2 50)}) :bytecode (1 0 0 5 16 0 52 1 0 1 17 2 2 17 3 1 2 0 17 4 51 4 0 1 2 1 4 1 3 16 1 52 3 0 2 5 16 3 50)} "hx-handle-history!" {:upvalue-count 0 :arity 2 :constants ("Push or replace URL based on hx-push-url / hx-replace-url." "hx-resolve-attr" "hx-push-url" "hx-replace-url" "=" "true" "browser-push-state" "scrollY" 0 "" "not" "false" "browser-replace-state") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 2 20 1 0 16 0 1 3 0 48 2 17 3 16 2 1 5 0 52 4 0 2 33 22 0 20 6 0 1 7 0 1 8 0 65 1 0 1 9 0 16 1 49 3 32 125 0 16 2 6 33 14 0 5 16 2 1 11 0 52 4 0 2 52 10 0 1 33 22 0 20 6 0 1 7 0 1 8 0 65 1 0 1 9 0 16 2 49 3 32 80 0 16 3 1 5 0 52 4 0 2 33 22 0 20 12 0 1 7 0 1 8 0 65 1 0 1 9 0 16 1 49 3 32 46 0 16 3 6 33 14 0 5 16 3 1 11 0 52 4 0 2 52 10 0 1 33 22 0 20 12 0 1 7 0 1 8 0 65 1 0 1 9 0 16 3 49 3 32 1 0 2 50)} "hx-indicator-on!" {:upvalue-count 0 :arity 1 :constants ("Add request class to element + indicator targets." "dom-add-class" "HX-REQUEST-CLASS" "hx-resolve-attr" "hx-indicator" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-add-class" "HX-REQUEST-CLASS") :bytecode (20 0 0 16 0 20 1 0 49 2 50)} "dom-query-all" "dom-body") :bytecode (1 0 0 5 20 1 0 16 0 20 2 0 48 2 5 20 3 0 16 0 1 4 0 48 2 17 1 16 1 33 22 0 51 6 0 20 7 0 20 8 0 48 0 16 1 48 2 52 5 0 2 32 1 0 2 50)} "hx-indicator-off!" {:upvalue-count 0 :arity 1 :constants ("Remove request class from element + indicator targets." "dom-remove-class" "HX-REQUEST-CLASS" "hx-resolve-attr" "hx-indicator" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-remove-class" "HX-REQUEST-CLASS") :bytecode (20 0 0 16 0 20 1 0 49 2 50)} "dom-query-all" "dom-body") :bytecode (1 0 0 5 20 1 0 16 0 20 2 0 48 2 5 20 3 0 16 0 1 4 0 48 2 17 1 16 1 33 22 0 51 6 0 20 7 0 20 8 0 48 0 16 1 48 2 52 5 0 2 32 1 0 2 50)} "hx-disable-inputs!" {:upvalue-count 0 :arity 1 :constants ("Disable form elements during request (v4 hx-disable)." "dom-get-attr" "hx-disable" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-set-attr" "disabled" "true") :bytecode (20 0 0 16 0 1 1 0 1 2 0 49 3 50)} "dom-query-all" "dom-body") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 16 1 33 22 0 51 4 0 20 5 0 20 6 0 48 0 16 1 48 2 52 3 0 2 32 1 0 2 50)} "hx-enable-inputs!" {:upvalue-count 0 :arity 1 :constants ("Re-enable form elements after request." "dom-get-attr" "hx-disable" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-remove-attr" "disabled") :bytecode (20 0 0 16 0 1 1 0 49 2 50)} "dom-query-all" "dom-body") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 16 1 33 22 0 51 4 0 20 5 0 20 6 0 48 0 16 1 48 2 52 3 0 2 32 1 0 2 50)} "hx-confirm?" {:upvalue-count 0 :arity 1 :constants ("Show confirm dialog if hx-confirm set. Returns true to proceed." "hx-resolve-attr" "hx-confirm" "browser-confirm") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 16 1 33 10 0 20 3 0 16 1 49 1 32 1 0 3 50)} "hx-validate-form?" {:upvalue-count 0 :arity 1 :constants ("Check form validity if hx-validate is set. Returns true to proceed." "dom-get-attr" "hx-validate" "=" "downcase" "dom-tag-name" "form" "dom-closest" "host-call" "checkValidity") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 16 1 33 60 0 20 5 0 16 0 48 1 52 4 0 1 1 6 0 52 3 0 2 33 5 0 16 0 32 10 0 20 7 0 16 0 1 6 0 48 2 17 2 16 2 33 13 0 20 8 0 16 2 1 9 0 49 2 32 1 0 3 32 1 0 3 50)} "hx-parse-sync-spec" {:upvalue-count 0 :arity 1 :constants ("Parse hx-sync='selector:strategy'. Returns {:selector :strategy :queue-mode} or nil." "not" "index-of" ":" "strategy" "drop" "selector" "queue-mode" "trim" "slice" 0 "+" 1 "starts-with?" "queue" "split" " " ">" "len" "nth" "last") :bytecode (1 0 0 5 16 0 52 1 0 1 33 4 0 2 32 179 0 16 0 1 3 0 52 2 0 2 17 1 16 1 52 1 0 1 33 21 0 1 4 0 1 5 0 1 6 0 16 0 1 7 0 2 65 3 0 32 138 0 16 0 1 10 0 16 1 52 9 0 3 52 8 0 1 17 2 16 0 16 1 1 12 0 52 11 0 2 52 9 0 2 52 8 0 1 17 3 16 3 1 14 0 52 13 0 2 33 6 0 1 14 0 32 2 0 16 3 17 4 16 3 1 14 0 52 13 0 2 33 45 0 16 3 1 16 0 52 15 0 2 17 5 16 5 52 18 0 1 1 12 0 52 17 0 2 33 12 0 16 5 1 12 0 52 19 0 2 32 3 0 1 20 0 32 1 0 2 17 5 1 4 0 16 4 1 6 0 16 2 1 7 0 16 5 65 3 0 50)} "hx-sync-resolve-target" {:upvalue-count 0 :arity 2 :constants ("Resolve sync target element." "=" "this" "closest form" "dom-closest" "form" "dom-query" "dom-body") :bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 33 5 0 16 0 32 37 0 16 1 1 3 0 52 1 0 2 33 13 0 20 4 0 16 0 1 5 0 49 2 32 12 0 20 6 0 20 7 0 48 0 16 1 49 2 50)} "hx-sync-check!" {:upvalue-count 0 :arity 1 :constants ("Check sync strategy. Returns true if request should proceed." "hx-parse-sync-spec" "dom-get-attr" "hx-sync" "not" "hx-sync-resolve-target" "get" "selector" "strategy" "dom-get-data" "hx-sync-in-flight" "=" "drop" "dom-set-data" "abort" "replace" "dom-dispatch" "htmx:abort" "queue" "hx-sync-queued") :bytecode (1 0 0 5 20 1 0 20 2 0 16 0 1 3 0 48 2 48 1 17 1 16 1 52 4 0 1 33 4 0 3 32 205 0 20 5 0 16 0 16 1 1 7 0 52 6 0 2 48 2 17 2 16 1 1 8 0 52 6 0 2 17 3 16 2 52 4 0 1 33 4 0 3 32 163 0 20 9 0 16 2 1 10 0 48 2 17 4 16 3 1 12 0 52 11 0 2 33 25 0 16 4 33 4 0 4 32 13 0 20 13 0 16 2 1 10 0 3 48 3 5 3 32 114 0 16 3 1 14 0 52 11 0 2 6 34 10 0 5 16 3 1 15 0 52 11 0 2 33 37 0 16 4 33 14 0 20 16 0 16 2 1 17 0 2 48 3 32 1 0 2 5 20 13 0 16 2 1 10 0 3 48 3 5 3 32 51 0 16 3 1 18 0 52 11 0 2 33 38 0 16 4 33 17 0 20 13 0 16 2 1 19 0 16 0 48 3 5 4 32 13 0 20 13 0 16 2 1 10 0 3 48 3 5 3 32 1 0 3 50)} "hx-sync-complete!" {:upvalue-count 0 :arity 1 :constants ("Mark request complete. Fire queued request if any." "hx-parse-sync-spec" "dom-get-attr" "hx-sync" "hx-sync-resolve-target" "get" "selector" "dom-set-data" "hx-sync-in-flight" "dom-get-data" "hx-sync-queued" "dom-dispatch" "click") :bytecode (1 0 0 5 20 1 0 20 2 0 16 0 1 3 0 48 2 48 1 17 1 16 1 33 86 0 20 4 0 16 0 16 1 1 6 0 52 5 0 2 48 2 17 2 16 2 33 59 0 20 7 0 16 2 1 8 0 4 48 3 5 20 9 0 16 2 1 10 0 48 2 17 3 16 3 33 26 0 20 7 0 16 2 1 10 0 2 48 3 5 20 11 0 16 3 1 12 0 2 49 3 32 1 0 2 32 1 0 2 32 1 0 2 50)} "hx-dispatch!" {:upvalue-count 0 :arity 3 :constants ("Dispatch htmx event with v4 naming (htmx:phase:action)." "dom-dispatch") :bytecode (1 0 0 5 20 1 0 16 0 16 1 16 2 49 3 50)} "hx-strip-outer" {:upvalue-count 0 :arity 1 :constants ("Remove outer element, return inner content." "dom-parse-html" "dom-first-child" "dom-inner-html") :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 20 2 0 16 1 48 1 17 2 16 2 33 10 0 20 3 0 16 2 49 1 32 2 0 16 0 50)} "hx-do-swap" {:upvalue-count 0 :arity 8 :constants ("Execute swap phase: status overrides → select → strip → transition → swap → partials → OOB → history → settle." "hx-match-status" "get" "swap" "hx-normalize-swap-mode" "mode" "target" "dom-query" "dom-body" "select" "transition" "=" "true" "hx-dispatch!" "htmx:before:swap" "status" "starts-with?" "trim" "(" "first" "parse" "list?" <> "filter" {:upvalue-count 0 :arity 1 :constants ("not" "list?" "some" {:upvalue-count 0 :arity 1 :constants ("=" "type-of" "keyword" "keyword-name" "sx-swap-oob") :bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 6 33 14 0 5 16 0 52 3 0 1 1 4 0 52 0 0 2 50)}) :bytecode (16 0 52 1 0 1 6 33 10 0 5 51 3 0 16 0 52 2 0 2 52 0 0 1 50)} "rest" "render-to-html" "cons" "hx-select-fragment" "strip" "hx-strip-outer" "list" io-view-transition {:upvalue-count 3 :arity 0 :constants ("hx-swap!") :bytecode (20 0 0 18 0 18 1 18 2 49 3 50)} "hx-swap!" "htmx:after:swap" "not" "push" "false" "hx-handle-history!" "hs-wait" "settle-delay" 1 "htmx:after:settle") :bytecode (1 0 0 5 20 1 0 16 2 16 3 48 2 17 8 16 8 6 33 10 0 5 16 8 1 3 0 52 2 0 2 33 17 0 20 4 0 16 8 1 3 0 52 2 0 2 48 1 32 9 0 16 4 1 5 0 52 2 0 2 17 9 16 8 6 33 10 0 5 16 8 1 6 0 52 2 0 2 33 22 0 20 7 0 20 8 0 48 0 16 8 1 6 0 52 2 0 2 48 2 32 9 0 16 6 6 34 3 0 5 16 0 17 10 16 8 6 33 10 0 5 16 8 1 9 0 52 2 0 2 33 12 0 16 8 1 9 0 52 2 0 2 32 2 0 16 5 17 11 16 4 1 10 0 52 2 0 2 6 34 24 0 5 16 8 6 33 17 0 5 16 8 1 10 0 52 2 0 2 1 12 0 52 11 0 2 17 12 20 13 0 16 0 1 14 0 1 6 0 16 10 1 3 0 16 9 1 15 0 16 2 65 3 0 48 3 5 16 1 6 33 14 0 5 16 1 52 17 0 1 1 18 0 52 16 0 2 33 81 0 16 1 52 20 0 1 52 19 0 1 17 13 16 13 52 21 0 1 6 33 14 0 5 16 13 52 19 0 1 1 22 0 52 11 0 2 33 32 0 51 24 0 16 13 52 25 0 1 52 23 0 2 17 14 20 26 0 1 22 0 16 14 52 27 0 2 48 1 32 7 0 20 26 0 16 13 48 1 32 2 0 16 1 17 13 16 11 33 12 0 20 28 0 16 13 16 11 48 2 32 2 0 16 13 17 14 16 4 1 29 0 52 2 0 2 33 10 0 20 30 0 16 14 48 1 32 2 0 16 14 17 15 16 12 33 20 0 1 32 0 51 33 0 1 10 1 15 1 9 52 31 0 2 112 32 11 0 20 34 0 16 10 16 15 16 9 48 3 5 20 13 0 16 0 1 35 0 2 48 3 5 16 8 6 33 17 0 5 16 8 1 37 0 52 2 0 2 1 38 0 52 11 0 2 52 36 0 1 33 12 0 20 39 0 16 0 16 7 48 2 32 1 0 2 5 20 40 0 16 4 1 41 0 52 2 0 2 6 34 4 0 5 1 42 0 48 1 5 20 13 0 16 0 1 43 0 2 49 3 50)} "hx-make-handler" {:upvalue-count 0 :arity 3 :constants ("Build handler fn — Phase 2: status dispatch, sync, validate, partials, transitions, etag." "hx-resolve-attr" "hx-target" "hx-parse-swap-spec" "hx-swap" "innerHTML" "dom-get-attr" "hx-select" "hx-parse-status-rules" {:upvalue-count 7 :arity 1 :constants ("prevent-default" "hx-sync-check!" "hx-validate-form?" "hx-confirm?" "hx-dispatch!" "htmx:before:request" "method" "url" "hx-indicator-on!" "hx-disable-inputs!" "get" "swap-delay" "hs-wait" "hx-resolve-target" "hx-request" "status" "body" "htmx:after:request" "not" "=" 204 304 "hx-do-swap" "hx-enable-inputs!" "hx-indicator-off!" "hx-sync-complete!" "htmx-boot-subtree!" "hs-boot-subtree!") :bytecode (16 0 33 10 0 20 0 0 16 0 48 1 32 1 0 2 5 20 1 0 18 0 48 1 6 33 20 0 5 20 2 0 18 0 48 1 6 33 8 0 5 20 3 0 18 0 48 1 33 38 1 20 4 0 18 0 1 5 0 1 6 0 18 1 1 7 0 18 2 65 2 0 48 3 5 20 8 0 18 0 48 1 5 20 9 0 18 0 48 1 5 18 3 1 11 0 52 10 0 2 33 17 0 20 12 0 18 3 1 11 0 52 10 0 2 48 1 32 1 0 2 5 20 13 0 18 0 18 4 48 2 17 1 20 14 0 18 0 18 2 18 1 16 1 48 4 17 2 16 2 1 15 0 52 10 0 2 17 3 16 2 1 16 0 52 10 0 2 17 4 20 4 0 18 0 1 17 0 1 6 0 18 1 1 7 0 18 2 1 15 0 16 3 65 3 0 48 3 5 16 3 1 20 0 52 19 0 2 6 34 10 0 5 16 3 1 21 0 52 19 0 2 52 18 0 1 33 24 0 20 22 0 18 0 16 4 16 3 18 5 18 3 18 6 16 1 18 2 48 8 32 1 0 2 5 20 23 0 18 0 48 1 5 20 24 0 18 0 48 1 5 20 25 0 18 0 48 1 5 16 3 1 20 0 52 19 0 2 6 34 10 0 5 16 3 1 21 0 52 19 0 2 52 18 0 1 33 32 0 20 26 0 16 1 6 34 3 0 5 18 0 48 1 5 20 27 0 16 1 6 34 3 0 5 18 0 49 1 32 1 0 2 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 3 20 3 0 20 1 0 16 0 1 4 0 48 2 6 34 4 0 5 1 5 0 48 1 17 4 20 6 0 16 0 1 7 0 48 2 17 5 20 8 0 16 0 48 1 17 6 51 9 0 1 0 1 1 1 2 1 4 1 3 1 6 1 5 50)} "hx-wrap-debounce" {:upvalue-count 0 :arity 2 :constants ("Wrap handler with debounce (delay: ms before firing)" {:upvalue-count 3 :arity 1 :constants ("clear-timeout" "set-timeout" {:upvalue-count 3 :arity 0 :constants () :bytecode (2 19 0 5 18 1 18 2 49 1 50)}) :bytecode (18 0 33 10 0 20 0 0 18 0 48 1 32 1 0 2 5 20 1 0 51 2 0 0 0 0 1 1 0 18 2 48 2 19 0 50)}) :bytecode (1 0 0 5 2 17 2 51 1 0 1 2 1 0 1 1 50)} "hx-wrap-throttle" {:upvalue-count 0 :arity 2 :constants ("Wrap handler with throttle." 0 {:upvalue-count 3 :arity 1 :constants ("now-ms" ">" "-") :bytecode (20 0 0 48 0 17 1 16 1 18 0 52 2 0 2 18 1 52 1 0 2 33 14 0 16 1 19 0 5 18 2 16 0 49 1 32 1 0 2 50)}) :bytecode (1 0 0 5 1 1 0 17 2 51 2 0 1 2 1 1 1 0 50)} "hx-wrap-changed" {:upvalue-count 0 :arity 2 :constants ("Wrap handler: only fire if element value changed since last fire." {:upvalue-count 3 :arity 1 :constants ("element-value" "not" "=") :bytecode (20 0 0 18 0 48 1 17 1 16 1 18 1 52 2 0 2 52 1 0 1 33 14 0 16 1 19 1 5 18 2 16 0 49 1 32 1 0 2 50)}) :bytecode (1 0 0 5 2 17 2 51 1 0 1 1 1 2 1 0 50)} "hx-register-trigger!" {:upvalue-count 0 :arity 3 :constants ("Register event handler with trigger modifiers applied." "get" "event" "delay" "throttle" "once" "changed" "from" "hx-wrap-changed" "hx-wrap-debounce" "hx-wrap-throttle" "dom-query" "dom-body" "=" "load" "revealed" "intersect" "list" io-observe-intersection {:upvalue-count 1 :arity 0 :constants () :bytecode (18 0 2 49 1 50)} "every" io-set-interval "hs-on") :bytecode (1 0 0 5 16 1 1 2 0 52 1 0 2 17 3 16 1 1 3 0 52 1 0 2 17 4 16 1 1 4 0 52 1 0 2 17 5 16 1 1 5 0 52 1 0 2 17 6 16 1 1 6 0 52 1 0 2 17 7 16 1 1 7 0 52 1 0 2 17 8 16 2 17 9 16 7 33 14 0 20 8 0 16 9 16 0 48 2 17 9 32 1 0 2 5 16 4 33 14 0 20 9 0 16 9 16 4 48 2 17 9 32 1 0 2 5 16 5 33 14 0 20 10 0 16 9 16 5 48 2 17 9 32 1 0 2 5 16 8 33 15 0 20 11 0 20 12 0 48 0 16 8 48 2 32 2 0 16 0 17 10 16 3 1 14 0 52 13 0 2 33 8 0 16 9 2 49 1 32 94 0 16 3 1 15 0 52 13 0 2 6 34 10 0 5 16 3 1 16 0 52 13 0 2 33 18 0 1 18 0 16 0 51 19 0 1 9 52 17 0 3 112 32 50 0 16 3 1 20 0 52 13 0 2 33 27 0 16 4 33 18 0 1 21 0 51 19 0 1 9 16 4 52 17 0 3 112 32 1 0 2 32 11 0 20 22 0 16 10 16 3 16 9 49 3 50)} "htmx-activate!" {:upvalue-count 0 :arity 1 :constants ("Scan hx-* attributes on element, build and register handler.\n Also handles: hx-preload, hx-sse-connect, hx-ignore." "not" "dom-get-attr" "hx-ignore" "hx-verb-info" "dom-get-data" "hx-active" "dom-set-data" "first" "nth" 1 "hx-parse-trigger" "hx-trigger" "hx-make-handler" "hx-register-trigger!" "hx-preload" "hx-preload-register!" "hx-sse-connect" "hx-sse-connect!") :bytecode (1 0 0 5 20 2 0 16 0 1 3 0 48 2 52 1 0 1 33 164 0 20 4 0 16 0 48 1 17 1 16 1 6 33 15 0 5 20 5 0 16 0 1 6 0 48 2 52 1 0 1 33 77 0 20 7 0 16 0 1 6 0 3 48 3 5 16 1 52 8 0 1 17 2 16 1 1 10 0 52 9 0 2 17 3 20 11 0 20 2 0 16 0 1 12 0 48 2 16 0 48 2 17 4 20 13 0 16 0 16 2 16 3 48 3 17 5 20 14 0 16 0 16 4 16 5 48 3 32 1 0 2 5 20 2 0 16 0 1 15 0 48 2 33 10 0 20 16 0 16 0 48 1 32 1 0 2 5 20 2 0 16 0 1 17 0 48 2 33 10 0 20 18 0 16 0 49 1 32 1 0 2 32 1 0 2 50)} "HX-VERB-SELECTORS" "[hx-get],[hx-post],[hx-put],[hx-delete],[hx-patch],[hx-action],[hx-sse-connect],[hx-preload]" "htmx-boot!" {:upvalue-count 0 :arity 0 :constants ("Scan entire document for hx-* elements and activate." "for-each" "htmx-activate!" "dom-query-all" "dom-body" "HX-VERB-SELECTORS" "hx-boost-subtree!") :bytecode (1 0 0 5 20 2 0 20 3 0 20 4 0 48 0 20 5 0 48 2 52 1 0 2 5 20 6 0 2 49 1 50)} "hx-preload-cache" "hx-preload-register!" {:upvalue-count 0 :arity 1 :constants ("Register preload: prefetch GET on mouseenter, cache result." "hx-verb-info" "=" "first" "GET" "nth" 1 "hs-on" "mouseenter" {:upvalue-count 1 :arity 1 :constants ("not" "get" "hx-preload-cache" "list" io-fetch "GET" "Accept" "text/html" io-parse-text "assoc") :bytecode (20 2 0 18 0 52 1 0 2 52 0 0 1 33 54 0 1 4 0 18 0 1 5 0 2 1 6 0 1 7 0 65 1 0 52 3 0 5 112 17 1 1 8 0 16 1 52 3 0 2 112 17 2 20 2 0 18 0 16 2 52 9 0 3 21 2 0 32 1 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 48 1 17 1 16 1 6 33 14 0 5 16 1 52 3 0 1 1 4 0 52 2 0 2 33 29 0 16 1 1 6 0 52 5 0 2 17 2 20 7 0 16 0 1 8 0 51 9 0 1 2 49 3 32 1 0 2 50)} "hx-parse-sse-swap" {:upvalue-count 0 :arity 1 :constants ("Parse hx-sse-swap='event:#target,event2:#target2:outerHTML'." "not" "list" "map" {:upvalue-count 0 :arity 1 :constants ("split" "trim" ":" "=" "len" 2 "target" "nth" 1 "swap" "innerHTML" "event" 0 ">=" 3) :bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 17 1 16 1 52 4 0 1 1 5 0 52 3 0 2 33 36 0 1 6 0 16 1 1 8 0 52 7 0 2 1 9 0 1 10 0 1 11 0 16 1 1 12 0 52 7 0 2 65 3 0 32 80 0 16 1 52 4 0 1 1 14 0 52 13 0 2 33 42 0 1 6 0 16 1 1 8 0 52 7 0 2 1 9 0 16 1 1 5 0 52 7 0 2 1 11 0 16 1 1 12 0 52 7 0 2 65 3 0 32 22 0 1 6 0 2 1 9 0 1 10 0 1 11 0 16 0 52 1 0 1 65 3 0 50)} "split" ",") :bytecode (1 0 0 5 16 0 52 1 0 1 33 7 0 52 2 0 0 32 16 0 51 4 0 16 0 1 6 0 52 5 0 2 52 3 0 2 50)} "hx-sse-connect!" {:upvalue-count 0 :arity 1 :constants ("Connect to SSE endpoint. Dispatch events to swap targets." "dom-get-attr" "hx-sse-connect" "hx-parse-sse-swap" "hx-sse-swap" "list" io-event-source {:upvalue-count 1 :arity 2 :constants ("for-each" {:upvalue-count 2 :arity 1 :constants ("=" "get" "event" "dom-query" "dom-body" "target" "hx-swap!" "hx-normalize-swap-mode" "swap" "htmx-boot-subtree!" "hs-boot-subtree!") :bytecode (18 0 16 0 1 2 0 52 1 0 2 52 0 0 2 33 72 0 20 3 0 20 4 0 48 0 16 0 1 5 0 52 1 0 2 48 2 17 1 16 1 33 42 0 20 6 0 16 1 18 1 20 7 0 16 0 1 8 0 52 1 0 2 48 1 48 3 5 20 9 0 16 1 48 1 5 20 10 0 16 1 49 1 32 1 0 2 32 1 0 2 50)}) :bytecode (51 1 0 1 0 1 1 18 0 52 0 0 2 50)}) :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 16 1 33 35 0 20 3 0 20 1 0 16 0 1 4 0 48 2 48 1 17 2 1 6 0 16 1 51 7 0 1 2 52 5 0 3 112 32 1 0 2 50)} "htmx-boot-subtree!" {:upvalue-count 0 :arity 1 :constants ("Activate hx-* elements in subtree. Called after swaps." "for-each" "htmx-activate!" "dom-query-all" "HX-VERB-SELECTORS") :bytecode (1 0 0 5 16 0 33 28 0 20 2 0 20 3 0 16 0 20 4 0 48 2 52 1 0 2 5 20 2 0 16 0 49 1 32 1 0 2 50)} "hx-boost-link!" {:upvalue-count 0 :arity 1 :constants ("Boost an anchor: click → AJAX fetch → swap body → push URL." "dom-get-attr" "href" "not" "hx-verb-info" "starts-with?" "http" "mailto" "#" "dom-set-attr" "hx-get" "hx-target" "body" "hx-swap" "innerHTML" "hx-push-url" "true" "htmx-activate!") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 17 1 16 1 6 33 66 0 5 20 4 0 16 0 48 1 52 3 0 1 6 33 50 0 5 16 1 1 6 0 52 5 0 2 52 3 0 1 6 33 32 0 5 16 1 1 7 0 52 5 0 2 52 3 0 1 6 33 14 0 5 16 1 1 8 0 52 5 0 2 52 3 0 1 33 128 0 20 9 0 16 0 1 10 0 16 1 48 3 5 20 1 0 16 0 1 11 0 48 2 52 3 0 1 33 16 0 20 9 0 16 0 1 11 0 1 12 0 48 3 32 1 0 2 5 20 1 0 16 0 1 13 0 48 2 52 3 0 1 33 16 0 20 9 0 16 0 1 13 0 1 14 0 48 3 32 1 0 2 5 20 1 0 16 0 1 15 0 48 2 52 3 0 1 33 16 0 20 9 0 16 0 1 15 0 1 16 0 48 3 32 1 0 2 5 20 17 0 16 0 49 1 32 1 0 2 50)} "hx-boost-form!" {:upvalue-count 0 :arity 1 :constants ("Boost a form: submit → AJAX." "dom-get-attr" "action" "" "downcase" "method" "post" "not" "hx-verb-info" "dom-set-attr" "str" "hx-" "hx-target" "body" "hx-swap" "innerHTML" "htmx-activate!") :bytecode (1 0 0 5 20 1 0 16 0 1 2 0 48 2 6 34 4 0 5 1 3 0 17 1 20 1 0 16 0 1 5 0 48 2 6 34 4 0 5 1 6 0 52 4 0 1 17 2 20 8 0 16 0 48 1 52 7 0 1 33 99 0 20 9 0 16 0 1 11 0 16 2 52 10 0 2 16 1 48 3 5 20 1 0 16 0 1 12 0 48 2 52 7 0 1 33 16 0 20 9 0 16 0 1 12 0 1 13 0 48 3 32 1 0 2 5 20 1 0 16 0 1 14 0 48 2 52 7 0 1 33 16 0 20 9 0 16 0 1 14 0 1 15 0 48 3 32 1 0 2 5 20 16 0 16 0 49 1 32 1 0 2 50)} "hx-boost-subtree!" {:upvalue-count 0 :arity 1 :constants ("Apply hx-boost to links and forms within scope." "dom-body" "for-each" "hx-boost-link!" "dom-query-all" "[hx-boost] a, a[hx-boost]" "hx-boost-form!" "[hx-boost] form, form[hx-boost]") :bytecode (1 0 0 5 16 0 6 34 6 0 5 20 1 0 48 0 17 1 20 3 0 20 4 0 16 1 1 5 0 48 2 52 2 0 2 5 20 6 0 20 4 0 16 1 1 7 0 48 2 52 2 0 2 50)}) :bytecode (1 1 0 1 2 0 1 3 0 4 1 4 0 1 5 0 1 6 0 1 7 0 1 8 0 1 9 0 1 10 0 4 1 11 0 1 13 0 1 14 0 52 12 0 2 65 7 0 128 0 0 5 1 7 0 128 15 0 5 51 17 0 128 16 0 5 51 19 0 128 18 0 5 51 21 0 128 20 0 5 51 23 0 128 22 0 5 51 25 0 128 24 0 5 51 27 0 128 26 0 5 51 29 0 128 28 0 5 51 31 0 128 30 0 5 51 33 0 128 32 0 5 51 35 0 128 34 0 5 51 37 0 128 36 0 5 51 39 0 128 38 0 5 51 41 0 128 40 0 5 51 43 0 128 42 0 5 51 45 0 128 44 0 5 51 47 0 128 46 0 5 51 49 0 128 48 0 5 51 51 0 128 50 0 5 51 53 0 128 52 0 5 51 55 0 128 54 0 5 51 57 0 128 56 0 5 51 59 0 128 58 0 5 51 61 0 128 60 0 5 51 63 0 128 62 0 5 51 65 0 128 64 0 5 51 67 0 128 66 0 5 51 69 0 128 68 0 5 51 71 0 128 70 0 5 51 73 0 128 72 0 5 51 75 0 128 74 0 5 51 77 0 128 76 0 5 51 79 0 128 78 0 5 51 81 0 128 80 0 5 51 83 0 128 82 0 5 51 85 0 128 84 0 5 51 87 0 128 86 0 5 51 89 0 128 88 0 5 51 91 0 128 90 0 5 51 93 0 128 92 0 5 51 95 0 128 94 0 5 51 97 0 128 96 0 5 51 99 0 128 98 0 5 51 101 0 128 100 0 5 51 103 0 128 102 0 5 51 105 0 128 104 0 5 1 107 0 128 106 0 5 51 109 0 128 108 0 5 52 12 0 0 128 110 0 5 51 112 0 128 111 0 5 51 114 0 128 113 0 5 51 116 0 128 115 0 5 51 118 0 128 117 0 5 51 120 0 128 119 0 5 51 122 0 128 121 0 5 51 124 0 128 123 0 50)))