@ricsam/formula-engine 0.2.10 → 0.2.12

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 (36) hide show
  1. package/dist/cjs/core/autofill-utils.cjs +68 -2
  2. package/dist/cjs/core/autofill-utils.cjs.map +3 -3
  3. package/dist/cjs/core/engine-snapshot.cjs +2 -2
  4. package/dist/cjs/core/engine-snapshot.cjs.map +3 -3
  5. package/dist/cjs/core/engine.cjs +89 -5
  6. package/dist/cjs/core/engine.cjs.map +3 -3
  7. package/dist/cjs/core/managers/copy-manager.cjs +163 -14
  8. package/dist/cjs/core/managers/copy-manager.cjs.map +3 -3
  9. package/dist/cjs/core/managers/named-expression-manager.cjs +18 -16
  10. package/dist/cjs/core/managers/named-expression-manager.cjs.map +3 -3
  11. package/dist/cjs/core/managers/range-metadata-manager.cjs +135 -0
  12. package/dist/cjs/core/managers/range-metadata-manager.cjs.map +10 -0
  13. package/dist/cjs/core/types.cjs.map +1 -1
  14. package/dist/cjs/package.json +1 -1
  15. package/dist/mjs/core/autofill-utils.mjs +68 -2
  16. package/dist/mjs/core/autofill-utils.mjs.map +3 -3
  17. package/dist/mjs/core/engine-snapshot.mjs +2 -2
  18. package/dist/mjs/core/engine-snapshot.mjs.map +3 -3
  19. package/dist/mjs/core/engine.mjs +89 -5
  20. package/dist/mjs/core/engine.mjs.map +3 -3
  21. package/dist/mjs/core/managers/copy-manager.mjs +163 -14
  22. package/dist/mjs/core/managers/copy-manager.mjs.map +3 -3
  23. package/dist/mjs/core/managers/named-expression-manager.mjs +18 -16
  24. package/dist/mjs/core/managers/named-expression-manager.mjs.map +3 -3
  25. package/dist/mjs/core/managers/range-metadata-manager.mjs +95 -0
  26. package/dist/mjs/core/managers/range-metadata-manager.mjs.map +10 -0
  27. package/dist/mjs/core/types.mjs.map +1 -1
  28. package/dist/mjs/package.json +1 -1
  29. package/dist/types/core/autofill-utils.d.ts +7 -1
  30. package/dist/types/core/engine-snapshot.d.ts +4 -2
  31. package/dist/types/core/engine.d.ts +34 -1
  32. package/dist/types/core/managers/copy-manager.d.ts +11 -1
  33. package/dist/types/core/managers/named-expression-manager.d.ts +1 -0
  34. package/dist/types/core/managers/range-metadata-manager.d.ts +22 -0
  35. package/dist/types/core/types.d.ts +19 -6
  36. package/package.json +1 -1
@@ -0,0 +1,22 @@
1
+ /**
2
+ * RangeMetadataManager - Manages arbitrary consumer-defined metadata attached
3
+ * to ranges rather than individual cells.
4
+ */
5
+ import type { CellAddress, RangeAddress, RangeMetadata, RangeMetadataInput } from "../types";
6
+ import type { RangeMetadataManagerSnapshot } from "../engine-snapshot";
7
+ export declare class RangeMetadataManager<TMetadata = unknown> {
8
+ private rangeMetadata;
9
+ addRangeMetadata(entry: RangeMetadataInput<TMetadata>): string;
10
+ removeRangeMetadata(id: string): boolean;
11
+ getAllRangeMetadata(): RangeMetadata<TMetadata>[];
12
+ getRangeMetadataForCell(cellAddress: CellAddress): RangeMetadata<TMetadata>[];
13
+ getRangeMetadataIntersectingWithRange(range: RangeAddress): RangeMetadata<TMetadata>[];
14
+ clearRangeMetadataInRange(range: RangeAddress): void;
15
+ removeWorkbookRangeMetadata(workbookName: string): void;
16
+ removeSheetRangeMetadata(workbookName: string, sheetName: string): void;
17
+ updateWorkbookName(oldName: string, newName: string): void;
18
+ updateSheetName(workbookName: string, oldSheetName: string, newSheetName: string): void;
19
+ resetRangeMetadata(rangeMetadata?: RangeMetadata<TMetadata>[]): void;
20
+ toSnapshot(): RangeMetadataManagerSnapshot;
21
+ restoreFromSnapshot(snapshot: RangeMetadataManagerSnapshot): void;
22
+ }
@@ -371,6 +371,16 @@ export interface DirectCellStyle {
371
371
  areas: RangeAddress[];
372
372
  style: CellStyle;
373
373
  }
374
+ export interface RangeMetadata<TMetadata = unknown> {
375
+ id: string;
376
+ areas: RangeAddress[];
377
+ metadata: TMetadata;
378
+ }
379
+ export interface RangeMetadataInput<TMetadata = unknown> {
380
+ id?: string;
381
+ areas: RangeAddress[];
382
+ metadata: TMetadata;
383
+ }
374
384
  export interface CellStyle {
375
385
  backgroundColor?: string;
376
386
  color?: string;
@@ -378,7 +388,9 @@ export interface CellStyle {
378
388
  bold?: boolean;
379
389
  italic?: boolean;
380
390
  underline?: boolean;
391
+ wrapText?: boolean;
381
392
  }
393
+ export type CopyCellsIncludePart = "content" | "style" | "cellMetadata" | "rangeMetadata";
382
394
  export interface CopyCellsOptions {
383
395
  /**
384
396
  * Whether this is a cut operation (clears source cells after copying)
@@ -387,18 +399,19 @@ export interface CopyCellsOptions {
387
399
  cut?: boolean;
388
400
  /**
389
401
  * What to include in the copy operation.
390
- * - Use 'all' as shorthand for ['content', 'style', 'metadata']
402
+ * - Use 'all' as shorthand for ['content', 'style', 'cellMetadata', 'rangeMetadata']
391
403
  * - Use array for fine-grained control over what to copy:
392
404
  * - ['content'] - copy only values/formulas
393
405
  * - ['style'] - copy only formatting
394
- * - ['metadata'] - copy only metadata (rich text, links, etc.)
406
+ * - ['cellMetadata'] - copy only cell metadata (rich text, links, etc.)
407
+ * - ['rangeMetadata'] - copy only range metadata
395
408
  * - ['content', 'style'] - copy content and formatting
396
- * - ['content', 'metadata'] - copy content and metadata
397
- * - ['style', 'metadata'] - copy formatting and metadata
398
- * - ['content', 'style', 'metadata'] - same as 'all'
409
+ * - ['content', 'cellMetadata'] - copy content and cell metadata
410
+ * - ['style', 'rangeMetadata'] - copy formatting and range metadata
411
+ * - ['content', 'style', 'cellMetadata', 'rangeMetadata'] - same as 'all'
399
412
  * @default 'all'
400
413
  */
401
- include?: "all" | ("content" | "style" | "metadata")[];
414
+ include?: "all" | CopyCellsIncludePart[];
402
415
  /**
403
416
  * The type of the content to copy
404
417
  * value: Copy the value from the source to the target,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ricsam/formula-engine",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "module": "./dist/mjs/lib.mjs",
5
5
  "scripts": {
6
6
  "test": "bun test",