@meonode/canvas 1.7.2 → 2.0.1

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 (85) hide show
  1. package/README.md +324 -154
  2. package/dist/cjs/canvas/canvas.type.d.ts +72 -9
  3. package/dist/cjs/canvas/canvas.type.d.ts.map +1 -1
  4. package/dist/cjs/canvas/{chart.canvas.util.d.ts → chart.canvas.d.ts} +2 -2
  5. package/dist/cjs/canvas/chart.canvas.d.ts.map +1 -0
  6. package/dist/cjs/canvas/{chart.canvas.util.js → chart.canvas.js} +23 -23
  7. package/dist/cjs/canvas/chart.canvas.js.map +1 -0
  8. package/dist/{esm/canvas/grid.canvas.util.d.ts → cjs/canvas/grid.canvas.d.ts} +2 -2
  9. package/dist/cjs/canvas/grid.canvas.d.ts.map +1 -0
  10. package/dist/cjs/canvas/{grid.canvas.util.js → grid.canvas.js} +4 -4
  11. package/dist/cjs/canvas/grid.canvas.js.map +1 -0
  12. package/dist/cjs/canvas/image.canvas.d.ts +54 -0
  13. package/dist/cjs/canvas/image.canvas.d.ts.map +1 -0
  14. package/dist/cjs/canvas/{image.canvas.util.js → image.canvas.js} +40 -140
  15. package/dist/cjs/canvas/image.canvas.js.map +1 -0
  16. package/dist/{esm/canvas/layout.canvas.util.d.ts → cjs/canvas/layout.canvas.d.ts} +1 -1
  17. package/dist/cjs/canvas/layout.canvas.d.ts.map +1 -0
  18. package/dist/cjs/canvas/{layout.canvas.util.js → layout.canvas.js} +1 -1
  19. package/dist/cjs/canvas/layout.canvas.js.map +1 -0
  20. package/dist/{esm/canvas/root.canvas.util.d.ts → cjs/canvas/root.canvas.d.ts} +29 -9
  21. package/dist/cjs/canvas/root.canvas.d.ts.map +1 -0
  22. package/dist/cjs/canvas/{root.canvas.util.js → root.canvas.js} +75 -55
  23. package/dist/cjs/canvas/root.canvas.js.map +1 -0
  24. package/dist/cjs/canvas/{text.canvas.util.d.ts → text.canvas.d.ts} +2 -2
  25. package/dist/cjs/canvas/text.canvas.d.ts.map +1 -0
  26. package/dist/cjs/canvas/{text.canvas.util.js → text.canvas.js} +3 -3
  27. package/dist/cjs/canvas/text.canvas.js.map +1 -0
  28. package/dist/cjs/index.d.ts +8 -7
  29. package/dist/cjs/index.d.ts.map +1 -1
  30. package/dist/cjs/index.js +19 -17
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/util/disk.cache.d.ts +6 -0
  33. package/dist/cjs/util/disk.cache.d.ts.map +1 -1
  34. package/dist/cjs/util/disk.cache.js +39 -0
  35. package/dist/cjs/util/disk.cache.js.map +1 -1
  36. package/dist/cjs/worker/render.worker.js +2 -2
  37. package/dist/cjs/worker/render.worker.js.map +1 -1
  38. package/dist/esm/canvas/canvas.type.d.ts +72 -9
  39. package/dist/esm/canvas/canvas.type.d.ts.map +1 -1
  40. package/dist/esm/canvas/{chart.canvas.util.d.ts → chart.canvas.d.ts} +2 -2
  41. package/dist/esm/canvas/chart.canvas.d.ts.map +1 -0
  42. package/dist/esm/canvas/{chart.canvas.util.js → chart.canvas.js} +4 -4
  43. package/dist/{cjs/canvas/grid.canvas.util.d.ts → esm/canvas/grid.canvas.d.ts} +2 -2
  44. package/dist/esm/canvas/grid.canvas.d.ts.map +1 -0
  45. package/dist/esm/canvas/{grid.canvas.util.js → grid.canvas.js} +1 -1
  46. package/dist/esm/canvas/image.canvas.d.ts +54 -0
  47. package/dist/esm/canvas/image.canvas.d.ts.map +1 -0
  48. package/dist/esm/canvas/{image.canvas.util.js → image.canvas.js} +39 -136
  49. package/dist/{cjs/canvas/layout.canvas.util.d.ts → esm/canvas/layout.canvas.d.ts} +1 -1
  50. package/dist/esm/canvas/layout.canvas.d.ts.map +1 -0
  51. package/dist/{cjs/canvas/root.canvas.util.d.ts → esm/canvas/root.canvas.d.ts} +29 -9
  52. package/dist/esm/canvas/root.canvas.d.ts.map +1 -0
  53. package/dist/esm/canvas/{root.canvas.util.js → root.canvas.js} +63 -44
  54. package/dist/esm/canvas/{text.canvas.util.d.ts → text.canvas.d.ts} +2 -2
  55. package/dist/esm/canvas/text.canvas.d.ts.map +1 -0
  56. package/dist/esm/canvas/{text.canvas.util.js → text.canvas.js} +1 -1
  57. package/dist/esm/index.d.ts +8 -7
  58. package/dist/esm/index.d.ts.map +1 -1
  59. package/dist/esm/index.js +7 -6
  60. package/dist/esm/util/disk.cache.d.ts +6 -0
  61. package/dist/esm/util/disk.cache.d.ts.map +1 -1
  62. package/dist/esm/util/disk.cache.js +38 -1
  63. package/dist/esm/worker/render.worker.js +1 -1
  64. package/package.json +3 -1
  65. package/dist/cjs/canvas/chart.canvas.util.d.ts.map +0 -1
  66. package/dist/cjs/canvas/chart.canvas.util.js.map +0 -1
  67. package/dist/cjs/canvas/grid.canvas.util.d.ts.map +0 -1
  68. package/dist/cjs/canvas/grid.canvas.util.js.map +0 -1
  69. package/dist/cjs/canvas/image.canvas.util.d.ts +0 -82
  70. package/dist/cjs/canvas/image.canvas.util.d.ts.map +0 -1
  71. package/dist/cjs/canvas/image.canvas.util.js.map +0 -1
  72. package/dist/cjs/canvas/layout.canvas.util.d.ts.map +0 -1
  73. package/dist/cjs/canvas/layout.canvas.util.js.map +0 -1
  74. package/dist/cjs/canvas/root.canvas.util.d.ts.map +0 -1
  75. package/dist/cjs/canvas/root.canvas.util.js.map +0 -1
  76. package/dist/cjs/canvas/text.canvas.util.d.ts.map +0 -1
  77. package/dist/cjs/canvas/text.canvas.util.js.map +0 -1
  78. package/dist/esm/canvas/chart.canvas.util.d.ts.map +0 -1
  79. package/dist/esm/canvas/grid.canvas.util.d.ts.map +0 -1
  80. package/dist/esm/canvas/image.canvas.util.d.ts +0 -82
  81. package/dist/esm/canvas/image.canvas.util.d.ts.map +0 -1
  82. package/dist/esm/canvas/layout.canvas.util.d.ts.map +0 -1
  83. package/dist/esm/canvas/root.canvas.util.d.ts.map +0 -1
  84. package/dist/esm/canvas/text.canvas.util.d.ts.map +0 -1
  85. /package/dist/esm/canvas/{layout.canvas.util.js → layout.canvas.js} +0 -0
@@ -1,7 +1,7 @@
1
- import { BoxNode } from '../canvas/layout.canvas.util.js';
2
- import type { TextNode } from '../canvas/text.canvas.util.js';
3
- import type { ImageNode } from '../canvas/image.canvas.util.js';
4
- import type { GridNode } from '../canvas/grid.canvas.util.js';
1
+ import { BoxNode } from '../canvas/layout.canvas.js';
2
+ import type { TextNode } from '../canvas/text.canvas.js';
3
+ import type { ImageNode } from '../canvas/image.canvas.js';
4
+ import type { GridNode } from '../canvas/grid.canvas.js';
5
5
  import type { FontVariantSetting } from 'skia-canvas';
6
6
  import * as Style from '../constant/common.const.js';
