@aidenlx/player
Version:
Headless web components that make integrating media on the a web a breeze.
40 lines (39 loc) • 1.24 kB
JavaScript
import "../chunks/chunk.LNH2V2XS.js";
import { isArray, isNumber, isUndefined } from "@vidstack/foundation";
function rangeCheck(fnName, index, maxIndex) {
if (!isNumber(index) || index < 0 || index > maxIndex) {
throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is non-numeric or out of bounds (0-${maxIndex}).`);
}
}
function getRange(fnName, valueIndex, ranges, rangeIndex) {
rangeCheck(fnName, rangeIndex, ranges.length - 1);
return ranges[rangeIndex][valueIndex];
}
function createTimeRangesObj(ranges) {
if (isUndefined(ranges) || ranges.length === 0) {
const throwEmptyError = () => {
throw new Error("This TimeRanges object is empty");
};
return {
length: 0,
start: throwEmptyError,
end: throwEmptyError
};
}
return {
length: ranges.length,
start: getRange.bind(null, "start", 0, ranges),
end: getRange.bind(null, "end", 1, ranges)
};
}
function createTimeRanges(start, end) {
if (isArray(start)) {
return createTimeRangesObj(start);
} else if (isUndefined(start) || isUndefined(end)) {
return createTimeRangesObj();
}
return createTimeRangesObj([[start, end]]);
}
export {
createTimeRanges
};