···
2
-
import { renderDate } from '$lib/dateFmt';
import { genDollcode } from '$lib/dollcode';
4
-
import Tooltip from './tooltip.svelte';
···
14
-
let { top, left, kind = 'normal', visits, id }: Props = $props();
12
+
let { top, left, kind = 'normal', visits }: Props = $props();
16
-
const reverse = Math.random() > 0.35;
let rotation = $state((Math.random() - 0.5) * 0.4);
const opacity = Math.min(Math.random() * 0.3 + 0.4, 0.7);
···
let src = $derived(closed ? `/eyes/closed.webp` : `/eyes/${kind}_${look}.webp`);
34
+
// generate dollcode based on time, but mod by 3 hours
35
+
const timeDollcode = genDollcode((visits[0] / 1000) % (60 * 60 * 24));
36
+
const visitsDollcode = genDollcode(visits.length);
<!-- svelte-ignore a11y_mouse_events_have_key_events -->
<!-- svelte-ignore a11y_no_static_element_interactions -->
44
+
class="group flex gap-4 items-center scale-[0.75]"
48
-
y="translate-y-none"
49
-
targetY="group-hover:translate-y-none"
50
-
x="-translate-x-[20%]"
51
-
targetX="group-hover:-translate-x-[20%]"
50
+
flex-direction: column-reverse;
52
+
onmouseover={() => {
55
+
onmouseleave={() => {
53
-
{#snippet tooltipContent()}
54
-
<p class="font-monospace" style="min-width: {id.length + 15}ch;">
55
-
//observant/id={id}<br />
56
-
/date="{renderDate(
59
-
/count={visits.length}/
63
-
class="group flex gap-4 items-center scale-[0.75]"
66
-
flex-direction: {reverse ? 'column-reverse' : 'column'};
68
-
onmouseover={() => {
71
-
onmouseleave={() => {
75
-
<span class="eye-text !text-base">{genDollcode(visits.length)}</span>
76
-
<!-- svelte-ignore a11y_missing_attribute -->
77
-
<img class="w-24 eye-image" style="transform: rotate({rotation}rad);" {src} />
78
-
<span class="eye-text">{genDollcode(visits[0])}</span>
59
+
<span class="eye-text !text-base">{visitsDollcode}</span>
60
+
<!-- svelte-ignore a11y_missing_attribute -->
61
+
<img class="w-24 eye-image" style="transform: rotate({rotation}rad);" {src} />
62
+
<span class="eye-text">{timeDollcode}</span>
84
-
@apply text-xs [font-family:Doll_Mono] opacity-30 group-hover:opacity-80;
67
+
@apply text-sm [font-family:Doll_Mono] opacity-30 group-hover:opacity-80;
@apply opacity-50 group-hover:opacity-100;