diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2022-07-04 21:49:59 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2022-07-04 21:49:59 +0200 |
| commit | c336b229424eeb95b29a2d450b298c5d2f44fc01 (patch) | |
| tree | 1bcf6ae7b6fa240f924c949079f75e7d0fbdfa91 /src/routes | |
| parent | f74650b0ae59a59a7b7c6d5beb984015680fbfb5 (diff) | |
Allow dragging
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/index.svelte | 82 |
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> |