import { renderLatex } from "@ofb/katex"; import { createMemo, createSignal } from "solid-js"; function DistributiveAreaDemo() { const [a, setA] = createSignal(2); const [b, setB] = createSignal(3); const [c, setC] = createSignal(5); const [showNumbers, setShowNumbers] = createSignal(true); const leftArea = createMemo(() => a() * b()); const rightArea = createMemo(() => a() * c()); const total = createMemo(() => leftArea() + rightArea()); const formulaHtml = createMemo(() => { if (showNumbers()) { return renderLatex( `${a()}\\times(${b()}+${c()}) = ${a()}\\times${b()} + ${a()}\\times${c()} = ${leftArea()} + ${rightArea()} = ${total()}` ); } return renderLatex("a(b+c) = a \\times b + a \\times c"); }); const leftLabel = createMemo(() => showNumbers() ? `${a()} \\times ${b()} = ${leftArea()}` : "a \\times b" ); const rightLabel = createMemo(() => showNumbers() ? `${a()} \\times ${c()} = ${rightArea()}` : "a \\times c" ); return (

Distributive property

One rectangle of height a and width b + c splits into two areas a×b{" "} and a×c.
setA(Number(e.currentTarget.value))} />
setB(Number(e.currentTarget.value))} />
setC(Number(e.currentTarget.value))} />
); } export default DistributiveAreaDemo;