handsontable 0.0.0-next-88f4ae4-20250313 → 0.0.0-next-19f5179-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 +134 -93
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +10 -10
- package/dist/handsontable.js +134 -93
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +7 -7
- 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/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-19f5179-20250314
|
|
29
|
+
* Release date: 20/02/2025 (built at 14/03/2025 08:46:43)
|
|
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 08:46:43";
|
|
108
|
+
Handsontable.version = "0.0.0-next-19f5179-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
|
|
|
@@ -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-19f5179-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();
|
|
@@ -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;
|
|
@@ -75485,7 +75525,6 @@ __webpack_require__(111);
|
|
|
75485
75525
|
__webpack_require__(113);
|
|
75486
75526
|
__webpack_require__(115);
|
|
75487
75527
|
__webpack_require__(289);
|
|
75488
|
-
__webpack_require__(185);
|
|
75489
75528
|
__webpack_require__(133);
|
|
75490
75529
|
__webpack_require__(142);
|
|
75491
75530
|
var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
|
|
@@ -75543,13 +75582,9 @@ class Formulas extends _base.BasePlugin {
|
|
|
75543
75582
|
super(...arguments);
|
|
75544
75583
|
_this = this;
|
|
75545
75584
|
/**
|
|
75546
|
-
*
|
|
75547
|
-
* validator function.
|
|
75585
|
+
* Update sheetName and sheetId properties.
|
|
75548
75586
|
*
|
|
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.
|
|
75587
|
+
* @param {string} [sheetName] The new sheet name.
|
|
75553
75588
|
*/
|
|
75554
75589
|
_classPrivateMethodInitSpec(this, _Formulas_brand);
|
|
75555
75590
|
/**
|
|
@@ -75616,6 +75651,12 @@ class Formulas extends _base.BasePlugin {
|
|
|
75616
75651
|
* @type {HyperFormula|null}
|
|
75617
75652
|
*/
|
|
75618
75653
|
(0, _defineProperty2.default)(this, "engine", null);
|
|
75654
|
+
/**
|
|
75655
|
+
* HyperFormula's sheet id.
|
|
75656
|
+
*
|
|
75657
|
+
* @type {number|null}
|
|
75658
|
+
*/
|
|
75659
|
+
(0, _defineProperty2.default)(this, "sheetId", null);
|
|
75619
75660
|
/**
|
|
75620
75661
|
* HyperFormula's sheet name.
|
|
75621
75662
|
*
|
|
@@ -75650,15 +75691,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
75650
75691
|
static get SETTING_KEYS() {
|
|
75651
75692
|
return [PLUGIN_KEY, ...SETTING_KEYS];
|
|
75652
75693
|
}
|
|
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
75694
|
/**
|
|
75663
75695
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
|
75664
75696
|
* hook and if it returns `true` then the {@link Formulas#enablePlugin} method is called.
|
|
@@ -75689,7 +75721,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
75689
75721
|
if (this.sheetName !== null && !this.engine.doesSheetExist(this.sheetName)) {
|
|
75690
75722
|
const newSheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
|
|
75691
75723
|
if (newSheetName !== false) {
|
|
75692
|
-
this.
|
|
75724
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
75693
75725
|
}
|
|
75694
75726
|
}
|
|
75695
75727
|
this.addHook('beforeLoadData', function () {
|
|
@@ -75920,7 +75952,8 @@ class Formulas extends _base.BasePlugin {
|
|
|
75920
75952
|
if (sheetName && this.engine.doesSheetExist(sheetName)) {
|
|
75921
75953
|
this.switchSheet(this.sheetName);
|
|
75922
75954
|
} else {
|
|
75923
|
-
|
|
75955
|
+
const newSheetName = this.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : undefined, this.hot.getSourceDataArray());
|
|
75956
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
75924
75957
|
}
|
|
75925
75958
|
}
|
|
75926
75959
|
super.updatePlugin(newSettings);
|
|
@@ -75940,7 +75973,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
75940
75973
|
this.engine = null;
|
|
75941
75974
|
super.destroy();
|
|
75942
75975
|
}
|
|
75943
|
-
|
|
75944
75976
|
/**
|
|
75945
75977
|
* Add a sheet to the shared HyperFormula instance.
|
|
75946
75978
|
*
|
|
@@ -75983,7 +76015,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
75983
76015
|
(0, _console.error)(`The sheet named \`${sheetName}\` does not exist, switch aborted.`);
|
|
75984
76016
|
return;
|
|
75985
76017
|
}
|
|
75986
|
-
this.
|
|
76018
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
75987
76019
|
const serialized = this.engine.getSheetSerialized(this.sheetId);
|
|
75988
76020
|
if (serialized.length > 0) {
|
|
75989
76021
|
this.hot.loadData(serialized, `${(0, _string.toUpperCaseFirst)(PLUGIN_KEY)}.switchSheet`);
|
|
@@ -76143,8 +76175,22 @@ class Formulas extends _base.BasePlugin {
|
|
|
76143
76175
|
}
|
|
76144
76176
|
return this.engine.setCellContents(address, newValue);
|
|
76145
76177
|
}
|
|
76178
|
+
|
|
76179
|
+
/**
|
|
76180
|
+
* The hook allows to translate the formula value to calculated value before it goes to the
|
|
76181
|
+
* validator function.
|
|
76182
|
+
*
|
|
76183
|
+
* @param {*} value The cell value to validate.
|
|
76184
|
+
* @param {number} visualRow The visual row index.
|
|
76185
|
+
* @param {number|string} prop The visual column index or property name of the column.
|
|
76186
|
+
* @returns {*} Returns value to validate.
|
|
76187
|
+
*/
|
|
76146
76188
|
}
|
|
76147
76189
|
exports.Formulas = Formulas;
|
|
76190
|
+
function _updateSheetNameAndSheetId(sheetName) {
|
|
76191
|
+
this.sheetName = sheetName;
|
|
76192
|
+
this.sheetId = this.engine.getSheetId(this.sheetName);
|
|
76193
|
+
}
|
|
76148
76194
|
function _onBeforeValidate(value, visualRow, prop) {
|
|
76149
76195
|
const visualColumn = this.hot.propToCol(prop);
|
|
76150
76196
|
if (this.isFormulaCellType(visualRow, visualColumn)) {
|
|
@@ -76272,29 +76318,33 @@ function _onBeforeLoadData(sourceData, initialLoad) {
|
|
|
76272
76318
|
* Callback to `afterCellMetaReset` hook which is triggered after setting cell meta.
|
|
76273
76319
|
*/
|
|
76274
76320
|
function _onAfterCellMetaReset() {
|
|
76321
|
+
if (_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
76322
|
+
this.switchSheet(this.sheetName);
|
|
76323
|
+
return;
|
|
76324
|
+
}
|
|
76275
76325
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
76276
|
-
let valueChanged = false;
|
|
76277
76326
|
sourceDataArray.forEach((rowData, rowIndex) => {
|
|
76278
76327
|
rowData.forEach((cellValue, columnIndex) => {
|
|
76279
|
-
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex
|
|
76328
|
+
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex, {
|
|
76329
|
+
skipMetaExtension: true
|
|
76330
|
+
});
|
|
76280
76331
|
const dateFormat = cellMeta.dateFormat;
|
|
76281
76332
|
if ((0, _utils.isDate)(cellValue, cellMeta.type)) {
|
|
76282
|
-
valueChanged = true;
|
|
76283
76333
|
if ((0, _utils.isDateValid)(cellValue, dateFormat)) {
|
|
76284
76334
|
// Rewriting date in HOT format to HF format.
|
|
76285
76335
|
sourceDataArray[rowIndex][columnIndex] = (0, _utils.getDateInHfFormat)(cellValue, dateFormat);
|
|
76286
|
-
} else if (
|
|
76336
|
+
} else if (!cellValue.startsWith('=')) {
|
|
76287
76337
|
// Escaping value from date parsing using "'" sign (HF feature).
|
|
76288
76338
|
sourceDataArray[rowIndex][columnIndex] = `'${cellValue}`;
|
|
76289
76339
|
}
|
|
76290
76340
|
}
|
|
76291
76341
|
});
|
|
76292
76342
|
});
|
|
76293
|
-
|
|
76294
|
-
|
|
76295
|
-
|
|
76296
|
-
|
|
76297
|
-
|
|
76343
|
+
_classPrivateFieldSet(_internalOperationPending, this, true);
|
|
76344
|
+
const dependentCells = this.engine.setSheetContent(this.sheetId, sourceDataArray);
|
|
76345
|
+
this.indexSyncer.setupSyncEndpoint(this.engine, this.sheetId);
|
|
76346
|
+
this.renderDependentSheets(dependentCells);
|
|
76347
|
+
_classPrivateFieldSet(_internalOperationPending, this, false);
|
|
76298
76348
|
}
|
|
76299
76349
|
/**
|
|
76300
76350
|
* `afterLoadData` hook callback.
|
|
@@ -76308,7 +76358,12 @@ function _onAfterLoadData(sourceData, initialLoad) {
|
|
|
76308
76358
|
if (source.includes((0, _string.toUpperCaseFirst)(PLUGIN_KEY))) {
|
|
76309
76359
|
return;
|
|
76310
76360
|
}
|
|
76311
|
-
|
|
76361
|
+
const sheetName = (0, _register.setupSheet)(this.engine, this.hot.getSettings()[PLUGIN_KEY].sheetName);
|
|
76362
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
76363
|
+
if (source === 'updateSettings') {
|
|
76364
|
+
// For performance reasons, the initialization will be done in afterCellMetaReset hook
|
|
76365
|
+
return;
|
|
76366
|
+
}
|
|
76312
76367
|
if (!_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
76313
76368
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
76314
76369
|
if (this.engine.isItPossibleToReplaceSheetContent(this.sheetId, sourceDataArray)) {
|
|
@@ -76339,17 +76394,10 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
76339
76394
|
if (visualRow === null || visualColumn === null) {
|
|
76340
76395
|
return;
|
|
76341
76396
|
}
|
|
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
|
-
}
|
|
76397
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76398
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
76399
|
+
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
76400
|
+
return;
|
|
76353
76401
|
}
|
|
76354
76402
|
const address = {
|
|
76355
76403
|
row: this.rowAxisSyncer.getHfIndexFromVisualIndex(visualRow),
|
|
@@ -76358,21 +76406,15 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
76358
76406
|
};
|
|
76359
76407
|
let cellValue = this.engine.getCellValue(address); // Date as an integer (Excel like date).
|
|
76360
76408
|
|
|
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
|
-
}
|
|
76409
|
+
const cellMeta = this.hot.getCellMeta(visualRow, visualColumn, {
|
|
76410
|
+
skipMetaExtension: true
|
|
76411
|
+
});
|
|
76369
76412
|
if (cellMeta.type === 'date' && (0, _number.isNumeric)(cellValue)) {
|
|
76370
76413
|
cellValue = (0, _utils.getDateFromExcelDate)(cellValue, cellMeta.dateFormat);
|
|
76371
76414
|
}
|
|
76372
76415
|
|
|
76373
76416
|
// If `cellValue` is an object it is expected to be an error
|
|
76374
|
-
|
|
76375
|
-
valueHolder.value = value;
|
|
76417
|
+
valueHolder.value = typeof cellValue === 'object' && cellValue !== null ? cellValue.value : cellValue;
|
|
76376
76418
|
}
|
|
76377
76419
|
/**
|
|
76378
76420
|
* `modifySourceData` hook callback.
|
|
@@ -76392,14 +76434,9 @@ function _onModifySourceData(row, columnOrProp, valueHolder, ioMode) {
|
|
|
76392
76434
|
if (visualRow === null || visualColumn === null) {
|
|
76393
76435
|
return;
|
|
76394
76436
|
}
|
|
76395
|
-
|
|
76396
|
-
|
|
76397
|
-
|
|
76398
|
-
if (!isFormulaCellType) {
|
|
76399
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76400
|
-
if (cellType !== 'ARRAY') {
|
|
76401
|
-
return;
|
|
76402
|
-
}
|
|
76437
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
76438
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
76439
|
+
return;
|
|
76403
76440
|
}
|
|
76404
76441
|
const dimensions = this.engine.getSheetDimensions(this.engine.getSheetId(this.sheetName));
|
|
76405
76442
|
|
|
@@ -76708,7 +76745,7 @@ function _onEngineSheetAdded(addedSheetDisplayName) {
|
|
|
76708
76745
|
* @param {string} newDisplayName The new name of the sheet.
|
|
76709
76746
|
*/
|
|
76710
76747
|
function _onEngineSheetRenamed(oldDisplayName, newDisplayName) {
|
|
76711
|
-
this.
|
|
76748
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newDisplayName);
|
|
76712
76749
|
this.hot.runHooks('afterSheetRenamed', oldDisplayName, newDisplayName);
|
|
76713
76750
|
}
|
|
76714
76751
|
/**
|
|
@@ -77522,7 +77559,11 @@ class AxisSyncer {
|
|
|
77522
77559
|
getHfIndexFromVisualIndex(visualIndex) {
|
|
77523
77560
|
const indexesSequence = _classPrivateFieldGet(_indexMapper, this).getIndexesSequence();
|
|
77524
77561
|
const notTrimmedIndexes = _classPrivateFieldGet(_indexMapper, this).getNotTrimmedIndexes();
|
|
77525
|
-
|
|
77562
|
+
|
|
77563
|
+
// Optimization:
|
|
77564
|
+
// notTrimmedIndexes is a subset of indexesSequence,
|
|
77565
|
+
// so for every x indexesSequence.indexOf(x) is always >= notTrimmedIndexes.indexOf(x)
|
|
77566
|
+
return indexesSequence.indexOf(notTrimmedIndexes[visualIndex], visualIndex);
|
|
77526
77567
|
}
|
|
77527
77568
|
|
|
77528
77569
|
/**
|
|
@@ -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-19f5179-20250314
|
|
30
|
+
* Release date: 20/02/2025 (built at 14/03/2025 08:47:49)
|
|
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
|