@bilig/headless 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +1 -2
  2. package/dist/change-order.d.ts +7 -0
  3. package/dist/change-order.js +64 -0
  4. package/dist/change-order.js.map +1 -0
  5. package/dist/deferred-literal-history.d.ts +13 -0
  6. package/dist/deferred-literal-history.js +67 -0
  7. package/dist/deferred-literal-history.js.map +1 -0
  8. package/dist/index.d.ts +0 -3
  9. package/dist/index.js +0 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/initial-sheet-load.d.ts +3 -0
  12. package/dist/initial-sheet-load.js +12 -0
  13. package/dist/initial-sheet-load.js.map +1 -0
  14. package/dist/matrix-mutation-plan.d.ts +11 -22
  15. package/dist/matrix-mutation-plan.js +59 -14
  16. package/dist/matrix-mutation-plan.js.map +1 -1
  17. package/dist/tracked-engine-event-refs.d.ts +11 -0
  18. package/dist/tracked-engine-event-refs.js +18 -0
  19. package/dist/tracked-engine-event-refs.js.map +1 -0
  20. package/dist/work-paper-errors.d.ts +106 -0
  21. package/dist/work-paper-errors.js +194 -0
  22. package/dist/work-paper-errors.js.map +1 -0
  23. package/dist/work-paper-runtime.d.ts +253 -0
  24. package/dist/{headless-workbook.js → work-paper-runtime.js} +581 -273
  25. package/dist/work-paper-runtime.js.map +1 -0
  26. package/dist/work-paper-scratch-evaluator.d.ts +29 -0
  27. package/dist/work-paper-scratch-evaluator.js +30 -0
  28. package/dist/work-paper-scratch-evaluator.js.map +1 -0
  29. package/dist/work-paper-sheet-replacement.d.ts +27 -0
  30. package/dist/work-paper-sheet-replacement.js +38 -0
  31. package/dist/work-paper-sheet-replacement.js.map +1 -0
  32. package/dist/work-paper-types.d.ts +267 -0
  33. package/dist/work-paper-types.js +2 -0
  34. package/dist/work-paper-types.js.map +1 -0
  35. package/dist/work-paper.d.ts +3 -48
  36. package/dist/work-paper.js +3 -2
  37. package/dist/work-paper.js.map +1 -1
  38. package/package.json +6 -6
  39. package/dist/errors.d.ts +0 -112
  40. package/dist/errors.js +0 -206
  41. package/dist/errors.js.map +0 -1
  42. package/dist/headless-workbook.d.ts +0 -239
  43. package/dist/headless-workbook.js.map +0 -1
  44. package/dist/types.d.ts +0 -252
  45. package/dist/types.js +0 -2
  46. package/dist/types.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @bilig/headless
2
2
 
3
- Headless workbook facade for `bilig`.
3
+ WorkPaper workbook facade for `bilig`.
4
4
 
5
5
  `@bilig/headless` exposes `WorkPaper`, a HyperFormula-style workbook API on top of
6
6
  `@bilig/core`'s `SpreadsheetEngine` for server-side and headless workflows.
@@ -44,7 +44,6 @@ const value = workbook.getCellValue({ sheet: sheetId, row: 0, col: 1 });
44
44
  ## Compatibility Notes
45
45
 
46
46
  - `WorkPaper` is the canonical top-level interface.
47
- - `HeadlessWorkbook` remains exported as a compatibility alias for existing callers.
48
47
  - The facade follows HyperFormula's public workbook workflow closely, but it is not a
49
48
  byte-for-byte drop-in replacement.
50
49
  - Public lookup helpers such as `getSheetId()`, `getSheetName()`,
