@deephaven/chart 0.53.1-layout-manager.4 → 0.54.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.
Files changed (60) hide show
  1. package/dist/Chart.css +4 -0
  2. package/dist/Chart.css.map +1 -1
  3. package/dist/Chart.d.ts +12 -1
  4. package/dist/Chart.d.ts.map +1 -1
  5. package/dist/Chart.js +96 -9
  6. package/dist/Chart.js.map +1 -1
  7. package/dist/ChartModel.d.ts +2 -0
  8. package/dist/ChartModel.d.ts.map +1 -1
  9. package/dist/ChartModel.js +6 -0
  10. package/dist/ChartModel.js.map +1 -1
  11. package/dist/ChartModelFactory.d.ts +5 -38
  12. package/dist/ChartModelFactory.d.ts.map +1 -1
  13. package/dist/ChartModelFactory.js +6 -11
  14. package/dist/ChartModelFactory.js.map +1 -1
  15. package/dist/ChartTestUtils.d.ts +2 -1
  16. package/dist/ChartTestUtils.d.ts.map +1 -1
  17. package/dist/ChartTestUtils.js +4 -2
  18. package/dist/ChartTestUtils.js.map +1 -1
  19. package/dist/ChartTheme.d.ts +4 -3
  20. package/dist/ChartTheme.d.ts.map +1 -1
  21. package/dist/ChartTheme.js +38 -19
  22. package/dist/ChartTheme.js.map +1 -1
  23. package/dist/ChartTheme.module.css +16 -16
  24. package/dist/ChartTheme.module.css.map +1 -1
  25. package/dist/ChartThemeProvider.d.ts +9 -0
  26. package/dist/ChartThemeProvider.d.ts.map +1 -0
  27. package/dist/ChartThemeProvider.js +35 -0
  28. package/dist/ChartThemeProvider.js.map +1 -0
  29. package/dist/ChartUtils.d.ts +12 -129
  30. package/dist/ChartUtils.d.ts.map +1 -1
  31. package/dist/ChartUtils.js +19 -26
  32. package/dist/ChartUtils.js.map +1 -1
  33. package/dist/DownsamplingError.d.ts +5 -0
  34. package/dist/DownsamplingError.d.ts.map +1 -0
  35. package/dist/DownsamplingError.js +11 -0
  36. package/dist/DownsamplingError.js.map +1 -0
  37. package/dist/FigureChartModel.d.ts +4 -3
  38. package/dist/FigureChartModel.d.ts.map +1 -1
  39. package/dist/FigureChartModel.js +15 -11
  40. package/dist/FigureChartModel.js.map +1 -1
  41. package/dist/MockChartModel.d.ts +3 -0
  42. package/dist/MockChartModel.d.ts.map +1 -1
  43. package/dist/MockChartModel.js +21 -11
  44. package/dist/MockChartModel.js.map +1 -1
  45. package/dist/index.d.ts +4 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/plotly/Plot.d.ts.map +1 -1
  50. package/dist/plotly/Plot.js +3 -8
  51. package/dist/plotly/Plot.js.map +1 -1
  52. package/dist/plotly/createPlotlyComponent.d.ts +4 -0
  53. package/dist/plotly/createPlotlyComponent.d.ts.map +1 -0
  54. package/dist/plotly/createPlotlyComponent.js +13 -0
  55. package/dist/plotly/createPlotlyComponent.js.map +1 -0
  56. package/dist/useChartTheme.d.ts +7 -0
  57. package/dist/useChartTheme.d.ts.map +1 -0
  58. package/dist/useChartTheme.js +10 -0
  59. package/dist/useChartTheme.js.map +1 -0
  60. package/package.json +11 -9
@@ -6,7 +6,7 @@ import type { Layout, Data, PlotData } from 'plotly.js';
6
6
  import type { Formatter } from '@deephaven/jsapi-utils';
7
7
  import ChartModel, { ChartEvent } from './ChartModel';
8
8
  import ChartUtils, { ChartModelSettings, FilterColumnMap, FilterMap } from './ChartUtils';
9
- import ChartTheme from './ChartTheme';
9
+ import { ChartTheme } from './ChartTheme';
10
10
  /**
11
11
  * Takes a Figure object from a widget to make a model for a chart
12
12
  */
