function w(o,d,{signal:t,edges:u}={}){let e,n=null;const i=u!=null&&u.includes("leading"),c=u==null||u.includes("trailing"),f=()=>{n!==null&&(o.apply(e,n),e=void 0,n=null)},h=()=>{c&&f(),s()};let l=null;const a=()=>{l!=null&&clearTimeout(l),l=setTimeout(()=>{l=null,h()},d)},p=()=>{l!==null&&(clearTimeout(l),l=null)},s=()=>{p(),e=void 0,n=null},m=()=>{f()},r=function(...T){if(t!=null&&t.aborted)return;e=this,n=T;const b=l==null;a(),i&&b&&f()};return r.schedule=a,r.cancel=s,r.flush=m,t==null||t.addEventListener("abort",s,{once:!0}),r}function y(o,d,{signal:t,edges:u=["leading","trailing"]}={}){let e=null;const n=w(function(...c){e=Date.now(),o.apply(this,c)},d,{signal:t,edges:u}),i=function(...c){if(e==null&&(e=Date.now()),Date.now()-e>=d){e=Date.now(),o.apply(this,c),n.cancel(),n.schedule();return}n.apply(this,c)};return i.cancel=n.cancel,i.flush=n.flush,i}export{y as t};