-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathviewscreen-stl.html
More file actions
126 lines (114 loc) · 3.4 KB
/
viewscreen-stl.html
File metadata and controls
126 lines (114 loc) · 3.4 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!doctype html>
<html lang=en>
<meta content=initial-scale=1,width=device-width name=viewport>
<meta charset=utf8>
<title>viewscreen: stl</title>
<style>
:root {
--color-accent-fg: #0969da;
--color-btn-active-bg: hsl(220,14%,93%);
--color-btn-active-border: rgba(31,35,40,0.15);
--color-btn-bg: #f6f8fa;
--color-btn-border: rgba(31,35,40,0.15);
--color-btn-hover-bg: #f3f4f6;
--color-btn-hover-border: rgba(31,35,40,0.15);
--color-btn-inset-shadow: inset 0 1px 0 rgba(255,255,255,0.25);
--color-btn-shadow: 0 1px 0 rgba(31,35,40,0.04);
--color-btn-text: #24292f;
--color-primer-fg-disabled: #8c959f;
color-scheme: light;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
}
@media (prefers-color-scheme: dark) {
:root {
--color-accent-fg: #2f81f7;
--color-btn-active-bg: hsl(212, 12%, 18%);
--color-btn-active-border: #6e7681;
--color-btn-bg: #21262d;
--color-btn-border: rgba(240, 246, 252, 0.1);
--color-btn-hover-bg: #30363d;
--color-btn-hover-border: #8b949e;
--color-btn-inset-shadow: 0 0 transparent;
--color-btn-shadow: 0 0 transparent;
--color-btn-text: #c9d1d9;
--color-primer-fg-disabled: #484f58;
color-scheme: dark;
}
}
* {
box-sizing: border-box;
}
body {
aspect-ratio: 8 / 5;
margin: 0;
}
button {
appearance: none;
background-color: var(--color-btn-bg);
border-radius: 6px;
border: 1px solid var(--color-btn-border);
box-shadow: var(--color-btn-shadow), var(--color-btn-inset-shadow);
color: var(--color-btn-text);
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: 500;
line-height: 20px;
padding: 5px 7px;
position: relative;
transition: 80ms cubic-bezier(0.33, 1, 0.68, 1);
transition-property: color, background-color, box-shadow, border-color;
user-select: none;
vertical-align: middle;
white-space: nowrap;
}
button:disabled {
background-color: var(--color-btn-bg);
border-color: var(--color-btn-border);
color: var(--color-primer-fg-disabled);
}
button:hover {
background-color: var(--color-btn-hover-bg);
border-color: var(--color-btn-hover-border);
transition-duration: .1s;
}
button:focus {
box-shadow: none;
outline: 2px solid var(--color-accent-fg);
outline-offset: -2px;
}
button:active {
background-color: var(--color-btn-active-bg);
border-color: var(--color-btn-active-border);
transition: none;
}
.panel {
bottom: 0.5ex;
display: grid;
gap: 0.5ex;
grid-template-columns: 1fr 1fr 1fr;
position: absolute;
right: 0.5ex;
z-index: 1;
}
</style>
<script type=module>
import {viewscreenStl} from './viewscreen-stl.min.js'
const id = window.location.hash.slice(1)
if (!id) throw new Error('Expected `id` in hash')
const parent = window.parent
if (!parent) throw new Error('Expected parent window')
const viewer = viewscreenStl(document.body, {
onSizeSuggestion(width, height) {
parent.postMessage({id, type: 'resize', value: {height, width}})
},
onResolve() {
parent.postMessage({id, type: 'resolve'})
}
})
window.addEventListener('message', function (event) {
if (event.data.type === 'content') {
viewer.change(event.data.value)
}
})
</script>