ngx-extended-pdf-viewer
Version:
Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.
55 lines • 7.49 kB
JavaScript
export class UnitToPx {
static initElements() {
if (!document) {
return;
}
if (!this.con || !this.el) {
this.con = document.createElement('div');
this.el = document.createElement('div');
}
this.con.style.position = 'absolute';
this.con.style.width = '0';
this.con.style.height = '0';
this.con.style.visibility = 'hidden';
this.con.style.overflow = 'hidden';
this.con.appendChild(this.el);
}
static pxPerUnit(unit) {
if (!this.pxPerUnitCache[unit]) {
if (!this.con || !this.el) {
this.initElements();
}
if (!this.con || !this.el) {
// dummy implementation for server-side rendering
return 1;
}
this.el.style.width = this.sample + unit;
document.body.appendChild(this.con);
const dimension = this.el.getBoundingClientRect();
this.con.parentNode.removeChild(this.con);
this.pxPerUnitCache[unit] = dimension.width / this.sample;
}
return this.pxPerUnitCache[unit];
}
static toPx(length) {
const unitRe = /^\s*([+-]?[\d\.]*)\s*(.*)\s*$/i;
const match = unitRe.exec(length);
if (match != null && match.length > 2) {
const bare = match[1] === '';
const val = bare ? 1 : Number(match[1]);
const unit = match[2];
const valid = !isNaN(val) && unit;
if (valid) {
return unit === 'px' ? val : this.pxPerUnit(unit) * val;
}
}
throw new TypeError('Error parsing length');
}
}
// cache this.con, el for reused
UnitToPx.con = undefined;
UnitToPx.el = undefined;
// high sample will more accurate?
UnitToPx.sample = 100;
UnitToPx.pxPerUnitCache = {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC10by1weC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdW5pdC10by1weC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sUUFBUTtJQVVYLE1BQU0sQ0FBQyxZQUFZO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDekIsaURBQWlEO2dCQUNqRCxPQUFPLENBQUMsQ0FBQzthQUNWO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLGdDQUFnQyxDQUFDO1FBQ2hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2xDLElBQUksS0FBSyxFQUFFO2dCQUNULE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUN6RDtTQUNGO1FBQ0QsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O0FBeERELGdDQUFnQztBQUNqQixZQUFHLEdBQStCLFNBQVMsQ0FBQztBQUM1QyxXQUFFLEdBQStCLFNBQVMsQ0FBQztBQUUxRCxrQ0FBa0M7QUFDVixlQUFNLEdBQUcsR0FBRyxDQUFDO0FBRXRCLHVCQUFjLEdBQThCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVbml0VG9QeCB7XG4gIC8vIGNhY2hlIHRoaXMuY29uLCBlbCBmb3IgcmV1c2VkXG4gIHByaXZhdGUgc3RhdGljIGNvbjogSFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3RhdGljIGVsOiBIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvLyBoaWdoIHNhbXBsZSB3aWxsIG1vcmUgYWNjdXJhdGU/XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHNhbXBsZSA9IDEwMDtcblxuICBwcml2YXRlIHN0YXRpYyBweFBlclVuaXRDYWNoZTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gIHByaXZhdGUgc3RhdGljIGluaXRFbGVtZW50cygpOiB2b2lkIHtcbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5jb24gfHwgIXRoaXMuZWwpIHtcbiAgICAgIHRoaXMuY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgfVxuICAgIHRoaXMuY29uLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICB0aGlzLmNvbi5zdHlsZS53aWR0aCA9ICcwJztcbiAgICB0aGlzLmNvbi5zdHlsZS5oZWlnaHQgPSAnMCc7XG4gICAgdGhpcy5jb24uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgIHRoaXMuY29uLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgdGhpcy5jb24uYXBwZW5kQ2hpbGQodGhpcy5lbCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBweFBlclVuaXQodW5pdDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucHhQZXJVbml0Q2FjaGVbdW5pdF0pIHtcbiAgICAgIGlmICghdGhpcy5jb24gfHwgIXRoaXMuZWwpIHtcbiAgICAgICAgdGhpcy5pbml0RWxlbWVudHMoKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5jb24gfHwgIXRoaXMuZWwpIHtcbiAgICAgICAgLy8gZHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIHNlcnZlci1zaWRlIHJlbmRlcmluZ1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZWwuc3R5bGUud2lkdGggPSB0aGlzLnNhbXBsZSArIHVuaXQ7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29uKTtcbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLmNvbi5wYXJlbnROb2RlIS5yZW1vdmVDaGlsZCh0aGlzLmNvbik7XG4gICAgICB0aGlzLnB4UGVyVW5pdENhY2hlW3VuaXRdID0gZGltZW5zaW9uLndpZHRoIC8gdGhpcy5zYW1wbGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnB4UGVyVW5pdENhY2hlW3VuaXRdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b1B4KGxlbmd0aCk6IG51bWJlciB7XG4gICAgY29uc3QgdW5pdFJlID0gL15cXHMqKFsrLV0/W1xcZFxcLl0qKVxccyooLiopXFxzKiQvaTtcbiAgICBjb25zdCBtYXRjaCA9IHVuaXRSZS5leGVjKGxlbmd0aCk7XG4gICAgaWYgKG1hdGNoICE9IG51bGwgJiYgbWF0Y2gubGVuZ3RoID4gMikge1xuICAgICAgY29uc3QgYmFyZSA9IG1hdGNoWzFdID09PSAnJztcbiAgICAgIGNvbnN0IHZhbCA9IGJhcmUgPyAxIDogTnVtYmVyKG1hdGNoWzFdKTtcbiAgICAgIGNvbnN0IHVuaXQgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IHZhbGlkID0gIWlzTmFOKHZhbCkgJiYgdW5pdDtcbiAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICByZXR1cm4gdW5pdCA9PT0gJ3B4JyA/IHZhbCA6IHRoaXMucHhQZXJVbml0KHVuaXQpICogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFcnJvciBwYXJzaW5nIGxlbmd0aCcpO1xuICB9XG59XG4iXX0=