@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
71 lines • 3 kB
JavaScript
import { Violation, ViolationState, ViolationInfoResult } from "./Violation";
import { BaseTextItem } from "@aurigma/design-atoms-model/Product/Items";
import { ItemUtils } from "../../../Utils/ItemUtils";
import { ValidationSeverity } from "../../../Viewer/Interfaces";
import { SurfaceContainer } from "@aurigma/design-atoms-model/Product/Container";
export class FontSizeViolation extends Violation {
constructor(_productHandler, _messages, _conf) {
var _a, _b;
super();
this._productHandler = _productHandler;
this._messages = _messages;
this._conf = _conf;
this._simpleFontSizeRegex = /font-size:\s*([0-9.]+)(pt|px)/gi;
this._severity = (_b = (_a = _conf.minFontSize) === null || _a === void 0 ? void 0 : _a.severity) !== null && _b !== void 0 ? _b : ValidationSeverity.Warning;
}
isAvailableFor(item) {
return item instanceof BaseTextItem;
}
getViolationInfo(item) {
var _a;
if (!ItemUtils.isTextItemHandlerReady(item, this._productHandler))
return ViolationInfoResult.none;
const handler = this._productHandler.getHandler(item);
if (!handler)
return ViolationInfoResult.none;
const parent = item.parentContainer;
const minFontSize = parent instanceof SurfaceContainer
? (_a = parent.printingTechniqueConstraints) === null || _a === void 0 ? void 0 : _a.minFontSize
: null;
if (minFontSize == null)
return ViolationInfoResult.none;
const fontSizes = this._getFontSizes(item);
const isTooSmall = fontSizes.some(size => size < minFontSize);
if (!isTooSmall) {
return ViolationInfoResult.good;
}
const violationState = this._severity === ValidationSeverity.Error
? ViolationState.Bad
: ViolationState.Warning;
return {
state: violationState,
message: this._messages.fontSizeViolationWarning
};
}
_getFontSizes(item) {
const sizes = [];
sizes.push(item.font.size);
if (item.text) {
const markupSizes = this._getFontSizesFromMarkup(item.text);
sizes.push(...markupSizes);
}
return sizes;
}
_getFontSizesFromMarkup(text) {
const sizes = [];
let match;
this._simpleFontSizeRegex.lastIndex = 0;
while ((match = this._simpleFontSizeRegex.exec(text)) !== null) {
const sizeValue = parseFloat(match[1]);
const unit = match[2].toLowerCase();
const sizeInPt = unit === 'px' ? sizeValue * 0.75 : sizeValue;
sizes.push(sizeInPt);
}
return sizes;
}
getStatePropertyName() {
return FontSizeViolation.statePropertyName;
}
}
FontSizeViolation.statePropertyName = "fontSizeViolationState";
//# sourceMappingURL=FontSizeViolation.js.map