@adyen/adyen-platform-experience-web
Version:

32 lines (31 loc) • 1.03 kB
JavaScript
import { MAX_INTERVAL_MS as b, DEFAULT_INTERVAL_MS as c } from "./constants.js";
import { clamp as T } from "../../../utils/value/number.js";
import { struct as g } from "../../../utils/struct/main.js";
import { enumerable as n } from "../../../utils/struct/property.js";
import { boolOrFalse as F } from "../../../utils/value/bool.js";
const y = (u, o = c, f = !1) => {
var i;
let e = new AbortController(), t = T(0, ~~o, b), l = F(f);
Number.isFinite(t) || (t = c);
const a = ((i = document.timeline) == null ? void 0 : i.currentTime) ?? performance.now(), d = () => {
e == null || e.abort(), e = void 0;
}, p = (r) => {
!e || e.signal.aborted || (s(r), u(r));
}, s = (r) => {
let m = 0;
if (!l) {
const _ = r - a, A = Math.round(_ / t) * t;
m = a + A + t - performance.now();
}
setTimeout(() => requestAnimationFrame(p), m);
};
return s(a), l = !1, g({
cancel: n(d),
delay: n(o),
signal: n(e.signal)
});
};
export {
y as createInterval,
y as default
};