@allternit/viz 0.1.0

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 (45) hide show
  1. package/README.md +217 -0
  2. package/dist/charts/canvas-renderer.d.ts +40 -0
  3. package/dist/charts/canvas-renderer.d.ts.bak +40 -0
  4. package/dist/charts/canvas-renderer.d.ts.map +1 -0
  5. package/dist/charts/canvas-renderer.js +580 -0
  6. package/dist/charts/canvas-renderer.js.bak +580 -0
  7. package/dist/charts/canvas-renderer.js.map +1 -0
  8. package/dist/charts/svg-renderer.d.ts +21 -0
  9. package/dist/charts/svg-renderer.d.ts.bak +21 -0
  10. package/dist/charts/svg-renderer.d.ts.map +1 -0
  11. package/dist/charts/svg-renderer.js +285 -0
  12. package/dist/charts/svg-renderer.js.bak +285 -0
  13. package/dist/charts/svg-renderer.js.map +1 -0
  14. package/dist/index.d.ts +34 -0
  15. package/dist/index.d.ts.bak +34 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +35 -0
  18. package/dist/index.js.bak +35 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/types.d.ts +342 -0
  21. package/dist/types.d.ts.bak +342 -0
  22. package/dist/types.d.ts.map +1 -0
  23. package/dist/types.js +39 -0
  24. package/dist/types.js.bak +39 -0
  25. package/dist/types.js.map +1 -0
  26. package/dist/utils/data-processor.d.ts +64 -0
  27. package/dist/utils/data-processor.d.ts.bak +64 -0
  28. package/dist/utils/data-processor.d.ts.map +1 -0
  29. package/dist/utils/data-processor.js +326 -0
  30. package/dist/utils/data-processor.js.bak +326 -0
  31. package/dist/utils/data-processor.js.map +1 -0
  32. package/package.json +41 -0
  33. package/src/charts/canvas-renderer.ts +735 -0
  34. package/src/charts/canvas-renderer.ts.bak +735 -0
  35. package/src/charts/svg-renderer.test.ts.bak +837 -0
  36. package/src/charts/svg-renderer.ts +380 -0
  37. package/src/charts/svg-renderer.ts.bak +380 -0
  38. package/src/index.ts +64 -0
  39. package/src/index.ts.bak +64 -0
  40. package/src/types.ts +410 -0
  41. package/src/types.ts.bak +410 -0
  42. package/src/utils/data-processor.test.ts.bak +720 -0
  43. package/src/utils/data-processor.ts +420 -0
  44. package/src/utils/data-processor.ts.bak +420 -0
  45. package/tsconfig.json +22 -0
