@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,116 @@
|
|
|
1
|
+
import { formatAddress, formatRangeAddress, indexToColumn, parseCellAddress, parseRangeAddress } from '@bilig/formula';
|
|
2
|
+
const RUNTIME_COLUMN_LABEL_CACHE = [];
|
|
3
|
+
const RUNTIME_A1_CACHE_COLUMN_LIMIT = 64;
|
|
4
|
+
const RUNTIME_A1_CACHE_ROW_LIMIT = 8192;
|
|
5
|
+
const RUNTIME_A1_CACHE = [];
|
|
6
|
+
export function quoteSheetNameIfNeeded(sheetName) {
|
|
7
|
+
return /^[A-Za-z0-9_.$]+$/.test(sheetName) ? sheetName : `'${sheetName.replaceAll("'", "''")}'`;
|
|
8
|
+
}
|
|
9
|
+
export function formatQualifiedCellAddress(sheetName, row, col) {
|
|
10
|
+
const base = formatAddress(row, col);
|
|
11
|
+
return sheetName ? `${quoteSheetNameIfNeeded(sheetName)}!${base}` : base;
|
|
12
|
+
}
|
|
13
|
+
export function formatTrackedA1(row, col) {
|
|
14
|
+
if (row >= 0 && row < RUNTIME_A1_CACHE_ROW_LIMIT && col >= 0 && col < RUNTIME_A1_CACHE_COLUMN_LIMIT) {
|
|
15
|
+
const cacheKey = row * RUNTIME_A1_CACHE_COLUMN_LIMIT + col;
|
|
16
|
+
let cached = RUNTIME_A1_CACHE[cacheKey];
|
|
17
|
+
if (cached === undefined) {
|
|
18
|
+
let column = RUNTIME_COLUMN_LABEL_CACHE[col];
|
|
19
|
+
if (column === undefined) {
|
|
20
|
+
column = indexToColumn(col);
|
|
21
|
+
RUNTIME_COLUMN_LABEL_CACHE[col] = column;
|
|
22
|
+
}
|
|
23
|
+
cached = `${column}${row + 1}`;
|
|
24
|
+
RUNTIME_A1_CACHE[cacheKey] = cached;
|
|
25
|
+
}
|
|
26
|
+
return cached;
|
|
27
|
+
}
|
|
28
|
+
let column = RUNTIME_COLUMN_LABEL_CACHE[col];
|
|
29
|
+
if (column === undefined) {
|
|
30
|
+
column = indexToColumn(col);
|
|
31
|
+
RUNTIME_COLUMN_LABEL_CACHE[col] = column;
|
|
32
|
+
}
|
|
33
|
+
return `${column}${row + 1}`;
|
|
34
|
+
}
|
|
35
|
+
export function sourceRangeRef(sheetName, range) {
|
|
36
|
+
return {
|
|
37
|
+
sheetName,
|
|
38
|
+
startAddress: formatAddress(range.start.row, range.start.col),
|
|
39
|
+
endAddress: formatAddress(range.end.row, range.end.col),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function resolveDefaultWorkPaperSheetName(args) {
|
|
43
|
+
return args.defaultSheetId !== undefined
|
|
44
|
+
? args.sheetName(args.defaultSheetId)
|
|
45
|
+
: args.sheets.length === 1
|
|
46
|
+
? args.sheets[0].name
|
|
47
|
+
: undefined;
|
|
48
|
+
}
|
|
49
|
+
export function parseWorkPaperCellAddressText(args) {
|
|
50
|
+
try {
|
|
51
|
+
const parsed = parseCellAddress(args.value, args.defaultSheetName);
|
|
52
|
+
const sheetName = parsed.sheetName ?? args.defaultSheetName;
|
|
53
|
+
if (!sheetName) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
sheet: args.requireSheetId(sheetName),
|
|
58
|
+
row: parsed.row,
|
|
59
|
+
col: parsed.col,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export function parseWorkPaperCellRangeText(args) {
|
|
67
|
+
try {
|
|
68
|
+
const parsed = parseRangeAddress(args.value, args.defaultSheetName);
|
|
69
|
+
if (parsed.kind !== 'cells') {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const sheetName = parsed.sheetName ?? args.defaultSheetName;
|
|
73
|
+
if (!sheetName) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const sheetId = args.requireSheetId(sheetName);
|
|
77
|
+
return {
|
|
78
|
+
start: { sheet: sheetId, row: parsed.start.row, col: parsed.start.col },
|
|
79
|
+
end: { sheet: sheetId, row: parsed.end.row, col: parsed.end.col },
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function formatWorkPaperCellAddressText(args) {
|
|
87
|
+
const optionsOrContextSheetId = args.optionsOrContextSheetId ?? {};
|
|
88
|
+
const includeSheetName = typeof optionsOrContextSheetId === 'number'
|
|
89
|
+
? optionsOrContextSheetId !== args.address.sheet
|
|
90
|
+
: optionsOrContextSheetId.includeSheetName === true;
|
|
91
|
+
return formatQualifiedCellAddress(includeSheetName ? args.sheetName(args.address.sheet) : undefined, args.address.row, args.address.col);
|
|
92
|
+
}
|
|
93
|
+
export function formatWorkPaperCellRangeText(args) {
|
|
94
|
+
const optionsOrContextSheetId = args.optionsOrContextSheetId ?? {};
|
|
95
|
+
const includeSheetName = typeof optionsOrContextSheetId === 'number'
|
|
96
|
+
? optionsOrContextSheetId !== args.range.start.sheet
|
|
97
|
+
: optionsOrContextSheetId.includeSheetName === true;
|
|
98
|
+
const rangeAddress = {
|
|
99
|
+
kind: 'cells',
|
|
100
|
+
start: {
|
|
101
|
+
row: args.range.start.row,
|
|
102
|
+
col: args.range.start.col,
|
|
103
|
+
text: formatAddress(args.range.start.row, args.range.start.col),
|
|
104
|
+
},
|
|
105
|
+
end: {
|
|
106
|
+
row: args.range.end.row,
|
|
107
|
+
col: args.range.end.col,
|
|
108
|
+
text: formatAddress(args.range.end.row, args.range.end.col),
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
if (includeSheetName) {
|
|
112
|
+
rangeAddress.sheetName = args.sheetName(args.range.start.sheet);
|
|
113
|
+
}
|
|
114
|
+
return formatRangeAddress(rangeAddress);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=work-paper-address-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-address-format.js","sourceRoot":"","sources":["../src/work-paper-address-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { WorkPaperAxisInterval, WorkPaperAxisSwapMapping, WorkPaperChange } from './work-paper-types.js';
|
|
2
|
+
export type WorkPaperAxisKind = 'row' | 'column';
|
|
3
|
+
export type WorkPaperAxisIntervalEditMode = 'add' | 'remove';
|
|
4
|
+
export type WorkPaperAxisMoveCallback = (start: number, count: number, target: number) => void;
|
|
5
|
+
export interface WorkPaperAxisEditRuntime {
|
|
6
|
+
canSwapAxisIndexes(axis: WorkPaperAxisKind, sheetId: number, mappings: readonly WorkPaperAxisSwapMapping[]): boolean;
|
|
7
|
+
canSetAxisOrder(axis: WorkPaperAxisKind, sheetId: number, order: readonly number[]): boolean;
|
|
8
|
+
canEditAxisIntervals(axis: WorkPaperAxisKind, mode: WorkPaperAxisIntervalEditMode, sheetId: number, indexes: readonly WorkPaperAxisInterval[]): boolean;
|
|
9
|
+
canMoveAxis(axis: WorkPaperAxisKind, sheetId: number, start: number, count: number, target: number): boolean;
|
|
10
|
+
canUseTrackedStructuralFastPath(): boolean;
|
|
11
|
+
batch(operations: () => void): WorkPaperChange[];
|
|
12
|
+
batchStructuralChanges(operations: () => void): WorkPaperChange[];
|
|
13
|
+
captureAxisChange(operations: () => void): WorkPaperChange[];
|
|
14
|
+
captureTrackedStructuralChanges(operations: () => void): WorkPaperChange[];
|
|
15
|
+
moveAxis(axis: WorkPaperAxisKind, sheetId: number, start: number, count: number, target: number): WorkPaperChange[];
|
|
16
|
+
applyAxisIntervalEdit(axis: WorkPaperAxisKind, mode: WorkPaperAxisIntervalEditMode, sheetId: number, start: number, amount: number): void;
|
|
17
|
+
applyAxisMove(axis: WorkPaperAxisKind, sheetId: number, start: number, count: number, target: number): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function normalizeAxisIntervals(startOrInterval: number | WorkPaperAxisInterval, countOrInterval?: number | WorkPaperAxisInterval, restIntervals?: readonly WorkPaperAxisInterval[]): Array<[number, number]>;
|
|
20
|
+
export declare function normalizeAxisSwapMappings(label: 'row' | 'column', startOrMappings: number | readonly WorkPaperAxisSwapMapping[], end?: number): WorkPaperAxisSwapMapping[];
|
|
21
|
+
export declare function applyWorkPaperAxisSwapMappings(mappings: readonly WorkPaperAxisSwapMapping[], moveAxis: WorkPaperAxisMoveCallback): void;
|
|
22
|
+
export declare function applyWorkPaperAxisOrder(axisOrder: readonly number[], moveAxis: WorkPaperAxisMoveCallback): void;
|
|
23
|
+
export declare function swapWorkPaperAxisIndexes(runtime: WorkPaperAxisEditRuntime, axis: WorkPaperAxisKind, sheetId: number, firstOrMappings: number | readonly WorkPaperAxisSwapMapping[], second?: number): WorkPaperChange[];
|
|
24
|
+
export declare function setWorkPaperAxisOrder(runtime: WorkPaperAxisEditRuntime, axis: WorkPaperAxisKind, sheetId: number, order: readonly number[]): WorkPaperChange[];
|
|
25
|
+
export declare function editWorkPaperAxisIntervals(runtime: WorkPaperAxisEditRuntime, axis: WorkPaperAxisKind, mode: WorkPaperAxisIntervalEditMode, sheetId: number, startOrInterval: number | WorkPaperAxisInterval, countOrInterval: number | WorkPaperAxisInterval | undefined, restIntervals: readonly WorkPaperAxisInterval[]): WorkPaperChange[];
|
|
26
|
+
export declare function moveWorkPaperAxis(runtime: WorkPaperAxisEditRuntime, axis: WorkPaperAxisKind, sheetId: number, start: number, count: number, target: number): WorkPaperChange[];
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { WorkPaperInvalidArgumentsError, WorkPaperOperationError } from './work-paper-errors.js';
|
|
2
|
+
export function normalizeAxisIntervals(startOrInterval, countOrInterval, restIntervals = []) {
|
|
3
|
+
if (typeof startOrInterval === 'number') {
|
|
4
|
+
if (Array.isArray(countOrInterval)) {
|
|
5
|
+
throw new WorkPaperInvalidArgumentsError('Axis interval count must be a number');
|
|
6
|
+
}
|
|
7
|
+
const resolvedCount = typeof countOrInterval === 'number' ? countOrInterval : 1;
|
|
8
|
+
return [[startOrInterval, resolvedCount]];
|
|
9
|
+
}
|
|
10
|
+
if (typeof countOrInterval === 'number') {
|
|
11
|
+
throw new WorkPaperInvalidArgumentsError('Axis interval count is only valid with a numeric start');
|
|
12
|
+
}
|
|
13
|
+
return [startOrInterval, ...(countOrInterval ? [countOrInterval] : []), ...restIntervals].map(([start, count]) => [start, count ?? 1]);
|
|
14
|
+
}
|
|
15
|
+
export function normalizeAxisSwapMappings(label, startOrMappings, end) {
|
|
16
|
+
if (typeof startOrMappings === 'number') {
|
|
17
|
+
if (end === undefined) {
|
|
18
|
+
throw new WorkPaperInvalidArgumentsError(`${label} swap requires two indexes`);
|
|
19
|
+
}
|
|
20
|
+
return [[startOrMappings, end]];
|
|
21
|
+
}
|
|
22
|
+
return [...startOrMappings];
|
|
23
|
+
}
|
|
24
|
+
export function applyWorkPaperAxisSwapMappings(mappings, moveAxis) {
|
|
25
|
+
mappings.forEach(([from, to]) => {
|
|
26
|
+
if (from === to) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (from < to) {
|
|
30
|
+
moveAxis(from, 1, to);
|
|
31
|
+
moveAxis(to - 1, 1, from);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
moveAxis(from, 1, to);
|
|
35
|
+
moveAxis(to + 1, 1, from);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function applyWorkPaperAxisOrder(axisOrder, moveAxis) {
|
|
39
|
+
const current = axisOrder.toSorted((left, right) => left - right);
|
|
40
|
+
axisOrder.forEach((targetOriginalIndex, targetIndex) => {
|
|
41
|
+
const currentIndex = current.indexOf(targetOriginalIndex);
|
|
42
|
+
if (currentIndex === targetIndex) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
moveAxis(currentIndex, 1, targetIndex);
|
|
46
|
+
const [moved] = current.splice(currentIndex, 1);
|
|
47
|
+
current.splice(targetIndex, 0, moved);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export function swapWorkPaperAxisIndexes(runtime, axis, sheetId, firstOrMappings, second) {
|
|
51
|
+
const mappings = normalizeAxisSwapMappings(axis, firstOrMappings, second);
|
|
52
|
+
if (!runtime.canSwapAxisIndexes(axis, sheetId, mappings)) {
|
|
53
|
+
throw new WorkPaperOperationError(`${axisLabel(axis, 'plural')} cannot be swapped`);
|
|
54
|
+
}
|
|
55
|
+
return runtime.batch(() => {
|
|
56
|
+
applyWorkPaperAxisSwapMappings(mappings, (start, count, target) => {
|
|
57
|
+
runtime.moveAxis(axis, sheetId, start, count, target);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export function setWorkPaperAxisOrder(runtime, axis, sheetId, order) {
|
|
62
|
+
if (!runtime.canSetAxisOrder(axis, sheetId, order)) {
|
|
63
|
+
throw new WorkPaperOperationError(`${axisLabel(axis, 'singular')} order is invalid`);
|
|
64
|
+
}
|
|
65
|
+
return runtime.batch(() => {
|
|
66
|
+
applyWorkPaperAxisOrder(order, (start, count, target) => {
|
|
67
|
+
runtime.moveAxis(axis, sheetId, start, count, target);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export function editWorkPaperAxisIntervals(runtime, axis, mode, sheetId, startOrInterval, countOrInterval, restIntervals) {
|
|
72
|
+
const indexes = normalizeAxisIntervals(startOrInterval, countOrInterval, restIntervals);
|
|
73
|
+
if (!runtime.canEditAxisIntervals(axis, mode, sheetId, indexes)) {
|
|
74
|
+
throw new WorkPaperOperationError(`${axisLabel(axis, 'plural')} cannot be ${mode === 'add' ? 'added' : 'removed'}`);
|
|
75
|
+
}
|
|
76
|
+
const orderedIndexes = mode === 'remove' ? indexes.toSorted((left, right) => right[0] - left[0]) : indexes;
|
|
77
|
+
if (indexes.length === 1 && runtime.canUseTrackedStructuralFastPath()) {
|
|
78
|
+
const [start, amount] = indexes[0];
|
|
79
|
+
return runtime.captureTrackedStructuralChanges(() => {
|
|
80
|
+
runtime.applyAxisIntervalEdit(axis, mode, sheetId, start, amount);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return runtime.batchStructuralChanges(() => {
|
|
84
|
+
orderedIndexes.forEach(([start, amount]) => {
|
|
85
|
+
runtime.applyAxisIntervalEdit(axis, mode, sheetId, start, amount);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export function moveWorkPaperAxis(runtime, axis, sheetId, start, count, target) {
|
|
90
|
+
if (!runtime.canMoveAxis(axis, sheetId, start, count, target)) {
|
|
91
|
+
throw new WorkPaperOperationError(`${axisLabel(axis, 'plural')} cannot be moved`);
|
|
92
|
+
}
|
|
93
|
+
const move = () => {
|
|
94
|
+
runtime.applyAxisMove(axis, sheetId, start, count, target);
|
|
95
|
+
};
|
|
96
|
+
return runtime.canUseTrackedStructuralFastPath() ? runtime.captureTrackedStructuralChanges(move) : runtime.captureAxisChange(move);
|
|
97
|
+
}
|
|
98
|
+
function axisLabel(axis, count) {
|
|
99
|
+
if (axis === 'row') {
|
|
100
|
+
return count === 'singular' ? 'Row' : 'Rows';
|
|
101
|
+
}
|
|
102
|
+
return count === 'singular' ? 'Column' : 'Columns';
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=work-paper-axis-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-axis-helpers.js","sourceRoot":"","sources":["../src/work-paper-axis-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RawCellContent, WorkPaperAddressLike, WorkPaperAxisInterval, WorkPaperAxisSwapMapping, WorkPaperCellAddress, WorkPaperCellRange, WorkPaperConfig, WorkPaperSheet } from './work-paper-types.js';
|
|
2
|
+
type WorkPaperAxis = 'row' | 'column';
|
|
3
|
+
interface WorkPaperCapabilityContext {
|
|
4
|
+
readonly config: WorkPaperConfig;
|
|
5
|
+
readonly requireSheet: (sheetId: number) => void;
|
|
6
|
+
readonly doesSheetExist: (sheetName: string) => boolean;
|
|
7
|
+
readonly getSheetIdByName: (sheetName: string) => number | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function isWorkPaperSetCellContentsPossible(context: WorkPaperCapabilityContext, addressOrRange: WorkPaperAddressLike, content?: RawCellContent | WorkPaperSheet): boolean;
|
|
10
|
+
export declare function isWorkPaperAxisSwapPossible(context: WorkPaperCapabilityContext, axis: WorkPaperAxis, sheetId: number, firstOrMappings: number | readonly WorkPaperAxisSwapMapping[], second?: number): boolean;
|
|
11
|
+
export declare function isWorkPaperAxisOrderPossible(context: WorkPaperCapabilityContext, axis: WorkPaperAxis, sheetId: number, order: readonly number[]): boolean;
|
|
12
|
+
export declare function isWorkPaperAxisIntervalEditPossible(context: WorkPaperCapabilityContext, axis: WorkPaperAxis, sheetId: number, startOrInterval: number | WorkPaperAxisInterval, countOrInterval: number | WorkPaperAxisInterval | undefined, restIntervals: readonly WorkPaperAxisInterval[]): boolean;
|
|
13
|
+
export declare function isWorkPaperMoveCellsPossible(context: WorkPaperCapabilityContext, source: WorkPaperCellRange, target: WorkPaperCellAddress): boolean;
|
|
14
|
+
export declare function isWorkPaperMoveAxisPossible(context: WorkPaperCapabilityContext, axis: WorkPaperAxis, sheetId: number, start: number, count: number, target: number): boolean;
|
|
15
|
+
export declare function isWorkPaperSheetNameAvailable(context: WorkPaperCapabilityContext, sheetName: string, currentSheetId?: number): boolean;
|
|
16
|
+
export declare function isWorkPaperSheetContentReplaceable(context: WorkPaperCapabilityContext, sheetId: number, content: WorkPaperSheet): boolean;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { MAX_COLS, MAX_ROWS } from '@bilig/protocol';
|
|
2
|
+
import { WorkPaperInvalidArgumentsError } from './work-paper-errors.js';
|
|
3
|
+
import { normalizeAxisIntervals, normalizeAxisSwapMappings } from './work-paper-axis-helpers.js';
|
|
4
|
+
import { assertRange, assertRowAndColumn, isCellRange } from './work-paper-runtime-helpers.js';
|
|
5
|
+
const limitForAxis = (config, axis) => axis === 'row' ? (config.maxRows ?? MAX_ROWS) : (config.maxColumns ?? MAX_COLS);
|
|
6
|
+
const validateSheetName = (sheetName) => {
|
|
7
|
+
const trimmed = sheetName.trim();
|
|
8
|
+
if (trimmed.length === 0) {
|
|
9
|
+
throw new WorkPaperInvalidArgumentsError('Sheet name must be non-empty');
|
|
10
|
+
}
|
|
11
|
+
return trimmed;
|
|
12
|
+
};
|
|
13
|
+
export function isWorkPaperSetCellContentsPossible(context, addressOrRange, content) {
|
|
14
|
+
if (isCellRange(addressOrRange)) {
|
|
15
|
+
assertRange(addressOrRange);
|
|
16
|
+
context.requireSheet(addressOrRange.start.sheet);
|
|
17
|
+
return addressOrRange.end.row < (context.config.maxRows ?? MAX_ROWS) && addressOrRange.end.col < (context.config.maxColumns ?? MAX_COLS);
|
|
18
|
+
}
|
|
19
|
+
context.requireSheet(addressOrRange.sheet);
|
|
20
|
+
assertRowAndColumn(addressOrRange.row, 'address.row');
|
|
21
|
+
assertRowAndColumn(addressOrRange.col, 'address.col');
|
|
22
|
+
if (content === undefined) {
|
|
23
|
+
return addressOrRange.row < (context.config.maxRows ?? MAX_ROWS) && addressOrRange.col < (context.config.maxColumns ?? MAX_COLS);
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(content)) {
|
|
26
|
+
if (!content.every((row) => Array.isArray(row))) {
|
|
27
|
+
throw new WorkPaperInvalidArgumentsError('Content matrix must be a two-dimensional array');
|
|
28
|
+
}
|
|
29
|
+
const height = content.length;
|
|
30
|
+
const width = Math.max(0, ...content.map((row) => row.length));
|
|
31
|
+
return (addressOrRange.row + height <= (context.config.maxRows ?? MAX_ROWS) &&
|
|
32
|
+
addressOrRange.col + width <= (context.config.maxColumns ?? MAX_COLS));
|
|
33
|
+
}
|
|
34
|
+
return addressOrRange.row < (context.config.maxRows ?? MAX_ROWS) && addressOrRange.col < (context.config.maxColumns ?? MAX_COLS);
|
|
35
|
+
}
|
|
36
|
+
export function isWorkPaperAxisSwapPossible(context, axis, sheetId, firstOrMappings, second) {
|
|
37
|
+
context.requireSheet(sheetId);
|
|
38
|
+
const limit = limitForAxis(context.config, axis);
|
|
39
|
+
const [firstLabel, secondLabel] = axis === 'row' ? ['rowA', 'rowB'] : ['columnA', 'columnB'];
|
|
40
|
+
return normalizeAxisSwapMappings(axis, firstOrMappings, second).every(([first, mappedSecond]) => {
|
|
41
|
+
assertRowAndColumn(first, firstLabel);
|
|
42
|
+
assertRowAndColumn(mappedSecond, secondLabel);
|
|
43
|
+
return first < limit && mappedSecond < limit;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function isWorkPaperAxisOrderPossible(context, axis, sheetId, order) {
|
|
47
|
+
context.requireSheet(sheetId);
|
|
48
|
+
if (new Set(order).size !== order.length || order.some((value) => !Number.isInteger(value) || value < 0)) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const limit = limitForAxis(context.config, axis);
|
|
52
|
+
return order.every((value) => value < limit);
|
|
53
|
+
}
|
|
54
|
+
export function isWorkPaperAxisIntervalEditPossible(context, axis, sheetId, startOrInterval, countOrInterval, restIntervals) {
|
|
55
|
+
context.requireSheet(sheetId);
|
|
56
|
+
const limit = limitForAxis(context.config, axis);
|
|
57
|
+
return normalizeAxisIntervals(startOrInterval, countOrInterval, restIntervals).every(([start, count]) => {
|
|
58
|
+
assertRowAndColumn(start, 'start');
|
|
59
|
+
assertRowAndColumn(count, 'count');
|
|
60
|
+
return count > 0 && start + count <= limit;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
export function isWorkPaperMoveCellsPossible(context, source, target) {
|
|
64
|
+
assertRange(source);
|
|
65
|
+
assertRowAndColumn(target.sheet, 'target.sheet');
|
|
66
|
+
assertRowAndColumn(target.row, 'target.row');
|
|
67
|
+
assertRowAndColumn(target.col, 'target.col');
|
|
68
|
+
if (source.start.sheet !== target.sheet) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const height = source.end.row - source.start.row + 1;
|
|
72
|
+
const width = source.end.col - source.start.col + 1;
|
|
73
|
+
return target.row + height <= (context.config.maxRows ?? MAX_ROWS) && target.col + width <= (context.config.maxColumns ?? MAX_COLS);
|
|
74
|
+
}
|
|
75
|
+
export function isWorkPaperMoveAxisPossible(context, axis, sheetId, start, count, target) {
|
|
76
|
+
context.requireSheet(sheetId);
|
|
77
|
+
assertRowAndColumn(start, 'start');
|
|
78
|
+
assertRowAndColumn(count, 'count');
|
|
79
|
+
assertRowAndColumn(target, 'target');
|
|
80
|
+
const limit = limitForAxis(context.config, axis);
|
|
81
|
+
return count > 0 && start + count <= limit && target + count <= limit;
|
|
82
|
+
}
|
|
83
|
+
export function isWorkPaperSheetNameAvailable(context, sheetName, currentSheetId) {
|
|
84
|
+
const trimmed = validateSheetName(sheetName);
|
|
85
|
+
if (currentSheetId === undefined) {
|
|
86
|
+
return !context.doesSheetExist(trimmed);
|
|
87
|
+
}
|
|
88
|
+
context.requireSheet(currentSheetId);
|
|
89
|
+
const existingId = context.getSheetIdByName(trimmed);
|
|
90
|
+
return existingId === undefined || existingId === currentSheetId;
|
|
91
|
+
}
|
|
92
|
+
export function isWorkPaperSheetContentReplaceable(context, sheetId, content) {
|
|
93
|
+
context.requireSheet(sheetId);
|
|
94
|
+
if (!content.every((row) => Array.isArray(row))) {
|
|
95
|
+
throw new WorkPaperInvalidArgumentsError('Sheet content must be a two-dimensional array');
|
|
96
|
+
}
|
|
97
|
+
const height = content.length;
|
|
98
|
+
const width = Math.max(0, ...content.map((row) => row.length));
|
|
99
|
+
return height <= (context.config.maxRows ?? MAX_ROWS) && width <= (context.config.maxColumns ?? MAX_COLS);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=work-paper-capability-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-capability-checks.js","sourceRoot":"","sources":["../src/work-paper-capability-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { isWorkPaperSetCellContentsPossible } from './work-paper-capability-checks.js';
|
|
2
|
+
import type { RawCellContent, WorkPaperAddressLike, WorkPaperAxisInterval, WorkPaperAxisSwapMapping, WorkPaperCellAddress, WorkPaperCellRange, WorkPaperSheet } from './work-paper-types.js';
|
|
3
|
+
type WorkPaperCapabilityContext = Parameters<typeof isWorkPaperSetCellContentsPossible>[0];
|
|
4
|
+
export interface WorkPaperCapabilityOperationsRuntime {
|
|
5
|
+
readonly assertNotDisposed: () => void;
|
|
6
|
+
readonly getCapabilityContext: () => WorkPaperCapabilityContext;
|
|
7
|
+
readonly doesSheetIdExist: (sheetId: number) => boolean;
|
|
8
|
+
readonly validateNamedExpression: (expressionName: string, expression: RawCellContent, scope?: number) => void;
|
|
9
|
+
readonly hasNamedExpression: (expressionName: string, scope?: number) => boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface WorkPaperCapabilityOperations {
|
|
12
|
+
readonly isItPossibleToSetCellContents: (addressOrRange: WorkPaperAddressLike, content?: RawCellContent | WorkPaperSheet) => boolean;
|
|
13
|
+
readonly isItPossibleToSwapRowIndexes: (sheetId: number, rowAOrMappings: number | readonly WorkPaperAxisSwapMapping[], rowB?: number) => boolean;
|
|
14
|
+
readonly isItPossibleToSetRowOrder: (sheetId: number, rowOrder: readonly number[]) => boolean;
|
|
15
|
+
readonly isItPossibleToSwapColumnIndexes: (sheetId: number, columnAOrMappings: number | readonly WorkPaperAxisSwapMapping[], columnB?: number) => boolean;
|
|
16
|
+
readonly isItPossibleToSetColumnOrder: (sheetId: number, columnOrder: readonly number[]) => boolean;
|
|
17
|
+
readonly isItPossibleToAddRows: (sheetId: number, startOrInterval: number | WorkPaperAxisInterval, countOrInterval?: number | WorkPaperAxisInterval, restIntervals?: readonly WorkPaperAxisInterval[]) => boolean;
|
|
18
|
+
readonly isItPossibleToRemoveRows: (sheetId: number, startOrInterval: number | WorkPaperAxisInterval, countOrInterval?: number | WorkPaperAxisInterval, restIntervals?: readonly WorkPaperAxisInterval[]) => boolean;
|
|
19
|
+
readonly isItPossibleToAddColumns: (sheetId: number, startOrInterval: number | WorkPaperAxisInterval, countOrInterval?: number | WorkPaperAxisInterval, restIntervals?: readonly WorkPaperAxisInterval[]) => boolean;
|
|
20
|
+
readonly isItPossibleToRemoveColumns: (sheetId: number, startOrInterval: number | WorkPaperAxisInterval, countOrInterval?: number | WorkPaperAxisInterval, restIntervals?: readonly WorkPaperAxisInterval[]) => boolean;
|
|
21
|
+
readonly isItPossibleToMoveCells: (source: WorkPaperCellRange, target: WorkPaperCellAddress) => boolean;
|
|
22
|
+
readonly isItPossibleToMoveRows: (sheetId: number, start: number, count: number, target: number) => boolean;
|
|
23
|
+
readonly isItPossibleToMoveColumns: (sheetId: number, start: number, count: number, target: number) => boolean;
|
|
24
|
+
readonly isItPossibleToAddSheet: (sheetName: string) => boolean;
|
|
25
|
+
readonly isItPossibleToRemoveSheet: (sheetId: number) => boolean;
|
|
26
|
+
readonly isItPossibleToClearSheet: (sheetId: number) => boolean;
|
|
27
|
+
readonly isItPossibleToReplaceSheetContent: (sheetId: number, content: WorkPaperSheet) => boolean;
|
|
28
|
+
readonly isItPossibleToRenameSheet: (sheetId: number, nextName: string) => boolean;
|
|
29
|
+
readonly isItPossibleToAddNamedExpression: (expressionName: string, expression: RawCellContent, scope?: number) => boolean;
|
|
30
|
+
readonly isItPossibleToChangeNamedExpression: (expressionName: string, expression: RawCellContent, scope?: number) => boolean;
|
|
31
|
+
readonly isItPossibleToRemoveNamedExpression: (expressionName: string, scope?: number) => boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare function createWorkPaperCapabilityOperations(runtime: WorkPaperCapabilityOperationsRuntime): WorkPaperCapabilityOperations;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { isWorkPaperAxisIntervalEditPossible, isWorkPaperAxisOrderPossible, isWorkPaperAxisSwapPossible, isWorkPaperMoveAxisPossible, isWorkPaperMoveCellsPossible, isWorkPaperSetCellContentsPossible, isWorkPaperSheetContentReplaceable, isWorkPaperSheetNameAvailable, } from './work-paper-capability-checks.js';
|
|
2
|
+
export function createWorkPaperCapabilityOperations(runtime) {
|
|
3
|
+
const axisIntervalPossible = (axis, sheetId, startOrInterval, countOrInterval, restIntervals = []) => isWorkPaperAxisIntervalEditPossible(runtime.getCapabilityContext(), axis, sheetId, startOrInterval, countOrInterval, restIntervals);
|
|
4
|
+
return {
|
|
5
|
+
isItPossibleToSetCellContents(addressOrRange, content) {
|
|
6
|
+
runtime.assertNotDisposed();
|
|
7
|
+
return isWorkPaperSetCellContentsPossible(runtime.getCapabilityContext(), addressOrRange, content);
|
|
8
|
+
},
|
|
9
|
+
isItPossibleToSwapRowIndexes(sheetId, rowAOrMappings, rowB) {
|
|
10
|
+
return isWorkPaperAxisSwapPossible(runtime.getCapabilityContext(), 'row', sheetId, rowAOrMappings, rowB);
|
|
11
|
+
},
|
|
12
|
+
isItPossibleToSetRowOrder(sheetId, rowOrder) {
|
|
13
|
+
return isWorkPaperAxisOrderPossible(runtime.getCapabilityContext(), 'row', sheetId, rowOrder);
|
|
14
|
+
},
|
|
15
|
+
isItPossibleToSwapColumnIndexes(sheetId, columnAOrMappings, columnB) {
|
|
16
|
+
return isWorkPaperAxisSwapPossible(runtime.getCapabilityContext(), 'column', sheetId, columnAOrMappings, columnB);
|
|
17
|
+
},
|
|
18
|
+
isItPossibleToSetColumnOrder(sheetId, columnOrder) {
|
|
19
|
+
return isWorkPaperAxisOrderPossible(runtime.getCapabilityContext(), 'column', sheetId, columnOrder);
|
|
20
|
+
},
|
|
21
|
+
isItPossibleToAddRows(sheetId, startOrInterval, countOrInterval, restIntervals) {
|
|
22
|
+
return axisIntervalPossible('row', sheetId, startOrInterval, countOrInterval, restIntervals);
|
|
23
|
+
},
|
|
24
|
+
isItPossibleToRemoveRows(sheetId, startOrInterval, countOrInterval, restIntervals) {
|
|
25
|
+
return axisIntervalPossible('row', sheetId, startOrInterval, countOrInterval, restIntervals);
|
|
26
|
+
},
|
|
27
|
+
isItPossibleToAddColumns(sheetId, startOrInterval, countOrInterval, restIntervals) {
|
|
28
|
+
return axisIntervalPossible('column', sheetId, startOrInterval, countOrInterval, restIntervals);
|
|
29
|
+
},
|
|
30
|
+
isItPossibleToRemoveColumns(sheetId, startOrInterval, countOrInterval, restIntervals) {
|
|
31
|
+
return axisIntervalPossible('column', sheetId, startOrInterval, countOrInterval, restIntervals);
|
|
32
|
+
},
|
|
33
|
+
isItPossibleToMoveCells(source, target) {
|
|
34
|
+
return isWorkPaperMoveCellsPossible(runtime.getCapabilityContext(), source, target);
|
|
35
|
+
},
|
|
36
|
+
isItPossibleToMoveRows(sheetId, start, count, target) {
|
|
37
|
+
return isWorkPaperMoveAxisPossible(runtime.getCapabilityContext(), 'row', sheetId, start, count, target);
|
|
38
|
+
},
|
|
39
|
+
isItPossibleToMoveColumns(sheetId, start, count, target) {
|
|
40
|
+
return isWorkPaperMoveAxisPossible(runtime.getCapabilityContext(), 'column', sheetId, start, count, target);
|
|
41
|
+
},
|
|
42
|
+
isItPossibleToAddSheet(sheetName) {
|
|
43
|
+
return isWorkPaperSheetNameAvailable(runtime.getCapabilityContext(), sheetName);
|
|
44
|
+
},
|
|
45
|
+
isItPossibleToRemoveSheet(sheetId) {
|
|
46
|
+
return runtime.doesSheetIdExist(sheetId);
|
|
47
|
+
},
|
|
48
|
+
isItPossibleToClearSheet(sheetId) {
|
|
49
|
+
return runtime.doesSheetIdExist(sheetId);
|
|
50
|
+
},
|
|
51
|
+
isItPossibleToReplaceSheetContent(sheetId, content) {
|
|
52
|
+
return isWorkPaperSheetContentReplaceable(runtime.getCapabilityContext(), sheetId, content);
|
|
53
|
+
},
|
|
54
|
+
isItPossibleToRenameSheet(sheetId, nextName) {
|
|
55
|
+
return isWorkPaperSheetNameAvailable(runtime.getCapabilityContext(), nextName, sheetId);
|
|
56
|
+
},
|
|
57
|
+
isItPossibleToAddNamedExpression(expressionName, expression, scope) {
|
|
58
|
+
runtime.validateNamedExpression(expressionName, expression, scope);
|
|
59
|
+
return !runtime.hasNamedExpression(expressionName, scope);
|
|
60
|
+
},
|
|
61
|
+
isItPossibleToChangeNamedExpression(expressionName, expression, scope) {
|
|
62
|
+
runtime.validateNamedExpression(expressionName, expression, scope);
|
|
63
|
+
return runtime.hasNamedExpression(expressionName, scope);
|
|
64
|
+
},
|
|
65
|
+
isItPossibleToRemoveNamedExpression(expressionName, scope) {
|
|
66
|
+
return runtime.hasNamedExpression(expressionName, scope);
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=work-paper-capability-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-capability-operations.js","sourceRoot":"","sources":["../src/work-paper-capability-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { CellValue } from '@bilig/protocol';
|
|
2
|
+
import type { WorkPaperSheetFormulas, WorkPaperSheetValues } from './work-paper-sheet-read.js';
|
|
3
|
+
import type { WorkPaperRuntimeAdapters } from './work-paper-runtime-adapters.js';
|
|
4
|
+
import type { RawCellContent, SerializedWorkPaperNamedExpression, WorkPaperAddressFormatOptions, WorkPaperAxisInterval, WorkPaperAxisSwapMapping, WorkPaperCellAddress, WorkPaperCellRange, WorkPaperCellType, WorkPaperCellValueDetailedType, WorkPaperCellValueType, WorkPaperChange, WorkPaperNamedExpression, WorkPaperSheet, WorkPaperSheetDimensions } from './work-paper-types.js';
|
|
5
|
+
export declare abstract class WorkPaperCapabilitySurface {
|
|
6
|
+
protected abstract readonly runtimeAdapters: WorkPaperRuntimeAdapters;
|
|
7
|
+
isItPossibleToSetCellContents(address: WorkPaperCellAddress, content?: RawCellContent | WorkPaperSheet): boolean;
|
|
8
|
+
isItPossibleToSetCellContents(range: WorkPaperCellRange): boolean;
|
|
9
|
+
isItPossibleToSwapRowIndexes(sheetId: number, rowA: number, rowB: number): boolean;
|
|
10
|
+
isItPossibleToSwapRowIndexes(sheetId: number, rowMappings: readonly WorkPaperAxisSwapMapping[]): boolean;
|
|
11
|
+
isItPossibleToSetRowOrder(sheetId: number, rowOrder: readonly number[]): boolean;
|
|
12
|
+
isItPossibleToSwapColumnIndexes(sheetId: number, columnA: number, columnB: number): boolean;
|
|
13
|
+
isItPossibleToSwapColumnIndexes(sheetId: number, columnMappings: readonly WorkPaperAxisSwapMapping[]): boolean;
|
|
14
|
+
isItPossibleToSetColumnOrder(sheetId: number, columnOrder: readonly number[]): boolean;
|
|
15
|
+
isItPossibleToAddRows(sheetId: number, start: number, count?: number): boolean;
|
|
16
|
+
isItPossibleToAddRows(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): boolean;
|
|
17
|
+
isItPossibleToRemoveRows(sheetId: number, start: number, count?: number): boolean;
|
|
18
|
+
isItPossibleToRemoveRows(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): boolean;
|
|
19
|
+
isItPossibleToAddColumns(sheetId: number, start: number, count?: number): boolean;
|
|
20
|
+
isItPossibleToAddColumns(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): boolean;
|
|
21
|
+
isItPossibleToRemoveColumns(sheetId: number, start: number, count?: number): boolean;
|
|
22
|
+
isItPossibleToRemoveColumns(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): boolean;
|
|
23
|
+
isItPossibleToMoveCells(source: WorkPaperCellRange, target: WorkPaperCellAddress): boolean;
|
|
24
|
+
isItPossibleToMoveRows(sheetId: number, start: number, count: number, target: number): boolean;
|
|
25
|
+
isItPossibleToMoveColumns(sheetId: number, start: number, count: number, target: number): boolean;
|
|
26
|
+
isItPossibleToAddSheet(sheetName: string): boolean;
|
|
27
|
+
isItPossibleToRemoveSheet(sheetId: number): boolean;
|
|
28
|
+
isItPossibleToClearSheet(sheetId: number): boolean;
|
|
29
|
+
isItPossibleToReplaceSheetContent(sheetId: number, content: WorkPaperSheet): boolean;
|
|
30
|
+
isItPossibleToRenameSheet(sheetId: number, nextName: string): boolean;
|
|
31
|
+
isItPossibleToAddNamedExpression(expressionName: string, expression: RawCellContent, scope?: number): boolean;
|
|
32
|
+
isItPossibleToChangeNamedExpression(expressionName: string, expression: RawCellContent, scope?: number): boolean;
|
|
33
|
+
isItPossibleToRemoveNamedExpression(expressionName: string, scope?: number): boolean;
|
|
34
|
+
copy(range: WorkPaperCellRange): CellValue[][];
|
|
35
|
+
cut(range: WorkPaperCellRange): CellValue[][];
|
|
36
|
+
paste(targetLeftCorner: WorkPaperCellAddress): WorkPaperChange[];
|
|
37
|
+
isClipboardEmpty(): boolean;
|
|
38
|
+
clearClipboard(): void;
|
|
39
|
+
getFillRangeData(source: WorkPaperCellRange, target: WorkPaperCellRange, offsetsFromTarget?: boolean): RawCellContent[][];
|
|
40
|
+
getCellValue(address: WorkPaperCellAddress): CellValue;
|
|
41
|
+
getCellFormula(address: WorkPaperCellAddress): string | undefined;
|
|
42
|
+
getCellHyperlink(address: WorkPaperCellAddress): string | undefined;
|
|
43
|
+
getCellSerialized(address: WorkPaperCellAddress): RawCellContent;
|
|
44
|
+
getRangeValues(range: WorkPaperCellRange): CellValue[][];
|
|
45
|
+
getRangeFormulas(range: WorkPaperCellRange): WorkPaperSheetFormulas;
|
|
46
|
+
getRangeSerialized(range: WorkPaperCellRange): RawCellContent[][];
|
|
47
|
+
getSheetValues(sheetId: number): WorkPaperSheetValues;
|
|
48
|
+
getSheetFormulas(sheetId: number): WorkPaperSheetFormulas;
|
|
49
|
+
getSheetSerialized(sheetId: number): RawCellContent[][];
|
|
50
|
+
getAllSheetsValues(): Record<string, CellValue[][]>;
|
|
51
|
+
getAllSheetsFormulas(): Record<string, WorkPaperSheetFormulas>;
|
|
52
|
+
getAllSheetsSerialized(): Record<string, RawCellContent[][]>;
|
|
53
|
+
getAllSheetsDimensions(): Record<string, WorkPaperSheetDimensions>;
|
|
54
|
+
getSheetDimensions(sheetId: number): WorkPaperSheetDimensions;
|
|
55
|
+
simpleCellAddressFromString(value: string, defaultSheetId?: number): WorkPaperCellAddress | undefined;
|
|
56
|
+
simpleCellRangeFromString(value: string, defaultSheetId?: number): WorkPaperCellRange | undefined;
|
|
57
|
+
simpleCellAddressToString(address: WorkPaperCellAddress, optionsOrContextSheetId?: WorkPaperAddressFormatOptions | number): string;
|
|
58
|
+
simpleCellRangeToString(range: WorkPaperCellRange, optionsOrContextSheetId?: WorkPaperAddressFormatOptions | number): string;
|
|
59
|
+
getCellType(address: WorkPaperCellAddress): WorkPaperCellType;
|
|
60
|
+
doesCellHaveSimpleValue(address: WorkPaperCellAddress): boolean;
|
|
61
|
+
doesCellHaveFormula(address: WorkPaperCellAddress): boolean;
|
|
62
|
+
isCellEmpty(address: WorkPaperCellAddress): boolean;
|
|
63
|
+
isCellPartOfArray(address: WorkPaperCellAddress): boolean;
|
|
64
|
+
getCellValueType(address: WorkPaperCellAddress): WorkPaperCellValueType;
|
|
65
|
+
getCellValueDetailedType(address: WorkPaperCellAddress): WorkPaperCellValueDetailedType;
|
|
66
|
+
getCellValueFormat(address: WorkPaperCellAddress): string | undefined;
|
|
67
|
+
getNamedExpressionValue(name: string, scope?: number): CellValue | CellValue[][] | undefined;
|
|
68
|
+
getNamedExpressionFormula(name: string, scope?: number): string | undefined;
|
|
69
|
+
getNamedExpression(name: string, scope?: number): WorkPaperNamedExpression | undefined;
|
|
70
|
+
addNamedExpression(expressionName: string, expression: RawCellContent, scope?: number, options?: Record<string, string | number | boolean>): WorkPaperChange[];
|
|
71
|
+
changeNamedExpression(expressionName: string, expression: RawCellContent, scope?: number, options?: Record<string, string | number | boolean>): WorkPaperChange[];
|
|
72
|
+
removeNamedExpression(expressionName: string, scope?: number): WorkPaperChange[];
|
|
73
|
+
listNamedExpressions(scope?: number): string[];
|
|
74
|
+
getAllNamedExpressionsSerialized(): SerializedWorkPaperNamedExpression[];
|
|
75
|
+
setCellContents(address: WorkPaperCellAddress, content: RawCellContent | WorkPaperSheet): WorkPaperChange[];
|
|
76
|
+
swapRowIndexes(sheetId: number, rowA: number, rowB: number): WorkPaperChange[];
|
|
77
|
+
swapRowIndexes(sheetId: number, rowMappings: readonly WorkPaperAxisSwapMapping[]): WorkPaperChange[];
|
|
78
|
+
setRowOrder(sheetId: number, rowOrder: readonly number[]): WorkPaperChange[];
|
|
79
|
+
swapColumnIndexes(sheetId: number, columnA: number, columnB: number): WorkPaperChange[];
|
|
80
|
+
swapColumnIndexes(sheetId: number, columnMappings: readonly WorkPaperAxisSwapMapping[]): WorkPaperChange[];
|
|
81
|
+
setColumnOrder(sheetId: number, columnOrder: readonly number[]): WorkPaperChange[];
|
|
82
|
+
addRows(sheetId: number, start: number, count?: number): WorkPaperChange[];
|
|
83
|
+
addRows(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): WorkPaperChange[];
|
|
84
|
+
removeRows(sheetId: number, start: number, count?: number): WorkPaperChange[];
|
|
85
|
+
removeRows(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): WorkPaperChange[];
|
|
86
|
+
addColumns(sheetId: number, start: number, count?: number): WorkPaperChange[];
|
|
87
|
+
addColumns(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): WorkPaperChange[];
|
|
88
|
+
removeColumns(sheetId: number, start: number, count?: number): WorkPaperChange[];
|
|
89
|
+
removeColumns(sheetId: number, ...indexes: readonly WorkPaperAxisInterval[]): WorkPaperChange[];
|
|
90
|
+
moveRows(sheetId: number, start: number, count: number, target: number): WorkPaperChange[];
|
|
91
|
+
moveColumns(sheetId: number, start: number, count: number, target: number): WorkPaperChange[];
|
|
92
|
+
addSheet(sheetName?: string): string;
|
|
93
|
+
removeSheet(sheetId: number): WorkPaperChange[];
|
|
94
|
+
clearSheet(sheetId: number): WorkPaperChange[];
|
|
95
|
+
setSheetContent(sheetId: number, content: WorkPaperSheet): WorkPaperChange[];
|
|
96
|
+
renameSheet(sheetId: number, nextName: string): WorkPaperChange[];
|
|
97
|
+
}
|