UNPKG

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
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=