UNPKG

handsontable

Version:

Handsontable is a JavaScript Spreadsheet Component available for React, Angular and Vue.

46 lines (41 loc) 1.72 kB
import "core-js/modules/es.string.trim.js"; import { baseRenderer } from "../baseRenderer/index.mjs"; import { empty, fastInnerText } from "../../helpers/dom/element.mjs"; import { stringify } from "../../helpers/mixed.mjs"; export var RENDERER_TYPE = 'text'; /** * Default text renderer. * * @private * @param {Core} instance The Handsontable instance. * @param {HTMLTableCellElement} TD The rendered cell element. * @param {number} row The visual row index. * @param {number} col The visual column index. * @param {number|string} prop The column property (passed when datasource is an array of objects). * @param {*} value The rendered value. * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}). */ export function textRenderer(instance, TD, row, col, prop, value, cellProperties) { baseRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]); var escaped = value; if (!escaped && cellProperties.placeholder) { escaped = cellProperties.placeholder; } escaped = stringify(escaped); if (instance.getSettings().trimWhitespace) { escaped = escaped.trim(); } if (cellProperties.rendererTemplate) { empty(TD); var TEMPLATE = instance.rootDocument.createElement('TEMPLATE'); TEMPLATE.setAttribute('bind', '{{}}'); TEMPLATE.innerHTML = cellProperties.rendererTemplate; HTMLTemplateElement.decorate(TEMPLATE); TEMPLATE.model = instance.getSourceDataAtRow(row); TD.appendChild(TEMPLATE); } else { // this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips fastInnerText(TD, escaped); } } textRenderer.RENDERER_TYPE = RENDERER_TYPE;