This commit is contained in:
LukeParkerDev
2026-04-28 08:02:30 +10:00
parent ed4a41f1e0
commit 81e907febe
7 changed files with 40 additions and 126 deletions
+17 -17
View File
@@ -29,33 +29,33 @@ const Context = createContext<ReturnType<typeof init>>()
function init() {
const [active, setActive] = createSignal<Active | undefined>()
const timer = { current: undefined as ReturnType<typeof setTimeout> | undefined }
const lock = { value: false }
let timer: ReturnType<typeof setTimeout> | undefined
let locked = false
onCleanup(() => {
if (timer.current === undefined) return
clearTimeout(timer.current)
timer.current = undefined
if (timer === undefined) return
clearTimeout(timer)
timer = undefined
})
const close = () => {
const current = active()
if (!current || lock.value) return
lock.value = true
if (!current || locked) return
locked = true
current.onClose?.()
current.setClosing(true)
const id = current.id
if (timer.current !== undefined) {
clearTimeout(timer.current)
timer.current = undefined
if (timer !== undefined) {
clearTimeout(timer)
timer = undefined
}
timer.current = setTimeout(() => {
timer.current = undefined
timer = setTimeout(() => {
timer = undefined
current.dispose()
if (active()?.id === id) setActive(undefined)
lock.value = false
locked = false
}, 100)
}
@@ -80,11 +80,11 @@ function init() {
setActive(undefined)
}
if (timer.current !== undefined) {
clearTimeout(timer.current)
timer.current = undefined
if (timer !== undefined) {
clearTimeout(timer)
timer = undefined
}
lock.value = false
locked = false
const id = Math.random().toString(36).slice(2)
let dispose: (() => void) | undefined