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

32 lines (31 loc) • 1.03 kB
JavaScript
import { DEFAULT_INTERVAL_MS as c, MAX_INTERVAL_MS as b } from "./constants.js";
import { clamp as T } from "../../../utils/value/number.js";
import { struct as g } from "../../../utils/struct/main.js";
import { enumerable as o } from "../../../utils/struct/property.js";
import { boolOrFalse as F } from "../../../utils/value/bool.js";
const x = (u, n = c, f = !1) => {
var i;
let e = new AbortController(), t = T(0, ~~n, 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: o(d),
delay: o(n),
signal: o(e.signal)
});
};
export {
x as createInterval,
x as default
};