@oliasoft-open-source/charts-library 3.3.0-beta-2 → 3.3.0

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.js CHANGED
@@ -10,7 +10,7 @@ import React, { forwardRef, useRef, useEffect, createContext as createContext$2,
10
10
  import { round as round$2, toNum, displayNumber, isCloseTo } from "@oliasoft-open-source/units";
11
11
  import cx from "classnames";
12
12
  import { produce } from "immer";
13
- import { Icon, Tooltip as Tooltip$2, Button, Flex, Text, Menu, Popover, Field, InputGroup, NumberInput, InputGroupAddon, Select, ButtonGroup, Spacer } from "@oliasoft-open-source/react-ui-library";
13
+ import { Icon, Tooltip as Tooltip$2, Button, Flex, Text, Menu, Popover, Field, InputGroup, NumberInput, InputGroupAddon, Select, ButtonGroup, Spacer, Portal } from "@oliasoft-open-source/react-ui-library";
14
14
  import PropTypes from "prop-types";
15
15
  import { debounce as debounce$3, isEqual } from "lodash";
16
16
  import { jsx as jsx$1 } from "react/jsx-runtime.js";
@@ -13234,11 +13234,10 @@ const getClassName = (chartStyling, styles2) => {
13234
13234
  return cx(styles2.chart, heightStyles, squareAspectRatioStyle);
13235
13235
  };
13236
13236
  const getLegend = (options, clickHandler, state = null) => {
13237
- var _a2;
13238
13237
  const { legend: legend2 } = options;
13239
13238
  return {
13240
13239
  position: legend2.position || Position.Top,
13241
- display: !((_a2 = legend2 == null ? void 0 : legend2.customLegend) == null ? void 0 : _a2.customLegendPlugin) ? state ? state.legendEnabled : legend2.display : false,
13240
+ display: legend2.display,
13242
13241
  align: legend2.align,
13243
13242
  labels: {
13244
13243
  boxHeight: LEGEND_LABEL_BOX_SIZE,
@@ -34361,9 +34360,10 @@ const reducer$1 = (state, action) => {
34361
34360
  break;
34362
34361
  }
34363
34362
  case RESET_AXES_RANGES: {
34364
- const { axes } = draft;
34365
- draft.axes = axes.map((axis) => ({
34366
- id: axis.id
34363
+ const { initialAxesRanges } = draft;
34364
+ draft.axes = initialAxesRanges.map((axis) => ({
34365
+ id: axis.id,
34366
+ ...axis.unit && { unit: axis.unit }
34367
34367
  }));
34368
34368
  break;
34369
34369
  }
@@ -34518,7 +34518,7 @@ const initialState = ({ options, persistenceId }) => {
34518
34518
  panEnabled: panEnabled ?? enablePan,
34519
34519
  pointsEnabled: pointsEnabled ?? showPoints,
34520
34520
  lineEnabled: lineEnabled ?? showLine,
34521
- legendEnabled: legendEnabled ?? display,
34521
+ legendEnabled: legendEnabled ?? true,
34522
34522
  axes: stateAxes,
34523
34523
  showAnnotationLineIndex: setAnnotations(annotationsData),
34524
34524
  showTable: false,
@@ -34756,10 +34756,18 @@ const DragOptions = ({
34756
34756
  Menu,
34757
34757
  {
34758
34758
  menu: {
34759
- label: selectedOption.buttonLabel || selectedOption.label,
34760
34759
  sections: optionsWithDragPoints,
34761
- trigger: "DropDownButton",
34762
- small: true
34760
+ trigger: "Component",
34761
+ component: /* @__PURE__ */ jsx(
34762
+ Button,
34763
+ {
34764
+ colored: "muted",
34765
+ basic: true,
34766
+ small: true,
34767
+ label: selectedOption.buttonLabel || selectedOption.label,
34768
+ icon: selectedOption.icon
34769
+ }
34770
+ )
34763
34771
  }
34764
34772
  }
34765
34773
  );
@@ -36068,7 +36076,7 @@ const AxesOptionsPopover = ({
36068
36076
  const minError = (_e2 = (_d2 = errors == null ? void 0 : errors.find((a2) => a2.id === axis.id)) == null ? void 0 : _d2.min) == null ? void 0 : _e2[0];
36069
36077
  const maxError = (_g2 = (_f2 = errors == null ? void 0 : errors.find((a2) => a2.id === axis.id)) == null ? void 0 : _f2.max) == null ? void 0 : _g2[0];
36070
36078
  const unit = (_h2 = formState.find((a2) => a2.id === axis.id)) == null ? void 0 : _h2.unit;
36071
- return /* @__PURE__ */ jsx(Field, { label: axisLabel || axis.id || "", children: /* @__PURE__ */ jsxs(InputGroup, { small: true, children: [
36079
+ return /* @__PURE__ */ jsx(Field, { label: axisLabel || axis.id || "", children: /* @__PURE__ */ jsxs(InputGroup, { small: true, width: "300px", children: [
36072
36080
  /* @__PURE__ */ jsx(
36073
36081
  NumberInput,
36074
36082
  {
@@ -36115,7 +36123,8 @@ const AxesOptionsPopover = ({
36115
36123
  id: axis.id
36116
36124
  });
36117
36125
  },
36118
- width: "auto"
36126
+ autoLayerWidth: true,
36127
+ width: "15%"
36119
36128
  }
36120
36129
  ) : null
36121
36130
  ] }) }, i2);
@@ -36219,6 +36228,12 @@ AxesOptionsPopover.propTypes = {
36219
36228
  options: PropTypes.arrayOf(PropTypes.string)
36220
36229
  })
36221
36230
  };
36231
+ const ControlsPortal = ({ children, controlsPortalId }) => {
36232
+ if (controlsPortalId && document.getElementById(controlsPortalId)) {
36233
+ return /* @__PURE__ */ jsx(Portal, { id: controlsPortalId, children });
36234
+ }
36235
+ return children;
36236
+ };
36222
36237
  const Controls = ({
36223
36238
  props: { headerComponent, subheaderComponent, table: table2 },
36224
36239
  chartRef,
@@ -36226,7 +36241,8 @@ const Controls = ({
36226
36241
  options,
36227
36242
  dispatch,
36228
36243
  generatedDatasets,
36229
- translations
36244
+ translations,
36245
+ controlsPortalId
36230
36246
  }) => {
36231
36247
  const {
36232
36248
  enableDragPoints,
@@ -36264,7 +36280,7 @@ const Controls = ({
36264
36280
  /* @__PURE__ */ jsxs("div", { className: styles$3.controls, children: [
36265
36281
  !!options.title && /* @__PURE__ */ jsx(Text, { bold: true, children: options.title }),
36266
36282
  headerComponent,
36267
- /* @__PURE__ */ jsxs("div", { className: styles$3.buttons, children: [
36283
+ /* @__PURE__ */ jsx(ControlsPortal, { controlsPortalId, children: /* @__PURE__ */ jsxs("div", { className: styles$3.buttons, children: [
36268
36284
  !showTable && /* @__PURE__ */ jsxs(Fragment, { children: [
36269
36285
  /* @__PURE__ */ jsx(
36270
36286
  AxesOptions,
@@ -36288,17 +36304,24 @@ const Controls = ({
36288
36304
  translations
36289
36305
  }
36290
36306
  ),
36291
- /* @__PURE__ */ jsx(Tooltip$2, { text: translations.downloadAsPNG, placement: "bottom-end", children: /* @__PURE__ */ jsx(
36292
- Button,
36307
+ /* @__PURE__ */ jsx(
36308
+ Tooltip$2,
36293
36309
  {
36294
- small: true,
36295
- basic: true,
36296
- colored: "muted",
36297
- round: true,
36298
- icon: /* @__PURE__ */ jsx(RiFileDownloadLine, {}),
36299
- onClick: handleDownload
36310
+ text: translations.downloadAsPNG,
36311
+ placement: "bottom-end",
36312
+ children: /* @__PURE__ */ jsx(
36313
+ Button,
36314
+ {
36315
+ small: true,
36316
+ basic: true,
36317
+ colored: "muted",
36318
+ round: true,
36319
+ icon: /* @__PURE__ */ jsx(RiFileDownloadLine, {}),
36320
+ onClick: handleDownload
36321
+ }
36322
+ )
36300
36323
  }
36301
- ) }),
36324
+ ),
36302
36325
  /* @__PURE__ */ jsx(
36303
36326
  DragOptions,
36304
36327
  {
@@ -36332,7 +36355,7 @@ const Controls = ({
36332
36355
  )
36333
36356
  }
36334
36357
  ) : null
36335
- ] })
36358
+ ] }) })
36336
36359
  ] }),
36337
36360
  subheaderComponent
36338
36361
  ] });
@@ -36341,7 +36364,8 @@ Controls.defaultProps = {
36341
36364
  props: {
36342
36365
  headerComponent: null,
36343
36366
  subheaderComponent: null,
36344
- table: null
36367
+ table: null,
36368
+ controlsPortalId: null
36345
36369
  },
36346
36370
  state: {
36347
36371
  initialAxesRanges: []
@@ -36352,7 +36376,8 @@ Controls.propTypes = {
36352
36376
  props: PropTypes.shape({
36353
36377
  headerComponent: PropTypes.node,
36354
36378
  subheaderComponent: PropTypes.node,
36355
- table: PropTypes.node
36379
+ table: PropTypes.node,
36380
+ controlsPortalId: PropTypes.string
36356
36381
  }),
36357
36382
  chartRef: PropTypes.object.isRequired,
36358
36383
  state: PropTypes.shape({
@@ -36372,26 +36397,26 @@ Controls.propTypes = {
36372
36397
  dispatch: PropTypes.func.isRequired,
36373
36398
  generatedDatasets: PropTypes.arrayOf(PropTypes.object).isRequired
36374
36399
  };
36375
- const legend = "_legend_1uauv_1";
36376
- const isDragging = "_isDragging_1uauv_8";
36377
- const legendItems = "_legendItems_1uauv_11";
36378
- const isHidden = "_isHidden_1uauv_47";
36379
- const legendToggle = "_legendToggle_1uauv_50";
36380
- const legendItem = "_legendItem_1uauv_11";
36381
- const legendItemSymbol = "_legendItemSymbol_1uauv_78";
36382
- const legendItemBox = "_legendItemBox_1uauv_88";
36383
- const legendItemLine = "_legendItemLine_1uauv_93";
36384
- const legendItemPoint = "_legendItemPoint_1uauv_101";
36385
- const legendItemText = "_legendItemText_1uauv_108";
36386
- const scrollbars = "_scrollbars_1uauv_111";
36387
- const dropzoneContainer = "_dropzoneContainer_1uauv_138";
36388
- const dropzone = "_dropzone_1uauv_138";
36389
- const left = "_left_1uauv_147";
36390
- const right = "_right_1uauv_151";
36391
- const top = "_top_1uauv_155";
36392
- const bottom = "_bottom_1uauv_159";
36393
- const dropzonePlaceholder = "_dropzonePlaceholder_1uauv_163";
36394
- const isActive = "_isActive_1uauv_171";
36400
+ const legend = "_legend_2182d_1";
36401
+ const isDragging = "_isDragging_2182d_8";
36402
+ const legendItems = "_legendItems_2182d_11";
36403
+ const isHidden = "_isHidden_2182d_47";
36404
+ const legendToggle = "_legendToggle_2182d_50";
36405
+ const legendItem = "_legendItem_2182d_11";
36406
+ const legendItemSymbol = "_legendItemSymbol_2182d_80";
36407
+ const legendItemBox = "_legendItemBox_2182d_90";
36408
+ const legendItemLine = "_legendItemLine_2182d_95";
36409
+ const legendItemPoint = "_legendItemPoint_2182d_103";
36410
+ const legendItemText = "_legendItemText_2182d_110";
36411
+ const scrollbars = "_scrollbars_2182d_113";
36412
+ const dropzoneContainer = "_dropzoneContainer_2182d_140";
36413
+ const dropzone = "_dropzone_2182d_140";
36414
+ const left = "_left_2182d_149";
36415
+ const right = "_right_2182d_153";
36416
+ const top = "_top_2182d_157";
36417
+ const bottom = "_bottom_2182d_161";
36418
+ const dropzonePlaceholder = "_dropzonePlaceholder_2182d_165";
36419
+ const isActive = "_isActive_2182d_173";
36395
36420
  const styles$2 = {
36396
36421
  legend,
36397
36422
  isDragging,
@@ -36418,22 +36443,30 @@ const circleSvg = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5
36418
36443
  const rectSvg = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBmaWxsPSJjdXJyZW50Q29sb3IiIC8+PC9zdmc+";
36419
36444
  const rectRotSvg = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBmaWxsPSJjdXJyZW50Q29sb3IiIHRyYW5zZm9ybT0ncm90YXRlKDQ1IDEyIDEyKScgLz48L3N2Zz4=";
36420
36445
  const triangleSvg = "data:image/svg+xml;base64,PHN2ZyAgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGgyNHYyNGgtMjR6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGQ9Im0yMi43OTk4IDIyLjA2MjNoLTIxLjU5OTZjLS4yMTA2Ni4wMDAxLS40MTc2MTctLjA1NTQtLjYwMDA2Ny0uMTYwNy0uMTgyNDUxLS4xMDUzLS4zMzM5NjUtLjI1NjctLjQzOTMxMS0uNDM5Mi0uMTA1MzQ2NC0uMTgyNC0uMTYwODEyMjgtLjM4OTMtLjE2MDgyMi0uNnMuMDU1NDM3Mi0uNDE3Ni4xNjA3NjctLjZsMTAuNzk5ODMzLTE4LjcwNTE4Yy4xMTM5LS4xNzEzNy4yNjg0LS4zMTE5MS40NDk3LS40MDkxMy4xODE0LS4wOTcyMi4zODM5LS4xNDgwOS41ODk3LS4xNDgwOXMuNDA4My4wNTA4Ny41ODk3LjE0ODA5Yy4xODEzLjA5NzIyLjMzNTguMjM3NzYuNDQ5Ny40MDkxM2wxMC43OTk4IDE4LjcwNTE4Yy4xMDU0LjE4MjQuMTYwOC4zODkzLjE2MDguNnMtLjA1NTUuNDE3Ni0uMTYwOC42Yy0uMTA1NC4xODI1LS4yNTY5LjMzMzktLjQzOTMuNDM5Mi0uMTgyNS4xMDUzLS4zODk0LjE2MDgtLjYwMDEuMTYwN3oiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvZz48L3N2Zz4=";
36446
+ const LEGEND_SYMBOL_SIZE = 16;
36421
36447
  const LegendItemLine = ({ dataset }) => {
36422
36448
  const { borderColor, borderDash, borderWidth } = dataset;
36423
- const offset = borderDash.length ? (32 - borderDash[0]) / 2 % (borderDash[0] + borderDash[1]) * -1 : 0;
36424
- return /* @__PURE__ */ jsx("span", { className: styles$2.legendItemLine, children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 16", children: /* @__PURE__ */ jsx(
36425
- "line",
36449
+ const offset = borderDash.length ? (LEGEND_SYMBOL_SIZE - borderDash[0]) / 2 % (borderDash[0] + borderDash[1]) * -1 : 0;
36450
+ return /* @__PURE__ */ jsx("span", { className: styles$2.legendItemLine, children: /* @__PURE__ */ jsx(
36451
+ "svg",
36426
36452
  {
36427
- x1: "0",
36428
- y1: "50%",
36429
- x2: "100%",
36430
- y2: "50%",
36431
- stroke: borderColor,
36432
- strokeWidth: borderWidth,
36433
- strokeDasharray: borderDash,
36434
- strokeDashoffset: offset
36453
+ xmlns: "http://www.w3.org/2000/svg",
36454
+ viewBox: `0 0 ${LEGEND_SYMBOL_SIZE} ${LEGEND_SYMBOL_SIZE}`,
36455
+ children: /* @__PURE__ */ jsx(
36456
+ "line",
36457
+ {
36458
+ x1: "0",
36459
+ y1: "50%",
36460
+ x2: "100%",
36461
+ y2: "50%",
36462
+ stroke: borderColor,
36463
+ strokeWidth: borderWidth,
36464
+ strokeDasharray: borderDash,
36465
+ strokeDashoffset: offset
36466
+ }
36467
+ )
36435
36468
  }
36436
- ) }) });
36469
+ ) });
36437
36470
  };
36438
36471
  const LegendItemPoint = ({ dataset }) => {
36439
36472
  const { pointBackgroundColor, pointRadius, pointStyle } = dataset;
@@ -36482,7 +36515,14 @@ const LegendItem = ({ hidden, dataset, handleClick }) => {
36482
36515
  className: cx(styles$2.legendItem, hidden && styles$2.isHidden),
36483
36516
  onClick: handleClick,
36484
36517
  children: [
36485
- /* @__PURE__ */ jsx("span", { className: styles$2.legendItemSymbol, children: /* @__PURE__ */ jsx(LegendItemSymbol, { dataset }) }),
36518
+ /* @__PURE__ */ jsx(
36519
+ "span",
36520
+ {
36521
+ className: styles$2.legendItemSymbol,
36522
+ style: { width: LEGEND_SYMBOL_SIZE },
36523
+ children: /* @__PURE__ */ jsx(LegendItemSymbol, { dataset })
36524
+ }
36525
+ ),
36486
36526
  /* @__PURE__ */ jsx("span", { className: styles$2.legendItemText, children: dataset.label })
36487
36527
  ]
36488
36528
  }
@@ -36522,8 +36562,8 @@ const LegendPanel = forwardRef((props, ref) => {
36522
36562
  right: legendPosition.includes("right") ? width - right2 : null,
36523
36563
  top: legendPosition.includes("top") ? top2 : null,
36524
36564
  bottom: legendPosition.includes("bottom") ? height - bottom2 : null,
36525
- maxHeight: bottom2 - top2 - LEGEND_MARGIN * 2,
36526
- maxWidth: right2 - left2 - LEGEND_MARGIN * 2,
36565
+ maxHeight: 0.5 * (bottom2 - top2 - LEGEND_MARGIN * 2),
36566
+ maxWidth: 0.5 * (right2 - left2 - LEGEND_MARGIN * 2),
36527
36567
  margin: LEGEND_MARGIN
36528
36568
  };
36529
36569
  return /* @__PURE__ */ jsxs(
@@ -36689,6 +36729,7 @@ const LineChartPropTypes = {
36689
36729
  table: PropTypes.node,
36690
36730
  chart: PropTypes.shape({
36691
36731
  persistenceId: PropTypes.string,
36732
+ controlsPortalId: PropTypes.string,
36692
36733
  testId: PropTypes.string,
36693
36734
  data: PropTypes.object.isRequired,
36694
36735
  options: PropTypes.shape({
@@ -36857,6 +36898,7 @@ const getDefaultProps$2 = (props) => {
36857
36898
  props.chart.options.dragData = props.chart.options.dragData || {};
36858
36899
  const chart2 = {
36859
36900
  persistenceId: props.chart.persistenceId ?? "",
36901
+ controlsPortalId: props.chart.controlsPortalId ?? null,
36860
36902
  testId: props.chart.testId ?? null,
36861
36903
  data: props.chart.data,
36862
36904
  options: {
@@ -36917,7 +36959,8 @@ const getDefaultProps$2 = (props) => {
36917
36959
  annotationsData: props.chart.options.annotations.annotationsData || []
36918
36960
  },
36919
36961
  legend: {
36920
- display: props.chart.options.legend.display ?? true,
36962
+ display: !!props.chart.options.legend.customLegend.customLegendContainerID,
36963
+ // ChartJS legend is replaced by draggable legend if customLegendContainerID is not set,
36921
36964
  position: props.chart.options.legend.position || "bottom-left",
36922
36965
  align: props.chart.options.legend.align || "center",
36923
36966
  customLegend: props.chart.options.legend.customLegend,
@@ -37058,16 +37101,17 @@ const formatAxisLabelNumbers = (tickValue, ticks, locale = "en-gb") => {
37058
37101
  Math.abs(ticks[0].value),
37059
37102
  Math.abs(ticks[ticks.length - 1].value)
37060
37103
  );
37061
- if (maxTick < 1e-4 || maxTick > 1e15) {
37104
+ if (maxTick < 1e-4 || maxTick > 1e7) {
37062
37105
  notation = "scientific";
37063
37106
  }
37064
37107
  delta = calculateDelta(tickValue, ticks);
37065
37108
  }
37066
37109
  const logDelta = Math.log10(Math.abs(delta));
37067
37110
  const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);
37111
+ const roundScientificCoefficient = numDecimal === 0 ? 1 : numDecimal;
37068
37112
  return displayNumber(round$2(tickValue, numDecimal), {
37069
37113
  scientific: notation === "scientific",
37070
- roundScientificCoefficientToNDecimals: numDecimal
37114
+ roundScientificCoefficient
37071
37115
  });
37072
37116
  };
37073
37117
  const getLineChartAxis = (options, axisType, state, currentScales, i2 = 0) => {
@@ -37990,7 +38034,8 @@ const LineChart = (props) => {
37990
38034
  data: { datasets },
37991
38035
  options,
37992
38036
  testId,
37993
- persistenceId
38037
+ persistenceId,
38038
+ controlsPortalId
37994
38039
  } = chart2;
37995
38040
  const { annotations, axes, chartStyling, graph } = options;
37996
38041
  const showCustomLegend = !options.legend.customLegend.customLegendContainerID;
@@ -38050,7 +38095,8 @@ const LineChart = (props) => {
38050
38095
  options,
38051
38096
  dispatch,
38052
38097
  generatedDatasets,
38053
- translations
38098
+ translations,
38099
+ controlsPortalId
38054
38100
  }
38055
38101
  ),
38056
38102
  table2 && state.showTable ? /* @__PURE__ */ jsx("div", { className: styles$4.table, children: table2 }) : /* @__PURE__ */ jsx(DndProvider, { backend: HTML5Backend, children: /* @__PURE__ */ jsxs("div", { className: styles$4.canvas, id: "canvas", children: [
@@ -39129,7 +39175,7 @@ export {
39129
39175
  try {
39130
39176
  if (typeof document != "undefined") {
39131
39177
  var elementStyle = document.createElement("style");
39132
- elementStyle.appendChild(document.createTextNode("html[data-theme='dark'] ._chart_1v6ps_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\nhtml[data-theme='dark'] ._chart_e3qdd_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\n._chart_e3qdd_1 {\n border: 1px solid rgba(255, 255, 255, 0);\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n._chart_e3qdd_1 ._canvas_e3qdd_11 {\n flex-grow: 1;\n min-height: 0;\n position: relative;\n}\n._chart_e3qdd_1 ._canvas_e3qdd_11 canvas {\n width: 100% !important;\n height: 100% !important;\n}\n._chart_e3qdd_1._fixedHeight_e3qdd_20 {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n height: auto;\n}\n._chart_e3qdd_1._stretchHeight_e3qdd_26 {\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n height: 100%;\n}\n._chart_e3qdd_1._squareAspectRatio_e3qdd_32 {\n aspect-ratio: 1;\n min-height: 0;\n min-width: 0;\n}\n._chart_e3qdd_1:focus {\n outline: none;\n}\n._chart_e3qdd_1::-moz-focus-inner {\n border: 0;\n}\n._zoomForm_e3qdd_43 {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n}\n._zoomForm_e3qdd_43 ._zoomReset_e3qdd_51 {\n margin-left: 10px;\n}\n._zoomForm_e3qdd_43 ._help_e3qdd_54 {\n margin-left: 5px;\n line-height: 0;\n}\n._autoWeight_e3qdd_58 {\n width: auto;\n height: auto;\n}\n._table_e3qdd_62 {\n overflow: auto;\n}\n._controls_fa3yo_1 {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n}\n._buttons_fa3yo_7 {\n display: flex;\n margin-left: auto;\n gap: 4px;\n}\n._legend_1uauv_1 {\n position: absolute;\n opacity: 0.9;\n display: flex;\n flex-direction: column;\n z-index: 1;\n}\n._legend_1uauv_1._isDragging_1uauv_8 {\n opacity: 0;\n}\n._legendItems_1uauv_11 {\n background-color: var(--color-background-raised);\n border: 1px solid var(--color-border);\n padding: 4px 8px;\n border-radius: 2px;\n overflow-y: auto;\n max-height: 100%;\n overflow: overlay;\n --scrollbar-color: #00000040;\n}\n._legendItems_1uauv_11::-webkit-scrollbar {\n display: block;\n width: 16px;\n z-index: 2;\n}\n._legendItems_1uauv_11::-webkit-scrollbar-button {\n display: none;\n}\n._legendItems_1uauv_11::-webkit-scrollbar-track {\n background-color: #00000000;\n}\n._legendItems_1uauv_11::-webkit-scrollbar-track-piece {\n background-color: #00000000;\n}\n._legendItems_1uauv_11::-webkit-scrollbar-thumb {\n background-color: #00000000;\n border: 5px solid transparent;\n border-radius: 24px;\n box-shadow: 4px 0px 0px 4px var(--scrollbar-color) inset;\n}\n._legendItems_1uauv_11::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n._legend_1uauv_1._isDragging_1uauv_8 ._legendItems_1uauv_11._legendItems_1uauv_11 {\n pointer-events: none;\n}\n._legend_1uauv_1._isHidden_1uauv_47 ._legendItems_1uauv_11._legendItems_1uauv_11 {\n display: none;\n}\n._legendToggle_1uauv_50 {\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n display: none;\n}\n._legend_1uauv_1._isHidden_1uauv_47 ._legendToggle_1uauv_50._legendToggle_1uauv_50,\n._legend_1uauv_1:hover ._legendToggle_1uauv_50._legendToggle_1uauv_50 {\n display: block;\n}\n._legend_1uauv_1:active ._legendToggle_1uauv_50._legendToggle_1uauv_50:not(:hover) {\n display: none;\n}\n._legend_1uauv_1._isHidden_1uauv_47 ._legendToggle_1uauv_50._legendToggle_1uauv_50 {\n position: static;\n transform: none;\n}\n._legend_1uauv_1._isDragging_1uauv_8 ._legendToggle_1uauv_50._legendToggle_1uauv_50 {\n display: none;\n}\n._legendItem_1uauv_11 {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n user-select: none;\n cursor: pointer;\n}\n._legendItemSymbol_1uauv_78 {\n display: flex;\n align-items: center;\n width: 32px;\n height: 20px;\n position: relative;\n}\nhtml[data-theme='dark'] ._legendItemSymbol_1uauv_78._legendItemSymbol_1uauv_78 {\n filter: invert(1) hue-rotate(180deg);\n}\n._legendItemBox_1uauv_88 {\n width: 100%;\n height: 12px;\n display: block;\n}\n._legendItemLine_1uauv_93 {\n position: absolute;\n display: flex;\n top: 50%;\n left: 0;\n width: 100%;\n transform: translateY(-50%);\n}\n._legendItemPoint_1uauv_101 {\n position: absolute;\n display: flex;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n._isHidden_1uauv_47 ._legendItemText_1uauv_108._legendItemText_1uauv_108 {\n text-decoration: line-through;\n}\n._scrollbars_1uauv_111 {\n overflow: overlay;\n --scrollbar-color: #00000040;\n}\n._scrollbars_1uauv_111::-webkit-scrollbar {\n display: block;\n width: 16px;\n z-index: 2;\n}\n._scrollbars_1uauv_111::-webkit-scrollbar-button {\n display: none;\n}\n._scrollbars_1uauv_111::-webkit-scrollbar-track {\n background-color: #00000000;\n}\n._scrollbars_1uauv_111::-webkit-scrollbar-track-piece {\n background-color: #00000000;\n}\n._scrollbars_1uauv_111::-webkit-scrollbar-thumb {\n background-color: #00000000;\n border: 5px solid transparent;\n border-radius: 24px;\n box-shadow: 4px 0px 0px 4px var(--scrollbar-color) inset;\n}\n._scrollbars_1uauv_111::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n._dropzoneContainer_1uauv_138 {\n position: absolute;\n}\n._dropzone_1uauv_138 {\n position: absolute;\n width: 50%;\n height: 50%;\n display: flex;\n}\n._dropzone_1uauv_138._left_1uauv_147 {\n left: 0;\n justify-content: flex-start;\n}\n._dropzone_1uauv_138._right_1uauv_151 {\n right: 0;\n justify-content: flex-end;\n}\n._dropzone_1uauv_138._top_1uauv_155 {\n top: 0;\n align-items: flex-start;\n}\n._dropzone_1uauv_138._bottom_1uauv_159 {\n bottom: 0;\n align-items: flex-end;\n}\n._dropzonePlaceholder_1uauv_163 {\n position: absolute;\n background-color: rgba(0, 0, 0, 0.05);\n display: none;\n}\n[data-theme='dark'] ._dropzonePlaceholder_1uauv_163 {\n background-color: rgba(255, 255, 255, 0.05);\n}\n._isActive_1uauv_171 ._dropzonePlaceholder_1uauv_163._dropzonePlaceholder_1uauv_163 {\n display: block;\n}\nhtml[data-theme='dark'] ._chart_1jdnu_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\n._chart_1jdnu_1 {\n border: 1px solid rgba(255, 255, 255, 0);\n padding-top: 10px;\n position: relative;\n}\n._chart_1jdnu_1 canvas {\n width: 100% !important;\n height: 100% !important;\n}\n._chart_1jdnu_1._fixedHeight_1jdnu_13 {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n height: auto;\n}\n._chart_1jdnu_1._stretchHeight_1jdnu_19 {\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n height: 100%;\n}\n._chart_1jdnu_1:focus {\n border: 1px solid #85b7d9;\n outline: none;\n}\n._chart_1jdnu_1::-moz-focus-inner {\n border: 0;\n}\n._zoomForm_1jdnu_32 {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n}\n._zoomForm_1jdnu_32 ._zoomReset_1jdnu_40 {\n margin-left: 10px;\n}\n._zoomForm_1jdnu_32 ._help_1jdnu_43 {\n margin-left: 5px;\n line-height: 0;\n}\n._autoWeight_1jdnu_47 {\n width: 'auto';\n height: 'auto';\n}\nhtml[data-theme='dark'] ._chart_1t41j_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\n._chart_1t41j_1 {\n border: 1px solid rgba(255, 255, 255, 0);\n padding-top: 10px;\n position: relative;\n}\n._chart_1t41j_1 canvas {\n width: 100% !important;\n height: 100% !important;\n}\n._chart_1t41j_1._fixedHeight_1t41j_13 {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n height: auto;\n}\n._chart_1t41j_1._stretchHeight_1t41j_19 {\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n height: 100%;\n}\n._chart_1t41j_1:focus {\n border: 1px solid #85b7d9;\n outline: none;\n}\n._chart_1t41j_1::-moz-focus-inner {\n border: 0;\n}\n._zoomForm_1t41j_32 {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n}\n._zoomForm_1t41j_32 ._zoomReset_1t41j_40 {\n margin-left: 10px;\n}\n._zoomForm_1t41j_32 ._help_1t41j_43 {\n margin-left: 5px;\n line-height: 0;\n}\n._autoWeight_1t41j_47 {\n width: auto;\n height: auto;\n}"));
39178
+ elementStyle.appendChild(document.createTextNode("html[data-theme='dark'] ._chart_1v6ps_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\nhtml[data-theme='dark'] ._chart_e3qdd_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\n._chart_e3qdd_1 {\n border: 1px solid rgba(255, 255, 255, 0);\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n._chart_e3qdd_1 ._canvas_e3qdd_11 {\n flex-grow: 1;\n min-height: 0;\n position: relative;\n}\n._chart_e3qdd_1 ._canvas_e3qdd_11 canvas {\n width: 100% !important;\n height: 100% !important;\n}\n._chart_e3qdd_1._fixedHeight_e3qdd_20 {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n height: auto;\n}\n._chart_e3qdd_1._stretchHeight_e3qdd_26 {\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n height: 100%;\n}\n._chart_e3qdd_1._squareAspectRatio_e3qdd_32 {\n aspect-ratio: 1;\n min-height: 0;\n min-width: 0;\n}\n._chart_e3qdd_1:focus {\n outline: none;\n}\n._chart_e3qdd_1::-moz-focus-inner {\n border: 0;\n}\n._zoomForm_e3qdd_43 {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n}\n._zoomForm_e3qdd_43 ._zoomReset_e3qdd_51 {\n margin-left: 10px;\n}\n._zoomForm_e3qdd_43 ._help_e3qdd_54 {\n margin-left: 5px;\n line-height: 0;\n}\n._autoWeight_e3qdd_58 {\n width: auto;\n height: auto;\n}\n._table_e3qdd_62 {\n overflow: auto;\n}\n._controls_fa3yo_1 {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n}\n._buttons_fa3yo_7 {\n display: flex;\n margin-left: auto;\n gap: 4px;\n}\n._legend_2182d_1 {\n position: absolute;\n opacity: 0.9;\n display: flex;\n flex-direction: column;\n z-index: 1;\n}\n._legend_2182d_1._isDragging_2182d_8 {\n opacity: 0;\n}\n._legendItems_2182d_11 {\n background-color: var(--color-background-raised);\n border: 1px solid var(--color-border);\n padding: 4px 8px;\n border-radius: 2px;\n overflow-y: auto;\n max-height: 100%;\n overflow: overlay;\n --scrollbar-color: #00000040;\n}\n._legendItems_2182d_11::-webkit-scrollbar {\n display: block;\n width: 16px;\n z-index: 2;\n}\n._legendItems_2182d_11::-webkit-scrollbar-button {\n display: none;\n}\n._legendItems_2182d_11::-webkit-scrollbar-track {\n background-color: #00000000;\n}\n._legendItems_2182d_11::-webkit-scrollbar-track-piece {\n background-color: #00000000;\n}\n._legendItems_2182d_11::-webkit-scrollbar-thumb {\n background-color: #00000000;\n border: 5px solid transparent;\n border-radius: 24px;\n box-shadow: 4px 0px 0px 4px var(--scrollbar-color) inset;\n}\n._legendItems_2182d_11::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n._legend_2182d_1._isDragging_2182d_8 ._legendItems_2182d_11._legendItems_2182d_11 {\n pointer-events: none;\n}\n._legend_2182d_1._isHidden_2182d_47 ._legendItems_2182d_11._legendItems_2182d_11 {\n display: none;\n}\n._legendToggle_2182d_50 {\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n display: none;\n}\n._legend_2182d_1._isHidden_2182d_47 ._legendToggle_2182d_50._legendToggle_2182d_50,\n._legend_2182d_1:hover ._legendToggle_2182d_50._legendToggle_2182d_50 {\n display: block;\n}\n._legend_2182d_1:active ._legendToggle_2182d_50._legendToggle_2182d_50:not(:hover) {\n display: none;\n}\n._legend_2182d_1._isHidden_2182d_47 ._legendToggle_2182d_50._legendToggle_2182d_50 {\n position: static;\n transform: none;\n}\n._legend_2182d_1._isDragging_2182d_8 ._legendToggle_2182d_50._legendToggle_2182d_50 {\n display: none;\n}\n._legendItem_2182d_11 {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n user-select: none;\n cursor: pointer;\n font-size: 12px;\n line-height: 16px;\n}\n._legendItemSymbol_2182d_80 {\n display: flex;\n align-items: center;\n height: 16px;\n position: relative;\n flex-shrink: 0;\n}\nhtml[data-theme='dark'] ._legendItemSymbol_2182d_80._legendItemSymbol_2182d_80 {\n filter: invert(1) hue-rotate(180deg);\n}\n._legendItemBox_2182d_90 {\n width: 100%;\n height: 12px;\n display: block;\n}\n._legendItemLine_2182d_95 {\n position: absolute;\n display: flex;\n top: 50%;\n left: 0;\n width: 100%;\n transform: translateY(-50%);\n}\n._legendItemPoint_2182d_103 {\n position: absolute;\n display: flex;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n._isHidden_2182d_47 ._legendItemText_2182d_110._legendItemText_2182d_110 {\n text-decoration: line-through;\n}\n._scrollbars_2182d_113 {\n overflow: overlay;\n --scrollbar-color: #00000040;\n}\n._scrollbars_2182d_113::-webkit-scrollbar {\n display: block;\n width: 16px;\n z-index: 2;\n}\n._scrollbars_2182d_113::-webkit-scrollbar-button {\n display: none;\n}\n._scrollbars_2182d_113::-webkit-scrollbar-track {\n background-color: #00000000;\n}\n._scrollbars_2182d_113::-webkit-scrollbar-track-piece {\n background-color: #00000000;\n}\n._scrollbars_2182d_113::-webkit-scrollbar-thumb {\n background-color: #00000000;\n border: 5px solid transparent;\n border-radius: 24px;\n box-shadow: 4px 0px 0px 4px var(--scrollbar-color) inset;\n}\n._scrollbars_2182d_113::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0);\n}\n._dropzoneContainer_2182d_140 {\n position: absolute;\n}\n._dropzone_2182d_140 {\n position: absolute;\n width: 50%;\n height: 50%;\n display: flex;\n}\n._dropzone_2182d_140._left_2182d_149 {\n left: 0;\n justify-content: flex-start;\n}\n._dropzone_2182d_140._right_2182d_153 {\n right: 0;\n justify-content: flex-end;\n}\n._dropzone_2182d_140._top_2182d_157 {\n top: 0;\n align-items: flex-start;\n}\n._dropzone_2182d_140._bottom_2182d_161 {\n bottom: 0;\n align-items: flex-end;\n}\n._dropzonePlaceholder_2182d_165 {\n position: absolute;\n background-color: rgba(0, 0, 0, 0.05);\n display: none;\n}\n[data-theme='dark'] ._dropzonePlaceholder_2182d_165 {\n background-color: rgba(255, 255, 255, 0.05);\n}\n._isActive_2182d_173 ._dropzonePlaceholder_2182d_165._dropzonePlaceholder_2182d_165 {\n display: block;\n}\nhtml[data-theme='dark'] ._chart_1jdnu_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\n._chart_1jdnu_1 {\n border: 1px solid rgba(255, 255, 255, 0);\n padding-top: 10px;\n position: relative;\n}\n._chart_1jdnu_1 canvas {\n width: 100% !important;\n height: 100% !important;\n}\n._chart_1jdnu_1._fixedHeight_1jdnu_13 {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n height: auto;\n}\n._chart_1jdnu_1._stretchHeight_1jdnu_19 {\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n height: 100%;\n}\n._chart_1jdnu_1:focus {\n border: 1px solid #85b7d9;\n outline: none;\n}\n._chart_1jdnu_1::-moz-focus-inner {\n border: 0;\n}\n._zoomForm_1jdnu_32 {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n}\n._zoomForm_1jdnu_32 ._zoomReset_1jdnu_40 {\n margin-left: 10px;\n}\n._zoomForm_1jdnu_32 ._help_1jdnu_43 {\n margin-left: 5px;\n line-height: 0;\n}\n._autoWeight_1jdnu_47 {\n width: 'auto';\n height: 'auto';\n}\nhtml[data-theme='dark'] ._chart_1t41j_1 canvas {\n filter: invert(1) hue-rotate(180deg);\n}\n._chart_1t41j_1 {\n border: 1px solid rgba(255, 255, 255, 0);\n padding-top: 10px;\n position: relative;\n}\n._chart_1t41j_1 canvas {\n width: 100% !important;\n height: 100% !important;\n}\n._chart_1t41j_1._fixedHeight_1t41j_13 {\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n height: auto;\n}\n._chart_1t41j_1._stretchHeight_1t41j_19 {\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n height: 100%;\n}\n._chart_1t41j_1:focus {\n border: 1px solid #85b7d9;\n outline: none;\n}\n._chart_1t41j_1::-moz-focus-inner {\n border: 0;\n}\n._zoomForm_1t41j_32 {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 0;\n right: 0;\n}\n._zoomForm_1t41j_32 ._zoomReset_1t41j_40 {\n margin-left: 10px;\n}\n._zoomForm_1t41j_32 ._help_1t41j_43 {\n margin-left: 5px;\n line-height: 0;\n}\n._autoWeight_1t41j_47 {\n width: auto;\n height: auto;\n}"));
39133
39179
  document.head.appendChild(elementStyle);
39134
39180
  }
39135
39181
  } catch (e) {