@@ -0,0 +1,580 @@
1
+ /**
2
+ * Canvas Chart Renderer
3
+ *
4
+ * Renders charts to HTML Canvas with animation support.
5
+ */
6
+ import { palettes } from '../types';
7
+ /**
8
+ * Create Canvas chart renderer
9
+ */
10
+ export function createCanvasRenderer() {
11
+ let currentCanvas = null;
12
+ let currentCtx = null;
13
+ const defaultWidth = 800;
14
+ const defaultHeight = 400;
15
+ const margin = { top: 60, right: 40, bottom: 60, left: 80 };
16
+ /**
17
+ * Create and setup canvas
18
+ */
19
+ function setupCanvas(width, height) {
20
+ if (typeof document === 'undefined') {
21
+ // Node.js environment - create mock canvas
22
+ currentCanvas = {
23
+ width,
24
+ height,
25
+ getContext: () => ({
26
+ fillStyle: '',
27
+ strokeStyle: '',
28
+ lineWidth: 1,
29
+ font: '',
30
+ textAlign: 'left',
31
+ textBaseline: 'alphabetic',
32
+ fillRect: () => { },
33
+ strokeRect: () => { },
34
+ clearRect: () => { },
35
+ beginPath: () => { },
36
+ closePath: () => { },
37
+ moveTo: () => { },
38
+ lineTo: () => { },
39
+ arc: () => { },
40
+ fill: () => { },
41
+ stroke: () => { },
42
+ fillText: () => { },
43
+ strokeText: () => { },
44
+ save: () => { },
45
+ restore: () => { },
46
+ translate: () => { },
47
+ scale: () => { },
48
+ rotate: () => { },
49
+ measureText: () => ({ width: 0 }),
50
+ }),
51
+ toDataURL: () => '',
52
+ };
53
+ currentCtx = currentCanvas.getContext('2d');
54
+ }
55
+ else {
56
+ currentCanvas = document.createElement('canvas');
57
+ currentCanvas.width = width;
58
+ currentCanvas.height = height;
59
+ currentCtx = currentCanvas.getContext('2d');
60
+ }
61
+ if (!currentCtx) {
62
+ throw new Error('Failed to get canvas context');
63
+ }
64
+ return {
65
+ ctx: currentCtx,
66
+ width,
67
+ height,
68
+ chartWidth: width - margin.left - margin.right,
69
+ chartHeight: height - margin.top - margin.bottom,
70
+ margin,
71
+ };
72
+ }
73
+ /**
74
+ * Render chart to canvas
75
+ */
76
+ function render(config, series) {
77
+ const width = config.width || defaultWidth;
78
+ const height = config.height || defaultHeight;
79
+ const palette = palettes[config.theme || 'default'];
80
+ const rc = setupCanvas(width, height);
81
+ const { ctx } = rc;
82
+ // Clear background
83
+ ctx.fillStyle = palette.background[0];
84
+ ctx.fillRect(0, 0, width, height);
85
+ // Title
86
+ if (config.title) {
87
+ ctx.fillStyle = palette.text.primary;
88
+ ctx.font = 'bold 18px sans-serif';
89
+ ctx.textAlign = 'center';
90
+ ctx.fillText(config.title, width / 2, 30);
91
+ }
92
+ // Clip to chart area
93
+ ctx.save();
94
+ ctx.translate(margin.left, margin.top);
95
+ // Render based on chart type
96
+ switch (config.type) {
97
+ case 'bar':
98
+ renderBarChart(rc, series, palette, config);
99
+ break;
100
+ case 'line':
101
+ renderLineChart(rc, series, palette, config);
102
+ break;
103
+ case 'pie':
104
+ case 'donut':
105
+ renderPieChart(rc, series, palette, config);
106
+ break;
107
+ case 'area':
108
+ renderAreaChart(rc, series, palette, config);
109
+ break;
110
+ default:
111
+ renderPlaceholder(rc, config.type, palette);
112
+ }
113
+ // Axes
114
+ if (['bar', 'line', 'area'].includes(config.type)) {
115
+ renderAxes(rc, series, config, palette);
116
+ }
117
+ ctx.restore();
118
+ return currentCanvas;
119
+ }
120
+ /**
121
+ * Render with animation
122
+ */
123
+ function renderAnimated(config, series, duration = 1000) {
124
+ return new Promise((resolve) => {
125
+ const startTime = performance.now();
126
+ const width = config.width || defaultWidth;
127
+ const height = config.height || defaultHeight;
128
+ const palette = palettes[config.theme || 'default'];
129
+ function animate(currentTime) {
130
+ const elapsed = currentTime - startTime;
131
+ const progress = Math.min(elapsed / duration, 1);
132
+ const eased = easeOutCubic(progress);
133
+ // Render with animation progress
134
+ const rc = setupCanvas(width, height);
135
+ const { ctx } = rc;
136
+ // Clear background
137
+ ctx.fillStyle = palette.background[0];
138
+ ctx.fillRect(0, 0, width, height);
139
+ // Title
140
+ if (config.title) {
141
+ ctx.fillStyle = palette.text.primary;
142
+ ctx.font = 'bold 18px sans-serif';
143
+ ctx.textAlign = 'center';
144
+ ctx.fillText(config.title, width / 2, 30);
145
+ }
146
+ ctx.save();
147
+ ctx.translate(margin.left, margin.top);
148
+ // Render with animation progress
149
+ switch (config.type) {
150
+ case 'bar':
151
+ renderBarChartAnimated(rc, series, palette, config, eased);
152
+ break;
153
+ case 'line':
154
+ renderLineChartAnimated(rc, series, palette, config, eased);
155
+ break;
156
+ case 'pie':
157
+ case 'donut':
158
+ renderPieChartAnimated(rc, series, palette, config, eased);
159
+ break;
160
+ case 'area':
161
+ renderAreaChartAnimated(rc, series, palette, config, eased);
162
+ break;
163
+ default:
164
+ renderPlaceholder(rc, config.type, palette);
165
+ }
166
+ // Axes
167
+ if (['bar', 'line', 'area'].includes(config.type)) {
168
+ renderAxes(rc, series, config, palette);
169
+ }
170
+ ctx.restore();
171
+ if (progress < 1) {
172
+ requestAnimationFrame(animate);
173
+ }
174
+ else {
175
+ resolve(currentCanvas);
176
+ }
177
+ }
178
+ requestAnimationFrame(animate);
179
+ });
180
+ }
181
+ /**
182
+ * Easing function for smooth animations
183
+ */
184
+ function easeOutCubic(t) {
185
+ return 1 - Math.pow(1 - t, 3);
186
+ }
187
+ /**
188
+ * Render bar chart
189
+ */
190
+ function renderBarChart(rc, series, palette, config) {
191
+ if (series.length === 0)
192
+ return;
193
+ const { ctx, chartWidth, chartHeight } = rc;
194
+ const allData = series.flatMap((s) => s.data);
195
+ const maxValue = Math.max(...allData.map((d) => (d.y || d.value || 0)));
196
+ const categories = [...new Set(allData.map((d) => d.x || d.name))];
197
+ const barWidth = (chartWidth / categories.length) * 0.6 / series.length;
198
+ const scaleY = chartHeight / (maxValue * 1.1);
199
+ series.forEach((s, seriesIndex) => {
200
+ const color = s.color || palette.primary[seriesIndex % palette.primary.length];
201
+ ctx.fillStyle = color;
202
+ s.data.forEach((point, pointIndex) => {
203
+ const value = (point.y || point.value || 0);
204
+ const barHeight = value * scaleY;
205
+ const x = (pointIndex + 0.2) * (chartWidth / categories.length) + seriesIndex * barWidth;
206
+ const y = chartHeight - barHeight;
207
+ ctx.fillRect(x, y, barWidth, barHeight);
208
+ });
209
+ });
210
+ }
211
+ /**
212
+ * Render animated bar chart
213
+ */
214
+ function renderBarChartAnimated(rc, series, palette, config, progress) {
215
+ if (series.length === 0)
216
+ return;
217
+ const { ctx, chartWidth, chartHeight } = rc;
218
+ const allData = series.flatMap((s) => s.data);
219
+ const maxValue = Math.max(...allData.map((d) => (d.y || d.value || 0)));
220
+ const categories = [...new Set(allData.map((d) => d.x || d.name))];
221
+ const barWidth = (chartWidth / categories.length) * 0.6 / series.length;
222
+ const scaleY = chartHeight / (maxValue * 1.1);
223
+ series.forEach((s, seriesIndex) => {
224
+ const color = s.color || palette.primary[seriesIndex % palette.primary.length];
225
+ ctx.fillStyle = color;
226
+ s.data.forEach((point, pointIndex) => {
227
+ const value = (point.y || point.value || 0);
228
+ const barHeight = value * scaleY * progress;
229
+ const x = (pointIndex + 0.2) * (chartWidth / categories.length) + seriesIndex * barWidth;
230
+ const y = chartHeight - barHeight;
231
+ ctx.fillRect(x, y, barWidth, barHeight);
232
+ });
233
+ });
234
+ }
235
+ /**
236
+ * Render line chart
237
+ */
238
+ function renderLineChart(rc, series, palette, config) {
239
+ if (series.length === 0)
240
+ return;
241
+ const { ctx, chartWidth, chartHeight } = rc;
242
+ const allData = series.flatMap((s) => s.data);
243
+ const maxValue = Math.max(...allData.map((d) => (d.y || 0)));
244
+ const scaleX = chartWidth / (allData.length - 1 || 1);
245
+ const scaleY = chartHeight / (maxValue * 1.1);
246
+ series.forEach((s, seriesIndex) => {
247
+ const color = s.color || palette.primary[seriesIndex % palette.primary.length];
248
+ ctx.strokeStyle = color;
249
+ ctx.lineWidth = 2;
250
+ ctx.beginPath();
251
+ s.data.forEach((point, index) => {
252
+ const x = index * scaleX;
253
+ const y = chartHeight - (point.y || 0) * scaleY;
254
+ if (index === 0) {
255
+ ctx.moveTo(x, y);
256
+ }
257
+ else {
258
+ ctx.lineTo(x, y);
259
+ }
260
+ });
261
+ ctx.stroke();
262
+ // Data points
263
+ if (config.dataLabels) {
264
+ ctx.fillStyle = color;
265
+ s.data.forEach((point, index) => {
266
+ const x = index * scaleX;
267
+ const y = chartHeight - (point.y || 0) * scaleY;
268
+ ctx.beginPath();
269
+ ctx.arc(x, y, 4, 0, Math.PI * 2);
270
+ ctx.fill();
271
+ });
272
+ }
273
+ });
274
+ }
275
+ /**
276
+ * Render animated line chart
277
+ */
278
+ function renderLineChartAnimated(rc, series, palette, config, progress) {
279
+ if (series.length === 0)
280
+ return;
281
+ const { ctx, chartWidth, chartHeight } = rc;
282
+ const allData = series.flatMap((s) => s.data);
283
+ const maxValue = Math.max(...allData.map((d) => (d.y || 0)));
284
+ const scaleX = chartWidth / (allData.length - 1 || 1);
285
+ const scaleY = chartHeight / (maxValue * 1.1);
286
+ series.forEach((s, seriesIndex) => {
287
+ const color = s.color || palette.primary[seriesIndex % palette.primary.length];
288
+ ctx.strokeStyle = color;
289
+ ctx.lineWidth = 2;
290
+ ctx.beginPath();
291
+ s.data.forEach((point, index) => {
292
+ const x = index * scaleX;
293
+ const y = chartHeight - (point.y || 0) * scaleY;
294
+ if (index === 0) {
295
+ ctx.moveTo(x, y);
296
+ }
297
+ else if (index / (s.data.length - 1) <= progress) {
298
+ ctx.lineTo(x, y);
299
+ }
300
+ });
301
+ ctx.stroke();
302
+ });
303
+ }
304
+ /**
305
+ * Render pie/donut chart
306
+ */
307
+ function renderPieChart(rc, series, palette, config) {
308
+ if (series.length === 0)
309
+ return;
310
+ const { ctx, chartWidth, chartHeight } = rc;
311
+ const data = series[0].data;
312
+ const total = data.reduce((sum, d) => sum + (d.y || d.value || 0), 0);
313
+ const centerX = chartWidth / 2;
314
+ const centerY = chartHeight / 2;
315
+ const radius = Math.min(chartWidth, chartHeight) / 2 * 0.8;
316
+ const innerRadius = config.type === 'donut' ? radius * 0.5 : 0;
317
+ let currentAngle = -Math.PI / 2;
318
+ data.forEach((point, index) => {
319
+ const value = (point.y || point.value || 0);
320
+ const angle = (value / total) * 2 * Math.PI;
321
+ const color = palette.primary[index % palette.primary.length];
322
+ ctx.fillStyle = color;
323
+ ctx.beginPath();
324
+ if (innerRadius > 0) {
325
+ // Donut
326
+ ctx.arc(centerX, centerY, radius, currentAngle, currentAngle + angle);
327
+ ctx.arc(centerX, centerY, innerRadius, currentAngle + angle, currentAngle, true);
328
+ }
329
+ else {
330
+ // Pie
331
+ ctx.moveTo(centerX, centerY);
332
+ ctx.arc(centerX, centerY, radius, currentAngle, currentAngle + angle);
333
+ }
334
+ ctx.closePath();
335
+ ctx.fill();
336
+ currentAngle += angle;
337
+ });
338
+ }
339
+ /**
340
+ * Render animated pie/donut chart
341
+ */
342
+ function renderPieChartAnimated(rc, series, palette, config, progress) {
343
+ if (series.length === 0)
344
+ return;
345
+ const { ctx, chartWidth, chartHeight } = rc;
346
+ const data = series[0].data;
347
+ const total = data.reduce((sum, d) => sum + (d.y || d.value || 0), 0);
348
+ const centerX = chartWidth / 2;
349
+ const centerY = chartHeight / 2;
350
+ const radius = Math.min(chartWidth, chartHeight) / 2 * 0.8 * progress;
351
+ const innerRadius = config.type === 'donut' ? radius * 0.5 : 0;
352
+ let currentAngle = -Math.PI / 2;
353
+ data.forEach((point, index) => {
354
+ const value = (point.y || point.value || 0);
355
+ const angle = (value / total) * 2 * Math.PI;
356
+ const color = palette.primary[index % palette.primary.length];
357
+ ctx.fillStyle = color;
358
+ ctx.beginPath();
359
+ if (innerRadius > 0) {
360
+ ctx.arc(centerX, centerY, radius, currentAngle, currentAngle + angle);
361
+ ctx.arc(centerX, centerY, innerRadius, currentAngle + angle, currentAngle, true);
362
+ }
363
+ else {
364
+ ctx.moveTo(centerX, centerY);
365
+ ctx.arc(centerX, centerY, radius, currentAngle, currentAngle + angle);
366
+ }
367
+ ctx.closePath();
368
+ ctx.fill();
369
+ currentAngle += angle;
370
+ });
371
+ }
372
+ /**
373
+ * Render area chart
374
+ */
375
+ function renderAreaChart(rc, series, palette, config) {
376
+ if (series.length === 0)
377
+ return;
378
+ const { ctx, chartWidth, chartHeight } = rc;
379
+ const allData = series.flatMap((s) => s.data);
380
+ const maxValue = Math.max(...allData.map((d) => (d.y || 0)));
381
+ const scaleX = chartWidth / (allData.length - 1 || 1);
382
+ const scaleY = chartHeight / (maxValue * 1.1);
383
+ series.forEach((s, seriesIndex) => {
384
+ const color = s.color || palette.primary[seriesIndex % palette.primary.length];
385
+ ctx.fillStyle = color + '40'; // 25% opacity
386
+ ctx.strokeStyle = color;
387
+ ctx.lineWidth = 2;
388
+ ctx.beginPath();
389
+ s.data.forEach((point, index) => {
390
+ const x = index * scaleX;
391
+ const y = chartHeight - (point.y || 0) * scaleY;
392
+ if (index === 0) {
393
+ ctx.moveTo(x, y);
394
+ }
395
+ else {
396
+ ctx.lineTo(x, y);
397
+ }
398
+ });
399
+ ctx.lineTo(chartWidth, chartHeight);
400
+ ctx.lineTo(0, chartHeight);
401
+ ctx.closePath();
402
+ ctx.fill();
403
+ ctx.stroke();
404
+ });
405
+ }
406
+ /**
407
+ * Render animated area chart
408
+ */
409
+ function renderAreaChartAnimated(rc, series, palette, config, progress) {
410
+ if (series.length === 0)
411
+ return;
412
+ const { ctx, chartWidth, chartHeight } = rc;
413
+ const allData = series.flatMap((s) => s.data);
414
+ const maxValue = Math.max(...allData.map((d) => (d.y || 0)));
415
+ const scaleX = chartWidth / (allData.length - 1 || 1);
416
+ const scaleY = (chartHeight / (maxValue * 1.1)) * progress;
417
+ series.forEach((s, seriesIndex) => {
418
+ const color = s.color || palette.primary[seriesIndex % palette.primary.length];
419
+ ctx.fillStyle = color + '40';
420
+ ctx.strokeStyle = color;
421
+ ctx.lineWidth = 2;
422
+ ctx.beginPath();
423
+ s.data.forEach((point, index) => {
424
+ const x = index * scaleX;
425
+ const y = chartHeight - (point.y || 0) * scaleY;
426
+ if (index === 0) {
427
+ ctx.moveTo(x, y);
428
+ }
429
+ else {
430
+ ctx.lineTo(x, y);
431
+ }
432
+ });
433
+ ctx.lineTo(chartWidth, chartHeight);
434
+ ctx.lineTo(0, chartHeight);
435
+ ctx.closePath();
436
+ ctx.fill();
437
+ ctx.stroke();
438
+ });
439
+ }
440
+ /**
441
+ * Render placeholder for unsupported chart types
442
+ */
443
+ function renderPlaceholder(rc, type, palette) {
444
+ const { ctx, chartWidth, chartHeight } = rc;
445
+ ctx.fillStyle = '#e5e7eb';
446
+ ctx.fillRect(chartWidth / 4, chartHeight / 3, chartWidth / 2, chartHeight / 3);
447
+ ctx.fillStyle = '#6b7280';
448
+ ctx.font = '14px sans-serif';
449
+ ctx.textAlign = 'center';
450
+ ctx.fillText(`${type} chart`, chartWidth / 2, chartHeight / 2 + 5);
451
+ }
452
+ /**
453
+ * Render axes
454
+ */
455
+ function renderAxes(rc, series, config, palette) {
456
+ const { ctx, chartWidth, chartHeight } = rc;
457
+ ctx.strokeStyle = palette.background[2];
458
+ ctx.lineWidth = 1;
459
+ ctx.fillStyle = palette.text.secondary;
460
+ ctx.font = '12px sans-serif';
461
+ ctx.textAlign = 'right';
462
+ ctx.textBaseline = 'middle';
463
+ // Y-axis
464
+ ctx.beginPath();
465
+ ctx.moveTo(0, 0);
466
+ ctx.lineTo(0, chartHeight);
467
+ ctx.stroke();
468
+ // X-axis
469
+ ctx.beginPath();
470
+ ctx.moveTo(0, chartHeight);
471
+ ctx.lineTo(chartWidth, chartHeight);
472
+ ctx.stroke();
473
+ // Y-axis labels
474
+ const maxValue = Math.max(...series.flatMap((s) => s.data.map((d) => (d.y || 0))));
475
+ const steps = 5;
476
+ for (let i = 0; i <= steps; i++) {
477
+ const value = (maxValue / steps) * i;
478
+ const y = chartHeight - (chartHeight / steps) * i;
479
+ ctx.fillText(String(Math.round(value)), -10, y);
480
+ // Grid line
481
+ if (config.xAxis?.grid?.enabled !== false && i > 0) {
482
+ ctx.save();
483
+ ctx.strokeStyle = palette.background[2];
484
+ ctx.setLineDash([4, 4]);
485
+ ctx.beginPath();
486
+ ctx.moveTo(0, y);
487
+ ctx.lineTo(chartWidth, y);
488
+ ctx.stroke();
489
+ ctx.restore();
490
+ }
491
+ }
492
+ // Axis titles
493
+ if (config.yAxis?.title) {
494
+ ctx.save();
495
+ ctx.translate(-margin.left + 20, chartHeight / 2);
496
+ ctx.rotate(-Math.PI / 2);
497
+ ctx.textAlign = 'center';
498
+ ctx.fillText(config.yAxis.title, 0, 0);
499
+ ctx.restore();
500
+ }
501
+ if (config.xAxis?.title) {
502
+ ctx.textAlign = 'center';
503
+ ctx.fillText(config.xAxis.title, chartWidth / 2, chartHeight + 40);
504
+ }
505
+ }
506
+ /**
507
+ * Get chart metadata
508
+ */
509
+ function getMetadata(type) {
510
+ const metadata = {
511
+ line: {
512
+ type: 'line',
513
+ name: 'Line Chart',
514
+ description: 'Show trends over time or categories',
515
+ axes: ['x', 'y'],
516
+ dataStructure: 'Array of { x, y } points',
517
+ useCases: ['Time series', 'Trends', 'Progress over time'],
518
+ },
519
+ bar: {
520
+ type: 'bar',
521
+ name: 'Bar Chart',
522
+ description: 'Compare values across categories',
523
+ axes: ['x', 'y'],
524
+ dataStructure: 'Array of { x, y } points',
525
+ useCases: ['Comparisons', 'Rankings', 'Category distribution'],
526
+ },
527
+ pie: {
528
+ type: 'pie',
529
+ name: 'Pie Chart',
530
+ description: 'Show part-to-whole relationships',
531
+ axes: [],
532
+ dataStructure: 'Array of { name, value }',
533
+ useCases: ['Composition', 'Percentage distribution'],
534
+ },
535
+ donut: {
536
+ type: 'donut',
537
+ name: 'Donut Chart',
538
+ description: 'Show part-to-whole with center space',
539
+ axes: [],
540
+ dataStructure: 'Array of { name, value }',
541
+ useCases: ['Composition', 'Percentage distribution'],
542
+ },
543
+ area: {
544
+ type: 'area',
545
+ name: 'Area Chart',
546
+ description: 'Show cumulative totals over time',
547
+ axes: ['x', 'y'],
548
+ dataStructure: 'Array of { x, y } points',
549
+ useCases: ['Volume over time', 'Cumulative data'],
550
+ },
551
+ };
552
+ return metadata[type] || metadata.line;
553
+ }
554
+ /**
555
+ * Export to data URL
556
+ */
557
+ function toDataURL(format = 'png', quality = 0.92) {
558
+ if (!currentCanvas)
559
+ return null;
560
+ return currentCanvas.toDataURL(`image/${format}`, quality);
561
+ }
562
+ /**
563
+ * Get canvas element
564
+ */
565
+ function getCanvas() {
566
+ return currentCanvas;
567
+ }
568
+ return {
569
+ render,
570
+ renderAnimated,
571
+ getMetadata,
572
+ toDataURL,
573
+ getCanvas,
574
+ };
575
+ }
576
+ /**
577
+ * Global Canvas renderer instance
578
+ */
579
+ export const globalCanvasRenderer = createCanvasRenderer();
580
+ //# sourceMappingURL=canvas-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-renderer.js","sourceRoot":"","sources":["../../src/charts/canvas-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * SVG Chart Renderer
3
+ *
4
+ * Renders charts to SVG format.
5
+ */
6
+ import type { ChartConfig, DataSeries, ChartMetadata } from '../types';
7
+ export interface SVGRenderer {
8
+ /** Render chart to SVG string */
9
+ render(config: ChartConfig, series: DataSeries[]): string;
10
+ /** Get chart metadata */
11
+ getMetadata(type: string): ChartMetadata;
12
+ }
13
+ /**
14
+ * Create SVG chart renderer
15
+ */
16
+ export declare function createSVGRenderer(): SVGRenderer;
17
+ /**
18
+ * Global SVG renderer instance
19
+ */
20
+ export declare const globalSVGRenderer: SVGRenderer;
21
+ //# sourceMappingURL=svg-renderer.d.ts.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * SVG Chart Renderer
3
+ *
4
+ * Renders charts to SVG format.
5
+ */
6
+ import type { ChartConfig, DataSeries, ChartMetadata } from '../types';
7
+ export interface SVGRenderer {
8
+ /** Render chart to SVG string */
9
+ render(config: ChartConfig, series: DataSeries[]): string;
10
+ /** Get chart metadata */
11
+ getMetadata(type: string): ChartMetadata;
12
+ }
13
+ /**
14
+ * Create SVG chart renderer
15
+ */
16
+ export declare function createSVGRenderer(): SVGRenderer;
17
+ /**
18
+ * Global SVG renderer instance
19
+ */
20
+ export declare const globalSVGRenderer: SVGRenderer;
21
+ //# sourceMappingURL=svg-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-renderer.d.ts","sourceRoot":"","sources":["../../src/charts/svg-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,aAAa,EAAgB,MAAM,UAAU,CAAC;AAGhG,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC1D,yBAAyB;IACzB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAmW/C;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAAsB,CAAC"}