diff --git a/src/lib/icons.spec.ts b/src/lib/icons.spec.ts index 8402406b..c34dce43 100644 Binary files a/src/lib/icons.spec.ts and b/src/lib/icons.spec.ts differ diff --git a/src/lib/icons/audio-lines.svelte b/src/lib/icons/audio-lines.svelte index 57d618e6..30a63b80 100644 --- a/src/lib/icons/audio-lines.svelte +++ b/src/lib/icons/audio-lines.svelte @@ -1,4 +1,5 @@
+ import { untrack } from 'svelte'; import type { IconProps } from './types.js'; let { @@ -49,7 +50,9 @@ } function handleMouseEnter() { - if (animate) return; + // hoverAnimate doubles as the in-flight flag: guard on it, not on the + // animate union, or a parent holding animate=true would block every blink. + if (hoverAnimate) return; hoverAnimate = true; animateEyes(13, 15, 14, 14, 250, 200).then(() => { animateEyes(14, 14, 13, 15, 250).then(() => { @@ -58,6 +61,11 @@ }); } + // The blink is driven imperatively, so the prop has to trigger it explicitly. + $effect(() => { + if (animateProp) untrack(handleMouseEnter); + }); + $effect(() => () => clearTimeout(entryTimer)); diff --git a/src/lib/icons/eye.svelte b/src/lib/icons/eye.svelte index ae1b5d12..98921599 100644 --- a/src/lib/icons/eye.svelte +++ b/src/lib/icons/eye.svelte @@ -1,4 +1,5 @@ diff --git a/src/lib/icons/message-circle-more.svelte b/src/lib/icons/message-circle-more.svelte index b8e1a742..d1d3d6d2 100644 --- a/src/lib/icons/message-circle-more.svelte +++ b/src/lib/icons/message-circle-more.svelte @@ -1,4 +1,5 @@ diff --git a/src/lib/icons/message-square-more.svelte b/src/lib/icons/message-square-more.svelte index ce9e6d93..9f3f42f1 100644 --- a/src/lib/icons/message-square-more.svelte +++ b/src/lib/icons/message-square-more.svelte @@ -1,4 +1,5 @@ diff --git a/static/r/audio-lines.json b/static/r/audio-lines.json index 98df4ab1..fd42a79a 100644 --- a/static/r/audio-lines.json +++ b/static/r/audio-lines.json @@ -9,7 +9,7 @@ { "type": "registry:component", "target": "~/src/lib/components/movingicons/audio-lines.svelte", - "content": "\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
\n\n\n" + "content": "\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\n\n\n" } ], "registryDependencies": [] diff --git a/static/r/bot.json b/static/r/bot.json index e7b1227f..1ebb8579 100644 --- a/static/r/bot.json +++ b/static/r/bot.json @@ -9,7 +9,7 @@ { "type": "registry:component", "target": "~/src/lib/components/movingicons/bot.svelte", - "content": "\n\n
\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
\n\n\n" + "content": "\n\n
\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
\n\n\n" } ], "registryDependencies": [] diff --git a/static/r/eye.json b/static/r/eye.json index b2dbd293..1bcf093c 100644 --- a/static/r/eye.json +++ b/static/r/eye.json @@ -9,7 +9,7 @@ { "type": "registry:component", "target": "~/src/lib/components/movingicons/eye.svelte", - "content": "\n\n
\n\t\n\t\t\n\t\t\n\n\t\t\n\t\n
\n\n\n" + "content": "\n\n
\n\t\n\t\t\n\t\t\n\n\t\t\n\t\n
\n\n\n" } ], "registryDependencies": [] diff --git a/static/r/message-circle-more.json b/static/r/message-circle-more.json index c9d962b0..136da641 100644 --- a/static/r/message-circle-more.json +++ b/static/r/message-circle-more.json @@ -9,7 +9,7 @@ { "type": "registry:component", "target": "~/src/lib/components/movingicons/message-circle-more.svelte", - "content": "\n\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n
\n\n\n" + "content": "\n\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n
\n\n\n" } ], "registryDependencies": [] diff --git a/static/r/message-square-more.json b/static/r/message-square-more.json index 6819da63..e405d279 100644 --- a/static/r/message-square-more.json +++ b/static/r/message-square-more.json @@ -9,7 +9,7 @@ { "type": "registry:component", "target": "~/src/lib/components/movingicons/message-square-more.svelte", - "content": "\n\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n
\n\n\n" + "content": "\n\n
\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n
\n\n\n" } ], "registryDependencies": []