pace-chart-lib 1.0.66 → 1.0.68

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 (72) hide show
  1. package/dist/pace-chart-lib.es.js +164 -66
  2. package/dist/pace-chart-lib.umd.js +164 -66
  3. package/package.json +1 -1
  4. package/dist/Components/Charts/ChartJS/charts/CJSAreaChart.d.ts +0 -19
  5. package/dist/Components/Charts/ChartJS/charts/CJSBubbleChart.d.ts +0 -17
  6. package/dist/Components/Charts/ChartJS/charts/CJSColumnChart.d.ts +0 -19
  7. package/dist/Components/Charts/ChartJS/charts/CJSDonutChart.d.ts +0 -19
  8. package/dist/Components/Charts/ChartJS/charts/CJSHorizontalBarChart.d.ts +0 -18
  9. package/dist/Components/Charts/ChartJS/charts/CJSLineChart.d.ts +0 -19
  10. package/dist/Components/Charts/ChartJS/charts/CJSNormalizedStackAreaChart.d.ts +0 -17
  11. package/dist/Components/Charts/ChartJS/charts/CJSNormalizedStackColumnChart.d.ts +0 -17
  12. package/dist/Components/Charts/ChartJS/charts/CJSNormalizedStackHorizontalBarChart.d.ts +0 -17
  13. package/dist/Components/Charts/ChartJS/charts/CJSNormalizedStackLineChart.d.ts +0 -17
  14. package/dist/Components/Charts/ChartJS/charts/CJSPieChart.d.ts +0 -23
  15. package/dist/Components/Charts/ChartJS/charts/CJSPolarAreaChart.d.ts +0 -19
  16. package/dist/Components/Charts/ChartJS/charts/CJSRadarChart.d.ts +0 -16
  17. package/dist/Components/Charts/ChartJS/charts/CJSScatterChart.d.ts +0 -16
  18. package/dist/Components/Charts/ChartJS/charts/CJSStackAreaChart.d.ts +0 -15
  19. package/dist/Components/Charts/ChartJS/charts/CJSStackColumnChart.d.ts +0 -15
  20. package/dist/Components/Charts/ChartJS/charts/CJSStackHorizontalBarChart.d.ts +0 -15
  21. package/dist/Components/Charts/ChartJS/charts/CJSStackLineChart.d.ts +0 -15
  22. package/dist/Components/Charts/ChartJS/core/ChartJSDataTransformer.d.ts +0 -31
  23. package/dist/Components/Charts/ChartJS/core/ChartJSOptionsMapper.d.ts +0 -9
  24. package/dist/Components/Charts/ChartJS/core/ChartJSWrapper.d.ts +0 -27
  25. package/dist/Components/Charts/ChartJS/index.d.ts +0 -21
  26. package/dist/Components/Charts/ChartsWithAxis/AreaFamily/AreaChart.d.ts +0 -4
  27. package/dist/Components/Charts/ChartsWithAxis/AreaFamily/NormalizedStackAreaChart.d.ts +0 -4
  28. package/dist/Components/Charts/ChartsWithAxis/AreaFamily/StackAreaChart.d.ts +0 -4
  29. package/dist/Components/Charts/ChartsWithAxis/ChartsWithAxisFunctions.d.ts +0 -638
  30. package/dist/Components/Charts/ChartsWithAxis/ChartsWithAxisTypes.types.d.ts +0 -172
  31. package/dist/Components/Charts/ChartsWithAxis/ColumnFamily/ColumnChart.d.ts +0 -4
  32. package/dist/Components/Charts/ChartsWithAxis/ColumnFamily/ColumnHistogramChart.d.ts +0 -4
  33. package/dist/Components/Charts/ChartsWithAxis/ColumnFamily/CustomColumnChart.d.ts +0 -4
  34. package/dist/Components/Charts/ChartsWithAxis/ColumnFamily/LayeredColumnChart.d.ts +0 -4
  35. package/dist/Components/Charts/ChartsWithAxis/ColumnFamily/NormalizedStackColumnChart.d.ts +0 -4
  36. package/dist/Components/Charts/ChartsWithAxis/ColumnFamily/StackColumnChart.d.ts +0 -4
  37. package/dist/Components/Charts/ChartsWithAxis/HorizontalBarFamily/HorizontalBarChart.d.ts +0 -4
  38. package/dist/Components/Charts/ChartsWithAxis/HorizontalBarFamily/HorizontalHistogramChart.d.ts +0 -4
  39. package/dist/Components/Charts/ChartsWithAxis/HorizontalBarFamily/LayeredHorizontalBarChart.d.ts +0 -4
  40. package/dist/Components/Charts/ChartsWithAxis/HorizontalBarFamily/NormalizedStackHorizontalBarChart.d.ts +0 -4
  41. package/dist/Components/Charts/ChartsWithAxis/HorizontalBarFamily/StackHorizontalBarChart.d.ts +0 -4
  42. package/dist/Components/Charts/ChartsWithAxis/LineFamily/LineChart.d.ts +0 -4
  43. package/dist/Components/Charts/ChartsWithAxis/LineFamily/NormalizedStackLineChart.d.ts +0 -4
  44. package/dist/Components/Charts/ChartsWithAxis/LineFamily/StackLineChart.d.ts +0 -4
  45. package/dist/Components/Charts/ChartsWithAxis/MiscellaneousChartFamily/DotPlot.d.ts +0 -4
  46. package/dist/Components/Charts/ChartsWithAxis/MiscellaneousChartFamily/TornadoChart.d.ts +0 -4
  47. package/dist/Components/Charts/ChartsWithAxis/MiscellaneousChartFamily/WaterfallChart.d.ts +0 -4
  48. package/dist/Components/Charts/ChartsWithoutAxis/ChartsWithoutAxisFunctions.d.ts +0 -96
  49. package/dist/Components/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.types.d.ts +0 -111
  50. package/dist/Components/Charts/ChartsWithoutAxis/Maps/Cordinates.d.ts +0 -26
  51. package/dist/Components/Charts/ChartsWithoutAxis/Maps/Maps.d.ts +0 -4
  52. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/BubbleChart.d.ts +0 -4
  53. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/OrganizationChart.d.ts +0 -4
  54. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/ProgressChart.d.ts +0 -3
  55. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/PyramidChart.d.ts +0 -3
  56. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/RadialBarChart.d.ts +0 -4
  57. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/SankeyChart.d.ts +0 -4
  58. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/ScatterChart.d.ts +0 -4
  59. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/Speedometer.d.ts +0 -3
  60. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/VennChart.d.ts +0 -4
  61. package/dist/Components/Charts/ChartsWithoutAxis/OtherCharts/WordCloud.d.ts +0 -4
  62. package/dist/Components/Charts/ChartsWithoutAxis/PieFamily/DonutChart.d.ts +0 -4
  63. package/dist/Components/Charts/ChartsWithoutAxis/PieFamily/PieChart.d.ts +0 -4
  64. package/dist/Components/Charts/ChartsWithoutAxis/PieFamily/PieFamilyCommonFunctions.d.ts +0 -10
  65. package/dist/Components/Charts/ChartsWithoutAxis/PieFamily/PieofPieChart.d.ts +0 -3
  66. package/dist/Components/Charts/ChartsWithoutAxis/PieFamily/TreemapChart.d.ts +0 -3
  67. package/dist/Components/Charts/Core/Common.types.d.ts +0 -410
  68. package/dist/Components/Charts/Core/CommonFunctions.d.ts +0 -250
  69. package/dist/Components/Charts/Core/DefaultChartDataProperties.d.ts +0 -66
  70. package/dist/Components/Charts/Core/DefaultProperties.types.d.ts +0 -630
  71. package/dist/Services/ErrorLog.d.ts +0 -1
  72. package/dist/index.d.ts +0 -37
