@bilig/headless 0.8.0 → 0.8.2

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.
Files changed (164) hide show
  1. package/README.md +15 -0
  2. package/dist/persistence.d.ts +1 -1
  3. package/dist/persistence.js +13 -11
  4. package/dist/persistence.js.map +1 -1
  5. package/dist/tracked-cell-index-changes.d.ts +1 -7
  6. package/dist/tracked-cell-index-changes.js +20 -434
  7. package/dist/tracked-cell-index-changes.js.map +1 -1
  8. package/dist/tracked-cell-lazy-physical-changes.d.ts +21 -0
  9. package/dist/tracked-cell-lazy-physical-changes.js +333 -0
  10. package/dist/tracked-cell-lazy-physical-changes.js.map +1 -0
  11. package/dist/tracked-cell-value-read.d.ts +18 -0
  12. package/dist/tracked-cell-value-read.js +46 -0
  13. package/dist/tracked-cell-value-read.js.map +1 -0
  14. package/dist/tracked-engine-event-refs.d.ts +1 -1
  15. package/dist/tracked-engine-event-refs.js +14 -4
  16. package/dist/tracked-engine-event-refs.js.map +1 -1
  17. package/dist/tracked-index-source-order.d.ts +5 -0
  18. package/dist/tracked-index-source-order.js +15 -0
  19. package/dist/tracked-index-source-order.js.map +1 -0
  20. package/dist/work-paper-address-format.d.ts +33 -0
  21. package/dist/work-paper-address-format.js +116 -0
  22. package/dist/work-paper-address-format.js.map +1 -0
  23. package/dist/work-paper-axis-helpers.d.ts +26 -0
  24. package/dist/work-paper-axis-helpers.js +104 -0
  25. package/dist/work-paper-axis-helpers.js.map +1 -0
  26. package/dist/work-paper-capability-checks.d.ts +17 -0
  27. package/dist/work-paper-capability-checks.js +101 -0
  28. package/dist/work-paper-capability-checks.js.map +1 -0
  29. package/dist/work-paper-capability-operations.d.ts +34 -0
  30. package/dist/work-paper-capability-operations.js +70 -0
  31. package/dist/work-paper-capability-operations.js.map +1 -0
  32. package/dist/work-paper-capability-surface.d.ts +97 -0
  33. package/dist/work-paper-capability-surface.js +236 -0
  34. package/dist/work-paper-capability-surface.js.map +1 -0
  35. package/dist/work-paper-cell-content-setter.d.ts +37 -0
  36. package/dist/work-paper-cell-content-setter.js +87 -0
  37. package/dist/work-paper-cell-content-setter.js.map +1 -0
  38. package/dist/work-paper-cell-mutation-refs.d.ts +23 -0
  39. package/dist/work-paper-cell-mutation-refs.js +50 -0
  40. package/dist/work-paper-cell-mutation-refs.js.map +1 -0
  41. package/dist/work-paper-cell-read.d.ts +41 -0
  42. package/dist/work-paper-cell-read.js +54 -0
  43. package/dist/work-paper-cell-read.js.map +1 -0
  44. package/dist/work-paper-clipboard-operations.d.ts +24 -0
  45. package/dist/work-paper-clipboard-operations.js +56 -0
  46. package/dist/work-paper-clipboard-operations.js.map +1 -0
  47. package/dist/work-paper-clipboard.d.ts +13 -0
  48. package/dist/work-paper-clipboard.js +19 -0
  49. package/dist/work-paper-clipboard.js.map +1 -0
  50. package/dist/work-paper-config.d.ts +11 -0
  51. package/dist/work-paper-config.js +247 -0
  52. package/dist/work-paper-config.js.map +1 -0
  53. package/dist/work-paper-date-time.d.ts +4 -0
  54. package/dist/work-paper-date-time.js +38 -0
  55. package/dist/work-paper-date-time.js.map +1 -0
  56. package/dist/work-paper-dependency-refs.d.ts +11 -0
  57. package/dist/work-paper-dependency-refs.js +74 -0
  58. package/dist/work-paper-dependency-refs.js.map +1 -0
  59. package/dist/work-paper-emitter.d.ts +22 -0
  60. package/dist/work-paper-emitter.js +130 -0
  61. package/dist/work-paper-emitter.js.map +1 -0
  62. package/dist/work-paper-engine-event-tracker.d.ts +24 -0
  63. package/dist/work-paper-engine-event-tracker.js +92 -0
  64. package/dist/work-paper-engine-event-tracker.js.map +1 -0
  65. package/dist/work-paper-errors.d.ts +4 -0
  66. package/dist/work-paper-errors.js +7 -0
  67. package/dist/work-paper-errors.js.map +1 -1
  68. package/dist/work-paper-existing-numeric-fast-path.d.ts +31 -0
  69. package/dist/work-paper-existing-numeric-fast-path.js +120 -0
  70. package/dist/work-paper-existing-numeric-fast-path.js.map +1 -0
  71. package/dist/work-paper-fill-helpers.d.ts +8 -0
  72. package/dist/work-paper-fill-helpers.js +34 -0
  73. package/dist/work-paper-fill-helpers.js.map +1 -0
  74. package/dist/work-paper-formula-analysis.d.ts +18 -0
  75. package/dist/work-paper-formula-analysis.js +54 -0
  76. package/dist/work-paper-formula-analysis.js.map +1 -0
  77. package/dist/work-paper-formula-rewrite.d.ts +22 -0
  78. package/dist/work-paper-formula-rewrite.js +71 -0
  79. package/dist/work-paper-formula-rewrite.js.map +1 -0
  80. package/dist/work-paper-function-registry.d.ts +39 -0
  81. package/dist/work-paper-function-registry.js +66 -0
  82. package/dist/work-paper-function-registry.js.map +1 -0
  83. package/dist/work-paper-history-operations.d.ts +15 -0
  84. package/dist/work-paper-history-operations.js +14 -0
  85. package/dist/work-paper-history-operations.js.map +1 -0
  86. package/dist/work-paper-history.d.ts +50 -0
  87. package/dist/work-paper-history.js +136 -0
  88. package/dist/work-paper-history.js.map +1 -0
  89. package/dist/work-paper-internals.d.ts +24 -0
  90. package/dist/work-paper-internals.js +59 -0
  91. package/dist/work-paper-internals.js.map +1 -0
  92. package/dist/work-paper-literal-mutation-queue.d.ts +18 -0
  93. package/dist/work-paper-literal-mutation-queue.js +40 -0
  94. package/dist/work-paper-literal-mutation-queue.js.map +1 -0
  95. package/dist/work-paper-matrix-application.d.ts +31 -0
  96. package/dist/work-paper-matrix-application.js +85 -0
  97. package/dist/work-paper-matrix-application.js.map +1 -0
  98. package/dist/work-paper-mutation-queues.d.ts +29 -0
  99. package/dist/work-paper-mutation-queues.js +72 -0
  100. package/dist/work-paper-mutation-queues.js.map +1 -0
  101. package/dist/work-paper-named-expression-fast-path.d.ts +37 -0
  102. package/dist/work-paper-named-expression-fast-path.js +100 -0
  103. package/dist/work-paper-named-expression-fast-path.js.map +1 -0
  104. package/dist/work-paper-named-expression-helpers.d.ts +54 -0
  105. package/dist/work-paper-named-expression-helpers.js +179 -0
  106. package/dist/work-paper-named-expression-helpers.js.map +1 -0
  107. package/dist/work-paper-named-expression-operations.d.ts +39 -0
  108. package/dist/work-paper-named-expression-operations.js +82 -0
  109. package/dist/work-paper-named-expression-operations.js.map +1 -0
  110. package/dist/work-paper-public-surface.d.ts +73 -0
  111. package/dist/work-paper-public-surface.js +165 -0
  112. package/dist/work-paper-public-surface.js.map +1 -0
  113. package/dist/work-paper-read-operations.d.ts +52 -0
  114. package/dist/work-paper-read-operations.js +185 -0
  115. package/dist/work-paper-read-operations.js.map +1 -0
  116. package/dist/work-paper-runtime-adapters.d.ts +144 -0
  117. package/dist/work-paper-runtime-adapters.js +256 -0
  118. package/dist/work-paper-runtime-adapters.js.map +1 -0
  119. package/dist/work-paper-runtime-helpers.d.ts +27 -0
  120. package/dist/work-paper-runtime-helpers.js +305 -0
  121. package/dist/work-paper-runtime-helpers.js.map +1 -0
  122. package/dist/work-paper-runtime-surface.d.ts +137 -0
  123. package/dist/work-paper-runtime-surface.js +702 -0
  124. package/dist/work-paper-runtime-surface.js.map +1 -0
  125. package/dist/work-paper-runtime.d.ts +56 -285
  126. package/dist/work-paper-runtime.js +403 -4809
  127. package/dist/work-paper-runtime.js.map +1 -1
  128. package/dist/work-paper-scratch-evaluator.js +29 -26
  129. package/dist/work-paper-scratch-evaluator.js.map +1 -1
  130. package/dist/work-paper-sheet-dimension-cache.d.ts +36 -0
  131. package/dist/work-paper-sheet-dimension-cache.js +158 -0
  132. package/dist/work-paper-sheet-dimension-cache.js.map +1 -0
  133. package/dist/work-paper-sheet-initialization.d.ts +19 -0
  134. package/dist/work-paper-sheet-initialization.js +93 -0
  135. package/dist/work-paper-sheet-initialization.js.map +1 -0
  136. package/dist/work-paper-sheet-inspection.d.ts +66 -0
  137. package/dist/work-paper-sheet-inspection.js +204 -0
  138. package/dist/work-paper-sheet-inspection.js.map +1 -0
  139. package/dist/work-paper-sheet-operations.d.ts +59 -0
  140. package/dist/work-paper-sheet-operations.js +104 -0
  141. package/dist/work-paper-sheet-operations.js.map +1 -0
  142. package/dist/work-paper-sheet-read.d.ts +21 -0
  143. package/dist/work-paper-sheet-read.js +32 -0
  144. package/dist/work-paper-sheet-read.js.map +1 -0
  145. package/dist/work-paper-sheet-rename-fast-path.d.ts +18 -0
  146. package/dist/work-paper-sheet-rename-fast-path.js +43 -0
  147. package/dist/work-paper-sheet-rename-fast-path.js.map +1 -0
  148. package/dist/work-paper-static-api.d.ts +18 -0
  149. package/dist/work-paper-static-api.js +44 -0
  150. package/dist/work-paper-static-api.js.map +1 -0
  151. package/dist/work-paper-static-registry.d.ts +21 -0
  152. package/dist/work-paper-static-registry.js +150 -0
  153. package/dist/work-paper-static-registry.js.map +1 -0
  154. package/dist/work-paper-tracked-change-reducer.d.ts +41 -0
  155. package/dist/work-paper-tracked-change-reducer.js +281 -0
  156. package/dist/work-paper-tracked-change-reducer.js.map +1 -0
  157. package/dist/work-paper-tracked-event-helpers.d.ts +89 -0
  158. package/dist/work-paper-tracked-event-helpers.js +366 -0
  159. package/dist/work-paper-tracked-event-helpers.js.map +1 -0
  160. package/dist/work-paper-types.d.ts +6 -5
  161. package/dist/work-paper-visibility-snapshot.d.ts +36 -0
  162. package/dist/work-paper-visibility-snapshot.js +62 -0
  163. package/dist/work-paper-visibility-snapshot.js.map +1 -0
  164. package/package.json +13 -5
