(value: number | string, basis: number)
| 941 | }; |
| 942 | |
| 943 | const parseNumberOrPercent = (value: number | string, basis: number): number | null => { |
| 944 | if (typeof value === 'number') return Number.isFinite(value) ? value : null; |
| 945 | if (typeof value !== 'string') return null; |
| 946 | |
| 947 | const s = value.trim(); |
| 948 | if (s.length === 0) return null; |
| 949 | |
| 950 | if (s.endsWith('%')) { |
| 951 | const pct = Number.parseFloat(s.slice(0, -1)); |
| 952 | if (!Number.isFinite(pct)) return null; |
| 953 | return (pct / 100) * basis; |
| 954 | } |
| 955 | |
| 956 | // Be permissive: allow numeric strings like "120". |
| 957 | const n = Number.parseFloat(s); |
| 958 | return Number.isFinite(n) ? n : null; |
| 959 | }; |
| 960 | |
| 961 | const resolvePieCenterPlotCss = ( |
| 962 | center: PieCenter | undefined, |
no outgoing calls
no test coverage detected