@@ -13596,16 +13596,42 @@
13596
13596
  const duration = formatOptions.animation.animationDuration;
13597
13597
  const ease = effectsMap[formatOptions.animation.animationEffect];
13598
13598
  const accessors = makeAnnotations.accessors();
13599
- annotations.selectAll(".annotation").attr("transform", function(d) {
13600
- const x2 = accessors.x(d.data);
13601
- const yScale = d.data?.y?.axis === axisTypes.primary ? yScaleLeft : yScaleRight;
13602
- const startY = yScale(0);
13603
- return `translate(${x2}, ${startY})`;
13604
- }).transition().duration(duration).ease(ease).attr("transform", function(d) {
13605
- const x2 = accessors.x(d.data);
13606
- const y2 = accessors.y(d.data);
13607
- return `translate(${x2}, ${y2})`;
13608
- });
13599
+ const isLineChartType = chartType === chartTypes.LineChart;
13600
+ if (isLineChartType) {
13601
+ const xRange = xScale.range ? xScale.range() : [0, 1];
13602
+ const xRangeMin = Math.min(xRange[0], xRange[1]);
13603
+ const xRangeSpan = Math.max(xRange[0], xRange[1]) - xRangeMin;
13604
+ const invertEase = (progress, steps = 100) => {
13605
+ for (let i = 0; i <= steps; i++) {
13606
+ const t = i / steps;
13607
+ if ((ease ?? linear$2)(t) >= progress) return t;
13608
+ }
13609
+ return 1;
13610
+ };
13611
+ annotations.selectAll(".annotation").attr("opacity", 0).each(function(d) {
13612
+ const x2 = accessors.x(d.data) ?? xRangeMin;
13613
+ const fraction = xRangeSpan > 0 ? Math.max(0, Math.min(1, (x2 - xRangeMin) / xRangeSpan)) : 0;
13614
+ const delay = invertEase(fraction) * duration;
13615
+ select$2(this).transition().delay(delay).duration(0).attr("opacity", 1);
13616
+ });
13617
+ } else {
13618
+ annotations.selectAll(".annotation").attr("transform", function(d) {
13619
+ if (barChart) {
13620
+ const startX = yScaleLeft ? yScaleLeft(0) : 0;
13621
+ const y2 = accessors.y(d.data);
13622
+ return `translate(${startX}, ${y2})`;
13623
+ } else {
13624
+ const x2 = accessors.x(d.data);
13625
+ const scale2 = d.data?.y?.axis === axisTypes.primary ? yScaleLeft : yScaleRight ?? yScaleLeft;
13626
+ const startY = scale2 ? scale2(0) : 0;
13627
+ return `translate(${x2}, ${startY})`;
13628
+ }
13629
+ }).transition().duration(duration).ease(ease).attr("transform", function(d) {
13630
+ const x2 = accessors.x(d.data);
13631
+ const y2 = accessors.y(d.data);
13632
+ return `translate(${x2}, ${y2})`;
13633
+ });
13634
+ }
13609
13635
  }
