import { h, frag, bootstrap, Rung, Capsule } from "../index"; class AppJSX extends Rung { private counter = Capsule.new(0); private rungs = Capsule.new(null); constructor() { super({}); this.counter.watch((count) => this.onCounterUpdate(count)); } private onCounterUpdate(count: number) { const rungs = Array(count); for (let i = 0; i < rungs.length; i++) { rungs[i] =
; } this.rungs.val?.replaceChildren(...rungs); } build() { return <>

Ladder

{this.counter}
; } } class AppHypertext extends Rung { private counter = Capsule.new(0); private rungs = Capsule.new(null); constructor() { super({}); this.counter.watch((count) => this.onCounterUpdate(count)); } private onCounterUpdate(count: number) { const rungs = Array(count); for (let i = 0; i < rungs.length; i++) { rungs[i] =
; } this.rungs.val?.replaceChildren(...rungs); } build() { return frag(null, h("h1", {}, "Ladder"), h("div", {className: "counter-widget"}, h("button", {onclick: () => this.counter.val--}, "-"), h("span", {className: "counter"}, this.counter), h("button", {onclick: () => this.counter.val++}, "+"), ), h("div", {saveTo: this.rungs}), ); } } const appJsx = new AppJSX(); const appH = new AppHypertext(); bootstrap(appJsx, "app");