@apia/charts 4.0.9 → 4.0.13

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 CHANGED
@@ -103,6 +103,7 @@ type TApiaWidgetBaseProps<T> = {
103
103
  height: number;
104
104
  maxValue?: number;
105
105
  minValue?: number;
106
+ unit?: string;
106
107
  valueDecimals: number;
107
108
  valueType: string | number;
108
109
  valueRanges: number[];
package/dist/index.js CHANGED
@@ -5,8 +5,8 @@ import React, { useState, useRef, useEffect, useCallback, useMemo, memo } from '
5
5
  import { useGauge } from 'use-gauge';
6
6
  import tinycolor from 'tinycolor2';
7
7
  import { uniqueId } from 'lodash-es';
8
- import { Chart, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, BarController, BarElement, PieController, ArcElement, LineController } from 'chart.js';
9
- import { Chart as Chart$1 } from 'react-chartjs-2';
8
+ import { Chart as Chart$1, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, BarController, BarElement, PieController, ArcElement, LineController } from 'chart.js';
9
+ import { Chart } from 'react-chartjs-2';
10
10
  import { createPlotlyRenderers, PivotTableUI, TableRenderers } from '@imc-trading/react-pivottable';
11
11
 
12
12
  const START_ANGLE$5 = 30;
@@ -440,13 +440,17 @@ const Counter = ({
440
440
  addBorder = false,
441
441
  colorRanges,
442
442
  currentValue,
443
+ height,
443
444
  valueRanges,
444
445
  maxValue,
445
446
  minValue,
446
447
  currentValueFontSize,
448
+ unit: outerUnit,
447
449
  valueDecimals,
448
- valueType
450
+ valueType,
451
+ width
449
452
  }) => {
453
+ const unit = outerUnit?.split(",,")[1];
450
454
  const [value, setValue] = useState(noNaN(currentValue) ?? 0);
451
455
  const actualWidth = (currentValueFontSize ?? 80) * 3 * 0.8;
452
456
  const diameter = actualWidth;
@@ -479,7 +483,7 @@ const Counter = ({
479
483
  domainMin,
480
484
  domainMax
481
485
  );
482
- let factor = Math.pow(10, valueDecimals);
486
+ let factor = Math.pow(10, noNaN(valueDecimals));
483
487
  if (valueType === 0 || valueType === "0") {
484
488
  factor = 1;
485
489
  }
@@ -495,16 +499,16 @@ const Counter = ({
495
499
  "svg",
496
500
  {
497
501
  ...gauge.getSVGProps(),
498
- height: actualWidth,
499
- width: actualWidth,
502
+ height: Math.max(width, height),
503
+ width: Math.max(width, height),
500
504
  viewBox: void 0,
501
505
  children: /* @__PURE__ */ jsx("g", { id: "arcs", children: addBorder && `${value}`.length < 4 && /* @__PURE__ */ jsx(
502
506
  "ellipse",
503
507
  {
504
- cx: actualWidth / 2,
505
- cy: actualWidth / 2,
506
- rx: actualWidth / 2 - 5,
507
- ry: actualWidth / 2 - 5,
508
+ cx: Math.max(width, height) / 2,
509
+ cy: Math.max(width, height) / 2,
510
+ rx: Math.max(width, height) / 5,
511
+ ry: Math.max(width, height) / 5,
508
512
  stroke: "gray",
509
513
  opacity: "0.2",
510
514
  fill: "none",
@@ -517,14 +521,14 @@ const Counter = ({
517
521
  /* @__PURE__ */ jsx(
518
522
  "svg",
519
523
  {
520
- height: actualWidth,
521
- width: actualWidth,
524
+ height: Math.max(width, height),
525
+ width: Math.max(width, height),
522
526
  style: { position: "absolute", left: 0, top: 0 },
523
527
  children: /* @__PURE__ */ jsxs(
524
528
  "text",
525
529
  {
526
- x: actualWidth / 2,
527
- y: actualWidth / 2 - 5,
530
+ x: Math.max(width, height) / 2,
531
+ y: Math.max(width, height) / 2 - 5,
528
532
  textAnchor: "middle",
529
533
  style: {
530
534
  fontSize: `${currentValueFontSize ?? 80}px`,
@@ -534,7 +538,8 @@ const Counter = ({
534
538
  fill: getColor(value),
535
539
  children: [
536
540
  noNaN(value).toFixed(noNaN(valueDecimals)),
537
- valueType === "2" || valueType === 2 ? "%" : ""
541
+ valueType === "2" || valueType === 2 ? "%" : "",
542
+ !["", void 0, null].includes(unit) ? unit : ""
538
543
  ]
539
544
  }
540
545
  )
@@ -554,11 +559,13 @@ const TLight = ({
554
559
  height,
555
560
  valueRanges,
556
561
  width,
562
+ unit: outerUnit,
557
563
  currentValueColor,
558
564
  currentValueFontSize,
559
565
  valueDecimals,
560
566
  valueType
561
567
  }) => {
568
+ const unit = outerUnit?.split(",,")[1];
562
569
  const [value, setValue] = useState(noNaN(currentValue));
563
570
  const diameter = Math.min(height, width);
564
571
  const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];
@@ -609,7 +616,7 @@ const TLight = ({
609
616
  domainMin,
610
617
  domainMax
611
618
  );
612
- let factor = Math.pow(10, valueDecimals);
619
+ let factor = Math.pow(10, noNaN(valueDecimals));
613
620
  if (valueType === 0 || valueType === "0") {
614
621
  factor = 1;
615
622
  }
@@ -669,7 +676,8 @@ const TLight = ({
669
676
  fill: currentValueColor,
670
677
  children: [
671
678
  noNaN(value).toFixed(noNaN(valueDecimals)),
672
- valueType === "2" || valueType === 2 ? "%" : ""
679
+ valueType === "2" || valueType === 2 ? "%" : "",
680
+ !["", void 0, null].includes(unit) ? unit : ""
673
681
  ]
674
682
  }
675
683
  ) })
@@ -794,7 +802,7 @@ const Thermometer = ({
794
802
  const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];
795
803
  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`;
796
804
  const uId = useMemo(() => uniqueId(), []);
797
- const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({
805
+ const { rectProps, rectRef, svgViewBox, pathX} = useCustomWidget({
798
806
  currentValue: value,
799
807
  maxValue: domainMax,
800
808
  minValue: baseValue,
@@ -803,9 +811,7 @@ const Thermometer = ({
803
811
  const boxValues = {
804
812
  height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),
805
813
  width: noNaN(Math.max(width, height)),
806
- x: pathX,
807
- y: pathY
808
- };
814
+ x: pathX};
809
815
  const tickArray = valueRanges.map((val, i) => {
810
816
  return {
811
817
  height: boxValues.height * (valueToTickPercent(domainMax, baseValue, val) / 100),
@@ -1055,7 +1061,7 @@ const Scale = ({
1055
1061
  )
1056
1062
  ] }, `tick-group-${angle2}`);
1057
1063
  }),
1058
- allTicks
1064
+ allTicks
1059
1065
  ] }),
1060
1066
  /* @__PURE__ */ jsxs("g", { id: "needle", children: [
1061
1067
  /* @__PURE__ */ jsx("circle", { fill: pointerColor, ...needle.base, r: 20 }),
@@ -1114,12 +1120,14 @@ const Ring = ({
1114
1120
  valueRanges,
1115
1121
  ringEmptyColor,
1116
1122
  ringWidth: incommingRingWidth,
1123
+ unit: outerUnit,
1117
1124
  width,
1118
1125
  currentValueColor,
1119
1126
  currentValueFontSize,
1120
1127
  valueDecimals,
1121
1128
  valueType
1122
1129
  }) => {
1130
+ const unit = outerUnit?.split(",,")[1];
1123
1131
  const ringWidth = (incommingRingWidth - 0.05) * 150;
1124
1132
  const [value, setValue] = useState(noNaN(currentValue));
1125
1133
  const diameter = Math.min(height, width);
@@ -1144,7 +1152,7 @@ const Ring = ({
1144
1152
  domainMin,
1145
1153
  domainMax
1146
1154
  );
1147
- let factor = Math.pow(10, valueDecimals);
1155
+ let factor = Math.pow(10, noNaN(valueDecimals));
1148
1156
  if (valueType === 0 || valueType === "0") {
1149
1157
  factor = 1;
1150
1158
  }
@@ -1240,7 +1248,8 @@ const Ring = ({
1240
1248
  fill: currentValueColor,
1241
1249
  children: [
1242
1250
  noNaN(value).toFixed(noNaN(valueDecimals)),
1243
- valueType === "2" || valueType === 2 ? "%" : ""
1251
+ valueType === "2" || valueType === 2 ? "%" : "",
1252
+ !["", void 0, null].includes(unit) ? unit : ""
1244
1253
  ]
1245
1254
  }
1246
1255
  ) })
@@ -1290,7 +1299,7 @@ const WidgetComponent = ({
1290
1299
  return /* @__PURE__ */ jsx(CurrentWidget, { ...widgetData });
1291
1300
  };
1292
1301
 
1293
- Chart.register(
1302
+ Chart$1.register(
1294
1303
  CategoryScale,
1295
1304
  LinearScale,
1296
1305
  PointElement,
@@ -1558,7 +1567,7 @@ const ChartComponent = (props) => {
1558
1567
  actualProps.yAxisTitle
1559
1568
  ]);
1560
1569
  return /* @__PURE__ */ jsx(
1561
- Chart$1,
1570
+ Chart,
1562
1571
  {
1563
1572
  sx: {
1564
1573
  canvas: {
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"],"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 valueRanges,\r\n maxValue,\r\n minValue,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetCounterProps>) => {\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, 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={actualWidth}\r\n width={actualWidth}\r\n viewBox={undefined}\r\n >\r\n <g id=\"arcs\">\r\n {addBorder && `${value}`.length < 4 && (\r\n <ellipse\r\n cx={actualWidth / 2}\r\n cy={actualWidth / 2}\r\n rx={actualWidth / 2 - 5}\r\n ry={actualWidth / 2 - 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={actualWidth}\r\n width={actualWidth}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n <text\r\n x={actualWidth / 2}\r\n y={actualWidth / 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 {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\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 currentValueColor,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetTLightProps>) => {\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, 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 {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 { 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 width,\r\n currentValueColor,\r\n currentValueFontSize,\r\n valueDecimals,\r\n valueType,\r\n}: TApiaWidgetBaseProps<TApiaWidgetRingProps>) => {\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, 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 {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 { 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 = (props: TChartData) => {\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) < 10;\r\n } else {\r\n return (item.datasetIndex ?? 0) < 10;\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,\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 ]);\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"],"names":["START_ANGLE","END_ANGLE","value","angle","pathY","ChartJS","dataset","_","Chart","Plot"],"mappings":"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"}
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"],"sourcesContent":["import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetBaseProps, TApiaWidgetSpeedMeterProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 30;\nconst END_ANGLE = 330;\n\nexport const SpeedMeter = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n valueDecimals,\n valueType,\n}: TApiaWidgetBaseProps<TApiaWidgetSpeedMeterProps>) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: allTicks\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\n : valueRanges[valueRanges.length - 1] / 10 + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex(\n (range) => noNaN(value) <= noNaN(range),\n );\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"gray\"\n fill={backgroundColor ?? 'none'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n {valueRanges.map((innerValue, i) => {\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: -50,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n y={diameter / 2}\n fill={currentValueColor}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n >\n {noNaN(value).toFixed(noNaN(valueDecimals))}\n {valueType === '2' || valueType === 2 ? '%' : ''}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport tinycolor from 'tinycolor2';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetBaseProps, TApiaWidgetOxfordProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 45;\nconst END_ANGLE = 315;\n\nexport const Oxford = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n valueDecimals,\n valueType,\n}: TApiaWidgetBaseProps<TApiaWidgetOxfordProps>) => {\n const allTicks = true;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex(\n (range) => noNaN(value) <= noNaN(range),\n );\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"black\"\n opacity=\"1\"\n fill={\n backgroundColor !== '' && backgroundColor !== undefined\n ? tinycolor(backgroundColor)\n .setAlpha(0.5)\n .toPercentageRgbString()\n : 'none'\n }\n strokeLinecap=\"round\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n {valueRanges.map((innerValue, i) => {\n if (!valueRanges[i + 1]) {\n return null;\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={'black'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -20,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.1\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={75}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue) || '#999'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={10}\n vectorEffect={'non-scaling-stroke'}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle, i) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n vectorEffect={'non-scaling-stroke'}\n />\n {showText && (\n <text\n fill={'black'}\n {...gauge.getLabelProps({\n angle,\n offset: 20,\n })}\n style={{\n fontSize: `${scaleValuesSize ?? 30}px`,\n }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n vectorEffect={'non-scaling-stroke'}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n alignmentBaseline=\"text-before-edge\"\n y={diameter / 5}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n fill={currentValueColor}\n >\n {noNaN(value).toFixed(noNaN(valueDecimals))}\n {valueType === '2' || valueType === 2 ? '%' : ''}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\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}: 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 {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {!['', undefined, null].includes(unit) ? unit : ''}\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}: 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 {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {!['', undefined, null].includes(unit) ? unit : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { noNaN } from '@apia/util';\n\nconst colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => noNaN(value) <= noNaN(range));\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range, i) => {\n if (i === valueRanges.length - 1) {\n return noNaN(value) <= noNaN(range);\n }\n return noNaN(value) < noNaN(range);\n });\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","import { noNaN } from '@apia/util';\nimport { useState, useRef, useCallback } from 'react';\nimport { valueToPercent } from './util';\n\nexport const useCustomWidget = ({\n maxValue,\n minValue,\n currentValue,\n uId,\n}: {\n maxValue: number;\n minValue: number;\n currentValue: number;\n uId: string;\n}) => {\n const baseValue = minValue;\n const domainMax = maxValue;\n\n const [yDifference, setYDifference] = useState(0);\n const svgRect = useRef<DOMRect>({} as DOMRect);\n const pathRect = useRef<DOMRect>({} as DOMRect);\n\n const onRenderRect = useCallback(\n (el: SVGRectElement) => {\n if (!el) return;\n\n const svgElement = el.closest('svg');\n const pathElement = svgElement?.querySelector(`#path_${uId}`);\n\n if (!svgElement) throw new Error('No svg');\n if (!pathElement) throw new Error('No path');\n\n const svgBox = svgElement.getBoundingClientRect();\n const pathBox = pathElement.getBoundingClientRect();\n\n const pathY = pathBox.y - svgBox.y;\n\n svgRect.current = svgBox;\n pathRect.current = pathBox;\n setYDifference(pathY);\n },\n [uId],\n );\n\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\n const pathWidth = noNaN(pathRect.current.width);\n const pathHeight = noNaN(pathRect.current.height);\n\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\n\n const rectProps: React.SVGProps<SVGRectElement> = {\n y: noNaN(\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\n yDifference,\n ),\n x: pathX,\n width: pathWidth,\n height: pathHeight,\n style: {\n visibility: 'visible',\n transition: 'y 0.5s, fill 0.5s',\n },\n };\n\n return {\n rectRef: onRenderRect,\n svgViewBox: viewBox,\n rectProps,\n pathX,\n pathY,\n pathRect,\n svgRect,\n };\n};\n","import { Box } from '@apia/theme';\nimport { TApiaWidgetBaseProps, TApiaWidgetThermometerProps } from '../types';\nimport {\n valueToTickPercent,\n colorGetter,\n getInnerColor,\n getColor,\n} from './util';\nimport { noNaN } from '@apia/util';\nimport { useCustomWidget } from '../custom/useCustomWidget';\nimport { uniqueId } from 'lodash-es';\nimport { useMemo } from 'react';\n// Usar un segundo svg para los textos\nexport const Thermometer = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n currentValueFontSize,\n valueDecimals,\n valueType,\n}: TApiaWidgetBaseProps<TApiaWidgetThermometerProps>) => {\n const value = currentValue;\n const baseValue = noNaN(minValue) ?? valueRanges[0];\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\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`;\n const uId = useMemo(() => uniqueId(), []);\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\n currentValue: value,\n maxValue: domainMax,\n minValue: baseValue,\n uId,\n });\n\n const boxValues = {\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\n width: noNaN(Math.max(width, height)),\n x: pathX,\n y: pathY,\n };\n\n const tickArray = valueRanges.map((val, i) => {\n return {\n height:\n boxValues.height *\n (valueToTickPercent(domainMax, baseValue, val) / 100),\n color: !valueRanges[i + 1]\n ? 'black'\n : colorGetter(valueRanges, colorRanges, val),\n value: val,\n };\n });\n\n const cosmeticTicksArray = new Array(8).fill(0).map((_, i) => {\n const separation =\n (valueRanges[valueRanges.length - 1] - valueRanges[0]) / 8;\n return {\n value: i,\n color: 'black',\n height:\n boxValues.height *\n (valueToTickPercent(domainMax, baseValue, separation * i) / 100),\n };\n });\n\n return (\n <Box sx={{ position: 'relative' }}>\n <svg\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id={`svg_${uId}`}\n viewBox={svgViewBox}\n style={{ position: 'relative', top: '10px' }}\n >\n <clipPath id=\"clipPath\">\n <path d={pathDValue} />\n </clipPath>\n <mask id=\"myMask\">\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\n </mask>\n\n <path d={pathDValue} id={`path_${uId}`} fill=\"white\" />\n\n <rect\n fill={getInnerColor(valueRanges, colorRanges, value)}\n id={`rect_${uId}`}\n mask=\"url(#myMask)\"\n ref={rectRef}\n {...rectProps}\n />\n\n <path\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={10}\n clipPath=\"url(#clipPath)\"\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n clipPath=\"url(#clipPath)\"\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n </svg>\n <svg\n height={Math.max(width, height) + 10}\n width={Math.max(width, height)}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n {boxValues.x && (\n <g>\n <text\n x={Math.max(width, height) / 2}\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\n style={{\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\n fontWeight: 900,\n }}\n textAnchor=\"middle\"\n alignmentBaseline={'central'}\n vectorEffect={'non-scaling-stroke'}\n >\n {noNaN(value).toFixed(noNaN(valueDecimals))}\n {valueType === '2' || valueType === 2 ? '%' : ''}\n </text>\n </g>\n )}\n {cosmeticTicksArray.map((tick, i) => {\n if (i === 0) {\n return null;\n }\n return (\n <g key={i}>\n <rect\n x={Math.max(width, height) / 2}\n y={tick.height + 10}\n width={'15px'}\n height={'1px'}\n vectorEffect={'non-scaling-stroke'}\n fill={'black'}\n />\n </g>\n );\n })}\n {tickArray.map((tick, i) => {\n return (\n <g key={i}>\n {tickArray[i + 1] && i > 0 && (\n <>\n <rect\n x={Math.max(width, height) / 2 - 15}\n y={tick.height + 7}\n width={'30px'}\n height={'3px'}\n vectorEffect={'non-scaling-stroke'}\n fill={getColor(valueRanges, colorRanges, tick.value)}\n />\n <rect\n x={Math.max(width, height) / 2 - 15}\n y={tick.height - 10}\n width={'30px'}\n height={'20px'}\n opacity={0.1}\n vectorEffect={'non-scaling-stroke'}\n fill={getColor(valueRanges, colorRanges, tick.value)}\n />\n </>\n )}\n {i > 0 && (\n <text\n x={Math.max(width, height) / 2 + 14}\n y={tickArray[i + 1] ? tick.height + 5 : tick.height + 19}\n textAnchor=\"end\"\n alignmentBaseline={\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\n }\n style={{\n fontSize: '12px',\n fontWeight: 600,\n }}\n >\n {noNaN(tick.value).toFixed(0)}\n </text>\n )}\n </g>\n );\n })}\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetBaseProps, TApiaWidgetScaleProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 90;\nconst END_ANGLE = 270;\n\nexport const Scale = ({\n currentValue,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n valueDecimals,\n valueType,\n}: TApiaWidgetBaseProps<TApiaWidgetScaleProps>) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter / 2 + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 90,\n endAngle: 270,\n })}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n y={-diameter / 4 + 20}\n >\n {noNaN(value).toFixed(noNaN(valueDecimals))}\n {valueType === '2' || valueType === 2 ? '%' : ''}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\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}: 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 {noNaN(value).toFixed(noNaN(valueDecimals))}\r\n {valueType === '2' || valueType === 2 ? '%' : ''}\r\n {!['', undefined, null].includes(unit) ? unit : ''}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { arrayOrArray, getIndex } from '@apia/util';\nimport { TApiaWidgetBaseProps, TApiaWidgetProps, TWidgetZone } from './types';\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\nimport { Oxford } from './oxford/Oxford';\nimport { Counter } from './counter/Counter';\nimport { TLight } from './tLight/TLight';\nimport { Thermometer } from './thermometer/Thermometer';\nimport { Scale } from './scale/Scale';\nimport { Ring } from './ring/Ring';\nimport tinycolor from 'tinycolor2';\n\nexport const WidgetComponent = ({\n data,\n type,\n}: {\n data: TApiaWidgetBaseProps<any>;\n type:\n | 'SpeedMeter'\n | 'Oxford'\n | 'Counter'\n | 'TLight'\n | 'Thermometer'\n | 'Scale'\n | 'Ring';\n}) => {\n const CurrentWidget: TApiaWidgetBaseProps<any> = getIndex(\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\n [\n type === 'SpeedMeter',\n type === 'Oxford',\n type === 'Counter',\n type === 'TLight',\n type === 'Thermometer',\n type === 'Scale',\n type === 'Ring',\n ],\n 0,\n );\n const wigetTypeData: TApiaWidgetProps = data as TApiaWidgetProps & {\n zones: { Zone: TWidgetZone[] };\n };\n\n const widgetData = wigetTypeData as TApiaWidgetProps;\n let valueRanges: number[] = [];\n let colorRanges: string[] = [];\n\n if (data.zones && arrayOrArray(data.zones.Zone).length > 0) {\n valueRanges = Array.from(\n new Set(\n arrayOrArray(data.zones.Zone)\n .map((zone) => {\n return [Number(zone.minimum), Number(zone.maximum)];\n })\n .flat()\n .sort((a, b) => a - b),\n ),\n );\n\n colorRanges = arrayOrArray(data.zones.Zone)\n .map((zone) => {\n return tinycolor(zone.color)\n .setAlpha(1 - (255 - zone.transparency) / 255)\n .toPercentageRgbString();\n })\n .flat();\n } else {\n valueRanges = widgetData.valueRanges;\n colorRanges = widgetData.colorRanges;\n }\n\n widgetData.colorRanges = colorRanges;\n widgetData.valueRanges = valueRanges;\n return <CurrentWidget {...widgetData} />;\n};\n","import { arrayOrArray, getValueByPath } from '@apia/util';\nimport {\n ChartData,\n ChartOptions,\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n BarController,\n BarElement,\n PieController,\n ArcElement,\n ChartTypeRegistry,\n TooltipItem,\n LineController,\n} from 'chart.js';\nimport { useMemo, useRef } from 'react';\nimport { Chart } from 'react-chartjs-2';\nimport { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\nimport { IChartStylesSchemes } from '../types';\nimport tinycolor from 'tinycolor2';\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n BarController,\n BarElement,\n PieController,\n ArcElement,\n LineController,\n);\n\nexport type TChartData = {\n chartData: ChartData;\n showLegend?: boolean;\n showValues?: boolean;\n showXAxisValues?: boolean;\n showYAxisValues?: boolean;\n showTable?: boolean;\n type:\n | 'bar'\n | 'line'\n | 'scatter'\n | 'bubble'\n | 'pie'\n | 'doughnut'\n | 'polarArea'\n | 'radar'\n | 'waterfall';\n indexAxis?: 'x' | 'y';\n xAxisTitle?: string;\n yAxisTitle?: string;\n id?: string;\n chartId?: string;\n aspectRatio?: number;\n};\n\nexport type TDataset = {\n backgroundColor?: string | string[];\n borderColor?: string | string[];\n borderWidth?: number;\n label?: string;\n data: number[] | [number, number][];\n}[];\n\nexport const ChartComponent = (props: TChartData) => {\n const actualProps: TChartData = Object.assign(\n {\n chartData: { datasets: [{ data: [{ x: 0, y: 0 }] }] },\n type: 'bar',\n indexAxis: 'x',\n showLegend: true,\n showValues: true,\n showXAxisValues: true,\n showYAxisValues: true,\n showTable: true,\n xAxisTitle: '',\n yAxisTitle: '',\n aspectRatio: 2.5,\n },\n props,\n );\n const { theme } = useThemeUI();\n const chartRef = useRef<ChartJS>(null);\n\n if (!theme.layout)\n console.error('The layout property is missing in the current theme');\n\n const data: ChartData = useMemo(() => {\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\n ?.charts ?? {}) as IChartStylesSchemes;\n\n return {\n datasets: (actualProps.type === 'waterfall'\n ? arrayOrArray(actualProps.chartData.datasets).map((dataset) => {\n let sum = 0;\n const newData = dataset.data.map<[number, number]>((dataValue) => {\n if (typeof dataValue === 'number') {\n const currentValue = sum;\n sum += dataValue;\n return [currentValue, sum] as [number, number];\n } else {\n return dataValue as [number, number];\n }\n });\n\n return {\n ...dataset,\n data: newData,\n };\n })\n : actualProps.chartData.datasets\n ).map((dataset, datasetIndex) => {\n const isSingle =\n arrayOrArray(actualProps.chartData.datasets).every(\n (dataset) => arrayOrArray(dataset.data).length === 1,\n ) || actualProps.type === 'pie';\n\n const backgroundColor = (\n dataset.backgroundColor as string[] | string[][]\n ).map((actualColor, i) => {\n let schemaArray: string[] = [];\n if (typeof actualColor === 'string') {\n const color = actualColor.toLowerCase();\n if (color in charts) {\n const currentBackgroundStylescheme: {\n schema: Record<string, string>;\n } = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[color.toLowerCase()]?.schema as string,\n ) as Record<string, string>,\n };\n\n if (\n typeof currentBackgroundStylescheme.schema === 'object' &&\n currentBackgroundStylescheme.schema\n ) {\n if (isSingle) {\n if (actualProps.type === 'pie') {\n schemaArray = Object.values(\n currentBackgroundStylescheme.schema,\n ).map((varColor) => {\n return window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(varColor.slice(4, -1));\n });\n } else {\n schemaArray = new Array<string>(6)\n .fill(\n Object.values(currentBackgroundStylescheme.schema)[\n datasetIndex % 6\n ],\n )\n .map((varColor) => {\n return window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(varColor.slice(4, -1));\n });\n }\n } else {\n schemaArray = new Array<string>(6).fill(\n Object.values(currentBackgroundStylescheme.schema).map(\n (varColor) => {\n return window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(varColor.slice(4, -1));\n },\n )[datasetIndex % 6],\n );\n }\n }\n } else {\n schemaArray = [color, color, color, color, color, color];\n }\n } else {\n return actualColor[datasetIndex % actualColor.length];\n }\n\n return schemaArray[i % 6];\n });\n\n const hoverBackgroundColor = backgroundColor.map((c) => {\n const color = tinycolor(c);\n\n return (\n color.isDark() ? color.lighten(30) : color.darken(30)\n ).toHexString();\n });\n\n return {\n ...dataset,\n hoverBackgroundColor,\n backgroundColor,\n borderColor: (dataset.borderColor as string[] | string[][]).map(\n (color, i) => {\n let schemaBorderArray: string[] = [];\n if (typeof color === 'string') {\n if (color in charts) {\n const currentBorderStylescheme: {\n schema: Record<string, string>;\n } = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[color.toLowerCase()]?.schema as string,\n ) as Record<string, string>,\n };\n\n if (\n typeof currentBorderStylescheme.schema === 'object' &&\n currentBorderStylescheme.schema\n ) {\n schemaBorderArray = Object.values(\n currentBorderStylescheme.schema,\n ).map((varColor) => {\n return window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(varColor.slice(4, -1));\n });\n }\n } else {\n schemaBorderArray = [\n color,\n color,\n color,\n color,\n color,\n color,\n ];\n }\n } else {\n return color[datasetIndex % color.length];\n }\n return schemaBorderArray[i % 6];\n },\n ),\n };\n }),\n labels: actualProps.chartData.labels,\n };\n }, [\n actualProps.chartData.datasets,\n actualProps.chartData.labels,\n actualProps.type,\n theme.colors,\n theme.layout,\n ]);\n\n const options: ChartOptions = useMemo(() => {\n return {\n plugins: {\n legend: {\n position: 'right',\n display: actualProps.showLegend,\n onHover: (_, legendItem, __) => {\n const chart = chartRef.current;\n if (chart) {\n const activeElement = new Array(\n actualProps.type === 'pie'\n ? actualProps.chartData.datasets.length\n : actualProps.chartData.datasets[0].data.length,\n )\n .fill(0)\n .map((_, i) => {\n return {\n datasetIndex:\n actualProps.type === 'pie' ? i : legendItem.datasetIndex!,\n index:\n actualProps.type === 'pie' ? legendItem.index ?? i : i,\n };\n });\n\n chart.setActiveElements([...activeElement]); // To show thick border\n chart.tooltip?.setActiveElements([...activeElement], {\n x: 0,\n y: 0,\n });\n chart.update();\n }\n },\n labels: {\n filter(item, _) {\n if (actualProps.type === 'pie') {\n return (item.index ?? 0) < 10;\n } else {\n return (item.datasetIndex ?? 0) < 10;\n }\n },\n },\n },\n tooltip: {\n callbacks: {\n label(tooltipItem: TooltipItem<keyof ChartTypeRegistry>) {\n const XLabel = tooltipItem.dataset.label ?? '';\n let YValue = tooltipItem.formattedValue;\n\n if (isNaN(parseFloat(YValue))) {\n const arrayValue: [number, number] = tooltipItem.raw as [\n number,\n number,\n ];\n const realValue = arrayValue[1] - arrayValue[0];\n YValue = `${realValue}`;\n }\n let finalString = '';\n if (actualProps.showLegend || actualProps.type === 'pie') {\n finalString += XLabel;\n if (actualProps.showValues) {\n finalString += ': ' + YValue;\n }\n } else if (actualProps.showValues) {\n finalString += YValue;\n }\n return finalString;\n },\n title(tooltipItems: TooltipItem<keyof ChartTypeRegistry>[]) {\n if (\n (actualProps.type !== 'pie' &&\n !actualProps.showXAxisValues &&\n actualProps.indexAxis === 'x') ||\n (actualProps.type !== 'pie' &&\n !actualProps.showYAxisValues &&\n actualProps.indexAxis === 'y') ||\n (actualProps.type === 'pie' && !actualProps.showLegend)\n ) {\n return '';\n }\n return tooltipItems[0].label;\n },\n },\n enabled:\n (actualProps.indexAxis === 'y'\n ? actualProps.showYAxisValues\n : actualProps.showXAxisValues) ||\n actualProps.showValues ||\n actualProps.showLegend,\n },\n },\n aspectRatio: Math.max(actualProps.aspectRatio ?? 1, 2),\n indexAxis: actualProps.indexAxis,\n scales: {\n x: {\n display: actualProps.type !== 'pie',\n title: {\n display: actualProps.showXAxisValues,\n text:\n actualProps.indexAxis === 'y'\n ? actualProps.yAxisTitle\n : actualProps.xAxisTitle,\n },\n ticks: {\n display: !!actualProps.showXAxisValues,\n },\n grid: {\n display: actualProps.showTable,\n },\n },\n y: {\n axis: (actualProps.indexAxis === 'y' ? 'x' : 'y') as 'x' | 'y' | 'r',\n display: actualProps.type !== 'pie',\n title: {\n display: actualProps.showYAxisValues,\n text:\n actualProps.indexAxis === 'y'\n ? actualProps.xAxisTitle\n : actualProps.yAxisTitle,\n },\n ticks: {\n display: !!actualProps.showYAxisValues,\n },\n grid: {\n display: actualProps.showTable,\n },\n },\n },\n };\n }, [\n actualProps.aspectRatio,\n actualProps.chartData,\n actualProps.indexAxis,\n actualProps.showLegend,\n actualProps.showTable,\n actualProps.showValues,\n actualProps.showXAxisValues,\n actualProps.showYAxisValues,\n actualProps.type,\n actualProps.xAxisTitle,\n actualProps.yAxisTitle,\n ]);\n\n return (\n <Chart\n sx={{\n canvas: {\n width: '100%',\n height: 'auto',\n },\n }}\n id={actualProps.id ?? undefined}\n className={actualProps.chartId ?? ''}\n type={actualProps.type === 'waterfall' ? 'bar' : actualProps.type}\n options={options}\n data={data}\n ref={chartRef}\n />\n );\n};\n","import { Box } from '@apia/theme';\nimport {\n PivotTableUI,\n PivotTableUIProps,\n createPlotlyRenderers,\n TableRenderers,\n} from '@imc-trading/react-pivottable';\nimport 'react-pivottable/pivottable.css';\nimport { memo, useCallback, useEffect, useRef, useState } from 'react';\nimport { shallowEqual, usePrevious } from '@apia/util';\n\nfunction R(props: Omit<PivotTableUIProps, 'onChange'>) {\n const [Plot, setPlot] = useState<ReturnType<\n typeof createPlotlyRenderers\n > | null>(null);\n const prevProps = usePrevious(props);\n\n const handleChange = useCallback((s: PivotTableUIProps) => {\n setPivotState(() => {\n return s;\n });\n }, []);\n const [pivotState, setPivotState] = useState<PivotTableUIProps>({\n ...props,\n rows: props.rows?.filter((row) => row && row !== ''),\n cols: props.cols?.filter((col) => col && col !== ''),\n onChange: handleChange,\n });\n if (!shallowEqual(prevProps.current, props)) {\n setPivotState((s) => ({\n ...s,\n ...props,\n data: (props.data as string[][]).filter(\n (dataArr) => !dataArr.every((dat) => dat === ''),\n ),\n rows: props.rows?.filter((row) => row && row !== ''),\n cols: props.cols?.filter((col) => col && col !== ''),\n vals: (props.data as string[][])[0]?.some((item) => {\n const setVals = new Set(s.vals);\n return setVals.has(item);\n })\n ? s.vals\n : [],\n }));\n }\n const imported = useRef(false);\n useEffect(() => {\n if (imported.current) return;\n imported.current = true;\n\n import('react-plotly.js').then((Plot) => {\n setPlot(createPlotlyRenderers((Plot.default as any).default));\n });\n }, []);\n\n if (!Plot) return null;\n\n return (\n <PivotTableUI\n renderers={Object.assign({}, TableRenderers, Plot)}\n {...pivotState}\n menuLimit={Infinity}\n unusedOrientationCutoff={Infinity}\n />\n );\n}\n\nexport const PivotTableComponent = memo(\n (props: Omit<PivotTableUIProps, 'onChange'>) => {\n return (\n <Box\n onClick={(ev) => ev.stopPropagation()}\n onMouseDown={(ev) => ev.stopPropagation()}\n onDrag={(ev) => ev.stopPropagation()}\n onDragStart={(ev) => ev.stopPropagation()}\n >\n <R {...props} />\n </Box>\n );\n },\n);\n"],"names":["START_ANGLE","END_ANGLE","value","angle","pathY","ChartJS","dataset","_","Plot"],"mappings":";;;;;;;;;;;AAMA,MAAMA,aAAc,GAAA,EAAA;AACpB,MAAMC,WAAY,GAAA,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,CAAwD,KAAA;AAEtD,EAAA,MAAM,KAAQ,GAAA,YAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,MAAS,GAAA,EAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAEI,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,IAAI,EAAK,GAAA,CAAA;AAAA,IAC/C;AAAA,GACD,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA;AAAA,GACZ,CAAA;AAED,EAAA,SAAS,SAASC,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA;AAAA,MACxB,CAAC,KAAU,KAAA,KAAA,CAAMA,MAAK,CAAA,IAAK,MAAM,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,UAAU,EAAI,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,YAAY,KAAK,CAAA;AAAA;AAG1B,EAAA,MAAM,KAAU,GAAA,CAAAD,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA;AAEjE,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAY,EAAA;AAAA,MACtB,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAM,KAAK,QAAW,GAAA,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAS,GAAA,CACtB,CAAI,CAAA,EAAA,QAAA,GAAW,SAAS,CAAC,CAAA,CAAA;AAAA,MAEzB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,gBACjB,UAAY,EAAA,CAAA;AAAA,gBACZ,QAAU,EAAA;AAAA,eACX,CAAA;AAAA,cACD,MAAO,EAAA,MAAA;AAAA,cACP,MAAM,eAAmB,IAAA,MAAA;AAAA,cACzB,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA;AAAA;AAAA,WACf;AAAA,UACC,WAAY,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAClC,YAAM,MAAA,YAAA,GAAe,CAACE,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA;AAC/B,cAAA,MAAMG,MACJ,GAAAH,aAAA,GAAA,CAAgBE,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA;AACrD,cAAO,OAAA,IAAA,CAAK,MAAMC,MAAK,CAAA;AAAA,aACzB;AAEA,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAY,CAAA;AAAA,oBACpB,MAAQ,EAAA,GAAA;AAAA,oBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAH,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CACzB,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,OAAA;AAAA,kBACd,WAAa,EAAA;AAAA;AAAA,eACf;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAY,CAAA;AAAA,oBACpB,MAAQ,EAAA,GAAA;AAAA,oBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAD,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CACzB,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,GAAK,EAAA,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,kBACvB,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,OAAA;AAAA,kBACd,WAAa,EAAA;AAAA;AAAA;AACf,aAAA,EAAA,EArCM,CAAG,EAAA,UAAU,CAAI,CAAA,EAAA,CAAC,CAsC1B,CAAA,CAAA;AAAA,WAEH;AAAA,SACH,EAAA,CAAA;AAAA,wBACA,GAAA,CAAC,OAAE,EAAG,EAAA,OAAA,EACH,gBAAM,KAAM,CAAA,GAAA,CAAI,CAACE,MAAU,KAAA;AAC1B,UAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,YAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA;AAC/B,YAAA,MAAM,aAAa,SAAY,GAAA,SAAA;AAE/B,YAAA,MAAME,MACJ,GAAA,SAAA,GAAA,CAAcC,MAAQ,GAAAH,aAAA,IAAe,UAAc,GAAA,UAAA;AAErD,YAAO,OAAA,IAAA,CAAK,MAAME,MAAK,CAAA;AAAA,WACzB;AACA,UAAM,MAAA,OAAA,GAAU,aAAaC,MAAK,CAAA;AAClC,UAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA;AAElC,UACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,MAAO,EAAA,MAAA;AAAA,gBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,gBAC3B,GAAG,KAAM,CAAA,YAAA,CAAa,EAAE,KAAA,EAAAA,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG;AAAA;AAAA,aAC7D;AAAA,YACC,QACC,oBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAK,EAAA,OAAA;AAAA,gBACJ,GAAG,MAAM,aAAc,CAAA,EAAE,OAAAA,MAAO,EAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,gBAC7C,OAAO,EAAE,QAAA,EAAU,CAAG,EAAA,eAAA,IAAmB,EAAE,CAAK,EAAA,CAAA,EAAA;AAAA,gBAE/C,QAAA,EAAA;AAAA;AAAA;AACH,WAbiB,EAAA,EAAA,CAAA,WAAA,EAAcA,MAAK,CAexC,CAAA,CAAA;AAAA,SAEH,CACH,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAO,IAAM,EAAA,YAAA,EAAe,GAAG,MAAO,CAAA,IAAA,EAAM,GAAG,EAAI,EAAA,CAAA;AAAA,8BACnD,QAAO,EAAA,EAAA,IAAA,EAAM,YAAe,EAAA,GAAG,OAAO,IAAM,EAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACP,GAAG,MAAO,CAAA,GAAA;AAAA,cACX,KAAO,EAAA;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAY,EAAA;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAY,EAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA;AAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,YAAO,IAAK,EAAA,OAAA,EAAS,GAAG,MAAO,CAAA,IAAA,EAAM,GAAG,CAAG,EAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,GAAG,QAAW,GAAA,CAAA;AAAA,YACd,IAAM,EAAA,iBAAA;AAAA,YACN,OAAO,EAAE,QAAA,EAAU,CAAG,EAAA,oBAAA,IAAwB,EAAE,CAAK,EAAA,CAAA,EAAA;AAAA,YAEpD,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA;AAAA;AAAA;AAAA,SAElD,EAAA;AAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ,CAAA;;ACvMA,MAAMH,aAAc,GAAA,EAAA;AACpB,MAAMC,WAAY,GAAA,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,CAAoD,KAAA;AAElD,EAAA,MAAM,KAAQ,GAAA,YAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAElD,EAAA,MAAM,MAAS,GAAA,EAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAAU,EAAK,GAAA,CAAA;AAAA,IACf;AAAA,GACD,CAAA;AACD,EAAA,MAAM,SAAS,QAAS,CAAA;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAY,CAAA,CAAC,GAAG,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAI,GAAA,CAAA;AAAA,IACjE;AAAA,GACD,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,KAAU,GAAA,CAAAA,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA;AAEjE,EAAA,SAAS,SAASE,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA;AAAA,MACxB,CAAC,KAAU,KAAA,KAAA,CAAMA,MAAK,CAAA,IAAK,MAAM,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,UAAU,EAAI,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,YAAY,KAAK,CAAA;AAAA;AAG1B,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAY,EAAA;AAAA,MACtB,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAM,KAAK,QAAW,GAAA,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAS,GAAA,CACtB,CAAI,CAAA,EAAA,QAAA,GAAW,SAAS,CAAC,CAAA,CAAA;AAAA,MAEzB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,gBACjB,UAAY,EAAA,CAAA;AAAA,gBACZ,QAAU,EAAA;AAAA,eACX,CAAA;AAAA,cACD,MAAO,EAAA,OAAA;AAAA,cACP,OAAQ,EAAA,GAAA;AAAA,cACR,IACE,EAAA,eAAA,KAAoB,EAAM,IAAA,eAAA,KAAoB,MAC1C,GAAA,SAAA,CAAU,eAAe,CAAA,CACtB,QAAS,CAAA,GAAG,CACZ,CAAA,qBAAA,EACH,GAAA,MAAA;AAAA,cAEN,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,cACb,YAAc,EAAA;AAAA;AAAA,WAChB;AAAA,UACC,WAAY,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAClC,YAAA,IAAI,CAAC,WAAA,CAAY,CAAI,GAAA,CAAC,CAAG,EAAA;AACvB,cAAO,OAAA,IAAA;AAAA;AAGT,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA;AAC/B,cAAA,MAAMG,MACJ,GAAAH,aAAA,GAAA,CAAgBE,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA;AACrD,cAAO,OAAA,IAAA,CAAK,MAAMC,MAAK,CAAA;AAAA,aACzB;AAEA,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAY,CAAA;AAAA,oBACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,oBACjB,UACE,EAAA,CAAA,KAAM,CAAI,GAAAH,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CACzB,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,MAAQ,EAAA,OAAA;AAAA,kBACR,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,QAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,kBACb,YAAc,EAAA;AAAA;AAAA,eAChB;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAY,CAAA;AAAA,oBACpB,MAAQ,EAAA,GAAA;AAAA,oBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAD,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CACzB,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,MAAA;AAAA,kBACd,WAAa,EAAA,EAAA;AAAA,kBACb,YAAc,EAAA;AAAA;AAAA,eAChB;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAM,WAAY,CAAA;AAAA,oBACpB,MAAQ,EAAA,GAAA;AAAA,oBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAD,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,oBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CACzB,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC;AAAA,mBACxC,CAAA;AAAA,kBACD,GAAK,EAAA,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAAA,kBACvB,MAAA,EAAQ,QAAS,CAAA,UAAU,CAAK,IAAA,MAAA;AAAA,kBAChC,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,MAAA;AAAA,kBACd,WAAa,EAAA,EAAA;AAAA,kBACb,YAAc,EAAA;AAAA;AAAA;AAChB,aAAA,EAAA,EA1DM,CAAG,EAAA,UAAU,CAAI,CAAA,EAAA,CAAC,CA2D1B,CAAA,CAAA;AAAA,WAEH;AAAA,SACH,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,OACH,EAAA,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,KAAM,CAAA,GAAA,CAAI,CAACE,MAAAA,EAAO,CAAM,KAAA;AAC7B,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA;AAE/B,cAAA,MAAME,MACJ,GAAA,SAAA,GAAA,CAAcC,MAAQ,GAAAH,aAAA,IAAe,UAAc,GAAA,UAAA;AAErD,cAAO,OAAA,IAAA,CAAK,MAAME,MAAK,CAAA;AAAA,aACzB;AACA,YAAM,MAAA,OAAA,GAAU,aAAaC,MAAK,CAAA;AAElC,YAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA;AAElC,YACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,MAAO,EAAA,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,kBAC3B,GAAG,KAAM,CAAA,YAAA,CAAa,EAAE,KAAA,EAAAA,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG,CAAA;AAAA,kBAC3D,YAAc,EAAA;AAAA;AAAA,eAChB;AAAA,cACC,QACC,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAM,EAAA,OAAA;AAAA,kBACL,GAAG,MAAM,aAAc,CAAA;AAAA,oBACtB,KAAAA,EAAAA,MAAAA;AAAA,oBACA,MAAQ,EAAA;AAAA,mBACT,CAAA;AAAA,kBACD,KAAO,EAAA;AAAA,oBACL,QAAA,EAAU,CAAG,EAAA,eAAA,IAAmB,EAAE,CAAA,EAAA;AAAA,mBACpC;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EAAA,EAnBiB,CAAcA,WAAAA,EAAAA,MAAK,CAAK,EAAA,EAAA,CAAC,CAqB9C,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,UAEC,MAAO,CAAA,KAAA,CAAM,GAAI,CAAA,CAACA,QAAO,CAAM,KAAA;AAC7B,YACE,uBAAA,GAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,MAAO,EAAA,MAAA;AAAA,gBACP,WAAa,EAAA,CAAA;AAAA,gBACZ,GAAG,MAAM,YAAa,CAAA;AAAA,kBACrB,KAAAA,EAAAA,MAAAA;AAAA,kBACA,MAAQ,EAAA;AAAA,iBACT,CAAA;AAAA,gBACD,YAAc,EAAA;AAAA;AAAA,aARG,EAAA,EAAA,CAAA,WAAA,EAAcA,MAAK,CAAA,EAAA,EAAK,CAAC,CAU9C,EAAA,CAAA,CAAA;AAAA,WAEH;AAAA,SACL,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAO,IAAM,EAAA,YAAA,EAAe,GAAG,MAAO,CAAA,IAAA,EAAM,GAAG,EAAI,EAAA,CAAA;AAAA,8BACnD,QAAO,EAAA,EAAA,IAAA,EAAM,YAAe,EAAA,GAAG,OAAO,IAAM,EAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACP,GAAG,MAAO,CAAA,GAAA;AAAA,cACX,KAAO,EAAA;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAY,EAAA;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAY,EAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA;AAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,YAAO,IAAK,EAAA,OAAA,EAAS,GAAG,MAAO,CAAA,IAAA,EAAM,GAAG,CAAG,EAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,iBAAkB,EAAA,kBAAA;AAAA,YAClB,GAAG,QAAW,GAAA,CAAA;AAAA,YACd,OAAO,EAAE,QAAA,EAAU,CAAG,EAAA,oBAAA,IAAwB,EAAE,CAAK,EAAA,CAAA,EAAA;AAAA,YACrD,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA;AAAA;AAAA;AAAA,SAElD,EAAA;AAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ,CAAA;;ACxQA,MAAMH,aAAc,GAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA;AAEX,MAAM,UAAU,CAAC;AAAA,EACtB,SAAY,GAAA,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,oBAAA;AAAA,EACA,IAAM,EAAA,SAAA;AAAA,EACN,aAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAqD,KAAA;AACnD,EAAA,MAAM,IAAO,GAAA,SAAA,EAAW,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA;AACrC,EAAM,MAAA,CAAC,OAAO,QAAQ,CAAA,GAAI,SAAS,KAAM,CAAA,YAAY,KAAK,CAAC,CAAA;AAC3D,EAAM,MAAA,WAAA,GAAA,CAAgB,oBAAmC,IAAA,EAAA,IAAM,CAAI,GAAA,GAAA;AACnE,EAAA,MAAM,QAAW,GAAA,WAAA;AACjB,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AAED,EAAA,SAAS,SAASC,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA;AAAA,MACxB,CAAC,KAAU,KAAA,KAAA,CAAMA,MAAK,CAAA,IAAK,MAAM,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,UAAU,EAAI,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AAAA;AAEpD,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAa,GAAA,KAAA,CAAM,YAAY,CAAA,GAAI,gBAAiB,CAAA,OAAA;AAC1D,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,SAAS,IAAK,CAAA,GAAA,CAAI,EAAI,EAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAC9C,QAAI,IAAA,SAAA,KAAc,CAAK,IAAA,SAAA,KAAc,GAAK,EAAA;AACxC,UAAS,MAAA,GAAA,CAAA;AAAA;AAEX,QAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,IAAO,GAAA,MAAM,IAAI,MAAM,CAAA;AAAA,OAC7C;AAAA,MACA,MAAM;AACJ,QAAiB,gBAAA,CAAA,OAAA,GAAU,MAAM,YAAY,CAAA;AAAA;AAC/C,KACF;AAAA,GAEC,EAAA,CAAC,KAAM,CAAA,YAAY,CAAC,CAAC,CAAA;AAExB,EACE,uBAAA,IAAA,CAAC,OAAI,EAAI,EAAA,EAAE,UAAU,UAAW,EAAA,EAAG,WAAU,0BAC3C,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,MAAM,WAAY,EAAA;AAAA,QACtB,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAS,EAAA,MAAA;AAAA,QAET,QAAA,kBAAA,GAAA,CAAC,OAAE,EAAG,EAAA,MAAA,EACH,uBAAa,CAAG,EAAA,KAAK,CAAG,CAAA,CAAA,MAAA,GAAS,CAChC,oBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,EAAI,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,YAC9B,EAAI,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,YAC9B,EAAI,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,YAC9B,EAAI,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,YAC9B,MAAO,EAAA,MAAA;AAAA,YACP,OAAQ,EAAA,KAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA,YACL,aAAc,EAAA,OAAA;AAAA,YACd,WAAa,EAAA;AAAA;AAAA,SAGnB,EAAA;AAAA;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAO,EAAE,QAAA,EAAU,YAAY,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA;AAAA,QAE/C,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,YAC7B,GAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,CAAA;AAAA,YACjC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA;AAAA,cACL,QAAA,EAAU,CAAG,EAAA,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA;AAAA,cACvC,UAAY,EAAA;AAAA,aACd;AAAA,YACA,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,YAEnB,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA,EAAA;AAAA,cAC7C,CAAC,CAAC,EAAI,EAAA,MAAA,EAAW,IAAI,CAAE,CAAA,QAAA,CAAS,IAAI,CAAA,GAAI,IAAO,GAAA;AAAA;AAAA;AAAA;AAClD;AAAA;AACF,GACF,EAAA,CAAA;AAEJ,CAAA;;ACjHA,MAAMF,aAAc,GAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,SAAY,GAAA,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAM,EAAA,SAAA;AAAA,EACN,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAoD,KAAA;AAClD,EAAA,MAAM,IAAO,GAAA,SAAA,EAAW,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA;AACrC,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,IAAI,QAAS,CAAA,KAAA,CAAM,YAAY,CAAC,CAAA;AACtD,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AACD,EAAA,SAAS,SAASC,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUA,SAAQ,KAAK,CAAA;AAE5D,IAAA,IAAI,UAAU,EAAI,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AAAA;AAGpD,EAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA;AAEhC,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,EAAsB,KAAA;AACrB,MAAI,IAAA,CAAC,MAAM,WAAY,CAAA,OAAA;AAAS,QAAA;AAEhC,MAAA,WAAA,CAAY,OAAU,GAAA,IAAA;AAEtB,MAAA,MAAM,UAAa,GAAA,EAAA;AACnB,MAAM,MAAA,WAAA,GAAc,EAAG,CAAA,aAAA,CAAc,cAAc,CAAA;AAEnD,MAAI,IAAA,EAAE,cAAc,WAAc,CAAA,EAAA;AAChC,QAAA;AAAA;AAGF,MAAM,MAAA,OAAA,GAAU,YAAY,qBAAsB,EAAA;AAClD,MAAM,MAAA,MAAA,GAAS,WAAW,qBAAsB,EAAA;AAChD,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA;AACjC,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA;AAEjC,MAAA,MAAM,OAAU,GAAA,CAAA,EAAG,KAAQ,GAAA,QAAA,GAAW,CAAC,CAAA,CAAA,EACrC,KAAQ,GAAA,QAAA,GAAW,CACrB,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAExB,MAAW,UAAA,CAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAE1C,MAAA,UAAA,CAAW,MAAM,UAAa,GAAA,SAAA;AAAA,KAChC;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAa,GAAA,KAAA,CAAM,YAAY,CAAA,GAAI,gBAAiB,CAAA,OAAA;AAC1D,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA;AAAA,SACF;AAEA,QAAA,IAAI,SAAS,IAAK,CAAA,GAAA,CAAI,EAAI,EAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAC9C,QAAI,IAAA,SAAA,KAAc,CAAK,IAAA,SAAA,KAAc,GAAK,EAAA;AACxC,UAAS,MAAA,GAAA,CAAA;AAAA;AAEX,QAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,IAAO,GAAA,MAAM,IAAI,MAAM,CAAA;AAAA,OAC7C;AAAA,MACA,MAAM;AACJ,QAAiB,gBAAA,CAAA,OAAA,GAAU,MAAM,YAAY,CAAA;AAAA;AAC/C,KACF;AAAA,GAEC,EAAA,CAAC,KAAM,CAAA,YAAY,CAAC,CAAC,CAAA;AACxB,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAY,EAAA;AAAA,MACtB,KAAA,EAAO,EAAE,UAAA,EAAY,QAAS,EAAA;AAAA,MAC9B,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,EAAG,EAAA,YAAA;AAAA,MACH,GAAK,EAAA,WAAA;AAAA,MACL,OAAA,EAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAC,CAAA,EAAA,EAAK,WAAW,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAAA,MAElE,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,aACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,UAAY,EAAAF,aAAA;AAAA,gBACZ,QAAU,EAAAC;AAAA,eACX,CAAA;AAAA,cACD,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,cACpB,EAAG,EAAA,aAAA;AAAA,cACH,KAAA,EAAO,EAAE,UAAA,EAAY,WAAY;AAAA;AAAA,WACnC;AAAA,UACC,SACC,oBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,MAAQ,EAAA,IAAA;AAAA,gBACR,UAAY,EAAAD,aAAA;AAAA,gBACZ,QAAU,EAAAC;AAAA,eACX,CAAA;AAAA,cACD,MAAQ,EAAA,OAAA;AAAA,cACR,IAAM,EAAA,aAAA;AAAA,cACN,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,cACb,EAAG,EAAA;AAAA;AAAA;AACL,SAEJ,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,OAAO,EAAE,QAAA,EAAU,CAAG,EAAA,oBAAA,IAAwB,GAAG,CAAK,EAAA,CAAA,EAAA;AAAA,YACtD,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA,EAAA;AAAA,cAC7C,CAAC,CAAC,EAAI,EAAA,MAAA,EAAW,IAAI,CAAE,CAAA,QAAA,CAAS,IAAI,CAAA,GAAI,IAAO,GAAA;AAAA;AAAA;AAAA,SAEpD,EAAA;AAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ,CAAA;;ACtJA,MAAM,WAAc,GAAA,CAClB,WACA,EAAA,WAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,KAAQ,GAAA,EAAA;AACZ,EAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AACpC,IAAA,IAAI,SAAS,UAAc,IAAA,WAAA,CAAY,KAAQ,GAAA,CAAC,KAAK,UAAY,EAAA;AAC/D,MAAQ,KAAA,GAAA,WAAA,CAAY,QAAQ,CAAC,CAAA;AAAA;AAC/B,GACD,CAAA;AAED,EAAO,OAAA,KAAA;AACT,CAAA;AAEA,SAAS,QAAA,CAAS,WAAuB,EAAA,WAAA,EAAuB,KAAe,EAAA;AAC7E,EAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAU,MAAM,KAAK,CAAA,IAAK,KAAM,CAAA,KAAK,CAAC,CAAA;AAE3E,EAAA,IAAI,UAAU,EAAI,EAAA;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,EAAA,OAAO,YAAY,KAAK,CAAA;AAC1B;AAEA,SAAS,aAAA,CACP,WACA,EAAA,WAAA,EACA,KACA,EAAA;AACA,EAAA,MAAM,KAAQ,GAAA,WAAA,CAAY,SAAU,CAAA,CAAC,OAAO,CAAM,KAAA;AAChD,IAAI,IAAA,CAAA,KAAM,WAAY,CAAA,MAAA,GAAS,CAAG,EAAA;AAChC,MAAA,OAAO,KAAM,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,KAAK,CAAA;AAAA;AAEpC,IAAA,OAAO,KAAM,CAAA,KAAK,CAAI,GAAA,KAAA,CAAM,KAAK,CAAA;AAAA,GAClC,CAAA;AAED,EAAA,IAAI,UAAU,EAAI,EAAA;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,EAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AACpD;AAEA,MAAM,kBAAqB,GAAA,CACzB,SACA,EAAA,SAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,aAAa,SAAa,IAAA,CAAA,CAAA;AACxC,EAAA,MAAM,UAAa,GAAA,GAAA,GAAA,CAAQ,KAAS,IAAA,SAAA,IAAa,MAAM,KAAS,GAAA,GAAA;AAEhE,EAAO,OAAA,IAAA,CAAK,MAAM,UAAU,CAAA;AAC9B,CAAA;;ACNA,MAAM,cAAiB,GAAA,CACrB,SACA,EAAA,SAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,aAAa,SAAa,IAAA,CAAA,CAAA;AACxC,EAAA,MAAM,UAAa,GAAA,GAAA,GAAA,CAAQ,KAAS,IAAA,SAAA,IAAa,MAAM,KAAS,GAAA,GAAA;AAChE,EAAM,MAAA,IAAA,GAAQ,aAAa,EAAM,GAAA,GAAA;AAEjC,EAAO,OAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AACxB,CAAA;;ACvDO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAKM,KAAA;AACJ,EAAA,MAAM,SAAY,GAAA,QAAA;AAClB,EAAA,MAAM,SAAY,GAAA,QAAA;AAElB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA;AAChD,EAAM,MAAA,OAAA,GAAU,MAAgB,CAAA,EAAa,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,MAAgB,CAAA,EAAa,CAAA;AAE9C,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,EAAuB,KAAA;AACtB,MAAA,IAAI,CAAC,EAAA;AAAI,QAAA;AAET,MAAM,MAAA,UAAA,GAAa,EAAG,CAAA,OAAA,CAAQ,KAAK,CAAA;AACnC,MAAA,MAAM,WAAc,GAAA,UAAA,EAAY,aAAc,CAAA,CAAA,MAAA,EAAS,GAAG,CAAE,CAAA,CAAA;AAE5D,MAAA,IAAI,CAAC,UAAA;AAAY,QAAM,MAAA,IAAI,MAAM,QAAQ,CAAA;AACzC,MAAA,IAAI,CAAC,WAAA;AAAa,QAAM,MAAA,IAAI,MAAM,SAAS,CAAA;AAE3C,MAAM,MAAA,MAAA,GAAS,WAAW,qBAAsB,EAAA;AAChD,MAAM,MAAA,OAAA,GAAU,YAAY,qBAAsB,EAAA;AAElD,MAAMG,MAAAA,MAAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA;AAEjC,MAAA,OAAA,CAAQ,OAAU,GAAA,MAAA;AAClB,MAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AACnB,MAAA,cAAA,CAAeA,MAAK,CAAA;AAAA,KACtB;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,CAAS,QAAQ,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAC1D,EAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,CAAS,QAAQ,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAC1D,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,KAAK,CAAA;AAC9C,EAAA,MAAM,UAAa,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAA;AAEhD,EAAM,MAAA,OAAA,GAAU,GAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,SAAS,IAAI,UAAU,CAAA,CAAA;AAE5D,EAAA,MAAM,SAA4C,GAAA;AAAA,IAChD,CAAG,EAAA,KAAA;AAAA,MACA,eAAe,SAAW,EAAA,SAAA,EAAW,YAAY,CAAA,GAAI,aAAc,GAClE,GAAA;AAAA,KACJ;AAAA,IACA,CAAG,EAAA,KAAA;AAAA,IACH,KAAO,EAAA,SAAA;AAAA,IACP,MAAQ,EAAA,UAAA;AAAA,IACR,KAAO,EAAA;AAAA,MACL,UAAY,EAAA,SAAA;AAAA,MACZ,UAAY,EAAA;AAAA;AACd,GACF;AAEA,EAAO,OAAA;AAAA,IACL,OAAS,EAAA,YAAA;AAAA,IACT,UAAY,EAAA,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,CAAyD,KAAA;AACvD,EAAA,MAAM,KAAQ,GAAA,YAAA;AACd,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,UAAa,GAAA,CAAA,mRAAA,CAAA;AACnB,EAAA,MAAM,MAAM,OAAQ,CAAA,MAAM,QAAS,EAAA,EAAG,EAAE,CAAA;AACxC,EAAA,MAAM,EAAE,SAAW,EAAA,OAAA,EAAS,YAAY,KAAa,IAAI,eAAgB,CAAA;AAAA,IACvE,YAAc,EAAA,KAAA;AAAA,IACd,QAAU,EAAA,SAAA;AAAA,IACV,QAAU,EAAA,SAAA;AAAA,IACV;AAAA,GACD,CAAA;AAED,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,MAAQ,EAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA,GAAI,IAAI,CAAA;AAAA,IACtE,OAAO,KAAM,CAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,IACpC,CAAG,EAAA,KAEL,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA,WAAA,CAAY,GAAI,CAAA,CAAC,KAAK,CAAM,KAAA;AAC5C,IAAO,OAAA;AAAA,MACL,QACE,SAAU,CAAA,MAAA,IACT,mBAAmB,SAAW,EAAA,SAAA,EAAW,GAAG,CAAI,GAAA,GAAA,CAAA;AAAA,MACnD,KAAA,EAAO,CAAC,WAAA,CAAY,CAAI,GAAA,CAAC,IACrB,OACA,GAAA,WAAA,CAAY,WAAa,EAAA,WAAA,EAAa,GAAG,CAAA;AAAA,MAC7C,KAAO,EAAA;AAAA,KACT;AAAA,GACD,CAAA;AAED,EAAM,MAAA,kBAAA,GAAqB,IAAI,KAAA,CAAM,CAAC,CAAA,CAAE,IAAK,CAAA,CAAC,CAAE,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AAC5D,IAAM,MAAA,UAAA,GAAA,CACH,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAK,IAAA,CAAA;AAC3D,IAAO,OAAA;AAAA,MACL,KAAO,EAAA,CAAA;AAAA,MACP,KAAO,EAAA,OAAA;AAAA,MACP,MAAA,EACE,UAAU,MACT,IAAA,kBAAA,CAAmB,WAAW,SAAW,EAAA,UAAA,GAAa,CAAC,CAAI,GAAA,GAAA;AAAA,KAChE;AAAA,GACD,CAAA;AAED,EAAA,4BACG,GAAI,EAAA,EAAA,EAAA,EAAI,EAAE,QAAA,EAAU,YACnB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,EAAA,EAAI,OAAO,GAAG,CAAA,CAAA;AAAA,QACd,OAAS,EAAA,UAAA;AAAA,QACT,KAAO,EAAA,EAAE,QAAU,EAAA,UAAA,EAAY,KAAK,MAAO,EAAA;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,cAAS,EAAG,EAAA,UAAA,EACX,8BAAC,MAAK,EAAA,EAAA,CAAA,EAAG,YAAY,CACvB,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,MAAA,EAAA,EAAK,EAAG,EAAA,QAAA,EACP,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,CAAG,EAAA,UAAA,EAAY,EAAG,EAAA,UAAA,EAAW,IAAK,EAAA,OAAA,EAAQ,CAClD,EAAA,CAAA;AAAA,0BAEA,GAAA,CAAC,UAAK,CAAG,EAAA,UAAA,EAAY,IAAI,CAAQ,KAAA,EAAA,GAAG,CAAI,CAAA,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA;AAAA,0BAErD,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAM,EAAA,aAAA,CAAc,WAAa,EAAA,WAAA,EAAa,KAAK,CAAA;AAAA,cACnD,EAAA,EAAI,QAAQ,GAAG,CAAA,CAAA;AAAA,cACf,IAAK,EAAA,cAAA;AAAA,cACL,GAAK,EAAA,OAAA;AAAA,cACJ,GAAG;AAAA;AAAA,WACN;AAAA,0BAEA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAG,EAAA,UAAA;AAAA,cACH,EAAG,EAAA,MAAA;AAAA,cACH,IAAK,EAAA,MAAA;AAAA,cACL,MAAO,EAAA,OAAA;AAAA,cACP,WAAa,EAAA,EAAA;AAAA,cACb,QAAS,EAAA,gBAAA;AAAA,cACT,YAAc,EAAA;AAAA;AAAA,WAChB;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAS,EAAA,gBAAA;AAAA,cACT,CAAG,EAAA,UAAA;AAAA,cACH,EAAG,EAAA,MAAA;AAAA,cACH,IAAK,EAAA,MAAA;AAAA,cACL,MAAO,EAAA,OAAA;AAAA,cACP,WAAa,EAAA,CAAA;AAAA,cACb,YAAc,EAAA;AAAA;AAAA;AAChB;AAAA;AAAA,KACF;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,EAAA;AAAA,QAClC,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAO,EAAE,QAAA,EAAU,YAAY,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA;AAAA,QAE9C,QAAA,EAAA;AAAA,UAAU,SAAA,CAAA,CAAA,wBACR,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,cAC7B,CAAA,EAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA,GAAI,CAAI,GAAA,EAAA;AAAA,cAC3D,KAAO,EAAA;AAAA,gBACL,QAAU,EAAA,CAAA,EAAG,KAAM,CAAA,oBAAoB,KAAK,EAAE,CAAA,EAAA,CAAA;AAAA,gBAC9C,UAAY,EAAA;AAAA,eACd;AAAA,cACA,UAAW,EAAA,QAAA;AAAA,cACX,iBAAmB,EAAA,SAAA;AAAA,cACnB,YAAc,EAAA,oBAAA;AAAA,cAEb,QAAA,EAAA;AAAA,gBAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,gBACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA;AAAA;AAAA;AAAA,WAElD,EAAA,CAAA;AAAA,UAED,kBAAmB,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,CAAM,KAAA;AACnC,YAAA,IAAI,MAAM,CAAG,EAAA;AACX,cAAO,OAAA,IAAA;AAAA;AAET,YAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,gBAC7B,CAAA,EAAG,KAAK,MAAS,GAAA,EAAA;AAAA,gBACjB,KAAO,EAAA,MAAA;AAAA,gBACP,MAAQ,EAAA,KAAA;AAAA,gBACR,YAAc,EAAA,oBAAA;AAAA,gBACd,IAAM,EAAA;AAAA;AAAA,iBAPF,CASR,CAAA;AAAA,WAEH,CAAA;AAAA,UACA,SAAU,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,CAAM,KAAA;AAC1B,YAAA,4BACG,GACE,EAAA,EAAA,QAAA,EAAA;AAAA,cAAA,SAAA,CAAU,CAAI,GAAA,CAAC,CAAK,IAAA,CAAA,GAAI,qBAErB,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,GAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA;AAAA,oBACjC,CAAA,EAAG,KAAK,MAAS,GAAA,CAAA;AAAA,oBACjB,KAAO,EAAA,MAAA;AAAA,oBACP,MAAQ,EAAA,KAAA;AAAA,oBACR,YAAc,EAAA,oBAAA;AAAA,oBACd,IAAM,EAAA,QAAA,CAAS,WAAa,EAAA,WAAA,EAAa,KAAK,KAAK;AAAA;AAAA,iBACrD;AAAA,gCACA,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,GAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA;AAAA,oBACjC,CAAA,EAAG,KAAK,MAAS,GAAA,EAAA;AAAA,oBACjB,KAAO,EAAA,MAAA;AAAA,oBACP,MAAQ,EAAA,MAAA;AAAA,oBACR,OAAS,EAAA,GAAA;AAAA,oBACT,YAAc,EAAA,oBAAA;AAAA,oBACd,IAAM,EAAA,QAAA,CAAS,WAAa,EAAA,WAAA,EAAa,KAAK,KAAK;AAAA;AAAA;AACrD,eACF,EAAA,CAAA;AAAA,cAED,IAAI,CACH,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,GAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA;AAAA,kBACjC,CAAA,EAAG,UAAU,CAAI,GAAA,CAAC,IAAI,IAAK,CAAA,MAAA,GAAS,CAAI,GAAA,IAAA,CAAK,MAAS,GAAA,EAAA;AAAA,kBACtD,UAAW,EAAA,KAAA;AAAA,kBACX,iBACE,EAAA,SAAA,CAAU,CAAI,GAAA,CAAC,IAAI,MAAS,GAAA,kBAAA;AAAA,kBAE9B,KAAO,EAAA;AAAA,oBACL,QAAU,EAAA,MAAA;AAAA,oBACV,UAAY,EAAA;AAAA,mBACd;AAAA,kBAEC,QAAM,EAAA,KAAA,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,QAAQ,CAAC;AAAA;AAAA;AAC9B,aAAA,EAAA,EApCI,CAsCR,CAAA;AAAA,WAEH;AAAA;AAAA;AAAA;AACH,GACF,EAAA,CAAA;AAEJ,CAAA;;ACjMA,MAAMJ,aAAc,GAAA,EAAA;AACpB,MAAMC,WAAY,GAAA,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,CAAmD,KAAA;AACjD,EAAA,MAAM,QAAW,GAAA,KAAA;AACjB,EAAA,MAAM,KAAQ,GAAA,YAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,MAAS,GAAA,EAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAAU,EAAK,GAAA,CAAA;AAAA,IACf;AAAA,GACD,CAAA;AACD,EAAe,QAAS,CAAA;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAY,CAAA,CAAC,GAAG,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAI,GAAA,CAAA;AAAA,IACjE;AAAA,GACD;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,KAAU,GAAA,CAAAA,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA;AAEjE,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAY,EAAA;AAAA,MACtB,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAM,KAAK,QAAW,GAAA,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAS,GAAA,CACtB,IAAI,QAAW,GAAA,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AAAA,MAE7B,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACE,GAAG,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,cACjB,UAAY,EAAA,EAAA;AAAA,cACZ,QAAU,EAAA;AAAA,aACX,CAAA;AAAA,YACD,MAAO,EAAA,MAAA;AAAA,YACP,OAAQ,EAAA,KAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA,YACL,aAAc,EAAA,OAAA;AAAA,YACd,WAAa,EAAA;AAAA;AAAA,SAEjB,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,OACH,EAAA,QAAA,EAAA;AAAA,UAAM,KAAA,CAAA,KAAA,CAAM,GAAI,CAAA,CAACG,MAAU,KAAA;AAC1B,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA;AAE/B,cAAA,MAAME,MACJ,GAAA,SAAA,GAAA,CAAcC,MAAQ,GAAAH,aAAA,IAAe,UAAc,GAAA,UAAA;AAErD,cAAO,OAAA,IAAA,CAAK,MAAME,MAAK,CAAA;AAAA,aACzB;AACA,YAAM,MAAA,OAAA,GAAU,aAAaC,MAAK,CAAA;AAClC,YAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA;AAElC,YACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,MAAO,EAAA,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,kBAC3B,GAAG,KAAM,CAAA,YAAA,CAAa,EAAE,KAAA,EAAAA,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG;AAAA;AAAA,eAC7D;AAAA,cACC,QACC,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAK,EAAA,OAAA;AAAA,kBACJ,GAAG,MAAM,aAAc,CAAA,EAAE,OAAAA,MAAO,EAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,kBAC7C,OAAO,EAAE,QAAA,EAAU,CAAG,EAAA,eAAA,IAAmB,EAAE,CAAK,EAAA,CAAA,EAAA;AAAA,kBAE/C,QAAA,EAAA;AAAA;AAAA;AACH,aAbiB,EAAA,EAAA,CAAA,WAAA,EAAcA,MAAK,CAexC,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,UACA;AAcE,SACL,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAO,IAAM,EAAA,YAAA,EAAe,GAAG,MAAO,CAAA,IAAA,EAAM,GAAG,EAAI,EAAA,CAAA;AAAA,8BACnD,QAAO,EAAA,EAAA,IAAA,EAAM,YAAe,EAAA,GAAG,OAAO,IAAM,EAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACP,GAAG,MAAO,CAAA,GAAA;AAAA,cACX,KAAO,EAAA;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAY,EAAA;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,SAAA,EAAW,UAAU,KAAK,CAAA,IAAA,CAAA;AAAA,gBAC1B,UAAY,EAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA;AAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,YAAO,IAAK,EAAA,OAAA,EAAS,GAAG,MAAO,CAAA,IAAA,EAAM,GAAG,CAAG,EAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,OAAO,EAAE,QAAA,EAAU,CAAG,EAAA,oBAAA,IAAwB,EAAE,CAAK,EAAA,CAAA,EAAA;AAAA,YACrD,CAAA,EAAG,CAAC,QAAA,GAAW,CAAI,GAAA,EAAA;AAAA,YAElB,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA;AAAA;AAAA;AAAA,SAElD,EAAA;AAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ,CAAA;;ACzJA,MAAM,WAAc,GAAA,CAAA;AACpB,MAAM,SAAY,GAAA,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,SAAW,EAAA,kBAAA;AAAA,EACX,IAAM,EAAA,SAAA;AAAA,EACN,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAkD,KAAA;AAChD,EAAA,MAAM,IAAO,GAAA,SAAA,EAAW,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA;AACrC,EAAM,MAAA,SAAA,GAAA,CAAa,qBAAqB,IAAQ,IAAA,GAAA;AAChD,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,IAAI,QAAS,CAAA,KAAA,CAAM,YAAY,CAAC,CAAA;AACtD,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvC,EAAA,MAAM,MAAS,GAAA,EAAA;AACf,EAAA,MAAM,YAAY,KAAM,CAAA,QAAQ,KAAK,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAQ,CAAA,IAAK,YAAY,CAAC,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAA,WAAA;AAAA,IACZ,QAAU,EAAA,SAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV;AAAA,GACD,CAAA;AAED,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAa,GAAA,KAAA,CAAM,YAAY,CAAA,GAAI,gBAAiB,CAAA,OAAA;AAC1D,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,SAAS,IAAK,CAAA,GAAA,CAAI,EAAI,EAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAC9C,QAAI,IAAA,SAAA,KAAc,CAAK,IAAA,SAAA,KAAc,GAAK,EAAA;AACxC,UAAS,MAAA,GAAA,CAAA;AAAA;AAEX,QAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,IAAO,GAAA,MAAM,IAAI,MAAM,CAAA;AAAA,OAC7C;AAAA,MACA,MAAM;AACJ,QAAiB,gBAAA,CAAA,OAAA,GAAU,MAAM,YAAY,CAAA;AAAA;AAC/C,KACF;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,SAAS,SAASD,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUA,UAAS,KAAK,CAAA;AAE7D,IAAA,IAAI,UAAU,EAAI,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA;AAAA;AAGtB,IAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,CAAC,CAAA,IAAK,YAAY,KAAK,CAAA;AAAA;AAGpD,EAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,IAAA,MAAM,UAAa,GAAA,GAAA;AACnB,IAAA,MAAM,aAAa,SAAY,GAAA,SAAA;AAC/B,IAAM,MAAA,KAAA,GAAA,CAAUA,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA;AAEnD,IAAO,OAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,GACzB;AAEA,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAM,WAAY,EAAA;AAAA,MACtB,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,SAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAM,KAAK,QAAW,GAAA,CAAA,GAAI,MAAM,CAAA,CAAA,EAC1D,WAAW,MAAS,GAAA,CACtB,CAAI,CAAA,EAAA,QAAA,GAAW,SAAS,CAAC,CAAA,CAAA;AAAA,MAEzB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,MACE,EAAA,MAAA,IAAA,CACE,KAAM,CAAA,SAAS,KAAK,CAAK,IAAA,CAAA,GAAA,CACtB,KAAM,CAAA,SAAS,CAAK,IAAA,CAAA,IAAK,GACzB,GAAA,KAAA,CAAM,SAAS,CAAK,IAAA,CAAA,CAAA;AAAA,gBAC3B,UAAY,EAAA,WAAA;AAAA,gBACZ,QAAU,EAAA;AAAA,eACX,CAAA;AAAA,cACD,QAAQ,cAAkB,IAAA,WAAA;AAAA,cAC1B,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,OAAA;AAAA,cACd,WACG,EAAA,CAAA,KAAA,CAAM,SAAS,CAAA,IAAK,CAAK,IAAA,CAAA,GAAA,CACrB,KAAM,CAAA,SAAS,CAAK,IAAA,CAAA,IAAK,GACzB,GAAA,KAAA,CAAM,SAAS,CAAK,IAAA;AAAA;AAAA,WAE7B;AAAA,0BAEA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,MACE,EAAA,MAAA,IAAA,CACE,KAAM,CAAA,SAAS,KAAK,CAAK,IAAA,CAAA,GAAA,CACtB,KAAM,CAAA,SAAS,CAAK,IAAA,CAAA,IAAK,GACzB,GAAA,KAAA,CAAM,SAAS,CAAK,IAAA,CAAA,CAAA;AAAA,gBAC3B,UAAY,EAAA,GAAA;AAAA,gBACZ,QAAA,EACE,YAAa,CAAA,KAAK,CAAM,KAAA,GAAA,GACpB,GAAM,GAAA,YAAA,CAAa,KAAK,CAAA,GACxB,GAAM,GAAA,YAAA,CAAa,KAAK;AAAA,eAC/B,CAAA;AAAA,cACD,MAAQ,EAAA,CAAA,CAAA,EAAI,SAAU,CAAA,QAAA,CAAS,KAAK,CAAC,CAAA,CAAE,QAAS,CAAA,EAAE,CAAE,CAAA,QAAA,CAAS,EAAE,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,cACxE,OAAQ,EAAA,KAAA;AAAA,cACR,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,SAAA;AAAA,cACd,WACI,EAAA,CAAA,CAAA,KAAA,CAAM,SAAS,CAAA,IAAK,KAAK,CACtB,GAAA,CAAA,KAAA,CAAM,SAAS,CAAA,IAAK,CAAK,IAAA,GAAA,GACzB,KAAM,CAAA,SAAS,KAAK,CAAM,IAAA,CAAA;AAAA,cAEjC,KAAO,EAAA;AAAA,gBACL,UAAY,EAAA;AAAA;AACd;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACE,GAAG,MAAM,WAAY,CAAA;AAAA,gBACpB,MACE,EAAA,MAAA,IAAA,CACE,KAAM,CAAA,SAAS,KAAK,CAAK,IAAA,CAAA,GAAA,CACtB,KAAM,CAAA,SAAS,CAAK,IAAA,CAAA,IAAK,GACzB,GAAA,KAAA,CAAM,SAAS,CAAK,IAAA,CAAA,CAAA;AAAA,gBAC3B,UAAY,EAAA,GAAA;AAAA,gBACZ,QAAA,EACE,YAAa,CAAA,KAAK,CAAM,KAAA,GAAA,GACpB,GAAM,GAAA,YAAA,CAAa,KAAK,CAAA,GACxB,GAAM,GAAA,YAAA,CAAa,KAAK;AAAA,eAC/B,CAAA;AAAA,cACD,MAAA,EAAQ,SAAS,KAAK,CAAA;AAAA,cACtB,OAAQ,EAAA,GAAA;AAAA,cACR,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,SAAA;AAAA,cACd,WACG,EAAA,CAAA,KAAA,CAAM,SAAS,CAAA,IAAK,CAAK,IAAA,CAAA,GAAA,CACrB,KAAM,CAAA,SAAS,CAAK,IAAA,CAAA,IAAK,GACzB,GAAA,KAAA,CAAM,SAAS,CAAK,IAAA,CAAA;AAAA,cAE3B,KAAO,EAAA;AAAA,gBACL,UAAY,EAAA;AAAA;AACd;AAAA;AACF,SACF,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA;AAAA,cACL,QAAA,EAAU,CAAG,EAAA,oBAAA,IAAwB,EAAE,CAAA,EAAA,CAAA;AAAA,cACvC,UAAY,EAAA;AAAA,aACd;AAAA,YACA,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,cACzC,SAAc,KAAA,GAAA,IAAO,SAAc,KAAA,CAAA,GAAI,GAAM,GAAA,EAAA;AAAA,cAC7C,CAAC,CAAC,EAAI,EAAA,MAAA,EAAW,IAAI,CAAE,CAAA,QAAA,CAAS,IAAI,CAAA,GAAI,IAAO,GAAA;AAAA;AAAA;AAAA,SAEpD,EAAA;AAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ,CAAA;;AC9KO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAA;AAAA,EACA;AACF,CAUM,KAAA;AACJ,EAAA,MAAM,aAA2C,GAAA,QAAA;AAAA,IAC/C,CAAC,UAAY,EAAA,MAAA,EAAQ,SAAS,MAAQ,EAAA,WAAA,EAAa,OAAO,IAAI,CAAA;AAAA,IAC9D;AAAA,MACE,IAAS,KAAA,YAAA;AAAA,MACT,IAAS,KAAA,QAAA;AAAA,MACT,IAAS,KAAA,SAAA;AAAA,MACT,IAAS,KAAA,QAAA;AAAA,MACT,IAAS,KAAA,aAAA;AAAA,MACT,IAAS,KAAA,OAAA;AAAA,MACT,IAAS,KAAA;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,aAAkC,GAAA,IAAA;AAIxC,EAAA,MAAM,UAAa,GAAA,aAAA;AACnB,EAAA,IAAI,cAAwB,EAAC;AAC7B,EAAA,IAAI,cAAwB,EAAC;AAE7B,EAAI,IAAA,IAAA,CAAK,SAAS,YAAa,CAAA,IAAA,CAAK,MAAM,IAAI,CAAA,CAAE,SAAS,CAAG,EAAA;AAC1D,IAAA,WAAA,GAAc,KAAM,CAAA,IAAA;AAAA,MAClB,IAAI,GAAA;AAAA,QACF,aAAa,IAAK,CAAA,KAAA,CAAM,IAAI,CACzB,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,UAAO,OAAA,CAAC,OAAO,IAAK,CAAA,OAAO,GAAG,MAAO,CAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,SACnD,EACA,IAAK,EAAA,CACL,KAAK,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,GAAI,CAAC;AAAA;AACzB,KACF;AAEA,IAAA,WAAA,GAAc,aAAa,IAAK,CAAA,KAAA,CAAM,IAAI,CACvC,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,MAAO,OAAA,SAAA,CAAU,IAAK,CAAA,KAAK,CACxB,CAAA,QAAA,CAAS,CAAK,GAAA,CAAA,GAAA,GAAM,IAAK,CAAA,YAAA,IAAgB,GAAG,CAAA,CAC5C,qBAAsB,EAAA;AAAA,KAC1B,EACA,IAAK,EAAA;AAAA,GACH,MAAA;AACL,IAAA,WAAA,GAAc,UAAW,CAAA,WAAA;AACzB,IAAA,WAAA,GAAc,UAAW,CAAA,WAAA;AAAA;AAG3B,EAAA,UAAA,CAAW,WAAc,GAAA,WAAA;AACzB,EAAA,UAAA,CAAW,WAAc,GAAA,WAAA;AACzB,EAAO,uBAAA,GAAA,CAAC,aAAe,EAAA,EAAA,GAAG,UAAY,EAAA,CAAA;AACxC;;AC/CAG,OAAQ,CAAA,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;AAmCa,MAAA,cAAA,GAAiB,CAAC,KAAsB,KAAA;AACnD,EAAA,MAAM,cAA0B,MAAO,CAAA,MAAA;AAAA,IACrC;AAAA,MACE,SAAW,EAAA,EAAE,QAAU,EAAA,CAAC,EAAE,IAAM,EAAA,CAAC,EAAE,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAA,EAAG,CAAE,EAAA;AAAA,MACpD,IAAM,EAAA,KAAA;AAAA,MACN,SAAW,EAAA,GAAA;AAAA,MACX,UAAY,EAAA,IAAA;AAAA,MACZ,UAAY,EAAA,IAAA;AAAA,MACZ,eAAiB,EAAA,IAAA;AAAA,MACjB,eAAiB,EAAA,IAAA;AAAA,MACjB,SAAW,EAAA,IAAA;AAAA,MACX,UAAY,EAAA,EAAA;AAAA,MACZ,UAAY,EAAA,EAAA;AAAA,MACZ,WAAa,EAAA;AAAA,KACf;AAAA,IACA;AAAA,GACF;AACA,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,UAAW,EAAA;AAC7B,EAAM,MAAA,QAAA,GAAW,OAAgB,IAAI,CAAA;AAErC,EAAA,IAAI,CAAC,KAAM,CAAA,MAAA;AACT,IAAA,OAAA,CAAQ,MAAM,qDAAqD,CAAA;AAErE,EAAM,MAAA,IAAA,GAAkB,QAAQ,MAAM;AACpC,IAAA,MAAM,MAAW,GAAA,KAAA,CAAM,MACnB,EAAA,MAAA,IAAU,EAAC;AAEf,IAAO,OAAA;AAAA,MACL,QAAA,EAAA,CAAW,WAAY,CAAA,IAAA,KAAS,WAC5B,GAAA,YAAA,CAAa,WAAY,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAE,GAAI,CAAA,CAAC,OAAY,KAAA;AAC5D,QAAA,IAAI,GAAM,GAAA,CAAA;AACV,QAAA,MAAM,OAAU,GAAA,OAAA,CAAQ,IAAK,CAAA,GAAA,CAAsB,CAAC,SAAc,KAAA;AAChE,UAAI,IAAA,OAAO,cAAc,QAAU,EAAA;AACjC,YAAA,MAAM,YAAe,GAAA,GAAA;AACrB,YAAO,GAAA,IAAA,SAAA;AACP,YAAO,OAAA,CAAC,cAAc,GAAG,CAAA;AAAA,WACpB,MAAA;AACL,YAAO,OAAA,SAAA;AAAA;AACT,SACD,CAAA;AAED,QAAO,OAAA;AAAA,UACL,GAAG,OAAA;AAAA,UACH,IAAM,EAAA;AAAA,SACR;AAAA,OACD,IACD,WAAY,CAAA,SAAA,CAAU,UACxB,GAAI,CAAA,CAAC,SAAS,YAAiB,KAAA;AAC/B,QAAA,MAAM,QACJ,GAAA,YAAA,CAAa,WAAY,CAAA,SAAA,CAAU,QAAQ,CAAE,CAAA,KAAA;AAAA,UAC3C,CAACC,QAAY,KAAA,YAAA,CAAaA,QAAQ,CAAA,IAAI,EAAE,MAAW,KAAA;AAAA,SACrD,IAAK,YAAY,IAAS,KAAA,KAAA;AAE5B,QAAA,MAAM,kBACJ,OAAQ,CAAA,eAAA,CACR,GAAI,CAAA,CAAC,aAAa,CAAM,KAAA;AACxB,UAAA,IAAI,cAAwB,EAAC;AAC7B,UAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,YAAM,MAAA,KAAA,GAAQ,YAAY,WAAY,EAAA;AACtC,YAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,cAAA,MAAM,4BAEF,GAAA;AAAA,gBACF,MAAQ,EAAA,cAAA;AAAA,kBACN,KAAM,CAAA,MAAA;AAAA;AAAA,kBAEN,MAAO,CAAA,KAAA,CAAM,WAAY,EAAC,CAAG,EAAA;AAAA;AAC/B,eACF;AAEA,cAAA,IACE,OAAO,4BAAA,CAA6B,MAAW,KAAA,QAAA,IAC/C,6BAA6B,MAC7B,EAAA;AACA,gBAAA,IAAI,QAAU,EAAA;AACZ,kBAAI,IAAA,WAAA,CAAY,SAAS,KAAO,EAAA;AAC9B,oBAAA,WAAA,GAAc,MAAO,CAAA,MAAA;AAAA,sBACnB,4BAA6B,CAAA;AAAA,qBAC/B,CAAE,GAAI,CAAA,CAAC,QAAa,KAAA;AAClB,sBAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAS,CAAA,KAAA,CAAM,CAAG,EAAA,EAAE,CAAC,CAAA;AAAA,qBAC1C,CAAA;AAAA,mBACI,MAAA;AACL,oBAAc,WAAA,GAAA,IAAI,KAAc,CAAA,CAAC,CAC9B,CAAA,IAAA;AAAA,sBACC,OAAO,MAAO,CAAA,4BAAA,CAA6B,MAAM,CAAA,CAC/C,eAAe,CACjB;AAAA,qBACF,CACC,GAAI,CAAA,CAAC,QAAa,KAAA;AACjB,sBAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAS,CAAA,KAAA,CAAM,CAAG,EAAA,EAAE,CAAC,CAAA;AAAA,qBAC1C,CAAA;AAAA;AACL,iBACK,MAAA;AACL,kBAAc,WAAA,GAAA,IAAI,KAAc,CAAA,CAAC,CAAE,CAAA,IAAA;AAAA,oBACjC,MAAO,CAAA,MAAA,CAAO,4BAA6B,CAAA,MAAM,CAAE,CAAA,GAAA;AAAA,sBACjD,CAAC,QAAa,KAAA;AACZ,wBAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAS,CAAA,KAAA,CAAM,CAAG,EAAA,EAAE,CAAC,CAAA;AAAA;AAC3C,qBACF,CAAE,eAAe,CAAC;AAAA,mBACpB;AAAA;AACF;AACF,aACK,MAAA;AACL,cAAA,WAAA,GAAc,CAAC,KAAO,EAAA,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA;AACzD,WACK,MAAA;AACL,YAAO,OAAA,WAAA,CAAY,YAAe,GAAA,WAAA,CAAY,MAAM,CAAA;AAAA;AAGtD,UAAO,OAAA,WAAA,CAAY,IAAI,CAAC,CAAA;AAAA,SACzB,CAAA;AAED,QAAA,MAAM,oBAAuB,GAAA,eAAA,CAAgB,GAAI,CAAA,CAAC,CAAM,KAAA;AACtD,UAAM,MAAA,KAAA,GAAQ,UAAU,CAAC,CAAA;AAEzB,UACE,OAAA,CAAA,KAAA,CAAM,MAAO,EAAA,GAAI,KAAM,CAAA,OAAA,CAAQ,EAAE,CAAA,GAAI,KAAM,CAAA,MAAA,CAAO,EAAE,CAAA,EACpD,WAAY,EAAA;AAAA,SACf,CAAA;AAED,QAAO,OAAA;AAAA,UACL,GAAG,OAAA;AAAA,UACH,oBAAA;AAAA,UACA,eAAA;AAAA,UACA,WAAA,EAAc,QAAQ,WAAsC,CAAA,GAAA;AAAA,YAC1D,CAAC,OAAO,CAAM,KAAA;AACZ,cAAA,IAAI,oBAA8B,EAAC;AACnC,cAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,gBAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,kBAAA,MAAM,wBAEF,GAAA;AAAA,oBACF,MAAQ,EAAA,cAAA;AAAA,sBACN,KAAM,CAAA,MAAA;AAAA;AAAA,sBAEN,MAAO,CAAA,KAAA,CAAM,WAAY,EAAC,CAAG,EAAA;AAAA;AAC/B,mBACF;AAEA,kBAAA,IACE,OAAO,wBAAA,CAAyB,MAAW,KAAA,QAAA,IAC3C,yBAAyB,MACzB,EAAA;AACA,oBAAA,iBAAA,GAAoB,MAAO,CAAA,MAAA;AAAA,sBACzB,wBAAyB,CAAA;AAAA,qBAC3B,CAAE,GAAI,CAAA,CAAC,QAAa,KAAA;AAClB,sBAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,eAAe,CAAA,CACzC,iBAAiB,QAAS,CAAA,KAAA,CAAM,CAAG,EAAA,EAAE,CAAC,CAAA;AAAA,qBAC1C,CAAA;AAAA;AACH,iBACK,MAAA;AACL,kBAAoB,iBAAA,GAAA;AAAA,oBAClB,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA,KAAA;AAAA,oBACA;AAAA,mBACF;AAAA;AACF,eACK,MAAA;AACL,gBAAO,OAAA,KAAA,CAAM,YAAe,GAAA,KAAA,CAAM,MAAM,CAAA;AAAA;AAE1C,cAAO,OAAA,iBAAA,CAAkB,IAAI,CAAC,CAAA;AAAA;AAChC;AACF,SACF;AAAA,OACD,CAAA;AAAA,MACD,MAAA,EAAQ,YAAY,SAAU,CAAA;AAAA,KAChC;AAAA,GACC,EAAA;AAAA,IACD,YAAY,SAAU,CAAA,QAAA;AAAA,IACtB,YAAY,SAAU,CAAA,MAAA;AAAA,IACtB,WAAY,CAAA,IAAA;AAAA,IACZ,KAAM,CAAA,MAAA;AAAA,IACN,KAAM,CAAA;AAAA,GACP,CAAA;AAED,EAAM,MAAA,OAAA,GAAwB,QAAQ,MAAM;AAC1C,IAAO,OAAA;AAAA,MACL,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA;AAAA,UACN,QAAU,EAAA,OAAA;AAAA,UACV,SAAS,WAAY,CAAA,UAAA;AAAA,UACrB,OAAS,EAAA,CAAC,CAAG,EAAA,UAAA,EAAY,EAAO,KAAA;AAC9B,YAAA,MAAM,QAAQ,QAAS,CAAA,OAAA;AACvB,YAAA,IAAI,KAAO,EAAA;AACT,cAAA,MAAM,gBAAgB,IAAI,KAAA;AAAA,gBACxB,WAAY,CAAA,IAAA,KAAS,KACjB,GAAA,WAAA,CAAY,SAAU,CAAA,QAAA,CAAS,MAC/B,GAAA,WAAA,CAAY,SAAU,CAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAK,CAAA;AAAA,gBAE1C,IAAK,CAAA,CAAC,EACN,GAAI,CAAA,CAACC,IAAG,CAAM,KAAA;AACb,gBAAO,OAAA;AAAA,kBACL,YACE,EAAA,WAAA,CAAY,IAAS,KAAA,KAAA,GAAQ,IAAI,UAAW,CAAA,YAAA;AAAA,kBAC9C,OACE,WAAY,CAAA,IAAA,KAAS,KAAQ,GAAA,UAAA,CAAW,SAAS,CAAI,GAAA;AAAA,iBACzD;AAAA,eACD,CAAA;AAEH,cAAA,KAAA,CAAM,iBAAkB,CAAA,CAAC,GAAG,aAAa,CAAC,CAAA;AAC1C,cAAA,KAAA,CAAM,OAAS,EAAA,iBAAA,CAAkB,CAAC,GAAG,aAAa,CAAG,EAAA;AAAA,gBACnD,CAAG,EAAA,CAAA;AAAA,gBACH,CAAG,EAAA;AAAA,eACJ,CAAA;AACD,cAAA,KAAA,CAAM,MAAO,EAAA;AAAA;AACf,WACF;AAAA,UACA,MAAQ,EAAA;AAAA,YACN,MAAA,CAAO,MAAM,CAAG,EAAA;AACd,cAAI,IAAA,WAAA,CAAY,SAAS,KAAO,EAAA;AAC9B,gBAAQ,OAAA,CAAA,IAAA,CAAK,SAAS,CAAK,IAAA,EAAA;AAAA,eACtB,MAAA;AACL,gBAAQ,OAAA,CAAA,IAAA,CAAK,gBAAgB,CAAK,IAAA,EAAA;AAAA;AACpC;AACF;AACF,SACF;AAAA,QACA,OAAS,EAAA;AAAA,UACP,SAAW,EAAA;AAAA,YACT,MAAM,WAAmD,EAAA;AACvD,cAAM,MAAA,MAAA,GAAS,WAAY,CAAA,OAAA,CAAQ,KAAS,IAAA,EAAA;AAC5C,cAAA,IAAI,SAAS,WAAY,CAAA,cAAA;AAEzB,cAAA,IAAI,KAAM,CAAA,UAAA,CAAW,MAAM,CAAC,CAAG,EAAA;AAC7B,gBAAA,MAAM,aAA+B,WAAY,CAAA,GAAA;AAIjD,gBAAA,MAAM,SAAY,GAAA,UAAA,CAAW,CAAC,CAAA,GAAI,WAAW,CAAC,CAAA;AAC9C,gBAAA,MAAA,GAAS,GAAG,SAAS,CAAA,CAAA;AAAA;AAEvB,cAAA,IAAI,WAAc,GAAA,EAAA;AAClB,cAAA,IAAI,WAAY,CAAA,UAAA,IAAc,WAAY,CAAA,IAAA,KAAS,KAAO,EAAA;AACxD,gBAAe,WAAA,IAAA,MAAA;AACf,gBAAA,IAAI,YAAY,UAAY,EAAA;AAC1B,kBAAA,WAAA,IAAe,IAAO,GAAA,MAAA;AAAA;AACxB,eACF,MAAA,IAAW,YAAY,UAAY,EAAA;AACjC,gBAAe,WAAA,IAAA,MAAA;AAAA;AAEjB,cAAO,OAAA,WAAA;AAAA,aACT;AAAA,YACA,MAAM,YAAsD,EAAA;AAC1D,cACG,IAAA,WAAA,CAAY,SAAS,KACpB,IAAA,CAAC,YAAY,eACb,IAAA,WAAA,CAAY,SAAc,KAAA,GAAA,IAC3B,WAAY,CAAA,IAAA,KAAS,SACpB,CAAC,WAAA,CAAY,eACb,IAAA,WAAA,CAAY,SAAc,KAAA,GAAA,IAC3B,YAAY,IAAS,KAAA,KAAA,IAAS,CAAC,WAAA,CAAY,UAC5C,EAAA;AACA,gBAAO,OAAA,EAAA;AAAA;AAET,cAAO,OAAA,YAAA,CAAa,CAAC,CAAE,CAAA,KAAA;AAAA;AACzB,WACF;AAAA,UACA,OAAA,EAAA,CACG,WAAY,CAAA,SAAA,KAAc,GACvB,GAAA,WAAA,CAAY,kBACZ,WAAY,CAAA,eAAA,KAChB,WAAY,CAAA,UAAA,IACZ,WAAY,CAAA;AAAA;AAChB,OACF;AAAA,MACA,aAAa,IAAK,CAAA,GAAA,CAAI,WAAY,CAAA,WAAA,IAAe,GAAG,CAAC,CAAA;AAAA,MACrD,WAAW,WAAY,CAAA,SAAA;AAAA,MACvB,MAAQ,EAAA;AAAA,QACN,CAAG,EAAA;AAAA,UACD,OAAA,EAAS,YAAY,IAAS,KAAA,KAAA;AAAA,UAC9B,KAAO,EAAA;AAAA,YACL,SAAS,WAAY,CAAA,eAAA;AAAA,YACrB,MACE,WAAY,CAAA,SAAA,KAAc,GACtB,GAAA,WAAA,CAAY,aACZ,WAAY,CAAA;AAAA,WACpB;AAAA,UACA,KAAO,EAAA;AAAA,YACL,OAAA,EAAS,CAAC,CAAC,WAAY,CAAA;AAAA,WACzB;AAAA,UACA,IAAM,EAAA;AAAA,YACJ,SAAS,WAAY,CAAA;AAAA;AACvB,SACF;AAAA,QACA,CAAG,EAAA;AAAA,UACD,IAAO,EAAA,WAAA,CAAY,SAAc,KAAA,GAAA,GAAM,GAAM,GAAA,GAAA;AAAA,UAC7C,OAAA,EAAS,YAAY,IAAS,KAAA,KAAA;AAAA,UAC9B,KAAO,EAAA;AAAA,YACL,SAAS,WAAY,CAAA,eAAA;AAAA,YACrB,MACE,WAAY,CAAA,SAAA,KAAc,GACtB,GAAA,WAAA,CAAY,aACZ,WAAY,CAAA;AAAA,WACpB;AAAA,UACA,KAAO,EAAA;AAAA,YACL,OAAA,EAAS,CAAC,CAAC,WAAY,CAAA;AAAA,WACzB;AAAA,UACA,IAAM,EAAA;AAAA,YACJ,SAAS,WAAY,CAAA;AAAA;AACvB;AACF;AACF,KACF;AAAA,GACC,EAAA;AAAA,IACD,WAAY,CAAA,WAAA;AAAA,IACZ,WAAY,CAAA,SAAA;AAAA,IACZ,WAAY,CAAA,SAAA;AAAA,IACZ,WAAY,CAAA,UAAA;AAAA,IACZ,WAAY,CAAA,SAAA;AAAA,IACZ,WAAY,CAAA,UAAA;AAAA,IACZ,WAAY,CAAA,eAAA;AAAA,IACZ,WAAY,CAAA,eAAA;AAAA,IACZ,WAAY,CAAA,IAAA;AAAA,IACZ,WAAY,CAAA,UAAA;AAAA,IACZ,WAAY,CAAA;AAAA,GACb,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,MAAQ,EAAA;AAAA,UACN,KAAO,EAAA,MAAA;AAAA,UACP,MAAQ,EAAA;AAAA;AACV,OACF;AAAA,MACA,EAAA,EAAI,YAAY,EAAM,IAAA,MAAA;AAAA,MACtB,SAAA,EAAW,YAAY,OAAW,IAAA,EAAA;AAAA,MAClC,IAAM,EAAA,WAAA,CAAY,IAAS,KAAA,WAAA,GAAc,QAAQ,WAAY,CAAA,IAAA;AAAA,MAC7D,OAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAK,EAAA;AAAA;AAAA,GACP;AAEJ;;ACtZA,SAAS,EAAE,KAA4C,EAAA;AACrD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAEd,IAAI,CAAA;AACd,EAAM,MAAA,SAAA,GAAY,YAAY,KAAK,CAAA;AAEnC,EAAM,MAAA,YAAA,GAAe,WAAY,CAAA,CAAC,CAAyB,KAAA;AACzD,IAAA,aAAA,CAAc,MAAM;AAClB,MAAO,OAAA,CAAA;AAAA,KACR,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAA4B,CAAA;AAAA,IAC9D,GAAG,KAAA;AAAA,IACH,IAAA,EAAM,MAAM,IAAM,EAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,IACnD,IAAA,EAAM,MAAM,IAAM,EAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,IACnD,QAAU,EAAA;AAAA,GACX,CAAA;AACD,EAAA,IAAI,CAAC,YAAA,CAAa,SAAU,CAAA,OAAA,EAAS,KAAK,CAAG,EAAA;AAC3C,IAAA,aAAA,CAAc,CAAC,CAAO,MAAA;AAAA,MACpB,GAAG,CAAA;AAAA,MACH,GAAG,KAAA;AAAA,MACH,IAAA,EAAO,MAAM,IAAoB,CAAA,MAAA;AAAA,QAC/B,CAAC,YAAY,CAAC,OAAA,CAAQ,MAAM,CAAC,GAAA,KAAQ,QAAQ,EAAE;AAAA,OACjD;AAAA,MACA,IAAA,EAAM,MAAM,IAAM,EAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,MACnD,IAAA,EAAM,MAAM,IAAM,EAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,GAAA,IAAO,QAAQ,EAAE,CAAA;AAAA,MACnD,MAAO,KAAM,CAAA,IAAA,CAAoB,CAAC,CAAG,EAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AAClD,QAAA,MAAM,OAAU,GAAA,IAAI,GAAI,CAAA,CAAA,CAAE,IAAI,CAAA;AAC9B,QAAO,OAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,OACxB,CAAA,GACG,CAAE,CAAA,IAAA,GACF;AAAC,KACL,CAAA,CAAA;AAAA;AAEJ,EAAM,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA;AAC7B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAS,CAAA,OAAA;AAAS,MAAA;AACtB,IAAA,QAAA,CAAS,OAAU,GAAA,IAAA;AAEnB,IAAA,OAAO,iBAAiB,CAAA,CAAE,IAAK,CAAA,CAACC,KAAS,KAAA;AACvC,MAAA,OAAA,CAAQ,qBAAuBA,CAAAA,KAAAA,CAAK,OAAgB,CAAA,OAAO,CAAC,CAAA;AAAA,KAC7D,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,IAAA;AAAM,IAAO,OAAA,IAAA;AAElB,EACE,uBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,WAAW,MAAO,CAAA,MAAA,CAAO,EAAC,EAAG,gBAAgB,IAAI,CAAA;AAAA,MAChD,GAAG,UAAA;AAAA,MACJ,SAAW,EAAA,QAAA;AAAA,MACX,uBAAyB,EAAA;AAAA;AAAA,GAC3B;AAEJ;AAEO,MAAM,mBAAsB,GAAA,IAAA;AAAA,EACjC,CAAC,KAA+C,KAAA;AAC9C,IACE,uBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,OAAS,EAAA,CAAC,EAAO,KAAA,EAAA,CAAG,eAAgB,EAAA;AAAA,QACpC,WAAa,EAAA,CAAC,EAAO,KAAA,EAAA,CAAG,eAAgB,EAAA;AAAA,QACxC,MAAQ,EAAA,CAAC,EAAO,KAAA,EAAA,CAAG,eAAgB,EAAA;AAAA,QACnC,WAAa,EAAA,CAAC,EAAO,KAAA,EAAA,CAAG,eAAgB,EAAA;AAAA,QAExC,QAAA,kBAAA,GAAA,CAAC,CAAG,EAAA,EAAA,GAAG,KAAO,EAAA;AAAA;AAAA,KAChB;AAAA;AAGN;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/charts",
3
- "version": "4.0.9",
3
+ "version": "4.0.13",
4
4
  "sideEffects": false,
5
5
  "author": "Felipe Arzuaga <felipearax.2012@gmail.com>",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  "libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true"
14
14
  },
15
15
  "dependencies": {
16
- "@apia/components": "^4.0.9",
17
- "@apia/icons": "^4.0.9",
18
- "@apia/theme": "^4.0.9",
19
- "@apia/util": "^4.0.9",
16
+ "@apia/components": "^4.0.13",
17
+ "@apia/icons": "^4.0.13",
18
+ "@apia/theme": "^4.0.13",
19
+ "@apia/util": "^4.0.13",
20
20
  "@imc-trading/react-pivottable": "../../custom/react-pivottable",
21
21
  "@types/d3-array": "^3.0.5",
22
22
  "@visx/axis": "^3.1.0",
@@ -32,7 +32,7 @@
32
32
  "@visx/visx": "^3.1.2",
33
33
  "chart.js": "^4.4.2",
34
34
  "d3-array": "^3.2.4",
35
- "plotly.js": "^2.32.0",
35
+ "plotly.js": "^2.6.0",
36
36
  "react-chartjs-2": "^5.2.0",
37
37
  "react-plotly.js": "^2.6.0",
38
38
  "react-spring": "^9.7.1",
@@ -56,5 +56,5 @@
56
56
  "access": "public",
57
57
  "registry": "https://registry.npmjs.org/"
58
58
  },
59
- "gitHead": "d34af51b97c6057830b5640087053d3d261a9e95"
59
+ "gitHead": "a761f84c504999f9fce353dc3ec5a465c6b7411d"
60
60
  }