-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
52 lines (48 loc) · 2.44 KB
/
Copy pathindex.html
File metadata and controls
52 lines (48 loc) · 2.44 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
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Defense-in-depth: the app's only threat surface is file-derived content
rendered into the DOM. A strict script-src blocks any injected script
even if escaping is ever incomplete. No third-party/network resources. -->
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'self'; worker-src 'self' blob:; object-src 'none'; base-uri 'self'; form-action 'none'"
/>
<title>Cave Survey Viewer</title>
<link rel="icon" type="image/png" href="/favicon.png" />
<meta
name="description"
content="A web-native 3D viewer for cave survey data. Runs entirely in your browser — nothing is uploaded."
/>
</head>
<body>
<div id="app">
<div id="viewport"></div>
<div id="panel"></div>
<div id="controls-host"></div>
<div id="toolbar">
<button id="btn-info" class="mobile-only" type="button" title="Show survey info">Info</button>
<button id="btn-layers" class="mobile-only" type="button" title="Show view controls">Layers</button>
<button id="btn-open" type="button">Open file…</button>
<button id="btn-example" type="button">Load example cave</button>
<button id="btn-fit" type="button" title="Fit to view (F)">Fit view</button>
<button id="btn-snapshot" type="button" title="Download a PNG of the current view">Save PNG</button>
<button id="btn-measure" type="button" title="Measure between two stations">Measure</button>
<button
id="btn-controls"
type="button"
title="Toggle what left-drag does"
>Drag: Pan</button>
<button id="btn-units" type="button" title="Switch between metric and imperial units">Units: Metric</button>
<button id="btn-theme" type="button" title="Switch between light and dark theme">Theme: Dark</button>
<input id="file-input" type="file" accept=".3d,.plt,.lox,.top" hidden />
</div>
<div id="drop-overlay">
<div class="drop-message">Drop a Survex <code>.3d</code>, Compass <code>.plt</code>, Therion <code>.lox</code> or PocketTopo <code>.top</code> file to open</div>
</div>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>