@bilig/headless 0.1.102 → 0.2.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.
@@ -14,6 +14,9 @@ export function orderWorkPaperCellChanges(changes, sheets, explicitChangedCount)
14
14
  if (isSortedCellChangeSlice(changes, compare, 0, changes.length)) {
15
15
  return changes;
16
16
  }
17
+ if (isReverseSortedCellChangeSlice(changes, compare, 0, changes.length)) {
18
+ return changes.toReversed();
19
+ }
17
20
  return changes.toSorted(compare);
18
21
  }
19
22
  function compareSingleSheetCellChanges(left, right) {
@@ -41,6 +44,14 @@ function isSortedCellChangeSlice(changes, compare, start, end) {
41
44
  }
42
45
  return true;
43
46
  }
47
+ function isReverseSortedCellChangeSlice(changes, compare, start, end) {
48
+ for (let index = start + 1; index < end; index += 1) {
49
+ if (compare(changes[index - 1], changes[index]) < 0) {
50
+ return false;
51
+ }
52
+ }
53
+ return true;
54
+ }
44
55
  function mergeSortedCellChangeSlices(changes, compare, split) {
45
56
  const merged = [];
46
57
  let leftIndex = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"change-order.js","sourceRoot":"","sources":["../src/change-order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-order.js","sourceRoot":"","sources":["../src/change-order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SpreadsheetEngine } from '@bilig/core';
2
+ import type { WorkPaperCellChange } from './work-paper-types.js';
3
+ export interface MaterializedTrackedIndexChanges {
4
+ readonly changes: readonly WorkPaperCellChange[];
5
+ readonly ordered: boolean;
6
+ }
7
+ export declare function materializeTrackedIndexChangesWithMetadata(engine: SpreadsheetEngine, changedCellIndices: readonly number[] | Uint32Array, options?: {
8
+ readonly explicitChangedCount?: number;
9
+ }): MaterializedTrackedIndexChanges;
10
+ export declare function materializeTrackedIndexChanges(engine: SpreadsheetEngine, changedCellIndices: readonly number[] | Uint32Array, options?: {
11
+ readonly explicitChangedCount?: number;
12
+ }): readonly WorkPaperCellChange[];
@@ -0,0 +1,211 @@
1
+ import { indexToColumn } from '@bilig/formula';
2
+ import { ValueTag } from '@bilig/protocol';
3
+ export function materializeTrackedIndexChangesWithMetadata(engine, changedCellIndices, options = {}) {
4
+ if (changedCellIndices.length === 0) {
5
+ return { changes: [], ordered: true };
6
+ }
7
+ const workbook = engine.workbook;
8
+ const cellStore = workbook.cellStore;
9
+ const columnLabels = [];
10
+ const formatAddressCached = (row, col) => {
11
+ let label = columnLabels[col];
12
+ if (label === undefined) {
13
+ label = indexToColumn(col);
14
+ columnLabels[col] = label;
15
+ }
16
+ return `${label}${row + 1}`;
17
+ };
18
+ let firstSheetId;
19
+ for (let index = 0; index < changedCellIndices.length; index += 1) {
20
+ const sheetId = cellStore.sheetIds[changedCellIndices[index]];
21
+ if (sheetId !== undefined) {
22
+ firstSheetId = sheetId;
23
+ break;
24
+ }
25
+ }
26
+ if (firstSheetId === undefined) {
27
+ return { changes: [], ordered: true };
28
+ }
29
+ let isSingleSheetChangeSet = true;
30
+ for (let index = 0; index < changedCellIndices.length; index += 1) {
31
+ const sheetId = cellStore.sheetIds[changedCellIndices[index]];
32
+ if (sheetId !== undefined && sheetId !== firstSheetId) {
33
+ isSingleSheetChangeSet = false;
34
+ break;
35
+ }
36
+ }
37
+ const changes = [];
38
+ if (isSingleSheetChangeSet) {
39
+ const sheet = workbook.getSheetById(firstSheetId);
40
+ const sheetName = sheet?.name ?? workbook.getSheetNameById(firstSheetId);
41
+ const isPhysicalSheet = !sheet || sheet.structureVersion === 1;
42
+ const split = options.explicitChangedCount;
43
+ if (isPhysicalSheet &&
44
+ split !== undefined &&
45
+ split > 0 &&
46
+ split < changedCellIndices.length &&
47
+ isTrackedIndexSliceSorted(cellStore, changedCellIndices, 0, split) &&
48
+ isTrackedIndexSliceSorted(cellStore, changedCellIndices, split, changedCellIndices.length)) {
49
+ let explicitIndex = 0;
50
+ let recalculatedIndex = split;
51
+ while (explicitIndex < split && recalculatedIndex < changedCellIndices.length) {
52
+ const explicitCellIndex = changedCellIndices[explicitIndex];
53
+ const recalculatedCellIndex = changedCellIndices[recalculatedIndex];
54
+ if (compareTrackedPhysicalCellIndices(cellStore, explicitCellIndex, recalculatedCellIndex) <= 0) {
55
+ changes.push(readPhysicalTrackedIndexChange(explicitCellIndex, firstSheetId, sheetName, cellStore, engine, formatAddressCached));
56
+ explicitIndex += 1;
57
+ }
58
+ else {
59
+ changes.push(readPhysicalTrackedIndexChange(recalculatedCellIndex, firstSheetId, sheetName, cellStore, engine, formatAddressCached));
60
+ recalculatedIndex += 1;
61
+ }
62
+ }
63
+ while (explicitIndex < split) {
64
+ changes.push(readPhysicalTrackedIndexChange(changedCellIndices[explicitIndex], firstSheetId, sheetName, cellStore, engine, formatAddressCached));
65
+ explicitIndex += 1;
66
+ }
67
+ while (recalculatedIndex < changedCellIndices.length) {
68
+ changes.push(readPhysicalTrackedIndexChange(changedCellIndices[recalculatedIndex], firstSheetId, sheetName, cellStore, engine, formatAddressCached));
69
+ recalculatedIndex += 1;
70
+ }
71
+ return { changes, ordered: true };
72
+ }
73
+ let ordered = true;
74
+ let previousRow = -1;
75
+ let previousCol = -1;
76
+ for (let index = 0; index < changedCellIndices.length; index += 1) {
77
+ const cellIndex = changedCellIndices[index];
78
+ if (cellStore.sheetIds[cellIndex] !== firstSheetId) {
79
+ continue;
80
+ }
81
+ let row;
82
+ let col;
83
+ if (isPhysicalSheet) {
84
+ row = cellStore.rows[cellIndex];
85
+ col = cellStore.cols[cellIndex];
86
+ }
87
+ else {
88
+ const position = workbook.getCellPosition(cellIndex);
89
+ /* v8 ignore next -- defensive guard for stale logical indices without visible positions. */
90
+ if (!position) {
91
+ continue;
92
+ }
93
+ row = position.row;
94
+ col = position.col;
95
+ }
96
+ if (row < previousRow || (row === previousRow && col < previousCol)) {
97
+ ordered = false;
98
+ }
99
+ changes.push({
100
+ kind: 'cell',
101
+ address: { sheet: firstSheetId, row, col },
102
+ sheetName,
103
+ a1: formatAddressCached(row, col),
104
+ newValue: readTrackedCellValue(cellStore, cellIndex, engine),
105
+ });
106
+ previousRow = row;
107
+ previousCol = col;
108
+ }
109
+ return { changes, ordered };
110
+ }
111
+ const sheetNames = new Map();
112
+ const physicalSheetIds = new Set();
113
+ let ordered = true;
114
+ let previousSheetOrder = -1;
115
+ let previousRow = -1;
116
+ let previousCol = -1;
117
+ for (let index = 0; index < changedCellIndices.length; index += 1) {
118
+ const cellIndex = changedCellIndices[index];
119
+ const sheetId = cellStore.sheetIds[cellIndex];
120
+ if (sheetId === undefined) {
121
+ continue;
122
+ }
123
+ let sheetName = sheetNames.get(sheetId);
124
+ let sheetOrder = 0;
125
+ if (sheetName === undefined) {
126
+ const sheet = workbook.getSheetById(sheetId);
127
+ sheetName = sheet?.name ?? workbook.getSheetNameById(sheetId);
128
+ sheetOrder = sheet?.order ?? 0;
129
+ sheetNames.set(sheetId, sheetName);
130
+ if (!sheet || sheet.structureVersion === 1) {
131
+ physicalSheetIds.add(sheetId);
132
+ }
133
+ }
134
+ else {
135
+ sheetOrder = workbook.getSheetById(sheetId)?.order ?? 0;
136
+ }
137
+ let row;
138
+ let col;
139
+ if (physicalSheetIds.has(sheetId)) {
140
+ row = cellStore.rows[cellIndex];
141
+ col = cellStore.cols[cellIndex];
142
+ }
143
+ else {
144
+ const position = workbook.getCellPosition(cellIndex);
145
+ /* v8 ignore next -- defensive guard for stale logical indices without visible positions. */
146
+ if (!position) {
147
+ continue;
148
+ }
149
+ row = position.row;
150
+ col = position.col;
151
+ }
152
+ if (sheetOrder < previousSheetOrder ||
153
+ (sheetOrder === previousSheetOrder && (row < previousRow || (row === previousRow && col < previousCol)))) {
154
+ ordered = false;
155
+ }
156
+ changes.push({
157
+ kind: 'cell',
158
+ address: { sheet: sheetId, row, col },
159
+ sheetName,
160
+ a1: formatAddressCached(row, col),
161
+ newValue: readTrackedCellValue(cellStore, cellIndex, engine),
162
+ });
163
+ previousSheetOrder = sheetOrder;
164
+ previousRow = row;
165
+ previousCol = col;
166
+ }
167
+ return { changes, ordered };
168
+ }
169
+ export function materializeTrackedIndexChanges(engine, changedCellIndices, options = {}) {
170
+ return materializeTrackedIndexChangesWithMetadata(engine, changedCellIndices, options).changes;
171
+ }
172
+ function readTrackedCellValue(cellStore, cellIndex, engine) {
173
+ const tag = cellStore.tags[cellIndex] ?? ValueTag.Empty;
174
+ switch (tag) {
175
+ case ValueTag.Number:
176
+ return { tag: ValueTag.Number, value: cellStore.numbers[cellIndex] ?? 0 };
177
+ case ValueTag.Boolean:
178
+ return { tag: ValueTag.Boolean, value: (cellStore.numbers[cellIndex] ?? 0) !== 0 };
179
+ case ValueTag.String:
180
+ return cellStore.getValue(cellIndex, (stringId) => engine.strings.get(stringId));
181
+ case ValueTag.Error:
182
+ return { tag: ValueTag.Error, code: cellStore.errors[cellIndex] };
183
+ case ValueTag.Empty:
184
+ default:
185
+ return { tag: ValueTag.Empty };
186
+ }
187
+ }
188
+ function compareTrackedPhysicalCellIndices(cellStore, leftCellIndex, rightCellIndex) {
189
+ return ((cellStore.rows[leftCellIndex] ?? 0) - (cellStore.rows[rightCellIndex] ?? 0) ||
190
+ (cellStore.cols[leftCellIndex] ?? 0) - (cellStore.cols[rightCellIndex] ?? 0));
191
+ }
192
+ function isTrackedIndexSliceSorted(cellStore, changedCellIndices, start, end) {
193
+ for (let index = start + 1; index < end; index += 1) {
194
+ if (compareTrackedPhysicalCellIndices(cellStore, changedCellIndices[index - 1], changedCellIndices[index]) > 0) {
195
+ return false;
196
+ }
197
+ }
198
+ return true;
199
+ }
200
+ function readPhysicalTrackedIndexChange(cellIndex, sheetId, sheetName, cellStore, engine, formatAddressCached) {
201
+ const row = cellStore.rows[cellIndex];
202
+ const col = cellStore.cols[cellIndex];
203
+ return {
204
+ kind: 'cell',
205
+ address: { sheet: sheetId, row, col },
206
+ sheetName,
207
+ a1: formatAddressCached(row, col),
208
+ newValue: readTrackedCellValue(cellStore, cellIndex, engine),
209
+ };
210
+ }
211
+ //# sourceMappingURL=tracked-cell-index-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-cell-index-changes.js","sourceRoot":"","sources":["../src/tracked-cell-index-changes.ts"],"names":[],"mappings":"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"}
@@ -224,8 +224,8 @@ export declare class WorkPaper {
224
224
  private captureVisibilitySnapshot;
225
225
  private captureNamedExpressionValueSnapshot;
226
226
  private computeCellChanges;
227
- private readTrackedCellChange;
228
227
  private materializeTrackedEventChanges;
228
+ private readSingleTrackedCellChange;
229
229
  private computeCellChangesFromTrackedEvents;
230
230
  private computeNamedExpressionChanges;
231
231
  private canUseTrackedStructuralFastPath;