@bilig/headless 0.2.0 → 0.3.0
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/dist/fast-range-read.d.ts +4 -0
- package/dist/fast-range-read.js +81 -0
- package/dist/fast-range-read.js.map +1 -0
- package/dist/initial-sheet-load.d.ts +11 -5
- package/dist/initial-sheet-load.js +168 -65
- package/dist/initial-sheet-load.js.map +1 -1
- package/dist/tracked-cell-index-changes.d.ts +32 -6
- package/dist/tracked-cell-index-changes.js +635 -4
- package/dist/tracked-cell-index-changes.js.map +1 -1
- package/dist/tracked-engine-event-refs.d.ts +9 -1
- package/dist/tracked-engine-event-refs.js +152 -8
- package/dist/tracked-engine-event-refs.js.map +1 -1
- package/dist/work-paper-runtime.d.ts +29 -0
- package/dist/work-paper-runtime.js +1146 -106
- package/dist/work-paper-runtime.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SpreadsheetEngine } from '@bilig/core';
|
|
2
|
+
import { type CellValue } from '@bilig/protocol';
|
|
3
|
+
import type { WorkPaperCellRange } from './work-paper-types.js';
|
|
4
|
+
export declare function readFastPhysicalRangeValues(engine: SpreadsheetEngine, range: WorkPaperCellRange): CellValue[][] | undefined;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { BLOCK_COLS, BLOCK_ROWS } from '@bilig/core';
|
|
2
|
+
import { ErrorCode, ValueTag } from '@bilig/protocol';
|
|
3
|
+
const EMPTY_CELL_VALUE = Object.freeze({ tag: ValueTag.Empty });
|
|
4
|
+
const FAST_PHYSICAL_RANGE_AREA_LIMIT = 16_384;
|
|
5
|
+
export function readFastPhysicalRangeValues(engine, range) {
|
|
6
|
+
const sheet = engine.workbook.getSheetById(range.start.sheet);
|
|
7
|
+
if (!sheet || sheet.structureVersion !== 1) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const height = range.end.row - range.start.row + 1;
|
|
11
|
+
const width = range.end.col - range.start.col + 1;
|
|
12
|
+
if (height <= 0 || width <= 0 || height * width > FAST_PHYSICAL_RANGE_AREA_LIMIT) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const rows = [];
|
|
16
|
+
rows.length = height;
|
|
17
|
+
for (let rowOffset = 0; rowOffset < height; rowOffset += 1) {
|
|
18
|
+
const row = [];
|
|
19
|
+
row.length = width;
|
|
20
|
+
rows[rowOffset] = row;
|
|
21
|
+
}
|
|
22
|
+
const cellStore = engine.workbook.cellStore;
|
|
23
|
+
let filledCells = 0;
|
|
24
|
+
const blockRowStart = Math.floor(range.start.row / BLOCK_ROWS);
|
|
25
|
+
const blockRowEnd = Math.floor(range.end.row / BLOCK_ROWS);
|
|
26
|
+
const blockColStart = Math.floor(range.start.col / BLOCK_COLS);
|
|
27
|
+
const blockColEnd = Math.floor(range.end.col / BLOCK_COLS);
|
|
28
|
+
for (let blockRow = blockRowStart; blockRow <= blockRowEnd; blockRow += 1) {
|
|
29
|
+
const absoluteBlockRow = blockRow * BLOCK_ROWS;
|
|
30
|
+
const localRowStart = Math.max(range.start.row - absoluteBlockRow, 0);
|
|
31
|
+
const localRowEnd = Math.min(range.end.row - absoluteBlockRow, BLOCK_ROWS - 1);
|
|
32
|
+
for (let blockCol = blockColStart; blockCol <= blockColEnd; blockCol += 1) {
|
|
33
|
+
const block = sheet.grid.blocks.get(blockRow * 1_000_000 + blockCol);
|
|
34
|
+
if (!block) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const absoluteBlockCol = blockCol * BLOCK_COLS;
|
|
38
|
+
const localColStart = Math.max(range.start.col - absoluteBlockCol, 0);
|
|
39
|
+
const localColEnd = Math.min(range.end.col - absoluteBlockCol, BLOCK_COLS - 1);
|
|
40
|
+
for (let localRow = localRowStart; localRow <= localRowEnd; localRow += 1) {
|
|
41
|
+
const row = rows[absoluteBlockRow + localRow - range.start.row];
|
|
42
|
+
const blockRowOffset = localRow * BLOCK_COLS;
|
|
43
|
+
for (let localCol = localColStart; localCol <= localColEnd; localCol += 1) {
|
|
44
|
+
const encodedCellIndex = block[blockRowOffset + localCol];
|
|
45
|
+
if (encodedCellIndex === 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
row[absoluteBlockCol + localCol - range.start.col] = readCellValue(cellStore, engine, encodedCellIndex - 1);
|
|
49
|
+
filledCells += 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (filledCells < height * width) {
|
|
55
|
+
for (let rowOffset = 0; rowOffset < height; rowOffset += 1) {
|
|
56
|
+
const row = rows[rowOffset];
|
|
57
|
+
for (let colOffset = 0; colOffset < width; colOffset += 1) {
|
|
58
|
+
row[colOffset] ??= EMPTY_CELL_VALUE;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return rows;
|
|
63
|
+
}
|
|
64
|
+
function readCellValue(cellStore, engine, cellIndex) {
|
|
65
|
+
switch (cellStore.tags[cellIndex] ?? ValueTag.Empty) {
|
|
66
|
+
case ValueTag.Number:
|
|
67
|
+
return { tag: ValueTag.Number, value: cellStore.numbers[cellIndex] ?? 0 };
|
|
68
|
+
case ValueTag.Boolean:
|
|
69
|
+
return { tag: ValueTag.Boolean, value: (cellStore.numbers[cellIndex] ?? 0) !== 0 };
|
|
70
|
+
case ValueTag.String: {
|
|
71
|
+
const stringId = cellStore.stringIds[cellIndex] ?? 0;
|
|
72
|
+
return { tag: ValueTag.String, value: stringId === 0 ? '' : engine.strings.get(stringId), stringId };
|
|
73
|
+
}
|
|
74
|
+
case ValueTag.Error:
|
|
75
|
+
return { tag: ValueTag.Error, code: cellStore.errors[cellIndex] ?? ErrorCode.None };
|
|
76
|
+
case ValueTag.Empty:
|
|
77
|
+
default:
|
|
78
|
+
return EMPTY_CELL_VALUE;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=fast-range-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fast-range-read.js","sourceRoot":"","sources":["../src/fast-range-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type {
|
|
1
|
+
import { type EngineFormulaSourceRef, type LiteralSheetLoadInspection, type SpreadsheetEngine } from '@bilig/core';
|
|
2
|
+
import type { WorkPaperSheet } from './work-paper-types.js';
|
|
3
|
+
export interface InitialSheetMaterializationInspection extends LiteralSheetLoadInspection {
|
|
4
|
+
readonly formulaCellCount?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function loadInitialLiteralSheet(engine: SpreadsheetEngine, sheetId: number, content: WorkPaperSheet, inspection?: InitialSheetMaterializationInspection): void;
|
|
3
7
|
export declare function tryLoadInitialLiteralSheet(engine: SpreadsheetEngine, sheetId: number, content: WorkPaperSheet): boolean;
|
|
4
8
|
export interface PreparedInitialMixedSheetLoad {
|
|
5
|
-
formulaRefs:
|
|
9
|
+
formulaRefs: EngineFormulaSourceRef[];
|
|
6
10
|
potentialNewCells: number;
|
|
7
11
|
}
|
|
8
12
|
export declare function prepareInitialMixedSheetLoad(args: {
|
|
9
13
|
engine: SpreadsheetEngine;
|
|
10
14
|
sheetId: number;
|
|
11
15
|
content: WorkPaperSheet;
|
|
12
|
-
rewriteFormula: (formula: string,
|
|
16
|
+
rewriteFormula: (formula: string, row: number, col: number) => string;
|
|
17
|
+
inspection?: InitialSheetMaterializationInspection;
|
|
13
18
|
}): PreparedInitialMixedSheetLoad;
|
|
14
19
|
export declare function loadInitialMixedSheet(args: {
|
|
15
20
|
engine: SpreadsheetEngine;
|
|
16
21
|
sheetId: number;
|
|
17
22
|
content: WorkPaperSheet;
|
|
18
|
-
rewriteFormula: (formula: string,
|
|
23
|
+
rewriteFormula: (formula: string, row: number, col: number) => string;
|
|
24
|
+
inspection?: InitialSheetMaterializationInspection;
|
|
19
25
|
}): void;
|
|
@@ -1,109 +1,212 @@
|
|
|
1
|
-
import { loadLiteralSheetIntoEmptySheet } from '@bilig/core';
|
|
1
|
+
import { loadLiteralSheetIntoEmptySheet, makeLogicalCellKey, } from '@bilig/core';
|
|
2
2
|
import { ErrorCode, ValueTag } from '@bilig/protocol';
|
|
3
|
+
export function loadInitialLiteralSheet(engine, sheetId, content, inspection) {
|
|
4
|
+
loadLiteralSheetIntoEmptySheet(engine.workbook, engine.strings, sheetId, content, undefined, inspection);
|
|
5
|
+
}
|
|
3
6
|
export function tryLoadInitialLiteralSheet(engine, sheetId, content) {
|
|
4
7
|
if (sheetContainsFormulaContent(content)) {
|
|
5
8
|
return false;
|
|
6
9
|
}
|
|
7
|
-
|
|
10
|
+
loadInitialLiteralSheet(engine, sheetId, content);
|
|
8
11
|
return true;
|
|
9
12
|
}
|
|
10
13
|
function sheetContainsFormulaContent(content) {
|
|
11
|
-
return content.some((row) => row.some((value) => typeof value === 'string' && value
|
|
14
|
+
return content.some((row) => row.some((value) => typeof value === 'string' && readInitialFormulaSource(value) !== undefined));
|
|
15
|
+
}
|
|
16
|
+
function isFreshInitialLogicalSheetInternals(value) {
|
|
17
|
+
return typeof value === 'object' && value !== null;
|
|
12
18
|
}
|
|
13
19
|
export function prepareInitialMixedSheetLoad(args) {
|
|
14
|
-
|
|
20
|
+
const sheet = args.engine.workbook.getSheetById(args.sheetId);
|
|
21
|
+
if (!sheet) {
|
|
15
22
|
throw new Error(`Unknown sheet id: ${args.sheetId}`);
|
|
16
23
|
}
|
|
17
|
-
let
|
|
18
|
-
let
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
let potentialCellCount = args.inspection?.materializedCellCount ?? 0;
|
|
25
|
+
let maxColumnCount = args.inspection?.maxColumnCount ?? 0;
|
|
26
|
+
if (!args.inspection) {
|
|
27
|
+
for (let rowIndex = 0; rowIndex < args.content.length; rowIndex += 1) {
|
|
28
|
+
const row = args.content[rowIndex];
|
|
29
|
+
const width = row?.length ?? 0;
|
|
30
|
+
maxColumnCount = Math.max(maxColumnCount, width);
|
|
31
|
+
if (!row) {
|
|
25
32
|
continue;
|
|
26
33
|
}
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
for (let colIndex = 0; colIndex < row.length; colIndex += 1) {
|
|
35
|
+
if (row[colIndex] !== null) {
|
|
36
|
+
potentialCellCount += 1;
|
|
37
|
+
}
|
|
29
38
|
}
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
const cellStore = args.engine.workbook.cellStore;
|
|
33
|
-
if (
|
|
34
|
-
cellStore.ensureCapacity(cellStore.size +
|
|
42
|
+
if (potentialCellCount > 0) {
|
|
43
|
+
cellStore.ensureCapacity(cellStore.size + potentialCellCount);
|
|
35
44
|
}
|
|
36
|
-
const
|
|
37
|
-
|
|
45
|
+
const writtenColumns = new Uint8Array(maxColumnCount);
|
|
46
|
+
const rowIds = [];
|
|
47
|
+
const colIds = [];
|
|
48
|
+
let writtenColumnCount = 0;
|
|
49
|
+
const formulaRefs = args.inspection?.formulaCellCount !== undefined ? Array(args.inspection.formulaCellCount) : [];
|
|
50
|
+
let formulaRefCount = 0;
|
|
51
|
+
const attachFreshCell = createFreshInitialCellAttacher(sheet);
|
|
38
52
|
const previousOnSetValue = cellStore.onSetValue;
|
|
39
53
|
cellStore.onSetValue = null;
|
|
40
54
|
try {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
args.engine.workbook.withBatchedColumnVersionUpdates(() => {
|
|
56
|
+
for (let rowIndex = 0; rowIndex < args.content.length; rowIndex += 1) {
|
|
57
|
+
const row = args.content[rowIndex];
|
|
58
|
+
let rowId = rowIds[rowIndex];
|
|
59
|
+
for (let colIndex = 0; colIndex < row.length; colIndex += 1) {
|
|
60
|
+
const raw = row[colIndex];
|
|
61
|
+
if (typeof raw === 'string') {
|
|
62
|
+
const formula = readInitialFormulaSource(raw);
|
|
63
|
+
if (formula !== undefined) {
|
|
64
|
+
const cellIndex = cellStore.allocateReserved(args.sheetId, rowIndex, colIndex);
|
|
65
|
+
rowId ??= args.engine.workbook.ensureLogicalAxisId(args.sheetId, 'row', rowIndex);
|
|
66
|
+
rowIds[rowIndex] = rowId;
|
|
67
|
+
const colId = (colIds[colIndex] ??= args.engine.workbook.ensureLogicalAxisId(args.sheetId, 'column', colIndex));
|
|
68
|
+
attachFreshCell(rowIndex, colIndex, cellIndex, rowId, colId);
|
|
69
|
+
formulaRefs[formulaRefCount] = {
|
|
70
|
+
sheetId: args.sheetId,
|
|
71
|
+
cellIndex,
|
|
52
72
|
row: rowIndex,
|
|
53
73
|
col: colIndex,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
formulaIndex += 1;
|
|
74
|
+
source: args.rewriteFormula(formula, rowIndex, colIndex),
|
|
75
|
+
};
|
|
76
|
+
formulaRefCount += 1;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (raw === null) {
|
|
62
81
|
continue;
|
|
63
82
|
}
|
|
83
|
+
const cellIndex = cellStore.allocateReserved(args.sheetId, rowIndex, colIndex);
|
|
84
|
+
if (writtenColumns[colIndex] === 0) {
|
|
85
|
+
writtenColumns[colIndex] = 1;
|
|
86
|
+
writtenColumnCount += 1;
|
|
87
|
+
}
|
|
88
|
+
cellStore.flags[cellIndex] = 16 /* CellFlags.Materialized */;
|
|
89
|
+
cellStore.formulaIds[cellIndex] = 0;
|
|
90
|
+
cellStore.errors[cellIndex] = ErrorCode.None;
|
|
91
|
+
cellStore.versions[cellIndex] = 1;
|
|
92
|
+
cellStore.topoRanks[cellIndex] = 0;
|
|
93
|
+
cellStore.cycleGroupIds[cellIndex] = -1;
|
|
94
|
+
rowId ??= args.engine.workbook.ensureLogicalAxisId(args.sheetId, 'row', rowIndex);
|
|
95
|
+
rowIds[rowIndex] = rowId;
|
|
96
|
+
const colId = (colIds[colIndex] ??= args.engine.workbook.ensureLogicalAxisId(args.sheetId, 'column', colIndex));
|
|
97
|
+
attachFreshCell(rowIndex, colIndex, cellIndex, rowId, colId);
|
|
98
|
+
if (typeof raw === 'number') {
|
|
99
|
+
cellStore.tags[cellIndex] = ValueTag.Number;
|
|
100
|
+
cellStore.numbers[cellIndex] = raw;
|
|
101
|
+
cellStore.stringIds[cellIndex] = 0;
|
|
102
|
+
}
|
|
103
|
+
else if (typeof raw === 'boolean') {
|
|
104
|
+
cellStore.tags[cellIndex] = ValueTag.Boolean;
|
|
105
|
+
cellStore.numbers[cellIndex] = raw ? 1 : 0;
|
|
106
|
+
cellStore.stringIds[cellIndex] = 0;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
cellStore.tags[cellIndex] = ValueTag.String;
|
|
110
|
+
cellStore.numbers[cellIndex] = 0;
|
|
111
|
+
cellStore.stringIds[cellIndex] = args.engine.strings.intern(raw);
|
|
112
|
+
}
|
|
64
113
|
}
|
|
65
|
-
if (raw === null) {
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
const { cellIndex } = args.engine.workbook.ensureCellAt(args.sheetId, rowIndex, colIndex);
|
|
69
|
-
cellStore.flags[cellIndex] = 16 /* CellFlags.Materialized */;
|
|
70
|
-
cellStore.formulaIds[cellIndex] = 0;
|
|
71
|
-
cellStore.errors[cellIndex] = ErrorCode.None;
|
|
72
|
-
cellStore.versions[cellIndex] = 1;
|
|
73
|
-
cellStore.topoRanks[cellIndex] = 0;
|
|
74
|
-
cellStore.cycleGroupIds[cellIndex] = -1;
|
|
75
|
-
if (typeof raw === 'number') {
|
|
76
|
-
cellStore.tags[cellIndex] = ValueTag.Number;
|
|
77
|
-
cellStore.numbers[cellIndex] = raw;
|
|
78
|
-
cellStore.stringIds[cellIndex] = 0;
|
|
79
|
-
}
|
|
80
|
-
else if (typeof raw === 'boolean') {
|
|
81
|
-
cellStore.tags[cellIndex] = ValueTag.Boolean;
|
|
82
|
-
cellStore.numbers[cellIndex] = raw ? 1 : 0;
|
|
83
|
-
cellStore.stringIds[cellIndex] = 0;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
cellStore.tags[cellIndex] = ValueTag.String;
|
|
87
|
-
cellStore.numbers[cellIndex] = 0;
|
|
88
|
-
cellStore.stringIds[cellIndex] = args.engine.strings.intern(raw);
|
|
89
|
-
}
|
|
90
|
-
args.engine.workbook.notifyCellValueWritten(cellIndex);
|
|
91
114
|
}
|
|
92
|
-
|
|
115
|
+
if (writtenColumnCount > 0) {
|
|
116
|
+
args.engine.workbook.notifyColumnsWritten(args.sheetId, materializeWrittenColumns(writtenColumns, writtenColumnCount));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
93
119
|
}
|
|
94
120
|
finally {
|
|
95
121
|
cellStore.onSetValue = previousOnSetValue;
|
|
96
122
|
}
|
|
123
|
+
if (formulaRefs.length !== formulaRefCount) {
|
|
124
|
+
formulaRefs.length = formulaRefCount;
|
|
125
|
+
}
|
|
97
126
|
return {
|
|
98
127
|
formulaRefs,
|
|
99
128
|
potentialNewCells: formulaRefs.length,
|
|
100
129
|
};
|
|
101
130
|
}
|
|
131
|
+
function createFreshInitialCellAttacher(sheet) {
|
|
132
|
+
const logicalCandidate = sheet.logical;
|
|
133
|
+
const logical = isFreshInitialLogicalSheetInternals(logicalCandidate) ? logicalCandidate : undefined;
|
|
134
|
+
const cells = logical?.cellPages?.cells;
|
|
135
|
+
const identities = logical?.cellIdentities?.identities;
|
|
136
|
+
const residentByCell = logical?.residentCells?.byCell;
|
|
137
|
+
const residentByRow = logical?.residentCells?.byRow;
|
|
138
|
+
const residentByColumn = logical?.residentCells?.byColumn;
|
|
139
|
+
if (!cells || !identities || !residentByCell || !residentByRow || !residentByColumn) {
|
|
140
|
+
return (row, col, cellIndex, rowId, colId) => {
|
|
141
|
+
sheet.logical.setNewVisibleCellWithAxisIds(row, col, cellIndex, rowId, colId);
|
|
142
|
+
sheet.grid.set(row, col, cellIndex);
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
let lastRowId;
|
|
146
|
+
let lastRowSet;
|
|
147
|
+
const columnSets = new Map();
|
|
148
|
+
const ensureResidentColumnSet = (id) => {
|
|
149
|
+
const cached = columnSets.get(id);
|
|
150
|
+
if (cached) {
|
|
151
|
+
return cached;
|
|
152
|
+
}
|
|
153
|
+
let stored = residentByColumn.get(id);
|
|
154
|
+
if (!stored) {
|
|
155
|
+
stored = new Set();
|
|
156
|
+
residentByColumn.set(id, stored);
|
|
157
|
+
}
|
|
158
|
+
columnSets.set(id, stored);
|
|
159
|
+
return stored;
|
|
160
|
+
};
|
|
161
|
+
const ensureResidentRowSet = (id) => {
|
|
162
|
+
if (lastRowId === id && lastRowSet) {
|
|
163
|
+
return lastRowSet;
|
|
164
|
+
}
|
|
165
|
+
let stored = residentByRow.get(id);
|
|
166
|
+
if (!stored) {
|
|
167
|
+
stored = new Set();
|
|
168
|
+
residentByRow.set(id, stored);
|
|
169
|
+
}
|
|
170
|
+
lastRowId = id;
|
|
171
|
+
lastRowSet = stored;
|
|
172
|
+
return stored;
|
|
173
|
+
};
|
|
174
|
+
return (row, col, cellIndex, rowId, colId) => {
|
|
175
|
+
cells.set(makeLogicalCellKey(sheet.id, rowId, colId), cellIndex);
|
|
176
|
+
identities.set(cellIndex, { sheetId: sheet.id, rowId, colId });
|
|
177
|
+
residentByCell.set(cellIndex, { rowId, colId });
|
|
178
|
+
ensureResidentRowSet(rowId).add(cellIndex);
|
|
179
|
+
ensureResidentColumnSet(colId).add(cellIndex);
|
|
180
|
+
sheet.grid.set(row, col, cellIndex);
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function readInitialFormulaSource(raw) {
|
|
184
|
+
const first = raw.charCodeAt(0);
|
|
185
|
+
if (first === 61) {
|
|
186
|
+
return raw.slice(1);
|
|
187
|
+
}
|
|
188
|
+
if (first !== 32 && first !== 9 && first !== 10 && first !== 13) {
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
const trimmed = raw.trim();
|
|
192
|
+
return trimmed.charCodeAt(0) === 61 ? trimmed.slice(1) : undefined;
|
|
193
|
+
}
|
|
194
|
+
function materializeWrittenColumns(writtenColumns, count) {
|
|
195
|
+
const columns = new Uint32Array(count);
|
|
196
|
+
let writeIndex = 0;
|
|
197
|
+
for (let col = 0; col < writtenColumns.length; col += 1) {
|
|
198
|
+
if (writtenColumns[col] !== 0) {
|
|
199
|
+
columns[writeIndex] = col;
|
|
200
|
+
writeIndex += 1;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return columns;
|
|
204
|
+
}
|
|
102
205
|
export function loadInitialMixedSheet(args) {
|
|
103
206
|
const prepared = prepareInitialMixedSheetLoad(args);
|
|
104
207
|
if (prepared.formulaRefs.length === 0) {
|
|
105
208
|
return;
|
|
106
209
|
}
|
|
107
|
-
args.engine.
|
|
210
|
+
args.engine.initializeFormulaSourcesAtNow(prepared.formulaRefs, prepared.potentialNewCells);
|
|
108
211
|
}
|
|
109
212
|
//# sourceMappingURL=initial-sheet-load.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-sheet-load.js","sourceRoot":"","sources":["../src/initial-sheet-load.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"initial-sheet-load.js","sourceRoot":"","sources":["../src/initial-sheet-load.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,38 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SpreadsheetEngine } from '@bilig/core';
|
|
2
2
|
import type { WorkPaperCellChange } from './work-paper-types.js';
|
|
3
3
|
export interface MaterializedTrackedIndexChanges {
|
|
4
|
-
readonly changes:
|
|
4
|
+
readonly changes: WorkPaperCellChange[];
|
|
5
5
|
readonly ordered: boolean;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
interface TrackedIndexMaterializationOptions {
|
|
8
8
|
readonly explicitChangedCount?: number;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
readonly lazy?: boolean;
|
|
10
|
+
readonly deferLazyDetach?: boolean;
|
|
11
|
+
readonly trustedPhysicalSheetId?: number;
|
|
12
|
+
readonly trustedSortedSliceSplit?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface TrackedIndexChangeSource {
|
|
15
|
+
readonly invalidation?: 'cells' | 'full';
|
|
16
|
+
readonly changedCellIndices: readonly number[] | Uint32Array;
|
|
11
17
|
readonly explicitChangedCount?: number;
|
|
12
|
-
|
|
18
|
+
readonly changedCellIndicesSortedDisjoint?: boolean;
|
|
19
|
+
readonly firstChangedCellIndex?: number;
|
|
20
|
+
readonly lastChangedCellIndex?: number;
|
|
21
|
+
readonly patches?: readonly unknown[];
|
|
22
|
+
readonly hasInvalidatedRanges?: boolean;
|
|
23
|
+
readonly hasInvalidatedRows?: boolean;
|
|
24
|
+
readonly hasInvalidatedColumns?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface MaterializedTrackedIndexChangeSources extends MaterializedTrackedIndexChanges {
|
|
27
|
+
readonly usedSortedDisjointFastPath: boolean;
|
|
28
|
+
}
|
|
29
|
+
interface TrackedIndexDetachOptions {
|
|
30
|
+
readonly preservePositions?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function materializeTrackedIndexChangesWithMetadata(engine: SpreadsheetEngine, changedCellIndices: readonly number[] | Uint32Array, options?: TrackedIndexMaterializationOptions): MaterializedTrackedIndexChanges;
|
|
33
|
+
export declare function materializeTrackedIndexChanges(engine: SpreadsheetEngine, changedCellIndices: readonly number[] | Uint32Array, options?: TrackedIndexMaterializationOptions): readonly WorkPaperCellChange[];
|
|
34
|
+
export declare function materializeTrackedIndexChangeSourcesWithMetadata(engine: SpreadsheetEngine, sources: readonly TrackedIndexChangeSource[], options?: TrackedIndexMaterializationOptions): MaterializedTrackedIndexChangeSources | null;
|
|
35
|
+
export declare function forceMaterializeTrackedIndexChanges(changes: readonly WorkPaperCellChange[]): boolean;
|
|
36
|
+
export declare function detachTrackedIndexChanges(changes: readonly WorkPaperCellChange[], options?: TrackedIndexDetachOptions): boolean;
|
|
37
|
+
export declare function hasDeferredTrackedIndexChanges(changes: readonly WorkPaperCellChange[]): boolean;
|
|
38
|
+
export {};
|