13610
13636
  }
13611
13637
  } catch (error) {
@@ -15563,16 +15589,41 @@
15563
15589
  const duration = formatOptions.animation.animationDuration;
15564
15590
  const ease = effectsMap[formatOptions.animation.animationEffect];
15565
15591
  const accessors = makeAnnotations.accessors();
15566
- annotations.selectAll(".annotation").attr("transform", function(d) {
15567
- const x2 = accessors.x(d.data);
15568
- const yScale = d.data?.y?.axis === axisTypes.primary ? yScaleLeft : yScaleRight;
15569
- const startY = yScale ? yScale(0) : 0;
15570
- return `translate(${x2}, ${startY})`;
15571
- }).transition().duration(duration).ease(ease).attr("transform", function(d) {
15572
- const x2 = accessors.x(d.data);
15573
- const y2 = accessors.y(d.data);
15574
- return `translate(${x2}, ${y2})`;
15575
- });
15592
+ const isStackLineType = chartType === chartTypes.StackLineChart || chartType === chartTypes.NormalizedStackLineChart;
15593
+ if (isStackLineType) {
15594
+ const xRange = xScale.range ? xScale.range() : [0, 1];
15595
+ const xRangeMin = Math.min(xRange[0], xRange[1]);
15596
+ const xRangeSpan = Math.max(xRange[0], xRange[1]) - xRangeMin;
15597
+ const invertEase = (progress, steps = 100) => {
15598
+ for (let i = 0; i <= steps; i++) {
15599
+ const t = i / steps;
15600
+ if ((ease ?? linear$2)(t) >= progress) return t;
15601
+ }
15602
+ return 1;
15603
+ };
15604
+ annotations.selectAll(".annotation").attr("opacity", 0).each(function(d) {
15605
+ const x2 = accessors.x(d.data) ?? xRangeMin;
15606
+ const fraction = xRangeSpan > 0 ? Math.max(0, Math.min(1, (x2 - xRangeMin) / xRangeSpan)) : 0;
15607
+ const delay = invertEase(fraction) * duration;
15608
+ select$2(this).transition().delay(delay).duration(0).attr("opacity", 1);
15609
+ });
15610
+ } else {
15611
+ annotations.selectAll(".annotation").attr("transform", function(d) {
15612
+ if (barChart) {
15613
+ const startX = yScaleLeft ? yScaleLeft(0) : 0;
15614
+ const y2 = accessors.y(d.data);
15615
+ return `translate(${startX}, ${y2})`;
15616
+ } else {
15617
+ const x2 = accessors.x(d.data);
15618
+ const startY = yScaleLeft ? yScaleLeft(0) : 0;
15619
+ return `translate(${x2}, ${startY})`;
15620
+ }
15621
+ }).transition().duration(duration).ease(ease).attr("transform", function(d) {
15622
+ const x2 = accessors.x(d.data);
15623
+ const y2 = accessors.y(d.data);
15624
+ return `translate(${x2}, ${y2})`;
15625
+ });
15626
+ }
15576
15627
  }
15577
15628
  }
15578
15629
  } catch (error) {
@@ -16396,22 +16447,44 @@
16396
16447
  if (formatOptions.animation.animationEnabled) {
16397
16448
  const duration = formatOptions.animation.animationDuration;
16398
16449
  const ease = effectsMap[formatOptions.animation.animationEffect] ?? linear$2;
16399
- const xRange = xScale.range();
16400
- const xRangeMin = Math.min(xRange[0], xRange[1]);
16401
- const xRangeSpan = Math.max(xRange[0], xRange[1]) - xRangeMin;
16402
- const invertEase = (progress, steps = 100) => {
16403
- for (let i = 0; i <= steps; i++) {
16404
- const t = i / steps;
16405
- if (ease(t) >= progress) return t;
16406
- }
16407
- return 1;
16408
- };
16409
- mergedMarkers.attr("opacity", 0).each(function(d) {
16410
- const x2 = xScale(d.dimension) ?? xRangeMin;
16411
- const fraction = xRangeSpan > 0 ? Math.max(0, Math.min(1, (x2 - xRangeMin) / xRangeSpan)) : 0;
16412
- const delay = invertEase(fraction) * duration;
16413
- select$2(this).transition().delay(delay).duration(0).attr("opacity", 1);
16414
- });
16450
+ const isAreaType = [
16451
+ chartTypes.AreaChart,
16452
+ chartTypes.StackAreaChart,
16453
+ chartTypes.NormalizedStackAreaChart,
16454
+ chartTypes.CombinationArea,
16455
+ chartTypes.CombinationStackArea
16456
+ ].includes(type);
16457
+ if (isAreaType) {
16458
+ const stackedTypes = [
16459
+ chartTypes.StackAreaChart,
16460
+ chartTypes.NormalizedStackAreaChart,
16461
+ chartTypes.CombinationStackArea
16462
+ ];
16463
+ mergedMarkers.each(function(d) {
16464
+ const requiredYScale = d.axis === axisTypes.primary ? yScale : yScaleRight;
16465
+ const x2 = xScale(d.dimension);
16466
+ const finalY = stackedTypes.includes(type) ? d[1] > 0 ? requiredYScale(d[1]) : requiredYScale(d[0]) : requiredYScale(d.value);
16467
+ const baseY = yScale(0);
16468
+ select$2(this).attr("transform", `translate(${x2},${baseY})`).transition().duration(duration).ease(ease).attr("transform", `translate(${x2},${finalY})`);
16469
+ });
16470
+ } else {
16471
+ const xRange = xScale.range();
16472
+ const xRangeMin = Math.min(xRange[0], xRange[1]);
16473
+ const xRangeSpan = Math.max(xRange[0], xRange[1]) - xRangeMin;
16474
+ const invertEase = (progress, steps = 100) => {
16475
+ for (let i = 0; i <= steps; i++) {
16476
+ const t = i / steps;
16477
+ if (ease(t) >= progress) return t;
16478
+ }
16479
+ return 1;
16480
+ };
16481
+ mergedMarkers.attr("opacity", 0).each(function(d) {
16482
+ const x2 = xScale(d.dimension) ?? xRangeMin;
16483
+ const fraction = xRangeSpan > 0 ? Math.max(0, Math.min(1, (x2 - xRangeMin) / xRangeSpan)) : 0;
16484
+ const delay = invertEase(fraction) * duration;
16485
+ select$2(this).transition().delay(delay).duration(0).attr("opacity", 1);
16486
+ });
16487
+ }
16415
16488
  }
16416
16489
  });
