@app-studio/web 0.9.49 → 0.9.50

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.
@@ -6543,12 +6543,14 @@ var BarChart = _ref => {
6543
6543
  var groupWidth = chartWidth / barCount;
6544
6544
  var barWidth = groupWidth * 0.8 / seriesCount;
6545
6545
  var barSpacing = groupWidth * 0.2 / (seriesCount + 1);
6546
+ // Calculate effective max value
6547
+ var effectiveMaxValue = maxValue || 10;
6546
6548
  // Generate y-axis ticks
6547
6549
  var yAxisTicks = React.useMemo(() => {
6548
6550
  var tickCount = 5;
6549
6551
  var ticks = [];
6550
6552
  for (var i = 0; i <= tickCount; i++) {
6551
- var value = maxValue / tickCount * i;
6553
+ var value = effectiveMaxValue / tickCount * i;
6552
6554
  ticks.push(value);
6553
6555
  }
6554
6556
  return ticks;
@@ -6581,7 +6583,7 @@ var BarChart = _ref => {
6581
6583
  }
6582
6584
  }), label);
6583
6585
  }), yAxisTicks.map((tick, index) => {
6584
- var y = height - padding.bottom - tick / maxValue * chartHeight;
6586
+ var y = height - padding.bottom - tick / effectiveMaxValue * chartHeight;
6585
6587
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
6586
6588
  key: "y-tick-" + index
6587
6589
  }, /*#__PURE__*/React__default.createElement("text", Object.assign({
@@ -6603,7 +6605,7 @@ var BarChart = _ref => {
6603
6605
  }), data.series.map((series, seriesIndex) => (/*#__PURE__*/React__default.createElement(React__default.Fragment, {
6604
6606
  key: "series-" + seriesIndex
6605
6607
  }, series.data.map((value, dataIndex) => {
6606
- var barHeight = value / maxValue * chartHeight * animationProgress;
6608
+ var barHeight = value / effectiveMaxValue * chartHeight * animationProgress;
6607
6609
  var x = padding.left + dataIndex * groupWidth + barSpacing * (seriesIndex + 1) + barWidth * seriesIndex;
6608
6610
  var y = height - padding.bottom - barHeight;
6609
6611
  var categoryLabel = data.labels[dataIndex];
@@ -6716,12 +6718,14 @@ var LineChart = _ref => {
6716
6718
  });
6717
6719
  return max;
6718
6720
  }, [data]);
6721
+ // Calculate effective max value
6722
+ var effectiveMaxValue = maxValue || 10;
6719
6723
  // Generate y-axis ticks
6720
6724
  var yAxisTicks = React.useMemo(() => {
6721
6725
  var tickCount = 5;
6722
6726
  var ticks = [];
6723
6727
  for (var i = 0; i <= tickCount; i++) {
6724
- var value = maxValue / tickCount * i;
6728
+ var value = effectiveMaxValue / tickCount * i;
6725
6729
  ticks.push(value);
6726
6730
  }
6727
6731
  return ticks;
@@ -6730,7 +6734,7 @@ var LineChart = _ref => {
6730
6734
  var generatePath = series => {
6731
6735
  var points = series.map((value, index) => {
6732
6736
  var x = padding.left + index / (data.labels.length - 1) * chartWidth;
6733
- var y = height - padding.bottom - value / maxValue * chartHeight * animationProgress;
6737
+ var y = height - padding.bottom - value / effectiveMaxValue * chartHeight * animationProgress;
6734
6738
  return x + "," + y;
6735
6739
  });
6736
6740
  return "M " + points.join(' L ');
@@ -6742,7 +6746,7 @@ var LineChart = _ref => {
6742
6746
  var baseY = height - padding.bottom;
6743
6747
  var points = series.map((value, index) => {
6744
6748
  var x = padding.left + index / (data.labels.length - 1) * chartWidth;
6745
- var y = height - padding.bottom - value / maxValue * chartHeight * animationProgress;
6749
+ var y = height - padding.bottom - value / effectiveMaxValue * chartHeight * animationProgress;
6746
6750
  return x + "," + y;
6747
6751
  });
6748
6752
  return "M " + startX + "," + baseY + " L " + points.join(' L ') + " L " + endX + "," + baseY + " Z";
@@ -6775,7 +6779,7 @@ var LineChart = _ref => {
6775
6779
  }
6776
6780
  }), label);
6777
6781
  }), yAxisTicks.map((tick, index) => {
6778
- var y = height - padding.bottom - tick / maxValue * chartHeight;
6782
+ var y = height - padding.bottom - tick / effectiveMaxValue * chartHeight;
6779
6783
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
6780
6784
  key: "y-tick-" + index
6781
6785
  }, /*#__PURE__*/React__default.createElement("text", Object.assign({
@@ -6807,7 +6811,7 @@ var LineChart = _ref => {
6807
6811
  stroke: lineColor
6808
6812
  }, LineStyles, views == null ? void 0 : views.line)), series.data.map((value, dataIndex) => {
6809
6813
  var x = padding.left + dataIndex / (data.labels.length - 1) * chartWidth;
6810
- var y = height - padding.bottom - value / maxValue * chartHeight * animationProgress;
6814
+ var y = height - padding.bottom - value / effectiveMaxValue * chartHeight * animationProgress;
6811
6815
  var categoryLabel = data.labels[dataIndex];
6812
6816
  var categoryTotal = data.series.reduce((sum, currentSeries) => {
6813
6817
  var seriesValue = currentSeries.data[dataIndex];
@@ -6939,6 +6943,22 @@ var PieChart = _ref => {
6939
6943
  }, [dataPoints]);
6940
6944
  // Generate pie slices
6941
6945
  var slices = React.useMemo(() => {
6946
+ if (total === 0) {
6947
+ // Return a single placeholder slice
6948
+ var path = isDonut ? ["M " + centerX + " " + (centerY - radius), "A " + radius + " " + radius + " 0 1 1 " + centerX + " " + (centerY + radius), "A " + radius + " " + radius + " 0 1 1 " + centerX + " " + (centerY - radius), "M " + centerX + " " + (centerY - donutRadius), "A " + donutRadius + " " + donutRadius + " 0 1 0 " + centerX + " " + (centerY + donutRadius), "A " + donutRadius + " " + donutRadius + " 0 1 0 " + centerX + " " + (centerY - donutRadius), 'Z'].join(' ') : ["M " + centerX + " " + centerY, "M " + centerX + " " + (centerY - radius), "A " + radius + " " + radius + " 0 1 1 " + centerX + " " + (centerY + radius), "A " + radius + " " + radius + " 0 1 1 " + centerX + " " + (centerY - radius), 'Z'].join(' ');
6949
+ return [{
6950
+ path,
6951
+ color: '#E2E8F0',
6952
+ label: 'Total',
6953
+ value: 0,
6954
+ percentage: '0%',
6955
+ labelX: centerX,
6956
+ labelY: centerY,
6957
+ startAngle: 0,
6958
+ endAngle: Math.PI * 2,
6959
+ index: -1
6960
+ }];
6961
+ }
6942
6962
  var result = [];
6943
6963
  var startAngle = -Math.PI / 2; // Start from top (12 o'clock position)
6944
6964
  for (var i = 0; i < dataPoints.length; i++) {
@@ -6959,13 +6979,13 @@ var PieChart = _ref => {
6959
6979
  // Create arc flag
6960
6980
  var largeArcFlag = angle > Math.PI ? 1 : 0;
6961
6981
  // Create path
6962
- var path = void 0;
6982
+ var _path = void 0;
6963
6983
  if (isDonut) {
6964
6984
  // Donut slice path
6965
- path = ["M " + startX + " " + startY, "A " + radius + " " + radius + " 0 " + largeArcFlag + " 1 " + endX + " " + endY, "L " + innerEndX + " " + innerEndY, "A " + donutRadius + " " + donutRadius + " 0 " + largeArcFlag + " 0 " + innerStartX + " " + innerStartY, 'Z'].join(' ');
6985
+ _path = ["M " + startX + " " + startY, "A " + radius + " " + radius + " 0 " + largeArcFlag + " 1 " + endX + " " + endY, "L " + innerEndX + " " + innerEndY, "A " + donutRadius + " " + donutRadius + " 0 " + largeArcFlag + " 0 " + innerStartX + " " + innerStartY, 'Z'].join(' ');
6966
6986
  } else {
6967
6987
  // Regular pie slice path
6968
- path = ["M " + centerX + " " + centerY, "L " + startX + " " + startY, "A " + radius + " " + radius + " 0 " + largeArcFlag + " 1 " + endX + " " + endY, 'Z'].join(' ');
6988
+ _path = ["M " + centerX + " " + centerY, "L " + startX + " " + startY, "A " + radius + " " + radius + " 0 " + largeArcFlag + " 1 " + endX + " " + endY, 'Z'].join(' ');
6969
6989
  }
6970
6990
  // Calculate label position
6971
6991
  var labelAngle = startAngle + angle / 2;
@@ -6979,7 +6999,7 @@ var PieChart = _ref => {
6979
6999
  // Resolve the color through the theme system
6980
7000
  var resolvedColor = getColor(colorValue);
6981
7001
  result.push({
6982
- path,
7002
+ path: _path,
6983
7003
  color: resolvedColor,
6984
7004
  label: dataPoints[i].label,
6985
7005
  value: dataPoints[i].value,
@@ -7086,19 +7106,24 @@ var PieChart = _ref => {
7086
7106
  showTooltip(x, y, tooltipContent);
7087
7107
  };
7088
7108
  var handleClick = () => {
7089
- if (onSliceClick) {
7109
+ if (slice.index !== -1 && onSliceClick) {
7090
7110
  onSliceClick(dataPoints[slice.index], slice.index);
7091
7111
  }
7092
7112
  };
7113
+ var isPlaceholder = slice.index === -1;
7093
7114
  return /*#__PURE__*/React__default.createElement("g", {
7094
7115
  key: "slice-" + index
7095
7116
  }, /*#__PURE__*/React__default.createElement("path", Object.assign({
7096
7117
  d: slice.path,
7097
7118
  fill: slice.color,
7098
- onMouseEnter: handleMouseEnter,
7099
- onMouseLeave: hideTooltip,
7119
+ onMouseEnter: !isPlaceholder ? handleMouseEnter : undefined,
7120
+ onMouseLeave: !isPlaceholder ? hideTooltip : undefined,
7100
7121
  onClick: handleClick
7101
- }, PieSliceStyles, views == null ? void 0 : views.pie)), slice.endAngle - slice.startAngle > 0.2 && (/*#__PURE__*/React__default.createElement("text", {
7122
+ }, PieSliceStyles, {
7123
+ style: Object.assign({}, PieSliceStyles == null ? void 0 : PieSliceStyles.style, {
7124
+ cursor: isPlaceholder ? 'default' : 'pointer'
7125
+ })
7126
+ }, views == null ? void 0 : views.pie)), !isPlaceholder && slice.endAngle - slice.startAngle > 0.2 && (/*#__PURE__*/React__default.createElement("text", {
7102
7127
  x: slice.labelX,
7103
7128
  y: slice.labelY,
7104
7129
  textAnchor: "middle",