/* * Copyright (c) 2026 by Christian Kellner. * Licensed under Apache-2.0 with Commons Clause and Attribution/Naming Clause */ export function debounce(fn, delay) { let timer; function debounced(...args) { clearTimeout(timer); timer = setTimeout(() => fn.apply(this, args), delay); } debounced.cancel = () => clearTimeout(timer); return debounced; }