16417
16490
  } catch (error) {
@@ -18045,7 +18118,6 @@
18045
18118
  let requiredData = [];
18046
18119
  let scrollPosition = 0;
18047
18120
  let visibleBars;
18048
- let annotationTimeoutId;
18049
18121
  let chartJSON = {
18050
18122
  dimensionList,
18051
18123
  chartType,
@@ -18983,7 +19055,6 @@
18983
19055
  filteredDimension,
18984
19056
  xScale
18985
19057
  );
18986
- clearTimeout(annotationTimeoutId);
18987
19058
  const renderAnnotationsAndTotals = () => {
18988
19059
  commonAnnotationsForCustomChart(
18989
19060
  filteredData,
@@ -19028,15 +19099,8 @@
19028
19099
  isReportEditable
19029
19100
  );
19030
19101
  };
19031
- if (formatOptions.animation.animationEnabled) {
19032
- svg.selectAll(".annotation-group").remove();
19033
- annotationTimeoutId = setTimeout(
19034
- renderAnnotationsAndTotals,
19035
- formatOptions.animation.animationDuration
19036
- );
19037
- } else {
19038
- renderAnnotationsAndTotals();
19039
- }
19102
+ svg.selectAll(".annotation-group").remove();
19103
+ renderAnnotationsAndTotals();
19040
19104
  };
19041
19105
  const createStackData = (requiredStackChatData) => {
19042
19106
  let legendList = requiredStackChatData.data.map((d) => d.legend);
@@ -27361,7 +27425,7 @@
27361
27425
  });
