@inworld/web-core
Version:
34 lines (33 loc) • 1.08 kB
JavaScript
export const protoTimestamp = (date) => (date !== null && date !== void 0 ? date : new Date()).toISOString();
export const isIOSMobile = () => /iPad|iPhone|iPod/.test(navigator.userAgent);
export const interpolate = (p) => 0.5 - Math.cos(p * Math.PI) / 2;
export const safeJSONParse = (str) => {
try {
return JSON.parse(str);
}
catch (_a) {
return undefined;
}
};
export const objectsAreEqual = (a, b, keys) => {
for (const key of keys) {
if (a[key] !== b[key]) {
return false;
}
}
return true;
};
export const calculateTimeDifference = (from, to) => {
const durationMilliseconds = to.getTime() - from.getTime();
let seconds = Math.floor(durationMilliseconds / 1000);
let nanos = Math.round((durationMilliseconds / 1000 - seconds) * 1000000000);
if (seconds < 0 && nanos > 0) {
seconds += 1;
nanos -= 1000000000;
}
else if (seconds > 0 && nanos < 0) {
seconds -= 1;
nanos += 1000000000;
}
return `${(seconds + nanos / 1000000000).toFixed(9)}s`;
};