@omegagrid/grid-core 0.10.78 → 0.10.79
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.
|
@@ -3,6 +3,8 @@ import { ArrayArg } from "../helpers";
|
|
|
3
3
|
export declare function address(row: number, column: number, mode?: number): string;
|
|
4
4
|
export declare function vlookup(lookupValue: string, lookupTable: Matrix<string>, colIndex: number, exactMatch?: boolean): string;
|
|
5
5
|
export declare function hlookup(lookupValue: string, lookupTable: Matrix<string>, rowIndex: number, exactMatch?: boolean): string;
|
|
6
|
+
export declare function xlookup(lookupValue: unknown, lookupArray: Matrix<unknown>, returnArray: Matrix<unknown>, ifNotFound?: unknown, matchMode?: number, searchMode?: number): unknown;
|
|
7
|
+
export declare function xmatch(lookupValue: unknown, lookupArray: Matrix<unknown>, matchMode?: number, searchMode?: number): number;
|
|
6
8
|
export declare function lookup(lookupValue: unknown, lookupTable: Matrix<unknown>, resultTable?: Matrix<unknown>): unknown;
|
|
7
9
|
export declare function choose(index: number, ...args: ArrayArg): unknown;
|
|
8
10
|
export declare function column(address?: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,QAAQ,EAA8B,MAAM,YAAY,CAAC;AAYlE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAI,UAK5D;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAQ,UAW7G;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAQ,UAW7G;AAED,wBAAgB,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,WAYvG;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,QAAQ,WAUtD;AAED,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,UAEtC;AAED,wBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,UAEnC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,UAEtC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,QAAQ,UAEnC;AAED,wBAAgB,WAAW,WAG1B;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,6DAMjE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,WAwBnC;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,SAAI,UAU/E;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,aAcnG;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAiBtD"}
|
|
1
|
+
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,QAAQ,EAA8B,MAAM,YAAY,CAAC;AAYlE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAI,UAK5D;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAQ,UAW7G;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAQ,UAW7G;AAkDD,wBAAgB,OAAO,CACtB,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAC5B,UAAU,GAAE,OAAc,EAC1B,SAAS,SAAI,EACb,UAAU,SAAI,WASd;AAED,wBAAgB,MAAM,CACrB,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAC5B,SAAS,SAAI,EACb,UAAU,SAAI,UAKd;AAED,wBAAgB,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,WAYvG;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,QAAQ,WAUtD;AAED,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,UAEtC;AAED,wBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,UAEnC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,UAEtC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,QAAQ,UAEnC;AAED,wBAAgB,WAAW,WAG1B;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,6DAMjE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,WAwBnC;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,SAAI,UAU/E;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,aAcnG;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAiBtD"}
|
|
@@ -43,6 +43,74 @@ export function hlookup(lookupValue, lookupTable, rowIndex, exactMatch = false)
|
|
|
43
43
|
}
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
|
+
function getWildcardMatcher(searchValue) {
|
|
47
|
+
// translate Excel wildcards: ? = any single char, * = any sequence, ~? / ~* / ~~ = literals
|
|
48
|
+
let pattern = '';
|
|
49
|
+
const s = searchValue == null ? '' : searchValue.toString();
|
|
50
|
+
for (let i = 0; i < s.length; i++) {
|
|
51
|
+
const ch = s[i];
|
|
52
|
+
if (ch == '~' && i + 1 < s.length)
|
|
53
|
+
pattern += s[++i].replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
54
|
+
else if (ch == '?')
|
|
55
|
+
pattern += '.';
|
|
56
|
+
else if (ch == '*')
|
|
57
|
+
pattern += '.*';
|
|
58
|
+
else
|
|
59
|
+
pattern += ch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
60
|
+
}
|
|
61
|
+
const regex = new RegExp('^' + pattern + '$', 'i');
|
|
62
|
+
return (value) => regex.test((value ?? '').toString());
|
|
63
|
+
}
|
|
64
|
+
function compareValues(a, b) {
|
|
65
|
+
if (typeof a == 'number' && typeof b == 'number')
|
|
66
|
+
return a - b;
|
|
67
|
+
const sa = (a ?? '').toString().toLowerCase();
|
|
68
|
+
const sb = (b ?? '').toString().toLowerCase();
|
|
69
|
+
return sa < sb ? -1 : (sa > sb ? 1 : 0);
|
|
70
|
+
}
|
|
71
|
+
// searches a single row or column and returns the matched 0-based index, or -1
|
|
72
|
+
function xsearch(lookupValue, values, matchMode, searchMode) {
|
|
73
|
+
const reverse = searchMode < 0;
|
|
74
|
+
const isMatch = matchMode == 2
|
|
75
|
+
? getWildcardMatcher(lookupValue)
|
|
76
|
+
: (value) => compareValues(value, lookupValue) == 0;
|
|
77
|
+
let bestIndex = -1;
|
|
78
|
+
for (let n = 0; n < values.length; n++) {
|
|
79
|
+
const i = reverse ? values.length - 1 - n : n;
|
|
80
|
+
const value = values[i];
|
|
81
|
+
if (isMatch(value))
|
|
82
|
+
return i;
|
|
83
|
+
if (matchMode == -1 && compareValues(value, lookupValue) < 0) {
|
|
84
|
+
if (bestIndex < 0 || compareValues(value, values[bestIndex]) > 0)
|
|
85
|
+
bestIndex = i;
|
|
86
|
+
}
|
|
87
|
+
else if (matchMode == 1 && compareValues(value, lookupValue) > 0) {
|
|
88
|
+
if (bestIndex < 0 || compareValues(value, values[bestIndex]) < 0)
|
|
89
|
+
bestIndex = i;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return bestIndex;
|
|
93
|
+
}
|
|
94
|
+
// lookup_array is expected to be a single row or a single column
|
|
95
|
+
function isRowVector(lookupArray) {
|
|
96
|
+
return lookupArray.length == 1 && (lookupArray[0]?.length ?? 0) > 1;
|
|
97
|
+
}
|
|
98
|
+
export function xlookup(lookupValue, lookupArray, returnArray, ifNotFound = null, matchMode = 0, searchMode = 1) {
|
|
99
|
+
const isRow = isRowVector(lookupArray);
|
|
100
|
+
const values = isRow ? lookupArray[0] : lookupArray.map(row => row?.[0]);
|
|
101
|
+
const i = xsearch(lookupValue, values, matchMode, searchMode);
|
|
102
|
+
if (i < 0)
|
|
103
|
+
return ifNotFound;
|
|
104
|
+
const slice = isRow ? returnArray.map(row => row?.[i]) : returnArray[i];
|
|
105
|
+
if (slice == null)
|
|
106
|
+
return null;
|
|
107
|
+
return slice.length == 1 ? slice[0] : slice;
|
|
108
|
+
}
|
|
109
|
+
export function xmatch(lookupValue, lookupArray, matchMode = 0, searchMode = 1) {
|
|
110
|
+
const values = isRowVector(lookupArray) ? lookupArray[0] : lookupArray.map(row => row?.[0]);
|
|
111
|
+
const i = xsearch(lookupValue, values, matchMode, searchMode);
|
|
112
|
+
return i < 0 ? null : i + 1;
|
|
113
|
+
}
|
|
46
114
|
export function lookup(lookupValue, lookupTable, resultTable) {
|
|
47
115
|
let r, c;
|
|
48
116
|
exit_loops: for (r = 0; r < lookupTable.length; r++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/calculations/functions/lookup.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix } from \"@omegagrid/core\";\nimport { FormulaContext, prefixFormula } from \"..\";\nimport { CellRange } from \"../../common\";\nimport { ArrayArg, eachValue, getFormulaCells } from \"../helpers\";\n\nfunction getStringMatcher(searchValue: string, exactMatch: boolean): ((value: string) => boolean) {\n\tsearchValue = searchValue == null ? '' : searchValue.toString();\n\tif (exactMatch) {\n\t\treturn (value: string) => value == searchValue;\t\n\t} else {\n\t\tsearchValue = searchValue.toLowerCase();\n\t\treturn (value: string) => (value ?? '').toString().toLowerCase() == searchValue;\n\t}\n}\n\nexport function address(row: number, column: number, mode = 1) {\n\tconst range = new CellRange(Math.max((column || 0) - 1, 0), Math.max((row || 0) - 1, 0));\n\tif (mode == 1 || mode == 2) range.r1Anchor = true;\n\tif (mode == 1 || mode == 3) range.c1Anchor = true;\n\treturn range.A1;\n}\n\nexport function vlookup(lookupValue: string, lookupTable: Matrix<string>, colIndex: number, exactMatch = false) {\n\tlet r: number, c: number;\n\tconst match = getStringMatcher(lookupValue, exactMatch);\n\tfor (r = 0; r < lookupTable.length; r++) {\n\t\tfor (c = 0; c < lookupTable[r].length; c++) {\n\t\t\tif (match(lookupTable[r][c])) {\n\t\t\t\treturn lookupTable[r][colIndex - 1];\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function hlookup(lookupValue: string, lookupTable: Matrix<string>, rowIndex: number, exactMatch = false) {\n\tlet r: number, c: number;\n\tconst match = getStringMatcher(lookupValue, exactMatch);\n\tfor (r = 0; r < lookupTable.length; r++) {\n\t\tfor (c = 0; c < lookupTable[r].length; c++) {\n\t\t\tif (match(lookupTable[r][c])) {\n\t\t\t\treturn lookupTable[rowIndex - 1][c];\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function lookup(lookupValue: unknown, lookupTable: Matrix<unknown>, resultTable?: Matrix<unknown>) {\n\tlet r: number, c: number;\n\n\texit_loops:\n\tfor (r = 0; r < lookupTable.length; r++) {\n\t\tfor (c = 0; c < lookupTable[r].length; c++) {\n\t\t\tif (lookupTable[r][c] == lookupValue) break exit_loops;\n\t\t}\n\t}\n\n\tif (resultTable) return resultTable[r] ? resultTable[r][c] : null;\n\telse return lookupTable[r][lookupTable[r].length - 1];\n}\n\nexport function choose(index: number, ...args: ArrayArg) {\n\tlet result: unknown = null;\n\tlet current = 0;\n\teachValue(args, v => { \n\t\tif (index == ++current) {\n\t\t\tresult = v;\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn result;\n}\n\nexport function column(address?: string) {\n\treturn (address ? CellRange.fromA1(address).c1 : (this as FormulaContext).cell.c) + 1;\n}\n\nexport function row(address?: string) {\n\treturn (address ? CellRange.fromA1(address).r1 : (this as FormulaContext).cell.r) + 1;\n}\n\nexport function columns(range: ArrayArg) {\n\treturn Array.isArray(range) ? range[0]?.length : 1;\n}\n\nexport function rows(range: ArrayArg) {\n\treturn Array.isArray(range) ? range.length : 1;\n}\n\nexport function formulatext() {\n\tconst cell = getFormulaCells(this)[0];\n\treturn cell && cell.hasFormula ? (' ' + prefixFormula(cell.formula)) : '';\n}\n\nexport function index(range: ArrayArg, row: number, column: number) {\n\trow = row || 1;\n\tcolumn = column || 1;\n\tif (Array.isArray(range)) return range[row - 1] ? range[row - 1][column - 1] : null;\n\telse if (row == 1 && column == 1) return range;\n\telse return null;\n}\n\nexport function indirect(ref: string) {\n\tconst currentCell = (this as FormulaContext).cell;\n\tconst model = currentCell.model;\n\tconst targetCell = model.getCellByA1(ref);\n\n\t// register string reference dependencies\n\tlet map: Map<string, [CellRange, string?]>;\n\tif (model.calculations.dependencies.cellDependencies.has(currentCell.address)) {\n\t\tmap = model.calculations.dependencies.cellDependencies.get(currentCell.address);\n\t} else {\n\t\tmap = new Map();\n\t\tmodel.calculations.dependencies.cellDependencies.set(currentCell.address, map);\n\t}\n\tmap.set(targetCell.address, [targetCell.range]);\n\n\tif (model.calculations.dependencies.cellDependants.has(targetCell.address)) {\n\t\tmap = model.calculations.dependencies.cellDependants.get(targetCell.address);\n\t} else {\n\t\tmap = new Map();\n\t\tmodel.calculations.dependencies.cellDependants.set(targetCell.address, map);\n\t}\n\tmap.set(currentCell.address, [currentCell.range]);\n\n\treturn targetCell.value;\n}\n\nexport function match(matchValue: unknown, range: Matrix<unknown>, matchType = 0) {\n\tlet r: number, c: number;\n\tfor (r = 0; r < range.length; r++) {\n\t\tfor (c = 0; c < range[r].length; c++) {\n\t\t\tif (matchType == 0 && range[r][c] == matchValue) return Math.max(r + 1, c + 1);\n\t\t\tif (matchType == 1 && range[r][c] > matchValue) return Math.max(r + 1, c + 1);\n\t\t\tif (matchType == -1 && range[r][c] < matchValue) return Math.max(r + 1, c + 1);\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function offset(_ref: unknown, rows: number, columns: number, height?: number, width?: number) {\n\tconst cell = getFormulaCells(this)[0];\n\tconst result: unknown[] = [];\n\theight = height || 1;\n\twidth = width || 1;\n\tfor (let r = 0; r < height; r++) {\n\t\tconst row: unknown[] = [];\n\t\tfor (let c = 0; c < width; c++) {\n\t\t\tconst cell2 = cell.model.rows[cell.r + r + rows].cell(cell.c + c + columns);\n\t\t\trow.push(cell2 ? cell.value : null)\n\t\t}\n\t\tresult.push(row);\n\t}\n\treturn result;\n}\n\nexport function filter(range: Matrix, boolRange: Matrix) {\n\tconst result: unknown[] = [];\n\tif (range.length == boolRange.length) {\n\t\tfor (let r = 0; r < range.length; r++) {\n\t\t\tlet match = true;\n\t\t\tfor (let c = 0; c < boolRange[r].length; c++) {\n\t\t\t\tif (!boolRange[r][c]) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (match) result.push(range[r]);\n\t\t}\n\t} else {\n\t\t// by columns\n\t}\n\treturn result;\n}"]}
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/calculations/functions/lookup.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix } from \"@omegagrid/core\";\nimport { FormulaContext, prefixFormula } from \"..\";\nimport { CellRange } from \"../../common\";\nimport { ArrayArg, eachValue, getFormulaCells } from \"../helpers\";\n\nfunction getStringMatcher(searchValue: string, exactMatch: boolean): ((value: string) => boolean) {\n\tsearchValue = searchValue == null ? '' : searchValue.toString();\n\tif (exactMatch) {\n\t\treturn (value: string) => value == searchValue;\t\n\t} else {\n\t\tsearchValue = searchValue.toLowerCase();\n\t\treturn (value: string) => (value ?? '').toString().toLowerCase() == searchValue;\n\t}\n}\n\nexport function address(row: number, column: number, mode = 1) {\n\tconst range = new CellRange(Math.max((column || 0) - 1, 0), Math.max((row || 0) - 1, 0));\n\tif (mode == 1 || mode == 2) range.r1Anchor = true;\n\tif (mode == 1 || mode == 3) range.c1Anchor = true;\n\treturn range.A1;\n}\n\nexport function vlookup(lookupValue: string, lookupTable: Matrix<string>, colIndex: number, exactMatch = false) {\n\tlet r: number, c: number;\n\tconst match = getStringMatcher(lookupValue, exactMatch);\n\tfor (r = 0; r < lookupTable.length; r++) {\n\t\tfor (c = 0; c < lookupTable[r].length; c++) {\n\t\t\tif (match(lookupTable[r][c])) {\n\t\t\t\treturn lookupTable[r][colIndex - 1];\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function hlookup(lookupValue: string, lookupTable: Matrix<string>, rowIndex: number, exactMatch = false) {\n\tlet r: number, c: number;\n\tconst match = getStringMatcher(lookupValue, exactMatch);\n\tfor (r = 0; r < lookupTable.length; r++) {\n\t\tfor (c = 0; c < lookupTable[r].length; c++) {\n\t\t\tif (match(lookupTable[r][c])) {\n\t\t\t\treturn lookupTable[rowIndex - 1][c];\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction getWildcardMatcher(searchValue: string): ((value: unknown) => boolean) {\n\t// translate Excel wildcards: ? = any single char, * = any sequence, ~? / ~* / ~~ = literals\n\tlet pattern = '';\n\tconst s = searchValue == null ? '' : searchValue.toString();\n\tfor (let i = 0; i < s.length; i++) {\n\t\tconst ch = s[i];\n\t\tif (ch == '~' && i + 1 < s.length) pattern += s[++i].replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\telse if (ch == '?') pattern += '.';\n\t\telse if (ch == '*') pattern += '.*';\n\t\telse pattern += ch.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t}\n\tconst regex = new RegExp('^' + pattern + '$', 'i');\n\treturn (value: unknown) => regex.test((value ?? '').toString());\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n\tif (typeof a == 'number' && typeof b == 'number') return a - b;\n\tconst sa = (a ?? '').toString().toLowerCase();\n\tconst sb = (b ?? '').toString().toLowerCase();\n\treturn sa < sb ? -1 : (sa > sb ? 1 : 0);\n}\n\n// searches a single row or column and returns the matched 0-based index, or -1\nfunction xsearch(lookupValue: unknown, values: unknown[], matchMode: number, searchMode: number): number {\n\tconst reverse = searchMode < 0;\n\tconst isMatch = matchMode == 2\n\t\t? getWildcardMatcher(lookupValue as string)\n\t\t: (value: unknown) => compareValues(value, lookupValue) == 0;\n\n\tlet bestIndex = -1;\n\tfor (let n = 0; n < values.length; n++) {\n\t\tconst i = reverse ? values.length - 1 - n : n;\n\t\tconst value = values[i];\n\t\tif (isMatch(value)) return i;\n\t\tif (matchMode == -1 && compareValues(value, lookupValue) < 0) {\n\t\t\tif (bestIndex < 0 || compareValues(value, values[bestIndex]) > 0) bestIndex = i;\n\t\t} else if (matchMode == 1 && compareValues(value, lookupValue) > 0) {\n\t\t\tif (bestIndex < 0 || compareValues(value, values[bestIndex]) < 0) bestIndex = i;\n\t\t}\n\t}\n\treturn bestIndex;\n}\n\n// lookup_array is expected to be a single row or a single column\nfunction isRowVector(lookupArray: Matrix<unknown>) {\n\treturn lookupArray.length == 1 && (lookupArray[0]?.length ?? 0) > 1;\n}\n\nexport function xlookup(\n\tlookupValue: unknown,\n\tlookupArray: Matrix<unknown>,\n\treturnArray: Matrix<unknown>,\n\tifNotFound: unknown = null,\n\tmatchMode = 0,\n\tsearchMode = 1\n) {\n\tconst isRow = isRowVector(lookupArray);\n\tconst values = isRow ? lookupArray[0] : lookupArray.map(row => row?.[0]);\n\tconst i = xsearch(lookupValue, values, matchMode, searchMode);\n\tif (i < 0) return ifNotFound;\n\tconst slice = isRow ? returnArray.map(row => row?.[i]) : returnArray[i];\n\tif (slice == null) return null;\n\treturn slice.length == 1 ? slice[0] : slice;\n}\n\nexport function xmatch(\n\tlookupValue: unknown,\n\tlookupArray: Matrix<unknown>,\n\tmatchMode = 0,\n\tsearchMode = 1\n) {\n\tconst values = isRowVector(lookupArray) ? lookupArray[0] : lookupArray.map(row => row?.[0]);\n\tconst i = xsearch(lookupValue, values, matchMode, searchMode);\n\treturn i < 0 ? null : i + 1;\n}\n\nexport function lookup(lookupValue: unknown, lookupTable: Matrix<unknown>, resultTable?: Matrix<unknown>) {\n\tlet r: number, c: number;\n\n\texit_loops:\n\tfor (r = 0; r < lookupTable.length; r++) {\n\t\tfor (c = 0; c < lookupTable[r].length; c++) {\n\t\t\tif (lookupTable[r][c] == lookupValue) break exit_loops;\n\t\t}\n\t}\n\n\tif (resultTable) return resultTable[r] ? resultTable[r][c] : null;\n\telse return lookupTable[r][lookupTable[r].length - 1];\n}\n\nexport function choose(index: number, ...args: ArrayArg) {\n\tlet result: unknown = null;\n\tlet current = 0;\n\teachValue(args, v => { \n\t\tif (index == ++current) {\n\t\t\tresult = v;\n\t\t\treturn false;\n\t\t}\n\t});\n\treturn result;\n}\n\nexport function column(address?: string) {\n\treturn (address ? CellRange.fromA1(address).c1 : (this as FormulaContext).cell.c) + 1;\n}\n\nexport function row(address?: string) {\n\treturn (address ? CellRange.fromA1(address).r1 : (this as FormulaContext).cell.r) + 1;\n}\n\nexport function columns(range: ArrayArg) {\n\treturn Array.isArray(range) ? range[0]?.length : 1;\n}\n\nexport function rows(range: ArrayArg) {\n\treturn Array.isArray(range) ? range.length : 1;\n}\n\nexport function formulatext() {\n\tconst cell = getFormulaCells(this)[0];\n\treturn cell && cell.hasFormula ? (' ' + prefixFormula(cell.formula)) : '';\n}\n\nexport function index(range: ArrayArg, row: number, column: number) {\n\trow = row || 1;\n\tcolumn = column || 1;\n\tif (Array.isArray(range)) return range[row - 1] ? range[row - 1][column - 1] : null;\n\telse if (row == 1 && column == 1) return range;\n\telse return null;\n}\n\nexport function indirect(ref: string) {\n\tconst currentCell = (this as FormulaContext).cell;\n\tconst model = currentCell.model;\n\tconst targetCell = model.getCellByA1(ref);\n\n\t// register string reference dependencies\n\tlet map: Map<string, [CellRange, string?]>;\n\tif (model.calculations.dependencies.cellDependencies.has(currentCell.address)) {\n\t\tmap = model.calculations.dependencies.cellDependencies.get(currentCell.address);\n\t} else {\n\t\tmap = new Map();\n\t\tmodel.calculations.dependencies.cellDependencies.set(currentCell.address, map);\n\t}\n\tmap.set(targetCell.address, [targetCell.range]);\n\n\tif (model.calculations.dependencies.cellDependants.has(targetCell.address)) {\n\t\tmap = model.calculations.dependencies.cellDependants.get(targetCell.address);\n\t} else {\n\t\tmap = new Map();\n\t\tmodel.calculations.dependencies.cellDependants.set(targetCell.address, map);\n\t}\n\tmap.set(currentCell.address, [currentCell.range]);\n\n\treturn targetCell.value;\n}\n\nexport function match(matchValue: unknown, range: Matrix<unknown>, matchType = 0) {\n\tlet r: number, c: number;\n\tfor (r = 0; r < range.length; r++) {\n\t\tfor (c = 0; c < range[r].length; c++) {\n\t\t\tif (matchType == 0 && range[r][c] == matchValue) return Math.max(r + 1, c + 1);\n\t\t\tif (matchType == 1 && range[r][c] > matchValue) return Math.max(r + 1, c + 1);\n\t\t\tif (matchType == -1 && range[r][c] < matchValue) return Math.max(r + 1, c + 1);\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function offset(_ref: unknown, rows: number, columns: number, height?: number, width?: number) {\n\tconst cell = getFormulaCells(this)[0];\n\tconst result: unknown[] = [];\n\theight = height || 1;\n\twidth = width || 1;\n\tfor (let r = 0; r < height; r++) {\n\t\tconst row: unknown[] = [];\n\t\tfor (let c = 0; c < width; c++) {\n\t\t\tconst cell2 = cell.model.rows[cell.r + r + rows].cell(cell.c + c + columns);\n\t\t\trow.push(cell2 ? cell.value : null)\n\t\t}\n\t\tresult.push(row);\n\t}\n\treturn result;\n}\n\nexport function filter(range: Matrix, boolRange: Matrix) {\n\tconst result: unknown[] = [];\n\tif (range.length == boolRange.length) {\n\t\tfor (let r = 0; r < range.length; r++) {\n\t\t\tlet match = true;\n\t\t\tfor (let c = 0; c < boolRange[r].length; c++) {\n\t\t\t\tif (!boolRange[r][c]) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (match) result.push(range[r]);\n\t\t}\n\t} else {\n\t\t// by columns\n\t}\n\treturn result;\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/grid-core",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.79",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Grid model, no ui components",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"generate-functions-docs": "node ./scripts/generate-functions-docs.cjs"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@omegagrid/core": "^0.10.
|
|
32
|
-
"@omegagrid/localize": "^0.10.
|
|
31
|
+
"@omegagrid/core": "^0.10.79",
|
|
32
|
+
"@omegagrid/localize": "^0.10.79",
|
|
33
33
|
"@stdlib/stats": "^0.0.13",
|
|
34
34
|
"color": "^4.2.3",
|
|
35
35
|
"date-fns": "^3.2.0",
|