@ricsam/formula-engine 0.2.11 → 0.2.13

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 +47 -3
  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/range-metadata-manager.cjs +135 -0
  10. package/dist/cjs/core/managers/range-metadata-manager.cjs.map +10 -0
  11. package/dist/cjs/core/managers/style-manager.cjs +19 -14
  12. package/dist/cjs/core/managers/style-manager.cjs.map +3 -3
  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 +47 -3
  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/range-metadata-manager.mjs +95 -0
  24. package/dist/mjs/core/managers/range-metadata-manager.mjs.map +10 -0
  25. package/dist/mjs/core/managers/style-manager.mjs +19 -14
  26. package/dist/mjs/core/managers/style-manager.mjs.map +3 -3
  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 +32 -1
  32. package/dist/types/core/managers/copy-manager.d.ts +11 -1
  33. package/dist/types/core/managers/range-metadata-manager.d.ts +22 -0
  34. package/dist/types/core/managers/style-manager.d.ts +4 -3
  35. package/dist/types/core/types.d.ts +26 -6
  36. package/package.json +1 -1
@@ -70,9 +70,10 @@ export declare class StyleManager {
70
70
  */
71
71
  removeSheetStyles(workbookName: string, sheetName: string): void;
72
72
  /**
73
- * Get the style for a specific cell
74
- * Returns the first matching style (first match wins)
75
- * Checks cellStyles first, then conditionalStyles
73
+ * Get the style for a specific cell.
74
+ * Direct cell styles compose in insertion order, with later styles overriding
75
+ * earlier styles for the same properties. Conditional styles then layer over
76
+ * direct styles for the properties they define.
76
77
  */
77
78
  getCellStyle(cellAddress: CellAddress): CellStyle | undefined;
78
79
  /**
@@ -371,14 +371,33 @@ 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;
387
+ borderColor?: string;
388
+ borderSides?: {
389
+ top?: boolean;
390
+ right?: boolean;
391
+ bottom?: boolean;
392
+ left?: boolean;
393
+ };
377
394
  fontSize?: number;
378
395
  bold?: boolean;
379
396
  italic?: boolean;
380
397
  underline?: boolean;
398
+ wrapText?: boolean;
381
399
  }
400
+ export type CopyCellsIncludePart = "content" | "style" | "cellMetadata" | "rangeMetadata";
382
401
  export interface CopyCellsOptions {
383
402
  /**
384
403
  * Whether this is a cut operation (clears source cells after copying)
@@ -387,18 +406,19 @@ export interface CopyCellsOptions {
387
406
  cut?: boolean;
388
407
  /**
389
408
  * What to include in the copy operation.
390
- * - Use 'all' as shorthand for ['content', 'style', 'metadata']
409
+ * - Use 'all' as shorthand for ['content', 'style', 'cellMetadata', 'rangeMetadata']
391
410
  * - Use array for fine-grained control over what to copy:
392
411
  * - ['content'] - copy only values/formulas
393
412
  * - ['style'] - copy only formatting
394
- * - ['metadata'] - copy only metadata (rich text, links, etc.)
413
+ * - ['cellMetadata'] - copy only cell metadata (rich text, links, etc.)
414
+ * - ['rangeMetadata'] - copy only range metadata
395
415
  * - ['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'
416
+ * - ['content', 'cellMetadata'] - copy content and cell metadata
417
+ * - ['style', 'rangeMetadata'] - copy formatting and range metadata
418
+ * - ['content', 'style', 'cellMetadata', 'rangeMetadata'] - same as 'all'
399
419
  * @default 'all'
400
420
  */
401
- include?: "all" | ("content" | "style" | "metadata")[];
421
+ include?: "all" | CopyCellsIncludePart[];
402
422
  /**
403
423
  * The type of the content to copy
404
424
  * 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.11",
3
+ "version": "0.2.13",
4
4
  "module": "./dist/mjs/lib.mjs",
5
5
  "scripts": {
6
6
  "test": "bun test",