27362
27426
  areaGroupsEnter.merge(areaGroups).each(function(d) {
27363
27427
  const g = select$2(this);
27364
- g.selectAll("path.visibleLine").data([d]).join("path").attr("class", "visibleLine parentGroup").attr("d", (d2) => areaGenerator(d2.data)).attr(
27428
+ g.selectAll("path.visibleLine").data([d]).join("path").attr("class", "visibleLine parentGroup").attr("d", (d2) => enableTransition ? areaGeneratorStart(d2.data) : areaGenerator(d2.data)).attr(
27365
27429
  "stroke",
27366
27430
  (d2) => d2.properties.areaBorderColor !== commonColors.white ? d2.properties.areaBorderColor : "none"
27367
27431
  ).attr("stroke-dasharray", (d2) => {
@@ -27380,7 +27444,11 @@
27380
27444
  ).attr(
27381
27445
  "stroke-width",
27382
27446
  (d2) => !isLinesAndMarkersVisible ? 0 : d2.properties.lineStyle !== staticLineStyle.none && formatOptions.plotArea.plotAreaHideLineAndMarkers ? d2.properties.lineWidth : "0"
27383
- ).attr("fill", "none");
27447
+ ).attr("fill", "none").each(function(d2) {
27448
+ if (enableTransition) {
27449
+ select$2(this).transition().duration(formatOptions.animation.animationDuration).ease(effectsMap[formatOptions.animation.animationEffect]).attr("d", areaGenerator(d2.data));
27450
+ }
27451
+ });
27384
27452
  g.selectAll("path.hoverLine").data([d]).join("path").attr("class", "hoverLine").attr("d", (d2) => areaGenerator(d2.data)).attr("fill", commonColors.transparent).attr("stroke", "none").style("pointer-events", "all").raise();
27385
27453
  onHoverMarkerForAreaChartFamily(
27386
27454
  formatOptions,
@@ -27914,7 +27982,7 @@
27914
27982
  });
27915
27983
  areaGroupsEnter.merge(areaGroups).each(function(d, i) {
27916
27984
  const g = select$2(this);
27917
- g.selectAll("path.visibleLine").data([d]).join("path").attr("class", "visibleLine parentGroup").attr("d", (d2) => areaGenerator(d2)).attr(
27985
+ g.selectAll("path.visibleLine").data([d]).join("path").attr("class", "visibleLine parentGroup").attr("d", (d2) => enableTransition ? areaGeneratorStart(d2) : areaGenerator(d2)).attr(
27918
27986
  "stroke",
27919
27987
  (d2) => d2.color !== commonColors.white ? seriesData[i].properties.areaBorderColor : "none"
27920
27988
  ).attr("stroke-dasharray", (d2) => {
@@ -27935,7 +28003,11 @@
27935
28003
  ).attr(
27936
28004
  "stroke-width",
27937
28005
  () => !isLinesAndMarkersVisible ? 0 : seriesData[i].properties.lineStyle !== staticLineStyle.none ? seriesData[i].properties.lineWidth : "0"
27938
- ).attr("fill", "none").style("pointer-events", "none");
28006
+ ).attr("fill", "none").style("pointer-events", "none").each(function(d2) {
28007
+ if (enableTransition) {
28008
+ select$2(this).transition().duration(formatOptions.animation.animationDuration).ease(effectsMap[formatOptions.animation.animationEffect]).attr("d", areaGenerator(d2));
28009
+ }
28010
+ });
27939
28011
  g.selectAll("path.hoverLine").data([d]).join("path").attr("class", "hoverLine").attr("d", (d2) => areaGenerator(d2)).attr("fill", commonColors.transparent).attr("stroke", "none").style("pointer-events", "all").raise();
27940
28012
  svg.selectAll(
27941
28013
  '[hoverId="' + (seriesData[d.index].properties.alias || seriesData[d.index].properties.name || "Legend").replace(/ /g, "-") + '"]'
@@ -28462,7 +28534,7 @@
28462
28534
  ).y0((d) => yScaleLeft(d[0])).y1((d) => yScaleLeft(d[1])).defined((d) => d.data.hideZero ? Boolean(d[0]) : true).curve(curveLinear$1);
28463
28535
  const columnGeneratorStart = area().x(
28464
28536
  (d) => xScale(d.data.dimension) ? xScale(d.data.dimension) : null
28465
- ).y0((d) => yScaleLeft(d[0])).y1((d) => yScaleLeft(d[1])).defined(
28537
+ ).y0(() => yScaleLeft(0)).y1(() => yScaleLeft(0)).defined(
28466
28538
  (d) => d.data.hideZero ? Boolean(d.data.key) : true
28467
28539
  ).curve(getCurveType(formatOptions));
28468
28540
  let areas = gTag.selectAll(".lineGroup").data([stackChartData]);
@@ -28483,7 +28555,7 @@
28483
28555
  });
28484
28556
  areaGroupsEnter.merge(areaGroups).each(function(d, i) {
28485
28557
  const g = select$2(this);
28486
- g.selectAll("path.visibleLine").data([d]).join("path").attr("class", "visibleLine parentGroup").attr("d", (d2) => columnGenerator(d2)).attr(
28558
+ g.selectAll("path.visibleLine").data([d]).join("path").attr("class", "visibleLine parentGroup").attr("d", (d2) => enableTransition ? columnGeneratorStart(d2) : columnGenerator(d2)).attr(
28487
28559
  "stroke",
28488
28560
  (d2) => d2.color !== commonColors.white ? seriesData[i].properties.areaBorderColor : "none"
28489
28561
  ).attr("stroke-dasharray", (d2) => {
@@ -28504,7 +28576,11 @@
28504
28576
  ).attr(
28505
28577
  "stroke-width",
28506
28578
  () => !isLinesAndMarkersVisible ? 0 : seriesData[i].properties.lineStyle !== staticLineStyle.none ? seriesData[i].properties.lineWidth : "0"
28507
- ).attr("fill", "none").style("pointer-events", "none");
28579
+ ).attr("fill", "none").style("pointer-events", "none").each(function(d2) {
28580
+ if (enableTransition) {
28581
+ select$2(this).transition().duration(formatOptions.animation.animationDuration).ease(effectsMap[formatOptions.animation.animationEffect]).attr("d", columnGenerator(d2));
28582
+ }
28583
+ });
28508
28584
  g.selectAll("path.hoverLine").data([d]).join("path").attr("class", "hoverLine").attr("d", (d2) => columnGenerator(d2)).attr("fill", commonColors.transparent).style("pointer-events", "all").raise();
28509
28585
  svg.selectAll(
28510
28586
  '[hoverId="' + getJQuerySelector(
@@ -28997,7 +29073,7 @@
28997
29073
  try {
28998
29074
  if (chartFormatOptions.plotArea.dataLabels) {
28999
29075
  const isSingleDataLabel = pieChartData && pieChartData.length === 1;
29000
- chartAreaTagG.append("g").attr("class", "parentGroup").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29076
+ chartAreaTagG.append("g").attr("class", "parentGroup pie-label-group").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29001
29077
  applyAnnotationRangeFilter(
29002
29078
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "1"),
29003
29079
  chartFormatOptions,
@@ -29036,7 +29112,7 @@
29036
29112
  }
29037
29113
  return "";
29038
29114
  });
29039
- chartAreaTagG.append("g").attr("class", "parentGroup").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29115
+ chartAreaTagG.append("g").attr("class", "parentGroup pie-label-group").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29040
29116
  applyAnnotationRangeFilter(
29041
29117
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "1"),
29042
29118
  chartFormatOptions,
@@ -29106,13 +29182,13 @@
29106
29182
  });
29107
29183
  let outerRadius = arc$1().startAngle((d) => d.x0).endAngle((d) => d.x1).innerRadius((d) => d.depth > 1 ? d.y1 - 1 + radius / 7 : 0).outerRadius((d) => d.depth > 1 ? d.y1 - 1 + radius / 7 : 0);
29108
29184
  let innerRadius = arc$1().startAngle((d) => d.x0).endAngle((d) => d.x1).innerRadius((d) => d.depth > 2 ? d.y0 : 0).outerRadius((d) => d.y1 + radius / 1.5);
29109
- chartAreaTagG.selectAll("polyline").data(
29185
+ chartAreaTagG.selectAll("polyline.pie-label-connector").data(
29110
29186
  applyAnnotationRangeFilter(
29111
29187
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "2"),
29112
29188
  chartFormatOptions,
29113
29189
  (d) => d.data.data[0].value
29114
29190
  )
29115
- ).join("polyline").attr("transform", getPiePosition()).style(
29191
+ ).join("polyline").attr("class", "pie-label-connector").attr("transform", getPiePosition()).style(
29116
29192
  "stroke",
29117
29193
  (d) => chartFormatOptions.connector.connectorColorOption == "Uniform" ? chartFormatOptions.connector.connectorUniformLineColor : d.data.properties.color
29118
29194
  ).style("fill", "none").style(
@@ -29130,7 +29206,7 @@
29130
29206
  const yC = posB[1];
29131
29207
  return [posA, posB, [xC, yC]].map((point2) => point2.join(",")).join(" ");
29132
29208
  });
29133
- chartAreaTagG.append("g").attr("transform", getPiePosition()).selectAll("foreignObject").data(
29209
+ chartAreaTagG.append("g").attr("class", "pie-label-group").attr("transform", getPiePosition()).selectAll("foreignObject").data(
29134
29210
  applyAnnotationRangeFilter(
29135
29211
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "2"),
29136
29212
  chartFormatOptions,
@@ -29197,6 +29273,9 @@
29197
29273
  }
29198
29274
  return htmlString;
29199
29275
  });
29276
+ if (chartFormatOptions.animation.animationEnabled) {
29277
+ chartAreaTagG.selectAll(".pie-label-group, .pie-label-connector").attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
29278
+ }
29200
29279
  }
29201
29280
  } catch (error) {
29202
29281
  logError$2(fileName$8, "drawPieDataLabels", error);
@@ -29442,7 +29521,7 @@
29442
29521
  try {
29443
29522
  if (chartFormatOptions.plotArea.dataLabels) {
29444
29523
  const isSingleDataLabel = pieChartData && pieChartData.length === 1;
29445
- chartAreaTagG.append("g").attr("class", "parentGroup").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29524
+ chartAreaTagG.append("g").attr("class", "parentGroup pie-label-group").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29446
29525
  applyAnnotationRangeFilter(
29447
29526
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "1"),
29448
29527
  chartFormatOptions,
@@ -29481,7 +29560,7 @@
29481
29560
  }
29482
29561
  return "";
29483
29562
  });
29484
- chartAreaTagG.append("g").attr("class", "parentGroup").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29563
+ chartAreaTagG.append("g").attr("class", "parentGroup pie-label-group").attr("transform", `${getPiePosition()}`).attr("pointer-events", "none").attr("text-anchor", "middle").selectAll("text").data(
29485
29564
  applyAnnotationRangeFilter(
29486
29565
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "1"),
29487
29566
  chartFormatOptions,
@@ -29557,13 +29636,13 @@
29557
29636
  });
