take-shot
Version:
Screenshots with JavaScript
50 lines • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isInstanceOfElement = exports.toArray = exports.resolveUrl = void 0;
function resolveUrl(url, baseUrl) {
// url is absolute already
if (url.match(/^[a-z]+:\/\//i)) {
return url;
}
// url is absolute already, without protocol
if (url.match(/^\/\//)) {
return window.location.protocol + url;
}
// dataURI, mailto:, tel:, etc.
if (url.match(/^[a-z]+:/i)) {
return url;
}
const doc = document.implementation.createHTMLDocument();
const base = doc.createElement('base');
const a = doc.createElement('a');
doc.head.appendChild(base);
doc.body.appendChild(a);
if (baseUrl) {
base.href = baseUrl;
}
a.href = url;
return a.href;
}
exports.resolveUrl = resolveUrl;
function toArray(arrayLike) {
const arr = [];
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
for (let i = 0, l = arrayLike.length; i < l; i++) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
arr.push(arrayLike[i]);
}
return arr;
}
exports.toArray = toArray;
const isInstanceOfElement = (node, instance) => {
if (node instanceof instance)
return true;
const nodePrototype = Object.getPrototypeOf(node);
if (nodePrototype === null)
return false;
return nodePrototype.constructor.name === instance.name || (0, exports.isInstanceOfElement)(nodePrototype, instance);
};
exports.isInstanceOfElement = isInstanceOfElement;
//# sourceMappingURL=util.js.map