7
7
  export interface BaseProps {
@@ -515,17 +515,80 @@ export interface GridItemProps extends BoxProps {
515
515
  gridArea?: string;
516
516
  }
517
517
  /**
518
- * Defines the properties for a RootNode.
518
+ * Root component props for canvas rendering.
519
+ * Extends BoxProps for layout and styling capabilities.
519
520
  */
520
521
  export interface RootProps extends BoxProps {
521
- /** Width of the canvas in pixels */
522
+ /**
523
+ * Width of the canvas in pixels.
524
+ * @required
525
+ */
522
526
  width: number;
523
- /** Optional height of the canvas in pixels */
527
+ /**
528
+ * Optional height of the canvas in pixels.
529
+ * If not set, height is calculated from content.
530
+ */
524
531
  height?: number;
525
- /** Scale factor for rendering (e.g., 2 for 2x resolution) */
532
+ /**
533
+ * Scale factor for high-DPI rendering.
534
+ * @default 1
535
+ * @example 2 // For 2x Retina displays
536
+ */
526
537
  scale?: number;
527
- /** Font files to register for use */
538
+ /**
539
+ * Font files to register for use in the canvas.
540
+ */
528
541
  fonts?: FontRegistrationInfo[];
542
+ /**
543
+ * Write fetched images to disk during this render for faster re-decode
544
+ * when the same source appears multiple times. Disk entries are deleted
545
+ * when the render completes — no cross-render sharing.
546
+ * @default false
547
+ */
548
+ useDiskCache?: boolean;
549
+ /**
550
+ * Enable worker thread rendering for non-blocking operation.
551
+ * Worker mode renders in a separate thread to avoid blocking the event loop.
552
+ * @default true
553
+ */
554
+ workerMode?: boolean;
555
+ /**
556
+ * Number of worker threads to use when workerMode is enabled.
557
+ * Only applies when workerMode is true or undefined (default).
558
+ * Has no effect when workerMode: false.
559
+ * @default cpus().length - 1
560
+ */
561
+ workers?: number;
562
+ }
563
+ /**
564
+ * Root props when worker mode is enabled (default behavior).
565
+ * Includes .release() method for memory cleanup.
566
+ */
567
+ export interface RootPropsWithWorker extends RootProps {
568
+ /**
569
+ * Worker mode enabled or default (undefined defaults to true).
570
+ */
571
+ workerMode?: true;
572
+ /**
573
+ * Number of worker threads (only available in worker mode).
574
+ */
575
+ workers?: number;
576
+ }
577
+ /**
578
+ * Root props when worker mode is disabled.
579
+ * Returns plain Canvas without .release() method.
580
+ * workers prop is not available in this mode.
581
+ */
582
+ export interface RootPropsWithoutWorker extends RootProps {
583
+ /**
584
+ * Worker mode explicitly disabled.
585
+ */
586
+ workerMode: false;
587
+ /**
588
+ * workers prop is not available when workerMode is false.
589
+ * Setting this will cause a TypeScript error.
590
+ */
591
+ workers?: never;
529
592
  }
530
593
  /**
531
594
  * Tracks can be specified as:
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.type.d.ts","sourceRoot":"","sources":["../../../src/canvas/canvas.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas.type.d.ts","sourceRoot":"","sources":["../../../src/canvas/canvas.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AAEnD,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,CAAA;AAEpG,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GAChF;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GACnF;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GAChF;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GAClF;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GAC1F;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAC5D;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,uBAAuB,CAAA;KAAE,CAAA;CAAE,CAAA;AAExI,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAElC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAElC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAE/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAEjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAEjC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAEnC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;IAE9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;IAExB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;IAEvB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;IAE1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAE1C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAElG;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,CAAA;IAElH;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAEjG;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAA;IAElE;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAEnC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAA;IAEjG;;;;;OAKG;IACH,YAAY,CAAC,EACT,OAAO,CAAC;QACN,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAC,GACF,MAAM,CAAA;IAEV;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAA;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;IAEvB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAE3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAA;IAErB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA;IAE/F;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAE3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;OAKG;IACH,QAAQ,CAAC,EACL;QACE,IAAI,EAAE,QAAQ,CAAA;QACd,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,SAAS,EACL,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,gBAAgB,CAAA;KACrB,GACD;QACE,IAAI,EAAE,QAAQ,CAAA;QACd,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,SAAS,CAAC,EACN,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,gBAAgB,CAAA;KACrB,CAAA;IAEL;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAA;IAE1B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAA;IAI7C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAE/G;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAE/B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAErE;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAE3C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAA;IAEjE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAA;IAG/D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAE9B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD;;OAEG;IACH,UAAU,CAAC,EAAE,IAAI,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD;;OAEG;IACH,UAAU,EAAE,KAAK,CAAA;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAA;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,MAAM,GAAG,CAAA;AAE1F;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IAEjC;;;OAGG;IACH,YAAY,CAAC,EAAE,aAAa,EAAE,CAAA;IAE9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAA;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAA;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC/B,CAAC,CAAC,EAAE,OAAO,CAAA;IACX,CAAC,CAAC,EAAE,OAAO,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,CAAC;IACxI,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAE3B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAA;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5D;;OAEG;IACH,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;IAErC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAA;IAEhE;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;IAE5F;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAA;CACzB;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAA;AAEzG,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAA;AAElG,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;CACtC;AAGD,UAAU,gBAAgB,CAAC,CAAC,SAAS,SAAS;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;IAC/G,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAC/F;AAGD,UAAU,6BAA6B;IACrC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;IAC9G,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/D;AAGD,UAAU,uBAAuB;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAGD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,MAAM,GACpE,gBAAgB,CAAC,CAAC,CAAC,GAAG,6BAA6B,GACnD,CAAC,SAAS,KAAK,GAAG,UAAU,GAC1B,gBAAgB,CAAC,CAAC,CAAC,GAAG,uBAAuB,GAC7C,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAEzB;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IAClC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;IAClC,uBAAuB,CAAC,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAA;IAC9D,sBAAsB,CAAC,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAA;IAC7D,sBAAsB,CAAC,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,CAAA;CAChE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,QAAQ;IAC/D;;;OAGG;IACH,IAAI,EAAE,CAAC,CAAA;IAEP;;;;OAIG;IACH,IAAI,EAAE,CAAC,SAAS,KAAK,GAAG,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,EAAE,CAAA;IAEzE;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAC1B"}
@@ -1,4 +1,4 @@
1
- import { BoxNode } from '../canvas/layout.canvas.util.js';
1
+ import { BoxNode } from '../canvas/layout.canvas.js';
2
2
  import type { BaseProps, ChartProps, ChartType, CanvasElement } from '../canvas/canvas.type.js';
3
3
  import type { CanvasRenderingContext2D } from 'skia-canvas';
4
4
  export declare class ChartNode<T extends ChartType> extends BoxNode {
@@ -18,4 +18,4 @@ export declare class ChartNode<T extends ChartType> extends BoxNode {
18
18
  private generateColor;
19
19
  }
20
20
  export declare const Chart: <T extends ChartType>(props: ChartProps<T> & BaseProps) => CanvasElement;
21
- //# sourceMappingURL=chart.canvas.util.d.ts.map
21
+ //# sourceMappingURL=chart.canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.canvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/chart.canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,2BAA2B,CAAA;AACxE,OAAO,KAAK,EACV,SAAS,EAGT,UAAU,EACV,SAAS,EAET,aAAa,EAEd,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AA2B3D,qBAAa,SAAS,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,OAAO;IACzD,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAoD;gBAE5D,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS;IAyB5C,OAAO,CAAC,aAAa;IAqBrB,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA8B3G,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,eAAe;IAqGvB,OAAO,CAAC,cAAc;IA4JtB,OAAO,CAAC,eAAe;IA0IvB,OAAO,CAAC,cAAc;IA4EtB,OAAO,CAAC,mBAAmB;IA4E3B,OAAO,CAAC,YAAY;IA8IpB,OAAO,CAAC,aAAa;CAItB;AAED,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,SAAS,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,KAAG,aAG5E,CAAA"}
@@ -1,32 +1,32 @@
1
1
  'use strict';
2
2
 
3
- var layout_canvas_util = require('./layout.canvas.util.js');
3
+ var layout_canvas = require('./layout.canvas.js');
4
4
  var common_const = require('../constant/common.const.js');
5
- var text_canvas_util = require('./text.canvas.util.js');
6
- var image_canvas_util = require('./image.canvas.util.js');
5
+ var text_canvas = require('./text.canvas.js');
6
+ var image_canvas = require('./image.canvas.js');
7
7
 
8
8
  /**
9
9
  * Local buildTree for pre-computed render function results.
10
10
  * Handles only node types that render functions would return (Box, Column, Row, Text, Image).
11
- * Avoids circular dependency with root.canvas.util.ts.
11
+ * Avoids circular dependency with root.canvas.ts.
12
12
  */
13
13
  function buildDescriptorTree(descriptor) {
14
14
  switch (descriptor.__type) {
15
15
  case 'Box':
16
- return new layout_canvas_util.BoxNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) });
16
+ return new layout_canvas.BoxNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) });
17
17
  case 'Column':
18
- return new layout_canvas_util.ColumnNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) });
18
+ return new layout_canvas.ColumnNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) });
19
19
  case 'Row':
20
- return new layout_canvas_util.RowNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) });
20
+ return new layout_canvas.RowNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) });
21
21
  case 'Image':
22
- return new image_canvas_util.ImageNode(descriptor.props);
22
+ return new image_canvas.ImageNode(descriptor.props);
23
23
  case 'Text':
24
- return new text_canvas_util.TextNode(descriptor.text, descriptor.props);
24
+ return new text_canvas.TextNode(descriptor.text, descriptor.props);
25
25
  default:
26
- return new layout_canvas_util.BoxNode({});
26
+ return new layout_canvas.BoxNode({});
27
27
  }
28
28
  }
