UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

667 lines (662 loc) • 32.1 kB
/** * DevExtreme (cjs/ui/html_editor/modules/tableResizing.js) * Version: 22.1.9 * Build date: Tue Apr 18 2023 * * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; exports.default = void 0; var _size = require("../../../core/utils/size"); var _renderer = _interopRequireDefault(require("../../../core/renderer")); var _events_engine = _interopRequireDefault(require("../../../events/core/events_engine")); var _type = require("../../../core/utils/type"); var _index = require("../../../events/utils/index"); var _resize_callbacks = _interopRequireDefault(require("../../../core/utils/resize_callbacks")); var _translator = require("../../../animation/translator"); var _position = require("../../../core/utils/position"); var _base = _interopRequireDefault(require("./base")); var _draggable = _interopRequireDefault(require("../../draggable")); var _iterator = require("../../../core/utils/iterator"); var _window = require("../../../core/utils/window"); var _extend = require("../../../core/utils/extend"); var _table_helper = require("../utils/table_helper"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass) } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) { o.__proto__ = p; return o }; return _setPrototypeOf(o, p) } var DX_COLUMN_RESIZE_FRAME_CLASS = "dx-table-resize-frame"; var DX_COLUMN_RESIZER_CLASS = "dx-htmleditor-column-resizer"; var DX_ROW_RESIZER_CLASS = "dx-htmleditor-row-resizer"; var DEFAULTS = { minColumnWidth: 40, minRowHeight: 24 }; var DRAGGABLE_ELEMENT_OFFSET = 2; var ROUGH_OFFSET = 3; var MODULE_NAMESPACE = "dxHtmlTableResizingModule"; var POINTERDOWN_EVENT = (0, _index.addNamespace)("dxpointerdown", MODULE_NAMESPACE); var SCROLL_EVENT = (0, _index.addNamespace)("scroll", MODULE_NAMESPACE); var TableResizingModule = function(_BaseModule) { _inheritsLoose(TableResizingModule, _BaseModule); function TableResizingModule(quill, options) { var _this; _this = _BaseModule.call(this, quill, options) || this; _this.enabled = !!options.enabled; _this._tableResizeFrames = []; _this._minColumnWidth = _this._minSizeLimit("minColumnWidth", options.minColumnWidth); _this._minRowHeight = _this._minSizeLimit("minRowHeight", options.minRowHeight); _this._quillContainer = _this.editorInstance._getQuillContainer(); _this._tableData = []; if (_this.enabled) { _this._applyResizing() } return _this } var _proto = TableResizingModule.prototype; _proto._applyResizing = function(forcedStart) { if (forcedStart) { this._applyResizingImpl() } else { this.editorInstance.addContentInitializedCallback(this._applyResizingImpl.bind(this)) } this.addCleanCallback(this.clean.bind(this)); this._resizeHandlerWithContext = _resize_callbacks.default.add(this._resizeHandler.bind(this)) }; _proto._minSizeLimit = function(propertyName, newValue) { return (0, _type.isDefined)(newValue) ? Math.max(newValue, 0) : DEFAULTS[propertyName] }; _proto._applyResizingImpl = function() { var $tables = this._findTables(); if ($tables.length) { this._fixTablesWidths($tables); this._createResizeFrames($tables); this._updateFramesPositions(); this._updateFramesSeparators() } this._attachEvents() }; _proto._attachEvents = function() { _events_engine.default.on(this.editorInstance._getContent(), SCROLL_EVENT, this._updateFramesPositions.bind(this)); this.quill.on("text-change", this._getQuillTextChangeHandler()) }; _proto._detachEvents = function() { _events_engine.default.off(this.editorInstance._getContent(), MODULE_NAMESPACE); this.quill.off("text-change", this._quillTextChangeHandler) }; _proto._getQuillTextChangeHandler = function(delta, oldContent, source) { var _this2 = this; return function(delta, oldContent, source) { if (_this2._isTableChanging()) { var $tables = _this2._findTables(); _this2._removeResizeFrames(); if ("api" === source) { _this2._fixTablesWidths($tables) } _this2._updateTablesColumnsWidth($tables); _this2._createResizeFrames($tables); _this2._updateFramesPositions(); _this2._updateFramesSeparators() } else { _this2._updateFramesPositions(); if (!_this2._isDragging) { _this2._updateFramesSeparators() } } } }; _proto._getFrameForTable = function($table) { var _this$_framesForTable; return null === (_this$_framesForTable = this._framesForTables) || void 0 === _this$_framesForTable ? void 0 : _this$_framesForTable.get($table.get(0)) }; _proto._resizeHandler = function() { var _this3 = this; this._windowResizeTimeout = setTimeout((function() { var $tables = _this3._findTables(); (0, _iterator.each)($tables, (function(index, table) { var $table = (0, _renderer.default)(table); var frame = _this3._tableResizeFrames[index]; var actualTableWidth = (0, _size.getOuterWidth)($table); var lastTableWidth = _this3._tableLastWidth(frame); if (Math.abs(actualTableWidth - lastTableWidth) > 1) { _this3._tableLastWidth(frame, actualTableWidth); _this3._updateColumnsWidth($table, index) } })); _this3._updateFramesPositions(); _this3._updateFramesSeparators() })) }; _proto._findTables = function() { return (0, _renderer.default)(this._quillContainer).find("table") }; _proto._getWidthStyleValue = function($element) { var styleValue = $element[0].style.width; return "" !== styleValue ? parseInt(styleValue) : void 0 }; _proto._tableLastWidth = function(frame, newValue) { if ((0, _type.isDefined)(newValue)) { frame.lastWidth = newValue } else { return null === frame || void 0 === frame ? void 0 : frame.lastWidth } }; _proto._fixTablesWidths = function($tables) { var _this4 = this; (0, _iterator.each)($tables, (function(index, table) { var $table = (0, _renderer.default)(table); var $columnElements = _this4._getTableDeterminantElements($table, "horizontal"); if (!_this4._tableResizeFrames[index]) { _this4._tableResizeFrames[index] = { lastWidth: void 0 } } var frame = _this4._getFrameForTable($table); if (!frame) { _this4._tableResizeFrames.push({ $table: $table }) } if (0 === (0, _table_helper.getAutoSizedElements)($table).length) { var _this4$_tableLastWidt; var _this4$_getColumnElem = _this4._getColumnElementsSum($columnElements), columnsSum = _this4$_getColumnElem.columnsSum; (0, _table_helper.unfixTableWidth)($table, { quill: _this4.quill }); var tableWidth = null !== (_this4$_tableLastWidt = _this4._tableLastWidth(frame)) && void 0 !== _this4$_tableLastWidt ? _this4$_tableLastWidt : (0, _size.getOuterWidth)($table); if (frame) { _this4._tableLastWidth(frame, Math.max(columnsSum, tableWidth)) } } })) }; _proto._createResizeFrames = function($tables) { var _this5 = this; this._framesForTables = new Map; $tables.each((function(index, table) { var _this5$_tableResizeFr; var $table = (0, _renderer.default)(table); var $lastTable = null === (_this5$_tableResizeFr = _this5._tableResizeFrames[index]) || void 0 === _this5$_tableResizeFr ? void 0 : _this5$_tableResizeFr.$table; var $tableLastWidth = _this5._tableResizeFrames[index].lastWidth; _this5._tableResizeFrames[index] = { $frame: _this5._createTableResizeFrame(table), $table: $table, index: index, lastWidth: $lastTable && table === $lastTable.get(0) ? $tableLastWidth : void 0, columnsCount: _this5._getTableDeterminantElements($table, "horizontal").length, rowsCount: _this5._getTableDeterminantElements($table, "vertical").length }; _this5._framesForTables.set(table, _this5._tableResizeFrames[index]) })); this._tableResizeFrames.length = $tables.length }; _proto._isTableChanging = function() { var _this6 = this; var $tables = this._findTables(); var result = false; if ($tables.length !== this._tableResizeFrames.length) { result = true } else { (0, _iterator.each)($tables, (function(index, table) { var $table = (0, _renderer.default)(table); var frame = _this6._tableResizeFrames[index]; var isColumnsCountChanged = (null === frame || void 0 === frame ? void 0 : frame.columnsCount) !== _this6._getTableDeterminantElements($table, "horizontal").length; var isRowCountChanged = (null === frame || void 0 === frame ? void 0 : frame.rowsCount) !== _this6._getTableDeterminantElements($table, "vertical").length; if (isColumnsCountChanged || isRowCountChanged) { result = true; return false } })) } return result }; _proto._removeResizeFrames = function(clearArray) { var _this$_framesForTable2, _this7 = this; (0, _iterator.each)(this._tableResizeFrames, (function(index, resizeFrame) { if (resizeFrame.$frame) { var _resizeFrame$$frame; var resizerElementsSelector = ".".concat(DX_COLUMN_RESIZER_CLASS, ", .").concat(DX_ROW_RESIZER_CLASS); _this7._detachSeparatorEvents(null === (_resizeFrame$$frame = resizeFrame.$frame) || void 0 === _resizeFrame$$frame ? void 0 : _resizeFrame$$frame.find(resizerElementsSelector)); resizeFrame.$frame.remove() } })); null === (_this$_framesForTable2 = this._framesForTables) || void 0 === _this$_framesForTable2 ? void 0 : _this$_framesForTable2.clear(); if (clearArray) { this._tableResizeFrames = [] } }; _proto._detachSeparatorEvents = function($lineSeparators) { $lineSeparators.each((function(i, $lineSeparator) { _events_engine.default.off($lineSeparator, POINTERDOWN_EVENT) })) }; _proto._createTableResizeFrame = function() { return (0, _renderer.default)("<div>").addClass(DX_COLUMN_RESIZE_FRAME_CLASS).appendTo(this._quillContainer) }; _proto._updateFramesPositions = function() { var _this8 = this; (0, _iterator.each)(this._tableResizeFrames, (function(index, tableResizeFrame) { _this8._updateFramePosition(tableResizeFrame.$table, tableResizeFrame.$frame) })) }; _proto._updateFramePosition = function($table, $frame) { var _getBoundingRect = (0, _position.getBoundingRect)($table.get(0)), height = _getBoundingRect.height, width = _getBoundingRect.width, targetTop = _getBoundingRect.top, targetLeft = _getBoundingRect.left; var _getBoundingRect2 = (0, _position.getBoundingRect)(this.quill.root), containerTop = _getBoundingRect2.top, containerLeft = _getBoundingRect2.left; $frame.css({ height: height, width: width, top: targetTop - containerTop, left: targetLeft - containerLeft }); (0, _translator.move)($frame, { left: 0, top: 0 }) }; _proto._updateFramesSeparators = function(direction) { var _this9 = this; (0, _iterator.each)(this._tableResizeFrames, (function(index, frame) { if (direction) { _this9._updateFrameSeparators(frame, direction) } else { _this9._updateFrameSeparators(frame, "vertical"); _this9._updateFrameSeparators(frame, "horizontal") } })) }; _proto._isDraggable = function($element) { return $element.hasClass("dx-draggable") && $element.is(":visible") }; _proto._removeDraggable = function($currentLineSeparator, lineResizerClass) { if (this._isDraggable($currentLineSeparator)) { var draggable = (0, _renderer.default)($currentLineSeparator).dxDraggable("instance"); draggable.dispose(); (0, _renderer.default)($currentLineSeparator).addClass(lineResizerClass) } }; _proto._getDirectionInfo = function(direction) { if ("vertical" === direction) { return { lineResizerClass: DX_ROW_RESIZER_CLASS, sizeFunction: function(x) { return (0, _size.getOuterHeight)(x) }, positionCoordinate: "top", positionStyleProperty: "height", positionCoordinateName: "y" } } else { return { lineResizerClass: DX_COLUMN_RESIZER_CLASS, sizeFunction: function(x) { return (0, _size.getOuterWidth)(x) }, positionCoordinate: this.editorInstance.option("rtlEnabled") ? "right" : "left", positionStyleProperty: "width", positionCoordinateName: "x" } } }; _proto._getSize = function($element, directionInfo) { return directionInfo.sizeFunction($element) }; _proto._updateFrameSeparators = function(frame, direction) { var $determinantElements = this._getTableDeterminantElements(frame.$table, direction); var determinantElementsCount = $determinantElements.length; var determinantElementsSeparatorsCount = determinantElementsCount - 1; var directionInfo = this._getDirectionInfo(direction); var lineSeparators = frame.$frame.find(".".concat(directionInfo.lineResizerClass)); var styleOptions = { transform: "none" }; var currentPosition = 0; for (var i = 0; i <= determinantElementsSeparatorsCount; i++) { currentPosition += this._getSize($determinantElements.eq(i), directionInfo); if (!(0, _type.isDefined)(lineSeparators[i])) { lineSeparators[i] = (0, _renderer.default)("<div>").addClass(directionInfo.lineResizerClass).appendTo(frame.$frame).get(0) } var $currentLineSeparator = (0, _renderer.default)(lineSeparators[i]); this._removeDraggable($currentLineSeparator, directionInfo.lineResizerClass); styleOptions[directionInfo.positionCoordinate] = currentPosition - DRAGGABLE_ELEMENT_OFFSET; (0, _renderer.default)($currentLineSeparator).css(styleOptions); var attachSeparatorData = { lineSeparator: lineSeparators[i], index: i, $determinantElements: $determinantElements, frame: frame, direction: direction }; this._attachColumnSeparatorEvents(attachSeparatorData) } }; _proto._getTableDeterminantElements = function($table, direction) { if ("vertical" === direction) { return $table.find("th:first-child, td:first-child") } else { return (0, _table_helper.getColumnElements)($table) } }; _proto._attachColumnSeparatorEvents = function(options) { var _this10 = this; _events_engine.default.on(options.lineSeparator, POINTERDOWN_EVENT, (function() { _this10._createDraggableElement(options) })) }; _proto._dragStartHandler = function(_ref) { var $determinantElements = _ref.$determinantElements, index = _ref.index, frame = _ref.frame, direction = _ref.direction, lineSeparator = _ref.lineSeparator; var directionInfo = this._getDirectionInfo(direction); this._isDragging = true; this._fixColumnsWidth(frame.$table); this._startLineSize = parseInt(this._getSize((0, _renderer.default)($determinantElements[index]), directionInfo)); this._startTableWidth = (0, _size.getOuterWidth)(frame.$table); this._startLineSeparatorPosition = parseInt((0, _renderer.default)(lineSeparator).css(directionInfo.positionCoordinate)); this._nextLineSize = 0; if ($determinantElements[index + 1]) { this._nextLineSize = parseInt(this._getSize((0, _renderer.default)($determinantElements[index + 1]), directionInfo)) } else if ("horizontal" === direction) { (0, _table_helper.unfixTableWidth)(frame.$table, { quill: this.quill }) } }; _proto._shouldRevertOffset = function(direction) { return "horizontal" === direction && this.editorInstance.option("rtlEnabled") }; _proto._isNextColumnWidthEnough = function(nextColumnNewSize, $nextColumnElement, eventOffset) { if (!this._nextLineSize) { return true } else if (nextColumnNewSize >= this._minColumnWidth) { var isWidthIncreased = this._nextColumnOffsetLimit ? eventOffset < this._nextColumnOffsetLimit : eventOffset < 0; var isWidthLimited = Math.abs(this._getWidthStyleValue($nextColumnElement) - (0, _size.getOuterWidth)($nextColumnElement)) > ROUGH_OFFSET; return isWidthIncreased || !isWidthLimited } return false }; _proto._shouldSetNextColumnWidth = function(nextColumnNewSize) { return this._nextLineSize && nextColumnNewSize > 0 }; _proto._horizontalDragHandler = function(_ref2) { var currentLineNewSize = _ref2.currentLineNewSize, directionInfo = _ref2.directionInfo, eventOffset = _ref2.eventOffset, $determinantElements = _ref2.$determinantElements, index = _ref2.index, frame = _ref2.frame; var nextColumnNewSize = this._nextLineSize && this._nextLineSize - eventOffset; var isCurrentColumnWidthEnough = currentLineNewSize >= this._minColumnWidth; var $lineElements = (0, _table_helper.getLineElements)(frame.$table, index); var $nextLineElements = (0, _table_helper.getLineElements)(frame.$table, index + 1); var realWidthDiff = (0, _size.getOuterWidth)($lineElements.eq(0)) - currentLineNewSize; if (isCurrentColumnWidthEnough) { if (this._isNextColumnWidthEnough(nextColumnNewSize, $determinantElements.eq(index + 1), eventOffset)) { (0, _table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: directionInfo.positionStyleProperty, value: currentLineNewSize }); if (this._shouldSetNextColumnWidth(nextColumnNewSize)) { (0, _table_helper.setLineElementsFormat)(this, { elements: $nextLineElements, property: directionInfo.positionStyleProperty, value: nextColumnNewSize }) } var isTableWidthChanged = Math.abs(this._startTableWidth - (0, _size.getOuterWidth)(frame.$table)) < ROUGH_OFFSET; var shouldRevertNewValue = Math.abs(realWidthDiff) > ROUGH_OFFSET || !this._nextLineSize && isTableWidthChanged; if (shouldRevertNewValue) { (0, _table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: directionInfo.positionStyleProperty, value: (0, _size.getOuterWidth)($lineElements.eq(0)) }); nextColumnNewSize += currentLineNewSize - (0, _size.getOuterWidth)($lineElements.eq(0)); if (this._shouldSetNextColumnWidth(nextColumnNewSize)) { (0, _table_helper.setLineElementsFormat)(this, { elements: $nextLineElements, property: directionInfo.positionStyleProperty, value: nextColumnNewSize }) } } } else { this._nextColumnOffsetLimit = this._nextColumnOffsetLimit || eventOffset } } this._$highlightedElement.css(directionInfo.positionCoordinate, this._startLineSeparatorPosition + eventOffset + realWidthDiff + "px") }; _proto._verticalDragHandler = function(_ref3) { var currentLineNewSize = _ref3.currentLineNewSize, directionInfo = _ref3.directionInfo, eventOffset = _ref3.eventOffset, $determinantElements = _ref3.$determinantElements, index = _ref3.index, frame = _ref3.frame; var newHeight = Math.max(currentLineNewSize, this._minRowHeight); var $lineElements = (0, _table_helper.getLineElements)(frame.$table, index, "vertical"); (0, _table_helper.setLineElementsFormat)(this, { elements: $lineElements, property: directionInfo.positionStyleProperty, value: newHeight }); var rowHeightDiff = (0, _size.getOuterHeight)($determinantElements.eq(index)) - currentLineNewSize; this._$highlightedElement.css(directionInfo.positionCoordinate, this._startLineSeparatorPosition + eventOffset + rowHeightDiff + "px") }; _proto._dragMoveHandler = function(event, _ref4) { var $determinantElements = _ref4.$determinantElements, index = _ref4.index, frame = _ref4.frame, direction = _ref4.direction; var directionInfo = this._getDirectionInfo(direction); var eventOffset = event.offset[directionInfo.positionCoordinateName]; this.editorInstance._saveValueChangeEvent(event); if (this._shouldRevertOffset(direction)) { eventOffset = -eventOffset } var currentLineNewSize = this._startLineSize + eventOffset; if ("horizontal" === direction) { this._horizontalDragHandler({ currentLineNewSize: currentLineNewSize, directionInfo: directionInfo, eventOffset: eventOffset, $determinantElements: $determinantElements, index: index, frame: frame }) } else { this._verticalDragHandler({ currentLineNewSize: currentLineNewSize, directionInfo: directionInfo, eventOffset: eventOffset, $determinantElements: $determinantElements, index: index, frame: frame }) } this._updateFramePosition(frame.$table, frame.$frame) }; _proto._dragEndHandler = function(options) { var _this$_$highlightedEl; null === (_this$_$highlightedEl = this._$highlightedElement) || void 0 === _this$_$highlightedEl ? void 0 : _this$_$highlightedEl.remove(); this._isDragging = void 0; this._nextColumnOffsetLimit = void 0; this._tableLastWidth(options.frame, (0, _size.getOuterWidth)(options.frame.$table)); this._updateFramesPositions(); this._updateFramesSeparators() }; _proto._isLastColumnResizing = function(_ref5) { var $determinantElements = _ref5.$determinantElements, index = _ref5.index; return !(0, _type.isDefined)($determinantElements[index + 1]) }; _proto._getBoundaryConfig = function(options) { var result = {}; if ("vertical" === options.direction) { result.boundary = options.frame.$table; result.boundOffset = { bottom: (0, _window.hasWindow)() ? -(0, _size.getHeight)((0, _window.getWindow)()) : -(0, _size.getOuterHeight)(this._quillContainer), top: 0, left: 0, right: 0 } } else if (!this._isLastColumnResizing(options)) { result.boundary = options.frame.$table } else { var $content = this.editorInstance._getContent(); result.boundary = $content; result.boundOffset = { bottom: 0, top: 0, left: $content.css("paddingLeft"), right: $content.css("paddingRight") } } return result }; _proto._createDraggableElement = function(options) { var _this$_$highlightedEl2, _this11 = this; var boundaryConfig = this._getBoundaryConfig(options); var directionClass = "vertical" === options.direction ? "dx-htmleditor-highlighted-row" : "dx-htmleditor-highlighted-column"; null === (_this$_$highlightedEl2 = this._$highlightedElement) || void 0 === _this$_$highlightedEl2 ? void 0 : _this$_$highlightedEl2.remove(); this._$highlightedElement = (0, _renderer.default)("<div>").addClass("".concat(directionClass)).insertAfter((0, _renderer.default)(options.lineSeparator)); var config = { contentTemplate: null, allowMoveByClick: false, dragDirection: options.direction, onDragMove: function(_ref6) { _ref6.component; var event = _ref6.event; _this11._dragMoveHandler(event, options) }, onDragStart: function() { _this11._dragStartHandler(options) }, onDragEnd: function() { _this11._dragEndHandler(options) } }; (0, _extend.extend)(config, boundaryConfig); this._currentDraggableElement = this.editorInstance._createComponent(options.lineSeparator, _draggable.default, config) }; _proto._fixColumnsWidth = function($table) { var _this12 = this; var determinantElements = this._getTableDeterminantElements($table); (0, _iterator.each)(determinantElements, (function(index, element) { var columnWidth = (0, _size.getOuterWidth)(element); var $lineElements = (0, _table_helper.getLineElements)($table, index); (0, _table_helper.setLineElementsFormat)(_this12, { elements: $lineElements, property: "width", value: Math.max(columnWidth, _this12._minColumnWidth) }) })) }; _proto._getColumnElementsSum = function(columnElements) { var _this13 = this; var columnsWidths = []; var columnsSum = 0; (0, _iterator.each)(columnElements, (function(index, element) { var $element = (0, _renderer.default)(element); var columnWidth = _this13._getWidthStyleValue($element) || (0, _size.getOuterWidth)($element); columnsWidths[index] = Math.max(columnWidth, _this13._minColumnWidth); columnsSum += columnsWidths[index] })); return { columnsWidths: columnsWidths, columnsSum: columnsSum } }; _proto._setColumnsRatioWidth = function(columnElements, ratio, columnsWidths, $table) { var _this14 = this; (0, _iterator.each)(columnElements, (function(index) { var $lineElements = (0, _table_helper.getLineElements)($table, index); var resultWidth; if (ratio > 0) { resultWidth = _this14._minColumnWidth + Math.round((columnsWidths[index] - _this14._minColumnWidth) * ratio) } else { resultWidth = _this14._minColumnWidth }(0, _table_helper.setLineElementsFormat)(_this14, { elements: $lineElements, property: "width", value: resultWidth }) })) }; _proto._updateColumnsWidth = function($table, frameIndex) { var determinantElements = this._getTableDeterminantElements($table); var frame = this._tableResizeFrames[frameIndex]; if (!frame) { this._tableResizeFrames[frameIndex] = {} } frame = this._tableResizeFrames[frameIndex]; var tableWidth = this._tableLastWidth(frame) || (0, _size.getOuterWidth)($table); var ratio; var _this$_getColumnEleme = this._getColumnElementsSum(determinantElements), columnsWidths = _this$_getColumnEleme.columnsWidths, columnsSum = _this$_getColumnEleme.columnsSum; var minWidthForColumns = determinantElements.length * this._minColumnWidth; if (columnsSum > minWidthForColumns) { ratio = (tableWidth - minWidthForColumns) / (columnsSum - minWidthForColumns) } else { ratio = -1 } this._tableLastWidth(frame, ratio > 0 ? tableWidth : minWidthForColumns); this._setColumnsRatioWidth(determinantElements, ratio, columnsWidths, $table) }; _proto._updateTablesColumnsWidth = function($tables) { var _this15 = this; (0, _iterator.each)($tables, (function(index, table) { _this15._updateColumnsWidth((0, _renderer.default)(table), index) })) }; _proto.option = function(_option, value) { if ("tableResizing" === _option) { this.handleOptionChangeValue(value); return } if ("enabled" === _option) { this.enabled = value; value ? this._applyResizing(true) : this.clean() } else if (["minColumnWidth", "minRowHeight"].includes(_option)) { this["_".concat(_option)] = this._minSizeLimit(_option, value) } }; _proto.clean = function() { this._removeResizeFrames(true); this._detachEvents(); _resize_callbacks.default.remove(this._resizeHandlerWithContext); clearTimeout(this._windowResizeTimeout); this._resizeHandlerWithContext = void 0; this._isDragging = void 0; this._startTableWidth = void 0; clearTimeout(this._attachResizerTimeout) }; return TableResizingModule }(_base.default); exports.default = TableResizingModule; module.exports = exports.default; module.exports.default = exports.default;