Skip to content

Commit 5bca99e

Browse files
committed
add github page demo
1 parent a4cb840 commit 5bca99e

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

index.html

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<!DOCTYPE html>
2+
<head lang="en">
3+
<meta charset="UTF-8">
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
5+
<title>blobs</title>
6+
<script src="https://unpkg.com/blobs"></script>
7+
</head>
8+
<body>
9+
<style>
10+
body {
11+
display: table;
12+
height: 100%;
13+
left: 0;
14+
margin: 0;
15+
position: absolute;
16+
top: 0;
17+
width: 100%;
18+
}
19+
20+
.middle {
21+
display: table-cell;
22+
text-align: center;
23+
vertical-align: middle;
24+
}
25+
26+
main {
27+
display: inline-block;
28+
margin: 0 auto;
29+
}
30+
31+
#blob {
32+
display: inline-block;
33+
vertical-align: middle;
34+
}
35+
36+
#options {
37+
display: inline-block;
38+
font-size: 2em;
39+
text-align: left;
40+
vertical-align: middle;
41+
}
42+
43+
#error {
44+
color: red;
45+
font-family: monospace;
46+
font-size: 1.5em;
47+
text-align: center;
48+
}
49+
50+
@media (max-width: 320px) {
51+
#blob {
52+
display: block;
53+
}
54+
}
55+
56+
</style>
57+
58+
<div class="middle">
59+
<main>
60+
<div id="blob"></div><!--
61+
--><pre id="options" contenteditable oninput="changed()">
62+
{
63+
size: 600,
64+
complexity: 0.2,
65+
contrast: 0.4,
66+
color: "pink",
67+
stroke: {
68+
width: 2.3,
69+
color: "red",
70+
},
71+
guides: true,
72+
seed: "abcd",
73+
}</pre>
74+
<div id="error">&nbsp;</div>
75+
</main>
76+
</div>
77+
78+
79+
<!-- Regenerate the blob from current options. -->
80+
<script>
81+
var blobElem = document.getElementById("blob");
82+
var optionsElem = document.getElementById("options");
83+
var errorElem = document.getElementById("error");
84+
85+
function refresh() {
86+
if (!blobElem || !optionsElem || !errorElem) return;
87+
88+
var options = optionsElem.innerHTML;
89+
90+
var parsedOptions;
91+
try {
92+
parsedOptions = eval("(" + options + ")");
93+
} catch (e) {
94+
errorElem.innerHTML = "Could not parse options: " + e.toString();
95+
console.warn(e);
96+
return;
97+
}
98+
99+
try {
100+
blobElem.innerHTML = blobs(parsedOptions);
101+
} catch (e) {
102+
errorElem.innerHTML = e.toString();
103+
console.warn(e);
104+
}
105+
}
106+
107+
// Immediate update when page is loaded.
108+
refresh();
109+
</script>
110+
111+
<!-- Wait for a pause in typing to refresh. -->
112+
<script>
113+
var delay = 400;
114+
var timeout;
115+
116+
function changed() {
117+
// Error state is removed when new input is detected.
118+
errorElem.innerHTML = "&nbsp;";
119+
120+
clearTimeout(timeout);
121+
timeout = setTimeout(refresh, delay);
122+
}
123+
</script>
124+
</body>
125+
</html>

0 commit comments

Comments
 (0)