29558
29637
  let outerRadius = arc$1().startAngle((d) => d.x0).endAngle((d) => d.x1).innerRadius((d) => d.depth > 1 ? d.y1 - 1 + radius / 7 : 0).outerRadius((d) => d.depth > 1 ? d.y1 - 1 + radius / 7 : 0);
29559
29638
  let innerRadius2 = arc$1().startAngle((d) => d.x0).endAngle((d) => d.x1).innerRadius((d) => d.depth > 2 ? d.y0 : 0).outerRadius((d) => d.y1 + radius / 1.5);
29560
- chartAreaTagG.selectAll("polyline").data(
29639
+ chartAreaTagG.selectAll("polyline.pie-label-connector").data(
29561
29640
  applyAnnotationRangeFilter(
29562
29641
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "2"),
29563
29642
  chartFormatOptions,
29564
29643
  (d) => d.data.data[0].value
29565
29644
  )
29566
- ).join("polyline").attr("transform", getPiePosition()).style(
29645
+ ).join("polyline").attr("class", "pie-label-connector").attr("transform", getPiePosition()).style(
29567
29646
  "stroke",
29568
29647
  (d) => chartFormatOptions.connector.connectorColorOption == "Uniform" ? chartFormatOptions.connector.connectorUniformLineColor : d.data.properties.color
29569
29648
  ).style("fill", "none").style(
@@ -29581,7 +29660,7 @@
29581
29660
  const yC = posB[1];
29582
29661
  return [posA, posB, [xC, yC]].map((point2) => point2.join(",")).join(" ");
29583
29662
  });
29584
- chartAreaTagG.append("g").attr("transform", getPiePosition()).selectAll("foreignObject").data(
29663
+ chartAreaTagG.append("g").attr("class", "pie-label-group").attr("transform", getPiePosition()).selectAll("foreignObject").data(
29585
29664
  applyAnnotationRangeFilter(
29586
29665
  pieChartData.filter((d) => d.data.properties.dataLabelPosition == "2"),
29587
29666
  chartFormatOptions,
@@ -29659,6 +29738,9 @@
29659
29738
  return "";
29660
29739
  }
29661
29740
  });
