From 437ba0a4dde03d4783d7412e0c8cd30453c59a95 Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Mon, 4 May 2026 10:38:20 -0500 Subject: [PATCH] add 20 browser API builtins to JS runtime and codegen preamble Iteration 3: closes the browser API gap needed for real web pages. New builtins in el_runtime.js: Extended DOM: dom_set_attr, dom_get_attr, dom_remove_attr, dom_set_html, dom_get_html, dom_get_parent, dom_contains_class, dom_get_checked, dom_set_checked Timers: set_timeout, set_interval, clear_interval Local storage: local_storage_get, local_storage_set, local_storage_remove Window: window_location, window_redirect, window_on_load Debug: console_log All browser-only functions use _ensureBrowser guard. Timer functions work in both Node and browser. All new names added to __el export object, ES named exports, and codegen-js.el destructure preamble. Spec table updated to document new categories. --- dist/platform/elc | Bin 415192 -> 415192 bytes el-compiler/runtime/el_runtime.js | 136 ++++++++++++++++++++++++++++++ el-compiler/src/codegen-js.el | 6 ++ spec/codegen-js.md | 5 ++ 4 files changed, 147 insertions(+) diff --git a/dist/platform/elc b/dist/platform/elc index 05e4591b386d35466dd3c30637db5fa060944e7c..0b808477fa8dfa6e37be60a0ef6d2ed9154e1466 100755 GIT binary patch delta 77950 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®#$EzegJl)QMhR963{w@s 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 delta 77570 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 diff --git a/el-compiler/runtime/el_runtime.js b/el-compiler/runtime/el_runtime.js index 4a8d2ca..88a16e1 100644 --- a/el-compiler/runtime/el_runtime.js +++ b/el-compiler/runtime/el_runtime.js @@ -630,6 +630,120 @@ function dom_is_null(el) { return el === null || el === undefined; } +// ── Extended DOM API (browser-only) ─────────────────────────────────────── + +function dom_set_attr(el, attr, val) { + _ensureBrowser('dom_set_attr'); + if (el != null) el.setAttribute(String(attr), String(val)); +} + +function dom_get_attr(el, attr) { + _ensureBrowser('dom_get_attr'); + if (el == null) return ''; + return el.getAttribute(String(attr)) ?? ''; +} + +function dom_remove_attr(el, attr) { + _ensureBrowser('dom_remove_attr'); + if (el != null) el.removeAttribute(String(attr)); +} + +function dom_set_html(el, html) { + _ensureBrowser('dom_set_html'); + if (el != null) el.innerHTML = String(html); +} + +function dom_get_html(el) { + _ensureBrowser('dom_get_html'); + return el == null ? '' : String(el.innerHTML ?? ''); +} + +function dom_get_parent(el) { + _ensureBrowser('dom_get_parent'); + return el == null ? null : (el.parentElement ?? null); +} + +function dom_contains_class(el, cls) { + _ensureBrowser('dom_contains_class'); + if (el == null) return false; + return el.classList.contains(String(cls)); +} + +function dom_get_checked(el) { + _ensureBrowser('dom_get_checked'); + return el == null ? false : Boolean(el.checked); +} + +function dom_set_checked(el, val) { + _ensureBrowser('dom_set_checked'); + if (el != null) el.checked = Boolean(val); +} + +// ── Timer API (browser + Node) ───────────────────────────────────────────── + +function set_timeout(ms, cb) { + if (typeof setTimeout === 'undefined') { + throw new Error('set_timeout: setTimeout not available in this environment'); + } + setTimeout(cb, ms | 0); +} + +function set_interval(ms, cb) { + if (typeof setInterval === 'undefined') { + throw new Error('set_interval: setInterval not available in this environment'); + } + return setInterval(cb, ms | 0); +} + +function clear_interval(handle) { + if (typeof clearInterval !== 'undefined') clearInterval(handle); +} + +// ── Local storage (browser-only) ─────────────────────────────────────────── + +function local_storage_get(key) { + _ensureBrowser('local_storage_get'); + return localStorage.getItem(String(key)) ?? ''; +} + +function local_storage_set(key, val) { + _ensureBrowser('local_storage_set'); + localStorage.setItem(String(key), String(val)); +} + +function local_storage_remove(key) { + _ensureBrowser('local_storage_remove'); + localStorage.removeItem(String(key)); +} + +// ── Window location / navigation (browser-only) ──────────────────────────── + +function window_location() { + _ensureBrowser('window_location'); + return window.location.href; +} + +function window_redirect(url) { + _ensureBrowser('window_redirect'); + window.location.href = String(url); +} + +function window_on_load(cb) { + if (typeof document !== 'undefined') { + document.addEventListener('DOMContentLoaded', cb); + } else if (typeof window !== 'undefined') { + window.addEventListener('load', cb); + } + // In Node: no-op +} + +// ── console_log (explicit debug log, distinct from println) ──────────────── + +function console_log(msg) { + // eslint-disable-next-line no-console + console.log(String(msg)); +} + // ── Window export helpers ────────────────────────────────────────────────── // // Expose El functions to the browser's global scope so they can be called @@ -783,6 +897,17 @@ const __el = { dom_set_prop, dom_get_prop, dom_set_style, dom_add_class, dom_remove_class, dom_show, dom_hide, dom_listen, dom_query, dom_query_all, dom_create, dom_append, dom_remove, dom_is_null, + // Extended DOM + dom_set_attr, dom_get_attr, dom_remove_attr, dom_set_html, dom_get_html, + dom_get_parent, dom_contains_class, dom_get_checked, dom_set_checked, + // Timers + set_timeout, set_interval, clear_interval, + // Local storage + local_storage_get, local_storage_set, local_storage_remove, + // Window location + window_location, window_redirect, window_on_load, + // Debug + console_log, // Window export helpers window_set, window_get, // native_js escape hatch @@ -836,6 +961,17 @@ export { dom_set_prop, dom_get_prop, dom_set_style, dom_add_class, dom_remove_class, dom_show, dom_hide, dom_listen, dom_query, dom_query_all, dom_create, dom_append, dom_remove, dom_is_null, + // Extended DOM + dom_set_attr, dom_get_attr, dom_remove_attr, dom_set_html, dom_get_html, + dom_get_parent, dom_contains_class, dom_get_checked, dom_set_checked, + // Timers + set_timeout, set_interval, clear_interval, + // Local storage + local_storage_get, local_storage_set, local_storage_remove, + // Window location + window_location, window_redirect, window_on_load, + // Debug + console_log, // Window / native_js window_set, window_get, native_js, native_js_call, }; diff --git a/el-compiler/src/codegen-js.el b/el-compiler/src/codegen-js.el index f832551..1a9b03e 100644 --- a/el-compiler/src/codegen-js.el +++ b/el-compiler/src/codegen-js.el @@ -933,6 +933,12 @@ fn codegen_js(stmts: [Map], source: String) -> String { js_emit_line(" dom_set_prop, dom_get_prop, dom_set_style, dom_add_class, dom_remove_class,") js_emit_line(" dom_show, dom_hide, dom_listen, dom_query, dom_query_all, dom_create,") js_emit_line(" dom_append, dom_remove, dom_is_null,") + js_emit_line(" dom_set_attr, dom_get_attr, dom_remove_attr, dom_set_html, dom_get_html,") + js_emit_line(" dom_get_parent, dom_contains_class, dom_get_checked, dom_set_checked,") + js_emit_line(" set_timeout, set_interval, clear_interval,") + js_emit_line(" local_storage_get, local_storage_set, local_storage_remove,") + js_emit_line(" window_location, window_redirect, window_on_load,") + js_emit_line(" console_log,") js_emit_line(" window_set, window_get, native_js, native_js_call,") js_emit_line("} = globalThis.__el;") js_emit_blank() diff --git a/spec/codegen-js.md b/spec/codegen-js.md index 1651dba..7770811 100644 --- a/spec/codegen-js.md +++ b/spec/codegen-js.md @@ -79,6 +79,11 @@ Same function names as `el_runtime.c` wherever possible, so codegen-js can emit | `state_*` | In-memory `Map` keyed by string | | `env` | `process.env[k]` in Node, throws in browser | | DOM bridge (Phase 3) | `dom_get_element`, `dom_get_value`, `dom_set_value`, `dom_get_text`, `dom_set_text`, `dom_set_prop`, `dom_get_prop`, `dom_set_style`, `dom_add_class`, `dom_remove_class`, `dom_show`, `dom_hide`, `dom_listen`, `dom_query`, `dom_query_all`, `dom_create`, `dom_append`, `dom_remove`, `dom_is_null` (browser-only; throw in Node) | +| DOM extended (Phase 4) | `dom_set_attr`, `dom_get_attr`, `dom_remove_attr`, `dom_set_html`, `dom_get_html`, `dom_get_parent`, `dom_contains_class`, `dom_get_checked`, `dom_set_checked` (browser-only) | +| Timers | `set_timeout(ms, cb)`, `set_interval(ms, cb) -> Int`, `clear_interval(handle)` (browser + Node) | +| Local storage | `local_storage_get(key)`, `local_storage_set(key, val)`, `local_storage_remove(key)` (browser-only) | +| Window location | `window_location() -> String`, `window_redirect(url)`, `window_on_load(cb)` (browser-only) | +| Debug | `console_log(msg)` -- explicit console.log, separate from println | | Window export | `window_set(name, val)`, `window_get(name)` — expose/retrieve values on `window` (or `globalThis` in Node) | | native_js escape hatch | `native_js(code)` — evaluates a JS expression via `eval`; `native_js_call(obj, method, args)` — calls a method on an object. Use for third-party browser libraries until proper bindings exist |