@apia/charts 4.0.42 → 4.0.43
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/index.d.ts +1 -1
- package/dist/index.js +32 -16
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.d.ts
CHANGED
|
@@ -212,7 +212,7 @@ type TChartData = {
|
|
|
212
212
|
chartId?: string;
|
|
213
213
|
aspectRatio?: number;
|
|
214
214
|
};
|
|
215
|
-
declare const ChartComponent: (props: TChartData & {
|
|
215
|
+
declare const ChartComponent: (props: (TChartData | TChartData$1) & {
|
|
216
216
|
/**
|
|
217
217
|
* This property allows to limit the amount of references shown beside the graph.
|
|
218
218
|
* @default 10
|
package/dist/index.js
CHANGED
|
@@ -1320,23 +1320,39 @@ Chart$1.register(
|
|
|
1320
1320
|
ArcElement,
|
|
1321
1321
|
LineController
|
|
1322
1322
|
);
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
{
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
indexAxis: "x",
|
|
1329
|
-
showLegend: true,
|
|
1330
|
-
showValues: true,
|
|
1331
|
-
showXAxisValues: true,
|
|
1332
|
-
showYAxisValues: true,
|
|
1333
|
-
showTable: true,
|
|
1334
|
-
xAxisTitle: "",
|
|
1335
|
-
yAxisTitle: "",
|
|
1336
|
-
aspectRatio: 2.5
|
|
1323
|
+
function normalizeChartData(raw) {
|
|
1324
|
+
return {
|
|
1325
|
+
chartData: {
|
|
1326
|
+
datasets: raw.datasets,
|
|
1327
|
+
labels: raw.labels
|
|
1337
1328
|
},
|
|
1338
|
-
|
|
1339
|
-
|
|
1329
|
+
type: raw.type,
|
|
1330
|
+
indexAxis: raw.indexAxis,
|
|
1331
|
+
xAxisTitle: raw.xAxisTitle ?? "",
|
|
1332
|
+
yAxisTitle: raw.yAxisTitle ?? "",
|
|
1333
|
+
aspectRatio: raw.aspectRatio,
|
|
1334
|
+
showLegend: raw.showLegend === "true",
|
|
1335
|
+
showValues: raw.showValues === "true",
|
|
1336
|
+
showXAxisValues: raw.showXAxisValues === "true",
|
|
1337
|
+
showYAxisValues: raw.showYAxisValues === "true"
|
|
1338
|
+
};
|
|
1339
|
+
}
|
|
1340
|
+
const ChartComponent = (props) => {
|
|
1341
|
+
const defaultProps = {
|
|
1342
|
+
chartData: { datasets: [{ data: [{ x: 0, y: 0 }] }] },
|
|
1343
|
+
type: "bar",
|
|
1344
|
+
indexAxis: "x",
|
|
1345
|
+
showLegend: true,
|
|
1346
|
+
showValues: true,
|
|
1347
|
+
showXAxisValues: true,
|
|
1348
|
+
showYAxisValues: true,
|
|
1349
|
+
showTable: true,
|
|
1350
|
+
xAxisTitle: "",
|
|
1351
|
+
yAxisTitle: "",
|
|
1352
|
+
aspectRatio: 2.5
|
|
1353
|
+
};
|
|
1354
|
+
const normalized = "datasets" in props ? normalizeChartData(props) : props;
|
|
1355
|
+
const actualProps = { ...defaultProps, ...normalized };
|
|
1340
1356
|
const { theme } = useThemeUI();
|
|
1341
1357
|
const chartRef = useRef(null);
|
|
1342
1358
|
if (!theme.layout)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/widgets/speedMeter/SpeedMeter.tsx","../src/widgets/oxford/Oxford.tsx","../src/widgets/counter/Counter.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/thermometer/util.ts","../src/widgets/custom/util.ts","../src/widgets/custom/useCustomWidget.ts","../src/widgets/thermometer/Thermometer.tsx","../src/widgets/scale/Scale.tsx","../src/widgets/ring/Ring.tsx","../src/widgets/WidgetComponent.tsx","../src/charts/chartJsRenderer/ChartComponent.tsx","../src/pivot/PivotTable.tsx","../src/charts/utils/parseChartData.ts"],"sourcesContent":["import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetSpeedMeterProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 30;\r\nconst END_ANGLE = 330;\r\n\r\nexport const SpeedMeter = ({\r\n backgroundColor,\r\n colorRanges,\r\n currentValue,\r\n currentValueColor,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetSpeedMeterProps>) => {\r\n const allTicks = false;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: allTicks\r\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\r\n : valueRanges[valueRanges.length - 1] / 10 + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex(\r\n (range) => noNaN(value) <= noNaN(range),\r\n );\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n }\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 0,\r\n endAngle: 360,\r\n })}\r\n stroke=\"gray\"\r\n fill={backgroundColor ?? 'none'}\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n />\r\n {valueRanges.map((innerValue, i) => {\r\n const valueToAngle = (value: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n const angle =\r\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <g key={`${innerValue}_${i}`}>\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -50,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -55,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n key={`${innerValue}_${i}`}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n </g>\r\n );\r\n })}\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n />\r\n {showText && (\r\n <text\r\n fill=\"black\"\r\n {...gauge.getLabelProps({ angle, offset: 20 })}\r\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n y={diameter / 2}\r\n fill={currentValueColor}\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport tinycolor from 'tinycolor2';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetOxfordProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 45;\r\nconst END_ANGLE = 315;\r\n\r\nexport const Oxford = ({\r\n backgroundColor,\r\n colorRanges,\r\n currentValue,\r\n currentValueColor,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetOxfordProps>) => {\r\n const allTicks = true;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 10 + 1,\r\n diameter: diameter,\r\n });\r\n const gauge2 = useGauge({\r\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex(\r\n (range) => noNaN(value) <= noNaN(range),\r\n );\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n }\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 0,\r\n endAngle: 360,\r\n })}\r\n stroke=\"black\"\r\n opacity=\"1\"\r\n fill={\r\n backgroundColor !== '' && backgroundColor !== undefined\r\n ? tinycolor(backgroundColor)\r\n .setAlpha(0.5)\r\n .toPercentageRgbString()\r\n : 'none'\r\n }\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n {valueRanges.map((innerValue, i) => {\r\n if (!valueRanges[i + 1]) {\r\n return null;\r\n }\r\n\r\n const valueToAngle = (value: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n const angle =\r\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <g key={`${innerValue}_${i}`}>\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={'black'}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"square\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -20,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.1\"\r\n fill=\"none\"\r\n strokeLinecap=\"butt\"\r\n strokeWidth={75}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -55,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n key={`${innerValue}_${i}`}\r\n stroke={getColor(innerValue) || '#999'}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"butt\"\r\n strokeWidth={10}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </g>\r\n );\r\n })}\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle, i) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n {showText && (\r\n <text\r\n fill={'black'}\r\n {...gauge.getLabelProps({\r\n angle,\r\n offset: 20,\r\n })}\r\n style={{\r\n fontSize: `${scaleValuesSize ?? 30}px`,\r\n }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n {allTicks &&\r\n gauge2.ticks.map((angle, i) => {\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={2}\r\n {...gauge.getTickProps({\r\n angle,\r\n length: 3,\r\n })}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n alignmentBaseline=\"text-before-edge\"\r\n y={diameter / 5}\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n fill={currentValueColor}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetCounterProps } from '../types';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const Counter = ({\r\n addBorder = false,\r\n colorRanges,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n maxValue,\r\n minValue,\r\n currentValueFontSize,\r\n unit: outerUnit,\r\n valueDecimals,\r\n valueType,\r\n width,\r\n unitPosition,\r\n}: TApiaWidgetBaseProps<TApiaWidgetCounterProps>) => {\r\n const unit = outerUnit?.split(',,')[1];\r\n const [value, setValue] = useState(noNaN(currentValue) ?? 0);\r\n const actualWidth = ((currentValueFontSize as number) ?? 80) * 3 * 0.8;\r\n const diameter = actualWidth;\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex(\r\n (range) => noNaN(value) <= noNaN(range),\r\n );\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = noNaN(currentValue) - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n let factor = Math.pow(10, noNaN(valueDecimals));\r\n if (valueType === 0 || valueType === '0') {\r\n factor = 1;\r\n }\r\n setValue(Math.round(step * factor) / factor);\r\n },\r\n () => {\r\n lastCurrentValue.current = noNaN(currentValue);\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [noNaN(currentValue)]);\r\n\r\n return (\r\n <Box sx={{ position: 'relative' }} className=\"widgetContainer__Counter\">\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={undefined}\r\n >\r\n <g id=\"arcs\">\r\n {addBorder && `${value}`.length < 4 && (\r\n <ellipse\r\n cx={Math.max(width, height) / 2}\r\n cy={Math.max(width, height) / 2}\r\n rx={Math.max(width, height) / 5}\r\n ry={Math.max(width, height) / 5}\r\n stroke=\"gray\"\r\n opacity=\"0.2\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n )}\r\n </g>\r\n </svg>\r\n <svg\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n <text\r\n x={Math.max(width, height) / 2}\r\n y={Math.max(width, height) / 2 - 5}\r\n textAnchor=\"middle\"\r\n style={{\r\n fontSize: `${currentValueFontSize ?? 80}px`,\r\n transition: 'fill 0.5s',\r\n }}\r\n alignmentBaseline=\"central\"\r\n fill={getColor(value)}\r\n >\r\n {unitPosition === 'START' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {unitPosition === 'END' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n </text>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetTLightProps } from '../types';\r\nimport { useCallback, useRef, useState, useEffect } from 'react';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const TLight = ({\r\n addBorder = false,\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n unit: outerUnit,\r\n currentValueColor,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n unitPosition,\r\n}: TApiaWidgetBaseProps<TApiaWidgetTLightProps>) => {\r\n const unit = outerUnit?.split(',,')[1];\r\n const [value, setValue] = useState(noNaN(currentValue));\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n\r\n const hasRendered = useRef(false);\r\n\r\n const onRenderSvg = useCallback(\r\n (el: SVGSVGElement) => {\r\n if (!el || hasRendered.current) return;\r\n\r\n hasRendered.current = true;\r\n\r\n const svgElement = el;\r\n const pathElement = el.querySelector('#TLight_arcs');\r\n\r\n if (!(svgElement && pathElement)) {\r\n return;\r\n }\r\n\r\n const pathBox = pathElement.getBoundingClientRect();\r\n const svgBox = svgElement.getBoundingClientRect();\r\n const pathX = pathBox.x - svgBox.x;\r\n const pathY = pathBox.y - svgBox.y;\r\n\r\n const viewBox = `${pathX - diameter / 2} ${\r\n pathY - diameter / 2\r\n } ${diameter} ${diameter}`;\r\n\r\n svgElement.setAttribute('viewBox', viewBox);\r\n\r\n svgElement.style.visibility = 'visible';\r\n },\r\n [diameter],\r\n );\r\n\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = noNaN(currentValue) - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n\r\n let factor = Math.pow(10, noNaN(valueDecimals));\r\n if (valueType === 0 || valueType === '0') {\r\n factor = 1;\r\n }\r\n setValue(Math.round(step * factor) / factor);\r\n },\r\n () => {\r\n lastCurrentValue.current = noNaN(currentValue);\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [noNaN(currentValue)]);\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n style={{ visibility: 'hidden' }}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n id=\"TLight_svg\"\r\n ref={onRenderSvg}\r\n viewBox={`-${diameter / 2} -${diameter / 2} ${diameter} ${diameter}`}\r\n >\r\n <g id=\"TLight_arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n fill={getColor(value)}\r\n id=\"TLight_path\"\r\n style={{ transition: 'fill 0.3s' }}\r\n />\r\n {addBorder && (\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -2.5,\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke={'black'}\r\n fill={'transparent'}\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n id=\"TLight_path\"\r\n />\r\n )}\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 100}pt` }}\r\n alignmentBaseline=\"central\"\r\n fill={currentValueColor}\r\n >\r\n {unitPosition &&\r\n unitPosition === 'START' &&\r\n !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {!['', undefined, null].includes(unit) ? unit : ''}\r\n {unitPosition &&\r\n unitPosition === 'END' &&\r\n !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { noNaN } from '@apia/util';\r\n\r\nconst colorGetter = (\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n innerValue: number,\r\n) => {\r\n let color = '';\r\n valueRanges.forEach((value, index) => {\r\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\r\n color = colorRanges[index - 1];\r\n }\r\n });\r\n\r\n return color;\r\n};\r\n\r\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\r\n const index = valueRanges.findIndex((range) => noNaN(value) <= noNaN(range));\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n}\r\n\r\nfunction getInnerColor(\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n value: number,\r\n) {\r\n const index = valueRanges.findIndex((range, i) => {\r\n if (i === valueRanges.length - 1) {\r\n return noNaN(value) <= noNaN(range);\r\n }\r\n return noNaN(value) < noNaN(range);\r\n });\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n}\r\n\r\nconst valueToTickPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n\r\n return Math.round(percentage);\r\n};\r\n\r\nconst valueToPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n const test = (percentage * 69) / 100;\r\n\r\n return Math.round(test);\r\n};\r\n\r\nexport {\r\n colorGetter,\r\n getColor,\r\n getInnerColor,\r\n valueToPercent,\r\n valueToTickPercent,\r\n};\r\n","const colorGetter = (\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n innerValue: number,\r\n) => {\r\n let color = '';\r\n valueRanges.forEach((value, index) => {\r\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\r\n color = colorRanges[index - 1];\r\n }\r\n });\r\n return color;\r\n};\r\n\r\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n}\r\n\r\nfunction getInnerColor(\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n value: number,\r\n) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n}\r\n\r\nconst valueToTickPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n\r\n return Math.round(percentage);\r\n};\r\n\r\nconst valueToPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n const test = (percentage * 69) / 100;\r\n\r\n return Math.round(test);\r\n};\r\n\r\nexport {\r\n colorGetter,\r\n getColor,\r\n getInnerColor,\r\n valueToPercent,\r\n valueToTickPercent,\r\n};\r\n","import { noNaN } from '@apia/util';\r\nimport { useState, useRef, useCallback } from 'react';\r\nimport { valueToPercent } from './util';\r\n\r\nexport const useCustomWidget = ({\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n uId,\r\n}: {\r\n maxValue: number;\r\n minValue: number;\r\n currentValue: number;\r\n uId: string;\r\n}) => {\r\n const baseValue = minValue;\r\n const domainMax = maxValue;\r\n\r\n const [yDifference, setYDifference] = useState(0);\r\n const svgRect = useRef<DOMRect>({} as DOMRect);\r\n const pathRect = useRef<DOMRect>({} as DOMRect);\r\n\r\n const onRenderRect = useCallback(\r\n (el: SVGRectElement) => {\r\n if (!el) return;\r\n\r\n const svgElement = el.closest('svg');\r\n const pathElement = svgElement?.querySelector(`#path_${uId}`);\r\n\r\n if (!svgElement) throw new Error('No svg');\r\n if (!pathElement) throw new Error('No path');\r\n\r\n const svgBox = svgElement.getBoundingClientRect();\r\n const pathBox = pathElement.getBoundingClientRect();\r\n\r\n const pathY = pathBox.y - svgBox.y;\r\n\r\n svgRect.current = svgBox;\r\n pathRect.current = pathBox;\r\n setYDifference(pathY);\r\n },\r\n [uId],\r\n );\r\n\r\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\r\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\r\n const pathWidth = noNaN(pathRect.current.width);\r\n const pathHeight = noNaN(pathRect.current.height);\r\n\r\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\r\n\r\n const rectProps: React.SVGProps<SVGRectElement> = {\r\n y: noNaN(\r\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\r\n yDifference,\r\n ),\r\n x: pathX,\r\n width: pathWidth,\r\n height: pathHeight,\r\n style: {\r\n visibility: 'visible',\r\n transition: 'y 0.5s, fill 0.5s',\r\n },\r\n };\r\n\r\n return {\r\n rectRef: onRenderRect,\r\n svgViewBox: viewBox,\r\n rectProps,\r\n pathX,\r\n pathY,\r\n pathRect,\r\n svgRect,\r\n };\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetThermometerProps } from '../types';\r\nimport {\r\n valueToTickPercent,\r\n colorGetter,\r\n getInnerColor,\r\n getColor,\r\n} from './util';\r\nimport { noNaN } from '@apia/util';\r\nimport { useCustomWidget } from '../custom/useCustomWidget';\r\nimport { uniqueId } from 'lodash-es';\r\nimport { useMemo } from 'react';\r\n// Usar un segundo svg para los textos\r\nexport const Thermometer = ({\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetThermometerProps>) => {\r\n const value = currentValue;\r\n const baseValue = noNaN(minValue) ?? valueRanges[0];\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const pathDValue = `m 179.6875,717.73633 c -0.45013,0 -0.8125,0.36237 -0.8125,0.8125 l 0,8.46289 a 2.3125,2.3125 0 0 0 -1.5,2.16211 2.3125,2.3125 0 0 0 2.3125,2.3125 2.3125,2.3125 0 0 0 2.3125,-2.3125 2.3125,2.3125 0 0 0 -1.5,-2.16211 l 0,-8.46289 c 0,-0.45013 -0.36237,-0.8125 -0.8125,-0.8125 z`;\r\n const uId = useMemo(() => uniqueId(), []);\r\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\r\n currentValue: value,\r\n maxValue: domainMax,\r\n minValue: baseValue,\r\n uId,\r\n });\r\n\r\n const boxValues = {\r\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\r\n width: noNaN(Math.max(width, height)),\r\n x: pathX,\r\n y: pathY,\r\n };\r\n\r\n const tickArray = valueRanges.map((val, i) => {\r\n return {\r\n height:\r\n boxValues.height *\r\n (valueToTickPercent(domainMax, baseValue, val) / 100),\r\n color: !valueRanges[i + 1]\r\n ? 'black'\r\n : colorGetter(valueRanges, colorRanges, val),\r\n value: val,\r\n };\r\n });\r\n\r\n const cosmeticTicksArray = new Array(8).fill(0).map((_, i) => {\r\n const separation =\r\n (valueRanges[valueRanges.length - 1] - valueRanges[0]) / 8;\r\n return {\r\n value: i,\r\n color: 'black',\r\n height:\r\n boxValues.height *\r\n (valueToTickPercent(domainMax, baseValue, separation * i) / 100),\r\n };\r\n });\r\n\r\n return (\r\n <Box sx={{ position: 'relative' }}>\r\n <svg\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n id={`svg_${uId}`}\r\n viewBox={svgViewBox}\r\n style={{ position: 'relative', top: '10px' }}\r\n >\r\n <clipPath id=\"clipPath\">\r\n <path d={pathDValue} />\r\n </clipPath>\r\n <mask id=\"myMask\">\r\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\r\n </mask>\r\n\r\n <path d={pathDValue} id={`path_${uId}`} fill=\"white\" />\r\n\r\n <rect\r\n fill={getInnerColor(valueRanges, colorRanges, value)}\r\n id={`rect_${uId}`}\r\n mask=\"url(#myMask)\"\r\n ref={rectRef}\r\n {...rectProps}\r\n />\r\n\r\n <path\r\n d={pathDValue}\r\n id=\"path\"\r\n fill=\"none\"\r\n stroke=\"white\"\r\n strokeWidth={10}\r\n clipPath=\"url(#clipPath)\"\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n clipPath=\"url(#clipPath)\"\r\n d={pathDValue}\r\n id=\"path\"\r\n fill=\"none\"\r\n stroke=\"black\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </svg>\r\n <svg\r\n height={Math.max(width, height) + 10}\r\n width={Math.max(width, height)}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n {boxValues.x && (\r\n <g>\r\n <text\r\n x={Math.max(width, height) / 2}\r\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\r\n style={{\r\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\r\n fontWeight: 900,\r\n }}\r\n textAnchor=\"middle\"\r\n alignmentBaseline={'central'}\r\n vectorEffect={'non-scaling-stroke'}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n )}\r\n {cosmeticTicksArray.map((tick, i) => {\r\n if (i === 0) {\r\n return null;\r\n }\r\n return (\r\n <g key={i}>\r\n <rect\r\n x={Math.max(width, height) / 2}\r\n y={tick.height + 10}\r\n width={'15px'}\r\n height={'1px'}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={'black'}\r\n />\r\n </g>\r\n );\r\n })}\r\n {tickArray.map((tick, i) => {\r\n return (\r\n <g key={i}>\r\n {tickArray[i + 1] && i > 0 && (\r\n <>\r\n <rect\r\n x={Math.max(width, height) / 2 - 15}\r\n y={tick.height + 7}\r\n width={'30px'}\r\n height={'3px'}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={getColor(valueRanges, colorRanges, tick.value)}\r\n />\r\n <rect\r\n x={Math.max(width, height) / 2 - 15}\r\n y={tick.height - 10}\r\n width={'30px'}\r\n height={'20px'}\r\n opacity={0.1}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={getColor(valueRanges, colorRanges, tick.value)}\r\n />\r\n </>\r\n )}\r\n {i > 0 && (\r\n <text\r\n x={Math.max(width, height) / 2 + 14}\r\n y={tickArray[i + 1] ? tick.height + 5 : tick.height + 19}\r\n textAnchor=\"end\"\r\n alignmentBaseline={\r\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\r\n }\r\n style={{\r\n fontSize: '12px',\r\n fontWeight: 600,\r\n }}\r\n >\r\n {noNaN(tick.value).toFixed(0)}\r\n </text>\r\n )}\r\n </g>\r\n );\r\n })}\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetScaleProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 90;\r\nconst END_ANGLE = 270;\r\n\r\nexport const Scale = ({\r\n currentValue,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetScaleProps>) => {\r\n const allTicks = false;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 10 + 1,\r\n diameter: diameter,\r\n });\r\n const gauge2 = useGauge({\r\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter / 2 + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 90,\r\n endAngle: 270,\r\n })}\r\n stroke=\"gray\"\r\n opacity=\"0.2\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n />\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n />\r\n {showText && (\r\n <text\r\n fill=\"black\"\r\n {...gauge.getLabelProps({ angle, offset: 20 })}\r\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n {allTicks &&\r\n gauge2.ticks.map((angle, i) => {\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={2}\r\n {...gauge.getTickProps({\r\n angle,\r\n length: 3,\r\n })}\r\n />\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n y={-diameter / 4 + 20}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetRingProps } from '../types';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const Ring = ({\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n ringEmptyColor,\r\n ringWidth: incommingRingWidth,\r\n unit: outerUnit,\r\n width,\r\n currentValueColor,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n unitPosition,\r\n}: TApiaWidgetBaseProps<TApiaWidgetRingProps>) => {\r\n const unit = outerUnit?.split(',,')[1];\r\n const ringWidth = (incommingRingWidth - 0.05) * 150;\r\n const [value, setValue] = useState(noNaN(currentValue));\r\n const diameter = Math.min(height, width);\r\n const offset = 20;\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = noNaN(currentValue) - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n let factor = Math.pow(10, noNaN(valueDecimals));\r\n if (valueType === 0 || valueType === '0') {\r\n factor = 1;\r\n }\r\n setValue(Math.round(step * factor) / factor);\r\n },\r\n () => {\r\n lastCurrentValue.current = noNaN(currentValue);\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentValue]);\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n\r\n const valueToAngle = (value: number) => {\r\n const angleRange = 360;\r\n const valueRange = domainMax - domainMin;\r\n const angle = ((value - domainMin) / valueRange) * angleRange;\r\n\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset:\r\n offset -\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)),\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke={ringEmptyColor ?? 'lightgrey'}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={\r\n (noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)\r\n }\r\n />\r\n\r\n <path\r\n {...gauge.getArcProps({\r\n offset:\r\n offset -\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)),\r\n startAngle: 180,\r\n endAngle:\r\n valueToAngle(value) === 360\r\n ? 179 + valueToAngle(value)\r\n : 180 + valueToAngle(value),\r\n })}\r\n stroke={`#${tinycolor(getColor(value)).saturate(20).brighten(20).toHex()}`}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"inherit\"\r\n strokeWidth={\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)) + 6\r\n }\r\n style={{\r\n transition: 'stroke 0.5s',\r\n }}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset:\r\n offset -\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)),\r\n startAngle: 180,\r\n endAngle:\r\n valueToAngle(value) === 360\r\n ? 179 + valueToAngle(value)\r\n : 180 + valueToAngle(value),\r\n })}\r\n stroke={getColor(value)}\r\n opacity=\"1\"\r\n fill=\"none\"\r\n strokeLinecap=\"inherit\"\r\n strokeWidth={\r\n (noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)\r\n }\r\n style={{\r\n transition: 'stroke 0.5s',\r\n }}\r\n />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{\r\n fontSize: `${currentValueFontSize ?? 30}px`,\r\n fontWeight: '900',\r\n }}\r\n alignmentBaseline=\"central\"\r\n fill={currentValueColor}\r\n >\r\n {unitPosition === 'START' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {unitPosition === 'END' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { arrayOrArray, getIndex } from '@apia/util';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetProps, TWidgetZone } from './types';\r\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\r\nimport { Oxford } from './oxford/Oxford';\r\nimport { Counter } from './counter/Counter';\r\nimport { TLight } from './tLight/TLight';\r\nimport { Thermometer } from './thermometer/Thermometer';\r\nimport { Scale } from './scale/Scale';\r\nimport { Ring } from './ring/Ring';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nexport const WidgetComponent = ({\r\n data,\r\n type,\r\n}: {\r\n data: TApiaWidgetBaseProps<any>;\r\n type:\r\n | 'SpeedMeter'\r\n | 'Oxford'\r\n | 'Counter'\r\n | 'TLight'\r\n | 'Thermometer'\r\n | 'Scale'\r\n | 'Ring';\r\n}) => {\r\n const CurrentWidget: TApiaWidgetBaseProps<any> = getIndex(\r\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\r\n [\r\n type === 'SpeedMeter',\r\n type === 'Oxford',\r\n type === 'Counter',\r\n type === 'TLight',\r\n type === 'Thermometer',\r\n type === 'Scale',\r\n type === 'Ring',\r\n ],\r\n 0,\r\n );\r\n const wigetTypeData: TApiaWidgetProps = data as TApiaWidgetProps & {\r\n zones: { Zone: TWidgetZone[] };\r\n };\r\n\r\n const widgetData = wigetTypeData as TApiaWidgetProps;\r\n let valueRanges: number[] = [];\r\n let colorRanges: string[] = [];\r\n\r\n if (data.zones && arrayOrArray(data.zones.Zone).length > 0) {\r\n valueRanges = Array.from(\r\n new Set(\r\n arrayOrArray(data.zones.Zone)\r\n .map((zone) => {\r\n return [Number(zone.minimum), Number(zone.maximum)];\r\n })\r\n .flat()\r\n .sort((a, b) => a - b),\r\n ),\r\n );\r\n\r\n colorRanges = arrayOrArray(data.zones.Zone)\r\n .map((zone) => {\r\n return tinycolor(zone.color)\r\n .setAlpha(1 - (255 - zone.transparency) / 255)\r\n .toPercentageRgbString();\r\n })\r\n .flat();\r\n } else {\r\n valueRanges = widgetData.valueRanges;\r\n colorRanges = widgetData.colorRanges;\r\n }\r\n\r\n widgetData.colorRanges = colorRanges;\r\n widgetData.valueRanges = valueRanges;\r\n return <CurrentWidget {...widgetData} />;\r\n};\r\n","import { arrayOrArray, getValueByPath } from '@apia/util';\r\nimport {\r\n ChartData,\r\n ChartOptions,\r\n Chart as ChartJS,\r\n CategoryScale,\r\n LinearScale,\r\n PointElement,\r\n LineElement,\r\n Title,\r\n Tooltip,\r\n Legend,\r\n BarController,\r\n BarElement,\r\n PieController,\r\n ArcElement,\r\n ChartTypeRegistry,\r\n TooltipItem,\r\n LineController,\r\n} from 'chart.js';\r\nimport { useMemo, useRef } from 'react';\r\nimport { Chart } from 'react-chartjs-2';\r\nimport { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\r\nimport { IChartStylesSchemes } from '../types';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nChartJS.register(\r\n CategoryScale,\r\n LinearScale,\r\n PointElement,\r\n LineElement,\r\n Title,\r\n Tooltip,\r\n Legend,\r\n BarController,\r\n BarElement,\r\n PieController,\r\n ArcElement,\r\n LineController,\r\n);\r\n\r\nexport type TChartData = {\r\n chartData: ChartData;\r\n showLegend?: boolean;\r\n showValues?: boolean;\r\n showXAxisValues?: boolean;\r\n showYAxisValues?: boolean;\r\n showTable?: boolean;\r\n type:\r\n | 'bar'\r\n | 'line'\r\n | 'scatter'\r\n | 'bubble'\r\n | 'pie'\r\n | 'doughnut'\r\n | 'polarArea'\r\n | 'radar'\r\n | 'waterfall';\r\n indexAxis?: 'x' | 'y';\r\n xAxisTitle?: string;\r\n yAxisTitle?: string;\r\n id?: string;\r\n chartId?: string;\r\n aspectRatio?: number;\r\n};\r\n\r\nexport type TDataset = {\r\n backgroundColor?: string | string[];\r\n borderColor?: string | string[];\r\n borderWidth?: number;\r\n label?: string;\r\n data: number[] | [number, number][];\r\n}[];\r\n\r\nexport const ChartComponent = (\r\n props: TChartData & {\r\n /**\r\n * This property allows to limit the amount of references shown beside the graph.\r\n * @default 10\r\n */\r\n referencesAmount?: number;\r\n },\r\n) => {\r\n const actualProps: TChartData = Object.assign(\r\n {\r\n chartData: { datasets: [{ data: [{ x: 0, y: 0 }] }] },\r\n type: 'bar',\r\n indexAxis: 'x',\r\n showLegend: true,\r\n showValues: true,\r\n showXAxisValues: true,\r\n showYAxisValues: true,\r\n showTable: true,\r\n xAxisTitle: '',\r\n yAxisTitle: '',\r\n aspectRatio: 2.5,\r\n },\r\n props,\r\n );\r\n const { theme } = useThemeUI();\r\n const chartRef = useRef<ChartJS>(null);\r\n\r\n if (!theme.layout)\r\n console.error('The layout property is missing in the current theme');\r\n\r\n const data: ChartData = useMemo(() => {\r\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\r\n ?.charts ?? {}) as IChartStylesSchemes;\r\n\r\n return {\r\n datasets: (actualProps.type === 'waterfall'\r\n ? arrayOrArray(actualProps.chartData.datasets).map((dataset) => {\r\n let sum = 0;\r\n const newData = dataset.data.map<[number, number]>((dataValue) => {\r\n if (typeof dataValue === 'number') {\r\n const currentValue = sum;\r\n sum += dataValue;\r\n return [currentValue, sum] as [number, number];\r\n } else {\r\n return dataValue as [number, number];\r\n }\r\n });\r\n\r\n return {\r\n ...dataset,\r\n data: newData,\r\n };\r\n })\r\n : actualProps.chartData.datasets\r\n ).map((dataset, datasetIndex) => {\r\n const isSingle =\r\n arrayOrArray(actualProps.chartData.datasets).every(\r\n (dataset) => arrayOrArray(dataset.data).length === 1,\r\n ) || actualProps.type === 'pie';\r\n\r\n const backgroundColor = (\r\n dataset.backgroundColor as string[] | string[][]\r\n ).map((actualColor, i) => {\r\n let schemaArray: string[] = [];\r\n if (typeof actualColor === 'string') {\r\n const color = actualColor.toLowerCase();\r\n if (color in charts) {\r\n const currentBackgroundStylescheme: {\r\n schema: Record<string, string>;\r\n } = {\r\n schema: getValueByPath(\r\n theme.colors as ColorModesScale,\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n charts[color.toLowerCase()]?.schema as string,\r\n ) as Record<string, string>,\r\n };\r\n\r\n if (\r\n typeof currentBackgroundStylescheme.schema === 'object' &&\r\n currentBackgroundStylescheme.schema\r\n ) {\r\n if (isSingle) {\r\n if (actualProps.type === 'pie') {\r\n schemaArray = Object.values(\r\n currentBackgroundStylescheme.schema,\r\n ).map((varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n });\r\n } else {\r\n schemaArray = new Array<string>(6)\r\n .fill(\r\n Object.values(currentBackgroundStylescheme.schema)[\r\n datasetIndex % 6\r\n ],\r\n )\r\n .map((varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n });\r\n }\r\n } else {\r\n schemaArray = new Array<string>(6).fill(\r\n Object.values(currentBackgroundStylescheme.schema).map(\r\n (varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n },\r\n )[datasetIndex % 6],\r\n );\r\n }\r\n }\r\n } else {\r\n schemaArray = [color, color, color, color, color, color];\r\n }\r\n } else {\r\n return actualColor[datasetIndex % actualColor.length];\r\n }\r\n\r\n return schemaArray[i % 6];\r\n });\r\n\r\n const hoverBackgroundColor = backgroundColor.map((c) => {\r\n const color = tinycolor(c);\r\n\r\n return (\r\n color.isDark() ? color.lighten(30) : color.darken(30)\r\n ).toHexString();\r\n });\r\n\r\n return {\r\n ...dataset,\r\n hoverBackgroundColor,\r\n backgroundColor,\r\n borderColor: (dataset.borderColor as string[] | string[][]).map(\r\n (color, i) => {\r\n let schemaBorderArray: string[] = [];\r\n if (typeof color === 'string') {\r\n if (color in charts) {\r\n const currentBorderStylescheme: {\r\n schema: Record<string, string>;\r\n } = {\r\n schema: getValueByPath(\r\n theme.colors as ColorModesScale,\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n charts[color.toLowerCase()]?.schema as string,\r\n ) as Record<string, string>,\r\n };\r\n\r\n if (\r\n typeof currentBorderStylescheme.schema === 'object' &&\r\n currentBorderStylescheme.schema\r\n ) {\r\n schemaBorderArray = Object.values(\r\n currentBorderStylescheme.schema,\r\n ).map((varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n });\r\n }\r\n } else {\r\n schemaBorderArray = [\r\n color,\r\n color,\r\n color,\r\n color,\r\n color,\r\n color,\r\n ];\r\n }\r\n } else {\r\n return color[datasetIndex % color.length];\r\n }\r\n return schemaBorderArray[i % 6];\r\n },\r\n ),\r\n };\r\n }),\r\n labels: actualProps.chartData.labels,\r\n };\r\n }, [\r\n actualProps.chartData.datasets,\r\n actualProps.chartData.labels,\r\n actualProps.type,\r\n theme.colors,\r\n theme.layout,\r\n ]);\r\n\r\n const options: ChartOptions = useMemo(() => {\r\n return {\r\n plugins: {\r\n legend: {\r\n position: 'right',\r\n display: actualProps.showLegend,\r\n onHover: (_, legendItem, __) => {\r\n const chart = chartRef.current;\r\n if (chart) {\r\n const activeElement = new Array(\r\n actualProps.type === 'pie'\r\n ? actualProps.chartData.datasets.length\r\n : actualProps.chartData.datasets[0].data.length,\r\n )\r\n .fill(0)\r\n .map((_, i) => {\r\n return {\r\n datasetIndex:\r\n actualProps.type === 'pie' ? i : legendItem.datasetIndex!,\r\n index:\r\n actualProps.type === 'pie' ? (legendItem.index ?? i) : i,\r\n };\r\n });\r\n\r\n chart.setActiveElements([...activeElement]); // To show thick border\r\n chart.tooltip?.setActiveElements([...activeElement], {\r\n x: 0,\r\n y: 0,\r\n });\r\n chart.update();\r\n }\r\n },\r\n labels: {\r\n filter(item, _) {\r\n if (actualProps.type === 'pie') {\r\n return (item.index ?? 0) < (props.referencesAmount ?? 10);\r\n } else {\r\n return (\r\n (item.datasetIndex ?? 0) < (props.referencesAmount ?? 10)\r\n );\r\n }\r\n },\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(tooltipItem: TooltipItem<keyof ChartTypeRegistry>) {\r\n const XLabel = tooltipItem.dataset.label ?? '';\r\n let YValue = tooltipItem.formattedValue;\r\n\r\n if (isNaN(parseFloat(YValue))) {\r\n const arrayValue: [number, number] = tooltipItem.raw as [\r\n number,\r\n number,\r\n ];\r\n const realValue = arrayValue[1] - arrayValue[0];\r\n YValue = `${realValue}`;\r\n }\r\n let finalString = '';\r\n if (actualProps.showLegend || actualProps.type === 'pie') {\r\n finalString += XLabel;\r\n if (actualProps.showValues) {\r\n finalString += ': ' + YValue;\r\n }\r\n } else if (actualProps.showValues) {\r\n finalString += YValue;\r\n }\r\n return finalString;\r\n },\r\n title(tooltipItems: TooltipItem<keyof ChartTypeRegistry>[]) {\r\n if (\r\n (actualProps.type !== 'pie' &&\r\n !actualProps.showXAxisValues &&\r\n actualProps.indexAxis === 'x') ||\r\n (actualProps.type !== 'pie' &&\r\n !actualProps.showYAxisValues &&\r\n actualProps.indexAxis === 'y') ||\r\n (actualProps.type === 'pie' && !actualProps.showLegend)\r\n ) {\r\n return '';\r\n }\r\n return tooltipItems[0].label;\r\n },\r\n },\r\n enabled:\r\n (actualProps.indexAxis === 'y'\r\n ? actualProps.showYAxisValues\r\n : actualProps.showXAxisValues) ||\r\n actualProps.showValues ||\r\n actualProps.showLegend,\r\n },\r\n },\r\n aspectRatio: Math.max(actualProps.aspectRatio ?? 1, 2),\r\n indexAxis: actualProps.indexAxis,\r\n scales: {\r\n x: {\r\n display: actualProps.type !== 'pie',\r\n title: {\r\n display: actualProps.showXAxisValues,\r\n text:\r\n actualProps.indexAxis === 'y'\r\n ? actualProps.yAxisTitle\r\n : actualProps.xAxisTitle,\r\n },\r\n ticks: {\r\n display: !!actualProps.showXAxisValues,\r\n },\r\n grid: {\r\n display: actualProps.showTable,\r\n },\r\n },\r\n y: {\r\n axis: (actualProps.indexAxis === 'y' ? 'x' : 'y') as 'x' | 'y' | 'r',\r\n display: actualProps.type !== 'pie',\r\n title: {\r\n display: actualProps.showYAxisValues,\r\n text:\r\n actualProps.indexAxis === 'y'\r\n ? actualProps.xAxisTitle\r\n : actualProps.yAxisTitle,\r\n },\r\n ticks: {\r\n display: !!actualProps.showYAxisValues,\r\n },\r\n grid: {\r\n display: actualProps.showTable,\r\n },\r\n },\r\n },\r\n };\r\n }, [\r\n actualProps.aspectRatio,\r\n actualProps.chartData.datasets,\r\n actualProps.indexAxis,\r\n actualProps.showLegend,\r\n actualProps.showTable,\r\n actualProps.showValues,\r\n actualProps.showXAxisValues,\r\n actualProps.showYAxisValues,\r\n actualProps.type,\r\n actualProps.xAxisTitle,\r\n actualProps.yAxisTitle,\r\n props.referencesAmount,\r\n ]);\r\n\r\n return (\r\n <Chart\r\n sx={{\r\n canvas: {\r\n width: '100%',\r\n height: 'auto',\r\n },\r\n }}\r\n id={actualProps.id ?? undefined}\r\n className={actualProps.chartId ?? ''}\r\n type={actualProps.type === 'waterfall' ? 'bar' : actualProps.type}\r\n options={options}\r\n data={data}\r\n ref={chartRef}\r\n />\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport {\r\n PivotTableUI,\r\n PivotTableUIProps,\r\n createPlotlyRenderers,\r\n TableRenderers,\r\n} from '@imc-trading/react-pivottable';\r\nimport 'react-pivottable/pivottable.css';\r\nimport { memo, useCallback, useEffect, useRef, useState } from 'react';\r\nimport { shallowEqual, usePrevious } from '@apia/util';\r\n\r\nfunction R(props: Omit<PivotTableUIProps, 'onChange'>) {\r\n const [Plot, setPlot] = useState<ReturnType<\r\n typeof createPlotlyRenderers\r\n > | null>(null);\r\n const prevProps = usePrevious(props);\r\n\r\n const handleChange = useCallback((s: PivotTableUIProps) => {\r\n setPivotState(() => {\r\n return s;\r\n });\r\n }, []);\r\n const [pivotState, setPivotState] = useState<PivotTableUIProps>({\r\n ...props,\r\n rows: props.rows?.filter((row) => row && row !== ''),\r\n cols: props.cols?.filter((col) => col && col !== ''),\r\n onChange: handleChange,\r\n });\r\n if (!shallowEqual(prevProps.current, props)) {\r\n setPivotState((s) => ({\r\n ...s,\r\n ...props,\r\n data: (props.data as string[][]).filter(\r\n (dataArr) => !dataArr.every((dat) => dat === ''),\r\n ),\r\n rows: props.rows?.filter((row) => row && row !== ''),\r\n cols: props.cols?.filter((col) => col && col !== ''),\r\n vals: (props.data as string[][])[0]?.some((item) => {\r\n const setVals = new Set(s.vals);\r\n return setVals.has(item);\r\n })\r\n ? s.vals\r\n : [],\r\n }));\r\n }\r\n const imported = useRef(false);\r\n useEffect(() => {\r\n if (imported.current) return;\r\n imported.current = true;\r\n\r\n import('react-plotly.js').then((Plot) => {\r\n setPlot(createPlotlyRenderers((Plot.default as any).default));\r\n });\r\n }, []);\r\n\r\n if (!Plot) return null;\r\n\r\n return (\r\n <PivotTableUI\r\n renderers={Object.assign({}, TableRenderers, Plot)}\r\n {...pivotState}\r\n menuLimit={Infinity}\r\n unusedOrientationCutoff={Infinity}\r\n />\r\n );\r\n}\r\n\r\nexport const PivotTableComponent = memo(\r\n (props: Omit<PivotTableUIProps, 'onChange'>) => {\r\n return (\r\n <Box\r\n onClick={(ev) => ev.stopPropagation()}\r\n onMouseDown={(ev) => ev.stopPropagation()}\r\n onDrag={(ev) => ev.stopPropagation()}\r\n onDragStart={(ev) => ev.stopPropagation()}\r\n >\r\n <R {...props} />\r\n </Box>\r\n );\r\n },\r\n);\r\n","import { arrayOrArray } from '@apia/util';\r\nimport {\r\n TChartData,\r\n TIncomingChartData,\r\n TIncomingChartDataset,\r\n} from '../types';\r\n\r\nexport const parseChartData = (chart: TIncomingChartData): TChartData => {\r\n const transformedChart: TChartData = {\r\n title: chart.title,\r\n type: chart.type as TChartData['type'], // Assuming chart type is compatible\r\n datasets: [],\r\n indexAxis: chart.indexAxis === 'x' ? 'x' : 'y', // Ensure valid indexAxis value\r\n labels: [],\r\n showValues: chart.showValues.toString(),\r\n showLegend: chart.showLegend.toString(),\r\n xAxisTitle: chart.xAxisTitle,\r\n yAxisTitle: chart.yAxisTitle,\r\n showXAxisValues:\r\n chart.type === 'pie' ? undefined : chart.showXAxisValues.toString(),\r\n showYAxisValues:\r\n chart.type === 'pie' ? undefined : chart.showYAxisValues.toString(),\r\n };\r\n\r\n const actualData = arrayOrArray(chart.datasets).map((dataset) => {\r\n return {\r\n colors: arrayOrArray(dataset.data)\r\n .map((c) => c.color || dataset.color || chart.color)\r\n .map((c) => c.toLowerCase()),\r\n labels: arrayOrArray(dataset.data).map((c) => c.label),\r\n values: arrayOrArray(dataset.data).map((c) => c.value),\r\n };\r\n });\r\n\r\n actualData[0].labels.forEach((label) => transformedChart.labels.push(label));\r\n\r\n arrayOrArray(chart.datasets).forEach((dataset: TIncomingChartDataset) => {\r\n const transformedDataset = {\r\n backgroundColor: arrayOrArray(dataset.data)\r\n .map((c) =>\r\n c.color !== 'null' ? c.color : dataset.color || chart.color,\r\n )\r\n .map((c) => c.toLowerCase()),\r\n borderColor: arrayOrArray(dataset.data)\r\n .map((c) => dataset.borderColor || c.color || chart.color)\r\n .map((c) => c.toLowerCase()),\r\n borderWidth: parseInt(dataset.borderWidth),\r\n label: dataset.label,\r\n data: arrayOrArray(dataset.data).map((dataPoint) =>\r\n parseFloat(dataPoint.value),\r\n ),\r\n };\r\n\r\n transformedChart.datasets.push(transformedDataset);\r\n });\r\n return transformedChart;\r\n};\r\n"],"names":["START_ANGLE","END_ANGLE","value","angle","pathY","ChartJS","dataset","_","Plot"],"mappings":";;;;;;;;;;;AAMA,MAAMA,aAAA,GAAc,EAAA;AACpB,MAAMC,WAAA,GAAY,GAAA;AAEX,MAAM,aAAa,CAAC;AAAA,EACzB,eAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAwD;AAEtD,EAAA,MAAM,KAAA,GAAQ,YAAA;AACd,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,MAAA,GAAS,EAAA;AACf,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,UAEI,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,IAAI,EAAA,GAAK,CAAA;AAAA,IAC/C;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe;AAAA,IAClC,KAAA,EAAO,CAAA;AAAA,IACP,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,SAAS,SAASC,MAAAA,EAAe;AAC/B,IAAA,MAAM,QAAQ,WAAA,CAAY,SAAA;AAAA,MACxB,CAAC,KAAA,KAAU,KAAA,CAAMA,MAAK,CAAA,IAAK,MAAM,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,YAAY,KAAK,CAAA;AAAA;AAG1B,EAAA,MAAM,KAAA,GAAA,CAAUD,WAAA,GAAYD,aAAA,IAAe,KAAA,IAAU,SAAA,GAAY,SAAA,CAAA;AAEjE,EAAA,2BACG,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAA,EAAY;AAAA,MACtB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAA,CAAA,EAAI,QAAA,GAAW,CAAA,GAAI,MAAM,KAAK,QAAA,GAAW,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAA,GAAS,CACtB,CAAA,CAAA,EAAI,QAAA,GAAW,SAAS,CAAC,CAAA,CAAA;AAAA,MAEzB,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,IAAG,MAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,QAAQ,MAAA,GAAS,CAAA;AAAA,gBACjB,UAAA,EAAY,CAAA;AAAA,gBACZ,QAAA,EAAU;AAAA,eACX,CAAA;AAAA,cACD,MAAA,EAAO,MAAA;AAAA,cACP,MAAM,eAAA,IAAmB,MAAA;AAAA,cACzB,aAAA,EAAc,OAAA;AAAA,cACd,WAAA,EAAa;AAAA;AAAA,WACf;AAAA,UACC,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,EAAY,CAAA,KAAM;AAClC,YAAA,MAAM,YAAA,GAAe,CAACE,MAAAA,KAAkB;AACtC,cAAA,MAAM,aAAaD,WAAA,GAAYD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAA,GAAY,SAAA;AAC/B,cAAA,MAAMG,MAAAA,GACJH,aAAA,GAAA,CAAgBE,MAAAA,GAAQ,SAAA,IAAa,UAAA,GAAc,UAAA;AACrD,cAAA,OAAO,IAAA,CAAK,MAAMC,MAAK,CAAA;AAAA,aACzB;AAEA,YAAA,4BACG,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAA,CAAY;AAAA,oBACpB,MAAA,EAAQ,GAAA;AAAA,oBACR,UAAA,EACE,CAAA,KAAM,CAAA,GAAIH,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAA,KAAM,CAAA,GACF,YAAA,CAAa,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAA,KAAM,WAAA,CAAY,SAAS,CAAA,GACzBC,WAAA,GACA,aAAa,WAAA,CAAY,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAA,EAAQ,KAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,aAAA,EAAc,OAAA;AAAA,kBACd,WAAA,EAAa;AAAA;AAAA,eACf;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAA,CAAY;AAAA,oBACpB,MAAA,EAAQ,GAAA;AAAA,oBACR,UAAA,EACE,CAAA,KAAM,CAAA,GAAID,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAA,KAAM,CAAA,GACF,YAAA,CAAa,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAA,KAAM,WAAA,CAAY,SAAS,CAAA,GACzBC,WAAA,GACA,aAAa,WAAA,CAAY,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,GAAA,EAAK,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,kBACvB,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAA,EAAQ,KAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,aAAA,EAAc,OAAA;AAAA,kBACd,WAAA,EAAa;AAAA;AAAA;AACf,aAAA,EAAA,EArCM,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAsC1B,CAAA;AAAA,WAEH;AAAA,SAAA,EACH,CAAA;AAAA,wBACA,GAAA,CAAC,OAAE,EAAA,EAAG,OAAA,EACH,gBAAM,KAAA,CAAM,GAAA,CAAI,CAACE,MAAAA,KAAU;AAC1B,UAAA,MAAM,YAAA,GAAe,CAACA,MAAAA,KAAkB;AACtC,YAAA,MAAM,aAAaF,WAAA,GAAYD,aAAA;AAC/B,YAAA,MAAM,aAAa,SAAA,GAAY,SAAA;AAE/B,YAAA,MAAME,MAAAA,GACJ,SAAA,GAAA,CAAcC,MAAAA,GAAQH,aAAA,IAAe,UAAA,GAAc,UAAA;AAErD,YAAA,OAAO,IAAA,CAAK,MAAME,MAAK,CAAA;AAAA,WACzB;AACA,UAAA,MAAM,OAAA,GAAU,aAAaC,MAAK,CAAA;AAClC,UAAA,MAAM,QAAA,GAAW,UAAU,EAAA,KAAO,CAAA;AAElC,UAAA,uBACE,IAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,MAAA,EAAO,MAAA;AAAA,gBACP,WAAA,EAAa,WAAW,CAAA,GAAI,CAAA;AAAA,gBAC3B,GAAG,KAAA,CAAM,YAAA,CAAa,EAAE,KAAA,EAAAA,QAAO,MAAA,EAAQ,QAAA,GAAW,EAAA,GAAK,CAAA,EAAG;AAAA;AAAA,aAC7D;AAAA,YACC,QAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACJ,GAAG,MAAM,aAAA,CAAc,EAAE,OAAAA,MAAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AAAA,gBAC7C,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,eAAA,IAAmB,EAAE,CAAA,EAAA,CAAA,EAAK;AAAA,gBAE/C,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EAAA,EAbiB,CAAA,WAAA,EAAcA,MAAK,CAAA,CAexC,CAAA;AAAA,SAEH,CAAA,EACH,CAAA;AAAA,wBACA,IAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAG,QAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAO,IAAA,EAAM,YAAA,EAAe,GAAG,MAAA,CAAO,IAAA,EAAM,GAAG,EAAA,EAAI,CAAA;AAAA,8BACnD,QAAA,EAAA,EAAO,IAAA,EAAM,YAAA,EAAe,GAAG,OAAO,IAAA,EAAM,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,YAAA;AAAA,cACN,OAAA,EAAQ,KAAA;AAAA,cACP,GAAG,MAAA,CAAO,GAAA;AAAA,cACX,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAA,EAAY;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAA,EAAY;AAAA,eACd;AAAA,cACA,IAAA,EAAM,YAAA;AAAA,cACN,OAAA,EAAQ,KAAA;AAAA,cACR,QAAQ,MAAA,CAAO;AAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,YAAO,IAAA,EAAK,OAAA,EAAS,GAAG,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA,EAAG;AAAA,SAAA,EAC9C,CAAA;AAAA,4BACC,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAW,QAAA;AAAA,YACX,GAAG,QAAA,GAAW,CAAA;AAAA,YACd,IAAA,EAAM,iBAAA;AAAA,YACN,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA,EAAK;AAAA,YAEpD,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM;AAAA;AAAA;AAAA,SAChD,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;;ACvMA,MAAMH,aAAA,GAAc,EAAA;AACpB,MAAMC,WAAA,GAAY,GAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,eAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAoD;AAElD,EAAA,MAAM,KAAA,GAAQ,YAAA;AACd,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAElD,EAAA,MAAM,MAAA,GAAS,EAAA;AACf,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,UAAU,EAAA,GAAK,CAAA;AAAA,IACf;AAAA,GACD,CAAA;AACD,EAAA,MAAM,SAAS,QAAA,CAAS;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAA,CAAY,CAAC,GAAG,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,GAAI,CAAA;AAAA,IACjE;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe;AAAA,IAClC,KAAA,EAAO,CAAA;AAAA,IACP,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,KAAA,GAAA,CAAUA,WAAA,GAAYD,aAAA,IAAe,KAAA,IAAU,SAAA,GAAY,SAAA,CAAA;AAEjE,EAAA,SAAS,SAASE,MAAAA,EAAe;AAC/B,IAAA,MAAM,QAAQ,WAAA,CAAY,SAAA;AAAA,MACxB,CAAC,KAAA,KAAU,KAAA,CAAMA,MAAK,CAAA,IAAK,MAAM,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,YAAY,KAAK,CAAA;AAAA;AAG1B,EAAA,2BACG,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAA,EAAY;AAAA,MACtB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAA,CAAA,EAAI,QAAA,GAAW,CAAA,GAAI,MAAM,KAAK,QAAA,GAAW,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAA,GAAS,CACtB,CAAA,CAAA,EAAI,QAAA,GAAW,SAAS,CAAC,CAAA,CAAA;AAAA,MAEzB,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,IAAG,MAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,QAAQ,MAAA,GAAS,CAAA;AAAA,gBACjB,UAAA,EAAY,CAAA;AAAA,gBACZ,QAAA,EAAU;AAAA,eACX,CAAA;AAAA,cACD,MAAA,EAAO,OAAA;AAAA,cACP,OAAA,EAAQ,GAAA;AAAA,cACR,IAAA,EACE,eAAA,KAAoB,EAAA,IAAM,eAAA,KAAoB,MAAA,GAC1C,SAAA,CAAU,eAAe,CAAA,CACtB,QAAA,CAAS,GAAG,CAAA,CACZ,qBAAA,EAAsB,GACzB,MAAA;AAAA,cAEN,aAAA,EAAc,OAAA;AAAA,cACd,WAAA,EAAa,CAAA;AAAA,cACb,YAAA,EAAc;AAAA;AAAA,WAChB;AAAA,UACC,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,EAAY,CAAA,KAAM;AAClC,YAAA,IAAI,CAAC,WAAA,CAAY,CAAA,GAAI,CAAC,CAAA,EAAG;AACvB,cAAA,OAAO,IAAA;AAAA;AAGT,YAAA,MAAM,YAAA,GAAe,CAACA,MAAAA,KAAkB;AACtC,cAAA,MAAM,aAAaD,WAAA,GAAYD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAA,GAAY,SAAA;AAC/B,cAAA,MAAMG,MAAAA,GACJH,aAAA,GAAA,CAAgBE,MAAAA,GAAQ,SAAA,IAAa,UAAA,GAAc,UAAA;AACrD,cAAA,OAAO,IAAA,CAAK,MAAMC,MAAK,CAAA;AAAA,aACzB;AAEA,YAAA,4BACG,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAA,CAAY;AAAA,oBACpB,QAAQ,MAAA,GAAS,CAAA;AAAA,oBACjB,UAAA,EACE,CAAA,KAAM,CAAA,GAAIH,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAA,KAAM,CAAA,GACF,YAAA,CAAa,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAA,KAAM,WAAA,CAAY,SAAS,CAAA,GACzBC,WAAA,GACA,aAAa,WAAA,CAAY,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,MAAA,EAAQ,OAAA;AAAA,kBACR,OAAA,EAAQ,KAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,aAAA,EAAc,QAAA;AAAA,kBACd,WAAA,EAAa,CAAA;AAAA,kBACb,YAAA,EAAc;AAAA;AAAA,eAChB;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAA,CAAY;AAAA,oBACpB,MAAA,EAAQ,GAAA;AAAA,oBACR,UAAA,EACE,CAAA,KAAM,CAAA,GAAID,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAA,KAAM,CAAA,GACF,YAAA,CAAa,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAA,KAAM,WAAA,CAAY,SAAS,CAAA,GACzBC,WAAA,GACA,aAAa,WAAA,CAAY,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAA,EAAQ,KAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,aAAA,EAAc,MAAA;AAAA,kBACd,WAAA,EAAa,EAAA;AAAA,kBACb,YAAA,EAAc;AAAA;AAAA,eAChB;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAA,CAAY;AAAA,oBACpB,MAAA,EAAQ,GAAA;AAAA,oBACR,UAAA,EACE,CAAA,KAAM,CAAA,GAAID,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAA,KAAM,CAAA,GACF,YAAA,CAAa,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAA,KAAM,WAAA,CAAY,SAAS,CAAA,GACzBC,WAAA,GACA,aAAa,WAAA,CAAY,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,GAAA,EAAK,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,kBACvB,MAAA,EAAQ,QAAA,CAAS,UAAU,CAAA,IAAK,MAAA;AAAA,kBAChC,OAAA,EAAQ,KAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,aAAA,EAAc,MAAA;AAAA,kBACd,WAAA,EAAa,EAAA;AAAA,kBACb,YAAA,EAAc;AAAA;AAAA;AAChB,aAAA,EAAA,EA1DM,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CA2D1B,CAAA;AAAA,WAEH;AAAA,SAAA,EACH,CAAA;AAAA,wBACA,IAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAG,OAAA,EACH,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAACE,MAAAA,EAAO,CAAA,KAAM;AAC7B,YAAA,MAAM,YAAA,GAAe,CAACA,MAAAA,KAAkB;AACtC,cAAA,MAAM,aAAaF,WAAA,GAAYD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAA,GAAY,SAAA;AAE/B,cAAA,MAAME,MAAAA,GACJ,SAAA,GAAA,CAAcC,MAAAA,GAAQH,aAAA,IAAe,UAAA,GAAc,UAAA;AAErD,cAAA,OAAO,IAAA,CAAK,MAAME,MAAK,CAAA;AAAA,aACzB;AACA,YAAA,MAAM,OAAA,GAAU,aAAaC,MAAK,CAAA;AAElC,YAAA,MAAM,QAAA,GAAW,UAAU,EAAA,KAAO,CAAA;AAElC,YAAA,uBACE,IAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAO,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAA,GAAI,CAAA;AAAA,kBAC3B,GAAG,KAAA,CAAM,YAAA,CAAa,EAAE,KAAA,EAAAA,QAAO,MAAA,EAAQ,QAAA,GAAW,EAAA,GAAK,CAAA,EAAG,CAAA;AAAA,kBAC3D,YAAA,EAAc;AAAA;AAAA,eAChB;AAAA,cACC,QAAA,oBACC,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,OAAA;AAAA,kBACL,GAAG,MAAM,aAAA,CAAc;AAAA,oBACtB,KAAA,EAAAA,MAAAA;AAAA,oBACA,MAAA,EAAQ;AAAA,mBACT,CAAA;AAAA,kBACD,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,CAAA,EAAG,eAAA,IAAmB,EAAE,CAAA,EAAA;AAAA,mBACpC;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EAAA,EAnBiB,CAAA,WAAA,EAAcA,MAAK,CAAA,EAAA,EAAK,CAAC,CAAA,CAqB9C,CAAA;AAAA,WAEH,CAAA;AAAA,UAEC,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAACA,QAAO,CAAA,KAAM;AAC7B,YAAA,uBACE,GAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,MAAA,EAAO,MAAA;AAAA,gBACP,WAAA,EAAa,CAAA;AAAA,gBACZ,GAAG,MAAM,YAAA,CAAa;AAAA,kBACrB,KAAA,EAAAA,MAAAA;AAAA,kBACA,MAAA,EAAQ;AAAA,iBACT,CAAA;AAAA,gBACD,YAAA,EAAc;AAAA;AAAA,aAChB,EAAA,EATmB,CAAA,WAAA,EAAcA,MAAK,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,CAU9C,CAAA;AAAA,WAEH;AAAA,SAAA,EACL,CAAA;AAAA,wBACA,IAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAG,QAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAO,IAAA,EAAM,YAAA,EAAe,GAAG,MAAA,CAAO,IAAA,EAAM,GAAG,EAAA,EAAI,CAAA;AAAA,8BACnD,QAAA,EAAA,EAAO,IAAA,EAAM,YAAA,EAAe,GAAG,OAAO,IAAA,EAAM,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,YAAA;AAAA,cACN,OAAA,EAAQ,KAAA;AAAA,cACP,GAAG,MAAA,CAAO,GAAA;AAAA,cACX,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAA,EAAY;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAA,EAAY;AAAA,eACd;AAAA,cACA,IAAA,EAAM,YAAA;AAAA,cACN,OAAA,EAAQ,KAAA;AAAA,cACR,QAAQ,MAAA,CAAO;AAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,YAAO,IAAA,EAAK,OAAA,EAAS,GAAG,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA,EAAG;AAAA,SAAA,EAC9C,CAAA;AAAA,4BACC,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAW,QAAA;AAAA,YACX,iBAAA,EAAkB,kBAAA;AAAA,YAClB,GAAG,QAAA,GAAW,CAAA;AAAA,YACd,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA,EAAK;AAAA,YACrD,IAAA,EAAM,iBAAA;AAAA,YAEL,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM;AAAA;AAAA;AAAA,SAChD,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;;ACxQA,MAAMH,aAAA,GAAc,CAAA;AACpB,MAAMC,WAAA,GAAY,GAAA;AAEX,MAAM,UAAU,CAAC;AAAA,EACtB,SAAA,GAAY,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,oBAAA;AAAA,EACA,IAAA,EAAM,SAAA;AAAA,EACN,aAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAAqD;AACnD,EAAA,MAAM,IAAA,GAAO,SAAA,EAAW,KAAA,CAAM,IAAI,EAAE,CAAC,CAAA;AACrC,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAI,SAAS,KAAA,CAAM,YAAY,KAAK,CAAC,CAAA;AAC3D,EAAA,MAAM,WAAA,GAAA,CAAgB,oBAAA,IAAmC,EAAA,IAAM,CAAA,GAAI,GAAA;AACnE,EAAA,MAAM,QAAA,GAAW,WAAA;AACjB,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,QAAA,EAAU,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AAED,EAAA,SAAS,SAASC,MAAAA,EAAe;AAC/B,IAAA,MAAM,QAAQ,WAAA,CAAY,SAAA;AAAA,MACxB,CAAC,KAAA,KAAU,KAAA,CAAMA,MAAK,CAAA,IAAK,MAAM,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,WAAA,CAAY,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AAAA;AAEpD,EAAA,MAAM,gBAAA,GAAmB,OAAO,CAAC,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,YAAY,CAAA,GAAI,gBAAA,CAAiB,OAAA;AAC1D,IAAA,OAAO,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAA,KAAa;AACZ,QAAA,MAAM,IAAA,GAAO,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAA,CAAiB,OAAA;AAAA,UACzC,SAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,SAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,KAAA,CAAM,aAAa,CAAC,CAAA;AAC9C,QAAA,IAAI,SAAA,KAAc,CAAA,IAAK,SAAA,KAAc,GAAA,EAAK;AACxC,UAAA,MAAA,GAAS,CAAA;AAAA;AAEX,QAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,MAAM,IAAI,MAAM,CAAA;AAAA,OAC7C;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAA,GAAU,MAAM,YAAY,CAAA;AAAA;AAC/C,KACF;AAAA,GAEF,EAAG,CAAC,KAAA,CAAM,YAAY,CAAC,CAAC,CAAA;AAExB,EAAA,uBACE,IAAA,CAAC,OAAI,EAAA,EAAI,EAAE,UAAU,UAAA,EAAW,EAAG,WAAU,0BAAA,EAC3C,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,MAAM,WAAA,EAAY;AAAA,QACtB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAA,EAAS,MAAA;AAAA,QAET,QAAA,kBAAA,GAAA,CAAC,OAAE,EAAA,EAAG,MAAA,EACH,uBAAa,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG,MAAA,GAAS,CAAA,oBAChC,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,YAC9B,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,YAC9B,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,YAC9B,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,YAC9B,MAAA,EAAO,MAAA;AAAA,YACP,OAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,aAAA,EAAc,OAAA;AAAA,YACd,WAAA,EAAa;AAAA;AAAA,SACf,EAEJ;AAAA;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAO,EAAE,QAAA,EAAU,YAAY,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAAE;AAAA,QAE/C,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,YAC7B,GAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,IAAI,CAAA,GAAI,CAAA;AAAA,YACjC,UAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,CAAA,EAAG,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA;AAAA,cACvC,UAAA,EAAY;AAAA,aACd;AAAA,YACA,iBAAA,EAAkB,SAAA;AAAA,YAClB,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,YAEnB,QAAA,EAAA;AAAA,cAAA,YAAA,KAAiB,OAAA,IAAW,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAC7D,IAAA,GACA,EAAA;AAAA,cACH,MAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM,EAAA;AAAA,cAC7C,YAAA,KAAiB,KAAA,IAAS,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAC3D,IAAA,GACA;AAAA;AAAA;AAAA;AACN;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAA;;ACvHA,MAAMF,aAAA,GAAc,CAAA;AACpB,MAAMC,WAAA,GAAY,GAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,SAAA,GAAY,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,EAAM,SAAA;AAAA,EACN,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAAoD;AAClD,EAAA,MAAM,IAAA,GAAO,SAAA,EAAW,KAAA,CAAM,IAAI,EAAE,CAAC,CAAA;AACrC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,QAAA,CAAS,KAAA,CAAM,YAAY,CAAC,CAAA;AACtD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,QAAA,EAAU,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AACD,EAAA,SAAS,SAASC,MAAAA,EAAe;AAC/B,IAAA,MAAM,QAAQ,WAAA,CAAY,SAAA,CAAU,CAAC,KAAA,KAAUA,SAAQ,KAAK,CAAA;AAE5D,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,WAAA,CAAY,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AAAA;AAGpD,EAAA,MAAM,WAAA,GAAc,OAAO,KAAK,CAAA;AAEhC,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,EAAA,KAAsB;AACrB,MAAA,IAAI,CAAC,MAAM,WAAA,CAAY,OAAA;AAAS,QAAA;AAEhC,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAEtB,MAAA,MAAM,UAAA,GAAa,EAAA;AACnB,MAAA,MAAM,WAAA,GAAc,EAAA,CAAG,aAAA,CAAc,cAAc,CAAA;AAEnD,MAAA,IAAI,EAAE,cAAc,WAAA,CAAA,EAAc;AAChC,QAAA;AAAA;AAGF,MAAA,MAAM,OAAA,GAAU,YAAY,qBAAA,EAAsB;AAClD,MAAA,MAAM,MAAA,GAAS,WAAW,qBAAA,EAAsB;AAChD,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,CAAA,GAAI,MAAA,CAAO,CAAA;AACjC,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,CAAA,GAAI,MAAA,CAAO,CAAA;AAEjC,MAAA,MAAM,OAAA,GAAU,CAAA,EAAG,KAAA,GAAQ,QAAA,GAAW,CAAC,CAAA,CAAA,EACrC,KAAA,GAAQ,QAAA,GAAW,CACrB,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAExB,MAAA,UAAA,CAAW,YAAA,CAAa,WAAW,OAAO,CAAA;AAE1C,MAAA,UAAA,CAAW,MAAM,UAAA,GAAa,SAAA;AAAA,KAChC;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,gBAAA,GAAmB,OAAO,CAAC,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,YAAY,CAAA,GAAI,gBAAA,CAAiB,OAAA;AAC1D,IAAA,OAAO,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAA,KAAa;AACZ,QAAA,MAAM,IAAA,GAAO,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAA,CAAiB,OAAA;AAAA,UACzC,SAAA;AAAA,UACA;AAAA,SACF;AAEA,QAAA,IAAI,SAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,KAAA,CAAM,aAAa,CAAC,CAAA;AAC9C,QAAA,IAAI,SAAA,KAAc,CAAA,IAAK,SAAA,KAAc,GAAA,EAAK;AACxC,UAAA,MAAA,GAAS,CAAA;AAAA;AAEX,QAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,MAAM,IAAI,MAAM,CAAA;AAAA,OAC7C;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAA,GAAU,MAAM,YAAY,CAAA;AAAA;AAC/C,KACF;AAAA,GAEF,EAAG,CAAC,KAAA,CAAM,YAAY,CAAC,CAAC,CAAA;AACxB,EAAA,2BACG,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAA,EAAY;AAAA,MACtB,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAS;AAAA,MAC9B,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,EAAA,EAAG,YAAA;AAAA,MACH,GAAA,EAAK,WAAA;AAAA,MACL,OAAA,EAAS,CAAA,CAAA,EAAI,QAAA,GAAW,CAAC,CAAA,EAAA,EAAK,WAAW,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAAA,MAElE,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,IAAG,aAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,UAAA,EAAYF,aAAA;AAAA,gBACZ,QAAA,EAAUC;AAAA,eACX,CAAA;AAAA,cACD,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,cACpB,EAAA,EAAG,aAAA;AAAA,cACH,KAAA,EAAO,EAAE,UAAA,EAAY,WAAA;AAAY;AAAA,WACnC;AAAA,UACC,SAAA,oBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,MAAA,EAAQ,IAAA;AAAA,gBACR,UAAA,EAAYD,aAAA;AAAA,gBACZ,QAAA,EAAUC;AAAA,eACX,CAAA;AAAA,cACD,MAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAM,aAAA;AAAA,cACN,aAAA,EAAc,OAAA;AAAA,cACd,WAAA,EAAa,CAAA;AAAA,cACb,EAAA,EAAG;AAAA;AAAA;AACL,SAAA,EAEJ,CAAA;AAAA,4BACC,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAW,QAAA;AAAA,YACX,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,oBAAA,IAAwB,GAAG,CAAA,EAAA,CAAA,EAAK;AAAA,YACtD,iBAAA,EAAkB,SAAA;AAAA,YAClB,IAAA,EAAM,iBAAA;AAAA,YAEL,QAAA,EAAA;AAAA,cAAA,YAAA,IACD,YAAA,KAAiB,OAAA,IACjB,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAChC,IAAA,GACA,EAAA;AAAA,cACH,MAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM,EAAA;AAAA,cAC7C,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA,GAAO,EAAA;AAAA,cAC/C,YAAA,IACD,YAAA,KAAiB,KAAA,IACjB,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAChC,IAAA,GACA;AAAA;AAAA;AAAA,SACN,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;;ACjKA,MAAM,WAAA,GAAc,CAClB,WAAA,EACA,WAAA,EACA,UAAA,KACG;AACH,EAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,EAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAA,KAAU;AACpC,IAAA,IAAI,SAAS,UAAA,IAAc,WAAA,CAAY,KAAA,GAAQ,CAAC,KAAK,UAAA,EAAY;AAC/D,MAAA,KAAA,GAAQ,WAAA,CAAY,QAAQ,CAAC,CAAA;AAAA;AAC/B,GACD,CAAA;AAED,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,SAAS,QAAA,CAAS,WAAA,EAAuB,WAAA,EAAuB,KAAA,EAAe;AAC7E,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,SAAA,CAAU,CAAC,KAAA,KAAU,MAAM,KAAK,CAAA,IAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAE3E,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,EAAA,OAAO,YAAY,KAAK,CAAA;AAC1B;AAEA,SAAS,aAAA,CACP,WAAA,EACA,WAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,SAAA,CAAU,CAAC,OAAO,CAAA,KAAM;AAChD,IAAA,IAAI,CAAA,KAAM,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AAChC,MAAA,OAAO,KAAA,CAAM,KAAK,CAAA,IAAK,KAAA,CAAM,KAAK,CAAA;AAAA;AAEpC,IAAA,OAAO,KAAA,CAAM,KAAK,CAAA,GAAI,KAAA,CAAM,KAAK,CAAA;AAAA,GAClC,CAAA;AAED,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,EAAA,OAAO,WAAA,CAAY,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AACpD;AAEA,MAAM,kBAAA,GAAqB,CACzB,SAAA,EACA,SAAA,EACA,KAAA,KACG;AACH,EAAA,MAAM,KAAA,GAAQ,aAAa,SAAA,IAAa,CAAA,CAAA;AACxC,EAAA,MAAM,UAAA,GAAa,GAAA,GAAA,CAAQ,KAAA,IAAS,SAAA,IAAa,MAAM,KAAA,GAAS,GAAA;AAEhE,EAAA,OAAO,IAAA,CAAK,MAAM,UAAU,CAAA;AAC9B,CAAA;;ACNA,MAAM,cAAA,GAAiB,CACrB,SAAA,EACA,SAAA,EACA,KAAA,KACG;AACH,EAAA,MAAM,KAAA,GAAQ,aAAa,SAAA,IAAa,CAAA,CAAA;AACxC,EAAA,MAAM,UAAA,GAAa,GAAA,GAAA,CAAQ,KAAA,IAAS,SAAA,IAAa,MAAM,KAAA,GAAS,GAAA;AAChE,EAAA,MAAM,IAAA,GAAQ,aAAa,EAAA,GAAM,GAAA;AAEjC,EAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AACxB,CAAA;;ACvDO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAKM;AACJ,EAAA,MAAM,SAAA,GAAY,QAAA;AAClB,EAAA,MAAM,SAAA,GAAY,QAAA;AAElB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA;AAChD,EAAA,MAAM,OAAA,GAAU,MAAA,CAAgB,EAAa,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAgB,EAAa,CAAA;AAE9C,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,EAAA,KAAuB;AACtB,MAAA,IAAI,CAAC,EAAA;AAAI,QAAA;AAET,MAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,KAAK,CAAA;AACnC,MAAA,MAAM,WAAA,GAAc,UAAA,EAAY,aAAA,CAAc,CAAA,MAAA,EAAS,GAAG,CAAA,CAAE,CAAA;AAE5D,MAAA,IAAI,CAAC,UAAA;AAAY,QAAA,MAAM,IAAI,MAAM,QAAQ,CAAA;AACzC,MAAA,IAAI,CAAC,WAAA;AAAa,QAAA,MAAM,IAAI,MAAM,SAAS,CAAA;AAE3C,MAAA,MAAM,MAAA,GAAS,WAAW,qBAAA,EAAsB;AAChD,MAAA,MAAM,OAAA,GAAU,YAAY,qBAAA,EAAsB;AAElD,MAAA,MAAMG,MAAAA,GAAQ,OAAA,CAAQ,CAAA,GAAI,MAAA,CAAO,CAAA;AAEjC,MAAA,OAAA,CAAQ,OAAA,GAAU,MAAA;AAClB,MAAA,QAAA,CAAS,OAAA,GAAU,OAAA;AACnB,MAAA,cAAA,CAAeA,MAAK,CAAA;AAAA,KACtB;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,QAAQ,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAC1D,EAAA,MAAM,QAAQ,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAC1D,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAEhD,EAAA,MAAM,OAAA,GAAU,GAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,IAAI,UAAU,CAAA,CAAA;AAE5D,EAAA,MAAM,SAAA,GAA4C;AAAA,IAChD,CAAA,EAAG,KAAA;AAAA,MACA,eAAe,SAAA,EAAW,SAAA,EAAW,YAAY,CAAA,GAAI,aAAc,GAAA,GAClE;AAAA,KACJ;AAAA,IACA,CAAA,EAAG,KAAA;AAAA,IACH,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,UAAA;AAAA,IACR,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY;AAAA;AACd,GACF;AAEA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,YAAA;AAAA,IACT,UAAA,EAAY,OAAA;AAAA,IACZ,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;;AC7DO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAyD;AACvD,EAAA,MAAM,KAAA,GAAQ,YAAA;AACd,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,UAAA,GAAa,CAAA,mRAAA,CAAA;AACnB,EAAA,MAAM,MAAM,OAAA,CAAQ,MAAM,QAAA,EAAS,EAAG,EAAE,CAAA;AACxC,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,YAAY,KAAa,IAAI,eAAA,CAAgB;AAAA,IACvE,YAAA,EAAc,KAAA;AAAA,IACd,QAAA,EAAU,SAAA;AAAA,IACV,QAAA,EAAU,SAAA;AAAA,IACV;AAAA,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,IAAI,CAAA;AAAA,IACtE,OAAO,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,IACpC,CAAA,EAAG,KAEL,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,CAAC,KAAK,CAAA,KAAM;AAC5C,IAAA,OAAO;AAAA,MACL,QACE,SAAA,CAAU,MAAA,IACT,mBAAmB,SAAA,EAAW,SAAA,EAAW,GAAG,CAAA,GAAI,GAAA,CAAA;AAAA,MACnD,KAAA,EAAO,CAAC,WAAA,CAAY,CAAA,GAAI,CAAC,IACrB,OAAA,GACA,WAAA,CAAY,WAAA,EAAa,WAAA,EAAa,GAAG,CAAA;AAAA,MAC7C,KAAA,EAAO;AAAA,KACT;AAAA,GACD,CAAA;AAED,EAAA,MAAM,kBAAA,GAAqB,IAAI,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AAC5D,IAAA,MAAM,UAAA,GAAA,CACH,YAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,IAAK,CAAA;AAC3D,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,CAAA;AAAA,MACP,KAAA,EAAO,OAAA;AAAA,MACP,MAAA,EACE,UAAU,MAAA,IACT,kBAAA,CAAmB,WAAW,SAAA,EAAW,UAAA,GAAa,CAAC,CAAA,GAAI,GAAA;AAAA,KAChE;AAAA,GACD,CAAA;AAED,EAAA,4BACG,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,QAAA,EAAU,YAAW,EAC9B,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,EAAA,EAAI,OAAO,GAAG,CAAA,CAAA;AAAA,QACd,OAAA,EAAS,UAAA;AAAA,QACT,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,KAAK,MAAA,EAAO;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,cAAS,EAAA,EAAG,UAAA,EACX,8BAAC,MAAA,EAAA,EAAK,CAAA,EAAG,YAAY,CAAA,EACvB,CAAA;AAAA,0BACA,GAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,QAAA,EACP,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,UAAA,EAAY,EAAA,EAAG,UAAA,EAAW,IAAA,EAAK,OAAA,EAAQ,CAAA,EAClD,CAAA;AAAA,0BAEA,GAAA,CAAC,UAAK,CAAA,EAAG,UAAA,EAAY,IAAI,CAAA,KAAA,EAAQ,GAAG,CAAA,CAAA,EAAI,IAAA,EAAK,OAAA,EAAQ,CAAA;AAAA,0BAErD,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,aAAA,CAAc,WAAA,EAAa,WAAA,EAAa,KAAK,CAAA;AAAA,cACnD,EAAA,EAAI,QAAQ,GAAG,CAAA,CAAA;AAAA,cACf,IAAA,EAAK,cAAA;AAAA,cACL,GAAA,EAAK,OAAA;AAAA,cACJ,GAAG;AAAA;AAAA,WACN;AAAA,0BAEA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAG,UAAA;AAAA,cACH,EAAA,EAAG,MAAA;AAAA,cACH,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAO,OAAA;AAAA,cACP,WAAA,EAAa,EAAA;AAAA,cACb,QAAA,EAAS,gBAAA;AAAA,cACT,YAAA,EAAc;AAAA;AAAA,WAChB;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAS,gBAAA;AAAA,cACT,CAAA,EAAG,UAAA;AAAA,cACH,EAAA,EAAG,MAAA;AAAA,cACH,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAO,OAAA;AAAA,cACP,WAAA,EAAa,CAAA;AAAA,cACb,YAAA,EAAc;AAAA;AAAA;AAChB;AAAA;AAAA,KACF;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,EAAA;AAAA,QAClC,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAO,EAAE,QAAA,EAAU,YAAY,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAAE;AAAA,QAE9C,QAAA,EAAA;AAAA,UAAA,SAAA,CAAU,CAAA,wBACR,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,cAC7B,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA,GAAI,EAAA;AAAA,cAC3D,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,CAAA,EAAG,KAAA,CAAM,oBAAoB,KAAK,EAAE,CAAA,EAAA,CAAA;AAAA,gBAC9C,UAAA,EAAY;AAAA,eACd;AAAA,cACA,UAAA,EAAW,QAAA;AAAA,cACX,iBAAA,EAAmB,SAAA;AAAA,cACnB,YAAA,EAAc,oBAAA;AAAA,cAEb,QAAA,EAAA;AAAA,gBAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,gBACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM;AAAA;AAAA;AAAA,WAChD,EACF,CAAA;AAAA,UAED,kBAAA,CAAmB,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AACnC,YAAA,IAAI,MAAM,CAAA,EAAG;AACX,cAAA,OAAO,IAAA;AAAA;AAET,YAAA,2BACG,GAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA,GAAI,CAAA;AAAA,gBAC7B,CAAA,EAAG,KAAK,MAAA,GAAS,EAAA;AAAA,gBACjB,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,KAAA;AAAA,gBACR,YAAA,EAAc,oBAAA;AAAA,gBACd,IAAA,EAAM;AAAA;AAAA,iBAPF,CASR,CAAA;AAAA,WAEH,CAAA;AAAA,UACA,SAAA,CAAU,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AAC1B,YAAA,4BACG,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,cAAA,SAAA,CAAU,CAAA,GAAI,CAAC,CAAA,IAAK,CAAA,GAAI,qBACvB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,GAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,IAAI,CAAA,GAAI,EAAA;AAAA,oBACjC,CAAA,EAAG,KAAK,MAAA,GAAS,CAAA;AAAA,oBACjB,KAAA,EAAO,MAAA;AAAA,oBACP,MAAA,EAAQ,KAAA;AAAA,oBACR,YAAA,EAAc,oBAAA;AAAA,oBACd,IAAA,EAAM,QAAA,CAAS,WAAA,EAAa,WAAA,EAAa,KAAK,KAAK;AAAA;AAAA,iBACrD;AAAA,gCACA,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,GAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,IAAI,CAAA,GAAI,EAAA;AAAA,oBACjC,CAAA,EAAG,KAAK,MAAA,GAAS,EAAA;AAAA,oBACjB,KAAA,EAAO,MAAA;AAAA,oBACP,MAAA,EAAQ,MAAA;AAAA,oBACR,OAAA,EAAS,GAAA;AAAA,oBACT,YAAA,EAAc,oBAAA;AAAA,oBACd,IAAA,EAAM,QAAA,CAAS,WAAA,EAAa,WAAA,EAAa,KAAK,KAAK;AAAA;AAAA;AACrD,eAAA,EACF,CAAA;AAAA,cAED,IAAI,CAAA,oBACH,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,GAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,IAAI,CAAA,GAAI,EAAA;AAAA,kBACjC,CAAA,EAAG,UAAU,CAAA,GAAI,CAAC,IAAI,IAAA,CAAK,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,EAAA;AAAA,kBACtD,UAAA,EAAW,KAAA;AAAA,kBACX,iBAAA,EACE,SAAA,CAAU,CAAA,GAAI,CAAC,IAAI,MAAA,GAAS,kBAAA;AAAA,kBAE9B,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,MAAA;AAAA,oBACV,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,CAAE,QAAQ,CAAC;AAAA;AAAA;AAC9B,aAAA,EAAA,EApCI,CAsCR,CAAA;AAAA,WAEH;AAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAA;;ACjMA,MAAMJ,aAAA,GAAc,EAAA;AACpB,MAAMC,WAAA,GAAY,GAAA;AAEX,MAAM,QAAQ,CAAC;AAAA,EACpB,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAmD;AACjD,EAAA,MAAM,QAAA,GAAW,KAAA;AACjB,EAAA,MAAM,KAAA,GAAQ,YAAA;AACd,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,MAAA,GAAS,EAAA;AACf,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,UAAU,EAAA,GAAK,CAAA;AAAA,IACf;AAAA,GACD,CAAA;AACD,EAAe,QAAA,CAAS;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAA,CAAY,CAAC,GAAG,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAA,EAAYD,aAAA;AAAA,IACZ,QAAA,EAAUC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA,GAAI,WAAA,CAAY,CAAC,CAAA,GAAI,CAAA;AAAA,IACjE;AAAA,GACD;AAED,EAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe;AAAA,IAClC,KAAA,EAAO,CAAA;AAAA,IACP,UAAA,EAAY,EAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,KAAA,GAAA,CAAUA,WAAA,GAAYD,aAAA,IAAe,KAAA,IAAU,SAAA,GAAY,SAAA,CAAA;AAEjE,EAAA,2BACG,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAA,EAAY;AAAA,MACtB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAA,CAAA,EAAI,QAAA,GAAW,CAAA,GAAI,MAAM,KAAK,QAAA,GAAW,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAA,GAAS,CACtB,IAAI,QAAA,GAAW,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AAAA,MAE7B,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,IAAG,MAAA,EACJ,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACE,GAAG,MAAM,WAAA,CAAY;AAAA,cACpB,QAAQ,MAAA,GAAS,CAAA;AAAA,cACjB,UAAA,EAAY,EAAA;AAAA,cACZ,QAAA,EAAU;AAAA,aACX,CAAA;AAAA,YACD,MAAA,EAAO,MAAA;AAAA,YACP,OAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,aAAA,EAAc,OAAA;AAAA,YACd,WAAA,EAAa;AAAA;AAAA,SACf,EACF,CAAA;AAAA,wBACA,IAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAG,OAAA,EACH,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAACG,MAAAA,KAAU;AAC1B,YAAA,MAAM,YAAA,GAAe,CAACA,MAAAA,KAAkB;AACtC,cAAA,MAAM,aAAaF,WAAA,GAAYD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAA,GAAY,SAAA;AAE/B,cAAA,MAAME,MAAAA,GACJ,SAAA,GAAA,CAAcC,MAAAA,GAAQH,aAAA,IAAe,UAAA,GAAc,UAAA;AAErD,cAAA,OAAO,IAAA,CAAK,MAAME,MAAK,CAAA;AAAA,aACzB;AACA,YAAA,MAAM,OAAA,GAAU,aAAaC,MAAK,CAAA;AAClC,YAAA,MAAM,QAAA,GAAW,UAAU,EAAA,KAAO,CAAA;AAElC,YAAA,uBACE,IAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAO,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAA,GAAI,CAAA;AAAA,kBAC3B,GAAG,KAAA,CAAM,YAAA,CAAa,EAAE,KAAA,EAAAA,QAAO,MAAA,EAAQ,QAAA,GAAW,EAAA,GAAK,CAAA,EAAG;AAAA;AAAA,eAC7D;AAAA,cACC,QAAA,oBACC,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,OAAA;AAAA,kBACJ,GAAG,MAAM,aAAA,CAAc,EAAE,OAAAA,MAAAA,EAAO,MAAA,EAAQ,IAAI,CAAA;AAAA,kBAC7C,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,eAAA,IAAmB,EAAE,CAAA,EAAA,CAAA,EAAK;AAAA,kBAE/C,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EAAA,EAbiB,CAAA,WAAA,EAAcA,MAAK,CAAA,CAexC,CAAA;AAAA,WAEH,CAAA;AAAA,UACA;AAcE,SAAA,EACL,CAAA;AAAA,wBACA,IAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAG,QAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAO,IAAA,EAAM,YAAA,EAAe,GAAG,MAAA,CAAO,IAAA,EAAM,GAAG,EAAA,EAAI,CAAA;AAAA,8BACnD,QAAA,EAAA,EAAO,IAAA,EAAM,YAAA,EAAe,GAAG,OAAO,IAAA,EAAM,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,YAAA;AAAA,cACN,OAAA,EAAQ,KAAA;AAAA,cACP,GAAG,MAAA,CAAO,GAAA;AAAA,cACX,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAA,EAAY;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAA,EAAY;AAAA,eACd;AAAA,cACA,IAAA,EAAM,YAAA;AAAA,cACN,OAAA,EAAQ,KAAA;AAAA,cACR,QAAQ,MAAA,CAAO;AAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,YAAO,IAAA,EAAK,OAAA,EAAS,GAAG,MAAA,CAAO,IAAA,EAAM,GAAG,CAAA,EAAG;AAAA,SAAA,EAC9C,CAAA;AAAA,4BACC,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAW,QAAA;AAAA,YACX,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA,EAAK;AAAA,YACrD,CAAA,EAAG,CAAC,QAAA,GAAW,CAAA,GAAI,EAAA;AAAA,YAElB,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM;AAAA;AAAA;AAAA,SAChD,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;;ACzJA,MAAM,WAAA,GAAc,CAAA;AACpB,MAAM,SAAA,GAAY,GAAA;AAEX,MAAM,OAAO,CAAC;AAAA,EACnB,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA,EAAW,kBAAA;AAAA,EACX,IAAA,EAAM,SAAA;AAAA,EACN,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAAkD;AAChD,EAAA,MAAM,IAAA,GAAO,SAAA,EAAW,KAAA,CAAM,IAAI,EAAE,CAAC,CAAA;AACrC,EAAA,MAAM,SAAA,GAAA,CAAa,qBAAqB,IAAA,IAAQ,GAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,QAAA,CAAS,KAAA,CAAM,YAAY,CAAC,CAAA;AACtD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,MAAA,GAAS,EAAA;AACf,EAAA,MAAM,YAAY,KAAA,CAAM,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAA,CAAS;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAA,EAAY,WAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,QAAA,EAAU,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AAED,EAAA,MAAM,gBAAA,GAAmB,OAAO,CAAC,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,YAAY,CAAA,GAAI,gBAAA,CAAiB,OAAA;AAC1D,IAAA,OAAO,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAA,KAAa;AACZ,QAAA,MAAM,IAAA,GAAO,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAA,CAAiB,OAAA;AAAA,UACzC,SAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,SAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,KAAA,CAAM,aAAa,CAAC,CAAA;AAC9C,QAAA,IAAI,SAAA,KAAc,CAAA,IAAK,SAAA,KAAc,GAAA,EAAK;AACxC,UAAA,MAAA,GAAS,CAAA;AAAA;AAEX,QAAA,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,MAAM,IAAI,MAAM,CAAA;AAAA,OAC7C;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAA,GAAU,MAAM,YAAY,CAAA;AAAA;AAC/C,KACF;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,SAAS,SAASD,MAAAA,EAAe;AAC/B,IAAA,MAAM,QAAQ,WAAA,CAAY,SAAA,CAAU,CAAC,KAAA,KAAUA,UAAS,KAAK,CAAA;AAE7D,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,WAAA,CAAY,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AAAA;AAGpD,EAAA,MAAM,YAAA,GAAe,CAACA,MAAAA,KAAkB;AACtC,IAAA,MAAM,UAAA,GAAa,GAAA;AACnB,IAAA,MAAM,aAAa,SAAA,GAAY,SAAA;AAC/B,IAAA,MAAM,KAAA,GAAA,CAAUA,MAAAA,GAAQ,SAAA,IAAa,UAAA,GAAc,UAAA;AAEnD,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,GACzB;AAEA,EAAA,2BACG,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAA,EAAY;AAAA,MACtB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAA,CAAA,EAAI,QAAA,GAAW,CAAA,GAAI,MAAM,KAAK,QAAA,GAAW,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAA,GAAS,CACtB,CAAA,CAAA,EAAI,QAAA,GAAW,SAAS,CAAC,CAAA,CAAA;AAAA,MAEzB,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,IAAG,MAAA,EACJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,MAAA,EACE,MAAA,IAAA,CACE,KAAA,CAAM,SAAS,KAAK,CAAA,IAAK,CAAA,GAAA,CACtB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,GAAA,GACzB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,CAAA;AAAA,gBAC3B,UAAA,EAAY,WAAA;AAAA,gBACZ,QAAA,EAAU;AAAA,eACX,CAAA;AAAA,cACD,QAAQ,cAAA,IAAkB,WAAA;AAAA,cAC1B,IAAA,EAAK,MAAA;AAAA,cACL,aAAA,EAAc,OAAA;AAAA,cACd,WAAA,EAAA,CACG,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,CAAA,GAAA,CACrB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,GAAA,GACzB,KAAA,CAAM,SAAS,CAAA,IAAK;AAAA;AAAA,WAE7B;AAAA,0BAEA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,MAAA,EACE,MAAA,IAAA,CACE,KAAA,CAAM,SAAS,KAAK,CAAA,IAAK,CAAA,GAAA,CACtB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,GAAA,GACzB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,CAAA;AAAA,gBAC3B,UAAA,EAAY,GAAA;AAAA,gBACZ,QAAA,EACE,YAAA,CAAa,KAAK,CAAA,KAAM,GAAA,GACpB,GAAA,GAAM,YAAA,CAAa,KAAK,CAAA,GACxB,GAAA,GAAM,YAAA,CAAa,KAAK;AAAA,eAC/B,CAAA;AAAA,cACD,MAAA,EAAQ,CAAA,CAAA,EAAI,SAAA,CAAU,QAAA,CAAS,KAAK,CAAC,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,cACxE,OAAA,EAAQ,KAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,aAAA,EAAc,SAAA;AAAA,cACd,WAAA,EAAA,CAAA,CACI,KAAA,CAAM,SAAS,CAAA,IAAK,KAAK,CAAA,GAAA,CACtB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,GAAA,GACzB,KAAA,CAAM,SAAS,KAAK,CAAA,IAAM,CAAA;AAAA,cAEjC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAA,CAAY;AAAA,gBACpB,MAAA,EACE,MAAA,IAAA,CACE,KAAA,CAAM,SAAS,KAAK,CAAA,IAAK,CAAA,GAAA,CACtB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,GAAA,GACzB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,CAAA;AAAA,gBAC3B,UAAA,EAAY,GAAA;AAAA,gBACZ,QAAA,EACE,YAAA,CAAa,KAAK,CAAA,KAAM,GAAA,GACpB,GAAA,GAAM,YAAA,CAAa,KAAK,CAAA,GACxB,GAAA,GAAM,YAAA,CAAa,KAAK;AAAA,eAC/B,CAAA;AAAA,cACD,MAAA,EAAQ,SAAS,KAAK,CAAA;AAAA,cACtB,OAAA,EAAQ,GAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,aAAA,EAAc,SAAA;AAAA,cACd,WAAA,EAAA,CACG,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,CAAA,GAAA,CACrB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA,IAAK,GAAA,GACzB,KAAA,CAAM,SAAS,CAAA,IAAK,CAAA;AAAA,cAE3B,KAAA,EAAO;AAAA,gBACL,UAAA,EAAY;AAAA;AACd;AAAA;AACF,SAAA,EACF,CAAA;AAAA,4BACC,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,CAAA,EAAG,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA;AAAA,cACvC,UAAA,EAAY;AAAA,aACd;AAAA,YACA,iBAAA,EAAkB,SAAA;AAAA,YAClB,IAAA,EAAM,iBAAA;AAAA,YAEL,QAAA,EAAA;AAAA,cAAA,YAAA,KAAiB,OAAA,IAAW,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAC7D,IAAA,GACA,EAAA;AAAA,cACH,MAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,CAAA,GAAI,GAAA,GAAM,EAAA;AAAA,cAC7C,YAAA,KAAiB,KAAA,IAAS,CAAC,CAAC,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,GAC3D,IAAA,GACA;AAAA;AAAA;AAAA,SACN,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;;ACpLO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAA;AAAA,EACA;AACF,CAAA,KAUM;AACJ,EAAA,MAAM,aAAA,GAA2C,QAAA;AAAA,IAC/C,CAAC,UAAA,EAAY,MAAA,EAAQ,SAAS,MAAA,EAAQ,WAAA,EAAa,OAAO,IAAI,CAAA;AAAA,IAC9D;AAAA,MACE,IAAA,KAAS,YAAA;AAAA,MACT,IAAA,KAAS,QAAA;AAAA,MACT,IAAA,KAAS,SAAA;AAAA,MACT,IAAA,KAAS,QAAA;AAAA,MACT,IAAA,KAAS,aAAA;AAAA,MACT,IAAA,KAAS,OAAA;AAAA,MACT,IAAA,KAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,aAAA,GAAkC,IAAA;AAIxC,EAAA,MAAM,UAAA,GAAa,aAAA;AACnB,EAAA,IAAI,cAAwB,EAAC;AAC7B,EAAA,IAAI,cAAwB,EAAC;AAE7B,EAAA,IAAI,IAAA,CAAK,SAAS,YAAA,CAAa,IAAA,CAAK,MAAM,IAAI,CAAA,CAAE,SAAS,CAAA,EAAG;AAC1D,IAAA,WAAA,GAAc,KAAA,CAAM,IAAA;AAAA,MAClB,IAAI,GAAA;AAAA,QACF,aAAa,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CACzB,GAAA,CAAI,CAAC,IAAA,KAAS;AACb,UAAA,OAAO,CAAC,OAAO,IAAA,CAAK,OAAO,GAAG,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,SACnD,EACA,IAAA,EAAK,CACL,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC;AAAA;AACzB,KACF;AAEA,IAAA,WAAA,GAAc,aAAa,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CACvC,GAAA,CAAI,CAAC,IAAA,KAAS;AACb,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,CACxB,QAAA,CAAS,CAAA,GAAA,CAAK,GAAA,GAAM,IAAA,CAAK,YAAA,IAAgB,GAAG,CAAA,CAC5C,qBAAA,EAAsB;AAAA,KAC1B,EACA,IAAA,EAAK;AAAA,GACV,MAAO;AACL,IAAA,WAAA,GAAc,UAAA,CAAW,WAAA;AACzB,IAAA,WAAA,GAAc,UAAA,CAAW,WAAA;AAAA;AAG3B,EAAA,UAAA,CAAW,WAAA,GAAc,WAAA;AACzB,EAAA,UAAA,CAAW,WAAA,GAAc,WAAA;AACzB,EAAA,uBAAO,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,CAAA;AACxC;;AC/CAG,OAAA,CAAQ,QAAA;AAAA,EACN,aAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA;AAmCO,MAAM,cAAA,GAAiB,CAC5B,KAAA,KAOG;AACH,EAAA,MAAM,cAA0B,MAAA,CAAO,MAAA;AAAA,IACrC;AAAA,MACE,SAAA,EAAW,EAAE,QAAA,EAAU,CAAC,EAAE,IAAA,EAAM,CAAC,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAA,MACpD,IAAA,EAAM,KAAA;AAAA,MACN,SAAA,EAAW,GAAA;AAAA,MACX,UAAA,EAAY,IAAA;AAAA,MACZ,UAAA,EAAY,IAAA;AAAA,MACZ,eAAA,EAAiB,IAAA;AAAA,MACjB,eAAA,EAAiB,IAAA;AAAA,MACjB,SAAA,EAAW,IAAA;AAAA,MACX,UAAA,EAAY,EAAA;AAAA,MACZ,UAAA,EAAY,EAAA;AAAA,MACZ,WAAA,EAAa;AAAA,KACf;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,UAAA,EAAW;AAC7B,EAAA,MAAM,QAAA,GAAW,OAAgB,IAAI,CAAA;AAErC,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA;AACT,IAAA,OAAA,CAAQ,MAAM,qDAAqD,CAAA;AAErE,EAAA,MAAM,IAAA,GAAkB,QAAQ,MAAM;AACpC,IAAA,MAAM,MAAA,GAAW,KAAA,CAAM,MAAA,EACnB,MAAA,IAAU,EAAC;AAEf,IAAA,OAAO;AAAA,MACL,QAAA,EAAA,CAAW,WAAA,CAAY,IAAA,KAAS,WAAA,GAC5B,YAAA,CAAa,WAAA,CAAY,SAAA,CAAU,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,OAAA,KAAY;AAC5D,QAAA,IAAI,GAAA,GAAM,CAAA;AACV,QAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAsB,CAAC,SAAA,KAAc;AAChE,UAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,YAAA,MAAM,YAAA,GAAe,GAAA;AACrB,YAAA,GAAA,IAAO,SAAA;AACP,YAAA,OAAO,CAAC,cAAc,GAAG,CAAA;AAAA,WAC3B,MAAO;AACL,YAAA,OAAO,SAAA;AAAA;AACT,SACD,CAAA;AAED,QAAA,OAAO;AAAA,UACL,GAAG,OAAA;AAAA,UACH,IAAA,EAAM;AAAA,SACR;AAAA,OACD,IACD,WAAA,CAAY,SAAA,CAAU,UACxB,GAAA,CAAI,CAAC,SAAS,YAAA,KAAiB;AAC/B,QAAA,MAAM,QAAA,GACJ,YAAA,CAAa,WAAA,CAAY,SAAA,CAAU,QAAQ,CAAA,CAAE,KAAA;AAAA,UAC3C,CAACC,QAAAA,KAAY,YAAA,CAAaA,QAAAA,CAAQ,IAAI,EAAE,MAAA,KAAW;AAAA,SACrD,IAAK,YAAY,IAAA,KAAS,KAAA;AAE5B,QAAA,MAAM,kBACJ,OAAA,CAAQ,eAAA,CACR,GAAA,CAAI,CAAC,aAAa,CAAA,KAAM;AACxB,UAAA,IAAI,cAAwB,EAAC;AAC7B,UAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACnC,YAAA,MAAM,KAAA,GAAQ,YAAY,WAAA,EAAY;AACtC,YAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,cAAA,MAAM,4BAAA,GAEF;AAAA,gBACF,MAAA,EAAQ,cAAA;AAAA,kBACN,KAAA,CAAM,MAAA;AAAA;AAAA,kBAEN,MAAA,CAAO,KAAA,CAAM,WAAA,EAAa,CAAA,EAAG;AAAA;AAC/B,eACF;AAEA,cAAA,IACE,OAAO,4BAAA,CAA6B,MAAA,KAAW,QAAA,IAC/C,6BAA6B,MAAA,EAC7B;AACA,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,IAAI,WAAA,CAAY,SAAS,KAAA,EAAO;AAC9B,oBAAA,WAAA,GAAc,MAAA,CAAO,MAAA;AAAA,sBACnB,4BAAA,CAA6B;AAAA,qBAC/B,CAAE,GAAA,CAAI,CAAC,QAAA,KAAa;AAClB,sBAAA,OAAO,MAAA,CACJ,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,qBAC1C,CAAA;AAAA,mBACH,MAAO;AACL,oBAAA,WAAA,GAAc,IAAI,KAAA,CAAc,CAAC,CAAA,CAC9B,IAAA;AAAA,sBACC,OAAO,MAAA,CAAO,4BAAA,CAA6B,MAAM,CAAA,CAC/C,eAAe,CACjB;AAAA,qBACF,CACC,GAAA,CAAI,CAAC,QAAA,KAAa;AACjB,sBAAA,OAAO,MAAA,CACJ,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,qBAC1C,CAAA;AAAA;AACL,iBACF,MAAO;AACL,kBAAA,WAAA,GAAc,IAAI,KAAA,CAAc,CAAC,CAAA,CAAE,IAAA;AAAA,oBACjC,MAAA,CAAO,MAAA,CAAO,4BAAA,CAA6B,MAAM,CAAA,CAAE,GAAA;AAAA,sBACjD,CAAC,QAAA,KAAa;AACZ,wBAAA,OAAO,MAAA,CACJ,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA;AAC3C,qBACF,CAAE,eAAe,CAAC;AAAA,mBACpB;AAAA;AACF;AACF,aACF,MAAO;AACL,cAAA,WAAA,GAAc,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA;AACzD,WACF,MAAO;AACL,YAAA,OAAO,WAAA,CAAY,YAAA,GAAe,WAAA,CAAY,MAAM,CAAA;AAAA;AAGtD,UAAA,OAAO,WAAA,CAAY,IAAI,CAAC,CAAA;AAAA,SACzB,CAAA;AAED,QAAA,MAAM,oBAAA,GAAuB,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAA,KAAM;AACtD,UAAA,MAAM,KAAA,GAAQ,UAAU,CAAC,CAAA;AAEzB,UAAA,OAAA,CACE,KAAA,CAAM,MAAA,EAAO,GAAI,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,EAAE,CAAA,EACpD,WAAA,EAAY;AAAA,SACf,CAAA;AAED,QAAA,OAAO;AAAA,UACL,GAAG,OAAA;AAAA,UACH,oBAAA;AAAA,UACA,eAAA;AAAA,UACA,WAAA,EAAc,QAAQ,WAAA,CAAsC,GAAA;AAAA,YAC1D,CAAC,OAAO,CAAA,KAAM;AACZ,cAAA,IAAI,oBAA8B,EAAC;AACnC,cAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,gBAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,kBAAA,MAAM,wBAAA,GAEF;AAAA,oBACF,MAAA,EAAQ,cAAA;AAAA,sBACN,KAAA,CAAM,MAAA;AAAA;AAAA,sBAEN,MAAA,CAAO,KAAA,CAAM,WAAA,EAAa,CAAA,EAAG;AAAA;AAC/B,mBACF;AAEA,kBAAA,IACE,OAAO,wBAAA,CAAyB,MAAA,KAAW,QAAA,IAC3C,yBAAyB,MAAA,EACzB;AACA,oBAAA,iBAAA,GAAoB,MAAA,CAAO,MAAA;AAAA,sBACzB,wBAAA,CAAyB;AAAA,qBAC3B,CAAE,GAAA,CAAI,CAAC,QAAA,KAAa;AAClB,sBAAA,OAAO,MAAA,CACJ,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,qBAC1C,CAAA;AAAA;AACH,iBACF,MAAO;AACL,kBAAA,iBAAA,GAAoB;AAAA,oBAClB,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA;AAAA,mBACF;AAAA;AACF,eACF,MAAO;AACL,gBAAA,OAAO,KAAA,CAAM,YAAA,GAAe,KAAA,CAAM,MAAM,CAAA;AAAA;AAE1C,cAAA,OAAO,iBAAA,CAAkB,IAAI,CAAC,CAAA;AAAA;AAChC;AACF,SACF;AAAA,OACD,CAAA;AAAA,MACD,MAAA,EAAQ,YAAY,SAAA,CAAU;AAAA,KAChC;AAAA,GACF,EAAG;AAAA,IACD,YAAY,SAAA,CAAU,QAAA;AAAA,IACtB,YAAY,SAAA,CAAU,MAAA;AAAA,IACtB,WAAA,CAAY,IAAA;AAAA,IACZ,KAAA,CAAM,MAAA;AAAA,IACN,KAAA,CAAM;AAAA,GACP,CAAA;AAED,EAAA,MAAM,OAAA,GAAwB,QAAQ,MAAM;AAC1C,IAAA,OAAO;AAAA,MACL,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ;AAAA,UACN,QAAA,EAAU,OAAA;AAAA,UACV,SAAS,WAAA,CAAY,UAAA;AAAA,UACrB,OAAA,EAAS,CAAC,CAAA,EAAG,UAAA,EAAY,EAAA,KAAO;AAC9B,YAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,YAAA,IAAI,KAAA,EAAO;AACT,cAAA,MAAM,gBAAgB,IAAI,KAAA;AAAA,gBACxB,WAAA,CAAY,IAAA,KAAS,KAAA,GACjB,WAAA,CAAY,SAAA,CAAU,QAAA,CAAS,MAAA,GAC/B,WAAA,CAAY,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,CAAK;AAAA,gBAE1C,IAAA,CAAK,CAAC,EACN,GAAA,CAAI,CAACC,IAAG,CAAA,KAAM;AACb,gBAAA,OAAO;AAAA,kBACL,YAAA,EACE,WAAA,CAAY,IAAA,KAAS,KAAA,GAAQ,IAAI,UAAA,CAAW,YAAA;AAAA,kBAC9C,OACE,WAAA,CAAY,IAAA,KAAS,KAAA,GAAS,UAAA,CAAW,SAAS,CAAA,GAAK;AAAA,iBAC3D;AAAA,eACD,CAAA;AAEH,cAAA,KAAA,CAAM,iBAAA,CAAkB,CAAC,GAAG,aAAa,CAAC,CAAA;AAC1C,cAAA,KAAA,CAAM,OAAA,EAAS,iBAAA,CAAkB,CAAC,GAAG,aAAa,CAAA,EAAG;AAAA,gBACnD,CAAA,EAAG,CAAA;AAAA,gBACH,CAAA,EAAG;AAAA,eACJ,CAAA;AACD,cAAA,KAAA,CAAM,MAAA,EAAO;AAAA;AACf,WACF;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,MAAA,CAAO,MAAM,CAAA,EAAG;AACd,cAAA,IAAI,WAAA,CAAY,SAAS,KAAA,EAAO;AAC9B,gBAAA,OAAA,CAAQ,IAAA,CAAK,KAAA,IAAS,CAAA,KAAM,KAAA,CAAM,gBAAA,IAAoB,EAAA,CAAA;AAAA,eACxD,MAAO;AACL,gBAAA,OAAA,CACG,IAAA,CAAK,YAAA,IAAgB,CAAA,KAAM,KAAA,CAAM,gBAAA,IAAoB,EAAA,CAAA;AAAA;AAE1D;AACF;AACF,SACF;AAAA,QACA,OAAA,EAAS;AAAA,UACP,SAAA,EAAW;AAAA,YACT,MAAM,WAAA,EAAmD;AACvD,cAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAA,CAAQ,KAAA,IAAS,EAAA;AAC5C,cAAA,IAAI,SAAS,WAAA,CAAY,cAAA;AAEzB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,MAAM,CAAC,CAAA,EAAG;AAC7B,gBAAA,MAAM,aAA+B,WAAA,CAAY,GAAA;AAIjD,gBAAA,MAAM,SAAA,GAAY,UAAA,CAAW,CAAC,CAAA,GAAI,WAAW,CAAC,CAAA;AAC9C,gBAAA,MAAA,GAAS,GAAG,SAAS,CAAA,CAAA;AAAA;AAEvB,cAAA,IAAI,WAAA,GAAc,EAAA;AAClB,cAAA,IAAI,WAAA,CAAY,UAAA,IAAc,WAAA,CAAY,IAAA,KAAS,KAAA,EAAO;AACxD,gBAAA,WAAA,IAAe,MAAA;AACf,gBAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,kBAAA,WAAA,IAAe,IAAA,GAAO,MAAA;AAAA;AACxB,eACF,MAAA,IAAW,YAAY,UAAA,EAAY;AACjC,gBAAA,WAAA,IAAe,MAAA;AAAA;AAEjB,cAAA,OAAO,WAAA;AAAA,aACT;AAAA,YACA,MAAM,YAAA,EAAsD;AAC1D,cAAA,IACG,WAAA,CAAY,SAAS,KAAA,IACpB,CAAC,YAAY,eAAA,IACb,WAAA,CAAY,SAAA,KAAc,GAAA,IAC3B,WAAA,CAAY,IAAA,KAAS,SACpB,CAAC,WAAA,CAAY,eAAA,IACb,WAAA,CAAY,SAAA,KAAc,GAAA,IAC3B,YAAY,IAAA,KAAS,KAAA,IAAS,CAAC,WAAA,CAAY,UAAA,EAC5C;AACA,gBAAA,OAAO,EAAA;AAAA;AAET,cAAA,OAAO,YAAA,CAAa,CAAC,CAAA,CAAE,KAAA;AAAA;AACzB,WACF;AAAA,UACA,OAAA,EAAA,CACG,WAAA,CAAY,SAAA,KAAc,GAAA,GACvB,WAAA,CAAY,kBACZ,WAAA,CAAY,eAAA,KAChB,WAAA,CAAY,UAAA,IACZ,WAAA,CAAY;AAAA;AAChB,OACF;AAAA,MACA,aAAa,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,WAAA,IAAe,GAAG,CAAC,CAAA;AAAA,MACrD,WAAW,WAAA,CAAY,SAAA;AAAA,MACvB,MAAA,EAAQ;AAAA,QACN,CAAA,EAAG;AAAA,UACD,OAAA,EAAS,YAAY,IAAA,KAAS,KAAA;AAAA,UAC9B,KAAA,EAAO;AAAA,YACL,SAAS,WAAA,CAAY,eAAA;AAAA,YACrB,MACE,WAAA,CAAY,SAAA,KAAc,GAAA,GACtB,WAAA,CAAY,aACZ,WAAA,CAAY;AAAA,WACpB;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,CAAC,CAAC,WAAA,CAAY;AAAA,WACzB;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,SAAS,WAAA,CAAY;AAAA;AACvB,SACF;AAAA,QACA,CAAA,EAAG;AAAA,UACD,IAAA,EAAO,WAAA,CAAY,SAAA,KAAc,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA,UAC7C,OAAA,EAAS,YAAY,IAAA,KAAS,KAAA;AAAA,UAC9B,KAAA,EAAO;AAAA,YACL,SAAS,WAAA,CAAY,eAAA;AAAA,YACrB,MACE,WAAA,CAAY,SAAA,KAAc,GAAA,GACtB,WAAA,CAAY,aACZ,WAAA,CAAY;AAAA,WACpB;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,CAAC,CAAC,WAAA,CAAY;AAAA,WACzB;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,SAAS,WAAA,CAAY;AAAA;AACvB;AACF;AACF,KACF;AAAA,GACF,EAAG;AAAA,IACD,WAAA,CAAY,WAAA;AAAA,IACZ,YAAY,SAAA,CAAU,QAAA;AAAA,IACtB,WAAA,CAAY,SAAA;AAAA,IACZ,WAAA,CAAY,UAAA;AAAA,IACZ,WAAA,CAAY,SAAA;AAAA,IACZ,WAAA,CAAY,UAAA;AAAA,IACZ,WAAA,CAAY,eAAA;AAAA,IACZ,WAAA,CAAY,eAAA;AAAA,IACZ,WAAA,CAAY,IAAA;AAAA,IACZ,WAAA,CAAY,UAAA;AAAA,IACZ,WAAA,CAAY,UAAA;AAAA,IACZ,KAAA,CAAM;AAAA,GACP,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI;AAAA,QACF,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO,MAAA;AAAA,UACP,MAAA,EAAQ;AAAA;AACV,OACF;AAAA,MACA,EAAA,EAAI,YAAY,EAAA,IAAM,MAAA;AAAA,MACtB,SAAA,EAAW,YAAY,OAAA,IAAW,EAAA;AAAA,MAClC,IAAA,EAAM,WAAA,CAAY,IAAA,KAAS,WAAA,GAAc,QAAQ,WAAA,CAAY,IAAA;AAAA,MAC7D,OAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA,EAAK;AAAA;AAAA,GACP;AAEJ;;ACjaA,SAAS,EAAE,KAAA,EAA4C;AACrD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAEd,IAAI,CAAA;AACd,EAAA,MAAM,SAAA,GAAY,YAAY,KAAK,CAAA;AAEnC,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,CAAC,CAAA,KAAyB;AACzD,IAAA,aAAA,CAAc,MAAM;AAClB,MAAA,OAAO,CAAA;AAAA,KACR,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,CAA4B;AAAA,IAC9D,GAAG,KAAA;AAAA,IACH,IAAA,EAAM,MAAM,IAAA,EAAM,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,IACnD,IAAA,EAAM,MAAM,IAAA,EAAM,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,IACnD,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,IAAI,CAAC,YAAA,CAAa,SAAA,CAAU,OAAA,EAAS,KAAK,CAAA,EAAG;AAC3C,IAAA,aAAA,CAAc,CAAC,CAAA,MAAO;AAAA,MACpB,GAAG,CAAA;AAAA,MACH,GAAG,KAAA;AAAA,MACH,IAAA,EAAO,MAAM,IAAA,CAAoB,MAAA;AAAA,QAC/B,CAAC,YAAY,CAAC,OAAA,CAAQ,MAAM,CAAC,GAAA,KAAQ,QAAQ,EAAE;AAAA,OACjD;AAAA,MACA,IAAA,EAAM,MAAM,IAAA,EAAM,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,MACnD,IAAA,EAAM,MAAM,IAAA,EAAM,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,MACnD,MAAO,KAAA,CAAM,IAAA,CAAoB,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,IAAA,KAAS;AAClD,QAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA;AAC9B,QAAA,OAAO,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,OACxB,CAAA,GACG,CAAA,CAAE,IAAA,GACF;AAAC,KACP,CAAE,CAAA;AAAA;AAEJ,EAAA,MAAM,QAAA,GAAW,OAAO,KAAK,CAAA;AAC7B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAA,CAAS,OAAA;AAAS,MAAA;AACtB,IAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAEnB,IAAA,OAAO,iBAAiB,CAAA,CAAE,IAAA,CAAK,CAACC,KAAAA,KAAS;AACvC,MAAA,OAAA,CAAQ,qBAAA,CAAuBA,KAAAA,CAAK,OAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,KAC7D,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,IAAA;AAAM,IAAA,OAAO,IAAA;AAElB,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,WAAW,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,gBAAgB,IAAI,CAAA;AAAA,MAChD,GAAG,UAAA;AAAA,MACJ,SAAA,EAAW,QAAA;AAAA,MACX,uBAAA,EAAyB;AAAA;AAAA,GAC3B;AAEJ;AAEO,MAAM,mBAAA,GAAsB,IAAA;AAAA,EACjC,CAAC,KAAA,KAA+C;AAC9C,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,CAAC,EAAA,KAAO,EAAA,CAAG,eAAA,EAAgB;AAAA,QACpC,WAAA,EAAa,CAAC,EAAA,KAAO,EAAA,CAAG,eAAA,EAAgB;AAAA,QACxC,MAAA,EAAQ,CAAC,EAAA,KAAO,EAAA,CAAG,eAAA,EAAgB;AAAA,QACnC,WAAA,EAAa,CAAC,EAAA,KAAO,EAAA,CAAG,eAAA,EAAgB;AAAA,QAExC,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAG,GAAG,KAAA,EAAO;AAAA;AAAA,KAChB;AAAA;AAGN;;ACzEO,MAAM,cAAA,GAAiB,CAAC,KAAA,KAA0C;AACvE,EAAA,MAAM,gBAAA,GAA+B;AAAA,IACnC,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,MAAM,KAAA,CAAM,IAAA;AAAA;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,SAAA,EAAW,KAAA,CAAM,SAAA,KAAc,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA;AAAA,IAC3C,QAAQ,EAAC;AAAA,IACT,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,QAAA,EAAS;AAAA,IACtC,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,QAAA,EAAS;AAAA,IACtC,YAAY,KAAA,CAAM,UAAA;AAAA,IAClB,YAAY,KAAA,CAAM,UAAA;AAAA,IAClB,iBACE,KAAA,CAAM,IAAA,KAAS,QAAQ,MAAA,GAAY,KAAA,CAAM,gBAAgB,QAAA,EAAS;AAAA,IACpE,iBACE,KAAA,CAAM,IAAA,KAAS,QAAQ,MAAA,GAAY,KAAA,CAAM,gBAAgB,QAAA;AAAS,GACtE;AAEA,EAAA,MAAM,aAAa,YAAA,CAAa,KAAA,CAAM,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,OAAA,KAAY;AAC/D,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,aAAa,OAAA,CAAQ,IAAI,EAC9B,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,KAAA,IAAS,QAAQ,KAAA,IAAS,KAAA,CAAM,KAAK,CAAA,CAClD,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA;AAAA,MAC7B,MAAA,EAAQ,aAAa,OAAA,CAAQ,IAAI,EAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA;AAAA,MACrD,MAAA,EAAQ,aAAa,OAAA,CAAQ,IAAI,EAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK;AAAA,KACvD;AAAA,GACD,CAAA;AAED,EAAA,UAAA,CAAW,CAAC,CAAA,CAAE,MAAA,CAAO,OAAA,CAAQ,CAAC,UAAU,gBAAA,CAAiB,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AAE3E,EAAA,YAAA,CAAa,KAAA,CAAM,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,OAAA,KAAmC;AACvE,IAAA,MAAM,kBAAA,GAAqB;AAAA,MACzB,eAAA,EAAiB,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA,CACvC,GAAA;AAAA,QAAI,CAAC,MACJ,CAAA,CAAE,KAAA,KAAU,SAAS,CAAA,CAAE,KAAA,GAAQ,OAAA,CAAQ,KAAA,IAAS,KAAA,CAAM;AAAA,QAEvD,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA;AAAA,MAC7B,WAAA,EAAa,aAAa,OAAA,CAAQ,IAAI,EACnC,GAAA,CAAI,CAAC,MAAM,OAAA,CAAQ,WAAA,IAAe,EAAE,KAAA,IAAS,KAAA,CAAM,KAAK,CAAA,CACxD,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA;AAAA,MAC7B,WAAA,EAAa,QAAA,CAAS,OAAA,CAAQ,WAAW,CAAA;AAAA,MACzC,OAAO,OAAA,CAAQ,KAAA;AAAA,MACf,IAAA,EAAM,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA,CAAE,GAAA;AAAA,QAAI,CAAC,SAAA,KACpC,UAAA,CAAW,SAAA,CAAU,KAAK;AAAA;AAC5B,KACF;AAEA,IAAA,gBAAA,CAAiB,QAAA,CAAS,KAAK,kBAAkB,CAAA;AAAA,GAClD,CAAA;AACD,EAAA,OAAO,gBAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/widgets/speedMeter/SpeedMeter.tsx","../src/widgets/oxford/Oxford.tsx","../src/widgets/counter/Counter.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/thermometer/util.ts","../src/widgets/custom/util.ts","../src/widgets/custom/useCustomWidget.ts","../src/widgets/thermometer/Thermometer.tsx","../src/widgets/scale/Scale.tsx","../src/widgets/ring/Ring.tsx","../src/widgets/WidgetComponent.tsx","../src/charts/chartJsRenderer/ChartComponent.tsx","../src/pivot/PivotTable.tsx","../src/charts/utils/parseChartData.ts"],"sourcesContent":["import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetSpeedMeterProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 30;\r\nconst END_ANGLE = 330;\r\n\r\nexport const SpeedMeter = ({\r\n backgroundColor,\r\n colorRanges,\r\n currentValue,\r\n currentValueColor,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetSpeedMeterProps>) => {\r\n const allTicks = false;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: allTicks\r\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\r\n : valueRanges[valueRanges.length - 1] / 10 + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex(\r\n (range) => noNaN(value) <= noNaN(range),\r\n );\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n }\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 0,\r\n endAngle: 360,\r\n })}\r\n stroke=\"gray\"\r\n fill={backgroundColor ?? 'none'}\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n />\r\n {valueRanges.map((innerValue, i) => {\r\n const valueToAngle = (value: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n const angle =\r\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <g key={`${innerValue}_${i}`}>\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -50,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -55,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n key={`${innerValue}_${i}`}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n </g>\r\n );\r\n })}\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n />\r\n {showText && (\r\n <text\r\n fill=\"black\"\r\n {...gauge.getLabelProps({ angle, offset: 20 })}\r\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n y={diameter / 2}\r\n fill={currentValueColor}\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport tinycolor from 'tinycolor2';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetOxfordProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 45;\r\nconst END_ANGLE = 315;\r\n\r\nexport const Oxford = ({\r\n backgroundColor,\r\n colorRanges,\r\n currentValue,\r\n currentValueColor,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetOxfordProps>) => {\r\n const allTicks = true;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 10 + 1,\r\n diameter: diameter,\r\n });\r\n const gauge2 = useGauge({\r\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex(\r\n (range) => noNaN(value) <= noNaN(range),\r\n );\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n }\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 0,\r\n endAngle: 360,\r\n })}\r\n stroke=\"black\"\r\n opacity=\"1\"\r\n fill={\r\n backgroundColor !== '' && backgroundColor !== undefined\r\n ? tinycolor(backgroundColor)\r\n .setAlpha(0.5)\r\n .toPercentageRgbString()\r\n : 'none'\r\n }\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n {valueRanges.map((innerValue, i) => {\r\n if (!valueRanges[i + 1]) {\r\n return null;\r\n }\r\n\r\n const valueToAngle = (value: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n const angle =\r\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <g key={`${innerValue}_${i}`}>\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={'black'}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"square\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -20,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.1\"\r\n fill=\"none\"\r\n strokeLinecap=\"butt\"\r\n strokeWidth={75}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -55,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n key={`${innerValue}_${i}`}\r\n stroke={getColor(innerValue) || '#999'}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"butt\"\r\n strokeWidth={10}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </g>\r\n );\r\n })}\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle, i) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n {showText && (\r\n <text\r\n fill={'black'}\r\n {...gauge.getLabelProps({\r\n angle,\r\n offset: 20,\r\n })}\r\n style={{\r\n fontSize: `${scaleValuesSize ?? 30}px`,\r\n }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n {allTicks &&\r\n gauge2.ticks.map((angle, i) => {\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={2}\r\n {...gauge.getTickProps({\r\n angle,\r\n length: 3,\r\n })}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n alignmentBaseline=\"text-before-edge\"\r\n y={diameter / 5}\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n fill={currentValueColor}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetCounterProps } from '../types';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const Counter = ({\r\n addBorder = false,\r\n colorRanges,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n maxValue,\r\n minValue,\r\n currentValueFontSize,\r\n unit: outerUnit,\r\n valueDecimals,\r\n valueType,\r\n width,\r\n unitPosition,\r\n}: TApiaWidgetBaseProps<TApiaWidgetCounterProps>) => {\r\n const unit = outerUnit?.split(',,')[1];\r\n const [value, setValue] = useState(noNaN(currentValue) ?? 0);\r\n const actualWidth = ((currentValueFontSize as number) ?? 80) * 3 * 0.8;\r\n const diameter = actualWidth;\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex(\r\n (range) => noNaN(value) <= noNaN(range),\r\n );\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = noNaN(currentValue) - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n let factor = Math.pow(10, noNaN(valueDecimals));\r\n if (valueType === 0 || valueType === '0') {\r\n factor = 1;\r\n }\r\n setValue(Math.round(step * factor) / factor);\r\n },\r\n () => {\r\n lastCurrentValue.current = noNaN(currentValue);\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [noNaN(currentValue)]);\r\n\r\n return (\r\n <Box sx={{ position: 'relative' }} className=\"widgetContainer__Counter\">\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={undefined}\r\n >\r\n <g id=\"arcs\">\r\n {addBorder && `${value}`.length < 4 && (\r\n <ellipse\r\n cx={Math.max(width, height) / 2}\r\n cy={Math.max(width, height) / 2}\r\n rx={Math.max(width, height) / 5}\r\n ry={Math.max(width, height) / 5}\r\n stroke=\"gray\"\r\n opacity=\"0.2\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n )}\r\n </g>\r\n </svg>\r\n <svg\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n <text\r\n x={Math.max(width, height) / 2}\r\n y={Math.max(width, height) / 2 - 5}\r\n textAnchor=\"middle\"\r\n style={{\r\n fontSize: `${currentValueFontSize ?? 80}px`,\r\n transition: 'fill 0.5s',\r\n }}\r\n alignmentBaseline=\"central\"\r\n fill={getColor(value)}\r\n >\r\n {unitPosition === 'START' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {unitPosition === 'END' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n </text>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetTLightProps } from '../types';\r\nimport { useCallback, useRef, useState, useEffect } from 'react';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const TLight = ({\r\n addBorder = false,\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n unit: outerUnit,\r\n currentValueColor,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n unitPosition,\r\n}: TApiaWidgetBaseProps<TApiaWidgetTLightProps>) => {\r\n const unit = outerUnit?.split(',,')[1];\r\n const [value, setValue] = useState(noNaN(currentValue));\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n\r\n const hasRendered = useRef(false);\r\n\r\n const onRenderSvg = useCallback(\r\n (el: SVGSVGElement) => {\r\n if (!el || hasRendered.current) return;\r\n\r\n hasRendered.current = true;\r\n\r\n const svgElement = el;\r\n const pathElement = el.querySelector('#TLight_arcs');\r\n\r\n if (!(svgElement && pathElement)) {\r\n return;\r\n }\r\n\r\n const pathBox = pathElement.getBoundingClientRect();\r\n const svgBox = svgElement.getBoundingClientRect();\r\n const pathX = pathBox.x - svgBox.x;\r\n const pathY = pathBox.y - svgBox.y;\r\n\r\n const viewBox = `${pathX - diameter / 2} ${\r\n pathY - diameter / 2\r\n } ${diameter} ${diameter}`;\r\n\r\n svgElement.setAttribute('viewBox', viewBox);\r\n\r\n svgElement.style.visibility = 'visible';\r\n },\r\n [diameter],\r\n );\r\n\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = noNaN(currentValue) - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n\r\n let factor = Math.pow(10, noNaN(valueDecimals));\r\n if (valueType === 0 || valueType === '0') {\r\n factor = 1;\r\n }\r\n setValue(Math.round(step * factor) / factor);\r\n },\r\n () => {\r\n lastCurrentValue.current = noNaN(currentValue);\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [noNaN(currentValue)]);\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n style={{ visibility: 'hidden' }}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n id=\"TLight_svg\"\r\n ref={onRenderSvg}\r\n viewBox={`-${diameter / 2} -${diameter / 2} ${diameter} ${diameter}`}\r\n >\r\n <g id=\"TLight_arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n fill={getColor(value)}\r\n id=\"TLight_path\"\r\n style={{ transition: 'fill 0.3s' }}\r\n />\r\n {addBorder && (\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -2.5,\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke={'black'}\r\n fill={'transparent'}\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n id=\"TLight_path\"\r\n />\r\n )}\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 100}pt` }}\r\n alignmentBaseline=\"central\"\r\n fill={currentValueColor}\r\n >\r\n {unitPosition &&\r\n unitPosition === 'START' &&\r\n !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {!['', undefined, null].includes(unit) ? unit : ''}\r\n {unitPosition &&\r\n unitPosition === 'END' &&\r\n !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { noNaN } from '@apia/util';\r\n\r\nconst colorGetter = (\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n innerValue: number,\r\n) => {\r\n let color = '';\r\n valueRanges.forEach((value, index) => {\r\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\r\n color = colorRanges[index - 1];\r\n }\r\n });\r\n\r\n return color;\r\n};\r\n\r\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\r\n const index = valueRanges.findIndex((range) => noNaN(value) <= noNaN(range));\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n}\r\n\r\nfunction getInnerColor(\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n value: number,\r\n) {\r\n const index = valueRanges.findIndex((range, i) => {\r\n if (i === valueRanges.length - 1) {\r\n return noNaN(value) <= noNaN(range);\r\n }\r\n return noNaN(value) < noNaN(range);\r\n });\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n}\r\n\r\nconst valueToTickPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n\r\n return Math.round(percentage);\r\n};\r\n\r\nconst valueToPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n const test = (percentage * 69) / 100;\r\n\r\n return Math.round(test);\r\n};\r\n\r\nexport {\r\n colorGetter,\r\n getColor,\r\n getInnerColor,\r\n valueToPercent,\r\n valueToTickPercent,\r\n};\r\n","const colorGetter = (\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n innerValue: number,\r\n) => {\r\n let color = '';\r\n valueRanges.forEach((value, index) => {\r\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\r\n color = colorRanges[index - 1];\r\n }\r\n });\r\n return color;\r\n};\r\n\r\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n}\r\n\r\nfunction getInnerColor(\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n value: number,\r\n) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n}\r\n\r\nconst valueToTickPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n\r\n return Math.round(percentage);\r\n};\r\n\r\nconst valueToPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n const test = (percentage * 69) / 100;\r\n\r\n return Math.round(test);\r\n};\r\n\r\nexport {\r\n colorGetter,\r\n getColor,\r\n getInnerColor,\r\n valueToPercent,\r\n valueToTickPercent,\r\n};\r\n","import { noNaN } from '@apia/util';\r\nimport { useState, useRef, useCallback } from 'react';\r\nimport { valueToPercent } from './util';\r\n\r\nexport const useCustomWidget = ({\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n uId,\r\n}: {\r\n maxValue: number;\r\n minValue: number;\r\n currentValue: number;\r\n uId: string;\r\n}) => {\r\n const baseValue = minValue;\r\n const domainMax = maxValue;\r\n\r\n const [yDifference, setYDifference] = useState(0);\r\n const svgRect = useRef<DOMRect>({} as DOMRect);\r\n const pathRect = useRef<DOMRect>({} as DOMRect);\r\n\r\n const onRenderRect = useCallback(\r\n (el: SVGRectElement) => {\r\n if (!el) return;\r\n\r\n const svgElement = el.closest('svg');\r\n const pathElement = svgElement?.querySelector(`#path_${uId}`);\r\n\r\n if (!svgElement) throw new Error('No svg');\r\n if (!pathElement) throw new Error('No path');\r\n\r\n const svgBox = svgElement.getBoundingClientRect();\r\n const pathBox = pathElement.getBoundingClientRect();\r\n\r\n const pathY = pathBox.y - svgBox.y;\r\n\r\n svgRect.current = svgBox;\r\n pathRect.current = pathBox;\r\n setYDifference(pathY);\r\n },\r\n [uId],\r\n );\r\n\r\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\r\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\r\n const pathWidth = noNaN(pathRect.current.width);\r\n const pathHeight = noNaN(pathRect.current.height);\r\n\r\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\r\n\r\n const rectProps: React.SVGProps<SVGRectElement> = {\r\n y: noNaN(\r\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\r\n yDifference,\r\n ),\r\n x: pathX,\r\n width: pathWidth,\r\n height: pathHeight,\r\n style: {\r\n visibility: 'visible',\r\n transition: 'y 0.5s, fill 0.5s',\r\n },\r\n };\r\n\r\n return {\r\n rectRef: onRenderRect,\r\n svgViewBox: viewBox,\r\n rectProps,\r\n pathX,\r\n pathY,\r\n pathRect,\r\n svgRect,\r\n };\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetThermometerProps } from '../types';\r\nimport {\r\n valueToTickPercent,\r\n colorGetter,\r\n getInnerColor,\r\n getColor,\r\n} from './util';\r\nimport { noNaN } from '@apia/util';\r\nimport { useCustomWidget } from '../custom/useCustomWidget';\r\nimport { uniqueId } from 'lodash-es';\r\nimport { useMemo } from 'react';\r\n// Usar un segundo svg para los textos\r\nexport const Thermometer = ({\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetThermometerProps>) => {\r\n const value = currentValue;\r\n const baseValue = noNaN(minValue) ?? valueRanges[0];\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const pathDValue = `m 179.6875,717.73633 c -0.45013,0 -0.8125,0.36237 -0.8125,0.8125 l 0,8.46289 a 2.3125,2.3125 0 0 0 -1.5,2.16211 2.3125,2.3125 0 0 0 2.3125,2.3125 2.3125,2.3125 0 0 0 2.3125,-2.3125 2.3125,2.3125 0 0 0 -1.5,-2.16211 l 0,-8.46289 c 0,-0.45013 -0.36237,-0.8125 -0.8125,-0.8125 z`;\r\n const uId = useMemo(() => uniqueId(), []);\r\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\r\n currentValue: value,\r\n maxValue: domainMax,\r\n minValue: baseValue,\r\n uId,\r\n });\r\n\r\n const boxValues = {\r\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\r\n width: noNaN(Math.max(width, height)),\r\n x: pathX,\r\n y: pathY,\r\n };\r\n\r\n const tickArray = valueRanges.map((val, i) => {\r\n return {\r\n height:\r\n boxValues.height *\r\n (valueToTickPercent(domainMax, baseValue, val) / 100),\r\n color: !valueRanges[i + 1]\r\n ? 'black'\r\n : colorGetter(valueRanges, colorRanges, val),\r\n value: val,\r\n };\r\n });\r\n\r\n const cosmeticTicksArray = new Array(8).fill(0).map((_, i) => {\r\n const separation =\r\n (valueRanges[valueRanges.length - 1] - valueRanges[0]) / 8;\r\n return {\r\n value: i,\r\n color: 'black',\r\n height:\r\n boxValues.height *\r\n (valueToTickPercent(domainMax, baseValue, separation * i) / 100),\r\n };\r\n });\r\n\r\n return (\r\n <Box sx={{ position: 'relative' }}>\r\n <svg\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n id={`svg_${uId}`}\r\n viewBox={svgViewBox}\r\n style={{ position: 'relative', top: '10px' }}\r\n >\r\n <clipPath id=\"clipPath\">\r\n <path d={pathDValue} />\r\n </clipPath>\r\n <mask id=\"myMask\">\r\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\r\n </mask>\r\n\r\n <path d={pathDValue} id={`path_${uId}`} fill=\"white\" />\r\n\r\n <rect\r\n fill={getInnerColor(valueRanges, colorRanges, value)}\r\n id={`rect_${uId}`}\r\n mask=\"url(#myMask)\"\r\n ref={rectRef}\r\n {...rectProps}\r\n />\r\n\r\n <path\r\n d={pathDValue}\r\n id=\"path\"\r\n fill=\"none\"\r\n stroke=\"white\"\r\n strokeWidth={10}\r\n clipPath=\"url(#clipPath)\"\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n clipPath=\"url(#clipPath)\"\r\n d={pathDValue}\r\n id=\"path\"\r\n fill=\"none\"\r\n stroke=\"black\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </svg>\r\n <svg\r\n height={Math.max(width, height) + 10}\r\n width={Math.max(width, height)}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n {boxValues.x && (\r\n <g>\r\n <text\r\n x={Math.max(width, height) / 2}\r\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\r\n style={{\r\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\r\n fontWeight: 900,\r\n }}\r\n textAnchor=\"middle\"\r\n alignmentBaseline={'central'}\r\n vectorEffect={'non-scaling-stroke'}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n )}\r\n {cosmeticTicksArray.map((tick, i) => {\r\n if (i === 0) {\r\n return null;\r\n }\r\n return (\r\n <g key={i}>\r\n <rect\r\n x={Math.max(width, height) / 2}\r\n y={tick.height + 10}\r\n width={'15px'}\r\n height={'1px'}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={'black'}\r\n />\r\n </g>\r\n );\r\n })}\r\n {tickArray.map((tick, i) => {\r\n return (\r\n <g key={i}>\r\n {tickArray[i + 1] && i > 0 && (\r\n <>\r\n <rect\r\n x={Math.max(width, height) / 2 - 15}\r\n y={tick.height + 7}\r\n width={'30px'}\r\n height={'3px'}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={getColor(valueRanges, colorRanges, tick.value)}\r\n />\r\n <rect\r\n x={Math.max(width, height) / 2 - 15}\r\n y={tick.height - 10}\r\n width={'30px'}\r\n height={'20px'}\r\n opacity={0.1}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={getColor(valueRanges, colorRanges, tick.value)}\r\n />\r\n </>\r\n )}\r\n {i > 0 && (\r\n <text\r\n x={Math.max(width, height) / 2 + 14}\r\n y={tickArray[i + 1] ? tick.height + 5 : tick.height + 19}\r\n textAnchor=\"end\"\r\n alignmentBaseline={\r\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\r\n }\r\n style={{\r\n fontSize: '12px',\r\n fontWeight: 600,\r\n }}\r\n >\r\n {noNaN(tick.value).toFixed(0)}\r\n </text>\r\n )}\r\n </g>\r\n );\r\n })}\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetScaleProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 90;\r\nconst END_ANGLE = 270;\r\n\r\nexport const Scale = ({\r\n currentValue,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetScaleProps>) => {\r\n const allTicks = false;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 10 + 1,\r\n diameter: diameter,\r\n });\r\n const gauge2 = useGauge({\r\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter / 2 + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 90,\r\n endAngle: 270,\r\n })}\r\n stroke=\"gray\"\r\n opacity=\"0.2\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n />\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n />\r\n {showText && (\r\n <text\r\n fill=\"black\"\r\n {...gauge.getLabelProps({ angle, offset: 20 })}\r\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n {allTicks &&\r\n gauge2.ticks.map((angle, i) => {\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={2}\r\n {...gauge.getTickProps({\r\n angle,\r\n length: 3,\r\n })}\r\n />\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n y={-diameter / 4 + 20}\r\n >\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetRingProps } from '../types';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const Ring = ({\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n ringEmptyColor,\r\n ringWidth: incommingRingWidth,\r\n unit: outerUnit,\r\n width,\r\n currentValueColor,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n unitPosition,\r\n}: TApiaWidgetBaseProps<TApiaWidgetRingProps>) => {\r\n const unit = outerUnit?.split(',,')[1];\r\n const ringWidth = (incommingRingWidth - 0.05) * 150;\r\n const [value, setValue] = useState(noNaN(currentValue));\r\n const diameter = Math.min(height, width);\r\n const offset = 20;\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = noNaN(currentValue) - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n let factor = Math.pow(10, noNaN(valueDecimals));\r\n if (valueType === 0 || valueType === '0') {\r\n factor = 1;\r\n }\r\n setValue(Math.round(step * factor) / factor);\r\n },\r\n () => {\r\n lastCurrentValue.current = noNaN(currentValue);\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentValue]);\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n\r\n const valueToAngle = (value: number) => {\r\n const angleRange = 360;\r\n const valueRange = domainMax - domainMin;\r\n const angle = ((value - domainMin) / valueRange) * angleRange;\r\n\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset:\r\n offset -\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)),\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke={ringEmptyColor ?? 'lightgrey'}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={\r\n (noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)\r\n }\r\n />\r\n\r\n <path\r\n {...gauge.getArcProps({\r\n offset:\r\n offset -\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)),\r\n startAngle: 180,\r\n endAngle:\r\n valueToAngle(value) === 360\r\n ? 179 + valueToAngle(value)\r\n : 180 + valueToAngle(value),\r\n })}\r\n stroke={`#${tinycolor(getColor(value)).saturate(20).brighten(20).toHex()}`}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"inherit\"\r\n strokeWidth={\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)) + 6\r\n }\r\n style={{\r\n transition: 'stroke 0.5s',\r\n }}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset:\r\n offset -\r\n ((noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)),\r\n startAngle: 180,\r\n endAngle:\r\n valueToAngle(value) === 360\r\n ? 179 + valueToAngle(value)\r\n : 180 + valueToAngle(value),\r\n })}\r\n stroke={getColor(value)}\r\n opacity=\"1\"\r\n fill=\"none\"\r\n strokeLinecap=\"inherit\"\r\n strokeWidth={\r\n (noNaN(ringWidth) ?? 0) < 0\r\n ? (noNaN(ringWidth) ?? 0) * 100\r\n : (noNaN(ringWidth) ?? 0)\r\n }\r\n style={{\r\n transition: 'stroke 0.5s',\r\n }}\r\n />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{\r\n fontSize: `${currentValueFontSize ?? 30}px`,\r\n fontWeight: '900',\r\n }}\r\n alignmentBaseline=\"central\"\r\n fill={currentValueColor}\r\n >\r\n {unitPosition === 'START' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {unitPosition === 'END' && !['', undefined, null].includes(unit)\r\n ? unit\r\n : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { arrayOrArray, getIndex } from '@apia/util';\r\nimport { TApiaWidgetBaseProps, TApiaWidgetProps, TWidgetZone } from './types';\r\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\r\nimport { Oxford } from './oxford/Oxford';\r\nimport { Counter } from './counter/Counter';\r\nimport { TLight } from './tLight/TLight';\r\nimport { Thermometer } from './thermometer/Thermometer';\r\nimport { Scale } from './scale/Scale';\r\nimport { Ring } from './ring/Ring';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nexport const WidgetComponent = ({\r\n data,\r\n type,\r\n}: {\r\n data: TApiaWidgetBaseProps<any>;\r\n type:\r\n | 'SpeedMeter'\r\n | 'Oxford'\r\n | 'Counter'\r\n | 'TLight'\r\n | 'Thermometer'\r\n | 'Scale'\r\n | 'Ring';\r\n}) => {\r\n const CurrentWidget: TApiaWidgetBaseProps<any> = getIndex(\r\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\r\n [\r\n type === 'SpeedMeter',\r\n type === 'Oxford',\r\n type === 'Counter',\r\n type === 'TLight',\r\n type === 'Thermometer',\r\n type === 'Scale',\r\n type === 'Ring',\r\n ],\r\n 0,\r\n );\r\n const wigetTypeData: TApiaWidgetProps = data as TApiaWidgetProps & {\r\n zones: { Zone: TWidgetZone[] };\r\n };\r\n\r\n const widgetData = wigetTypeData as TApiaWidgetProps;\r\n let valueRanges: number[] = [];\r\n let colorRanges: string[] = [];\r\n\r\n if (data.zones && arrayOrArray(data.zones.Zone).length > 0) {\r\n valueRanges = Array.from(\r\n new Set(\r\n arrayOrArray(data.zones.Zone)\r\n .map((zone) => {\r\n return [Number(zone.minimum), Number(zone.maximum)];\r\n })\r\n .flat()\r\n .sort((a, b) => a - b),\r\n ),\r\n );\r\n\r\n colorRanges = arrayOrArray(data.zones.Zone)\r\n .map((zone) => {\r\n return tinycolor(zone.color)\r\n .setAlpha(1 - (255 - zone.transparency) / 255)\r\n .toPercentageRgbString();\r\n })\r\n .flat();\r\n } else {\r\n valueRanges = widgetData.valueRanges;\r\n colorRanges = widgetData.colorRanges;\r\n }\r\n\r\n widgetData.colorRanges = colorRanges;\r\n widgetData.valueRanges = valueRanges;\r\n return <CurrentWidget {...widgetData} />;\r\n};\r\n","import { arrayOrArray, getValueByPath } from '@apia/util';\r\nimport {\r\n ChartData,\r\n ChartOptions,\r\n Chart as ChartJS,\r\n CategoryScale,\r\n LinearScale,\r\n PointElement,\r\n LineElement,\r\n Title,\r\n Tooltip,\r\n Legend,\r\n BarController,\r\n BarElement,\r\n PieController,\r\n ArcElement,\r\n ChartTypeRegistry,\r\n TooltipItem,\r\n LineController,\r\n} from 'chart.js';\r\nimport { useMemo, useRef } from 'react';\r\nimport { Chart } from 'react-chartjs-2';\r\nimport { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\r\nimport { IChartStylesSchemes, TChartData as RawChartData } from '../types';\r\nimport tinycolor from 'tinycolor2';\r\n\r\nChartJS.register(\r\n CategoryScale,\r\n LinearScale,\r\n PointElement,\r\n LineElement,\r\n Title,\r\n Tooltip,\r\n Legend,\r\n BarController,\r\n BarElement,\r\n PieController,\r\n ArcElement,\r\n LineController,\r\n);\r\n\r\ntype TChartData = {\r\n chartData: ChartData;\r\n showLegend?: boolean;\r\n showValues?: boolean;\r\n showXAxisValues?: boolean;\r\n showYAxisValues?: boolean;\r\n showTable?: boolean;\r\n type:\r\n | 'bar'\r\n | 'line'\r\n | 'scatter'\r\n | 'bubble'\r\n | 'pie'\r\n | 'doughnut'\r\n | 'polarArea'\r\n | 'radar'\r\n | 'waterfall';\r\n indexAxis?: 'x' | 'y';\r\n xAxisTitle?: string;\r\n yAxisTitle?: string;\r\n id?: string;\r\n chartId?: string;\r\n aspectRatio?: number;\r\n};\r\n\r\nexport type TDataset = {\r\n backgroundColor?: string | string[];\r\n borderColor?: string | string[];\r\n borderWidth?: number;\r\n label?: string;\r\n data: number[] | [number, number][];\r\n}[];\r\n\r\nfunction normalizeChartData(raw: RawChartData): TChartData {\r\n return {\r\n chartData: {\r\n datasets: raw.datasets,\r\n labels: raw.labels,\r\n },\r\n type: raw.type,\r\n indexAxis: raw.indexAxis,\r\n xAxisTitle: raw.xAxisTitle ?? '',\r\n yAxisTitle: raw.yAxisTitle ?? '',\r\n aspectRatio: raw.aspectRatio,\r\n showLegend: raw.showLegend === 'true',\r\n showValues: raw.showValues === 'true',\r\n showXAxisValues: raw.showXAxisValues === 'true',\r\n showYAxisValues: raw.showYAxisValues === 'true',\r\n };\r\n}\r\n\r\nexport const ChartComponent = (\r\n props: (TChartData | RawChartData) & {\r\n /**\r\n * This property allows to limit the amount of references shown beside the graph.\r\n * @default 10\r\n */\r\n referencesAmount?: number;\r\n },\r\n) => {\r\n const defaultProps: TChartData = {\r\n chartData: { datasets: [{ data: [{ x: 0, y: 0 }] }] },\r\n type: 'bar',\r\n indexAxis: 'x',\r\n showLegend: true,\r\n showValues: true,\r\n showXAxisValues: true,\r\n showYAxisValues: true,\r\n showTable: true,\r\n xAxisTitle: '',\r\n yAxisTitle: '',\r\n aspectRatio: 2.5,\r\n };\r\n\r\n const normalized =\r\n 'datasets' in props\r\n ? normalizeChartData(props as RawChartData)\r\n : (props as TChartData);\r\n\r\n const actualProps: TChartData = { ...defaultProps, ...normalized };\r\n const { theme } = useThemeUI();\r\n const chartRef = useRef<ChartJS>(null);\r\n\r\n if (!theme.layout)\r\n console.error('The layout property is missing in the current theme');\r\n\r\n const data: ChartData = useMemo(() => {\r\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\r\n ?.charts ?? {}) as IChartStylesSchemes;\r\n\r\n return {\r\n datasets: (actualProps.type === 'waterfall'\r\n ? arrayOrArray(actualProps.chartData.datasets).map((dataset) => {\r\n let sum = 0;\r\n const newData = dataset.data.map<[number, number]>((dataValue) => {\r\n if (typeof dataValue === 'number') {\r\n const currentValue = sum;\r\n sum += dataValue;\r\n return [currentValue, sum] as [number, number];\r\n } else {\r\n return dataValue as [number, number];\r\n }\r\n });\r\n\r\n return {\r\n ...dataset,\r\n data: newData,\r\n };\r\n })\r\n : actualProps.chartData.datasets\r\n ).map((dataset, datasetIndex) => {\r\n const isSingle =\r\n arrayOrArray(actualProps.chartData.datasets).every(\r\n (dataset) => arrayOrArray(dataset.data).length === 1,\r\n ) || actualProps.type === 'pie';\r\n\r\n const backgroundColor = (\r\n dataset.backgroundColor as string[] | string[][]\r\n ).map((actualColor, i) => {\r\n let schemaArray: string[] = [];\r\n if (typeof actualColor === 'string') {\r\n const color = actualColor.toLowerCase();\r\n if (color in charts) {\r\n const currentBackgroundStylescheme: {\r\n schema: Record<string, string>;\r\n } = {\r\n schema: getValueByPath(\r\n theme.colors as ColorModesScale,\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n charts[color.toLowerCase()]?.schema as string,\r\n ) as Record<string, string>,\r\n };\r\n\r\n if (\r\n typeof currentBackgroundStylescheme.schema === 'object' &&\r\n currentBackgroundStylescheme.schema\r\n ) {\r\n if (isSingle) {\r\n if (actualProps.type === 'pie') {\r\n schemaArray = Object.values(\r\n currentBackgroundStylescheme.schema,\r\n ).map((varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n });\r\n } else {\r\n schemaArray = new Array<string>(6)\r\n .fill(\r\n Object.values(currentBackgroundStylescheme.schema)[\r\n datasetIndex % 6\r\n ],\r\n )\r\n .map((varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n });\r\n }\r\n } else {\r\n schemaArray = new Array<string>(6).fill(\r\n Object.values(currentBackgroundStylescheme.schema).map(\r\n (varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n },\r\n )[datasetIndex % 6],\r\n );\r\n }\r\n }\r\n } else {\r\n schemaArray = [color, color, color, color, color, color];\r\n }\r\n } else {\r\n return actualColor[datasetIndex % actualColor.length];\r\n }\r\n\r\n return schemaArray[i % 6];\r\n });\r\n\r\n const hoverBackgroundColor = backgroundColor.map((c) => {\r\n const color = tinycolor(c);\r\n\r\n return (\r\n color.isDark() ? color.lighten(30) : color.darken(30)\r\n ).toHexString();\r\n });\r\n\r\n return {\r\n ...dataset,\r\n hoverBackgroundColor,\r\n backgroundColor,\r\n borderColor: (dataset.borderColor as string[] | string[][]).map(\r\n (color, i) => {\r\n let schemaBorderArray: string[] = [];\r\n if (typeof color === 'string') {\r\n if (color in charts) {\r\n const currentBorderStylescheme: {\r\n schema: Record<string, string>;\r\n } = {\r\n schema: getValueByPath(\r\n theme.colors as ColorModesScale,\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n charts[color.toLowerCase()]?.schema as string,\r\n ) as Record<string, string>,\r\n };\r\n\r\n if (\r\n typeof currentBorderStylescheme.schema === 'object' &&\r\n currentBorderStylescheme.schema\r\n ) {\r\n schemaBorderArray = Object.values(\r\n currentBorderStylescheme.schema,\r\n ).map((varColor) => {\r\n return window\r\n .getComputedStyle(document.documentElement)\r\n .getPropertyValue(varColor.slice(4, -1));\r\n });\r\n }\r\n } else {\r\n schemaBorderArray = [\r\n color,\r\n color,\r\n color,\r\n color,\r\n color,\r\n color,\r\n ];\r\n }\r\n } else {\r\n return color[datasetIndex % color.length];\r\n }\r\n return schemaBorderArray[i % 6];\r\n },\r\n ),\r\n };\r\n }),\r\n labels: actualProps.chartData.labels,\r\n };\r\n }, [\r\n actualProps.chartData.datasets,\r\n actualProps.chartData.labels,\r\n actualProps.type,\r\n theme.colors,\r\n theme.layout,\r\n ]);\r\n\r\n const options: ChartOptions = useMemo(() => {\r\n return {\r\n plugins: {\r\n legend: {\r\n position: 'right',\r\n display: actualProps.showLegend,\r\n onHover: (_, legendItem, __) => {\r\n const chart = chartRef.current;\r\n if (chart) {\r\n const activeElement = new Array(\r\n actualProps.type === 'pie'\r\n ? actualProps.chartData.datasets.length\r\n : actualProps.chartData.datasets[0].data.length,\r\n )\r\n .fill(0)\r\n .map((_, i) => {\r\n return {\r\n datasetIndex:\r\n actualProps.type === 'pie' ? i : legendItem.datasetIndex!,\r\n index:\r\n actualProps.type === 'pie' ? (legendItem.index ?? i) : i,\r\n };\r\n });\r\n\r\n chart.setActiveElements([...activeElement]); // To show thick border\r\n chart.tooltip?.setActiveElements([...activeElement], {\r\n x: 0,\r\n y: 0,\r\n });\r\n chart.update();\r\n }\r\n },\r\n labels: {\r\n filter(item, _) {\r\n if (actualProps.type === 'pie') {\r\n return (item.index ?? 0) < (props.referencesAmount ?? 10);\r\n } else {\r\n return (\r\n (item.datasetIndex ?? 0) < (props.referencesAmount ?? 10)\r\n );\r\n }\r\n },\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(tooltipItem: TooltipItem<keyof ChartTypeRegistry>) {\r\n const XLabel = tooltipItem.dataset.label ?? '';\r\n let YValue = tooltipItem.formattedValue;\r\n\r\n if (isNaN(parseFloat(YValue))) {\r\n const arrayValue: [number, number] = tooltipItem.raw as [\r\n number,\r\n number,\r\n ];\r\n const realValue = arrayValue[1] - arrayValue[0];\r\n YValue = `${realValue}`;\r\n }\r\n let finalString = '';\r\n if (actualProps.showLegend || actualProps.type === 'pie') {\r\n finalString += XLabel;\r\n if (actualProps.showValues) {\r\n finalString += ': ' + YValue;\r\n }\r\n } else if (actualProps.showValues) {\r\n finalString += YValue;\r\n }\r\n return finalString;\r\n },\r\n title(tooltipItems: TooltipItem<keyof ChartTypeRegistry>[]) {\r\n if (\r\n (actualProps.type !== 'pie' &&\r\n !actualProps.showXAxisValues &&\r\n actualProps.indexAxis === 'x') ||\r\n (actualProps.type !== 'pie' &&\r\n !actualProps.showYAxisValues &&\r\n actualProps.indexAxis === 'y') ||\r\n (actualProps.type === 'pie' && !actualProps.showLegend)\r\n ) {\r\n return '';\r\n }\r\n return tooltipItems[0].label;\r\n },\r\n },\r\n enabled:\r\n (actualProps.indexAxis === 'y'\r\n ? actualProps.showYAxisValues\r\n : actualProps.showXAxisValues) ||\r\n actualProps.showValues ||\r\n actualProps.showLegend,\r\n },\r\n },\r\n aspectRatio: Math.max(actualProps.aspectRatio ?? 1, 2),\r\n indexAxis: actualProps.indexAxis,\r\n scales: {\r\n x: {\r\n display: actualProps.type !== 'pie',\r\n title: {\r\n display: actualProps.showXAxisValues,\r\n text:\r\n actualProps.indexAxis === 'y'\r\n ? actualProps.yAxisTitle\r\n : actualProps.xAxisTitle,\r\n },\r\n ticks: {\r\n display: !!actualProps.showXAxisValues,\r\n },\r\n grid: {\r\n display: actualProps.showTable,\r\n },\r\n },\r\n y: {\r\n axis: (actualProps.indexAxis === 'y' ? 'x' : 'y') as 'x' | 'y' | 'r',\r\n display: actualProps.type !== 'pie',\r\n title: {\r\n display: actualProps.showYAxisValues,\r\n text:\r\n actualProps.indexAxis === 'y'\r\n ? actualProps.xAxisTitle\r\n : actualProps.yAxisTitle,\r\n },\r\n ticks: {\r\n display: !!actualProps.showYAxisValues,\r\n },\r\n grid: {\r\n display: actualProps.showTable,\r\n },\r\n },\r\n },\r\n };\r\n }, [\r\n actualProps.aspectRatio,\r\n actualProps.chartData.datasets,\r\n actualProps.indexAxis,\r\n actualProps.showLegend,\r\n actualProps.showTable,\r\n actualProps.showValues,\r\n actualProps.showXAxisValues,\r\n actualProps.showYAxisValues,\r\n actualProps.type,\r\n actualProps.xAxisTitle,\r\n actualProps.yAxisTitle,\r\n props.referencesAmount,\r\n ]);\r\n\r\n return (\r\n <Chart\r\n sx={{\r\n canvas: {\r\n width: '100%',\r\n height: 'auto',\r\n },\r\n }}\r\n id={actualProps.id ?? undefined}\r\n className={actualProps.chartId ?? ''}\r\n type={actualProps.type === 'waterfall' ? 'bar' : actualProps.type}\r\n options={options}\r\n data={data}\r\n ref={chartRef}\r\n />\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport {\r\n PivotTableUI,\r\n PivotTableUIProps,\r\n createPlotlyRenderers,\r\n TableRenderers,\r\n} from '@imc-trading/react-pivottable';\r\nimport 'react-pivottable/pivottable.css';\r\nimport { memo, useCallback, useEffect, useRef, useState } from 'react';\r\nimport { shallowEqual, usePrevious } from '@apia/util';\r\n\r\nfunction R(props: Omit<PivotTableUIProps, 'onChange'>) {\r\n const [Plot, setPlot] = useState<ReturnType<\r\n typeof createPlotlyRenderers\r\n > | null>(null);\r\n const prevProps = usePrevious(props);\r\n\r\n const handleChange = useCallback((s: PivotTableUIProps) => {\r\n setPivotState(() => {\r\n return s;\r\n });\r\n }, []);\r\n const [pivotState, setPivotState] = useState<PivotTableUIProps>({\r\n ...props,\r\n rows: props.rows?.filter((row) => row && row !== ''),\r\n cols: props.cols?.filter((col) => col && col !== ''),\r\n onChange: handleChange,\r\n });\r\n if (!shallowEqual(prevProps.current, props)) {\r\n setPivotState((s) => ({\r\n ...s,\r\n ...props,\r\n data: (props.data as string[][]).filter(\r\n (dataArr) => !dataArr.every((dat) => dat === ''),\r\n ),\r\n rows: props.rows?.filter((row) => row && row !== ''),\r\n cols: props.cols?.filter((col) => col && col !== ''),\r\n vals: (props.data as string[][])[0]?.some((item) => {\r\n const setVals = new Set(s.vals);\r\n return setVals.has(item);\r\n })\r\n ? s.vals\r\n : [],\r\n }));\r\n }\r\n const imported = useRef(false);\r\n useEffect(() => {\r\n if (imported.current) return;\r\n imported.current = true;\r\n\r\n import('react-plotly.js').then((Plot) => {\r\n setPlot(createPlotlyRenderers((Plot.default as any).default));\r\n });\r\n }, []);\r\n\r\n if (!Plot) return null;\r\n\r\n return (\r\n <PivotTableUI\r\n renderers={Object.assign({}, TableRenderers, Plot)}\r\n {...pivotState}\r\n menuLimit={Infinity}\r\n unusedOrientationCutoff={Infinity}\r\n />\r\n );\r\n}\r\n\r\nexport const PivotTableComponent = memo(\r\n (props: Omit<PivotTableUIProps, 'onChange'>) => {\r\n return (\r\n <Box\r\n onClick={(ev) => ev.stopPropagation()}\r\n onMouseDown={(ev) => ev.stopPropagation()}\r\n onDrag={(ev) => ev.stopPropagation()}\r\n onDragStart={(ev) => ev.stopPropagation()}\r\n >\r\n <R {...props} />\r\n </Box>\r\n );\r\n },\r\n);\r\n","import { arrayOrArray } from '@apia/util';\r\nimport {\r\n TChartData,\r\n TIncomingChartData,\r\n TIncomingChartDataset,\r\n} from '../types';\r\n\r\nexport const parseChartData = (chart: TIncomingChartData): TChartData => {\r\n const transformedChart: TChartData = {\r\n title: chart.title,\r\n type: chart.type as TChartData['type'], // Assuming chart type is compatible\r\n datasets: [],\r\n indexAxis: chart.indexAxis === 'x' ? 'x' : 'y', // Ensure valid indexAxis value\r\n labels: [],\r\n showValues: chart.showValues.toString(),\r\n showLegend: chart.showLegend.toString(),\r\n xAxisTitle: chart.xAxisTitle,\r\n yAxisTitle: chart.yAxisTitle,\r\n showXAxisValues:\r\n chart.type === 'pie' ? undefined : chart.showXAxisValues.toString(),\r\n showYAxisValues:\r\n chart.type === 'pie' ? undefined : chart.showYAxisValues.toString(),\r\n };\r\n\r\n const actualData = arrayOrArray(chart.datasets).map((dataset) => {\r\n return {\r\n colors: arrayOrArray(dataset.data)\r\n .map((c) => c.color || dataset.color || chart.color)\r\n .map((c) => c.toLowerCase()),\r\n labels: arrayOrArray(dataset.data).map((c) => c.label),\r\n values: arrayOrArray(dataset.data).map((c) => c.value),\r\n };\r\n });\r\n\r\n actualData[0].labels.forEach((label) => transformedChart.labels.push(label));\r\n\r\n arrayOrArray(chart.datasets).forEach((dataset: TIncomingChartDataset) => {\r\n const transformedDataset = {\r\n backgroundColor: arrayOrArray(dataset.data)\r\n .map((c) =>\r\n c.color !== 'null' ? c.color : dataset.color || chart.color,\r\n )\r\n .map((c) => c.toLowerCase()),\r\n borderColor: arrayOrArray(dataset.data)\r\n .map((c) => dataset.borderColor || c.color || chart.color)\r\n .map((c) => c.toLowerCase()),\r\n borderWidth: parseInt(dataset.borderWidth),\r\n label: dataset.label,\r\n data: arrayOrArray(dataset.data).map((dataPoint) =>\r\n parseFloat(dataPoint.value),\r\n ),\r\n };\r\n\r\n transformedChart.datasets.push(transformedDataset);\r\n });\r\n return transformedChart;\r\n};\r\n"],"names":["START_ANGLE","END_ANGLE","value","angle","pathY","ChartJS","dataset","_","Plot"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apia/charts",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.43",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"author": "Felipe Arzuaga <felipearax.2012@gmail.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"libWatchForDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:dashboards"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@apia/components": "^4.0.
|
|
19
|
-
"@apia/icons": "^4.0.
|
|
20
|
-
"@apia/theme": "^4.0.
|
|
21
|
-
"@apia/util": "^4.0.
|
|
18
|
+
"@apia/components": "^4.0.43",
|
|
19
|
+
"@apia/icons": "^4.0.43",
|
|
20
|
+
"@apia/theme": "^4.0.43",
|
|
21
|
+
"@apia/util": "^4.0.43",
|
|
22
22
|
"@imc-trading/react-pivottable": "../../custom/react-pivottable",
|
|
23
23
|
"@types/d3-array": "^3.0.5",
|
|
24
24
|
"@visx/axis": "^3.1.0",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"access": "public",
|
|
59
59
|
"registry": "https://registry.npmjs.org/"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "f4c40b69ba514626379ac45021c254ad661826f1"
|
|
62
62
|
}
|