UNPKG

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