aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2022-07-04 21:49:59 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2022-07-04 21:49:59 +0200
commitc336b229424eeb95b29a2d450b298c5d2f44fc01 (patch)
tree1bcf6ae7b6fa240f924c949079f75e7d0fbdfa91 /src/routes
parentf74650b0ae59a59a7b7c6d5beb984015680fbfb5 (diff)
Allow dragging
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/index.svelte82
1 files changed, 80 insertions, 2 deletions
diff --git a/src/routes/index.svelte b/src/routes/index.svelte
index 5982b0a..f2544cf 100644
--- a/src/routes/index.svelte
+++ b/src/routes/index.svelte
@@ -1,2 +1,80 @@
-<h1>Welcome to SvelteKit</h1>
-<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>
+<script>
+
+ import { browser } from '$app/env';
+
+ const dotSize = 24;
+ $: x = 0;
+ $: y = 0;
+
+ if (browser) {
+ document.documentElement.style.setProperty('--dot-size', dotSize + 'px');
+ }
+
+
+ $: {
+ if (browser) {
+ document.documentElement.style.setProperty('--dot-x', dotSize - x % dotSize + 'px');
+ document.documentElement.style.setProperty('--dot-y', dotSize - y % dotSize + 'px');
+ }
+ }
+
+ let dragging = false;
+
+ const moveCanvas = function moveCanvas(event) {
+
+ if (dragging) {
+ x -= event.x - dragging.x;
+ y -= event.y - dragging.y;
+ dragging.x = event.x;
+ dragging.y = event.y;
+ }
+ }
+
+ const startDragging = function startDragging(event) {
+ dragging = {
+ x: event.x,
+ y: event.y
+ };
+ }
+
+ const stopDragging = function startDragging() {
+ dragging = null;
+ }
+
+ const formatCoordinate = function formatCoordinate(coordinate) {
+ const sign = Math.sign(coordinate) === 1 ? '' : '-';
+ const value = Math.abs(coordinate).toString(16).padStart(4, 0);
+ return sign + value;
+ }
+
+</script>
+
+<div class="canvas" on:mousedown={startDragging} on:mouseup={stopDragging} on:mousemove={moveCanvas}>
+</div>
+
+<div class="hud">
+ ({ formatCoordinate(x) }, { formatCoordinate(y) })
+</div>
+
+<style>
+ .canvas {
+ user-select: none;
+ background: radial-gradient(#aaa, #aaa 1px, #fff 1px, #fff var(--dot-size));
+ background-size: var(--dot-size) var(--dot-size);
+ background-position: var(--dot-x) var(--dot-y);
+ padding: 0;
+ margin: 0;
+ width: 100vw;
+ height: 100vh;
+ }
+
+ .hud {
+ background-color: #fff;
+ padding: 4px;
+ position: fixed;
+ bottom: 2px;
+ right: 2px;
+ font-smooth: never;
+ -webkit-font-smoothing : none;
+ }
+</style>