Skip to content

Commit 879af45

Browse files
committed
Randomize ASCII art mask position on mouse enter
- the ascii pattern should have variation but consistent distribution on each mouse-enter └── packages └── ui └── src └── components └── editor └── prompt ├── AsciiArtEffect │ ├── AsciiArtEffect.module.scss │ └── AsciiArtEffect.tsx └── TargetButton └── TargetButton.tsx
1 parent 0a05a9b commit 879af45

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

‎packages/ui/src/components/editor/prompt/AsciiArtEffect/AsciiArtEffect.module.scss‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@
2727
-webkit-mask-repeat: repeat;
2828
mask-size: var(--mask-size, 88px 88px);
2929
-webkit-mask-size: var(--mask-size, 88px 88px);
30+
mask-position: var(--mask-offset-x, 0px) var(--mask-offset-y, 0px);
31+
-webkit-mask-position: var(--mask-offset-x, 0px) var(--mask-offset-y, 0px);
3032
}

‎packages/ui/src/components/editor/prompt/AsciiArtEffect/AsciiArtEffect.tsx‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,19 @@ export const AsciiArtEffect = ({ density = 1 }: Props) => {
2727
el.style.setProperty('--mouse-y', `${y}px`)
2828
}
2929

30+
const handle_mouse_enter = () => {
31+
el.style.setProperty('--mask-offset-x', `${Math.floor(Math.random() * 100)}px`)
32+
el.style.setProperty('--mask-offset-y', `${Math.floor(Math.random() * 100)}px`)
33+
}
34+
3035
parent.addEventListener('mousemove', handle_mouse_move)
3136
parent.addEventListener('mouseleave', handle_mouse_leave)
37+
parent.addEventListener('mouseenter', handle_mouse_enter)
3238

3339
return () => {
3440
parent.removeEventListener('mousemove', handle_mouse_move)
3541
parent.removeEventListener('mouseleave', handle_mouse_leave)
42+
parent.removeEventListener('mouseenter', handle_mouse_enter)
3643
}
3744
}, [])
3845

0 commit comments

Comments
 (0)