summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/hooks
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-04-02 17:40:03 +0800
committerGitHub <[email protected]>2026-04-02 09:40:03 +0000
commit69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3 (patch)
tree832dc97a20d9e1ee0ac4fba7b9daa689691a18c3 /packages/ui/src/hooks
parent327f62526a7f60c1c67ae017d1b105466bb730e9 (diff)
downloadopencode-69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3.tar.gz
opencode-69d047ae7dd84d4c4de41e09b1ecee88e3fdc3d3.zip
cleanup event listeners with solid-primitives/event-listener (#20619)
Diffstat (limited to 'packages/ui/src/hooks')
-rw-r--r--packages/ui/src/hooks/create-auto-scroll.tsx18
1 files changed, 3 insertions, 15 deletions
diff --git a/packages/ui/src/hooks/create-auto-scroll.tsx b/packages/ui/src/hooks/create-auto-scroll.tsx
index 3dc520c62..9733b094e 100644
--- a/packages/ui/src/hooks/create-auto-scroll.tsx
+++ b/packages/ui/src/hooks/create-auto-scroll.tsx
@@ -1,5 +1,6 @@
-import { createEffect, on, onCleanup } from "solid-js"
+import { createEffect, createSignal, on, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
+import { makeEventListener } from "@solid-primitives/event-listener"
import { createResizeObserver } from "@solid-primitives/resize-observer"
export interface AutoScrollOptions {
@@ -14,7 +15,6 @@ export function createAutoScroll(options: AutoScrollOptions) {
let settling = false
let settleTimer: ReturnType<typeof setTimeout> | undefined
let autoTimer: ReturnType<typeof setTimeout> | undefined
- let cleanup: (() => void) | undefined
let auto: { top: number; time: number } | undefined
const threshold = () => options.bottomThreshold ?? 10
@@ -216,26 +216,14 @@ export function createAutoScroll(options: AutoScrollOptions) {
onCleanup(() => {
if (settleTimer) clearTimeout(settleTimer)
if (autoTimer) clearTimeout(autoTimer)
- if (cleanup) cleanup()
})
return {
scrollRef: (el: HTMLElement | undefined) => {
- if (cleanup) {
- cleanup()
- cleanup = undefined
- }
-
- scroll = el
-
if (!el) return
updateOverflowAnchor(el)
- el.addEventListener("wheel", handleWheel, { passive: true })
-
- cleanup = () => {
- el.removeEventListener("wheel", handleWheel)
- }
+ makeEventListener(el, "wheel", handleWheel, { passive: true })
},
contentRef: (el: HTMLElement | undefined) => setStore("contentRef", el),
handleScroll,