-
Notifications
You must be signed in to change notification settings - Fork 1
/
example.ts
30 lines (26 loc) · 866 Bytes
/
example.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import simpleExample from "./examples/simple"
import shapeExample from "./examples/shape"
import shaderExample from "./examples/shader"
const select = document.getElementById("example-select")!
const root = document.getElementById("root")!
const examples = new Map<string, (elem: HTMLCanvasElement) => void>()
examples.set("simple", simpleExample)
examples.set("shape", shapeExample)
examples.set("shader", shaderExample)
function loadExample(name: string) {
const example = examples.get(name)
if (example) {
while (root.firstChild) {
root.removeChild(root.firstChild)
}
const canvas = document.createElement("canvas")
canvas.width = 400
canvas.height = 400
root.appendChild(canvas)
example(canvas)
}
}
select.addEventListener("change", e => {
loadExample((e.target as HTMLSelectElement).value)
})
loadExample("simple")