29741
+ if (chartFormatOptions.animation.animationEnabled) {
29742
+ chartAreaTagG.selectAll(".pie-label-group, .pie-label-connector").attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
29743
+ }
29662
29744
  }
29663
29745
  } catch (error) {
29664
29746
  logError$2(fileName$7, "drawDonutDataLabels", error);
@@ -29925,6 +30007,9 @@
29925
30007
  )(d.data.data[0].value)
29926
30008
  );
29927
30009
  }
30010
+ if (shouldAnimate) {
30011
+ leaf.selectAll("text").attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
30012
+ }
29928
30013
  }
29929
30014
  } catch (error) {
29930
30015
  logError$2(fileName$6, "initChartRect", error);
@@ -30610,6 +30695,9 @@
30610
30695
  }
30611
30696
  }).notePadding(0).annotations(finalAnnotationList);
30612
30697
  let annotations = chartAreaTagG.append("g").attr("class", "annotation-group parentGroup").call(makeAnnotations);
30698
+ if (chartFormatOptions.animation.animationEnabled) {
30699
+ annotations.attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
30700
+ }
30613
30701
  annotations.selectAll("rect").style("visibility", "hidden");
30614
30702
  annotations.selectAll(".annotation-subject").remove();
30615
30703
  annotations.selectAll(".connector").style(
@@ -30981,7 +31069,7 @@
30981
31069
  return () => "";
30982
31070
  }
30983
31071
  });
30984
- chartAreaTagG.append("text").attr("transform", getTransformString()).attr("dy", "0.35em").attr("text-anchor", "middle").attr(
31072
+ const centerLabel = chartAreaTagG.append("text").attr("transform", getTransformString()).attr("dy", "0.35em").attr("text-anchor", "middle").attr(
30985
31073
  "visibility",
30986
31074
  () => {
30987
31075
  if (!chartFormatOptions.plotArea.dataLabels) return "hidden";
@@ -31014,6 +31102,9 @@
31014
31102
  chartFormatOptions.plotArea.dataLabelDecimalPrecision
31015
31103
  )(progressValue);
31016
31104
  });
31105
+ if (chartFormatOptions.animation.animationEnabled) {
31106
+ centerLabel.attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
31107
+ }
31017
31108
  } catch (error) {
31018
31109
  logError$2(fileName$3, "drawProgressChart", error);
31019
31110
  }
@@ -31335,6 +31426,9 @@
31335
31426
  chartFormatOptions.plotArea.dataLabelDecimalPrecision
31336
31427
  )(d)
31337
31428
  ).attr("visibility", (d) => d === "" ? "hidden" : "visible");
31429
+ if (chartFormatOptions.animation.animationEnabled) {
31430
+ lg.selectAll("text").attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
31431
+ }
31338
31432
  }
31339
31433
  if (chartFormatOptions.pointerValue.showPointerValue && seriesData.length === 2) {
31340
31434
  setPointerValueText(positionTransformString);
@@ -31803,7 +31897,8 @@
31803
31897
  chartFormatOptions,
31804
31898
  (d) => d?.data?.[0]?.value ?? 0
31805
31899
  );
