textRenderer.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _element = require('./../helpers/dom/element');
  4. var _mixed = require('./../helpers/mixed');
  5. var _index = require('./index');
  6. /**
  7. * Default text renderer
  8. *
  9. * @private
  10. * @renderer TextRenderer
  11. * @param {Object} instance Handsontable instance
  12. * @param {Element} TD Table cell where to render
  13. * @param {Number} row
  14. * @param {Number} col
  15. * @param {String|Number} prop Row object property name
  16. * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!)
  17. * @param {Object} cellProperties Cell properties (shared by cell renderer and editor)
  18. */
  19. function textRenderer(instance, TD, row, col, prop, value, cellProperties) {
  20. (0, _index.getRenderer)('base').apply(this, arguments);
  21. if (!value && cellProperties.placeholder) {
  22. value = cellProperties.placeholder;
  23. }
  24. var escaped = (0, _mixed.stringify)(value);
  25. if (!instance.getSettings().trimWhitespace) {
  26. escaped = escaped.replace(/ /g, String.fromCharCode(160));
  27. }
  28. if (cellProperties.rendererTemplate) {
  29. (0, _element.empty)(TD);
  30. var TEMPLATE = document.createElement('TEMPLATE');
  31. TEMPLATE.setAttribute('bind', '{{}}');
  32. TEMPLATE.innerHTML = cellProperties.rendererTemplate;
  33. HTMLTemplateElement.decorate(TEMPLATE);
  34. TEMPLATE.model = instance.getSourceDataAtRow(row);
  35. TD.appendChild(TEMPLATE);
  36. } else {
  37. // this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips
  38. (0, _element.fastInnerText)(TD, escaped);
  39. }
  40. }
  41. exports.default = textRenderer;