@app-studio/web 0.9.48 → 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.
- package/dist/web.cjs.development.js +58 -25
- package/dist/web.cjs.development.js.map +1 -1
- package/dist/web.cjs.production.min.js +1 -1
- package/dist/web.cjs.production.min.js.map +1 -1
- package/dist/web.esm.js +58 -25
- package/dist/web.esm.js.map +1 -1
- package/dist/web.umd.development.js +58 -25
- package/dist/web.umd.development.js.map +1 -1
- package/dist/web.umd.production.min.js +1 -1
- package/dist/web.umd.production.min.js.map +1 -1
- package/docs/components/Chart.mdx +34 -0
- package/package.json +2 -2
|
@@ -4882,17 +4882,28 @@
|
|
|
4882
4882
|
borderStyle: 'solid',
|
|
4883
4883
|
borderColor: 'transparent',
|
|
4884
4884
|
_hover: {
|
|
4885
|
-
opacity: 0.9
|
|
4886
|
-
color: textColor
|
|
4885
|
+
opacity: 0.9
|
|
4887
4886
|
},
|
|
4888
4887
|
_active: {
|
|
4889
|
-
opacity: 0.95
|
|
4890
|
-
color: textColor
|
|
4888
|
+
opacity: 0.95
|
|
4891
4889
|
},
|
|
4892
4890
|
_focusVisible: {
|
|
4893
4891
|
outline: 'none',
|
|
4894
|
-
boxShadow: "0 0 0 2px rgba(255, 255, 255, 1), 0 0 0 4px " + color
|
|
4895
|
-
|
|
4892
|
+
boxShadow: "0 0 0 2px rgba(255, 255, 255, 1), 0 0 0 4px " + color
|
|
4893
|
+
},
|
|
4894
|
+
transition: 'background-color 0.2s ease, opacity 0.2s ease'
|
|
4895
|
+
},
|
|
4896
|
+
reversed: {
|
|
4897
|
+
backgroundColor: textColor,
|
|
4898
|
+
color: color,
|
|
4899
|
+
borderWidth: 1,
|
|
4900
|
+
borderStyle: 'solid',
|
|
4901
|
+
borderColor: textColor,
|
|
4902
|
+
_hover: {
|
|
4903
|
+
opacity: 0.9
|
|
4904
|
+
},
|
|
4905
|
+
_active: {
|
|
4906
|
+
opacity: 0.95
|
|
4896
4907
|
},
|
|
4897
4908
|
transition: 'background-color 0.2s ease, opacity 0.2s ease'
|
|
4898
4909
|
},
|
|
@@ -4932,7 +4943,6 @@
|
|
|
4932
4943
|
opacity: 0.9
|
|
4933
4944
|
},
|
|
4934
4945
|
_active: {
|
|
4935
|
-
color: color,
|
|
4936
4946
|
opacity: 0.95
|
|
4937
4947
|
},
|
|
4938
4948
|
_focusVisible: {
|
|
@@ -4952,11 +4962,9 @@
|
|
|
4952
4962
|
textDecorationThickness: '1px',
|
|
4953
4963
|
textDecorationColor: color,
|
|
4954
4964
|
_hover: {
|
|
4955
|
-
color: color,
|
|
4956
4965
|
opacity: 0.8
|
|
4957
4966
|
},
|
|
4958
4967
|
_active: {
|
|
4959
|
-
color: color,
|
|
4960
4968
|
opacity: 0.9
|
|
4961
4969
|
},
|
|
4962
4970
|
_focusVisible: {
|
|
@@ -6496,12 +6504,14 @@
|
|
|
6496
6504
|
var groupWidth = chartWidth / barCount;
|
|
6497
6505
|
var barWidth = groupWidth * 0.8 / seriesCount;
|
|
6498
6506
|
var barSpacing = groupWidth * 0.2 / (seriesCount + 1);
|
|
6507
|
+
// Calculate effective max value
|
|
6508
|
+
var effectiveMaxValue = maxValue || 10;
|
|
6499
6509
|
// Generate y-axis ticks
|
|
6500
6510
|
var yAxisTicks = React.useMemo(() => {
|
|
6501
6511
|
var tickCount = 5;
|
|
6502
6512
|
var ticks = [];
|
|
6503
6513
|
for (var i = 0; i <= tickCount; i++) {
|
|
6504
|
-
var value =
|
|
6514
|
+
var value = effectiveMaxValue / tickCount * i;
|
|
6505
6515
|
ticks.push(value);
|
|
6506
6516
|
}
|
|
6507
6517
|
return ticks;
|
|
@@ -6534,7 +6544,7 @@
|
|
|
6534
6544
|
}
|
|
6535
6545
|
}), label);
|
|
6536
6546
|
}), yAxisTicks.map((tick, index) => {
|
|
6537
|
-
var y = height - padding.bottom - tick /
|
|
6547
|
+
var y = height - padding.bottom - tick / effectiveMaxValue * chartHeight;
|
|
6538
6548
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
6539
6549
|
key: "y-tick-" + index
|
|
6540
6550
|
}, /*#__PURE__*/React__default.createElement("text", Object.assign({
|
|
@@ -6556,7 +6566,7 @@
|
|
|
6556
6566
|
}), data.series.map((series, seriesIndex) => (/*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
6557
6567
|
key: "series-" + seriesIndex
|
|
6558
6568
|
}, series.data.map((value, dataIndex) => {
|
|
6559
|
-
var barHeight = value /
|
|
6569
|
+
var barHeight = value / effectiveMaxValue * chartHeight * animationProgress;
|
|
6560
6570
|
var x = padding.left + dataIndex * groupWidth + barSpacing * (seriesIndex + 1) + barWidth * seriesIndex;
|
|
6561
6571
|
var y = height - padding.bottom - barHeight;
|
|
6562
6572
|
var categoryLabel = data.labels[dataIndex];
|
|
@@ -6669,12 +6679,14 @@
|
|
|
6669
6679
|
});
|
|
6670
6680
|
return max;
|
|
6671
6681
|
}, [data]);
|
|
6682
|
+
// Calculate effective max value
|
|
6683
|
+
var effectiveMaxValue = maxValue || 10;
|
|
6672
6684
|
// Generate y-axis ticks
|
|
6673
6685
|
var yAxisTicks = React.useMemo(() => {
|
|
6674
6686
|
var tickCount = 5;
|
|
6675
6687
|
var ticks = [];
|
|
6676
6688
|
for (var i = 0; i <= tickCount; i++) {
|
|
6677
|
-
var value =
|
|
6689
|
+
var value = effectiveMaxValue / tickCount * i;
|
|
6678
6690
|
ticks.push(value);
|
|
6679
6691
|
}
|
|
6680
6692
|
return ticks;
|
|
@@ -6683,7 +6695,7 @@
|
|
|
6683
6695
|
var generatePath = series => {
|
|
6684
6696
|
var points = series.map((value, index) => {
|
|
6685
6697
|
var x = padding.left + index / (data.labels.length - 1) * chartWidth;
|
|
6686
|
-
var y = height - padding.bottom - value /
|
|
6698
|
+
var y = height - padding.bottom - value / effectiveMaxValue * chartHeight * animationProgress;
|
|
6687
6699
|
return x + "," + y;
|
|
6688
6700
|
});
|
|
6689
6701
|
return "M " + points.join(' L ');
|
|
@@ -6695,7 +6707,7 @@
|
|
|
6695
6707
|
var baseY = height - padding.bottom;
|
|
6696
6708
|
var points = series.map((value, index) => {
|
|
6697
6709
|
var x = padding.left + index / (data.labels.length - 1) * chartWidth;
|
|
6698
|
-
var y = height - padding.bottom - value /
|
|
6710
|
+
var y = height - padding.bottom - value / effectiveMaxValue * chartHeight * animationProgress;
|
|
6699
6711
|
return x + "," + y;
|
|
6700
6712
|
});
|
|
6701
6713
|
return "M " + startX + "," + baseY + " L " + points.join(' L ') + " L " + endX + "," + baseY + " Z";
|
|
@@ -6728,7 +6740,7 @@
|
|
|
6728
6740
|
}
|
|
6729
6741
|
}), label);
|
|
6730
6742
|
}), yAxisTicks.map((tick, index) => {
|
|
6731
|
-
var y = height - padding.bottom - tick /
|
|
6743
|
+
var y = height - padding.bottom - tick / effectiveMaxValue * chartHeight;
|
|
6732
6744
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
6733
6745
|
key: "y-tick-" + index
|
|
6734
6746
|
}, /*#__PURE__*/React__default.createElement("text", Object.assign({
|
|
@@ -6760,7 +6772,7 @@
|
|
|
6760
6772
|
stroke: lineColor
|
|
6761
6773
|
}, LineStyles, views == null ? void 0 : views.line)), series.data.map((value, dataIndex) => {
|
|
6762
6774
|
var x = padding.left + dataIndex / (data.labels.length - 1) * chartWidth;
|
|
6763
|
-
var y = height - padding.bottom - value /
|
|
6775
|
+
var y = height - padding.bottom - value / effectiveMaxValue * chartHeight * animationProgress;
|
|
6764
6776
|
var categoryLabel = data.labels[dataIndex];
|
|
6765
6777
|
var categoryTotal = data.series.reduce((sum, currentSeries) => {
|
|
6766
6778
|
var seriesValue = currentSeries.data[dataIndex];
|
|
@@ -6892,6 +6904,22 @@
|
|
|
6892
6904
|
}, [dataPoints]);
|
|
6893
6905
|
// Generate pie slices
|
|
6894
6906
|
var slices = React.useMemo(() => {
|
|
6907
|
+
if (total === 0) {
|
|
6908
|
+
// Return a single placeholder slice
|
|
6909
|
+
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(' ');
|
|
6910
|
+
return [{
|
|
6911
|
+
path,
|
|
6912
|
+
color: '#E2E8F0',
|
|
6913
|
+
label: 'Total',
|
|
6914
|
+
value: 0,
|
|
6915
|
+
percentage: '0%',
|
|
6916
|
+
labelX: centerX,
|
|
6917
|
+
labelY: centerY,
|
|
6918
|
+
startAngle: 0,
|
|
6919
|
+
endAngle: Math.PI * 2,
|
|
6920
|
+
index: -1
|
|
6921
|
+
}];
|
|
6922
|
+
}
|
|
6895
6923
|
var result = [];
|
|
6896
6924
|
var startAngle = -Math.PI / 2; // Start from top (12 o'clock position)
|
|
6897
6925
|
for (var i = 0; i < dataPoints.length; i++) {
|
|
@@ -6912,13 +6940,13 @@
|
|
|
6912
6940
|
// Create arc flag
|
|
6913
6941
|
var largeArcFlag = angle > Math.PI ? 1 : 0;
|
|
6914
6942
|
// Create path
|
|
6915
|
-
var
|
|
6943
|
+
var _path = void 0;
|
|
6916
6944
|
if (isDonut) {
|
|
6917
6945
|
// Donut slice path
|
|
6918
|
-
|
|
6946
|
+
_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(' ');
|
|
6919
6947
|
} else {
|
|
6920
6948
|
// Regular pie slice path
|
|
6921
|
-
|
|
6949
|
+
_path = ["M " + centerX + " " + centerY, "L " + startX + " " + startY, "A " + radius + " " + radius + " 0 " + largeArcFlag + " 1 " + endX + " " + endY, 'Z'].join(' ');
|
|
6922
6950
|
}
|
|
6923
6951
|
// Calculate label position
|
|
6924
6952
|
var labelAngle = startAngle + angle / 2;
|
|
@@ -6932,7 +6960,7 @@
|
|
|
6932
6960
|
// Resolve the color through the theme system
|
|
6933
6961
|
var resolvedColor = getColor(colorValue);
|
|
6934
6962
|
result.push({
|
|
6935
|
-
path,
|
|
6963
|
+
path: _path,
|
|
6936
6964
|
color: resolvedColor,
|
|
6937
6965
|
label: dataPoints[i].label,
|
|
6938
6966
|
value: dataPoints[i].value,
|
|
@@ -7039,19 +7067,24 @@
|
|
|
7039
7067
|
showTooltip(x, y, tooltipContent);
|
|
7040
7068
|
};
|
|
7041
7069
|
var handleClick = () => {
|
|
7042
|
-
if (onSliceClick) {
|
|
7070
|
+
if (slice.index !== -1 && onSliceClick) {
|
|
7043
7071
|
onSliceClick(dataPoints[slice.index], slice.index);
|
|
7044
7072
|
}
|
|
7045
7073
|
};
|
|
7074
|
+
var isPlaceholder = slice.index === -1;
|
|
7046
7075
|
return /*#__PURE__*/React__default.createElement("g", {
|
|
7047
7076
|
key: "slice-" + index
|
|
7048
7077
|
}, /*#__PURE__*/React__default.createElement("path", Object.assign({
|
|
7049
7078
|
d: slice.path,
|
|
7050
7079
|
fill: slice.color,
|
|
7051
|
-
onMouseEnter: handleMouseEnter,
|
|
7052
|
-
onMouseLeave: hideTooltip,
|
|
7080
|
+
onMouseEnter: !isPlaceholder ? handleMouseEnter : undefined,
|
|
7081
|
+
onMouseLeave: !isPlaceholder ? hideTooltip : undefined,
|
|
7053
7082
|
onClick: handleClick
|
|
7054
|
-
}, PieSliceStyles,
|
|
7083
|
+
}, PieSliceStyles, {
|
|
7084
|
+
style: Object.assign({}, PieSliceStyles == null ? void 0 : PieSliceStyles.style, {
|
|
7085
|
+
cursor: isPlaceholder ? 'default' : 'pointer'
|
|
7086
|
+
})
|
|
7087
|
+
}, views == null ? void 0 : views.pie)), !isPlaceholder && slice.endAngle - slice.startAngle > 0.2 && (/*#__PURE__*/React__default.createElement("text", {
|
|
7055
7088
|
x: slice.labelX,
|
|
7056
7089
|
y: slice.labelY,
|
|
7057
7090
|
textAnchor: "middle",
|