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
package/dist/handsontable.js
CHANGED
|
@@ -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')
|
|
@@ -104,8 +104,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
|
|
|
104
104
|
Handsontable.CellCoords = _src.CellCoords;
|
|
105
105
|
Handsontable.CellRange = _src.CellRange;
|
|
106
106
|
Handsontable.packageName = 'handsontable';
|
|
107
|
-
Handsontable.buildDate = "
|
|
108
|
-
Handsontable.version = "0.0.0-next-
|
|
107
|
+
Handsontable.buildDate = "14/03/2025 11:34:35";
|
|
108
|
+
Handsontable.version = "0.0.0-next-a1cc3b8-20250314";
|
|
109
109
|
Handsontable.languages = {
|
|
110
110
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
111
111
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
|
@@ -3216,11 +3216,16 @@ function Core(rootElement, userSettings) {
|
|
|
3216
3216
|
* @function getCellMeta
|
|
3217
3217
|
* @param {number} row Visual row index.
|
|
3218
3218
|
* @param {number} column Visual column index.
|
|
3219
|
+
* @param {object} options Execution options for the `getCellMeta` method.
|
|
3220
|
+
* @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.
|
|
3219
3221
|
* @returns {object} The cell properties object.
|
|
3220
3222
|
* @fires Hooks#beforeGetCellMeta
|
|
3221
3223
|
* @fires Hooks#afterGetCellMeta
|
|
3222
3224
|
*/
|
|
3223
3225
|
this.getCellMeta = function (row, column) {
|
|
3226
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
3227
|
+
skipMetaExtension: false
|
|
3228
|
+
};
|
|
3224
3229
|
let physicalRow = this.toPhysicalRow(row);
|
|
3225
3230
|
let physicalColumn = this.toPhysicalColumn(column);
|
|
3226
3231
|
if (physicalRow === null) {
|
|
@@ -3231,7 +3236,8 @@ function Core(rootElement, userSettings) {
|
|
|
3231
3236
|
}
|
|
3232
3237
|
return metaManager.getCellMeta(physicalRow, physicalColumn, {
|
|
3233
3238
|
visualRow: row,
|
|
3234
|
-
visualColumn: column
|
|
3239
|
+
visualColumn: column,
|
|
3240
|
+
...options
|
|
3235
3241
|
});
|
|
3236
3242
|
};
|
|
3237
3243
|
|
|
@@ -8665,8 +8671,8 @@ exports.isChildOf = isChildOf;
|
|
|
8665
8671
|
exports.isDetached = isDetached;
|
|
8666
8672
|
exports.isHTMLElement = isHTMLElement;
|
|
8667
8673
|
exports.isInput = isInput;
|
|
8674
|
+
exports.isInternalElement = isInternalElement;
|
|
8668
8675
|
exports.isOutsideInput = isOutsideInput;
|
|
8669
|
-
exports.isThisHotChild = isThisHotChild;
|
|
8670
8676
|
exports.isVisible = isVisible;
|
|
8671
8677
|
exports.makeElementContentEditableAndSelectItsContent = makeElementContentEditableAndSelectItsContent;
|
|
8672
8678
|
exports.matchesCSSRules = matchesCSSRules;
|
|
@@ -8727,7 +8733,7 @@ function getParent(element) {
|
|
|
8727
8733
|
* @param {HTMLElement} thisHotContainer The Handsontable container.
|
|
8728
8734
|
* @returns {boolean}
|
|
8729
8735
|
*/
|
|
8730
|
-
function
|
|
8736
|
+
function isInternalElement(element, thisHotContainer) {
|
|
8731
8737
|
const closestHandsontableContainer = element.closest('.handsontable');
|
|
8732
8738
|
return !!closestHandsontableContainer && (closestHandsontableContainer.parentNode === thisHotContainer || closestHandsontableContainer === thisHotContainer);
|
|
8733
8739
|
}
|
|
@@ -10091,7 +10097,7 @@ const domMessages = {
|
|
|
10091
10097
|
function _injectProductInfo(key, element) {
|
|
10092
10098
|
const hasValidType = !isEmpty(key);
|
|
10093
10099
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
10094
|
-
const hotVersion = "0.0.0-next-
|
|
10100
|
+
const hotVersion = "0.0.0-next-a1cc3b8-20250314";
|
|
10095
10101
|
let keyValidityDate;
|
|
10096
10102
|
let consoleMessageState = 'invalid';
|
|
10097
10103
|
let domMessageState = 'invalid';
|
|
@@ -40089,22 +40095,21 @@ class MetaManager {
|
|
|
40089
40095
|
*
|
|
40090
40096
|
* @param {number} physicalRow The physical row index.
|
|
40091
40097
|
* @param {number} physicalColumn The physical column index.
|
|
40092
|
-
* @param {object} options
|
|
40098
|
+
* @param {object} options Options for the `getCellMeta` method.
|
|
40093
40099
|
* @param {number} options.visualRow The visual row index of the currently requested cell meta object.
|
|
40094
40100
|
* @param {number} options.visualColumn The visual column index of the currently requested cell meta object.
|
|
40101
|
+
* @param {boolean} [options.skipMetaExtension=false] If `true`, omits the `afterGetCellMeta` hook which calls the `extendCellMeta` method.
|
|
40095
40102
|
* @returns {object}
|
|
40096
40103
|
*/
|
|
40097
|
-
getCellMeta(physicalRow, physicalColumn,
|
|
40098
|
-
let {
|
|
40099
|
-
visualRow,
|
|
40100
|
-
visualColumn
|
|
40101
|
-
} = _ref;
|
|
40104
|
+
getCellMeta(physicalRow, physicalColumn, options) {
|
|
40102
40105
|
const cellMeta = this.cellMeta.getMeta(physicalRow, physicalColumn);
|
|
40103
|
-
cellMeta.visualRow = visualRow;
|
|
40104
|
-
cellMeta.visualCol = visualColumn;
|
|
40106
|
+
cellMeta.visualRow = options.visualRow;
|
|
40107
|
+
cellMeta.visualCol = options.visualColumn;
|
|
40105
40108
|
cellMeta.row = physicalRow;
|
|
40106
40109
|
cellMeta.col = physicalColumn;
|
|
40107
|
-
|
|
40110
|
+
if (!options.skipMetaExtension) {
|
|
40111
|
+
this.runLocalHooks('afterGetCellMeta', cellMeta);
|
|
40112
|
+
}
|
|
40108
40113
|
return cellMeta;
|
|
40109
40114
|
}
|
|
40110
40115
|
|
|
@@ -46428,6 +46433,7 @@ var _function = __webpack_require__(163);
|
|
|
46428
46433
|
*/
|
|
46429
46434
|
class DynamicCellMetaMod {
|
|
46430
46435
|
constructor(metaManager) {
|
|
46436
|
+
var _this = this;
|
|
46431
46437
|
/**
|
|
46432
46438
|
* @type {MetaManager}
|
|
46433
46439
|
*/
|
|
@@ -46437,7 +46443,9 @@ class DynamicCellMetaMod {
|
|
|
46437
46443
|
*/
|
|
46438
46444
|
(0, _defineProperty2.default)(this, "metaSyncMemo", new Map());
|
|
46439
46445
|
this.metaManager = metaManager;
|
|
46440
|
-
metaManager.addLocalHook('afterGetCellMeta',
|
|
46446
|
+
metaManager.addLocalHook('afterGetCellMeta', function () {
|
|
46447
|
+
return _this.extendCellMeta(...arguments);
|
|
46448
|
+
});
|
|
46441
46449
|
_hooks.Hooks.getSingleton().add('beforeRender', forceFullRender => {
|
|
46442
46450
|
if (forceFullRender) {
|
|
46443
46451
|
this.metaSyncMemo.clear();
|
|
@@ -50273,7 +50281,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
|
50273
50281
|
*/
|
|
50274
50282
|
close() {
|
|
50275
50283
|
this.autoResize.unObserve();
|
|
50276
|
-
if ((0, _element.
|
|
50284
|
+
if ((0, _element.isInternalElement)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
|
|
50277
50285
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
|
50278
50286
|
}
|
|
50279
50287
|
this.hideEditableElement();
|
|
@@ -54874,6 +54882,7 @@ const COLUMN_SIZE_MAP_NAME = 'autoColumnSize';
|
|
|
54874
54882
|
* :::
|
|
54875
54883
|
*/
|
|
54876
54884
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
54885
|
+
var _isInitialized = /*#__PURE__*/new WeakMap();
|
|
54877
54886
|
var _cachedColumnHeaders = /*#__PURE__*/new WeakMap();
|
|
54878
54887
|
var _visualColumnsToRefresh = /*#__PURE__*/new WeakMap();
|
|
54879
54888
|
var _AutoColumnSize_brand = /*#__PURE__*/new WeakSet();
|
|
@@ -54963,6 +54972,12 @@ class AutoColumnSize extends _base.BasePlugin {
|
|
|
54963
54972
|
* @type {PhysicalIndexToValueMap}
|
|
54964
54973
|
*/
|
|
54965
54974
|
(0, _defineProperty2.default)(this, "columnWidthsMap", new _translations.PhysicalIndexToValueMap());
|
|
54975
|
+
/**
|
|
54976
|
+
* `true` value indicates that the #onInit() function has been already called.
|
|
54977
|
+
*
|
|
54978
|
+
* @type {boolean}
|
|
54979
|
+
*/
|
|
54980
|
+
_classPrivateFieldInitSpec(this, _isInitialized, false);
|
|
54966
54981
|
/**
|
|
54967
54982
|
* Cached column header names. It is used to diff current column headers with previous state and detect which
|
|
54968
54983
|
* columns width should be updated.
|
|
@@ -55101,17 +55116,11 @@ class AutoColumnSize extends _base.BasePlugin {
|
|
|
55101
55116
|
physicalColumn = visualColumn;
|
|
55102
55117
|
}
|
|
55103
55118
|
if (overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
55104
|
-
|
|
55105
|
-
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
55119
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
55106
55120
|
}
|
|
55107
55121
|
});
|
|
55108
55122
|
if (this.ghostTable.columns.length) {
|
|
55109
|
-
this.
|
|
55110
|
-
this.ghostTable.getWidths((visualColumn, width) => {
|
|
55111
|
-
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
55112
|
-
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
55113
|
-
});
|
|
55114
|
-
}, true);
|
|
55123
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
55115
55124
|
this.measuredColumns = columnsRange.to + 1;
|
|
55116
55125
|
this.ghostTable.clean();
|
|
55117
55126
|
}
|
|
@@ -55322,20 +55331,36 @@ function _calculateSpecificColumnsWidth(visualColumns) {
|
|
|
55322
55331
|
return;
|
|
55323
55332
|
}
|
|
55324
55333
|
if (!this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
55325
|
-
|
|
55326
|
-
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
55334
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
55327
55335
|
}
|
|
55328
55336
|
});
|
|
55329
55337
|
if (this.ghostTable.columns.length) {
|
|
55330
|
-
this.
|
|
55331
|
-
this.ghostTable.getWidths((visualColumn, width) => {
|
|
55332
|
-
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
55333
|
-
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
55334
|
-
});
|
|
55335
|
-
}, true);
|
|
55338
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
55336
55339
|
this.ghostTable.clean();
|
|
55337
55340
|
}
|
|
55338
55341
|
}
|
|
55342
|
+
/**
|
|
55343
|
+
* Processes a single column for width calculation.
|
|
55344
|
+
*
|
|
55345
|
+
* @param {number} visualColumn Visual column index.
|
|
55346
|
+
* @param {object} rowsRange Range of rows to process.
|
|
55347
|
+
*/
|
|
55348
|
+
function _fillGhostTableWithSamples(visualColumn, rowsRange) {
|
|
55349
|
+
const samples = this.samplesGenerator.generateColumnSamples(visualColumn, rowsRange);
|
|
55350
|
+
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
55351
|
+
}
|
|
55352
|
+
/**
|
|
55353
|
+
* Updates the column widths map with calculated widths from the ghost table.
|
|
55354
|
+
*
|
|
55355
|
+
*/
|
|
55356
|
+
function _updateColumnWidthsMapBasedOnGhostTable() {
|
|
55357
|
+
this.hot.batchExecution(() => {
|
|
55358
|
+
this.ghostTable.getWidths((visualColumn, width) => {
|
|
55359
|
+
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
55360
|
+
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
55361
|
+
});
|
|
55362
|
+
}, true);
|
|
55363
|
+
}
|
|
55339
55364
|
function _onBeforeRender() {
|
|
55340
55365
|
this.calculateVisibleColumnsWidth();
|
|
55341
55366
|
if (!this.inProgress) {
|
|
@@ -55392,6 +55417,7 @@ function _onBeforeColumnResize(size, column, isDblClick) {
|
|
|
55392
55417
|
function _onInit() {
|
|
55393
55418
|
_classPrivateFieldSet(_cachedColumnHeaders, this, this.hot.getColHeader());
|
|
55394
55419
|
this.recalculateAllColumnsWidth();
|
|
55420
|
+
_classPrivateFieldSet(_isInitialized, this, true);
|
|
55395
55421
|
}
|
|
55396
55422
|
/**
|
|
55397
55423
|
* After formulas values updated listener.
|
|
@@ -55399,6 +55425,9 @@ function _onInit() {
|
|
|
55399
55425
|
* @param {Array} changes An array of modified data.
|
|
55400
55426
|
*/
|
|
55401
55427
|
function _onAfterFormulasValuesUpdate(changes) {
|
|
55428
|
+
if (!_classPrivateFieldGet(_isInitialized, this)) {
|
|
55429
|
+
return;
|
|
55430
|
+
}
|
|
55402
55431
|
const changedColumns = changes.reduce((acc, change) => {
|
|
55403
55432
|
var _change$address;
|
|
55404
55433
|
const physicalColumn = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.col;
|
|
@@ -57252,6 +57281,7 @@ const ROW_WIDTHS_MAP_NAME = 'autoRowSize';
|
|
|
57252
57281
|
*/
|
|
57253
57282
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
57254
57283
|
var _visualRowsToRefresh = /*#__PURE__*/new WeakMap();
|
|
57284
|
+
var _isInitialized = /*#__PURE__*/new WeakMap();
|
|
57255
57285
|
var _AutoRowSize_brand = /*#__PURE__*/new WeakSet();
|
|
57256
57286
|
class AutoRowSize extends _base.BasePlugin {
|
|
57257
57287
|
static get PLUGIN_KEY() {
|
|
@@ -57354,6 +57384,12 @@ class AutoRowSize extends _base.BasePlugin {
|
|
|
57354
57384
|
* @type {number[]}
|
|
57355
57385
|
*/
|
|
57356
57386
|
_classPrivateFieldInitSpec(this, _visualRowsToRefresh, []);
|
|
57387
|
+
/**
|
|
57388
|
+
* `true` value indicates that the #onInit() function has been already called.
|
|
57389
|
+
*
|
|
57390
|
+
* @type {boolean}
|
|
57391
|
+
*/
|
|
57392
|
+
_classPrivateFieldInitSpec(this, _isInitialized, false);
|
|
57357
57393
|
this.hot.rowIndexMapper.registerMap(ROW_WIDTHS_MAP_NAME, this.rowHeightsMap);
|
|
57358
57394
|
|
|
57359
57395
|
// Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
|
|
@@ -57784,6 +57820,7 @@ function _onBeforeChange(changes) {
|
|
|
57784
57820
|
*/
|
|
57785
57821
|
function _onInit() {
|
|
57786
57822
|
this.recalculateAllRowsHeight();
|
|
57823
|
+
_classPrivateFieldSet(_isInitialized, this, true);
|
|
57787
57824
|
}
|
|
57788
57825
|
/**
|
|
57789
57826
|
* After formulas values updated listener.
|
|
@@ -57791,6 +57828,9 @@ function _onInit() {
|
|
|
57791
57828
|
* @param {Array} changes An array of modified data.
|
|
57792
57829
|
*/
|
|
57793
57830
|
function _onAfterFormulasValuesUpdate(changes) {
|
|
57831
|
+
if (!_classPrivateFieldGet(_isInitialized, this)) {
|
|
57832
|
+
return;
|
|
57833
|
+
}
|
|
57794
57834
|
const changedRows = changes.reduce((acc, change) => {
|
|
57795
57835
|
var _change$address;
|
|
57796
57836
|
const physicalRow = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.row;
|
|
@@ -66794,12 +66834,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
66794
66834
|
* @private
|
|
66795
66835
|
*/
|
|
66796
66836
|
onCopy(event) {
|
|
66797
|
-
var _event$target
|
|
66837
|
+
var _event$target;
|
|
66798
66838
|
const focusedElement = this.hot.getFocusManager().getRefocusElement();
|
|
66799
66839
|
const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
|
|
66800
|
-
|
|
66801
|
-
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
66802
|
-
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)) {
|
|
66840
|
+
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))) {
|
|
66803
66841
|
return;
|
|
66804
66842
|
}
|
|
66805
66843
|
event.preventDefault();
|
|
@@ -66829,12 +66867,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
66829
66867
|
* @private
|
|
66830
66868
|
*/
|
|
66831
66869
|
onCut(event) {
|
|
66832
|
-
var _event$target2
|
|
66870
|
+
var _event$target2;
|
|
66833
66871
|
const focusedElement = this.hot.getFocusManager().getRefocusElement();
|
|
66834
66872
|
const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
|
|
66835
|
-
|
|
66836
|
-
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
66837
|
-
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)) {
|
|
66873
|
+
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))) {
|
|
66838
66874
|
return;
|
|
66839
66875
|
}
|
|
66840
66876
|
event.preventDefault();
|
|
@@ -66863,12 +66899,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
66863
66899
|
* @private
|
|
66864
66900
|
*/
|
|
66865
66901
|
onPaste(event) {
|
|
66866
|
-
var _event$target3
|
|
66902
|
+
var _event$target3;
|
|
66867
66903
|
const focusedElement = this.hot.getFocusManager().getRefocusElement();
|
|
66868
66904
|
const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
|
|
66869
|
-
|
|
66870
|
-
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
66871
|
-
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)) {
|
|
66905
|
+
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))) {
|
|
66872
66906
|
return;
|
|
66873
66907
|
}
|
|
66874
66908
|
event.preventDefault();
|
|
@@ -75485,7 +75519,6 @@ __webpack_require__(111);
|
|
|
75485
75519
|
__webpack_require__(113);
|
|
75486
75520
|
__webpack_require__(115);
|
|
75487
75521
|
__webpack_require__(289);
|
|
75488
|
-
__webpack_require__(185);
|
|
75489
75522
|
__webpack_require__(133);
|
|
75490
75523
|
__webpack_require__(142);
|
|
75491
75524
|
var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
|
|
@@ -75543,13 +75576,9 @@ class Formulas extends _base.BasePlugin {
|
|
|
75543
75576
|
super(...arguments);
|
|
75544
75577
|
_this = this;
|
|
75545
75578
|
/**
|
|
75546
|
-
*
|
|
75547
|
-
* validator function.
|
|
75579
|
+
* Update sheetName and sheetId properties.
|
|
75548
75580
|
*
|
|
75549
|
-
* @param {
|
|
75550
|
-
* @param {number} visualRow The visual row index.
|
|
75551
|
-
* @param {number|string} prop The visual column index or property name of the column.
|
|
75552
|
-
* @returns {*} Returns value to validate.
|
|
75581
|
+
* @param {string} [sheetName] The new sheet name.
|
|
75553
75582
|
*/
|
|
75554
75583
|
_classPrivateMethodInitSpec(this, _Formulas_brand);
|
|
75555
75584
|
/**
|
|
@@ -75616,6 +75645,12 @@ class Formulas extends _base.BasePlugin {
|
|
|
75616
75645
|
* @type {HyperFormula|null}
|
|
75617
75646
|
*/
|
|
75618
75647
|
(0, _defineProperty2.default)(this, "engine", null);
|
|
75648
|
+
/**
|
|
75649
|
+
* HyperFormula's sheet id.
|
|
75650
|
+
*
|
|
75651
|
+
* @type {number|null}
|
|
75652
|
+
*/
|
|
75653
|
+
(0, _defineProperty2.default)(this, "sheetId", null);
|
|
75619
75654
|
/**
|
|
75620
75655
|
* HyperFormula's sheet name.
|
|
75621
75656
|
*
|
|
@@ -75650,15 +75685,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
75650
75685
|
static get SETTING_KEYS() {
|
|
75651
75686
|
return [PLUGIN_KEY, ...SETTING_KEYS];
|
|
75652
75687
|
}
|
|
75653
|
-
/**
|
|
75654
|
-
* HyperFormula's sheet id.
|
|
75655
|
-
*
|
|
75656
|
-
* @type {number|null}
|
|
75657
|
-
*/
|
|
75658
|
-
get sheetId() {
|
|
75659
|
-
return this.sheetName === null ? null : this.engine.getSheetId(this.sheetName);
|
|
75660
|
-
}
|
|
75661
|
-
|
|
75662
75688
|
/**
|
|
75663
75689
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
|
75664
75690
|
* hook and if it returns `true` then the {@link Formulas#enablePlugin} method is called.
|
|
@@ -75689,7 +75715,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
75689
75715
|
if (this.sheetName !== null && !this.engine.doesSheetExist(this.sheetName)) {
|
|
75690
75716
|
const newSheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
|
|
75691
75717
|
if (newSheetName !== false) {
|
|
75692
|
-
this.
|
|
75718
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
75693
75719
|
}
|
|
75694
75720
|
}
|
|
75695
75721
|
this.addHook('beforeLoadData', function () {
|
|
@@ -75920,7 +75946,8 @@ class Formulas extends _base.BasePlugin {
|
|
|
75920
75946
|
if (sheetName && this.engine.doesSheetExist(sheetName)) {
|
|
75921
75947
|
this.switchSheet(this.sheetName);
|
|
75922
75948
|
} else {
|
|
75923
|
-
|
|
75949
|
+
const newSheetName = this.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : undefined, this.hot.getSourceDataArray());
|
|
75950
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
75924
75951
|
}
|
|
75925
75952
|
}
|
|
75926
75953
|
super.updatePlugin(newSettings);
|
|
@@ -75940,7 +75967,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
75940
75967
|
this.engine = null;
|
|
75941
75968
|
super.destroy();
|
|
75942
75969
|
}
|
|
75943
|
-
|
|
75944
75970
|
/**
|
|
75945
75971
|
* Add a sheet to the shared HyperFormula instance.
|
|
75946
75972
|
*
|
|
@@ -75983,7 +76009,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
75983
76009
|
(0, _console.error)(`The sheet named \`${sheetName}\` does not exist, switch aborted.`);
|
|
75984
76010
|
return;
|
|
75985
76011
|
}
|
|
75986
|
-
this.
|
|
76012
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
75987
76013
|
const serialized = this.engine.getSheetSerialized(this.sheetId);
|
|
75988
76014
|
if (serialized.length > 0) {
|
|
75989
76015
|
this.hot.loadData(serialized, `${(0, _string.toUpperCaseFirst)(PLUGIN_KEY)}.switchSheet`);
|
|
@@ -76143,8 +76169,22 @@ class Formulas extends _base.BasePlugin {
|
|
|
76143
76169
|
}
|
|
76144
76170
|
return this.engine.setCellContents(address, newValue);
|
|
76145
76171
|
}
|
|
76172
|
+
|
|
76173
|
+
/**
|
|
76174
|
+
* The hook allows to translate the formula value to calculated value before it goes to the
|
|
76175
|
+
* validator function.
|
|
76176
|
+
*
|
|
76177
|
+
* @param {*} value The cell value to validate.
|
|
76178
|
+
* @param {number} visualRow The visual row index.
|
|
76179
|
+
* @param {number|string} prop The visual column index or property name of the column.
|
|
76180
|
+
* @returns {*} Returns value to validate.
|
|
76181
|
+
*/
|
|
76146
76182
|
}
|
|
76147
76183
|
exports.Formulas = Formulas;
|
|
76184
|
+
function _updateSheetNameAndSheetId(sheetName) {
|
|
76185
|
+
this.sheetName = sheetName;
|
|
76186
|
+
this.sheetId = this.engine.getSheetId(this.sheetName);
|
|
76187
|
+
}
|
|
76148
76188
|
function _onBeforeValidate(value, visualRow, prop) {
|
|
76149
76189
|
const visualColumn = this.hot.propToCol(prop);
|
|
76150
76190
|
if (this.isFormulaCellType(visualRow, visualColumn)) {
|
|
@@ -76272,29 +76312,33 @@ function _onBeforeLoadData(sourceData, initialLoad) {
|
|
|
76272
76312
|
* Callback to `afterCellMetaReset` hook which is triggered after setting cell meta.
|
|
76273
76313
|
*/
|
|
76274
76314
|
function _onAfterCellMetaReset() {
|
|
76315
|
+
if (_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
76316
|
+
this.switchSheet(this.sheetName);
|
|
76317
|
+
return;
|
|
76318
|
+
}
|
|
76275
76319
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
76276
|
-
let valueChanged = false;
|
|
76277
76320
|
sourceDataArray.forEach((rowData, rowIndex) => {
|
|
76278
76321
|
rowData.forEach((cellValue, columnIndex) => {
|
|
76279
|
-
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex
|
|
76322
|
+
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex, {
|
|
76323
|
+
skipMetaExtension: true
|
|
76324
|
+
});
|
|
76280
76325
|
const dateFormat = cellMeta.dateFormat;
|
|
76281
76326
|
if ((0, _utils.isDate)(cellValue, cellMeta.type)) {
|
|
76282
|
-
valueChanged = true;
|
|
76283
76327
|
if ((0, _utils.isDateValid)(cellValue, dateFormat)) {
|
|
76284
76328
|
// Rewriting date in HOT format to HF format.
|
|
76285
76329
|
sourceDataArray[rowIndex][columnIndex] = (0, _utils.getDateInHfFormat)(cellValue, dateFormat);
|
|
76286
|
-
} else if (
|
|
76330
|
+
} else if (!cellValue.startsWith('=')) {
|
|
76287
76331
|
// Escaping value from date parsing using "'" sign (HF feature).
|
|
76288
76332
|
sourceDataArray[rowIndex][columnIndex] = `'${cellValue}`;
|
|
76289
76333
|
}
|
|
76290
76334
|
}
|
|
76291
76335
|
});
|
|
76292
76336
|
});
|
|
76293
|
-
|
|
76294
|
-
|
|
76295
|
-
|
|
76296
|
-
|
|
76297
|
-
|
|
76337
|
+
_classPrivateFieldSet(_internalOperationPending, this, true);
|
|
76338
|
+
const dependentCells = this.engine.setSheetContent(this.sheetId, sourceDataArray);
|
|
76339
|
+
this.indexSyncer.setupSyncEndpoint(this.engine, this.sheetId);
|
|
76340
|
+
this.renderDependentSheets(dependentCells);
|
|
76341
|
+
_classPrivateFieldSet(_internalOperationPending, this, false);
|
|
76298
76342
|
}
|
|
76299
76343
|
/**
|
|
76300
76344
|
* `afterLoadData` hook callback.
|
|
@@ -76308,7 +76352,12 @@ function _onAfterLoadData(sourceData, initialLoad) {
|
|
|
76308
76352
|
if (source.includes((0, _string.toUpperCaseFirst)(PLUGIN_KEY))) {
|
|
76309
76353
|
return;
|
|
76310
76354
|
}
|
|
76311
|
-
|
|
76355
|
+
const sheetName = (0, _register.setupSheet)(this.engine, this.hot.getSettings()[PLUGIN_KEY].sheetName);
|
|
76356
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
76357
|
+
if (source === 'updateSettings') {
|
|
76358
|
+
// For performance reasons, the initialization will be done in afterCellMetaReset hook
|
|
76359
|
+
return;
|
|
76360
|
+
}
|
|
76312
76361
|
if (!_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
76313
76362
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
76314
76363
|
if (this.engine.isItPossibleToReplaceSheetContent(this.sheetId, sourceDataArray)) {
|
|
@@ -76339,17 +76388,10 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
76339
76388
|
if (visualRow === null || visualColumn === null) {
|
|
76340
76389
|
return;
|
|
76341
76390
|
}
|
|
76342
|
-
|
|
76343
|
-
|
|
76344
|
-
|
|
76345
|
-
|
|
76346
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76347
|
-
if (cellType !== 'ARRAY') {
|
|
76348
|
-
if ((0, _utils.isEscapedFormulaExpression)(valueHolder.value)) {
|
|
76349
|
-
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
76350
|
-
}
|
|
76351
|
-
return;
|
|
76352
|
-
}
|
|
76391
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76392
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
76393
|
+
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
76394
|
+
return;
|
|
76353
76395
|
}
|
|
76354
76396
|
const address = {
|
|
76355
76397
|
row: this.rowAxisSyncer.getHfIndexFromVisualIndex(visualRow),
|
|
@@ -76358,21 +76400,15 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
76358
76400
|
};
|
|
76359
76401
|
let cellValue = this.engine.getCellValue(address); // Date as an integer (Excel like date).
|
|
76360
76402
|
|
|
76361
|
-
|
|
76362
|
-
|
|
76363
|
-
|
|
76364
|
-
// is executed once again and it cause creation of an infinite loop.
|
|
76365
|
-
let cellMeta = this.hot.getCellsMeta().find(singleCellMeta => singleCellMeta.visualRow === visualRow && singleCellMeta.visualCol === visualColumn);
|
|
76366
|
-
if (cellMeta === undefined) {
|
|
76367
|
-
cellMeta = {};
|
|
76368
|
-
}
|
|
76403
|
+
const cellMeta = this.hot.getCellMeta(visualRow, visualColumn, {
|
|
76404
|
+
skipMetaExtension: true
|
|
76405
|
+
});
|
|
76369
76406
|
if (cellMeta.type === 'date' && (0, _number.isNumeric)(cellValue)) {
|
|
76370
76407
|
cellValue = (0, _utils.getDateFromExcelDate)(cellValue, cellMeta.dateFormat);
|
|
76371
76408
|
}
|
|
76372
76409
|
|
|
76373
76410
|
// If `cellValue` is an object it is expected to be an error
|
|
76374
|
-
|
|
76375
|
-
valueHolder.value = value;
|
|
76411
|
+
valueHolder.value = typeof cellValue === 'object' && cellValue !== null ? cellValue.value : cellValue;
|
|
76376
76412
|
}
|
|
76377
76413
|
/**
|
|
76378
76414
|
* `modifySourceData` hook callback.
|
|
@@ -76392,14 +76428,9 @@ function _onModifySourceData(row, columnOrProp, valueHolder, ioMode) {
|
|
|
76392
76428
|
if (visualRow === null || visualColumn === null) {
|
|
76393
76429
|
return;
|
|
76394
76430
|
}
|
|
76395
|
-
|
|
76396
|
-
|
|
76397
|
-
|
|
76398
|
-
if (!isFormulaCellType) {
|
|
76399
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76400
|
-
if (cellType !== 'ARRAY') {
|
|
76401
|
-
return;
|
|
76402
|
-
}
|
|
76431
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76432
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
76433
|
+
return;
|
|
76403
76434
|
}
|
|
76404
76435
|
const dimensions = this.engine.getSheetDimensions(this.engine.getSheetId(this.sheetName));
|
|
76405
76436
|
|
|
@@ -76708,7 +76739,7 @@ function _onEngineSheetAdded(addedSheetDisplayName) {
|
|
|
76708
76739
|
* @param {string} newDisplayName The new name of the sheet.
|
|
76709
76740
|
*/
|
|
76710
76741
|
function _onEngineSheetRenamed(oldDisplayName, newDisplayName) {
|
|
76711
|
-
this.
|
|
76742
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newDisplayName);
|
|
76712
76743
|
this.hot.runHooks('afterSheetRenamed', oldDisplayName, newDisplayName);
|
|
76713
76744
|
}
|
|
76714
76745
|
/**
|
|
@@ -77522,7 +77553,11 @@ class AxisSyncer {
|
|
|
77522
77553
|
getHfIndexFromVisualIndex(visualIndex) {
|
|
77523
77554
|
const indexesSequence = _classPrivateFieldGet(_indexMapper, this).getIndexesSequence();
|
|
77524
77555
|
const notTrimmedIndexes = _classPrivateFieldGet(_indexMapper, this).getNotTrimmedIndexes();
|
|
77525
|
-
|
|
77556
|
+
|
|
77557
|
+
// Optimization:
|
|
77558
|
+
// notTrimmedIndexes is a subset of indexesSequence,
|
|
77559
|
+
// so for every x indexesSequence.indexOf(x) is always >= notTrimmedIndexes.indexOf(x)
|
|
77560
|
+
return indexesSequence.indexOf(notTrimmedIndexes[visualIndex], visualIndex);
|
|
77526
77561
|
}
|
|
77527
77562
|
|
|
77528
77563
|
/**
|
|
@@ -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
|