@@ -0,0 +1,7 @@
1
+ import type { WorkPaperChange } from "./work-paper-types.js";
2
+ type SheetOrder = readonly {
3
+ id: number;
4
+ order: number;
5
+ }[];
6
+ export declare function orderWorkPaperCellChanges(changes: WorkPaperChange[], sheets: SheetOrder, explicitChangedCount?: number): WorkPaperChange[];
7
+ export {};
@@ -0,0 +1,64 @@
1
+ export function orderWorkPaperCellChanges(changes, sheets, explicitChangedCount) {
2
+ if (changes.length < 2) {
3
+ return changes;
4
+ }
5
+ const compare = compareWorkPaperCellChanges(sheets);
6
+ const split = explicitChangedCount === undefined ? undefined : Math.min(explicitChangedCount, changes.length);
7
+ if (split !== undefined &&
8
+ split > 0 &&
9
+ split < changes.length &&
10
+ isSortedCellChangeSlice(changes, compare, 0, split) &&
11
+ isSortedCellChangeSlice(changes, compare, split, changes.length)) {
12
+ return mergeSortedCellChangeSlices(changes, compare, split);
13
+ }
14
+ if (isSortedCellChangeSlice(changes, compare, 0, changes.length)) {
15
+ return changes;
16
+ }
17
+ return changes.toSorted(compare);
18
+ }
19
+ function compareWorkPaperCellChanges(sheets) {
20
+ const orderBySheet = new Map(sheets.map((sheet) => [sheet.id, sheet.order]));
21
+ return (left, right) => {
22
+ if (left.kind !== "cell" || right.kind !== "cell") {
23
+ return 0;
24
+ }
25
+ return ((orderBySheet.get(left.address.sheet) ?? 0) - (orderBySheet.get(right.address.sheet) ?? 0) ||
26
+ left.address.row - right.address.row ||
27
+ left.address.col - right.address.col);
28
+ };
29
+ }
30
+ function isSortedCellChangeSlice(changes, compare, start, end) {
31
+ for (let index = start + 1; index < end; index += 1) {
32
+ if (compare(changes[index - 1], changes[index]) > 0) {
33
+ return false;
34
+ }
35
+ }
36
+ return true;
37
+ }
38
+ function mergeSortedCellChangeSlices(changes, compare, split) {
39
+ const merged = [];
40
+ let leftIndex = 0;
41
+ let rightIndex = split;
42
+ while (leftIndex < split && rightIndex < changes.length) {
43
+ const left = changes[leftIndex];
44
+ const right = changes[rightIndex];
45
+ if (compare(left, right) <= 0) {
46
+ merged.push(left);
47
+ leftIndex += 1;
48
+ }
49
+ else {
50
+ merged.push(right);
51
+ rightIndex += 1;
52
+ }
53
+ }
54
+ while (leftIndex < split) {
55
+ merged.push(changes[leftIndex]);
56
+ leftIndex += 1;
57
+ }
58
+ while (rightIndex < changes.length) {
59
+ merged.push(changes[rightIndex]);
60
+ rightIndex += 1;
61
+ }
62
+ return merged;
63
+ }
64
+ //# sourceMappingURL=change-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-order.js","sourceRoot":"","sources":["../src/change-order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SpreadsheetEngine } from "@bilig/core";
2
+ import type { EngineOp } from "@bilig/workbook-domain";
3
+ export interface DeferredLiteralHistoryRecord {
4
+ forward: {
5
+ ops: unknown[];
6
+ potentialNewCells?: number;
7
+ };
8
+ inverse: {
9
+ ops: unknown[];
10
+ potentialNewCells?: number;
11
+ };
12
+ }
13
+ export declare function buildDeferredLiteralHistoryRecord(engine: SpreadsheetEngine, ops: readonly EngineOp[], potentialNewCells?: number): DeferredLiteralHistoryRecord | null;
@@ -0,0 +1,67 @@
1
+ import { ValueTag } from "@bilig/protocol";
2
+ function cloneDeferredLiteralOp(op) {
3
+ switch (op.kind) {
4
+ case "setCellValue":
5
+ return {
6
+ kind: "setCellValue",
7
+ sheetName: op.sheetName,
8
+ address: op.address,
9
+ value: op.value,
10
+ };
11
+ case "clearCell":
12
+ return {
13
+ kind: "clearCell",
14
+ sheetName: op.sheetName,
15
+ address: op.address,
16
+ };
17
+ }
18
+ }
19
+ function restoreCellOp(engine, sheetName, address) {
20
+ const cellIndex = engine.workbook.getCellIndex(sheetName, address);
21
+ if (cellIndex === undefined) {
22
+ return { kind: "clearCell", sheetName, address };
23
+ }
24
+ const cell = engine.getCellByIndex(cellIndex);
25
+ if (cell.formula !== undefined) {
26
+ return {
27
+ kind: "setCellFormula",
28
+ sheetName,
29
+ address,
30
+ formula: cell.formula,
31
+ };
32
+ }
33
+ switch (cell.value.tag) {
34
+ case ValueTag.Empty:
35
+ case ValueTag.Error:
36
+ return { kind: "clearCell", sheetName, address };
37
+ case ValueTag.Number:
38
+ case ValueTag.Boolean:
39
+ case ValueTag.String:
40
+ return {
41
+ kind: "setCellValue",
42
+ sheetName,
43
+ address,
44
+ value: cell.value.value,
45
+ };
46
+ }
47
+ }
48
+ export function buildDeferredLiteralHistoryRecord(engine, ops, potentialNewCells) {
49
+ const literalOps = [];
50
+ for (let index = 0; index < ops.length; index += 1) {
51
+ const op = ops[index];
52
+ if (!op || (op.kind !== "setCellValue" && op.kind !== "clearCell")) {
53
+ return null;
54
+ }
55
+ literalOps.push(op);
56
+ }
57
+ return {
58
+ forward: potentialNewCells === undefined
59
+ ? { ops: literalOps.map((op) => cloneDeferredLiteralOp(op)) }
60
+ : { ops: literalOps.map((op) => cloneDeferredLiteralOp(op)), potentialNewCells },
61
+ inverse: {
62
+ ops: literalOps.toReversed().map((op) => restoreCellOp(engine, op.sheetName, op.address)),
63
+ potentialNewCells: literalOps.length,
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=deferred-literal-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred-literal-history.js","sourceRoot":"","sources":["../src/deferred-literal-history.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1 @@
1
- export * from "./errors.js";
2
- export * from "./headless-workbook.js";
3
- export * from "./types.js";
4
1
  export * from "./work-paper.js";
package/dist/index.js CHANGED
@@ -1,5 +1,2 @@
1
- export * from "./errors.js";
2
- export * from "./headless-workbook.js";
3
- export * from "./types.js";
4
1
  export * from "./work-paper.js";
5
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type SpreadsheetEngine } from "@bilig/core";
2
+ import type { WorkPaperSheet } from "./work-paper-types.js";
3
+ export declare function tryLoadInitialLiteralSheet(engine: SpreadsheetEngine, sheetId: number, content: WorkPaperSheet): boolean;
@@ -0,0 +1,12 @@
1
+ import { loadLiteralSheetIntoEmptySheet } from "@bilig/core";
2
+ export function tryLoadInitialLiteralSheet(engine, sheetId, content) {
3
+ if (sheetContainsFormulaContent(content)) {
4
+ return false;
5
+ }
6
+ loadLiteralSheetIntoEmptySheet(engine.workbook, engine.strings, sheetId, content);
7
+ return true;
8
+ }
9
+ function sheetContainsFormulaContent(content) {
10
+ return content.some((row) => row.some((value) => typeof value === "string" && value.trim().startsWith("=")));
11
+ }
12
+ //# sourceMappingURL=initial-sheet-load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initial-sheet-load.js","sourceRoot":"","sources":["../src/initial-sheet-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAA0B,MAAM,aAAa,CAAC;AAGrF,MAAM,UAAU,0BAA0B,CACxC,MAAyB,EACzB,OAAe,EACf,OAAuB;IAEvB,IAAI,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,8BAA8B,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAuB;IAC1D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1B,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC/E,CAAC;AACJ,CAAC"}
@@ -1,29 +1,18 @@
1
- import type { LiteralInput } from "@bilig/protocol";
2
- import type { HeadlessCellAddress, HeadlessSheet } from "./types.js";
3
- export type MatrixMutationOp = {
4
- kind: "clearCell";
5
- sheetName: string;
6
- address: string;
7
- } | {
8
- kind: "setCellValue";
9
- sheetName: string;
10
- address: string;
11
- value: LiteralInput;
12
- } | {
13
- kind: "setCellFormula";
14
- sheetName: string;
15
- address: string;
16
- formula: string;
17
- };
1
+ import type { EngineCellMutationRef } from "@bilig/core";
2
+ import type { WorkPaperCellAddress, WorkPaperSheet } from "./work-paper-types.js";
3
+ export type MatrixMutationRef = EngineCellMutationRef;
18
4
  export interface MatrixMutationPlan {
19
- ops: MatrixMutationOp[];
5
+ leadingRefs: MatrixMutationRef[];
6
+ formulaRefs: MatrixMutationRef[];
7
+ refs: MatrixMutationRef[];
20
8
  potentialNewCells: number;
9
+ trailingLiteralRefs: MatrixMutationRef[];
21
10
  }
22
11
  interface BuildMatrixMutationPlanArgs {
23
- target: HeadlessCellAddress;
24
- targetSheetName: string;
25
- content: HeadlessSheet;
26
- rewriteFormula: (formula: string, destination: HeadlessCellAddress, rowOffset: number, columnOffset: number) => string;
12
+ target: WorkPaperCellAddress;
13
+ content: WorkPaperSheet;
14
+ rewriteFormula: (formula: string, destination: WorkPaperCellAddress, rowOffset: number, columnOffset: number) => string;
15
+ deferLiteralAddresses?: ReadonlySet<string>;
27
16
  skipNulls?: boolean;
28
17
  }
29
18
  export declare function buildMatrixMutationPlan(args: BuildMatrixMutationPlanArgs): MatrixMutationPlan;
@@ -3,8 +3,26 @@ function isFormulaContent(content) {
3
3
  return typeof content === "string" && content.trim().startsWith("=");
4
4
  }
5
5
  export function buildMatrixMutationPlan(args) {
6
- const ops = [];
6
+ const leadingRefs = [];
7
+ const formulaRefs = [];
8
+ const trailingLiteralRefs = [];
7
9
  let potentialNewCells = 0;
10
+ const earliestFormulaRowByColumn = new Map();
11
+ args.content.forEach((row, rowOffset) => {
12
+ row.forEach((raw, columnOffset) => {
13
+ if (!isFormulaContent(raw)) {
14
+ return;
15
+ }
16
+ const destinationRow = args.target.row + rowOffset;
17
+ const destinationCol = args.target.col + columnOffset;
18
+ const earliestFormulaRow = earliestFormulaRowByColumn.get(destinationCol);
19
+ if (earliestFormulaRow === undefined || destinationRow < earliestFormulaRow) {
20
+ earliestFormulaRowByColumn.set(destinationCol, destinationRow);
21
+ }
22
+ });
23
+ });
24
+ const shouldDeferLiteral = (address, row, col) => args.deferLiteralAddresses?.has(address) === true ||
25
+ row > (earliestFormulaRowByColumn.get(col) ?? Number.POSITIVE_INFINITY);
8
26
  args.content.forEach((row, rowOffset) => {
9
27
  row.forEach((raw, columnOffset) => {
10
28
  const destination = {
@@ -15,28 +33,55 @@ export function buildMatrixMutationPlan(args) {
15
33
  const address = formatAddress(destination.row, destination.col);
16
34
  if (raw === null) {
17
35
  if (!args.skipNulls) {
18
- ops.push({ kind: "clearCell", sheetName: args.targetSheetName, address });
36
+ const ref = {
37
+ sheetId: args.target.sheet,
38
+ mutation: { kind: "clearCell", row: destination.row, col: destination.col },
39
+ };
40
+ if (shouldDeferLiteral(address, destination.row, destination.col)) {
41
+ trailingLiteralRefs.push(ref);
42
+ }
43
+ else {
44
+ leadingRefs.push(ref);
45
+ }
19
46
  }
20
47
  return;
21
48
  }
22
49
  potentialNewCells += 1;
23
50
  if (isFormulaContent(raw)) {
24
- ops.push({
25
- kind: "setCellFormula",
26
- sheetName: args.targetSheetName,
27
- address,
28
- formula: args.rewriteFormula(raw, destination, rowOffset, columnOffset),
51
+ formulaRefs.push({
52
+ sheetId: args.target.sheet,
53
+ mutation: {
54
+ kind: "setCellFormula",
55
+ row: destination.row,
56
+ col: destination.col,
57
+ formula: args.rewriteFormula(raw, destination, rowOffset, columnOffset),
58
+ },
29
59
  });
30
60
  return;
31
61
  }
32
- ops.push({
33
- kind: "setCellValue",
34
- sheetName: args.targetSheetName,
35
- address,
36
- value: raw,
37
- });
62
+ const ref = {
63
+ sheetId: args.target.sheet,
64
+ mutation: {
65
+ kind: "setCellValue",
66
+ row: destination.row,
67
+ col: destination.col,
68
+ value: raw,
69
+ },
70
+ };
71
+ if (shouldDeferLiteral(address, destination.row, destination.col)) {
72
+ trailingLiteralRefs.push(ref);
73
+ }
74
+ else {
75
+ leadingRefs.push(ref);
76
+ }
38
77
  });
39
78
  });
40
- return { ops, potentialNewCells };
79
+ return {
80
+ leadingRefs,
81
+ formulaRefs,
82
+ refs: [...leadingRefs, ...formulaRefs, ...trailingLiteralRefs],
83
+ potentialNewCells,
84
+ trailingLiteralRefs,
85
+ };
41
86
  }
42
87
  //# sourceMappingURL=matrix-mutation-plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matrix-mutation-plan.js","sourceRoot":"","sources":["../src/matrix-mutation-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA2B/C,SAAS,gBAAgB,CAAC,OAAuB;IAC/C,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAiC;IACvE,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;QACtC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;YAChC,MAAM,WAAW,GAAwB;gBACvC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS;gBAChC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,YAAY;aACpC,CAAC;YACF,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAEhE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO;YACT,CAAC;YAED,iBAAiB,IAAI,CAAC,CAAC;YAEvB,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,IAAI,CAAC,eAAe;oBAC/B,OAAO;oBACP,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC;iBACxE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,IAAI,CAAC,eAAe;gBAC/B,OAAO;gBACP,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"matrix-mutation-plan.js","sourceRoot":"","sources":["../src/matrix-mutation-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { EngineEvent } from "@bilig/protocol";
2
+ export interface TrackedEngineEvent {
3
+ invalidation: EngineEvent["invalidation"];
4
+ changedCellIndices: Uint32Array;
5
+ changedInputCount: number;
6
+ explicitChangedCount?: number;
7
+ hasInvalidatedRanges: boolean;
8
+ hasInvalidatedRows: boolean;
9
+ hasInvalidatedColumns: boolean;
10
+ }
11
+ export declare function captureTrackedEngineEvent(event: EngineEvent): TrackedEngineEvent;
@@ -0,0 +1,18 @@
1
+ function readExplicitChangedCount(event) {
2
+ const explicitChangedCount = Reflect.get(event, "explicitChangedCount");
3
+ return typeof explicitChangedCount === "number" && explicitChangedCount >= 0
4
+ ? explicitChangedCount
5
+ : undefined;
6
+ }
7
+ export function captureTrackedEngineEvent(event) {
8
+ return {
9
+ invalidation: event.invalidation,
10
+ changedCellIndices: Uint32Array.from(event.changedCellIndices),
11
+ changedInputCount: event.metrics.changedInputCount,
12
+ explicitChangedCount: readExplicitChangedCount(event),
13
+ hasInvalidatedRanges: event.invalidatedRanges.length > 0,
14
+ hasInvalidatedRows: event.invalidatedRows.length > 0,
15
+ hasInvalidatedColumns: event.invalidatedColumns.length > 0,
16
+ };
17
+ }
18
+ //# sourceMappingURL=tracked-engine-event-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-engine-event-refs.js","sourceRoot":"","sources":["../src/tracked-engine-event-refs.ts"],"names":[],"mappings":"AAYA,SAAS,wBAAwB,CAAC,KAAkB;IAClD,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACxE,OAAO,OAAO,oBAAoB,KAAK,QAAQ,IAAI,oBAAoB,IAAI,CAAC;QAC1E,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAkB;IAC1D,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,kBAAkB,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC9D,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB;QAClD,oBAAoB,EAAE,wBAAwB,CAAC,KAAK,CAAC;QACrD,oBAAoB,EAAE,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;QACxD,kBAAkB,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QACpD,qBAAqB,EAAE,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;KAC3D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,106 @@
1
+ import type { WorkPaperCellAddress } from "./work-paper-types.js";
2
+ declare class BaseWorkPaperError extends Error {
3
+ constructor(name: string, message: string);
4
+ }
5
+ export declare class WorkPaperConfigValueTooBigError extends BaseWorkPaperError {
6
+ constructor(paramName: string, maximum: number);
7
+ }
8
+ export declare class WorkPaperConfigValueTooSmallError extends BaseWorkPaperError {
9
+ constructor(paramName: string, minimum: number);
10
+ }
11
+ export declare class WorkPaperEvaluationSuspendedError extends BaseWorkPaperError {
12
+ constructor(message?: string);
13
+ }
14
+ export declare class WorkPaperExpectedOneOfValuesError extends BaseWorkPaperError {
15
+ constructor(values: string, paramName: string);
16
+ }
17
+ export declare class WorkPaperExpectedValueOfTypeError extends BaseWorkPaperError {
18
+ constructor(expectedType: string, paramName: string);
19
+ }
20
+ export declare class WorkPaperFunctionPluginValidationError extends BaseWorkPaperError {
21
+ constructor(message: string);
22
+ static functionNotDeclaredInPlugin(functionId: string, pluginName: string): WorkPaperFunctionPluginValidationError;
23
+ static functionMethodNotFound(functionName: string, pluginName: string): WorkPaperFunctionPluginValidationError;
24
+ }
25
+ export declare class WorkPaperInvalidAddressError extends BaseWorkPaperError {
26
+ constructor(address: WorkPaperCellAddress);
27
+ }
28
+ export declare class WorkPaperInvalidArgumentsError extends BaseWorkPaperError {
29
+ constructor(expectedArguments: string);
30
+ }
31
+ export declare class WorkPaperLanguageAlreadyRegisteredError extends BaseWorkPaperError {
32
+ constructor(languageCode?: string);
33
+ }
34
+ export declare class WorkPaperLanguageNotRegisteredError extends BaseWorkPaperError {
35
+ constructor(languageCode?: string);
36
+ }
37
+ export declare class WorkPaperMissingTranslationError extends BaseWorkPaperError {
38
+ constructor(key: string);
39
+ }
40
+ export declare class WorkPaperNamedExpressionDoesNotExistError extends BaseWorkPaperError {
41
+ constructor(expressionName: string);
42
+ }
43
+ export declare class WorkPaperNamedExpressionNameIsAlreadyTakenError extends BaseWorkPaperError {
44
+ constructor(expressionName: string);
45
+ }
46
+ export declare class WorkPaperNamedExpressionNameIsInvalidError extends BaseWorkPaperError {
47
+ constructor(expressionName: string);
48
+ }
49
+ export declare class WorkPaperNoOperationToRedoError extends BaseWorkPaperError {
50
+ constructor();
51
+ }
52
+ export declare class WorkPaperNoOperationToUndoError extends BaseWorkPaperError {
53
+ constructor();
54
+ }
55
+ export declare class WorkPaperNoRelativeAddressesAllowedError extends BaseWorkPaperError {
56
+ constructor();
57
+ }
58
+ export declare class WorkPaperNoSheetWithIdError extends BaseWorkPaperError {
59
+ constructor(sheetId: number);
60
+ }
61
+ export declare class WorkPaperNoSheetWithNameError extends BaseWorkPaperError {
62
+ constructor(sheetName: string);
63
+ }
64
+ export declare class WorkPaperNotAFormulaError extends BaseWorkPaperError {
65
+ constructor();
66
+ }
67
+ export declare class WorkPaperNothingToPasteError extends BaseWorkPaperError {
68
+ constructor();
69
+ }
70
+ export declare class WorkPaperProtectedFunctionTranslationError extends BaseWorkPaperError {
71
+ constructor(functionId: string);
72
+ }
73
+ export declare class WorkPaperSheetNameAlreadyTakenError extends BaseWorkPaperError {
74
+ constructor(sheetName: string);
75
+ }
76
+ export declare class WorkPaperSheetSizeLimitExceededError extends BaseWorkPaperError {
77
+ constructor();
78
+ }
79
+ export declare class WorkPaperSourceLocationHasArrayError extends BaseWorkPaperError {
80
+ constructor();
81
+ }
82
+ export declare class WorkPaperTargetLocationHasArrayError extends BaseWorkPaperError {
83
+ constructor();
84
+ }
85
+ export declare class WorkPaperUnableToParseError extends BaseWorkPaperError {
86
+ constructor(value: unknown);
87
+ }
88
+ export declare class WorkPaperConfigError extends BaseWorkPaperError {
89
+ constructor(message: string);
90
+ }
91
+ export declare class WorkPaperSheetError extends BaseWorkPaperError {
92
+ constructor(message: string);
93
+ }
94
+ export declare class WorkPaperNamedExpressionError extends BaseWorkPaperError {
95
+ constructor(message: string);
96
+ }
97
+ export declare class WorkPaperClipboardError extends BaseWorkPaperError {
98
+ constructor(message: string);
99
+ }
100
+ export declare class WorkPaperParseError extends BaseWorkPaperError {
101
+ constructor(message: string);
102
+ }
103
+ export declare class WorkPaperOperationError extends BaseWorkPaperError {
104
+ constructor(message: string);
105
+ }
106
+ export {};