@proounce/shared-common 0.1.0 → 0.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/FusionChart.tsx","../../src/charts/CommonChart.tsx"],"names":["useState","useEffect","ReactFusioncharts","FusionCharts","charts","jsx","useMemo","Stack","jsxs","Typography","TextField","MenuItem"],"mappings":"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","file":"fusion.cjs","sourcesContent":["import FusionCharts from \"fusioncharts\";\nimport charts from \"fusioncharts/fusioncharts.charts.js\";\nimport ReactFusioncharts from \"react-fusioncharts\";\nimport { useEffect, useState } from \"react\";\n\nlet fusionRegistered = false;\n\nexport interface FusionChartProps {\n type: string;\n dataSource: Record<string, unknown>;\n width?: string | number;\n height?: string | number;\n events?: Record<string, (...args: unknown[]) => void>;\n licenseKey?: string | Promise<string>;\n loadingFallback?: React.ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Generic FusionCharts renderer. Data and optional licensing are injected by the\n * consuming application, so this package never performs an API request.\n */\nexport function FusionChart({\n type,\n dataSource,\n width = \"100%\",\n height = 400,\n events,\n licenseKey,\n loadingFallback = null,\n \"aria-label\": ariaLabel = \"Chart\",\n}: FusionChartProps) {\n const [registered, setRegistered] = useState(fusionRegistered);\n const [licenseReady, setLicenseReady] = useState(!licenseKey);\n\n useEffect(() => {\n if (!fusionRegistered) {\n ReactFusioncharts.fcRoot(FusionCharts, charts);\n fusionRegistered = true;\n }\n setRegistered(true);\n }, []);\n\n useEffect(() => {\n let active = true;\n if (!licenseKey) {\n setLicenseReady(true);\n return undefined;\n }\n setLicenseReady(false);\n void Promise.resolve(licenseKey).then((key) => {\n const options = FusionCharts.options as typeof FusionCharts.options & {\n license: (settings: { key: string; creditLabel: boolean }) => void;\n };\n options.license({ key, creditLabel: false });\n if (active) setLicenseReady(true);\n });\n return () => {\n active = false;\n };\n }, [licenseKey]);\n\n if (!registered || !licenseReady) return loadingFallback;\n\n return (\n <div role=\"img\" aria-label={ariaLabel}>\n <ReactFusioncharts\n type={type}\n width={width}\n height={height}\n dataFormat=\"json\"\n dataSource={dataSource}\n {...(events ? { events } : {})}\n />\n </div>\n );\n}\n\nexport type FusionChartPresetProps = Omit<FusionChartProps, \"type\">;\n\nexport function FusionBarChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"bar2d\" {...props} />;\n}\n\nexport function FusionColumnChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"column2d\" {...props} />;\n}\n\nexport function FusionDoughnutChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"doughnut2d\" {...props} />;\n}\n\nexport const GenericChart = FusionChart;\nexport const FusionDefaultCharts = FusionChart;\nexport const GenericChartCDMS = FusionChart;\nexport const FusionDefaultChartsPF = FusionChart;\nexport const FusionDefaultChartsPH = FusionChart;\n","import MenuItem from \"@mui/material/MenuItem\";\nimport Stack from \"@mui/material/Stack\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport { useMemo, useState, type ReactNode } from \"react\";\nimport {\n FusionChart,\n type FusionChartPresetProps,\n type FusionChartProps,\n} from \"./FusionChart\";\n\nexport interface CommonChartDatum extends Record<string, unknown> {\n label: string;\n value: string | number;\n displayValue?: string;\n color?: string;\n toolText?: string;\n link?: string;\n}\n\nexport interface CommonChartTypeOption {\n value: string;\n label: string;\n}\n\nexport const DEFAULT_CHART_TYPES: readonly CommonChartTypeOption[] = [\n { value: \"column2d\", label: \"Column\" },\n { value: \"bar2d\", label: \"Bar\" },\n { value: \"line\", label: \"Line\" },\n { value: \"area2d\", label: \"Area\" },\n { value: \"pie2d\", label: \"Pie\" },\n { value: \"doughnut2d\", label: \"Doughnut\" },\n];\n\nexport interface CommonChartProps\n extends Omit<FusionChartProps, \"type\" | \"dataSource\"> {\n type?: string;\n title?: ReactNode;\n caption?: string;\n subCaption?: string;\n xAxisName?: string;\n yAxisName?: string;\n items: readonly CommonChartDatum[];\n chartOptions?: Record<string, unknown>;\n selectableTypes?: readonly CommonChartTypeOption[];\n showTypeSelector?: boolean;\n selectorLabel?: string;\n description?: ReactNode;\n showDataTable?: boolean;\n dataTableLabel?: string;\n onTypeChange?: (type: string) => void;\n}\n\n/**\n * Common chart contract used by applications: data, labels and display options\n * are supplied through props and no API or license lookup is performed.\n */\nexport function CommonChart({\n type = \"column2d\",\n title,\n caption,\n subCaption,\n xAxisName,\n yAxisName,\n items,\n chartOptions,\n selectableTypes = DEFAULT_CHART_TYPES,\n showTypeSelector = false,\n selectorLabel = \"Chart type\",\n description,\n showDataTable = false,\n dataTableLabel = \"View chart data\",\n onTypeChange,\n \"aria-label\": ariaLabel,\n ...chartProps\n}: CommonChartProps) {\n const [selectedType, setSelectedType] = useState<string | null>(null);\n const activeType = selectedType ?? type;\n\n const dataSource = useMemo(\n () => ({\n chart: {\n caption: caption ?? (typeof title === \"string\" ? title : undefined),\n subCaption,\n xAxisName,\n yAxisName,\n baseFont: \"Inter, sans-serif\",\n baseFontSize: \"13\",\n showBorder: \"0\",\n showCanvasBorder: \"0\",\n usePlotGradientColor: \"0\",\n showPlotBorder: \"0\",\n showShadow: \"0\",\n showLegend: \"1\",\n legendPosition: \"bottom\",\n labelDisplay: \"rotate\",\n slantLabels: \"1\",\n maxColWidth: \"15\",\n maxBarHeight: \"15\",\n animation: \"1\",\n ...chartOptions,\n },\n data: [...items],\n }),\n [caption, chartOptions, items, subCaption, title, xAxisName, yAxisName],\n );\n\n const accessibleName =\n ariaLabel ?? caption ?? (typeof title === \"string\" ? title : \"Chart\");\n\n return (\n <Stack component=\"section\" spacing={1.5} aria-label={accessibleName}>\n {title || showTypeSelector ? (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n justifyContent=\"space-between\"\n gap={1}\n >\n {title ? <Typography component=\"h2\" variant=\"h6\">{title}</Typography> : null}\n {showTypeSelector ? (\n <TextField\n select\n size=\"small\"\n label={selectorLabel}\n value={activeType}\n onChange={(event) => {\n setSelectedType(event.target.value);\n onTypeChange?.(event.target.value);\n }}\n sx={{ minWidth: 160 }}\n >\n {selectableTypes.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n ) : null}\n </Stack>\n ) : null}\n {description ? <Typography color=\"text.secondary\">{description}</Typography> : null}\n <FusionChart\n type={activeType}\n dataSource={dataSource}\n aria-label={accessibleName}\n {...chartProps}\n />\n {showDataTable ? (\n <details>\n <summary>{dataTableLabel}</summary>\n <table>\n <caption>{accessibleName}</caption>\n <thead><tr><th scope=\"col\">Label</th><th scope=\"col\">Value</th></tr></thead>\n <tbody>\n {items.map((item) => (\n <tr key={item.label}>\n <th scope=\"row\">{item.label}</th>\n <td>{item.displayValue ?? item.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </details>\n ) : null}\n </Stack>\n );\n}\n\nexport type CommonChartPresetProps = Omit<CommonChartProps, \"type\">;\n\nexport function CommonBarChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"bar2d\" {...props} />;\n}\nexport function CommonColumnChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"column2d\" {...props} />;\n}\nexport function LineChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"line\" {...props} />;\n}\nexport function AreaChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"area2d\" {...props} />;\n}\nexport function PieChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"pie2d\" {...props} />;\n}\nexport function CommonDoughnutChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"doughnut2d\" {...props} />;\n}\n\nexport type CompatibleChartPresetProps =\n | CommonChartPresetProps\n | FusionChartPresetProps;\n\nfunction isRawPreset(\n props: CompatibleChartPresetProps,\n): props is FusionChartPresetProps {\n return \"dataSource\" in props;\n}\n\n/** Accepts both the legacy title/items contract and the raw dataSource contract. */\nexport function BarChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"bar2d\" {...props} />\n ) : (\n <CommonBarChart {...props} />\n );\n}\n\nexport function ColumnChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"column2d\" {...props} />\n ) : (\n <CommonColumnChart {...props} />\n );\n}\n\nexport const ChartColumn2D = ColumnChart;\n\nexport function DoughnutChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"doughnut2d\" {...props} />\n ) : (\n <CommonDoughnutChart {...props} />\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/charts/FusionChart.tsx","../../src/accessibility/controlNames.ts","../../src/inputs/SharedTextField.tsx","../../src/charts/CommonChart.tsx"],"names":["useState","useEffect","ReactFusioncharts","FusionCharts","charts","jsx","useId","TextField","useMemo","Stack","jsxs","Typography","MenuItem"],"mappings":"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","file":"fusion.cjs","sourcesContent":["import FusionCharts from \"fusioncharts\";\nimport charts from \"fusioncharts/fusioncharts.charts.js\";\nimport ReactFusioncharts from \"react-fusioncharts\";\nimport { useEffect, useState } from \"react\";\n\nlet fusionRegistered = false;\n\nexport interface FusionChartProps {\n type: string;\n dataSource: Record<string, unknown>;\n width?: string | number;\n height?: string | number;\n events?: Record<string, (...args: unknown[]) => void>;\n licenseKey?: string | Promise<string>;\n loadingFallback?: React.ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Generic FusionCharts renderer. Data and optional licensing are injected by the\n * consuming application, so this package never performs an API request.\n */\nexport function FusionChart({\n type,\n dataSource,\n width = \"100%\",\n height = 400,\n events,\n licenseKey,\n loadingFallback = null,\n \"aria-label\": ariaLabel = \"Chart\",\n}: FusionChartProps) {\n const [registered, setRegistered] = useState(fusionRegistered);\n const [licenseReady, setLicenseReady] = useState(!licenseKey);\n\n useEffect(() => {\n if (!fusionRegistered) {\n ReactFusioncharts.fcRoot(FusionCharts, charts);\n fusionRegistered = true;\n }\n setRegistered(true);\n }, []);\n\n useEffect(() => {\n let active = true;\n if (!licenseKey) {\n setLicenseReady(true);\n return undefined;\n }\n setLicenseReady(false);\n void Promise.resolve(licenseKey).then((key) => {\n const options = FusionCharts.options as typeof FusionCharts.options & {\n license: (settings: { key: string; creditLabel: boolean }) => void;\n };\n options.license({ key, creditLabel: false });\n if (active) setLicenseReady(true);\n });\n return () => {\n active = false;\n };\n }, [licenseKey]);\n\n if (!registered || !licenseReady) return loadingFallback;\n\n return (\n <div role=\"img\" aria-label={ariaLabel}>\n <ReactFusioncharts\n type={type}\n width={width}\n height={height}\n dataFormat=\"json\"\n dataSource={dataSource}\n {...(events ? { events } : {})}\n />\n </div>\n );\n}\n\nexport type FusionChartPresetProps = Omit<FusionChartProps, \"type\">;\n\nexport function FusionBarChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"bar2d\" {...props} />;\n}\n\nexport function FusionColumnChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"column2d\" {...props} />;\n}\n\nexport function FusionDoughnutChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"doughnut2d\" {...props} />;\n}\n\nexport const GenericChart = FusionChart;\nexport const FusionDefaultCharts = FusionChart;\nexport const GenericChartCDMS = FusionChart;\nexport const FusionDefaultChartsPF = FusionChart;\nexport const FusionDefaultChartsPH = FusionChart;\n","export interface ControlNameOptions {\n label?: unknown;\n ariaLabel?: unknown;\n name?: string;\n id?: string;\n backupName: string;\n}\n\n/** Turns common field identifiers into a readable last-resort accessible name. */\nexport function humanizeControlName(value?: string) {\n const normalized = value\n ?.replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/\\s+/g, \" \")\n .trim();\n return normalized ? normalized.charAt(0).toUpperCase() + normalized.slice(1) : undefined;\n}\n\n/**\n * A visible string label is associated by the component and therefore wins.\n * Otherwise prefer an explicit aria-label, then a readable name/id, then the\n * component's documented backup name.\n */\nexport function resolveControlName({\n label,\n ariaLabel,\n name,\n id,\n backupName,\n}: ControlNameOptions) {\n if (typeof label === \"string\" && label.trim()) return label.trim();\n if (typeof ariaLabel === \"string\" && ariaLabel.trim()) return ariaLabel.trim();\n return humanizeControlName(name) ?? humanizeControlName(id) ?? backupName;\n}\n","import TextField, { type TextFieldProps } from \"@mui/material/TextField\";\nimport FormControl from \"@mui/material/FormControl\";\nimport { useId } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport type SharedTextFieldProps = TextFieldProps & {\n /** Accessible name used only when label, aria-label, name and id are absent. */\n backupName?: string;\n};\n\n/** A full-width text field with the legacy library's compact defaults. */\nexport function SharedTextField({\n size = \"small\",\n variant = \"outlined\",\n InputLabelProps,\n inputProps,\n id,\n name,\n label,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `shared-text-field-${generatedId}`;\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n return (\n <TextField\n fullWidth\n size={size}\n variant={variant}\n id={controlId}\n name={name}\n label={label}\n InputLabelProps={{ shrink: true, ...InputLabelProps }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n ...inputProps,\n }}\n {...props}\n />\n );\n}\n\nexport default SharedTextField;\n\n/** Visual-compatible version of the legacy `TextField` export. */\nexport function LegacyTextField({\n InputProps,\n inputProps,\n label,\n name,\n id,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"] ?? InputProps?.inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n\n return (\n <TextField\n {...props}\n label={label}\n name={name}\n id={id}\n InputProps={{\n ...InputProps,\n inputProps: {\n ...InputProps?.inputProps,\n ...inputProps,\n style: {\n padding: \"10px 10px\",\n fontSize: \"14px\",\n ...InputProps?.inputProps?.style,\n ...inputProps?.style,\n },\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n },\n }}\n />\n );\n}\n\nexport type LegacyStyledTextFieldProps = SharedTextFieldProps & {\n errorMessage?: string | null;\n};\n\n/** Visual-compatible version of the legacy `StyledTextField` export. */\nexport function LegacyStyledTextField({\n errorMessage = null,\n variant = \"outlined\",\n size = \"small\",\n disabled = false,\n InputLabelProps,\n inputProps,\n sx,\n ...props\n}: LegacyStyledTextFieldProps) {\n return (\n <FormControl\n style={{ width: \"100%\", border: \"none\" }}\n error={Boolean(errorMessage && errorMessage.length > 0)}\n >\n <SharedTextField\n variant={variant}\n size={size}\n disabled={disabled}\n InputLabelProps={{\n shrink: true,\n sx: {\n color: \"#000\",\n fontSize: 18,\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n letterSpacing: \"0.5px\",\n },\n ...InputLabelProps,\n }}\n sx={{\n \"& .MuiOutlinedInput-root\": { borderRadius: \"6px\" },\n \"& .MuiInputLabel-root\": {\n color: \"#000\",\n fontSize: 18,\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n letterSpacing: \"0.5px\",\n },\n \"& .MuiInputLabel-shrink\": {\n transform: \"translate(11px, -9px) scale(0.75)\",\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n },\n ...sx,\n }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n style: { fontSize: \"16px\", padding: \"14px 12px\", ...inputProps?.style },\n ...inputProps,\n }}\n {...props}\n />\n </FormControl>\n );\n}\n","import MenuItem from \"@mui/material/MenuItem\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useMemo, useState, type ReactNode } from \"react\";\nimport { SharedTextField } from \"../inputs/SharedTextField\";\nimport {\n FusionChart,\n type FusionChartPresetProps,\n type FusionChartProps,\n} from \"./FusionChart\";\n\nexport interface CommonChartDatum extends Record<string, unknown> {\n label: string;\n value: string | number;\n displayValue?: string;\n color?: string;\n toolText?: string;\n link?: string;\n}\n\nexport interface CommonChartTypeOption {\n value: string;\n label: string;\n}\n\nexport const DEFAULT_CHART_TYPES: readonly CommonChartTypeOption[] = [\n { value: \"column2d\", label: \"Column\" },\n { value: \"bar2d\", label: \"Bar\" },\n { value: \"line\", label: \"Line\" },\n { value: \"area2d\", label: \"Area\" },\n { value: \"pie2d\", label: \"Pie\" },\n { value: \"doughnut2d\", label: \"Doughnut\" },\n];\n\nexport interface CommonChartProps\n extends Omit<FusionChartProps, \"type\" | \"dataSource\"> {\n type?: string;\n title?: ReactNode;\n caption?: string;\n subCaption?: string;\n xAxisName?: string;\n yAxisName?: string;\n items: readonly CommonChartDatum[];\n chartOptions?: Record<string, unknown>;\n selectableTypes?: readonly CommonChartTypeOption[];\n showTypeSelector?: boolean;\n selectorLabel?: string;\n description?: ReactNode;\n showDataTable?: boolean;\n dataTableLabel?: string;\n onTypeChange?: (type: string) => void;\n}\n\n/**\n * Common chart contract used by applications: data, labels and display options\n * are supplied through props and no API or license lookup is performed.\n */\nexport function CommonChart({\n type = \"column2d\",\n title,\n caption,\n subCaption,\n xAxisName,\n yAxisName,\n items,\n chartOptions,\n selectableTypes = DEFAULT_CHART_TYPES,\n showTypeSelector = false,\n selectorLabel = \"Chart type\",\n description,\n showDataTable = false,\n dataTableLabel = \"View chart data\",\n onTypeChange,\n \"aria-label\": ariaLabel,\n ...chartProps\n}: CommonChartProps) {\n const [selectedType, setSelectedType] = useState<string | null>(null);\n const activeType = selectedType ?? type;\n\n const dataSource = useMemo(\n () => ({\n chart: {\n caption: caption ?? (typeof title === \"string\" ? title : undefined),\n subCaption,\n xAxisName,\n yAxisName,\n baseFont: \"Inter, sans-serif\",\n baseFontSize: \"13\",\n showBorder: \"0\",\n showCanvasBorder: \"0\",\n usePlotGradientColor: \"0\",\n showPlotBorder: \"0\",\n showShadow: \"0\",\n showLegend: \"1\",\n legendPosition: \"bottom\",\n labelDisplay: \"rotate\",\n slantLabels: \"1\",\n maxColWidth: \"15\",\n maxBarHeight: \"15\",\n animation: \"1\",\n ...chartOptions,\n },\n data: [...items],\n }),\n [caption, chartOptions, items, subCaption, title, xAxisName, yAxisName],\n );\n\n const accessibleName =\n ariaLabel ?? caption ?? (typeof title === \"string\" ? title : \"Chart\");\n\n return (\n <Stack component=\"section\" spacing={1.5} aria-label={accessibleName}>\n {title || showTypeSelector ? (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n justifyContent=\"space-between\"\n gap={1}\n >\n {title ? <Typography component=\"h2\" variant=\"h6\">{title}</Typography> : null}\n {showTypeSelector ? (\n <SharedTextField\n select\n size=\"small\"\n label={selectorLabel}\n value={activeType}\n onChange={(event) => {\n setSelectedType(event.target.value);\n onTypeChange?.(event.target.value);\n }}\n sx={{ minWidth: 160 }}\n >\n {selectableTypes.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </SharedTextField>\n ) : null}\n </Stack>\n ) : null}\n {description ? <Typography color=\"text.secondary\">{description}</Typography> : null}\n <FusionChart\n type={activeType}\n dataSource={dataSource}\n aria-label={accessibleName}\n {...chartProps}\n />\n {showDataTable ? (\n <details>\n <summary>{dataTableLabel}</summary>\n <table>\n <caption>{accessibleName}</caption>\n <thead><tr><th scope=\"col\">Label</th><th scope=\"col\">Value</th></tr></thead>\n <tbody>\n {items.map((item) => (\n <tr key={item.label}>\n <th scope=\"row\">{item.label}</th>\n <td>{item.displayValue ?? item.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </details>\n ) : null}\n </Stack>\n );\n}\n\nexport type CommonChartPresetProps = Omit<CommonChartProps, \"type\">;\n\nexport function CommonBarChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"bar2d\" {...props} />;\n}\nexport function CommonColumnChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"column2d\" {...props} />;\n}\nexport function LineChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"line\" {...props} />;\n}\nexport function AreaChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"area2d\" {...props} />;\n}\nexport function PieChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"pie2d\" {...props} />;\n}\nexport function CommonDoughnutChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"doughnut2d\" {...props} />;\n}\n\nexport type CompatibleChartPresetProps =\n | CommonChartPresetProps\n | FusionChartPresetProps;\n\nfunction isRawPreset(\n props: CompatibleChartPresetProps,\n): props is FusionChartPresetProps {\n return \"dataSource\" in props;\n}\n\n/** Accepts both the legacy title/items contract and the raw dataSource contract. */\nexport function BarChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"bar2d\" {...props} />\n ) : (\n <CommonBarChart {...props} />\n );\n}\n\nexport function ColumnChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"column2d\" {...props} />\n ) : (\n <CommonColumnChart {...props} />\n );\n}\n\nexport const ChartColumn2D = ColumnChart;\n\nexport function DoughnutChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"doughnut2d\" {...props} />\n ) : (\n <CommonDoughnutChart {...props} />\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React$1 from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  interface FusionChartProps {
@@ -15,11 +15,11 @@ interface FusionChartProps {
15
15
  * Generic FusionCharts renderer. Data and optional licensing are injected by the
16
16
  * consuming application, so this package never performs an API request.
17
17
  */
18
- declare function FusionChart({ type, dataSource, width, height, events, licenseKey, loadingFallback, "aria-label": ariaLabel, }: FusionChartProps): string | number | boolean | Iterable<react.ReactNode> | react.JSX.Element | null;
18
+ declare function FusionChart({ type, dataSource, width, height, events, licenseKey, loadingFallback, "aria-label": ariaLabel, }: FusionChartProps): string | number | boolean | Iterable<React$1.ReactNode> | React$1.JSX.Element | null;
19
19
  type FusionChartPresetProps = Omit<FusionChartProps, "type">;
20
- declare function FusionBarChart(props: FusionChartPresetProps): react.JSX.Element;
21
- declare function FusionColumnChart(props: FusionChartPresetProps): react.JSX.Element;
22
- declare function FusionDoughnutChart(props: FusionChartPresetProps): react.JSX.Element;
20
+ declare function FusionBarChart(props: FusionChartPresetProps): React$1.JSX.Element;
21
+ declare function FusionColumnChart(props: FusionChartPresetProps): React$1.JSX.Element;
22
+ declare function FusionDoughnutChart(props: FusionChartPresetProps): React$1.JSX.Element;
23
23
  declare const GenericChart: typeof FusionChart;
24
24
  declare const FusionDefaultCharts: typeof FusionChart;
25
25
  declare const GenericChartCDMS: typeof FusionChart;
@@ -60,19 +60,19 @@ interface CommonChartProps extends Omit<FusionChartProps, "type" | "dataSource">
60
60
  * Common chart contract used by applications: data, labels and display options
61
61
  * are supplied through props and no API or license lookup is performed.
62
62
  */
63
- declare function CommonChart({ type, title, caption, subCaption, xAxisName, yAxisName, items, chartOptions, selectableTypes, showTypeSelector, selectorLabel, description, showDataTable, dataTableLabel, onTypeChange, "aria-label": ariaLabel, ...chartProps }: CommonChartProps): react.JSX.Element;
63
+ declare function CommonChart({ type, title, caption, subCaption, xAxisName, yAxisName, items, chartOptions, selectableTypes, showTypeSelector, selectorLabel, description, showDataTable, dataTableLabel, onTypeChange, "aria-label": ariaLabel, ...chartProps }: CommonChartProps): React$1.JSX.Element;
64
64
  type CommonChartPresetProps = Omit<CommonChartProps, "type">;
65
- declare function CommonBarChart(props: CommonChartPresetProps): react.JSX.Element;
66
- declare function CommonColumnChart(props: CommonChartPresetProps): react.JSX.Element;
67
- declare function LineChart(props: CommonChartPresetProps): react.JSX.Element;
68
- declare function AreaChart(props: CommonChartPresetProps): react.JSX.Element;
69
- declare function PieChart(props: CommonChartPresetProps): react.JSX.Element;
70
- declare function CommonDoughnutChart(props: CommonChartPresetProps): react.JSX.Element;
65
+ declare function CommonBarChart(props: CommonChartPresetProps): React$1.JSX.Element;
66
+ declare function CommonColumnChart(props: CommonChartPresetProps): React$1.JSX.Element;
67
+ declare function LineChart(props: CommonChartPresetProps): React$1.JSX.Element;
68
+ declare function AreaChart(props: CommonChartPresetProps): React$1.JSX.Element;
69
+ declare function PieChart(props: CommonChartPresetProps): React$1.JSX.Element;
70
+ declare function CommonDoughnutChart(props: CommonChartPresetProps): React$1.JSX.Element;
71
71
  type CompatibleChartPresetProps = CommonChartPresetProps | FusionChartPresetProps;
72
72
  /** Accepts both the legacy title/items contract and the raw dataSource contract. */
73
- declare function BarChart(props: CompatibleChartPresetProps): react.JSX.Element;
74
- declare function ColumnChart(props: CompatibleChartPresetProps): react.JSX.Element;
73
+ declare function BarChart(props: CompatibleChartPresetProps): React$1.JSX.Element;
74
+ declare function ColumnChart(props: CompatibleChartPresetProps): React$1.JSX.Element;
75
75
  declare const ChartColumn2D: typeof ColumnChart;
76
- declare function DoughnutChart(props: CompatibleChartPresetProps): react.JSX.Element;
76
+ declare function DoughnutChart(props: CompatibleChartPresetProps): React$1.JSX.Element;
77
77
 
78
78
  export { AreaChart, BarChart, ChartColumn2D, ColumnChart, CommonBarChart, CommonChart, type CommonChartDatum, type CommonChartPresetProps, type CommonChartProps, type CommonChartTypeOption, CommonColumnChart, CommonDoughnutChart, type CompatibleChartPresetProps, DEFAULT_CHART_TYPES, DoughnutChart, FusionBarChart, FusionChart, type FusionChartPresetProps, type FusionChartProps, FusionColumnChart, FusionDefaultCharts, FusionDefaultChartsPF, FusionDefaultChartsPH, FusionDoughnutChart, GenericChart, GenericChartCDMS, LineChart, PieChart };
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React$1 from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  interface FusionChartProps {
@@ -15,11 +15,11 @@ interface FusionChartProps {
15
15
  * Generic FusionCharts renderer. Data and optional licensing are injected by the
16
16
  * consuming application, so this package never performs an API request.
17
17
  */
18
- declare function FusionChart({ type, dataSource, width, height, events, licenseKey, loadingFallback, "aria-label": ariaLabel, }: FusionChartProps): string | number | boolean | Iterable<react.ReactNode> | react.JSX.Element | null;
18
+ declare function FusionChart({ type, dataSource, width, height, events, licenseKey, loadingFallback, "aria-label": ariaLabel, }: FusionChartProps): string | number | boolean | Iterable<React$1.ReactNode> | React$1.JSX.Element | null;
19
19
  type FusionChartPresetProps = Omit<FusionChartProps, "type">;
20
- declare function FusionBarChart(props: FusionChartPresetProps): react.JSX.Element;
21
- declare function FusionColumnChart(props: FusionChartPresetProps): react.JSX.Element;
22
- declare function FusionDoughnutChart(props: FusionChartPresetProps): react.JSX.Element;
20
+ declare function FusionBarChart(props: FusionChartPresetProps): React$1.JSX.Element;
21
+ declare function FusionColumnChart(props: FusionChartPresetProps): React$1.JSX.Element;
22
+ declare function FusionDoughnutChart(props: FusionChartPresetProps): React$1.JSX.Element;
23
23
  declare const GenericChart: typeof FusionChart;
24
24
  declare const FusionDefaultCharts: typeof FusionChart;
25
25
  declare const GenericChartCDMS: typeof FusionChart;
@@ -60,19 +60,19 @@ interface CommonChartProps extends Omit<FusionChartProps, "type" | "dataSource">
60
60
  * Common chart contract used by applications: data, labels and display options
61
61
  * are supplied through props and no API or license lookup is performed.
62
62
  */
63
- declare function CommonChart({ type, title, caption, subCaption, xAxisName, yAxisName, items, chartOptions, selectableTypes, showTypeSelector, selectorLabel, description, showDataTable, dataTableLabel, onTypeChange, "aria-label": ariaLabel, ...chartProps }: CommonChartProps): react.JSX.Element;
63
+ declare function CommonChart({ type, title, caption, subCaption, xAxisName, yAxisName, items, chartOptions, selectableTypes, showTypeSelector, selectorLabel, description, showDataTable, dataTableLabel, onTypeChange, "aria-label": ariaLabel, ...chartProps }: CommonChartProps): React$1.JSX.Element;
64
64
  type CommonChartPresetProps = Omit<CommonChartProps, "type">;
65
- declare function CommonBarChart(props: CommonChartPresetProps): react.JSX.Element;
66
- declare function CommonColumnChart(props: CommonChartPresetProps): react.JSX.Element;
67
- declare function LineChart(props: CommonChartPresetProps): react.JSX.Element;
68
- declare function AreaChart(props: CommonChartPresetProps): react.JSX.Element;
69
- declare function PieChart(props: CommonChartPresetProps): react.JSX.Element;
70
- declare function CommonDoughnutChart(props: CommonChartPresetProps): react.JSX.Element;
65
+ declare function CommonBarChart(props: CommonChartPresetProps): React$1.JSX.Element;
66
+ declare function CommonColumnChart(props: CommonChartPresetProps): React$1.JSX.Element;
67
+ declare function LineChart(props: CommonChartPresetProps): React$1.JSX.Element;
68
+ declare function AreaChart(props: CommonChartPresetProps): React$1.JSX.Element;
69
+ declare function PieChart(props: CommonChartPresetProps): React$1.JSX.Element;
70
+ declare function CommonDoughnutChart(props: CommonChartPresetProps): React$1.JSX.Element;
71
71
  type CompatibleChartPresetProps = CommonChartPresetProps | FusionChartPresetProps;
72
72
  /** Accepts both the legacy title/items contract and the raw dataSource contract. */
73
- declare function BarChart(props: CompatibleChartPresetProps): react.JSX.Element;
74
- declare function ColumnChart(props: CompatibleChartPresetProps): react.JSX.Element;
73
+ declare function BarChart(props: CompatibleChartPresetProps): React$1.JSX.Element;
74
+ declare function ColumnChart(props: CompatibleChartPresetProps): React$1.JSX.Element;
75
75
  declare const ChartColumn2D: typeof ColumnChart;
76
- declare function DoughnutChart(props: CompatibleChartPresetProps): react.JSX.Element;
76
+ declare function DoughnutChart(props: CompatibleChartPresetProps): React$1.JSX.Element;
77
77
 
78
78
  export { AreaChart, BarChart, ChartColumn2D, ColumnChart, CommonBarChart, CommonChart, type CommonChartDatum, type CommonChartPresetProps, type CommonChartProps, type CommonChartTypeOption, CommonColumnChart, CommonDoughnutChart, type CompatibleChartPresetProps, DEFAULT_CHART_TYPES, DoughnutChart, FusionBarChart, FusionChart, type FusionChartPresetProps, type FusionChartProps, FusionColumnChart, FusionDefaultCharts, FusionDefaultChartsPF, FusionDefaultChartsPH, FusionDoughnutChart, GenericChart, GenericChartCDMS, LineChart, PieChart };
@@ -1,12 +1,13 @@
1
1
  import FusionCharts from 'fusioncharts';
2
2
  import charts from 'fusioncharts/fusioncharts.charts.js';
3
3
  import ReactFusioncharts from 'react-fusioncharts';
4
- import { useState, useEffect, useMemo } from 'react';
4
+ import { useState, useEffect, useMemo, useId } from 'react';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
  import MenuItem from '@mui/material/MenuItem';
7
7
  import Stack from '@mui/material/Stack';
8
- import TextField from '@mui/material/TextField';
9
8
  import Typography from '@mui/material/Typography';
9
+ import TextField from '@mui/material/TextField';
10
+ import '@mui/material/FormControl';
10
11
 
11
12
  // src/charts/FusionChart.tsx
12
13
  var fusionRegistered = false;
@@ -72,6 +73,63 @@ var FusionDefaultCharts = FusionChart;
72
73
  var GenericChartCDMS = FusionChart;
73
74
  var FusionDefaultChartsPF = FusionChart;
74
75
  var FusionDefaultChartsPH = FusionChart;
76
+
77
+ // src/accessibility/controlNames.ts
78
+ function humanizeControlName(value) {
79
+ const normalized = value?.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim();
80
+ return normalized ? normalized.charAt(0).toUpperCase() + normalized.slice(1) : void 0;
81
+ }
82
+ function resolveControlName({
83
+ label,
84
+ ariaLabel,
85
+ name,
86
+ id,
87
+ backupName
88
+ }) {
89
+ if (typeof label === "string" && label.trim()) return label.trim();
90
+ if (typeof ariaLabel === "string" && ariaLabel.trim()) return ariaLabel.trim();
91
+ return humanizeControlName(name) ?? humanizeControlName(id) ?? backupName;
92
+ }
93
+ function SharedTextField({
94
+ size = "small",
95
+ variant = "outlined",
96
+ InputLabelProps,
97
+ inputProps,
98
+ id,
99
+ name,
100
+ label,
101
+ backupName = "Text input",
102
+ ...props
103
+ }) {
104
+ const generatedId = useId().replace(/:/g, "");
105
+ const controlId = id ?? `shared-text-field-${generatedId}`;
106
+ const accessibleName = resolveControlName({
107
+ label,
108
+ ariaLabel: inputProps?.["aria-label"],
109
+ name,
110
+ id,
111
+ backupName
112
+ });
113
+ return /* @__PURE__ */ jsx(
114
+ TextField,
115
+ {
116
+ fullWidth: true,
117
+ size,
118
+ variant,
119
+ id: controlId,
120
+ name,
121
+ label,
122
+ InputLabelProps: { shrink: true, ...InputLabelProps },
123
+ inputProps: {
124
+ autoComplete: "off",
125
+ "data-gramm": "false",
126
+ ...!label && !inputProps?.["aria-labelledby"] ? { "aria-label": accessibleName } : {},
127
+ ...inputProps
128
+ },
129
+ ...props
130
+ }
131
+ );
132
+ }
75
133
  var DEFAULT_CHART_TYPES = [
76
134
  { value: "column2d", label: "Column" },
77
135
  { value: "bar2d", label: "Bar" },
@@ -140,7 +198,7 @@ function CommonChart({
140
198
  children: [
141
199
  title ? /* @__PURE__ */ jsx(Typography, { component: "h2", variant: "h6", children: title }) : null,
142
200
  showTypeSelector ? /* @__PURE__ */ jsx(
143
- TextField,
201
+ SharedTextField,
144
202
  {
145
203
  select: true,
146
204
  size: "small",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/FusionChart.tsx","../../src/charts/CommonChart.tsx"],"names":["useState","jsx"],"mappings":"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","file":"fusion.js","sourcesContent":["import FusionCharts from \"fusioncharts\";\nimport charts from \"fusioncharts/fusioncharts.charts.js\";\nimport ReactFusioncharts from \"react-fusioncharts\";\nimport { useEffect, useState } from \"react\";\n\nlet fusionRegistered = false;\n\nexport interface FusionChartProps {\n type: string;\n dataSource: Record<string, unknown>;\n width?: string | number;\n height?: string | number;\n events?: Record<string, (...args: unknown[]) => void>;\n licenseKey?: string | Promise<string>;\n loadingFallback?: React.ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Generic FusionCharts renderer. Data and optional licensing are injected by the\n * consuming application, so this package never performs an API request.\n */\nexport function FusionChart({\n type,\n dataSource,\n width = \"100%\",\n height = 400,\n events,\n licenseKey,\n loadingFallback = null,\n \"aria-label\": ariaLabel = \"Chart\",\n}: FusionChartProps) {\n const [registered, setRegistered] = useState(fusionRegistered);\n const [licenseReady, setLicenseReady] = useState(!licenseKey);\n\n useEffect(() => {\n if (!fusionRegistered) {\n ReactFusioncharts.fcRoot(FusionCharts, charts);\n fusionRegistered = true;\n }\n setRegistered(true);\n }, []);\n\n useEffect(() => {\n let active = true;\n if (!licenseKey) {\n setLicenseReady(true);\n return undefined;\n }\n setLicenseReady(false);\n void Promise.resolve(licenseKey).then((key) => {\n const options = FusionCharts.options as typeof FusionCharts.options & {\n license: (settings: { key: string; creditLabel: boolean }) => void;\n };\n options.license({ key, creditLabel: false });\n if (active) setLicenseReady(true);\n });\n return () => {\n active = false;\n };\n }, [licenseKey]);\n\n if (!registered || !licenseReady) return loadingFallback;\n\n return (\n <div role=\"img\" aria-label={ariaLabel}>\n <ReactFusioncharts\n type={type}\n width={width}\n height={height}\n dataFormat=\"json\"\n dataSource={dataSource}\n {...(events ? { events } : {})}\n />\n </div>\n );\n}\n\nexport type FusionChartPresetProps = Omit<FusionChartProps, \"type\">;\n\nexport function FusionBarChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"bar2d\" {...props} />;\n}\n\nexport function FusionColumnChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"column2d\" {...props} />;\n}\n\nexport function FusionDoughnutChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"doughnut2d\" {...props} />;\n}\n\nexport const GenericChart = FusionChart;\nexport const FusionDefaultCharts = FusionChart;\nexport const GenericChartCDMS = FusionChart;\nexport const FusionDefaultChartsPF = FusionChart;\nexport const FusionDefaultChartsPH = FusionChart;\n","import MenuItem from \"@mui/material/MenuItem\";\nimport Stack from \"@mui/material/Stack\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport { useMemo, useState, type ReactNode } from \"react\";\nimport {\n FusionChart,\n type FusionChartPresetProps,\n type FusionChartProps,\n} from \"./FusionChart\";\n\nexport interface CommonChartDatum extends Record<string, unknown> {\n label: string;\n value: string | number;\n displayValue?: string;\n color?: string;\n toolText?: string;\n link?: string;\n}\n\nexport interface CommonChartTypeOption {\n value: string;\n label: string;\n}\n\nexport const DEFAULT_CHART_TYPES: readonly CommonChartTypeOption[] = [\n { value: \"column2d\", label: \"Column\" },\n { value: \"bar2d\", label: \"Bar\" },\n { value: \"line\", label: \"Line\" },\n { value: \"area2d\", label: \"Area\" },\n { value: \"pie2d\", label: \"Pie\" },\n { value: \"doughnut2d\", label: \"Doughnut\" },\n];\n\nexport interface CommonChartProps\n extends Omit<FusionChartProps, \"type\" | \"dataSource\"> {\n type?: string;\n title?: ReactNode;\n caption?: string;\n subCaption?: string;\n xAxisName?: string;\n yAxisName?: string;\n items: readonly CommonChartDatum[];\n chartOptions?: Record<string, unknown>;\n selectableTypes?: readonly CommonChartTypeOption[];\n showTypeSelector?: boolean;\n selectorLabel?: string;\n description?: ReactNode;\n showDataTable?: boolean;\n dataTableLabel?: string;\n onTypeChange?: (type: string) => void;\n}\n\n/**\n * Common chart contract used by applications: data, labels and display options\n * are supplied through props and no API or license lookup is performed.\n */\nexport function CommonChart({\n type = \"column2d\",\n title,\n caption,\n subCaption,\n xAxisName,\n yAxisName,\n items,\n chartOptions,\n selectableTypes = DEFAULT_CHART_TYPES,\n showTypeSelector = false,\n selectorLabel = \"Chart type\",\n description,\n showDataTable = false,\n dataTableLabel = \"View chart data\",\n onTypeChange,\n \"aria-label\": ariaLabel,\n ...chartProps\n}: CommonChartProps) {\n const [selectedType, setSelectedType] = useState<string | null>(null);\n const activeType = selectedType ?? type;\n\n const dataSource = useMemo(\n () => ({\n chart: {\n caption: caption ?? (typeof title === \"string\" ? title : undefined),\n subCaption,\n xAxisName,\n yAxisName,\n baseFont: \"Inter, sans-serif\",\n baseFontSize: \"13\",\n showBorder: \"0\",\n showCanvasBorder: \"0\",\n usePlotGradientColor: \"0\",\n showPlotBorder: \"0\",\n showShadow: \"0\",\n showLegend: \"1\",\n legendPosition: \"bottom\",\n labelDisplay: \"rotate\",\n slantLabels: \"1\",\n maxColWidth: \"15\",\n maxBarHeight: \"15\",\n animation: \"1\",\n ...chartOptions,\n },\n data: [...items],\n }),\n [caption, chartOptions, items, subCaption, title, xAxisName, yAxisName],\n );\n\n const accessibleName =\n ariaLabel ?? caption ?? (typeof title === \"string\" ? title : \"Chart\");\n\n return (\n <Stack component=\"section\" spacing={1.5} aria-label={accessibleName}>\n {title || showTypeSelector ? (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n justifyContent=\"space-between\"\n gap={1}\n >\n {title ? <Typography component=\"h2\" variant=\"h6\">{title}</Typography> : null}\n {showTypeSelector ? (\n <TextField\n select\n size=\"small\"\n label={selectorLabel}\n value={activeType}\n onChange={(event) => {\n setSelectedType(event.target.value);\n onTypeChange?.(event.target.value);\n }}\n sx={{ minWidth: 160 }}\n >\n {selectableTypes.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n ) : null}\n </Stack>\n ) : null}\n {description ? <Typography color=\"text.secondary\">{description}</Typography> : null}\n <FusionChart\n type={activeType}\n dataSource={dataSource}\n aria-label={accessibleName}\n {...chartProps}\n />\n {showDataTable ? (\n <details>\n <summary>{dataTableLabel}</summary>\n <table>\n <caption>{accessibleName}</caption>\n <thead><tr><th scope=\"col\">Label</th><th scope=\"col\">Value</th></tr></thead>\n <tbody>\n {items.map((item) => (\n <tr key={item.label}>\n <th scope=\"row\">{item.label}</th>\n <td>{item.displayValue ?? item.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </details>\n ) : null}\n </Stack>\n );\n}\n\nexport type CommonChartPresetProps = Omit<CommonChartProps, \"type\">;\n\nexport function CommonBarChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"bar2d\" {...props} />;\n}\nexport function CommonColumnChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"column2d\" {...props} />;\n}\nexport function LineChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"line\" {...props} />;\n}\nexport function AreaChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"area2d\" {...props} />;\n}\nexport function PieChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"pie2d\" {...props} />;\n}\nexport function CommonDoughnutChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"doughnut2d\" {...props} />;\n}\n\nexport type CompatibleChartPresetProps =\n | CommonChartPresetProps\n | FusionChartPresetProps;\n\nfunction isRawPreset(\n props: CompatibleChartPresetProps,\n): props is FusionChartPresetProps {\n return \"dataSource\" in props;\n}\n\n/** Accepts both the legacy title/items contract and the raw dataSource contract. */\nexport function BarChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"bar2d\" {...props} />\n ) : (\n <CommonBarChart {...props} />\n );\n}\n\nexport function ColumnChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"column2d\" {...props} />\n ) : (\n <CommonColumnChart {...props} />\n );\n}\n\nexport const ChartColumn2D = ColumnChart;\n\nexport function DoughnutChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"doughnut2d\" {...props} />\n ) : (\n <CommonDoughnutChart {...props} />\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/charts/FusionChart.tsx","../../src/accessibility/controlNames.ts","../../src/inputs/SharedTextField.tsx","../../src/charts/CommonChart.tsx"],"names":["jsx","useState"],"mappings":"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","file":"fusion.js","sourcesContent":["import FusionCharts from \"fusioncharts\";\nimport charts from \"fusioncharts/fusioncharts.charts.js\";\nimport ReactFusioncharts from \"react-fusioncharts\";\nimport { useEffect, useState } from \"react\";\n\nlet fusionRegistered = false;\n\nexport interface FusionChartProps {\n type: string;\n dataSource: Record<string, unknown>;\n width?: string | number;\n height?: string | number;\n events?: Record<string, (...args: unknown[]) => void>;\n licenseKey?: string | Promise<string>;\n loadingFallback?: React.ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Generic FusionCharts renderer. Data and optional licensing are injected by the\n * consuming application, so this package never performs an API request.\n */\nexport function FusionChart({\n type,\n dataSource,\n width = \"100%\",\n height = 400,\n events,\n licenseKey,\n loadingFallback = null,\n \"aria-label\": ariaLabel = \"Chart\",\n}: FusionChartProps) {\n const [registered, setRegistered] = useState(fusionRegistered);\n const [licenseReady, setLicenseReady] = useState(!licenseKey);\n\n useEffect(() => {\n if (!fusionRegistered) {\n ReactFusioncharts.fcRoot(FusionCharts, charts);\n fusionRegistered = true;\n }\n setRegistered(true);\n }, []);\n\n useEffect(() => {\n let active = true;\n if (!licenseKey) {\n setLicenseReady(true);\n return undefined;\n }\n setLicenseReady(false);\n void Promise.resolve(licenseKey).then((key) => {\n const options = FusionCharts.options as typeof FusionCharts.options & {\n license: (settings: { key: string; creditLabel: boolean }) => void;\n };\n options.license({ key, creditLabel: false });\n if (active) setLicenseReady(true);\n });\n return () => {\n active = false;\n };\n }, [licenseKey]);\n\n if (!registered || !licenseReady) return loadingFallback;\n\n return (\n <div role=\"img\" aria-label={ariaLabel}>\n <ReactFusioncharts\n type={type}\n width={width}\n height={height}\n dataFormat=\"json\"\n dataSource={dataSource}\n {...(events ? { events } : {})}\n />\n </div>\n );\n}\n\nexport type FusionChartPresetProps = Omit<FusionChartProps, \"type\">;\n\nexport function FusionBarChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"bar2d\" {...props} />;\n}\n\nexport function FusionColumnChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"column2d\" {...props} />;\n}\n\nexport function FusionDoughnutChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"doughnut2d\" {...props} />;\n}\n\nexport const GenericChart = FusionChart;\nexport const FusionDefaultCharts = FusionChart;\nexport const GenericChartCDMS = FusionChart;\nexport const FusionDefaultChartsPF = FusionChart;\nexport const FusionDefaultChartsPH = FusionChart;\n","export interface ControlNameOptions {\n label?: unknown;\n ariaLabel?: unknown;\n name?: string;\n id?: string;\n backupName: string;\n}\n\n/** Turns common field identifiers into a readable last-resort accessible name. */\nexport function humanizeControlName(value?: string) {\n const normalized = value\n ?.replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/\\s+/g, \" \")\n .trim();\n return normalized ? normalized.charAt(0).toUpperCase() + normalized.slice(1) : undefined;\n}\n\n/**\n * A visible string label is associated by the component and therefore wins.\n * Otherwise prefer an explicit aria-label, then a readable name/id, then the\n * component's documented backup name.\n */\nexport function resolveControlName({\n label,\n ariaLabel,\n name,\n id,\n backupName,\n}: ControlNameOptions) {\n if (typeof label === \"string\" && label.trim()) return label.trim();\n if (typeof ariaLabel === \"string\" && ariaLabel.trim()) return ariaLabel.trim();\n return humanizeControlName(name) ?? humanizeControlName(id) ?? backupName;\n}\n","import TextField, { type TextFieldProps } from \"@mui/material/TextField\";\nimport FormControl from \"@mui/material/FormControl\";\nimport { useId } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport type SharedTextFieldProps = TextFieldProps & {\n /** Accessible name used only when label, aria-label, name and id are absent. */\n backupName?: string;\n};\n\n/** A full-width text field with the legacy library's compact defaults. */\nexport function SharedTextField({\n size = \"small\",\n variant = \"outlined\",\n InputLabelProps,\n inputProps,\n id,\n name,\n label,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `shared-text-field-${generatedId}`;\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n return (\n <TextField\n fullWidth\n size={size}\n variant={variant}\n id={controlId}\n name={name}\n label={label}\n InputLabelProps={{ shrink: true, ...InputLabelProps }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n ...inputProps,\n }}\n {...props}\n />\n );\n}\n\nexport default SharedTextField;\n\n/** Visual-compatible version of the legacy `TextField` export. */\nexport function LegacyTextField({\n InputProps,\n inputProps,\n label,\n name,\n id,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"] ?? InputProps?.inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n\n return (\n <TextField\n {...props}\n label={label}\n name={name}\n id={id}\n InputProps={{\n ...InputProps,\n inputProps: {\n ...InputProps?.inputProps,\n ...inputProps,\n style: {\n padding: \"10px 10px\",\n fontSize: \"14px\",\n ...InputProps?.inputProps?.style,\n ...inputProps?.style,\n },\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n },\n }}\n />\n );\n}\n\nexport type LegacyStyledTextFieldProps = SharedTextFieldProps & {\n errorMessage?: string | null;\n};\n\n/** Visual-compatible version of the legacy `StyledTextField` export. */\nexport function LegacyStyledTextField({\n errorMessage = null,\n variant = \"outlined\",\n size = \"small\",\n disabled = false,\n InputLabelProps,\n inputProps,\n sx,\n ...props\n}: LegacyStyledTextFieldProps) {\n return (\n <FormControl\n style={{ width: \"100%\", border: \"none\" }}\n error={Boolean(errorMessage && errorMessage.length > 0)}\n >\n <SharedTextField\n variant={variant}\n size={size}\n disabled={disabled}\n InputLabelProps={{\n shrink: true,\n sx: {\n color: \"#000\",\n fontSize: 18,\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n letterSpacing: \"0.5px\",\n },\n ...InputLabelProps,\n }}\n sx={{\n \"& .MuiOutlinedInput-root\": { borderRadius: \"6px\" },\n \"& .MuiInputLabel-root\": {\n color: \"#000\",\n fontSize: 18,\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n letterSpacing: \"0.5px\",\n },\n \"& .MuiInputLabel-shrink\": {\n transform: \"translate(11px, -9px) scale(0.75)\",\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n },\n ...sx,\n }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n style: { fontSize: \"16px\", padding: \"14px 12px\", ...inputProps?.style },\n ...inputProps,\n }}\n {...props}\n />\n </FormControl>\n );\n}\n","import MenuItem from \"@mui/material/MenuItem\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useMemo, useState, type ReactNode } from \"react\";\nimport { SharedTextField } from \"../inputs/SharedTextField\";\nimport {\n FusionChart,\n type FusionChartPresetProps,\n type FusionChartProps,\n} from \"./FusionChart\";\n\nexport interface CommonChartDatum extends Record<string, unknown> {\n label: string;\n value: string | number;\n displayValue?: string;\n color?: string;\n toolText?: string;\n link?: string;\n}\n\nexport interface CommonChartTypeOption {\n value: string;\n label: string;\n}\n\nexport const DEFAULT_CHART_TYPES: readonly CommonChartTypeOption[] = [\n { value: \"column2d\", label: \"Column\" },\n { value: \"bar2d\", label: \"Bar\" },\n { value: \"line\", label: \"Line\" },\n { value: \"area2d\", label: \"Area\" },\n { value: \"pie2d\", label: \"Pie\" },\n { value: \"doughnut2d\", label: \"Doughnut\" },\n];\n\nexport interface CommonChartProps\n extends Omit<FusionChartProps, \"type\" | \"dataSource\"> {\n type?: string;\n title?: ReactNode;\n caption?: string;\n subCaption?: string;\n xAxisName?: string;\n yAxisName?: string;\n items: readonly CommonChartDatum[];\n chartOptions?: Record<string, unknown>;\n selectableTypes?: readonly CommonChartTypeOption[];\n showTypeSelector?: boolean;\n selectorLabel?: string;\n description?: ReactNode;\n showDataTable?: boolean;\n dataTableLabel?: string;\n onTypeChange?: (type: string) => void;\n}\n\n/**\n * Common chart contract used by applications: data, labels and display options\n * are supplied through props and no API or license lookup is performed.\n */\nexport function CommonChart({\n type = \"column2d\",\n title,\n caption,\n subCaption,\n xAxisName,\n yAxisName,\n items,\n chartOptions,\n selectableTypes = DEFAULT_CHART_TYPES,\n showTypeSelector = false,\n selectorLabel = \"Chart type\",\n description,\n showDataTable = false,\n dataTableLabel = \"View chart data\",\n onTypeChange,\n \"aria-label\": ariaLabel,\n ...chartProps\n}: CommonChartProps) {\n const [selectedType, setSelectedType] = useState<string | null>(null);\n const activeType = selectedType ?? type;\n\n const dataSource = useMemo(\n () => ({\n chart: {\n caption: caption ?? (typeof title === \"string\" ? title : undefined),\n subCaption,\n xAxisName,\n yAxisName,\n baseFont: \"Inter, sans-serif\",\n baseFontSize: \"13\",\n showBorder: \"0\",\n showCanvasBorder: \"0\",\n usePlotGradientColor: \"0\",\n showPlotBorder: \"0\",\n showShadow: \"0\",\n showLegend: \"1\",\n legendPosition: \"bottom\",\n labelDisplay: \"rotate\",\n slantLabels: \"1\",\n maxColWidth: \"15\",\n maxBarHeight: \"15\",\n animation: \"1\",\n ...chartOptions,\n },\n data: [...items],\n }),\n [caption, chartOptions, items, subCaption, title, xAxisName, yAxisName],\n );\n\n const accessibleName =\n ariaLabel ?? caption ?? (typeof title === \"string\" ? title : \"Chart\");\n\n return (\n <Stack component=\"section\" spacing={1.5} aria-label={accessibleName}>\n {title || showTypeSelector ? (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n justifyContent=\"space-between\"\n gap={1}\n >\n {title ? <Typography component=\"h2\" variant=\"h6\">{title}</Typography> : null}\n {showTypeSelector ? (\n <SharedTextField\n select\n size=\"small\"\n label={selectorLabel}\n value={activeType}\n onChange={(event) => {\n setSelectedType(event.target.value);\n onTypeChange?.(event.target.value);\n }}\n sx={{ minWidth: 160 }}\n >\n {selectableTypes.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </SharedTextField>\n ) : null}\n </Stack>\n ) : null}\n {description ? <Typography color=\"text.secondary\">{description}</Typography> : null}\n <FusionChart\n type={activeType}\n dataSource={dataSource}\n aria-label={accessibleName}\n {...chartProps}\n />\n {showDataTable ? (\n <details>\n <summary>{dataTableLabel}</summary>\n <table>\n <caption>{accessibleName}</caption>\n <thead><tr><th scope=\"col\">Label</th><th scope=\"col\">Value</th></tr></thead>\n <tbody>\n {items.map((item) => (\n <tr key={item.label}>\n <th scope=\"row\">{item.label}</th>\n <td>{item.displayValue ?? item.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </details>\n ) : null}\n </Stack>\n );\n}\n\nexport type CommonChartPresetProps = Omit<CommonChartProps, \"type\">;\n\nexport function CommonBarChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"bar2d\" {...props} />;\n}\nexport function CommonColumnChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"column2d\" {...props} />;\n}\nexport function LineChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"line\" {...props} />;\n}\nexport function AreaChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"area2d\" {...props} />;\n}\nexport function PieChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"pie2d\" {...props} />;\n}\nexport function CommonDoughnutChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"doughnut2d\" {...props} />;\n}\n\nexport type CompatibleChartPresetProps =\n | CommonChartPresetProps\n | FusionChartPresetProps;\n\nfunction isRawPreset(\n props: CompatibleChartPresetProps,\n): props is FusionChartPresetProps {\n return \"dataSource\" in props;\n}\n\n/** Accepts both the legacy title/items contract and the raw dataSource contract. */\nexport function BarChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"bar2d\" {...props} />\n ) : (\n <CommonBarChart {...props} />\n );\n}\n\nexport function ColumnChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"column2d\" {...props} />\n ) : (\n <CommonColumnChart {...props} />\n );\n}\n\nexport const ChartColumn2D = ColumnChart;\n\nexport function DoughnutChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"doughnut2d\" {...props} />\n ) : (\n <CommonDoughnutChart {...props} />\n );\n}\n"]}
@@ -7,8 +7,10 @@ var jsxRuntime = require('react/jsx-runtime');
7
7
  var FunctionsIcon = require('@mui/icons-material/Functions');
8
8
  var InfoOutlinedIcon = require('@mui/icons-material/InfoOutlined');
9
9
  var Stack = require('@mui/material/Stack');
10
- var Tooltip = require('@mui/material/Tooltip');
10
+ var Button = require('@mui/material/Button');
11
11
  var IconButton = require('@mui/material/IconButton');
12
+ var Tooltip = require('@mui/material/Tooltip');
13
+ var styles = require('@mui/material/styles');
12
14
  var Box = require('@mui/material/Box');
13
15
 
14
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -16,8 +18,9 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
18
  var FunctionsIcon__default = /*#__PURE__*/_interopDefault(FunctionsIcon);
17
19
  var InfoOutlinedIcon__default = /*#__PURE__*/_interopDefault(InfoOutlinedIcon);
18
20
  var Stack__default = /*#__PURE__*/_interopDefault(Stack);
19
- var Tooltip__default = /*#__PURE__*/_interopDefault(Tooltip);
21
+ var Button__default = /*#__PURE__*/_interopDefault(Button);
20
22
  var IconButton__default = /*#__PURE__*/_interopDefault(IconButton);
23
+ var Tooltip__default = /*#__PURE__*/_interopDefault(Tooltip);
21
24
  var Box__default = /*#__PURE__*/_interopDefault(Box);
22
25
 
23
26
  // src/grids/ag-grid/CustomAgGrid.tsx
@@ -100,15 +103,89 @@ var CustomGridTable = react.memo(
100
103
  CustomGridTableComponent
101
104
  );
102
105
  var AgGridTable = CustomGridTable;
103
- function SharedIconButton({ sx, ...props }) {
106
+ var colorOpacity = {
107
+ primary: "#1976d2",
108
+ secondary: "#9c27b0",
109
+ error: "#d32f2f",
110
+ warning: "#ed6c02",
111
+ info: "#0288d1",
112
+ success: "#2e7d32",
113
+ inherit: "#1976d2",
114
+ default: "#1976d2"
115
+ };
116
+ function accessibleText(children) {
117
+ let text = "";
118
+ react.Children.forEach(children, (child) => {
119
+ if (typeof child === "string" || typeof child === "number") {
120
+ text += String(child);
121
+ } else if (react.isValidElement(child)) {
122
+ text += accessibleText(child.props.children);
123
+ }
124
+ });
125
+ return text.trim() || "Button";
126
+ }
127
+ function SharedButton({
128
+ children,
129
+ color = "primary",
130
+ variant,
131
+ disabled = false,
132
+ sx,
133
+ ...props
134
+ }) {
135
+ const baseColor = colorOpacity[color] ?? colorOpacity.primary;
136
+ const customSx = variant === "outlined" && !disabled ? {
137
+ textTransform: "capitalize",
138
+ backgroundColor: `${baseColor}20`,
139
+ "&:hover": { backgroundColor: `${baseColor}35` },
140
+ ...sx
141
+ } : { textTransform: "capitalize", ...sx };
142
+ return /* @__PURE__ */ jsxRuntime.jsx(
143
+ Button__default.default,
144
+ {
145
+ "aria-label": props["aria-label"] ?? accessibleText(children),
146
+ color,
147
+ variant,
148
+ disabled,
149
+ sx: {
150
+ ...customSx,
151
+ minWidth: "40px",
152
+ height: "40px",
153
+ padding: "6px",
154
+ borderRadius: "4px"
155
+ },
156
+ ...props,
157
+ children
158
+ }
159
+ );
160
+ }
161
+ function inferIconLabel(children) {
162
+ if (!react.isValidElement(children)) return "Icon Button";
163
+ const type = children.type;
164
+ const name = type.displayName ?? type.name ?? "Icon Button";
165
+ return name.replace(/(Icon|Outlined|Filled|Rounded|Sharp|TwoTone)$/g, "").replace(/([a-z])([A-Z])/g, "$1 $2").toLowerCase();
166
+ }
167
+ function SharedIconButton({ children, ...props }) {
104
168
  return /* @__PURE__ */ jsxRuntime.jsx(
105
169
  IconButton__default.default,
106
170
  {
107
- sx: { width: 40, height: 40, borderRadius: 1, ...sx },
108
- ...props
171
+ "aria-label": props["aria-label"] ?? inferIconLabel(children),
172
+ ...props,
173
+ children
109
174
  }
110
175
  );
111
176
  }
177
+ var LightTooltip = styles.styled(({ className, children, ...props }) => {
178
+ const disabled = react.isValidElement(children) && Boolean(children.props.disabled);
179
+ if (disabled) return /* @__PURE__ */ jsxRuntime.jsx("span", { children });
180
+ return /* @__PURE__ */ jsxRuntime.jsx(Tooltip__default.default, { ...props, classes: className ? { popper: className } : void 0, children });
181
+ })(({ theme }) => ({
182
+ [`& .${Tooltip.tooltipClasses.tooltip}`]: {
183
+ backgroundColor: theme.palette.common.white,
184
+ color: "rgba(0, 0, 0, 0.87)",
185
+ boxShadow: theme.shadows[1],
186
+ fontSize: 14
187
+ }
188
+ }));
112
189
  function CustomGridHeaderCellWithInfo({
113
190
  displayName,
114
191
  title,
@@ -128,21 +205,19 @@ function CustomGridHeaderCellWithInfo({
128
205
  };
129
206
  return /* @__PURE__ */ jsxRuntime.jsxs(Stack__default.default, { direction: "row", alignItems: "center", spacing: 0.5, width: "100%", children: [
130
207
  /* @__PURE__ */ jsxRuntime.jsxs(
131
- "button",
208
+ SharedButton,
132
209
  {
133
- type: "button",
210
+ variant: "text",
134
211
  disabled: !enableSorting,
135
212
  "aria-label": sortLabel,
136
213
  onClick: requestSort,
137
- style: {
138
- appearance: "none",
139
- border: 0,
140
- background: "transparent",
214
+ sx: {
215
+ minWidth: 40,
216
+ px: 0.5,
141
217
  color: "inherit",
142
- font: "inherit",
143
218
  fontWeight: 600,
144
- cursor: enableSorting ? "pointer" : "default",
145
- padding: 4
219
+ justifyContent: "flex-start",
220
+ whiteSpace: "nowrap"
146
221
  },
147
222
  children: [
148
223
  headerTitle,
@@ -150,8 +225,8 @@ function CustomGridHeaderCellWithInfo({
150
225
  ]
151
226
  }
152
227
  ),
153
- info ? /* @__PURE__ */ jsxRuntime.jsx(Tooltip__default.default, { title: info, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(SharedIconButton, { "aria-label": infoLabel, size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(InfoOutlinedIcon__default.default, { fontSize: "small" }) }) }) : null,
154
- formula ? /* @__PURE__ */ jsxRuntime.jsx(Tooltip__default.default, { title: formula, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(SharedIconButton, { "aria-label": formulaLabel, size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(FunctionsIcon__default.default, { fontSize: "small" }) }) }) : null
228
+ info ? /* @__PURE__ */ jsxRuntime.jsx(LightTooltip, { title: info, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(SharedIconButton, { "aria-label": infoLabel, size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(InfoOutlinedIcon__default.default, { fontSize: "small" }) }) }) : null,
229
+ formula ? /* @__PURE__ */ jsxRuntime.jsx(LightTooltip, { title: formula, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(SharedIconButton, { "aria-label": formulaLabel, size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(FunctionsIcon__default.default, { fontSize: "small" }) }) }) : null
155
230
  ] });
156
231
  }
157
232
  function CustomGridTableWrapper({ children, sx, ...props }) {