@dlr-eoc/utils-browser
Version:
This library contains a collection of utilities like download data as blob and Paper layout.
68 lines • 7.09 kB
JavaScript
const PaperSizeTable = {
A6: {
longCm: 14.8,
shortCm: 10.5
},
A5: {
longCm: 21.0,
shortCm: 14.8
},
A4: {
longCm: 29.7,
shortCm: 21.0
},
A3: {
longCm: 42.0,
shortCm: 29.7
},
A2: {
longCm: 59.4,
shortCm: 42.0
},
A1: {
longCm: 84.1,
shortCm: 59.4
},
A0: {
longCm: 118.9,
shortCm: 84.1
},
};
const inchPerCm = 0.393701;
/**
* A utility class intended to help with getting the dimensions of a paper.
* Especially useful for preparing html that needs to be printed.
*/
export class Paper {
constructor(format, resolution, orientation) {
this.format = format;
this.resolution = resolution;
this.orientation = orientation;
const shortCm = PaperSizeTable[format].shortCm;
const longCm = PaperSizeTable[format].longCm;
const shortPx = Math.floor(shortCm * inchPerCm * resolution);
const longPx = Math.floor(longCm * inchPerCm * resolution);
if (orientation === 'portrait') {
this.widthCm = shortCm;
this.heightCm = longCm;
this.widthPx = shortPx;
this.heightPx = longPx;
}
else {
this.widthCm = longCm;
this.heightCm = shortCm;
this.widthPx = longPx;
this.heightPx = shortPx;
}
}
updateFormat(format) {
return new Paper(format, this.resolution, this.orientation);
}
updateResolution(resolution) {
return new Paper(this.format, resolution, this.orientation);
}
updateOrientation(orientation) {
return new Paper(this.format, this.resolution, orientation);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMtYnJvd3Nlci9zcmMvbGliL2xheW91dC9sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxjQUFjLEdBQUc7SUFDbkIsRUFBRSxFQUFFO1FBQ0EsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsSUFBSTtLQUNoQjtJQUNELEVBQUUsRUFBRTtRQUNBLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLElBQUk7S0FDaEI7SUFDRCxFQUFFLEVBQUU7UUFDQSxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxJQUFJO0tBQ2hCO0lBQ0QsRUFBRSxFQUFFO1FBQ0EsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsSUFBSTtLQUNoQjtJQUNELEVBQUUsRUFBRTtRQUNBLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLElBQUk7S0FDaEI7SUFDRCxFQUFFLEVBQUU7UUFDQSxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxJQUFJO0tBQ2hCO0lBQ0QsRUFBRSxFQUFFO1FBQ0EsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsSUFBSTtLQUNoQjtDQUNKLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFHM0I7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLEtBQUs7SUFNZCxZQUNhLE1BQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLFdBQXdCO1FBRnhCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUVqQyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUUzRCxJQUFJLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQW1CO1FBQzVCLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFzQjtRQUNuQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBd0I7UUFDdEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgdHlwZSBQYXBlckZvcm1hdCA9ICdBMCcgfCAnQTEnIHwgJ0EyJyB8ICdBMycgfCAnQTQnIHwgJ0E1JyB8ICdBNic7XG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICdsYW5kc2NhcGUnIHwgJ3BvcnRyYWl0JztcbmV4cG9ydCB0eXBlIFJlc29sdXRpb24gPSBudW1iZXI7XG5cbmNvbnN0IFBhcGVyU2l6ZVRhYmxlID0ge1xuICAgIEE2OiB7XG4gICAgICAgIGxvbmdDbTogMTQuOCxcbiAgICAgICAgc2hvcnRDbTogMTAuNVxuICAgIH0sXG4gICAgQTU6IHtcbiAgICAgICAgbG9uZ0NtOiAyMS4wLFxuICAgICAgICBzaG9ydENtOiAxNC44XG4gICAgfSxcbiAgICBBNDoge1xuICAgICAgICBsb25nQ206IDI5LjcsXG4gICAgICAgIHNob3J0Q206IDIxLjBcbiAgICB9LFxuICAgIEEzOiB7XG4gICAgICAgIGxvbmdDbTogNDIuMCxcbiAgICAgICAgc2hvcnRDbTogMjkuN1xuICAgIH0sXG4gICAgQTI6IHtcbiAgICAgICAgbG9uZ0NtOiA1OS40LFxuICAgICAgICBzaG9ydENtOiA0Mi4wXG4gICAgfSxcbiAgICBBMToge1xuICAgICAgICBsb25nQ206IDg0LjEsXG4gICAgICAgIHNob3J0Q206IDU5LjRcbiAgICB9LFxuICAgIEEwOiB7XG4gICAgICAgIGxvbmdDbTogMTE4LjksXG4gICAgICAgIHNob3J0Q206IDg0LjFcbiAgICB9LFxufTtcblxuY29uc3QgaW5jaFBlckNtID0gMC4zOTM3MDE7XG5cblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgaW50ZW5kZWQgdG8gaGVscCB3aXRoIGdldHRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgYSBwYXBlci5cbiAqIEVzcGVjaWFsbHkgdXNlZnVsIGZvciBwcmVwYXJpbmcgaHRtbCB0aGF0IG5lZWRzIHRvIGJlIHByaW50ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXBlciB7XG5cbiAgICByZWFkb25seSB3aWR0aENtOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgaGVpZ2h0Q206IG51bWJlcjtcbiAgICByZWFkb25seSB3aWR0aFB4OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgaGVpZ2h0UHg6IG51bWJlcjtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgZm9ybWF0OiBQYXBlckZvcm1hdCxcbiAgICAgICAgcmVhZG9ubHkgcmVzb2x1dGlvbjogUmVzb2x1dGlvbixcbiAgICAgICAgcmVhZG9ubHkgb3JpZW50YXRpb246IE9yaWVudGF0aW9uKSB7XG5cbiAgICAgICAgY29uc3Qgc2hvcnRDbSA9IFBhcGVyU2l6ZVRhYmxlW2Zvcm1hdF0uc2hvcnRDbTtcbiAgICAgICAgY29uc3QgbG9uZ0NtID0gUGFwZXJTaXplVGFibGVbZm9ybWF0XS5sb25nQ207XG4gICAgICAgIGNvbnN0IHNob3J0UHggPSBNYXRoLmZsb29yKHNob3J0Q20gKiBpbmNoUGVyQ20gKiByZXNvbHV0aW9uKTtcbiAgICAgICAgY29uc3QgbG9uZ1B4ID0gTWF0aC5mbG9vcihsb25nQ20gKiBpbmNoUGVyQ20gKiByZXNvbHV0aW9uKTtcblxuICAgICAgICBpZiAob3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcpIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGhDbSA9IHNob3J0Q207XG4gICAgICAgICAgICB0aGlzLmhlaWdodENtID0gbG9uZ0NtO1xuICAgICAgICAgICAgdGhpcy53aWR0aFB4ID0gc2hvcnRQeDtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0UHggPSBsb25nUHg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndpZHRoQ20gPSBsb25nQ207XG4gICAgICAgICAgICB0aGlzLmhlaWdodENtID0gc2hvcnRDbTtcbiAgICAgICAgICAgIHRoaXMud2lkdGhQeCA9IGxvbmdQeDtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0UHggPSBzaG9ydFB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybWF0KGZvcm1hdDogUGFwZXJGb3JtYXQpOiBQYXBlciB7XG4gICAgICAgIHJldHVybiBuZXcgUGFwZXIoZm9ybWF0LCB0aGlzLnJlc29sdXRpb24sIHRoaXMub3JpZW50YXRpb24pO1xuICAgIH1cblxuICAgIHVwZGF0ZVJlc29sdXRpb24ocmVzb2x1dGlvbjogUmVzb2x1dGlvbik6IFBhcGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXBlcih0aGlzLmZvcm1hdCwgcmVzb2x1dGlvbiwgdGhpcy5vcmllbnRhdGlvbik7XG4gICAgfVxuXG4gICAgdXBkYXRlT3JpZW50YXRpb24ob3JpZW50YXRpb246IE9yaWVudGF0aW9uKTogUGFwZXIge1xuICAgICAgICByZXR1cm4gbmV3IFBhcGVyKHRoaXMuZm9ybWF0LCB0aGlzLnJlc29sdXRpb24sIG9yaWVudGF0aW9uKTtcbiAgICB9XG5cbn1cbiJdfQ==