@@ -0,0 +1,281 @@
1
+ import { makeCellKey } from '@bilig/core';
2
+ import { ValueTag } from '@bilig/protocol';
3
+ import { orderWorkPaperCellChanges } from './change-order.js';
4
+ import { TINY_TRACKED_CHANGE_LIMIT } from './work-paper-tracked-event-helpers.js';
5
+ export function tryReadTinyTrackedEventChangesWithoutVisibility(input) {
6
+ const event = input.event;
7
+ if (event.patches !== undefined &&
8
+ event.invalidation !== 'full' &&
9
+ event.patches.length <= TINY_TRACKED_CHANGE_LIMIT &&
10
+ !event.hasInvalidatedRanges &&
11
+ !event.hasInvalidatedRows &&
12
+ !event.hasInvalidatedColumns) {
13
+ return tryReadTinyPatchTrackedEventChanges(input, event.patches, event.explicitChangedCount);
14
+ }
15
+ if (event.invalidation === 'full' ||
16
+ event.patches !== undefined ||
17
+ event.changedCellIndices.length > TINY_TRACKED_CHANGE_LIMIT ||
18
+ event.hasInvalidatedRanges ||
19
+ event.hasInvalidatedRows ||
20
+ event.hasInvalidatedColumns) {
21
+ return null;
22
+ }
23
+ if (event.changedCellIndices.length === 0) {
24
+ return [];
25
+ }
26
+ const sortedPhysicalChanges = input.readTinySortedPhysicalTrackedEventChanges(event);
27
+ if (sortedPhysicalChanges) {
28
+ return sortedPhysicalChanges;
29
+ }
30
+ return (readSmallTrackedEventChanges({
31
+ event,
32
+ listSheets: input.listSheets,
33
+ readSingleTrackedCellChange: input.readSingleTrackedCellChange,
34
+ sheetOrder: input.sheetOrder,
35
+ updateVisibility: false,
36
+ })?.changes ?? null);
37
+ }
38
+ export function computeWorkPaperTrackedCellChangesFromEvents(input) {
39
+ const updateVisibility = input.updateVisibility ?? true;
40
+ if (input.events.some((event) => event.invalidation === 'full')) {
41
+ return null;
42
+ }
43
+ const nextVisibility = input.beforeVisibility;
44
+ const sheetOrders = new Map();
45
+ const sheetOrderFor = (sheetId) => {
46
+ const existing = sheetOrders.get(sheetId);
47
+ if (existing !== undefined) {
48
+ return existing;
49
+ }
50
+ const order = input.sheetOrder(sheetId);
51
+ sheetOrders.set(sheetId, order);
52
+ return order;
53
+ };
54
+ const ensureMutableSheet = (sheetId, sheetName) => {
55
+ const existing = nextVisibility.get(sheetId);
56
+ if (existing) {
57
+ return existing;
58
+ }
59
+ const created = {
60
+ sheetId,
61
+ sheetName,
62
+ order: input.sheetOrder(sheetId),
63
+ cells: new Map(),
64
+ };
65
+ nextVisibility.set(sheetId, created);
66
+ return created;
67
+ };
68
+ if (input.events.length === 1) {
69
+ const event = input.events[0];
70
+ if (!input.preferLazyPublicChanges) {
71
+ const smallChanges = readSmallTrackedEventChanges({
72
+ event,
73
+ ensureMutableSheet,
74
+ listSheets: input.listSheets,
75
+ readSingleTrackedCellChange: input.readSingleTrackedCellChange,
76
+ sheetOrder: sheetOrderFor,
77
+ updateVisibility,
78
+ });
79
+ if (smallChanges) {
80
+ return { changes: smallChanges.changes, nextVisibility };
81
+ }
82
+ }
83
+ const materializedEventChanges = input.materializeTrackedEventChanges(event, !updateVisibility);
84
+ const eventChanges = materializedEventChanges.changes;
85
+ if (!updateVisibility && materializedEventChanges.canReusePublicChanges && materializedEventChanges.ordered) {
86
+ return {
87
+ changes: eventChanges,
88
+ nextVisibility,
89
+ };
90
+ }
91
+ const directChanges = reduceSingleEventChanges({
92
+ event,
93
+ eventChanges,
94
+ ensureMutableSheet,
95
+ listSheets: input.listSheets,
96
+ materializedEventChanges,
97
+ sheetOrder: sheetOrderFor,
98
+ updateVisibility,
99
+ });
100
+ if (directChanges) {
101
+ return { changes: directChanges, nextVisibility };
102
+ }
103
+ }
104
+ const materializedSources = updateVisibility
105
+ ? null
106
+ : (input.materializeTrackedEventSources?.(input.events, input.preferLazyPublicChanges === undefined ? {} : { preferLazyPublicChanges: input.preferLazyPublicChanges }) ?? null);
107
+ if (materializedSources) {
108
+ return {
109
+ changes: materializedSources.ordered
110
+ ? materializedSources.changes
111
+ : orderWorkPaperCellChanges(materializedSources.changes, input.listSheets()),
112
+ nextVisibility,
113
+ };
114
+ }
115
+ const latestChangesByKey = new Map();
116
+ for (const event of input.events) {
117
+ const eventChanges = input.materializeTrackedEventChanges(event).changes;
118
+ for (let index = 0; index < eventChanges.length; index += 1) {
119
+ const change = eventChanges[index];
120
+ const cellKey = makeCellKey(change.address.sheet, change.address.row, change.address.col);
121
+ latestChangesByKey.delete(cellKey);
122
+ latestChangesByKey.set(cellKey, toPublicCellChange(change));
123
+ }
124
+ }
125
+ if (updateVisibility) {
126
+ for (const change of latestChangesByKey.values()) {
127
+ applyTrackedChangeToVisibility(ensureMutableSheet(change.address.sheet, change.sheetName), change);
128
+ }
129
+ }
130
+ const directChanges = [...latestChangesByKey.values()];
131
+ return {
132
+ changes: orderWorkPaperCellChanges(directChanges, input.listSheets()),
133
+ nextVisibility,
134
+ };
135
+ }
136
+ function tryReadTinyPatchTrackedEventChanges(input, patches, explicitChangedCount) {
137
+ const changes = [];
138
+ let alreadySorted = true;
139
+ let previousSheetId = -1;
140
+ let previousSheetOrder = -1;
141
+ let previousRow = -1;
142
+ let previousCol = -1;
143
+ for (let index = 0; index < patches.length; index += 1) {
144
+ const patch = patches[index];
145
+ if (!patch || patch.kind !== 'cell') {
146
+ return null;
147
+ }
148
+ const sheetOrder = patch.address.sheet === previousSheetId ? previousSheetOrder : input.sheetOrder(patch.address.sheet);
149
+ if (sheetOrder < previousSheetOrder ||
150
+ (sheetOrder === previousSheetOrder &&
151
+ (patch.address.row < previousRow || (patch.address.row === previousRow && patch.address.col < previousCol)))) {
152
+ alreadySorted = false;
153
+ }
154
+ changes.push(toPublicCellChange(patch));
155
+ previousSheetId = patch.address.sheet;
156
+ previousSheetOrder = sheetOrder;
157
+ previousRow = patch.address.row;
158
+ previousCol = patch.address.col;
159
+ }
160
+ return alreadySorted ? changes : orderWorkPaperCellChanges(changes, input.listSheets(), explicitChangedCount);
161
+ }
162
+ function readSmallTrackedEventChanges(input) {
163
+ const event = input.event;
164
+ if (event.invalidation === 'full' ||
165
+ event.patches !== undefined ||
166
+ event.changedCellIndices.length > TINY_TRACKED_CHANGE_LIMIT ||
167
+ event.hasInvalidatedRanges ||
168
+ event.hasInvalidatedRows ||
169
+ event.hasInvalidatedColumns) {
170
+ return null;
171
+ }
172
+ if (event.changedCellIndices.length === 0) {
173
+ return { changes: [] };
174
+ }
175
+ const changes = [];
176
+ const cellKeys = [];
177
+ let alreadySorted = true;
178
+ let previousSheetOrder = -1;
179
+ let previousRow = -1;
180
+ let previousCol = -1;
181
+ for (let index = 0; index < event.changedCellIndices.length; index += 1) {
182
+ const change = input.readSingleTrackedCellChange(event.changedCellIndices[index]);
183
+ if (!change) {
184
+ continue;
185
+ }
186
+ const cellKey = makeCellKey(change.address.sheet, change.address.row, change.address.col);
187
+ for (let priorIndex = 0; priorIndex < cellKeys.length; priorIndex += 1) {
188
+ if (cellKeys[priorIndex] === cellKey) {
189
+ return null;
190
+ }
191
+ }
192
+ cellKeys.push(cellKey);
193
+ const sheet = input.updateVisibility ? input.ensureMutableSheet?.(change.address.sheet, change.sheetName) : undefined;
194
+ const sheetOrder = sheet?.order ?? input.sheetOrder(change.address.sheet);
195
+ if (sheetOrder < previousSheetOrder ||
196
+ (sheetOrder === previousSheetOrder &&
197
+ (change.address.row < previousRow || (change.address.row === previousRow && change.address.col < previousCol)))) {
198
+ alreadySorted = false;
199
+ }
200
+ if (sheet) {
201
+ applyTrackedChangeToVisibility(sheet, change);
202
+ }
203
+ changes.push(change);
204
+ previousSheetOrder = sheetOrder;
205
+ previousRow = change.address.row;
206
+ previousCol = change.address.col;
207
+ }
208
+ return {
209
+ changes: alreadySorted ? changes : orderWorkPaperCellChanges(changes, input.listSheets(), event.explicitChangedCount),
210
+ };
211
+ }
212
+ function reduceSingleEventChanges(input) {
213
+ const directChanges = [];
214
+ const seenCellKeys = input.eventChanges.length > 4 && input.eventChanges.length <= 64 ? new Set() : undefined;
215
+ const smallCellKeys = input.eventChanges.length > 1 && input.eventChanges.length <= 4 ? [] : undefined;
216
+ let hasDuplicateCellKey = false;
217
+ let alreadySorted = true;
218
+ let previousSheetOrder = -1;
219
+ let previousRow = -1;
220
+ let previousCol = -1;
221
+ for (let index = 0; index < input.eventChanges.length; index += 1) {
222
+ const change = input.eventChanges[index];
223
+ const cellKey = makeCellKey(change.address.sheet, change.address.row, change.address.col);
224
+ if (seenCellKeys) {
225
+ if (seenCellKeys.has(cellKey)) {
226
+ hasDuplicateCellKey = true;
227
+ break;
228
+ }
229
+ seenCellKeys.add(cellKey);
230
+ }
231
+ else if (smallCellKeys) {
232
+ for (let priorIndex = 0; priorIndex < index; priorIndex += 1) {
233
+ if (smallCellKeys[priorIndex] === cellKey) {
234
+ hasDuplicateCellKey = true;
235
+ break;
236
+ }
237
+ }
238
+ if (hasDuplicateCellKey) {
239
+ break;
240
+ }
241
+ smallCellKeys[index] = cellKey;
242
+ }
243
+ const sheet = input.updateVisibility ? input.ensureMutableSheet(change.address.sheet, change.sheetName) : undefined;
244
+ const sheetOrder = sheet?.order ?? input.sheetOrder(change.address.sheet);
245
+ if (sheetOrder < previousSheetOrder ||
246
+ (sheetOrder === previousSheetOrder &&
247
+ (change.address.row < previousRow || (change.address.row === previousRow && change.address.col < previousCol)))) {
248
+ alreadySorted = false;
249
+ }
250
+ if (sheet) {
251
+ applyTrackedChangeToVisibility(sheet, change);
252
+ }
253
+ directChanges[index] = input.materializedEventChanges.canReusePublicChanges ? change : toPublicCellChange(change);
254
+ previousSheetOrder = sheetOrder;
255
+ previousRow = change.address.row;
256
+ previousCol = change.address.col;
257
+ }
258
+ if (hasDuplicateCellKey) {
259
+ return null;
260
+ }
261
+ return alreadySorted ? directChanges : orderWorkPaperCellChanges(directChanges, input.listSheets(), input.event.explicitChangedCount);
262
+ }
263
+ function applyTrackedChangeToVisibility(sheet, change) {
264
+ const cellKey = makeCellKey(change.address.sheet, change.address.row, change.address.col);
265
+ if (change.newValue.tag === ValueTag.Empty) {
266
+ sheet.cells.delete(cellKey);
267
+ }
268
+ else {
269
+ sheet.cells.set(cellKey, change.newValue);
270
+ }
271
+ }
272
+ function toPublicCellChange(change) {
273
+ return {
274
+ kind: 'cell',
275
+ address: change.address,
276
+ sheetName: change.sheetName,
277
+ a1: change.a1,
278
+ newValue: change.newValue,
279
+ };
280
+ }
281
+ //# sourceMappingURL=work-paper-tracked-change-reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-paper-tracked-change-reducer.js","sourceRoot":"","sources":["../src/work-paper-tracked-change-reducer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { EngineCellMutationRef, EngineExistingNumericCellMutationResult } from '@bilig/core';
2
+ import { ValueTag, type CellValue, type LiteralInput } from '@bilig/protocol';
3
+ import type { WorkPaperDetailedEvent } from './work-paper-emitter.js';
4
+ import type { WorkPaperCellAddress, WorkPaperCellChange, WorkPaperChange } from './work-paper-types.js';
5
+ import type { TrackedEngineEvent } from './tracked-engine-event-refs.js';
6
+ export declare const TRUSTED_TRACKED_PHYSICAL_SHEET_ID_PROPERTY = "__biligTrackedPhysicalSheetId";
7
+ export declare const TRUSTED_TRACKED_PHYSICAL_SORTED_SPLIT_PROPERTY = "__biligTrackedPhysicalSortedSliceSplit";
8
+ export declare const TINY_TRACKED_CHANGE_LIMIT = 4;
9
+ export interface WorkPaperTrackedRuntimeCellStore {
10
+ readonly tags: ArrayLike<ValueTag | undefined>;
11
+ readonly numbers: ArrayLike<number | undefined>;
12
+ readonly errors: ArrayLike<number | undefined>;
13
+ readonly getValue: (cellIndex: number, readString: (stringId: number) => string) => CellValue;
14
+ }
15
+ export interface WorkPaperTrackedStringPool {
16
+ readonly get: (id: number) => string;
17
+ }
18
+ export interface WorkPaperTrackedSheetRecord {
19
+ readonly name: string;
20
+ readonly structureVersion: number;
21
+ }
22
+ export interface WorkPaperTrackedWorkbookAccess {
23
+ readonly cellStore: WorkPaperTrackedAddressedCellStore;
24
+ readonly getCellPosition: (cellIndex: number) => {
25
+ readonly row: number;
26
+ readonly col: number;
27
+ } | undefined;
28
+ readonly getSheetById: (sheetId: number) => WorkPaperTrackedSheetRecord | undefined;
29
+ readonly getSheetNameById: (sheetId: number) => string | undefined;
30
+ }
31
+ export interface WorkPaperTrackedAddressedCellStore extends WorkPaperTrackedRuntimeCellStore {
32
+ readonly sheetIds: ArrayLike<number | undefined>;
33
+ readonly rows: ArrayLike<number | undefined>;
34
+ readonly cols: ArrayLike<number | undefined>;
35
+ }
36
+ export interface DirectSingleLiteralTrackedChangeExpectation {
37
+ readonly address: WorkPaperCellAddress;
38
+ readonly cellIndex?: number;
39
+ readonly isPhysicalSheet: boolean;
40
+ readonly sheetName: string;
41
+ readonly value: LiteralInput;
42
+ }
43
+ export type QueuedEvent = Extract<WorkPaperDetailedEvent, {
44
+ eventName: 'sheetAdded' | 'sheetRemoved' | 'sheetRenamed' | 'namedExpressionAdded' | 'namedExpressionRemoved';
45
+ }>;
46
+ export declare function readTrustedPhysicalTrackedChangeMetadata(changedCellIndices: Uint32Array): {
47
+ readonly trustedPhysicalSheetId: number;
48
+ readonly trustedSortedSliceSplit?: number;
49
+ } | undefined;
50
+ export declare function trackedEventHasNoValueChanges(event: TrackedEngineEvent): boolean;
51
+ export declare function countPotentialNewTrackedCellMutations(refs: readonly EngineCellMutationRef[]): number;
52
+ export declare function canSkipDimensionUpdateAfterLiteralMutation(refs: readonly EngineCellMutationRef[], potentialNewCells: number | undefined): boolean;
53
+ export declare function readTrackedRuntimeCellValue(cellStore: WorkPaperTrackedRuntimeCellStore, cellIndex: number, strings: WorkPaperTrackedStringPool): CellValue;
54
+ export declare function existingNumericMutationChangedCellCount(result: EngineExistingNumericCellMutationResult): number;
55
+ export declare function existingNumericMutationChangedCellAt(result: EngineExistingNumericCellMutationResult, index: number): number | undefined;
56
+ export declare function materializeExistingNumericMutationChangedCellIndices(result: EngineExistingNumericCellMutationResult): Uint32Array;
57
+ export declare function trackedEventFromExistingNumericMutationResult(result: EngineExistingNumericCellMutationResult): TrackedEngineEvent;
58
+ export declare function readTrackedCellChange(input: {
59
+ readonly cellIndex: number;
60
+ readonly workbook: WorkPaperTrackedWorkbookAccess;
61
+ readonly strings: WorkPaperTrackedStringPool;
62
+ readonly trackedA1: (row: number, col: number) => string;
63
+ }): WorkPaperCellChange | undefined;
64
+ export declare function readTinySortedPhysicalTrackedEventChanges(input: {
65
+ readonly event: TrackedEngineEvent;
66
+ readonly workbook: WorkPaperTrackedWorkbookAccess;
67
+ readonly strings: WorkPaperTrackedStringPool;
68
+ readonly trackedA1: (row: number, col: number) => string;
69
+ }): WorkPaperCellChange[] | null;
70
+ export declare function tryBuildDirectSingleLiteralTrackedChange(input: {
71
+ readonly events: readonly TrackedEngineEvent[];
72
+ readonly expected?: DirectSingleLiteralTrackedChangeExpectation;
73
+ readonly cellStore: WorkPaperTrackedAddressedCellStore;
74
+ readonly strings: WorkPaperTrackedStringPool;
75
+ readonly trackedA1: (row: number, col: number) => string;
76
+ }): WorkPaperChange[] | null;
77
+ export declare function tryBuildDirectExistingNumericTrackedChanges(input: {
78
+ readonly result: EngineExistingNumericCellMutationResult;
79
+ readonly address: WorkPaperCellAddress;
80
+ readonly cellIndex: number;
81
+ readonly isPhysicalSheet: boolean;
82
+ readonly sheetName: string;
83
+ readonly value: number;
84
+ readonly cellStore: WorkPaperTrackedAddressedCellStore;
85
+ readonly strings: WorkPaperTrackedStringPool;
86
+ readonly trackedA1: (row: number, col: number) => string;
87
+ readonly orderChanges: (changes: WorkPaperCellChange[], explicitChangedCount: number | undefined) => WorkPaperChange[];
88
+ }): WorkPaperChange[] | null;
89
+ export declare function withEventChanges(event: QueuedEvent, changes: WorkPaperChange[]): QueuedEvent;