html2canvas-pro
Version:
Screenshots with JavaScript. Next generation!
81 lines • 2.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deg = exports.parseNamedSide = exports.isAngle = exports.angle = void 0;
const parser_1 = require("../syntax/parser");
const length_percentage_1 = require("./length-percentage");
const DEG = 'deg';
const GRAD = 'grad';
const RAD = 'rad';
const TURN = 'turn';
exports.angle = {
name: 'angle',
parse: (_context, value) => {
if (value.type === 15 /* TokenType.DIMENSION_TOKEN */) {
switch (value.unit) {
case DEG:
return (Math.PI * value.number) / 180;
case GRAD:
return (Math.PI / 200) * value.number;
case RAD:
return value.number;
case TURN:
return Math.PI * 2 * value.number;
}
}
throw new Error(`Unsupported angle type`);
}
};
const isAngle = (value) => {
if (value.type === 15 /* TokenType.DIMENSION_TOKEN */) {
if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
return true;
}
}
return false;
};
exports.isAngle = isAngle;
const parseNamedSide = (tokens) => {
const sideOrCorner = tokens
.filter(parser_1.isIdentToken)
.map((ident) => ident.value)
.join(' ');
switch (sideOrCorner) {
case 'to bottom right':
case 'to right bottom':
case 'left top':
case 'top left':
return [length_percentage_1.ZERO_LENGTH, length_percentage_1.ZERO_LENGTH];
case 'to top':
case 'bottom':
return (0, exports.deg)(0);
case 'to bottom left':
case 'to left bottom':
case 'right top':
case 'top right':
return [length_percentage_1.ZERO_LENGTH, length_percentage_1.HUNDRED_PERCENT];
case 'to right':
case 'left':
return (0, exports.deg)(90);
case 'to top left':
case 'to left top':
case 'right bottom':
case 'bottom right':
return [length_percentage_1.HUNDRED_PERCENT, length_percentage_1.HUNDRED_PERCENT];
case 'to bottom':
case 'top':
return (0, exports.deg)(180);
case 'to top right':
case 'to right top':
case 'left bottom':
case 'bottom left':
return [length_percentage_1.HUNDRED_PERCENT, length_percentage_1.ZERO_LENGTH];
case 'to left':
case 'right':
return (0, exports.deg)(270);
}
return 0;
};
exports.parseNamedSide = parseNamedSide;
const deg = (deg) => (Math.PI * deg) / 180;
exports.deg = deg;
//# sourceMappingURL=angle.js.map