diff --git a/shared/static/wasm/sx/engine.sx b/shared/static/wasm/sx/engine.sx index 3e0c5e70..5c94e9b3 100644 --- a/shared/static/wasm/sx/engine.sx +++ b/shared/static/wasm/sx/engine.sx @@ -63,7 +63,26 @@ (starts-with? tok "from:") (dict-set! mods "from" (slice tok 5)))) (rest tokens)) - (dict "event" (first tokens) "modifiers" mods)))))) + (let + ((raw-event (first tokens))) + (let + ((bracket-idx (index-of raw-event "["))) + (if + (>= bracket-idx 0) + (do + (dict-set! + mods + "filter" + (slice + raw-event + (+ bracket-idx 1) + (- (len raw-event) 1))) + (dict + "event" + (slice raw-event 0 bracket-idx) + "modifiers" + mods)) + (dict "event" raw-event "modifiers" mods))))))))) raw-parts)))))) (define diff --git a/shared/static/wasm/sx/engine.sxbc b/shared/static/wasm/sx/engine.sxbc index 1a9a11a6..e2dc8c99 100644 --- a/shared/static/wasm/sx/engine.sxbc +++ b/shared/static/wasm/sx/engine.sxbc @@ -1,3 +1,3 @@ -(sxbc 1 "16c32e3b0a74e9f6" +(sxbc 1 "e6ffd5012ec841af" (code - :constants ("ENGINE_VERBS" "list" "get" "post" "put" "delete" "patch" "DEFAULT_SWAP" "outerHTML" "parse-time" {:upvalue-count 0 :arity 1 :constants ("nil?" 0 "ends-with?" "ms" "parse-int" "s" "*" "replace" "" 1000) :bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 74 0 16 0 1 3 0 52 2 0 2 33 12 0 16 0 1 1 0 52 4 0 2 32 50 0 16 0 1 5 0 52 2 0 2 33 29 0 16 0 1 5 0 1 8 0 52 7 0 3 1 1 0 52 4 0 2 1 9 0 52 6 0 2 32 9 0 16 0 1 1 0 52 4 0 2 50)} "parse-trigger-spec" {:upvalue-count 0 :arity 1 :constants ("nil?" "split" "," "filter" {:upvalue-count 0 :arity 1 :constants ("not" "nil?") :bytecode (16 0 52 1 0 1 52 0 0 1 50)} "map" {:upvalue-count 0 :arity 1 :constants ("split" "trim" " " "empty?" "=" "first" "every" ">=" "len" 2 "dict" "event" "modifiers" "interval" "parse-time" "nth" 1 "for-each" {:upvalue-count 1 :arity 1 :constants ("=" "once" "dict-set!" "changed" "starts-with?" "delay:" "delay" "parse-time" "slice" 6 "from:" "from" 5) :bytecode (16 0 1 1 0 52 0 0 2 33 13 0 18 0 1 1 0 3 52 2 0 3 32 97 0 16 0 1 3 0 52 0 0 2 33 13 0 18 0 1 3 0 3 52 2 0 3 32 72 0 16 0 1 5 0 52 4 0 2 33 26 0 18 0 1 6 0 20 7 0 16 0 1 9 0 52 8 0 2 48 1 52 2 0 3 32 34 0 16 0 1 10 0 52 4 0 2 33 21 0 18 0 1 11 0 16 0 1 12 0 52 8 0 2 52 2 0 3 32 1 0 2 50)} "rest") :bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 17 1 16 1 52 3 0 1 33 4 0 2 32 111 0 16 1 52 5 0 1 1 6 0 52 4 0 2 6 33 14 0 5 16 1 52 8 0 1 1 9 0 52 7 0 2 33 37 0 1 11 0 1 6 0 1 12 0 1 13 0 20 14 0 16 1 1 16 0 52 15 0 2 48 1 52 10 0 2 52 10 0 4 32 40 0 52 10 0 0 17 2 51 18 0 1 2 16 1 52 19 0 1 52 17 0 2 5 1 11 0 16 1 52 5 0 1 1 12 0 16 2 52 10 0 4 50)}) :bytecode (16 0 52 0 0 1 33 4 0 2 32 27 0 16 0 1 2 0 52 1 0 2 17 1 51 4 0 51 6 0 16 1 52 5 0 2 52 3 0 2 50)} "default-trigger" {:upvalue-count 0 :arity 1 :constants ("=" "form" "list" "dict" "event" "submit" "modifiers" "input" "select" "textarea" "change" "click") :bytecode (16 0 1 1 0 52 0 0 2 33 24 0 1 4 0 1 5 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 32 85 0 16 0 1 7 0 52 0 0 2 6 34 24 0 5 16 0 1 8 0 52 0 0 2 6 34 10 0 5 16 0 1 9 0 52 0 0 2 33 24 0 1 4 0 1 10 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 32 21 0 1 4 0 1 11 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 50)} "get-verb-info" {:upvalue-count 0 :arity 1 :constants ("some" {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "str" "sx-" "dict" "method" "upper" "url") :bytecode (20 0 0 18 0 1 2 0 16 0 52 1 0 2 48 2 17 1 16 1 33 21 0 1 4 0 16 0 52 5 0 1 1 6 0 16 1 52 3 0 4 32 1 0 2 50)} "ENGINE_VERBS") :bytecode (51 1 0 1 0 20 2 0 52 0 0 2 50)} "build-request-headers" {:upvalue-count 0 :arity 3 :constants ("dict" "SX-Request" "true" "SX-Current-URL" "browser-location-href" "dom-get-attr" "sx-target" "dict-set!" "SX-Target" "dom-query" "script[data-components][data-hash]" "data-hash" "SX-Components-Hash" "SX-Css" "sx-headers" "parse-header-value" "for-each" {:upvalue-count 2 :arity 1 :constants ("dict-set!" "str" "get") :bytecode (18 0 16 0 18 1 16 0 52 2 0 2 52 1 0 1 52 0 0 3 50)} "keys") :bytecode (1 1 0 1 2 0 1 3 0 20 4 0 48 0 52 0 0 4 17 3 20 5 0 16 0 1 6 0 48 2 17 4 16 4 33 14 0 16 3 1 8 0 16 4 52 7 0 3 32 1 0 2 5 20 5 0 20 9 0 1 10 0 48 1 1 11 0 48 2 17 4 16 4 33 14 0 16 3 1 12 0 16 4 52 7 0 3 32 1 0 2 5 16 2 33 14 0 16 3 1 13 0 16 2 52 7 0 3 32 1 0 2 5 20 5 0 16 0 1 14 0 48 2 17 4 16 4 33 38 0 20 15 0 16 4 48 1 17 5 16 5 33 20 0 51 17 0 1 3 1 5 16 5 52 18 0 1 52 16 0 2 32 1 0 2 32 1 0 2 5 16 3 50)} "process-response-headers" {:upvalue-count 0 :arity 1 :constants ("dict" "redirect" "SX-Redirect" "refresh" "SX-Refresh" "trigger" "SX-Trigger" "retarget" "SX-Retarget" "reswap" "SX-Reswap" "location" "SX-Location" "replace-url" "SX-Replace-Url" "css-hash" "SX-Css-Hash" "trigger-swap" "SX-Trigger-After-Swap" "trigger-settle" "SX-Trigger-After-Settle" "content-type" "Content-Type" "cache-invalidate" "SX-Cache-Invalidate" "cache-update" "SX-Cache-Update") :bytecode (1 1 0 16 0 1 2 0 48 1 1 3 0 16 0 1 4 0 48 1 1 5 0 16 0 1 6 0 48 1 1 7 0 16 0 1 8 0 48 1 1 9 0 16 0 1 10 0 48 1 1 11 0 16 0 1 12 0 48 1 1 13 0 16 0 1 14 0 48 1 1 15 0 16 0 1 16 0 48 1 1 17 0 16 0 1 18 0 48 1 1 19 0 16 0 1 20 0 48 1 1 21 0 16 0 1 22 0 48 1 1 23 0 16 0 1 24 0 48 1 1 25 0 16 0 1 26 0 48 1 52 0 0 26 50)} "parse-swap-spec" {:upvalue-count 0 :arity 2 :constants ("split" "DEFAULT_SWAP" " " "first" "for-each" {:upvalue-count 1 :arity 1 :constants ("=" "transition:true" "transition:false") :bytecode (16 0 1 1 0 52 0 0 2 33 6 0 3 19 0 32 19 0 16 0 1 2 0 52 0 0 2 33 6 0 4 19 0 32 1 0 2 50)} "rest" "dict" "style" "transition") :bytecode (16 0 6 34 4 0 5 20 1 0 1 2 0 52 0 0 2 17 2 16 2 52 3 0 1 17 3 16 1 17 4 51 5 0 1 4 16 2 52 6 0 1 52 4 0 2 5 1 8 0 16 3 1 9 0 16 4 52 7 0 4 50)} "parse-retry-spec" {:upvalue-count 0 :arity 1 :constants ("nil?" "split" ":" "dict" "strategy" "first" "start-ms" "parse-int" "nth" 1 1000 "cap-ms" 2 30000) :bytecode (16 0 52 0 0 1 33 4 0 2 32 62 0 16 0 1 2 0 52 1 0 2 17 1 1 4 0 16 1 52 5 0 1 1 6 0 16 1 1 9 0 52 8 0 2 1 10 0 52 7 0 2 1 11 0 16 1 1 12 0 52 8 0 2 1 13 0 52 7 0 2 52 3 0 6 50)} "next-retry-ms" {:upvalue-count 0 :arity 2 :constants ("min" "*" 2) :bytecode (16 0 1 2 0 52 1 0 2 16 1 52 0 0 2 50)} "filter-params" {:upvalue-count 0 :arity 2 :constants ("nil?" "=" "none" "list" "*" "starts-with?" "not " "map" "trim" "split" "slice" 4 "," "filter" {:upvalue-count 1 :arity 1 :constants ("not" "contains?" "first") :bytecode (18 0 16 0 52 2 0 1 52 1 0 2 52 0 0 1 50)} {:upvalue-count 1 :arity 1 :constants ("contains?" "first") :bytecode (18 0 16 0 52 1 0 1 52 0 0 2 50)}) :bytecode (16 0 52 0 0 1 33 5 0 16 1 32 116 0 16 0 1 2 0 52 1 0 2 33 7 0 52 3 0 0 32 97 0 16 0 1 4 0 52 1 0 2 33 5 0 16 1 32 80 0 16 0 1 6 0 52 5 0 2 33 39 0 20 8 0 16 0 1 11 0 52 10 0 2 1 12 0 52 9 0 2 52 7 0 2 17 2 51 14 0 1 2 16 1 52 13 0 2 32 29 0 20 8 0 16 0 1 12 0 52 9 0 2 52 7 0 2 17 2 51 15 0 1 2 16 1 52 13 0 2 50)} "resolve-target" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-target" "nil?" "=" "this" "closest" "dom-parent" "dom-query") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 52 2 0 1 6 34 10 0 5 16 1 1 4 0 52 3 0 2 33 5 0 16 0 32 29 0 16 1 1 5 0 52 3 0 2 33 10 0 20 6 0 16 0 49 1 32 7 0 20 7 0 16 1 49 1 50)} "apply-optimistic" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-optimistic" "nil?" "resolve-target" "dict" "target" "directive" "=" "remove" "dict-set!" "opacity" "dom-get-style" "dom-set-style" "0" "pointer-events" "none" "disable" "disabled" "dom-get-prop" "dom-set-prop" "starts-with?" "add-class:" "slice" 10 "add-class" "dom-add-class") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 52 2 0 1 33 4 0 2 32 191 0 20 3 0 16 0 48 1 6 34 3 0 5 16 0 17 2 1 5 0 16 2 1 6 0 16 1 52 4 0 4 17 3 16 1 1 8 0 52 7 0 2 33 50 0 16 3 1 10 0 20 11 0 16 2 1 10 0 48 2 52 9 0 3 5 20 12 0 16 2 1 10 0 1 13 0 48 3 5 20 12 0 16 2 1 14 0 1 15 0 48 3 32 94 0 16 1 1 16 0 52 7 0 2 33 34 0 16 3 1 17 0 20 18 0 16 2 1 17 0 48 2 52 9 0 3 5 20 19 0 16 2 1 17 0 3 48 3 32 48 0 16 1 1 21 0 52 20 0 2 33 35 0 16 1 1 23 0 52 22 0 2 17 4 16 3 1 24 0 16 4 52 9 0 3 5 20 25 0 16 2 16 4 48 2 32 1 0 2 5 16 3 50)} "revert-optimistic" {:upvalue-count 0 :arity 1 :constants ("get" "target" "directive" "=" "remove" "dom-set-style" "opacity" "" "pointer-events" "disable" "dom-set-prop" "disabled" "add-class" "dom-remove-class") :bytecode (16 0 33 153 0 16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 16 2 1 4 0 52 3 0 2 33 44 0 20 5 0 16 1 1 6 0 16 0 1 6 0 52 0 0 2 6 34 4 0 5 1 7 0 48 3 5 20 5 0 16 1 1 8 0 1 7 0 49 3 32 72 0 16 2 1 9 0 52 3 0 2 33 28 0 20 10 0 16 1 1 11 0 16 0 1 11 0 52 0 0 2 6 34 2 0 5 4 49 3 32 32 0 16 0 1 12 0 52 0 0 2 33 19 0 20 13 0 16 1 16 0 1 12 0 52 0 0 2 49 2 32 1 0 2 32 1 0 2 50)} "find-oob-swaps" {:upvalue-count 0 :arity 1 :constants ("list" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-query-all" "str" "[" "]" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "outerHTML" "dom-id" "dom-remove-attr" "append!" "dict" "element" "swap-type" "target-id") :bytecode (20 0 0 16 0 18 0 48 2 6 34 4 0 5 1 1 0 17 1 20 2 0 16 0 48 1 17 2 20 3 0 16 0 18 0 48 2 5 16 2 33 29 0 20 4 0 18 1 1 6 0 16 0 1 7 0 16 1 1 8 0 16 2 52 5 0 6 49 2 32 1 0 2 50)}) :bytecode (20 0 0 18 0 1 2 0 16 0 1 3 0 52 1 0 3 48 2 17 1 51 5 0 1 0 0 1 16 1 52 4 0 2 50)} "sx-swap-oob" "hx-swap-oob") :bytecode (52 0 0 0 17 1 51 2 0 1 0 1 1 1 3 0 1 4 0 52 0 0 2 52 1 0 2 5 16 1 50)} "morph-node" {:upvalue-count 0 :arity 2 :constants ("dom-has-attr?" "sx-preserve" "sx-ignore" "data-sx-island" "is-processed?" "island-hydrated" "=" "dom-get-attr" "sync-attrs" "morph-island-children" "not" "dom-node-type" "dom-node-name" "dom-replace-child" "dom-parent" "dom-clone" 3 8 "dom-text-content" "dom-set-text-content" 1 "dispose-island" "dispose-islands-in" "dom-is-active-element?" "dom-is-input-element?" "morph-children") :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 11 0 5 20 0 0 16 0 1 2 0 48 2 33 4 0 2 32 148 1 20 0 0 16 0 1 3 0 48 2 6 33 55 0 5 20 4 0 16 0 1 5 0 48 2 6 33 40 0 5 20 0 0 16 1 1 3 0 48 2 6 33 25 0 5 20 7 0 16 0 1 3 0 48 2 20 7 0 16 1 1 3 0 48 2 52 6 0 2 33 22 0 20 8 0 16 0 16 1 48 2 5 20 9 0 16 0 16 1 49 2 32 54 1 20 11 0 16 0 48 1 20 11 0 16 1 48 1 52 6 0 2 52 10 0 1 6 34 23 0 5 20 12 0 16 0 48 1 20 12 0 16 1 48 1 52 6 0 2 52 10 0 1 33 25 0 20 13 0 20 14 0 16 0 48 1 20 15 0 16 1 3 48 2 16 0 49 3 32 233 0 20 11 0 16 0 48 1 1 16 0 52 6 0 2 6 34 15 0 5 20 11 0 16 0 48 1 1 17 0 52 6 0 2 33 46 0 20 18 0 16 0 48 1 20 18 0 16 1 48 1 52 6 0 2 52 10 0 1 33 17 0 20 19 0 16 0 20 18 0 16 1 48 1 49 2 32 1 0 2 32 151 0 20 11 0 16 0 48 1 1 20 0 52 6 0 2 33 133 0 20 0 0 16 0 1 3 0 48 2 6 33 44 0 5 20 0 0 16 1 1 3 0 48 2 6 33 29 0 5 20 7 0 16 0 1 3 0 48 2 20 7 0 16 1 1 3 0 48 2 52 6 0 2 52 10 0 1 33 18 0 20 21 0 16 0 48 1 5 20 22 0 16 0 48 1 32 1 0 2 5 20 8 0 16 0 16 1 48 2 5 20 23 0 16 0 48 1 6 33 8 0 5 20 24 0 16 0 48 1 52 10 0 1 33 12 0 20 25 0 16 0 16 1 49 2 32 1 0 2 32 1 0 2 50)} "sync-attrs" {:upvalue-count 0 :arity 2 :constants ("dom-get-attr" "data-sx-reactive-attrs" "" "empty?" "list" "split" "," "for-each" {:upvalue-count 2 :arity 1 :constants ("first" "nth" 1 "not" "=" "dom-get-attr" "contains?" "dom-set-attr") :bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 20 5 0 18 0 16 1 48 2 16 2 52 4 0 2 52 3 0 1 6 33 13 0 5 18 1 16 1 52 6 0 2 52 3 0 1 33 14 0 20 7 0 18 0 16 1 16 2 49 3 32 1 0 2 50)} "dom-attr-list" {:upvalue-count 3 :arity 1 :constants ("first" "not" "dom-has-attr?" "contains?" "=" "data-sx-reactive-attrs" "dom-remove-attr") :bytecode (16 0 52 0 0 1 17 1 20 2 0 18 0 16 1 48 2 52 1 0 1 6 33 31 0 5 18 1 16 1 52 3 0 2 52 1 0 1 6 33 14 0 5 16 1 1 5 0 52 4 0 2 52 1 0 1 33 12 0 20 6 0 18 2 16 1 49 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 2 16 2 52 3 0 1 33 7 0 52 4 0 0 32 9 0 16 2 1 6 0 52 5 0 2 17 3 51 8 0 1 0 1 3 20 9 0 16 1 48 1 52 7 0 2 5 51 10 0 1 1 1 3 1 0 20 9 0 16 0 48 1 52 7 0 2 50)} "morph-children" {:upvalue-count 0 :arity 2 :constants ("dom-child-list" "dict" 0 "for-each" {:upvalue-count 3 :arity 1 :constants ("dom-id" "not" "empty?" "dict-set!" "inc") :bytecode (20 0 0 16 0 48 1 17 1 16 1 6 33 11 0 5 16 1 52 2 0 1 52 1 0 1 33 24 0 18 0 16 1 16 0 52 3 0 3 5 18 1 16 1 18 2 52 3 0 3 32 1 0 2 5 18 2 52 4 0 1 19 2 50)} {:upvalue-count 6 :arity 1 :constants ("dom-id" "not" "empty?" "dict-get" "nil?" "dict-set!" "str" "<" "len" "=" "nth" "dom-insert-before" "morph-node" "inc" "dom-clone" "dom-append") :bytecode (20 0 0 16 0 48 1 17 1 16 1 6 33 11 0 5 16 1 52 2 0 1 52 1 0 1 33 5 0 16 1 32 1 0 2 17 2 16 2 33 11 0 18 0 16 2 52 3 0 2 32 1 0 2 17 3 16 3 6 33 11 0 5 16 3 52 4 0 1 52 1 0 1 33 133 0 18 1 16 2 52 3 0 2 17 4 16 4 33 16 0 18 2 16 4 52 6 0 1 3 52 5 0 3 32 1 0 2 5 18 3 18 4 52 8 0 1 52 7 0 2 6 33 19 0 5 16 3 18 4 18 3 52 10 0 2 52 9 0 2 52 1 0 1 33 39 0 20 11 0 18 5 16 3 18 3 18 4 52 8 0 1 52 7 0 2 33 11 0 18 4 18 3 52 10 0 2 32 1 0 2 48 3 32 1 0 2 5 20 12 0 16 3 16 0 48 2 5 18 3 52 13 0 1 19 3 32 135 0 18 3 18 4 52 8 0 1 52 7 0 2 33 105 0 18 4 18 3 52 10 0 2 17 4 20 0 0 16 4 48 1 17 5 16 5 6 33 22 0 5 16 5 52 2 0 1 52 1 0 1 6 33 7 0 5 16 2 52 1 0 1 33 20 0 20 11 0 18 5 20 14 0 16 0 3 48 2 16 4 49 3 32 32 0 18 2 18 3 52 6 0 1 3 52 5 0 3 5 20 12 0 16 4 16 0 48 2 5 18 3 52 13 0 1 19 3 32 15 0 20 15 0 18 5 20 14 0 16 0 3 48 2 49 2 50)} {:upvalue-count 3 :arity 1 :constants ("not" "dict-get" "str" "nth" "dom-is-child-of?" "dom-has-attr?" "sx-preserve" "sx-ignore" "dom-remove-child") :bytecode (18 0 16 0 52 2 0 1 52 1 0 2 52 0 0 1 33 76 0 18 1 16 0 52 3 0 2 17 1 20 4 0 16 1 18 2 48 2 6 33 34 0 5 20 5 0 16 1 1 6 0 48 2 52 0 0 1 6 33 15 0 5 20 5 0 16 1 1 7 0 48 2 52 0 0 1 33 12 0 20 8 0 18 2 16 1 49 2 32 1 0 2 32 1 0 2 50)} "range" "len") :bytecode (20 0 0 16 0 48 1 17 2 20 0 0 16 1 48 1 17 3 52 1 0 0 17 4 52 1 0 0 17 5 52 1 0 0 17 6 1 2 0 17 7 1 2 0 17 8 51 4 0 1 4 1 5 1 8 16 2 52 3 0 2 5 51 5 0 1 4 1 5 1 6 1 7 1 2 1 0 16 3 52 3 0 2 5 51 6 0 1 6 1 2 1 0 1 2 0 16 2 52 8 0 1 52 7 0 2 52 3 0 2 50)} "morph-island-children" {:upvalue-count 0 :arity 2 :constants ("dom-query-all" "[data-sx-lake]" "[data-sx-marsh]" "dict" "for-each" {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-sx-lake" "dict-set!") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 13 0 18 0 16 1 16 0 52 2 0 3 32 1 0 2 50)} {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-sx-marsh" "dict-set!") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 13 0 18 0 16 1 16 0 52 2 0 3 32 1 0 2 50)} {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-sx-lake" "dict-get" "sync-attrs" "morph-children") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 18 0 16 1 52 2 0 2 17 2 16 2 33 22 0 20 3 0 16 0 16 2 48 2 5 20 4 0 16 0 16 2 49 2 32 1 0 2 50)} {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "data-sx-marsh" "dict-get" "morph-marsh") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 18 0 16 1 52 2 0 2 17 2 16 2 33 14 0 20 3 0 16 0 16 2 18 1 49 3 32 1 0 2 50)} "process-signal-updates") :bytecode (20 0 0 16 0 1 1 0 48 2 17 2 20 0 0 16 1 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 20 0 0 16 1 1 2 0 48 2 17 5 52 3 0 0 17 6 52 3 0 0 17 7 51 5 0 1 6 16 3 52 4 0 2 5 51 6 0 1 7 16 5 52 4 0 2 5 51 7 0 1 6 16 2 52 4 0 2 5 51 8 0 1 7 1 0 16 4 52 4 0 2 5 20 9 0 16 1 49 1 50)} "morph-marsh" {:upvalue-count 0 :arity 3 :constants ("dom-get-data" "sx-marsh-transform" "sx-marsh-env" "dom-inner-html" "not" "empty?" "parse" "cek-call" "list" "dispose-marsh-scope" "with-marsh-scope" {:upvalue-count 3 :arity 0 :constants ("render-to-dom" "dom-remove-children-after" "dom-append") :bytecode (20 0 0 18 0 18 1 2 48 3 17 0 20 1 0 18 2 2 48 2 5 20 2 0 18 2 16 0 49 2 50)} "sync-attrs" "morph-children") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 20 3 0 16 1 48 1 17 5 16 4 6 33 18 0 5 16 5 6 33 11 0 5 16 5 52 5 0 1 52 4 0 1 33 61 0 20 6 0 16 5 48 1 17 6 16 3 33 16 0 20 7 0 16 3 16 6 52 8 0 1 48 2 32 2 0 16 6 17 7 20 9 0 16 0 48 1 5 20 10 0 16 0 51 11 0 1 7 1 4 1 0 49 2 32 19 0 20 12 0 16 0 16 1 48 2 5 20 13 0 16 0 16 1 49 2 50)} "process-signal-updates" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "[data-sx-signal]" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "data-sx-signal" "index-of" ":" ">" 0 "slice" "+" 1 "json-parse" "reset!" "use-store" "dom-remove-attr") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 93 0 16 1 1 3 0 52 2 0 2 17 2 16 2 1 5 0 52 4 0 2 33 66 0 16 1 1 5 0 16 2 52 6 0 3 17 3 16 1 16 2 1 8 0 52 7 0 2 52 6 0 2 17 4 20 9 0 16 4 48 1 17 5 20 10 0 16 3 52 11 0 1 16 5 48 2 5 20 12 0 16 0 1 1 0 49 2 32 1 0 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 50)} "swap-dom-nodes" {:upvalue-count 0 :arity 3 :constants ("innerHTML" "=" "dom-is-fragment?" "morph-children" "dom-create-element" "div" "dom-append" "outerHTML" "dom-parent" "dom-clone" "dom-first-child" "dom-replace-child" "dom-next-sibling" "insert-remaining-siblings" "dom-remove-child" "afterend" "dom-insert-after" "beforeend" "afterbegin" "dom-prepend" "beforebegin" "dom-insert-before" "delete" "none") :bytecode (16 2 6 1 0 0 52 1 0 2 33 56 0 5 20 2 0 16 1 48 1 33 12 0 20 3 0 16 0 16 1 49 2 32 30 0 20 4 0 1 5 0 2 48 2 17 3 20 6 0 16 3 16 1 48 2 5 20 3 0 16 0 16 3 49 2 32 75 1 6 1 7 0 52 1 0 2 33 119 0 5 20 8 0 16 0 48 1 17 3 20 9 0 16 1 3 48 2 17 4 20 2 0 16 1 48 1 33 72 0 20 10 0 16 1 48 1 17 5 16 5 33 46 0 20 9 0 16 5 3 48 2 17 4 5 20 11 0 16 3 16 4 16 0 48 3 5 20 12 0 16 5 48 1 17 6 20 13 0 16 3 16 4 16 6 48 3 32 9 0 20 14 0 16 3 16 0 48 2 32 11 0 20 11 0 16 3 16 4 16 0 48 3 5 16 4 32 201 0 6 1 15 0 52 1 0 2 33 13 0 5 20 16 0 16 0 16 1 49 2 32 177 0 6 1 17 0 52 1 0 2 33 13 0 5 20 6 0 16 0 16 1 49 2 32 153 0 6 1 18 0 52 1 0 2 33 13 0 5 20 19 0 16 0 16 1 49 2 32 129 0 6 1 20 0 52 1 0 2 33 20 0 5 20 21 0 20 8 0 16 0 48 1 16 1 16 0 49 3 32 98 0 6 1 22 0 52 1 0 2 33 18 0 5 20 14 0 20 8 0 16 0 48 1 16 0 49 2 32 69 0 6 1 23 0 52 1 0 2 33 5 0 5 2 32 53 0 5 20 2 0 16 1 48 1 33 12 0 20 3 0 16 0 16 1 49 2 32 30 0 20 4 0 1 5 0 2 48 2 17 3 20 6 0 16 3 16 1 48 2 5 20 3 0 16 0 16 3 49 2 50)} "insert-remaining-siblings" {:upvalue-count 0 :arity 3 :constants ("dom-next-sibling" "dom-insert-after" "insert-remaining-siblings") :bytecode (16 2 33 33 0 20 0 0 16 2 48 1 17 3 20 1 0 16 1 16 2 48 2 5 20 2 0 16 0 16 2 16 3 49 3 32 1 0 2 50)} "swap-html-string" {:upvalue-count 0 :arity 3 :constants ("innerHTML" "=" "dom-set-inner-html" "outerHTML" "dom-parent" "dom-insert-adjacent-html" "afterend" "dom-remove-child" "beforeend" "afterbegin" "beforebegin" "delete" "none") :bytecode (16 2 6 1 0 0 52 1 0 2 33 13 0 5 20 2 0 16 0 16 1 49 2 32 212 0 6 1 3 0 52 1 0 2 33 38 0 5 20 4 0 16 0 48 1 17 3 20 5 0 16 0 1 6 0 16 1 48 3 5 20 7 0 16 3 16 0 48 2 5 16 3 32 163 0 6 1 6 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 6 0 16 1 49 3 32 136 0 6 1 8 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 8 0 16 1 49 3 32 109 0 6 1 9 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 9 0 16 1 49 3 32 82 0 6 1 10 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 10 0 16 1 49 3 32 55 0 6 1 11 0 52 1 0 2 33 18 0 5 20 7 0 20 4 0 16 0 48 1 16 0 49 2 32 26 0 6 1 12 0 52 1 0 2 33 5 0 5 2 32 10 0 5 20 2 0 16 0 16 1 49 2 50)} "handle-history" {:upvalue-count 0 :arity 3 :constants ("dom-get-attr" "sx-push-url" "sx-replace-url" "get" "replace-url" "browser-replace-state" "not" "=" "false" "browser-push-state" "true") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 16 2 1 4 0 52 3 0 2 17 5 16 5 33 10 0 20 5 0 16 5 49 1 32 101 0 16 3 6 33 14 0 5 16 3 1 8 0 52 7 0 2 52 6 0 1 33 27 0 20 9 0 16 3 1 10 0 52 7 0 2 33 5 0 16 1 32 2 0 16 3 49 1 32 51 0 16 4 6 33 14 0 5 16 4 1 8 0 52 7 0 2 52 6 0 1 33 27 0 20 5 0 16 4 1 10 0 52 7 0 2 33 5 0 16 1 32 2 0 16 4 49 1 32 1 0 2 50)} "PRELOAD_TTL" 30000 "preload-cache-get" {:upvalue-count 0 :arity 2 :constants ("dict-get" "nil?" ">" "-" "now-ms" "get" "timestamp" "PRELOAD_TTL" "dict-delete!") :bytecode (16 0 16 1 52 0 0 2 17 2 16 2 52 1 0 1 33 4 0 2 32 52 0 20 4 0 48 0 16 2 1 6 0 52 5 0 2 52 3 0 2 20 7 0 52 2 0 2 33 13 0 16 0 16 1 52 8 0 2 5 2 32 11 0 16 0 16 1 52 8 0 2 5 16 2 50)} "preload-cache-set" {:upvalue-count 0 :arity 4 :constants ("dict-set!" "dict" "text" "content-type" "timestamp" "now-ms") :bytecode (16 0 16 1 1 2 0 16 2 1 3 0 16 3 1 4 0 20 5 0 48 0 52 1 0 6 52 0 0 3 50)} "classify-trigger" {:upvalue-count 0 :arity 1 :constants ("get" "event" "=" "every" "poll" "intersect" "load" "revealed") :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 1 1 3 0 52 2 0 2 33 6 0 1 4 0 32 57 0 16 1 1 5 0 52 2 0 2 33 6 0 1 5 0 32 39 0 16 1 1 6 0 52 2 0 2 33 6 0 1 6 0 32 21 0 16 1 1 7 0 52 2 0 2 33 6 0 1 7 0 32 3 0 1 1 0 50)} "should-boost-link?" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "href" "not" "starts-with?" "#" "javascript:" "mailto:" "browser-same-origin?" "dom-has-attr?" "sx-get" "sx-post" "sx-disable") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 119 0 5 16 1 1 4 0 52 3 0 2 52 2 0 1 6 33 101 0 5 16 1 1 5 0 52 3 0 2 52 2 0 1 6 33 83 0 5 16 1 1 6 0 52 3 0 2 52 2 0 1 6 33 65 0 5 20 7 0 16 1 48 1 6 33 53 0 5 20 8 0 16 0 1 9 0 48 2 52 2 0 1 6 33 34 0 5 20 8 0 16 0 1 10 0 48 2 52 2 0 1 6 33 15 0 5 20 8 0 16 0 1 11 0 48 2 52 2 0 1 50)} "should-boost-form?" {:upvalue-count 0 :arity 1 :constants ("not" "dom-has-attr?" "sx-get" "sx-post" "sx-disable") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 34 0 5 20 1 0 16 0 1 3 0 48 2 52 0 0 1 6 33 15 0 5 20 1 0 16 0 1 4 0 48 2 52 0 0 1 50)} "parse-sse-swap" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-sse-swap" "message") :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 50)}) :bytecode (1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 52 1 0 5 128 0 0 5 1 8 0 128 7 0 5 51 10 0 128 9 0 5 51 12 0 128 11 0 5 51 14 0 128 13 0 5 51 16 0 128 15 0 5 51 18 0 128 17 0 5 51 20 0 128 19 0 5 51 22 0 128 21 0 5 51 24 0 128 23 0 5 51 26 0 128 25 0 5 51 28 0 128 27 0 5 51 30 0 128 29 0 5 51 32 0 128 31 0 5 51 34 0 128 33 0 5 51 36 0 128 35 0 5 51 38 0 128 37 0 5 51 40 0 128 39 0 5 51 42 0 128 41 0 5 51 44 0 128 43 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 1 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 5 51 68 0 128 67 0 5 51 70 0 128 69 0 50))) + :constants ("ENGINE_VERBS" "list" "get" "post" "put" "delete" "patch" "DEFAULT_SWAP" "outerHTML" "parse-time" {:upvalue-count 0 :arity 1 :constants ("nil?" 0 "ends-with?" "ms" "parse-int" "s" "*" "replace" "" 1000) :bytecode (16 0 52 0 0 1 33 6 0 1 1 0 32 74 0 16 0 1 3 0 52 2 0 2 33 12 0 16 0 1 1 0 52 4 0 2 32 50 0 16 0 1 5 0 52 2 0 2 33 29 0 16 0 1 5 0 1 8 0 52 7 0 3 1 1 0 52 4 0 2 1 9 0 52 6 0 2 32 9 0 16 0 1 1 0 52 4 0 2 50)} "parse-trigger-spec" {:upvalue-count 0 :arity 1 :constants ("nil?" "split" "," "filter" {:upvalue-count 0 :arity 1 :constants ("not" "nil?") :bytecode (16 0 52 1 0 1 52 0 0 1 50)} "map" {:upvalue-count 0 :arity 1 :constants ("split" "trim" " " "empty?" "=" "first" "every" ">=" "len" 2 "dict" "event" "modifiers" "interval" "parse-time" "nth" 1 "for-each" {:upvalue-count 1 :arity 1 :constants ("=" "once" "dict-set!" "changed" "starts-with?" "delay:" "delay" "parse-time" "slice" 6 "from:" "from" 5) :bytecode (16 0 1 1 0 52 0 0 2 33 13 0 18 0 1 1 0 3 52 2 0 3 32 97 0 16 0 1 3 0 52 0 0 2 33 13 0 18 0 1 3 0 3 52 2 0 3 32 72 0 16 0 1 5 0 52 4 0 2 33 26 0 18 0 1 6 0 20 7 0 16 0 1 9 0 52 8 0 2 48 1 52 2 0 3 32 34 0 16 0 1 10 0 52 4 0 2 33 21 0 18 0 1 11 0 16 0 1 12 0 52 8 0 2 52 2 0 3 32 1 0 2 50)} "rest" "index-of" "[" 0 "dict-set!" "filter" "slice" "+" "-") :bytecode (16 0 52 1 0 1 1 2 0 52 0 0 2 17 1 16 1 52 3 0 1 33 4 0 2 32 202 0 16 1 52 5 0 1 1 6 0 52 4 0 2 6 33 14 0 5 16 1 52 8 0 1 1 9 0 52 7 0 2 33 37 0 1 11 0 1 6 0 1 12 0 1 13 0 20 14 0 16 1 1 16 0 52 15 0 2 48 1 52 10 0 2 52 10 0 4 32 131 0 52 10 0 0 17 2 51 18 0 1 2 16 1 52 19 0 1 52 17 0 2 5 16 1 52 5 0 1 17 3 16 3 1 21 0 52 20 0 2 17 4 16 4 1 22 0 52 7 0 2 33 64 0 16 2 1 24 0 16 3 16 4 1 16 0 52 26 0 2 16 3 52 8 0 1 1 16 0 52 27 0 2 52 25 0 3 52 23 0 3 5 1 11 0 16 3 1 22 0 16 4 52 25 0 3 1 12 0 16 2 52 10 0 4 32 14 0 1 11 0 16 3 1 12 0 16 2 52 10 0 4 50)}) :bytecode (16 0 52 0 0 1 33 4 0 2 32 27 0 16 0 1 2 0 52 1 0 2 17 1 51 4 0 51 6 0 16 1 52 5 0 2 52 3 0 2 50)} "default-trigger" {:upvalue-count 0 :arity 1 :constants ("=" "form" "list" "dict" "event" "submit" "modifiers" "input" "select" "textarea" "change" "click") :bytecode (16 0 1 1 0 52 0 0 2 33 24 0 1 4 0 1 5 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 32 85 0 16 0 1 7 0 52 0 0 2 6 34 24 0 5 16 0 1 8 0 52 0 0 2 6 34 10 0 5 16 0 1 9 0 52 0 0 2 33 24 0 1 4 0 1 10 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 32 21 0 1 4 0 1 11 0 1 6 0 52 3 0 0 52 3 0 4 52 2 0 1 50)} "get-verb-info" {:upvalue-count 0 :arity 1 :constants ("some" {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "str" "sx-" "dict" "method" "upper" "url") :bytecode (20 0 0 18 0 1 2 0 16 0 52 1 0 2 48 2 17 1 16 1 33 21 0 1 4 0 16 0 52 5 0 1 1 6 0 16 1 52 3 0 4 32 1 0 2 50)} "ENGINE_VERBS") :bytecode (51 1 0 1 0 20 2 0 52 0 0 2 50)} "build-request-headers" {:upvalue-count 0 :arity 3 :constants ("dict" "SX-Request" "true" "SX-Current-URL" "browser-location-href" "dom-get-attr" "sx-target" "dict-set!" "SX-Target" "dom-query" "script[data-components][data-hash]" "data-hash" "SX-Components-Hash" "SX-Css" "sx-headers" "parse-header-value" "for-each" {:upvalue-count 2 :arity 1 :constants ("dict-set!" "str" "get") :bytecode (18 0 16 0 18 1 16 0 52 2 0 2 52 1 0 1 52 0 0 3 50)} "keys") :bytecode (1 1 0 1 2 0 1 3 0 20 4 0 48 0 52 0 0 4 17 3 20 5 0 16 0 1 6 0 48 2 17 4 16 4 33 14 0 16 3 1 8 0 16 4 52 7 0 3 32 1 0 2 5 20 5 0 20 9 0 1 10 0 48 1 1 11 0 48 2 17 4 16 4 33 14 0 16 3 1 12 0 16 4 52 7 0 3 32 1 0 2 5 16 2 33 14 0 16 3 1 13 0 16 2 52 7 0 3 32 1 0 2 5 20 5 0 16 0 1 14 0 48 2 17 4 16 4 33 38 0 20 15 0 16 4 48 1 17 5 16 5 33 20 0 51 17 0 1 3 1 5 16 5 52 18 0 1 52 16 0 2 32 1 0 2 32 1 0 2 5 16 3 50)} "process-response-headers" {:upvalue-count 0 :arity 1 :constants ("dict" "redirect" "SX-Redirect" "refresh" "SX-Refresh" "trigger" "SX-Trigger" "retarget" "SX-Retarget" "reswap" "SX-Reswap" "location" "SX-Location" "replace-url" "SX-Replace-Url" "css-hash" "SX-Css-Hash" "trigger-swap" "SX-Trigger-After-Swap" "trigger-settle" "SX-Trigger-After-Settle" "content-type" "Content-Type" "cache-invalidate" "SX-Cache-Invalidate" "cache-update" "SX-Cache-Update") :bytecode (1 1 0 16 0 1 2 0 48 1 1 3 0 16 0 1 4 0 48 1 1 5 0 16 0 1 6 0 48 1 1 7 0 16 0 1 8 0 48 1 1 9 0 16 0 1 10 0 48 1 1 11 0 16 0 1 12 0 48 1 1 13 0 16 0 1 14 0 48 1 1 15 0 16 0 1 16 0 48 1 1 17 0 16 0 1 18 0 48 1 1 19 0 16 0 1 20 0 48 1 1 21 0 16 0 1 22 0 48 1 1 23 0 16 0 1 24 0 48 1 1 25 0 16 0 1 26 0 48 1 52 0 0 26 50)} "parse-swap-spec" {:upvalue-count 0 :arity 2 :constants ("split" "DEFAULT_SWAP" " " "first" "for-each" {:upvalue-count 1 :arity 1 :constants ("=" "transition:true" "transition:false") :bytecode (16 0 1 1 0 52 0 0 2 33 6 0 3 19 0 32 19 0 16 0 1 2 0 52 0 0 2 33 6 0 4 19 0 32 1 0 2 50)} "rest" "dict" "style" "transition") :bytecode (16 0 6 34 4 0 5 20 1 0 1 2 0 52 0 0 2 17 2 16 2 52 3 0 1 17 3 16 1 17 4 51 5 0 1 4 16 2 52 6 0 1 52 4 0 2 5 1 8 0 16 3 1 9 0 16 4 52 7 0 4 50)} "parse-retry-spec" {:upvalue-count 0 :arity 1 :constants ("nil?" "split" ":" "dict" "strategy" "first" "start-ms" "parse-int" "nth" 1 1000 "cap-ms" 2 30000) :bytecode (16 0 52 0 0 1 33 4 0 2 32 62 0 16 0 1 2 0 52 1 0 2 17 1 1 4 0 16 1 52 5 0 1 1 6 0 16 1 1 9 0 52 8 0 2 1 10 0 52 7 0 2 1 11 0 16 1 1 12 0 52 8 0 2 1 13 0 52 7 0 2 52 3 0 6 50)} "next-retry-ms" {:upvalue-count 0 :arity 2 :constants ("min" "*" 2) :bytecode (16 0 1 2 0 52 1 0 2 16 1 52 0 0 2 50)} "filter-params" {:upvalue-count 0 :arity 2 :constants ("nil?" "=" "none" "list" "*" "starts-with?" "not " "map" "trim" "split" "slice" 4 "," "filter" {:upvalue-count 1 :arity 1 :constants ("not" "contains?" "first") :bytecode (18 0 16 0 52 2 0 1 52 1 0 2 52 0 0 1 50)} {:upvalue-count 1 :arity 1 :constants ("contains?" "first") :bytecode (18 0 16 0 52 1 0 1 52 0 0 2 50)}) :bytecode (16 0 52 0 0 1 33 5 0 16 1 32 116 0 16 0 1 2 0 52 1 0 2 33 7 0 52 3 0 0 32 97 0 16 0 1 4 0 52 1 0 2 33 5 0 16 1 32 80 0 16 0 1 6 0 52 5 0 2 33 39 0 20 8 0 16 0 1 11 0 52 10 0 2 1 12 0 52 9 0 2 52 7 0 2 17 2 51 14 0 1 2 16 1 52 13 0 2 32 29 0 20 8 0 16 0 1 12 0 52 9 0 2 52 7 0 2 17 2 51 15 0 1 2 16 1 52 13 0 2 50)} "resolve-target" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-target" "nil?" "=" "this" "closest" "dom-parent" "dom-query") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 52 2 0 1 6 34 10 0 5 16 1 1 4 0 52 3 0 2 33 5 0 16 0 32 29 0 16 1 1 5 0 52 3 0 2 33 10 0 20 6 0 16 0 49 1 32 7 0 20 7 0 16 1 49 1 50)} "apply-optimistic" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-optimistic" "nil?" "resolve-target" "dict" "target" "directive" "=" "remove" "dict-set!" "opacity" "dom-get-style" "dom-set-style" "0" "pointer-events" "none" "disable" "disabled" "dom-get-prop" "dom-set-prop" "starts-with?" "add-class:" "slice" 10 "add-class" "dom-add-class") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 52 2 0 1 33 4 0 2 32 191 0 20 3 0 16 0 48 1 6 34 3 0 5 16 0 17 2 1 5 0 16 2 1 6 0 16 1 52 4 0 4 17 3 16 1 1 8 0 52 7 0 2 33 50 0 16 3 1 10 0 20 11 0 16 2 1 10 0 48 2 52 9 0 3 5 20 12 0 16 2 1 10 0 1 13 0 48 3 5 20 12 0 16 2 1 14 0 1 15 0 48 3 32 94 0 16 1 1 16 0 52 7 0 2 33 34 0 16 3 1 17 0 20 18 0 16 2 1 17 0 48 2 52 9 0 3 5 20 19 0 16 2 1 17 0 3 48 3 32 48 0 16 1 1 21 0 52 20 0 2 33 35 0 16 1 1 23 0 52 22 0 2 17 4 16 3 1 24 0 16 4 52 9 0 3 5 20 25 0 16 2 16 4 48 2 32 1 0 2 5 16 3 50)} "revert-optimistic" {:upvalue-count 0 :arity 1 :constants ("get" "target" "directive" "=" "remove" "dom-set-style" "opacity" "" "pointer-events" "disable" "dom-set-prop" "disabled" "add-class" "dom-remove-class") :bytecode (16 0 33 153 0 16 0 1 1 0 52 0 0 2 17 1 16 0 1 2 0 52 0 0 2 17 2 16 2 1 4 0 52 3 0 2 33 44 0 20 5 0 16 1 1 6 0 16 0 1 6 0 52 0 0 2 6 34 4 0 5 1 7 0 48 3 5 20 5 0 16 1 1 8 0 1 7 0 49 3 32 72 0 16 2 1 9 0 52 3 0 2 33 28 0 20 10 0 16 1 1 11 0 16 0 1 11 0 52 0 0 2 6 34 2 0 5 4 49 3 32 32 0 16 0 1 12 0 52 0 0 2 33 19 0 20 13 0 16 1 16 0 1 12 0 52 0 0 2 49 2 32 1 0 2 32 1 0 2 50)} "find-oob-swaps" {:upvalue-count 0 :arity 1 :constants ("list" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-query-all" "str" "[" "]" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "outerHTML" "dom-id" "dom-remove-attr" "append!" "dict" "element" "swap-type" "target-id") :bytecode (20 0 0 16 0 18 0 48 2 6 34 4 0 5 1 1 0 17 1 20 2 0 16 0 48 1 17 2 20 3 0 16 0 18 0 48 2 5 16 2 33 29 0 20 4 0 18 1 1 6 0 16 0 1 7 0 16 1 1 8 0 16 2 52 5 0 6 49 2 32 1 0 2 50)}) :bytecode (20 0 0 18 0 1 2 0 16 0 1 3 0 52 1 0 3 48 2 17 1 51 5 0 1 0 0 1 16 1 52 4 0 2 50)} "sx-swap-oob" "hx-swap-oob") :bytecode (52 0 0 0 17 1 51 2 0 1 0 1 1 1 3 0 1 4 0 52 0 0 2 52 1 0 2 5 16 1 50)} "morph-node" {:upvalue-count 0 :arity 2 :constants ("dom-has-attr?" "sx-preserve" "sx-ignore" "data-sx-island" "is-processed?" "island-hydrated" "=" "dom-get-attr" "sync-attrs" "morph-island-children" "not" "dom-node-type" "dom-node-name" "dom-replace-child" "dom-parent" "dom-clone" 3 8 "dom-text-content" "dom-set-text-content" 1 "dispose-island" "dispose-islands-in" "dom-is-active-element?" "dom-is-input-element?" "morph-children") :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 11 0 5 20 0 0 16 0 1 2 0 48 2 33 4 0 2 32 148 1 20 0 0 16 0 1 3 0 48 2 6 33 55 0 5 20 4 0 16 0 1 5 0 48 2 6 33 40 0 5 20 0 0 16 1 1 3 0 48 2 6 33 25 0 5 20 7 0 16 0 1 3 0 48 2 20 7 0 16 1 1 3 0 48 2 52 6 0 2 33 22 0 20 8 0 16 0 16 1 48 2 5 20 9 0 16 0 16 1 49 2 32 54 1 20 11 0 16 0 48 1 20 11 0 16 1 48 1 52 6 0 2 52 10 0 1 6 34 23 0 5 20 12 0 16 0 48 1 20 12 0 16 1 48 1 52 6 0 2 52 10 0 1 33 25 0 20 13 0 20 14 0 16 0 48 1 20 15 0 16 1 3 48 2 16 0 49 3 32 233 0 20 11 0 16 0 48 1 1 16 0 52 6 0 2 6 34 15 0 5 20 11 0 16 0 48 1 1 17 0 52 6 0 2 33 46 0 20 18 0 16 0 48 1 20 18 0 16 1 48 1 52 6 0 2 52 10 0 1 33 17 0 20 19 0 16 0 20 18 0 16 1 48 1 49 2 32 1 0 2 32 151 0 20 11 0 16 0 48 1 1 20 0 52 6 0 2 33 133 0 20 0 0 16 0 1 3 0 48 2 6 33 44 0 5 20 0 0 16 1 1 3 0 48 2 6 33 29 0 5 20 7 0 16 0 1 3 0 48 2 20 7 0 16 1 1 3 0 48 2 52 6 0 2 52 10 0 1 33 18 0 20 21 0 16 0 48 1 5 20 22 0 16 0 48 1 32 1 0 2 5 20 8 0 16 0 16 1 48 2 5 20 23 0 16 0 48 1 6 33 8 0 5 20 24 0 16 0 48 1 52 10 0 1 33 12 0 20 25 0 16 0 16 1 49 2 32 1 0 2 32 1 0 2 50)} "sync-attrs" {:upvalue-count 0 :arity 2 :constants ("dom-get-attr" "data-sx-reactive-attrs" "" "empty?" "list" "split" "," "for-each" {:upvalue-count 2 :arity 1 :constants ("first" "nth" 1 "not" "=" "dom-get-attr" "contains?" "dom-set-attr") :bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 20 5 0 18 0 16 1 48 2 16 2 52 4 0 2 52 3 0 1 6 33 13 0 5 18 1 16 1 52 6 0 2 52 3 0 1 33 14 0 20 7 0 18 0 16 1 16 2 49 3 32 1 0 2 50)} "dom-attr-list" {:upvalue-count 3 :arity 1 :constants ("first" "not" "dom-has-attr?" "contains?" "=" "data-sx-reactive-attrs" "dom-remove-attr") :bytecode (16 0 52 0 0 1 17 1 20 2 0 18 0 16 1 48 2 52 1 0 1 6 33 31 0 5 18 1 16 1 52 3 0 2 52 1 0 1 6 33 14 0 5 16 1 1 5 0 52 4 0 2 52 1 0 1 33 12 0 20 6 0 18 2 16 1 49 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 17 2 16 2 52 3 0 1 33 7 0 52 4 0 0 32 9 0 16 2 1 6 0 52 5 0 2 17 3 51 8 0 1 0 1 3 20 9 0 16 1 48 1 52 7 0 2 5 51 10 0 1 1 1 3 1 0 20 9 0 16 0 48 1 52 7 0 2 50)} "morph-children" {:upvalue-count 0 :arity 2 :constants ("dom-child-list" "dict" 0 "for-each" {:upvalue-count 3 :arity 1 :constants ("dom-id" "not" "empty?" "dict-set!" "inc") :bytecode (20 0 0 16 0 48 1 17 1 16 1 6 33 11 0 5 16 1 52 2 0 1 52 1 0 1 33 24 0 18 0 16 1 16 0 52 3 0 3 5 18 1 16 1 18 2 52 3 0 3 32 1 0 2 5 18 2 52 4 0 1 19 2 50)} {:upvalue-count 6 :arity 1 :constants ("dom-id" "not" "empty?" "dict-get" "nil?" "dict-set!" "str" "<" "len" "=" "nth" "dom-insert-before" "morph-node" "inc" "dom-clone" "dom-append") :bytecode (20 0 0 16 0 48 1 17 1 16 1 6 33 11 0 5 16 1 52 2 0 1 52 1 0 1 33 5 0 16 1 32 1 0 2 17 2 16 2 33 11 0 18 0 16 2 52 3 0 2 32 1 0 2 17 3 16 3 6 33 11 0 5 16 3 52 4 0 1 52 1 0 1 33 133 0 18 1 16 2 52 3 0 2 17 4 16 4 33 16 0 18 2 16 4 52 6 0 1 3 52 5 0 3 32 1 0 2 5 18 3 18 4 52 8 0 1 52 7 0 2 6 33 19 0 5 16 3 18 4 18 3 52 10 0 2 52 9 0 2 52 1 0 1 33 39 0 20 11 0 18 5 16 3 18 3 18 4 52 8 0 1 52 7 0 2 33 11 0 18 4 18 3 52 10 0 2 32 1 0 2 48 3 32 1 0 2 5 20 12 0 16 3 16 0 48 2 5 18 3 52 13 0 1 19 3 32 135 0 18 3 18 4 52 8 0 1 52 7 0 2 33 105 0 18 4 18 3 52 10 0 2 17 4 20 0 0 16 4 48 1 17 5 16 5 6 33 22 0 5 16 5 52 2 0 1 52 1 0 1 6 33 7 0 5 16 2 52 1 0 1 33 20 0 20 11 0 18 5 20 14 0 16 0 3 48 2 16 4 49 3 32 32 0 18 2 18 3 52 6 0 1 3 52 5 0 3 5 20 12 0 16 4 16 0 48 2 5 18 3 52 13 0 1 19 3 32 15 0 20 15 0 18 5 20 14 0 16 0 3 48 2 49 2 50)} {:upvalue-count 3 :arity 1 :constants ("not" "dict-get" "str" "nth" "dom-is-child-of?" "dom-has-attr?" "sx-preserve" "sx-ignore" "dom-remove-child") :bytecode (18 0 16 0 52 2 0 1 52 1 0 2 52 0 0 1 33 76 0 18 1 16 0 52 3 0 2 17 1 20 4 0 16 1 18 2 48 2 6 33 34 0 5 20 5 0 16 1 1 6 0 48 2 52 0 0 1 6 33 15 0 5 20 5 0 16 1 1 7 0 48 2 52 0 0 1 33 12 0 20 8 0 18 2 16 1 49 2 32 1 0 2 32 1 0 2 50)} "range" "len") :bytecode (20 0 0 16 0 48 1 17 2 20 0 0 16 1 48 1 17 3 52 1 0 0 17 4 52 1 0 0 17 5 52 1 0 0 17 6 1 2 0 17 7 1 2 0 17 8 51 4 0 1 4 1 5 1 8 16 2 52 3 0 2 5 51 5 0 1 4 1 5 1 6 1 7 1 2 1 0 16 3 52 3 0 2 5 51 6 0 1 6 1 2 1 0 1 2 0 16 2 52 8 0 1 52 7 0 2 52 3 0 2 50)} "morph-island-children" {:upvalue-count 0 :arity 2 :constants ("dom-query-all" "[data-sx-lake]" "[data-sx-marsh]" "dict" "for-each" {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-sx-lake" "dict-set!") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 13 0 18 0 16 1 16 0 52 2 0 3 32 1 0 2 50)} {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-sx-marsh" "dict-set!") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 13 0 18 0 16 1 16 0 52 2 0 3 32 1 0 2 50)} {:upvalue-count 1 :arity 1 :constants ("dom-get-attr" "data-sx-lake" "dict-get" "sync-attrs" "morph-children") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 18 0 16 1 52 2 0 2 17 2 16 2 33 22 0 20 3 0 16 0 16 2 48 2 5 20 4 0 16 0 16 2 49 2 32 1 0 2 50)} {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "data-sx-marsh" "dict-get" "morph-marsh") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 18 0 16 1 52 2 0 2 17 2 16 2 33 14 0 20 3 0 16 0 16 2 18 1 49 3 32 1 0 2 50)} "process-signal-updates") :bytecode (20 0 0 16 0 1 1 0 48 2 17 2 20 0 0 16 1 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 20 0 0 16 1 1 2 0 48 2 17 5 52 3 0 0 17 6 52 3 0 0 17 7 51 5 0 1 6 16 3 52 4 0 2 5 51 6 0 1 7 16 5 52 4 0 2 5 51 7 0 1 6 16 2 52 4 0 2 5 51 8 0 1 7 1 0 16 4 52 4 0 2 5 20 9 0 16 1 49 1 50)} "morph-marsh" {:upvalue-count 0 :arity 3 :constants ("dom-get-data" "sx-marsh-transform" "sx-marsh-env" "dom-inner-html" "not" "empty?" "parse" "cek-call" "list" "dispose-marsh-scope" "with-marsh-scope" {:upvalue-count 3 :arity 0 :constants ("render-to-dom" "dom-remove-children-after" "dom-append") :bytecode (20 0 0 18 0 18 1 2 48 3 17 0 20 1 0 18 2 2 48 2 5 20 2 0 18 2 16 0 49 2 50)} "sync-attrs" "morph-children") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 20 3 0 16 1 48 1 17 5 16 4 6 33 18 0 5 16 5 6 33 11 0 5 16 5 52 5 0 1 52 4 0 1 33 61 0 20 6 0 16 5 48 1 17 6 16 3 33 16 0 20 7 0 16 3 16 6 52 8 0 1 48 2 32 2 0 16 6 17 7 20 9 0 16 0 48 1 5 20 10 0 16 0 51 11 0 1 7 1 4 1 0 49 2 32 19 0 20 12 0 16 0 16 1 48 2 5 20 13 0 16 0 16 1 49 2 50)} "process-signal-updates" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "[data-sx-signal]" "for-each" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "data-sx-signal" "index-of" ":" ">" 0 "slice" "+" 1 "json-parse" "reset!" "use-store" "dom-remove-attr") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 93 0 16 1 1 3 0 52 2 0 2 17 2 16 2 1 5 0 52 4 0 2 33 66 0 16 1 1 5 0 16 2 52 6 0 3 17 3 16 1 16 2 1 8 0 52 7 0 2 52 6 0 2 17 4 20 9 0 16 4 48 1 17 5 20 10 0 16 3 52 11 0 1 16 5 48 2 5 20 12 0 16 0 1 1 0 49 2 32 1 0 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 50)} "swap-dom-nodes" {:upvalue-count 0 :arity 3 :constants ("innerHTML" "=" "dom-is-fragment?" "morph-children" "dom-create-element" "div" "dom-append" "outerHTML" "dom-parent" "dom-clone" "dom-first-child" "dom-replace-child" "dom-next-sibling" "insert-remaining-siblings" "dom-remove-child" "afterend" "dom-insert-after" "beforeend" "afterbegin" "dom-prepend" "beforebegin" "dom-insert-before" "delete" "none") :bytecode (16 2 6 1 0 0 52 1 0 2 33 56 0 5 20 2 0 16 1 48 1 33 12 0 20 3 0 16 0 16 1 49 2 32 30 0 20 4 0 1 5 0 2 48 2 17 3 20 6 0 16 3 16 1 48 2 5 20 3 0 16 0 16 3 49 2 32 75 1 6 1 7 0 52 1 0 2 33 119 0 5 20 8 0 16 0 48 1 17 3 20 9 0 16 1 3 48 2 17 4 20 2 0 16 1 48 1 33 72 0 20 10 0 16 1 48 1 17 5 16 5 33 46 0 20 9 0 16 5 3 48 2 17 4 5 20 11 0 16 3 16 4 16 0 48 3 5 20 12 0 16 5 48 1 17 6 20 13 0 16 3 16 4 16 6 48 3 32 9 0 20 14 0 16 3 16 0 48 2 32 11 0 20 11 0 16 3 16 4 16 0 48 3 5 16 4 32 201 0 6 1 15 0 52 1 0 2 33 13 0 5 20 16 0 16 0 16 1 49 2 32 177 0 6 1 17 0 52 1 0 2 33 13 0 5 20 6 0 16 0 16 1 49 2 32 153 0 6 1 18 0 52 1 0 2 33 13 0 5 20 19 0 16 0 16 1 49 2 32 129 0 6 1 20 0 52 1 0 2 33 20 0 5 20 21 0 20 8 0 16 0 48 1 16 1 16 0 49 3 32 98 0 6 1 22 0 52 1 0 2 33 18 0 5 20 14 0 20 8 0 16 0 48 1 16 0 49 2 32 69 0 6 1 23 0 52 1 0 2 33 5 0 5 2 32 53 0 5 20 2 0 16 1 48 1 33 12 0 20 3 0 16 0 16 1 49 2 32 30 0 20 4 0 1 5 0 2 48 2 17 3 20 6 0 16 3 16 1 48 2 5 20 3 0 16 0 16 3 49 2 50)} "insert-remaining-siblings" {:upvalue-count 0 :arity 3 :constants ("dom-next-sibling" "dom-insert-after" "insert-remaining-siblings") :bytecode (16 2 33 33 0 20 0 0 16 2 48 1 17 3 20 1 0 16 1 16 2 48 2 5 20 2 0 16 0 16 2 16 3 49 3 32 1 0 2 50)} "swap-html-string" {:upvalue-count 0 :arity 3 :constants ("innerHTML" "=" "dom-set-inner-html" "outerHTML" "dom-parent" "dom-insert-adjacent-html" "afterend" "dom-remove-child" "beforeend" "afterbegin" "beforebegin" "delete" "none") :bytecode (16 2 6 1 0 0 52 1 0 2 33 13 0 5 20 2 0 16 0 16 1 49 2 32 212 0 6 1 3 0 52 1 0 2 33 38 0 5 20 4 0 16 0 48 1 17 3 20 5 0 16 0 1 6 0 16 1 48 3 5 20 7 0 16 3 16 0 48 2 5 16 3 32 163 0 6 1 6 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 6 0 16 1 49 3 32 136 0 6 1 8 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 8 0 16 1 49 3 32 109 0 6 1 9 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 9 0 16 1 49 3 32 82 0 6 1 10 0 52 1 0 2 33 16 0 5 20 5 0 16 0 1 10 0 16 1 49 3 32 55 0 6 1 11 0 52 1 0 2 33 18 0 5 20 7 0 20 4 0 16 0 48 1 16 0 49 2 32 26 0 6 1 12 0 52 1 0 2 33 5 0 5 2 32 10 0 5 20 2 0 16 0 16 1 49 2 50)} "handle-history" {:upvalue-count 0 :arity 3 :constants ("dom-get-attr" "sx-push-url" "sx-replace-url" "get" "replace-url" "browser-replace-state" "not" "=" "false" "browser-push-state" "true") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 20 0 0 16 0 1 2 0 48 2 17 4 16 2 1 4 0 52 3 0 2 17 5 16 5 33 10 0 20 5 0 16 5 49 1 32 101 0 16 3 6 33 14 0 5 16 3 1 8 0 52 7 0 2 52 6 0 1 33 27 0 20 9 0 16 3 1 10 0 52 7 0 2 33 5 0 16 1 32 2 0 16 3 49 1 32 51 0 16 4 6 33 14 0 5 16 4 1 8 0 52 7 0 2 52 6 0 1 33 27 0 20 5 0 16 4 1 10 0 52 7 0 2 33 5 0 16 1 32 2 0 16 4 49 1 32 1 0 2 50)} "PRELOAD_TTL" 30000 "preload-cache-get" {:upvalue-count 0 :arity 2 :constants ("dict-get" "nil?" ">" "-" "now-ms" "get" "timestamp" "PRELOAD_TTL" "dict-delete!") :bytecode (16 0 16 1 52 0 0 2 17 2 16 2 52 1 0 1 33 4 0 2 32 52 0 20 4 0 48 0 16 2 1 6 0 52 5 0 2 52 3 0 2 20 7 0 52 2 0 2 33 13 0 16 0 16 1 52 8 0 2 5 2 32 11 0 16 0 16 1 52 8 0 2 5 16 2 50)} "preload-cache-set" {:upvalue-count 0 :arity 4 :constants ("dict-set!" "dict" "text" "content-type" "timestamp" "now-ms") :bytecode (16 0 16 1 1 2 0 16 2 1 3 0 16 3 1 4 0 20 5 0 48 0 52 1 0 6 52 0 0 3 50)} "classify-trigger" {:upvalue-count 0 :arity 1 :constants ("get" "event" "=" "every" "poll" "intersect" "load" "revealed") :bytecode (16 0 1 1 0 52 0 0 2 17 1 16 1 1 3 0 52 2 0 2 33 6 0 1 4 0 32 57 0 16 1 1 5 0 52 2 0 2 33 6 0 1 5 0 32 39 0 16 1 1 6 0 52 2 0 2 33 6 0 1 6 0 32 21 0 16 1 1 7 0 52 2 0 2 33 6 0 1 7 0 32 3 0 1 1 0 50)} "should-boost-link?" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "href" "not" "starts-with?" "#" "javascript:" "mailto:" "browser-same-origin?" "dom-has-attr?" "sx-get" "sx-post" "sx-disable") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 119 0 5 16 1 1 4 0 52 3 0 2 52 2 0 1 6 33 101 0 5 16 1 1 5 0 52 3 0 2 52 2 0 1 6 33 83 0 5 16 1 1 6 0 52 3 0 2 52 2 0 1 6 33 65 0 5 20 7 0 16 1 48 1 6 33 53 0 5 20 8 0 16 0 1 9 0 48 2 52 2 0 1 6 33 34 0 5 20 8 0 16 0 1 10 0 48 2 52 2 0 1 6 33 15 0 5 20 8 0 16 0 1 11 0 48 2 52 2 0 1 50)} "should-boost-form?" {:upvalue-count 0 :arity 1 :constants ("not" "dom-has-attr?" "sx-get" "sx-post" "sx-disable") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 34 0 5 20 1 0 16 0 1 3 0 48 2 52 0 0 1 6 33 15 0 5 20 1 0 16 0 1 4 0 48 2 52 0 0 1 50)} "parse-sse-swap" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-sse-swap" "message") :bytecode (20 0 0 16 0 1 1 0 48 2 6 34 4 0 5 1 2 0 50)}) :bytecode (1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 52 1 0 5 128 0 0 5 1 8 0 128 7 0 5 51 10 0 128 9 0 5 51 12 0 128 11 0 5 51 14 0 128 13 0 5 51 16 0 128 15 0 5 51 18 0 128 17 0 5 51 20 0 128 19 0 5 51 22 0 128 21 0 5 51 24 0 128 23 0 5 51 26 0 128 25 0 5 51 28 0 128 27 0 5 51 30 0 128 29 0 5 51 32 0 128 31 0 5 51 34 0 128 33 0 5 51 36 0 128 35 0 5 51 38 0 128 37 0 5 51 40 0 128 39 0 5 51 42 0 128 41 0 5 51 44 0 128 43 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 1 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 5 51 68 0 128 67 0 5 51 70 0 128 69 0 50))) diff --git a/shared/static/wasm/sx/orchestration.sx b/shared/static/wasm/sx/orchestration.sx index 63df142e..82a3ec26 100644 --- a/shared/static/wasm/sx/orchestration.sx +++ b/shared/static/wasm/sx/orchestration.sx @@ -462,7 +462,7 @@ (fn (e) (let - ((should-fire true)) + ((should-fire (if (get mods "filter") (host-call (host-call (dom-window) "Function" "event" (get mods "filter")) "call" el e) true))) (when (get mods "changed") (let @@ -1385,25 +1385,37 @@ (when (starts-with? name "sx-on:") (let - ((event-name (slice name 6))) + ((event-name (let ((raw (slice name 6))) (if (or (starts-with? raw "after") (starts-with? raw "before")) (str "sx:" raw) raw)))) (when (not (is-processed? el (str "on:" event-name))) (mark-processed! el (str "on:" event-name)) - (let - ((exprs (sx-parse body))) - (dom-on - el - event-name + (dom-on + el + event-name + (if + (contains? body ".") (fn (e) - (let - ((handler-env (env-extend (dict)))) - (env-bind! handler-env "event" e) - (env-bind! handler-env "this" el) - (env-bind! handler-env "detail" (event-detail e)) - (for-each - (fn (expr) (eval-expr expr handler-env)) - exprs)))))))))) + (host-call + (host-call (dom-window) "Function" "event" body) + "call" + el + e)) + (let + ((exprs (parse body))) + (fn + (e) + (let + ((handler-env (make-env))) + (env-bind! handler-env "event" e) + (env-bind! handler-env "this" el) + (env-bind! + handler-env + "detail" + (event-detail e)) + (for-each + (fn (expr) (eval-expr expr handler-env)) + exprs))))))))))) (dom-attr-list el))) (dom-query-all (or root (dom-body)) "[sx-on\\:]")))) diff --git a/shared/static/wasm/sx/orchestration.sxbc b/shared/static/wasm/sx/orchestration.sxbc index e113adda..33401d43 100644 --- a/shared/static/wasm/sx/orchestration.sxbc +++ b/shared/static/wasm/sx/orchestration.sxbc @@ -1,3 +1,3 @@ -(sxbc 1 "00794659183c2c78" +(sxbc 1 "776fee66723ae5b4" (code - :constants ("_preload-cache" "dict" "_css-hash" "" "dispatch-trigger-events" {:upvalue-count 0 :arity 2 :constants ("try-parse-json" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-dispatch" "get") :bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 49 3 50)} "keys" {:upvalue-count 1 :arity 1 :constants ("trim" "not" "empty?" "dom-dispatch" "dict") :bytecode (16 0 52 0 0 1 17 1 16 1 52 2 0 1 52 1 0 1 33 16 0 20 3 0 18 0 16 1 52 4 0 0 49 3 32 1 0 2 50)} "split" ",") :bytecode (16 1 33 55 0 20 0 0 16 1 48 1 17 2 16 2 33 20 0 51 2 0 1 0 1 2 16 2 52 3 0 1 52 1 0 2 32 18 0 51 4 0 1 0 16 1 1 6 0 52 5 0 2 52 1 0 2 32 1 0 2 50)} "init-css-tracking" {:upvalue-count 0 :arity 0 :constants ("dom-query" "meta[name=\"sx-css-classes\"]" "dom-get-attr" "content" "_css-hash") :bytecode (20 0 0 1 1 0 48 1 17 0 16 0 33 29 0 20 2 0 16 0 1 3 0 48 2 17 1 16 1 33 8 0 16 1 21 4 0 32 1 0 2 32 1 0 2 50)} "execute-request" {:upvalue-count 0 :arity 3 :constants ("get-verb-info" "nil?" "promise-resolve" "get" "method" "url" "dom-get-attr" "sx-media" "not" "browser-media-matches?" "sx-confirm" "browser-confirm" "sx-prompt" "browser-prompt" "validate-for-request" "do-fetch" "assoc" "dict" "SX-Prompt") :bytecode (20 0 0 16 0 48 1 6 34 3 0 5 16 1 17 3 16 3 52 1 0 1 33 9 0 20 2 0 2 49 1 32 249 0 16 3 1 4 0 52 3 0 2 17 4 16 3 1 5 0 52 3 0 2 17 5 20 6 0 16 0 1 7 0 48 2 17 6 16 6 6 33 12 0 5 20 9 0 16 6 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 185 0 20 6 0 16 0 1 10 0 48 2 17 6 16 6 6 33 12 0 5 20 11 0 16 6 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 143 0 20 6 0 16 0 1 12 0 48 2 17 6 16 6 33 10 0 20 13 0 16 6 48 1 32 1 0 2 17 7 16 6 6 33 7 0 5 16 7 52 1 0 1 33 9 0 20 2 0 2 49 1 32 88 0 16 4 52 1 0 1 6 34 23 0 5 16 5 52 1 0 1 6 34 12 0 5 20 14 0 16 0 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 43 0 20 15 0 16 0 16 4 16 4 16 5 16 7 33 23 0 16 2 6 34 5 0 5 52 17 0 0 1 18 0 16 7 52 16 0 3 32 2 0 16 2 49 5 50)} "do-fetch" {:upvalue-count 0 :arity 5 :constants ("dom-get-attr" "sx-sync" "=" "replace" "abort-previous" "resolve-target" "not" "identical?" "abort-previous-target" "new-abort-controller" "track-controller" "track-controller-target" "build-request-body" "get" "url" "body" "content-type" "build-request-headers" "loaded-component-names" "_css-hash" "csrf-token" "for-each" {:upvalue-count 2 :arity 1 :constants ("dict-set!" "get") :bytecode (18 0 16 0 18 1 16 0 52 1 0 2 52 0 0 3 50)} "keys" "dict-set!" "Content-Type" "X-CSRFToken" "preload-cache-get" "_preload-cache" "apply-optimistic" "show-indicator" "disable-elements" "dom-add-class" "sx-request" "dom-set-attr" "aria-busy" "true" "dom-dispatch" "sx:beforeRequest" "dict" "method" "fetch-request" "headers" "signal" "controller-signal" "cross-origin" "cross-origin?" "preloaded" {:upvalue-count 8 :arity 4 :constants ("clear-loading-state" "revert-optimistic" "not" "dom-dispatch" "sx:responseError" "dict" "status" "text" ">" "len" 0 "handle-fetch-success" "handle-retry" "sx:afterRequest") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 3 48 1 5 16 0 52 2 0 1 33 86 0 20 3 0 18 0 1 4 0 1 6 0 16 1 1 7 0 16 3 52 5 0 4 48 3 5 16 3 6 33 14 0 5 16 3 52 9 0 1 1 10 0 52 8 0 2 33 20 0 20 11 0 18 0 18 4 18 5 18 6 16 2 16 3 49 6 32 15 0 20 12 0 18 0 18 5 18 7 18 4 18 6 49 5 32 37 0 20 3 0 18 0 1 13 0 1 6 0 16 1 52 5 0 2 48 3 5 20 11 0 18 0 18 4 18 5 18 6 16 2 16 3 49 6 50)} {:upvalue-count 6 :arity 1 :constants ("clear-loading-state" "revert-optimistic" "not" "abort-error?" "log-warn" "str" "sx:fetch error " " " " — " "dom-dispatch" "sx:requestError" "dict" "error") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 3 48 1 5 20 3 0 16 0 48 1 52 2 0 1 33 47 0 20 4 0 1 6 0 18 4 1 7 0 18 5 1 8 0 16 0 52 5 0 6 48 1 5 20 9 0 18 0 1 10 0 1 12 0 16 0 52 11 0 2 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 5 16 5 1 3 0 52 2 0 2 33 10 0 20 4 0 16 0 48 1 32 1 0 2 5 20 5 0 16 0 48 1 17 6 16 6 6 33 13 0 5 16 0 16 6 52 7 0 2 52 6 0 1 33 10 0 20 8 0 16 6 48 1 32 1 0 2 5 20 9 0 48 0 17 6 20 10 0 16 0 16 6 48 2 5 20 5 0 16 0 48 1 17 7 16 7 33 12 0 20 11 0 16 7 16 6 48 2 32 1 0 2 5 20 12 0 16 0 16 2 16 3 48 3 17 7 16 7 1 14 0 52 13 0 2 17 8 16 7 1 15 0 52 13 0 2 17 9 16 7 1 16 0 52 13 0 2 17 10 20 17 0 16 0 20 18 0 48 0 20 19 0 48 3 17 11 20 20 0 48 0 17 12 16 4 33 20 0 51 22 0 1 11 1 4 16 4 52 23 0 1 52 21 0 2 32 1 0 2 5 16 10 33 14 0 16 11 1 25 0 16 10 52 24 0 3 32 1 0 2 5 16 12 33 14 0 16 11 1 26 0 16 12 52 24 0 3 32 1 0 2 5 20 27 0 20 28 0 16 8 48 2 17 13 20 29 0 16 0 48 1 17 14 20 30 0 16 0 48 1 17 15 20 31 0 16 0 48 1 17 16 20 32 0 16 0 1 33 0 48 2 5 20 34 0 16 0 1 35 0 1 36 0 48 3 5 20 37 0 16 0 1 38 0 1 14 0 16 8 1 40 0 16 2 52 39 0 4 48 3 5 20 41 0 1 14 0 16 8 1 40 0 16 2 1 42 0 16 11 1 15 0 16 9 1 43 0 20 44 0 16 6 48 1 1 45 0 20 46 0 16 8 48 1 1 47 0 16 13 52 39 0 14 51 48 0 1 0 1 15 1 16 1 14 1 8 1 1 1 4 1 2 51 49 0 1 0 1 15 1 16 1 14 1 2 1 8 49 3 50)} "handle-fetch-success" {:upvalue-count 0 :arity 6 :constants ("process-response-headers" "get" "css-hash" "_css-hash" "dispatch-trigger-events" "trigger" "process-cache-directives" "redirect" "browser-navigate" "refresh" "browser-reload" "location" "fetch-location" "retarget" "dom-query" "resolve-target" "parse-swap-spec" "reswap" "dom-get-attr" "sx-swap" "dom-has-class?" "dom-body" "sx-transitions" "style" "transition" "content-type" "" "contains?" "text/sx" "handle-sx-response" "handle-html-response" "trigger-swap" "handle-history" "set-timeout" {:upvalue-count 2 :arity 0 :constants ("get" "trigger-settle" "dispatch-trigger-events" "process-settle-hooks") :bytecode (18 0 1 1 0 52 0 0 2 33 19 0 20 2 0 18 1 18 0 1 1 0 52 0 0 2 48 2 32 1 0 2 5 20 3 0 18 1 49 1 50)} 20 "dom-dispatch" "sx:afterSwap" "dict" "target" "swap") :bytecode (20 0 0 16 4 48 1 17 6 16 6 1 2 0 52 1 0 2 17 7 16 7 33 8 0 16 7 21 3 0 32 1 0 2 5 20 4 0 16 0 16 6 1 5 0 52 1 0 2 48 2 5 20 6 0 16 0 16 6 16 5 48 3 5 16 6 1 7 0 52 1 0 2 33 17 0 20 8 0 16 6 1 7 0 52 1 0 2 49 1 32 31 1 16 6 1 9 0 52 1 0 2 33 8 0 20 10 0 49 0 32 11 1 16 6 1 11 0 52 1 0 2 33 17 0 20 12 0 16 6 1 11 0 52 1 0 2 49 1 32 238 0 16 6 1 13 0 52 1 0 2 33 17 0 20 14 0 16 6 1 13 0 52 1 0 2 48 1 32 7 0 20 15 0 16 0 48 1 17 7 20 16 0 16 6 1 17 0 52 1 0 2 6 34 11 0 5 20 18 0 16 0 1 19 0 48 2 20 20 0 20 21 0 48 0 1 22 0 48 2 48 2 17 8 16 8 1 23 0 52 1 0 2 17 9 16 8 1 24 0 52 1 0 2 17 10 16 6 1 25 0 52 1 0 2 6 34 4 0 5 1 26 0 17 11 16 11 1 28 0 52 27 0 2 33 18 0 20 29 0 16 0 16 7 16 5 16 9 16 10 48 5 32 15 0 20 30 0 16 0 16 7 16 5 16 9 16 10 48 5 5 20 4 0 16 0 16 6 1 31 0 52 1 0 2 48 2 5 20 32 0 16 0 16 1 16 6 48 3 5 20 33 0 51 34 0 1 6 1 0 1 35 0 48 2 5 20 36 0 16 0 1 37 0 1 39 0 16 7 1 40 0 16 9 52 38 0 4 49 3 50)} "handle-sx-response" {:upvalue-count 0 :arity 5 :constants ("strip-component-scripts" "extract-response-css" "trim" "not" "empty?" "sx-render" "dom-create-element" "div" "dom-append" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "=" "innerHTML" "children-to-fragment" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 2 1 3 0 52 2 0 2 33 10 0 20 4 0 16 1 48 1 32 2 0 16 1 16 2 48 3 5 20 5 0 16 0 49 1 50)} "dom-get-attr" "sx-select" "select-from-container" "children-to-fragment" "dispose-islands-in" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "post-swap" "=" "outerHTML" "dom-parent") :bytecode (20 0 0 18 0 18 1 18 2 48 3 17 0 20 1 0 18 2 1 3 0 52 2 0 2 33 17 0 20 4 0 16 0 6 34 3 0 5 18 0 48 1 32 9 0 16 0 6 34 3 0 5 18 0 49 1 50)}) :bytecode (20 0 0 16 2 48 1 17 5 20 1 0 16 5 48 1 17 6 16 6 52 2 0 1 17 7 16 7 52 4 0 1 52 3 0 1 33 106 0 20 5 0 16 7 48 1 17 8 20 6 0 1 7 0 2 48 2 17 9 20 8 0 16 9 16 8 48 2 5 20 9 0 16 9 51 10 0 48 2 5 20 11 0 16 0 1 12 0 48 2 17 10 16 10 33 12 0 20 13 0 16 9 16 10 48 2 32 7 0 20 14 0 16 9 48 1 17 11 20 15 0 16 1 48 1 5 20 16 0 16 4 51 17 0 1 1 1 11 1 3 49 2 32 1 0 2 50)} "handle-html-response" {:upvalue-count 0 :arity 5 :constants ("dom-parse-html-document" "dom-get-attr" "sx-select" "dispose-islands-in" "dom-create-element" "div" "dom-set-inner-html" "dom-body-inner-html" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 1 16 2 48 3 5 20 2 0 16 0 49 1 50)} "hoist-head-elements" "select-from-container" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "log-info" "str" "swap-root: " "dom-tag-name" "nil" " target: " "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 17 0 20 1 0 1 3 0 16 0 33 10 0 20 4 0 16 0 48 1 32 3 0 1 5 0 1 6 0 20 4 0 18 0 48 1 52 2 0 4 48 1 5 20 7 0 16 0 6 34 3 0 5 18 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "children-to-fragment" "post-swap") :bytecode (20 0 0 18 0 20 1 0 18 1 48 1 18 2 48 3 5 20 2 0 18 0 49 1 50)}) :bytecode (20 0 0 16 2 48 1 17 5 16 5 33 164 0 20 1 0 16 0 1 2 0 48 2 17 6 20 3 0 16 1 48 1 5 16 6 33 75 0 20 4 0 1 5 0 2 48 2 17 7 20 6 0 16 7 20 7 0 16 5 48 1 48 2 5 20 8 0 16 7 51 9 0 48 2 5 20 10 0 16 7 48 1 5 20 11 0 16 7 16 6 48 2 17 8 20 12 0 16 4 51 13 0 1 1 1 8 1 3 49 2 32 61 0 20 4 0 1 5 0 2 48 2 17 7 20 6 0 16 7 20 7 0 16 5 48 1 48 2 5 20 8 0 16 7 51 9 0 48 2 5 20 10 0 16 7 48 1 5 20 12 0 16 4 51 14 0 1 1 1 7 1 3 49 2 32 1 0 2 50)} "handle-retry" {:upvalue-count 0 :arity 5 :constants ("dom-get-attr" "sx-retry" "parse-retry-spec" "data-sx-retry-ms" "get" "start-ms" "parse-int" "dom-set-attr" "str" "next-retry-ms" "cap-ms" "set-timeout" {:upvalue-count 5 :arity 0 :constants ("do-fetch") :bytecode (20 0 0 18 0 18 1 18 2 18 3 18 4 49 5 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 5 20 2 0 16 5 48 1 17 6 16 6 33 97 0 20 0 0 16 0 1 3 0 48 2 6 34 10 0 5 16 6 1 5 0 52 4 0 2 17 7 16 7 16 6 1 5 0 52 4 0 2 52 6 0 2 17 8 20 7 0 16 0 1 3 0 20 9 0 16 8 16 6 1 10 0 52 4 0 2 48 2 52 8 0 1 48 3 5 20 11 0 51 12 0 1 0 1 1 1 2 1 3 1 4 16 8 49 2 32 1 0 2 50)} "bind-triggers" {:upvalue-count 0 :arity 2 :constants ("parse-trigger-spec" "dom-get-attr" "sx-trigger" "default-trigger" "dom-tag-name" "for-each" {:upvalue-count 2 :arity 1 :constants ("classify-trigger" "get" "modifiers" "=" "poll" "set-interval" {:upvalue-count 2 :arity 0 :constants ("host-get" "isConnected" "execute-request" "clear-interval" "log-info" "poll stopped: element removed") :bytecode (20 0 0 18 0 1 1 0 48 2 33 12 0 20 2 0 18 0 2 2 49 3 32 16 0 20 3 0 18 1 48 1 5 20 4 0 1 5 0 49 1 50)} "interval" "intersect" "observe-intersection" {:upvalue-count 1 :arity 0 :constants ("execute-request") :bytecode (20 0 0 18 0 2 2 49 3 50)} "delay" "load" "set-timeout" 0 "revealed" "event" "bind-event") :bytecode (20 0 0 16 0 48 1 17 1 16 0 1 2 0 52 1 0 2 17 2 16 1 1 4 0 52 3 0 2 33 29 0 2 17 3 20 5 0 51 6 0 0 0 1 3 16 2 1 7 0 52 1 0 2 48 2 17 3 32 152 0 16 1 1 8 0 52 3 0 2 33 25 0 20 9 0 18 0 51 10 0 0 0 4 16 2 1 11 0 52 1 0 2 49 4 32 115 0 16 1 1 12 0 52 3 0 2 33 30 0 20 13 0 51 10 0 0 0 16 2 1 11 0 52 1 0 2 6 34 4 0 5 1 14 0 49 2 32 73 0 16 1 1 15 0 52 3 0 2 33 25 0 20 9 0 18 0 51 10 0 0 0 3 16 2 1 11 0 52 1 0 2 49 4 32 36 0 16 1 1 16 0 52 3 0 2 33 23 0 20 17 0 18 0 16 0 1 16 0 52 1 0 2 16 2 18 1 49 4 32 1 0 2 50)}) :bytecode (20 0 0 20 1 0 16 0 1 2 0 48 2 48 1 6 34 13 0 5 20 3 0 20 4 0 16 0 48 1 48 1 17 2 51 6 0 1 0 1 1 16 2 52 5 0 2 50)} "bind-event" {:upvalue-count 0 :arity 4 :constants ("get" "from" "dom-query" "dom-add-listener" {:upvalue-count 5 :arity 1 :constants ("get" "changed" "element-value" "=" "not" "click" "event-modifier-key?" "submit" "dom-has-attr?" "href" "prevent-default" "get-verb-info" "method" "GET" "delay" "try-client-route" "url-pathname" "url" "dom-get-attr" "sx-target" "browser-push-state" "browser-scroll-to" 0 "log-info" "str" "sx:route server fetch " "clear-timeout" "set-timeout" {:upvalue-count 1 :arity 0 :constants ("execute-request") :bytecode (20 0 0 18 0 2 2 49 3 50)} "execute-request") :bytecode (3 17 1 18 0 1 1 0 52 0 0 2 33 29 0 20 2 0 17 2 16 2 18 1 52 3 0 2 33 6 0 4 17 1 32 4 0 16 2 19 1 32 1 0 2 5 16 1 6 33 26 0 5 18 2 1 5 0 52 3 0 2 6 33 8 0 5 20 6 0 16 0 48 1 52 4 0 1 33 36 1 18 2 1 7 0 52 3 0 2 6 34 25 0 5 18 2 1 5 0 52 3 0 2 6 33 11 0 5 20 8 0 18 3 1 9 0 48 2 33 10 0 20 10 0 16 0 48 1 32 1 0 2 5 20 11 0 18 3 48 1 17 2 18 2 1 5 0 52 3 0 2 6 33 50 0 5 16 2 1 12 0 52 0 0 2 1 13 0 52 3 0 2 6 33 29 0 5 20 8 0 18 3 1 9 0 48 2 6 33 14 0 5 18 0 1 14 0 52 0 0 2 52 4 0 1 17 3 4 17 4 16 3 33 34 0 20 15 0 20 16 0 16 2 1 17 0 52 0 0 2 48 1 20 18 0 18 3 1 19 0 48 2 48 2 17 4 32 1 0 2 5 16 4 33 29 0 20 20 0 16 2 1 17 0 52 0 0 2 48 1 5 20 21 0 1 22 0 1 22 0 49 2 32 84 0 16 3 33 24 0 20 23 0 1 25 0 16 2 1 17 0 52 0 0 2 52 24 0 2 48 1 32 1 0 2 5 18 0 1 14 0 52 0 0 2 33 32 0 20 26 0 18 4 48 1 5 20 27 0 51 28 0 0 3 18 0 1 14 0 52 0 0 2 48 2 19 4 32 9 0 20 29 0 18 3 2 2 49 3 32 1 0 2 50)} "once" "dict") :bytecode (2 17 4 2 17 5 16 2 1 1 0 52 0 0 2 33 17 0 20 2 0 16 2 1 1 0 52 0 0 2 48 1 32 2 0 16 0 17 6 16 6 33 49 0 20 3 0 16 6 16 1 51 4 0 1 2 1 5 1 1 1 0 1 4 16 2 1 5 0 52 0 0 2 33 11 0 1 5 0 3 52 6 0 2 32 1 0 2 49 4 32 1 0 2 50)} "post-swap" {:upvalue-count 0 :arity 1 :constants ("log-info" "str" "post-swap: root=" "dom-tag-name" "nil" "activate-scripts" "sx-process-scripts" "sx-hydrate" "sx-hydrate-islands" "run-post-render-hooks" "process-elements") :bytecode (20 0 0 1 2 0 16 0 33 10 0 20 3 0 16 0 48 1 32 3 0 1 4 0 52 1 0 2 48 1 5 20 5 0 16 0 48 1 5 20 6 0 16 0 48 1 5 20 7 0 16 0 48 1 5 20 8 0 16 0 48 1 5 20 9 0 48 0 5 20 10 0 16 0 49 1 50)} "process-settle-hooks" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-on-settle" "not" "empty?" "sx-parse" "for-each" {:upvalue-count 0 :arity 1 :constants ("eval-expr" "env-extend" "dict") :bytecode (20 0 0 16 0 20 1 0 52 2 0 0 48 1 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 21 0 20 4 0 16 1 48 1 17 2 51 6 0 16 2 52 5 0 2 32 1 0 2 50)} "activate-scripts" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "script" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "dom-has-attr?" "data-components" "data-sx-activated" "create-script-clone" "dom-set-attr" "true" "dom-replace-child" "dom-parent") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 15 0 5 20 1 0 16 0 1 3 0 48 2 52 0 0 1 33 42 0 20 4 0 16 0 48 1 17 1 20 5 0 16 1 1 3 0 1 6 0 48 3 5 20 7 0 20 8 0 16 0 48 1 16 1 16 0 49 3 32 1 0 2 50)}) :bytecode (16 0 33 24 0 20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 32 1 0 2 50)} "process-oob-swaps" {:upvalue-count 0 :arity 2 :constants ("find-oob-swaps" "for-each" {:upvalue-count 1 :arity 1 :constants ("get" "target-id" "dom-query-by-id" "element" "swap-type" "dom-parent" "dom-remove-child") :bytecode (16 0 1 1 0 52 0 0 2 17 1 20 2 0 16 1 48 1 17 2 16 0 1 3 0 52 0 0 2 17 3 16 0 1 4 0 52 0 0 2 17 4 20 5 0 16 3 48 1 33 17 0 20 6 0 20 5 0 16 3 48 1 16 3 48 2 32 1 0 2 5 16 2 33 13 0 18 0 16 2 16 3 16 4 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 48 1 17 2 51 2 0 1 1 16 2 52 1 0 2 50)} "hoist-head-elements" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("dom-parent" "dom-remove-child" "dom-append-to-head") :bytecode (20 0 0 16 0 48 1 33 17 0 20 1 0 20 0 0 16 0 48 1 16 0 48 2 32 1 0 2 5 20 2 0 16 0 49 1 50)} "dom-query-all" "style[data-sx-css]" "link[rel=\"stylesheet\"]") :bytecode (51 1 0 20 2 0 16 0 1 3 0 48 2 52 0 0 2 5 51 1 0 20 2 0 16 0 1 4 0 48 2 52 0 0 2 50)} "process-boosted" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("boost-descendants") :bytecode (20 0 0 16 0 49 1 50)} "dom-query-all" "dom-body" "[sx-boost]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "boost-descendants" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-boost" "for-each" {:upvalue-count 1 :arity 1 :constants ("not" "is-processed?" "boost" "should-boost-link?" "mark-processed!" "dom-has-attr?" "sx-target" "=" "true" "dom-set-attr" "sx-swap" "innerHTML" "sx-push-url" "bind-client-route-link" "dom-get-attr" "href") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 48 1 33 160 0 20 4 0 16 0 1 2 0 48 2 5 20 5 0 16 0 1 6 0 48 2 52 0 0 1 6 33 21 0 5 18 0 6 33 14 0 5 18 0 1 8 0 52 7 0 2 52 0 0 1 33 15 0 20 9 0 16 0 1 6 0 18 0 48 3 32 1 0 2 5 20 5 0 16 0 1 10 0 48 2 52 0 0 1 33 16 0 20 9 0 16 0 1 10 0 1 11 0 48 3 32 1 0 2 5 20 5 0 16 0 1 12 0 48 2 52 0 0 1 33 16 0 20 9 0 16 0 1 12 0 1 8 0 48 3 32 1 0 2 5 20 13 0 16 0 20 14 0 16 0 1 15 0 48 2 49 2 32 1 0 2 50)} "dom-query-all" "a[href]" {:upvalue-count 1 :arity 1 :constants ("not" "is-processed?" "boost" "should-boost-form?" "mark-processed!" "upper" "dom-get-attr" "method" "GET" "action" "browser-location-href" "dom-has-attr?" "sx-target" "=" "true" "dom-set-attr" "sx-swap" "innerHTML" "bind-boost-form") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 48 1 33 165 0 20 4 0 16 0 1 2 0 48 2 5 20 6 0 16 0 1 7 0 48 2 6 34 4 0 5 1 8 0 52 5 0 1 17 1 20 6 0 16 0 1 9 0 48 2 6 34 6 0 5 20 10 0 48 0 17 2 20 11 0 16 0 1 12 0 48 2 52 0 0 1 6 33 21 0 5 18 0 6 33 14 0 5 18 0 1 14 0 52 13 0 2 52 0 0 1 33 15 0 20 15 0 16 0 1 12 0 18 0 48 3 32 1 0 2 5 20 11 0 16 0 1 16 0 48 2 52 0 0 1 33 16 0 20 15 0 16 0 1 16 0 1 17 0 48 3 32 1 0 2 5 20 18 0 16 0 16 1 16 2 49 3 32 1 0 2 50)} "form") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 1 1 20 4 0 16 0 1 5 0 48 2 52 2 0 2 5 51 6 0 1 1 20 4 0 16 0 1 7 0 48 2 52 2 0 2 50)} "_page-data-cache" "_page-data-cache-ttl" 30000 "page-data-cache-key" {:upvalue-count 0 :arity 2 :constants ("nil?" "empty?" "keys" "list" "for-each" {:upvalue-count 2 :arity 1 :constants ("append!" "str" "=" "get") :bytecode (20 0 0 18 0 16 0 1 2 0 18 1 16 0 52 3 0 2 52 1 0 3 49 2 50)} "str" ":" "join" "&") :bytecode (16 0 17 2 16 1 52 0 0 1 6 34 11 0 5 16 1 52 2 0 1 52 1 0 1 33 5 0 16 2 32 42 0 52 3 0 0 17 3 51 5 0 1 3 1 1 16 1 52 2 0 1 52 4 0 2 5 16 2 1 7 0 1 9 0 16 3 52 8 0 2 52 6 0 3 50)} "page-data-cache-get" {:upvalue-count 0 :arity 1 :constants ("get" "_page-data-cache" "nil?" ">" "-" "now-ms" "ts" "_page-data-cache-ttl" "dict-set!" "data") :bytecode (20 1 0 16 0 52 0 0 2 17 1 16 1 52 2 0 1 33 4 0 2 32 52 0 20 5 0 48 0 16 1 1 6 0 52 0 0 2 52 4 0 2 20 7 0 52 3 0 2 33 15 0 20 1 0 16 0 2 52 8 0 3 5 2 32 9 0 16 1 1 9 0 52 0 0 2 50)} "page-data-cache-set" {:upvalue-count 0 :arity 2 :constants ("dict-set!" "_page-data-cache" "data" "ts" "now-ms") :bytecode (20 1 0 16 0 1 2 0 16 1 1 3 0 20 4 0 48 0 65 2 0 52 0 0 3 50)} "invalidate-page-cache" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("=" "starts-with?" "str" ":" "dict-set!" "_page-data-cache") :bytecode (16 0 18 0 52 0 0 2 6 34 16 0 5 16 0 18 0 1 3 0 52 2 0 2 52 1 0 2 33 13 0 20 5 0 16 0 2 52 4 0 3 32 1 0 2 50)} "keys" "_page-data-cache" "sw-post-message" "type" "invalidate" "page" "log-info" "str" "sx:cache invalidate ") :bytecode (51 1 0 1 0 20 3 0 52 2 0 1 52 0 0 2 5 20 4 0 1 5 0 1 6 0 1 7 0 16 0 65 2 0 48 1 5 20 8 0 1 10 0 16 0 52 9 0 2 49 1 50)} "invalidate-all-page-cache" {:upvalue-count 0 :arity 0 :constants ("dict" "_page-data-cache" "sw-post-message" "type" "invalidate" "page" "*" "log-info" "sx:cache invalidate *") :bytecode (52 0 0 0 21 1 0 5 20 2 0 1 3 0 1 4 0 1 5 0 1 6 0 65 2 0 48 1 5 20 7 0 1 8 0 49 1 50)} "update-page-cache" {:upvalue-count 0 :arity 2 :constants ("page-data-cache-key" "dict" "page-data-cache-set" "log-info" "str" "sx:cache update ") :bytecode (20 0 0 16 0 52 1 0 0 48 2 17 2 20 2 0 16 2 16 1 48 2 5 20 3 0 1 5 0 16 0 52 4 0 2 49 1 50)} "process-cache-directives" {:upvalue-count 0 :arity 3 :constants ("dom-get-attr" "sx-cache-invalidate" "=" "*" "invalidate-all-page-cache" "invalidate-page-cache" "get" "cache-invalidate" "cache-update" "parse-sx-data" "update-page-cache") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 16 3 33 30 0 16 3 1 3 0 52 2 0 2 33 8 0 20 4 0 48 0 32 7 0 20 5 0 16 3 48 1 32 1 0 2 5 16 1 1 7 0 52 6 0 2 17 3 16 3 33 30 0 16 3 1 3 0 52 2 0 2 33 8 0 20 4 0 48 0 32 7 0 20 5 0 16 3 48 1 32 1 0 2 5 16 1 1 8 0 52 6 0 2 17 3 16 3 33 30 0 20 9 0 16 2 48 1 17 4 16 4 33 12 0 20 10 0 16 3 16 4 49 2 32 1 0 2 32 1 0 2 50)} "_optimistic-snapshots" "optimistic-cache-update" {:upvalue-count 0 :arity 2 :constants ("page-data-cache-get" "dict-set!" "_optimistic-snapshots" "page-data-cache-set") :bytecode (20 0 0 16 0 48 1 17 2 16 2 33 35 0 16 1 16 2 48 1 17 3 20 2 0 16 0 16 2 52 1 0 3 5 20 3 0 16 0 16 3 48 2 5 16 3 32 1 0 2 50)} "optimistic-cache-revert" {:upvalue-count 0 :arity 1 :constants ("get" "_optimistic-snapshots" "page-data-cache-set" "dict-delete!") :bytecode (20 1 0 16 0 52 0 0 2 17 1 16 1 33 25 0 20 2 0 16 0 16 1 48 2 5 20 1 0 16 0 52 3 0 2 5 16 1 32 1 0 2 50)} "optimistic-cache-confirm" {:upvalue-count 0 :arity 1 :constants ("dict-delete!" "_optimistic-snapshots") :bytecode (20 1 0 16 0 52 0 0 2 50)} "submit-mutation" {:upvalue-count 0 :arity 6 :constants ("page-data-cache-key" "optimistic-cache-update" "try-rerender-page" "execute-action" {:upvalue-count 4 :arity 1 :constants ("page-data-cache-set" "optimistic-cache-confirm" "try-rerender-page" "log-info" "str" "sx:optimistic confirmed " "confirmed") :bytecode (16 0 33 12 0 20 0 0 18 0 16 0 48 2 32 1 0 2 5 20 1 0 18 0 48 1 5 16 0 33 14 0 20 2 0 18 1 18 2 16 0 48 3 32 1 0 2 5 20 3 0 1 5 0 18 1 52 4 0 2 48 1 5 18 3 33 10 0 18 3 1 6 0 49 1 32 1 0 2 50)} {:upvalue-count 4 :arity 1 :constants ("optimistic-cache-revert" "try-rerender-page" "log-warn" "str" "sx:optimistic reverted " ": " "reverted") :bytecode (20 0 0 18 0 48 1 17 1 16 1 33 14 0 20 1 0 18 1 18 2 16 1 48 3 32 1 0 2 5 20 2 0 1 4 0 18 1 1 5 0 16 0 52 3 0 4 48 1 5 18 3 33 10 0 18 3 1 6 0 49 1 32 1 0 2 50)}) :bytecode (20 0 0 16 0 16 1 48 2 17 6 20 1 0 16 6 16 4 48 2 17 7 16 7 33 14 0 20 2 0 16 0 16 1 16 7 48 3 32 1 0 2 5 20 3 0 16 2 16 3 51 4 0 1 6 1 0 1 1 1 5 51 5 0 1 6 1 0 1 1 1 5 49 4 50)} "_is-online" "_offline-queue" "list" "offline-is-online?" {:upvalue-count 0 :arity 0 :constants ("_is-online") :bytecode (20 0 0 50)} "offline-set-online!" {:upvalue-count 0 :arity 1 :constants ("_is-online") :bytecode (16 0 21 0 0 50)} "offline-queue-mutation" {:upvalue-count 0 :arity 5 :constants ("page-data-cache-key" "dict" "action" "payload" "page" "params" "timestamp" "now-ms" "status" "pending" "append!" "_offline-queue" "optimistic-cache-update" "try-rerender-page" "log-info" "str" "sx:offline queued " " (" "len" " pending)") :bytecode (20 0 0 16 2 16 3 48 2 17 5 1 2 0 16 0 1 3 0 16 1 1 4 0 16 2 1 5 0 16 3 1 6 0 20 7 0 48 0 1 8 0 1 9 0 52 1 0 12 17 6 20 10 0 20 11 0 16 6 48 2 5 20 12 0 16 5 16 4 48 2 17 7 16 7 33 14 0 20 13 0 16 2 16 3 16 7 48 3 32 1 0 2 5 20 14 0 1 16 0 16 0 1 17 0 20 11 0 52 18 0 1 1 19 0 52 15 0 5 48 1 5 16 6 50)} "offline-sync" {:upvalue-count 0 :arity 0 :constants ("filter" {:upvalue-count 0 :arity 1 :constants ("=" "get" "status" "pending") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 50)} "_offline-queue" "not" "empty?" "log-info" "str" "sx:offline syncing " "len" " mutations" "for-each" {:upvalue-count 0 :arity 1 :constants ("execute-action" "get" "action" "payload" {:upvalue-count 1 :arity 1 :constants ("dict-set!" "status" "synced" "log-info" "str" "sx:offline synced " "get" "action") :bytecode (18 0 1 1 0 1 2 0 52 0 0 3 5 20 3 0 1 5 0 18 0 1 7 0 52 6 0 2 52 4 0 2 49 1 50)} {:upvalue-count 1 :arity 1 :constants ("dict-set!" "status" "failed" "log-warn" "str" "sx:offline sync failed " "get" "action" ": ") :bytecode (18 0 1 1 0 1 2 0 52 0 0 3 5 20 3 0 1 5 0 18 0 1 7 0 52 6 0 2 1 8 0 16 0 52 4 0 4 49 1 50)}) :bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 0 1 3 0 52 1 0 2 51 4 0 1 0 51 5 0 1 0 49 4 50)}) :bytecode (51 1 0 20 2 0 52 0 0 2 17 0 16 0 52 4 0 1 52 3 0 1 33 34 0 20 5 0 1 7 0 16 0 52 8 0 1 1 9 0 52 6 0 3 48 1 5 51 11 0 16 0 52 10 0 2 32 1 0 2 50)} "offline-pending-count" {:upvalue-count 0 :arity 0 :constants ("len" "filter" {:upvalue-count 0 :arity 1 :constants ("=" "get" "status" "pending") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 50)} "_offline-queue") :bytecode (51 2 0 20 3 0 52 1 0 2 52 0 0 1 50)} "offline-aware-mutation" {:upvalue-count 0 :arity 6 :constants ("_is-online" "submit-mutation" "offline-queue-mutation" "queued") :bytecode (20 0 0 33 20 0 20 1 0 16 0 16 1 16 2 16 3 16 4 16 5 49 6 32 32 0 20 2 0 16 2 16 3 16 0 16 1 16 4 48 5 5 16 5 33 10 0 16 5 1 3 0 49 1 32 1 0 2 50)} "current-page-layout" {:upvalue-count 0 :arity 0 :constants ("url-pathname" "browser-location-href" "find-matching-route" "_page-routes" "nil?" "" "get" "layout") :bytecode (20 0 0 20 1 0 48 0 48 1 17 0 20 2 0 16 0 20 3 0 48 2 17 1 16 1 52 4 0 1 33 6 0 1 5 0 32 17 0 16 1 1 7 0 52 6 0 2 6 34 4 0 5 1 5 0 50)} "swap-rendered-content" {:upvalue-count 0 :arity 3 :constants ("dom-create-element" "div" "dom-append" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "=" "innerHTML" "children-to-fragment" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 2 1 3 0 52 2 0 2 33 10 0 20 4 0 16 1 48 1 32 2 0 16 1 16 2 48 3 5 20 5 0 16 0 49 1 50)} "dom-get-attr" "id" "dom-query" "str" "#" "children-to-fragment" "dispose-islands-in" "dom-set-text-content" "" "hoist-head-elements-full" "process-elements" "sx-hydrate-elements" "sx-hydrate-islands" "run-post-render-hooks" "dom-dispatch" "sx:clientRoute" "dict" "pathname" "log-info" "sx:route client ") :bytecode (20 0 0 1 1 0 2 48 2 17 3 20 2 0 16 3 16 1 48 2 5 20 3 0 16 3 51 4 0 48 2 5 20 5 0 16 0 1 6 0 48 2 17 4 16 4 33 19 0 20 7 0 16 3 1 9 0 16 4 52 8 0 2 48 2 32 1 0 2 17 5 16 5 33 10 0 20 10 0 16 5 48 1 32 7 0 20 10 0 16 3 48 1 17 6 20 11 0 16 0 48 1 5 20 12 0 16 0 1 13 0 48 2 5 20 2 0 16 0 16 6 48 2 5 20 14 0 16 0 48 1 5 20 15 0 16 0 48 1 5 20 16 0 16 0 48 1 5 20 17 0 16 0 48 1 5 20 18 0 48 0 5 20 19 0 16 0 1 20 0 1 22 0 16 2 52 21 0 2 48 3 5 20 23 0 1 24 0 16 2 52 8 0 2 49 1 50)} "resolve-route-target" {:upvalue-count 0 :arity 1 :constants ("not" "=" "true" "dom-query") :bytecode (16 0 6 33 14 0 5 16 0 1 2 0 52 1 0 2 52 0 0 1 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)} "deps-satisfied?" {:upvalue-count 0 :arity 1 :constants ("get" "deps" "loaded-component-names" "nil?" "empty?" "every?" {:upvalue-count 1 :arity 1 :constants ("contains?") :bytecode (18 0 16 0 52 0 0 2 50)}) :bytecode (16 0 1 1 0 52 0 0 2 17 1 20 2 0 48 0 17 2 16 1 52 3 0 1 6 34 7 0 5 16 1 52 4 0 1 33 4 0 3 32 11 0 51 6 0 1 2 16 1 52 5 0 2 50)} "try-client-route" {:upvalue-count 0 :arity 2 :constants ("find-matching-route" "_page-routes" "nil?" "log-info" "str" "sx:route no match (" "len" " routes) " "get" "layout" "" "current-page-layout" "not" "=" "sx:route server (layout: " " -> " ") " "content" "closure" "params" "name" "empty?" "log-warn" "sx:route no content for " "resolve-route-target" "sx:route target not found: " "deps-satisfied?" "sx:route deps miss for " "io-deps" "render-plan" "server" "list" "client" "sx:route plan " " — " " server, " " client" "register-io-deps" "stream" "sx:route streaming " "fetch-streaming" "build-request-headers" "loaded-component-names" "_css-hash" "has-data" "page-data-cache-key" "page-data-cache-get" "merge" "sx:route client+cache+async " "try-async-eval-content" {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route cache+async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "try-eval-content" "sx:route cached eval failed for " "sx:route client+cache " "swap-rendered-content" "sx:route client+data " "resolve-page-data" {:upvalue-count 7 :arity 1 :constants ("page-data-cache-set" "merge" "try-async-eval-content" {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route data+async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "try-eval-content" "nil?" "log-warn" "str" "sx:route data eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (20 0 0 18 0 16 0 48 2 5 18 1 18 2 16 0 52 1 0 3 17 1 18 3 33 19 0 20 2 0 18 4 16 1 51 3 0 0 5 0 6 49 3 32 79 0 20 4 0 18 4 16 1 48 2 17 2 16 2 52 5 0 1 33 48 0 20 6 0 1 8 0 18 5 1 9 0 52 7 0 3 48 1 5 20 10 0 18 6 18 5 20 11 0 18 6 20 12 0 48 0 20 13 0 48 3 1 14 0 49 4 32 11 0 20 15 0 18 6 16 2 18 5 49 3 50)} "sx:route client+async " {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "sx:route server (eval failed) ") :bytecode (20 0 0 16 0 20 1 0 48 2 17 2 16 2 52 2 0 1 33 29 0 20 3 0 1 5 0 20 1 0 52 6 0 1 1 7 0 16 0 52 4 0 4 48 1 5 4 32 233 2 16 2 1 9 0 52 8 0 2 6 34 4 0 5 1 10 0 17 3 20 11 0 48 0 17 4 16 3 16 4 52 13 0 2 52 12 0 1 33 29 0 20 3 0 1 14 0 16 4 1 15 0 16 3 1 16 0 16 0 52 4 0 6 48 1 5 4 32 163 2 16 2 1 17 0 52 8 0 2 17 5 16 2 1 18 0 52 8 0 2 6 34 4 0 5 65 0 0 17 6 16 2 1 19 0 52 8 0 2 17 7 16 2 1 20 0 52 8 0 2 17 8 16 5 52 2 0 1 6 34 7 0 5 16 5 52 21 0 1 33 19 0 20 22 0 1 23 0 16 0 52 4 0 2 48 1 5 4 32 72 2 20 24 0 16 1 48 1 17 9 16 9 52 2 0 1 33 19 0 20 22 0 1 25 0 16 1 52 4 0 2 48 1 5 4 32 35 2 20 26 0 16 2 48 1 52 12 0 1 33 19 0 20 3 0 1 27 0 16 8 52 4 0 2 48 1 5 4 32 2 2 16 2 1 28 0 52 8 0 2 17 10 16 10 6 33 11 0 5 16 10 52 21 0 1 52 12 0 1 17 11 16 2 1 29 0 52 8 0 2 17 12 16 12 33 78 0 16 12 1 30 0 52 8 0 2 6 34 5 0 5 52 31 0 0 17 13 16 12 1 32 0 52 8 0 2 6 34 5 0 5 52 31 0 0 17 14 20 3 0 1 33 0 16 8 1 34 0 16 13 52 6 0 1 1 35 0 16 14 52 6 0 1 1 36 0 52 4 0 7 48 1 32 1 0 2 5 16 11 33 10 0 20 37 0 16 10 48 1 32 1 0 2 5 16 2 1 38 0 52 8 0 2 33 44 0 20 3 0 1 39 0 16 0 52 4 0 2 48 1 5 20 40 0 16 9 16 0 20 41 0 16 9 20 42 0 48 0 20 43 0 48 3 48 3 5 3 32 59 1 16 2 1 44 0 52 8 0 2 33 194 0 20 45 0 16 8 16 7 48 2 17 13 20 46 0 16 13 48 1 17 14 16 14 33 123 0 16 6 16 7 16 14 52 47 0 3 17 15 16 11 33 36 0 20 3 0 1 48 0 16 0 52 4 0 2 48 1 5 20 49 0 16 5 16 15 51 50 0 1 0 1 9 48 3 5 3 32 67 0 20 51 0 16 5 16 15 48 2 17 16 16 16 52 2 0 1 33 19 0 20 22 0 1 52 0 16 0 52 4 0 2 48 1 5 4 32 28 0 20 3 0 1 53 0 16 0 52 4 0 2 48 1 5 20 54 0 16 9 16 16 16 0 48 3 5 3 32 43 0 20 3 0 1 55 0 16 0 52 4 0 2 48 1 5 20 56 0 16 8 16 7 51 57 0 1 13 1 6 1 7 1 11 1 5 1 0 1 9 48 3 5 3 32 109 0 16 11 33 42 0 20 3 0 1 58 0 16 0 52 4 0 2 48 1 5 20 49 0 16 5 16 6 16 7 52 47 0 2 51 59 0 1 0 1 9 48 3 5 3 32 62 0 16 6 16 7 52 47 0 2 17 13 20 51 0 16 5 16 13 48 2 17 14 16 14 52 2 0 1 33 19 0 20 3 0 1 60 0 16 0 52 4 0 2 48 1 5 4 32 13 0 20 54 0 16 9 16 14 16 0 48 3 5 3 50)} "bind-client-route-link" {:upvalue-count 0 :arity 2 :constants ("bind-client-route-click" {:upvalue-count 2 :arity 0 :constants ("bind-boost-link") :bytecode (20 0 0 18 0 18 1 49 2 50)}) :bytecode (20 0 0 16 0 16 1 51 1 0 1 0 1 1 49 3 50)} "process-sse" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "sse" "mark-processed!" "bind-sse") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 21 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 49 1 32 1 0 2 50)} "dom-query-all" "dom-body" "[sx-sse]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "bind-sse" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-sse" "event-source-connect" "parse-sse-swap" "event-source-listen" {:upvalue-count 1 :arity 1 :constants ("bind-sse-swap") :bytecode (20 0 0 18 0 16 0 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 37 0 20 2 0 16 1 16 0 48 2 17 2 20 3 0 16 0 48 1 17 3 20 4 0 16 2 16 3 51 5 0 1 0 49 3 32 1 0 2 50)} "bind-sse-swap" {:upvalue-count 0 :arity 2 :constants ("resolve-target" "parse-swap-spec" "dom-get-attr" "sx-swap" "dom-has-class?" "dom-body" "sx-transitions" "get" "style" "transition" "trim" "not" "empty?" "dispose-islands-in" "starts-with?" "(" "sx-render" "dom-create-element" "div" "dom-append" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "children-to-fragment" "post-swap") :bytecode (20 0 0 18 0 20 1 0 18 1 48 1 18 2 48 3 5 20 2 0 18 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("swap-html-string" "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 0 49 1 50)}) :bytecode (20 0 0 16 0 48 1 17 2 20 1 0 20 2 0 16 0 1 3 0 48 2 20 4 0 20 5 0 48 0 1 6 0 48 2 48 2 17 3 16 3 1 8 0 52 7 0 2 17 4 16 3 1 9 0 52 7 0 2 17 5 16 1 52 10 0 1 17 6 16 6 52 12 0 1 52 11 0 1 33 88 0 20 13 0 16 2 48 1 5 16 6 1 15 0 52 14 0 2 33 49 0 20 16 0 16 6 48 1 17 7 20 17 0 1 18 0 2 48 2 17 8 20 19 0 16 8 16 7 48 2 5 20 20 0 16 5 51 21 0 1 2 1 8 1 4 49 2 32 16 0 20 20 0 16 5 51 22 0 1 2 1 6 1 4 49 2 32 1 0 2 50)} "bind-inline-handlers" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("first" "nth" 1 "starts-with?" "sx-on:" "slice" 6 "not" "is-processed?" "str" "on:" "mark-processed!" "sx-parse" "dom-on" {:upvalue-count 2 :arity 1 :constants ("env-extend" "dict" "env-bind!" "event" "this" "detail" "event-detail" "for-each" {:upvalue-count 1 :arity 1 :constants ("eval-expr") :bytecode (20 0 0 16 0 18 0 49 2 50)}) :bytecode (20 0 0 52 1 0 0 48 1 17 1 20 2 0 16 1 1 3 0 16 0 48 3 5 20 2 0 16 1 1 4 0 18 0 48 3 5 20 2 0 16 1 1 5 0 20 6 0 16 0 48 1 48 3 5 51 8 0 1 1 18 1 52 7 0 2 50)}) :bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 16 1 1 4 0 52 3 0 2 33 83 0 16 1 1 6 0 52 5 0 2 17 3 20 8 0 18 0 1 10 0 16 3 52 9 0 2 48 2 52 7 0 1 33 45 0 20 11 0 18 0 1 10 0 16 3 52 9 0 2 48 2 5 20 12 0 16 2 48 1 17 4 20 13 0 18 0 16 3 51 14 0 0 0 1 4 49 3 32 1 0 2 32 1 0 2 50)} "dom-attr-list") :bytecode (51 1 0 1 0 20 2 0 16 0 48 1 52 0 0 2 50)} "dom-query-all" "dom-body" "[sx-on\\:]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "bind-preload-for" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-preload" "=" "mousedown" "list" "touchstart" "mouseover" 0 100 "bind-preload" {:upvalue-count 1 :arity 0 :constants ("get-verb-info" "do-preload" "get" "url" "build-request-headers" "loaded-component-names" "_css-hash") :bytecode (20 0 0 18 0 48 1 17 0 16 0 33 32 0 20 1 0 16 0 1 3 0 52 2 0 2 20 4 0 18 0 20 5 0 48 0 20 6 0 48 3 49 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 76 0 16 1 1 3 0 52 2 0 2 33 13 0 1 3 0 1 5 0 52 4 0 2 32 7 0 1 6 0 52 4 0 1 17 2 16 1 1 3 0 52 2 0 2 33 6 0 1 7 0 32 3 0 1 8 0 17 3 20 9 0 16 0 16 2 16 3 51 10 0 1 0 49 4 32 1 0 2 50)} "do-preload" {:upvalue-count 0 :arity 2 :constants ("nil?" "preload-cache-get" "_preload-cache" "fetch-preload") :bytecode (20 1 0 20 2 0 16 0 48 2 52 0 0 1 33 15 0 20 3 0 16 0 16 1 20 2 0 49 3 32 1 0 2 50)} "VERB_SELECTOR" "str" "[sx-get],[sx-post],[sx-put],[sx-delete],[sx-patch]" "process-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "VERB_SELECTOR" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "verb" "mark-processed!" "process-one") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 21 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 49 1 32 1 0 2 50)} "process-boosted" "process-sse" "bind-inline-handlers" "process-emit-elements") :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 20 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 5 20 5 0 16 0 48 1 5 20 6 0 16 0 48 1 5 20 7 0 16 0 48 1 5 20 8 0 16 0 49 1 50)} "process-one" {:upvalue-count 0 :arity 1 :constants ("get-verb-info" "not" "dom-has-attr?" "sx-disable" "bind-triggers" "bind-preload-for") :bytecode (20 0 0 16 0 48 1 17 1 16 1 33 41 0 20 2 0 16 0 1 3 0 48 2 52 1 0 1 33 20 0 20 4 0 16 0 16 1 48 2 5 20 5 0 16 0 49 1 32 1 0 2 32 1 0 2 50)} "process-emit-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "[data-sx-emit]" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "emit" "mark-processed!" "dom-get-attr" "data-sx-emit" "dom-on" "click" {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "data-sx-emit-detail" "json-parse" "dict" "dom-dispatch") :bytecode (20 0 0 18 0 1 1 0 48 2 17 1 16 1 33 10 0 20 2 0 16 1 48 1 32 4 0 52 3 0 0 17 2 20 4 0 18 0 18 1 16 2 49 3 50)}) :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 52 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 1 5 0 48 2 17 1 16 1 33 20 0 20 6 0 16 0 1 7 0 51 8 0 1 0 1 1 49 3 32 1 0 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 50)} "handle-popstate" {:upvalue-count 0 :arity 1 :constants ("browser-location-href" "dom-query" "[sx-boost]" "dom-get-attr" "sx-boost" "not" "=" "true" "#main-panel" "url-pathname" "try-client-route" "browser-scroll-to" 0 "build-request-headers" "loaded-component-names" "_css-hash" "fetch-and-restore") :bytecode (20 0 0 48 0 17 1 20 1 0 1 2 0 48 1 17 2 16 2 33 44 0 20 3 0 16 2 1 4 0 48 2 17 4 16 4 6 33 14 0 5 16 4 1 7 0 52 6 0 2 52 5 0 1 33 5 0 16 4 32 1 0 2 32 1 0 2 17 3 16 3 6 34 4 0 5 1 8 0 17 3 20 1 0 16 3 48 1 17 4 20 9 0 16 1 48 1 17 5 16 4 33 58 0 20 10 0 16 5 16 3 48 2 33 13 0 20 11 0 1 12 0 16 0 49 2 32 30 0 20 13 0 16 4 20 14 0 48 0 20 15 0 48 3 17 6 20 16 0 16 4 16 1 16 6 16 0 49 4 32 1 0 2 50)} "engine-init" {:upvalue-count 0 :arity 0 :constants ("init-css-tracking" "sx-process-scripts" "sx-hydrate" "process-elements") :bytecode (20 0 0 48 0 5 20 1 0 2 48 1 5 20 2 0 2 48 1 5 20 3 0 2 49 1 50)}) :bytecode (52 1 0 0 128 0 0 5 1 3 0 128 2 0 5 51 5 0 128 4 0 5 51 7 0 128 6 0 5 51 9 0 128 8 0 5 51 11 0 128 10 0 5 51 13 0 128 12 0 5 51 15 0 128 14 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 52 1 0 0 128 38 0 5 1 40 0 128 39 0 5 51 42 0 128 41 0 5 51 44 0 128 43 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 52 1 0 0 128 55 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 3 128 64 0 5 52 66 0 0 128 65 0 5 51 68 0 128 67 0 5 51 70 0 128 69 0 5 51 72 0 128 71 0 5 51 74 0 128 73 0 5 51 76 0 128 75 0 5 51 78 0 128 77 0 5 51 80 0 128 79 0 5 51 82 0 128 81 0 5 51 84 0 128 83 0 5 51 86 0 128 85 0 5 51 88 0 128 87 0 5 51 90 0 128 89 0 5 51 92 0 128 91 0 5 51 94 0 128 93 0 5 51 96 0 128 95 0 5 51 98 0 128 97 0 5 51 100 0 128 99 0 5 51 102 0 128 101 0 5 1 105 0 52 104 0 1 128 103 0 5 51 107 0 128 106 0 5 51 109 0 128 108 0 5 51 111 0 128 110 0 5 51 113 0 128 112 0 5 51 115 0 128 114 0 50))) + :constants ("_preload-cache" "dict" "_css-hash" "" "dispatch-trigger-events" {:upvalue-count 0 :arity 2 :constants ("try-parse-json" "for-each" {:upvalue-count 2 :arity 1 :constants ("dom-dispatch" "get") :bytecode (20 0 0 18 0 16 0 18 1 16 0 52 1 0 2 49 3 50)} "keys" {:upvalue-count 1 :arity 1 :constants ("trim" "not" "empty?" "dom-dispatch" "dict") :bytecode (16 0 52 0 0 1 17 1 16 1 52 2 0 1 52 1 0 1 33 16 0 20 3 0 18 0 16 1 52 4 0 0 49 3 32 1 0 2 50)} "split" ",") :bytecode (16 1 33 55 0 20 0 0 16 1 48 1 17 2 16 2 33 20 0 51 2 0 1 0 1 2 16 2 52 3 0 1 52 1 0 2 32 18 0 51 4 0 1 0 16 1 1 6 0 52 5 0 2 52 1 0 2 32 1 0 2 50)} "init-css-tracking" {:upvalue-count 0 :arity 0 :constants ("dom-query" "meta[name=\"sx-css-classes\"]" "dom-get-attr" "content" "_css-hash") :bytecode (20 0 0 1 1 0 48 1 17 0 16 0 33 29 0 20 2 0 16 0 1 3 0 48 2 17 1 16 1 33 8 0 16 1 21 4 0 32 1 0 2 32 1 0 2 50)} "execute-request" {:upvalue-count 0 :arity 3 :constants ("get-verb-info" "nil?" "promise-resolve" "get" "method" "url" "dom-get-attr" "sx-media" "not" "browser-media-matches?" "sx-confirm" "browser-confirm" "sx-prompt" "browser-prompt" "validate-for-request" "do-fetch" "assoc" "dict" "SX-Prompt") :bytecode (20 0 0 16 0 48 1 6 34 3 0 5 16 1 17 3 16 3 52 1 0 1 33 9 0 20 2 0 2 49 1 32 249 0 16 3 1 4 0 52 3 0 2 17 4 16 3 1 5 0 52 3 0 2 17 5 20 6 0 16 0 1 7 0 48 2 17 6 16 6 6 33 12 0 5 20 9 0 16 6 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 185 0 20 6 0 16 0 1 10 0 48 2 17 6 16 6 6 33 12 0 5 20 11 0 16 6 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 143 0 20 6 0 16 0 1 12 0 48 2 17 6 16 6 33 10 0 20 13 0 16 6 48 1 32 1 0 2 17 7 16 6 6 33 7 0 5 16 7 52 1 0 1 33 9 0 20 2 0 2 49 1 32 88 0 16 4 52 1 0 1 6 34 23 0 5 16 5 52 1 0 1 6 34 12 0 5 20 14 0 16 0 48 1 52 8 0 1 33 9 0 20 2 0 2 49 1 32 43 0 20 15 0 16 0 16 4 16 4 16 5 16 7 33 23 0 16 2 6 34 5 0 5 52 17 0 0 1 18 0 16 7 52 16 0 3 32 2 0 16 2 49 5 50)} "do-fetch" {:upvalue-count 0 :arity 5 :constants ("dom-get-attr" "sx-sync" "=" "replace" "abort-previous" "resolve-target" "not" "identical?" "abort-previous-target" "new-abort-controller" "track-controller" "track-controller-target" "build-request-body" "get" "url" "body" "content-type" "build-request-headers" "loaded-component-names" "_css-hash" "csrf-token" "for-each" {:upvalue-count 2 :arity 1 :constants ("dict-set!" "get") :bytecode (18 0 16 0 18 1 16 0 52 1 0 2 52 0 0 3 50)} "keys" "dict-set!" "Content-Type" "X-CSRFToken" "preload-cache-get" "_preload-cache" "apply-optimistic" "show-indicator" "disable-elements" "dom-add-class" "sx-request" "dom-set-attr" "aria-busy" "true" "dom-dispatch" "sx:beforeRequest" "dict" "method" "fetch-request" "headers" "signal" "controller-signal" "cross-origin" "cross-origin?" "preloaded" {:upvalue-count 8 :arity 4 :constants ("clear-loading-state" "revert-optimistic" "not" "dom-dispatch" "sx:responseError" "dict" "status" "text" ">" "len" 0 "handle-fetch-success" "handle-retry" "sx:afterRequest") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 3 48 1 5 16 0 52 2 0 1 33 86 0 20 3 0 18 0 1 4 0 1 6 0 16 1 1 7 0 16 3 52 5 0 4 48 3 5 16 3 6 33 14 0 5 16 3 52 9 0 1 1 10 0 52 8 0 2 33 20 0 20 11 0 18 0 18 4 18 5 18 6 16 2 16 3 49 6 32 15 0 20 12 0 18 0 18 5 18 7 18 4 18 6 49 5 32 37 0 20 3 0 18 0 1 13 0 1 6 0 16 1 52 5 0 2 48 3 5 20 11 0 18 0 18 4 18 5 18 6 16 2 16 3 49 6 50)} {:upvalue-count 6 :arity 1 :constants ("clear-loading-state" "revert-optimistic" "not" "abort-error?" "log-warn" "str" "sx:fetch error " " " " — " "dom-dispatch" "sx:requestError" "dict" "error") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 3 48 1 5 20 3 0 16 0 48 1 52 2 0 1 33 47 0 20 4 0 1 6 0 18 4 1 7 0 18 5 1 8 0 16 0 52 5 0 6 48 1 5 20 9 0 18 0 1 10 0 1 12 0 16 0 52 11 0 2 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 5 16 5 1 3 0 52 2 0 2 33 10 0 20 4 0 16 0 48 1 32 1 0 2 5 20 5 0 16 0 48 1 17 6 16 6 6 33 13 0 5 16 0 16 6 52 7 0 2 52 6 0 1 33 10 0 20 8 0 16 6 48 1 32 1 0 2 5 20 9 0 48 0 17 6 20 10 0 16 0 16 6 48 2 5 20 5 0 16 0 48 1 17 7 16 7 33 12 0 20 11 0 16 7 16 6 48 2 32 1 0 2 5 20 12 0 16 0 16 2 16 3 48 3 17 7 16 7 1 14 0 52 13 0 2 17 8 16 7 1 15 0 52 13 0 2 17 9 16 7 1 16 0 52 13 0 2 17 10 20 17 0 16 0 20 18 0 48 0 20 19 0 48 3 17 11 20 20 0 48 0 17 12 16 4 33 20 0 51 22 0 1 11 1 4 16 4 52 23 0 1 52 21 0 2 32 1 0 2 5 16 10 33 14 0 16 11 1 25 0 16 10 52 24 0 3 32 1 0 2 5 16 12 33 14 0 16 11 1 26 0 16 12 52 24 0 3 32 1 0 2 5 20 27 0 20 28 0 16 8 48 2 17 13 20 29 0 16 0 48 1 17 14 20 30 0 16 0 48 1 17 15 20 31 0 16 0 48 1 17 16 20 32 0 16 0 1 33 0 48 2 5 20 34 0 16 0 1 35 0 1 36 0 48 3 5 20 37 0 16 0 1 38 0 1 14 0 16 8 1 40 0 16 2 52 39 0 4 48 3 5 20 41 0 1 14 0 16 8 1 40 0 16 2 1 42 0 16 11 1 15 0 16 9 1 43 0 20 44 0 16 6 48 1 1 45 0 20 46 0 16 8 48 1 1 47 0 16 13 52 39 0 14 51 48 0 1 0 1 15 1 16 1 14 1 8 1 1 1 4 1 2 51 49 0 1 0 1 15 1 16 1 14 1 2 1 8 49 3 50)} "handle-fetch-success" {:upvalue-count 0 :arity 6 :constants ("process-response-headers" "get" "css-hash" "_css-hash" "dispatch-trigger-events" "trigger" "process-cache-directives" "redirect" "browser-navigate" "refresh" "browser-reload" "location" "fetch-location" "retarget" "dom-query" "resolve-target" "parse-swap-spec" "reswap" "dom-get-attr" "sx-swap" "dom-has-class?" "dom-body" "sx-transitions" "style" "transition" "content-type" "" "contains?" "text/sx" "handle-sx-response" "handle-html-response" "trigger-swap" "handle-history" "set-timeout" {:upvalue-count 2 :arity 0 :constants ("get" "trigger-settle" "dispatch-trigger-events" "process-settle-hooks") :bytecode (18 0 1 1 0 52 0 0 2 33 19 0 20 2 0 18 1 18 0 1 1 0 52 0 0 2 48 2 32 1 0 2 5 20 3 0 18 1 49 1 50)} 20 "dom-dispatch" "sx:afterSwap" "dict" "target" "swap") :bytecode (20 0 0 16 4 48 1 17 6 16 6 1 2 0 52 1 0 2 17 7 16 7 33 8 0 16 7 21 3 0 32 1 0 2 5 20 4 0 16 0 16 6 1 5 0 52 1 0 2 48 2 5 20 6 0 16 0 16 6 16 5 48 3 5 16 6 1 7 0 52 1 0 2 33 17 0 20 8 0 16 6 1 7 0 52 1 0 2 49 1 32 31 1 16 6 1 9 0 52 1 0 2 33 8 0 20 10 0 49 0 32 11 1 16 6 1 11 0 52 1 0 2 33 17 0 20 12 0 16 6 1 11 0 52 1 0 2 49 1 32 238 0 16 6 1 13 0 52 1 0 2 33 17 0 20 14 0 16 6 1 13 0 52 1 0 2 48 1 32 7 0 20 15 0 16 0 48 1 17 7 20 16 0 16 6 1 17 0 52 1 0 2 6 34 11 0 5 20 18 0 16 0 1 19 0 48 2 20 20 0 20 21 0 48 0 1 22 0 48 2 48 2 17 8 16 8 1 23 0 52 1 0 2 17 9 16 8 1 24 0 52 1 0 2 17 10 16 6 1 25 0 52 1 0 2 6 34 4 0 5 1 26 0 17 11 16 11 1 28 0 52 27 0 2 33 18 0 20 29 0 16 0 16 7 16 5 16 9 16 10 48 5 32 15 0 20 30 0 16 0 16 7 16 5 16 9 16 10 48 5 5 20 4 0 16 0 16 6 1 31 0 52 1 0 2 48 2 5 20 32 0 16 0 16 1 16 6 48 3 5 20 33 0 51 34 0 1 6 1 0 1 35 0 48 2 5 20 36 0 16 0 1 37 0 1 39 0 16 7 1 40 0 16 9 52 38 0 4 49 3 50)} "handle-sx-response" {:upvalue-count 0 :arity 5 :constants ("strip-component-scripts" "extract-response-css" "trim" "not" "empty?" "sx-render" "dom-create-element" "div" "dom-append" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "=" "innerHTML" "children-to-fragment" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 2 1 3 0 52 2 0 2 33 10 0 20 4 0 16 1 48 1 32 2 0 16 1 16 2 48 3 5 20 5 0 16 0 49 1 50)} "dom-get-attr" "sx-select" "select-from-container" "children-to-fragment" "dispose-islands-in" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "post-swap" "=" "outerHTML" "dom-parent") :bytecode (20 0 0 18 0 18 1 18 2 48 3 17 0 20 1 0 18 2 1 3 0 52 2 0 2 33 17 0 20 4 0 16 0 6 34 3 0 5 18 0 48 1 32 9 0 16 0 6 34 3 0 5 18 0 49 1 50)}) :bytecode (20 0 0 16 2 48 1 17 5 20 1 0 16 5 48 1 17 6 16 6 52 2 0 1 17 7 16 7 52 4 0 1 52 3 0 1 33 106 0 20 5 0 16 7 48 1 17 8 20 6 0 1 7 0 2 48 2 17 9 20 8 0 16 9 16 8 48 2 5 20 9 0 16 9 51 10 0 48 2 5 20 11 0 16 0 1 12 0 48 2 17 10 16 10 33 12 0 20 13 0 16 9 16 10 48 2 32 7 0 20 14 0 16 9 48 1 17 11 20 15 0 16 1 48 1 5 20 16 0 16 4 51 17 0 1 1 1 11 1 3 49 2 32 1 0 2 50)} "handle-html-response" {:upvalue-count 0 :arity 5 :constants ("dom-parse-html-document" "dom-get-attr" "sx-select" "dispose-islands-in" "dom-create-element" "div" "dom-set-inner-html" "dom-body-inner-html" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 1 16 2 48 3 5 20 2 0 16 0 49 1 50)} "hoist-head-elements" "select-from-container" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "log-info" "str" "swap-root: " "dom-tag-name" "nil" " target: " "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 17 0 20 1 0 1 3 0 16 0 33 10 0 20 4 0 16 0 48 1 32 3 0 1 5 0 1 6 0 20 4 0 18 0 48 1 52 2 0 4 48 1 5 20 7 0 16 0 6 34 3 0 5 18 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "children-to-fragment" "post-swap") :bytecode (20 0 0 18 0 20 1 0 18 1 48 1 18 2 48 3 5 20 2 0 18 0 49 1 50)}) :bytecode (20 0 0 16 2 48 1 17 5 16 5 33 164 0 20 1 0 16 0 1 2 0 48 2 17 6 20 3 0 16 1 48 1 5 16 6 33 75 0 20 4 0 1 5 0 2 48 2 17 7 20 6 0 16 7 20 7 0 16 5 48 1 48 2 5 20 8 0 16 7 51 9 0 48 2 5 20 10 0 16 7 48 1 5 20 11 0 16 7 16 6 48 2 17 8 20 12 0 16 4 51 13 0 1 1 1 8 1 3 49 2 32 61 0 20 4 0 1 5 0 2 48 2 17 7 20 6 0 16 7 20 7 0 16 5 48 1 48 2 5 20 8 0 16 7 51 9 0 48 2 5 20 10 0 16 7 48 1 5 20 12 0 16 4 51 14 0 1 1 1 7 1 3 49 2 32 1 0 2 50)} "handle-retry" {:upvalue-count 0 :arity 5 :constants ("dom-get-attr" "sx-retry" "parse-retry-spec" "data-sx-retry-ms" "get" "start-ms" "parse-int" "dom-set-attr" "str" "next-retry-ms" "cap-ms" "set-timeout" {:upvalue-count 5 :arity 0 :constants ("do-fetch") :bytecode (20 0 0 18 0 18 1 18 2 18 3 18 4 49 5 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 5 20 2 0 16 5 48 1 17 6 16 6 33 97 0 20 0 0 16 0 1 3 0 48 2 6 34 10 0 5 16 6 1 5 0 52 4 0 2 17 7 16 7 16 6 1 5 0 52 4 0 2 52 6 0 2 17 8 20 7 0 16 0 1 3 0 20 9 0 16 8 16 6 1 10 0 52 4 0 2 48 2 52 8 0 1 48 3 5 20 11 0 51 12 0 1 0 1 1 1 2 1 3 1 4 16 8 49 2 32 1 0 2 50)} "bind-triggers" {:upvalue-count 0 :arity 2 :constants ("parse-trigger-spec" "dom-get-attr" "sx-trigger" "default-trigger" "dom-tag-name" "for-each" {:upvalue-count 2 :arity 1 :constants ("classify-trigger" "get" "modifiers" "=" "poll" "set-interval" {:upvalue-count 2 :arity 0 :constants ("host-get" "isConnected" "execute-request" "clear-interval" "log-info" "poll stopped: element removed") :bytecode (20 0 0 18 0 1 1 0 48 2 33 12 0 20 2 0 18 0 2 2 49 3 32 16 0 20 3 0 18 1 48 1 5 20 4 0 1 5 0 49 1 50)} "interval" "intersect" "observe-intersection" {:upvalue-count 1 :arity 0 :constants ("execute-request") :bytecode (20 0 0 18 0 2 2 49 3 50)} "delay" "load" "set-timeout" 0 "revealed" "event" "bind-event") :bytecode (20 0 0 16 0 48 1 17 1 16 0 1 2 0 52 1 0 2 17 2 16 1 1 4 0 52 3 0 2 33 29 0 2 17 3 20 5 0 51 6 0 0 0 1 3 16 2 1 7 0 52 1 0 2 48 2 17 3 32 152 0 16 1 1 8 0 52 3 0 2 33 25 0 20 9 0 18 0 51 10 0 0 0 4 16 2 1 11 0 52 1 0 2 49 4 32 115 0 16 1 1 12 0 52 3 0 2 33 30 0 20 13 0 51 10 0 0 0 16 2 1 11 0 52 1 0 2 6 34 4 0 5 1 14 0 49 2 32 73 0 16 1 1 15 0 52 3 0 2 33 25 0 20 9 0 18 0 51 10 0 0 0 3 16 2 1 11 0 52 1 0 2 49 4 32 36 0 16 1 1 16 0 52 3 0 2 33 23 0 20 17 0 18 0 16 0 1 16 0 52 1 0 2 16 2 18 1 49 4 32 1 0 2 50)}) :bytecode (20 0 0 20 1 0 16 0 1 2 0 48 2 48 1 6 34 13 0 5 20 3 0 20 4 0 16 0 48 1 48 1 17 2 51 6 0 1 0 1 1 16 2 52 5 0 2 50)} "bind-event" {:upvalue-count 0 :arity 4 :constants ("get" "from" "dom-query" "dom-add-listener" {:upvalue-count 5 :arity 1 :constants ("get" "filter" "host-call" "dom-window" "Function" "event" "call" "changed" "element-value" "=" "not" "click" "event-modifier-key?" "submit" "dom-has-attr?" "href" "prevent-default" "get-verb-info" "method" "GET" "delay" "try-client-route" "url-pathname" "url" "dom-get-attr" "sx-target" "browser-push-state" "browser-scroll-to" 0 "log-info" "str" "sx:route server fetch " "clear-timeout" "set-timeout" {:upvalue-count 1 :arity 0 :constants ("execute-request") :bytecode (20 0 0 18 0 2 2 49 3 50)} "execute-request") :bytecode (18 0 1 1 0 52 0 0 2 33 40 0 20 2 0 20 2 0 20 3 0 48 0 1 4 0 1 5 0 18 0 1 1 0 52 0 0 2 48 4 1 6 0 18 1 16 0 48 4 32 1 0 3 17 1 18 0 1 7 0 52 0 0 2 33 29 0 20 8 0 17 2 16 2 18 2 52 9 0 2 33 6 0 4 17 1 32 4 0 16 2 19 2 32 1 0 2 5 16 1 6 33 26 0 5 18 3 1 11 0 52 9 0 2 6 33 8 0 5 20 12 0 16 0 48 1 52 10 0 1 33 36 1 18 3 1 13 0 52 9 0 2 6 34 25 0 5 18 3 1 11 0 52 9 0 2 6 33 11 0 5 20 14 0 18 1 1 15 0 48 2 33 10 0 20 16 0 16 0 48 1 32 1 0 2 5 20 17 0 18 1 48 1 17 2 18 3 1 11 0 52 9 0 2 6 33 50 0 5 16 2 1 18 0 52 0 0 2 1 19 0 52 9 0 2 6 33 29 0 5 20 14 0 18 1 1 15 0 48 2 6 33 14 0 5 18 0 1 20 0 52 0 0 2 52 10 0 1 17 3 4 17 4 16 3 33 34 0 20 21 0 20 22 0 16 2 1 23 0 52 0 0 2 48 1 20 24 0 18 1 1 25 0 48 2 48 2 17 4 32 1 0 2 5 16 4 33 29 0 20 26 0 16 2 1 23 0 52 0 0 2 48 1 5 20 27 0 1 28 0 1 28 0 49 2 32 84 0 16 3 33 24 0 20 29 0 1 31 0 16 2 1 23 0 52 0 0 2 52 30 0 2 48 1 32 1 0 2 5 18 0 1 20 0 52 0 0 2 33 32 0 20 32 0 18 4 48 1 5 20 33 0 51 34 0 0 1 18 0 1 20 0 52 0 0 2 48 2 19 4 32 9 0 20 35 0 18 1 2 2 49 3 32 1 0 2 50)} "once" "dict") :bytecode (2 17 4 2 17 5 16 2 1 1 0 52 0 0 2 33 17 0 20 2 0 16 2 1 1 0 52 0 0 2 48 1 32 2 0 16 0 17 6 16 6 33 49 0 20 3 0 16 6 16 1 51 4 0 1 2 1 0 1 5 1 1 1 4 16 2 1 5 0 52 0 0 2 33 11 0 1 5 0 3 52 6 0 2 32 1 0 2 49 4 32 1 0 2 50)} "post-swap" {:upvalue-count 0 :arity 1 :constants ("log-info" "str" "post-swap: root=" "dom-tag-name" "nil" "activate-scripts" "sx-process-scripts" "sx-hydrate" "sx-hydrate-islands" "run-post-render-hooks" "process-elements") :bytecode (20 0 0 1 2 0 16 0 33 10 0 20 3 0 16 0 48 1 32 3 0 1 4 0 52 1 0 2 48 1 5 20 5 0 16 0 48 1 5 20 6 0 16 0 48 1 5 20 7 0 16 0 48 1 5 20 8 0 16 0 48 1 5 20 9 0 48 0 5 20 10 0 16 0 49 1 50)} "process-settle-hooks" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-on-settle" "not" "empty?" "sx-parse" "for-each" {:upvalue-count 0 :arity 1 :constants ("eval-expr" "env-extend" "dict") :bytecode (20 0 0 16 0 20 1 0 52 2 0 0 48 1 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 6 33 11 0 5 16 1 52 3 0 1 52 2 0 1 33 21 0 20 4 0 16 1 48 1 17 2 51 6 0 16 2 52 5 0 2 32 1 0 2 50)} "activate-scripts" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "script" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "dom-has-attr?" "data-components" "data-sx-activated" "create-script-clone" "dom-set-attr" "true" "dom-replace-child" "dom-parent") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 15 0 5 20 1 0 16 0 1 3 0 48 2 52 0 0 1 33 42 0 20 4 0 16 0 48 1 17 1 20 5 0 16 1 1 3 0 1 6 0 48 3 5 20 7 0 20 8 0 16 0 48 1 16 1 16 0 49 3 32 1 0 2 50)}) :bytecode (16 0 33 24 0 20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 16 1 52 2 0 2 32 1 0 2 50)} "process-oob-swaps" {:upvalue-count 0 :arity 2 :constants ("find-oob-swaps" "for-each" {:upvalue-count 1 :arity 1 :constants ("get" "target-id" "dom-query-by-id" "element" "swap-type" "dom-parent" "dom-remove-child") :bytecode (16 0 1 1 0 52 0 0 2 17 1 20 2 0 16 1 48 1 17 2 16 0 1 3 0 52 0 0 2 17 3 16 0 1 4 0 52 0 0 2 17 4 20 5 0 16 3 48 1 33 17 0 20 6 0 20 5 0 16 3 48 1 16 3 48 2 32 1 0 2 5 16 2 33 13 0 18 0 16 2 16 3 16 4 49 3 32 1 0 2 50)}) :bytecode (20 0 0 16 0 48 1 17 2 51 2 0 1 1 16 2 52 1 0 2 50)} "hoist-head-elements" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("dom-parent" "dom-remove-child" "dom-append-to-head") :bytecode (20 0 0 16 0 48 1 33 17 0 20 1 0 20 0 0 16 0 48 1 16 0 48 2 32 1 0 2 5 20 2 0 16 0 49 1 50)} "dom-query-all" "style[data-sx-css]" "link[rel=\"stylesheet\"]") :bytecode (51 1 0 20 2 0 16 0 1 3 0 48 2 52 0 0 2 5 51 1 0 20 2 0 16 0 1 4 0 48 2 52 0 0 2 50)} "process-boosted" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("boost-descendants") :bytecode (20 0 0 16 0 49 1 50)} "dom-query-all" "dom-body" "[sx-boost]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "boost-descendants" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-boost" "for-each" {:upvalue-count 1 :arity 1 :constants ("not" "is-processed?" "boost" "should-boost-link?" "mark-processed!" "dom-has-attr?" "sx-target" "=" "true" "dom-set-attr" "sx-swap" "innerHTML" "sx-push-url" "bind-client-route-link" "dom-get-attr" "href") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 48 1 33 160 0 20 4 0 16 0 1 2 0 48 2 5 20 5 0 16 0 1 6 0 48 2 52 0 0 1 6 33 21 0 5 18 0 6 33 14 0 5 18 0 1 8 0 52 7 0 2 52 0 0 1 33 15 0 20 9 0 16 0 1 6 0 18 0 48 3 32 1 0 2 5 20 5 0 16 0 1 10 0 48 2 52 0 0 1 33 16 0 20 9 0 16 0 1 10 0 1 11 0 48 3 32 1 0 2 5 20 5 0 16 0 1 12 0 48 2 52 0 0 1 33 16 0 20 9 0 16 0 1 12 0 1 8 0 48 3 32 1 0 2 5 20 13 0 16 0 20 14 0 16 0 1 15 0 48 2 49 2 32 1 0 2 50)} "dom-query-all" "a[href]" {:upvalue-count 1 :arity 1 :constants ("not" "is-processed?" "boost" "should-boost-form?" "mark-processed!" "upper" "dom-get-attr" "method" "GET" "action" "browser-location-href" "dom-has-attr?" "sx-target" "=" "true" "dom-set-attr" "sx-swap" "innerHTML" "bind-boost-form") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 6 33 8 0 5 20 3 0 16 0 48 1 33 165 0 20 4 0 16 0 1 2 0 48 2 5 20 6 0 16 0 1 7 0 48 2 6 34 4 0 5 1 8 0 52 5 0 1 17 1 20 6 0 16 0 1 9 0 48 2 6 34 6 0 5 20 10 0 48 0 17 2 20 11 0 16 0 1 12 0 48 2 52 0 0 1 6 33 21 0 5 18 0 6 33 14 0 5 18 0 1 14 0 52 13 0 2 52 0 0 1 33 15 0 20 15 0 16 0 1 12 0 18 0 48 3 32 1 0 2 5 20 11 0 16 0 1 16 0 48 2 52 0 0 1 33 16 0 20 15 0 16 0 1 16 0 1 17 0 48 3 32 1 0 2 5 20 18 0 16 0 16 1 16 2 49 3 32 1 0 2 50)} "form") :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 51 3 0 1 1 20 4 0 16 0 1 5 0 48 2 52 2 0 2 5 51 6 0 1 1 20 4 0 16 0 1 7 0 48 2 52 2 0 2 50)} "_page-data-cache" "_page-data-cache-ttl" 30000 "page-data-cache-key" {:upvalue-count 0 :arity 2 :constants ("nil?" "empty?" "keys" "list" "for-each" {:upvalue-count 2 :arity 1 :constants ("append!" "str" "=" "get") :bytecode (20 0 0 18 0 16 0 1 2 0 18 1 16 0 52 3 0 2 52 1 0 3 49 2 50)} "str" ":" "join" "&") :bytecode (16 0 17 2 16 1 52 0 0 1 6 34 11 0 5 16 1 52 2 0 1 52 1 0 1 33 5 0 16 2 32 42 0 52 3 0 0 17 3 51 5 0 1 3 1 1 16 1 52 2 0 1 52 4 0 2 5 16 2 1 7 0 1 9 0 16 3 52 8 0 2 52 6 0 3 50)} "page-data-cache-get" {:upvalue-count 0 :arity 1 :constants ("get" "_page-data-cache" "nil?" ">" "-" "now-ms" "ts" "_page-data-cache-ttl" "dict-set!" "data") :bytecode (20 1 0 16 0 52 0 0 2 17 1 16 1 52 2 0 1 33 4 0 2 32 52 0 20 5 0 48 0 16 1 1 6 0 52 0 0 2 52 4 0 2 20 7 0 52 3 0 2 33 15 0 20 1 0 16 0 2 52 8 0 3 5 2 32 9 0 16 1 1 9 0 52 0 0 2 50)} "page-data-cache-set" {:upvalue-count 0 :arity 2 :constants ("dict-set!" "_page-data-cache" "data" "ts" "now-ms") :bytecode (20 1 0 16 0 1 2 0 16 1 1 3 0 20 4 0 48 0 65 2 0 52 0 0 3 50)} "invalidate-page-cache" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("=" "starts-with?" "str" ":" "dict-set!" "_page-data-cache") :bytecode (16 0 18 0 52 0 0 2 6 34 16 0 5 16 0 18 0 1 3 0 52 2 0 2 52 1 0 2 33 13 0 20 5 0 16 0 2 52 4 0 3 32 1 0 2 50)} "keys" "_page-data-cache" "sw-post-message" "type" "invalidate" "page" "log-info" "str" "sx:cache invalidate ") :bytecode (51 1 0 1 0 20 3 0 52 2 0 1 52 0 0 2 5 20 4 0 1 5 0 1 6 0 1 7 0 16 0 65 2 0 48 1 5 20 8 0 1 10 0 16 0 52 9 0 2 49 1 50)} "invalidate-all-page-cache" {:upvalue-count 0 :arity 0 :constants ("dict" "_page-data-cache" "sw-post-message" "type" "invalidate" "page" "*" "log-info" "sx:cache invalidate *") :bytecode (52 0 0 0 21 1 0 5 20 2 0 1 3 0 1 4 0 1 5 0 1 6 0 65 2 0 48 1 5 20 7 0 1 8 0 49 1 50)} "update-page-cache" {:upvalue-count 0 :arity 2 :constants ("page-data-cache-key" "dict" "page-data-cache-set" "log-info" "str" "sx:cache update ") :bytecode (20 0 0 16 0 52 1 0 0 48 2 17 2 20 2 0 16 2 16 1 48 2 5 20 3 0 1 5 0 16 0 52 4 0 2 49 1 50)} "process-cache-directives" {:upvalue-count 0 :arity 3 :constants ("dom-get-attr" "sx-cache-invalidate" "=" "*" "invalidate-all-page-cache" "invalidate-page-cache" "get" "cache-invalidate" "cache-update" "parse-sx-data" "update-page-cache") :bytecode (20 0 0 16 0 1 1 0 48 2 17 3 16 3 33 30 0 16 3 1 3 0 52 2 0 2 33 8 0 20 4 0 48 0 32 7 0 20 5 0 16 3 48 1 32 1 0 2 5 16 1 1 7 0 52 6 0 2 17 3 16 3 33 30 0 16 3 1 3 0 52 2 0 2 33 8 0 20 4 0 48 0 32 7 0 20 5 0 16 3 48 1 32 1 0 2 5 16 1 1 8 0 52 6 0 2 17 3 16 3 33 30 0 20 9 0 16 2 48 1 17 4 16 4 33 12 0 20 10 0 16 3 16 4 49 2 32 1 0 2 32 1 0 2 50)} "_optimistic-snapshots" "optimistic-cache-update" {:upvalue-count 0 :arity 2 :constants ("page-data-cache-get" "dict-set!" "_optimistic-snapshots" "page-data-cache-set") :bytecode (20 0 0 16 0 48 1 17 2 16 2 33 35 0 16 1 16 2 48 1 17 3 20 2 0 16 0 16 2 52 1 0 3 5 20 3 0 16 0 16 3 48 2 5 16 3 32 1 0 2 50)} "optimistic-cache-revert" {:upvalue-count 0 :arity 1 :constants ("get" "_optimistic-snapshots" "page-data-cache-set" "dict-delete!") :bytecode (20 1 0 16 0 52 0 0 2 17 1 16 1 33 25 0 20 2 0 16 0 16 1 48 2 5 20 1 0 16 0 52 3 0 2 5 16 1 32 1 0 2 50)} "optimistic-cache-confirm" {:upvalue-count 0 :arity 1 :constants ("dict-delete!" "_optimistic-snapshots") :bytecode (20 1 0 16 0 52 0 0 2 50)} "submit-mutation" {:upvalue-count 0 :arity 6 :constants ("page-data-cache-key" "optimistic-cache-update" "try-rerender-page" "execute-action" {:upvalue-count 4 :arity 1 :constants ("page-data-cache-set" "optimistic-cache-confirm" "try-rerender-page" "log-info" "str" "sx:optimistic confirmed " "confirmed") :bytecode (16 0 33 12 0 20 0 0 18 0 16 0 48 2 32 1 0 2 5 20 1 0 18 0 48 1 5 16 0 33 14 0 20 2 0 18 1 18 2 16 0 48 3 32 1 0 2 5 20 3 0 1 5 0 18 1 52 4 0 2 48 1 5 18 3 33 10 0 18 3 1 6 0 49 1 32 1 0 2 50)} {:upvalue-count 4 :arity 1 :constants ("optimistic-cache-revert" "try-rerender-page" "log-warn" "str" "sx:optimistic reverted " ": " "reverted") :bytecode (20 0 0 18 0 48 1 17 1 16 1 33 14 0 20 1 0 18 1 18 2 16 1 48 3 32 1 0 2 5 20 2 0 1 4 0 18 1 1 5 0 16 0 52 3 0 4 48 1 5 18 3 33 10 0 18 3 1 6 0 49 1 32 1 0 2 50)}) :bytecode (20 0 0 16 0 16 1 48 2 17 6 20 1 0 16 6 16 4 48 2 17 7 16 7 33 14 0 20 2 0 16 0 16 1 16 7 48 3 32 1 0 2 5 20 3 0 16 2 16 3 51 4 0 1 6 1 0 1 1 1 5 51 5 0 1 6 1 0 1 1 1 5 49 4 50)} "_is-online" "_offline-queue" "list" "offline-is-online?" {:upvalue-count 0 :arity 0 :constants ("_is-online") :bytecode (20 0 0 50)} "offline-set-online!" {:upvalue-count 0 :arity 1 :constants ("_is-online") :bytecode (16 0 21 0 0 50)} "offline-queue-mutation" {:upvalue-count 0 :arity 5 :constants ("page-data-cache-key" "dict" "action" "payload" "page" "params" "timestamp" "now-ms" "status" "pending" "append!" "_offline-queue" "optimistic-cache-update" "try-rerender-page" "log-info" "str" "sx:offline queued " " (" "len" " pending)") :bytecode (20 0 0 16 2 16 3 48 2 17 5 1 2 0 16 0 1 3 0 16 1 1 4 0 16 2 1 5 0 16 3 1 6 0 20 7 0 48 0 1 8 0 1 9 0 52 1 0 12 17 6 20 10 0 20 11 0 16 6 48 2 5 20 12 0 16 5 16 4 48 2 17 7 16 7 33 14 0 20 13 0 16 2 16 3 16 7 48 3 32 1 0 2 5 20 14 0 1 16 0 16 0 1 17 0 20 11 0 52 18 0 1 1 19 0 52 15 0 5 48 1 5 16 6 50)} "offline-sync" {:upvalue-count 0 :arity 0 :constants ("filter" {:upvalue-count 0 :arity 1 :constants ("=" "get" "status" "pending") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 50)} "_offline-queue" "not" "empty?" "log-info" "str" "sx:offline syncing " "len" " mutations" "for-each" {:upvalue-count 0 :arity 1 :constants ("execute-action" "get" "action" "payload" {:upvalue-count 1 :arity 1 :constants ("dict-set!" "status" "synced" "log-info" "str" "sx:offline synced " "get" "action") :bytecode (18 0 1 1 0 1 2 0 52 0 0 3 5 20 3 0 1 5 0 18 0 1 7 0 52 6 0 2 52 4 0 2 49 1 50)} {:upvalue-count 1 :arity 1 :constants ("dict-set!" "status" "failed" "log-warn" "str" "sx:offline sync failed " "get" "action" ": ") :bytecode (18 0 1 1 0 1 2 0 52 0 0 3 5 20 3 0 1 5 0 18 0 1 7 0 52 6 0 2 1 8 0 16 0 52 4 0 4 49 1 50)}) :bytecode (20 0 0 16 0 1 2 0 52 1 0 2 16 0 1 3 0 52 1 0 2 51 4 0 1 0 51 5 0 1 0 49 4 50)}) :bytecode (51 1 0 20 2 0 52 0 0 2 17 0 16 0 52 4 0 1 52 3 0 1 33 34 0 20 5 0 1 7 0 16 0 52 8 0 1 1 9 0 52 6 0 3 48 1 5 51 11 0 16 0 52 10 0 2 32 1 0 2 50)} "offline-pending-count" {:upvalue-count 0 :arity 0 :constants ("len" "filter" {:upvalue-count 0 :arity 1 :constants ("=" "get" "status" "pending") :bytecode (16 0 1 2 0 52 1 0 2 1 3 0 52 0 0 2 50)} "_offline-queue") :bytecode (51 2 0 20 3 0 52 1 0 2 52 0 0 1 50)} "offline-aware-mutation" {:upvalue-count 0 :arity 6 :constants ("_is-online" "submit-mutation" "offline-queue-mutation" "queued") :bytecode (20 0 0 33 20 0 20 1 0 16 0 16 1 16 2 16 3 16 4 16 5 49 6 32 32 0 20 2 0 16 2 16 3 16 0 16 1 16 4 48 5 5 16 5 33 10 0 16 5 1 3 0 49 1 32 1 0 2 50)} "current-page-layout" {:upvalue-count 0 :arity 0 :constants ("url-pathname" "browser-location-href" "find-matching-route" "_page-routes" "nil?" "" "get" "layout") :bytecode (20 0 0 20 1 0 48 0 48 1 17 0 20 2 0 16 0 20 3 0 48 2 17 1 16 1 52 4 0 1 33 6 0 1 5 0 32 17 0 16 1 1 7 0 52 6 0 2 6 34 4 0 5 1 5 0 50)} "swap-rendered-content" {:upvalue-count 0 :arity 3 :constants ("dom-create-element" "div" "dom-append" "process-oob-swaps" {:upvalue-count 0 :arity 3 :constants ("dispose-islands-in" "swap-dom-nodes" "=" "innerHTML" "children-to-fragment" "post-swap") :bytecode (20 0 0 16 0 48 1 5 20 1 0 16 0 16 2 1 3 0 52 2 0 2 33 10 0 20 4 0 16 1 48 1 32 2 0 16 1 16 2 48 3 5 20 5 0 16 0 49 1 50)} "dom-get-attr" "id" "dom-query" "str" "#" "children-to-fragment" "dispose-islands-in" "dom-set-text-content" "" "hoist-head-elements-full" "process-elements" "sx-hydrate-elements" "sx-hydrate-islands" "run-post-render-hooks" "dom-dispatch" "sx:clientRoute" "dict" "pathname" "log-info" "sx:route client ") :bytecode (20 0 0 1 1 0 2 48 2 17 3 20 2 0 16 3 16 1 48 2 5 20 3 0 16 3 51 4 0 48 2 5 20 5 0 16 0 1 6 0 48 2 17 4 16 4 33 19 0 20 7 0 16 3 1 9 0 16 4 52 8 0 2 48 2 32 1 0 2 17 5 16 5 33 10 0 20 10 0 16 5 48 1 32 7 0 20 10 0 16 3 48 1 17 6 20 11 0 16 0 48 1 5 20 12 0 16 0 1 13 0 48 2 5 20 2 0 16 0 16 6 48 2 5 20 14 0 16 0 48 1 5 20 15 0 16 0 48 1 5 20 16 0 16 0 48 1 5 20 17 0 16 0 48 1 5 20 18 0 48 0 5 20 19 0 16 0 1 20 0 1 22 0 16 2 52 21 0 2 48 3 5 20 23 0 1 24 0 16 2 52 8 0 2 49 1 50)} "resolve-route-target" {:upvalue-count 0 :arity 1 :constants ("not" "=" "true" "dom-query") :bytecode (16 0 6 33 14 0 5 16 0 1 2 0 52 1 0 2 52 0 0 1 33 10 0 20 3 0 16 0 49 1 32 1 0 2 50)} "deps-satisfied?" {:upvalue-count 0 :arity 1 :constants ("get" "deps" "loaded-component-names" "nil?" "empty?" "every?" {:upvalue-count 1 :arity 1 :constants ("contains?") :bytecode (18 0 16 0 52 0 0 2 50)}) :bytecode (16 0 1 1 0 52 0 0 2 17 1 20 2 0 48 0 17 2 16 1 52 3 0 1 6 34 7 0 5 16 1 52 4 0 1 33 4 0 3 32 11 0 51 6 0 1 2 16 1 52 5 0 2 50)} "try-client-route" {:upvalue-count 0 :arity 2 :constants ("find-matching-route" "_page-routes" "nil?" "log-info" "str" "sx:route no match (" "len" " routes) " "get" "layout" "" "current-page-layout" "not" "=" "sx:route server (layout: " " -> " ") " "content" "closure" "params" "name" "empty?" "log-warn" "sx:route no content for " "resolve-route-target" "sx:route target not found: " "deps-satisfied?" "sx:route deps miss for " "io-deps" "render-plan" "server" "list" "client" "sx:route plan " " — " " server, " " client" "register-io-deps" "stream" "sx:route streaming " "fetch-streaming" "build-request-headers" "loaded-component-names" "_css-hash" "has-data" "page-data-cache-key" "page-data-cache-get" "merge" "sx:route client+cache+async " "try-async-eval-content" {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route cache+async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "try-eval-content" "sx:route cached eval failed for " "sx:route client+cache " "swap-rendered-content" "sx:route client+data " "resolve-page-data" {:upvalue-count 7 :arity 1 :constants ("page-data-cache-set" "merge" "try-async-eval-content" {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route data+async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "try-eval-content" "nil?" "log-warn" "str" "sx:route data eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (20 0 0 18 0 16 0 48 2 5 18 1 18 2 16 0 52 1 0 3 17 1 18 3 33 19 0 20 2 0 18 4 16 1 51 3 0 0 5 0 6 49 3 32 79 0 20 4 0 18 4 16 1 48 2 17 2 16 2 52 5 0 1 33 48 0 20 6 0 1 8 0 18 5 1 9 0 52 7 0 3 48 1 5 20 10 0 18 6 18 5 20 11 0 18 6 20 12 0 48 0 20 13 0 48 3 1 14 0 49 4 32 11 0 20 15 0 18 6 16 2 18 5 49 3 50)} "sx:route client+async " {:upvalue-count 2 :arity 1 :constants ("nil?" "log-warn" "str" "sx:route async eval failed for " " — server fallback" "fetch-and-restore" "build-request-headers" "loaded-component-names" "_css-hash" 0 "swap-rendered-content") :bytecode (16 0 52 0 0 1 33 48 0 20 1 0 1 3 0 18 0 1 4 0 52 2 0 3 48 1 5 20 5 0 18 1 18 0 20 6 0 18 1 20 7 0 48 0 20 8 0 48 3 1 9 0 49 4 32 11 0 20 10 0 18 1 16 0 18 0 49 3 50)} "sx:route server (eval failed) ") :bytecode (20 0 0 16 0 20 1 0 48 2 17 2 16 2 52 2 0 1 33 29 0 20 3 0 1 5 0 20 1 0 52 6 0 1 1 7 0 16 0 52 4 0 4 48 1 5 4 32 233 2 16 2 1 9 0 52 8 0 2 6 34 4 0 5 1 10 0 17 3 20 11 0 48 0 17 4 16 3 16 4 52 13 0 2 52 12 0 1 33 29 0 20 3 0 1 14 0 16 4 1 15 0 16 3 1 16 0 16 0 52 4 0 6 48 1 5 4 32 163 2 16 2 1 17 0 52 8 0 2 17 5 16 2 1 18 0 52 8 0 2 6 34 4 0 5 65 0 0 17 6 16 2 1 19 0 52 8 0 2 17 7 16 2 1 20 0 52 8 0 2 17 8 16 5 52 2 0 1 6 34 7 0 5 16 5 52 21 0 1 33 19 0 20 22 0 1 23 0 16 0 52 4 0 2 48 1 5 4 32 72 2 20 24 0 16 1 48 1 17 9 16 9 52 2 0 1 33 19 0 20 22 0 1 25 0 16 1 52 4 0 2 48 1 5 4 32 35 2 20 26 0 16 2 48 1 52 12 0 1 33 19 0 20 3 0 1 27 0 16 8 52 4 0 2 48 1 5 4 32 2 2 16 2 1 28 0 52 8 0 2 17 10 16 10 6 33 11 0 5 16 10 52 21 0 1 52 12 0 1 17 11 16 2 1 29 0 52 8 0 2 17 12 16 12 33 78 0 16 12 1 30 0 52 8 0 2 6 34 5 0 5 52 31 0 0 17 13 16 12 1 32 0 52 8 0 2 6 34 5 0 5 52 31 0 0 17 14 20 3 0 1 33 0 16 8 1 34 0 16 13 52 6 0 1 1 35 0 16 14 52 6 0 1 1 36 0 52 4 0 7 48 1 32 1 0 2 5 16 11 33 10 0 20 37 0 16 10 48 1 32 1 0 2 5 16 2 1 38 0 52 8 0 2 33 44 0 20 3 0 1 39 0 16 0 52 4 0 2 48 1 5 20 40 0 16 9 16 0 20 41 0 16 9 20 42 0 48 0 20 43 0 48 3 48 3 5 3 32 59 1 16 2 1 44 0 52 8 0 2 33 194 0 20 45 0 16 8 16 7 48 2 17 13 20 46 0 16 13 48 1 17 14 16 14 33 123 0 16 6 16 7 16 14 52 47 0 3 17 15 16 11 33 36 0 20 3 0 1 48 0 16 0 52 4 0 2 48 1 5 20 49 0 16 5 16 15 51 50 0 1 0 1 9 48 3 5 3 32 67 0 20 51 0 16 5 16 15 48 2 17 16 16 16 52 2 0 1 33 19 0 20 22 0 1 52 0 16 0 52 4 0 2 48 1 5 4 32 28 0 20 3 0 1 53 0 16 0 52 4 0 2 48 1 5 20 54 0 16 9 16 16 16 0 48 3 5 3 32 43 0 20 3 0 1 55 0 16 0 52 4 0 2 48 1 5 20 56 0 16 8 16 7 51 57 0 1 13 1 6 1 7 1 11 1 5 1 0 1 9 48 3 5 3 32 109 0 16 11 33 42 0 20 3 0 1 58 0 16 0 52 4 0 2 48 1 5 20 49 0 16 5 16 6 16 7 52 47 0 2 51 59 0 1 0 1 9 48 3 5 3 32 62 0 16 6 16 7 52 47 0 2 17 13 20 51 0 16 5 16 13 48 2 17 14 16 14 52 2 0 1 33 19 0 20 3 0 1 60 0 16 0 52 4 0 2 48 1 5 4 32 13 0 20 54 0 16 9 16 14 16 0 48 3 5 3 50)} "bind-client-route-link" {:upvalue-count 0 :arity 2 :constants ("bind-client-route-click" {:upvalue-count 2 :arity 0 :constants ("bind-boost-link") :bytecode (20 0 0 18 0 18 1 49 2 50)}) :bytecode (20 0 0 16 0 16 1 51 1 0 1 0 1 1 49 3 50)} "process-sse" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "sse" "mark-processed!" "bind-sse") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 21 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 49 1 32 1 0 2 50)} "dom-query-all" "dom-body" "[sx-sse]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "bind-sse" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-sse" "event-source-connect" "parse-sse-swap" "event-source-listen" {:upvalue-count 1 :arity 1 :constants ("bind-sse-swap") :bytecode (20 0 0 18 0 16 0 49 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 37 0 20 2 0 16 1 16 0 48 2 17 2 20 3 0 16 0 48 1 17 3 20 4 0 16 2 16 3 51 5 0 1 0 49 3 32 1 0 2 50)} "bind-sse-swap" {:upvalue-count 0 :arity 2 :constants ("resolve-target" "parse-swap-spec" "dom-get-attr" "sx-swap" "dom-has-class?" "dom-body" "sx-transitions" "get" "style" "transition" "trim" "not" "empty?" "dispose-islands-in" "starts-with?" "(" "sx-render" "dom-create-element" "div" "dom-append" "with-transition" {:upvalue-count 3 :arity 0 :constants ("swap-dom-nodes" "children-to-fragment" "post-swap") :bytecode (20 0 0 18 0 20 1 0 18 1 48 1 18 2 48 3 5 20 2 0 18 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("swap-html-string" "post-swap") :bytecode (20 0 0 18 0 18 1 18 2 48 3 5 20 1 0 18 0 49 1 50)}) :bytecode (20 0 0 16 0 48 1 17 2 20 1 0 20 2 0 16 0 1 3 0 48 2 20 4 0 20 5 0 48 0 1 6 0 48 2 48 2 17 3 16 3 1 8 0 52 7 0 2 17 4 16 3 1 9 0 52 7 0 2 17 5 16 1 52 10 0 1 17 6 16 6 52 12 0 1 52 11 0 1 33 88 0 20 13 0 16 2 48 1 5 16 6 1 15 0 52 14 0 2 33 49 0 20 16 0 16 6 48 1 17 7 20 17 0 1 18 0 2 48 2 17 8 20 19 0 16 8 16 7 48 2 5 20 20 0 16 5 51 21 0 1 2 1 8 1 4 49 2 32 16 0 20 20 0 16 5 51 22 0 1 2 1 6 1 4 49 2 32 1 0 2 50)} "bind-inline-handlers" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 0 :arity 1 :constants ("for-each" {:upvalue-count 1 :arity 1 :constants ("first" "nth" 1 "starts-with?" "sx-on:" "slice" 6 "after" "before" "str" "sx:" "not" "is-processed?" "on:" "mark-processed!" "dom-on" "contains?" "." {:upvalue-count 2 :arity 1 :constants ("host-call" "dom-window" "Function" "event" "call") :bytecode (20 0 0 20 0 0 20 1 0 48 0 1 2 0 1 3 0 18 0 48 4 1 4 0 18 1 16 0 49 4 50)} "parse" {:upvalue-count 2 :arity 1 :constants ("make-env" "env-bind!" "event" "this" "detail" "event-detail" "for-each" {:upvalue-count 1 :arity 1 :constants ("eval-expr") :bytecode (20 0 0 16 0 18 0 49 2 50)}) :bytecode (20 0 0 48 0 17 1 20 1 0 16 1 1 2 0 16 0 48 3 5 20 1 0 16 1 1 3 0 18 0 48 3 5 20 1 0 16 1 1 4 0 20 5 0 16 0 48 1 48 3 5 51 7 0 1 1 18 1 52 6 0 2 50)}) :bytecode (16 0 52 0 0 1 17 1 16 0 1 2 0 52 1 0 2 17 2 16 1 1 4 0 52 3 0 2 33 147 0 16 1 1 6 0 52 5 0 2 17 4 16 4 1 7 0 52 3 0 2 6 34 10 0 5 16 4 1 8 0 52 3 0 2 33 12 0 1 10 0 16 4 52 9 0 2 32 2 0 16 4 17 3 20 12 0 18 0 1 13 0 16 3 52 9 0 2 48 2 52 11 0 1 33 67 0 20 14 0 18 0 1 13 0 16 3 52 9 0 2 48 2 5 20 15 0 18 0 16 3 16 2 1 17 0 52 16 0 2 33 10 0 51 18 0 1 2 0 0 32 16 0 20 19 0 16 2 48 1 17 4 51 20 0 0 0 1 4 49 3 32 1 0 2 32 1 0 2 50)} "dom-attr-list") :bytecode (51 1 0 1 0 20 2 0 16 0 48 1 52 0 0 2 50)} "dom-query-all" "dom-body" "[sx-on\\:]") :bytecode (51 1 0 20 2 0 16 0 6 34 6 0 5 20 3 0 48 0 1 4 0 48 2 52 0 0 2 50)} "bind-preload-for" {:upvalue-count 0 :arity 1 :constants ("dom-get-attr" "sx-preload" "=" "mousedown" "list" "touchstart" "mouseover" 0 100 "bind-preload" {:upvalue-count 1 :arity 0 :constants ("get-verb-info" "do-preload" "get" "url" "build-request-headers" "loaded-component-names" "_css-hash") :bytecode (20 0 0 18 0 48 1 17 0 16 0 33 32 0 20 1 0 16 0 1 3 0 52 2 0 2 20 4 0 18 0 20 5 0 48 0 20 6 0 48 3 49 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 1 1 0 48 2 17 1 16 1 33 76 0 16 1 1 3 0 52 2 0 2 33 13 0 1 3 0 1 5 0 52 4 0 2 32 7 0 1 6 0 52 4 0 1 17 2 16 1 1 3 0 52 2 0 2 33 6 0 1 7 0 32 3 0 1 8 0 17 3 20 9 0 16 0 16 2 16 3 51 10 0 1 0 49 4 32 1 0 2 50)} "do-preload" {:upvalue-count 0 :arity 2 :constants ("nil?" "preload-cache-get" "_preload-cache" "fetch-preload") :bytecode (20 1 0 20 2 0 16 0 48 2 52 0 0 1 33 15 0 20 3 0 16 0 16 1 20 2 0 49 3 32 1 0 2 50)} "VERB_SELECTOR" "str" "[sx-get],[sx-post],[sx-put],[sx-delete],[sx-patch]" "process-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "VERB_SELECTOR" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "verb" "mark-processed!" "process-one") :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 21 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 49 1 32 1 0 2 50)} "process-boosted" "process-sse" "bind-inline-handlers" "process-emit-elements") :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 20 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 5 20 5 0 16 0 48 1 5 20 6 0 16 0 48 1 5 20 7 0 16 0 48 1 5 20 8 0 16 0 49 1 50)} "process-one" {:upvalue-count 0 :arity 1 :constants ("get-verb-info" "not" "dom-has-attr?" "sx-disable" "bind-triggers" "bind-preload-for") :bytecode (20 0 0 16 0 48 1 17 1 16 1 33 41 0 20 2 0 16 0 1 3 0 48 2 52 1 0 1 33 20 0 20 4 0 16 0 16 1 48 2 5 20 5 0 16 0 49 1 32 1 0 2 32 1 0 2 50)} "process-emit-elements" {:upvalue-count 0 :arity 1 :constants ("dom-query-all" "dom-body" "[data-sx-emit]" "for-each" {:upvalue-count 0 :arity 1 :constants ("not" "is-processed?" "emit" "mark-processed!" "dom-get-attr" "data-sx-emit" "dom-on" "click" {:upvalue-count 2 :arity 1 :constants ("dom-get-attr" "data-sx-emit-detail" "json-parse" "dict" "dom-dispatch") :bytecode (20 0 0 18 0 1 1 0 48 2 17 1 16 1 33 10 0 20 2 0 16 1 48 1 32 4 0 52 3 0 0 17 2 20 4 0 18 0 18 1 16 2 49 3 50)}) :bytecode (20 1 0 16 0 1 2 0 48 2 52 0 0 1 33 52 0 20 3 0 16 0 1 2 0 48 2 5 20 4 0 16 0 1 5 0 48 2 17 1 16 1 33 20 0 20 6 0 16 0 1 7 0 51 8 0 1 0 1 1 49 3 32 1 0 2 32 1 0 2 50)}) :bytecode (20 0 0 16 0 6 34 6 0 5 20 1 0 48 0 1 2 0 48 2 17 1 51 4 0 16 1 52 3 0 2 50)} "handle-popstate" {:upvalue-count 0 :arity 1 :constants ("browser-location-href" "dom-query" "[sx-boost]" "dom-get-attr" "sx-boost" "not" "=" "true" "#main-panel" "url-pathname" "try-client-route" "browser-scroll-to" 0 "build-request-headers" "loaded-component-names" "_css-hash" "fetch-and-restore") :bytecode (20 0 0 48 0 17 1 20 1 0 1 2 0 48 1 17 2 16 2 33 44 0 20 3 0 16 2 1 4 0 48 2 17 4 16 4 6 33 14 0 5 16 4 1 7 0 52 6 0 2 52 5 0 1 33 5 0 16 4 32 1 0 2 32 1 0 2 17 3 16 3 6 34 4 0 5 1 8 0 17 3 20 1 0 16 3 48 1 17 4 20 9 0 16 1 48 1 17 5 16 4 33 58 0 20 10 0 16 5 16 3 48 2 33 13 0 20 11 0 1 12 0 16 0 49 2 32 30 0 20 13 0 16 4 20 14 0 48 0 20 15 0 48 3 17 6 20 16 0 16 4 16 1 16 6 16 0 49 4 32 1 0 2 50)} "engine-init" {:upvalue-count 0 :arity 0 :constants ("init-css-tracking" "sx-process-scripts" "sx-hydrate" "process-elements") :bytecode (20 0 0 48 0 5 20 1 0 2 48 1 5 20 2 0 2 48 1 5 20 3 0 2 49 1 50)}) :bytecode (52 1 0 0 128 0 0 5 1 3 0 128 2 0 5 51 5 0 128 4 0 5 51 7 0 128 6 0 5 51 9 0 128 8 0 5 51 11 0 128 10 0 5 51 13 0 128 12 0 5 51 15 0 128 14 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 52 1 0 0 128 38 0 5 1 40 0 128 39 0 5 51 42 0 128 41 0 5 51 44 0 128 43 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 52 1 0 0 128 55 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 3 128 64 0 5 52 66 0 0 128 65 0 5 51 68 0 128 67 0 5 51 70 0 128 69 0 5 51 72 0 128 71 0 5 51 74 0 128 73 0 5 51 76 0 128 75 0 5 51 78 0 128 77 0 5 51 80 0 128 79 0 5 51 82 0 128 81 0 5 51 84 0 128 83 0 5 51 86 0 128 85 0 5 51 88 0 128 87 0 5 51 90 0 128 89 0 5 51 92 0 128 91 0 5 51 94 0 128 93 0 5 51 96 0 128 95 0 5 51 98 0 128 97 0 5 51 100 0 128 99 0 5 51 102 0 128 101 0 5 1 105 0 52 104 0 1 128 103 0 5 51 107 0 128 106 0 5 51 109 0 128 108 0 5 51 111 0 128 110 0 5 51 113 0 128 112 0 5 51 115 0 128 114 0 50))) diff --git a/web/engine.sx b/web/engine.sx index 3e0c5e70..5c94e9b3 100644 --- a/web/engine.sx +++ b/web/engine.sx @@ -63,7 +63,26 @@ (starts-with? tok "from:") (dict-set! mods "from" (slice tok 5)))) (rest tokens)) - (dict "event" (first tokens) "modifiers" mods)))))) + (let + ((raw-event (first tokens))) + (let + ((bracket-idx (index-of raw-event "["))) + (if + (>= bracket-idx 0) + (do + (dict-set! + mods + "filter" + (slice + raw-event + (+ bracket-idx 1) + (- (len raw-event) 1))) + (dict + "event" + (slice raw-event 0 bracket-idx) + "modifiers" + mods)) + (dict "event" raw-event "modifiers" mods))))))))) raw-parts)))))) (define diff --git a/web/orchestration.sx b/web/orchestration.sx index 63df142e..82a3ec26 100644 --- a/web/orchestration.sx +++ b/web/orchestration.sx @@ -462,7 +462,7 @@ (fn (e) (let - ((should-fire true)) + ((should-fire (if (get mods "filter") (host-call (host-call (dom-window) "Function" "event" (get mods "filter")) "call" el e) true))) (when (get mods "changed") (let @@ -1385,25 +1385,37 @@ (when (starts-with? name "sx-on:") (let - ((event-name (slice name 6))) + ((event-name (let ((raw (slice name 6))) (if (or (starts-with? raw "after") (starts-with? raw "before")) (str "sx:" raw) raw)))) (when (not (is-processed? el (str "on:" event-name))) (mark-processed! el (str "on:" event-name)) - (let - ((exprs (sx-parse body))) - (dom-on - el - event-name + (dom-on + el + event-name + (if + (contains? body ".") (fn (e) - (let - ((handler-env (env-extend (dict)))) - (env-bind! handler-env "event" e) - (env-bind! handler-env "this" el) - (env-bind! handler-env "detail" (event-detail e)) - (for-each - (fn (expr) (eval-expr expr handler-env)) - exprs)))))))))) + (host-call + (host-call (dom-window) "Function" "event" body) + "call" + el + e)) + (let + ((exprs (parse body))) + (fn + (e) + (let + ((handler-env (make-env))) + (env-bind! handler-env "event" e) + (env-bind! handler-env "this" el) + (env-bind! + handler-env + "detail" + (event-detail e)) + (for-each + (fn (expr) (eval-expr expr handler-env)) + exprs))))))))))) (dom-attr-list el))) (dom-query-all (or root (dom-body)) "[sx-on\\:]"))))