import { debounce } from './debounce.mjs'; function throttle(func, throttleMs, { signal, edges = ['leading', 'trailing'] } = {}) { let pendingAt = null; const debounced = debounce(func, throttleMs, { signal, edges }); const throttled = function (...args) { if (pendingAt == null) { pendingAt = Date.now(); } else { if (Date.now() - pendingAt >= throttleMs) { pendingAt = Date.now(); debounced.cancel(); } } debounced.apply(this, args); }; throttled.cancel = debounced.cancel; throttled.flush = debounced.flush; return throttled; } export { throttle };