handsontable 0.0.0-next-88f4ae4-20250313 → 0.0.0-next-a1cc3b8-20250314
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.d.ts +1 -1
- package/core.js +7 -1
- package/core.mjs +7 -1
- package/dataMap/metaManager/index.js +8 -9
- package/dataMap/metaManager/index.mjs +8 -9
- package/dataMap/metaManager/mods/dynamicCellMeta.js +4 -1
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +4 -1
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +143 -108
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +12 -12
- package/dist/handsontable.js +143 -108
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +13 -13
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +2 -2
- package/helpers/dom/element.js +2 -2
- package/helpers/dom/element.mjs +1 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
- package/plugins/autoColumnSize/autoColumnSize.js +37 -16
- package/plugins/autoColumnSize/autoColumnSize.mjs +37 -16
- package/plugins/autoRowSize/autoRowSize.js +11 -0
- package/plugins/autoRowSize/autoRowSize.mjs +11 -0
- package/plugins/copyPaste/copyPaste.js +6 -12
- package/plugins/copyPaste/copyPaste.mjs +7 -13
- package/plugins/formulas/formulas.d.ts +1 -1
- package/plugins/formulas/formulas.js +57 -60
- package/plugins/formulas/formulas.mjs +59 -62
- package/plugins/formulas/indexSyncer/axisSyncer.js +5 -1
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +5 -1
- package/styles/handsontable.css +2 -2
- package/styles/handsontable.min.css +2 -2
- package/styles/ht-theme-horizon.css +2 -2
- package/styles/ht-theme-horizon.min.css +2 -2
- package/styles/ht-theme-main.css +2 -2
- package/styles/ht-theme-main.min.css +2 -2
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date: 20/02/2025 (built at
|
|
28
|
+
* Version: 0.0.0-next-a1cc3b8-20250314
|
|
29
|
+
* Release date: 20/02/2025 (built at 14/03/2025 11:34:35)
|
|
30
30
|
*/
|
|
31
31
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
32
32
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
@@ -42855,8 +42855,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
|
|
|
42855
42855
|
Handsontable.CellCoords = _src.CellCoords;
|
|
42856
42856
|
Handsontable.CellRange = _src.CellRange;
|
|
42857
42857
|
Handsontable.packageName = 'handsontable';
|
|
42858
|
-
Handsontable.buildDate = "
|
|
42859
|
-
Handsontable.version = "0.0.0-next-
|
|
42858
|
+
Handsontable.buildDate = "14/03/2025 11:34:35";
|
|
42859
|
+
Handsontable.version = "0.0.0-next-a1cc3b8-20250314";
|
|
42860
42860
|
Handsontable.languages = {
|
|
42861
42861
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
42862
42862
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
|
@@ -45964,11 +45964,16 @@ function Core(rootElement, userSettings) {
|
|
|
45964
45964
|
* @function getCellMeta
|
|
45965
45965
|
* @param {number} row Visual row index.
|
|
45966
45966
|
* @param {number} column Visual column index.
|
|
45967
|
+
* @param {object} options Execution options for the `getCellMeta` method.
|
|
45968
|
+
* @param {boolean} [options.skipMetaExtension=false] If `true`, skips extending the cell meta object. This means, the `cells` function, as well as the `afterGetCellMeta` and `beforeGetCellMeta` hooks, will not be called.
|
|
45967
45969
|
* @returns {object} The cell properties object.
|
|
45968
45970
|
* @fires Hooks#beforeGetCellMeta
|
|
45969
45971
|
* @fires Hooks#afterGetCellMeta
|
|
45970
45972
|
*/
|
|
45971
45973
|
this.getCellMeta = function (row, column) {
|
|
45974
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
45975
|
+
skipMetaExtension: false
|
|
45976
|
+
};
|
|
45972
45977
|
let physicalRow = this.toPhysicalRow(row);
|
|
45973
45978
|
let physicalColumn = this.toPhysicalColumn(column);
|
|
45974
45979
|
if (physicalRow === null) {
|
|
@@ -45979,7 +45984,8 @@ function Core(rootElement, userSettings) {
|
|
|
45979
45984
|
}
|
|
45980
45985
|
return metaManager.getCellMeta(physicalRow, physicalColumn, {
|
|
45981
45986
|
visualRow: row,
|
|
45982
|
-
visualColumn: column
|
|
45987
|
+
visualColumn: column,
|
|
45988
|
+
...options
|
|
45983
45989
|
});
|
|
45984
45990
|
};
|
|
45985
45991
|
|
|
@@ -51413,8 +51419,8 @@ exports.isChildOf = isChildOf;
|
|
|
51413
51419
|
exports.isDetached = isDetached;
|
|
51414
51420
|
exports.isHTMLElement = isHTMLElement;
|
|
51415
51421
|
exports.isInput = isInput;
|
|
51422
|
+
exports.isInternalElement = isInternalElement;
|
|
51416
51423
|
exports.isOutsideInput = isOutsideInput;
|
|
51417
|
-
exports.isThisHotChild = isThisHotChild;
|
|
51418
51424
|
exports.isVisible = isVisible;
|
|
51419
51425
|
exports.makeElementContentEditableAndSelectItsContent = makeElementContentEditableAndSelectItsContent;
|
|
51420
51426
|
exports.matchesCSSRules = matchesCSSRules;
|
|
@@ -51475,7 +51481,7 @@ function getParent(element) {
|
|
|
51475
51481
|
* @param {HTMLElement} thisHotContainer The Handsontable container.
|
|
51476
51482
|
* @returns {boolean}
|
|
51477
51483
|
*/
|
|
51478
|
-
function
|
|
51484
|
+
function isInternalElement(element, thisHotContainer) {
|
|
51479
51485
|
const closestHandsontableContainer = element.closest('.handsontable');
|
|
51480
51486
|
return !!closestHandsontableContainer && (closestHandsontableContainer.parentNode === thisHotContainer || closestHandsontableContainer === thisHotContainer);
|
|
51481
51487
|
}
|
|
@@ -54182,7 +54188,7 @@ const domMessages = {
|
|
|
54182
54188
|
function _injectProductInfo(key, element) {
|
|
54183
54189
|
const hasValidType = !isEmpty(key);
|
|
54184
54190
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
54185
|
-
const hotVersion = "0.0.0-next-
|
|
54191
|
+
const hotVersion = "0.0.0-next-a1cc3b8-20250314";
|
|
54186
54192
|
let keyValidityDate;
|
|
54187
54193
|
let consoleMessageState = 'invalid';
|
|
54188
54194
|
let domMessageState = 'invalid';
|
|
@@ -90993,22 +90999,21 @@ class MetaManager {
|
|
|
90993
90999
|
*
|
|
90994
91000
|
* @param {number} physicalRow The physical row index.
|
|
90995
91001
|
* @param {number} physicalColumn The physical column index.
|
|
90996
|
-
* @param {object} options
|
|
91002
|
+
* @param {object} options Options for the `getCellMeta` method.
|
|
90997
91003
|
* @param {number} options.visualRow The visual row index of the currently requested cell meta object.
|
|
90998
91004
|
* @param {number} options.visualColumn The visual column index of the currently requested cell meta object.
|
|
91005
|
+
* @param {boolean} [options.skipMetaExtension=false] If `true`, omits the `afterGetCellMeta` hook which calls the `extendCellMeta` method.
|
|
90999
91006
|
* @returns {object}
|
|
91000
91007
|
*/
|
|
91001
|
-
getCellMeta(physicalRow, physicalColumn,
|
|
91002
|
-
let {
|
|
91003
|
-
visualRow,
|
|
91004
|
-
visualColumn
|
|
91005
|
-
} = _ref;
|
|
91008
|
+
getCellMeta(physicalRow, physicalColumn, options) {
|
|
91006
91009
|
const cellMeta = this.cellMeta.getMeta(physicalRow, physicalColumn);
|
|
91007
|
-
cellMeta.visualRow = visualRow;
|
|
91008
|
-
cellMeta.visualCol = visualColumn;
|
|
91010
|
+
cellMeta.visualRow = options.visualRow;
|
|
91011
|
+
cellMeta.visualCol = options.visualColumn;
|
|
91009
91012
|
cellMeta.row = physicalRow;
|
|
91010
91013
|
cellMeta.col = physicalColumn;
|
|
91011
|
-
|
|
91014
|
+
if (!options.skipMetaExtension) {
|
|
91015
|
+
this.runLocalHooks('afterGetCellMeta', cellMeta);
|
|
91016
|
+
}
|
|
91012
91017
|
return cellMeta;
|
|
91013
91018
|
}
|
|
91014
91019
|
|
|
@@ -97332,6 +97337,7 @@ var _function = __webpack_require__(497);
|
|
|
97332
97337
|
*/
|
|
97333
97338
|
class DynamicCellMetaMod {
|
|
97334
97339
|
constructor(metaManager) {
|
|
97340
|
+
var _this = this;
|
|
97335
97341
|
/**
|
|
97336
97342
|
* @type {MetaManager}
|
|
97337
97343
|
*/
|
|
@@ -97341,7 +97347,9 @@ class DynamicCellMetaMod {
|
|
|
97341
97347
|
*/
|
|
97342
97348
|
(0, _defineProperty2.default)(this, "metaSyncMemo", new Map());
|
|
97343
97349
|
this.metaManager = metaManager;
|
|
97344
|
-
metaManager.addLocalHook('afterGetCellMeta',
|
|
97350
|
+
metaManager.addLocalHook('afterGetCellMeta', function () {
|
|
97351
|
+
return _this.extendCellMeta(...arguments);
|
|
97352
|
+
});
|
|
97345
97353
|
_hooks.Hooks.getSingleton().add('beforeRender', forceFullRender => {
|
|
97346
97354
|
if (forceFullRender) {
|
|
97347
97355
|
this.metaSyncMemo.clear();
|
|
@@ -101177,7 +101185,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
|
101177
101185
|
*/
|
|
101178
101186
|
close() {
|
|
101179
101187
|
this.autoResize.unObserve();
|
|
101180
|
-
if ((0, _element.
|
|
101188
|
+
if ((0, _element.isInternalElement)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
|
|
101181
101189
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
|
101182
101190
|
}
|
|
101183
101191
|
this.hideEditableElement();
|
|
@@ -112184,6 +112192,7 @@ const COLUMN_SIZE_MAP_NAME = 'autoColumnSize';
|
|
|
112184
112192
|
* :::
|
|
112185
112193
|
*/
|
|
112186
112194
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
112195
|
+
var _isInitialized = /*#__PURE__*/new WeakMap();
|
|
112187
112196
|
var _cachedColumnHeaders = /*#__PURE__*/new WeakMap();
|
|
112188
112197
|
var _visualColumnsToRefresh = /*#__PURE__*/new WeakMap();
|
|
112189
112198
|
var _AutoColumnSize_brand = /*#__PURE__*/new WeakSet();
|
|
@@ -112273,6 +112282,12 @@ class AutoColumnSize extends _base.BasePlugin {
|
|
|
112273
112282
|
* @type {PhysicalIndexToValueMap}
|
|
112274
112283
|
*/
|
|
112275
112284
|
(0, _defineProperty2.default)(this, "columnWidthsMap", new _translations.PhysicalIndexToValueMap());
|
|
112285
|
+
/**
|
|
112286
|
+
* `true` value indicates that the #onInit() function has been already called.
|
|
112287
|
+
*
|
|
112288
|
+
* @type {boolean}
|
|
112289
|
+
*/
|
|
112290
|
+
_classPrivateFieldInitSpec(this, _isInitialized, false);
|
|
112276
112291
|
/**
|
|
112277
112292
|
* Cached column header names. It is used to diff current column headers with previous state and detect which
|
|
112278
112293
|
* columns width should be updated.
|
|
@@ -112411,17 +112426,11 @@ class AutoColumnSize extends _base.BasePlugin {
|
|
|
112411
112426
|
physicalColumn = visualColumn;
|
|
112412
112427
|
}
|
|
112413
112428
|
if (overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
112414
|
-
|
|
112415
|
-
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
112429
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
112416
112430
|
}
|
|
112417
112431
|
});
|
|
112418
112432
|
if (this.ghostTable.columns.length) {
|
|
112419
|
-
this.
|
|
112420
|
-
this.ghostTable.getWidths((visualColumn, width) => {
|
|
112421
|
-
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
112422
|
-
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
112423
|
-
});
|
|
112424
|
-
}, true);
|
|
112433
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
112425
112434
|
this.measuredColumns = columnsRange.to + 1;
|
|
112426
112435
|
this.ghostTable.clean();
|
|
112427
112436
|
}
|
|
@@ -112632,20 +112641,36 @@ function _calculateSpecificColumnsWidth(visualColumns) {
|
|
|
112632
112641
|
return;
|
|
112633
112642
|
}
|
|
112634
112643
|
if (!this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
112635
|
-
|
|
112636
|
-
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
112644
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
112637
112645
|
}
|
|
112638
112646
|
});
|
|
112639
112647
|
if (this.ghostTable.columns.length) {
|
|
112640
|
-
this.
|
|
112641
|
-
this.ghostTable.getWidths((visualColumn, width) => {
|
|
112642
|
-
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
112643
|
-
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
112644
|
-
});
|
|
112645
|
-
}, true);
|
|
112648
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
112646
112649
|
this.ghostTable.clean();
|
|
112647
112650
|
}
|
|
112648
112651
|
}
|
|
112652
|
+
/**
|
|
112653
|
+
* Processes a single column for width calculation.
|
|
112654
|
+
*
|
|
112655
|
+
* @param {number} visualColumn Visual column index.
|
|
112656
|
+
* @param {object} rowsRange Range of rows to process.
|
|
112657
|
+
*/
|
|
112658
|
+
function _fillGhostTableWithSamples(visualColumn, rowsRange) {
|
|
112659
|
+
const samples = this.samplesGenerator.generateColumnSamples(visualColumn, rowsRange);
|
|
112660
|
+
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
112661
|
+
}
|
|
112662
|
+
/**
|
|
112663
|
+
* Updates the column widths map with calculated widths from the ghost table.
|
|
112664
|
+
*
|
|
112665
|
+
*/
|
|
112666
|
+
function _updateColumnWidthsMapBasedOnGhostTable() {
|
|
112667
|
+
this.hot.batchExecution(() => {
|
|
112668
|
+
this.ghostTable.getWidths((visualColumn, width) => {
|
|
112669
|
+
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
112670
|
+
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
112671
|
+
});
|
|
112672
|
+
}, true);
|
|
112673
|
+
}
|
|
112649
112674
|
function _onBeforeRender() {
|
|
112650
112675
|
this.calculateVisibleColumnsWidth();
|
|
112651
112676
|
if (!this.inProgress) {
|
|
@@ -112702,6 +112727,7 @@ function _onBeforeColumnResize(size, column, isDblClick) {
|
|
|
112702
112727
|
function _onInit() {
|
|
112703
112728
|
_classPrivateFieldSet(_cachedColumnHeaders, this, this.hot.getColHeader());
|
|
112704
112729
|
this.recalculateAllColumnsWidth();
|
|
112730
|
+
_classPrivateFieldSet(_isInitialized, this, true);
|
|
112705
112731
|
}
|
|
112706
112732
|
/**
|
|
112707
112733
|
* After formulas values updated listener.
|
|
@@ -112709,6 +112735,9 @@ function _onInit() {
|
|
|
112709
112735
|
* @param {Array} changes An array of modified data.
|
|
112710
112736
|
*/
|
|
112711
112737
|
function _onAfterFormulasValuesUpdate(changes) {
|
|
112738
|
+
if (!_classPrivateFieldGet(_isInitialized, this)) {
|
|
112739
|
+
return;
|
|
112740
|
+
}
|
|
112712
112741
|
const changedColumns = changes.reduce((acc, change) => {
|
|
112713
112742
|
var _change$address;
|
|
112714
112743
|
const physicalColumn = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.col;
|
|
@@ -114562,6 +114591,7 @@ const ROW_WIDTHS_MAP_NAME = 'autoRowSize';
|
|
|
114562
114591
|
*/
|
|
114563
114592
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
114564
114593
|
var _visualRowsToRefresh = /*#__PURE__*/new WeakMap();
|
|
114594
|
+
var _isInitialized = /*#__PURE__*/new WeakMap();
|
|
114565
114595
|
var _AutoRowSize_brand = /*#__PURE__*/new WeakSet();
|
|
114566
114596
|
class AutoRowSize extends _base.BasePlugin {
|
|
114567
114597
|
static get PLUGIN_KEY() {
|
|
@@ -114664,6 +114694,12 @@ class AutoRowSize extends _base.BasePlugin {
|
|
|
114664
114694
|
* @type {number[]}
|
|
114665
114695
|
*/
|
|
114666
114696
|
_classPrivateFieldInitSpec(this, _visualRowsToRefresh, []);
|
|
114697
|
+
/**
|
|
114698
|
+
* `true` value indicates that the #onInit() function has been already called.
|
|
114699
|
+
*
|
|
114700
|
+
* @type {boolean}
|
|
114701
|
+
*/
|
|
114702
|
+
_classPrivateFieldInitSpec(this, _isInitialized, false);
|
|
114667
114703
|
this.hot.rowIndexMapper.registerMap(ROW_WIDTHS_MAP_NAME, this.rowHeightsMap);
|
|
114668
114704
|
|
|
114669
114705
|
// Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
|
|
@@ -115094,6 +115130,7 @@ function _onBeforeChange(changes) {
|
|
|
115094
115130
|
*/
|
|
115095
115131
|
function _onInit() {
|
|
115096
115132
|
this.recalculateAllRowsHeight();
|
|
115133
|
+
_classPrivateFieldSet(_isInitialized, this, true);
|
|
115097
115134
|
}
|
|
115098
115135
|
/**
|
|
115099
115136
|
* After formulas values updated listener.
|
|
@@ -115101,6 +115138,9 @@ function _onInit() {
|
|
|
115101
115138
|
* @param {Array} changes An array of modified data.
|
|
115102
115139
|
*/
|
|
115103
115140
|
function _onAfterFormulasValuesUpdate(changes) {
|
|
115141
|
+
if (!_classPrivateFieldGet(_isInitialized, this)) {
|
|
115142
|
+
return;
|
|
115143
|
+
}
|
|
115104
115144
|
const changedRows = changes.reduce((acc, change) => {
|
|
115105
115145
|
var _change$address;
|
|
115106
115146
|
const physicalRow = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.row;
|
|
@@ -124104,12 +124144,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
124104
124144
|
* @private
|
|
124105
124145
|
*/
|
|
124106
124146
|
onCopy(event) {
|
|
124107
|
-
var _event$target
|
|
124147
|
+
var _event$target;
|
|
124108
124148
|
const focusedElement = this.hot.getFocusManager().getRefocusElement();
|
|
124109
124149
|
const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
|
|
124110
|
-
|
|
124111
|
-
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
124112
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
124150
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && !(0, _element.isInternalElement)(event.target, this.hot.rootElement))) {
|
|
124113
124151
|
return;
|
|
124114
124152
|
}
|
|
124115
124153
|
event.preventDefault();
|
|
@@ -124139,12 +124177,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
124139
124177
|
* @private
|
|
124140
124178
|
*/
|
|
124141
124179
|
onCut(event) {
|
|
124142
|
-
var _event$target2
|
|
124180
|
+
var _event$target2;
|
|
124143
124181
|
const focusedElement = this.hot.getFocusManager().getRefocusElement();
|
|
124144
124182
|
const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
|
|
124145
|
-
|
|
124146
|
-
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
124147
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
124183
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && !(0, _element.isInternalElement)(event.target, this.hot.rootElement))) {
|
|
124148
124184
|
return;
|
|
124149
124185
|
}
|
|
124150
124186
|
event.preventDefault();
|
|
@@ -124173,12 +124209,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
124173
124209
|
* @private
|
|
124174
124210
|
*/
|
|
124175
124211
|
onPaste(event) {
|
|
124176
|
-
var _event$target3
|
|
124212
|
+
var _event$target3;
|
|
124177
124213
|
const focusedElement = this.hot.getFocusManager().getRefocusElement();
|
|
124178
124214
|
const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
|
|
124179
|
-
|
|
124180
|
-
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
124181
|
-
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
124215
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && !(0, _element.isInternalElement)(event.target, this.hot.rootElement))) {
|
|
124182
124216
|
return;
|
|
124183
124217
|
}
|
|
124184
124218
|
event.preventDefault();
|
|
@@ -132795,7 +132829,6 @@ __webpack_require__(307);
|
|
|
132795
132829
|
__webpack_require__(309);
|
|
132796
132830
|
__webpack_require__(311);
|
|
132797
132831
|
__webpack_require__(623);
|
|
132798
|
-
__webpack_require__(519);
|
|
132799
132832
|
__webpack_require__(329);
|
|
132800
132833
|
__webpack_require__(338);
|
|
132801
132834
|
var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
|
|
@@ -132853,13 +132886,9 @@ class Formulas extends _base.BasePlugin {
|
|
|
132853
132886
|
super(...arguments);
|
|
132854
132887
|
_this = this;
|
|
132855
132888
|
/**
|
|
132856
|
-
*
|
|
132857
|
-
* validator function.
|
|
132889
|
+
* Update sheetName and sheetId properties.
|
|
132858
132890
|
*
|
|
132859
|
-
* @param {
|
|
132860
|
-
* @param {number} visualRow The visual row index.
|
|
132861
|
-
* @param {number|string} prop The visual column index or property name of the column.
|
|
132862
|
-
* @returns {*} Returns value to validate.
|
|
132891
|
+
* @param {string} [sheetName] The new sheet name.
|
|
132863
132892
|
*/
|
|
132864
132893
|
_classPrivateMethodInitSpec(this, _Formulas_brand);
|
|
132865
132894
|
/**
|
|
@@ -132926,6 +132955,12 @@ class Formulas extends _base.BasePlugin {
|
|
|
132926
132955
|
* @type {HyperFormula|null}
|
|
132927
132956
|
*/
|
|
132928
132957
|
(0, _defineProperty2.default)(this, "engine", null);
|
|
132958
|
+
/**
|
|
132959
|
+
* HyperFormula's sheet id.
|
|
132960
|
+
*
|
|
132961
|
+
* @type {number|null}
|
|
132962
|
+
*/
|
|
132963
|
+
(0, _defineProperty2.default)(this, "sheetId", null);
|
|
132929
132964
|
/**
|
|
132930
132965
|
* HyperFormula's sheet name.
|
|
132931
132966
|
*
|
|
@@ -132960,15 +132995,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
132960
132995
|
static get SETTING_KEYS() {
|
|
132961
132996
|
return [PLUGIN_KEY, ...SETTING_KEYS];
|
|
132962
132997
|
}
|
|
132963
|
-
/**
|
|
132964
|
-
* HyperFormula's sheet id.
|
|
132965
|
-
*
|
|
132966
|
-
* @type {number|null}
|
|
132967
|
-
*/
|
|
132968
|
-
get sheetId() {
|
|
132969
|
-
return this.sheetName === null ? null : this.engine.getSheetId(this.sheetName);
|
|
132970
|
-
}
|
|
132971
|
-
|
|
132972
132998
|
/**
|
|
132973
132999
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
|
132974
133000
|
* hook and if it returns `true` then the {@link Formulas#enablePlugin} method is called.
|
|
@@ -132999,7 +133025,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
132999
133025
|
if (this.sheetName !== null && !this.engine.doesSheetExist(this.sheetName)) {
|
|
133000
133026
|
const newSheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
|
|
133001
133027
|
if (newSheetName !== false) {
|
|
133002
|
-
this.
|
|
133028
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
133003
133029
|
}
|
|
133004
133030
|
}
|
|
133005
133031
|
this.addHook('beforeLoadData', function () {
|
|
@@ -133230,7 +133256,8 @@ class Formulas extends _base.BasePlugin {
|
|
|
133230
133256
|
if (sheetName && this.engine.doesSheetExist(sheetName)) {
|
|
133231
133257
|
this.switchSheet(this.sheetName);
|
|
133232
133258
|
} else {
|
|
133233
|
-
|
|
133259
|
+
const newSheetName = this.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : undefined, this.hot.getSourceDataArray());
|
|
133260
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
133234
133261
|
}
|
|
133235
133262
|
}
|
|
133236
133263
|
super.updatePlugin(newSettings);
|
|
@@ -133250,7 +133277,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
133250
133277
|
this.engine = null;
|
|
133251
133278
|
super.destroy();
|
|
133252
133279
|
}
|
|
133253
|
-
|
|
133254
133280
|
/**
|
|
133255
133281
|
* Add a sheet to the shared HyperFormula instance.
|
|
133256
133282
|
*
|
|
@@ -133293,7 +133319,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
133293
133319
|
(0, _console.error)(`The sheet named \`${sheetName}\` does not exist, switch aborted.`);
|
|
133294
133320
|
return;
|
|
133295
133321
|
}
|
|
133296
|
-
this.
|
|
133322
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
133297
133323
|
const serialized = this.engine.getSheetSerialized(this.sheetId);
|
|
133298
133324
|
if (serialized.length > 0) {
|
|
133299
133325
|
this.hot.loadData(serialized, `${(0, _string.toUpperCaseFirst)(PLUGIN_KEY)}.switchSheet`);
|
|
@@ -133453,8 +133479,22 @@ class Formulas extends _base.BasePlugin {
|
|
|
133453
133479
|
}
|
|
133454
133480
|
return this.engine.setCellContents(address, newValue);
|
|
133455
133481
|
}
|
|
133482
|
+
|
|
133483
|
+
/**
|
|
133484
|
+
* The hook allows to translate the formula value to calculated value before it goes to the
|
|
133485
|
+
* validator function.
|
|
133486
|
+
*
|
|
133487
|
+
* @param {*} value The cell value to validate.
|
|
133488
|
+
* @param {number} visualRow The visual row index.
|
|
133489
|
+
* @param {number|string} prop The visual column index or property name of the column.
|
|
133490
|
+
* @returns {*} Returns value to validate.
|
|
133491
|
+
*/
|
|
133456
133492
|
}
|
|
133457
133493
|
exports.Formulas = Formulas;
|
|
133494
|
+
function _updateSheetNameAndSheetId(sheetName) {
|
|
133495
|
+
this.sheetName = sheetName;
|
|
133496
|
+
this.sheetId = this.engine.getSheetId(this.sheetName);
|
|
133497
|
+
}
|
|
133458
133498
|
function _onBeforeValidate(value, visualRow, prop) {
|
|
133459
133499
|
const visualColumn = this.hot.propToCol(prop);
|
|
133460
133500
|
if (this.isFormulaCellType(visualRow, visualColumn)) {
|
|
@@ -133582,29 +133622,33 @@ function _onBeforeLoadData(sourceData, initialLoad) {
|
|
|
133582
133622
|
* Callback to `afterCellMetaReset` hook which is triggered after setting cell meta.
|
|
133583
133623
|
*/
|
|
133584
133624
|
function _onAfterCellMetaReset() {
|
|
133625
|
+
if (_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
133626
|
+
this.switchSheet(this.sheetName);
|
|
133627
|
+
return;
|
|
133628
|
+
}
|
|
133585
133629
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
133586
|
-
let valueChanged = false;
|
|
133587
133630
|
sourceDataArray.forEach((rowData, rowIndex) => {
|
|
133588
133631
|
rowData.forEach((cellValue, columnIndex) => {
|
|
133589
|
-
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex
|
|
133632
|
+
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex, {
|
|
133633
|
+
skipMetaExtension: true
|
|
133634
|
+
});
|
|
133590
133635
|
const dateFormat = cellMeta.dateFormat;
|
|
133591
133636
|
if ((0, _utils.isDate)(cellValue, cellMeta.type)) {
|
|
133592
|
-
valueChanged = true;
|
|
133593
133637
|
if ((0, _utils.isDateValid)(cellValue, dateFormat)) {
|
|
133594
133638
|
// Rewriting date in HOT format to HF format.
|
|
133595
133639
|
sourceDataArray[rowIndex][columnIndex] = (0, _utils.getDateInHfFormat)(cellValue, dateFormat);
|
|
133596
|
-
} else if (
|
|
133640
|
+
} else if (!cellValue.startsWith('=')) {
|
|
133597
133641
|
// Escaping value from date parsing using "'" sign (HF feature).
|
|
133598
133642
|
sourceDataArray[rowIndex][columnIndex] = `'${cellValue}`;
|
|
133599
133643
|
}
|
|
133600
133644
|
}
|
|
133601
133645
|
});
|
|
133602
133646
|
});
|
|
133603
|
-
|
|
133604
|
-
|
|
133605
|
-
|
|
133606
|
-
|
|
133607
|
-
|
|
133647
|
+
_classPrivateFieldSet(_internalOperationPending, this, true);
|
|
133648
|
+
const dependentCells = this.engine.setSheetContent(this.sheetId, sourceDataArray);
|
|
133649
|
+
this.indexSyncer.setupSyncEndpoint(this.engine, this.sheetId);
|
|
133650
|
+
this.renderDependentSheets(dependentCells);
|
|
133651
|
+
_classPrivateFieldSet(_internalOperationPending, this, false);
|
|
133608
133652
|
}
|
|
133609
133653
|
/**
|
|
133610
133654
|
* `afterLoadData` hook callback.
|
|
@@ -133618,7 +133662,12 @@ function _onAfterLoadData(sourceData, initialLoad) {
|
|
|
133618
133662
|
if (source.includes((0, _string.toUpperCaseFirst)(PLUGIN_KEY))) {
|
|
133619
133663
|
return;
|
|
133620
133664
|
}
|
|
133621
|
-
|
|
133665
|
+
const sheetName = (0, _register.setupSheet)(this.engine, this.hot.getSettings()[PLUGIN_KEY].sheetName);
|
|
133666
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
133667
|
+
if (source === 'updateSettings') {
|
|
133668
|
+
// For performance reasons, the initialization will be done in afterCellMetaReset hook
|
|
133669
|
+
return;
|
|
133670
|
+
}
|
|
133622
133671
|
if (!_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
133623
133672
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
133624
133673
|
if (this.engine.isItPossibleToReplaceSheetContent(this.sheetId, sourceDataArray)) {
|
|
@@ -133649,17 +133698,10 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
133649
133698
|
if (visualRow === null || visualColumn === null) {
|
|
133650
133699
|
return;
|
|
133651
133700
|
}
|
|
133652
|
-
|
|
133653
|
-
|
|
133654
|
-
|
|
133655
|
-
|
|
133656
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133657
|
-
if (cellType !== 'ARRAY') {
|
|
133658
|
-
if ((0, _utils.isEscapedFormulaExpression)(valueHolder.value)) {
|
|
133659
|
-
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
133660
|
-
}
|
|
133661
|
-
return;
|
|
133662
|
-
}
|
|
133701
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133702
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
133703
|
+
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
133704
|
+
return;
|
|
133663
133705
|
}
|
|
133664
133706
|
const address = {
|
|
133665
133707
|
row: this.rowAxisSyncer.getHfIndexFromVisualIndex(visualRow),
|
|
@@ -133668,21 +133710,15 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
133668
133710
|
};
|
|
133669
133711
|
let cellValue = this.engine.getCellValue(address); // Date as an integer (Excel like date).
|
|
133670
133712
|
|
|
133671
|
-
|
|
133672
|
-
|
|
133673
|
-
|
|
133674
|
-
// is executed once again and it cause creation of an infinite loop.
|
|
133675
|
-
let cellMeta = this.hot.getCellsMeta().find(singleCellMeta => singleCellMeta.visualRow === visualRow && singleCellMeta.visualCol === visualColumn);
|
|
133676
|
-
if (cellMeta === undefined) {
|
|
133677
|
-
cellMeta = {};
|
|
133678
|
-
}
|
|
133713
|
+
const cellMeta = this.hot.getCellMeta(visualRow, visualColumn, {
|
|
133714
|
+
skipMetaExtension: true
|
|
133715
|
+
});
|
|
133679
133716
|
if (cellMeta.type === 'date' && (0, _number.isNumeric)(cellValue)) {
|
|
133680
133717
|
cellValue = (0, _utils.getDateFromExcelDate)(cellValue, cellMeta.dateFormat);
|
|
133681
133718
|
}
|
|
133682
133719
|
|
|
133683
133720
|
// If `cellValue` is an object it is expected to be an error
|
|
133684
|
-
|
|
133685
|
-
valueHolder.value = value;
|
|
133721
|
+
valueHolder.value = typeof cellValue === 'object' && cellValue !== null ? cellValue.value : cellValue;
|
|
133686
133722
|
}
|
|
133687
133723
|
/**
|
|
133688
133724
|
* `modifySourceData` hook callback.
|
|
@@ -133702,14 +133738,9 @@ function _onModifySourceData(row, columnOrProp, valueHolder, ioMode) {
|
|
|
133702
133738
|
if (visualRow === null || visualColumn === null) {
|
|
133703
133739
|
return;
|
|
133704
133740
|
}
|
|
133705
|
-
|
|
133706
|
-
|
|
133707
|
-
|
|
133708
|
-
if (!isFormulaCellType) {
|
|
133709
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133710
|
-
if (cellType !== 'ARRAY') {
|
|
133711
|
-
return;
|
|
133712
|
-
}
|
|
133741
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133742
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
133743
|
+
return;
|
|
133713
133744
|
}
|
|
133714
133745
|
const dimensions = this.engine.getSheetDimensions(this.engine.getSheetId(this.sheetName));
|
|
133715
133746
|
|
|
@@ -134018,7 +134049,7 @@ function _onEngineSheetAdded(addedSheetDisplayName) {
|
|
|
134018
134049
|
* @param {string} newDisplayName The new name of the sheet.
|
|
134019
134050
|
*/
|
|
134020
134051
|
function _onEngineSheetRenamed(oldDisplayName, newDisplayName) {
|
|
134021
|
-
this.
|
|
134052
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newDisplayName);
|
|
134022
134053
|
this.hot.runHooks('afterSheetRenamed', oldDisplayName, newDisplayName);
|
|
134023
134054
|
}
|
|
134024
134055
|
/**
|
|
@@ -134832,7 +134863,11 @@ class AxisSyncer {
|
|
|
134832
134863
|
getHfIndexFromVisualIndex(visualIndex) {
|
|
134833
134864
|
const indexesSequence = _classPrivateFieldGet(_indexMapper, this).getIndexesSequence();
|
|
134834
134865
|
const notTrimmedIndexes = _classPrivateFieldGet(_indexMapper, this).getNotTrimmedIndexes();
|
|
134835
|
-
|
|
134866
|
+
|
|
134867
|
+
// Optimization:
|
|
134868
|
+
// notTrimmedIndexes is a subset of indexesSequence,
|
|
134869
|
+
// so for every x indexesSequence.indexOf(x) is always >= notTrimmedIndexes.indexOf(x)
|
|
134870
|
+
return indexesSequence.indexOf(notTrimmedIndexes[visualIndex], visualIndex);
|
|
134836
134871
|
}
|
|
134837
134872
|
|
|
134838
134873
|
/**
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
27
27
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
28
28
|
*
|
|
29
|
-
* Version: 0.0.0-next-
|
|
30
|
-
* Release date: 20/02/2025 (built at
|
|
29
|
+
* Version: 0.0.0-next-a1cc3b8-20250314
|
|
30
|
+
* Release date: 20/02/2025 (built at 14/03/2025 11:35:29)
|
|
31
31
|
*/.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{position:relative;width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child{border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child{border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_master table.htCore>thead{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;position:relative;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;box-sizing:border-box!important;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{position:absolute;select{-webkit-appearance:menulist-button!important;border:2px solid #4b89ff;box-sizing:border-box!important;height:100%;width:100%}}.htSelectEditor select:focus{outline:none}.htSelectEditor .htAutocompleteArrow{display:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable[dir=ltr] thead th:has(.collapsibleIndicator) div.htRight span.colHeader{margin-right:20px}.handsontable[dir=rtl] thead th:has(.collapsibleIndicator) div.htLeft span.colHeader{margin-left:20px}.handsontable .columnSorting{position:relative}.handsontable[dir=ltr] div.htRight span[class*=ascending],.handsontable[dir=ltr] div.htRight span[class*=descending]{margin-left:-10px;margin-right:10px}.handsontable[dir=rtl] div.htLeft span[class*=ascending],.handsontable[dir=rtl] div.htLeft span[class*=descending]{margin-left:10px;margin-right:-10px}.handsontable[dir=ltr] div.htRight span[class*=ascending]:only-child,.handsontable[dir=ltr] div.htRight span[class*=descending]:only-child{margin-left:-15px;margin-right:15px}.handsontable[dir=rtl] div.htLeft span[class*=ascending]:only-child,.handsontable[dir=rtl] div.htLeft span[class*=descending]:only-child{margin-left:15px;margin-right:-15px}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable.htGhostTable table thead th{border-bottom-width:0}.handsontable.htGhostTable table tbody tr td,.handsontable.htGhostTable table tbody tr th{border-top-width:0}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
|
|
32
32
|
/*!
|
|
33
33
|
* Handsontable ContextMenu
|