@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,59 @@
|
|
|
1
|
+
import type { SheetRecord } from '@bilig/core';
|
|
2
|
+
import type { WorkPaperNamedExpressionValueSnapshot } from './work-paper-named-expression-helpers.js';
|
|
3
|
+
import type { VisibilitySnapshot } from './work-paper-visibility-snapshot.js';
|
|
4
|
+
import type { WorkPaperChange, WorkPaperDetailedEventMap, WorkPaperSheet, WorkPaperSheetDimensions } from './work-paper-types.js';
|
|
5
|
+
type SheetOperationEvent = {
|
|
6
|
+
readonly eventName: 'sheetRemoved';
|
|
7
|
+
readonly payload: WorkPaperDetailedEventMap['sheetRemoved'];
|
|
8
|
+
} | {
|
|
9
|
+
readonly eventName: 'sheetRenamed';
|
|
10
|
+
readonly payload: WorkPaperDetailedEventMap['sheetRenamed'];
|
|
11
|
+
};
|
|
12
|
+
export interface WorkPaperSheetOperationsRuntime {
|
|
13
|
+
readonly assertNotDisposed: () => void;
|
|
14
|
+
readonly materializePendingLazyChanges: () => void;
|
|
15
|
+
readonly nextSheetName: () => string;
|
|
16
|
+
readonly isItPossibleToAddSheet: (name: string) => boolean;
|
|
17
|
+
readonly ensureVisibilityCache: () => VisibilitySnapshot;
|
|
18
|
+
readonly ensureNamedExpressionValueCache: () => WorkPaperNamedExpressionValueSnapshot;
|
|
19
|
+
readonly drainEngineEvents: () => void;
|
|
20
|
+
readonly createSheet: (name: string) => void;
|
|
21
|
+
readonly clearSheetRecordsCache: () => void;
|
|
22
|
+
readonly requireSheetId: (name: string) => number;
|
|
23
|
+
readonly cacheSheetDimensions: (sheetId: number, dimensions: WorkPaperSheetDimensions) => void;
|
|
24
|
+
readonly shouldSuppressEvents: () => boolean;
|
|
25
|
+
readonly queueSheetAddedEvent: (payload: WorkPaperDetailedEventMap['sheetAdded']) => void;
|
|
26
|
+
readonly emitSheetAdded: (payload: WorkPaperDetailedEventMap['sheetAdded']) => void;
|
|
27
|
+
readonly computeChangesAfterMutation: (beforeVisibility: VisibilitySnapshot, beforeNames: WorkPaperNamedExpressionValueSnapshot) => WorkPaperChange[];
|
|
28
|
+
readonly hasValuesUpdatedListeners: () => boolean;
|
|
29
|
+
readonly emitValuesUpdated: (changes: WorkPaperChange[]) => void;
|
|
30
|
+
readonly isItPossibleToRemoveSheet: (sheetId: number) => boolean;
|
|
31
|
+
readonly sheetName: (sheetId: number) => string;
|
|
32
|
+
readonly captureChanges: (event: SheetOperationEvent | undefined, mutate: () => void) => WorkPaperChange[];
|
|
33
|
+
readonly deleteSheet: (name: string) => void;
|
|
34
|
+
readonly invalidateSheetDimensions: (sheetId: number) => void;
|
|
35
|
+
readonly isItPossibleToClearSheet: (sheetId: number) => boolean;
|
|
36
|
+
readonly getSheetDimensions: (sheetId: number) => WorkPaperSheetDimensions;
|
|
37
|
+
readonly clearRange: (range: {
|
|
38
|
+
readonly sheetName: string;
|
|
39
|
+
readonly startAddress: string;
|
|
40
|
+
readonly endAddress: string;
|
|
41
|
+
}) => void;
|
|
42
|
+
readonly isItPossibleToReplaceSheetContent: (sheetId: number, content: WorkPaperSheet) => boolean;
|
|
43
|
+
readonly replaceSheetContentInternal: (sheetId: number, content: WorkPaperSheet, options: {
|
|
44
|
+
readonly duringInitialization: boolean;
|
|
45
|
+
}) => void;
|
|
46
|
+
readonly sheetRecord: (sheetId: number) => SheetRecord;
|
|
47
|
+
readonly getSheetByName: (name: string) => SheetRecord | undefined;
|
|
48
|
+
readonly tryRenameSheetWithoutVisibilitySnapshots: (oldName: string, newName: string) => WorkPaperChange[] | null;
|
|
49
|
+
readonly renameSheet: (oldName: string, newName: string) => void;
|
|
50
|
+
}
|
|
51
|
+
export interface WorkPaperSheetOperations {
|
|
52
|
+
readonly addSheet: (sheetName?: string) => string;
|
|
53
|
+
readonly removeSheet: (sheetId: number) => WorkPaperChange[];
|
|
54
|
+
readonly clearSheet: (sheetId: number) => WorkPaperChange[];
|
|
55
|
+
readonly setSheetContent: (sheetId: number, content: WorkPaperSheet) => WorkPaperChange[];
|
|
56
|
+
readonly renameSheet: (sheetId: number, nextName: string) => WorkPaperChange[];
|
|
57
|
+
}
|
|
58
|
+
export declare function createWorkPaperSheetOperations(runtime: WorkPaperSheetOperationsRuntime): WorkPaperSheetOperations;
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { formatAddress } from '@bilig/formula';
|
|
2
|
+
import { WorkPaperInvalidArgumentsError, WorkPaperSheetError, WorkPaperSheetNameAlreadyTakenError } from './work-paper-errors.js';
|
|
3
|
+
export function createWorkPaperSheetOperations(runtime) {
|
|
4
|
+
return {
|
|
5
|
+
addSheet(sheetName) {
|
|
6
|
+
runtime.assertNotDisposed();
|
|
7
|
+
runtime.materializePendingLazyChanges();
|
|
8
|
+
const name = sheetName?.trim() || runtime.nextSheetName();
|
|
9
|
+
if (!runtime.isItPossibleToAddSheet(name)) {
|
|
10
|
+
throw new WorkPaperSheetNameAlreadyTakenError(name);
|
|
11
|
+
}
|
|
12
|
+
const beforeVisibility = runtime.ensureVisibilityCache();
|
|
13
|
+
const beforeNames = runtime.ensureNamedExpressionValueCache();
|
|
14
|
+
runtime.drainEngineEvents();
|
|
15
|
+
runtime.createSheet(name);
|
|
16
|
+
runtime.clearSheetRecordsCache();
|
|
17
|
+
const sheetId = runtime.requireSheetId(name);
|
|
18
|
+
runtime.cacheSheetDimensions(sheetId, { width: 0, height: 0 });
|
|
19
|
+
const payload = { sheetId, sheetName: name };
|
|
20
|
+
if (runtime.shouldSuppressEvents()) {
|
|
21
|
+
runtime.queueSheetAddedEvent(payload);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
runtime.emitSheetAdded(payload);
|
|
25
|
+
}
|
|
26
|
+
const changes = runtime.computeChangesAfterMutation(beforeVisibility, beforeNames);
|
|
27
|
+
if (!runtime.shouldSuppressEvents() && changes.length > 0 && runtime.hasValuesUpdatedListeners()) {
|
|
28
|
+
runtime.emitValuesUpdated(changes);
|
|
29
|
+
}
|
|
30
|
+
return name;
|
|
31
|
+
},
|
|
32
|
+
removeSheet(sheetId) {
|
|
33
|
+
if (!runtime.isItPossibleToRemoveSheet(sheetId)) {
|
|
34
|
+
throw new WorkPaperSheetError(`Sheet '${sheetId}' cannot be removed`);
|
|
35
|
+
}
|
|
36
|
+
const sheetName = runtime.sheetName(sheetId);
|
|
37
|
+
return runtime.captureChanges({
|
|
38
|
+
eventName: 'sheetRemoved',
|
|
39
|
+
payload: {
|
|
40
|
+
sheetId,
|
|
41
|
+
sheetName,
|
|
42
|
+
changes: [],
|
|
43
|
+
},
|
|
44
|
+
}, () => {
|
|
45
|
+
runtime.deleteSheet(sheetName);
|
|
46
|
+
runtime.clearSheetRecordsCache();
|
|
47
|
+
runtime.invalidateSheetDimensions(sheetId);
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
clearSheet(sheetId) {
|
|
51
|
+
if (!runtime.isItPossibleToClearSheet(sheetId)) {
|
|
52
|
+
throw new WorkPaperSheetError(`Sheet '${sheetId}' cannot be cleared`);
|
|
53
|
+
}
|
|
54
|
+
return runtime.captureChanges(undefined, () => {
|
|
55
|
+
const dimensions = runtime.getSheetDimensions(sheetId);
|
|
56
|
+
if (dimensions.width === 0 || dimensions.height === 0) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
runtime.clearRange({
|
|
60
|
+
sheetName: runtime.sheetName(sheetId),
|
|
61
|
+
startAddress: 'A1',
|
|
62
|
+
endAddress: formatAddress(dimensions.height - 1, dimensions.width - 1),
|
|
63
|
+
});
|
|
64
|
+
runtime.cacheSheetDimensions(sheetId, { width: 0, height: 0 });
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
setSheetContent(sheetId, content) {
|
|
68
|
+
if (!runtime.isItPossibleToReplaceSheetContent(sheetId, content)) {
|
|
69
|
+
throw new WorkPaperSheetError(`Sheet '${sheetId}' cannot be replaced`);
|
|
70
|
+
}
|
|
71
|
+
return runtime.captureChanges(undefined, () => {
|
|
72
|
+
runtime.replaceSheetContentInternal(sheetId, content, { duringInitialization: false });
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
renameSheet(sheetId, nextName) {
|
|
76
|
+
const sheet = runtime.sheetRecord(sheetId);
|
|
77
|
+
const newName = nextName.trim();
|
|
78
|
+
if (newName.length === 0) {
|
|
79
|
+
throw new WorkPaperInvalidArgumentsError('Sheet name must be non-empty');
|
|
80
|
+
}
|
|
81
|
+
const existing = runtime.getSheetByName(newName);
|
|
82
|
+
if (existing && existing.id !== sheetId) {
|
|
83
|
+
throw new WorkPaperSheetError(`Sheet '${sheetId}' cannot be renamed to '${nextName}'`);
|
|
84
|
+
}
|
|
85
|
+
const oldName = sheet.name;
|
|
86
|
+
const fastPathChanges = runtime.tryRenameSheetWithoutVisibilitySnapshots(oldName, newName);
|
|
87
|
+
if (fastPathChanges) {
|
|
88
|
+
return fastPathChanges;
|
|
89
|
+
}
|
|
90
|
+
return runtime.captureChanges({
|
|
91
|
+
eventName: 'sheetRenamed',
|
|
92
|
+
payload: {
|
|
93
|
+
sheetId,
|
|
94
|
+
oldName,
|
|
95
|
+
newName,
|
|
96
|
+
},
|
|
97
|
+
}, () => {
|
|
98
|
+
runtime.renameSheet(oldName, newName);
|
|
99
|
+
runtime.clearSheetRecordsCache();
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=work-paper-sheet-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-sheet-operations.js","sourceRoot":"","sources":["../src/work-paper-sheet-operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAA;AA8DjI,MAAM,UAAU,8BAA8B,CAAC,OAAwC;IACrF,OAAO;QACL,QAAQ,CAAC,SAAS;YAChB,OAAO,CAAC,iBAAiB,EAAE,CAAA;YAC3B,OAAO,CAAC,6BAA6B,EAAE,CAAA;YACvC,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAA;YACzD,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,mCAAmC,CAAC,IAAI,CAAC,CAAA;YACrD,CAAC;YACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;YACxD,MAAM,WAAW,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAA;YAC7D,OAAO,CAAC,iBAAiB,EAAE,CAAA;YAC3B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACzB,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YAC5C,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YAC9D,MAAM,OAAO,GAA4C,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;YACrF,IAAI,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBACnC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YACjC,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAClF,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;gBACjG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YACpC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,WAAW,CAAC,OAAO;YACjB,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,mBAAmB,CAAC,UAAU,OAAO,qBAAqB,CAAC,CAAA;YACvE,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YAC5C,OAAO,OAAO,CAAC,cAAc,CAC3B;gBACE,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE;oBACP,OAAO;oBACP,SAAS;oBACT,OAAO,EAAE,EAAE;iBACZ;aACF,EACD,GAAG,EAAE;gBACH,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC9B,OAAO,CAAC,sBAAsB,EAAE,CAAA;gBAChC,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAA;YAC5C,CAAC,CACF,CAAA;QACH,CAAC;QAED,UAAU,CAAC,OAAO;YAChB,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,mBAAmB,CAAC,UAAU,OAAO,qBAAqB,CAAC,CAAA;YACvE,CAAC;YACD,OAAO,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBACtD,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtD,OAAM;gBACR,CAAC;gBACD,OAAO,CAAC,UAAU,CAAC;oBACjB,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;oBACrC,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;iBACvE,CAAC,CAAA;gBACF,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YAChE,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,eAAe,CAAC,OAAO,EAAE,OAAO;YAC9B,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACjE,MAAM,IAAI,mBAAmB,CAAC,UAAU,OAAO,sBAAsB,CAAC,CAAA;YACxE,CAAC;YACD,OAAO,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC5C,OAAO,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAA;YACxF,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,WAAW,CAAC,OAAO,EAAE,QAAQ;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,8BAA8B,CAAC,8BAA8B,CAAC,CAAA;YAC1E,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAChD,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,IAAI,mBAAmB,CAAC,UAAU,OAAO,2BAA2B,QAAQ,GAAG,CAAC,CAAA;YACxF,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAA;YAC1B,MAAM,eAAe,GAAG,OAAO,CAAC,wCAAwC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC1F,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,eAAe,CAAA;YACxB,CAAC;YACD,OAAO,OAAO,CAAC,cAAc,CAC3B;gBACE,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE;oBACP,OAAO;oBACP,OAAO;oBACP,OAAO;iBACR;aACF,EACD,GAAG,EAAE;gBACH,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACrC,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAClC,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CellValue, WorkbookSnapshot } from '@bilig/protocol';
|
|
2
|
+
import type { RawCellContent, WorkPaperCellAddress, WorkPaperCellRange, WorkPaperSheetDimensions } from './work-paper-types.js';
|
|
3
|
+
export interface WorkPaperSheetListRecord {
|
|
4
|
+
readonly id: number;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildWorkPaperDenseRange<Value>(range: WorkPaperCellRange, read: (address: WorkPaperCellAddress) => Value): Value[][];
|
|
8
|
+
export declare function workPaperRangeForSheetDimensions(sheetId: number, dimensions: WorkPaperSheetDimensions): WorkPaperCellRange | undefined;
|
|
9
|
+
export declare function readWorkPaperSheetRange<Value>(args: {
|
|
10
|
+
readonly sheetId: number;
|
|
11
|
+
readonly dimensions: WorkPaperSheetDimensions;
|
|
12
|
+
readonly readRange: (range: WorkPaperCellRange) => Value[][];
|
|
13
|
+
}): Value[][];
|
|
14
|
+
export declare function collectWorkPaperSheetsByName<Value>(sheets: readonly WorkPaperSheetListRecord[], readSheet: (sheet: WorkPaperSheetListRecord) => Value): Record<string, Value>;
|
|
15
|
+
export declare function collectSerializedWorkPaperSheets(args: {
|
|
16
|
+
readonly sheets: readonly WorkPaperSheetListRecord[];
|
|
17
|
+
readonly readSheet: (sheet: WorkPaperSheetListRecord) => RawCellContent[][];
|
|
18
|
+
readonly runtimeSnapshot: WorkbookSnapshot;
|
|
19
|
+
}): Record<string, RawCellContent[][]>;
|
|
20
|
+
export type WorkPaperSheetValues = CellValue[][];
|
|
21
|
+
export type WorkPaperSheetFormulas = Array<Array<string | undefined>>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { attachRuntimeSnapshot } from '@bilig/core';
|
|
2
|
+
import { assertRange } from './work-paper-runtime-helpers.js';
|
|
3
|
+
export function buildWorkPaperDenseRange(range, read) {
|
|
4
|
+
assertRange(range);
|
|
5
|
+
const height = range.end.row - range.start.row + 1;
|
|
6
|
+
const width = range.end.col - range.start.col + 1;
|
|
7
|
+
return Array.from({ length: height }, (_row, rowOffset) => Array.from({ length: width }, (_column, colOffset) => read({
|
|
8
|
+
sheet: range.start.sheet,
|
|
9
|
+
row: range.start.row + rowOffset,
|
|
10
|
+
col: range.start.col + colOffset,
|
|
11
|
+
})));
|
|
12
|
+
}
|
|
13
|
+
export function workPaperRangeForSheetDimensions(sheetId, dimensions) {
|
|
14
|
+
if (dimensions.width === 0 || dimensions.height === 0) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
start: { sheet: sheetId, row: 0, col: 0 },
|
|
19
|
+
end: { sheet: sheetId, row: dimensions.height - 1, col: dimensions.width - 1 },
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function readWorkPaperSheetRange(args) {
|
|
23
|
+
const range = workPaperRangeForSheetDimensions(args.sheetId, args.dimensions);
|
|
24
|
+
return range === undefined ? [] : args.readRange(range);
|
|
25
|
+
}
|
|
26
|
+
export function collectWorkPaperSheetsByName(sheets, readSheet) {
|
|
27
|
+
return Object.fromEntries(sheets.map((sheet) => [sheet.name, readSheet(sheet)]));
|
|
28
|
+
}
|
|
29
|
+
export function collectSerializedWorkPaperSheets(args) {
|
|
30
|
+
return attachRuntimeSnapshot(collectWorkPaperSheetsByName(args.sheets, args.readSheet), args.runtimeSnapshot);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=work-paper-sheet-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-sheet-read.js","sourceRoot":"","sources":["../src/work-paper-sheet-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAQ7D,MAAM,UAAU,wBAAwB,CAAQ,KAAyB,EAAE,IAA8C;IACvH,WAAW,CAAC,KAAK,CAAC,CAAA;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CACnD,IAAI,CAAC;QACH,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;QACxB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS;QAChC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS;KACjC,CAAC,CACH,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,OAAe,EAAE,UAAoC;IACpG,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO;QACL,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QACzC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE;KAC/E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAQ,IAI9C;IACC,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7E,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAA2C,EAC3C,SAAqD;IAErD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,IAIhD;IACC,OAAO,qBAAqB,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;AAC/G,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WorkPaperChange } from './work-paper-types.js';
|
|
2
|
+
export interface WorkPaperSheetRenameFastPathRuntime {
|
|
3
|
+
readonly canUseMetadataOnlySheetRenameFastPath: () => boolean;
|
|
4
|
+
readonly assertNotDisposed: () => void;
|
|
5
|
+
readonly hasPendingLazyTrackedChanges: () => boolean;
|
|
6
|
+
readonly materializePendingLazyTrackedChanges: () => void;
|
|
7
|
+
readonly isTrackedBatchFastPathActive: () => boolean;
|
|
8
|
+
readonly downgradeTrackedBatchFastPath: () => void;
|
|
9
|
+
readonly hasTrackedEngineEvents: () => boolean;
|
|
10
|
+
readonly drainTrackedEngineEvents: () => void;
|
|
11
|
+
readonly clearTrackedEngineEvents: () => void;
|
|
12
|
+
readonly clearSheetRecordsCache: () => void;
|
|
13
|
+
readonly renameSheetMetadataOnly: (oldName: string, newName: string) => boolean;
|
|
14
|
+
readonly renameSheet: (oldName: string, newName: string) => void;
|
|
15
|
+
readonly withEngineEventCaptureDisabled: (callback: () => void) => void;
|
|
16
|
+
readonly messageOf: (error: unknown, fallback: string) => string;
|
|
17
|
+
}
|
|
18
|
+
export declare function tryRenameWorkPaperSheetWithoutVisibilitySnapshots(runtime: WorkPaperSheetRenameFastPathRuntime, oldName: string, newName: string): WorkPaperChange[] | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { WORKPAPER_PUBLIC_ERROR_NAMES } from './work-paper-config.js';
|
|
2
|
+
import { WorkPaperOperationError } from './work-paper-errors.js';
|
|
3
|
+
export function tryRenameWorkPaperSheetWithoutVisibilitySnapshots(runtime, oldName, newName) {
|
|
4
|
+
if (!runtime.canUseMetadataOnlySheetRenameFastPath()) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
runtime.assertNotDisposed();
|
|
8
|
+
if (runtime.hasPendingLazyTrackedChanges()) {
|
|
9
|
+
runtime.materializePendingLazyTrackedChanges();
|
|
10
|
+
}
|
|
11
|
+
if (runtime.isTrackedBatchFastPathActive()) {
|
|
12
|
+
runtime.downgradeTrackedBatchFastPath();
|
|
13
|
+
}
|
|
14
|
+
if (!runtime.canUseMetadataOnlySheetRenameFastPath()) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (runtime.hasTrackedEngineEvents()) {
|
|
18
|
+
runtime.drainTrackedEngineEvents();
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
if (runtime.renameSheetMetadataOnly(oldName, newName)) {
|
|
22
|
+
runtime.clearSheetRecordsCache();
|
|
23
|
+
runtime.clearTrackedEngineEvents();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
runtime.withEngineEventCaptureDisabled(() => {
|
|
27
|
+
runtime.renameSheet(oldName, newName);
|
|
28
|
+
runtime.clearSheetRecordsCache();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (error instanceof Error && WORKPAPER_PUBLIC_ERROR_NAMES.has(error.name)) {
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
throw new WorkPaperOperationError(runtime.messageOf(error, 'Mutation failed'));
|
|
37
|
+
}
|
|
38
|
+
if (runtime.hasTrackedEngineEvents()) {
|
|
39
|
+
runtime.drainTrackedEngineEvents();
|
|
40
|
+
}
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=work-paper-sheet-rename-fast-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-sheet-rename-fast-path.js","sourceRoot":"","sources":["../src/work-paper-sheet-rename-fast-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAoBhE,MAAM,UAAU,iDAAiD,CAC/D,OAA4C,EAC5C,OAAe,EACf,OAAe;IAEf,IAAI,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CAAC,iBAAiB,EAAE,CAAA;IAC3B,IAAI,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;QAC3C,OAAO,CAAC,oCAAoC,EAAE,CAAA;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;QAC3C,OAAO,CAAC,6BAA6B,EAAE,CAAA;IACzC,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,wBAAwB,EAAE,CAAA;IACpC,CAAC;IACD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAChC,OAAO,CAAC,wBAAwB,EAAE,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,8BAA8B,CAAC,GAAG,EAAE;gBAC1C,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACrC,OAAO,CAAC,sBAAsB,EAAE,CAAA;YAClC,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,wBAAwB,EAAE,CAAA;IACpC,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WorkPaperConfig, WorkPaperFunctionPluginDefinition, WorkPaperFunctionTranslationsPackage, WorkPaperLanguagePackage } from './work-paper-types.js';
|
|
2
|
+
export declare const WORKPAPER_VERSION = "0.1.95";
|
|
3
|
+
export declare const WORKPAPER_BUILD_DATE = "2026-04-10";
|
|
4
|
+
export declare const WORKPAPER_RELEASE_DATE = "2026-04-10";
|
|
5
|
+
export declare const workPaperLanguages: Record<string, WorkPaperLanguagePackage>;
|
|
6
|
+
export declare const DEFAULT_WORKPAPER_CONFIG: WorkPaperConfig;
|
|
7
|
+
export declare function getWorkPaperStaticLanguage(languageCode: string): WorkPaperLanguagePackage;
|
|
8
|
+
export declare function registerWorkPaperStaticLanguage(languageCode: string, languagePackage: WorkPaperLanguagePackage): void;
|
|
9
|
+
export declare function unregisterWorkPaperStaticLanguage(languageCode: string): void;
|
|
10
|
+
export declare function getRegisteredWorkPaperStaticLanguageCodes(): string[];
|
|
11
|
+
export declare function registerWorkPaperStaticFunctionPlugin(plugin: WorkPaperFunctionPluginDefinition, translations?: WorkPaperFunctionTranslationsPackage): void;
|
|
12
|
+
export declare function unregisterWorkPaperStaticFunctionPlugin(plugin: WorkPaperFunctionPluginDefinition | string): void;
|
|
13
|
+
export declare function registerWorkPaperStaticFunction(functionId: string, plugin: WorkPaperFunctionPluginDefinition, translations?: WorkPaperFunctionTranslationsPackage): void;
|
|
14
|
+
export declare function unregisterWorkPaperStaticFunction(functionId: string): void;
|
|
15
|
+
export declare function unregisterAllWorkPaperStaticFunctions(): void;
|
|
16
|
+
export declare function getRegisteredWorkPaperStaticFunctionNames(languageCode?: string): string[];
|
|
17
|
+
export declare function getWorkPaperStaticFunctionPlugin(functionId: string): WorkPaperFunctionPluginDefinition | undefined;
|
|
18
|
+
export declare function getAllWorkPaperStaticFunctionPlugins(): WorkPaperFunctionPluginDefinition[];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { cloneConfig, DEFAULT_CONFIG } from './work-paper-config.js';
|
|
2
|
+
import { getAllRegisteredWorkPaperFunctionPlugins, getRegisteredWorkPaperFunctionNames, getRegisteredWorkPaperFunctionPlugin, getRegisteredWorkPaperLanguage, getRegisteredWorkPaperLanguageCodes, registerWorkPaperFunction, registerWorkPaperFunctionPlugin, registerWorkPaperLanguage, unregisterAllWorkPaperFunctions, unregisterWorkPaperFunction, unregisterWorkPaperFunctionPlugin, unregisterWorkPaperLanguage, } from './work-paper-static-registry.js';
|
|
3
|
+
export const WORKPAPER_VERSION = '0.1.95';
|
|
4
|
+
export const WORKPAPER_BUILD_DATE = '2026-04-10';
|
|
5
|
+
export const WORKPAPER_RELEASE_DATE = '2026-04-10';
|
|
6
|
+
export const workPaperLanguages = {};
|
|
7
|
+
export const DEFAULT_WORKPAPER_CONFIG = cloneConfig(DEFAULT_CONFIG);
|
|
8
|
+
export function getWorkPaperStaticLanguage(languageCode) {
|
|
9
|
+
return getRegisteredWorkPaperLanguage(languageCode);
|
|
10
|
+
}
|
|
11
|
+
export function registerWorkPaperStaticLanguage(languageCode, languagePackage) {
|
|
12
|
+
registerWorkPaperLanguage(workPaperLanguages, languageCode, languagePackage);
|
|
13
|
+
}
|
|
14
|
+
export function unregisterWorkPaperStaticLanguage(languageCode) {
|
|
15
|
+
unregisterWorkPaperLanguage(workPaperLanguages, languageCode);
|
|
16
|
+
}
|
|
17
|
+
export function getRegisteredWorkPaperStaticLanguageCodes() {
|
|
18
|
+
return getRegisteredWorkPaperLanguageCodes();
|
|
19
|
+
}
|
|
20
|
+
export function registerWorkPaperStaticFunctionPlugin(plugin, translations) {
|
|
21
|
+
registerWorkPaperFunctionPlugin(workPaperLanguages, plugin, translations);
|
|
22
|
+
}
|
|
23
|
+
export function unregisterWorkPaperStaticFunctionPlugin(plugin) {
|
|
24
|
+
unregisterWorkPaperFunctionPlugin(plugin);
|
|
25
|
+
}
|
|
26
|
+
export function registerWorkPaperStaticFunction(functionId, plugin, translations) {
|
|
27
|
+
registerWorkPaperFunction(workPaperLanguages, functionId, plugin, translations);
|
|
28
|
+
}
|
|
29
|
+
export function unregisterWorkPaperStaticFunction(functionId) {
|
|
30
|
+
unregisterWorkPaperFunction(functionId);
|
|
31
|
+
}
|
|
32
|
+
export function unregisterAllWorkPaperStaticFunctions() {
|
|
33
|
+
unregisterAllWorkPaperFunctions();
|
|
34
|
+
}
|
|
35
|
+
export function getRegisteredWorkPaperStaticFunctionNames(languageCode) {
|
|
36
|
+
return getRegisteredWorkPaperFunctionNames(languageCode);
|
|
37
|
+
}
|
|
38
|
+
export function getWorkPaperStaticFunctionPlugin(functionId) {
|
|
39
|
+
return getRegisteredWorkPaperFunctionPlugin(functionId);
|
|
40
|
+
}
|
|
41
|
+
export function getAllWorkPaperStaticFunctionPlugins() {
|
|
42
|
+
return getAllRegisteredWorkPaperFunctionPlugins();
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=work-paper-static-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-static-api.js","sourceRoot":"","sources":["../src/work-paper-static-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EACL,wCAAwC,EACxC,mCAAmC,EACnC,oCAAoC,EACpC,8BAA8B,EAC9B,mCAAmC,EACnC,yBAAyB,EACzB,+BAA+B,EAC/B,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,iCAAiC,CAAA;AAQxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAA;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAA;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAA;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAA6C,EAAE,CAAA;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAAoB,WAAW,CAAC,cAAc,CAAC,CAAA;AAEpF,MAAM,UAAU,0BAA0B,CAAC,YAAoB;IAC7D,OAAO,8BAA8B,CAAC,YAAY,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,YAAoB,EAAE,eAAyC;IAC7G,yBAAyB,CAAC,kBAAkB,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,YAAoB;IACpE,2BAA2B,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,yCAAyC;IACvD,OAAO,mCAAmC,EAAE,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,MAAyC,EACzC,YAAmD;IAEnD,+BAA+B,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,MAAkD;IACxG,iCAAiC,CAAC,MAAM,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,UAAkB,EAClB,MAAyC,EACzC,YAAmD;IAEnD,yBAAyB,CAAC,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,UAAkB;IAClE,2BAA2B,CAAC,UAAU,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,qCAAqC;IACnD,+BAA+B,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,YAAqB;IAC7E,OAAO,mCAAmC,CAAC,YAAY,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,UAAkB;IACjE,OAAO,oCAAoC,CAAC,UAAU,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO,wCAAwC,EAAE,CAAA;AACnD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { WorkPaperFunctionImplementation } from './work-paper-function-registry.js';
|
|
2
|
+
import type { WorkPaperFunctionPluginDefinition, WorkPaperFunctionTranslationsPackage, WorkPaperLanguagePackage } from './work-paper-types.js';
|
|
3
|
+
export declare const workPaperLanguageRegistry: Map<string, WorkPaperLanguagePackage>;
|
|
4
|
+
export declare const workPaperFunctionPluginRegistry: Map<string, WorkPaperFunctionPluginDefinition>;
|
|
5
|
+
export declare const workPaperGlobalCustomFunctions: Map<string, WorkPaperFunctionImplementation>;
|
|
6
|
+
export declare function ensureWorkPaperCustomAdapterInstalled(): void;
|
|
7
|
+
export declare function getRegisteredWorkPaperLanguage(languageCode: string): WorkPaperLanguagePackage;
|
|
8
|
+
export declare function readRegisteredWorkPaperLanguage(languageCode: string): WorkPaperLanguagePackage | undefined;
|
|
9
|
+
export declare function registerWorkPaperLanguage(languages: Record<string, WorkPaperLanguagePackage>, languageCode: string, languagePackage: WorkPaperLanguagePackage): void;
|
|
10
|
+
export declare function unregisterWorkPaperLanguage(languages: Record<string, WorkPaperLanguagePackage>, languageCode: string): void;
|
|
11
|
+
export declare function getRegisteredWorkPaperLanguageCodes(): string[];
|
|
12
|
+
export declare function registerWorkPaperFunctionPlugin(languages: Record<string, WorkPaperLanguagePackage>, plugin: WorkPaperFunctionPluginDefinition, translations?: WorkPaperFunctionTranslationsPackage): void;
|
|
13
|
+
export declare function unregisterWorkPaperFunctionPlugin(plugin: WorkPaperFunctionPluginDefinition | string): void;
|
|
14
|
+
export declare function registerWorkPaperFunction(languages: Record<string, WorkPaperLanguagePackage>, functionId: string, plugin: WorkPaperFunctionPluginDefinition, translations?: WorkPaperFunctionTranslationsPackage): void;
|
|
15
|
+
export declare function unregisterWorkPaperFunction(functionId: string): void;
|
|
16
|
+
export declare function unregisterAllWorkPaperFunctions(): void;
|
|
17
|
+
export declare function getRegisteredWorkPaperFunctionNames(languageCode?: string): string[];
|
|
18
|
+
export declare function getRegisteredWorkPaperFunctionPlugin(functionId: string): WorkPaperFunctionPluginDefinition | undefined;
|
|
19
|
+
export declare function getAllRegisteredWorkPaperFunctionPlugins(): WorkPaperFunctionPluginDefinition[];
|
|
20
|
+
export declare function getRegisteredWorkPaperFunctionPluginById(pluginId: string): WorkPaperFunctionPluginDefinition | undefined;
|
|
21
|
+
export declare function getRegisteredWorkPaperFunctionPluginsById(pluginIds: Iterable<string>): WorkPaperFunctionPluginDefinition[];
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { ErrorCode } from '@bilig/protocol';
|
|
2
|
+
import { installExternalFunctionAdapter } from '@bilig/formula';
|
|
3
|
+
import { WorkPaperFunctionPluginValidationError, WorkPaperLanguageAlreadyRegisteredError, WorkPaperLanguageNotRegisteredError, } from './work-paper-errors.js';
|
|
4
|
+
import { clonePluginDefinition } from './work-paper-config.js';
|
|
5
|
+
import { compareSheetNames } from './work-paper-sheet-inspection.js';
|
|
6
|
+
import { errorValue, scalarFromResult } from './work-paper-runtime-helpers.js';
|
|
7
|
+
export const workPaperLanguageRegistry = new Map();
|
|
8
|
+
export const workPaperFunctionPluginRegistry = new Map();
|
|
9
|
+
export const workPaperGlobalCustomFunctions = new Map();
|
|
10
|
+
let customAdapterInstalled = false;
|
|
11
|
+
export function ensureWorkPaperCustomAdapterInstalled() {
|
|
12
|
+
if (customAdapterInstalled) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
installExternalFunctionAdapter({
|
|
16
|
+
surface: 'host',
|
|
17
|
+
resolveFunction(name) {
|
|
18
|
+
const implementation = workPaperGlobalCustomFunctions.get(name.trim().toUpperCase());
|
|
19
|
+
if (!implementation) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
kind: 'scalar',
|
|
24
|
+
implementation: (...args) => {
|
|
25
|
+
const result = implementation(...args);
|
|
26
|
+
if (!result) {
|
|
27
|
+
return errorValue(ErrorCode.Value);
|
|
28
|
+
}
|
|
29
|
+
return scalarFromResult(result);
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
customAdapterInstalled = true;
|
|
35
|
+
}
|
|
36
|
+
export function getRegisteredWorkPaperLanguage(languageCode) {
|
|
37
|
+
const language = workPaperLanguageRegistry.get(languageCode);
|
|
38
|
+
if (!language) {
|
|
39
|
+
throw new WorkPaperLanguageNotRegisteredError(languageCode);
|
|
40
|
+
}
|
|
41
|
+
return structuredClone(language);
|
|
42
|
+
}
|
|
43
|
+
export function readRegisteredWorkPaperLanguage(languageCode) {
|
|
44
|
+
return workPaperLanguageRegistry.get(languageCode);
|
|
45
|
+
}
|
|
46
|
+
export function registerWorkPaperLanguage(languages, languageCode, languagePackage) {
|
|
47
|
+
if (workPaperLanguageRegistry.has(languageCode)) {
|
|
48
|
+
throw new WorkPaperLanguageAlreadyRegisteredError(languageCode);
|
|
49
|
+
}
|
|
50
|
+
workPaperLanguageRegistry.set(languageCode, structuredClone(languagePackage));
|
|
51
|
+
languages[languageCode] = structuredClone(languagePackage);
|
|
52
|
+
}
|
|
53
|
+
export function unregisterWorkPaperLanguage(languages, languageCode) {
|
|
54
|
+
if (!workPaperLanguageRegistry.delete(languageCode)) {
|
|
55
|
+
throw new WorkPaperLanguageNotRegisteredError(languageCode);
|
|
56
|
+
}
|
|
57
|
+
delete languages[languageCode];
|
|
58
|
+
}
|
|
59
|
+
export function getRegisteredWorkPaperLanguageCodes() {
|
|
60
|
+
return [...workPaperLanguageRegistry.keys()].toSorted(compareSheetNames);
|
|
61
|
+
}
|
|
62
|
+
export function registerWorkPaperFunctionPlugin(languages, plugin, translations) {
|
|
63
|
+
workPaperFunctionPluginRegistry.set(plugin.id, clonePluginDefinition(plugin));
|
|
64
|
+
if (translations) {
|
|
65
|
+
loadWorkPaperFunctionTranslations(languages, translations);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function unregisterWorkPaperFunctionPlugin(plugin) {
|
|
69
|
+
const pluginId = typeof plugin === 'string' ? plugin : plugin.id;
|
|
70
|
+
workPaperFunctionPluginRegistry.delete(pluginId);
|
|
71
|
+
}
|
|
72
|
+
export function registerWorkPaperFunction(languages, functionId, plugin, translations) {
|
|
73
|
+
const existing = workPaperFunctionPluginRegistry.get(plugin.id);
|
|
74
|
+
const nextPlugin = clonePluginDefinition(existing ?? plugin);
|
|
75
|
+
if (!nextPlugin.implementedFunctions[functionId]) {
|
|
76
|
+
throw WorkPaperFunctionPluginValidationError.functionNotDeclaredInPlugin(functionId, plugin.id);
|
|
77
|
+
}
|
|
78
|
+
workPaperFunctionPluginRegistry.set(nextPlugin.id, nextPlugin);
|
|
79
|
+
if (translations) {
|
|
80
|
+
loadWorkPaperFunctionTranslations(languages, translations);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function unregisterWorkPaperFunction(functionId) {
|
|
84
|
+
const normalized = functionId.trim().toUpperCase();
|
|
85
|
+
workPaperFunctionPluginRegistry.forEach((plugin, pluginId) => {
|
|
86
|
+
if (!plugin.implementedFunctions[normalized]) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const nextPlugin = clonePluginDefinition(plugin);
|
|
90
|
+
delete nextPlugin.implementedFunctions[normalized];
|
|
91
|
+
if (nextPlugin.functions) {
|
|
92
|
+
delete nextPlugin.functions[normalized];
|
|
93
|
+
}
|
|
94
|
+
if (nextPlugin.aliases) {
|
|
95
|
+
Object.entries(nextPlugin.aliases).forEach(([alias, target]) => {
|
|
96
|
+
if (target.trim().toUpperCase() === normalized || alias.trim().toUpperCase() === normalized) {
|
|
97
|
+
delete nextPlugin.aliases[alias];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
workPaperFunctionPluginRegistry.set(pluginId, nextPlugin);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
export function unregisterAllWorkPaperFunctions() {
|
|
105
|
+
workPaperFunctionPluginRegistry.clear();
|
|
106
|
+
}
|
|
107
|
+
export function getRegisteredWorkPaperFunctionNames(languageCode) {
|
|
108
|
+
const normalized = languageCode ?? 'enGB';
|
|
109
|
+
const language = workPaperLanguageRegistry.get(normalized);
|
|
110
|
+
const functions = [...workPaperFunctionPluginRegistry.values()].flatMap((plugin) => Object.keys(plugin.implementedFunctions));
|
|
111
|
+
if (!language?.functions) {
|
|
112
|
+
return functions.toSorted(compareSheetNames);
|
|
113
|
+
}
|
|
114
|
+
return functions.map((name) => language.functions?.[name] ?? name).toSorted(compareSheetNames);
|
|
115
|
+
}
|
|
116
|
+
export function getRegisteredWorkPaperFunctionPlugin(functionId) {
|
|
117
|
+
const normalized = functionId.trim().toUpperCase();
|
|
118
|
+
const plugin = [...workPaperFunctionPluginRegistry.values()].find((candidate) => candidate.implementedFunctions[normalized] !== undefined || candidate.aliases?.[normalized] !== undefined);
|
|
119
|
+
return plugin ? clonePluginDefinition(plugin) : undefined;
|
|
120
|
+
}
|
|
121
|
+
export function getAllRegisteredWorkPaperFunctionPlugins() {
|
|
122
|
+
return [...workPaperFunctionPluginRegistry.values()].map((plugin) => clonePluginDefinition(plugin));
|
|
123
|
+
}
|
|
124
|
+
export function getRegisteredWorkPaperFunctionPluginById(pluginId) {
|
|
125
|
+
const plugin = workPaperFunctionPluginRegistry.get(pluginId);
|
|
126
|
+
return plugin ? clonePluginDefinition(plugin) : undefined;
|
|
127
|
+
}
|
|
128
|
+
export function getRegisteredWorkPaperFunctionPluginsById(pluginIds) {
|
|
129
|
+
return [...pluginIds]
|
|
130
|
+
.map((pluginId) => getRegisteredWorkPaperFunctionPluginById(pluginId))
|
|
131
|
+
.filter((plugin) => plugin !== undefined);
|
|
132
|
+
}
|
|
133
|
+
function loadWorkPaperFunctionTranslations(languages, translations) {
|
|
134
|
+
Object.entries(translations).forEach(([languageCode, functionTranslations]) => {
|
|
135
|
+
const existing = workPaperLanguageRegistry.get(languageCode);
|
|
136
|
+
if (!existing) {
|
|
137
|
+
throw new WorkPaperLanguageNotRegisteredError(languageCode);
|
|
138
|
+
}
|
|
139
|
+
const nextLanguage = {
|
|
140
|
+
...structuredClone(existing),
|
|
141
|
+
functions: {
|
|
142
|
+
...existing.functions,
|
|
143
|
+
...functionTranslations,
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
workPaperLanguageRegistry.set(languageCode, nextLanguage);
|
|
147
|
+
languages[languageCode] = structuredClone(nextLanguage);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=work-paper-static-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-static-registry.js","sourceRoot":"","sources":["../src/work-paper-static-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TrackedEngineEvent } from './tracked-engine-event-refs.js';
|
|
2
|
+
import type { WorkPaperCellChange, WorkPaperChange } from './work-paper-types.js';
|
|
3
|
+
import type { VisibilitySnapshot } from './work-paper-visibility-snapshot.js';
|
|
4
|
+
export interface MaterializedTrackedEventChanges {
|
|
5
|
+
readonly changes: WorkPaperCellChange[];
|
|
6
|
+
readonly canReusePublicChanges: boolean;
|
|
7
|
+
readonly ordered: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface MaterializedTrackedEventSources {
|
|
10
|
+
readonly changes: WorkPaperCellChange[];
|
|
11
|
+
readonly ordered: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkPaperTrackedChangeSheetRecord {
|
|
14
|
+
readonly id: number;
|
|
15
|
+
readonly order: number;
|
|
16
|
+
}
|
|
17
|
+
interface WorkPaperTrackedChangeReducerHooks {
|
|
18
|
+
readonly listSheets: () => readonly WorkPaperTrackedChangeSheetRecord[];
|
|
19
|
+
readonly materializeTrackedEventChanges: (event: TrackedEngineEvent, lazy?: boolean) => MaterializedTrackedEventChanges;
|
|
20
|
+
readonly materializeTrackedEventSources?: (events: readonly TrackedEngineEvent[], options: {
|
|
21
|
+
readonly preferLazyPublicChanges?: boolean;
|
|
22
|
+
}) => MaterializedTrackedEventSources | null;
|
|
23
|
+
readonly readSingleTrackedCellChange: (cellIndex: number) => WorkPaperCellChange | undefined;
|
|
24
|
+
readonly readTinySortedPhysicalTrackedEventChanges: (event: TrackedEngineEvent) => WorkPaperCellChange[] | null;
|
|
25
|
+
readonly sheetOrder: (sheetId: number) => number;
|
|
26
|
+
}
|
|
27
|
+
export interface TryReadTinyTrackedEventChangesWithoutVisibilityInput extends WorkPaperTrackedChangeReducerHooks {
|
|
28
|
+
readonly event: TrackedEngineEvent;
|
|
29
|
+
}
|
|
30
|
+
export interface ComputeWorkPaperTrackedCellChangesInput extends WorkPaperTrackedChangeReducerHooks {
|
|
31
|
+
readonly beforeVisibility: VisibilitySnapshot;
|
|
32
|
+
readonly events: readonly TrackedEngineEvent[];
|
|
33
|
+
readonly preferLazyPublicChanges?: boolean;
|
|
34
|
+
readonly updateVisibility?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function tryReadTinyTrackedEventChangesWithoutVisibility(input: TryReadTinyTrackedEventChangesWithoutVisibilityInput): WorkPaperChange[] | null;
|
|
37
|
+
export declare function computeWorkPaperTrackedCellChangesFromEvents(input: ComputeWorkPaperTrackedCellChangesInput): {
|
|
38
|
+
changes: WorkPaperChange[];
|
|
39
|
+
nextVisibility: VisibilitySnapshot;
|
|
40
|
+
} | null;
|
|
41
|
+
export {};
|