handsontable 0.0.0-next-44bc39b-20250312 → 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 +3 -4
- package/styles/handsontable.min.css +3 -3
- package/styles/ht-theme-horizon.css +2 -2
- package/styles/ht-theme-horizon.min.css +2 -2
- package/styles/ht-theme-main.css +2 -2
- package/styles/ht-theme-main.min.css +2 -2
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date: 20/02/2025 (built at
|
|
28
|
+
* Version: 0.0.0-next-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')
|
|
@@ -42855,8 +42855,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
|
|
|
42855
42855
|
Handsontable.CellCoords = _src.CellCoords;
|
|
42856
42856
|
Handsontable.CellRange = _src.CellRange;
|
|
42857
42857
|
Handsontable.packageName = 'handsontable';
|
|
42858
|
-
Handsontable.buildDate = "
|
|
42859
|
-
Handsontable.version = "0.0.0-next-
|
|
42858
|
+
Handsontable.buildDate = "14/03/2025 08:46:43";
|
|
42859
|
+
Handsontable.version = "0.0.0-next-19f5179-20250314";
|
|
42860
42860
|
Handsontable.languages = {
|
|
42861
42861
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
42862
42862
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
|
@@ -45964,11 +45964,16 @@ function Core(rootElement, userSettings) {
|
|
|
45964
45964
|
* @function getCellMeta
|
|
45965
45965
|
* @param {number} row Visual row index.
|
|
45966
45966
|
* @param {number} column Visual column index.
|
|
45967
|
+
* @param {object} options Execution options for the `getCellMeta` method.
|
|
45968
|
+
* @param {boolean} [options.skipMetaExtension=false] If `true`, skips extending the cell meta object. This means, the `cells` function, as well as the `afterGetCellMeta` and `beforeGetCellMeta` hooks, will not be called.
|
|
45967
45969
|
* @returns {object} The cell properties object.
|
|
45968
45970
|
* @fires Hooks#beforeGetCellMeta
|
|
45969
45971
|
* @fires Hooks#afterGetCellMeta
|
|
45970
45972
|
*/
|
|
45971
45973
|
this.getCellMeta = function (row, column) {
|
|
45974
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
45975
|
+
skipMetaExtension: false
|
|
45976
|
+
};
|
|
45972
45977
|
let physicalRow = this.toPhysicalRow(row);
|
|
45973
45978
|
let physicalColumn = this.toPhysicalColumn(column);
|
|
45974
45979
|
if (physicalRow === null) {
|
|
@@ -45979,7 +45984,8 @@ function Core(rootElement, userSettings) {
|
|
|
45979
45984
|
}
|
|
45980
45985
|
return metaManager.getCellMeta(physicalRow, physicalColumn, {
|
|
45981
45986
|
visualRow: row,
|
|
45982
|
-
visualColumn: column
|
|
45987
|
+
visualColumn: column,
|
|
45988
|
+
...options
|
|
45983
45989
|
});
|
|
45984
45990
|
};
|
|
45985
45991
|
|
|
@@ -54182,7 +54188,7 @@ const domMessages = {
|
|
|
54182
54188
|
function _injectProductInfo(key, element) {
|
|
54183
54189
|
const hasValidType = !isEmpty(key);
|
|
54184
54190
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
54185
|
-
const hotVersion = "0.0.0-next-
|
|
54191
|
+
const hotVersion = "0.0.0-next-19f5179-20250314";
|
|
54186
54192
|
let keyValidityDate;
|
|
54187
54193
|
let consoleMessageState = 'invalid';
|
|
54188
54194
|
let domMessageState = 'invalid';
|
|
@@ -90993,22 +90999,21 @@ class MetaManager {
|
|
|
90993
90999
|
*
|
|
90994
91000
|
* @param {number} physicalRow The physical row index.
|
|
90995
91001
|
* @param {number} physicalColumn The physical column index.
|
|
90996
|
-
* @param {object} options
|
|
91002
|
+
* @param {object} options Options for the `getCellMeta` method.
|
|
90997
91003
|
* @param {number} options.visualRow The visual row index of the currently requested cell meta object.
|
|
90998
91004
|
* @param {number} options.visualColumn The visual column index of the currently requested cell meta object.
|
|
91005
|
+
* @param {boolean} [options.skipMetaExtension=false] If `true`, omits the `afterGetCellMeta` hook which calls the `extendCellMeta` method.
|
|
90999
91006
|
* @returns {object}
|
|
91000
91007
|
*/
|
|
91001
|
-
getCellMeta(physicalRow, physicalColumn,
|
|
91002
|
-
let {
|
|
91003
|
-
visualRow,
|
|
91004
|
-
visualColumn
|
|
91005
|
-
} = _ref;
|
|
91008
|
+
getCellMeta(physicalRow, physicalColumn, options) {
|
|
91006
91009
|
const cellMeta = this.cellMeta.getMeta(physicalRow, physicalColumn);
|
|
91007
|
-
cellMeta.visualRow = visualRow;
|
|
91008
|
-
cellMeta.visualCol = visualColumn;
|
|
91010
|
+
cellMeta.visualRow = options.visualRow;
|
|
91011
|
+
cellMeta.visualCol = options.visualColumn;
|
|
91009
91012
|
cellMeta.row = physicalRow;
|
|
91010
91013
|
cellMeta.col = physicalColumn;
|
|
91011
|
-
|
|
91014
|
+
if (!options.skipMetaExtension) {
|
|
91015
|
+
this.runLocalHooks('afterGetCellMeta', cellMeta);
|
|
91016
|
+
}
|
|
91012
91017
|
return cellMeta;
|
|
91013
91018
|
}
|
|
91014
91019
|
|
|
@@ -97332,6 +97337,7 @@ var _function = __webpack_require__(497);
|
|
|
97332
97337
|
*/
|
|
97333
97338
|
class DynamicCellMetaMod {
|
|
97334
97339
|
constructor(metaManager) {
|
|
97340
|
+
var _this = this;
|
|
97335
97341
|
/**
|
|
97336
97342
|
* @type {MetaManager}
|
|
97337
97343
|
*/
|
|
@@ -97341,7 +97347,9 @@ class DynamicCellMetaMod {
|
|
|
97341
97347
|
*/
|
|
97342
97348
|
(0, _defineProperty2.default)(this, "metaSyncMemo", new Map());
|
|
97343
97349
|
this.metaManager = metaManager;
|
|
97344
|
-
metaManager.addLocalHook('afterGetCellMeta',
|
|
97350
|
+
metaManager.addLocalHook('afterGetCellMeta', function () {
|
|
97351
|
+
return _this.extendCellMeta(...arguments);
|
|
97352
|
+
});
|
|
97345
97353
|
_hooks.Hooks.getSingleton().add('beforeRender', forceFullRender => {
|
|
97346
97354
|
if (forceFullRender) {
|
|
97347
97355
|
this.metaSyncMemo.clear();
|
|
@@ -112184,6 +112192,7 @@ const COLUMN_SIZE_MAP_NAME = 'autoColumnSize';
|
|
|
112184
112192
|
* :::
|
|
112185
112193
|
*/
|
|
112186
112194
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
112195
|
+
var _isInitialized = /*#__PURE__*/new WeakMap();
|
|
112187
112196
|
var _cachedColumnHeaders = /*#__PURE__*/new WeakMap();
|
|
112188
112197
|
var _visualColumnsToRefresh = /*#__PURE__*/new WeakMap();
|
|
112189
112198
|
var _AutoColumnSize_brand = /*#__PURE__*/new WeakSet();
|
|
@@ -112273,6 +112282,12 @@ class AutoColumnSize extends _base.BasePlugin {
|
|
|
112273
112282
|
* @type {PhysicalIndexToValueMap}
|
|
112274
112283
|
*/
|
|
112275
112284
|
(0, _defineProperty2.default)(this, "columnWidthsMap", new _translations.PhysicalIndexToValueMap());
|
|
112285
|
+
/**
|
|
112286
|
+
* `true` value indicates that the #onInit() function has been already called.
|
|
112287
|
+
*
|
|
112288
|
+
* @type {boolean}
|
|
112289
|
+
*/
|
|
112290
|
+
_classPrivateFieldInitSpec(this, _isInitialized, false);
|
|
112276
112291
|
/**
|
|
112277
112292
|
* Cached column header names. It is used to diff current column headers with previous state and detect which
|
|
112278
112293
|
* columns width should be updated.
|
|
@@ -112411,17 +112426,11 @@ class AutoColumnSize extends _base.BasePlugin {
|
|
|
112411
112426
|
physicalColumn = visualColumn;
|
|
112412
112427
|
}
|
|
112413
112428
|
if (overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
112414
|
-
|
|
112415
|
-
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
112429
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
112416
112430
|
}
|
|
112417
112431
|
});
|
|
112418
112432
|
if (this.ghostTable.columns.length) {
|
|
112419
|
-
this.
|
|
112420
|
-
this.ghostTable.getWidths((visualColumn, width) => {
|
|
112421
|
-
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
112422
|
-
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
112423
|
-
});
|
|
112424
|
-
}, true);
|
|
112433
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
112425
112434
|
this.measuredColumns = columnsRange.to + 1;
|
|
112426
112435
|
this.ghostTable.clean();
|
|
112427
112436
|
}
|
|
@@ -112632,20 +112641,36 @@ function _calculateSpecificColumnsWidth(visualColumns) {
|
|
|
112632
112641
|
return;
|
|
112633
112642
|
}
|
|
112634
112643
|
if (!this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
112635
|
-
|
|
112636
|
-
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
112644
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
112637
112645
|
}
|
|
112638
112646
|
});
|
|
112639
112647
|
if (this.ghostTable.columns.length) {
|
|
112640
|
-
this.
|
|
112641
|
-
this.ghostTable.getWidths((visualColumn, width) => {
|
|
112642
|
-
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
112643
|
-
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
112644
|
-
});
|
|
112645
|
-
}, true);
|
|
112648
|
+
_assertClassBrand(_AutoColumnSize_brand, this, _updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
112646
112649
|
this.ghostTable.clean();
|
|
112647
112650
|
}
|
|
112648
112651
|
}
|
|
112652
|
+
/**
|
|
112653
|
+
* Processes a single column for width calculation.
|
|
112654
|
+
*
|
|
112655
|
+
* @param {number} visualColumn Visual column index.
|
|
112656
|
+
* @param {object} rowsRange Range of rows to process.
|
|
112657
|
+
*/
|
|
112658
|
+
function _fillGhostTableWithSamples(visualColumn, rowsRange) {
|
|
112659
|
+
const samples = this.samplesGenerator.generateColumnSamples(visualColumn, rowsRange);
|
|
112660
|
+
samples.forEach((sample, column) => this.ghostTable.addColumn(column, sample));
|
|
112661
|
+
}
|
|
112662
|
+
/**
|
|
112663
|
+
* Updates the column widths map with calculated widths from the ghost table.
|
|
112664
|
+
*
|
|
112665
|
+
*/
|
|
112666
|
+
function _updateColumnWidthsMapBasedOnGhostTable() {
|
|
112667
|
+
this.hot.batchExecution(() => {
|
|
112668
|
+
this.ghostTable.getWidths((visualColumn, width) => {
|
|
112669
|
+
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
112670
|
+
this.columnWidthsMap.setValueAtIndex(physicalColumn, width);
|
|
112671
|
+
});
|
|
112672
|
+
}, true);
|
|
112673
|
+
}
|
|
112649
112674
|
function _onBeforeRender() {
|
|
112650
112675
|
this.calculateVisibleColumnsWidth();
|
|
112651
112676
|
if (!this.inProgress) {
|
|
@@ -112702,6 +112727,7 @@ function _onBeforeColumnResize(size, column, isDblClick) {
|
|
|
112702
112727
|
function _onInit() {
|
|
112703
112728
|
_classPrivateFieldSet(_cachedColumnHeaders, this, this.hot.getColHeader());
|
|
112704
112729
|
this.recalculateAllColumnsWidth();
|
|
112730
|
+
_classPrivateFieldSet(_isInitialized, this, true);
|
|
112705
112731
|
}
|
|
112706
112732
|
/**
|
|
112707
112733
|
* After formulas values updated listener.
|
|
@@ -112709,6 +112735,9 @@ function _onInit() {
|
|
|
112709
112735
|
* @param {Array} changes An array of modified data.
|
|
112710
112736
|
*/
|
|
112711
112737
|
function _onAfterFormulasValuesUpdate(changes) {
|
|
112738
|
+
if (!_classPrivateFieldGet(_isInitialized, this)) {
|
|
112739
|
+
return;
|
|
112740
|
+
}
|
|
112712
112741
|
const changedColumns = changes.reduce((acc, change) => {
|
|
112713
112742
|
var _change$address;
|
|
112714
112743
|
const physicalColumn = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.col;
|
|
@@ -114562,6 +114591,7 @@ const ROW_WIDTHS_MAP_NAME = 'autoRowSize';
|
|
|
114562
114591
|
*/
|
|
114563
114592
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
|
114564
114593
|
var _visualRowsToRefresh = /*#__PURE__*/new WeakMap();
|
|
114594
|
+
var _isInitialized = /*#__PURE__*/new WeakMap();
|
|
114565
114595
|
var _AutoRowSize_brand = /*#__PURE__*/new WeakSet();
|
|
114566
114596
|
class AutoRowSize extends _base.BasePlugin {
|
|
114567
114597
|
static get PLUGIN_KEY() {
|
|
@@ -114664,6 +114694,12 @@ class AutoRowSize extends _base.BasePlugin {
|
|
|
114664
114694
|
* @type {number[]}
|
|
114665
114695
|
*/
|
|
114666
114696
|
_classPrivateFieldInitSpec(this, _visualRowsToRefresh, []);
|
|
114697
|
+
/**
|
|
114698
|
+
* `true` value indicates that the #onInit() function has been already called.
|
|
114699
|
+
*
|
|
114700
|
+
* @type {boolean}
|
|
114701
|
+
*/
|
|
114702
|
+
_classPrivateFieldInitSpec(this, _isInitialized, false);
|
|
114667
114703
|
this.hot.rowIndexMapper.registerMap(ROW_WIDTHS_MAP_NAME, this.rowHeightsMap);
|
|
114668
114704
|
|
|
114669
114705
|
// Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
|
|
@@ -115094,6 +115130,7 @@ function _onBeforeChange(changes) {
|
|
|
115094
115130
|
*/
|
|
115095
115131
|
function _onInit() {
|
|
115096
115132
|
this.recalculateAllRowsHeight();
|
|
115133
|
+
_classPrivateFieldSet(_isInitialized, this, true);
|
|
115097
115134
|
}
|
|
115098
115135
|
/**
|
|
115099
115136
|
* After formulas values updated listener.
|
|
@@ -115101,6 +115138,9 @@ function _onInit() {
|
|
|
115101
115138
|
* @param {Array} changes An array of modified data.
|
|
115102
115139
|
*/
|
|
115103
115140
|
function _onAfterFormulasValuesUpdate(changes) {
|
|
115141
|
+
if (!_classPrivateFieldGet(_isInitialized, this)) {
|
|
115142
|
+
return;
|
|
115143
|
+
}
|
|
115104
115144
|
const changedRows = changes.reduce((acc, change) => {
|
|
115105
115145
|
var _change$address;
|
|
115106
115146
|
const physicalRow = (_change$address = change.address) === null || _change$address === void 0 ? void 0 : _change$address.row;
|
|
@@ -132795,7 +132835,6 @@ __webpack_require__(307);
|
|
|
132795
132835
|
__webpack_require__(309);
|
|
132796
132836
|
__webpack_require__(311);
|
|
132797
132837
|
__webpack_require__(623);
|
|
132798
|
-
__webpack_require__(519);
|
|
132799
132838
|
__webpack_require__(329);
|
|
132800
132839
|
__webpack_require__(338);
|
|
132801
132840
|
var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
|
|
@@ -132853,13 +132892,9 @@ class Formulas extends _base.BasePlugin {
|
|
|
132853
132892
|
super(...arguments);
|
|
132854
132893
|
_this = this;
|
|
132855
132894
|
/**
|
|
132856
|
-
*
|
|
132857
|
-
* validator function.
|
|
132895
|
+
* Update sheetName and sheetId properties.
|
|
132858
132896
|
*
|
|
132859
|
-
* @param {
|
|
132860
|
-
* @param {number} visualRow The visual row index.
|
|
132861
|
-
* @param {number|string} prop The visual column index or property name of the column.
|
|
132862
|
-
* @returns {*} Returns value to validate.
|
|
132897
|
+
* @param {string} [sheetName] The new sheet name.
|
|
132863
132898
|
*/
|
|
132864
132899
|
_classPrivateMethodInitSpec(this, _Formulas_brand);
|
|
132865
132900
|
/**
|
|
@@ -132926,6 +132961,12 @@ class Formulas extends _base.BasePlugin {
|
|
|
132926
132961
|
* @type {HyperFormula|null}
|
|
132927
132962
|
*/
|
|
132928
132963
|
(0, _defineProperty2.default)(this, "engine", null);
|
|
132964
|
+
/**
|
|
132965
|
+
* HyperFormula's sheet id.
|
|
132966
|
+
*
|
|
132967
|
+
* @type {number|null}
|
|
132968
|
+
*/
|
|
132969
|
+
(0, _defineProperty2.default)(this, "sheetId", null);
|
|
132929
132970
|
/**
|
|
132930
132971
|
* HyperFormula's sheet name.
|
|
132931
132972
|
*
|
|
@@ -132960,15 +133001,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
132960
133001
|
static get SETTING_KEYS() {
|
|
132961
133002
|
return [PLUGIN_KEY, ...SETTING_KEYS];
|
|
132962
133003
|
}
|
|
132963
|
-
/**
|
|
132964
|
-
* HyperFormula's sheet id.
|
|
132965
|
-
*
|
|
132966
|
-
* @type {number|null}
|
|
132967
|
-
*/
|
|
132968
|
-
get sheetId() {
|
|
132969
|
-
return this.sheetName === null ? null : this.engine.getSheetId(this.sheetName);
|
|
132970
|
-
}
|
|
132971
|
-
|
|
132972
133004
|
/**
|
|
132973
133005
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
|
132974
133006
|
* hook and if it returns `true` then the {@link Formulas#enablePlugin} method is called.
|
|
@@ -132999,7 +133031,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
132999
133031
|
if (this.sheetName !== null && !this.engine.doesSheetExist(this.sheetName)) {
|
|
133000
133032
|
const newSheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
|
|
133001
133033
|
if (newSheetName !== false) {
|
|
133002
|
-
this.
|
|
133034
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
133003
133035
|
}
|
|
133004
133036
|
}
|
|
133005
133037
|
this.addHook('beforeLoadData', function () {
|
|
@@ -133230,7 +133262,8 @@ class Formulas extends _base.BasePlugin {
|
|
|
133230
133262
|
if (sheetName && this.engine.doesSheetExist(sheetName)) {
|
|
133231
133263
|
this.switchSheet(this.sheetName);
|
|
133232
133264
|
} else {
|
|
133233
|
-
|
|
133265
|
+
const newSheetName = this.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : undefined, this.hot.getSourceDataArray());
|
|
133266
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
|
|
133234
133267
|
}
|
|
133235
133268
|
}
|
|
133236
133269
|
super.updatePlugin(newSettings);
|
|
@@ -133250,7 +133283,6 @@ class Formulas extends _base.BasePlugin {
|
|
|
133250
133283
|
this.engine = null;
|
|
133251
133284
|
super.destroy();
|
|
133252
133285
|
}
|
|
133253
|
-
|
|
133254
133286
|
/**
|
|
133255
133287
|
* Add a sheet to the shared HyperFormula instance.
|
|
133256
133288
|
*
|
|
@@ -133293,7 +133325,7 @@ class Formulas extends _base.BasePlugin {
|
|
|
133293
133325
|
(0, _console.error)(`The sheet named \`${sheetName}\` does not exist, switch aborted.`);
|
|
133294
133326
|
return;
|
|
133295
133327
|
}
|
|
133296
|
-
this.
|
|
133328
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
133297
133329
|
const serialized = this.engine.getSheetSerialized(this.sheetId);
|
|
133298
133330
|
if (serialized.length > 0) {
|
|
133299
133331
|
this.hot.loadData(serialized, `${(0, _string.toUpperCaseFirst)(PLUGIN_KEY)}.switchSheet`);
|
|
@@ -133453,8 +133485,22 @@ class Formulas extends _base.BasePlugin {
|
|
|
133453
133485
|
}
|
|
133454
133486
|
return this.engine.setCellContents(address, newValue);
|
|
133455
133487
|
}
|
|
133488
|
+
|
|
133489
|
+
/**
|
|
133490
|
+
* The hook allows to translate the formula value to calculated value before it goes to the
|
|
133491
|
+
* validator function.
|
|
133492
|
+
*
|
|
133493
|
+
* @param {*} value The cell value to validate.
|
|
133494
|
+
* @param {number} visualRow The visual row index.
|
|
133495
|
+
* @param {number|string} prop The visual column index or property name of the column.
|
|
133496
|
+
* @returns {*} Returns value to validate.
|
|
133497
|
+
*/
|
|
133456
133498
|
}
|
|
133457
133499
|
exports.Formulas = Formulas;
|
|
133500
|
+
function _updateSheetNameAndSheetId(sheetName) {
|
|
133501
|
+
this.sheetName = sheetName;
|
|
133502
|
+
this.sheetId = this.engine.getSheetId(this.sheetName);
|
|
133503
|
+
}
|
|
133458
133504
|
function _onBeforeValidate(value, visualRow, prop) {
|
|
133459
133505
|
const visualColumn = this.hot.propToCol(prop);
|
|
133460
133506
|
if (this.isFormulaCellType(visualRow, visualColumn)) {
|
|
@@ -133582,29 +133628,33 @@ function _onBeforeLoadData(sourceData, initialLoad) {
|
|
|
133582
133628
|
* Callback to `afterCellMetaReset` hook which is triggered after setting cell meta.
|
|
133583
133629
|
*/
|
|
133584
133630
|
function _onAfterCellMetaReset() {
|
|
133631
|
+
if (_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
133632
|
+
this.switchSheet(this.sheetName);
|
|
133633
|
+
return;
|
|
133634
|
+
}
|
|
133585
133635
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
133586
|
-
let valueChanged = false;
|
|
133587
133636
|
sourceDataArray.forEach((rowData, rowIndex) => {
|
|
133588
133637
|
rowData.forEach((cellValue, columnIndex) => {
|
|
133589
|
-
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex
|
|
133638
|
+
const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex, {
|
|
133639
|
+
skipMetaExtension: true
|
|
133640
|
+
});
|
|
133590
133641
|
const dateFormat = cellMeta.dateFormat;
|
|
133591
133642
|
if ((0, _utils.isDate)(cellValue, cellMeta.type)) {
|
|
133592
|
-
valueChanged = true;
|
|
133593
133643
|
if ((0, _utils.isDateValid)(cellValue, dateFormat)) {
|
|
133594
133644
|
// Rewriting date in HOT format to HF format.
|
|
133595
133645
|
sourceDataArray[rowIndex][columnIndex] = (0, _utils.getDateInHfFormat)(cellValue, dateFormat);
|
|
133596
|
-
} else if (
|
|
133646
|
+
} else if (!cellValue.startsWith('=')) {
|
|
133597
133647
|
// Escaping value from date parsing using "'" sign (HF feature).
|
|
133598
133648
|
sourceDataArray[rowIndex][columnIndex] = `'${cellValue}`;
|
|
133599
133649
|
}
|
|
133600
133650
|
}
|
|
133601
133651
|
});
|
|
133602
133652
|
});
|
|
133603
|
-
|
|
133604
|
-
|
|
133605
|
-
|
|
133606
|
-
|
|
133607
|
-
|
|
133653
|
+
_classPrivateFieldSet(_internalOperationPending, this, true);
|
|
133654
|
+
const dependentCells = this.engine.setSheetContent(this.sheetId, sourceDataArray);
|
|
133655
|
+
this.indexSyncer.setupSyncEndpoint(this.engine, this.sheetId);
|
|
133656
|
+
this.renderDependentSheets(dependentCells);
|
|
133657
|
+
_classPrivateFieldSet(_internalOperationPending, this, false);
|
|
133608
133658
|
}
|
|
133609
133659
|
/**
|
|
133610
133660
|
* `afterLoadData` hook callback.
|
|
@@ -133618,7 +133668,12 @@ function _onAfterLoadData(sourceData, initialLoad) {
|
|
|
133618
133668
|
if (source.includes((0, _string.toUpperCaseFirst)(PLUGIN_KEY))) {
|
|
133619
133669
|
return;
|
|
133620
133670
|
}
|
|
133621
|
-
|
|
133671
|
+
const sheetName = (0, _register.setupSheet)(this.engine, this.hot.getSettings()[PLUGIN_KEY].sheetName);
|
|
133672
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, sheetName);
|
|
133673
|
+
if (source === 'updateSettings') {
|
|
133674
|
+
// For performance reasons, the initialization will be done in afterCellMetaReset hook
|
|
133675
|
+
return;
|
|
133676
|
+
}
|
|
133622
133677
|
if (!_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
|
|
133623
133678
|
const sourceDataArray = this.hot.getSourceDataArray();
|
|
133624
133679
|
if (this.engine.isItPossibleToReplaceSheetContent(this.sheetId, sourceDataArray)) {
|
|
@@ -133649,17 +133704,10 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
133649
133704
|
if (visualRow === null || visualColumn === null) {
|
|
133650
133705
|
return;
|
|
133651
133706
|
}
|
|
133652
|
-
|
|
133653
|
-
|
|
133654
|
-
|
|
133655
|
-
|
|
133656
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133657
|
-
if (cellType !== 'ARRAY') {
|
|
133658
|
-
if ((0, _utils.isEscapedFormulaExpression)(valueHolder.value)) {
|
|
133659
|
-
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
133660
|
-
}
|
|
133661
|
-
return;
|
|
133662
|
-
}
|
|
133707
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133708
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
133709
|
+
valueHolder.value = (0, _utils.unescapeFormulaExpression)(valueHolder.value);
|
|
133710
|
+
return;
|
|
133663
133711
|
}
|
|
133664
133712
|
const address = {
|
|
133665
133713
|
row: this.rowAxisSyncer.getHfIndexFromVisualIndex(visualRow),
|
|
@@ -133668,21 +133716,15 @@ function _onModifyData(physicalRow, visualColumn, valueHolder, ioMode) {
|
|
|
133668
133716
|
};
|
|
133669
133717
|
let cellValue = this.engine.getCellValue(address); // Date as an integer (Excel like date).
|
|
133670
133718
|
|
|
133671
|
-
|
|
133672
|
-
|
|
133673
|
-
|
|
133674
|
-
// is executed once again and it cause creation of an infinite loop.
|
|
133675
|
-
let cellMeta = this.hot.getCellsMeta().find(singleCellMeta => singleCellMeta.visualRow === visualRow && singleCellMeta.visualCol === visualColumn);
|
|
133676
|
-
if (cellMeta === undefined) {
|
|
133677
|
-
cellMeta = {};
|
|
133678
|
-
}
|
|
133719
|
+
const cellMeta = this.hot.getCellMeta(visualRow, visualColumn, {
|
|
133720
|
+
skipMetaExtension: true
|
|
133721
|
+
});
|
|
133679
133722
|
if (cellMeta.type === 'date' && (0, _number.isNumeric)(cellValue)) {
|
|
133680
133723
|
cellValue = (0, _utils.getDateFromExcelDate)(cellValue, cellMeta.dateFormat);
|
|
133681
133724
|
}
|
|
133682
133725
|
|
|
133683
133726
|
// If `cellValue` is an object it is expected to be an error
|
|
133684
|
-
|
|
133685
|
-
valueHolder.value = value;
|
|
133727
|
+
valueHolder.value = typeof cellValue === 'object' && cellValue !== null ? cellValue.value : cellValue;
|
|
133686
133728
|
}
|
|
133687
133729
|
/**
|
|
133688
133730
|
* `modifySourceData` hook callback.
|
|
@@ -133702,14 +133744,9 @@ function _onModifySourceData(row, columnOrProp, valueHolder, ioMode) {
|
|
|
133702
133744
|
if (visualRow === null || visualColumn === null) {
|
|
133703
133745
|
return;
|
|
133704
133746
|
}
|
|
133705
|
-
|
|
133706
|
-
|
|
133707
|
-
|
|
133708
|
-
if (!isFormulaCellType) {
|
|
133709
|
-
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133710
|
-
if (cellType !== 'ARRAY') {
|
|
133711
|
-
return;
|
|
133712
|
-
}
|
|
133747
|
+
const cellType = this.getCellType(visualRow, visualColumn);
|
|
133748
|
+
if (cellType === 'VALUE' || cellType === 'EMPTY') {
|
|
133749
|
+
return;
|
|
133713
133750
|
}
|
|
133714
133751
|
const dimensions = this.engine.getSheetDimensions(this.engine.getSheetId(this.sheetName));
|
|
133715
133752
|
|
|
@@ -134018,7 +134055,7 @@ function _onEngineSheetAdded(addedSheetDisplayName) {
|
|
|
134018
134055
|
* @param {string} newDisplayName The new name of the sheet.
|
|
134019
134056
|
*/
|
|
134020
134057
|
function _onEngineSheetRenamed(oldDisplayName, newDisplayName) {
|
|
134021
|
-
this.
|
|
134058
|
+
_assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newDisplayName);
|
|
134022
134059
|
this.hot.runHooks('afterSheetRenamed', oldDisplayName, newDisplayName);
|
|
134023
134060
|
}
|
|
134024
134061
|
/**
|
|
@@ -134832,7 +134869,11 @@ class AxisSyncer {
|
|
|
134832
134869
|
getHfIndexFromVisualIndex(visualIndex) {
|
|
134833
134870
|
const indexesSequence = _classPrivateFieldGet(_indexMapper, this).getIndexesSequence();
|
|
134834
134871
|
const notTrimmedIndexes = _classPrivateFieldGet(_indexMapper, this).getNotTrimmedIndexes();
|
|
134835
|
-
|
|
134872
|
+
|
|
134873
|
+
// Optimization:
|
|
134874
|
+
// notTrimmedIndexes is a subset of indexesSequence,
|
|
134875
|
+
// so for every x indexesSequence.indexOf(x) is always >= notTrimmedIndexes.indexOf(x)
|
|
134876
|
+
return indexesSequence.indexOf(notTrimmedIndexes[visualIndex], visualIndex);
|
|
134836
134877
|
}
|
|
134837
134878
|
|
|
134838
134879
|
/**
|
|
@@ -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
|