@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.
- package/README.md +15 -0
- package/dist/persistence.d.ts +1 -1
- package/dist/persistence.js +13 -11
- package/dist/persistence.js.map +1 -1
- package/dist/tracked-cell-index-changes.d.ts +1 -7
- package/dist/tracked-cell-index-changes.js +20 -434
- package/dist/tracked-cell-index-changes.js.map +1 -1
- package/dist/tracked-cell-lazy-physical-changes.d.ts +21 -0
- package/dist/tracked-cell-lazy-physical-changes.js +333 -0
- package/dist/tracked-cell-lazy-physical-changes.js.map +1 -0
- package/dist/tracked-cell-value-read.d.ts +18 -0
- package/dist/tracked-cell-value-read.js +46 -0
- package/dist/tracked-cell-value-read.js.map +1 -0
- package/dist/tracked-engine-event-refs.d.ts +1 -1
- package/dist/tracked-engine-event-refs.js +14 -4
- package/dist/tracked-engine-event-refs.js.map +1 -1
- package/dist/tracked-index-source-order.d.ts +5 -0
- package/dist/tracked-index-source-order.js +15 -0
- package/dist/tracked-index-source-order.js.map +1 -0
- package/dist/work-paper-address-format.d.ts +33 -0
- package/dist/work-paper-address-format.js +116 -0
- package/dist/work-paper-address-format.js.map +1 -0
- package/dist/work-paper-axis-helpers.d.ts +26 -0
- package/dist/work-paper-axis-helpers.js +104 -0
- package/dist/work-paper-axis-helpers.js.map +1 -0
- package/dist/work-paper-capability-checks.d.ts +17 -0
- package/dist/work-paper-capability-checks.js +101 -0
- package/dist/work-paper-capability-checks.js.map +1 -0
- package/dist/work-paper-capability-operations.d.ts +34 -0
- package/dist/work-paper-capability-operations.js +70 -0
- package/dist/work-paper-capability-operations.js.map +1 -0
- package/dist/work-paper-capability-surface.d.ts +97 -0
- package/dist/work-paper-capability-surface.js +236 -0
- package/dist/work-paper-capability-surface.js.map +1 -0
- package/dist/work-paper-cell-content-setter.d.ts +37 -0
- package/dist/work-paper-cell-content-setter.js +87 -0
- package/dist/work-paper-cell-content-setter.js.map +1 -0
- package/dist/work-paper-cell-mutation-refs.d.ts +23 -0
- package/dist/work-paper-cell-mutation-refs.js +50 -0
- package/dist/work-paper-cell-mutation-refs.js.map +1 -0
- package/dist/work-paper-cell-read.d.ts +41 -0
- package/dist/work-paper-cell-read.js +54 -0
- package/dist/work-paper-cell-read.js.map +1 -0
- package/dist/work-paper-clipboard-operations.d.ts +24 -0
- package/dist/work-paper-clipboard-operations.js +56 -0
- package/dist/work-paper-clipboard-operations.js.map +1 -0
- package/dist/work-paper-clipboard.d.ts +13 -0
- package/dist/work-paper-clipboard.js +19 -0
- package/dist/work-paper-clipboard.js.map +1 -0
- package/dist/work-paper-config.d.ts +11 -0
- package/dist/work-paper-config.js +247 -0
- package/dist/work-paper-config.js.map +1 -0
- package/dist/work-paper-date-time.d.ts +4 -0
- package/dist/work-paper-date-time.js +38 -0
- package/dist/work-paper-date-time.js.map +1 -0
- package/dist/work-paper-dependency-refs.d.ts +11 -0
- package/dist/work-paper-dependency-refs.js +74 -0
- package/dist/work-paper-dependency-refs.js.map +1 -0
- package/dist/work-paper-emitter.d.ts +22 -0
- package/dist/work-paper-emitter.js +130 -0
- package/dist/work-paper-emitter.js.map +1 -0
- package/dist/work-paper-engine-event-tracker.d.ts +24 -0
- package/dist/work-paper-engine-event-tracker.js +92 -0
- package/dist/work-paper-engine-event-tracker.js.map +1 -0
- package/dist/work-paper-errors.d.ts +4 -0
- package/dist/work-paper-errors.js +7 -0
- package/dist/work-paper-errors.js.map +1 -1
- package/dist/work-paper-existing-numeric-fast-path.d.ts +31 -0
- package/dist/work-paper-existing-numeric-fast-path.js +120 -0
- package/dist/work-paper-existing-numeric-fast-path.js.map +1 -0
- package/dist/work-paper-fill-helpers.d.ts +8 -0
- package/dist/work-paper-fill-helpers.js +34 -0
- package/dist/work-paper-fill-helpers.js.map +1 -0
- package/dist/work-paper-formula-analysis.d.ts +18 -0
- package/dist/work-paper-formula-analysis.js +54 -0
- package/dist/work-paper-formula-analysis.js.map +1 -0
- package/dist/work-paper-formula-rewrite.d.ts +22 -0
- package/dist/work-paper-formula-rewrite.js +71 -0
- package/dist/work-paper-formula-rewrite.js.map +1 -0
- package/dist/work-paper-function-registry.d.ts +39 -0
- package/dist/work-paper-function-registry.js +66 -0
- package/dist/work-paper-function-registry.js.map +1 -0
- package/dist/work-paper-history-operations.d.ts +15 -0
- package/dist/work-paper-history-operations.js +14 -0
- package/dist/work-paper-history-operations.js.map +1 -0
- package/dist/work-paper-history.d.ts +50 -0
- package/dist/work-paper-history.js +136 -0
- package/dist/work-paper-history.js.map +1 -0
- package/dist/work-paper-internals.d.ts +24 -0
- package/dist/work-paper-internals.js +59 -0
- package/dist/work-paper-internals.js.map +1 -0
- package/dist/work-paper-literal-mutation-queue.d.ts +18 -0
- package/dist/work-paper-literal-mutation-queue.js +40 -0
- package/dist/work-paper-literal-mutation-queue.js.map +1 -0
- package/dist/work-paper-matrix-application.d.ts +31 -0
- package/dist/work-paper-matrix-application.js +85 -0
- package/dist/work-paper-matrix-application.js.map +1 -0
- package/dist/work-paper-mutation-queues.d.ts +29 -0
- package/dist/work-paper-mutation-queues.js +72 -0
- package/dist/work-paper-mutation-queues.js.map +1 -0
- package/dist/work-paper-named-expression-fast-path.d.ts +37 -0
- package/dist/work-paper-named-expression-fast-path.js +100 -0
- package/dist/work-paper-named-expression-fast-path.js.map +1 -0
- package/dist/work-paper-named-expression-helpers.d.ts +54 -0
- package/dist/work-paper-named-expression-helpers.js +179 -0
- package/dist/work-paper-named-expression-helpers.js.map +1 -0
- package/dist/work-paper-named-expression-operations.d.ts +39 -0
- package/dist/work-paper-named-expression-operations.js +82 -0
- package/dist/work-paper-named-expression-operations.js.map +1 -0
- package/dist/work-paper-public-surface.d.ts +73 -0
- package/dist/work-paper-public-surface.js +165 -0
- package/dist/work-paper-public-surface.js.map +1 -0
- package/dist/work-paper-read-operations.d.ts +52 -0
- package/dist/work-paper-read-operations.js +185 -0
- package/dist/work-paper-read-operations.js.map +1 -0
- package/dist/work-paper-runtime-adapters.d.ts +144 -0
- package/dist/work-paper-runtime-adapters.js +256 -0
- package/dist/work-paper-runtime-adapters.js.map +1 -0
- package/dist/work-paper-runtime-helpers.d.ts +27 -0
- package/dist/work-paper-runtime-helpers.js +305 -0
- package/dist/work-paper-runtime-helpers.js.map +1 -0
- package/dist/work-paper-runtime-surface.d.ts +137 -0
- package/dist/work-paper-runtime-surface.js +702 -0
- package/dist/work-paper-runtime-surface.js.map +1 -0
- package/dist/work-paper-runtime.d.ts +56 -285
- package/dist/work-paper-runtime.js +403 -4809
- package/dist/work-paper-runtime.js.map +1 -1
- package/dist/work-paper-scratch-evaluator.js +29 -26
- package/dist/work-paper-scratch-evaluator.js.map +1 -1
- package/dist/work-paper-sheet-dimension-cache.d.ts +36 -0
- package/dist/work-paper-sheet-dimension-cache.js +158 -0
- package/dist/work-paper-sheet-dimension-cache.js.map +1 -0
- package/dist/work-paper-sheet-initialization.d.ts +19 -0
- package/dist/work-paper-sheet-initialization.js +93 -0
- package/dist/work-paper-sheet-initialization.js.map +1 -0
- package/dist/work-paper-sheet-inspection.d.ts +66 -0
- package/dist/work-paper-sheet-inspection.js +204 -0
- package/dist/work-paper-sheet-inspection.js.map +1 -0
- package/dist/work-paper-sheet-operations.d.ts +59 -0
- package/dist/work-paper-sheet-operations.js +104 -0
- package/dist/work-paper-sheet-operations.js.map +1 -0
- package/dist/work-paper-sheet-read.d.ts +21 -0
- package/dist/work-paper-sheet-read.js +32 -0
- package/dist/work-paper-sheet-read.js.map +1 -0
- package/dist/work-paper-sheet-rename-fast-path.d.ts +18 -0
- package/dist/work-paper-sheet-rename-fast-path.js +43 -0
- package/dist/work-paper-sheet-rename-fast-path.js.map +1 -0
- package/dist/work-paper-static-api.d.ts +18 -0
- package/dist/work-paper-static-api.js +44 -0
- package/dist/work-paper-static-api.js.map +1 -0
- package/dist/work-paper-static-registry.d.ts +21 -0
- package/dist/work-paper-static-registry.js +150 -0
- package/dist/work-paper-static-registry.js.map +1 -0
- package/dist/work-paper-tracked-change-reducer.d.ts +41 -0
- package/dist/work-paper-tracked-change-reducer.js +281 -0
- package/dist/work-paper-tracked-change-reducer.js.map +1 -0
- package/dist/work-paper-tracked-event-helpers.d.ts +89 -0
- package/dist/work-paper-tracked-event-helpers.js +366 -0
- package/dist/work-paper-tracked-event-helpers.js.map +1 -0
- package/dist/work-paper-types.d.ts +6 -5
- package/dist/work-paper-visibility-snapshot.d.ts +36 -0
- package/dist/work-paper-visibility-snapshot.js +62 -0
- package/dist/work-paper-visibility-snapshot.js.map +1 -0
- package/package.json +13 -5
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export class WorkPaperEmitter {
|
|
2
|
+
listeners = {
|
|
3
|
+
sheetAdded: new Set(),
|
|
4
|
+
sheetRemoved: new Set(),
|
|
5
|
+
sheetRenamed: new Set(),
|
|
6
|
+
namedExpressionAdded: new Set(),
|
|
7
|
+
namedExpressionRemoved: new Set(),
|
|
8
|
+
valuesUpdated: new Set(),
|
|
9
|
+
evaluationSuspended: new Set(),
|
|
10
|
+
evaluationResumed: new Set(),
|
|
11
|
+
};
|
|
12
|
+
detailedListeners = {
|
|
13
|
+
sheetAdded: new Set(),
|
|
14
|
+
sheetRemoved: new Set(),
|
|
15
|
+
sheetRenamed: new Set(),
|
|
16
|
+
namedExpressionAdded: new Set(),
|
|
17
|
+
namedExpressionRemoved: new Set(),
|
|
18
|
+
valuesUpdated: new Set(),
|
|
19
|
+
evaluationSuspended: new Set(),
|
|
20
|
+
evaluationResumed: new Set(),
|
|
21
|
+
};
|
|
22
|
+
on(eventName, listener) {
|
|
23
|
+
this.listeners[eventName].add(listener);
|
|
24
|
+
}
|
|
25
|
+
off(eventName, listener) {
|
|
26
|
+
this.listeners[eventName].delete(listener);
|
|
27
|
+
}
|
|
28
|
+
once(eventName, listener) {
|
|
29
|
+
const wrapper = (...args) => {
|
|
30
|
+
this.off(eventName, wrapper);
|
|
31
|
+
listener(...args);
|
|
32
|
+
};
|
|
33
|
+
this.on(eventName, wrapper);
|
|
34
|
+
}
|
|
35
|
+
onDetailed(eventName, listener) {
|
|
36
|
+
this.detailedListeners[eventName].add(listener);
|
|
37
|
+
}
|
|
38
|
+
offDetailed(eventName, listener) {
|
|
39
|
+
this.detailedListeners[eventName].delete(listener);
|
|
40
|
+
}
|
|
41
|
+
onceDetailed(eventName, listener) {
|
|
42
|
+
const wrapper = (payload) => {
|
|
43
|
+
this.offDetailed(eventName, wrapper);
|
|
44
|
+
listener(payload);
|
|
45
|
+
};
|
|
46
|
+
this.onDetailed(eventName, wrapper);
|
|
47
|
+
}
|
|
48
|
+
hasListeners(eventName) {
|
|
49
|
+
return this.listeners[eventName].size > 0 || this.detailedListeners[eventName].size > 0;
|
|
50
|
+
}
|
|
51
|
+
hasAnyListeners() {
|
|
52
|
+
return (Object.values(this.listeners).some((listeners) => listeners.size > 0) ||
|
|
53
|
+
Object.values(this.detailedListeners).some((listeners) => listeners.size > 0));
|
|
54
|
+
}
|
|
55
|
+
emitDetailed(event) {
|
|
56
|
+
this.dispatchDetailed(event);
|
|
57
|
+
}
|
|
58
|
+
dispatchDetailed(event) {
|
|
59
|
+
switch (event.eventName) {
|
|
60
|
+
case 'sheetAdded':
|
|
61
|
+
this.listeners.sheetAdded.forEach((listener) => {
|
|
62
|
+
listener(event.payload.sheetName);
|
|
63
|
+
});
|
|
64
|
+
this.detailedListeners.sheetAdded.forEach((listener) => {
|
|
65
|
+
listener(event.payload);
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
case 'sheetRemoved':
|
|
69
|
+
this.listeners.sheetRemoved.forEach((listener) => {
|
|
70
|
+
listener(event.payload.sheetName, event.payload.changes);
|
|
71
|
+
});
|
|
72
|
+
this.detailedListeners.sheetRemoved.forEach((listener) => {
|
|
73
|
+
listener(event.payload);
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
case 'sheetRenamed':
|
|
77
|
+
this.listeners.sheetRenamed.forEach((listener) => {
|
|
78
|
+
listener(event.payload.oldName, event.payload.newName);
|
|
79
|
+
});
|
|
80
|
+
this.detailedListeners.sheetRenamed.forEach((listener) => {
|
|
81
|
+
listener(event.payload);
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
case 'namedExpressionAdded':
|
|
85
|
+
this.listeners.namedExpressionAdded.forEach((listener) => {
|
|
86
|
+
listener(event.payload.name, event.payload.changes);
|
|
87
|
+
});
|
|
88
|
+
this.detailedListeners.namedExpressionAdded.forEach((listener) => {
|
|
89
|
+
listener(event.payload);
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
case 'namedExpressionRemoved':
|
|
93
|
+
this.listeners.namedExpressionRemoved.forEach((listener) => {
|
|
94
|
+
listener(event.payload.name, event.payload.changes);
|
|
95
|
+
});
|
|
96
|
+
this.detailedListeners.namedExpressionRemoved.forEach((listener) => {
|
|
97
|
+
listener(event.payload);
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
case 'valuesUpdated':
|
|
101
|
+
this.listeners.valuesUpdated.forEach((listener) => {
|
|
102
|
+
listener(event.payload.changes);
|
|
103
|
+
});
|
|
104
|
+
this.detailedListeners.valuesUpdated.forEach((listener) => {
|
|
105
|
+
listener(event.payload);
|
|
106
|
+
});
|
|
107
|
+
return;
|
|
108
|
+
case 'evaluationSuspended':
|
|
109
|
+
this.listeners.evaluationSuspended.forEach((listener) => {
|
|
110
|
+
listener();
|
|
111
|
+
});
|
|
112
|
+
this.detailedListeners.evaluationSuspended.forEach((listener) => {
|
|
113
|
+
listener(event.payload);
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
case 'evaluationResumed':
|
|
117
|
+
this.listeners.evaluationResumed.forEach((listener) => {
|
|
118
|
+
listener(event.payload.changes);
|
|
119
|
+
});
|
|
120
|
+
this.detailedListeners.evaluationResumed.forEach((listener) => {
|
|
121
|
+
listener(event.payload);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
clear() {
|
|
126
|
+
Object.values(this.listeners).forEach((listeners) => listeners.clear());
|
|
127
|
+
Object.values(this.detailedListeners).forEach((listeners) => listeners.clear());
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=work-paper-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-emitter.js","sourceRoot":"","sources":["../src/work-paper-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SpreadsheetEngine } from '@bilig/core';
|
|
2
|
+
import { type TrackedEngineEvent } from './tracked-engine-event-refs.js';
|
|
3
|
+
import type { WorkPaperCellChange } from './work-paper-types.js';
|
|
4
|
+
export declare class WorkPaperEngineEventTracker {
|
|
5
|
+
private trackedEvents;
|
|
6
|
+
private pendingLazyTrackedChanges;
|
|
7
|
+
private captureEnabled;
|
|
8
|
+
private retainedEventIndicesDepth;
|
|
9
|
+
private unsubscribe;
|
|
10
|
+
get hasTrackedEvents(): boolean;
|
|
11
|
+
get hasPendingLazyChanges(): boolean;
|
|
12
|
+
get isCaptureEnabled(): boolean;
|
|
13
|
+
setCaptureEnabled(enabled: boolean): void;
|
|
14
|
+
attach(engine: SpreadsheetEngine): void;
|
|
15
|
+
dispose(): void;
|
|
16
|
+
clearEvents(): void;
|
|
17
|
+
drain(): TrackedEngineEvent[];
|
|
18
|
+
withRetainedIndices<T>(callback: () => T): T;
|
|
19
|
+
withCaptureDisabled<T>(callback: () => T): T;
|
|
20
|
+
trackLazyChanges(changes: WorkPaperCellChange[]): void;
|
|
21
|
+
materializePendingLazyChanges(options?: {
|
|
22
|
+
readonly preservePositions?: boolean;
|
|
23
|
+
}): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { detachTrackedIndexChanges, hasDeferredTrackedIndexChanges } from './tracked-cell-index-changes.js';
|
|
2
|
+
import { captureTrackedEngineEvent } from './tracked-engine-event-refs.js';
|
|
3
|
+
import { WorkPaperOperationError } from './work-paper-errors.js';
|
|
4
|
+
function hasTrackedEngineSubscription(value) {
|
|
5
|
+
return typeof value === 'object' && value !== null && typeof Reflect.get(value, 'subscribeTracked') === 'function';
|
|
6
|
+
}
|
|
7
|
+
export class WorkPaperEngineEventTracker {
|
|
8
|
+
trackedEvents = [];
|
|
9
|
+
pendingLazyTrackedChanges = [];
|
|
10
|
+
captureEnabled = true;
|
|
11
|
+
retainedEventIndicesDepth = 0;
|
|
12
|
+
unsubscribe = null;
|
|
13
|
+
get hasTrackedEvents() {
|
|
14
|
+
return this.trackedEvents.length > 0;
|
|
15
|
+
}
|
|
16
|
+
get hasPendingLazyChanges() {
|
|
17
|
+
return this.pendingLazyTrackedChanges.length > 0;
|
|
18
|
+
}
|
|
19
|
+
get isCaptureEnabled() {
|
|
20
|
+
return this.captureEnabled;
|
|
21
|
+
}
|
|
22
|
+
setCaptureEnabled(enabled) {
|
|
23
|
+
this.captureEnabled = enabled;
|
|
24
|
+
}
|
|
25
|
+
attach(engine) {
|
|
26
|
+
this.unsubscribe?.();
|
|
27
|
+
this.trackedEvents = [];
|
|
28
|
+
if (!hasTrackedEngineSubscription(engine.events)) {
|
|
29
|
+
throw new WorkPaperOperationError('Tracked engine event subscription is unavailable');
|
|
30
|
+
}
|
|
31
|
+
this.unsubscribe = engine.events.subscribeTracked((event) => {
|
|
32
|
+
if (!this.captureEnabled) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.trackedEvents.push(captureTrackedEngineEvent(event, {
|
|
36
|
+
borrowChangedCellIndexViews: this.retainedEventIndicesDepth > 0,
|
|
37
|
+
cloneChangedCellIndices: this.retainedEventIndicesDepth === 0,
|
|
38
|
+
}));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
dispose() {
|
|
42
|
+
this.materializePendingLazyChanges();
|
|
43
|
+
this.unsubscribe?.();
|
|
44
|
+
this.unsubscribe = null;
|
|
45
|
+
this.clearEvents();
|
|
46
|
+
}
|
|
47
|
+
clearEvents() {
|
|
48
|
+
this.trackedEvents = [];
|
|
49
|
+
}
|
|
50
|
+
drain() {
|
|
51
|
+
const events = this.trackedEvents;
|
|
52
|
+
this.trackedEvents = [];
|
|
53
|
+
return events;
|
|
54
|
+
}
|
|
55
|
+
withRetainedIndices(callback) {
|
|
56
|
+
this.retainedEventIndicesDepth += 1;
|
|
57
|
+
try {
|
|
58
|
+
return callback();
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
this.retainedEventIndicesDepth -= 1;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
withCaptureDisabled(callback) {
|
|
65
|
+
const previous = this.captureEnabled;
|
|
66
|
+
this.captureEnabled = false;
|
|
67
|
+
this.trackedEvents = [];
|
|
68
|
+
try {
|
|
69
|
+
return callback();
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
this.captureEnabled = previous;
|
|
73
|
+
this.trackedEvents = [];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
trackLazyChanges(changes) {
|
|
77
|
+
if (hasDeferredTrackedIndexChanges(changes)) {
|
|
78
|
+
this.pendingLazyTrackedChanges.push(changes);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
materializePendingLazyChanges(options = {}) {
|
|
82
|
+
if (this.pendingLazyTrackedChanges.length === 0) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const pending = this.pendingLazyTrackedChanges;
|
|
86
|
+
this.pendingLazyTrackedChanges = [];
|
|
87
|
+
for (let index = 0; index < pending.length; index += 1) {
|
|
88
|
+
detachTrackedIndexChanges(pending[index], options.preservePositions === undefined ? {} : { preservePositions: options.preservePositions });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=work-paper-engine-event-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-engine-event-tracker.js","sourceRoot":"","sources":["../src/work-paper-engine-event-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,10 @@ export declare class WorkPaperConfigValueTooSmallError extends BaseWorkPaperErro
|
|
|
11
11
|
export declare class WorkPaperEvaluationSuspendedError extends BaseWorkPaperError {
|
|
12
12
|
constructor(message?: string);
|
|
13
13
|
}
|
|
14
|
+
export declare class WorkPaperEvaluationTimeoutError extends BaseWorkPaperError {
|
|
15
|
+
readonly timeoutMs: number;
|
|
16
|
+
constructor(timeoutMs: number);
|
|
17
|
+
}
|
|
14
18
|
export declare class WorkPaperExpectedOneOfValuesError extends BaseWorkPaperError {
|
|
15
19
|
constructor(values: string, paramName: string);
|
|
16
20
|
}
|
|
@@ -19,6 +19,13 @@ export class WorkPaperEvaluationSuspendedError extends BaseWorkPaperError {
|
|
|
19
19
|
super('WorkPaperEvaluationSuspendedError', message);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
export class WorkPaperEvaluationTimeoutError extends BaseWorkPaperError {
|
|
23
|
+
timeoutMs;
|
|
24
|
+
constructor(timeoutMs) {
|
|
25
|
+
super('WorkPaperEvaluationTimeoutError', `Workbook evaluation timed out after ${timeoutMs}ms`);
|
|
26
|
+
this.timeoutMs = timeoutMs;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
22
29
|
export class WorkPaperExpectedOneOfValuesError extends BaseWorkPaperError {
|
|
23
30
|
constructor(values, paramName) {
|
|
24
31
|
super('WorkPaperExpectedOneOfValuesError', `Expected one of ${values} for config parameter: ${paramName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-paper-errors.js","sourceRoot":"","sources":["../src/work-paper-errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"work-paper-errors.js","sourceRoot":"","sources":["../src/work-paper-errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type SheetRecord, type SpreadsheetEngine } from '@bilig/core';
|
|
2
|
+
import type { TrackedEngineEvent } from './tracked-engine-event-refs.js';
|
|
3
|
+
import type { WorkPaperCellAddress, WorkPaperCellChange, WorkPaperChange } from './work-paper-types.js';
|
|
4
|
+
export interface WorkPaperExistingNumericFastPathRuntime {
|
|
5
|
+
readonly canUseTrackedMutationFastPath: () => boolean;
|
|
6
|
+
readonly getEngine: () => SpreadsheetEngine;
|
|
7
|
+
readonly hasPendingLazyTrackedChanges: () => boolean;
|
|
8
|
+
readonly materializePendingLazyTrackedChanges: () => void;
|
|
9
|
+
readonly hasTrackedEngineEvents: () => boolean;
|
|
10
|
+
readonly drainTrackedEngineEvents: () => readonly TrackedEngineEvent[];
|
|
11
|
+
readonly clearTrackedEngineEvents: () => void;
|
|
12
|
+
readonly getEngineEventCaptureEnabled: () => boolean;
|
|
13
|
+
readonly setEngineEventCaptureEnabled: (enabled: boolean) => void;
|
|
14
|
+
readonly hasPendingBatchOps: () => boolean;
|
|
15
|
+
readonly flushPendingBatchOps: () => void;
|
|
16
|
+
readonly messageOf: (error: unknown, fallback: string) => string;
|
|
17
|
+
readonly trackedA1: (row: number, col: number) => string;
|
|
18
|
+
readonly orderChanges: (changes: WorkPaperCellChange[], explicitChangedCount: number | undefined) => WorkPaperChange[];
|
|
19
|
+
readonly computeTrackedChangesWithoutVisibilityCache: (events: readonly TrackedEngineEvent[], options: {
|
|
20
|
+
readonly preferLazyPublicChanges?: boolean;
|
|
21
|
+
}) => WorkPaperChange[];
|
|
22
|
+
readonly hasValuesUpdatedListeners: () => boolean;
|
|
23
|
+
readonly emitValuesUpdated: (changes: WorkPaperChange[]) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface ExistingNumericWorkPaperCellContentsRequest {
|
|
26
|
+
readonly sheet: SheetRecord;
|
|
27
|
+
readonly address: WorkPaperCellAddress;
|
|
28
|
+
readonly cellIndex: number;
|
|
29
|
+
readonly value: number;
|
|
30
|
+
}
|
|
31
|
+
export declare function trySetExistingNumericWorkPaperCellContentsWithTrackedFastPath(runtime: WorkPaperExistingNumericFastPathRuntime, request: ExistingNumericWorkPaperCellContentsRequest): WorkPaperChange[] | null;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ValueTag } from '@bilig/protocol';
|
|
2
|
+
import { WORKPAPER_PUBLIC_ERROR_NAMES } from './work-paper-config.js';
|
|
3
|
+
import { WorkPaperOperationError } from './work-paper-errors.js';
|
|
4
|
+
import { trackedEventFromExistingNumericMutationResult, tryBuildDirectExistingNumericTrackedChanges, } from './work-paper-tracked-event-helpers.js';
|
|
5
|
+
const FAST_EXISTING_NUMERIC_LITERAL_FLAGS = 2 /* CellFlags.HasFormula */ | 4 /* CellFlags.JsOnly */ | 8 /* CellFlags.InCycle */ | 64 /* CellFlags.SpillChild */ | 128 /* CellFlags.PivotOutput */;
|
|
6
|
+
export function trySetExistingNumericWorkPaperCellContentsWithTrackedFastPath(runtime, request) {
|
|
7
|
+
if (!runtime.canUseTrackedMutationFastPath() || request.sheet.structureVersion !== 1) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const engine = runtime.getEngine();
|
|
11
|
+
const cellStore = engine.workbook.cellStore;
|
|
12
|
+
if (cellStore.sheetIds[request.cellIndex] !== request.address.sheet ||
|
|
13
|
+
cellStore.rows[request.cellIndex] !== request.address.row ||
|
|
14
|
+
cellStore.cols[request.cellIndex] !== request.address.col ||
|
|
15
|
+
(cellStore.formulaIds[request.cellIndex] ?? 0) !== 0 ||
|
|
16
|
+
((cellStore.flags[request.cellIndex] ?? 0) & FAST_EXISTING_NUMERIC_LITERAL_FLAGS) !== 0 ||
|
|
17
|
+
cellStore.tags[request.cellIndex] !== ValueTag.Number) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const existingNumericMutationEngine = engine;
|
|
21
|
+
if (typeof existingNumericMutationEngine.tryApplyExistingNumericCellMutationAt !== 'function') {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (runtime.hasPendingLazyTrackedChanges()) {
|
|
25
|
+
runtime.materializePendingLazyTrackedChanges();
|
|
26
|
+
}
|
|
27
|
+
if (runtime.hasTrackedEngineEvents()) {
|
|
28
|
+
runtime.drainTrackedEngineEvents();
|
|
29
|
+
}
|
|
30
|
+
let result = null;
|
|
31
|
+
const oldNumericValue = cellStore.numbers[request.cellIndex] ?? 0;
|
|
32
|
+
const previousCaptureEnabled = runtime.getEngineEventCaptureEnabled();
|
|
33
|
+
runtime.setEngineEventCaptureEnabled(false);
|
|
34
|
+
try {
|
|
35
|
+
if (runtime.hasPendingBatchOps()) {
|
|
36
|
+
runtime.flushPendingBatchOps();
|
|
37
|
+
}
|
|
38
|
+
result = existingNumericMutationEngine.tryApplyExistingNumericCellMutationAt({
|
|
39
|
+
sheetId: request.address.sheet,
|
|
40
|
+
row: request.address.row,
|
|
41
|
+
col: request.address.col,
|
|
42
|
+
cellIndex: request.cellIndex,
|
|
43
|
+
value: request.value,
|
|
44
|
+
emitTracked: false,
|
|
45
|
+
trustedExistingNumericLiteral: true,
|
|
46
|
+
oldNumericValue,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error instanceof Error && WORKPAPER_PUBLIC_ERROR_NAMES.has(error.name)) {
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
throw new WorkPaperOperationError(runtime.messageOf(error, 'Mutation failed'));
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
runtime.setEngineEventCaptureEnabled(previousCaptureEnabled);
|
|
57
|
+
}
|
|
58
|
+
if (!result) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (runtime.hasTrackedEngineEvents()) {
|
|
62
|
+
runtime.clearTrackedEngineEvents();
|
|
63
|
+
}
|
|
64
|
+
if (result.changedCellIndices === undefined &&
|
|
65
|
+
result.changedCellCount === 2 &&
|
|
66
|
+
result.firstChangedCellIndex === request.cellIndex &&
|
|
67
|
+
result.secondChangedCellIndex !== undefined &&
|
|
68
|
+
result.secondChangedNumericValue !== undefined &&
|
|
69
|
+
result.secondChangedRow !== undefined &&
|
|
70
|
+
result.secondChangedCol !== undefined) {
|
|
71
|
+
const changes = [
|
|
72
|
+
{
|
|
73
|
+
kind: 'cell',
|
|
74
|
+
address: { sheet: request.address.sheet, row: request.address.row, col: request.address.col },
|
|
75
|
+
sheetName: request.sheet.name,
|
|
76
|
+
a1: runtime.trackedA1(request.address.row, request.address.col),
|
|
77
|
+
newValue: { tag: ValueTag.Number, value: request.value },
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
kind: 'cell',
|
|
81
|
+
address: { sheet: request.address.sheet, row: result.secondChangedRow, col: result.secondChangedCol },
|
|
82
|
+
sheetName: request.sheet.name,
|
|
83
|
+
a1: runtime.trackedA1(result.secondChangedRow, result.secondChangedCol),
|
|
84
|
+
newValue: { tag: ValueTag.Number, value: result.secondChangedNumericValue },
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
if (runtime.hasValuesUpdatedListeners()) {
|
|
88
|
+
runtime.emitValuesUpdated(changes);
|
|
89
|
+
}
|
|
90
|
+
return changes;
|
|
91
|
+
}
|
|
92
|
+
let changes = tryBuildDirectExistingNumericTrackedChanges({
|
|
93
|
+
result,
|
|
94
|
+
address: request.address,
|
|
95
|
+
cellIndex: request.cellIndex,
|
|
96
|
+
isPhysicalSheet: true,
|
|
97
|
+
sheetName: request.sheet.name,
|
|
98
|
+
value: request.value,
|
|
99
|
+
cellStore,
|
|
100
|
+
strings: engine.strings,
|
|
101
|
+
trackedA1: (row, col) => runtime.trackedA1(row, col),
|
|
102
|
+
orderChanges: (changesToOrder, explicitChangedCount) => runtime.orderChanges(changesToOrder, explicitChangedCount),
|
|
103
|
+
});
|
|
104
|
+
if (changes === null) {
|
|
105
|
+
const shouldEmitValuesUpdated = runtime.hasValuesUpdatedListeners();
|
|
106
|
+
const events = [trackedEventFromExistingNumericMutationResult(result)];
|
|
107
|
+
changes = runtime.computeTrackedChangesWithoutVisibilityCache(events, {
|
|
108
|
+
preferLazyPublicChanges: !shouldEmitValuesUpdated,
|
|
109
|
+
});
|
|
110
|
+
if (changes.length > 0 && shouldEmitValuesUpdated) {
|
|
111
|
+
runtime.emitValuesUpdated(changes);
|
|
112
|
+
}
|
|
113
|
+
return changes;
|
|
114
|
+
}
|
|
115
|
+
if (changes.length > 0 && runtime.hasValuesUpdatedListeners()) {
|
|
116
|
+
runtime.emitValuesUpdated(changes);
|
|
117
|
+
}
|
|
118
|
+
return changes;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=work-paper-existing-numeric-fast-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-existing-numeric-fast-path.js","sourceRoot":"","sources":["../src/work-paper-existing-numeric-fast-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RawCellContent, WorkPaperCellRange } from './work-paper-types.js';
|
|
2
|
+
export declare function buildWorkPaperNullMatrixForRange(range: WorkPaperCellRange): RawCellContent[][];
|
|
3
|
+
export declare function buildWorkPaperFillRangeData(input: {
|
|
4
|
+
readonly source: WorkPaperCellRange;
|
|
5
|
+
readonly target: WorkPaperCellRange;
|
|
6
|
+
readonly sourceSerialized: RawCellContent[][];
|
|
7
|
+
readonly offsetsFromTarget: boolean;
|
|
8
|
+
}): RawCellContent[][];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { translateFormulaReferences } from '@bilig/formula';
|
|
2
|
+
export function buildWorkPaperNullMatrixForRange(range) {
|
|
3
|
+
const height = range.end.row - range.start.row + 1;
|
|
4
|
+
const width = range.end.col - range.start.col + 1;
|
|
5
|
+
return Array.from({ length: height }, () => Array.from({ length: width }, () => null));
|
|
6
|
+
}
|
|
7
|
+
export function buildWorkPaperFillRangeData(input) {
|
|
8
|
+
const targetHeight = input.target.end.row - input.target.start.row + 1;
|
|
9
|
+
const targetWidth = input.target.end.col - input.target.start.col + 1;
|
|
10
|
+
const sourceHeight = Math.max(input.sourceSerialized.length, 1);
|
|
11
|
+
const sourceWidth = Math.max(input.sourceSerialized[0]?.length ?? 0, 1);
|
|
12
|
+
const output = [];
|
|
13
|
+
for (let rowOffset = 0; rowOffset < targetHeight; rowOffset += 1) {
|
|
14
|
+
const row = [];
|
|
15
|
+
for (let colOffset = 0; colOffset < targetWidth; colOffset += 1) {
|
|
16
|
+
const targetRow = input.target.start.row + rowOffset;
|
|
17
|
+
const targetCol = input.target.start.col + colOffset;
|
|
18
|
+
const sourceRow = (((targetRow - (input.offsetsFromTarget ? input.target.start.row : input.source.start.row)) % sourceHeight) + sourceHeight) %
|
|
19
|
+
sourceHeight;
|
|
20
|
+
const sourceCol = (((targetCol - (input.offsetsFromTarget ? input.target.start.col : input.source.start.col)) % sourceWidth) + sourceWidth) %
|
|
21
|
+
sourceWidth;
|
|
22
|
+
const raw = input.sourceSerialized[sourceRow]?.[sourceCol] ?? null;
|
|
23
|
+
if (typeof raw === 'string' && raw.startsWith('=')) {
|
|
24
|
+
row.push(`=${translateFormulaReferences(raw.slice(1), targetRow - (input.source.start.row + sourceRow), targetCol - (input.source.start.col + sourceCol))}`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
row.push(raw);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
output.push(row);
|
|
31
|
+
}
|
|
32
|
+
return output;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=work-paper-fill-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-fill-helpers.js","sourceRoot":"","sources":["../src/work-paper-fill-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CellValue } from '@bilig/protocol';
|
|
2
|
+
import { type WorkPaperScratchWorkbook } from './work-paper-scratch-evaluator.js';
|
|
3
|
+
import type { SerializedWorkPaperNamedExpression, WorkPaperConfig, WorkPaperSheets } from './work-paper-types.js';
|
|
4
|
+
export interface WorkPaperFormulaAnalysisHooks {
|
|
5
|
+
readonly messageOf: (error: unknown, fallback: string) => string;
|
|
6
|
+
}
|
|
7
|
+
export declare function normalizeWorkPaperFormula(formula: string, hooks: WorkPaperFormulaAnalysisHooks): string;
|
|
8
|
+
export declare function calculateWorkPaperFormula(args: {
|
|
9
|
+
readonly createWorkbook: (config: WorkPaperConfig) => WorkPaperScratchWorkbook;
|
|
10
|
+
readonly config: WorkPaperConfig;
|
|
11
|
+
readonly serializedSheets: WorkPaperSheets;
|
|
12
|
+
readonly namedExpressions: readonly SerializedWorkPaperNamedExpression[];
|
|
13
|
+
readonly formula: string;
|
|
14
|
+
readonly scope?: number;
|
|
15
|
+
readonly messageOf: (error: unknown, fallback: string) => string;
|
|
16
|
+
}): CellValue | CellValue[][];
|
|
17
|
+
export declare function getWorkPaperNamedExpressionsFromFormula(formula: string, hooks: WorkPaperFormulaAnalysisHooks): string[];
|
|
18
|
+
export declare function validateWorkPaperFormula(formula: string): boolean;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { parseFormula, serializeFormula } from '@bilig/formula';
|
|
2
|
+
import { WorkPaperNotAFormulaError, WorkPaperParseError } from './work-paper-errors.js';
|
|
3
|
+
import { collectFormulaNameRefs, stripLeadingEquals } from './work-paper-runtime-helpers.js';
|
|
4
|
+
import { compareSheetNames } from './work-paper-sheet-inspection.js';
|
|
5
|
+
import { calculateWorkPaperFormulaInScratchWorkbook } from './work-paper-scratch-evaluator.js';
|
|
6
|
+
export function normalizeWorkPaperFormula(formula, hooks) {
|
|
7
|
+
if (!formula.trim().startsWith('=')) {
|
|
8
|
+
throw new WorkPaperNotAFormulaError();
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
return `=${serializeFormula(parseFormula(stripLeadingEquals(formula)))}`;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
throw new WorkPaperParseError(hooks.messageOf(error, 'Unable to normalize formula'));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function calculateWorkPaperFormula(args) {
|
|
18
|
+
if (!args.formula.trim().startsWith('=')) {
|
|
19
|
+
throw new WorkPaperNotAFormulaError();
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
return calculateWorkPaperFormulaInScratchWorkbook(args);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
throw new WorkPaperParseError(args.messageOf(error, 'Unable to calculate formula'));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function getWorkPaperNamedExpressionsFromFormula(formula, hooks) {
|
|
29
|
+
if (!formula.trim().startsWith('=')) {
|
|
30
|
+
throw new WorkPaperNotAFormulaError();
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const parsed = parseFormula(stripLeadingEquals(formula));
|
|
34
|
+
const names = new Set();
|
|
35
|
+
collectFormulaNameRefs(parsed, names);
|
|
36
|
+
return [...names].toSorted(compareSheetNames);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
throw new WorkPaperParseError(hooks.messageOf(error, 'Unable to inspect formula'));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function validateWorkPaperFormula(formula) {
|
|
43
|
+
if (!formula.trim().startsWith('=')) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
parseFormula(stripLeadingEquals(formula));
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=work-paper-formula-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-formula-analysis.js","sourceRoot":"","sources":["../src/work-paper-formula-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,0CAA0C,EAAiC,MAAM,mCAAmC,CAAA;AAO7H,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,KAAoC;IAC7F,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,yBAAyB,EAAE,CAAA;IACvC,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAA;IACtF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAQzC;IACC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,yBAAyB,EAAE,CAAA;IACvC,CAAC;IACD,IAAI,CAAC;QACH,OAAO,0CAA0C,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,OAAe,EAAE,KAAoC;IAC3G,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,yBAAyB,EAAE,CAAA;IACvC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;QACxD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;QAC/B,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACrC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAA;IACpF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC;QACH,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface WorkPaperFormulaNamedExpressionBinding {
|
|
2
|
+
readonly publicName: string;
|
|
3
|
+
readonly internalName: string;
|
|
4
|
+
readonly scope?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface WorkPaperFormulaFunctionBinding {
|
|
7
|
+
readonly publicName: string;
|
|
8
|
+
readonly internalName: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function rewriteWorkPaperFormulaForStorage(input: {
|
|
11
|
+
readonly formula: string;
|
|
12
|
+
readonly ownerSheetId: number;
|
|
13
|
+
readonly namedExpressions: ReadonlyMap<string, WorkPaperFormulaNamedExpressionBinding>;
|
|
14
|
+
readonly functionAliasLookup: ReadonlyMap<string, WorkPaperFormulaFunctionBinding>;
|
|
15
|
+
readonly messageOf: (error: unknown, fallback: string) => string;
|
|
16
|
+
}): string;
|
|
17
|
+
export declare function restorePublicWorkPaperFormula(input: {
|
|
18
|
+
readonly formula: string;
|
|
19
|
+
readonly ownerSheetId: number;
|
|
20
|
+
readonly namedExpressions: ReadonlyMap<string, WorkPaperFormulaNamedExpressionBinding>;
|
|
21
|
+
readonly internalFunctionLookup: ReadonlyMap<string, WorkPaperFormulaFunctionBinding>;
|
|
22
|
+
}): string;
|