Remove debug logging from sx_browser.ml and sx-platform.js
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -57,7 +57,6 @@
|
||||
var obj = args[0], method = args[1];
|
||||
var callArgs = [];
|
||||
for (var i = 2; i < args.length; i++) callArgs.push(args[i]);
|
||||
if (method === "addEventListener") console.log("[host-call] addEventListener args:", callArgs.map(a => typeof a === "function" ? "fn:" + (a.__host_callback ? "HOST_CB" : "other") : typeof a));
|
||||
if (obj == null) {
|
||||
// Global function call
|
||||
var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method];
|
||||
@@ -160,9 +159,7 @@
|
||||
if (fn && fn.__sx_handle !== undefined) {
|
||||
var wrappedFn = function() {
|
||||
var a = Array.prototype.slice.call(arguments);
|
||||
console.log("[host-callback] FIRED handle=" + fn.__sx_handle);
|
||||
var r = K.callFn(fn, a);
|
||||
console.log("[host-callback] callFn returned suspended=" + !!(r && r.suspended));
|
||||
if (window._driveAsync) window._driveAsync(r);
|
||||
return r;
|
||||
};
|
||||
|
||||
@@ -91,9 +91,7 @@ let rec value_to_js (v : value) : Js.Unsafe.any =
|
||||
| Dict d ->
|
||||
(* Check for __host_handle — return original JS object *)
|
||||
(match Hashtbl.find_opt d "__host_handle" with
|
||||
| Some (Number n) ->
|
||||
Printf.eprintf "[value_to_js] Dict→host_get_js handle=%d\n%!" (int_of_float n);
|
||||
host_get_js (int_of_float n)
|
||||
| Some (Number n) -> host_get_js (int_of_float n)
|
||||
| _ ->
|
||||
let obj = Js.Unsafe.obj [||] in
|
||||
Js.Unsafe.set obj (Js.string "_type") (Js.string "dict");
|
||||
@@ -171,8 +169,6 @@ and js_to_value (js : Js.Unsafe.any) : value =
|
||||
| "function" ->
|
||||
let h = Js.Unsafe.get js (Js.string "__sx_handle") in
|
||||
let has_host_cb = Js.to_bool (Js.Unsafe.coerce (Js.Unsafe.get js (Js.string "__host_callback"))) in
|
||||
if has_host_cb then
|
||||
Printf.eprintf "[js_to_value] fn has __host_callback! Storing as host obj\n%!";
|
||||
if not (Js.Unsafe.equals h Js.undefined) && not has_host_cb then
|
||||
get_handle (Js.float_of_number (Js.Unsafe.coerce h) |> int_of_float)
|
||||
else
|
||||
@@ -181,7 +177,6 @@ and js_to_value (js : Js.Unsafe.any) : value =
|
||||
This preserves wrappers like _driveAsync that host-callback
|
||||
attaches for IO suspension handling. *)
|
||||
let id = host_put js in
|
||||
Printf.eprintf "[js_to_value] plain JS fn → host_object id=%d\n%!" id;
|
||||
let d = Hashtbl.create 2 in
|
||||
Hashtbl.replace d "__host_handle" (Number (float_of_int id));
|
||||
Dict d
|
||||
|
||||
@@ -57,7 +57,6 @@
|
||||
var obj = args[0], method = args[1];
|
||||
var callArgs = [];
|
||||
for (var i = 2; i < args.length; i++) callArgs.push(args[i]);
|
||||
if (method === "addEventListener") console.log("[host-call] addEventListener args:", callArgs.map(a => typeof a === "function" ? "fn:" + (a.__host_callback ? "HOST_CB" : "other") : typeof a));
|
||||
if (obj == null) {
|
||||
// Global function call
|
||||
var fn = typeof globalThis !== "undefined" ? globalThis[method] : window[method];
|
||||
@@ -160,9 +159,7 @@
|
||||
if (fn && fn.__sx_handle !== undefined) {
|
||||
var wrappedFn = function() {
|
||||
var a = Array.prototype.slice.call(arguments);
|
||||
console.log("[host-callback] FIRED handle=" + fn.__sx_handle);
|
||||
var r = K.callFn(fn, a);
|
||||
console.log("[host-callback] callFn returned suspended=" + !!(r && r.suspended));
|
||||
if (window._driveAsync) window._driveAsync(r);
|
||||
return r;
|
||||
};
|
||||
|
||||
@@ -1,231 +1,254 @@
|
||||
(define-library (sx browser)
|
||||
(export browser-location-href browser-location-pathname browser-location-origin browser-same-origin? url-pathname browser-push-state browser-replace-state browser-reload browser-navigate local-storage-get local-storage-set local-storage-remove set-timeout set-interval clear-timeout clear-interval request-animation-frame fetch-request new-abort-controller controller-signal controller-abort promise-then promise-resolve promise-delayed browser-confirm browser-prompt browser-media-matches? json-parse log-info log-warn console-log now-ms schedule-idle set-cookie get-cookie)
|
||||
(define-library
|
||||
(sx browser)
|
||||
(export
|
||||
browser-location-href
|
||||
browser-location-pathname
|
||||
browser-location-origin
|
||||
browser-same-origin?
|
||||
url-pathname
|
||||
browser-push-state
|
||||
browser-replace-state
|
||||
browser-reload
|
||||
browser-navigate
|
||||
local-storage-get
|
||||
local-storage-set
|
||||
local-storage-remove
|
||||
set-timeout
|
||||
set-interval
|
||||
clear-timeout
|
||||
clear-interval
|
||||
request-animation-frame
|
||||
fetch-request
|
||||
new-abort-controller
|
||||
controller-signal
|
||||
controller-abort
|
||||
promise-then
|
||||
promise-resolve
|
||||
promise-delayed
|
||||
browser-confirm
|
||||
browser-prompt
|
||||
browser-media-matches?
|
||||
json-parse
|
||||
json-stringify
|
||||
log-info
|
||||
log-warn
|
||||
console-log
|
||||
now-ms
|
||||
schedule-idle
|
||||
set-cookie
|
||||
get-cookie)
|
||||
(begin
|
||||
|
||||
(define
|
||||
browser-location-href
|
||||
(fn () (host-get (host-get (dom-window) "location") "href")))
|
||||
|
||||
(define
|
||||
browser-location-pathname
|
||||
(fn () (host-get (host-get (dom-window) "location") "pathname")))
|
||||
|
||||
(define
|
||||
browser-location-origin
|
||||
(fn () (host-get (host-get (dom-window) "location") "origin")))
|
||||
|
||||
(define
|
||||
browser-same-origin?
|
||||
(fn (url) (starts-with? url (browser-location-origin))))
|
||||
|
||||
(define
|
||||
url-pathname
|
||||
(fn
|
||||
(url)
|
||||
(host-get (host-new "URL" url (browser-location-origin)) "pathname")))
|
||||
|
||||
(define
|
||||
browser-push-state
|
||||
(fn
|
||||
(url-or-state title url)
|
||||
(if
|
||||
(nil? title)
|
||||
(host-call
|
||||
(host-get (dom-window) "history")
|
||||
"pushState"
|
||||
nil
|
||||
""
|
||||
url-or-state)
|
||||
(host-call
|
||||
(host-get (dom-window) "history")
|
||||
"pushState"
|
||||
url-or-state
|
||||
title
|
||||
url))))
|
||||
|
||||
(define
|
||||
browser-replace-state
|
||||
(fn
|
||||
(url-or-state title url)
|
||||
(if
|
||||
(nil? title)
|
||||
(host-call
|
||||
(host-get (dom-window) "history")
|
||||
"replaceState"
|
||||
nil
|
||||
""
|
||||
url-or-state)
|
||||
(host-call
|
||||
(host-get (dom-window) "history")
|
||||
"replaceState"
|
||||
url-or-state
|
||||
title
|
||||
url))))
|
||||
|
||||
(define
|
||||
browser-reload
|
||||
(fn () (host-call (host-get (dom-window) "location") "reload")))
|
||||
|
||||
(define
|
||||
browser-navigate
|
||||
(fn (url) (host-set! (host-get (dom-window) "location") "href" url)))
|
||||
|
||||
(define
|
||||
local-storage-get
|
||||
(fn
|
||||
(key)
|
||||
(host-call (host-get (dom-window) "localStorage") "getItem" key)))
|
||||
|
||||
(define
|
||||
local-storage-set
|
||||
(fn
|
||||
(key val)
|
||||
(host-call (host-get (dom-window) "localStorage") "setItem" key val)))
|
||||
|
||||
(define
|
||||
local-storage-remove
|
||||
(fn
|
||||
(key)
|
||||
(host-call (host-get (dom-window) "localStorage") "removeItem" key)))
|
||||
|
||||
(define
|
||||
set-timeout
|
||||
(fn
|
||||
(fn-val ms)
|
||||
(host-call (dom-window) "setTimeout" (host-callback fn-val) ms)))
|
||||
|
||||
(define
|
||||
set-interval
|
||||
(fn
|
||||
(fn-val ms)
|
||||
(host-call (dom-window) "setInterval" (host-callback fn-val) ms)))
|
||||
|
||||
(define clear-timeout (fn (id) (host-call (dom-window) "clearTimeout" id)))
|
||||
|
||||
(define
|
||||
clear-interval
|
||||
(fn (id) (host-call (dom-window) "clearInterval" id)))
|
||||
|
||||
(define
|
||||
request-animation-frame
|
||||
(fn
|
||||
(fn-val)
|
||||
(host-call (dom-window) "requestAnimationFrame" (host-callback fn-val))))
|
||||
|
||||
(define
|
||||
fetch-request
|
||||
(fn (url opts) (host-call (dom-window) "fetch" url opts)))
|
||||
|
||||
(define new-abort-controller (fn () (host-new "AbortController")))
|
||||
|
||||
(define controller-signal (fn (controller) (host-get controller "signal")))
|
||||
|
||||
(define controller-abort (fn (controller) (host-call controller "abort")))
|
||||
|
||||
(define
|
||||
promise-then
|
||||
(fn
|
||||
(p on-resolve on-reject)
|
||||
(let
|
||||
((cb-resolve (host-callback on-resolve))
|
||||
(cb-reject (if on-reject (host-callback on-reject) nil)))
|
||||
(if
|
||||
cb-reject
|
||||
(host-call (host-call p "then" cb-resolve) "catch" cb-reject)
|
||||
(host-call p "then" cb-resolve)))))
|
||||
|
||||
(define
|
||||
promise-resolve
|
||||
(fn (val) (host-call (host-global "Promise") "resolve" val)))
|
||||
|
||||
(define
|
||||
promise-delayed
|
||||
(fn
|
||||
(ms val)
|
||||
(host-new
|
||||
"Promise"
|
||||
(host-callback
|
||||
(fn
|
||||
(resolve)
|
||||
(set-timeout (fn () (host-call resolve "call" nil val)) ms))))))
|
||||
|
||||
(define browser-confirm (fn (msg) (host-call (dom-window) "confirm" msg)))
|
||||
|
||||
(define
|
||||
browser-prompt
|
||||
(fn (msg default) (host-call (dom-window) "prompt" msg default)))
|
||||
|
||||
(define
|
||||
browser-media-matches?
|
||||
(fn
|
||||
(query)
|
||||
(host-get (host-call (dom-window) "matchMedia" query) "matches")))
|
||||
|
||||
(define json-parse (fn (s) (host-call (host-global "JSON") "parse" s)))
|
||||
|
||||
(define
|
||||
log-info
|
||||
(fn (msg) (host-call (host-global "console") "log" (str "[sx] " msg))))
|
||||
|
||||
(define
|
||||
log-warn
|
||||
(fn (msg) (host-call (host-global "console") "warn" (str "[sx] " msg))))
|
||||
|
||||
(define
|
||||
console-log
|
||||
(fn (msg) (host-call (host-global "console") "log" (str "[sx] " msg))))
|
||||
|
||||
(define now-ms (fn () (host-call (host-global "Date") "now")))
|
||||
|
||||
(define
|
||||
schedule-idle
|
||||
(fn
|
||||
(f)
|
||||
(let
|
||||
((cb (host-callback (fn (_deadline) (f)))))
|
||||
(if
|
||||
(host-get (dom-window) "requestIdleCallback")
|
||||
(host-call (dom-window) "requestIdleCallback" cb)
|
||||
(set-timeout cb 0)))))
|
||||
|
||||
(define
|
||||
set-cookie
|
||||
(fn
|
||||
(name value days)
|
||||
(let
|
||||
((d (or days 365))
|
||||
(expires
|
||||
(define
|
||||
browser-location-href
|
||||
(fn () (host-get (host-get (dom-window) "location") "href")))
|
||||
(define
|
||||
browser-location-pathname
|
||||
(fn () (host-get (host-get (dom-window) "location") "pathname")))
|
||||
(define
|
||||
browser-location-origin
|
||||
(fn () (host-get (host-get (dom-window) "location") "origin")))
|
||||
(define
|
||||
browser-same-origin?
|
||||
(fn (url) (starts-with? url (browser-location-origin))))
|
||||
(define
|
||||
url-pathname
|
||||
(fn
|
||||
(url)
|
||||
(host-get (host-new "URL" url (browser-location-origin)) "pathname")))
|
||||
(define
|
||||
browser-push-state
|
||||
(fn
|
||||
(url-or-state title url)
|
||||
(if
|
||||
(nil? title)
|
||||
(host-call
|
||||
(host-new
|
||||
"Date"
|
||||
(+ (host-call (host-global "Date") "now") (* d 86400000)))
|
||||
"toUTCString")))
|
||||
(host-set!
|
||||
(dom-document)
|
||||
"cookie"
|
||||
(str
|
||||
name
|
||||
"="
|
||||
(host-call nil "encodeURIComponent" value)
|
||||
";expires="
|
||||
expires
|
||||
";path=/;SameSite=Lax")))))
|
||||
|
||||
(define
|
||||
get-cookie
|
||||
(fn
|
||||
(name)
|
||||
(let
|
||||
((cookies (host-get (dom-document) "cookie"))
|
||||
(match
|
||||
(host-get (dom-window) "history")
|
||||
"pushState"
|
||||
nil
|
||||
""
|
||||
url-or-state)
|
||||
(host-call
|
||||
cookies
|
||||
"match"
|
||||
(host-new "RegExp" (str "(?:^|;\\s*)" name "=([^;]*)")))))
|
||||
(if match (host-call nil "decodeURIComponent" (host-get match 1)) nil))))
|
||||
|
||||
|
||||
))
|
||||
(host-get (dom-window) "history")
|
||||
"pushState"
|
||||
url-or-state
|
||||
title
|
||||
url))))
|
||||
(define
|
||||
browser-replace-state
|
||||
(fn
|
||||
(url-or-state title url)
|
||||
(if
|
||||
(nil? title)
|
||||
(host-call
|
||||
(host-get (dom-window) "history")
|
||||
"replaceState"
|
||||
nil
|
||||
""
|
||||
url-or-state)
|
||||
(host-call
|
||||
(host-get (dom-window) "history")
|
||||
"replaceState"
|
||||
url-or-state
|
||||
title
|
||||
url))))
|
||||
(define
|
||||
browser-reload
|
||||
(fn () (host-call (host-get (dom-window) "location") "reload")))
|
||||
(define
|
||||
browser-navigate
|
||||
(fn (url) (host-set! (host-get (dom-window) "location") "href" url)))
|
||||
(define
|
||||
local-storage-get
|
||||
(fn
|
||||
(key)
|
||||
(host-call (host-get (dom-window) "localStorage") "getItem" key)))
|
||||
(define
|
||||
local-storage-set
|
||||
(fn
|
||||
(key val)
|
||||
(host-call (host-get (dom-window) "localStorage") "setItem" key val)))
|
||||
(define
|
||||
local-storage-remove
|
||||
(fn
|
||||
(key)
|
||||
(host-call (host-get (dom-window) "localStorage") "removeItem" key)))
|
||||
(define
|
||||
set-timeout
|
||||
(fn
|
||||
(fn-val ms)
|
||||
(host-call (dom-window) "setTimeout" (host-callback fn-val) ms)))
|
||||
(define
|
||||
set-interval
|
||||
(fn
|
||||
(fn-val ms)
|
||||
(host-call (dom-window) "setInterval" (host-callback fn-val) ms)))
|
||||
(define
|
||||
clear-timeout
|
||||
(fn (id) (host-call (dom-window) "clearTimeout" id)))
|
||||
(define
|
||||
clear-interval
|
||||
(fn (id) (host-call (dom-window) "clearInterval" id)))
|
||||
(define
|
||||
request-animation-frame
|
||||
(fn
|
||||
(fn-val)
|
||||
(host-call
|
||||
(dom-window)
|
||||
"requestAnimationFrame"
|
||||
(host-callback fn-val))))
|
||||
(define
|
||||
fetch-request
|
||||
(fn (url opts) (host-call (dom-window) "fetch" url opts)))
|
||||
(define new-abort-controller (fn () (host-new "AbortController")))
|
||||
(define
|
||||
controller-signal
|
||||
(fn (controller) (host-get controller "signal")))
|
||||
(define
|
||||
controller-abort
|
||||
(fn (controller) (host-call controller "abort")))
|
||||
(define
|
||||
promise-then
|
||||
(fn
|
||||
(p on-resolve on-reject)
|
||||
(let
|
||||
((cb-resolve (host-callback on-resolve))
|
||||
(cb-reject (if on-reject (host-callback on-reject) nil)))
|
||||
(if
|
||||
cb-reject
|
||||
(host-call (host-call p "then" cb-resolve) "catch" cb-reject)
|
||||
(host-call p "then" cb-resolve)))))
|
||||
(define
|
||||
promise-resolve
|
||||
(fn (val) (host-call (host-global "Promise") "resolve" val)))
|
||||
(define
|
||||
promise-delayed
|
||||
(fn
|
||||
(ms val)
|
||||
(host-new
|
||||
"Promise"
|
||||
(host-callback
|
||||
(fn
|
||||
(resolve)
|
||||
(set-timeout (fn () (host-call resolve "call" nil val)) ms))))))
|
||||
(define
|
||||
browser-confirm
|
||||
(fn (msg) (host-call (dom-window) "confirm" msg)))
|
||||
(define
|
||||
browser-prompt
|
||||
(fn (msg default) (host-call (dom-window) "prompt" msg default)))
|
||||
(define
|
||||
browser-media-matches?
|
||||
(fn
|
||||
(query)
|
||||
(host-get (host-call (dom-window) "matchMedia" query) "matches")))
|
||||
(define json-parse (fn (s) (host-call (host-global "JSON") "parse" s)))
|
||||
(define
|
||||
log-info
|
||||
(fn
|
||||
(msg)
|
||||
(host-call (host-global "console") "log" (str "[sx] " msg))))
|
||||
(define
|
||||
log-warn
|
||||
(fn
|
||||
(msg)
|
||||
(host-call (host-global "console") "warn" (str "[sx] " msg))))
|
||||
(define
|
||||
console-log
|
||||
(fn
|
||||
(msg)
|
||||
(host-call (host-global "console") "log" (str "[sx] " msg))))
|
||||
(define now-ms (fn () (host-call (host-global "Date") "now")))
|
||||
(define
|
||||
schedule-idle
|
||||
(fn
|
||||
(f)
|
||||
(let
|
||||
((cb (host-callback (fn (_deadline) (f)))))
|
||||
(if
|
||||
(host-get (dom-window) "requestIdleCallback")
|
||||
(host-call (dom-window) "requestIdleCallback" cb)
|
||||
(set-timeout cb 0)))))
|
||||
(define
|
||||
set-cookie
|
||||
(fn
|
||||
(name value days)
|
||||
(let
|
||||
((d (or days 365))
|
||||
(expires
|
||||
(host-call
|
||||
(host-new
|
||||
"Date"
|
||||
(+ (host-call (host-global "Date") "now") (* d 86400000)))
|
||||
"toUTCString")))
|
||||
(host-set!
|
||||
(dom-document)
|
||||
"cookie"
|
||||
(str
|
||||
name
|
||||
"="
|
||||
(host-call nil "encodeURIComponent" value)
|
||||
";expires="
|
||||
expires
|
||||
";path=/;SameSite=Lax")))))
|
||||
(define
|
||||
get-cookie
|
||||
(fn
|
||||
(name)
|
||||
(let
|
||||
((cookies (host-get (dom-document) "cookie"))
|
||||
(match
|
||||
(host-call
|
||||
cookies
|
||||
"match"
|
||||
(host-new "RegExp" (str "(?:^|;\\s*)" name "=([^;]*)")))))
|
||||
(if
|
||||
match
|
||||
(host-call nil "decodeURIComponent" (host-get match 1))
|
||||
nil))))))
|
||||
|
||||
;; Re-export to global env
|
||||
(define
|
||||
json-stringify
|
||||
(fn (v) (host-call (host-global "JSON") "stringify" v)))
|
||||
|
||||
(import (sx browser))
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,426 +1,457 @@
|
||||
(define-library (sx dom)
|
||||
(export dom-document dom-window dom-body dom-head dom-create-element create-text-node create-fragment create-comment dom-append dom-prepend dom-insert-before dom-insert-after dom-remove dom-is-active-element? dom-is-input-element? dom-is-child-of? dom-attr-list dom-remove-child dom-replace-child dom-clone dom-query dom-query-all dom-query-by-id dom-closest dom-matches? dom-get-attr dom-set-attr dom-remove-attr dom-has-attr? dom-add-class dom-remove-class dom-has-class? dom-text-content dom-set-text-content dom-inner-html dom-set-inner-html dom-outer-html dom-insert-adjacent-html dom-get-style dom-set-style dom-get-prop dom-set-prop dom-tag-name dom-node-type dom-node-name dom-id dom-parent dom-first-child dom-next-sibling dom-child-list dom-is-fragment? dom-child-nodes dom-remove-children-after dom-focus dom-parse-html dom-listen dom-add-listener dom-dispatch event-detail prevent-default stop-propagation event-modifier-key? element-value error-message dom-get-data dom-set-data dom-append-to-head set-document-title)
|
||||
(define-library
|
||||
(sx dom)
|
||||
(export
|
||||
dom-document
|
||||
dom-window
|
||||
dom-body
|
||||
dom-head
|
||||
dom-create-element
|
||||
create-text-node
|
||||
create-fragment
|
||||
create-comment
|
||||
dom-append
|
||||
dom-prepend
|
||||
dom-insert-before
|
||||
dom-insert-after
|
||||
dom-remove
|
||||
dom-is-active-element?
|
||||
dom-is-input-element?
|
||||
dom-is-child-of?
|
||||
dom-attr-list
|
||||
dom-remove-child
|
||||
dom-replace-child
|
||||
dom-clone
|
||||
dom-query
|
||||
dom-query-all
|
||||
dom-query-by-id
|
||||
dom-closest
|
||||
dom-matches?
|
||||
dom-get-attr
|
||||
dom-set-attr
|
||||
dom-remove-attr
|
||||
dom-has-attr?
|
||||
dom-add-class
|
||||
dom-remove-class
|
||||
dom-has-class?
|
||||
dom-visible?
|
||||
dom-text-content
|
||||
dom-set-text-content
|
||||
dom-inner-html
|
||||
dom-set-inner-html
|
||||
dom-outer-html
|
||||
dom-insert-adjacent-html
|
||||
dom-get-style
|
||||
dom-set-style
|
||||
dom-get-prop
|
||||
dom-set-prop
|
||||
dom-tag-name
|
||||
dom-node-type
|
||||
dom-node-name
|
||||
dom-id
|
||||
dom-parent
|
||||
dom-first-child
|
||||
dom-next-sibling
|
||||
dom-child-list
|
||||
dom-is-fragment?
|
||||
dom-child-nodes
|
||||
dom-remove-children-after
|
||||
dom-focus
|
||||
dom-parse-html
|
||||
dom-listen
|
||||
dom-add-listener
|
||||
dom-dispatch
|
||||
event-detail
|
||||
prevent-default
|
||||
stop-propagation
|
||||
event-modifier-key?
|
||||
element-value
|
||||
error-message
|
||||
dom-get-data
|
||||
dom-set-data
|
||||
dom-append-to-head
|
||||
set-document-title)
|
||||
(begin
|
||||
|
||||
(define dom-document (fn () (host-global "document")))
|
||||
|
||||
(define dom-window (fn () (host-global "window")))
|
||||
|
||||
(define dom-body (fn () (host-get (dom-document) "body")))
|
||||
|
||||
(define dom-head (fn () (host-get (dom-document) "head")))
|
||||
|
||||
(define
|
||||
dom-create-element
|
||||
(fn
|
||||
(tag ns)
|
||||
(if
|
||||
ns
|
||||
(host-call (dom-document) "createElementNS" ns tag)
|
||||
(host-call (dom-document) "createElement" tag))))
|
||||
|
||||
(define
|
||||
create-text-node
|
||||
(fn (s) (host-call (dom-document) "createTextNode" s)))
|
||||
|
||||
(define
|
||||
create-fragment
|
||||
(fn () (host-call (dom-document) "createDocumentFragment")))
|
||||
|
||||
(define
|
||||
create-comment
|
||||
(fn (text) (host-call (dom-document) "createComment" (or text ""))))
|
||||
|
||||
(define
|
||||
dom-append
|
||||
(fn
|
||||
(parent child)
|
||||
(when (and parent child) (host-call parent "appendChild" child))))
|
||||
|
||||
(define
|
||||
dom-prepend
|
||||
(fn
|
||||
(parent child)
|
||||
(when (and parent child) (host-call parent "prepend" child))))
|
||||
|
||||
(define
|
||||
dom-insert-before
|
||||
(fn
|
||||
(parent child ref)
|
||||
(when (and parent child) (host-call parent "insertBefore" child ref))))
|
||||
|
||||
(define
|
||||
dom-insert-after
|
||||
(fn
|
||||
(ref node)
|
||||
"Insert node after ref in the same parent."
|
||||
(let
|
||||
((parent (host-get ref "parentNode"))
|
||||
(next (host-get ref "nextSibling")))
|
||||
(when
|
||||
parent
|
||||
(define dom-document (fn () (host-global "document")))
|
||||
(define dom-window (fn () (host-global "window")))
|
||||
(define dom-body (fn () (host-get (dom-document) "body")))
|
||||
(define dom-head (fn () (host-get (dom-document) "head")))
|
||||
(define
|
||||
dom-create-element
|
||||
(fn
|
||||
(tag ns)
|
||||
(if
|
||||
next
|
||||
(host-call parent "insertBefore" node next)
|
||||
(host-call parent "appendChild" node))))))
|
||||
|
||||
(define dom-remove (fn (el) (when el (host-call el "remove"))))
|
||||
|
||||
(define
|
||||
dom-is-active-element?
|
||||
(fn
|
||||
(el)
|
||||
(let
|
||||
((active (host-get (dom-document) "activeElement")))
|
||||
(if (and active el) (identical? el active) false))))
|
||||
|
||||
(define
|
||||
dom-is-input-element?
|
||||
(fn
|
||||
(el)
|
||||
(let
|
||||
((tag (upper (or (dom-tag-name el) ""))))
|
||||
(or (= tag "INPUT") (= tag "TEXTAREA") (= tag "SELECT")))))
|
||||
|
||||
(define
|
||||
dom-is-child-of?
|
||||
(fn (child parent) (and child parent (host-call parent "contains" child))))
|
||||
|
||||
(define
|
||||
dom-attr-list
|
||||
(fn
|
||||
(el)
|
||||
(let
|
||||
((attrs (host-get el "attributes")) (result (list)))
|
||||
(when
|
||||
attrs
|
||||
ns
|
||||
(host-call (dom-document) "createElementNS" ns tag)
|
||||
(host-call (dom-document) "createElement" tag))))
|
||||
(define
|
||||
create-text-node
|
||||
(fn (s) (host-call (dom-document) "createTextNode" s)))
|
||||
(define
|
||||
create-fragment
|
||||
(fn () (host-call (dom-document) "createDocumentFragment")))
|
||||
(define
|
||||
create-comment
|
||||
(fn (text) (host-call (dom-document) "createComment" (or text ""))))
|
||||
(define
|
||||
dom-append
|
||||
(fn
|
||||
(parent child)
|
||||
(when (and parent child) (host-call parent "appendChild" child))))
|
||||
(define
|
||||
dom-prepend
|
||||
(fn
|
||||
(parent child)
|
||||
(when (and parent child) (host-call parent "prepend" child))))
|
||||
(define
|
||||
dom-insert-before
|
||||
(fn
|
||||
(parent child ref)
|
||||
(when (and parent child) (host-call parent "insertBefore" child ref))))
|
||||
(define
|
||||
dom-insert-after
|
||||
(fn
|
||||
(ref node)
|
||||
"Insert node after ref in the same parent."
|
||||
(let
|
||||
((n (host-get attrs "length")))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
((parent (host-get ref "parentNode"))
|
||||
(next (host-get ref "nextSibling")))
|
||||
(when
|
||||
parent
|
||||
(if
|
||||
next
|
||||
(host-call parent "insertBefore" node next)
|
||||
(host-call parent "appendChild" node))))))
|
||||
(define dom-remove (fn (el) (when el (host-call el "remove"))))
|
||||
(define
|
||||
dom-is-active-element?
|
||||
(fn
|
||||
(el)
|
||||
(let
|
||||
((active (host-get (dom-document) "activeElement")))
|
||||
(if (and active el) (identical? el active) false))))
|
||||
(define
|
||||
dom-is-input-element?
|
||||
(fn
|
||||
(el)
|
||||
(let
|
||||
((tag (upper (or (dom-tag-name el) ""))))
|
||||
(or (= tag "INPUT") (= tag "TEXTAREA") (= tag "SELECT")))))
|
||||
(define
|
||||
dom-is-child-of?
|
||||
(fn
|
||||
(child parent)
|
||||
(and child parent (host-call parent "contains" child))))
|
||||
(define
|
||||
dom-attr-list
|
||||
(fn
|
||||
(el)
|
||||
(let
|
||||
((attrs (host-get el "attributes")) (result (list)))
|
||||
(when
|
||||
attrs
|
||||
(let
|
||||
((n (host-get attrs "length")))
|
||||
(let
|
||||
((attr (host-call attrs "item" i)))
|
||||
(append!
|
||||
result
|
||||
(list (host-get attr "name") (host-get attr "value"))))
|
||||
(loop (+ i 1))))))
|
||||
result)))
|
||||
|
||||
(define
|
||||
dom-remove-child
|
||||
(fn
|
||||
(parent child)
|
||||
(when (and parent child) (host-call parent "removeChild" child))))
|
||||
|
||||
(define
|
||||
dom-replace-child
|
||||
(fn
|
||||
(parent new-child old-child)
|
||||
(when
|
||||
(and parent new-child old-child)
|
||||
(host-call parent "replaceChild" new-child old-child))))
|
||||
|
||||
(define
|
||||
dom-clone
|
||||
(fn (node deep) (host-call node "cloneNode" (if (nil? deep) true deep))))
|
||||
|
||||
(define
|
||||
dom-query
|
||||
(fn
|
||||
(root-or-sel sel)
|
||||
(if
|
||||
(nil? sel)
|
||||
(host-call (dom-document) "querySelector" root-or-sel)
|
||||
(host-call root-or-sel "querySelector" sel))))
|
||||
|
||||
(define
|
||||
dom-query-all
|
||||
(fn
|
||||
(root sel)
|
||||
"Query DOM and return an SX list (not a host NodeList)."
|
||||
(let
|
||||
((node-list (if (nil? sel) (host-call (dom-document) "querySelectorAll" root) (host-call root "querySelectorAll" sel))))
|
||||
(if
|
||||
(nil? node-list)
|
||||
(list)
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(let
|
||||
((attr (host-call attrs "item" i)))
|
||||
(append!
|
||||
result
|
||||
(list (host-get attr "name") (host-get attr "value"))))
|
||||
(loop (+ i 1))))))
|
||||
result)))
|
||||
(define
|
||||
dom-remove-child
|
||||
(fn
|
||||
(parent child)
|
||||
(when (and parent child) (host-call parent "removeChild" child))))
|
||||
(define
|
||||
dom-replace-child
|
||||
(fn
|
||||
(parent new-child old-child)
|
||||
(when
|
||||
(and parent new-child old-child)
|
||||
(host-call parent "replaceChild" new-child old-child))))
|
||||
(define
|
||||
dom-clone
|
||||
(fn
|
||||
(node deep)
|
||||
(host-call node "cloneNode" (if (nil? deep) true deep))))
|
||||
(define
|
||||
dom-query
|
||||
(fn
|
||||
(root-or-sel sel)
|
||||
(if
|
||||
(nil? sel)
|
||||
(host-call (dom-document) "querySelector" root-or-sel)
|
||||
(host-call root-or-sel "querySelector" sel))))
|
||||
(define
|
||||
dom-query-all
|
||||
(fn
|
||||
(root sel)
|
||||
"Query DOM and return an SX list (not a host NodeList)."
|
||||
(let
|
||||
((n (host-get node-list "length")) (result (list)))
|
||||
((node-list (if (nil? sel) (host-call (dom-document) "querySelectorAll" root) (host-call root "querySelectorAll" sel))))
|
||||
(if
|
||||
(nil? node-list)
|
||||
(list)
|
||||
(let
|
||||
((n (host-get node-list "length")) (result (list)))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(append! result (host-call node-list "item" i))
|
||||
(loop (+ i 1))))
|
||||
result)))))
|
||||
(define
|
||||
dom-query-by-id
|
||||
(fn (id) (host-call (dom-document) "getElementById" id)))
|
||||
(define
|
||||
dom-closest
|
||||
(fn (el sel) (when el (host-call el "closest" sel))))
|
||||
(define
|
||||
dom-matches?
|
||||
(fn
|
||||
(el sel)
|
||||
(if
|
||||
(and el (host-get el "matches"))
|
||||
(host-call el "matches" sel)
|
||||
false)))
|
||||
(define
|
||||
dom-get-attr
|
||||
(fn
|
||||
(el name)
|
||||
(if
|
||||
(and el (host-get el "getAttribute"))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(append! result (host-call node-list "item" i))
|
||||
(loop (+ i 1))))
|
||||
result)))))
|
||||
|
||||
(define
|
||||
dom-query-by-id
|
||||
(fn (id) (host-call (dom-document) "getElementById" id)))
|
||||
|
||||
(define dom-closest (fn (el sel) (when el (host-call el "closest" sel))))
|
||||
|
||||
(define
|
||||
dom-matches?
|
||||
(fn
|
||||
(el sel)
|
||||
(if (and el (host-get el "matches")) (host-call el "matches" sel) false)))
|
||||
|
||||
(define
|
||||
dom-get-attr
|
||||
(fn
|
||||
(el name)
|
||||
(if
|
||||
(and el (host-get el "getAttribute"))
|
||||
(let ((v (host-call el "getAttribute" name))) (if (nil? v) nil v))
|
||||
nil)))
|
||||
|
||||
(define
|
||||
dom-set-attr
|
||||
(fn
|
||||
(el name val)
|
||||
(when
|
||||
(and el (host-get el "setAttribute"))
|
||||
(host-call el "setAttribute" name val))))
|
||||
|
||||
(define
|
||||
dom-remove-attr
|
||||
(fn
|
||||
(el name)
|
||||
(when
|
||||
(and el (host-get el "removeAttribute"))
|
||||
(host-call el "removeAttribute" name))))
|
||||
|
||||
(define
|
||||
dom-has-attr?
|
||||
(fn
|
||||
(el name)
|
||||
(if
|
||||
(and el (host-get el "hasAttribute"))
|
||||
(host-call el "hasAttribute" name)
|
||||
false)))
|
||||
|
||||
(define
|
||||
dom-add-class
|
||||
(fn (el cls) (when el (host-call (host-get el "classList") "add" cls))))
|
||||
|
||||
(define
|
||||
dom-remove-class
|
||||
(fn
|
||||
(el cls)
|
||||
(when el (host-call (host-get el "classList") "remove" cls))))
|
||||
|
||||
(define
|
||||
dom-has-class?
|
||||
(fn
|
||||
(el cls)
|
||||
(if el (host-call (host-get el "classList") "contains" cls) false)))
|
||||
|
||||
(define dom-text-content (fn (el) (host-get el "textContent")))
|
||||
|
||||
(define dom-set-text-content (fn (el val) (host-set! el "textContent" val)))
|
||||
|
||||
(define dom-inner-html (fn (el) (host-get el "innerHTML")))
|
||||
|
||||
(define dom-set-inner-html (fn (el val) (host-set! el "innerHTML" val)))
|
||||
|
||||
(define dom-outer-html (fn (el) (host-get el "outerHTML")))
|
||||
|
||||
(define
|
||||
dom-insert-adjacent-html
|
||||
(fn (el position html) (host-call el "insertAdjacentHTML" position html)))
|
||||
|
||||
(define dom-get-style (fn (el prop) (host-get (host-get el "style") prop)))
|
||||
|
||||
(define
|
||||
dom-set-style
|
||||
(fn
|
||||
(el prop val)
|
||||
(host-call (host-get el "style") "setProperty" prop val)))
|
||||
|
||||
(define dom-get-prop (fn (el name) (host-get el name)))
|
||||
|
||||
(define dom-set-prop (fn (el name val) (host-set! el name val)))
|
||||
|
||||
(define
|
||||
dom-tag-name
|
||||
(fn (el) (if el (lower (or (host-get el "tagName") "")) "")))
|
||||
|
||||
(define dom-node-type (fn (el) (host-get el "nodeType")))
|
||||
|
||||
(define dom-node-name (fn (el) (host-get el "nodeName")))
|
||||
|
||||
(define dom-id (fn (el) (host-get el "id")))
|
||||
|
||||
(define dom-parent (fn (el) (host-get el "parentNode")))
|
||||
|
||||
(define dom-first-child (fn (el) (host-get el "firstChild")))
|
||||
|
||||
(define dom-next-sibling (fn (el) (host-get el "nextSibling")))
|
||||
|
||||
(define
|
||||
dom-child-list
|
||||
(fn
|
||||
(el)
|
||||
"Return child nodes as an SX list."
|
||||
(if
|
||||
el
|
||||
(let
|
||||
((nl (host-get el "childNodes"))
|
||||
(n (host-get nl "length"))
|
||||
(result (list)))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(append! result (host-call nl "item" i))
|
||||
(loop (+ i 1))))
|
||||
result)
|
||||
(list))))
|
||||
|
||||
(define dom-is-fragment? (fn (el) (= (host-get el "nodeType") 11)))
|
||||
|
||||
(define
|
||||
dom-child-nodes
|
||||
(fn
|
||||
(el)
|
||||
"Return child nodes as an SX list."
|
||||
(if
|
||||
el
|
||||
(let
|
||||
((nl (host-get el "childNodes"))
|
||||
(n (host-get nl "length"))
|
||||
(result (list)))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(append! result (host-call nl "item" i))
|
||||
(loop (+ i 1))))
|
||||
result)
|
||||
(list))))
|
||||
|
||||
(define
|
||||
dom-remove-children-after
|
||||
(fn
|
||||
(marker)
|
||||
"Remove all siblings after marker node."
|
||||
(let
|
||||
((parent (dom-parent marker)))
|
||||
(when
|
||||
parent
|
||||
(let
|
||||
loop
|
||||
()
|
||||
((v (host-call el "getAttribute" name)))
|
||||
(if (nil? v) nil v))
|
||||
nil)))
|
||||
(define
|
||||
dom-set-attr
|
||||
(fn
|
||||
(el name val)
|
||||
(when
|
||||
(and el (host-get el "setAttribute"))
|
||||
(host-call el "setAttribute" name val))))
|
||||
(define
|
||||
dom-remove-attr
|
||||
(fn
|
||||
(el name)
|
||||
(when
|
||||
(and el (host-get el "removeAttribute"))
|
||||
(host-call el "removeAttribute" name))))
|
||||
(define
|
||||
dom-has-attr?
|
||||
(fn
|
||||
(el name)
|
||||
(if
|
||||
(and el (host-get el "hasAttribute"))
|
||||
(host-call el "hasAttribute" name)
|
||||
false)))
|
||||
(define
|
||||
dom-add-class
|
||||
(fn
|
||||
(el cls)
|
||||
(when el (host-call (host-get el "classList") "add" cls))))
|
||||
(define
|
||||
dom-remove-class
|
||||
(fn
|
||||
(el cls)
|
||||
(when el (host-call (host-get el "classList") "remove" cls))))
|
||||
(define
|
||||
dom-has-class?
|
||||
(fn
|
||||
(el cls)
|
||||
(if el (host-call (host-get el "classList") "contains" cls) false)))
|
||||
(define dom-text-content (fn (el) (host-get el "textContent")))
|
||||
(define
|
||||
dom-set-text-content
|
||||
(fn (el val) (host-set! el "textContent" val)))
|
||||
(define dom-inner-html (fn (el) (host-get el "innerHTML")))
|
||||
(define dom-set-inner-html (fn (el val) (host-set! el "innerHTML" val)))
|
||||
(define dom-outer-html (fn (el) (host-get el "outerHTML")))
|
||||
(define
|
||||
dom-insert-adjacent-html
|
||||
(fn
|
||||
(el position html)
|
||||
(host-call el "insertAdjacentHTML" position html)))
|
||||
(define
|
||||
dom-get-style
|
||||
(fn (el prop) (host-get (host-get el "style") prop)))
|
||||
(define
|
||||
dom-set-style
|
||||
(fn
|
||||
(el prop val)
|
||||
(host-call (host-get el "style") "setProperty" prop val)))
|
||||
(define dom-get-prop (fn (el name) (host-get el name)))
|
||||
(define dom-set-prop (fn (el name val) (host-set! el name val)))
|
||||
(define
|
||||
dom-tag-name
|
||||
(fn (el) (if el (lower (or (host-get el "tagName") "")) "")))
|
||||
(define dom-node-type (fn (el) (host-get el "nodeType")))
|
||||
(define dom-node-name (fn (el) (host-get el "nodeName")))
|
||||
(define dom-id (fn (el) (host-get el "id")))
|
||||
(define dom-parent (fn (el) (host-get el "parentNode")))
|
||||
(define dom-first-child (fn (el) (host-get el "firstChild")))
|
||||
(define dom-next-sibling (fn (el) (host-get el "nextSibling")))
|
||||
(define
|
||||
dom-child-list
|
||||
(fn
|
||||
(el)
|
||||
"Return child nodes as an SX list."
|
||||
(if
|
||||
el
|
||||
(let
|
||||
((next (dom-next-sibling marker)))
|
||||
(when next (host-call parent "removeChild" next) (loop))))))))
|
||||
|
||||
(define dom-focus (fn (el) (when el (host-call el "focus"))))
|
||||
|
||||
(define
|
||||
dom-parse-html
|
||||
(fn
|
||||
(html)
|
||||
(let
|
||||
((parser (host-new "DOMParser"))
|
||||
(doc (host-call parser "parseFromString" html "text/html")))
|
||||
(host-get (host-get doc "body") "childNodes"))))
|
||||
|
||||
(define
|
||||
dom-listen
|
||||
(fn
|
||||
(el event-name handler)
|
||||
(let
|
||||
((cb (host-callback handler)))
|
||||
(host-call el "addEventListener" event-name cb)
|
||||
(fn () (host-call el "removeEventListener" event-name cb)))))
|
||||
|
||||
(define
|
||||
dom-add-listener
|
||||
(fn
|
||||
(el event-name handler opts)
|
||||
(let
|
||||
((cb (host-callback handler)))
|
||||
(if
|
||||
opts
|
||||
(host-call el "addEventListener" event-name cb opts)
|
||||
(host-call el "addEventListener" event-name cb))
|
||||
(fn () (host-call el "removeEventListener" event-name cb)))))
|
||||
|
||||
(define
|
||||
dom-dispatch
|
||||
(fn
|
||||
(el event-name detail)
|
||||
(let
|
||||
((evt (host-new "CustomEvent" event-name (dict "detail" detail "bubbles" true))))
|
||||
(host-call el "dispatchEvent" evt))))
|
||||
|
||||
(define event-detail (fn (evt) (host-get evt "detail")))
|
||||
|
||||
(define prevent-default (fn (e) (when e (host-call e "preventDefault"))))
|
||||
|
||||
(define stop-propagation (fn (e) (when e (host-call e "stopPropagation"))))
|
||||
|
||||
(define
|
||||
event-modifier-key?
|
||||
(fn
|
||||
(e)
|
||||
(and
|
||||
e
|
||||
(or
|
||||
(host-get e "ctrlKey")
|
||||
(host-get e "metaKey")
|
||||
(host-get e "shiftKey")
|
||||
(host-get e "altKey")))))
|
||||
|
||||
(define
|
||||
element-value
|
||||
(fn
|
||||
(el)
|
||||
(if
|
||||
(and el (not (nil? (host-get el "value"))))
|
||||
(host-get el "value")
|
||||
nil)))
|
||||
|
||||
(define
|
||||
error-message
|
||||
(fn
|
||||
(e)
|
||||
(if (and e (host-get e "message")) (host-get e "message") (str e))))
|
||||
|
||||
(define
|
||||
dom-get-data
|
||||
(fn
|
||||
(el key)
|
||||
(let
|
||||
((store (host-get el "__sx_data")))
|
||||
(if store (host-get store key) nil))))
|
||||
|
||||
(define
|
||||
dom-set-data
|
||||
(fn
|
||||
(el key val)
|
||||
(when
|
||||
(not (host-get el "__sx_data"))
|
||||
(host-set! el "__sx_data" (dict)))
|
||||
(host-set! (host-get el "__sx_data") key val)))
|
||||
|
||||
(define
|
||||
dom-append-to-head
|
||||
(fn (el) (when (dom-head) (host-call (dom-head) "appendChild" el))))
|
||||
|
||||
(define
|
||||
set-document-title
|
||||
(fn (title) (host-set! (dom-document) "title" title)))
|
||||
|
||||
|
||||
))
|
||||
((nl (host-get el "childNodes"))
|
||||
(n (host-get nl "length"))
|
||||
(result (list)))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(append! result (host-call nl "item" i))
|
||||
(loop (+ i 1))))
|
||||
result)
|
||||
(list))))
|
||||
(define dom-is-fragment? (fn (el) (= (host-get el "nodeType") 11)))
|
||||
(define
|
||||
dom-child-nodes
|
||||
(fn
|
||||
(el)
|
||||
"Return child nodes as an SX list."
|
||||
(if
|
||||
el
|
||||
(let
|
||||
((nl (host-get el "childNodes"))
|
||||
(n (host-get nl "length"))
|
||||
(result (list)))
|
||||
(let
|
||||
loop
|
||||
((i 0))
|
||||
(when
|
||||
(< i n)
|
||||
(append! result (host-call nl "item" i))
|
||||
(loop (+ i 1))))
|
||||
result)
|
||||
(list))))
|
||||
(define
|
||||
dom-remove-children-after
|
||||
(fn
|
||||
(marker)
|
||||
"Remove all siblings after marker node."
|
||||
(let
|
||||
((parent (dom-parent marker)))
|
||||
(when
|
||||
parent
|
||||
(let
|
||||
loop
|
||||
()
|
||||
(let
|
||||
((next (dom-next-sibling marker)))
|
||||
(when next (host-call parent "removeChild" next) (loop))))))))
|
||||
(define dom-focus (fn (el) (when el (host-call el "focus"))))
|
||||
(define
|
||||
dom-parse-html
|
||||
(fn
|
||||
(html)
|
||||
(let
|
||||
((parser (host-new "DOMParser"))
|
||||
(doc (host-call parser "parseFromString" html "text/html")))
|
||||
(host-get (host-get doc "body") "childNodes"))))
|
||||
(define
|
||||
dom-listen
|
||||
(fn
|
||||
(el event-name handler)
|
||||
(let
|
||||
((cb (host-callback handler)))
|
||||
(host-call el "addEventListener" event-name cb)
|
||||
(fn () (host-call el "removeEventListener" event-name cb)))))
|
||||
(define
|
||||
dom-add-listener
|
||||
(fn
|
||||
(el event-name handler opts)
|
||||
(let
|
||||
((cb (host-callback handler)))
|
||||
(if
|
||||
opts
|
||||
(host-call el "addEventListener" event-name cb opts)
|
||||
(host-call el "addEventListener" event-name cb))
|
||||
(fn () (host-call el "removeEventListener" event-name cb)))))
|
||||
(define
|
||||
dom-dispatch
|
||||
(fn
|
||||
(el event-name detail)
|
||||
(let
|
||||
((evt (host-new "CustomEvent" event-name (dict "detail" detail "bubbles" true))))
|
||||
(host-call el "dispatchEvent" evt))))
|
||||
(define event-detail (fn (evt) (host-get evt "detail")))
|
||||
(define
|
||||
prevent-default
|
||||
(fn (e) (when e (host-call e "preventDefault"))))
|
||||
(define
|
||||
stop-propagation
|
||||
(fn (e) (when e (host-call e "stopPropagation"))))
|
||||
(define
|
||||
event-modifier-key?
|
||||
(fn
|
||||
(e)
|
||||
(and
|
||||
e
|
||||
(or
|
||||
(host-get e "ctrlKey")
|
||||
(host-get e "metaKey")
|
||||
(host-get e "shiftKey")
|
||||
(host-get e "altKey")))))
|
||||
(define
|
||||
element-value
|
||||
(fn
|
||||
(el)
|
||||
(if
|
||||
(and el (not (nil? (host-get el "value"))))
|
||||
(host-get el "value")
|
||||
nil)))
|
||||
(define
|
||||
error-message
|
||||
(fn
|
||||
(e)
|
||||
(if (and e (host-get e "message")) (host-get e "message") (str e))))
|
||||
(define
|
||||
dom-get-data
|
||||
(fn
|
||||
(el key)
|
||||
(let
|
||||
((store (host-get el "__sx_data")))
|
||||
(if store (host-get store key) nil))))
|
||||
(define
|
||||
dom-set-data
|
||||
(fn
|
||||
(el key val)
|
||||
(when
|
||||
(not (host-get el "__sx_data"))
|
||||
(host-set! el "__sx_data" (dict)))
|
||||
(host-set! (host-get el "__sx_data") key val)))
|
||||
(define
|
||||
dom-append-to-head
|
||||
(fn (el) (when (dom-head) (host-call (dom-head) "appendChild" el))))
|
||||
(define
|
||||
set-document-title
|
||||
(fn (title) (host-set! (dom-document) "title" title)))))
|
||||
|
||||
;; Re-export to global env
|
||||
(define
|
||||
dom-visible?
|
||||
(fn
|
||||
(el)
|
||||
(if
|
||||
el
|
||||
(not (= (host-get (host-get el "style") "display") "none"))
|
||||
false)))
|
||||
|
||||
(import (sx dom))
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -119,6 +119,8 @@
|
||||
"empty"
|
||||
"clear"
|
||||
"swap"
|
||||
"open"
|
||||
"close"
|
||||
"exists"
|
||||
"matches"
|
||||
"contains"
|
||||
|
||||
File diff suppressed because one or more lines are too long
1088
shared/static/wasm/sx/module-manifest.json
Normal file
1088
shared/static/wasm/sx/module-manifest.json
Normal file
File diff suppressed because it is too large
Load Diff
36
shared/static/wasm/sx/module-manifest.sx
Normal file
36
shared/static/wasm/sx/module-manifest.sx
Normal file
@@ -0,0 +1,36 @@
|
||||
;; Module manifest — auto-generated by compile-modules.js
|
||||
{
|
||||
"sx render" {:file "render.sxbc" :deps () :exports ("HTML_TAGS" "VOID_ELEMENTS" "BOOLEAN_ATTRS" "*definition-form-extensions*" "definition-form?" "parse-element-args" "render-attrs" "eval-cond" "eval-cond-scheme" "eval-cond-clojure" "process-bindings" "is-render-expr?" "merge-spread-attrs" "escape-html" "escape-attr")}
|
||||
"sx signals" {:file "core-signals.sxbc" :deps () :exports ("make-signal" "signal?" "signal-value" "signal-set-value!" "signal-subscribers" "signal-add-sub!" "signal-remove-sub!" "signal-deps" "signal-set-deps!" "signal" "deref" "reset!" "swap!" "computed" "effect" "*batch-depth*" "*batch-queue*" "batch" "notify-subscribers" "flush-subscribers" "dispose-computed" "with-island-scope" "register-in-scope")}
|
||||
"sx signals-web" {:file "signals.sxbc" :deps ("sx dom" "sx browser") :exports ("with-marsh-scope" "dispose-marsh-scope" "emit-event" "on-event" "bridge-event" "resource")}
|
||||
"web deps" {:file "deps.sxbc" :deps () :exports ("scan-refs" "scan-refs-walk" "transitive-deps-walk" "transitive-deps" "compute-all-deps" "scan-components-from-source" "components-needed" "page-component-bundle" "page-css-classes" "scan-io-refs-walk" "scan-io-refs" "transitive-io-refs-walk" "transitive-io-refs" "compute-all-io-refs" "component-io-refs-cached" "component-pure?" "render-target" "page-render-plan" "env-components")}
|
||||
"web router" {:file "router.sxbc" :deps () :exports ("split-path-segments" "make-route-segment" "parse-route-pattern" "match-route-segments" "match-route" "find-matching-route" "_fn-to-segment" "sx-url-to-path" "_count-leading-dots" "_strip-trailing-close" "_index-of-safe" "_last-index-of" "_pop-sx-url-level" "_pop-sx-url-levels" "_split-pos-kw" "_parse-relative-body" "_extract-innermost" "_find-kw-in-tokens" "_find-keyword-value" "_replace-kw-in-tokens" "_set-keyword-in-content" "_is-delta-value?" "_apply-delta" "_apply-kw-pairs" "_apply-keywords-to-url" "_normalize-relative" "resolve-relative-url" "relative-sx-url?" "_url-special-forms" "url-special-form?" "parse-sx-url" "url-special-form-name" "url-special-form-inner" "url-to-expr" "auto-quote-unknowns" "prepare-url-expr")}
|
||||
"web page-helpers" {:file "page-helpers.sxbc" :deps () :exports ("special-form-category-map" "extract-define-kwargs" "categorize-special-forms" "build-ref-items-with-href" "build-reference-data" "build-attr-detail" "build-header-detail" "build-event-detail" "build-component-source" "build-bundle-analysis" "build-routing-analysis" "build-affinity-analysis")}
|
||||
"sx freeze" {:file "freeze.sxbc" :deps () :exports ("freeze-registry" "freeze-signal" "freeze-scope" "cek-freeze-scope" "cek-freeze-all" "cek-thaw-scope" "cek-thaw-all" "freeze-to-sx" "thaw-from-sx")}
|
||||
"sx bytecode" {:file "bytecode.sxbc" :deps () :exports ("OP_CONST" "OP_NIL" "OP_TRUE" "OP_FALSE" "OP_POP" "OP_DUP" "OP_LOCAL_GET" "OP_LOCAL_SET" "OP_UPVALUE_GET" "OP_UPVALUE_SET" "OP_GLOBAL_GET" "OP_GLOBAL_SET" "OP_JUMP" "OP_JUMP_IF_FALSE" "OP_JUMP_IF_TRUE" "OP_CALL" "OP_TAIL_CALL" "OP_RETURN" "OP_CLOSURE" "OP_CALL_PRIM" "OP_APPLY" "OP_LIST" "OP_DICT" "OP_APPEND_BANG" "OP_ITER_INIT" "OP_ITER_NEXT" "OP_MAP_OPEN" "OP_MAP_APPEND" "OP_MAP_CLOSE" "OP_FILTER_TEST" "OP_HO_MAP" "OP_HO_FILTER" "OP_HO_REDUCE" "OP_HO_FOR_EACH" "OP_HO_SOME" "OP_HO_EVERY" "OP_SCOPE_PUSH" "OP_SCOPE_POP" "OP_PROVIDE_PUSH" "OP_PROVIDE_POP" "OP_CONTEXT" "OP_EMIT" "OP_EMITTED" "OP_RESET" "OP_SHIFT" "OP_DEFINE" "OP_DEFCOMP" "OP_DEFISLAND" "OP_DEFMACRO" "OP_EXPAND_MACRO" "OP_STR_CONCAT" "OP_STR_JOIN" "OP_SERIALIZE" "OP_ADD" "OP_SUB" "OP_MUL" "OP_DIV" "OP_EQ" "OP_LT" "OP_GT" "OP_NOT" "OP_LEN" "OP_FIRST" "OP_REST" "OP_NTH" "OP_CONS" "OP_NEG" "OP_INC" "OP_DEC" "OP_ASER_TAG" "OP_ASER_FRAG" "BYTECODE_MAGIC" "BYTECODE_VERSION" "CONST_NUMBER" "CONST_STRING" "CONST_BOOL" "CONST_NIL" "CONST_SYMBOL" "CONST_KEYWORD" "CONST_LIST" "CONST_DICT" "CONST_CODE" "opcode-name")}
|
||||
"sx compiler" {:file "compiler.sxbc" :deps () :exports ("make-pool" "pool-add" "make-scope" "scope-define-local" "scope-resolve" "make-emitter" "emit-byte" "emit-u16" "emit-i16" "emit-op" "emit-const" "current-offset" "patch-i16" "compile-expr" "compile-symbol" "compile-dict" "compile-list" "compile-if" "compile-when" "compile-and" "compile-or" "compile-begin" "compile-let" "desugar-let-match" "compile-letrec" "compile-lambda" "compile-define" "compile-set" "compile-quote" "compile-cond" "compile-case" "compile-case-clauses" "compile-match" "compile-thread" "compile-thread-step" "compile-defcomp" "compile-defmacro" "compile-quasiquote" "compile-qq-expr" "compile-qq-list" "compile-call" "compile" "compile-module")}
|
||||
"sx vm" {:file "vm.sxbc" :deps () :exports ("make-upvalue-cell" "uv-get" "uv-set!" "make-vm-code" "make-vm-closure" "make-vm-frame" "make-vm" "vm-push" "vm-pop" "vm-peek" "frame-read-u8" "frame-read-u16" "frame-read-i16" "vm-push-frame" "code-from-value" "vm-closure?" "*active-vm*" "*jit-compile-fn*" "lambda?" "lambda-compiled" "lambda-set-compiled!" "lambda-name" "cek-call-or-suspend" "try-jit-call" "vm-call" "frame-local-get" "frame-local-set" "frame-upvalue-get" "frame-upvalue-set" "frame-ip" "frame-set-ip!" "frame-base" "frame-closure" "closure-code" "closure-upvalues" "closure-env" "code-bytecode" "code-constants" "code-locals" "vm-sp" "vm-set-sp!" "vm-stack" "vm-set-stack!" "vm-frames" "vm-set-frames!" "vm-globals-ref" "collect-n-from-stack" "collect-n-pairs" "pad-n-nils" "vm-global-get" "vm-resolve-ho-form" "vm-call-external" "vm-global-set" "env-walk" "env-walk-set!" "vm-create-closure" "vm-run" "vm-step" "vm-call-closure" "vm-execute-module" "vm-resume-module")}
|
||||
"sx dom" {:file "dom.sxbc" :deps () :exports ("dom-document" "dom-window" "dom-body" "dom-head" "dom-create-element" "create-text-node" "create-fragment" "create-comment" "dom-append" "dom-prepend" "dom-insert-before" "dom-insert-after" "dom-remove" "dom-is-active-element?" "dom-is-input-element?" "dom-is-child-of?" "dom-attr-list" "dom-remove-child" "dom-replace-child" "dom-clone" "dom-query" "dom-query-all" "dom-query-by-id" "dom-closest" "dom-matches?" "dom-get-attr" "dom-set-attr" "dom-remove-attr" "dom-has-attr?" "dom-add-class" "dom-remove-class" "dom-has-class?" "dom-visible?" "dom-text-content" "dom-set-text-content" "dom-inner-html" "dom-set-inner-html" "dom-outer-html" "dom-insert-adjacent-html" "dom-get-style" "dom-set-style" "dom-get-prop" "dom-set-prop" "dom-tag-name" "dom-node-type" "dom-node-name" "dom-id" "dom-parent" "dom-first-child" "dom-next-sibling" "dom-child-list" "dom-is-fragment?" "dom-child-nodes" "dom-remove-children-after" "dom-focus" "dom-parse-html" "dom-listen" "dom-add-listener" "dom-dispatch" "event-detail" "prevent-default" "stop-propagation" "event-modifier-key?" "element-value" "error-message" "dom-get-data" "dom-set-data" "dom-append-to-head" "set-document-title")}
|
||||
"sx browser" {:file "browser.sxbc" :deps () :exports ("browser-location-href" "browser-location-pathname" "browser-location-origin" "browser-same-origin?" "url-pathname" "browser-push-state" "browser-replace-state" "browser-reload" "browser-navigate" "local-storage-get" "local-storage-set" "local-storage-remove" "set-timeout" "set-interval" "clear-timeout" "clear-interval" "request-animation-frame" "fetch-request" "new-abort-controller" "controller-signal" "controller-abort" "promise-then" "promise-resolve" "promise-delayed" "browser-confirm" "browser-prompt" "browser-media-matches?" "json-parse" "json-stringify" "log-info" "log-warn" "console-log" "now-ms" "schedule-idle" "set-cookie" "get-cookie")}
|
||||
"web adapter-html" {:file "adapter-html.sxbc" :deps ("sx render") :exports ("render-to-html" "render-value-to-html" "RENDER_HTML_FORMS" "render-html-form?" "render-list-to-html" "dispatch-html-form" "render-lambda-html" "render-html-component" "render-html-element" "render-html-lake" "render-html-marsh" "render-html-island" "serialize-island-state")}
|
||||
"web adapter-sx" {:file "adapter-sx.sxbc" :deps ("web boot-helpers") :exports ("render-to-sx" "aser" "aser-list" "aser-reserialize" "aser-fragment" "aser-call" "aser-expand-component" "SPECIAL_FORM_NAMES" "HO_FORM_NAMES" "special-form?" "ho-form?" "aser-special" "eval-case-aser")}
|
||||
"web adapter-dom" {:file "adapter-dom.sxbc" :deps ("sx dom" "sx render") :exports ("SVG_NS" "MATH_NS" "island-scope?" "hydrating?" "contains-deref?" "dom-on" "render-to-dom" "render-dom-list" "render-dom-element" "render-dom-component" "render-dom-fragment" "render-dom-raw" "render-dom-unknown-component" "RENDER_DOM_FORMS" "render-dom-form?" "dispatch-render-form" "render-lambda-dom" "render-dom-island" "render-dom-lake" "render-dom-marsh" "reactive-text" "reactive-attr" "reactive-spread" "reactive-fragment" "render-list-item" "extract-key" "reactive-list" "bind-input" "*use-cek-reactive*" "enable-cek-reactive!" "cek-reactive-text" "cek-reactive-attr" "render-dom-portal" "render-dom-error-boundary")}
|
||||
"tw-layout" {:file "tw-layout.sxbc" :deps () :exports ("tw-spacing-props" "tw-displays" "tw-max-widths" "tw-min-widths" "tw-resolve-layout")}
|
||||
"tw-type" {:file "tw-type.sxbc" :deps () :exports ("tw-sizes" "tw-weights" "tw-families" "tw-alignments" "tw-leading" "tw-tracking" "tw-resolve-type")}
|
||||
"tw" {:file "tw.sxbc" :deps () :exports ("colour-bases" "colour-with-alpha" "lerp" "shade-to-lightness" "colour" "tw-colour-props" "tw-breakpoints" "tw-states" "tw-selector-states" "tw-container-sizes" "tw-spacing-value" "tw-template" "tw-shadow-sizes" "tw-rounded-sizes" "tw-border-widths" "tw-arbitrary-props" "tw-resolve-arbitrary" "tw-resolve-style" "tw-process-token")}
|
||||
"sx text-layout" {:file "text-layout.sxbc" :deps () :exports ("measure-text" "line-badness" "compute-demerits" "sum-widths" "find-breaks" "break-lines" "break-lines-greedy" "position-line" "position-lines" "pretext-position-line" "pretext-layout-lines" "layout-paragraph" "make-hyphenation-trie" "find-hyphenation-points" "hyphenate-word" "typeset" "typeset-plain")}
|
||||
"web boot-helpers" {:file "boot-helpers.sxbc" :deps ("sx dom" "sx browser" "web adapter-dom") :exports ("_sx-bound-prefix" "mark-processed!" "is-processed?" "clear-processed!" "callable?" "to-kebab" "sx-load-components" "call-expr" "base-env" "get-render-env" "merge-envs" "sx-render-with-env" "parse-env-attr" "store-env-attr" "resolve-mount-target" "remove-head-element" "set-sx-comp-cookie" "clear-sx-comp-cookie" "log-parse-error" "loaded-component-names" "csrf-token" "validate-for-request" "build-request-body" "abort-previous-target" "abort-previous" "track-controller" "track-controller-target" "new-abort-controller" "abort-signal" "apply-optimistic" "revert-optimistic" "dom-has-attr?" "show-indicator" "disable-elements" "clear-loading-state" "abort-error?" "promise-catch" "fetch-request" "fetch-location" "fetch-and-restore" "fetch-preload" "fetch-streaming" "dom-parse-html-document" "dom-body-inner-html" "create-script-clone" "cross-origin?" "browser-scroll-to" "with-transition" "event-source-connect" "event-source-listen" "bind-boost-link" "bind-boost-form" "bind-client-route-click" "sw-post-message" "try-parse-json" "strip-component-scripts" "extract-response-css" "sx-render" "sx-hydrate" "sx-process-scripts" "select-from-container" "children-to-fragment" "select-html-from-doc" "register-io-deps" "resolve-page-data" "parse-sx-data" "try-eval-content" "try-async-eval-content" "try-rerender-page" "execute-action" "bind-preload" "persist-offline-data" "retrieve-offline-data")}
|
||||
"sx hypersx" {:file "hypersx.sxbc" :deps () :exports ("hsx-indent" "hsx-sym-name" "hsx-kw-name" "hsx-is-element?" "hsx-is-component?" "hsx-extract-css" "hsx-tag-str" "hsx-atom" "hsx-inline" "hsx-attrs-str" "hsx-children" "sx->hypersx-node" "sx->hypersx")}
|
||||
"sx harness" {:file "harness.sxbc" :deps () :exports ("assert" "assert=" "default-platform" "make-harness" "harness-reset!" "harness-log" "harness-get" "harness-set!" "make-interceptor" "install-interceptors" "io-calls" "io-call-count" "io-call-nth" "io-call-args" "io-call-result" "assert-io-called" "assert-no-io" "assert-io-count" "assert-io-args" "assert-io-result" "assert-state")}
|
||||
"sx harness-reactive" {:file "harness-reactive.sxbc" :deps () :exports ("assert-signal-value" "assert-signal-has-subscribers" "assert-signal-no-subscribers" "assert-signal-subscriber-count" "simulate-signal-set!" "simulate-signal-swap!" "assert-computed-dep-count" "assert-computed-depends-on" "count-effect-runs" "make-test-signal" "assert-batch-coalesces")}
|
||||
"sx harness-web" {:file "harness-web.sxbc" :deps () :exports ("mock-element" "mock-set-text!" "mock-append-child!" "mock-set-attr!" "mock-get-attr" "mock-add-listener!" "simulate-click" "simulate-input" "simulate-event" "assert-text" "assert-attr" "assert-class" "assert-no-class" "assert-child-count" "assert-event-fired" "assert-no-event" "event-fire-count" "make-web-harness" "is-renderable?" "is-render-leak?" "assert-renderable" "render-body-audit" "assert-render-body-clean" "mock-render" "mock-render-fragment" "assert-single-render-root" "assert-tag")}
|
||||
"web engine" {:file "engine.sxbc" :deps ("web boot-helpers" "sx dom" "sx browser") :exports ("ENGINE_VERBS" "DEFAULT_SWAP" "parse-time" "parse-trigger-spec" "default-trigger" "get-verb-info" "build-request-headers" "process-response-headers" "parse-swap-spec" "parse-retry-spec" "next-retry-ms" "filter-params" "resolve-target" "apply-optimistic" "revert-optimistic" "find-oob-swaps" "morph-node" "sync-attrs" "morph-children" "morph-island-children" "morph-marsh" "process-signal-updates" "swap-dom-nodes" "insert-remaining-siblings" "swap-html-string" "handle-history" "PRELOAD_TTL" "preload-cache-get" "preload-cache-set" "classify-trigger" "should-boost-link?" "should-boost-form?" "parse-sse-swap")}
|
||||
"web orchestration" {:file "orchestration.sxbc" :deps ("web boot-helpers" "sx dom" "sx browser" "web adapter-dom" "web engine") :exports ("_preload-cache" "dispatch-trigger-events" "execute-request" "do-fetch" "handle-fetch-success" "flush-collected-styles" "handle-sx-response" "handle-html-response" "handle-retry" "bind-triggers" "bind-event" "post-swap" "process-settle-hooks" "activate-scripts" "process-oob-swaps" "hoist-head-elements" "process-boosted" "boost-descendants" "_page-data-cache" "_page-data-cache-ttl" "page-data-cache-key" "page-data-cache-get" "page-data-cache-set" "invalidate-page-cache" "invalidate-all-page-cache" "update-page-cache" "process-cache-directives" "_optimistic-snapshots" "optimistic-cache-update" "optimistic-cache-revert" "optimistic-cache-confirm" "submit-mutation" "_is-online" "_offline-queue" "offline-is-online?" "offline-set-online!" "offline-queue-mutation" "offline-sync" "offline-pending-count" "offline-aware-mutation" "current-page-layout" "swap-rendered-content" "resolve-route-target" "deps-satisfied?" "try-client-route" "bind-client-route-link" "process-sse" "bind-sse" "bind-sse-swap" "bind-inline-handlers" "bind-preload-for" "do-preload" "VERB_SELECTOR" "process-elements" "process-one" "process-emit-elements" "save-scroll-position" "handle-popstate" "engine-init")}
|
||||
"hs-tokenizer" {:file "hs-tokenizer.sxbc" :deps () :exports ("hs-make-token" "hs-digit?" "hs-letter?" "hs-ident-start?" "hs-ident-char?" "hs-ws?" "hs-keywords" "hs-keyword?" "hs-tokenize")}
|
||||
"hs-parser" {:file "hs-parser.sxbc" :deps ("hs-tokenizer") :exports ("hs-parse" "hs-compile")}
|
||||
"hs-compiler" {:file "hs-compiler.sxbc" :deps ("hs-tokenizer" "hs-parser") :exports ("hs-to-sx" "hs-to-sx-from-source")}
|
||||
"hs-runtime" {:file "hs-runtime.sxbc" :deps ("hs-tokenizer" "hs-parser" "hs-compiler") :exports ("hs-each" "hs-on" "hs-on-every" "hs-init" "hs-wait" "hs-wait-for" "hs-settle" "hs-toggle-class!" "hs-toggle-between!" "hs-toggle-style!" "hs-take!" "hs-put!" "hs-navigate!" "hs-scroll!" "hs-halt!" "hs-select!" "hs-reset!" "hs-next" "hs-previous" "hs-query-all" "hs-query-first" "hs-query-last" "hs-first" "hs-last" "hs-repeat-times" "hs-repeat-forever" "hs-fetch" "hs-fetch-gql" "hs-coerce" "hs-add" "hs-make" "hs-install" "hs-measure" "hs-transition" "hs-transition-from" "hs-type-check" "hs-type-check-strict" "hs-strict-eq" "hs-eq-ignore-case" "hs-contains-ignore-case?" "hs-falsy?" "hs-matches?" "hs-matches-ignore-case?" "hs-contains?" "precedes?" "follows?" "hs-empty?" "hs-empty-target!" "hs-open!" "hs-close!" "hs-hide!" "hs-show!" "hs-first" "hs-last" "hs-template" "hs-make-object" "hs-method-call" "hs-beep" "hs-prop-is" "hs-slice" "hs-sorted-by" "hs-sorted-by-desc" "hs-split-by" "hs-joined-by" "hs-sorted-by" "hs-sorted-by-desc")}
|
||||
"hs-integration" {:file "hs-integration.sxbc" :deps ("hs-tokenizer" "hs-parser" "hs-compiler" "hs-runtime") :exports ("hs-handler" "hs-activate!" "hs-boot!" "hs-boot-subtree!")}
|
||||
"hs-htmx" {:file "hs-htmx.sxbc" :deps ("hs-tokenizer" "hs-parser" "hs-compiler" "hs-runtime" "hs-integration") :exports ("HX-CONFIG-DEFAULTS" "HX-REQUEST-CLASS" "url-encode-params" "sx-url-with-params" "hx-element-config" "hx-walk-inherited" "hx-resolve-attr" "hx-verb-info" "hx-default-trigger" "hx-parse-time" "hx-parse-trigger" "hx-resolve-target" "hx-normalize-swap-mode" "hx-parse-swap-spec" "hx-swap!" "hx-select-fragment" "hx-element-source-id" "hx-form-values" "hx-collect-params" "hx-build-headers" "hx-request" "hx-process-oob!" "hx-process-partials!" "hx-parse-status-modifiers" "hx-status-matches?" "hx-parse-status-rules" "hx-match-status" "hx-handle-history!" "hx-indicator-on!" "hx-indicator-off!" "hx-disable-inputs!" "hx-enable-inputs!" "hx-confirm?" "hx-validate-form?" "hx-parse-sync-spec" "hx-sync-resolve-target" "hx-sync-check!" "hx-sync-complete!" "hx-dispatch!" "hx-strip-outer" "hx-do-swap" "hx-make-handler" "hx-wrap-debounce" "hx-wrap-throttle" "hx-wrap-changed" "hx-register-trigger!" "htmx-activate!" "HX-VERB-SELECTORS" "htmx-boot!" "hx-preload-cache" "hx-preload-register!" "hx-parse-sse-swap" "hx-sse-connect!" "htmx-boot-subtree!" "hx-boost-link!" "hx-boost-form!" "hx-boost-subtree!")}
|
||||
"_entry" {:file "boot.sxbc" :deps ("sx dom" "sx browser" "web boot-helpers" "web adapter-dom" "sx signals" "sx signals-web" "web router" "web page-helpers" "web orchestration" "sx render" "sx text-layout") :lazy-deps ("sx bytecode" "hs-tokenizer" "hs-parser" "hs-compiler" "hs-runtime" "hs-integration" "hs-htmx")}
|
||||
}
|
||||
1
shared/static/wasm/sx/tw-layout.sxbc.json
Normal file
1
shared/static/wasm/sx/tw-layout.sxbc.json
Normal file
File diff suppressed because one or more lines are too long
1
shared/static/wasm/sx/tw-type.sxbc.json
Normal file
1
shared/static/wasm/sx/tw-type.sxbc.json
Normal file
File diff suppressed because one or more lines are too long
1
shared/static/wasm/sx/tw.sxbc.json
Normal file
1
shared/static/wasm/sx/tw.sxbc.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1792,7 +1792,7 @@
|
||||
blake2_js_for_wasm_create: blake2_js_for_wasm_create};
|
||||
}
|
||||
(globalThis))
|
||||
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["re-9a0de245",[2]],["sx-5ce001fe",[2,3]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,5]],["dune__exe__Sx_browser-8c3734f6",[2,4,6]],["std_exit-10fb8830",[2]],["start-f808dbe1",0]],"generated":(b=>{var
|
||||
({"link":[["runtime-0db9b496",0],["prelude-d7e4b000",0],["stdlib-23ce0836",[]],["re-9a0de245",[2]],["sx-5ce001fe",[2,3]],["jsoo_runtime-f96b44a8",[2]],["js_of_ocaml-651f6707",[2,5]],["dune__exe__Sx_browser-8afc1869",[2,4,6]],["std_exit-10fb8830",[2]],["start-f808dbe1",0]],"generated":(b=>{var
|
||||
c=b,a=b?.module?.export||b;return{"env":{"caml_ba_kind_of_typed_array":()=>{throw new
|
||||
Error("caml_ba_kind_of_typed_array not implemented")},"caml_exn_with_js_backtrace":()=>{throw new
|
||||
Error("caml_exn_with_js_backtrace not implemented")},"caml_int64_create_lo_mi_hi":()=>{throw new
|
||||
|
||||
Reference in New Issue
Block a user