@@ -15,14 +15,15 @@ declare class FigureChartModel extends ChartModel {
15
15
  /**
16
16
  * @param dh JSAPI instance
17
17
  * @param figure The figure object created by the API
18
+ * @param theme The theme for the figure
18
19
  * @param settings Chart settings
19
20
  */
20
- constructor(dh: DhType, figure: Figure, settings?: Partial<ChartModelSettings>, theme?: typeof ChartTheme);
21
+ constructor(dh: DhType, figure: Figure, theme: ChartTheme, settings?: Partial<ChartModelSettings>);
21
22
  chartUtils: ChartUtils;
22
23
  dh: DhType;
23
24
  figure: Figure;
24
25
  settings: Partial<ChartModelSettings>;
25
- theme: typeof ChartTheme;
26
+ theme: ChartTheme;
26
27
  data: Partial<Data>[];
27
28
  layout: Partial<Layout>;
28
29
  seriesDataMap: Map<string, Partial<PlotData> & {
@@ -1 +1 @@
1
- {"version":3,"file":"FigureChartModel.d.ts","sourceRoot":"","sources":["../src/FigureChartModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FigureChartModel.d.ts","sourceRoot":"","sources":["../src/FigureChartModel.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ import set from 'lodash.set';
10
10
  import Log from '@deephaven/log';
11
11
  import ChartModel from "./ChartModel.js";
12
12
  import ChartUtils from "./ChartUtils.js";
13
- import ChartTheme from "./ChartTheme.js";
14
13
  var log = Log.module('FigureChartModel');
15
14
 
16
15
  /**
@@ -20,12 +19,12 @@ class FigureChartModel extends ChartModel {
20
19
  /**
21
20
  * @param dh JSAPI instance
22
21
  * @param figure The figure object created by the API
22
+ * @param theme The theme for the figure
23
23
  * @param settings Chart settings
24
24
  */
25
- constructor(dh, figure) {
25
+ constructor(dh, figure, theme) {
26
26
  var _this;
27
- var settings = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
28
- var theme = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ChartTheme;
27
+ var settings = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
29
28
  super(dh);
30
29
  _this = this;
31
30
  _defineProperty(this, "chartUtils", void 0);
@@ -183,7 +182,7 @@ class FigureChartModel extends ChartModel {
183
182
  dh
184
183
  } = this;
185
184
  var axisTypeMap = ChartUtils.groupArray(axes, 'type');
186
- var seriesData = this.chartUtils.makeSeriesDataFromSeries(series, axisTypeMap, ChartUtils.getSeriesVisibility(series.name, this.settings), showLegend, this.theme);
185
+ var seriesData = this.chartUtils.makeSeriesDataFromSeries(series, axisTypeMap, ChartUtils.getSeriesVisibility(series.name, this.settings), this.theme, showLegend);
187
186
  this.seriesDataMap.set(series.name, seriesData);
188
187
  this.data = [...this.seriesDataMap.values()];
189
188
  if (series.plotStyle === dh.plot.SeriesPlotStyle.STACKED_BAR) {
@@ -233,6 +232,10 @@ class FigureChartModel extends ChartModel {
233
232
  return;
234
233
  }
235
234
  this.figure.subscribe(this.isDownsamplingDisabled ? this.dh.plot.DownsampleOptions.DISABLE : this.dh.plot.DownsampleOptions.DEFAULT);
235
+ if (this.figure.errors.length > 0) {
236
+ log.error('Errors in figure', this.figure.errors);
237
+ this.fireError(this.figure.errors);
238
+ }
236
239
  }
237
240
  unsubscribeFigure() {
238
241
  this.figure.unsubscribe();
@@ -317,11 +320,11 @@ class FigureChartModel extends ChartModel {
317
320
  this.setDataArrayForSeries(series, type, dataArray);
318
321
  }
319
322
  this.seriesToProcess.delete(series.name);
320
- if (this.seriesToProcess.size === 0) {
321
- this.fireLoadFinished();
322
- }
323
323
  this.cleanSeries(series);
324
324
  }
325
+ if (this.seriesToProcess.size === 0) {
326
+ this.fireLoadFinished();
327
+ }
325
328
  var {
326
329
  data
327
330
  } = this;
@@ -329,6 +332,7 @@ class FigureChartModel extends ChartModel {
329
332
  }
330
333
  handleRequestFailed(event) {
331
334
  log.error('Request failed', event);
335
+ this.fireError(["".concat(event.detail)]);
332
336
  }
333
337
 
334
338
  /**
@@ -424,7 +428,7 @@ class FigureChartModel extends ChartModel {
424
428
  updateAxisPositions() {
425
429
  var plotWidth = this.getPlotWidth();
426
430
  var plotHeight = this.getPlotHeight();
427
- this.chartUtils.updateFigureAxes(this.layout, this.figure, chart => this.getAxisRangeParser(chart, this.formatter), plotWidth, plotHeight, this.theme);
431
+ this.chartUtils.updateFigureAxes(this.layout, this.figure, this.theme, chart => this.getAxisRangeParser(chart, this.formatter), plotWidth, plotHeight);
428
432
  }
429
433
 
430
434
  /**
@@ -504,10 +508,10 @@ class FigureChartModel extends ChartModel {
504
508
  yHigh
505
509
  } = seriesData;
506
510
  if (_xLow && _xHigh && _xLow !== x) {
507
- seriesData.error_x = ChartUtils.getPlotlyErrorBars(x, _xLow, _xHigh);
511
+ seriesData.error_x = ChartUtils.getPlotlyErrorBars(x, _xLow, _xHigh, this.theme);
508
512
  }
509
513
  if (yLow && yHigh && yLow !== y) {
510
- seriesData.error_y = ChartUtils.getPlotlyErrorBars(y, yLow, yHigh);
514
+ seriesData.error_y = ChartUtils.getPlotlyErrorBars(y, yLow, yHigh, this.theme);
511
515
  }
512
516
  } else if (plotStyle === dh.plot.SeriesPlotStyle.TREEMAP) {
513
517
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"FigureChartModel.js","names":["memoize","debounce","set","Log","ChartModel","ChartUtils","ChartTheme","log","module","FigureChartModel","constructor","dh","figure","_this","settings","arguments","length","undefined","theme","this","_defineProperty","axes","getAllAxes","pendingSeries","_loop","_chart$showLegend","series","i","chart","charts","find","c","includes","addSeries","showLegend","subscribe","ADD_SERIES_DEBOUNCE","columnType","formatter","dataFormatter","getColumnTypeFormatter","dhTimeZone","timeZone","getTimeZone","value","chartUtils","unwrapValue","wrapValue","range","rangeStart","rangeEnd","valueParser","getValueParser","axis","source","getSourceForAxis","getRangeParser","handleFigureUpdated","bind","handleFigureDisconnected","handleFigureReconnected","handleFigureSeriesAdded","handleDownsampleStart","handleDownsampleFinish","handleDownsampleFail","handleDownsampleNeeded","handleRequestFailed","data","template","layout","makeDefaultLayout","grid","rows","columns","cols","pattern","seriesDataMap","Map","oneClicks","filterColumnMap","lastFilter","isConnected","seriesToProcess","Set","setTitle","getDefaultTitle","initAllSeries","updateAxisPositions","startListeningFigure","close","addPendingSeries","cancel","stopListeningFigure","title","clear","activeSeriesNames","j","push","name","allSeriesNames","keys","inactiveSeriesNames","filter","seriesName","indexOf","delete","axisTypeMap","groupArray","seriesData","makeSeriesDataFromSeries","getSeriesVisibility","values","plotStyle","plot","SeriesPlotStyle","STACKED_BAR","barmode","PIE","hiddenlabels","getHiddenLabels","showlegend","oneClick","updateLayoutFormats","callback","listeners","subscribeFigure","unsubscribe","unsubscribeFigure","debug","isDownsamplingDisabled","DownsampleOptions","DISABLE","DEFAULT","addEventListener","Figure","EVENT_UPDATED","EVENT_SERIES_ADDED","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLEFAILED","EVENT_DOWNSAMPLENEEDED","Client","EVENT_REQUEST_FAILED","removeEventListener","event","fireDownsampleStart","detail","fireDownsampleFinish","error","fireDownsampleFail","info","fireDownsampleNeeded","figureUpdateEvent","seriesArray","debug2","sources","type","valueTranslator","getValueTranslator","dataArray","getArray","setDataArrayForSeries","size","fireLoadFinished","cleanSeries","fireUpdate","resubscribe","setFormatter","setDownsamplingDisabled","fireDisconnect","fireReconnect","setDimensions","rect","_match$length","_match","subtitleCount","match","margin","DEFAULT_MARGIN","t","SUBTITLE_LINE_HEIGHT","_objectSpread","text","pad","DEFAULT_TITLE_PADDING","getPlotWidth","_this$layout$margin$l","_this$layout$margin","_this$layout$margin$r","_this$layout$margin2","width","Math","max","l","r","getPlotHeight","_this$layout$margin$t","_this$layout$margin3","_this$layout$margin$b","_this$layout$margin4","height","b","plotWidth","plotHeight","updateFigureAxes","getAxisRangeParser","axisFormats","getAxisFormats","forEach","axisFormat","axisLayoutProperty","concat","props","Object","assign","sourceType","get","property","getPlotlyProperty","HISTOGRAM","xLow","xHigh","LINE","ERROR_BAR","BAR","x","y","yLow","yHigh","error_x","getPlotlyErrorBars","error_y","TREEMAP","ids","labels","getData","getLayout","getFilterColumnMap","isFilterRequired","requireAllFiltersToDisplay","setFilter","filterMap","_this2","warn","_loop2","key","column","setValueForColumn","setFigure","updateSettings"],"sources":["../src/FigureChartModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport set from 'lodash.set';\nimport type {\n Axis,\n Chart,\n dh as DhType,\n Figure,\n OneClick,\n Series,\n SourceType,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Range } from '@deephaven/utils';\nimport type { Layout, Data, PlotData } from 'plotly.js';\nimport type {\n DateTimeColumnFormatter,\n Formatter,\n} from '@deephaven/jsapi-utils';\nimport ChartModel, { ChartEvent } from './ChartModel';\nimport ChartUtils, {\n AxisTypeMap,\n ChartModelSettings,\n FilterColumnMap,\n FilterMap,\n} from './ChartUtils';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('FigureChartModel');\n\n/**\n * Takes a Figure object from a widget to make a model for a chart\n */\nclass FigureChartModel extends ChartModel {\n static ADD_SERIES_DEBOUNCE = 50;\n\n /**\n * @param dh JSAPI instance\n * @param figure The figure object created by the API\n * @param settings Chart settings\n */\n constructor(\n dh: DhType,\n figure: Figure,\n settings: Partial<ChartModelSettings> = {},\n theme: typeof ChartTheme = ChartTheme\n ) {\n super(dh);\n\n this.handleFigureUpdated = this.handleFigureUpdated.bind(this);\n this.handleFigureDisconnected = this.handleFigureDisconnected.bind(this);\n this.handleFigureReconnected = this.handleFigureReconnected.bind(this);\n this.handleFigureSeriesAdded = this.handleFigureSeriesAdded.bind(this);\n this.handleDownsampleStart = this.handleDownsampleStart.bind(this);\n this.handleDownsampleFinish = this.handleDownsampleFinish.bind(this);\n this.handleDownsampleFail = this.handleDownsampleFail.bind(this);\n this.handleDownsampleNeeded = this.handleDownsampleNeeded.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n\n this.dh = dh;\n this.chartUtils = new ChartUtils(dh);\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n const template = {\n data: {},\n layout: this.chartUtils.makeDefaultLayout(theme),\n };\n this.layout = {\n grid: {\n rows: figure.rows,\n columns: figure.cols,\n pattern: 'independent',\n },\n template,\n };\n this.seriesDataMap = new Map();\n this.pendingSeries = [];\n this.oneClicks = [];\n this.filterColumnMap = new Map();\n this.lastFilter = new Map();\n this.isConnected = true; // Assume figure is connected to start\n this.seriesToProcess = new Set();\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n }\n\n chartUtils: ChartUtils;\n\n dh: DhType;\n\n figure: Figure;\n\n settings: Partial<ChartModelSettings>;\n\n theme: typeof ChartTheme;\n\n data: Partial<Data>[];\n\n layout: Partial<Layout>;\n\n seriesDataMap: Map<\n string,\n Partial<PlotData> & {\n xLow?: number[];\n xHigh?: number[];\n yLow?: number[];\n yHigh?: number[];\n }\n >;\n\n pendingSeries: Series[];\n\n oneClicks: OneClick[];\n\n filterColumnMap: FilterColumnMap;\n\n lastFilter: FilterMap;\n\n isConnected: boolean; // Assume figure is connected to start\n\n seriesToProcess;\n\n close(): void {\n this.figure.close();\n this.addPendingSeries.cancel();\n this.stopListeningFigure();\n }\n\n getDefaultTitle(): string {\n if (this.figure.charts.length > 0) {\n const chart = this.figure.charts[0];\n return chart.title;\n }\n\n return '';\n }\n\n initAllSeries(): void {\n this.oneClicks = [];\n this.filterColumnMap.clear();\n\n const { charts } = this.figure;\n const axes = ChartUtils.getAllAxes(this.figure);\n const activeSeriesNames: string[] = [];\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n activeSeriesNames.push(series.name);\n this.addSeries(series, axes, chart.showLegend);\n }\n }\n\n // Remove any series that no longer exist\n const allSeriesNames = [...this.seriesDataMap.keys()];\n const inactiveSeriesNames = allSeriesNames.filter(\n seriesName => activeSeriesNames.indexOf(seriesName) < 0\n );\n for (let i = 0; i < inactiveSeriesNames.length; i += 1) {\n const seriesName = inactiveSeriesNames[i];\n this.seriesDataMap.delete(seriesName);\n }\n this.seriesToProcess = new Set([...this.seriesDataMap.keys()]);\n }\n\n /**\n * Add a series to the model\n * @param series Series object to add\n * @param axes All the axis in this figure\n * @param showLegend Whether this series should show the legend or not\n */\n addSeries(series: Series, axes: Axis[], showLegend: boolean | null): void {\n const { dh } = this;\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(axes, 'type');\n\n const seriesData = this.chartUtils.makeSeriesDataFromSeries(\n series,\n axisTypeMap,\n ChartUtils.getSeriesVisibility(series.name, this.settings),\n showLegend,\n this.theme\n );\n\n this.seriesDataMap.set(series.name, seriesData);\n\n this.data = [...this.seriesDataMap.values()];\n\n if (series.plotStyle === dh.plot.SeriesPlotStyle.STACKED_BAR) {\n this.layout.barmode = 'stack';\n } else if (series.plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n this.layout.hiddenlabels = ChartUtils.getHiddenLabels(this.settings);\n }\n\n // We only want to force hide the legend if there is only one series that is not a PIE\n // Right now this means that if the user only has one series, they cannot explicitly show the legend until deephaven-core#3254 is implemented\n // TODO: deephaven-core#3254, once done, this can be removed.\n this.layout.showlegend =\n this.data.length > 1 || series.plotStyle === dh.plot.SeriesPlotStyle.PIE\n ? showLegend ?? undefined\n : false;\n\n if (series.oneClick != null) {\n const { oneClick } = series;\n const { columns } = oneClick;\n for (let i = 0; i < columns.length; i += 1) {\n this.filterColumnMap.set(columns[i].name, columns[i]);\n }\n\n this.oneClicks.push(oneClick);\n }\n\n this.updateLayoutFormats();\n }\n\n // We need to debounce adding series so we subscribe to them all in the same tick\n // This should no longer be necessary after IDS-5049 lands\n addPendingSeries = debounce(() => {\n const axes = ChartUtils.getAllAxes(this.figure);\n const { pendingSeries } = this;\n for (let i = 0; i < pendingSeries.length; i += 1) {\n const series = pendingSeries[i];\n const chart = this.figure.charts.find(c => c.series.includes(series));\n this.addSeries(series, axes, chart?.showLegend ?? null);\n\n series.subscribe();\n // We'll get an update with the data after subscribing\n }\n\n this.pendingSeries = [];\n }, FigureChartModel.ADD_SERIES_DEBOUNCE);\n\n subscribe(callback: (event: ChartEvent) => void): void {\n super.subscribe(callback);\n\n if (this.listeners.length === 1) {\n // Need to initialize the series here as we may have missed some series when not subscribed\n this.initAllSeries();\n this.subscribeFigure();\n }\n }\n\n unsubscribe(callback: (event: ChartEvent) => void): void {\n super.unsubscribe(callback);\n\n if (this.listeners.length === 0) {\n this.unsubscribeFigure();\n }\n }\n\n subscribeFigure(): void {\n if (!this.isConnected) {\n log.debug('Ignoring subscribe when figure in disconnected state');\n return;\n }\n\n this.figure.subscribe(\n this.isDownsamplingDisabled\n ? this.dh.plot.DownsampleOptions.DISABLE\n : this.dh.plot.DownsampleOptions.DEFAULT\n );\n }\n\n unsubscribeFigure(): void {\n this.figure.unsubscribe();\n }\n\n startListeningFigure(): void {\n const { dh } = this;\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListeningFigure(): void {\n const { dh } = this;\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n getTimeZone = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n if (formatter != null) {\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter != null) {\n return (dataFormatter as DateTimeColumnFormatter).dhTimeZone;\n }\n }\n return undefined;\n }\n );\n\n getValueTranslator = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) => this.chartUtils.unwrapValue(value, timeZone);\n }\n );\n\n /** Gets the parser for a value with the provided column type */\n getValueParser = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) =>\n this.chartUtils.wrapValue(value, columnType, timeZone);\n }\n );\n\n /**\n * Gets the range parser for a particular column type\n */\n getRangeParser = memoize(\n (columnType: string, formatter?: Formatter) => (range: Range) => {\n let [rangeStart, rangeEnd]: [unknown, unknown] = range;\n const valueParser = this.getValueParser(columnType, formatter);\n rangeStart = valueParser(rangeStart);\n rangeEnd = valueParser(rangeEnd);\n return [rangeStart, rangeEnd];\n }\n );\n\n /**\n * Gets the parser for parsing the range from an axis within the given chart\n */\n getAxisRangeParser = memoize(\n (chart: Chart, formatter?: Formatter) => (axis: Axis) => {\n const source = ChartUtils.getSourceForAxis(chart, axis);\n if (source != null) {\n return this.getRangeParser(source.columnType, formatter);\n }\n\n return (range: [unknown, unknown]) => range;\n }\n );\n\n handleDownsampleStart(event: ChartEvent): void {\n log.debug('Downsample started', event);\n\n this.fireDownsampleStart(event.detail);\n }\n\n handleDownsampleFinish(event: ChartEvent): void {\n log.debug('Downsample finished', event);\n\n this.fireDownsampleFinish(event.detail);\n }\n\n handleDownsampleFail(event: ChartEvent): void {\n log.error('Downsample failed', event);\n\n this.fireDownsampleFail(event.detail);\n }\n\n handleDownsampleNeeded(event: ChartEvent): void {\n log.info('Downsample needed', event);\n\n this.fireDownsampleNeeded(event.detail);\n }\n\n handleFigureUpdated(event: ChartEvent): void {\n const { detail: figureUpdateEvent } = event;\n const { series: seriesArray } = figureUpdateEvent;\n\n log.debug2('handleFigureUpdated', seriesArray);\n\n for (let i = 0; i < seriesArray.length; i += 1) {\n const series = seriesArray[i];\n\n log.debug2('handleFigureUpdated updating series', series.name);\n\n const { sources } = series;\n for (let j = 0; j < sources.length; j += 1) {\n const source = sources[j];\n const { columnType, type } = source;\n const valueTranslator = this.getValueTranslator(\n columnType,\n this.formatter\n );\n const dataArray = figureUpdateEvent.getArray(\n series,\n type,\n valueTranslator\n );\n this.setDataArrayForSeries(series, type, dataArray);\n }\n\n this.seriesToProcess.delete(series.name);\n if (this.seriesToProcess.size === 0) {\n this.fireLoadFinished();\n }\n\n this.cleanSeries(series);\n }\n\n const { data } = this;\n this.fireUpdate(data);\n }\n\n handleRequestFailed(event: ChartEvent): void {\n log.error('Request failed', event);\n }\n\n /**\n * Resubscribe to the figure, should be done if settings change\n */\n resubscribe(): void {\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n this.subscribeFigure();\n }\n }\n\n setFormatter(formatter: Formatter): void {\n super.setFormatter(formatter);\n\n this.updateLayoutFormats();\n\n // Unsubscribe and resubscribe to trigger a data update\n // Data may need to be translated again because of the new formatter\n this.resubscribe();\n }\n\n setDownsamplingDisabled(isDownsamplingDisabled: boolean): void {\n super.setDownsamplingDisabled(isDownsamplingDisabled);\n\n this.resubscribe();\n }\n\n handleFigureDisconnected(event: CustomEvent): void {\n log.debug('Figure disconnected', event);\n\n this.isConnected = false;\n\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n }\n\n this.fireDisconnect();\n }\n\n handleFigureReconnected(event: CustomEvent): void {\n log.debug('Figure reconnected', event);\n\n this.isConnected = true;\n\n // It's possible the series have changed completely, as the query could have been changed\n this.initAllSeries();\n\n this.fireReconnect();\n\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n handleFigureSeriesAdded(event: { detail: Series }): void {\n const { detail: series } = event;\n log.debug('handleFigureSeriesAdded', series);\n\n this.pendingSeries.push(series);\n this.addPendingSeries();\n }\n\n setDimensions(rect: DOMRect): void {\n super.setDimensions(rect);\n\n this.updateAxisPositions();\n }\n\n setTitle(title: string): void {\n super.setTitle(title);\n\n // Need to recalculate the padding based on how many lines of text the title is\n // Plotly doesn't handle positioning it correctly, and it's an undocumented feature\n const subtitleCount = (title ?? '').match(/<br>/g)?.length ?? 0;\n const margin =\n ChartUtils.DEFAULT_MARGIN.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT;\n\n if (this.layout.margin) {\n this.layout.margin.t = margin;\n } else {\n this.layout.margin = { t: margin };\n }\n\n if (typeof this.layout.title === 'string') {\n this.layout.title = title;\n } else {\n this.layout.title = { ...this.layout.title };\n this.layout.title.text = title;\n this.layout.title.pad = { ...this.layout.title.pad };\n this.layout.title.pad.t =\n ChartUtils.DEFAULT_TITLE_PADDING.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT * 0.5;\n }\n }\n\n getPlotWidth(): number {\n if (!this.rect || !this.rect.width) {\n return 0;\n }\n\n return Math.max(\n this.rect.width -\n (this.layout.margin?.l ?? 0) -\n (this.layout.margin?.r ?? 0),\n 0\n );\n }\n\n getPlotHeight(): number {\n if (!this.rect || !this.rect.height) {\n return 0;\n }\n\n return Math.max(\n this.rect.height -\n (this.layout.margin?.t ?? 0) -\n (this.layout.margin?.b ?? 0),\n 0\n );\n }\n\n updateAxisPositions(): void {\n const plotWidth = this.getPlotWidth();\n const plotHeight = this.getPlotHeight();\n this.chartUtils.updateFigureAxes(\n this.layout,\n this.figure,\n chart => this.getAxisRangeParser(chart, this.formatter),\n plotWidth,\n plotHeight,\n this.theme\n );\n }\n\n /**\n * Updates the format patterns used\n */\n updateLayoutFormats(): void {\n if (!this.formatter) {\n return;\n }\n\n const axisFormats = this.chartUtils.getAxisFormats(\n this.figure,\n this.formatter\n );\n axisFormats.forEach((axisFormat, axisLayoutProperty) => {\n log.debug(\n `Assigning ${axisLayoutProperty}`,\n this.layout[axisLayoutProperty],\n axisFormat\n );\n\n const props = this.layout[axisLayoutProperty];\n if (props != null) {\n Object.assign(props, axisFormat);\n } else {\n log.debug(`Ignoring null layout.${axisLayoutProperty}`);\n }\n });\n }\n\n /**\n * Set a specific array for the array of series properties specified.\n * @param series The series to set the data array for.\n * @param sourceType The source type within that series to set the data for.\n * @param dataArray The array to use for the data for this series source.\n */\n setDataArrayForSeries(\n series: Series,\n sourceType: SourceType,\n dataArray: unknown[]\n ): void {\n const { name, plotStyle } = series;\n\n const seriesData = this.seriesDataMap.get(name);\n const property = this.chartUtils.getPlotlyProperty(plotStyle, sourceType);\n\n if (seriesData) {\n set(seriesData, property, dataArray);\n }\n }\n\n /**\n * After setting all the data in the series data, we may need to adjust some other properties\n * Eg. Calculating the width from the xLow/xHigh values; Plot.ly uses `width` instead of a low/high\n * value for x.\n * @param series The series to clean the data for\n */\n cleanSeries(series: Series): void {\n const { dh } = this;\n const { name, plotStyle } = series;\n const seriesData = this.seriesDataMap.get(name);\n if (seriesData == null) {\n return;\n }\n if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n const { xLow, xHigh } = seriesData;\n if (xLow && xHigh && xLow.length === xHigh.length) {\n const width = [];\n for (let i = 0; i < xLow.length; i += 1) {\n width.push(xHigh[i] - xLow[i]);\n }\n seriesData.width = width;\n }\n } else if (\n plotStyle === dh.plot.SeriesPlotStyle.LINE ||\n plotStyle === dh.plot.SeriesPlotStyle.ERROR_BAR ||\n plotStyle === dh.plot.SeriesPlotStyle.BAR\n ) {\n const { x, xLow, xHigh, y, yLow, yHigh } = seriesData;\n if (xLow && xHigh && xLow !== x) {\n seriesData.error_x = ChartUtils.getPlotlyErrorBars(\n x as number[],\n xLow,\n xHigh\n );\n }\n if (yLow && yHigh && yLow !== y) {\n seriesData.error_y = ChartUtils.getPlotlyErrorBars(\n y as number[],\n yLow,\n yHigh\n );\n }\n } else if (plotStyle === dh.plot.SeriesPlotStyle.TREEMAP) {\n const { ids, labels } = seriesData;\n if (ids !== undefined && labels === undefined) {\n // If the user only provided IDs, we assign the IDs to the labels property as well automatically\n // Plotly uses the labels primarily, which from our API perspective seems kind of backwards\n seriesData.labels = ids;\n }\n }\n }\n\n getData(): Partial<Data>[] {\n return this.data;\n }\n\n getLayout(): Partial<Layout> {\n return this.layout;\n }\n\n getFilterColumnMap(): FilterColumnMap {\n return new Map(this.filterColumnMap);\n }\n\n isFilterRequired(): boolean {\n return (\n this.oneClicks.find(oneClick => oneClick.requireAllFiltersToDisplay) !=\n null\n );\n }\n\n /**\n * Sets the filter on the model. Will only set the values that have changed.\n * @param filterMap Map of filter column names to values\n */\n setFilter(filterMap: FilterMap): void {\n if (this.oneClicks.length === 0) {\n log.warn('Trying to set a filter, but no one click!');\n return;\n }\n\n log.debug('setFilter', filterMap);\n\n for (let i = 0; i < this.oneClicks.length; i += 1) {\n const oneClick = this.oneClicks[i];\n const { columns } = oneClick;\n // Need to get all the keys in case a filter was removed\n const keys = new Set([...filterMap.keys(), ...this.lastFilter.keys()]);\n keys.forEach(key => {\n const value = filterMap.get(key);\n if (\n this.lastFilter.get(key) !== value &&\n columns.find(column => column.name === key) != null\n ) {\n oneClick.setValueForColumn(key, value);\n }\n });\n }\n\n this.lastFilter = new Map(filterMap);\n }\n\n setFigure(figure: Figure): void {\n this.close();\n\n this.figure = figure;\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n updateSettings(settings: Partial<ChartModelSettings>): void {\n this.settings = settings;\n }\n}\n\nexport default FigureChartModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FigureChartModel.js","names":["memoize","debounce","set","Log","ChartModel","ChartUtils","log","module","FigureChartModel","constructor","dh","figure","theme","_this","settings","arguments","length","undefined","this","_defineProperty","axes","getAllAxes","pendingSeries","_loop","_chart$showLegend","series","i","chart","charts","find","c","includes","addSeries","showLegend","subscribe","ADD_SERIES_DEBOUNCE","columnType","formatter","dataFormatter","getColumnTypeFormatter","dhTimeZone","timeZone","getTimeZone","value","chartUtils","unwrapValue","wrapValue","range","rangeStart","rangeEnd","valueParser","getValueParser","axis","source","getSourceForAxis","getRangeParser","handleFigureUpdated","bind","handleFigureDisconnected","handleFigureReconnected","handleFigureSeriesAdded","handleDownsampleStart","handleDownsampleFinish","handleDownsampleFail","handleDownsampleNeeded","handleRequestFailed","data","template","layout","makeDefaultLayout","grid","rows","columns","cols","pattern","seriesDataMap","Map","oneClicks","filterColumnMap","lastFilter","isConnected","seriesToProcess","Set","setTitle","getDefaultTitle","initAllSeries","updateAxisPositions","startListeningFigure","close","addPendingSeries","cancel","stopListeningFigure","title","clear","activeSeriesNames","j","push","name","allSeriesNames","keys","inactiveSeriesNames","filter","seriesName","indexOf","delete","axisTypeMap","groupArray","seriesData","makeSeriesDataFromSeries","getSeriesVisibility","values","plotStyle","plot","SeriesPlotStyle","STACKED_BAR","barmode","PIE","hiddenlabels","getHiddenLabels","showlegend","oneClick","updateLayoutFormats","callback","listeners","subscribeFigure","unsubscribe","unsubscribeFigure","debug","isDownsamplingDisabled","DownsampleOptions","DISABLE","DEFAULT","errors","error","fireError","addEventListener","Figure","EVENT_UPDATED","EVENT_SERIES_ADDED","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLEFAILED","EVENT_DOWNSAMPLENEEDED","Client","EVENT_REQUEST_FAILED","removeEventListener","event","fireDownsampleStart","detail","fireDownsampleFinish","fireDownsampleFail","info","fireDownsampleNeeded","figureUpdateEvent","seriesArray","debug2","sources","type","valueTranslator","getValueTranslator","dataArray","getArray","setDataArrayForSeries","cleanSeries","size","fireLoadFinished","fireUpdate","concat","resubscribe","setFormatter","setDownsamplingDisabled","fireDisconnect","fireReconnect","setDimensions","rect","_match$length","_match","subtitleCount","match","margin","DEFAULT_MARGIN","t","SUBTITLE_LINE_HEIGHT","_objectSpread","text","pad","DEFAULT_TITLE_PADDING","getPlotWidth","_this$layout$margin$l","_this$layout$margin","_this$layout$margin$r","_this$layout$margin2","width","Math","max","l","r","getPlotHeight","_this$layout$margin$t","_this$layout$margin3","_this$layout$margin$b","_this$layout$margin4","height","b","plotWidth","plotHeight","updateFigureAxes","getAxisRangeParser","axisFormats","getAxisFormats","forEach","axisFormat","axisLayoutProperty","props","Object","assign","sourceType","get","property","getPlotlyProperty","HISTOGRAM","xLow","xHigh","LINE","ERROR_BAR","BAR","x","y","yLow","yHigh","error_x","getPlotlyErrorBars","error_y","TREEMAP","ids","labels","getData","getLayout","getFilterColumnMap","isFilterRequired","requireAllFiltersToDisplay","setFilter","filterMap","_this2","warn","_loop2","key","column","setValueForColumn","setFigure","updateSettings"],"sources":["../src/FigureChartModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport set from 'lodash.set';\nimport type {\n Axis,\n Chart,\n dh as DhType,\n Figure,\n OneClick,\n Series,\n SourceType,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Range } from '@deephaven/utils';\nimport type { Layout, Data, PlotData } from 'plotly.js';\nimport type {\n DateTimeColumnFormatter,\n Formatter,\n} from '@deephaven/jsapi-utils';\nimport ChartModel, { ChartEvent } from './ChartModel';\nimport ChartUtils, {\n AxisTypeMap,\n ChartModelSettings,\n FilterColumnMap,\n FilterMap,\n} from './ChartUtils';\nimport { ChartTheme } from './ChartTheme';\n\nconst log = Log.module('FigureChartModel');\n\n/**\n * Takes a Figure object from a widget to make a model for a chart\n */\nclass FigureChartModel extends ChartModel {\n static ADD_SERIES_DEBOUNCE = 50;\n\n /**\n * @param dh JSAPI instance\n * @param figure The figure object created by the API\n * @param theme The theme for the figure\n * @param settings Chart settings\n */\n constructor(\n dh: DhType,\n figure: Figure,\n theme: ChartTheme,\n settings: Partial<ChartModelSettings> = {}\n ) {\n super(dh);\n\n this.handleFigureUpdated = this.handleFigureUpdated.bind(this);\n this.handleFigureDisconnected = this.handleFigureDisconnected.bind(this);\n this.handleFigureReconnected = this.handleFigureReconnected.bind(this);\n this.handleFigureSeriesAdded = this.handleFigureSeriesAdded.bind(this);\n this.handleDownsampleStart = this.handleDownsampleStart.bind(this);\n this.handleDownsampleFinish = this.handleDownsampleFinish.bind(this);\n this.handleDownsampleFail = this.handleDownsampleFail.bind(this);\n this.handleDownsampleNeeded = this.handleDownsampleNeeded.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n\n this.dh = dh;\n this.chartUtils = new ChartUtils(dh);\n this.figure = figure;\n this.settings = settings;\n this.theme = theme;\n this.data = [];\n const template = {\n data: {},\n layout: this.chartUtils.makeDefaultLayout(theme),\n };\n this.layout = {\n grid: {\n rows: figure.rows,\n columns: figure.cols,\n pattern: 'independent',\n },\n template,\n };\n this.seriesDataMap = new Map();\n this.pendingSeries = [];\n this.oneClicks = [];\n this.filterColumnMap = new Map();\n this.lastFilter = new Map();\n this.isConnected = true; // Assume figure is connected to start\n this.seriesToProcess = new Set();\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n }\n\n chartUtils: ChartUtils;\n\n dh: DhType;\n\n figure: Figure;\n\n settings: Partial<ChartModelSettings>;\n\n theme: ChartTheme;\n\n data: Partial<Data>[];\n\n layout: Partial<Layout>;\n\n seriesDataMap: Map<\n string,\n Partial<PlotData> & {\n xLow?: number[];\n xHigh?: number[];\n yLow?: number[];\n yHigh?: number[];\n }\n >;\n\n pendingSeries: Series[];\n\n oneClicks: OneClick[];\n\n filterColumnMap: FilterColumnMap;\n\n lastFilter: FilterMap;\n\n isConnected: boolean; // Assume figure is connected to start\n\n seriesToProcess;\n\n close(): void {\n this.figure.close();\n this.addPendingSeries.cancel();\n this.stopListeningFigure();\n }\n\n getDefaultTitle(): string {\n if (this.figure.charts.length > 0) {\n const chart = this.figure.charts[0];\n return chart.title;\n }\n\n return '';\n }\n\n initAllSeries(): void {\n this.oneClicks = [];\n this.filterColumnMap.clear();\n\n const { charts } = this.figure;\n const axes = ChartUtils.getAllAxes(this.figure);\n const activeSeriesNames: string[] = [];\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n activeSeriesNames.push(series.name);\n this.addSeries(series, axes, chart.showLegend);\n }\n }\n\n // Remove any series that no longer exist\n const allSeriesNames = [...this.seriesDataMap.keys()];\n const inactiveSeriesNames = allSeriesNames.filter(\n seriesName => activeSeriesNames.indexOf(seriesName) < 0\n );\n for (let i = 0; i < inactiveSeriesNames.length; i += 1) {\n const seriesName = inactiveSeriesNames[i];\n this.seriesDataMap.delete(seriesName);\n }\n this.seriesToProcess = new Set([...this.seriesDataMap.keys()]);\n }\n\n /**\n * Add a series to the model\n * @param series Series object to add\n * @param axes All the axis in this figure\n * @param showLegend Whether this series should show the legend or not\n */\n addSeries(series: Series, axes: Axis[], showLegend: boolean | null): void {\n const { dh } = this;\n const axisTypeMap: AxisTypeMap = ChartUtils.groupArray(axes, 'type');\n\n const seriesData = this.chartUtils.makeSeriesDataFromSeries(\n series,\n axisTypeMap,\n ChartUtils.getSeriesVisibility(series.name, this.settings),\n this.theme,\n showLegend\n );\n\n this.seriesDataMap.set(series.name, seriesData);\n\n this.data = [...this.seriesDataMap.values()];\n\n if (series.plotStyle === dh.plot.SeriesPlotStyle.STACKED_BAR) {\n this.layout.barmode = 'stack';\n } else if (series.plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n this.layout.hiddenlabels = ChartUtils.getHiddenLabels(this.settings);\n }\n\n // We only want to force hide the legend if there is only one series that is not a PIE\n // Right now this means that if the user only has one series, they cannot explicitly show the legend until deephaven-core#3254 is implemented\n // TODO: deephaven-core#3254, once done, this can be removed.\n this.layout.showlegend =\n this.data.length > 1 || series.plotStyle === dh.plot.SeriesPlotStyle.PIE\n ? showLegend ?? undefined\n : false;\n\n if (series.oneClick != null) {\n const { oneClick } = series;\n const { columns } = oneClick;\n for (let i = 0; i < columns.length; i += 1) {\n this.filterColumnMap.set(columns[i].name, columns[i]);\n }\n\n this.oneClicks.push(oneClick);\n }\n\n this.updateLayoutFormats();\n }\n\n // We need to debounce adding series so we subscribe to them all in the same tick\n // This should no longer be necessary after IDS-5049 lands\n addPendingSeries = debounce(() => {\n const axes = ChartUtils.getAllAxes(this.figure);\n const { pendingSeries } = this;\n for (let i = 0; i < pendingSeries.length; i += 1) {\n const series = pendingSeries[i];\n const chart = this.figure.charts.find(c => c.series.includes(series));\n this.addSeries(series, axes, chart?.showLegend ?? null);\n\n series.subscribe();\n // We'll get an update with the data after subscribing\n }\n\n this.pendingSeries = [];\n }, FigureChartModel.ADD_SERIES_DEBOUNCE);\n\n subscribe(callback: (event: ChartEvent) => void): void {\n super.subscribe(callback);\n\n if (this.listeners.length === 1) {\n // Need to initialize the series here as we may have missed some series when not subscribed\n this.initAllSeries();\n this.subscribeFigure();\n }\n }\n\n unsubscribe(callback: (event: ChartEvent) => void): void {\n super.unsubscribe(callback);\n\n if (this.listeners.length === 0) {\n this.unsubscribeFigure();\n }\n }\n\n subscribeFigure(): void {\n if (!this.isConnected) {\n log.debug('Ignoring subscribe when figure in disconnected state');\n return;\n }\n\n this.figure.subscribe(\n this.isDownsamplingDisabled\n ? this.dh.plot.DownsampleOptions.DISABLE\n : this.dh.plot.DownsampleOptions.DEFAULT\n );\n\n if (this.figure.errors.length > 0) {\n log.error('Errors in figure', this.figure.errors);\n this.fireError(this.figure.errors);\n }\n }\n\n unsubscribeFigure(): void {\n this.figure.unsubscribe();\n }\n\n startListeningFigure(): void {\n const { dh } = this;\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.addEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListeningFigure(): void {\n const { dh } = this;\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_UPDATED,\n this.handleFigureUpdated\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_SERIES_ADDED,\n this.handleFigureSeriesAdded\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DISCONNECT,\n this.handleFigureDisconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_RECONNECT,\n this.handleFigureReconnected\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLESTARTED,\n this.handleDownsampleStart\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFINISHED,\n this.handleDownsampleFinish\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLEFAILED,\n this.handleDownsampleFail\n );\n this.figure.removeEventListener(\n dh.plot.Figure.EVENT_DOWNSAMPLENEEDED,\n this.handleDownsampleNeeded\n );\n this.figure.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n getTimeZone = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n if (formatter != null) {\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter != null) {\n return (dataFormatter as DateTimeColumnFormatter).dhTimeZone;\n }\n }\n return undefined;\n }\n );\n\n getValueTranslator = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) => this.chartUtils.unwrapValue(value, timeZone);\n }\n );\n\n /** Gets the parser for a value with the provided column type */\n getValueParser = memoize(\n (columnType: string, formatter: Formatter | undefined) => {\n const timeZone = this.getTimeZone(columnType, formatter);\n return (value: unknown) =>\n this.chartUtils.wrapValue(value, columnType, timeZone);\n }\n );\n\n /**\n * Gets the range parser for a particular column type\n */\n getRangeParser = memoize(\n (columnType: string, formatter?: Formatter) => (range: Range) => {\n let [rangeStart, rangeEnd]: [unknown, unknown] = range;\n const valueParser = this.getValueParser(columnType, formatter);\n rangeStart = valueParser(rangeStart);\n rangeEnd = valueParser(rangeEnd);\n return [rangeStart, rangeEnd];\n }\n );\n\n /**\n * Gets the parser for parsing the range from an axis within the given chart\n */\n getAxisRangeParser = memoize(\n (chart: Chart, formatter?: Formatter) => (axis: Axis) => {\n const source = ChartUtils.getSourceForAxis(chart, axis);\n if (source != null) {\n return this.getRangeParser(source.columnType, formatter);\n }\n\n return (range: [unknown, unknown]) => range;\n }\n );\n\n handleDownsampleStart(event: ChartEvent): void {\n log.debug('Downsample started', event);\n\n this.fireDownsampleStart(event.detail);\n }\n\n handleDownsampleFinish(event: ChartEvent): void {\n log.debug('Downsample finished', event);\n\n this.fireDownsampleFinish(event.detail);\n }\n\n handleDownsampleFail(event: ChartEvent): void {\n log.error('Downsample failed', event);\n\n this.fireDownsampleFail(event.detail);\n }\n\n handleDownsampleNeeded(event: ChartEvent): void {\n log.info('Downsample needed', event);\n\n this.fireDownsampleNeeded(event.detail);\n }\n\n handleFigureUpdated(event: ChartEvent): void {\n const { detail: figureUpdateEvent } = event;\n const { series: seriesArray } = figureUpdateEvent;\n\n log.debug2('handleFigureUpdated', seriesArray);\n\n for (let i = 0; i < seriesArray.length; i += 1) {\n const series = seriesArray[i];\n\n log.debug2('handleFigureUpdated updating series', series.name);\n\n const { sources } = series;\n for (let j = 0; j < sources.length; j += 1) {\n const source = sources[j];\n const { columnType, type } = source;\n const valueTranslator = this.getValueTranslator(\n columnType,\n this.formatter\n );\n const dataArray = figureUpdateEvent.getArray(\n series,\n type,\n valueTranslator\n );\n this.setDataArrayForSeries(series, type, dataArray);\n }\n\n this.seriesToProcess.delete(series.name);\n\n this.cleanSeries(series);\n }\n if (this.seriesToProcess.size === 0) {\n this.fireLoadFinished();\n }\n\n const { data } = this;\n this.fireUpdate(data);\n }\n\n handleRequestFailed(event: ChartEvent): void {\n log.error('Request failed', event);\n this.fireError([`${event.detail}`]);\n }\n\n /**\n * Resubscribe to the figure, should be done if settings change\n */\n resubscribe(): void {\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n this.subscribeFigure();\n }\n }\n\n setFormatter(formatter: Formatter): void {\n super.setFormatter(formatter);\n\n this.updateLayoutFormats();\n\n // Unsubscribe and resubscribe to trigger a data update\n // Data may need to be translated again because of the new formatter\n this.resubscribe();\n }\n\n setDownsamplingDisabled(isDownsamplingDisabled: boolean): void {\n super.setDownsamplingDisabled(isDownsamplingDisabled);\n\n this.resubscribe();\n }\n\n handleFigureDisconnected(event: CustomEvent): void {\n log.debug('Figure disconnected', event);\n\n this.isConnected = false;\n\n if (this.listeners.length > 0) {\n this.unsubscribeFigure();\n }\n\n this.fireDisconnect();\n }\n\n handleFigureReconnected(event: CustomEvent): void {\n log.debug('Figure reconnected', event);\n\n this.isConnected = true;\n\n // It's possible the series have changed completely, as the query could have been changed\n this.initAllSeries();\n\n this.fireReconnect();\n\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n handleFigureSeriesAdded(event: { detail: Series }): void {\n const { detail: series } = event;\n log.debug('handleFigureSeriesAdded', series);\n\n this.pendingSeries.push(series);\n this.addPendingSeries();\n }\n\n setDimensions(rect: DOMRect): void {\n super.setDimensions(rect);\n\n this.updateAxisPositions();\n }\n\n setTitle(title: string): void {\n super.setTitle(title);\n\n // Need to recalculate the padding based on how many lines of text the title is\n // Plotly doesn't handle positioning it correctly, and it's an undocumented feature\n const subtitleCount = (title ?? '').match(/<br>/g)?.length ?? 0;\n const margin =\n ChartUtils.DEFAULT_MARGIN.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT;\n\n if (this.layout.margin) {\n this.layout.margin.t = margin;\n } else {\n this.layout.margin = { t: margin };\n }\n\n if (typeof this.layout.title === 'string') {\n this.layout.title = title;\n } else {\n this.layout.title = { ...this.layout.title };\n this.layout.title.text = title;\n this.layout.title.pad = { ...this.layout.title.pad };\n this.layout.title.pad.t =\n ChartUtils.DEFAULT_TITLE_PADDING.t +\n subtitleCount * ChartUtils.SUBTITLE_LINE_HEIGHT * 0.5;\n }\n }\n\n getPlotWidth(): number {\n if (!this.rect || !this.rect.width) {\n return 0;\n }\n\n return Math.max(\n this.rect.width -\n (this.layout.margin?.l ?? 0) -\n (this.layout.margin?.r ?? 0),\n 0\n );\n }\n\n getPlotHeight(): number {\n if (!this.rect || !this.rect.height) {\n return 0;\n }\n\n return Math.max(\n this.rect.height -\n (this.layout.margin?.t ?? 0) -\n (this.layout.margin?.b ?? 0),\n 0\n );\n }\n\n updateAxisPositions(): void {\n const plotWidth = this.getPlotWidth();\n const plotHeight = this.getPlotHeight();\n this.chartUtils.updateFigureAxes(\n this.layout,\n this.figure,\n this.theme,\n chart => this.getAxisRangeParser(chart, this.formatter),\n plotWidth,\n plotHeight\n );\n }\n\n /**\n * Updates the format patterns used\n */\n updateLayoutFormats(): void {\n if (!this.formatter) {\n return;\n }\n\n const axisFormats = this.chartUtils.getAxisFormats(\n this.figure,\n this.formatter\n );\n axisFormats.forEach((axisFormat, axisLayoutProperty) => {\n log.debug(\n `Assigning ${axisLayoutProperty}`,\n this.layout[axisLayoutProperty],\n axisFormat\n );\n\n const props = this.layout[axisLayoutProperty];\n if (props != null) {\n Object.assign(props, axisFormat);\n } else {\n log.debug(`Ignoring null layout.${axisLayoutProperty}`);\n }\n });\n }\n\n /**\n * Set a specific array for the array of series properties specified.\n * @param series The series to set the data array for.\n * @param sourceType The source type within that series to set the data for.\n * @param dataArray The array to use for the data for this series source.\n */\n setDataArrayForSeries(\n series: Series,\n sourceType: SourceType,\n dataArray: unknown[]\n ): void {\n const { name, plotStyle } = series;\n\n const seriesData = this.seriesDataMap.get(name);\n const property = this.chartUtils.getPlotlyProperty(plotStyle, sourceType);\n\n if (seriesData) {\n set(seriesData, property, dataArray);\n }\n }\n\n /**\n * After setting all the data in the series data, we may need to adjust some other properties\n * Eg. Calculating the width from the xLow/xHigh values; Plot.ly uses `width` instead of a low/high\n * value for x.\n * @param series The series to clean the data for\n */\n cleanSeries(series: Series): void {\n const { dh } = this;\n const { name, plotStyle } = series;\n const seriesData = this.seriesDataMap.get(name);\n if (seriesData == null) {\n return;\n }\n if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n const { xLow, xHigh } = seriesData;\n if (xLow && xHigh && xLow.length === xHigh.length) {\n const width = [];\n for (let i = 0; i < xLow.length; i += 1) {\n width.push(xHigh[i] - xLow[i]);\n }\n seriesData.width = width;\n }\n } else if (\n plotStyle === dh.plot.SeriesPlotStyle.LINE ||\n plotStyle === dh.plot.SeriesPlotStyle.ERROR_BAR ||\n plotStyle === dh.plot.SeriesPlotStyle.BAR\n ) {\n const { x, xLow, xHigh, y, yLow, yHigh } = seriesData;\n if (xLow && xHigh && xLow !== x) {\n seriesData.error_x = ChartUtils.getPlotlyErrorBars(\n x as number[],\n xLow,\n xHigh,\n this.theme\n );\n }\n if (yLow && yHigh && yLow !== y) {\n seriesData.error_y = ChartUtils.getPlotlyErrorBars(\n y as number[],\n yLow,\n yHigh,\n this.theme\n );\n }\n } else if (plotStyle === dh.plot.SeriesPlotStyle.TREEMAP) {\n const { ids, labels } = seriesData;\n if (ids !== undefined && labels === undefined) {\n // If the user only provided IDs, we assign the IDs to the labels property as well automatically\n // Plotly uses the labels primarily, which from our API perspective seems kind of backwards\n seriesData.labels = ids;\n }\n }\n }\n\n getData(): Partial<Data>[] {\n return this.data;\n }\n\n getLayout(): Partial<Layout> {\n return this.layout;\n }\n\n getFilterColumnMap(): FilterColumnMap {\n return new Map(this.filterColumnMap);\n }\n\n isFilterRequired(): boolean {\n return (\n this.oneClicks.find(oneClick => oneClick.requireAllFiltersToDisplay) !=\n null\n );\n }\n\n /**\n * Sets the filter on the model. Will only set the values that have changed.\n * @param filterMap Map of filter column names to values\n */\n setFilter(filterMap: FilterMap): void {\n if (this.oneClicks.length === 0) {\n log.warn('Trying to set a filter, but no one click!');\n return;\n }\n\n log.debug('setFilter', filterMap);\n\n for (let i = 0; i < this.oneClicks.length; i += 1) {\n const oneClick = this.oneClicks[i];\n const { columns } = oneClick;\n // Need to get all the keys in case a filter was removed\n const keys = new Set([...filterMap.keys(), ...this.lastFilter.keys()]);\n keys.forEach(key => {\n const value = filterMap.get(key);\n if (\n this.lastFilter.get(key) !== value &&\n columns.find(column => column.name === key) != null\n ) {\n oneClick.setValueForColumn(key, value);\n }\n });\n }\n\n this.lastFilter = new Map(filterMap);\n }\n\n setFigure(figure: Figure): void {\n this.close();\n\n this.figure = figure;\n\n this.setTitle(this.getDefaultTitle());\n this.initAllSeries();\n this.updateAxisPositions();\n this.startListeningFigure();\n if (this.listeners.length > 0) {\n this.subscribeFigure();\n }\n }\n\n updateSettings(settings: Partial<ChartModelSettings>): void {\n this.settings = settings;\n }\n}\n\nexport default FigureChartModel;\n"],"mappings":";;;;;AAAA;AACA,OAAOA,OAAO,MAAM,UAAU;AAC9B,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,GAAG,MAAM,YAAY;AAU5B,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAO1BC,UAAU;AAAA,OACVC,UAAU;AAQjB,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAM,CAAC,kBAAkB,CAAC;;AAE1C;AACA;AACA;AACA,MAAMC,gBAAgB,SAASJ,UAAU,CAAC;EAGxC;AACF;AACA;AACA;AACA;AACA;EACEK,WAAWA,CACTC,EAAU,EACVC,MAAc,EACdC,KAAiB,EAEjB;IAAA,IAAAC,KAAA;IAAA,IADAC,QAAqC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAE1C,KAAK,CAACL,EAAE,CAAC;IAAAG,KAAA,GAAAK,IAAA;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,2BA+KQlB,QAAQ,CAAC,MAAM;MAChC,IAAMmB,IAAI,GAAGf,UAAU,CAACgB,UAAU,CAAC,IAAI,CAACV,MAAM,CAAC;MAC/C,IAAM;QAAEW;MAAc,CAAC,GAAG,IAAI;MAAC,IAAAC,KAAA,YAAAA,MAAA,EACmB;QAAA,IAAAC,iBAAA;QAChD,IAAMC,MAAM,GAAGH,aAAa,CAACI,CAAC,CAAC;QAC/B,IAAMC,KAAK,GAAGd,KAAI,CAACF,MAAM,CAACiB,MAAM,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACL,MAAM,CAACM,QAAQ,CAACN,MAAM,CAAC,CAAC;QACrEZ,KAAI,CAACmB,SAAS,CAACP,MAAM,EAAEL,IAAI,GAAAI,iBAAA,GAAEG,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,UAAU,cAAAT,iBAAA,cAAAA,iBAAA,GAAI,IAAI,CAAC;QAEvDC,MAAM,CAACS,SAAS,CAAC,CAAC;QAClB;MACF,CAAC;MAPD,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,aAAa,CAACN,MAAM,EAAEU,CAAC,IAAI,CAAC;QAAAH,KAAA;MAAA;MAShD,IAAI,CAACD,aAAa,GAAG,EAAE;IACzB,CAAC,EAAEd,gBAAgB,CAAC2B,mBAAmB,CAAC;IAAAhB,eAAA,sBA0H1BnB,OAAO,CACnB,CAACoC,UAAkB,EAAEC,SAAgC,KAAK;MACxD,IAAIA,SAAS,IAAI,IAAI,EAAE;QACrB,IAAMC,aAAa,GAAGD,SAAS,CAACE,sBAAsB,CAACH,UAAU,CAAC;QAClE,IAAIE,aAAa,IAAI,IAAI,EAAE;UACzB,OAAQA,aAAa,CAA6BE,UAAU;QAC9D;MACF;MACA,OAAOvB,SAAS;IAClB,CACF,CAAC;IAAAE,eAAA,6BAEoBnB,OAAO,CAC1B,CAACoC,UAAkB,EAAEC,SAAgC,KAAK;MACxD,IAAMI,QAAQ,GAAG,IAAI,CAACC,WAAW,CAACN,UAAU,EAAEC,SAAS,CAAC;MACxD,OAAQM,KAAc,IAAK,IAAI,CAACC,UAAU,CAACC,WAAW,CAACF,KAAK,EAAEF,QAAQ,CAAC;IACzE,CACF,CAAC;IAAAtB,eAAA,yBAGgBnB,OAAO,CACtB,CAACoC,UAAkB,EAAEC,SAAgC,KAAK;MACxD,IAAMI,QAAQ,GAAG,IAAI,CAACC,WAAW,CAACN,UAAU,EAAEC,SAAS,CAAC;MACxD,OAAQM,KAAc,IACpB,IAAI,CAACC,UAAU,CAACE,SAAS,CAACH,KAAK,EAAEP,UAAU,EAAEK,QAAQ,CAAC;IAC1D,CACF,CAAC;IAAAtB,eAAA,yBAKgBnB,OAAO,CACtB,CAACoC,UAAkB,EAAEC,SAAqB,KAAMU,KAAY,IAAK;MAC/D,IAAI,CAACC,UAAU,EAAEC,QAAQ,CAAqB,GAAGF,KAAK;MACtD,IAAMG,WAAW,GAAG,IAAI,CAACC,cAAc,CAACf,UAAU,EAAEC,SAAS,CAAC;MAC9DW,UAAU,GAAGE,WAAW,CAACF,UAAU,CAAC;MACpCC,QAAQ,GAAGC,WAAW,CAACD,QAAQ,CAAC;MAChC,OAAO,CAACD,UAAU,EAAEC,QAAQ,CAAC;IAC/B,CACF,CAAC;IAAA9B,eAAA,6BAKoBnB,OAAO,CAC1B,CAAC2B,KAAY,EAAEU,SAAqB,KAAMe,IAAU,IAAK;MACvD,IAAMC,MAAM,GAAGhD,UAAU,CAACiD,gBAAgB,CAAC3B,KAAK,EAAEyB,IAAI,CAAC;MACvD,IAAIC,MAAM,IAAI,IAAI,EAAE;QAClB,OAAO,IAAI,CAACE,cAAc,CAACF,MAAM,CAACjB,UAAU,EAAEC,SAAS,CAAC;MAC1D;MAEA,OAAQU,KAAyB,IAAKA,KAAK;IAC7C,CACF,CAAC;IAzWC,IAAI,CAACS,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACC,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACD,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACE,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACF,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACG,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACH,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACI,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACK,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACL,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACM,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACN,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACO,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACP,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACQ,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACR,IAAI,CAAC,IAAI,CAAC;IAE9D,IAAI,CAAC/C,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACkC,UAAU,GAAG,IAAIvC,UAAU,CAACK,EAAE,CAAC;IACpC,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACsD,IAAI,GAAG,EAAE;IACd,IAAMC,QAAQ,GAAG;MACfD,IAAI,EAAE,CAAC,CAAC;MACRE,MAAM,EAAE,IAAI,CAACxB,UAAU,CAACyB,iBAAiB,CAACzD,KAAK;IACjD,CAAC;IACD,IAAI,CAACwD,MAAM,GAAG;MACZE,IAAI,EAAE;QACJC,IAAI,EAAE5D,MAAM,CAAC4D,IAAI;QACjBC,OAAO,EAAE7D,MAAM,CAAC8D,IAAI;QACpBC,OAAO,EAAE;MACX,CAAC;MACDP;IACF,CAAC;IACD,IAAI,CAACQ,aAAa,GAAG,IAAIC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAACtD,aAAa,GAAG,EAAE;IACvB,IAAI,CAACuD,SAAS,GAAG,EAAE;IACnB,IAAI,CAACC,eAAe,GAAG,IAAIF,GAAG,CAAC,CAAC;IAChC,IAAI,CAACG,UAAU,GAAG,IAAIH,GAAG,CAAC,CAAC;IAC3B,IAAI,CAACI,WAAW,GAAG,IAAI,CAAC,CAAC;IACzB,IAAI,CAACC,eAAe,GAAG,IAAIC,GAAG,CAAC,CAAC;IAEhC,IAAI,CAACC,QAAQ,CAAC,IAAI,CAACC,eAAe,CAAC,CAAC,CAAC;IACrC,IAAI,CAACC,aAAa,CAAC,CAAC;IACpB,IAAI,CAACC,mBAAmB,CAAC,CAAC;IAC1B,IAAI,CAACC,oBAAoB,CAAC,CAAC;EAC7B;;EAkCsB;;EAItBC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAC7E,MAAM,CAAC6E,KAAK,CAAC,CAAC;IACnB,IAAI,CAACC,gBAAgB,CAACC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAACC,mBAAmB,CAAC,CAAC;EAC5B;EAEAP,eAAeA,CAAA,EAAW;IACxB,IAAI,IAAI,CAACzE,MAAM,CAACiB,MAAM,CAACZ,MAAM,GAAG,CAAC,EAAE;MACjC,IAAMW,KAAK,GAAG,IAAI,CAAChB,MAAM,CAACiB,MAAM,CAAC,CAAC,CAAC;MACnC,OAAOD,KAAK,CAACiE,KAAK;IACpB;IAEA,OAAO,EAAE;EACX;EAEAP,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACR,SAAS,GAAG,EAAE;IACnB,IAAI,CAACC,eAAe,CAACe,KAAK,CAAC,CAAC;IAE5B,IAAM;MAAEjE;IAAO,CAAC,GAAG,IAAI,CAACjB,MAAM;IAC9B,IAAMS,IAAI,GAAGf,UAAU,CAACgB,UAAU,CAAC,IAAI,CAACV,MAAM,CAAC;IAC/C,IAAMmF,iBAA2B,GAAG,EAAE;IACtC,KAAK,IAAIpE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGE,MAAM,CAACZ,MAAM,EAAEU,CAAC,IAAI,CAAC,EAAE;MACzC,IAAMC,KAAK,GAAGC,MAAM,CAACF,CAAC,CAAC;MAEvB,KAAK,IAAIqE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpE,KAAK,CAACF,MAAM,CAACT,MAAM,EAAE+E,CAAC,IAAI,CAAC,EAAE;QAC/C,IAAMtE,MAAM,GAAGE,KAAK,CAACF,MAAM,CAACsE,CAAC,CAAC;QAC9BD,iBAAiB,CAACE,IAAI,CAACvE,MAAM,CAACwE,IAAI,CAAC;QACnC,IAAI,CAACjE,SAAS,CAACP,MAAM,EAAEL,IAAI,EAAEO,KAAK,CAACM,UAAU,CAAC;MAChD;IACF;;IAEA;IACA,IAAMiE,cAAc,GAAG,CAAC,GAAG,IAAI,CAACvB,aAAa,CAACwB,IAAI,CAAC,CAAC,CAAC;IACrD,IAAMC,mBAAmB,GAAGF,cAAc,CAACG,MAAM,CAC/CC,UAAU,IAAIR,iBAAiB,CAACS,OAAO,CAACD,UAAU,CAAC,GAAG,CACxD,CAAC;IACD,KAAK,IAAI5E,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG0E,mBAAmB,CAACpF,MAAM,EAAEU,EAAC,IAAI,CAAC,EAAE;MACtD,IAAM4E,UAAU,GAAGF,mBAAmB,CAAC1E,EAAC,CAAC;MACzC,IAAI,CAACiD,aAAa,CAAC6B,MAAM,CAACF,UAAU,CAAC;IACvC;IACA,IAAI,CAACrB,eAAe,GAAG,IAAIC,GAAG,CAAC,CAAC,GAAG,IAAI,CAACP,aAAa,CAACwB,IAAI,CAAC,CAAC,CAAC,CAAC;EAChE;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEnE,SAASA,CAACP,MAAc,EAAEL,IAAY,EAAEa,UAA0B,EAAQ;IACxE,IAAM;MAAEvB;IAAG,CAAC,GAAG,IAAI;IACnB,IAAM+F,WAAwB,GAAGpG,UAAU,CAACqG,UAAU,CAACtF,IAAI,EAAE,MAAM,CAAC;IAEpE,IAAMuF,UAAU,GAAG,IAAI,CAAC/D,UAAU,CAACgE,wBAAwB,CACzDnF,MAAM,EACNgF,WAAW,EACXpG,UAAU,CAACwG,mBAAmB,CAACpF,MAAM,CAACwE,IAAI,EAAE,IAAI,CAACnF,QAAQ,CAAC,EAC1D,IAAI,CAACF,KAAK,EACVqB,UACF,CAAC;IAED,IAAI,CAAC0C,aAAa,CAACzE,GAAG,CAACuB,MAAM,CAACwE,IAAI,EAAEU,UAAU,CAAC;IAE/C,IAAI,CAACzC,IAAI,GAAG,CAAC,GAAG,IAAI,CAACS,aAAa,CAACmC,MAAM,CAAC,CAAC,CAAC;IAE5C,IAAIrF,MAAM,CAACsF,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAACC,WAAW,EAAE;MAC5D,IAAI,CAAC9C,MAAM,CAAC+C,OAAO,GAAG,OAAO;IAC/B,CAAC,MAAM,IAAI1F,MAAM,CAACsF,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAACG,GAAG,EAAE;MAC3D,IAAI,CAAChD,MAAM,CAACiD,YAAY,GAAGhH,UAAU,CAACiH,eAAe,CAAC,IAAI,CAACxG,QAAQ,CAAC;IACtE;;IAEA;IACA;IACA;IACA,IAAI,CAACsD,MAAM,CAACmD,UAAU,GACpB,IAAI,CAACrD,IAAI,CAAClD,MAAM,GAAG,CAAC,IAAIS,MAAM,CAACsF,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAACG,GAAG,GACpEnF,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAIhB,SAAS,GACvB,KAAK;IAEX,IAAIQ,MAAM,CAAC+F,QAAQ,IAAI,IAAI,EAAE;MAC3B,IAAM;QAAEA;MAAS,CAAC,GAAG/F,MAAM;MAC3B,IAAM;QAAE+C;MAAQ,CAAC,GAAGgD,QAAQ;MAC5B,KAAK,IAAI9F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8C,OAAO,CAACxD,MAAM,EAAEU,CAAC,IAAI,CAAC,EAAE;QAC1C,IAAI,CAACoD,eAAe,CAAC5E,GAAG,CAACsE,OAAO,CAAC9C,CAAC,CAAC,CAACuE,IAAI,EAAEzB,OAAO,CAAC9C,CAAC,CAAC,CAAC;MACvD;MAEA,IAAI,CAACmD,SAAS,CAACmB,IAAI,CAACwB,QAAQ,CAAC;IAC/B;IAEA,IAAI,CAACC,mBAAmB,CAAC,CAAC;EAC5B;;EAEA;EACA;EAgBAvF,SAASA,CAACwF,QAAqC,EAAQ;IACrD,KAAK,CAACxF,SAAS,CAACwF,QAAQ,CAAC;IAEzB,IAAI,IAAI,CAACC,SAAS,CAAC3G,MAAM,KAAK,CAAC,EAAE;MAC/B;MACA,IAAI,CAACqE,aAAa,CAAC,CAAC;MACpB,IAAI,CAACuC,eAAe,CAAC,CAAC;IACxB;EACF;EAEAC,WAAWA,CAACH,QAAqC,EAAQ;IACvD,KAAK,CAACG,WAAW,CAACH,QAAQ,CAAC;IAE3B,IAAI,IAAI,CAACC,SAAS,CAAC3G,MAAM,KAAK,CAAC,EAAE;MAC/B,IAAI,CAAC8G,iBAAiB,CAAC,CAAC;IAC1B;EACF;EAEAF,eAAeA,CAAA,EAAS;IACtB,IAAI,CAAC,IAAI,CAAC5C,WAAW,EAAE;MACrB1E,GAAG,CAACyH,KAAK,CAAC,sDAAsD,CAAC;MACjE;IACF;IAEA,IAAI,CAACpH,MAAM,CAACuB,SAAS,CACnB,IAAI,CAAC8F,sBAAsB,GACvB,IAAI,CAACtH,EAAE,CAACsG,IAAI,CAACiB,iBAAiB,CAACC,OAAO,GACtC,IAAI,CAACxH,EAAE,CAACsG,IAAI,CAACiB,iBAAiB,CAACE,OACrC,CAAC;IAED,IAAI,IAAI,CAACxH,MAAM,CAACyH,MAAM,CAACpH,MAAM,GAAG,CAAC,EAAE;MACjCV,GAAG,CAAC+H,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC1H,MAAM,CAACyH,MAAM,CAAC;MACjD,IAAI,CAACE,SAAS,CAAC,IAAI,CAAC3H,MAAM,CAACyH,MAAM,CAAC;IACpC;EACF;EAEAN,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACnH,MAAM,CAACkH,WAAW,CAAC,CAAC;EAC3B;EAEAtC,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAE7E;IAAG,CAAC,GAAG,IAAI;IACnB,IAAI,CAACC,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACC,aAAa,EAC5B,IAAI,CAACjF,mBACP,CAAC;IACD,IAAI,CAAC7C,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACE,kBAAkB,EACjC,IAAI,CAAC9E,uBACP,CAAC;IACD,IAAI,CAACjD,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACG,gBAAgB,EAC/B,IAAI,CAACjF,wBACP,CAAC;IACD,IAAI,CAAC/C,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACI,eAAe,EAC9B,IAAI,CAACjF,uBACP,CAAC;IACD,IAAI,CAAChD,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACK,uBAAuB,EACtC,IAAI,CAAChF,qBACP,CAAC;IACD,IAAI,CAAClD,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACM,wBAAwB,EACvC,IAAI,CAAChF,sBACP,CAAC;IACD,IAAI,CAACnD,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACO,sBAAsB,EACrC,IAAI,CAAChF,oBACP,CAAC;IACD,IAAI,CAACpD,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACQ,sBAAsB,EACrC,IAAI,CAAChF,sBACP,CAAC;IACD,IAAI,CAACrD,MAAM,CAAC4H,gBAAgB,CAC1B7H,EAAE,CAACuI,MAAM,CAACC,oBAAoB,EAC9B,IAAI,CAACjF,mBACP,CAAC;EACH;EAEA0B,mBAAmBA,CAAA,EAAS;IAC1B,IAAM;MAAEjF;IAAG,CAAC,GAAG,IAAI;IACnB,IAAI,CAACC,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACC,aAAa,EAC5B,IAAI,CAACjF,mBACP,CAAC;IACD,IAAI,CAAC7C,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACE,kBAAkB,EACjC,IAAI,CAAC9E,uBACP,CAAC;IACD,IAAI,CAACjD,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACG,gBAAgB,EAC/B,IAAI,CAACjF,wBACP,CAAC;IACD,IAAI,CAAC/C,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACI,eAAe,EAC9B,IAAI,CAACjF,uBACP,CAAC;IACD,IAAI,CAAChD,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACK,uBAAuB,EACtC,IAAI,CAAChF,qBACP,CAAC;IACD,IAAI,CAAClD,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACM,wBAAwB,EACvC,IAAI,CAAChF,sBACP,CAAC;IACD,IAAI,CAACnD,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACO,sBAAsB,EACrC,IAAI,CAAChF,oBACP,CAAC;IACD,IAAI,CAACpD,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACsG,IAAI,CAACwB,MAAM,CAACQ,sBAAsB,EACrC,IAAI,CAAChF,sBACP,CAAC;IACD,IAAI,CAACrD,MAAM,CAACwI,mBAAmB,CAC7BzI,EAAE,CAACuI,MAAM,CAACC,oBAAoB,EAC9B,IAAI,CAACjF,mBACP,CAAC;EACH;;EAqBA;;EASA;AACF;AACA;;EAWE;AACF;AACA;;EAYEJ,qBAAqBA,CAACuF,KAAiB,EAAQ;IAC7C9I,GAAG,CAACyH,KAAK,CAAC,oBAAoB,EAAEqB,KAAK,CAAC;IAEtC,IAAI,CAACC,mBAAmB,CAACD,KAAK,CAACE,MAAM,CAAC;EACxC;EAEAxF,sBAAsBA,CAACsF,KAAiB,EAAQ;IAC9C9I,GAAG,CAACyH,KAAK,CAAC,qBAAqB,EAAEqB,KAAK,CAAC;IAEvC,IAAI,CAACG,oBAAoB,CAACH,KAAK,CAACE,MAAM,CAAC;EACzC;EAEAvF,oBAAoBA,CAACqF,KAAiB,EAAQ;IAC5C9I,GAAG,CAAC+H,KAAK,CAAC,mBAAmB,EAAEe,KAAK,CAAC;IAErC,IAAI,CAACI,kBAAkB,CAACJ,KAAK,CAACE,MAAM,CAAC;EACvC;EAEAtF,sBAAsBA,CAACoF,KAAiB,EAAQ;IAC9C9I,GAAG,CAACmJ,IAAI,CAAC,mBAAmB,EAAEL,KAAK,CAAC;IAEpC,IAAI,CAACM,oBAAoB,CAACN,KAAK,CAACE,MAAM,CAAC;EACzC;EAEA9F,mBAAmBA,CAAC4F,KAAiB,EAAQ;IAC3C,IAAM;MAAEE,MAAM,EAAEK;IAAkB,CAAC,GAAGP,KAAK;IAC3C,IAAM;MAAE3H,MAAM,EAAEmI;IAAY,CAAC,GAAGD,iBAAiB;IAEjDrJ,GAAG,CAACuJ,MAAM,CAAC,qBAAqB,EAAED,WAAW,CAAC;IAE9C,KAAK,IAAIlI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkI,WAAW,CAAC5I,MAAM,EAAEU,CAAC,IAAI,CAAC,EAAE;MAC9C,IAAMD,MAAM,GAAGmI,WAAW,CAAClI,CAAC,CAAC;MAE7BpB,GAAG,CAACuJ,MAAM,CAAC,qCAAqC,EAAEpI,MAAM,CAACwE,IAAI,CAAC;MAE9D,IAAM;QAAE6D;MAAQ,CAAC,GAAGrI,MAAM;MAC1B,KAAK,IAAIsE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+D,OAAO,CAAC9I,MAAM,EAAE+E,CAAC,IAAI,CAAC,EAAE;QAC1C,IAAM1C,MAAM,GAAGyG,OAAO,CAAC/D,CAAC,CAAC;QACzB,IAAM;UAAE3D,UAAU;UAAE2H;QAAK,CAAC,GAAG1G,MAAM;QACnC,IAAM2G,eAAe,GAAG,IAAI,CAACC,kBAAkB,CAC7C7H,UAAU,EACV,IAAI,CAACC,SACP,CAAC;QACD,IAAM6H,SAAS,GAAGP,iBAAiB,CAACQ,QAAQ,CAC1C1I,MAAM,EACNsI,IAAI,EACJC,eACF,CAAC;QACD,IAAI,CAACI,qBAAqB,CAAC3I,MAAM,EAAEsI,IAAI,EAAEG,SAAS,CAAC;MACrD;MAEA,IAAI,CAACjF,eAAe,CAACuB,MAAM,CAAC/E,MAAM,CAACwE,IAAI,CAAC;MAExC,IAAI,CAACoE,WAAW,CAAC5I,MAAM,CAAC;IAC1B;IACA,IAAI,IAAI,CAACwD,eAAe,CAACqF,IAAI,KAAK,CAAC,EAAE;MACnC,IAAI,CAACC,gBAAgB,CAAC,CAAC;IACzB;IAEA,IAAM;MAAErG;IAAK,CAAC,GAAG,IAAI;IACrB,IAAI,CAACsG,UAAU,CAACtG,IAAI,CAAC;EACvB;EAEAD,mBAAmBA,CAACmF,KAAiB,EAAQ;IAC3C9I,GAAG,CAAC+H,KAAK,CAAC,gBAAgB,EAAEe,KAAK,CAAC;IAClC,IAAI,CAACd,SAAS,CAAC,IAAAmC,MAAA,CAAIrB,KAAK,CAACE,MAAM,EAAG,CAAC;EACrC;;EAEA;AACF;AACA;EACEoB,WAAWA,CAAA,EAAS;IAClB,IAAI,IAAI,CAAC/C,SAAS,CAAC3G,MAAM,GAAG,CAAC,EAAE;MAC7B,IAAI,CAAC8G,iBAAiB,CAAC,CAAC;MACxB,IAAI,CAACF,eAAe,CAAC,CAAC;IACxB;EACF;EAEA+C,YAAYA,CAACtI,SAAoB,EAAQ;IACvC,KAAK,CAACsI,YAAY,CAACtI,SAAS,CAAC;IAE7B,IAAI,CAACoF,mBAAmB,CAAC,CAAC;;IAE1B;IACA;IACA,IAAI,CAACiD,WAAW,CAAC,CAAC;EACpB;EAEAE,uBAAuBA,CAAC5C,sBAA+B,EAAQ;IAC7D,KAAK,CAAC4C,uBAAuB,CAAC5C,sBAAsB,CAAC;IAErD,IAAI,CAAC0C,WAAW,CAAC,CAAC;EACpB;EAEAhH,wBAAwBA,CAAC0F,KAAkB,EAAQ;IACjD9I,GAAG,CAACyH,KAAK,CAAC,qBAAqB,EAAEqB,KAAK,CAAC;IAEvC,IAAI,CAACpE,WAAW,GAAG,KAAK;IAExB,IAAI,IAAI,CAAC2C,SAAS,CAAC3G,MAAM,GAAG,CAAC,EAAE;MAC7B,IAAI,CAAC8G,iBAAiB,CAAC,CAAC;IAC1B;IAEA,IAAI,CAAC+C,cAAc,CAAC,CAAC;EACvB;EAEAlH,uBAAuBA,CAACyF,KAAkB,EAAQ;IAChD9I,GAAG,CAACyH,KAAK,CAAC,oBAAoB,EAAEqB,KAAK,CAAC;IAEtC,IAAI,CAACpE,WAAW,GAAG,IAAI;;IAEvB;IACA,IAAI,CAACK,aAAa,CAAC,CAAC;IAEpB,IAAI,CAACyF,aAAa,CAAC,CAAC;IAEpB,IAAI,IAAI,CAACnD,SAAS,CAAC3G,MAAM,GAAG,CAAC,EAAE;MAC7B,IAAI,CAAC4G,eAAe,CAAC,CAAC;IACxB;EACF;EAEAhE,uBAAuBA,CAACwF,KAAyB,EAAQ;IACvD,IAAM;MAAEE,MAAM,EAAE7H;IAAO,CAAC,GAAG2H,KAAK;IAChC9I,GAAG,CAACyH,KAAK,CAAC,yBAAyB,EAAEtG,MAAM,CAAC;IAE5C,IAAI,CAACH,aAAa,CAAC0E,IAAI,CAACvE,MAAM,CAAC;IAC/B,IAAI,CAACgE,gBAAgB,CAAC,CAAC;EACzB;EAEAsF,aAAaA,CAACC,IAAa,EAAQ;IACjC,KAAK,CAACD,aAAa,CAACC,IAAI,CAAC;IAEzB,IAAI,CAAC1F,mBAAmB,CAAC,CAAC;EAC5B;EAEAH,QAAQA,CAACS,KAAa,EAAQ;IAAA,IAAAqF,aAAA,EAAAC,MAAA;IAC5B,KAAK,CAAC/F,QAAQ,CAACS,KAAK,CAAC;;IAErB;IACA;IACA,IAAMuF,aAAa,IAAAF,aAAA,IAAAC,MAAA,GAAG,CAACtF,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,EAAEwF,KAAK,CAAC,OAAO,CAAC,cAAAF,MAAA,uBAA5BA,MAAA,CAA8BlK,MAAM,cAAAiK,aAAA,cAAAA,aAAA,GAAI,CAAC;IAC/D,IAAMI,MAAM,GACVhL,UAAU,CAACiL,cAAc,CAACC,CAAC,GAC3BJ,aAAa,GAAG9K,UAAU,CAACmL,oBAAoB;IAEjD,IAAI,IAAI,CAACpH,MAAM,CAACiH,MAAM,EAAE;MACtB,IAAI,CAACjH,MAAM,CAACiH,MAAM,CAACE,CAAC,GAAGF,MAAM;IAC/B,CAAC,MAAM;MACL,IAAI,CAACjH,MAAM,CAACiH,MAAM,GAAG;QAAEE,CAAC,EAAEF;MAAO,CAAC;IACpC;IAEA,IAAI,OAAO,IAAI,CAACjH,MAAM,CAACwB,KAAK,KAAK,QAAQ,EAAE;MACzC,IAAI,CAACxB,MAAM,CAACwB,KAAK,GAAGA,KAAK;IAC3B,CAAC,MAAM;MACL,IAAI,CAACxB,MAAM,CAACwB,KAAK,GAAA6F,aAAA,KAAQ,IAAI,CAACrH,MAAM,CAACwB,KAAK,CAAE;MAC5C,IAAI,CAACxB,MAAM,CAACwB,KAAK,CAAC8F,IAAI,GAAG9F,KAAK;MAC9B,IAAI,CAACxB,MAAM,CAACwB,KAAK,CAAC+F,GAAG,GAAAF,aAAA,KAAQ,IAAI,CAACrH,MAAM,CAACwB,KAAK,CAAC+F,GAAG,CAAE;MACpD,IAAI,CAACvH,MAAM,CAACwB,KAAK,CAAC+F,GAAG,CAACJ,CAAC,GACrBlL,UAAU,CAACuL,qBAAqB,CAACL,CAAC,GAClCJ,aAAa,GAAG9K,UAAU,CAACmL,oBAAoB,GAAG,GAAG;IACzD;EACF;EAEAK,YAAYA,CAAA,EAAW;IAAA,IAAAC,qBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,oBAAA;IACrB,IAAI,CAAC,IAAI,CAACjB,IAAI,IAAI,CAAC,IAAI,CAACA,IAAI,CAACkB,KAAK,EAAE;MAClC,OAAO,CAAC;IACV;IAEA,OAAOC,IAAI,CAACC,GAAG,CACb,IAAI,CAACpB,IAAI,CAACkB,KAAK,KAAAJ,qBAAA,IAAAC,mBAAA,GACZ,IAAI,CAAC3H,MAAM,CAACiH,MAAM,cAAAU,mBAAA,uBAAlBA,mBAAA,CAAoBM,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,KAAAE,qBAAA,IAAAC,oBAAA,GAC3B,IAAI,CAAC7H,MAAM,CAACiH,MAAM,cAAAY,oBAAA,uBAAlBA,oBAAA,CAAoBK,CAAC,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,EAC9B,CACF,CAAC;EACH;EAEAO,aAAaA,CAAA,EAAW;IAAA,IAAAC,qBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,oBAAA;IACtB,IAAI,CAAC,IAAI,CAAC3B,IAAI,IAAI,CAAC,IAAI,CAACA,IAAI,CAAC4B,MAAM,EAAE;MACnC,OAAO,CAAC;IACV;IAEA,OAAOT,IAAI,CAACC,GAAG,CACb,IAAI,CAACpB,IAAI,CAAC4B,MAAM,KAAAJ,qBAAA,IAAAC,oBAAA,GACb,IAAI,CAACrI,MAAM,CAACiH,MAAM,cAAAoB,oBAAA,uBAAlBA,oBAAA,CAAoBlB,CAAC,cAAAiB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,KAAAE,qBAAA,IAAAC,oBAAA,GAC3B,IAAI,CAACvI,MAAM,CAACiH,MAAM,cAAAsB,oBAAA,uBAAlBA,oBAAA,CAAoBE,CAAC,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,EAC9B,CACF,CAAC;EACH;EAEApH,mBAAmBA,CAAA,EAAS;IAC1B,IAAMwH,SAAS,GAAG,IAAI,CAACjB,YAAY,CAAC,CAAC;IACrC,IAAMkB,UAAU,GAAG,IAAI,CAACR,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC3J,UAAU,CAACoK,gBAAgB,CAC9B,IAAI,CAAC5I,MAAM,EACX,IAAI,CAACzD,MAAM,EACX,IAAI,CAACC,KAAK,EACVe,KAAK,IAAI,IAAI,CAACsL,kBAAkB,CAACtL,KAAK,EAAE,IAAI,CAACU,SAAS,CAAC,EACvDyK,SAAS,EACTC,UACF,CAAC;EACH;;EAEA;AACF;AACA;EACEtF,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAAC,IAAI,CAACpF,SAAS,EAAE;MACnB;IACF;IAEA,IAAM6K,WAAW,GAAG,IAAI,CAACtK,UAAU,CAACuK,cAAc,CAChD,IAAI,CAACxM,MAAM,EACX,IAAI,CAAC0B,SACP,CAAC;IACD6K,WAAW,CAACE,OAAO,CAAC,CAACC,UAAU,EAAEC,kBAAkB,KAAK;MACtDhN,GAAG,CAACyH,KAAK,cAAA0C,MAAA,CACM6C,kBAAkB,GAC/B,IAAI,CAAClJ,MAAM,CAACkJ,kBAAkB,CAAC,EAC/BD,UACF,CAAC;MAED,IAAME,KAAK,GAAG,IAAI,CAACnJ,MAAM,CAACkJ,kBAAkB,CAAC;MAC7C,IAAIC,KAAK,IAAI,IAAI,EAAE;QACjBC,MAAM,CAACC,MAAM,CAACF,KAAK,EAAEF,UAAU,CAAC;MAClC,CAAC,MAAM;QACL/M,GAAG,CAACyH,KAAK,yBAAA0C,MAAA,CAAyB6C,kBAAkB,CAAE,CAAC;MACzD;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACElD,qBAAqBA,CACnB3I,MAAc,EACdiM,UAAsB,EACtBxD,SAAoB,EACd;IACN,IAAM;MAAEjE,IAAI;MAAEc;IAAU,CAAC,GAAGtF,MAAM;IAElC,IAAMkF,UAAU,GAAG,IAAI,CAAChC,aAAa,CAACgJ,GAAG,CAAC1H,IAAI,CAAC;IAC/C,IAAM2H,QAAQ,GAAG,IAAI,CAAChL,UAAU,CAACiL,iBAAiB,CAAC9G,SAAS,EAAE2G,UAAU,CAAC;IAEzE,IAAI/G,UAAU,EAAE;MACdzG,GAAG,CAACyG,UAAU,EAAEiH,QAAQ,EAAE1D,SAAS,CAAC;IACtC;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEG,WAAWA,CAAC5I,MAAc,EAAQ;IAChC,IAAM;MAAEf;IAAG,CAAC,GAAG,IAAI;IACnB,IAAM;MAAEuF,IAAI;MAAEc;IAAU,CAAC,GAAGtF,MAAM;IAClC,IAAMkF,UAAU,GAAG,IAAI,CAAChC,aAAa,CAACgJ,GAAG,CAAC1H,IAAI,CAAC;IAC/C,IAAIU,UAAU,IAAI,IAAI,EAAE;MACtB;IACF;IACA,IAAII,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAAC6G,SAAS,EAAE;MACnD,IAAM;QAAEC,IAAI;QAAEC;MAAM,CAAC,GAAGrH,UAAU;MAClC,IAAIoH,IAAI,IAAIC,KAAK,IAAID,IAAI,CAAC/M,MAAM,KAAKgN,KAAK,CAAChN,MAAM,EAAE;QACjD,IAAMkL,KAAK,GAAG,EAAE;QAChB,KAAK,IAAIxK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqM,IAAI,CAAC/M,MAAM,EAAEU,CAAC,IAAI,CAAC,EAAE;UACvCwK,KAAK,CAAClG,IAAI,CAACgI,KAAK,CAACtM,CAAC,CAAC,GAAGqM,IAAI,CAACrM,CAAC,CAAC,CAAC;QAChC;QACAiF,UAAU,CAACuF,KAAK,GAAGA,KAAK;MAC1B;IACF,CAAC,MAAM,IACLnF,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAACgH,IAAI,IAC1ClH,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAACiH,SAAS,IAC/CnH,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAACkH,GAAG,EACzC;MACA,IAAM;QAAEC,CAAC;QAAEL,IAAI,EAAJA,KAAI;QAAEC,KAAK,EAALA,MAAK;QAAEK,CAAC;QAAEC,IAAI;QAAEC;MAAM,CAAC,GAAG5H,UAAU;MACrD,IAAIoH,KAAI,IAAIC,MAAK,IAAID,KAAI,KAAKK,CAAC,EAAE;QAC/BzH,UAAU,CAAC6H,OAAO,GAAGnO,UAAU,CAACoO,kBAAkB,CAChDL,CAAC,EACDL,KAAI,EACJC,MAAK,EACL,IAAI,CAACpN,KACP,CAAC;MACH;MACA,IAAI0N,IAAI,IAAIC,KAAK,IAAID,IAAI,KAAKD,CAAC,EAAE;QAC/B1H,UAAU,CAAC+H,OAAO,GAAGrO,UAAU,CAACoO,kBAAkB,CAChDJ,CAAC,EACDC,IAAI,EACJC,KAAK,EACL,IAAI,CAAC3N,KACP,CAAC;MACH;IACF,CAAC,MAAM,IAAImG,SAAS,KAAKrG,EAAE,CAACsG,IAAI,CAACC,eAAe,CAAC0H,OAAO,EAAE;MACxD,IAAM;QAAEC,GAAG;QAAEC;MAAO,CAAC,GAAGlI,UAAU;MAClC,IAAIiI,GAAG,KAAK3N,SAAS,IAAI4N,MAAM,KAAK5N,SAAS,EAAE;QAC7C;QACA;QACA0F,UAAU,CAACkI,MAAM,GAAGD,GAAG;MACzB;IACF;EACF;EAEAE,OAAOA,CAAA,EAAoB;IACzB,OAAO,IAAI,CAAC5K,IAAI;EAClB;EAEA6K,SAASA,CAAA,EAAoB;IAC3B,OAAO,IAAI,CAAC3K,MAAM;EACpB;EAEA4K,kBAAkBA,CAAA,EAAoB;IACpC,OAAO,IAAIpK,GAAG,CAAC,IAAI,CAACE,eAAe,CAAC;EACtC;EAEAmK,gBAAgBA,CAAA,EAAY;IAC1B,OACE,IAAI,CAACpK,SAAS,CAAChD,IAAI,CAAC2F,QAAQ,IAAIA,QAAQ,CAAC0H,0BAA0B,CAAC,IACpE,IAAI;EAER;;EAEA;AACF;AACA;AACA;EACEC,SAASA,CAACC,SAAoB,EAAQ;IAAA,IAAAC,MAAA;IACpC,IAAI,IAAI,CAACxK,SAAS,CAAC7D,MAAM,KAAK,CAAC,EAAE;MAC/BV,GAAG,CAACgP,IAAI,CAAC,2CAA2C,CAAC;MACrD;IACF;IAEAhP,GAAG,CAACyH,KAAK,CAAC,WAAW,EAAEqH,SAAS,CAAC;IAAC,IAAAG,MAAA,YAAAA,OAAA,EAEiB;MACjD,IAAM/H,QAAQ,GAAG6H,MAAI,CAACxK,SAAS,CAACnD,CAAC,CAAC;MAClC,IAAM;QAAE8C;MAAQ,CAAC,GAAGgD,QAAQ;MAC5B;MACA,IAAMrB,IAAI,GAAG,IAAIjB,GAAG,CAAC,CAAC,GAAGkK,SAAS,CAACjJ,IAAI,CAAC,CAAC,EAAE,GAAGkJ,MAAI,CAACtK,UAAU,CAACoB,IAAI,CAAC,CAAC,CAAC,CAAC;MACtEA,IAAI,CAACiH,OAAO,CAACoC,GAAG,IAAI;QAClB,IAAM7M,KAAK,GAAGyM,SAAS,CAACzB,GAAG,CAAC6B,GAAG,CAAC;QAChC,IACEH,MAAI,CAACtK,UAAU,CAAC4I,GAAG,CAAC6B,GAAG,CAAC,KAAK7M,KAAK,IAClC6B,OAAO,CAAC3C,IAAI,CAAC4N,MAAM,IAAIA,MAAM,CAACxJ,IAAI,KAAKuJ,GAAG,CAAC,IAAI,IAAI,EACnD;UACAhI,QAAQ,CAACkI,iBAAiB,CAACF,GAAG,EAAE7M,KAAK,CAAC;QACxC;MACF,CAAC,CAAC;IACJ,CAAC;IAdD,KAAK,IAAIjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACmD,SAAS,CAAC7D,MAAM,EAAEU,CAAC,IAAI,CAAC;MAAA6N,MAAA;IAAA;IAgBjD,IAAI,CAACxK,UAAU,GAAG,IAAIH,GAAG,CAACwK,SAAS,CAAC;EACtC;EAEAO,SAASA,CAAChP,MAAc,EAAQ;IAC9B,IAAI,CAAC6E,KAAK,CAAC,CAAC;IAEZ,IAAI,CAAC7E,MAAM,GAAGA,MAAM;IAEpB,IAAI,CAACwE,QAAQ,CAAC,IAAI,CAACC,eAAe,CAAC,CAAC,CAAC;IACrC,IAAI,CAACC,aAAa,CAAC,CAAC;IACpB,IAAI,CAACC,mBAAmB,CAAC,CAAC;IAC1B,IAAI,CAACC,oBAAoB,CAAC,CAAC;IAC3B,IAAI,IAAI,CAACoC,SAAS,CAAC3G,MAAM,GAAG,CAAC,EAAE;MAC7B,IAAI,CAAC4G,eAAe,CAAC,CAAC;IACxB;EACF;EAEAgI,cAAcA,CAAC9O,QAAqC,EAAQ;IAC1D,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;AACF;AAACK,eAAA,CAhvBKX,gBAAgB,yBACS,EAAE;AAivBjC,eAAeA,gBAAgB"}
@@ -1,6 +1,7 @@
1
1
  import type { dh as DhType } from '@deephaven/jsapi-types';
2
2
  import type { Layout, PlotData } from 'plotly.js';
3
3
  import ChartModel from './ChartModel';
4
+ import { ChartTheme } from './ChartTheme';
4
5
  interface Series {
5
6
  x: PlotData['x'];
6
7
  y: PlotData['y'];
@@ -10,6 +11,8 @@ interface Series {
10
11
  /** Displays a basic random chart */
11
12
  declare class MockChartModel extends ChartModel {
12
13
  static smoothing: number;
14
+ static _theme: ChartTheme;
15
+ static get theme(): ChartTheme;
13
16
  static makeRandomSeries(offset: number, scale?: number, steps?: number): Series;
14
17
  static makeScatter(series: Series): Partial<PlotData>;
15
18
  static makeArea(series: Series): Partial<PlotData>;
@@ -1 +1 @@
1
- {"version":3,"file":"MockChartModel.d.ts","sourceRoot":"","sources":["../src/MockChartModel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,UAAU,MAAM,cAAc,CAAC;AAItC,UAAU,MAAM;IACd,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,EAAE,CAAC;CACb;AAED,oCAAoC;AACpC,cAAM,cAAe,SAAQ,UAAU;IACrC,MAAM,CAAC,SAAS,SAAO;IAEvB,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,KAAK,SAAM,GAAG,MAAM;IAuCvE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBlD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkBvD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8BvD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAelD,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;IAY5C,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAgBnD,EAAE,EAAE,MAAM,EACV,EACE,IAAsC,EACtC,MAA6C,EAC7C,YAAiB,GAClB;;;;KAAK;IASR,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE1B,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;IAI9B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAYjE,gBAAgB,IAAI,OAAO;IAI3B,SAAS,IAAI,IAAI;CAGlB;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"MockChartModel.d.ts","sourceRoot":"","sources":["../src/MockChartModel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAG7D,UAAU,MAAM;IACd,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,EAAE,CAAC;CACb;AAED,oCAAoC;AACpC,cAAM,cAAe,SAAQ,UAAU;IACrC,MAAM,CAAC,SAAS,SAAO;IAEvB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAE1B,MAAM,KAAK,KAAK,IAAI,UAAU,CAQ7B;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,KAAK,SAAM,GAAG,MAAM;IAuCvE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBlD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkBvD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8BvD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAelD,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;IAY5C,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAgBnD,EAAE,EAAE,MAAM,EACV,EACE,IAAsC,EACtC,MAA6C,EAC7C,YAAiB,GAClB;;;;KAAK;IASR,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE1B,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;IAI9B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAYjE,gBAAgB,IAAI,OAAO;IAI3B,SAAS,IAAI,IAAI;CAGlB;AAED,eAAe,cAAc,CAAC"}
@@ -4,10 +4,19 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
4
4
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
5
5
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
6
  import ChartModel from "./ChartModel.js";
7
- import ChartTheme from "./ChartTheme.js";
7
+ import { defaultChartTheme } from "./ChartTheme.js";
8
8
  import ChartUtils from "./ChartUtils.js";
9
9
  /** Displays a basic random chart */
10
10
  class MockChartModel extends ChartModel {
11
+ static get theme() {
12
+ /* eslint-disable no-underscore-dangle */
13
+ if (MockChartModel._theme == null) {
14
+ MockChartModel._theme = defaultChartTheme();
15
+ }
16
+ return MockChartModel._theme;
17
+ /* eslint-enable no-underscore-dangle */
18
+ }
19
+
11
20
  static makeRandomSeries(offset) {
12
21
  var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
13
22
  var steps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
@@ -41,7 +50,7 @@ class MockChartModel extends ChartModel {
41
50
  name: 'SCTR',
42
51
  x: series.x,
43
52
  y: series.y,
44
- type: 'scattergl',
53
+ type: 'scatter',
45
54
  mode: 'markers',
46
55
  hoverinfo: 'skip',
47
56
  marker: {
@@ -59,7 +68,7 @@ class MockChartModel extends ChartModel {
59
68
  fill: 'tozeroy',
60
69
  hoverinfo: 'all',
61
70
  line: {
62
- color: ChartTheme.area_color,
71
+ color: MockChartModel.theme.area_color,
63
72
  width: 3
64
73
  // area patten gets applied as hack in post render plot.ly callback + css
65
74
  }
@@ -72,14 +81,14 @@ class MockChartModel extends ChartModel {
72
81
  name: 'Trendline <br>R<sup>2</sup> = 0.91',
73
82
  x: series.x,
74
83
  y: series.l,
75
- type: 'scattergl',
84
+ type: 'scatter',
76
85
  mode: 'line',
77
86
  hoverinfo: 'skip',
78
87
  line: {
79
88
  width: 3,
80
89
  dash: 'dot',
81
90
  // trendlines should follow some sort of color convention + dots/dashed. Remember there can multiple
82
- color: ChartTheme.trend_color
91
+ color: MockChartModel.theme.trend_color
83
92
  // chroma(c.$green).brighten(1.2).hex()
84
93
  }
85
94
  };
@@ -102,15 +111,15 @@ class MockChartModel extends ChartModel {
102
111
  x: series.x.concat(series.x.slice().reverse()),
103
112
  // winding for x values, that slice just clones so reverse doesn't apply inplace
104
113
  y: errory,
105
- type: 'scattergl',
114
+ type: 'scatter',
106
115
  mode: 'line',
107
116
  hoverinfo: 'skip',
108
117
  fill: 'toself',
109
118
  // there's some ordering bug with scattergl where if the areas traces are ordered after the lines they don't render
110
- fillcolor: ChartTheme.error_band_fill_color,
119
+ fillcolor: MockChartModel.theme.error_band_fill_color,
111
120
  line: {
112
121
  width: 0,
113
- color: ChartTheme.error_band_line_color,
122
+ color: MockChartModel.theme.error_band_line_color,
114
123
  shape: 'spline'
115
124
  }
116
125
  };
@@ -120,11 +129,11 @@ class MockChartModel extends ChartModel {
120
129
  name: 'LINE',
121
130
  x: series.x,
122
131
  y: series.y,
123
- type: 'scattergl',
132
+ type: 'scatter',
124
133
  mode: 'line',
125
134
  hoverinfo: 'x+y+text+name',
126
135
  line: {
127
- color: ChartTheme.line_color,
136
+ color: MockChartModel.theme.line_color,
128
137
  width: 3
129
138
  }
130
139
  };
@@ -139,7 +148,7 @@ class MockChartModel extends ChartModel {
139
148
  return [areaPattern, trendLine, line, errorBand];
140
149
  }
141
150
  static makeDefaultLayout(dh) {
142
- var layout = new ChartUtils(dh).makeDefaultLayout(ChartTheme);
151
+ var layout = new ChartUtils(dh).makeDefaultLayout(MockChartModel.theme);
143
152
  layout.title = 'Chart';
144
153
  if (layout.xaxis) {
145
154
  layout.xaxis.title = 'Datestamp';
@@ -189,5 +198,6 @@ class MockChartModel extends ChartModel {
189
198
  }
190
199
  }
191
200
  _defineProperty(MockChartModel, "smoothing", 1.5);
201
+ _defineProperty(MockChartModel, "_theme", void 0);
192
202
  export default MockChartModel;
193
203
  //# sourceMappingURL=MockChartModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockChartModel.js","names":["ChartModel","ChartTheme","ChartUtils","MockChartModel","makeRandomSeries","offset","scale","arguments","length","undefined","steps","dates","values","smooth","linear","startDate","Date","i","date","getFullYear","getMonth","getDate","push","concat","v","Math","sin","cos","random","smoothing","round","x","y","s","l","makeScatter","series","name","type","mode","hoverinfo","marker","size","makeArea","fill","line","color","area_color","width","makeTrendline","dash","trend_color","makeErrorBand","erroryforward","errorybackward","value","errory","reverse","slice","fillcolor","error_band_fill_color","error_band_line_color","shape","makeLine","line_color","makeRandomData","series1","areaPattern","trendLine","series2","errorBand","makeDefaultLayout","dh","layout","title","xaxis","yaxis","constructor","data","filterFields","_defineProperty","getData","getLayout","getFilterColumnMap","map","Map","set","isFilterRequired","setFilter","fireUpdate"],"sources":["../src/MockChartModel.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport type { Datum, Layout, PlotData } from 'plotly.js';\nimport ChartModel from './ChartModel';\nimport ChartTheme from './ChartTheme';\nimport ChartUtils from './ChartUtils';\n\ninterface Series {\n x: PlotData['x'];\n y: PlotData['y'];\n s: number[];\n l: number[];\n}\n\n/** Displays a basic random chart */\nclass MockChartModel extends ChartModel {\n static smoothing = 1.5;\n\n static makeRandomSeries(offset: number, scale = 1, steps = 100): Series {\n const dates = [];\n const values = [];\n const smooth = [];\n const linear = [];\n const startDate = new Date();\n\n for (let i = 0; i < steps; i += 1) {\n const date = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate() + i - steps\n );\n dates.push(\n `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\n );\n let v =\n ((Math.sin((i / steps) * offset) * steps) / 3 +\n (Math.cos(i * 0.2) * steps) / 6 +\n (Math.sin(i * 0.5) * steps) / 10 +\n (Math.random() * steps) / 5 +\n i * MockChartModel.smoothing) *\n scale;\n v = Math.round(v * 100) / 100; // 2 decimals only\n // using steps acts as amplititude scaling based on value\n // large sine wave for course shape + small sine waves for bumpiness +\n // general randomness noise + index to be constantly up and to the right + smoothing factor\n values.push(v);\n linear.push(40 + i * MockChartModel.smoothing);\n smooth.push(\n (Math.sin((i / steps) * offset) * steps) / 3 +\n (Math.random() * steps) / 10 +\n i * MockChartModel.smoothing\n ); // push a smoother version of the same thing\n }\n\n return { x: dates, y: values, s: smooth, l: linear };\n }\n\n static makeScatter(series: Series): Partial<PlotData> {\n return {\n name: 'SCTR',\n x: series.x,\n y: series.y,\n type: 'scattergl',\n mode: 'markers',\n hoverinfo: 'skip',\n marker: {\n size: 5,\n },\n };\n }\n\n static makeArea(series: Series): Partial<PlotData> {\n return {\n name: 'AREA',\n x: series.x,\n y: series.s,\n type: 'scatter',\n mode: 'line' as PlotData['mode'],\n fill: 'tozeroy',\n hoverinfo: 'all',\n line: {\n color: ChartTheme.area_color,\n width: 3,\n // area patten gets applied as hack in post render plot.ly callback + css\n },\n };\n }\n\n static makeTrendline(series: Series): Partial<PlotData> {\n return {\n // we probably want to toss the line formula in legend I guess? either that or render it as text manually on plot\n name: 'Trendline <br>R<sup>2</sup> = 0.91',\n x: series.x,\n y: series.l,\n type: 'scattergl',\n mode: 'line' as PlotData['mode'],\n hoverinfo: 'skip',\n line: {\n width: 3,\n dash: 'dot', // trendlines should follow some sort of color convention + dots/dashed. Remember there can multiple\n color: ChartTheme.trend_color,\n // chroma(c.$green).brighten(1.2).hex()\n },\n };\n }\n\n static makeErrorBand(series: Series): Partial<PlotData> {\n // generate continouous error bands values and text\n const erroryforward = [];\n const errorybackward = [];\n for (let i = 0; i < series.y.length; i += 1) {\n const value = series.y[i] as number;\n erroryforward[i] = Math.round((value + 18) * 100) / 100;\n errorybackward[i] = Math.round((value - 18) * 100) / 100;\n }\n\n // makes a closed shape of points winding clockwise for y values\n const errory = erroryforward.concat(errorybackward.reverse());\n\n return {\n name: 'error',\n x: (series.x as Datum[]).concat((series.x as Datum[]).slice().reverse()), // winding for x values, that slice just clones so reverse doesn't apply inplace\n y: errory,\n type: 'scattergl',\n mode: 'line' as PlotData['mode'],\n hoverinfo: 'skip',\n fill: 'toself', // there's some ordering bug with scattergl where if the areas traces are ordered after the lines they don't render\n fillcolor: ChartTheme.error_band_fill_color,\n line: {\n width: 0,\n color: ChartTheme.error_band_line_color,\n shape: 'spline',\n },\n };\n }\n\n static makeLine(series: Series): Partial<PlotData> {\n return {\n name: 'LINE',\n x: series.x,\n y: series.y,\n type: 'scattergl',\n mode: 'line' as PlotData['mode'],\n hoverinfo: 'x+y+text+name' as PlotData['hoverinfo'],\n line: {\n color: ChartTheme.line_color,\n width: 3,\n },\n };\n }\n\n static makeRandomData(): Partial<PlotData>[] {\n const series1 = MockChartModel.makeRandomSeries(6);\n const areaPattern = MockChartModel.makeArea(series1);\n const trendLine = MockChartModel.makeTrendline(series1);\n\n const series2 = MockChartModel.makeRandomSeries(2);\n const line = MockChartModel.makeLine(series2);\n const errorBand = MockChartModel.makeErrorBand(series2);\n\n return [areaPattern, trendLine, line, errorBand];\n }\n\n static makeDefaultLayout(dh: DhType): Partial<Layout> {\n const layout = new ChartUtils(dh).makeDefaultLayout(ChartTheme);\n layout.title = 'Chart';\n\n if (layout.xaxis) {\n layout.xaxis.title = 'Datestamp';\n }\n\n if (layout.yaxis) {\n layout.yaxis.title = 'Price';\n }\n\n return layout;\n }\n\n constructor(\n dh: DhType,\n {\n data = MockChartModel.makeRandomData(),\n layout = MockChartModel.makeDefaultLayout(dh),\n filterFields = [],\n } = {}\n ) {\n super(dh);\n\n this.data = data;\n this.layout = layout;\n this.filterFields = filterFields;\n }\n\n data: Partial<PlotData>[];\n\n filterFields: string[];\n\n layout: Partial<Layout>;\n\n getData(): Partial<PlotData>[] {\n return this.data;\n }\n\n getLayout(): Partial<Layout> {\n return this.layout;\n }\n\n getFilterColumnMap(): Map<string, { name: string; type: string }> {\n const map = new Map();\n\n for (let i = 0; i < this.filterFields.length; i += 1) {\n const name = this.filterFields[i];\n const type = 'java.lang.String';\n map.set(name, { name, type });\n }\n\n return map;\n }\n\n isFilterRequired(): boolean {\n return this.filterFields.length > 0;\n }\n\n setFilter(): void {\n this.fireUpdate(this.data);\n }\n}\n\nexport default MockChartModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MockChartModel.js","names":["ChartModel","defaultChartTheme","ChartUtils","MockChartModel","theme","_theme","makeRandomSeries","offset","scale","arguments","length","undefined","steps","dates","values","smooth","linear","startDate","Date","i","date","getFullYear","getMonth","getDate","push","concat","v","Math","sin","cos","random","smoothing","round","x","y","s","l","makeScatter","series","name","type","mode","hoverinfo","marker","size","makeArea","fill","line","color","area_color","width","makeTrendline","dash","trend_color","makeErrorBand","erroryforward","errorybackward","value","errory","reverse","slice","fillcolor","error_band_fill_color","error_band_line_color","shape","makeLine","line_color","makeRandomData","series1","areaPattern","trendLine","series2","errorBand","makeDefaultLayout","dh","layout","title","xaxis","yaxis","constructor","data","filterFields","_defineProperty","getData","getLayout","getFilterColumnMap","map","Map","set","isFilterRequired","setFilter","fireUpdate"],"sources":["../src/MockChartModel.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport type { Datum, Layout, PlotData } from 'plotly.js';\nimport ChartModel from './ChartModel';\nimport { ChartTheme, defaultChartTheme } from './ChartTheme';\nimport ChartUtils from './ChartUtils';\n\ninterface Series {\n x: PlotData['x'];\n y: PlotData['y'];\n s: number[];\n l: number[];\n}\n\n/** Displays a basic random chart */\nclass MockChartModel extends ChartModel {\n static smoothing = 1.5;\n\n static _theme: ChartTheme;\n\n static get theme(): ChartTheme {\n /* eslint-disable no-underscore-dangle */\n if (MockChartModel._theme == null) {\n MockChartModel._theme = defaultChartTheme();\n }\n\n return MockChartModel._theme;\n /* eslint-enable no-underscore-dangle */\n }\n\n static makeRandomSeries(offset: number, scale = 1, steps = 100): Series {\n const dates = [];\n const values = [];\n const smooth = [];\n const linear = [];\n const startDate = new Date();\n\n for (let i = 0; i < steps; i += 1) {\n const date = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate() + i - steps\n );\n dates.push(\n `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\n );\n let v =\n ((Math.sin((i / steps) * offset) * steps) / 3 +\n (Math.cos(i * 0.2) * steps) / 6 +\n (Math.sin(i * 0.5) * steps) / 10 +\n (Math.random() * steps) / 5 +\n i * MockChartModel.smoothing) *\n scale;\n v = Math.round(v * 100) / 100; // 2 decimals only\n // using steps acts as amplititude scaling based on value\n // large sine wave for course shape + small sine waves for bumpiness +\n // general randomness noise + index to be constantly up and to the right + smoothing factor\n values.push(v);\n linear.push(40 + i * MockChartModel.smoothing);\n smooth.push(\n (Math.sin((i / steps) * offset) * steps) / 3 +\n (Math.random() * steps) / 10 +\n i * MockChartModel.smoothing\n ); // push a smoother version of the same thing\n }\n\n return { x: dates, y: values, s: smooth, l: linear };\n }\n\n static makeScatter(series: Series): Partial<PlotData> {\n return {\n name: 'SCTR',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'markers',\n hoverinfo: 'skip',\n marker: {\n size: 5,\n },\n };\n }\n\n static makeArea(series: Series): Partial<PlotData> {\n return {\n name: 'AREA',\n x: series.x,\n y: series.s,\n type: 'scatter',\n mode: 'line' as PlotData['mode'],\n fill: 'tozeroy',\n hoverinfo: 'all',\n line: {\n color: MockChartModel.theme.area_color,\n width: 3,\n // area patten gets applied as hack in post render plot.ly callback + css\n },\n };\n }\n\n static makeTrendline(series: Series): Partial<PlotData> {\n return {\n // we probably want to toss the line formula in legend I guess? either that or render it as text manually on plot\n name: 'Trendline <br>R<sup>2</sup> = 0.91',\n x: series.x,\n y: series.l,\n type: 'scatter',\n mode: 'line' as PlotData['mode'],\n hoverinfo: 'skip',\n line: {\n width: 3,\n dash: 'dot', // trendlines should follow some sort of color convention + dots/dashed. Remember there can multiple\n color: MockChartModel.theme.trend_color,\n // chroma(c.$green).brighten(1.2).hex()\n },\n };\n }\n\n static makeErrorBand(series: Series): Partial<PlotData> {\n // generate continouous error bands values and text\n const erroryforward = [];\n const errorybackward = [];\n for (let i = 0; i < series.y.length; i += 1) {\n const value = series.y[i] as number;\n erroryforward[i] = Math.round((value + 18) * 100) / 100;\n errorybackward[i] = Math.round((value - 18) * 100) / 100;\n }\n\n // makes a closed shape of points winding clockwise for y values\n const errory = erroryforward.concat(errorybackward.reverse());\n\n return {\n name: 'error',\n x: (series.x as Datum[]).concat((series.x as Datum[]).slice().reverse()), // winding for x values, that slice just clones so reverse doesn't apply inplace\n y: errory,\n type: 'scatter',\n mode: 'line' as PlotData['mode'],\n hoverinfo: 'skip',\n fill: 'toself', // there's some ordering bug with scattergl where if the areas traces are ordered after the lines they don't render\n fillcolor: MockChartModel.theme.error_band_fill_color,\n line: {\n width: 0,\n color: MockChartModel.theme.error_band_line_color,\n shape: 'spline',\n },\n };\n }\n\n static makeLine(series: Series): Partial<PlotData> {\n return {\n name: 'LINE',\n x: series.x,\n y: series.y,\n type: 'scatter',\n mode: 'line' as PlotData['mode'],\n hoverinfo: 'x+y+text+name' as PlotData['hoverinfo'],\n line: {\n color: MockChartModel.theme.line_color,\n width: 3,\n },\n };\n }\n\n static makeRandomData(): Partial<PlotData>[] {\n const series1 = MockChartModel.makeRandomSeries(6);\n const areaPattern = MockChartModel.makeArea(series1);\n const trendLine = MockChartModel.makeTrendline(series1);\n\n const series2 = MockChartModel.makeRandomSeries(2);\n const line = MockChartModel.makeLine(series2);\n const errorBand = MockChartModel.makeErrorBand(series2);\n\n return [areaPattern, trendLine, line, errorBand];\n }\n\n static makeDefaultLayout(dh: DhType): Partial<Layout> {\n const layout = new ChartUtils(dh).makeDefaultLayout(MockChartModel.theme);\n layout.title = 'Chart';\n\n if (layout.xaxis) {\n layout.xaxis.title = 'Datestamp';\n }\n\n if (layout.yaxis) {\n layout.yaxis.title = 'Price';\n }\n\n return layout;\n }\n\n constructor(\n dh: DhType,\n {\n data = MockChartModel.makeRandomData(),\n layout = MockChartModel.makeDefaultLayout(dh),\n filterFields = [],\n } = {}\n ) {\n super(dh);\n\n this.data = data;\n this.layout = layout;\n this.filterFields = filterFields;\n }\n\n data: Partial<PlotData>[];\n\n filterFields: string[];\n\n layout: Partial<Layout>;\n\n getData(): Partial<PlotData>[] {\n return this.data;\n }\n\n getLayout(): Partial<Layout> {\n return this.layout;\n }\n\n getFilterColumnMap(): Map<string, { name: string; type: string }> {\n const map = new Map();\n\n for (let i = 0; i < this.filterFields.length; i += 1) {\n const name = this.filterFields[i];\n const type = 'java.lang.String';\n map.set(name, { name, type });\n }\n\n return map;\n }\n\n isFilterRequired(): boolean {\n return this.filterFields.length > 0;\n }\n\n setFilter(): void {\n this.fireUpdate(this.data);\n }\n}\n\nexport default MockChartModel;\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,9 +3,12 @@ export { default as ChartModelFactory } from './ChartModelFactory';
3
3
  export { default as ChartModel } from './ChartModel';
4
4
  export { default as ChartUtils } from './ChartUtils';
5
5
  export * from './ChartUtils';
6
+ export * from './DownsamplingError';
6
7
  export { default as FigureChartModel } from './FigureChartModel';
7
8
  export { default as MockChartModel } from './MockChartModel';
8
9
  export { default as Plot } from './plotly/Plot';
9
- export { default as ChartTheme } from './ChartTheme';
10
+ export * from './ChartTheme';
11
+ export * from './ChartThemeProvider';
10
12
  export { default as isFigureChartModel } from './isFigureChartModel';
13
+ export * from './useChartTheme';
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -3,9 +3,12 @@ export { default as ChartModelFactory } from "./ChartModelFactory.js";
3
3
  export { default as ChartModel } from "./ChartModel.js";
4
4
  export { default as ChartUtils } from "./ChartUtils.js";
5
5
  export * from "./ChartUtils.js";
6
+ export * from "./DownsamplingError.js";
6
7
  export { default as FigureChartModel } from "./FigureChartModel.js";
7
8
  export { default as MockChartModel } from "./MockChartModel.js";
8
9
  export { default as Plot } from "./plotly/Plot.js";
9
- export { default as ChartTheme } from "./ChartTheme.js";
10
+ export * from "./ChartTheme.js";
11
+ export * from "./ChartThemeProvider.js";
10
12
  export { default as isFigureChartModel } from "./isFigureChartModel.js";
13
+ export * from "./useChartTheme.js";
11
14
  //# sourceMappingURL=index.js.map