Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

JS / DOM / Web API ledger

Legend: ✅ supported today · 🟡 not supported yet, but planned · ⛔ won’t be supported. Tier T0–T3.

document

APIStatusTierNotes
document.getElementById(id)T0
document.querySelector(sel)T0type/class/id/descendant + attribute/grouping/pseudo selectors
document.querySelectorAll(sel)T0returns a real JS array
document.createElement(tag)T0
document.createTextNode(data)T0
document.body / document.head🟡T1reachable via querySelector("body") today
document.getElementsByClassName / getElementsByTagName🟡T2use querySelectorAll for now
document.createDocumentFragment()🟡T2

Node / Element — structure

APIStatusTierNotes
appendChild / removeChildT0
insertBefore / replaceChildT0
parentNode / childNodes / childrenT0children = element children only
firstChild / nextSibling / previousSiblingT1
nodeType / tagNameT1tagName upper-cased, element-only
cloneNode🟡T2
remove / closest / matches / append / prepend🟡T2use removeChild/appendChild for now
innerHTML (get/set)🟡T1parse-on-set is roadmap

Element — attributes / content / state

APIStatusTierNotes
getAttribute / setAttribute / removeAttribute / hasAttributeT0
id / classNameT0
textContent / innerTextT0
text node .data / .nodeValue / .textContent (get/set)T0mutate a Text node’s value from JS — Supersolid text bindings
value (get/set)T1text inputs render value
checked (get/set)T1drives :checked
classList.add/remove/toggle/containsT0
style.setProperty / getPropertyValueT1inline style
style.<camelCase> (el.style.color = …)🟡T1use setProperty for now
dataset🟡T2use getAttribute("data-*") for now
getBoundingClientRect() / getComputedStyle()🟡T2needs post-layout read-back
focus() / blur()🟡T1focus is set on click today

Events

APIStatusTierNotes
addEventListener / removeEventListenerT0capture flag honored
capture → target → bubble dispatchT0W3C order
event.target / currentTargetT0
event.type / defaultPreventedT0
event.preventDefault / stopPropagation / stopImmediatePropagationT0
clickT0on pointer click
change (checkbox)T1fired on checkbox toggle
input (text field)T1fired on character typed
keydown / keyupT1dispatched to focused node
event.keyT1key identity, e.g. "Enter", "Backspace", "a"
event.keyCode / code🟡T1not exposed yet — use event.key
event.clientX/Y / offsetX/Y🟡T2pointer coordinates not exposed yet
dispatchEvent / new CustomEvent / new Event🟡T2
submit🟡T1no <form> submit wiring yet
mouseover / mouseout / focus / blur events🟡T1hover state exists in CSS; JS events roadmap

Globals

APIStatusTierNotes
standard ES built-ins (JSON, Math, Date, Promise, Array, Map, Set, RegExp)T0full ECMAScript, incl. async/await
console.log/warn/error/infoT0
requestAnimationFrame / cancelAnimationFrame🟡T1use setInterval for now
console.debug/trace/table/group🟡T2not installed — calls throw TypeError; roadmap to stub for graceful degradation
setTimeout / setInterval / clearTimeout / clearIntervalT1driven by Bevy’s clock
window (alias of globalThis)T1
window.innerWidth / innerHeight + resize🟡T2viewport size not exposed yet
alert / confirm / promptno modal UI; blocking dialogs don’t fit the frame loop
window.bevy.send(name, data)T1JS → ECS
window.bevy.on(name, cb)T1ECS → JS
window.bevy.query(path)🟡T2async state read — Phase 2
history.pushState / replaceState / popstate / location🟡T3in-memory routing state
fetch / XMLHttpRequestnetwork; warn-and-reject stub only
localStorage / cookieout of scope (games persist via ECS)

Reserved globals

The Supersolid framework installs its own globals (documented on the Supersolid framework page). Authored code shares the global namespace with them, so don’t shadow these names:

KindReserved names
Reactive corecreateSignal, createEffect, createMemo, createRoot, createContext, useContext, onMount, onCleanup, untrack, batch
Render / control flowrender, Show, For, Index, Switch, Match
Framework namespace$ss (compiler-internal helpers)
Bridgewindow.bevy
PROJECTSUPERUI · BEVY UI
DRAWN BYSTROWK
SCALENOT TO SCALE
REVR1 · 0.1 EARLY BUILD
LICENCEMIT / APACHE-2.0