29
- class ChartNode extends layout_canvas_util.BoxNode {
29
+ class ChartNode extends layout_canvas.BoxNode {
30
30
  chartData;
31
31
  chartType;
32
32
  chartOptions;
@@ -265,7 +265,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
265
265
  const value = maxValue - (maxValue / 5) * i;
266
266
  const label = chartOptions._preComputedYAxisLabels?.[i] ??
267
267
  (chartOptions.yAxisLabelFormatter ? chartOptions.yAxisLabelFormatter(value) : this.getSmartYAxisFormatter(maxValue)(value));
268
- text_canvas_util.TextNode.renderSimpleText(ctx, label, chartX - 5, gridY, {
268
+ text_canvas.TextNode.renderSimpleText(ctx, label, chartX - 5, gridY, {
269
269
  color: chartOptions.yAxisColor || chartOptions.axisColor || '#000',
270
270
  fontSize: chartOptions.yAxisFontSize || 12,
271
271
  fontFamily: this.props.fontFamily,
@@ -308,7 +308,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
308
308
  }
309
309
  }
310
310
  else {
311
- text_canvas_util.TextNode.renderSimpleText(ctx, value.toString(), valueX, valueY, {
311
+ text_canvas.TextNode.renderSimpleText(ctx, value.toString(), valueX, valueY, {
312
312
  color: chartOptions.valueColor || '#000',
313
313
  fontSize: chartOptions.valueFontSize || 12,
314
314
  fontFamily: this.props.fontFamily,
@@ -339,7 +339,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
339
339
  }
340
340
  }
341
341
  else {
342
- text_canvas_util.TextNode.renderSimpleText(ctx, displayLabel, groupX + (groupWidth - barSpacing) / 2, chartY + finalChartHeight + labelHeight / 2, {
342
+ text_canvas.TextNode.renderSimpleText(ctx, displayLabel, groupX + (groupWidth - barSpacing) / 2, chartY + finalChartHeight + labelHeight / 2, {
343
343
  color: chartOptions.labelColor || chartOptions.axisColor,
344
344
  fontSize: chartOptions.labelFontSize,
345
345
  fontFamily: this.props.fontFamily,
@@ -404,7 +404,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
404
404
  const value = maxValue - (maxValue / 5) * i;
405
405
  const label = chartOptions._preComputedYAxisLabels?.[i] ??
406
406
  (chartOptions.yAxisLabelFormatter ? chartOptions.yAxisLabelFormatter(value) : this.getSmartYAxisFormatter(maxValue)(value));
407
- text_canvas_util.TextNode.renderSimpleText(ctx, label, chartX - 5, gridY, {
407
+ text_canvas.TextNode.renderSimpleText(ctx, label, chartX - 5, gridY, {
408
408
  color: chartOptions.yAxisColor || chartOptions.axisColor || '#000',
409
409
  fontSize: chartOptions.yAxisFontSize || 12,
410
410
  fontFamily: this.props.fontFamily,
@@ -464,7 +464,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
464
464
  }
465
465
  }
466
466
  else {
467
- text_canvas_util.TextNode.renderSimpleText(ctx, displayLabel, pointX, chartY + finalChartHeight + labelHeight / 2, {
467
+ text_canvas.TextNode.renderSimpleText(ctx, displayLabel, pointX, chartY + finalChartHeight + labelHeight / 2, {
468
468
  color: chartOptions.labelColor || chartOptions.axisColor,
469
469
  fontSize: chartOptions.labelFontSize,
470
470
  fontFamily: this.props.fontFamily,
@@ -531,7 +531,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
531
531
  }
532
532
  }
533
533
  else {
534
- text_canvas_util.TextNode.renderSimpleText(ctx, point.label, labelX, labelY, {
534
+ text_canvas.TextNode.renderSimpleText(ctx, point.label, labelX, labelY, {
535
535
  color: chartOptions.labelColor,
536
536
  fontSize: chartOptions.labelFontSize,
537
537
  fontFamily: this.props.fontFamily,
@@ -599,7 +599,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
599
599
  }
600
600
  }
601
601
  else {
602
- text_canvas_util.TextNode.renderSimpleText(ctx, point.label, labelX, labelY, {
602
+ text_canvas.TextNode.renderSimpleText(ctx, point.label, labelX, labelY, {
603
603
  color: chartOptions.labelColor,
604
604
  fontSize: chartOptions.labelFontSize,
605
605
  fontFamily: this.props.fontFamily,
@@ -619,7 +619,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
619
619
  if (_preComputedLegendItems) {
620
620
  const finalNodes = _preComputedLegendItems.filter((desc) => !!desc).map(desc => buildDescriptorTree(desc));
621
621
  if (finalNodes.length > 0) {
622
- const legendContainer = new layout_canvas_util.RowNode({
622
+ const legendContainer = new layout_canvas.RowNode({
623
623
  children: finalNodes,
624
624
  width,
625
625
  height,
@@ -654,7 +654,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
654
654
  }
655
655
  const finalNodes = legendNodes.filter((node) => !!node);
656
656
  if (finalNodes.length > 0) {
657
- const legendContainer = new layout_canvas_util.RowNode({
657
+ const legendContainer = new layout_canvas.RowNode({
658
658
  children: finalNodes,
659
659
  width,
660
660
  height,
@@ -704,7 +704,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
704
704
  const boxY = currentY + (itemHeight - boxSize) / 2;
705
705
  ctx.fillStyle = item.color;
706
706
  ctx.fillRect(currentX, boxY, boxSize, boxSize);
707
- text_canvas_util.TextNode.renderSimpleText(ctx, item.label, currentX + boxSize + 5, currentY + itemHeight / 2, {
707
+ text_canvas.TextNode.renderSimpleText(ctx, item.label, currentX + boxSize + 5, currentY + itemHeight / 2, {
708
708
  color: this.chartOptions?.labelColor,
709
709
  fontSize,
710
710
  fontFamily: this.props.fontFamily,
@@ -728,7 +728,7 @@ class ChartNode extends layout_canvas_util.BoxNode {
728
728
  ('datasets' in this.chartData ? this.chartData.datasets[index].color : point.color) || this.generateColor(index);
729
729
  ctx.fillRect(itemX, boxY, boxSize, boxSize);
730
730
  const label = 'datasets' in this.chartData ? point.label : `${point.label} (${point.value})`;
731
- text_canvas_util.TextNode.renderSimpleText(ctx, label, itemX + boxSize + 5, itemY + itemHeight / 2, {
731
+ text_canvas.TextNode.renderSimpleText(ctx, label, itemX + boxSize + 5, itemY + itemHeight / 2, {
732
732
  color: this.chartOptions?.labelColor,
733
733
  fontSize,
734
734
  fontFamily: this.props.fontFamily,
@@ -750,4 +750,4 @@ const Chart = (props) => ({
750
750
 
751
751
  exports.Chart = Chart;
752
752
  exports.ChartNode = ChartNode;
753
- //# sourceMappingURL=chart.canvas.util.js.map
753
+ //# sourceMappingURL=chart.canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.canvas.js","sources":["../../../../src/canvas/chart.canvas.ts"],"sourcesContent":["import { BoxNode, ColumnNode, RowNode } from '@/canvas/layout.canvas.js'\nimport type {\n BaseProps,\n CartesianChartData,\n ChartDataset,\n ChartProps,\n ChartType,\n PieChartDataPoint,\n CanvasElement,\n PreComputedChartOptions,\n} from '@/canvas/canvas.type.js'\nimport type { CanvasRenderingContext2D } from 'skia-canvas'\nimport { Style } from '@/constant/common.const.js'\nimport { TextNode } from '@/canvas/text.canvas.js'\nimport { ImageNode } from '@/canvas/image.canvas.js'\n\n/**\n * Local buildTree for pre-computed render function results.\n * Handles only node types that render functions would return (Box, Column, Row, Text, Image).\n * Avoids circular dependency with root.canvas.ts.\n */\nfunction buildDescriptorTree(descriptor: CanvasElement): BoxNode {\n switch (descriptor.__type) {\n case 'Box':\n return new BoxNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) })\n case 'Column':\n return new ColumnNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) })\n case 'Row':\n return new RowNode({ ...descriptor.props, children: descriptor.children?.map(buildDescriptorTree) })\n case 'Image':\n return new ImageNode(descriptor.props as any)\n case 'Text':\n return new TextNode(descriptor.text, descriptor.props)\n default:\n return new BoxNode({})\n }\n}\n\nexport class ChartNode<T extends ChartType> extends BoxNode {\n private chartData: CartesianChartData | PieChartDataPoint[]\n private chartType: ChartProps<T>['type']\n private chartOptions: ChartProps<T>['options'] & PreComputedChartOptions\n\n constructor(props: ChartProps<T> & BaseProps) {\n // Set default intrinsic size if not provided\n const defaultWidth = props.width ?? 400\n const defaultHeight = props.height ?? 300\n\n super({\n ...props,\n width: defaultWidth,\n height: defaultHeight,\n name: 'Chart',\n })\n\n this.chartData = props.data\n this.chartType = props.type\n this.chartOptions = {\n showLabels: true,\n showLegend: true,\n labelFontSize: 12,\n legendPosition: 'bottom',\n ...props.options,\n } as ChartProps<T>['options'] & PreComputedChartOptions\n\n this.validateProps()\n }\n\n private validateProps() {\n if (this.chartType === 'bar' || this.chartType === 'line') {\n const data = this.chartData as CartesianChartData\n if (!data.labels || !data.datasets) {\n console.warn(`[ChartNode] Warning: Cartesian chart (${this.chartType}) is missing 'labels' or 'datasets' in its data prop.`)\n }\n data.datasets?.forEach((dataset, i) => {\n if (dataset.data.length !== data.labels.length) {\n console.warn(\n `[ChartNode] Warning: In dataset ${i} (\"${dataset.label}\"), the number of data points (${dataset.data.length}) does not match the number of labels (${data.labels.length}).`,\n )\n }\n })\n } else if (this.chartType === 'pie' || this.chartType === 'doughnut') {\n const data = this.chartData as PieChartDataPoint[]\n if (!Array.isArray(data)) {\n console.warn(`[ChartNode] Warning: ${this.chartType} chart expects an array of PieChartDataPoint, but received a different type.`)\n }\n }\n }\n\n protected _renderContent(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number) {\n // First render background/borders from parent\n super._renderContent(ctx, x, y, width, height)\n\n // Then render chart-specific content\n const paddingLeft = this.node.getComputedPadding(Style.Edge.Left)\n const paddingRight = this.node.getComputedPadding(Style.Edge.Right)\n const paddingTop = this.node.getComputedPadding(Style.Edge.Top)\n const paddingBottom = this.node.getComputedPadding(Style.Edge.Bottom)\n const contentX = x + paddingLeft\n const contentY = y + paddingTop\n const contentWidth = width - paddingLeft - paddingRight\n const contentHeight = height - paddingTop - paddingBottom\n\n switch (this.chartType) {\n case 'bar':\n this.renderBarChart(ctx, contentX, contentY, contentWidth, contentHeight)\n break\n case 'line':\n this.renderLineChart(ctx, contentX, contentY, contentWidth, contentHeight)\n break\n case 'pie':\n this.renderPieChart(ctx, contentX, contentY, contentWidth, contentHeight)\n break\n case 'doughnut':\n this.renderDoughnutChart(ctx, contentX, contentY, contentWidth, contentHeight)\n break\n }\n }\n\n private getSmartYAxisFormatter(maxValue: number): (v: number) => string {\n const absMax = Math.abs(maxValue)\n\n // Thresholds with corresponding decimal places, divisors, and suffixes\n const thresholds = [\n { min: 1000000, decimals: 1, divisor: 1000000, suffix: 'M' },\n { min: 1000, decimals: 0, divisor: 1, suffix: '' },\n { min: 100, decimals: 1, divisor: 1, suffix: '' },\n { min: 1, decimals: 2, divisor: 1, suffix: '' },\n { min: 0, decimals: 4, divisor: 1, suffix: '' },\n ]\n\n let config = thresholds[thresholds.length - 1]\n for (const threshold of thresholds) {\n if (absMax >= threshold.min) {\n config = threshold\n break\n }\n }\n\n return (v: number) => {\n const scaled = v / config.divisor\n const factor = Math.pow(10, config.decimals)\n const rounded = Math.round(scaled * factor) / factor\n return rounded.toString() + config.suffix\n }\n }\n\n private getLegendLayout(ctx: CanvasRenderingContext2D, totalWidth: number, totalHeight: number) {\n if (!this.chartOptions?.showLegend) {\n return { x: 0, y: 0, width: 0, height: 0, chartWidth: totalWidth, chartHeight: totalHeight, chartX: 0, chartY: 0 }\n }\n\n const legendItems = 'datasets' in this.chartData ? this.chartData.datasets : (this.chartData as PieChartDataPoint[])\n if (legendItems.length === 0) {\n return { x: 0, y: 0, width: 0, height: 0, chartWidth: totalWidth, chartHeight: totalHeight, chartX: 0, chartY: 0 }\n }\n\n const fontSize = this.chartOptions?.labelFontSize || 12\n ctx.font = `${fontSize}px ${this.props.fontFamily || 'sans-serif'}`\n const metrics = ctx.measureText('Mg')\n const textHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n const itemHeight = Math.ceil(textHeight + 8)\n const position = this.chartOptions.legendPosition\n const boxSize = Math.min(15, itemHeight - 2)\n\n const legendItemLabels =\n 'datasets' in this.chartData ? this.chartData.datasets.map(d => d.label) : (this.chartData as PieChartDataPoint[]).map(p => `${p.label} (${p.value})`)\n\n let calculatedLegendHeight: number\n let calculatedLegendWidth: number\n\n if (position === 'top' || position === 'bottom') {\n let currentX = 0\n let numRows = 1\n const itemPadding = 20\n legendItemLabels.forEach(label => {\n const labelWidth = ctx.measureText(label).width\n const itemWidth = boxSize + 5 + labelWidth + itemPadding\n\n if (currentX > 0 && currentX + itemWidth > totalWidth) {\n numRows++\n currentX = 0\n }\n currentX += itemWidth\n })\n calculatedLegendHeight = numRows * itemHeight + 10\n calculatedLegendWidth = totalWidth\n } else {\n // 'left' or 'right'\n const maxLabelWidth = Math.max(...legendItemLabels.map(label => ctx.measureText(label).width))\n calculatedLegendWidth = maxLabelWidth + boxSize + 25 // padding + box + padding + text\n calculatedLegendHeight = totalHeight\n }\n\n let effectiveChartWidth = totalWidth\n let effectiveChartHeight = totalHeight\n let legendAreaX: number\n let legendAreaY: number\n let chartAreaX: number\n let chartAreaY: number\n let legendAreaWidth: number\n let legendAreaHeight: number\n\n if (position === 'top' || position === 'bottom') {\n effectiveChartHeight -= calculatedLegendHeight\n legendAreaHeight = calculatedLegendHeight\n legendAreaWidth = totalWidth\n legendAreaX = 0\n chartAreaX = 0\n\n if (position === 'top') {\n chartAreaY = calculatedLegendHeight\n legendAreaY = 0\n } else {\n // bottom\n legendAreaY = effectiveChartHeight\n chartAreaY = 0\n }\n } else {\n // 'left' or 'right'\n effectiveChartWidth -= calculatedLegendWidth\n legendAreaWidth = calculatedLegendWidth\n legendAreaHeight = totalHeight\n legendAreaY = 0\n chartAreaY = 0\n\n if (position === 'left') {\n chartAreaX = calculatedLegendWidth\n legendAreaX = 0\n } else {\n // right\n legendAreaX = effectiveChartWidth\n chartAreaX = 0\n }\n }\n\n return {\n x: legendAreaX,\n y: legendAreaY,\n width: legendAreaWidth,\n height: legendAreaHeight,\n chartWidth: effectiveChartWidth,\n chartHeight: effectiveChartHeight,\n chartX: chartAreaX,\n chartY: chartAreaY,\n }\n }\n\n private renderBarChart(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number) {\n if (this.chartType !== 'bar') return\n const chartData = this.chartData as CartesianChartData\n const chartOptions = this.chartOptions as ChartProps<'bar'>['options'] & PreComputedChartOptions\n\n const { labels, datasets } = chartData\n const maxValue = Math.max(...datasets.flatMap(d => d.data))\n\n const legendLayout = this.getLegendLayout(ctx, width, height)\n let chartX = x + legendLayout.chartX\n const chartY = y + legendLayout.chartY\n let chartWidth = legendLayout.chartWidth\n const chartHeight = legendLayout.chartHeight\n\n if (chartOptions?.showYAxis) {\n const fontSize = chartOptions.yAxisFontSize || 12\n ctx.font = `${fontSize}px ${this.props.fontFamily || 'sans-serif'}`\n const maxLabel =\n chartOptions._preComputedYAxisLabels?.[0] ??\n (chartOptions.yAxisLabelFormatter ? chartOptions.yAxisLabelFormatter(maxValue) : this.getSmartYAxisFormatter(maxValue)(maxValue))\n const yAxisWidth = ctx.measureText(maxLabel).width + 10\n chartX += yAxisWidth\n chartWidth -= yAxisWidth\n }\n\n let labelHeight = 0\n if (chartOptions?.showLabels) {\n const fontSize = chartOptions.labelFontSize || 12\n ctx.font = `${fontSize}px ${this.props.fontFamily || 'sans-serif'}`\n const metrics = ctx.measureText('Mg')\n labelHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + 10 // with padding\n }\n const finalChartHeight = chartHeight - labelHeight\n\n const groupWidth = chartWidth / labels.length\n const barSpacing = groupWidth * 0.2\n const barWidth = (groupWidth - barSpacing) / datasets.length\n\n // Render grid\n if (chartOptions?.grid?.show) {\n ctx.strokeStyle = chartOptions.grid.color || '#e0e0e0'\n ctx.lineWidth = 1\n if (chartOptions.grid.style === 'dashed') {\n ctx.setLineDash([5, 5])\n } else if (chartOptions.grid.style === 'dotted') {\n ctx.setLineDash([2, 2])\n }\n\n for (let i = 0; i <= 5; i++) {\n const gridY = chartY + (finalChartHeight / 5) * i\n ctx.beginPath()\n ctx.moveTo(chartX, gridY)\n ctx.lineTo(chartX + chartWidth, gridY)\n ctx.stroke()\n\n if (chartOptions?.showYAxis) {\n const value = maxValue - (maxValue / 5) * i\n const label =\n chartOptions._preComputedYAxisLabels?.[i] ??\n (chartOptions.yAxisLabelFormatter ? chartOptions.yAxisLabelFormatter(value) : this.getSmartYAxisFormatter(maxValue)(value))\n\n TextNode.renderSimpleText(ctx, label, chartX - 5, gridY, {\n color: chartOptions.yAxisColor || chartOptions.axisColor || '#000',\n fontSize: chartOptions.yAxisFontSize || 12,\n fontFamily: this.props.fontFamily,\n textAlign: 'right',\n textBaseline: 'middle',\n })\n }\n }\n ctx.setLineDash([])\n }\n\n // Render bars\n labels.forEach((label, index) => {\n const groupX = chartX + index * groupWidth + barSpacing / 2\n\n datasets.forEach((dataset, datasetIndex) => {\n const barHeight = (dataset.data[index] / maxValue) * finalChartHeight\n const barX = groupX + datasetIndex * barWidth\n const barY = chartY + finalChartHeight - barHeight\n\n ctx.fillStyle = dataset.color || this.generateColor(datasetIndex)\n ctx.fillRect(barX, barY, barWidth, barHeight)\n\n // Render values\n if (chartOptions?.showValues) {\n const value = dataset.data[index]\n const valueX = barX + barWidth / 2\n const valueY = barY - 5 // 5px padding above bar\n\n const preComputedValueDesc = chartOptions._preComputedValueItems?.[datasetIndex]?.[index]\n if (preComputedValueDesc) {\n const valueNode = buildDescriptorTree(preComputedValueDesc)\n valueNode.processInitialChildren()\n valueNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = valueNode.node.getComputedLayout()\n valueNode.render(ctx, valueX - layout.width / 2, valueY - layout.height)\n } else if (chartOptions.renderValueItem) {\n const valueNode = chartOptions.renderValueItem({ item: value, index, datasetIndex })\n if (valueNode) {\n valueNode.processInitialChildren()\n valueNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = valueNode.node.getComputedLayout()\n valueNode.render(ctx, valueX - layout.width / 2, valueY - layout.height)\n }\n } else {\n TextNode.renderSimpleText(ctx, value.toString(), valueX, valueY, {\n color: chartOptions.valueColor || '#000',\n fontSize: chartOptions.valueFontSize || 12,\n fontFamily: this.props.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n })\n }\n }\n })\n\n // Render labels\n if (chartOptions?.showLabels) {\n const displayLabel =\n chartOptions._preComputedXAxisLabels?.[index] ?? (chartOptions.xAxisLabelFormatter ? chartOptions.xAxisLabelFormatter(label, index) : label)\n\n const preComputedLabelDesc = chartOptions._preComputedLabelItems?.[index]\n if (preComputedLabelDesc) {\n const labelNode = buildDescriptorTree(preComputedLabelDesc)\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, groupX + (groupWidth - barSpacing) / 2 - layout.width / 2, chartY + finalChartHeight + labelHeight / 2 - layout.height / 2)\n } else if (chartOptions.renderLabelItem) {\n const labelNode = chartOptions.renderLabelItem({ item: label, index })\n if (labelNode) {\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, groupX + (groupWidth - barSpacing) / 2 - layout.width / 2, chartY + finalChartHeight + labelHeight / 2 - layout.height / 2)\n }\n } else {\n TextNode.renderSimpleText(ctx, displayLabel, groupX + (groupWidth - barSpacing) / 2, chartY + finalChartHeight + labelHeight / 2, {\n color: chartOptions.labelColor || chartOptions.axisColor,\n fontSize: chartOptions.labelFontSize,\n fontFamily: this.props.fontFamily,\n textAlign: 'center',\n textBaseline: 'middle',\n })\n }\n }\n })\n\n // Render legend\n if (chartOptions?.showLegend) {\n this.renderLegend(ctx, x + legendLayout.x, y + legendLayout.y, legendLayout.width, legendLayout.height)\n }\n }\n\n private renderLineChart(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number) {\n if (this.chartType !== 'line') return\n const chartData = this.chartData as CartesianChartData\n const chartOptions = this.chartOptions as ChartProps<'line'>['options'] & PreComputedChartOptions\n\n const { labels, datasets } = chartData\n const maxValue = Math.max(...datasets.flatMap(d => d.data))\n\n const legendLayout = this.getLegendLayout(ctx, width, height)\n let chartX = x + legendLayout.chartX\n const chartY = y + legendLayout.chartY\n let chartWidth = legendLayout.chartWidth\n const chartHeight = legendLayout.chartHeight\n\n if (chartOptions?.showYAxis) {\n const fontSize = chartOptions.yAxisFontSize || 12\n ctx.font = `${fontSize}px ${this.props.fontFamily || 'sans-serif'}`\n const maxLabel =\n chartOptions._preComputedYAxisLabels?.[0] ??\n (chartOptions.yAxisLabelFormatter ? chartOptions.yAxisLabelFormatter(maxValue) : this.getSmartYAxisFormatter(maxValue)(maxValue))\n const yAxisWidth = ctx.measureText(maxLabel).width + 10\n chartX += yAxisWidth\n chartWidth -= yAxisWidth\n }\n\n let labelHeight = 0\n if (chartOptions?.showLabels) {\n const fontSize = chartOptions.labelFontSize || 12\n ctx.font = `${fontSize}px ${this.props.fontFamily || 'sans-serif'}`\n const metrics = ctx.measureText('Mg')\n labelHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + 10 // with padding\n }\n const finalChartHeight = chartHeight - labelHeight\n const pointSpacing = chartWidth / (labels.length > 1 ? labels.length - 1 : 1)\n\n // Render grid\n if (chartOptions?.grid?.show) {\n ctx.strokeStyle = chartOptions.grid.color || '#e0e0e0'\n ctx.lineWidth = 1\n if (chartOptions.grid.style === 'dashed') {\n ctx.setLineDash([5, 5])\n } else if (chartOptions.grid.style === 'dotted') {\n ctx.setLineDash([2, 2])\n }\n\n for (let i = 0; i <= 5; i++) {\n const gridY = chartY + (finalChartHeight / 5) * i\n ctx.beginPath()\n ctx.moveTo(chartX, gridY)\n ctx.lineTo(chartX + chartWidth, gridY)\n ctx.stroke()\n\n if (chartOptions?.showYAxis) {\n const value = maxValue - (maxValue / 5) * i\n const label =\n chartOptions._preComputedYAxisLabels?.[i] ??\n (chartOptions.yAxisLabelFormatter ? chartOptions.yAxisLabelFormatter(value) : this.getSmartYAxisFormatter(maxValue)(value))\n\n TextNode.renderSimpleText(ctx, label, chartX - 5, gridY, {\n color: chartOptions.yAxisColor || chartOptions.axisColor || '#000',\n fontSize: chartOptions.yAxisFontSize || 12,\n fontFamily: this.props.fontFamily,\n textAlign: 'right',\n textBaseline: 'middle',\n })\n }\n }\n ctx.setLineDash([])\n }\n\n // Render lines and points\n datasets.forEach((dataset, datasetIndex) => {\n ctx.strokeStyle = dataset.color || this.generateColor(datasetIndex)\n ctx.lineWidth = 2\n ctx.beginPath()\n\n dataset.data.forEach((value, index) => {\n const pointX = chartX + index * pointSpacing\n const pointY = chartY + finalChartHeight - (value / maxValue) * finalChartHeight\n\n if (index === 0) {\n ctx.moveTo(pointX, pointY)\n } else {\n ctx.lineTo(pointX, pointY)\n }\n })\n ctx.stroke()\n\n // Render points\n dataset.data.forEach((value, index) => {\n const pointX = chartX + index * pointSpacing\n const pointY = chartY + finalChartHeight - (value / maxValue) * finalChartHeight\n ctx.fillStyle = dataset.color || this.generateColor(datasetIndex)\n ctx.beginPath()\n ctx.arc(pointX, pointY, 4, 0, Math.PI * 2)\n ctx.fill()\n })\n })\n\n // Render labels\n if (chartOptions?.showLabels) {\n labels.forEach((label, index) => {\n const pointX = chartX + index * pointSpacing\n const displayLabel =\n chartOptions._preComputedXAxisLabels?.[index] ?? (chartOptions.xAxisLabelFormatter ? chartOptions.xAxisLabelFormatter(label, index) : label)\n\n const preComputedLabelDesc = chartOptions._preComputedLabelItems?.[index]\n if (preComputedLabelDesc) {\n const labelNode = buildDescriptorTree(preComputedLabelDesc)\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, pointX - layout.width / 2, chartY + finalChartHeight + labelHeight / 2 - layout.height / 2)\n } else if (chartOptions.renderLabelItem) {\n const labelNode = chartOptions.renderLabelItem({ item: label, index })\n if (labelNode) {\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, pointX - layout.width / 2, chartY + finalChartHeight + labelHeight / 2 - layout.height / 2)\n }\n } else {\n TextNode.renderSimpleText(ctx, displayLabel, pointX, chartY + finalChartHeight + labelHeight / 2, {\n color: chartOptions.labelColor || chartOptions.axisColor,\n fontSize: chartOptions.labelFontSize,\n fontFamily: this.props.fontFamily,\n textAlign: 'center',\n textBaseline: 'middle',\n })\n }\n })\n }\n\n if (chartOptions?.showLegend) {\n this.renderLegend(ctx, x + legendLayout.x, y + legendLayout.y, legendLayout.width, legendLayout.height)\n }\n }\n\n private renderPieChart(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number) {\n if (this.chartType !== 'pie') return\n const data = this.chartData as PieChartDataPoint[]\n const chartOptions = this.chartOptions as ChartProps<'pie'>['options'] & PreComputedChartOptions\n\n const legendLayout = this.getLegendLayout(ctx, width, height)\n const chartX = x + legendLayout.chartX\n const chartY = y + legendLayout.chartY\n const chartWidth = legendLayout.chartWidth\n const chartHeight = legendLayout.chartHeight\n\n const centerX = chartX + chartWidth / 2\n const centerY = chartY + chartHeight / 2\n const radius = Math.min(chartWidth, chartHeight) / 2 - 10\n\n const total = data.reduce((sum, point) => sum + point.value, 0)\n let currentAngle = -Math.PI / 2 // Start at top\n\n data.forEach((point, index) => {\n const sliceAngle = (point.value / total) * Math.PI * 2\n const startAngle = currentAngle\n const endAngle = currentAngle + sliceAngle\n\n ctx.fillStyle = point.color || this.generateColor(index)\n ctx.beginPath()\n ctx.moveTo(centerX, centerY)\n ctx.arc(centerX, centerY, radius, startAngle, endAngle)\n ctx.closePath()\n ctx.fill()\n\n // Draw slice border\n ctx.strokeStyle = '#fff'\n ctx.lineWidth = 2\n ctx.stroke()\n\n // Render labels\n if (chartOptions?.showLabels) {\n const labelAngle = startAngle + sliceAngle / 2\n const labelRadius = radius * 0.7\n const labelX = centerX + Math.cos(labelAngle) * labelRadius\n const labelY = centerY + Math.sin(labelAngle) * labelRadius\n\n const preComputedLabelDesc = chartOptions._preComputedLabelItems?.[index]\n if (preComputedLabelDesc) {\n const labelNode = buildDescriptorTree(preComputedLabelDesc)\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, labelX - layout.width / 2, labelY - layout.height / 2)\n } else if (chartOptions.renderLabelItem) {\n const labelNode = chartOptions.renderLabelItem({ item: point, index })\n if (labelNode) {\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, labelX - layout.width / 2, labelY - layout.height / 2)\n }\n } else {\n TextNode.renderSimpleText(ctx, point.label, labelX, labelY, {\n color: chartOptions.labelColor,\n fontSize: chartOptions.labelFontSize,\n fontFamily: this.props.fontFamily,\n textAlign: 'center',\n textBaseline: 'middle',\n })\n }\n }\n\n currentAngle = endAngle\n })\n\n if (chartOptions?.showLegend) {\n this.renderLegend(ctx, x + legendLayout.x, y + legendLayout.y, legendLayout.width, legendLayout.height)\n }\n }\n\n private renderDoughnutChart(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number) {\n if (this.chartType !== 'doughnut') return\n const data = this.chartData as PieChartDataPoint[]\n const chartOptions = this.chartOptions as ChartProps<'doughnut'>['options'] & PreComputedChartOptions\n\n const legendLayout = this.getLegendLayout(ctx, width, height)\n const chartX = x + legendLayout.chartX\n const chartY = y + legendLayout.chartY\n const chartWidth = legendLayout.chartWidth\n const chartHeight = legendLayout.chartHeight\n\n const centerX = chartX + chartWidth / 2\n const centerY = chartY + chartHeight / 2\n const outerRadius = Math.min(chartWidth, chartHeight) / 2 - 10\n const innerRadius = outerRadius * (chartOptions?.innerRadius ?? 0.6)\n\n const total = data.reduce((sum, point) => sum + point.value, 0)\n let currentAngle = -Math.PI / 2\n\n data.forEach((point, index) => {\n const sliceAngle = (point.value / total) * Math.PI * 2\n const startAngle = currentAngle\n const endAngle = currentAngle + sliceAngle\n\n ctx.fillStyle = point.color || this.generateColor(index)\n ctx.beginPath()\n ctx.arc(centerX, centerY, outerRadius, startAngle, endAngle)\n ctx.arc(centerX, centerY, innerRadius, endAngle, startAngle, true)\n ctx.closePath()\n ctx.fill()\n\n ctx.strokeStyle = '#fff'\n ctx.lineWidth = 2\n ctx.stroke()\n\n // Render labels\n if (chartOptions?.showLabels) {\n const labelAngle = startAngle + sliceAngle / 2\n const labelRadius = innerRadius + (outerRadius - innerRadius) / 2\n const labelX = centerX + Math.cos(labelAngle) * labelRadius\n const labelY = centerY + Math.sin(labelAngle) * labelRadius\n\n const preComputedLabelDesc = chartOptions._preComputedLabelItems?.[index]\n if (preComputedLabelDesc) {\n const labelNode = buildDescriptorTree(preComputedLabelDesc)\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, labelX - layout.width / 2, labelY - layout.height / 2)\n } else if (chartOptions.renderLabelItem) {\n const labelNode = chartOptions.renderLabelItem({ item: point, index })\n if (labelNode) {\n labelNode.processInitialChildren()\n labelNode.node.calculateLayout(undefined, undefined, Style.Direction.LTR)\n const layout = labelNode.node.getComputedLayout()\n labelNode.render(ctx, labelX - layout.width / 2, labelY - layout.height / 2)\n }\n } else {\n TextNode.renderSimpleText(ctx, point.label, labelX, labelY, {\n color: chartOptions.labelColor,\n fontSize: chartOptions.labelFontSize,\n fontFamily: this.props.fontFamily,\n textAlign: 'center',\n textBaseline: 'middle',\n })\n }\n }\n\n currentAngle = endAngle\n })\n\n if (chartOptions?.showLegend) {\n this.renderLegend(ctx, x + legendLayout.x, y + legendLayout.y, legendLayout.width, legendLayout.height)\n }\n }\n\n private renderLegend(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number) {\n const { renderLegendItem, _preComputedLegendItems } = this.chartOptions\n\n if (_preComputedLegendItems) {\n const finalNodes = _preComputedLegendItems.filter((desc): desc is CanvasElement => !!desc).map(desc => buildDescriptorTree(desc))\n\n if (finalNodes.length > 0) {\n const legendContainer = new RowNode({\n children: finalNodes,\n width,\n height,\n justifyContent: Style.Justify.Center,\n alignItems: Style.Align.Center,\n flexWrap: Style.Wrap.Wrap,\n gap: 10,\n })\n legendContainer.processInitialChildren()\n legendContainer.node.calculateLayout(width, height, Style.Direction.LTR)\n legendContainer.render(ctx, x, y)\n }\n return\n }\n\n if (renderLegendItem) {\n let legendNodes: (BoxNode | null | undefined)[]\n if (this.chartType === 'bar' || this.chartType === 'line') {\n const items = (this.chartData as CartesianChartData).datasets\n const render = renderLegendItem as (props: { item: ChartDataset; index: number; color: string }) => BoxNode | null | undefined\n legendNodes = items.map((item, index) => {\n const color = item.color || this.generateColor(index)\n return render({ item, index, color })\n })\n } else {\n const items = this.chartData as PieChartDataPoint[]\n const render = renderLegendItem as (props: { item: PieChartDataPoint; index: number; color: string }) => BoxNode | null | undefined\n legendNodes = items.map((item, index) => {\n const color = item.color || this.generateColor(index)\n return render({ item, index, color })\n })\n }\n\n const finalNodes = legendNodes.filter((node): node is BoxNode => !!node)\n\n if (finalNodes.length > 0) {\n const legendContainer = new RowNode({\n children: finalNodes,\n width,\n height,\n justifyContent: Style.Justify.Center,\n alignItems: Style.Align.Center,\n flexWrap: Style.Wrap.Wrap,\n gap: 10,\n })\n legendContainer.processInitialChildren()\n legendContainer.node.calculateLayout(width, height, Style.Direction.LTR)\n legendContainer.render(ctx, x, y)\n }\n return\n }\n\n // Fallback to default rendering if renderLegendItem is not provided\n const legendItems =\n 'datasets' in this.chartData\n ? this.chartData.datasets.map(d => ({ label: d.label, value: d.data.reduce((a, b) => a + b, 0) }))\n : (this.chartData as PieChartDataPoint[])\n const fontSize = this.chartOptions?.labelFontSize || 12\n ctx.font = `${fontSize}px ${this.props.fontFamily || 'sans-serif'}`\n\n const metrics = ctx.measureText('Mg')\n const textHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n const itemHeight = Math.ceil(textHeight + 8)\n const boxSize = Math.min(15, itemHeight - 2)\n\n const position = this.chartOptions.legendPosition\n if (position === 'top' || position === 'bottom') {\n const itemPadding = 20 // horizontal padding between items\n const rows: { items: { label: string; color: string; width: number }[]; width: number }[] = []\n let currentRow: { items: { label: string; color: string; width: number }[]; width: number } = { items: [], width: 0 }\n\n legendItems.forEach((point, index) => {\n const color =\n ('datasets' in this.chartData ? (this.chartData as CartesianChartData).datasets[index].color : (point as any).color) || this.generateColor(index)\n const label = 'datasets' in this.chartData ? point.label : `${point.label} (${point.value})`\n const labelWidth = ctx.measureText(label).width\n const itemWidth = boxSize + 5 + labelWidth\n\n if (currentRow.items.length > 0 && currentRow.width + itemPadding + itemWidth > width) {\n rows.push(currentRow)\n currentRow = { items: [], width: 0 }\n }\n\n currentRow.items.push({ label, color, width: itemWidth })\n currentRow.width += itemWidth + (currentRow.items.length > 1 ? itemPadding : 0)\n })\n rows.push(currentRow)\n\n let currentY = y + 5\n rows.forEach(row => {\n let currentX = x + (width - row.width) / 2\n row.items.forEach(item => {\n const boxY = currentY + (itemHeight - boxSize) / 2\n ctx.fillStyle = item.color\n ctx.fillRect(currentX, boxY, boxSize, boxSize)\n\n TextNode.renderSimpleText(ctx, item.label, currentX + boxSize + 5, currentY + itemHeight / 2, {\n color: this.chartOptions?.labelColor,\n fontSize,\n fontFamily: this.props.fontFamily,\n textAlign: 'left',\n textBaseline: 'middle',\n })\n\n currentX += item.width + itemPadding\n })\n currentY += itemHeight\n })\n } else {\n // 'left' or 'right'\n const totalHeight = legendItems.length * itemHeight\n const startY = y + (height - totalHeight) / 2\n\n legendItems.forEach((point, index) => {\n const itemX = x + 10\n const itemY = startY + index * itemHeight\n\n const boxY = itemY + (itemHeight - boxSize) / 2\n ctx.fillStyle =\n ('datasets' in this.chartData ? (this.chartData as CartesianChartData).datasets[index].color : (point as any).color) || this.generateColor(index)\n ctx.fillRect(itemX, boxY, boxSize, boxSize)\n\n const label = 'datasets' in this.chartData ? point.label : `${point.label} (${point.value})`\n TextNode.renderSimpleText(ctx, label, itemX + boxSize + 5, itemY + itemHeight / 2, {\n color: this.chartOptions?.labelColor,\n fontSize,\n fontFamily: this.props.fontFamily,\n textAlign: 'left',\n textBaseline: 'middle',\n })\n })\n }\n }\n\n private generateColor(index: number): string {\n const colors = ['#FF6384', '#36A2EB', '#FFCE56', '#4BC0C0', '#9966FF', '#FF9F40', '#C9CBCF']\n return colors[index % colors.length]\n }\n}\n\nexport const Chart = <T extends ChartType>(props: ChartProps<T> & BaseProps): CanvasElement => ({\n __type: 'Chart',\n props: props as any,\n})\n"],"names":["BoxNode","ColumnNode","RowNode","ImageNode","TextNode","Style"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { GridProps, GridItemProps, CanvasElement } from '../canvas/canvas.type.js';
2
- import { BoxNode, RowNode } from '../canvas/layout.canvas.util.js';
2
+ import { BoxNode, RowNode } from '../canvas/layout.canvas.js';
3
3
  /**
4
4
  * GridItem Node. Theoretically just a BoxNode but typed differently in factory.
5
5
  * In runtime, it behaves almost like a BoxNode, but we can detect it if needed,
@@ -43,4 +43,4 @@ export declare class GridNode extends RowNode {
43
43
  * Factory function to create a new GridNode instance.
44
44
  */
45
45
  export declare const Grid: ({ children, ...rest }: GridProps) => CanvasElement;
46
- //# sourceMappingURL=grid.canvas.util.d.ts.map
46
+ //# sourceMappingURL=grid.canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.canvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/grid.canvas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAErG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAU5D;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,OAAO;gBAC3B,KAAK,EAAE,aAAa;CAMjC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,uBAAuB,aAAa,KAAG,aAI9D,CAAA;AAEF;;;GAGG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACnC;;;OAGG;gBACS,KAAK,EAAE,SAAS;IAQ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAwBlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;cACgB,+BAA+B;IAoTlD;;OAEG;IACH,OAAO,CAAC,aAAa;CAkCtB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,uBAAuB,SAAS,KAAG,aAItD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var layout_canvas_util = require('./layout.canvas.util.js');
3
+ var layout_canvas = require('./layout.canvas.js');
4
4
  var common_const = require('../constant/common.const.js');
5
5
  var canvas_helper = require('./canvas.helper.js');
6
6
 
@@ -15,7 +15,7 @@ function normalizeDescriptorChildren(children) {
15
15
  * In runtime, it behaves almost like a BoxNode, but we can detect it if needed,
16
16
  * or simply rely on the props being present in the instance.
17
17
  */
18
- class GridItemNode extends layout_canvas_util.BoxNode {
18
+ class GridItemNode extends layout_canvas.BoxNode {
19
19
  constructor(props) {
20
20
  super({
21
21
  ...props,
@@ -35,7 +35,7 @@ const GridItem = ({ children, ...rest }) => ({
35
35
  * Grid layout node that arranges children in a 2D grid.
36
36
  * Implements a simplified version of the CSS Grid Layout algorithm.
37
37
  */
38
- class GridNode extends layout_canvas_util.RowNode {
38
+ class GridNode extends layout_canvas.RowNode {
39
39
  /**
40
40
  * Creates a new grid layout node
41
41
  * @param props Grid configuration properties
@@ -420,4 +420,4 @@ exports.Grid = Grid;
420
420
  exports.GridItem = GridItem;
421
421
  exports.GridItemNode = GridItemNode;
422
422
  exports.GridNode = GridNode;
423
- //# sourceMappingURL=grid.canvas.util.js.map
423
+ //# sourceMappingURL=grid.canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.canvas.js","sources":["../../../../src/canvas/grid.canvas.ts"],"sourcesContent":["import type { GridProps, GridTrackSize, GridItemProps, CanvasElement } from '@/canvas/canvas.type.js'\nimport type { BoxProps } from '@/canvas/canvas.type.js'\nimport { BoxNode, RowNode } from '@/canvas/layout.canvas.js'\nimport { Style } from '@/constant/common.const.js'\nimport { parsePercentage } from '@/canvas/canvas.helper.js'\n\nfunction normalizeDescriptorChildren(children: BoxProps['children']): CanvasElement[] | undefined {\n if (children === undefined || children === null || children === false) return undefined\n const arr = (Array.isArray(children) ? children : [children]).filter(Boolean) as CanvasElement[]\n return arr.length > 0 ? arr : undefined\n}\n\n/**\n * GridItem Node. Theoretically just a BoxNode but typed differently in factory.\n * In runtime, it behaves almost like a BoxNode, but we can detect it if needed,\n * or simply rely on the props being present in the instance.\n */\nexport class GridItemNode extends BoxNode {\n constructor(props: GridItemProps) {\n super({\n ...props,\n name: 'GridItem',\n })\n }\n}\n\n/**\n * Factory for GridItem.\n */\nexport const GridItem = ({ children, ...rest }: GridItemProps): CanvasElement => ({\n __type: 'GridItem',\n props: rest,\n children: normalizeDescriptorChildren(children),\n})\n\n/**\n * Grid layout node that arranges children in a 2D grid.\n * Implements a simplified version of the CSS Grid Layout algorithm.\n */\nexport class GridNode extends RowNode {\n /**\n * Creates a new grid layout node\n * @param props Grid configuration properties\n */\n constructor(props: GridProps) {\n super({\n ...props,\n name: props.name || 'Grid',\n flexWrap: Style.Wrap.Wrap,\n })\n }\n\n /**\n * Helper to parse a track size definition.\n */\n private parseTrack(track: GridTrackSize, availableSpace: number): { type: 'px' | '%' | 'fr' | 'auto'; value: number } {\n if (typeof track === 'number') {\n return { type: 'px', value: track }\n }\n if (track === 'auto') {\n return { type: 'auto', value: 0 }\n }\n if (typeof track === 'string') {\n if (track.endsWith('fr')) {\n return { type: 'fr', value: parseFloat(track) }\n }\n if (track.endsWith('%')) {\n return { type: '%', value: parsePercentage(track, availableSpace) }\n }\n if (track.endsWith('px')) {\n return { type: 'px', value: parseFloat(track) }\n }\n // Try parsing as number (px) if just string \"100\"\n const num = parseFloat(track)\n if (!isNaN(num)) return { type: 'px', value: num }\n }\n return { type: 'auto', value: 0 }\n }\n\n /**\n * Parses the gap property into pixels.\n */\n private getGapPixels(gap: GridProps['gap'], width: number, height: number) {\n let rowGap = 0\n let colGap = 0\n\n if (typeof gap === 'number') {\n rowGap = colGap = gap\n } else if (typeof gap === 'string') {\n const val = parsePercentage(gap, width) // Use width as base for simplicity if %\n rowGap = colGap = val\n } else if (gap && typeof gap === 'object') {\n const colVal = gap.Column ?? gap.All ?? 0\n const rowVal = gap.Row ?? gap.All ?? 0\n colGap = parsePercentage(colVal as string | number, width)\n rowGap = parsePercentage(rowVal as string | number, height)\n }\n\n return { rowGap, colGap }\n }\n\n /**\n * Update layout calculations after the initial layout is computed.\n */\n protected override updateLayoutBasedOnComputedSize() {\n // 1. Get Container Dimensions\n let width = this.node.getComputedWidth()\n const parent = this.node.getParent()\n\n if (parent) {\n const parentWidth = parent.getWidth()\n const parentMinWidth = parent.getMinWidth()\n const parentMaxWidth = parent.getMaxWidth()\n\n // Parent has % minWidth but no hard width/maxWidth constraint\n const hasPercentMinWidth = parentMinWidth.unit === Style.Unit.Percent\n const hasExplicitWidth = parentWidth.unit !== Style.Unit.Undefined && parentWidth.unit !== Style.Unit.Auto\n const hasMaxWidth = parentMaxWidth.unit !== Style.Unit.Undefined && parentMaxWidth.unit !== Style.Unit.Auto\n\n if (hasPercentMinWidth && !hasExplicitWidth && !hasMaxWidth) {\n const grandparent = parent.getParent()\n if (grandparent) {\n const intendedWidth = (parentMinWidth.value / 100) * grandparent.getComputedWidth()\n\n // Check if parent has flexGrow - if so, don't constrain\n const parentFlexGrow = parent.getFlexGrow()\n if (parentFlexGrow > 0) {\n // Allow expansion - use computed width\n } else {\n // No flexGrow - constrain to minWidth\n width = Math.min(width, intendedWidth)\n }\n }\n }\n }\n\n const paddingLeft = this.node.getComputedPadding(Style.Edge.Left)\n const paddingRight = this.node.getComputedPadding(Style.Edge.Right)\n const paddingTop = this.node.getComputedPadding(Style.Edge.Top)\n const paddingBottom = this.node.getComputedPadding(Style.Edge.Bottom)\n\n const contentWidth = Math.max(0, width - paddingLeft - paddingRight)\n const computedHeight = this.node.getComputedHeight()\n const contentHeight = Math.max(0, computedHeight - paddingTop - paddingBottom)\n\n const { templateColumns, templateRows, autoRows = 'auto', gap, columns } = this.props as GridProps\n\n // 2. Resolve Gaps\n const { rowGap, colGap } = this.getGapPixels(gap, contentWidth, contentHeight)\n\n // 3. Resolve Columns (Tracks)\n let explicitColTracks: GridTrackSize[] = templateColumns || []\n if (explicitColTracks.length === 0 && columns) {\n explicitColTracks = Array(columns).fill('1fr')\n }\n if (explicitColTracks.length === 0) explicitColTracks = ['1fr']\n\n const resolvedColTracks = this.resolveTracks(explicitColTracks, contentWidth, colGap)\n\n // Pre-calculate Col Offsets needed for placement/width\n const colOffsetsValues = [0]\n for (let i = 0; i < resolvedColTracks.length; i++) {\n colOffsetsValues.push(colOffsetsValues[i] + resolvedColTracks[i] + colGap)\n }\n\n // 4. Place Items & Resolve Explicit Row Tracks\n const explicitRowTracks = templateRows || []\n const resolvedExplicitRowTracks = this.resolveTracks(explicitRowTracks, contentHeight, rowGap)\n\n const cells: boolean[][] = [] // true if occupied\n const items: { node: BoxNode; rowStart: number; rowEnd: number; colStart: number; colEnd: number }[] = []\n\n const isOccupied = (r: number, c: number) => {\n if (!cells[r]) return false\n return cells[r][c] === true\n }\n const setOccupied = (r: number, c: number) => {\n if (!cells[r]) cells[r] = []\n cells[r][c] = true\n }\n\n let cursorRow = 0\n let cursorCol = 0\n\n for (const child of this.children) {\n const childProps = child.props as GridItemProps\n const { gridColumn, gridRow } = childProps\n\n let colStart: number | undefined\n let colEnd: number | undefined\n let colSpan = 1\n let rowStart: number | undefined\n let rowEnd: number | undefined\n let rowSpan = 1\n\n // ... Grid Placement Logic ...\n if (gridColumn) {\n const parts = gridColumn.split('/').map(s => s.trim())\n if (parts[0]) {\n if (parts[0].startsWith('span')) {\n colSpan = parseInt(parts[0].replace('span', '')) || 1\n } else {\n colStart = parseInt(parts[0]) - 1\n }\n }\n if (parts[1]) {\n if (parts[1].startsWith('span')) {\n const span = parseInt(parts[1].replace('span', '')) || 1\n if (colStart !== undefined) {\n colEnd = colStart + span\n colSpan = span\n } else {\n // If start is undefined but end is span? Unusual. Treat as span.\n colSpan = span\n }\n } else {\n colEnd = parseInt(parts[1]) - 1\n if (colStart !== undefined) {\n colSpan = colEnd - colStart\n }\n }\n }\n }\n\n if (gridRow) {\n const parts = gridRow.split('/').map(s => s.trim())\n if (parts[0]) {\n if (parts[0].startsWith('span')) {\n rowSpan = parseInt(parts[0].replace('span', '')) || 1\n } else {\n rowStart = parseInt(parts[0]) - 1\n }\n }\n if (parts[1]) {\n if (parts[1].startsWith('span')) {\n const span = parseInt(parts[1].replace('span', '')) || 1\n if (rowStart !== undefined) {\n rowEnd = rowStart + span\n rowSpan = span\n } else {\n rowSpan = span\n }\n } else {\n rowEnd = parseInt(parts[1]) - 1\n if (rowStart !== undefined) {\n rowSpan = rowEnd - rowStart\n }\n }\n }\n }\n\n if (colStart !== undefined && rowStart !== undefined) {\n // Fixed position: Check overlap in simpler V1? Or just place?\n // Just place.\n } else {\n // Auto placement\n let placed = false\n while (!placed) {\n if (!cells[cursorRow]) cells[cursorRow] = []\n\n if (colStart !== undefined) cursorCol = colStart\n\n let fits = true\n for (let r = 0; r < rowSpan; r++) {\n for (let c = 0; c < colSpan; c++) {\n if (isOccupied(cursorRow + r, cursorCol + c)) {\n fits = false\n break\n }\n }\n if (!fits) break\n }\n\n if (fits) {\n rowStart = cursorRow\n colStart = cursorCol\n placed = true\n } else {\n cursorCol++\n if (cursorCol + colSpan > resolvedColTracks.length) {\n cursorCol = 0\n cursorRow++\n }\n }\n }\n cursorCol += colSpan\n if (cursorCol >= resolvedColTracks.length) {\n cursorCol = 0\n cursorRow++\n }\n }\n\n rowEnd = (rowStart ?? 0) + rowSpan\n colEnd = (colStart ?? 0) + colSpan\n\n for (let r = rowStart!; r < rowEnd!; r++) {\n for (let c = colStart!; c < colEnd!; c++) {\n setOccupied(r, c)\n }\n }\n\n // CRITICAL FIX: Pre-set width on item to ensure height calculation is accurate later\n const itemColStart = colStart!\n const itemColEnd = colEnd!\n\n // Extend local offsets if needed for spanned columns beyond track count (rare but safe)\n while (colOffsetsValues.length <= itemColEnd) {\n colOffsetsValues.push(colOffsetsValues[colOffsetsValues.length - 1] + 0 + colGap)\n }\n\n const cs = Math.min(itemColStart, colOffsetsValues.length - 1)\n const ce = Math.min(itemColEnd, colOffsetsValues.length - 1)\n const targetWidth = Math.max(0, colOffsetsValues[ce] - colOffsetsValues[cs] - colGap)\n\n child.node.setWidth(targetWidth)\n child.node.calculateLayout(targetWidth, Number.NaN, Style.Direction.LTR)\n\n // Recursively finalize nested children (e.g. inner Grids) so their\n // computed heights are accurate before we measure row sizes.\n child.finalizeLayout()\n if (child.node.isDirty()) {\n child.node.calculateLayout(targetWidth, Number.NaN, Style.Direction.LTR)\n }\n\n items.push({ node: child, rowStart: rowStart!, rowEnd: rowEnd!, colStart: itemColStart, colEnd: itemColEnd })\n }\n\n // 6. Finalize Rows (Implicit)\n const totalRowsNeeded = Math.max(resolvedExplicitRowTracks.length, ...items.map(i => i.rowEnd))\n const resolvedRowTracks = [...resolvedExplicitRowTracks]\n\n // Fill implicit rows\n for (let r = resolvedExplicitRowTracks.length; r < totalRowsNeeded; r++) {\n let rowSize = 0\n\n // Better 'auto' handling:\n if (autoRows === 'auto') {\n const rowItems = items.filter(i => i.rowStart === r && i.rowEnd - i.rowStart === 1)\n for (const item of rowItems) {\n rowSize = Math.max(rowSize, item.node.node.getComputedHeight())\n }\n } else {\n const parsed = this.parseTrack(autoRows, contentHeight)\n rowSize = parsed.value\n }\n resolvedRowTracks.push(rowSize)\n }\n\n // 6. Calculate Offsets (Rows) & Final Layout Application\n const colOffsets = colOffsetsValues // Re-use\n const rowOffsets = [0]\n for (let i = 0; i < resolvedRowTracks.length; i++) {\n let size = resolvedRowTracks[i]\n // Re-check auto-sized explicit rows (value 0)\n if (size === 0) {\n const rowItems = items.filter(it => it.rowStart === i && it.rowEnd - it.rowStart === 1)\n for (const item of rowItems) {\n size = Math.max(size, item.node.node.getComputedHeight())\n }\n resolvedRowTracks[i] = size\n }\n rowOffsets.push(rowOffsets[i] + size + rowGap)\n }\n\n // 7. Apply Positions\n for (const item of items) {\n const x = colOffsets[item.colStart] + paddingLeft\n\n while (colOffsets.length <= item.colEnd) {\n colOffsets.push(colOffsets[colOffsets.length - 1] + 0 + colGap)\n }\n\n const widthStart = colOffsets[item.colStart]\n const widthEnd = colOffsets[item.colEnd]\n const totalWidth = Math.max(0, widthEnd - widthStart - colGap)\n\n const y = rowOffsets[item.rowStart] + paddingTop\n\n const heightStart = rowOffsets[item.rowStart]\n const heightEnd = rowOffsets[item.rowEnd]\n const totalHeight = Math.max(0, heightEnd - heightStart - rowGap)\n\n const childNode = item.node.node\n\n if (childNode.getPositionType() !== Style.PositionType.Absolute) {\n childNode.setPositionType(Style.PositionType.Absolute)\n }\n\n if (childNode.getPosition(Style.Edge.Left).value !== x) {\n childNode.setPosition(Style.Edge.Left, x)\n }\n if (childNode.getPosition(Style.Edge.Top).value !== y) {\n childNode.setPosition(Style.Edge.Top, y)\n }\n\n if (childNode.getWidth().unit !== Style.Unit.Point || Math.abs(childNode.getWidth().value - totalWidth) > 0.1) {\n childNode.setWidth(totalWidth)\n }\n if (childNode.getHeight().unit !== Style.Unit.Point || Math.abs(childNode.getHeight().value - totalHeight) > 0.1) {\n childNode.setHeight(totalHeight)\n }\n }\n\n // 9. Update Grid Height\n const totalGridHeight = Math.max(0, rowOffsets[rowOffsets.length - 1] - rowGap)\n const currentHeightStyle = this.node.getHeight()\n if (currentHeightStyle.unit === Style.Unit.Auto || currentHeightStyle.unit === Style.Unit.Undefined) {\n const targetTotalHeight = totalGridHeight + paddingTop + paddingBottom\n this.node.setHeight(targetTotalHeight)\n }\n }\n\n /**\n * Resolves track sizes to pixels.\n */\n private resolveTracks(tracks: GridTrackSize[], availableSpace: number, gap: number): number[] {\n const resolved: number[] = []\n let usedSpace = 0\n let totalFr = 0\n const frIndices: number[] = []\n\n tracks.forEach((t, i) => {\n const parsed = this.parseTrack(t, availableSpace)\n if (parsed.type === 'px' || parsed.type === '%') {\n resolved[i] = parsed.value\n usedSpace += parsed.value\n } else if (parsed.type === 'fr') {\n totalFr += parsed.value\n resolved[i] = 0\n frIndices.push(i)\n } else {\n resolved[i] = 0\n }\n })\n\n const totalGaps = Math.max(0, tracks.length - 1) * gap\n usedSpace += totalGaps\n\n const remainingSpace = Math.max(0, availableSpace - usedSpace)\n if (totalFr > 0) {\n frIndices.forEach(i => {\n const parsed = this.parseTrack(tracks[i], availableSpace)\n const share = (parsed.value / totalFr) * remainingSpace\n resolved[i] = share\n })\n }\n\n return resolved\n }\n}\n\n/**\n * Factory function to create a new GridNode instance.\n */\nexport const Grid = ({ children, ...rest }: GridProps): CanvasElement => ({\n __type: 'Grid',\n props: rest,\n children: normalizeDescriptorChildren(children),\n})\n"],"names":["BoxNode","RowNode","Style","parsePercentage"],"mappings":"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"}