Spaces:
Runtime error
Runtime error
File size: 1,506 Bytes
66ed450 304976c 66ed450 32561d8 423b87b d11af81 7d4e291 dc37474 8239db2 7cb7420 e5b9b7e 7cb7420 66ed450 8239db2 dc37474 d11af81 304976c d11af81 8239db2 d11af81 d2b90f4 8239db2 304976c 8239db2 304976c 66ed450 7d4e291 66ed450 d2b90f4 d11af81 d2b90f4 66ed450 |
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 |
<script lang="ts">
import LoadingIcon from '$lib/LoadingIcon.svelte';
import type { ZoomTransform } from 'd3-zoom';
export let transform: ZoomTransform;
export let color = '';
export let position = { x: 0, y: 0 };
export let prompt = '';
export let loadingState = '';
export let interactive = false;
export let isDragging = false;
export let isLoading = false;
$: coord = {
x: transform.applyX(position.x),
y: transform.applyY(position.y)
};
</script>
<div
class="frame z-0 relative grid grid-cols-3 grid-rows-3
{!interactive ? 'pointer-events-none touch-none' : ''}
{isDragging ? 'cursor-grabbing' : 'cursor-grab'}"
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k}); border-color: ${color};`}
>
{#if loadingState}
<div class="col-span-2 row-start-1">
<span class="text-white drop-shadow-lg">{loadingState}</span>
</div>
{/if}
<div class="small-frame z-0 flex relative" />
{#if isLoading}
<div class="col-start-2 row-start-2">
<LoadingIcon />
</div>
{/if}
<h2 class="text-lg">Click to paint</h2>
<div class="absolute bottom-0 font-bold text-lg">{prompt}</div>
</div>
<style lang="postcss" scoped>
.frame {
@apply absolute top-0 left-0 border-2 border-spacing-3 border-sky-500 w-[512px] h-[512px];
transform-origin: 0 0;
}
.small-frame {
@apply pointer-events-none touch-none absolute top-1/2 left-1/2 border-2 border-spacing-3 w-[256px] h-[256px];
transform: translateX(-50%) translateY(-50%);
}
</style>
|