31806
- svg2.selectAll(".arc-label-" + chartId).data(labelsData).enter().append("text").attr("class", "arc-label-" + chartId).attr("class", "parentGroup").attr("text-anchor", "start").attr("dy", (d, i) => (getOuterRadius(d.index ?? i) - getInnerRadius(d.index ?? i)) / 1.75).append("textPath").attr("xlink:href", (d, i) => `#arc-path-${d.index ?? i}-` + chartId).style("startOffset", "50%").attr("hoverId", (d) => d.legend.replaceAll(" ", "-")).text(
31900
+ const arcLabelTexts = svg2.selectAll(".arc-label-" + chartId).data(labelsData).enter().append("text").attr("class", "arc-label-" + chartId).attr("class", "parentGroup").attr("text-anchor", "start").attr("dy", (d, i) => (getOuterRadius(d.index ?? i) - getInnerRadius(d.index ?? i)) / 1.75);
31901
+ arcLabelTexts.append("textPath").attr("xlink:href", (d, i) => `#arc-path-${d.index ?? i}-` + chartId).style("startOffset", "50%").attr("hoverId", (d) => d.legend.replaceAll(" ", "-")).text(
31807
31902
  (d) => `  ${d.properties.alias}
31808
31903
   ${chartFormatOptions.plotArea.dataLabelValue ? getNumberWithFormatFunction(
31809
31904
  chartFormatOptions.plotArea.plotAreaDisplayUnits,
@@ -31846,6 +31941,9 @@
31846
31941
  }).on("mouseout", () => {
31847
31942
  hideTooltipOnMouseOut();
31848
31943
  });
31944
+ if (chartFormatOptions.animation.animationEnabled) {
31945
+ arcLabelTexts.attr("opacity", 0).transition().duration(chartFormatOptions.animation.animationDuration).ease(effectsMap[chartFormatOptions.animation.animationEffect]).attr("opacity", 1);
31946
+ }
31849
31947
  arcs.each((d, i) => {
31850
31948
  svg2.append("path").attr("id", `arc-path-${i}-` + chartId).attr("d", dummyArc(d, i)).attr("fill", "none").attr("stroke", "none");
31851
31949
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pace-chart-lib",
3
- "version": "1.0.66",
3
+ "version": "1.0.68",
4
4
  "description": "A simple React + Vite + TS UI library with a Button using custom fonts via SCSS.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,19 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSAreaChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- /** When true, stacks area datasets on the Y-axis */
9
- isChartStacked?: boolean;
10
- /** Active theme colour bank from the host application. Falls back to default palette. */
11
- colorBank?: string[];
12
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
13
- }
14
- /**
15
- * Chart.js area chart.
16
- * Built on the line type with fill: true and a semi-transparent background.
17
- */
18
- declare const CJSAreaChart: React.FC<ICJSAreaChartProps>;
19
- export default CJSAreaChart;
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSBubbleChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth: number;
7
- clientHeight: number;
8
- /** Active theme colour bank from the host application. Falls back to default palette. */
9
- colorBank?: string[];
10
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
11
- }
12
- /**
13
- * Chart.js bubble chart.
14
- * Uses TDataPoint.markerSize (or properties.markerSize) as bubble radius.
15
- */
16
- declare const CJSBubbleChart: React.FC<ICJSBubbleChartProps>;
17
- export default CJSBubbleChart;
@@ -1,19 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSColumnChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- /** When true renders a stacked bar chart */
9
- isChartStacked?: boolean;
10
- /** Active theme colour bank from the host application. Falls back to default palette. */
11
- colorBank?: string[];
12
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
13
- }
14
- /**
15
- * Chart.js vertical bar chart.
16
- * Accepts the same TData / formatOptions props used throughout the library.
17
- */
18
- declare const CJSColumnChart: React.FC<ICJSColumnChartProps>;
19
- export default CJSColumnChart;
@@ -1,19 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSDonutChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth: number;
7
- clientHeight: number;
8
- /** Active theme colour bank from the host application. Falls back to default palette. */
9
- colorBank?: string[];
10
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
11
- }
12
- /**
13
- * Chart.js doughnut (donut) chart.
14
- * The inner radius cutout is derived from formatOptions.plotArea.innerRadius (0–100).
15
- * Segment colours are derived from the active colorBank so they match
16
- * the host application's selected theme.
17
- */
18
- declare const CJSDonutChart: React.FC<ICJSDonutChartProps>;
19
- export default CJSDonutChart;
@@ -1,18 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSHorizontalBarChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- isChartStacked?: boolean;
9
- /** Active theme colour bank from the host application. Falls back to default palette. */
10
- colorBank?: string[];
11
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
12
- }
13
- /**
14
- * Chart.js horizontal bar chart.
15
- * Chart.js v4 uses indexAxis: "y" on a regular "bar" chart for horizontal bars.
16
- */
17
- declare const CJSHorizontalBarChart: React.FC<ICJSHorizontalBarChartProps>;
18
- export default CJSHorizontalBarChart;
@@ -1,19 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSLineChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- /** When true, stacks line datasets on the Y-axis */
9
- isChartStacked?: boolean;
10
- /** Active theme colour bank from the host application. Falls back to default palette. */
11
- colorBank?: string[];
12
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
13
- }
14
- /**
15
- * Chart.js line chart.
16
- * Supports secondary Y axis, per-series line styles, and optional Y-axis stacking.
17
- */
18
- declare const CJSLineChart: React.FC<ICJSLineChartProps>;
19
- export default CJSLineChart;
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSNormalizedStackAreaChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- colorBank?: string[];
9
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
10
- }
11
- /**
12
- * Chart.js 100% normalized stacked area chart.
13
- * Values are converted to percentages of the column total before rendering.
14
- * The Y-axis is bounded 0–100 and ticked as whole-number percentages.
15
- */
16
- declare const CJSNormalizedStackAreaChart: React.FC<ICJSNormalizedStackAreaChartProps>;
17
- export default CJSNormalizedStackAreaChart;
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSNormalizedStackColumnChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- colorBank?: string[];
9
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
10
- }
11
- /**
12
- * Chart.js 100% normalized stacked vertical bar chart.
13
- * Values are converted to percentages of the column total before rendering.
14
- * The Y-axis is bounded 0–100 and ticked as whole-number percentages.
15
- */
16
- declare const CJSNormalizedStackColumnChart: React.FC<ICJSNormalizedStackColumnChartProps>;
17
- export default CJSNormalizedStackColumnChart;
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import type { TData, TDefaultChartFormatOptionsType } from "../../Core/Common.types";
3
- interface ICJSNormalizedStackHorizontalBarChartProps {
4
- data: TData;
5
- formatOptions: TDefaultChartFormatOptionsType;
6
- clientWidth?: number;
7
- clientHeight?: number;
8
- colorBank?: string[];
9
- addLocalFilterFromLib?: (clickedLegendData: any) => void;
10
- }
11
- /**
12
- * Chart.js 100% normalized stacked horizontal bar chart.
13
- * Values are converted to percentages of the row total before rendering.
14
- * The X-axis is bounded 0–100 and ticked as whole-number percentages.
15
- */
16
- declare const CJSNormalizedStackHorizontalBarChart: React.FC<ICJSNormalizedStackHorizontalBarChartProps>;
17
- export default CJSNormalizedStackHorizontalBarChart;