import * as utils from "./columnUtils"; import type { CellContext, DrawCellInfo, GridCanvasHelperAPI, ListGridAPI, } from "../../ts-types"; import { BaseColumn } from "./BaseColumn"; import { MultilineTextStyle } from "../style/MultilineTextStyle"; export class MultilineTextColumn extends BaseColumn { constructor(option = {}) { super(option); } get StyleClass(): typeof MultilineTextStyle { return MultilineTextStyle; } clone(): MultilineTextColumn { return new MultilineTextColumn(this); } drawInternal( value: unknown, context: CellContext, style: MultilineTextStyle, helper: GridCanvasHelperAPI, _grid: ListGridAPI, { drawCellBase, getIcon }: DrawCellInfo ): void { const { textAlign, textBaseline, color, font, bgColor, padding, lineHeight, autoWrapText, lineClamp, textOverflow, visibility, } = style; if (bgColor) { drawCellBase({ bgColor, }); } if (visibility === "hidden") { return; } const textValue = value != null ? String(value) : ""; const lines = textValue .replace(/\r?\n/g, "\n") .replace(/\r/g, "\n") .split("\n"); helper.testFontLoad(font, textValue, context); utils.loadIcons(getIcon(), context, helper, (icons, context) => { helper.multilineText(lines, context, { textAlign, textBaseline, color, font, padding, lineHeight, autoWrapText, lineClamp, textOverflow, icons, }); }); } }