Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license

This commit is contained in:
2026-09-05 13:26:46 +03:00
commit 03634b1ca3
11340 changed files with 3442369 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
type WindowRevealTarget = {
isDestroyed: () => boolean
isVisible: () => boolean
show: () => void
}
type TimerHandle = ReturnType<typeof setTimeout>
type WindowRevealOptions = {
onRevealed?: () => void
delayMs?: number
setTimer?: (callback: () => void, delayMs: number) => TimerHandle
clearTimer?: (timer: TimerHandle) => void
}
export const WINDOW_REVEAL_FALLBACK_MS = 4_000
export function createWindowRevealController(
window: WindowRevealTarget,
{
onRevealed = () => {},
delayMs = WINDOW_REVEAL_FALLBACK_MS,
setTimer = (callback, delay) => setTimeout(callback, delay),
clearTimer = timer => clearTimeout(timer)
}: WindowRevealOptions = {}
) {
let disposed = false
let revealed = false
let fallbackTimer: TimerHandle | null = null
const cancelFallback = () => {
if (fallbackTimer === null) {
return
}
clearTimer(fallbackTimer)
fallbackTimer = null
}
const reveal = () => {
if (disposed || revealed || window.isDestroyed()) {
return false
}
revealed = true
cancelFallback()
if (!window.isVisible()) {
window.show()
}
onRevealed()
return true
}
const scheduleFallback = () => {
if (disposed || revealed || fallbackTimer !== null || window.isDestroyed()) {
return
}
fallbackTimer = setTimer(() => {
fallbackTimer = null
reveal()
}, delayMs)
}
const dispose = () => {
disposed = true
cancelFallback()
}
return {
dispose,
reveal,
scheduleFallback
}
}