@univerjs/engine-formula 0.4.0-alpha.2 → 0.4.0-experimental.20241017-da434a2
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.
- package/lib/cjs/index.js +2 -2
- package/lib/es/index.js +43 -13
- package/lib/types/engine/value-object/primitive-object.d.ts +1 -1
- package/lib/umd/index.js +2 -2
- package/package.json +3 -3
- package/LICENSE +0 -176
package/lib/es/index.js
CHANGED
|
@@ -263,7 +263,7 @@ function deserializeRangeWithSheet(refString) {
|
|
|
263
263
|
}
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
|
-
const refStartString = refBody.substring(0, colonIndex), refEndString = refBody.substring(colonIndex + 1), startGrid = singleReferenceToGrid(refStartString), endGrid = singleReferenceToGrid(refEndString), startRow = startGrid.row, startColumn = startGrid.column, endRow = endGrid.row, endColumn = endGrid.column;
|
|
266
|
+
const refStartString = refBody.substring(0, colonIndex), refEndString = refBody.substring(colonIndex + 1), startGrid = singleReferenceToGrid(refStartString), endGrid = singleReferenceToGrid(refEndString), startRow = startGrid.row > endGrid.row ? endGrid.row : startGrid.row, startColumn = startGrid.column > endGrid.column ? endGrid.column : startGrid.column, endRow = startGrid.row > endGrid.row ? startGrid.row : endGrid.row, endColumn = startGrid.column > endGrid.column ? startGrid.column : endGrid.column;
|
|
267
267
|
let rangeType = RANGE_TYPE.NORMAL;
|
|
268
268
|
return Number.isNaN(startRow) && Number.isNaN(endRow) ? rangeType = RANGE_TYPE.COLUMN : Number.isNaN(startColumn) && Number.isNaN(endColumn) && (rangeType = RANGE_TYPE.ROW), {
|
|
269
269
|
unitId,
|
|
@@ -4353,16 +4353,21 @@ const NUMBER_CACHE_LRU_COUNT = 2e5, NumberValueObjectCache = new FormulaAstLRU(N
|
|
|
4353
4353
|
pow(valueObject) {
|
|
4354
4354
|
if (valueObject.isArray())
|
|
4355
4355
|
return valueObject.powInverse(this);
|
|
4356
|
-
|
|
4357
|
-
|
|
4356
|
+
if (this.isError())
|
|
4357
|
+
return this;
|
|
4358
|
+
const currentValue = this.getValue();
|
|
4359
|
+
let _valueObject = valueObject;
|
|
4360
|
+
if (valueObject.isString() && (_valueObject = valueObject.convertToNumberObjectValue()), _valueObject.isError())
|
|
4361
|
+
return _valueObject;
|
|
4362
|
+
const value = +_valueObject.getValue();
|
|
4363
|
+
if (Number.isNaN(value))
|
|
4358
4364
|
return ErrorValueObject.create(ErrorType$1.VALUE);
|
|
4359
|
-
if (
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
return typeof value == "boolean" ? _NumberValueObject.create(pow(currentValue, value ? 1 : 0)) : this;
|
|
4365
|
+
if (!Number.isFinite(currentValue) || !Number.isFinite(value))
|
|
4366
|
+
return ErrorValueObject.create(ErrorType$1.NUM);
|
|
4367
|
+
if (currentValue === 0)
|
|
4368
|
+
return value < 0 ? ErrorValueObject.create(ErrorType$1.DIV_BY_ZERO) : value === 0 ? ErrorValueObject.create(ErrorType$1.NUM) : _NumberValueObject.create(0);
|
|
4369
|
+
const result = pow(currentValue, value);
|
|
4370
|
+
return Number.isFinite(result) ? _NumberValueObject.create(result) : ErrorValueObject.create(ErrorType$1.NUM);
|
|
4366
4371
|
}
|
|
4367
4372
|
sqrt() {
|
|
4368
4373
|
const currentValue = this.getValue();
|
|
@@ -6081,7 +6086,13 @@ let FormulaRuntimeService = (_a5 = class extends Disposable {
|
|
|
6081
6086
|
const objectValueRefOrArray = functionVariant, { startRow, startColumn, endRow, endColumn } = objectValueRefOrArray.getRangePosition();
|
|
6082
6087
|
if (startRow === endRow && startColumn === endColumn) {
|
|
6083
6088
|
const firstCell = objectValueRefOrArray.getFirstCell(), valueObject = objectValueToCellValue(firstCell);
|
|
6084
|
-
sheetData.setValue(row, column, valueObject), clearArrayUnitData.setValue(row, column, valueObject)
|
|
6089
|
+
sheetData.setValue(row, column, valueObject), clearArrayUnitData.setValue(row, column, valueObject), CELL_INVERTED_INDEX_CACHE.set(
|
|
6090
|
+
unitId,
|
|
6091
|
+
sheetId,
|
|
6092
|
+
column,
|
|
6093
|
+
firstCell.getValue(),
|
|
6094
|
+
row
|
|
6095
|
+
);
|
|
6085
6096
|
return;
|
|
6086
6097
|
}
|
|
6087
6098
|
const arrayRange = {
|
|
@@ -6092,7 +6103,13 @@ let FormulaRuntimeService = (_a5 = class extends Disposable {
|
|
|
6092
6103
|
};
|
|
6093
6104
|
if (arrayData.setValue(row, column, arrayRange), arrayFormulaRange[sheetId] = arrayData.getData(), this._checkIfArrayFormulaRangeHasData(unitId, sheetId, row, column, arrayRange) || this._checkIfArrayFormulaExceeded(rowCount, columnCount, arrayRange)) {
|
|
6094
6105
|
const errorObject = objectValueToCellValue(ErrorValueObject.create(ErrorType$1.SPILL));
|
|
6095
|
-
sheetData.setValue(row, column, errorObject), clearArrayUnitData.setValue(row, column, errorObject)
|
|
6106
|
+
sheetData.setValue(row, column, errorObject), clearArrayUnitData.setValue(row, column, errorObject), CELL_INVERTED_INDEX_CACHE.set(
|
|
6107
|
+
unitId,
|
|
6108
|
+
sheetId,
|
|
6109
|
+
column,
|
|
6110
|
+
ErrorType$1.SPILL,
|
|
6111
|
+
row
|
|
6112
|
+
);
|
|
6096
6113
|
const unitData2 = this._currentConfigService.getUnitData();
|
|
6097
6114
|
objectValueRefOrArray.iterator((_, rowIndex, columnIndex) => {
|
|
6098
6115
|
var _a27, _b;
|
|
@@ -6110,6 +6127,13 @@ let FormulaRuntimeService = (_a5 = class extends Disposable {
|
|
|
6110
6127
|
} else {
|
|
6111
6128
|
const spillError = ErrorValueObject.create(ErrorType$1.SPILL);
|
|
6112
6129
|
objectValueRefOrArray.iterator((valueObject, rowIndex, columnIndex) => {
|
|
6130
|
+
CELL_INVERTED_INDEX_CACHE.set(
|
|
6131
|
+
unitId,
|
|
6132
|
+
sheetId,
|
|
6133
|
+
column - startColumn + columnIndex,
|
|
6134
|
+
valueObject ? valueObject.getValue() : 0,
|
|
6135
|
+
row - startRow + rowIndex
|
|
6136
|
+
);
|
|
6113
6137
|
const value = objectValueToCellValue(valueObject);
|
|
6114
6138
|
if (rowIndex === startRow && columnIndex === startColumn) {
|
|
6115
6139
|
if (valueObject != null && valueObject.isError() && valueObject.isEqualType(spillError))
|
|
@@ -6122,7 +6146,13 @@ let FormulaRuntimeService = (_a5 = class extends Disposable {
|
|
|
6122
6146
|
}
|
|
6123
6147
|
} else {
|
|
6124
6148
|
const valueObject = objectValueToCellValue(functionVariant);
|
|
6125
|
-
sheetData.setValue(row, column, valueObject),
|
|
6149
|
+
sheetData.setValue(row, column, valueObject), CELL_INVERTED_INDEX_CACHE.set(
|
|
6150
|
+
unitId,
|
|
6151
|
+
sheetId,
|
|
6152
|
+
column,
|
|
6153
|
+
functionVariant.getValue(),
|
|
6154
|
+
row
|
|
6155
|
+
), clearArrayUnitData.setValue(row, column, valueObject);
|
|
6126
6156
|
}
|
|
6127
6157
|
}
|
|
6128
6158
|
getUnitData() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { compareToken } from '../../basics/token';
|
|
2
1
|
import { FormulaAstLRU } from '../../basics/cache-lru';
|
|
2
|
+
import { compareToken } from '../../basics/token';
|
|
3
3
|
import { BaseValueObject, ErrorValueObject } from './base-value-object';
|
|
4
4
|
export type PrimitiveValueType = string | boolean | number | null;
|
|
5
5
|
export declare class NullValueObject extends BaseValueObject {
|