UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

87 lines (83 loc) 3.44 kB
import "core-js/modules/es.error.cause.js"; function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * Column utils class contains all necessary information about sizes of the columns. * * @class {ColumnUtils} */ export default class ColumnUtils { /** * @param {TableDao} dataAccessObject The table Data Access Object. * @param {Settings} wtSettings The walkontable settings. */ constructor(dataAccessObject, wtSettings) { /** * @type {TableDao} */ _defineProperty(this, "dataAccessObject", void 0); /** * @type {Settings} */ _defineProperty(this, "wtSettings", void 0); /** * @type {Map<number, number>} */ _defineProperty(this, "headerWidths", new Map()); this.dataAccessObject = dataAccessObject; this.wtSettings = wtSettings; } /** * Returns column width based on passed source index. * * @param {number} sourceIndex Column source index. * @returns {number} */ getWidth(sourceIndex) { const width = this.wtSettings.getSetting('columnWidth', sourceIndex) || this.wtSettings.getSetting('defaultColumnWidth'); return width; } /** * Returns column header height based on passed header level. * * @param {number} level Column header level. * @returns {number} */ getHeaderHeight(level) { let height = this.wtSettings.getSetting('stylesHandler').getDefaultRowHeight(); const oversizedHeight = this.dataAccessObject.wtViewport.oversizedColumnHeaders[level]; if (oversizedHeight !== undefined) { height = height ? Math.max(height, oversizedHeight) : oversizedHeight; } return height; } /** * Returns column header width based on passed source index. * * @param {number} sourceIndex Column source index. * @returns {number} */ getHeaderWidth(sourceIndex) { return this.headerWidths.get(this.dataAccessObject.wtTable.columnFilter.sourceToRendered(sourceIndex)); } /** * Calculates column header widths that can be retrieved from the cache. */ calculateWidths() { const { wtSettings } = this; let rowHeaderWidthSetting = wtSettings.getSetting('rowHeaderWidth'); rowHeaderWidthSetting = wtSettings.getSetting('onModifyRowHeaderWidth', rowHeaderWidthSetting); if (rowHeaderWidthSetting !== null && rowHeaderWidthSetting !== undefined) { const rowHeadersCount = wtSettings.getSetting('rowHeaders').length; const defaultColumnWidth = wtSettings.getSetting('defaultColumnWidth'); for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) { let width = Array.isArray(rowHeaderWidthSetting) ? rowHeaderWidthSetting[visibleColumnIndex] : rowHeaderWidthSetting; width = width === null || width === undefined ? defaultColumnWidth : width; this.headerWidths.set(visibleColumnIndex, width); } } } }