@deephaven/chart 0.6.1-markdownnotebooks.7 → 0.6.3-bard.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Chart.d.ts +8 -0
- package/dist/Chart.d.ts.map +1 -1
- package/dist/Chart.js +18 -4
- package/dist/Chart.js.map +1 -1
- package/dist/ChartUtils.d.ts +1 -1
- package/dist/ChartUtils.d.ts.map +1 -1
- package/dist/ChartUtils.js +4 -1
- package/dist/ChartUtils.js.map +1 -1
- package/dist/plotly/Plot.js +1 -1
- package/dist/plotly/Plot.js.map +1 -1
- package/dist/plotly/Plotly.d.ts +1 -1
- package/dist/plotly/Plotly.js +2 -3
- package/dist/plotly/Plotly.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
package/dist/Chart.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export class Chart extends React.Component<any, any, any> {
|
|
|
22
22
|
plotWrapper: React.RefObject<any>;
|
|
23
23
|
columnFormats: any[];
|
|
24
24
|
dateTimeFormatterOptions: {};
|
|
25
|
+
decimalFormatOptions: {};
|
|
26
|
+
integerFormatOptions: {};
|
|
25
27
|
rect: any;
|
|
26
28
|
ranges: object | null;
|
|
27
29
|
isSubscribed: boolean;
|
|
@@ -68,6 +70,12 @@ export namespace Chart {
|
|
|
68
70
|
showTimeZone: PropTypes.Validator<boolean>;
|
|
69
71
|
showTSeparator: PropTypes.Validator<boolean>;
|
|
70
72
|
formatter: PropTypes.Validator<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
73
|
+
decimalFormatOptions: PropTypes.Requireable<PropTypes.InferProps<{
|
|
74
|
+
defaultFormatString: PropTypes.Requireable<string>;
|
|
75
|
+
}>>;
|
|
76
|
+
integerFormatOptions: PropTypes.Requireable<PropTypes.InferProps<{
|
|
77
|
+
defaultFormatString: PropTypes.Requireable<string>;
|
|
78
|
+
}>>;
|
|
71
79
|
}>>;
|
|
72
80
|
const isActive: PropTypes.Requireable<boolean>;
|
|
73
81
|
const onDisconnect: PropTypes.Requireable<(...args: any[]) => any>;
|
package/dist/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.jsx"],"names":[],"mappings":"AAiBA;IACE;;;OAGG;IACH;;;;;;MAWC;IAED,4FAQC;IAED,
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../src/Chart.jsx"],"names":[],"mappings":"AAiBA;IACE;;;OAGG;IACH;;;;;;MAWC;IAED,4FAQC;IAED,wBAgCC;IA8HD,wBAIC;IAED,8BAcC;IAED,mCAsEC;IAED,oCAcC;IAED,mCAWC;IAED,0DAYC;IA3RC,2BAA6B;IAC7B,kCAAoC;IACpC,qBAAuB;IACvB,6BAAkC;IAClC,yBAA8B;IAC9B,yBAA8B;IAC9B,UAAgB;IAChB,sBAAkB;IAClB,sBAAyB;IACzB,uBAA0B;IA8C5B;;;;;;;;;;;;;;MAmDE;IAEF,mBAEC;IAED,iBAUC;IAED,kBAYC;IAED,oBAQC;IA2ID;;;;;;;OAOG;IACH,8BAFW,OAAO,QAwBjB;IAED,sBAGC;IAED,6CAmBC;IAED,wBAUC;IAED,yBAcC;CAuCF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmCe,uCAAQ;;QACT,sCAAQ;;QACX,mCAAQ;;QACT,kCAAQ;;QACE,4CAAQ"}
|
package/dist/Chart.js
CHANGED
|
@@ -88,6 +88,8 @@ export class Chart extends Component {
|
|
|
88
88
|
this.plotWrapper = /*#__PURE__*/React.createRef();
|
|
89
89
|
this.columnFormats = [];
|
|
90
90
|
this.dateTimeFormatterOptions = {};
|
|
91
|
+
this.decimalFormatOptions = {};
|
|
92
|
+
this.integerFormatOptions = {};
|
|
91
93
|
this.rect = null;
|
|
92
94
|
this.ranges = null;
|
|
93
95
|
this.isSubscribed = false;
|
|
@@ -424,16 +426,22 @@ export class Chart extends Component {
|
|
|
424
426
|
updateFormatterSettings(settings) {
|
|
425
427
|
var columnFormats = FormatterUtils.getColumnFormats(settings);
|
|
426
428
|
var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);
|
|
429
|
+
var {
|
|
430
|
+
decimalFormatOptions = {},
|
|
431
|
+
integerFormatOptions = {}
|
|
432
|
+
} = settings;
|
|
427
433
|
|
|
428
|
-
if (!deepEqual(this.columnFormats, columnFormats) || !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions)) {
|
|
434
|
+
if (!deepEqual(this.columnFormats, columnFormats) || !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions) || !deepEqual(this.decimalFormatOptions, decimalFormatOptions) || !deepEqual(this.integerFormatOptions, integerFormatOptions)) {
|
|
429
435
|
this.columnFormats = FormatterUtils.getColumnFormats(settings);
|
|
430
|
-
this.dateTimeFormatterOptions =
|
|
436
|
+
this.dateTimeFormatterOptions = dateTimeFormatterOptions;
|
|
437
|
+
this.decimalFormatOptions = decimalFormatOptions;
|
|
438
|
+
this.integerFormatOptions = integerFormatOptions;
|
|
431
439
|
this.updateFormatter();
|
|
432
440
|
}
|
|
433
441
|
}
|
|
434
442
|
|
|
435
443
|
updateFormatter() {
|
|
436
|
-
var formatter = new Formatter(this.columnFormats, this.dateTimeFormatterOptions);
|
|
444
|
+
var formatter = new Formatter(this.columnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions);
|
|
437
445
|
var {
|
|
438
446
|
model
|
|
439
447
|
} = this.props;
|
|
@@ -496,7 +504,13 @@ Chart.propTypes = {
|
|
|
496
504
|
defaultDateTimeFormat: PropTypes.string.isRequired,
|
|
497
505
|
showTimeZone: PropTypes.bool.isRequired,
|
|
498
506
|
showTSeparator: PropTypes.bool.isRequired,
|
|
499
|
-
formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired
|
|
507
|
+
formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
|
|
508
|
+
decimalFormatOptions: PropTypes.shape({
|
|
509
|
+
defaultFormatString: PropTypes.string
|
|
510
|
+
}),
|
|
511
|
+
integerFormatOptions: PropTypes.shape({
|
|
512
|
+
defaultFormatString: PropTypes.string
|
|
513
|
+
})
|
|
500
514
|
}),
|
|
501
515
|
isActive: PropTypes.bool,
|
|
502
516
|
onDisconnect: PropTypes.func,
|
package/dist/Chart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Chart.jsx"],"names":["React","Component","PropTypes","deepEqual","memoize","vsLoading","dhGraphLineDown","dhWarningFilled","Formatter","FormatterUtils","DateUtils","Log","Plotly","Plot","ChartModel","ChartUtils","ChartConstants","log","module","Chart","convertIcon","faIcon","width","path","icon","ascent","descent","transform","downsampleButtonTitle","isDownsampleInProgress","isDownsamplingDisabled","constructor","props","downsamplingError","isDownsampleFinished","customButtons","push","name","click","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","rect","ranges","isSubscribed","isLoadedFired","state","data","layout","datarevision","revision","componentDidMount","updateDimensions","updateModelDimensions","initData","initFormatter","isActive","subscribe","componentDidUpdate","prevProps","settings","updateFormatterSettings","unsubscribe","componentWillUnmount","getPlotRect","current","getBoundingClientRect","model","setState","getData","getLayout","height","debug2","setDownsamplingDisabled","event","type","detail","EVENT_UPDATED","currentSeries","onUpdate","isLoading","EVENT_LOADFINISHED","EVENT_DISCONNECT","onDisconnect","EVENT_RECONNECT","onReconnect","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLENEEDED","EVENT_DOWNSAMPLEFAILED","message","onError","Error","debug","figure","getLayoutRanges","isRangesChanged","changes","Object","keys","includes","onSettingsChanged","hiddenSeries","hiddenlabels","seriesIndexes","reduce","acc","visible","force","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","formatter","setFormatter","relayout","el","autosize","catch","e","render","config","getCachedConfig","isPlotShown","propTypes","instanceOf","isRequired","shape","timeZone","string","defaultDateTimeFormat","showTimeZone","bool","showTSeparator","arrayOf","func","defaultProps","FULL_DATE_FORMAT"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { vsLoading, dhGraphLineDown, dhWarningFilled } from '@deephaven/icons';\nimport { Formatter, FormatterUtils, DateUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport Plotly from './plotly/Plotly';\nimport Plot from './plotly/Plot';\n\nimport ChartModel from './ChartModel';\nimport ChartUtils from './ChartUtils';\nimport ChartConstants from './Chart.module.scss';\nimport './Chart.scss';\n\nconst log = Log.module('Chart');\n\nexport class Chart extends Component {\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param {FontAwesome.IconDefinition} faIcon The icon to convert\n */\n static convertIcon(faIcon) {\n const [width, , , , path] = faIcon.icon;\n // By default the icons are flipped upside down, so we need to add our own transform\n // https://github.com/plotly/plotly.js/issues/1335\n return {\n width,\n path,\n ascent: width,\n descent: 0,\n transform: `matrix(1, 0, 0, 1, 0, 0)`,\n };\n }\n\n static downsampleButtonTitle(isDownsampleInProgress, isDownsamplingDisabled) {\n if (isDownsampleInProgress) {\n return ChartConstants['title-downsampling-in-progress'];\n }\n\n return isDownsamplingDisabled\n ? ChartConstants['title-downsampling-disabled']\n : ChartConstants['title-downsampling-enabled'];\n }\n\n constructor(props) {\n super(props);\n\n this.handleAfterPlot = this.handleAfterPlot.bind(this);\n this.handleDownsampleClick = this.handleDownsampleClick.bind(this);\n this.handleModelEvent = this.handleModelEvent.bind(this);\n this.handlePlotUpdate = this.handlePlotUpdate.bind(this);\n this.handleRelayout = this.handleRelayout.bind(this);\n this.handleRestyle = this.handleRestyle.bind(this);\n\n this.plot = React.createRef();\n this.plotWrapper = React.createRef();\n this.columnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.rect = null;\n this.ranges = null;\n this.isSubscribed = false;\n this.isLoadedFired = false;\n\n this.state = {\n data: null,\n downsamplingError: null,\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n layout: {\n datarevision: 0,\n },\n revision: 0,\n };\n }\n\n componentDidMount() {\n // Need to make sure the model dimensions are up to date before initializing the data\n this.updateDimensions();\n this.updateModelDimensions();\n\n this.initData();\n this.initFormatter();\n\n const { isActive } = this.props;\n if (isActive) {\n this.subscribe();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { isActive, settings } = this.props;\n this.updateFormatterSettings(settings);\n\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe();\n }\n\n getCachedConfig = memoize(\n (\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n ) => {\n const customButtons = [];\n if (downsamplingError) {\n customButtons.push({\n name: `${ChartConstants['title-downsampling-failed']}: ${downsamplingError}`,\n click: () => {},\n icon: Chart.convertIcon(dhWarningFilled),\n });\n }\n\n if (\n isDownsampleFinished ||\n isDownsampleInProgress ||\n isDownsamplingDisabled ||\n downsamplingError\n ) {\n const name = Chart.downsampleButtonTitle(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n });\n }\n\n return {\n displaylogo: false,\n\n // Display the mode bar if there's an error or downsampling so user can see progress\n // Yes, the value is a boolean or the string 'hover': https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js#L249\n displayModeBar:\n isDownsampleInProgress || downsamplingError ? true : 'hover',\n\n // Each array gets grouped together in the mode bar\n modeBarButtons: [\n customButtons,\n ['toImage'],\n ['zoom2d', 'pan2d'],\n ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'],\n ],\n };\n }\n );\n\n getPlotRect() {\n return this.plotWrapper.current?.getBoundingClientRect() ?? null;\n }\n\n initData() {\n const { model } = this.props;\n const { layout } = this.state;\n this.setState({\n data: model.getData(),\n layout: {\n ...layout,\n ...model.getLayout(),\n },\n });\n }\n\n subscribe() {\n if (this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n if (!this.rect || this.rect.width === 0 || this.rect.height === 0) {\n log.debug2('Delaying subscription until model dimensions are set');\n return;\n }\n model.subscribe(this.handleModelEvent);\n this.isSubscribed = true;\n }\n\n unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n model.unsubscribe(this.handleModelEvent);\n this.isSubscribed = false;\n }\n\n handleAfterPlot() {\n if (this.plot.current) {\n // TODO: Translate whatever Don was doing in plotting.js in the afterplot here so that area graphs show up properly\n }\n }\n\n handleDownsampleClick() {\n this.setState(\n ({ isDownsamplingDisabled }) => ({\n downsamplingError: null,\n isDownsampleInProgress: false,\n isDownsampleFinished: false,\n isDownsamplingDisabled: !isDownsamplingDisabled,\n }),\n () => {\n const { model } = this.props;\n const { isDownsamplingDisabled } = this.state;\n model.setDownsamplingDisabled(isDownsamplingDisabled);\n }\n );\n }\n\n handleModelEvent(event) {\n const { type, detail } = event;\n log.debug2('Received data update', type, detail);\n\n switch (type) {\n case ChartModel.EVENT_UPDATED: {\n this.currentSeries += 1;\n this.setState(state => {\n const { layout, revision } = state;\n layout.datarevision += 1;\n return {\n data: detail,\n layout,\n revision: revision + 1,\n };\n });\n\n const { onUpdate } = this.props;\n onUpdate({ isLoading: !this.isLoadedFired });\n break;\n }\n case ChartModel.EVENT_LOADFINISHED: {\n const { onUpdate } = this.props;\n this.isLoadedFired = true;\n onUpdate({ isLoading: false });\n break;\n }\n case ChartModel.EVENT_DISCONNECT: {\n const { onDisconnect } = this.props;\n onDisconnect();\n break;\n }\n case ChartModel.EVENT_RECONNECT: {\n const { onReconnect } = this.props;\n onReconnect();\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLESTARTED: {\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: true,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLEFINISHED: {\n this.setState({\n isDownsampleFinished: true,\n isDownsampleInProgress: false,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLENEEDED:\n case ChartModel.EVENT_DOWNSAMPLEFAILED: {\n const downsamplingError = detail.message ? detail.message : detail;\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n downsamplingError,\n });\n\n const { onError } = this.props;\n onError(new Error(downsamplingError));\n break;\n }\n default:\n log.debug('Unknown event type', type, event);\n }\n }\n\n handlePlotUpdate(figure) {\n // User could have modified zoom/pan here, update the model dimensions\n // We don't need to update the datarevision, as we don't have any data changes\n // until an update comes back from the server anyway\n const { layout } = figure;\n const ranges = ChartUtils.getLayoutRanges(layout);\n\n const isRangesChanged = !deepEqual(ranges, this.ranges);\n\n if (isRangesChanged) {\n this.ranges = ranges;\n\n this.updateModelDimensions(true);\n }\n }\n\n handleRelayout(changes) {\n log.debug('handleRelayout', changes);\n if (Object.keys(changes).includes('hiddenlabels')) {\n const { onSettingsChanged } = this.props;\n // Pie charts store series visibility in layout.hiddenlabels and trigger relayout on changes\n // Series visibility for other types of charts is handled in handleRestyle\n const hiddenSeries = [...changes.hiddenlabels];\n onSettingsChanged({ hiddenSeries });\n }\n\n this.updateModelDimensions();\n }\n\n handleRestyle([changes, seriesIndexes]) {\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n const { data } = this.state;\n const { onSettingsChanged } = this.props;\n const hiddenSeries = data.reduce(\n (acc, { name, visible }) =>\n visible === 'legendonly' ? [...acc, name] : acc,\n []\n );\n onSettingsChanged({ hiddenSeries });\n }\n }\n\n /**\n * Update the models dimensions and ranges.\n * Note that this will update it all whether the plot size changes OR the range\n * the user is looking at has changed (eg. panning/zooming).\n * Could update each independently, but doing them at the same time keeps the\n * ChartModel API a bit cleaner.\n * @param {boolean} force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions(force = false) {\n const rect = this.getPlotRect();\n if (!rect) {\n log.warn('Unable to get plotting rect');\n return;\n }\n\n const isRectChanged =\n !this.rect ||\n this.rect.width !== rect.width ||\n this.rect.height !== rect.height;\n\n if (isRectChanged || force) {\n this.rect = rect;\n\n const { isActive, model } = this.props;\n model.setDimensions(rect);\n // We may need to resubscribe if dimensions were too small before\n if (isActive) {\n this.subscribe();\n }\n }\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n updateFormatterSettings(settings) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n if (\n !deepEqual(this.columnFormats, columnFormats) ||\n !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions)\n ) {\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n this.dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n this.updateFormatter();\n }\n }\n\n updateFormatter() {\n const formatter = new Formatter(\n this.columnFormats,\n this.dateTimeFormatterOptions\n );\n\n const { model } = this.props;\n model.setFormatter(formatter);\n }\n\n updateDimensions() {\n const rect = this.getPlotRect();\n if (\n this.plot.current != null &&\n rect != null &&\n rect.width > 0 &&\n rect.height > 0\n ) {\n // Call relayout to resize avoiding the debouncing plotly does\n // https://github.com/plotly/plotly.js/issues/2769#issuecomment-402099552\n Plotly.relayout(this.plot.current.el, { autosize: true }).catch(e => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n\n render() {\n const {\n data,\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled,\n layout,\n revision,\n } = this.state;\n const config = this.getCachedConfig(\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const isPlotShown = data != null;\n return (\n <div className=\"h-100 w-100 chart-wrapper\" ref={this.plotWrapper}>\n {isPlotShown && (\n <Plot\n ref={this.plot}\n data={data}\n layout={layout}\n revision={revision}\n config={config}\n onAfterPlot={this.handleAfterPlot}\n onRelayout={this.handleRelayout}\n onUpdate={this.handlePlotUpdate}\n onRestyle={this.handleRestyle}\n useResizeHandler\n style={{ height: '100%', width: '100%' }}\n />\n )}\n </div>\n );\n }\n}\n\nChart.propTypes = {\n model: PropTypes.instanceOf(ChartModel).isRequired,\n // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n }),\n isActive: PropTypes.bool,\n onDisconnect: PropTypes.func,\n onReconnect: PropTypes.func,\n onUpdate: PropTypes.func,\n onError: PropTypes.func,\n onSettingsChanged: PropTypes.func,\n};\n\nChart.defaultProps = {\n isActive: true,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n formatter: [],\n },\n onDisconnect: () => {},\n onReconnect: () => {},\n onUpdate: () => {},\n onError: () => {},\n onSettingsChanged: () => {},\n};\n\nexport default Chart;\n"],"file":"Chart.js"}
|
|
1
|
+
{"version":3,"sources":["../src/Chart.jsx"],"names":["React","Component","PropTypes","deepEqual","memoize","vsLoading","dhGraphLineDown","dhWarningFilled","Formatter","FormatterUtils","DateUtils","Log","Plotly","Plot","ChartModel","ChartUtils","ChartConstants","log","module","Chart","convertIcon","faIcon","width","path","icon","ascent","descent","transform","downsampleButtonTitle","isDownsampleInProgress","isDownsamplingDisabled","constructor","props","downsamplingError","isDownsampleFinished","customButtons","push","name","click","handleDownsampleClick","displaylogo","displayModeBar","modeBarButtons","handleAfterPlot","bind","handleModelEvent","handlePlotUpdate","handleRelayout","handleRestyle","plot","createRef","plotWrapper","columnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","rect","ranges","isSubscribed","isLoadedFired","state","data","layout","datarevision","revision","componentDidMount","updateDimensions","updateModelDimensions","initData","initFormatter","isActive","subscribe","componentDidUpdate","prevProps","settings","updateFormatterSettings","unsubscribe","componentWillUnmount","getPlotRect","current","getBoundingClientRect","model","setState","getData","getLayout","height","debug2","setDownsamplingDisabled","event","type","detail","EVENT_UPDATED","currentSeries","onUpdate","isLoading","EVENT_LOADFINISHED","EVENT_DISCONNECT","onDisconnect","EVENT_RECONNECT","onReconnect","EVENT_DOWNSAMPLESTARTED","EVENT_DOWNSAMPLEFINISHED","EVENT_DOWNSAMPLENEEDED","EVENT_DOWNSAMPLEFAILED","message","onError","Error","debug","figure","getLayoutRanges","isRangesChanged","changes","Object","keys","includes","onSettingsChanged","hiddenSeries","hiddenlabels","seriesIndexes","reduce","acc","visible","force","warn","isRectChanged","setDimensions","getColumnFormats","getDateTimeFormatterOptions","updateFormatter","formatter","setFormatter","relayout","el","autosize","catch","e","render","config","getCachedConfig","isPlotShown","propTypes","instanceOf","isRequired","shape","timeZone","string","defaultDateTimeFormat","showTimeZone","bool","showTSeparator","arrayOf","defaultFormatString","func","defaultProps","FULL_DATE_FORMAT"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { vsLoading, dhGraphLineDown, dhWarningFilled } from '@deephaven/icons';\nimport { Formatter, FormatterUtils, DateUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport Plotly from './plotly/Plotly';\nimport Plot from './plotly/Plot';\n\nimport ChartModel from './ChartModel';\nimport ChartUtils from './ChartUtils';\nimport ChartConstants from './Chart.module.scss';\nimport './Chart.scss';\n\nconst log = Log.module('Chart');\n\nexport class Chart extends Component {\n /**\n * Convert a font awesome icon definition to a plotly icon definition\n * @param {FontAwesome.IconDefinition} faIcon The icon to convert\n */\n static convertIcon(faIcon) {\n const [width, , , , path] = faIcon.icon;\n // By default the icons are flipped upside down, so we need to add our own transform\n // https://github.com/plotly/plotly.js/issues/1335\n return {\n width,\n path,\n ascent: width,\n descent: 0,\n transform: `matrix(1, 0, 0, 1, 0, 0)`,\n };\n }\n\n static downsampleButtonTitle(isDownsampleInProgress, isDownsamplingDisabled) {\n if (isDownsampleInProgress) {\n return ChartConstants['title-downsampling-in-progress'];\n }\n\n return isDownsamplingDisabled\n ? ChartConstants['title-downsampling-disabled']\n : ChartConstants['title-downsampling-enabled'];\n }\n\n constructor(props) {\n super(props);\n\n this.handleAfterPlot = this.handleAfterPlot.bind(this);\n this.handleDownsampleClick = this.handleDownsampleClick.bind(this);\n this.handleModelEvent = this.handleModelEvent.bind(this);\n this.handlePlotUpdate = this.handlePlotUpdate.bind(this);\n this.handleRelayout = this.handleRelayout.bind(this);\n this.handleRestyle = this.handleRestyle.bind(this);\n\n this.plot = React.createRef();\n this.plotWrapper = React.createRef();\n this.columnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.rect = null;\n this.ranges = null;\n this.isSubscribed = false;\n this.isLoadedFired = false;\n\n this.state = {\n data: null,\n downsamplingError: null,\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n layout: {\n datarevision: 0,\n },\n revision: 0,\n };\n }\n\n componentDidMount() {\n // Need to make sure the model dimensions are up to date before initializing the data\n this.updateDimensions();\n this.updateModelDimensions();\n\n this.initData();\n this.initFormatter();\n\n const { isActive } = this.props;\n if (isActive) {\n this.subscribe();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { isActive, settings } = this.props;\n this.updateFormatterSettings(settings);\n\n if (isActive !== prevProps.isActive) {\n if (isActive) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe();\n }\n\n getCachedConfig = memoize(\n (\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n ) => {\n const customButtons = [];\n if (downsamplingError) {\n customButtons.push({\n name: `${ChartConstants['title-downsampling-failed']}: ${downsamplingError}`,\n click: () => {},\n icon: Chart.convertIcon(dhWarningFilled),\n });\n }\n\n if (\n isDownsampleFinished ||\n isDownsampleInProgress ||\n isDownsamplingDisabled ||\n downsamplingError\n ) {\n const name = Chart.downsampleButtonTitle(\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const icon = isDownsampleInProgress ? vsLoading : dhGraphLineDown;\n customButtons.push({\n name,\n icon: Chart.convertIcon(icon),\n click: this.handleDownsampleClick,\n });\n }\n\n return {\n displaylogo: false,\n\n // Display the mode bar if there's an error or downsampling so user can see progress\n // Yes, the value is a boolean or the string 'hover': https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js#L249\n displayModeBar:\n isDownsampleInProgress || downsamplingError ? true : 'hover',\n\n // Each array gets grouped together in the mode bar\n modeBarButtons: [\n customButtons,\n ['toImage'],\n ['zoom2d', 'pan2d'],\n ['zoomIn2d', 'zoomOut2d', 'autoScale2d', 'resetScale2d'],\n ],\n };\n }\n );\n\n getPlotRect() {\n return this.plotWrapper.current?.getBoundingClientRect() ?? null;\n }\n\n initData() {\n const { model } = this.props;\n const { layout } = this.state;\n this.setState({\n data: model.getData(),\n layout: {\n ...layout,\n ...model.getLayout(),\n },\n });\n }\n\n subscribe() {\n if (this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n if (!this.rect || this.rect.width === 0 || this.rect.height === 0) {\n log.debug2('Delaying subscription until model dimensions are set');\n return;\n }\n model.subscribe(this.handleModelEvent);\n this.isSubscribed = true;\n }\n\n unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n\n const { model } = this.props;\n model.unsubscribe(this.handleModelEvent);\n this.isSubscribed = false;\n }\n\n handleAfterPlot() {\n if (this.plot.current) {\n // TODO: Translate whatever Don was doing in plotting.js in the afterplot here so that area graphs show up properly\n }\n }\n\n handleDownsampleClick() {\n this.setState(\n ({ isDownsamplingDisabled }) => ({\n downsamplingError: null,\n isDownsampleInProgress: false,\n isDownsampleFinished: false,\n isDownsamplingDisabled: !isDownsamplingDisabled,\n }),\n () => {\n const { model } = this.props;\n const { isDownsamplingDisabled } = this.state;\n model.setDownsamplingDisabled(isDownsamplingDisabled);\n }\n );\n }\n\n handleModelEvent(event) {\n const { type, detail } = event;\n log.debug2('Received data update', type, detail);\n\n switch (type) {\n case ChartModel.EVENT_UPDATED: {\n this.currentSeries += 1;\n this.setState(state => {\n const { layout, revision } = state;\n layout.datarevision += 1;\n return {\n data: detail,\n layout,\n revision: revision + 1,\n };\n });\n\n const { onUpdate } = this.props;\n onUpdate({ isLoading: !this.isLoadedFired });\n break;\n }\n case ChartModel.EVENT_LOADFINISHED: {\n const { onUpdate } = this.props;\n this.isLoadedFired = true;\n onUpdate({ isLoading: false });\n break;\n }\n case ChartModel.EVENT_DISCONNECT: {\n const { onDisconnect } = this.props;\n onDisconnect();\n break;\n }\n case ChartModel.EVENT_RECONNECT: {\n const { onReconnect } = this.props;\n onReconnect();\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLESTARTED: {\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: true,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLEFINISHED: {\n this.setState({\n isDownsampleFinished: true,\n isDownsampleInProgress: false,\n downsamplingError: null,\n });\n break;\n }\n case ChartModel.EVENT_DOWNSAMPLENEEDED:\n case ChartModel.EVENT_DOWNSAMPLEFAILED: {\n const downsamplingError = detail.message ? detail.message : detail;\n this.setState({\n isDownsampleFinished: false,\n isDownsampleInProgress: false,\n isDownsamplingDisabled: false,\n downsamplingError,\n });\n\n const { onError } = this.props;\n onError(new Error(downsamplingError));\n break;\n }\n default:\n log.debug('Unknown event type', type, event);\n }\n }\n\n handlePlotUpdate(figure) {\n // User could have modified zoom/pan here, update the model dimensions\n // We don't need to update the datarevision, as we don't have any data changes\n // until an update comes back from the server anyway\n const { layout } = figure;\n const ranges = ChartUtils.getLayoutRanges(layout);\n\n const isRangesChanged = !deepEqual(ranges, this.ranges);\n\n if (isRangesChanged) {\n this.ranges = ranges;\n\n this.updateModelDimensions(true);\n }\n }\n\n handleRelayout(changes) {\n log.debug('handleRelayout', changes);\n if (Object.keys(changes).includes('hiddenlabels')) {\n const { onSettingsChanged } = this.props;\n // Pie charts store series visibility in layout.hiddenlabels and trigger relayout on changes\n // Series visibility for other types of charts is handled in handleRestyle\n const hiddenSeries = [...changes.hiddenlabels];\n onSettingsChanged({ hiddenSeries });\n }\n\n this.updateModelDimensions();\n }\n\n handleRestyle([changes, seriesIndexes]) {\n log.debug('handleRestyle', changes, seriesIndexes);\n if (Object.keys(changes).includes('visible')) {\n const { data } = this.state;\n const { onSettingsChanged } = this.props;\n const hiddenSeries = data.reduce(\n (acc, { name, visible }) =>\n visible === 'legendonly' ? [...acc, name] : acc,\n []\n );\n onSettingsChanged({ hiddenSeries });\n }\n }\n\n /**\n * Update the models dimensions and ranges.\n * Note that this will update it all whether the plot size changes OR the range\n * the user is looking at has changed (eg. panning/zooming).\n * Could update each independently, but doing them at the same time keeps the\n * ChartModel API a bit cleaner.\n * @param {boolean} force Force a change even if the chart dimensions haven't changed (eg. after pan/zoom)\n */\n updateModelDimensions(force = false) {\n const rect = this.getPlotRect();\n if (!rect) {\n log.warn('Unable to get plotting rect');\n return;\n }\n\n const isRectChanged =\n !this.rect ||\n this.rect.width !== rect.width ||\n this.rect.height !== rect.height;\n\n if (isRectChanged || force) {\n this.rect = rect;\n\n const { isActive, model } = this.props;\n model.setDimensions(rect);\n // We may need to resubscribe if dimensions were too small before\n if (isActive) {\n this.subscribe();\n }\n }\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n updateFormatterSettings(settings) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n const { decimalFormatOptions = {}, integerFormatOptions = {} } = settings;\n\n if (\n !deepEqual(this.columnFormats, columnFormats) ||\n !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions) ||\n !deepEqual(this.decimalFormatOptions, decimalFormatOptions) ||\n !deepEqual(this.integerFormatOptions, integerFormatOptions)\n ) {\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = decimalFormatOptions;\n this.integerFormatOptions = integerFormatOptions;\n this.updateFormatter();\n }\n }\n\n updateFormatter() {\n const formatter = new Formatter(\n this.columnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\n );\n\n const { model } = this.props;\n model.setFormatter(formatter);\n }\n\n updateDimensions() {\n const rect = this.getPlotRect();\n if (\n this.plot.current != null &&\n rect != null &&\n rect.width > 0 &&\n rect.height > 0\n ) {\n // Call relayout to resize avoiding the debouncing plotly does\n // https://github.com/plotly/plotly.js/issues/2769#issuecomment-402099552\n Plotly.relayout(this.plot.current.el, { autosize: true }).catch(e => {\n log.debug('Unable to resize, promise rejected', e);\n });\n }\n }\n\n render() {\n const {\n data,\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled,\n layout,\n revision,\n } = this.state;\n const config = this.getCachedConfig(\n downsamplingError,\n isDownsampleFinished,\n isDownsampleInProgress,\n isDownsamplingDisabled\n );\n const isPlotShown = data != null;\n return (\n <div className=\"h-100 w-100 chart-wrapper\" ref={this.plotWrapper}>\n {isPlotShown && (\n <Plot\n ref={this.plot}\n data={data}\n layout={layout}\n revision={revision}\n config={config}\n onAfterPlot={this.handleAfterPlot}\n onRelayout={this.handleRelayout}\n onUpdate={this.handlePlotUpdate}\n onRestyle={this.handleRestyle}\n useResizeHandler\n style={{ height: '100%', width: '100%' }}\n />\n )}\n </div>\n );\n }\n}\n\nChart.propTypes = {\n model: PropTypes.instanceOf(ChartModel).isRequired,\n // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n }),\n isActive: PropTypes.bool,\n onDisconnect: PropTypes.func,\n onReconnect: PropTypes.func,\n onUpdate: PropTypes.func,\n onError: PropTypes.func,\n onSettingsChanged: PropTypes.func,\n};\n\nChart.defaultProps = {\n isActive: true,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n formatter: [],\n },\n onDisconnect: () => {},\n onReconnect: () => {},\n onUpdate: () => {},\n onError: () => {},\n onSettingsChanged: () => {},\n};\n\nexport default Chart;\n"],"file":"Chart.js"}
|
package/dist/ChartUtils.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ declare class ChartUtils {
|
|
|
38
38
|
* @param {dh.plot.SeriesPlotStyle} plotStyle The plot style of the series
|
|
39
39
|
* @param {dh.plot.SourceType} sourceType The source type for the series
|
|
40
40
|
*/
|
|
41
|
-
static getPlotlyProperty(plotStyle: any, sourceType: any): "labels" | "values" | "x" | "y" | "z" | "xLow" | "xHigh" | "yLow" | "yHigh" | "time" | "open" | "high" | "low" | "shape" | "size" | "label" | "color";
|
|
41
|
+
static getPlotlyProperty(plotStyle: any, sourceType: any): "labels" | "values" | "x" | "y" | "z" | "xLow" | "xHigh" | "yLow" | "yHigh" | "time" | "open" | "high" | "low" | "close" | "shape" | "size" | "label" | "color";
|
|
42
42
|
static getPlotlySeriesOrientation(series: any): string;
|
|
43
43
|
/**
|
|
44
44
|
* Generate the plotly error bar data from the passed in data.
|
package/dist/ChartUtils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartUtils.d.ts","sourceRoot":"","sources":["../src/ChartUtils.js"],"names":[],"mappings":";AAeA;IACE,iCAAgC;IAEhC,6BAA6B;IAE7B,6BAA2B;IAE3B,4BAAyB;IAEzB,+BAA4B;IAE5B,+BAA8B;IAE9B;;;OAGG;IAEH,2BAAkD;IAElD;;;;;;OAA8E;IAE9E;;OAAuD;IAEvD,oCAAiC;IAEjC;;;;OAIG;IACH,6DAFW,OAAO,yEA4BjB;IAED;;;OAGG;IACH,yEASC;IAED;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"ChartUtils.d.ts","sourceRoot":"","sources":["../src/ChartUtils.js"],"names":[],"mappings":";AAeA;IACE,iCAAgC;IAEhC,6BAA6B;IAE7B,6BAA2B;IAE3B,4BAAyB;IAEzB,+BAA4B;IAE5B,+BAA8B;IAE9B;;;OAGG;IAEH,2BAAkD;IAElD;;;;;;OAA8E;IAE9E;;OAAuD;IAEvD,oCAAiC;IAEjC;;;;OAIG;IACH,6DAFW,OAAO,yEA4BjB;IAED;;;OAGG;IACH,yEASC;IAED;;;;OAIG;IACH,2NA4DC;IAED,uDAOC;IAED;;;;;;;;OAQG;IACH,6BANW,aAAa,QACb,aAAa,SACb,aAAa,GAEX,MAAM,CAWlB;IAED;;;;MA4CC;IAED,6CAEC;IAED;;;;;aA2CC;IAED;;;;OAIG;IACH,wEA8BC;IAED;;;;;;OAMG;IACH,kCAJW,MAAM,QACN,MAAM,cACN,OAAO,UAqBjB;IAED;;;;;OAKG;IACH,oDAYC;IAED;;;;;OAKG;IACH,iCAJW,MAAM,YACN,MAAM,GACJ,OAAO,GAAC,MAAM,CAO1B;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,MAAM,EAAE,CAOpB;IAED;;;OAGG;IACH,8EAFa,MAAM,CASlB;IAED;;;;;;OAMG;IACH,0DAJW,SAAsB,KAAc,CAAC,oBACrC,OAAO,GAAC,MAAM,GACZ,MAAM,CA4BlB;IAED,0GAyBC;IAED,qIAyDC;IAED;;;;;;OAMG;IACH,oDAFa,IAAI,MAAM,EAAE,MAAM,CAAC,CAkG/B;IAED,gIASC;IAED;;;OAGG;IACH,4DASC;IAED;;;OAGG;IACH,kFAaC;IAED;;;;OAIG;IACH,wDAaC;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;;;;;;;OAUG;IACH,qCANW,MAAM,QACN,KAAc,cACd,MAAM,eACN,MAAM,8BAyHhB;IAED,wEAGC;IAED;;;;;;;;OAQG;IACH,yCAPW,MAAM,wBAEN,MAAM,mBACN,aAAuC,0CAEvC,MAAM,QAkEhB;IAED;;;;OAIG;IACH,+CAGC;IAED;;;;;;;OAOG;IACH,wDA6BC;IAED;;;;;;OAMG;IACH,iHA2BC;IAED;;;;;;OAMG;IACH,2FAMC;IAED;;;;;;;OAOG;IACH;;;QAoCC;IAED;;;;;;OAMG;IACH,yCAJW,MAAM,sDAuBhB;IAED;;;;;OAKG;IACH,yBAJW,MAAM,EAAE,YACR,MAAM,GACJ,IAAI,MAAM,EAAE,MAAM,CAAC,CAU/B;IAED;;OAEG;IACH,4BAAwB;IAExB;;;OAGG;IACH,oDAgBC;IAED;;;;;OAKG;IACH,wBAJW,GAAG,cACH,MAAM,uBAqChB;IAED;;;;;;;;;;;;;;;;;;MA+BC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BC;IAED;;;OAGG;IACH,mCAFW,MAAM;;MAOhB;IAED;;;OAGG;IACH,iCAFW,MAAM;;MAOhB;IAED,6CAQC;IAED;;;;;;;;;;;OAWG;IACH;QAL4B,KAAK,EAAtB,MAAM;QACW,KAAK,EAAtB,MAAM;QACa,MAAM,EAAzB,MAAM,EAAE;QAC0B,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;MA2ChD;CACF"}
|
package/dist/ChartUtils.js
CHANGED
|
@@ -10,7 +10,7 @@ import dh from '@deephaven/jsapi-shim';
|
|
|
10
10
|
import ChartTheme from "./ChartTheme.js";
|
|
11
11
|
var log = Log.module('ChartUtils');
|
|
12
12
|
var DAYS = Object.freeze(dh.calendar.DayOfWeek.values());
|
|
13
|
-
var BUSINESS_COLUMN_TYPE = 'io.deephaven.
|
|
13
|
+
var BUSINESS_COLUMN_TYPE = 'io.deephaven.db.tables.utils.DBDateTime';
|
|
14
14
|
var MILLIS_PER_HOUR = 3600000;
|
|
15
15
|
var NANOS_PER_MILLI = 1000000;
|
|
16
16
|
|
|
@@ -140,6 +140,9 @@ class ChartUtils {
|
|
|
140
140
|
return 'low';
|
|
141
141
|
|
|
142
142
|
case dh.plot.SourceType.CLOSE:
|
|
143
|
+
return 'close';
|
|
144
|
+
|
|
145
|
+
case dh.plot.SourceType.SHAPE:
|
|
143
146
|
return 'shape';
|
|
144
147
|
|
|
145
148
|
case dh.plot.SourceType.SIZE:
|
package/dist/ChartUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ChartUtils.js"],"names":["Log","TableUtils","dh","ChartTheme","log","module","DAYS","Object","freeze","calendar","DayOfWeek","values","BUSINESS_COLUMN_TYPE","MILLIS_PER_HOUR","NANOS_PER_MILLI","ChartUtils","getPlotlyChartType","plotStyle","isBusinessTime","plot","SeriesPlotStyle","SCATTER","LINE","BAR","STACKED_BAR","PIE","HISTOGRAM","OHLC","getPlotlyChartMode","getPlotlyProperty","sourceType","SourceType","X","Y","TIME","Z","X_LOW","X_HIGH","Y_LOW","Y_HIGH","OPEN","HIGH","LOW","CLOSE","SIZE","LABEL","COLOR","Error","getPlotlySeriesOrientation","series","sources","length","axis","type","AxisType","ORIENTATION","HORIZONTAL","VERTICAL","getPlotlyErrorBars","x","xLow","xHigh","array","map","value","i","arrayminus","symmetric","getPlotlyDateFormat","formatter","columnType","formatPattern","tickformat","replace","ticksuffix","dataFormatter","getColumnTypeFormatter","dhTimeZone","showTimeZone","i18n","DateTimeFormat","format","Date","automargin","convertNumberPrefix","prefix","getPlotlyNumberFormat","subpatterns","split","placeholderDigits","zeroDigits","decimalDigits","optionalDecimalDigits","numberType","percentSign","suffix","match","paddingLength","isCommaSeparated","indexOf","comma","plotlyNumberType","decimalLength","trimOption","tickprefix","getPlotlyAxisFormat","source","axisFormat","isDateType","addTickSpacing","isNumberType","formatType","AxisFormatType","CATEGORY","gapBetweenMajorTicks","updatedFormat","tickSpacing","Math","tickmode","dtick","getSourceForAxis","chart","j","getSeriesVisibility","name","settings","hiddenSeries","includes","getHiddenLabels","makeSeriesData","mode","orientation","makeSeriesDataFromSeries","axisTypeMap","seriesVisibility","lineColor","shapeColor","some","businessCalendar","getChartType","seriesData","addSourcesToSeriesData","addStylingToSeriesData","seriesDataParam","k","dataAttributeName","axisProperty","getAxisPropertyName","axes","get","axisIndex","axisIndexString","marker","line","width","AREA","fill","STACKED_AREA","stackgroup","STEP","shape","assign","color","paper_bgcolor","increasing","ohlc_increasing","decreasing","ohlc_decreasing","textinfo","outsidetextfont","title_color","visible","getAxisFormats","figure","axisFormats","Map","nullFormat","charts","groupArray","axisType","typeAxes","axisLayoutProperty","getAxisLayoutProperty","has","debug","set","rangebreaks","businessPeriods","businessDays","holidays","timeZone","calendarTimeZone","formatterTimeZone","timeZoneDiff","standardOffset","push","createRangeBreakValuesFromHolidays","forEach","period","pattern","bounds","periodToDecimal","close","open","createBoundsFromDays","weekendBounds","size","getAxisSide","axisPosition","AxisPosition","BOTTOM","TOP","LEFT","RIGHT","getChartForSeries","getLayoutRanges","layout","ranges","keys","filter","key","range","autorange","updateLayoutAxes","layoutParam","plotWidth","plotHeight","getRangeParser","xAxisSize","max","MIN_AXIS_SIZE","min","AXIS_SIZE_PX","MAX_AXIS_SIZE","DEFAULT_AXIS_SIZE","yAxisSize","left","bottom","top","right","axisPositionMap","rightAxes","LEGEND_WIDTH_PX","MAX_LEGEND_SIZE","axisTypes","isYAxis","plotSize","makeLayoutAxis","layoutAxis","updateLayoutAxis","rangeParser","rangeStart","rangeEnd","layoutAxisParam","axisSize","title","text","label","side","position","overlaying","positionAxes","sideIndex","anchor","leftAxes","domain","bottomAxes","topAxes","Number","businessDaysInt","day","nonBusinessDaysInt","reopenDays","Set","closed","adjustedDay","add","boundsArray","closedDay","fullHolidays","partialHolidays","holiday","createPartialHoliday","createFullHoliday","adjustDateForTimeZone","date","toString","dateString","closedPeriods","rangeBreaks","startClose","endClose","dvalue","unwrapValue","wrapValue","property","reduce","result","item","group","updateRanges","asDate","DATE_FORMAT","asNumber","substr","parse","tzFormat","estimatedOffset","estimatedDate","offset","gridcolor","linecolor","rangeslider","showline","ticklen","tickcolor","tickfont","zerolinecolor","font","showgrid","zerolinewidth","makeDefaultLayout","autosize","colorway","family","yanchor","pad","DEFAULT_TITLE_PADDING","y","legend","margin","DEFAULT_MARGIN","xaxis","yaxis","datarevision","dehydrateSettings","hydrateSettings","titleFromSettings","xAxis","join","makeFigureSettings","table","settingsAxis","NUMBER","yAxis","chartType","ChartType","XY","dataSources","columnName","l","r","t","b"],"mappings":"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","sourcesContent":["import Log from '@deephaven/log';\nimport { TableUtils } from '@deephaven/iris-grid';\nimport dh from '@deephaven/jsapi-shim';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('ChartUtils');\n\nconst DAYS = Object.freeze(dh.calendar.DayOfWeek.values());\n\nconst BUSINESS_COLUMN_TYPE = 'io.deephaven.time.DateTime';\n\nconst MILLIS_PER_HOUR = 3600000;\n\nconst NANOS_PER_MILLI = 1000000;\n\nclass ChartUtils {\n static DEFAULT_AXIS_SIZE = 0.15;\n\n static MIN_AXIS_SIZE = 0.025;\n\n static MAX_AXIS_SIZE = 0.2;\n\n static AXIS_SIZE_PX = 75;\n\n static LEGEND_WIDTH_PX = 50;\n\n static MAX_LEGEND_SIZE = 0.25;\n\n static ORIENTATION = Object.freeze({\n HORIZONTAL: 'h',\n VERTICAL: 'v',\n });\n\n static DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSS';\n\n static DEFAULT_MARGIN = Object.freeze({ l: 60, r: 50, t: 30, b: 60, pad: 0 });\n\n static DEFAULT_TITLE_PADDING = Object.freeze({ t: 8 });\n\n static SUBTITLE_LINE_HEIGHT = 25;\n\n /**\n * Converts the Iris plot style into a plotly chart type\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle\n * @param {boolean} isBusinessTime If the plot is using business time for an axis\n */\n static getPlotlyChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n // scattergl mode is more performant, but doesn't support the rangebreaks we need for businessTime calendars\n return !isBusinessTime ? 'scattergl' : 'scatter';\n case dh.plot.SeriesPlotStyle.LINE:\n // There is also still some artifacting bugs with scattergl: https://github.com/plotly/plotly.js/issues/3522\n // The artifacting only occurs on line plots, which we can draw with fairly decent performance using SVG paths\n // Once the above plotly issue is fixed, scattergl should be used here (when !isBusinessTime)\n return 'scatter';\n case dh.plot.SeriesPlotStyle.BAR:\n case dh.plot.SeriesPlotStyle.STACKED_BAR:\n return 'bar';\n\n case dh.plot.SeriesPlotStyle.PIE:\n return 'pie';\n\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'histogram';\n\n case dh.plot.SeriesPlotStyle.OHLC:\n return 'ohlc';\n\n default:\n return null;\n }\n }\n\n /**\n * Converts the Iris plot style into a plotly chart mode\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle.*\n */\n static getPlotlyChartMode(plotStyle) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'markers';\n case dh.plot.SeriesPlotStyle.LINE:\n return 'lines';\n default:\n return null;\n }\n }\n\n /**\n * Get the property to set on the series data for plotly\n * @param {dh.plot.SeriesPlotStyle} plotStyle The plot style of the series\n * @param {dh.plot.SourceType} sourceType The source type for the series\n */\n static getPlotlyProperty(plotStyle, sourceType) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.PIE:\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'labels';\n case dh.plot.SourceType.Y:\n return 'values';\n default:\n break;\n }\n break;\n case dh.plot.SeriesPlotStyle.OHLC:\n switch (sourceType) {\n case dh.plot.SourceType.TIME:\n return 'x';\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'x';\n case dh.plot.SourceType.Y:\n return 'y';\n case dh.plot.SourceType.Z:\n return 'z';\n case dh.plot.SourceType.X_LOW:\n return 'xLow';\n case dh.plot.SourceType.X_HIGH:\n return 'xHigh';\n case dh.plot.SourceType.Y_LOW:\n return 'yLow';\n case dh.plot.SourceType.Y_HIGH:\n return 'yHigh';\n case dh.plot.SourceType.TIME:\n return 'time';\n case dh.plot.SourceType.OPEN:\n return 'open';\n case dh.plot.SourceType.HIGH:\n return 'high';\n case dh.plot.SourceType.LOW:\n return 'low';\n case dh.plot.SourceType.CLOSE:\n return 'shape';\n case dh.plot.SourceType.SIZE:\n return 'size';\n case dh.plot.SourceType.LABEL:\n return 'label';\n case dh.plot.SourceType.COLOR:\n return 'color';\n default:\n throw new Error('Unrecognized source type', sourceType);\n }\n }\n\n static getPlotlySeriesOrientation(series) {\n const { sources } = series;\n if (sources.length === 2 && sources[0].axis.type === dh.plot.AxisType.Y) {\n return ChartUtils.ORIENTATION.HORIZONTAL;\n }\n\n return ChartUtils.ORIENTATION.VERTICAL;\n }\n\n /**\n * Generate the plotly error bar data from the passed in data.\n * Iris passes in the values as absolute, plotly needs them as relative.\n * @param {Array[Number]} x The main data array\n * @param {Array[Number]} xLow The absolute low values\n * @param {Array[Number]} xHigh\n *\n * @returns {Object} The error_x object required by plotly, or null if none is required\n */\n static getPlotlyErrorBars(x, xLow, xHigh) {\n const array = xHigh.map((value, i) => value - x[i]);\n const arrayminus = xLow.map((value, i) => x[i] - value);\n return {\n type: 'data',\n symmetric: false,\n array,\n arrayminus,\n };\n }\n\n static getPlotlyDateFormat(formatter, columnType, formatPattern) {\n const tickformat =\n formatPattern == null\n ? null\n : formatPattern\n .replace('%', '%%')\n .replace(/S{9}/g, '%9f')\n .replace(/S{8}/g, '%8f')\n .replace(/S{7}/g, '%7f')\n .replace(/S{6}/g, '%6f')\n .replace(/S{5}/g, '%5f')\n .replace(/S{4}/g, '%4f')\n .replace(/S{3}/g, '%3f')\n .replace(/S{2}/g, '%2f')\n .replace(/S{1}/g, '%1f')\n .replace(/y{4}/g, '%Y')\n .replace(/y{2}/g, '%y')\n .replace(/M{4}/g, '%B')\n .replace(/M{3}/g, '%b')\n .replace(/M{2}/g, '%m')\n .replace(/M{1}/g, '%-m')\n .replace(/E{4,}/g, '%A')\n .replace(/E{1,}/g, '%a')\n .replace(/d{2}/g, '%d')\n .replace(/([^%]|^)d{1}/g, '$1%-d')\n .replace(/H{2}/g, '%H')\n .replace(/h{2}/g, '%I')\n .replace(/h{1}/g, '%-I')\n .replace(/m{2}/g, '%M')\n .replace(/s{2}/g, '%S')\n .replace(\"'T'\", 'T')\n .replace(' z', ''); // timezone added as suffix if necessary\n\n let ticksuffix = null;\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter.dhTimeZone != null && dataFormatter.showTimeZone) {\n ticksuffix = dh.i18n.DateTimeFormat.format(\n ' z',\n new Date(),\n dataFormatter.dhTimeZone\n );\n }\n\n return { tickformat, ticksuffix, automargin: true };\n }\n\n static convertNumberPrefix(prefix) {\n return prefix.replace(/\\u00A4\\u00A4/g, 'USD').replace(/\\u00A4/g, '$');\n }\n\n static getPlotlyNumberFormat(formatter, columnType, formatPattern) {\n if (!formatPattern) {\n return null;\n }\n\n // We translate java formatting: https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html\n // Into d3 number formatting: https://github.com/d3/d3-format\n // We can't translate number formatting exactly, but should be able to translate the most common cases\n // First split it into the subpatterns; currently only handling the positive subpattern, ignoring the rest\n const subpatterns = formatPattern.split(';');\n const [\n ,\n prefix,\n placeholderDigits,\n zeroDigits,\n ,\n decimalDigits,\n optionalDecimalDigits,\n numberType,\n percentSign,\n suffix,\n ] = subpatterns[0].match(\n /^([^#,0.]*)([#,]*)([0,]*)(\\.?)(0*)(#*)(E?0*)(%?)(.*)/\n );\n\n const paddingLength = zeroDigits.replace(',', '').length;\n const isCommaSeparated =\n placeholderDigits.indexOf(',') >= 0 || zeroDigits.indexOf(',') >= 0;\n const comma = isCommaSeparated ? ',' : '';\n const plotlyNumberType = numberType ? 'e' : 'f';\n const type = percentSign || plotlyNumberType;\n const decimalLength = decimalDigits.length + optionalDecimalDigits.length;\n // IDS-4565 Plotly uses an older version of d3 which doesn't support the trim option or negative brackets\n // If plotly updates it's d3 version, this should be re-enabled\n // const trimOption = optionalDecimalDigits.length > 0 ? '~' : '';\n const trimOption = '';\n\n const tickformat = `0${paddingLength}${comma}.${decimalLength}${trimOption}${type}`;\n const tickprefix = ChartUtils.convertNumberPrefix(prefix);\n // prefix and suffix are processed the same\n const ticksuffix = ChartUtils.convertNumberPrefix(suffix);\n\n return { tickformat, tickprefix, ticksuffix, automargin: true };\n }\n\n /**\n * Gets the plotly axis formatting information from the source passed in\n * @param {dh.plot.Source} source The Source to get the formatter information from\n * @param {Formatter} formatter The current formatter for formatting data\n */\n static getPlotlyAxisFormat(source, formatter = null) {\n const { axis, columnType } = source;\n const { formatPattern } = axis;\n\n let axisFormat = null;\n if (TableUtils.isDateType(columnType)) {\n axisFormat = ChartUtils.getPlotlyDateFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, true);\n } else if (TableUtils.isNumberType(columnType)) {\n axisFormat = ChartUtils.getPlotlyNumberFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, false);\n }\n\n if (axis.formatType === dh.plot.AxisFormatType.CATEGORY) {\n if (axisFormat) {\n axisFormat.type = 'category';\n } else {\n axisFormat = { type: 'category', tickformat: null, ticksuffix: null };\n }\n }\n\n return axisFormat;\n }\n\n /**\n * Adds tick spacing for an axis that has gapBetweenMajorTicks defined.\n *\n * @param {object} axisFormat the current axis format, may be null\n * @param {object} axis the current axis\n * @param {boolean} isDateType indicates if the columns is a date type\n */\n static addTickSpacing(axisFormat, axis, isDateType) {\n const { gapBetweenMajorTicks } = axis;\n if (gapBetweenMajorTicks > 0) {\n const updatedFormat = axisFormat || {};\n let tickSpacing = gapBetweenMajorTicks;\n if (isDateType) {\n // Need to convert from nanoseconds to milliseconds\n tickSpacing = gapBetweenMajorTicks / NANOS_PER_MILLI;\n }\n if (axis.log) {\n tickSpacing = Math.log(tickSpacing);\n }\n // Note that tickmode defaults to 'auto'\n updatedFormat.tickmode = 'linear';\n updatedFormat.dtick = tickSpacing;\n return updatedFormat;\n }\n\n return axisFormat;\n }\n\n /**\n * Retrieve the data source for a given axis in a chart\n * @param {dh.plot.Chart} chart The chart to get the source for\n * @param {dh.plot.Axis} axis The axis to find the source for\n * @returns {dh.plot.Source} The first source matching this axis\n */\n static getSourceForAxis(chart, axis) {\n for (let i = 0; i < chart.series.length; i += 1) {\n const series = chart.series[i];\n for (let j = 0; j < series.sources.length; j += 1) {\n const source = series.sources[j];\n if (source.axis === axis) {\n return source;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get visibility setting for the series object\n * @param {string} name The series name to get the visibility for\n * @param {object} settings Chart settings\n * @returns {boolean|string} True for visible series and 'legendonly' for hidden\n */\n static getSeriesVisibility(name, settings) {\n if (settings?.hiddenSeries?.includes(name)) {\n return 'legendonly';\n }\n return true;\n }\n\n /**\n * Get hidden labels array from chart settings\n * @param {object} settings Chart settings\n * @returns {string[]} Array of hidden series names\n */\n static getHiddenLabels(settings) {\n if (settings?.hiddenSeries) {\n return [...settings.hiddenSeries];\n }\n return [];\n }\n\n /**\n * Create a default series data object. Apply styling to the object afterward.\n * @returns {Object} A simple series data object with no styling\n */\n static makeSeriesData(\n type,\n mode,\n name,\n orientation = ChartUtils.ORIENTATION.VERTICAL\n ) {\n return { type, mode, name, orientation };\n }\n\n /**\n * Create a data series (trace) for use with plotly\n * @param {dh.plot.Series} series The series to create the series data with\n * @param {Map<dh.plot.AxisType, dh.plot.Axis[]>} axisTypeMap The map of axes grouped by type\n * @param {boolean|string} seriesVisibility Visibility setting for the series\n * @returns {Object} The series data (trace) object for use with plotly.\n */\n static makeSeriesDataFromSeries(series, axisTypeMap, seriesVisibility) {\n const { name, plotStyle, lineColor, shapeColor, sources } = series;\n\n const isBusinessTime = sources.some(source => source.axis.businessCalendar);\n const type = ChartUtils.getChartType(plotStyle, isBusinessTime);\n const mode = ChartUtils.getPlotlyChartMode(plotStyle);\n const orientation = ChartUtils.getPlotlySeriesOrientation(series);\n\n const seriesData = ChartUtils.makeSeriesData(type, mode, name, orientation);\n\n ChartUtils.addSourcesToSeriesData(\n seriesData,\n plotStyle,\n sources,\n axisTypeMap\n );\n\n ChartUtils.addStylingToSeriesData(\n seriesData,\n plotStyle,\n lineColor,\n shapeColor,\n seriesVisibility\n );\n\n return seriesData;\n }\n\n static addSourcesToSeriesData(\n seriesDataParam,\n plotStyle,\n sources,\n axisTypeMap\n ) {\n const seriesData = seriesDataParam;\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis, type: sourceType } = source;\n\n const dataAttributeName = ChartUtils.getPlotlyProperty(\n plotStyle,\n sourceType\n );\n seriesData[dataAttributeName] = [];\n\n const axisProperty = ChartUtils.getAxisPropertyName(axis.type);\n const axes = axisTypeMap.get(axis.type);\n const axisIndex = axes.indexOf(axis);\n if (axisProperty != null) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n seriesData[`${axisProperty}axis`] = `${axisProperty}${axisIndexString}`;\n }\n }\n }\n\n static addStylingToSeriesData(\n seriesDataParam,\n plotStyle,\n lineColor = null,\n shapeColor = null,\n seriesVisibility = null\n ) {\n const seriesData = seriesDataParam;\n // Add some empty objects so we can fill them in later with details without checking for existence\n seriesData.marker = { line: {} }; // border line width on markers\n seriesData.line = {\n width: 1, // default line width for lines, should eventually be able to override\n };\n\n if (plotStyle === dh.plot.SeriesPlotStyle.AREA) {\n seriesData.fill = 'tozeroy';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STACKED_AREA) {\n seriesData.stackgroup = 'stack';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STEP) {\n seriesData.line.shape = 'hv'; // plot.ly horizontal then vertical step styling\n } else if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n // The default histfunc in plotly is 'count', but the data passed up from the API provides explicit x/y values and bins\n // Since it's converted to bar, just set the widths of each bar\n seriesData.width = [];\n Object.assign(seriesData.marker.line, {\n color: ChartTheme.paper_bgcolor,\n width: 1,\n });\n } else if (plotStyle === dh.plot.SeriesPlotStyle.OHLC) {\n seriesData.increasing = {\n line: { color: ChartTheme.ohlc_increasing },\n };\n seriesData.decreasing = {\n line: { color: ChartTheme.ohlc_decreasing },\n };\n } else if (plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n seriesData.textinfo = 'label+percent';\n seriesData.outsidetextfont = { color: ChartTheme.title_color };\n }\n\n if (lineColor != null) {\n if (plotStyle === dh.plot.SeriesPlotStyle.BAR) {\n seriesData.marker.color = lineColor;\n } else {\n seriesData.line.color = lineColor;\n }\n }\n\n if (shapeColor != null) {\n seriesData.marker.color = shapeColor;\n }\n\n // Skipping pie charts\n // Pie slice visibility is configured in chart layout instead of series data\n if (seriesVisibility != null && plotStyle !== dh.plot.SeriesPlotStyle.PIE) {\n seriesData.visible = seriesVisibility;\n }\n }\n\n /**\n * Retrieve the axis formats from the provided figure.\n * Currently defaults to just the x/y axes.\n * @param {dh.plot.Figure} figure The figure to get the axis formats for\n * @param {Formatter} formatter The formatter to use when getting the axis format\n * @returns {Map<string, object>} A map of axis layout property names to axis formats\n */\n static getAxisFormats(figure, formatter) {\n const axisFormats = new Map();\n const nullFormat = { tickformat: null, ticksuffix: null };\n\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n const axisTypeMap = ChartUtils.groupArray(chart.axes, 'type');\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n const { sources } = series;\n\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis } = source;\n const { type: axisType } = axis;\n const typeAxes = axisTypeMap.get(axisType);\n const axisIndex = typeAxes.indexOf(axis);\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n\n if (axisFormats.has(axisLayoutProperty)) {\n log.debug(`${axisLayoutProperty} already added.`);\n } else {\n log.debug(`Adding ${axisLayoutProperty} to axisFormats.`);\n const axisFormat = ChartUtils.getPlotlyAxisFormat(\n source,\n formatter\n );\n if (axisFormat === null) {\n axisFormats.set(axisLayoutProperty, nullFormat);\n } else {\n axisFormats.set(axisLayoutProperty, axisFormat);\n\n const { businessCalendar } = axis;\n if (businessCalendar) {\n axisFormat.rangebreaks = [];\n const {\n businessPeriods,\n businessDays,\n holidays,\n timeZone: calendarTimeZone,\n } = businessCalendar;\n const formatterTimeZone = formatter?.getColumnTypeFormatter(\n BUSINESS_COLUMN_TYPE\n )?.dhTimeZone;\n const timeZoneDiff = formatterTimeZone\n ? (calendarTimeZone.standardOffset -\n formatterTimeZone.standardOffset) /\n 60\n : 0;\n if (holidays.length > 0) {\n axisFormat.rangebreaks.push(\n ...ChartUtils.createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n businessPeriods.forEach(period =>\n axisFormat.rangebreaks.push({\n pattern: 'hour',\n bounds: [\n ChartUtils.periodToDecimal(period.close) + timeZoneDiff,\n ChartUtils.periodToDecimal(period.open) + timeZoneDiff,\n ],\n })\n );\n // If there are seven business days, then there is no weekend\n if (businessDays.length < DAYS.length) {\n ChartUtils.createBoundsFromDays(businessDays).forEach(\n weekendBounds =>\n axisFormat.rangebreaks.push({\n pattern: 'day of week',\n bounds: weekendBounds,\n })\n );\n }\n }\n\n if (axisFormats.size === chart.axes.length) {\n return axisFormats;\n }\n }\n }\n }\n }\n }\n\n return axisFormats;\n }\n\n static getChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n // When reading data from the `Figure`, it already provides bins and values, so rather than using\n // plot.ly to calculate the bins and sum values, just convert it to a bar chart\n return 'bar';\n default:\n return ChartUtils.getPlotlyChartType(plotStyle, isBusinessTime);\n }\n }\n\n /**\n * Return the plotly axis property name\n * @param {dh.plot.AxisType} axisType The axis type to get the property name for\n */\n static getAxisPropertyName(axisType) {\n switch (axisType) {\n case dh.plot.AxisType.X:\n return 'x';\n case dh.plot.AxisType.Y:\n return 'y';\n default:\n return null;\n }\n }\n\n /**\n * Returns the plotly \"side\" value for the provided axis position\n * @param {dh.plot.AxisPosition} axisPosition The Iris AxisPosition of the axis\n */\n static getAxisSide(axisPosition) {\n switch (axisPosition) {\n case dh.plot.AxisPosition.BOTTOM:\n return 'bottom';\n case dh.plot.AxisPosition.TOP:\n return 'top';\n case dh.plot.AxisPosition.LEFT:\n return 'left';\n case dh.plot.AxisPosition.RIGHT:\n return 'right';\n default:\n return null;\n }\n }\n\n /**\n * Retrieve the chart that contains the passed in series from the figure\n * @param {dh.plot.Figure} figure The figure to retrieve the chart from\n * @param {dh.plot.Series} series The series to get the chart for\n */\n static getChartForSeries(figure, series) {\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n for (let j = 0; j < chart.series.length; j += 1) {\n if (series === chart.series[j]) {\n return chart;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get an object mapping axis to their ranges\n * @param {object} layout The plotly layout object to get the ranges from\n * @returns {object} An object mapping the axis name to it's range\n */\n static getLayoutRanges(layout) {\n const ranges = {};\n const keys = Object.keys(layout).filter(key => key.indexOf('axis') >= 0);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (layout[key] && layout[key].range && !layout[key].autorange) {\n // Only want to add the range if it's not autoranged\n ranges[key] = [...layout[key].range];\n }\n }\n\n return ranges;\n }\n\n /**\n * Updates the axes positions and sizes in the layout object provided.\n * If the axis did not exist in the layout previously, it is created and added.\n * Any axis that no longer exists in axes is removed.\n * With Downsampling enabled, will also update the range on the axis itself as appropriate\n * @param {object} layoutParam The layout object to update\n * @param {dh.plot.Axis[]} axes The axes to update the layout with\n * @param {number} plotWidth The width of the plot to calculate the axis sizes for\n * @param {number} plotHeight The height of the plot to calculate the axis sizes for\n * @param {func} getRangeParser A function to retrieve the range parser for a given axis\n */\n static updateLayoutAxes(\n layoutParam,\n axes,\n plotWidth = 0,\n plotHeight = 0,\n getRangeParser = null\n ) {\n const xAxisSize =\n plotWidth > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotHeight,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n const yAxisSize =\n plotHeight > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotWidth,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n\n // Adjust the bounds based on where the legend is\n // For now, always assume the legend is shown on the right\n const bounds = {\n left: 0,\n bottom: 0,\n top: 1,\n right: 1,\n };\n const axisPositionMap = ChartUtils.groupArray(axes, 'position');\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n if (rightAxes.length > 0) {\n if (plotWidth > 0) {\n bounds.right =\n 1 -\n Math.max(\n 0,\n Math.min(\n ChartUtils.LEGEND_WIDTH_PX / plotWidth,\n ChartUtils.MAX_LEGEND_SIZE\n )\n );\n } else {\n bounds.right = 1 - ChartUtils.DEFAULT_AXIS_SIZE;\n }\n }\n\n const layout = layoutParam;\n const axisTypeMap = ChartUtils.groupArray(axes, 'type');\n const axisTypes = [...axisTypeMap.keys()];\n for (let j = 0; j < axisTypes.length; j += 1) {\n const axisType = axisTypes[j];\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n if (axisProperty != null) {\n const typeAxes = axisTypeMap.get(axisType);\n const isYAxis = axisType === dh.plot.AxisType.Y;\n const plotSize = isYAxis ? plotHeight : plotWidth;\n let axisIndex = 0;\n for (axisIndex = 0; axisIndex < typeAxes.length; axisIndex += 1) {\n const axis = typeAxes[axisIndex];\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n if (layout[axisLayoutProperty] == null) {\n layout[axisLayoutProperty] = ChartUtils.makeLayoutAxis(axisType);\n }\n\n const layoutAxis = layout[axisLayoutProperty];\n ChartUtils.updateLayoutAxis(\n layoutAxis,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n );\n const { range, autorange } = layoutAxis;\n if (getRangeParser && range && !autorange) {\n const rangeParser = getRangeParser(axis);\n const [rangeStart, rangeEnd] = rangeParser(range);\n\n log.debug(\n 'Setting downsample range',\n plotSize,\n rangeStart,\n rangeEnd\n );\n\n axis.range(plotSize, rangeStart, rangeEnd);\n } else {\n axis.range(plotSize);\n }\n }\n\n let axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n while (layout[axisLayoutProperty] != null) {\n delete layout[axisLayoutProperty];\n\n axisIndex += 1;\n axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n }\n }\n }\n }\n\n static getAxisLayoutProperty(axisProperty, axisIndex) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n return `${axisProperty}axis${axisIndexString}`;\n }\n\n /**\n * Updates the layout axis object in place\n * @param {object} layoutAxisParam The plotly layout axis param\n * @param {dh.plot.Axis} axis The Iris Axis to update the plotly layout with\n * @param {number} axisIndex The type index for this axis\n * @param {Map<dh.plot.AxisPosition, dh.plot.Axis>} axisPositionMap All the axes mapped by position\n * @param {number} axisSize The size of each axis in percent\n * @param {object} bounds The bounds of the axes domains\n */\n static updateLayoutAxis(\n layoutAxisParam,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n ) {\n const isYAxis = axis.type === dh.plot.AxisType.Y;\n const axisSize = isYAxis ? yAxisSize : xAxisSize;\n const layoutAxis = layoutAxisParam;\n layoutAxis.title.text = axis.label;\n if (axis.log) {\n layoutAxis.type = 'log';\n }\n layoutAxis.side = ChartUtils.getAxisSide(axis.position);\n if (axisIndex > 0) {\n layoutAxis.overlaying = ChartUtils.getAxisPropertyName(axis.type);\n\n const positionAxes = axisPositionMap.get(axis.position);\n const sideIndex = positionAxes.indexOf(axis);\n if (sideIndex > 0) {\n layoutAxis.anchor = 'free';\n\n if (axis.position === dh.plot.AxisPosition.RIGHT) {\n layoutAxis.position =\n bounds.right + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.TOP) {\n layoutAxis.position =\n bounds.top + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.BOTTOM) {\n layoutAxis.position =\n bounds.bottom + (positionAxes.length - sideIndex + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.LEFT) {\n layoutAxis.position =\n bounds.left + (positionAxes.length - sideIndex + 1) * axisSize;\n }\n }\n } else if (axis.type === dh.plot.AxisType.X) {\n const leftAxes = axisPositionMap.get(dh.plot.AxisPosition.LEFT) || [];\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n const left = Math.max(\n bounds.left,\n bounds.left + (leftAxes.length - 1) * yAxisSize\n );\n const right = Math.min(\n bounds.right - (rightAxes.length - 1) * yAxisSize,\n bounds.right\n );\n layoutAxis.domain = [left, right];\n } else if (axis.type === dh.plot.AxisType.Y) {\n const bottomAxes = axisPositionMap.get(dh.plot.AxisPosition.BOTTOM) || [];\n const topAxes = axisPositionMap.get(dh.plot.AxisPosition.TOP) || [];\n const bottom = Math.max(\n bounds.bottom,\n bounds.bottom + (bottomAxes.length - 1) * xAxisSize\n );\n const top = Math.min(\n bounds.top - (topAxes.length - 1) * xAxisSize,\n bounds.top\n );\n layoutAxis.domain = [bottom, top];\n }\n }\n\n /**\n * Converts an open or close period to a declimal. e.g '09:30\" to 9.5\n *\n * @param {String} period the open or close value of the period\n */\n static periodToDecimal(period) {\n const values = period.split(':');\n return Number(values[0]) + Number(values[1] / 60);\n }\n\n /**\n * Creates range break bounds for plotly from business days.\n * For example a standard business week of ['MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY']\n * will result in [[6,1]] meaning close on Saturday and open on Monday.\n * If you remove Wednesday from the array, then you get two closures [[6, 1], [3, 4]]\n *\n * @param {Array} businessDays the days to display on the x-axis\n */\n static createBoundsFromDays(businessDays) {\n const businessDaysInt = businessDays.map(day => DAYS.indexOf(day));\n const nonBusinessDaysInt = DAYS.filter(\n day => !businessDays.includes(day)\n ).map(day => DAYS.indexOf(day));\n // These are the days when business reopens (e.g. Monday after a weekend)\n const reopenDays = new Set();\n nonBusinessDaysInt.forEach(closed => {\n for (let i = closed + 1; i < closed + DAYS.length; i += 1) {\n const adjustedDay = i % DAYS.length;\n if (businessDaysInt.includes(adjustedDay)) {\n reopenDays.add(adjustedDay);\n break;\n }\n }\n });\n const boundsArray = [];\n // For each reopen day, find the furthest previous closed day\n reopenDays.forEach(open => {\n for (let i = open - 1; i > open - DAYS.length; i -= 1) {\n const adjustedDay = i < 0 ? i + DAYS.length : i;\n if (businessDaysInt.includes(adjustedDay)) {\n const closedDay = (adjustedDay + 1) % 7;\n boundsArray.push([closedDay, open]);\n break;\n }\n }\n });\n return boundsArray;\n }\n\n /**\n * Creates an array of range breaks for all holidays.\n *\n * @param {Array} holidays an array of holidays\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n ) {\n const fullHolidays = [];\n const partialHolidays = [];\n holidays.forEach(holiday => {\n if (holiday.businessPeriods.length > 0) {\n partialHolidays.push(\n ...ChartUtils.createPartialHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n } else {\n fullHolidays.push(\n ChartUtils.createFullHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n });\n return [{ values: fullHolidays }, ...partialHolidays];\n }\n\n /**\n * Creates the range break value for a full holiday. A full holiday is day that has no business periods.\n *\n * @param {Holiday} holiday the full holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createFullHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n return ChartUtils.adjustDateForTimeZone(\n `${holiday.date.toString()} 00:00:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n );\n }\n\n /**\n * Creates the range break for a partial holiday. A partial holiday is holiday with business periods\n * that are different than the default business periods.\n *\n * @param {Holiday} holiday the partial holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createPartialHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n // If a holiday has business periods {open1, close1} and {open2, close2}\n // This will generate range breaks for:\n // closed from 00:00 to open1\n // closed from close1 to open2\n // closed from close2 to 23:59:59.999999\n const dateString = holiday.date.toString();\n const closedPeriods = ['00:00'];\n holiday.businessPeriods.forEach(period => {\n closedPeriods.push(period.open);\n closedPeriods.push(period.close);\n });\n // To go up to 23:59:59.999999, we calculate the dvalue using 24 - close\n closedPeriods.push('24:00');\n\n const rangeBreaks = [];\n for (let i = 0; i < closedPeriods.length; i += 2) {\n const startClose = closedPeriods[i];\n const endClose = closedPeriods[i + 1];\n // Skip over any periods where start and close are the same (zero hours)\n if (startClose !== endClose) {\n const values = [\n ChartUtils.adjustDateForTimeZone(\n `${dateString} ${startClose}:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n ),\n ];\n const dvalue =\n MILLIS_PER_HOUR *\n (ChartUtils.periodToDecimal(endClose) -\n ChartUtils.periodToDecimal(startClose));\n rangeBreaks.push({ values, dvalue });\n }\n }\n return rangeBreaks;\n }\n\n /**\n * Adjusts a date string from the calendar time zone to the formatter time zone.\n *\n * @param {string} dateString the date string\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static adjustDateForTimeZone(\n dateString,\n calendarTimeZone,\n formatterTimeZone\n ) {\n if (\n formatterTimeZone &&\n formatterTimeZone.standardOffset !== calendarTimeZone.standardOffset\n ) {\n return ChartUtils.unwrapValue(\n ChartUtils.wrapValue(\n dateString,\n BUSINESS_COLUMN_TYPE,\n calendarTimeZone\n ),\n formatterTimeZone\n );\n }\n return dateString;\n }\n\n /**\n * Groups an array and returns a map\n * @param {object[]} array The object to group\n * @param {string} property The property name to group by\n * @returns {Map<object, object>} A map containing the items grouped by their values for the property\n */\n static groupArray(array, property) {\n return array.reduce((result, item) => {\n const key = item[property];\n const group = result.get(key) || [];\n group.push(item);\n result.set(key, group);\n return result;\n }, new Map());\n }\n\n /**\n * Update\n */\n static updateRanges() {}\n\n /**\n * Unwraps a value provided from API to a value plotly can understand\n * Eg. Unwraps DateWrapper, LongWrapper objects.\n */\n static unwrapValue(value, timeZone = null) {\n if (value != null) {\n if (value.asDate) {\n return dh.i18n.DateTimeFormat.format(\n ChartUtils.DATE_FORMAT,\n value,\n timeZone\n );\n }\n\n if (value.asNumber) {\n return value.asNumber();\n }\n }\n\n return value;\n }\n\n /**\n *\n * @param {any} value The value to wrap up\n * @param {string} columnType The type of column this value is from\n * @param {dh.i18n.TimeZone} timeZone The time zone if applicable\n */\n static wrapValue(value, columnType, timeZone = null) {\n if (TableUtils.isDateType(columnType) && typeof value === 'string') {\n // Need to limit the format to the actual length of the string range set in plotly\n // Otherwise parse will fail\n const text = value;\n const format = ChartUtils.DATE_FORMAT.substr(0, value.length);\n const date = dh.i18n.DateTimeFormat.parse(format, text);\n if (!timeZone) {\n return date;\n }\n\n // IDS-5994 Due to date parsing, time zone, and daylight savings shenanigans, we need\n // to pass the actual offset with the time to have it parse correctly.\n // However, the offset can change based on the date because of Daylight Savings\n // So we end up parsing the date multiple times. And curse daylight savings.\n const tzFormat = `${format} Z`;\n const estimatedOffset = dh.i18n.DateTimeFormat.format(\n 'Z',\n date,\n timeZone\n );\n const estimatedDate = dh.i18n.DateTimeFormat.parse(\n tzFormat,\n `${text} ${estimatedOffset}`\n );\n const offset = dh.i18n.DateTimeFormat.format(\n 'Z',\n estimatedDate,\n timeZone\n );\n return dh.i18n.DateTimeFormat.parse(tzFormat, `${text} ${offset}`);\n }\n\n return value;\n }\n\n static makeLayoutAxis(type) {\n const axis = {\n automargin: true,\n gridcolor: ChartTheme.gridcolor,\n linecolor: ChartTheme.linecolor,\n rangeslider: { visible: false },\n showline: true,\n ticklen: 5, // act as padding, can't find a tick padding\n tickcolor: ChartTheme.paper_bgcolor, // hide ticks as padding\n tickfont: {\n color: ChartTheme.zerolinecolor,\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n };\n\n if (type === dh.plot.AxisType.X) {\n Object.assign(axis, {\n showgrid: true,\n });\n } else if (type === dh.plot.AxisType.Y) {\n Object.assign(axis, {\n zerolinecolor: ChartTheme.zerolinecolor,\n zerolinewidth: 2,\n });\n }\n\n return axis;\n }\n\n static makeDefaultLayout() {\n const layout = {\n ...ChartTheme,\n autosize: true,\n colorway: ChartTheme.colorway ? ChartTheme.colorway.split(' ') : [],\n font: {\n family: \"'Fira Sans', sans-serif\",\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n yanchor: 'top',\n pad: { ...ChartUtils.DEFAULT_TITLE_PADDING },\n y: 1,\n text: 'Untitled',\n },\n legend: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n margin: { ...ChartUtils.DEFAULT_MARGIN },\n xaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.X),\n yaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.Y),\n };\n layout.datarevision = 0;\n return layout;\n }\n\n /**\n * Dehydrate settings so they can be JSONified\n * @param {object} settings Chart builder settings\n */\n static dehydrateSettings(settings) {\n return {\n ...settings,\n type: `${settings.type}`,\n };\n }\n\n /**\n * Hydrate settings from a JSONable object\n * @param {object} settings Dehydrated settings\n */\n static hydrateSettings(settings) {\n return {\n ...settings,\n type: dh.plot.SeriesPlotStyle[settings.type],\n };\n }\n\n static titleFromSettings(settings) {\n const {\n series,\n xAxis,\n title = `${series.join(', ')} by ${xAxis}`,\n } = settings;\n\n return title;\n }\n\n /**\n * Creates the Figure settings from the Chart Builder settings\n * This should be deprecated at some point, and have Chart Builder create the figure settings directly.\n * This logic will still need to exist to translate existing charts, but could be part of a migration script\n * to translate the data.\n * Change when we decide to add more functionality to the Chart Builder.\n * @param {object} settings The chart builder settings\n * @param {string} settings.title The title for this figure\n * @param {string} settings.xAxis The name of the column to use for the x-axis\n * @param {string[]} settings.series The name of the columns to use for the series of this figure\n * @param {dh.plot.SeriesPlotStyle} settings.type The plot style for this figure\n */\n static makeFigureSettings(settings, table) {\n const { series, xAxis: settingsAxis, type } = settings;\n const title = ChartUtils.titleFromSettings(settings);\n const xAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.X}`,\n position: `${dh.plot.AxisPosition.BOTTOM}`,\n };\n const yAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.Y}`,\n position: `${dh.plot.AxisPosition.LEFT}`,\n };\n\n return {\n charts: [\n {\n chartType: `${dh.plot.ChartType.XY}`,\n axes: [xAxis, yAxis],\n series: series.map(name => ({\n plotStyle: `${type}`,\n name,\n dataSources: [\n {\n type: `${dh.plot.SourceType.X}`,\n columnName: settingsAxis,\n axis: xAxis,\n table,\n },\n {\n type: `${dh.plot.SourceType.Y}`,\n columnName: name,\n axis: yAxis,\n table,\n },\n ],\n })),\n },\n ],\n title,\n };\n }\n}\n\nexport default ChartUtils;\n"],"file":"ChartUtils.js"}
|
|
1
|
+
{"version":3,"sources":["../src/ChartUtils.js"],"names":["Log","TableUtils","dh","ChartTheme","log","module","DAYS","Object","freeze","calendar","DayOfWeek","values","BUSINESS_COLUMN_TYPE","MILLIS_PER_HOUR","NANOS_PER_MILLI","ChartUtils","getPlotlyChartType","plotStyle","isBusinessTime","plot","SeriesPlotStyle","SCATTER","LINE","BAR","STACKED_BAR","PIE","HISTOGRAM","OHLC","getPlotlyChartMode","getPlotlyProperty","sourceType","SourceType","X","Y","TIME","Z","X_LOW","X_HIGH","Y_LOW","Y_HIGH","OPEN","HIGH","LOW","CLOSE","SHAPE","SIZE","LABEL","COLOR","Error","getPlotlySeriesOrientation","series","sources","length","axis","type","AxisType","ORIENTATION","HORIZONTAL","VERTICAL","getPlotlyErrorBars","x","xLow","xHigh","array","map","value","i","arrayminus","symmetric","getPlotlyDateFormat","formatter","columnType","formatPattern","tickformat","replace","ticksuffix","dataFormatter","getColumnTypeFormatter","dhTimeZone","showTimeZone","i18n","DateTimeFormat","format","Date","automargin","convertNumberPrefix","prefix","getPlotlyNumberFormat","subpatterns","split","placeholderDigits","zeroDigits","decimalDigits","optionalDecimalDigits","numberType","percentSign","suffix","match","paddingLength","isCommaSeparated","indexOf","comma","plotlyNumberType","decimalLength","trimOption","tickprefix","getPlotlyAxisFormat","source","axisFormat","isDateType","addTickSpacing","isNumberType","formatType","AxisFormatType","CATEGORY","gapBetweenMajorTicks","updatedFormat","tickSpacing","Math","tickmode","dtick","getSourceForAxis","chart","j","getSeriesVisibility","name","settings","hiddenSeries","includes","getHiddenLabels","makeSeriesData","mode","orientation","makeSeriesDataFromSeries","axisTypeMap","seriesVisibility","lineColor","shapeColor","some","businessCalendar","getChartType","seriesData","addSourcesToSeriesData","addStylingToSeriesData","seriesDataParam","k","dataAttributeName","axisProperty","getAxisPropertyName","axes","get","axisIndex","axisIndexString","marker","line","width","AREA","fill","STACKED_AREA","stackgroup","STEP","shape","assign","color","paper_bgcolor","increasing","ohlc_increasing","decreasing","ohlc_decreasing","textinfo","outsidetextfont","title_color","visible","getAxisFormats","figure","axisFormats","Map","nullFormat","charts","groupArray","axisType","typeAxes","axisLayoutProperty","getAxisLayoutProperty","has","debug","set","rangebreaks","businessPeriods","businessDays","holidays","timeZone","calendarTimeZone","formatterTimeZone","timeZoneDiff","standardOffset","push","createRangeBreakValuesFromHolidays","forEach","period","pattern","bounds","periodToDecimal","close","open","createBoundsFromDays","weekendBounds","size","getAxisSide","axisPosition","AxisPosition","BOTTOM","TOP","LEFT","RIGHT","getChartForSeries","getLayoutRanges","layout","ranges","keys","filter","key","range","autorange","updateLayoutAxes","layoutParam","plotWidth","plotHeight","getRangeParser","xAxisSize","max","MIN_AXIS_SIZE","min","AXIS_SIZE_PX","MAX_AXIS_SIZE","DEFAULT_AXIS_SIZE","yAxisSize","left","bottom","top","right","axisPositionMap","rightAxes","LEGEND_WIDTH_PX","MAX_LEGEND_SIZE","axisTypes","isYAxis","plotSize","makeLayoutAxis","layoutAxis","updateLayoutAxis","rangeParser","rangeStart","rangeEnd","layoutAxisParam","axisSize","title","text","label","side","position","overlaying","positionAxes","sideIndex","anchor","leftAxes","domain","bottomAxes","topAxes","Number","businessDaysInt","day","nonBusinessDaysInt","reopenDays","Set","closed","adjustedDay","add","boundsArray","closedDay","fullHolidays","partialHolidays","holiday","createPartialHoliday","createFullHoliday","adjustDateForTimeZone","date","toString","dateString","closedPeriods","rangeBreaks","startClose","endClose","dvalue","unwrapValue","wrapValue","property","reduce","result","item","group","updateRanges","asDate","DATE_FORMAT","asNumber","substr","parse","tzFormat","estimatedOffset","estimatedDate","offset","gridcolor","linecolor","rangeslider","showline","ticklen","tickcolor","tickfont","zerolinecolor","font","showgrid","zerolinewidth","makeDefaultLayout","autosize","colorway","family","yanchor","pad","DEFAULT_TITLE_PADDING","y","legend","margin","DEFAULT_MARGIN","xaxis","yaxis","datarevision","dehydrateSettings","hydrateSettings","titleFromSettings","xAxis","join","makeFigureSettings","table","settingsAxis","NUMBER","yAxis","chartType","ChartType","XY","dataSources","columnName","l","r","t","b"],"mappings":"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","sourcesContent":["import Log from '@deephaven/log';\nimport { TableUtils } from '@deephaven/iris-grid';\nimport dh from '@deephaven/jsapi-shim';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('ChartUtils');\n\nconst DAYS = Object.freeze(dh.calendar.DayOfWeek.values());\n\nconst BUSINESS_COLUMN_TYPE = 'io.deephaven.db.tables.utils.DBDateTime';\n\nconst MILLIS_PER_HOUR = 3600000;\n\nconst NANOS_PER_MILLI = 1000000;\n\nclass ChartUtils {\n static DEFAULT_AXIS_SIZE = 0.15;\n\n static MIN_AXIS_SIZE = 0.025;\n\n static MAX_AXIS_SIZE = 0.2;\n\n static AXIS_SIZE_PX = 75;\n\n static LEGEND_WIDTH_PX = 50;\n\n static MAX_LEGEND_SIZE = 0.25;\n\n static ORIENTATION = Object.freeze({\n HORIZONTAL: 'h',\n VERTICAL: 'v',\n });\n\n static DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSS';\n\n static DEFAULT_MARGIN = Object.freeze({ l: 60, r: 50, t: 30, b: 60, pad: 0 });\n\n static DEFAULT_TITLE_PADDING = Object.freeze({ t: 8 });\n\n static SUBTITLE_LINE_HEIGHT = 25;\n\n /**\n * Converts the Iris plot style into a plotly chart type\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle\n * @param {boolean} isBusinessTime If the plot is using business time for an axis\n */\n static getPlotlyChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n // scattergl mode is more performant, but doesn't support the rangebreaks we need for businessTime calendars\n return !isBusinessTime ? 'scattergl' : 'scatter';\n case dh.plot.SeriesPlotStyle.LINE:\n // There is also still some artifacting bugs with scattergl: https://github.com/plotly/plotly.js/issues/3522\n // The artifacting only occurs on line plots, which we can draw with fairly decent performance using SVG paths\n // Once the above plotly issue is fixed, scattergl should be used here (when !isBusinessTime)\n return 'scatter';\n case dh.plot.SeriesPlotStyle.BAR:\n case dh.plot.SeriesPlotStyle.STACKED_BAR:\n return 'bar';\n\n case dh.plot.SeriesPlotStyle.PIE:\n return 'pie';\n\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'histogram';\n\n case dh.plot.SeriesPlotStyle.OHLC:\n return 'ohlc';\n\n default:\n return null;\n }\n }\n\n /**\n * Converts the Iris plot style into a plotly chart mode\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle.*\n */\n static getPlotlyChartMode(plotStyle) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'markers';\n case dh.plot.SeriesPlotStyle.LINE:\n return 'lines';\n default:\n return null;\n }\n }\n\n /**\n * Get the property to set on the series data for plotly\n * @param {dh.plot.SeriesPlotStyle} plotStyle The plot style of the series\n * @param {dh.plot.SourceType} sourceType The source type for the series\n */\n static getPlotlyProperty(plotStyle, sourceType) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.PIE:\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'labels';\n case dh.plot.SourceType.Y:\n return 'values';\n default:\n break;\n }\n break;\n case dh.plot.SeriesPlotStyle.OHLC:\n switch (sourceType) {\n case dh.plot.SourceType.TIME:\n return 'x';\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'x';\n case dh.plot.SourceType.Y:\n return 'y';\n case dh.plot.SourceType.Z:\n return 'z';\n case dh.plot.SourceType.X_LOW:\n return 'xLow';\n case dh.plot.SourceType.X_HIGH:\n return 'xHigh';\n case dh.plot.SourceType.Y_LOW:\n return 'yLow';\n case dh.plot.SourceType.Y_HIGH:\n return 'yHigh';\n case dh.plot.SourceType.TIME:\n return 'time';\n case dh.plot.SourceType.OPEN:\n return 'open';\n case dh.plot.SourceType.HIGH:\n return 'high';\n case dh.plot.SourceType.LOW:\n return 'low';\n case dh.plot.SourceType.CLOSE:\n return 'close';\n case dh.plot.SourceType.SHAPE:\n return 'shape';\n case dh.plot.SourceType.SIZE:\n return 'size';\n case dh.plot.SourceType.LABEL:\n return 'label';\n case dh.plot.SourceType.COLOR:\n return 'color';\n default:\n throw new Error('Unrecognized source type', sourceType);\n }\n }\n\n static getPlotlySeriesOrientation(series) {\n const { sources } = series;\n if (sources.length === 2 && sources[0].axis.type === dh.plot.AxisType.Y) {\n return ChartUtils.ORIENTATION.HORIZONTAL;\n }\n\n return ChartUtils.ORIENTATION.VERTICAL;\n }\n\n /**\n * Generate the plotly error bar data from the passed in data.\n * Iris passes in the values as absolute, plotly needs them as relative.\n * @param {Array[Number]} x The main data array\n * @param {Array[Number]} xLow The absolute low values\n * @param {Array[Number]} xHigh\n *\n * @returns {Object} The error_x object required by plotly, or null if none is required\n */\n static getPlotlyErrorBars(x, xLow, xHigh) {\n const array = xHigh.map((value, i) => value - x[i]);\n const arrayminus = xLow.map((value, i) => x[i] - value);\n return {\n type: 'data',\n symmetric: false,\n array,\n arrayminus,\n };\n }\n\n static getPlotlyDateFormat(formatter, columnType, formatPattern) {\n const tickformat =\n formatPattern == null\n ? null\n : formatPattern\n .replace('%', '%%')\n .replace(/S{9}/g, '%9f')\n .replace(/S{8}/g, '%8f')\n .replace(/S{7}/g, '%7f')\n .replace(/S{6}/g, '%6f')\n .replace(/S{5}/g, '%5f')\n .replace(/S{4}/g, '%4f')\n .replace(/S{3}/g, '%3f')\n .replace(/S{2}/g, '%2f')\n .replace(/S{1}/g, '%1f')\n .replace(/y{4}/g, '%Y')\n .replace(/y{2}/g, '%y')\n .replace(/M{4}/g, '%B')\n .replace(/M{3}/g, '%b')\n .replace(/M{2}/g, '%m')\n .replace(/M{1}/g, '%-m')\n .replace(/E{4,}/g, '%A')\n .replace(/E{1,}/g, '%a')\n .replace(/d{2}/g, '%d')\n .replace(/([^%]|^)d{1}/g, '$1%-d')\n .replace(/H{2}/g, '%H')\n .replace(/h{2}/g, '%I')\n .replace(/h{1}/g, '%-I')\n .replace(/m{2}/g, '%M')\n .replace(/s{2}/g, '%S')\n .replace(\"'T'\", 'T')\n .replace(' z', ''); // timezone added as suffix if necessary\n\n let ticksuffix = null;\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter.dhTimeZone != null && dataFormatter.showTimeZone) {\n ticksuffix = dh.i18n.DateTimeFormat.format(\n ' z',\n new Date(),\n dataFormatter.dhTimeZone\n );\n }\n\n return { tickformat, ticksuffix, automargin: true };\n }\n\n static convertNumberPrefix(prefix) {\n return prefix.replace(/\\u00A4\\u00A4/g, 'USD').replace(/\\u00A4/g, '$');\n }\n\n static getPlotlyNumberFormat(formatter, columnType, formatPattern) {\n if (!formatPattern) {\n return null;\n }\n\n // We translate java formatting: https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html\n // Into d3 number formatting: https://github.com/d3/d3-format\n // We can't translate number formatting exactly, but should be able to translate the most common cases\n // First split it into the subpatterns; currently only handling the positive subpattern, ignoring the rest\n const subpatterns = formatPattern.split(';');\n const [\n ,\n prefix,\n placeholderDigits,\n zeroDigits,\n ,\n decimalDigits,\n optionalDecimalDigits,\n numberType,\n percentSign,\n suffix,\n ] = subpatterns[0].match(\n /^([^#,0.]*)([#,]*)([0,]*)(\\.?)(0*)(#*)(E?0*)(%?)(.*)/\n );\n\n const paddingLength = zeroDigits.replace(',', '').length;\n const isCommaSeparated =\n placeholderDigits.indexOf(',') >= 0 || zeroDigits.indexOf(',') >= 0;\n const comma = isCommaSeparated ? ',' : '';\n const plotlyNumberType = numberType ? 'e' : 'f';\n const type = percentSign || plotlyNumberType;\n const decimalLength = decimalDigits.length + optionalDecimalDigits.length;\n // IDS-4565 Plotly uses an older version of d3 which doesn't support the trim option or negative brackets\n // If plotly updates it's d3 version, this should be re-enabled\n // const trimOption = optionalDecimalDigits.length > 0 ? '~' : '';\n const trimOption = '';\n\n const tickformat = `0${paddingLength}${comma}.${decimalLength}${trimOption}${type}`;\n const tickprefix = ChartUtils.convertNumberPrefix(prefix);\n // prefix and suffix are processed the same\n const ticksuffix = ChartUtils.convertNumberPrefix(suffix);\n\n return { tickformat, tickprefix, ticksuffix, automargin: true };\n }\n\n /**\n * Gets the plotly axis formatting information from the source passed in\n * @param {dh.plot.Source} source The Source to get the formatter information from\n * @param {Formatter} formatter The current formatter for formatting data\n */\n static getPlotlyAxisFormat(source, formatter = null) {\n const { axis, columnType } = source;\n const { formatPattern } = axis;\n\n let axisFormat = null;\n if (TableUtils.isDateType(columnType)) {\n axisFormat = ChartUtils.getPlotlyDateFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, true);\n } else if (TableUtils.isNumberType(columnType)) {\n axisFormat = ChartUtils.getPlotlyNumberFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, false);\n }\n\n if (axis.formatType === dh.plot.AxisFormatType.CATEGORY) {\n if (axisFormat) {\n axisFormat.type = 'category';\n } else {\n axisFormat = { type: 'category', tickformat: null, ticksuffix: null };\n }\n }\n\n return axisFormat;\n }\n\n /**\n * Adds tick spacing for an axis that has gapBetweenMajorTicks defined.\n *\n * @param {object} axisFormat the current axis format, may be null\n * @param {object} axis the current axis\n * @param {boolean} isDateType indicates if the columns is a date type\n */\n static addTickSpacing(axisFormat, axis, isDateType) {\n const { gapBetweenMajorTicks } = axis;\n if (gapBetweenMajorTicks > 0) {\n const updatedFormat = axisFormat || {};\n let tickSpacing = gapBetweenMajorTicks;\n if (isDateType) {\n // Need to convert from nanoseconds to milliseconds\n tickSpacing = gapBetweenMajorTicks / NANOS_PER_MILLI;\n }\n if (axis.log) {\n tickSpacing = Math.log(tickSpacing);\n }\n // Note that tickmode defaults to 'auto'\n updatedFormat.tickmode = 'linear';\n updatedFormat.dtick = tickSpacing;\n return updatedFormat;\n }\n\n return axisFormat;\n }\n\n /**\n * Retrieve the data source for a given axis in a chart\n * @param {dh.plot.Chart} chart The chart to get the source for\n * @param {dh.plot.Axis} axis The axis to find the source for\n * @returns {dh.plot.Source} The first source matching this axis\n */\n static getSourceForAxis(chart, axis) {\n for (let i = 0; i < chart.series.length; i += 1) {\n const series = chart.series[i];\n for (let j = 0; j < series.sources.length; j += 1) {\n const source = series.sources[j];\n if (source.axis === axis) {\n return source;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get visibility setting for the series object\n * @param {string} name The series name to get the visibility for\n * @param {object} settings Chart settings\n * @returns {boolean|string} True for visible series and 'legendonly' for hidden\n */\n static getSeriesVisibility(name, settings) {\n if (settings?.hiddenSeries?.includes(name)) {\n return 'legendonly';\n }\n return true;\n }\n\n /**\n * Get hidden labels array from chart settings\n * @param {object} settings Chart settings\n * @returns {string[]} Array of hidden series names\n */\n static getHiddenLabels(settings) {\n if (settings?.hiddenSeries) {\n return [...settings.hiddenSeries];\n }\n return [];\n }\n\n /**\n * Create a default series data object. Apply styling to the object afterward.\n * @returns {Object} A simple series data object with no styling\n */\n static makeSeriesData(\n type,\n mode,\n name,\n orientation = ChartUtils.ORIENTATION.VERTICAL\n ) {\n return { type, mode, name, orientation };\n }\n\n /**\n * Create a data series (trace) for use with plotly\n * @param {dh.plot.Series} series The series to create the series data with\n * @param {Map<dh.plot.AxisType, dh.plot.Axis[]>} axisTypeMap The map of axes grouped by type\n * @param {boolean|string} seriesVisibility Visibility setting for the series\n * @returns {Object} The series data (trace) object for use with plotly.\n */\n static makeSeriesDataFromSeries(series, axisTypeMap, seriesVisibility) {\n const { name, plotStyle, lineColor, shapeColor, sources } = series;\n\n const isBusinessTime = sources.some(source => source.axis.businessCalendar);\n const type = ChartUtils.getChartType(plotStyle, isBusinessTime);\n const mode = ChartUtils.getPlotlyChartMode(plotStyle);\n const orientation = ChartUtils.getPlotlySeriesOrientation(series);\n\n const seriesData = ChartUtils.makeSeriesData(type, mode, name, orientation);\n\n ChartUtils.addSourcesToSeriesData(\n seriesData,\n plotStyle,\n sources,\n axisTypeMap\n );\n\n ChartUtils.addStylingToSeriesData(\n seriesData,\n plotStyle,\n lineColor,\n shapeColor,\n seriesVisibility\n );\n\n return seriesData;\n }\n\n static addSourcesToSeriesData(\n seriesDataParam,\n plotStyle,\n sources,\n axisTypeMap\n ) {\n const seriesData = seriesDataParam;\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis, type: sourceType } = source;\n\n const dataAttributeName = ChartUtils.getPlotlyProperty(\n plotStyle,\n sourceType\n );\n seriesData[dataAttributeName] = [];\n\n const axisProperty = ChartUtils.getAxisPropertyName(axis.type);\n const axes = axisTypeMap.get(axis.type);\n const axisIndex = axes.indexOf(axis);\n if (axisProperty != null) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n seriesData[`${axisProperty}axis`] = `${axisProperty}${axisIndexString}`;\n }\n }\n }\n\n static addStylingToSeriesData(\n seriesDataParam,\n plotStyle,\n lineColor = null,\n shapeColor = null,\n seriesVisibility = null\n ) {\n const seriesData = seriesDataParam;\n // Add some empty objects so we can fill them in later with details without checking for existence\n seriesData.marker = { line: {} }; // border line width on markers\n seriesData.line = {\n width: 1, // default line width for lines, should eventually be able to override\n };\n\n if (plotStyle === dh.plot.SeriesPlotStyle.AREA) {\n seriesData.fill = 'tozeroy';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STACKED_AREA) {\n seriesData.stackgroup = 'stack';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STEP) {\n seriesData.line.shape = 'hv'; // plot.ly horizontal then vertical step styling\n } else if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n // The default histfunc in plotly is 'count', but the data passed up from the API provides explicit x/y values and bins\n // Since it's converted to bar, just set the widths of each bar\n seriesData.width = [];\n Object.assign(seriesData.marker.line, {\n color: ChartTheme.paper_bgcolor,\n width: 1,\n });\n } else if (plotStyle === dh.plot.SeriesPlotStyle.OHLC) {\n seriesData.increasing = {\n line: { color: ChartTheme.ohlc_increasing },\n };\n seriesData.decreasing = {\n line: { color: ChartTheme.ohlc_decreasing },\n };\n } else if (plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n seriesData.textinfo = 'label+percent';\n seriesData.outsidetextfont = { color: ChartTheme.title_color };\n }\n\n if (lineColor != null) {\n if (plotStyle === dh.plot.SeriesPlotStyle.BAR) {\n seriesData.marker.color = lineColor;\n } else {\n seriesData.line.color = lineColor;\n }\n }\n\n if (shapeColor != null) {\n seriesData.marker.color = shapeColor;\n }\n\n // Skipping pie charts\n // Pie slice visibility is configured in chart layout instead of series data\n if (seriesVisibility != null && plotStyle !== dh.plot.SeriesPlotStyle.PIE) {\n seriesData.visible = seriesVisibility;\n }\n }\n\n /**\n * Retrieve the axis formats from the provided figure.\n * Currently defaults to just the x/y axes.\n * @param {dh.plot.Figure} figure The figure to get the axis formats for\n * @param {Formatter} formatter The formatter to use when getting the axis format\n * @returns {Map<string, object>} A map of axis layout property names to axis formats\n */\n static getAxisFormats(figure, formatter) {\n const axisFormats = new Map();\n const nullFormat = { tickformat: null, ticksuffix: null };\n\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n const axisTypeMap = ChartUtils.groupArray(chart.axes, 'type');\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n const { sources } = series;\n\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis } = source;\n const { type: axisType } = axis;\n const typeAxes = axisTypeMap.get(axisType);\n const axisIndex = typeAxes.indexOf(axis);\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n\n if (axisFormats.has(axisLayoutProperty)) {\n log.debug(`${axisLayoutProperty} already added.`);\n } else {\n log.debug(`Adding ${axisLayoutProperty} to axisFormats.`);\n const axisFormat = ChartUtils.getPlotlyAxisFormat(\n source,\n formatter\n );\n if (axisFormat === null) {\n axisFormats.set(axisLayoutProperty, nullFormat);\n } else {\n axisFormats.set(axisLayoutProperty, axisFormat);\n\n const { businessCalendar } = axis;\n if (businessCalendar) {\n axisFormat.rangebreaks = [];\n const {\n businessPeriods,\n businessDays,\n holidays,\n timeZone: calendarTimeZone,\n } = businessCalendar;\n const formatterTimeZone = formatter?.getColumnTypeFormatter(\n BUSINESS_COLUMN_TYPE\n )?.dhTimeZone;\n const timeZoneDiff = formatterTimeZone\n ? (calendarTimeZone.standardOffset -\n formatterTimeZone.standardOffset) /\n 60\n : 0;\n if (holidays.length > 0) {\n axisFormat.rangebreaks.push(\n ...ChartUtils.createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n businessPeriods.forEach(period =>\n axisFormat.rangebreaks.push({\n pattern: 'hour',\n bounds: [\n ChartUtils.periodToDecimal(period.close) + timeZoneDiff,\n ChartUtils.periodToDecimal(period.open) + timeZoneDiff,\n ],\n })\n );\n // If there are seven business days, then there is no weekend\n if (businessDays.length < DAYS.length) {\n ChartUtils.createBoundsFromDays(businessDays).forEach(\n weekendBounds =>\n axisFormat.rangebreaks.push({\n pattern: 'day of week',\n bounds: weekendBounds,\n })\n );\n }\n }\n\n if (axisFormats.size === chart.axes.length) {\n return axisFormats;\n }\n }\n }\n }\n }\n }\n\n return axisFormats;\n }\n\n static getChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n // When reading data from the `Figure`, it already provides bins and values, so rather than using\n // plot.ly to calculate the bins and sum values, just convert it to a bar chart\n return 'bar';\n default:\n return ChartUtils.getPlotlyChartType(plotStyle, isBusinessTime);\n }\n }\n\n /**\n * Return the plotly axis property name\n * @param {dh.plot.AxisType} axisType The axis type to get the property name for\n */\n static getAxisPropertyName(axisType) {\n switch (axisType) {\n case dh.plot.AxisType.X:\n return 'x';\n case dh.plot.AxisType.Y:\n return 'y';\n default:\n return null;\n }\n }\n\n /**\n * Returns the plotly \"side\" value for the provided axis position\n * @param {dh.plot.AxisPosition} axisPosition The Iris AxisPosition of the axis\n */\n static getAxisSide(axisPosition) {\n switch (axisPosition) {\n case dh.plot.AxisPosition.BOTTOM:\n return 'bottom';\n case dh.plot.AxisPosition.TOP:\n return 'top';\n case dh.plot.AxisPosition.LEFT:\n return 'left';\n case dh.plot.AxisPosition.RIGHT:\n return 'right';\n default:\n return null;\n }\n }\n\n /**\n * Retrieve the chart that contains the passed in series from the figure\n * @param {dh.plot.Figure} figure The figure to retrieve the chart from\n * @param {dh.plot.Series} series The series to get the chart for\n */\n static getChartForSeries(figure, series) {\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n for (let j = 0; j < chart.series.length; j += 1) {\n if (series === chart.series[j]) {\n return chart;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get an object mapping axis to their ranges\n * @param {object} layout The plotly layout object to get the ranges from\n * @returns {object} An object mapping the axis name to it's range\n */\n static getLayoutRanges(layout) {\n const ranges = {};\n const keys = Object.keys(layout).filter(key => key.indexOf('axis') >= 0);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (layout[key] && layout[key].range && !layout[key].autorange) {\n // Only want to add the range if it's not autoranged\n ranges[key] = [...layout[key].range];\n }\n }\n\n return ranges;\n }\n\n /**\n * Updates the axes positions and sizes in the layout object provided.\n * If the axis did not exist in the layout previously, it is created and added.\n * Any axis that no longer exists in axes is removed.\n * With Downsampling enabled, will also update the range on the axis itself as appropriate\n * @param {object} layoutParam The layout object to update\n * @param {dh.plot.Axis[]} axes The axes to update the layout with\n * @param {number} plotWidth The width of the plot to calculate the axis sizes for\n * @param {number} plotHeight The height of the plot to calculate the axis sizes for\n * @param {func} getRangeParser A function to retrieve the range parser for a given axis\n */\n static updateLayoutAxes(\n layoutParam,\n axes,\n plotWidth = 0,\n plotHeight = 0,\n getRangeParser = null\n ) {\n const xAxisSize =\n plotWidth > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotHeight,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n const yAxisSize =\n plotHeight > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotWidth,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n\n // Adjust the bounds based on where the legend is\n // For now, always assume the legend is shown on the right\n const bounds = {\n left: 0,\n bottom: 0,\n top: 1,\n right: 1,\n };\n const axisPositionMap = ChartUtils.groupArray(axes, 'position');\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n if (rightAxes.length > 0) {\n if (plotWidth > 0) {\n bounds.right =\n 1 -\n Math.max(\n 0,\n Math.min(\n ChartUtils.LEGEND_WIDTH_PX / plotWidth,\n ChartUtils.MAX_LEGEND_SIZE\n )\n );\n } else {\n bounds.right = 1 - ChartUtils.DEFAULT_AXIS_SIZE;\n }\n }\n\n const layout = layoutParam;\n const axisTypeMap = ChartUtils.groupArray(axes, 'type');\n const axisTypes = [...axisTypeMap.keys()];\n for (let j = 0; j < axisTypes.length; j += 1) {\n const axisType = axisTypes[j];\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n if (axisProperty != null) {\n const typeAxes = axisTypeMap.get(axisType);\n const isYAxis = axisType === dh.plot.AxisType.Y;\n const plotSize = isYAxis ? plotHeight : plotWidth;\n let axisIndex = 0;\n for (axisIndex = 0; axisIndex < typeAxes.length; axisIndex += 1) {\n const axis = typeAxes[axisIndex];\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n if (layout[axisLayoutProperty] == null) {\n layout[axisLayoutProperty] = ChartUtils.makeLayoutAxis(axisType);\n }\n\n const layoutAxis = layout[axisLayoutProperty];\n ChartUtils.updateLayoutAxis(\n layoutAxis,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n );\n const { range, autorange } = layoutAxis;\n if (getRangeParser && range && !autorange) {\n const rangeParser = getRangeParser(axis);\n const [rangeStart, rangeEnd] = rangeParser(range);\n\n log.debug(\n 'Setting downsample range',\n plotSize,\n rangeStart,\n rangeEnd\n );\n\n axis.range(plotSize, rangeStart, rangeEnd);\n } else {\n axis.range(plotSize);\n }\n }\n\n let axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n while (layout[axisLayoutProperty] != null) {\n delete layout[axisLayoutProperty];\n\n axisIndex += 1;\n axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n }\n }\n }\n }\n\n static getAxisLayoutProperty(axisProperty, axisIndex) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n return `${axisProperty}axis${axisIndexString}`;\n }\n\n /**\n * Updates the layout axis object in place\n * @param {object} layoutAxisParam The plotly layout axis param\n * @param {dh.plot.Axis} axis The Iris Axis to update the plotly layout with\n * @param {number} axisIndex The type index for this axis\n * @param {Map<dh.plot.AxisPosition, dh.plot.Axis>} axisPositionMap All the axes mapped by position\n * @param {number} axisSize The size of each axis in percent\n * @param {object} bounds The bounds of the axes domains\n */\n static updateLayoutAxis(\n layoutAxisParam,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n ) {\n const isYAxis = axis.type === dh.plot.AxisType.Y;\n const axisSize = isYAxis ? yAxisSize : xAxisSize;\n const layoutAxis = layoutAxisParam;\n layoutAxis.title.text = axis.label;\n if (axis.log) {\n layoutAxis.type = 'log';\n }\n layoutAxis.side = ChartUtils.getAxisSide(axis.position);\n if (axisIndex > 0) {\n layoutAxis.overlaying = ChartUtils.getAxisPropertyName(axis.type);\n\n const positionAxes = axisPositionMap.get(axis.position);\n const sideIndex = positionAxes.indexOf(axis);\n if (sideIndex > 0) {\n layoutAxis.anchor = 'free';\n\n if (axis.position === dh.plot.AxisPosition.RIGHT) {\n layoutAxis.position =\n bounds.right + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.TOP) {\n layoutAxis.position =\n bounds.top + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.BOTTOM) {\n layoutAxis.position =\n bounds.bottom + (positionAxes.length - sideIndex + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.LEFT) {\n layoutAxis.position =\n bounds.left + (positionAxes.length - sideIndex + 1) * axisSize;\n }\n }\n } else if (axis.type === dh.plot.AxisType.X) {\n const leftAxes = axisPositionMap.get(dh.plot.AxisPosition.LEFT) || [];\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n const left = Math.max(\n bounds.left,\n bounds.left + (leftAxes.length - 1) * yAxisSize\n );\n const right = Math.min(\n bounds.right - (rightAxes.length - 1) * yAxisSize,\n bounds.right\n );\n layoutAxis.domain = [left, right];\n } else if (axis.type === dh.plot.AxisType.Y) {\n const bottomAxes = axisPositionMap.get(dh.plot.AxisPosition.BOTTOM) || [];\n const topAxes = axisPositionMap.get(dh.plot.AxisPosition.TOP) || [];\n const bottom = Math.max(\n bounds.bottom,\n bounds.bottom + (bottomAxes.length - 1) * xAxisSize\n );\n const top = Math.min(\n bounds.top - (topAxes.length - 1) * xAxisSize,\n bounds.top\n );\n layoutAxis.domain = [bottom, top];\n }\n }\n\n /**\n * Converts an open or close period to a declimal. e.g '09:30\" to 9.5\n *\n * @param {String} period the open or close value of the period\n */\n static periodToDecimal(period) {\n const values = period.split(':');\n return Number(values[0]) + Number(values[1] / 60);\n }\n\n /**\n * Creates range break bounds for plotly from business days.\n * For example a standard business week of ['MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY']\n * will result in [[6,1]] meaning close on Saturday and open on Monday.\n * If you remove Wednesday from the array, then you get two closures [[6, 1], [3, 4]]\n *\n * @param {Array} businessDays the days to display on the x-axis\n */\n static createBoundsFromDays(businessDays) {\n const businessDaysInt = businessDays.map(day => DAYS.indexOf(day));\n const nonBusinessDaysInt = DAYS.filter(\n day => !businessDays.includes(day)\n ).map(day => DAYS.indexOf(day));\n // These are the days when business reopens (e.g. Monday after a weekend)\n const reopenDays = new Set();\n nonBusinessDaysInt.forEach(closed => {\n for (let i = closed + 1; i < closed + DAYS.length; i += 1) {\n const adjustedDay = i % DAYS.length;\n if (businessDaysInt.includes(adjustedDay)) {\n reopenDays.add(adjustedDay);\n break;\n }\n }\n });\n const boundsArray = [];\n // For each reopen day, find the furthest previous closed day\n reopenDays.forEach(open => {\n for (let i = open - 1; i > open - DAYS.length; i -= 1) {\n const adjustedDay = i < 0 ? i + DAYS.length : i;\n if (businessDaysInt.includes(adjustedDay)) {\n const closedDay = (adjustedDay + 1) % 7;\n boundsArray.push([closedDay, open]);\n break;\n }\n }\n });\n return boundsArray;\n }\n\n /**\n * Creates an array of range breaks for all holidays.\n *\n * @param {Array} holidays an array of holidays\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n ) {\n const fullHolidays = [];\n const partialHolidays = [];\n holidays.forEach(holiday => {\n if (holiday.businessPeriods.length > 0) {\n partialHolidays.push(\n ...ChartUtils.createPartialHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n } else {\n fullHolidays.push(\n ChartUtils.createFullHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n });\n return [{ values: fullHolidays }, ...partialHolidays];\n }\n\n /**\n * Creates the range break value for a full holiday. A full holiday is day that has no business periods.\n *\n * @param {Holiday} holiday the full holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createFullHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n return ChartUtils.adjustDateForTimeZone(\n `${holiday.date.toString()} 00:00:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n );\n }\n\n /**\n * Creates the range break for a partial holiday. A partial holiday is holiday with business periods\n * that are different than the default business periods.\n *\n * @param {Holiday} holiday the partial holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createPartialHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n // If a holiday has business periods {open1, close1} and {open2, close2}\n // This will generate range breaks for:\n // closed from 00:00 to open1\n // closed from close1 to open2\n // closed from close2 to 23:59:59.999999\n const dateString = holiday.date.toString();\n const closedPeriods = ['00:00'];\n holiday.businessPeriods.forEach(period => {\n closedPeriods.push(period.open);\n closedPeriods.push(period.close);\n });\n // To go up to 23:59:59.999999, we calculate the dvalue using 24 - close\n closedPeriods.push('24:00');\n\n const rangeBreaks = [];\n for (let i = 0; i < closedPeriods.length; i += 2) {\n const startClose = closedPeriods[i];\n const endClose = closedPeriods[i + 1];\n // Skip over any periods where start and close are the same (zero hours)\n if (startClose !== endClose) {\n const values = [\n ChartUtils.adjustDateForTimeZone(\n `${dateString} ${startClose}:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n ),\n ];\n const dvalue =\n MILLIS_PER_HOUR *\n (ChartUtils.periodToDecimal(endClose) -\n ChartUtils.periodToDecimal(startClose));\n rangeBreaks.push({ values, dvalue });\n }\n }\n return rangeBreaks;\n }\n\n /**\n * Adjusts a date string from the calendar time zone to the formatter time zone.\n *\n * @param {string} dateString the date string\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static adjustDateForTimeZone(\n dateString,\n calendarTimeZone,\n formatterTimeZone\n ) {\n if (\n formatterTimeZone &&\n formatterTimeZone.standardOffset !== calendarTimeZone.standardOffset\n ) {\n return ChartUtils.unwrapValue(\n ChartUtils.wrapValue(\n dateString,\n BUSINESS_COLUMN_TYPE,\n calendarTimeZone\n ),\n formatterTimeZone\n );\n }\n return dateString;\n }\n\n /**\n * Groups an array and returns a map\n * @param {object[]} array The object to group\n * @param {string} property The property name to group by\n * @returns {Map<object, object>} A map containing the items grouped by their values for the property\n */\n static groupArray(array, property) {\n return array.reduce((result, item) => {\n const key = item[property];\n const group = result.get(key) || [];\n group.push(item);\n result.set(key, group);\n return result;\n }, new Map());\n }\n\n /**\n * Update\n */\n static updateRanges() {}\n\n /**\n * Unwraps a value provided from API to a value plotly can understand\n * Eg. Unwraps DateWrapper, LongWrapper objects.\n */\n static unwrapValue(value, timeZone = null) {\n if (value != null) {\n if (value.asDate) {\n return dh.i18n.DateTimeFormat.format(\n ChartUtils.DATE_FORMAT,\n value,\n timeZone\n );\n }\n\n if (value.asNumber) {\n return value.asNumber();\n }\n }\n\n return value;\n }\n\n /**\n *\n * @param {any} value The value to wrap up\n * @param {string} columnType The type of column this value is from\n * @param {dh.i18n.TimeZone} timeZone The time zone if applicable\n */\n static wrapValue(value, columnType, timeZone = null) {\n if (TableUtils.isDateType(columnType) && typeof value === 'string') {\n // Need to limit the format to the actual length of the string range set in plotly\n // Otherwise parse will fail\n const text = value;\n const format = ChartUtils.DATE_FORMAT.substr(0, value.length);\n const date = dh.i18n.DateTimeFormat.parse(format, text);\n if (!timeZone) {\n return date;\n }\n\n // IDS-5994 Due to date parsing, time zone, and daylight savings shenanigans, we need\n // to pass the actual offset with the time to have it parse correctly.\n // However, the offset can change based on the date because of Daylight Savings\n // So we end up parsing the date multiple times. And curse daylight savings.\n const tzFormat = `${format} Z`;\n const estimatedOffset = dh.i18n.DateTimeFormat.format(\n 'Z',\n date,\n timeZone\n );\n const estimatedDate = dh.i18n.DateTimeFormat.parse(\n tzFormat,\n `${text} ${estimatedOffset}`\n );\n const offset = dh.i18n.DateTimeFormat.format(\n 'Z',\n estimatedDate,\n timeZone\n );\n return dh.i18n.DateTimeFormat.parse(tzFormat, `${text} ${offset}`);\n }\n\n return value;\n }\n\n static makeLayoutAxis(type) {\n const axis = {\n automargin: true,\n gridcolor: ChartTheme.gridcolor,\n linecolor: ChartTheme.linecolor,\n rangeslider: { visible: false },\n showline: true,\n ticklen: 5, // act as padding, can't find a tick padding\n tickcolor: ChartTheme.paper_bgcolor, // hide ticks as padding\n tickfont: {\n color: ChartTheme.zerolinecolor,\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n };\n\n if (type === dh.plot.AxisType.X) {\n Object.assign(axis, {\n showgrid: true,\n });\n } else if (type === dh.plot.AxisType.Y) {\n Object.assign(axis, {\n zerolinecolor: ChartTheme.zerolinecolor,\n zerolinewidth: 2,\n });\n }\n\n return axis;\n }\n\n static makeDefaultLayout() {\n const layout = {\n ...ChartTheme,\n autosize: true,\n colorway: ChartTheme.colorway ? ChartTheme.colorway.split(' ') : [],\n font: {\n family: \"'Fira Sans', sans-serif\",\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n yanchor: 'top',\n pad: { ...ChartUtils.DEFAULT_TITLE_PADDING },\n y: 1,\n text: 'Untitled',\n },\n legend: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n margin: { ...ChartUtils.DEFAULT_MARGIN },\n xaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.X),\n yaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.Y),\n };\n layout.datarevision = 0;\n return layout;\n }\n\n /**\n * Dehydrate settings so they can be JSONified\n * @param {object} settings Chart builder settings\n */\n static dehydrateSettings(settings) {\n return {\n ...settings,\n type: `${settings.type}`,\n };\n }\n\n /**\n * Hydrate settings from a JSONable object\n * @param {object} settings Dehydrated settings\n */\n static hydrateSettings(settings) {\n return {\n ...settings,\n type: dh.plot.SeriesPlotStyle[settings.type],\n };\n }\n\n static titleFromSettings(settings) {\n const {\n series,\n xAxis,\n title = `${series.join(', ')} by ${xAxis}`,\n } = settings;\n\n return title;\n }\n\n /**\n * Creates the Figure settings from the Chart Builder settings\n * This should be deprecated at some point, and have Chart Builder create the figure settings directly.\n * This logic will still need to exist to translate existing charts, but could be part of a migration script\n * to translate the data.\n * Change when we decide to add more functionality to the Chart Builder.\n * @param {object} settings The chart builder settings\n * @param {string} settings.title The title for this figure\n * @param {string} settings.xAxis The name of the column to use for the x-axis\n * @param {string[]} settings.series The name of the columns to use for the series of this figure\n * @param {dh.plot.SeriesPlotStyle} settings.type The plot style for this figure\n */\n static makeFigureSettings(settings, table) {\n const { series, xAxis: settingsAxis, type } = settings;\n const title = ChartUtils.titleFromSettings(settings);\n const xAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.X}`,\n position: `${dh.plot.AxisPosition.BOTTOM}`,\n };\n const yAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.Y}`,\n position: `${dh.plot.AxisPosition.LEFT}`,\n };\n\n return {\n charts: [\n {\n chartType: `${dh.plot.ChartType.XY}`,\n axes: [xAxis, yAxis],\n series: series.map(name => ({\n plotStyle: `${type}`,\n name,\n dataSources: [\n {\n type: `${dh.plot.SourceType.X}`,\n columnName: settingsAxis,\n axis: xAxis,\n table,\n },\n {\n type: `${dh.plot.SourceType.Y}`,\n columnName: name,\n axis: yAxis,\n table,\n },\n ],\n })),\n },\n ],\n title,\n };\n }\n}\n\nexport default ChartUtils;\n"],"file":"ChartUtils.js"}
|
package/dist/plotly/Plot.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Import the react customizable bundle for building, only pull in the modules we need
|
|
2
2
|
// This reduces the build size. Plotly has a lot of modules we don't need/use.
|
|
3
3
|
// https://github.com/plotly/react-plotly.js#customizing-the-plotlyjs-bundle
|
|
4
|
-
import createPlotlyComponent from 'react-plotly.js/factory';
|
|
4
|
+
import createPlotlyComponent from 'react-plotly.js/factory.js';
|
|
5
5
|
import Plotly from "./Plotly.js";
|
|
6
6
|
export default createPlotlyComponent(Plotly);
|
|
7
7
|
//# sourceMappingURL=Plot.js.map
|
package/dist/plotly/Plot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plotly/Plot.js"],"names":["createPlotlyComponent","Plotly"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,qBAAP,MAAkC,
|
|
1
|
+
{"version":3,"sources":["../../src/plotly/Plot.js"],"names":["createPlotlyComponent","Plotly"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,qBAAP,MAAkC,4BAAlC;OACOC,M;AAEP,eAAeD,qBAAqB,CAACC,MAAD,CAApC","sourcesContent":["// Import the react customizable bundle for building, only pull in the modules we need\n// This reduces the build size. Plotly has a lot of modules we don't need/use.\n// https://github.com/plotly/react-plotly.js#customizing-the-plotlyjs-bundle\nimport createPlotlyComponent from 'react-plotly.js/factory.js';\nimport Plotly from './Plotly';\n\nexport default createPlotlyComponent(Plotly);\n"],"file":"Plot.js"}
|
package/dist/plotly/Plotly.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export default Plotly;
|
|
2
2
|
//# sourceMappingURL=Plotly.d.ts.map
|
package/dist/plotly/Plotly.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/* eslint-disable global-require */
|
|
2
2
|
// Create a partial plot with only the kinds of charts we need
|
|
3
3
|
// https://github.com/plotly/plotly.js/#modules
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import Plotly from 'plotly.js/lib/core.js'; // Load in the trace types we need/support
|
|
6
5
|
|
|
7
6
|
Plotly.register([require('plotly.js/lib/bar'), require('plotly.js/lib/histogram'), require('plotly.js/lib/pie'), require('plotly.js/lib/ohlc'), require('plotly.js/lib/scattergl')]);
|
|
8
|
-
|
|
7
|
+
export default Plotly;
|
|
9
8
|
//# sourceMappingURL=Plotly.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plotly/Plotly.js"],"names":["Plotly","
|
|
1
|
+
{"version":3,"sources":["../../src/plotly/Plotly.js"],"names":["Plotly","register","require"],"mappings":"AAAA;AACA;AACA;AAEA,OAAOA,MAAP,MAAmB,uBAAnB,C,CAEA;;AACAA,MAAM,CAACC,QAAP,CAAgB,CACdC,OAAO,CAAC,mBAAD,CADO,EAEdA,OAAO,CAAC,yBAAD,CAFO,EAGdA,OAAO,CAAC,mBAAD,CAHO,EAIdA,OAAO,CAAC,oBAAD,CAJO,EAKdA,OAAO,CAAC,yBAAD,CALO,CAAhB;AAQA,eAAeF,MAAf","sourcesContent":["/* eslint-disable global-require */\n// Create a partial plot with only the kinds of charts we need\n// https://github.com/plotly/plotly.js/#modules\n\nimport Plotly from 'plotly.js/lib/core.js';\n\n// Load in the trace types we need/support\nPlotly.register([\n require('plotly.js/lib/bar'),\n require('plotly.js/lib/histogram'),\n require('plotly.js/lib/pie'),\n require('plotly.js/lib/ohlc'),\n require('plotly.js/lib/scattergl'),\n]);\n\nexport default Plotly;\n"],"file":"Plotly.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/memoize-one/dist/memoize-one.d.ts","../../../node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../icons/dist/index.d.ts","../../iris-grid/dist/DateUtils.d.ts","../../iris-grid/dist/formatters/TableColumnFormatter.d.ts","../../iris-grid/dist/formatters/BooleanColumnFormatter.d.ts","../../iris-grid/dist/formatters/CharColumnFormatter.d.ts","../../iris-grid/dist/formatters/DateTimeColumnFormatter.d.ts","../../iris-grid/dist/formatters/DecimalColumnFormatter.d.ts","../../iris-grid/dist/formatters/DefaultColumnFormatter.d.ts","../../iris-grid/dist/formatters/IntegerColumnFormatter.d.ts","../../iris-grid/dist/formatters/index.d.ts","../../iris-grid/dist/Formatter.d.ts","../../iris-grid/dist/FormatterUtils.d.ts","../../../node_modules/@types/jquery/JQueryStatic.d.ts","../../../node_modules/@types/jquery/JQuery.d.ts","../../../node_modules/@types/jquery/misc.d.ts","../../../node_modules/@types/jquery/legacy.d.ts","../../../node_modules/@types/sizzle/index.d.ts","../../../node_modules/@types/jquery/index.d.ts","../../utils/dist/CanceledPromiseError.d.ts","../../utils/dist/ColorUtils.d.ts","../../utils/dist/DbNameValidator.d.ts","../../utils/dist/DOMUtils.d.ts","../../utils/dist/PromiseUtils.d.ts","../../utils/dist/Pending.d.ts","../../utils/dist/RangeUtils.d.ts","../../utils/dist/TextUtils.d.ts","../../utils/dist/TimeoutError.d.ts","../../utils/dist/TimeUtils.d.ts","../../utils/dist/InvalidMetadataError.d.ts","../../utils/dist/ValidationError.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../utils/dist/TestUtils.d.ts","../../utils/dist/index.d.ts","../../../node_modules/@types/memoizee/index.d.ts","../../../node_modules/popper.js/index.d.ts","../../components/dist/popper/Popper.d.ts","../../components/dist/popper/Tooltip.d.ts","../../components/dist/popper/index.d.ts","../../components/dist/AutoCompleteInput.d.ts","../../components/dist/AutoResizeTextarea.d.ts","../../components/dist/BasicModal.d.ts","../../../node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../components/dist/Button.d.ts","../../components/dist/ButtonGroup.d.ts","../../components/dist/ButtonOld.d.ts","../../components/dist/CardFlip.d.ts","../../components/dist/shortcuts/Shortcut.d.ts","../../components/dist/shortcuts/GlobalShortcuts.d.ts","../../components/dist/shortcuts/ShortcutRegistry.d.ts","../../components/dist/shortcuts/index.d.ts","../../components/dist/context-actions/ContextActionUtils.d.ts","../../components/dist/context-actions/ContextActions.d.ts","../../components/dist/context-actions/ContextMenuItem.d.ts","../../components/dist/context-actions/ContextMenu.d.ts","../../components/dist/context-actions/ContextMenuRoot.d.ts","../../components/dist/context-actions/index.d.ts","../../components/dist/Collapse.d.ts","../../components/dist/Checkbox.d.ts","../../components/dist/SearchInput.d.ts","../../components/dist/ComboBox.d.ts","../../components/dist/CustomTimeSelect.d.ts","../../components/dist/DebouncedSearchInput.d.ts","../../components/dist/DeephavenSpinner.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-window/index.d.ts","../../../node_modules/@types/react-virtualized-auto-sizer/index.d.ts","../../components/dist/ItemList.d.ts","../../components/dist/DraggableItemList.d.ts","../../components/dist/DragUtils.d.ts","../../components/dist/HierarchicalCheckboxMenu.d.ts","../../components/dist/ItemListItem.d.ts","../../components/dist/LoadingOverlay.d.ts","../../components/dist/LoadingSpinner.d.ts","../../components/dist/menu-actions/Menu.d.ts","../../components/dist/menu-actions/DropdownMenu.d.ts","../../components/dist/menu-actions/index.d.ts","../../components/dist/MaskedInput.d.ts","../../components/dist/navigation/MenuItem.d.ts","../../components/dist/navigation/Menu.d.ts","../../components/dist/navigation/Page.d.ts","../../components/dist/navigation/Stack.d.ts","../../components/dist/navigation/index.d.ts","../../components/dist/Option.d.ts","../../components/dist/RadioGroup.d.ts","../../components/dist/RadioItem.d.ts","../../components/dist/Select.d.ts","../../components/dist/SelectValueList.d.ts","../../components/dist/SocketedButton.d.ts","../../components/dist/ThemeExport.d.ts","../../components/dist/TimeInput.d.ts","../../components/dist/TimeSlider.d.ts","../../components/dist/ToastNotification.d.ts","../../components/dist/UISwitch.d.ts","../../components/dist/index.d.ts","../../iris-grid/dist/IrisGridShortcuts.d.ts","../../grid/dist/KeyHandler.d.ts","../../grid/dist/key-handlers/SelectionKeyHandler.d.ts","../../grid/dist/key-handlers/TreeKeyHandler.d.ts","../../grid/dist/key-handlers/EditKeyHandler.d.ts","../../grid/dist/key-handlers/PasteKeyHandler.d.ts","../../grid/dist/key-handlers/index.d.ts","../../grid/dist/GridMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSelectionMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/EditMouseHandler.d.ts","../../grid/dist/mouse-handlers/index.d.ts","../../grid/dist/GridMetricCalculator.d.ts","../../../node_modules/event-target-shim/index.d.ts","../../grid/dist/GridModel.d.ts","../../grid/dist/GridRenderer.d.ts","../../grid/dist/Grid.d.ts","../../grid/dist/GridRange.d.ts","../../grid/dist/GridTestUtils.d.ts","../../grid/dist/GridTheme.d.ts","../../grid/dist/GridUtils.d.ts","../../grid/dist/MockGridModel.d.ts","../../grid/dist/MockTreeGridModel.d.ts","../../grid/dist/errors/PasteError.d.ts","../../grid/dist/errors/index.d.ts","../../grid/dist/index.d.ts","../../iris-grid/dist/IrisGridModel.d.ts","../../iris-grid/dist/IrisGridTableModel.d.ts","../../iris-grid/dist/IrisGridModelFactory.d.ts","../../iris-grid/dist/IrisGridTheme.d.ts","../../iris-grid/dist/IrisGridUtils.d.ts","../../iris-grid/dist/filters/FilterOperator.d.ts","../../iris-grid/dist/filters/FilterType.d.ts","../../iris-grid/dist/filters/index.d.ts","../../iris-grid/dist/TableUtils.d.ts","../../iris-grid/dist/IrisGridRenderer.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationOperation.d.ts","../../iris-grid/dist/sidebar/aggregations/Aggregations.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationEdit.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationUtils.d.ts","../../iris-grid/dist/sidebar/ChartBuilder.d.ts","../../iris-grid/dist/sidebar/CustomColumnBuilder.d.ts","../../iris-grid/dist/sidebar/OptionType.d.ts","../../iris-grid/dist/sidebar/RollupRows.d.ts","../../iris-grid/dist/sidebar/TableCsvExporter.d.ts","../../iris-grid/dist/sidebar/TableSaver.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../iris-grid/dist/sidebar/VisibilityOrderingBuilder.d.ts","../../iris-grid/dist/sidebar/index.d.ts","../../iris-grid/dist/IrisGrid.d.ts","../../iris-grid/dist/index.d.ts","../../log/dist/Logger.d.ts","../../log/dist/DefaultLogger.d.ts","../../log/dist/Log.d.ts","../../log/dist/LogProxy.d.ts","../../log/dist/LogHistory.d.ts","../../log/dist/LoggerLevel.d.ts","../../log/dist/index.d.ts","../src/plotly/Plotly.js","../src/plotly/Plot.js","../src/ChartModel.js","../../jsapi-shim/dist/dh.d.ts","../../jsapi-shim/dist/PropTypes.d.ts","../../jsapi-shim/dist/index.d.ts","../src/ChartTheme.js","../src/ChartUtils.js","../src/Chart.jsx","../../../node_modules/@types/lodash.debounce/index.d.ts","../src/FigureChartModel.js","../src/ChartModelFactory.js","../src/MockChartModel.js","../src/index.ts","../src/ChartTestUtils.js","../src/plotly/__mocks__/Plot.js","../src/plotly/__mocks__/Plotly.js","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bootstrap/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/base.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/jszip/index.d.ts","../../../node_modules/@types/lodash.clamp/index.d.ts","../../../node_modules/@types/lodash.flatten/index.d.ts","../../../node_modules/@types/lodash.throttle/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/overlayscrollbars/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/pouchdb-find/index.d.ts","../../../node_modules/@types/pouchdb-core/index.d.ts","../../../node_modules/@types/pouchdb-adapter-http/index.d.ts","../../../node_modules/@types/pouchdb-adapter-idb/index.d.ts","../../../node_modules/@types/pouchdb-adapter-websql/index.d.ts","../../../node_modules/@types/pouchdb-mapreduce/index.d.ts","../../../node_modules/@types/pouchdb-replication/index.d.ts","../../../node_modules/@types/pouchdb-browser/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/pretty-hrtime/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/react-transition-group/Transition.d.ts","../../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../../node_modules/@types/react-transition-group/config.d.ts","../../../node_modules/@types/react-transition-group/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/shortid/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/@types/stylelint/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/Source.d.ts","../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts","../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts","../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts","../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts","../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"38943ef508ccbc71691ff6c14f30e0468a85a4ec22c9e0a4eea2c9ba8ca19352","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9","63ea76eab54e08ce38ada84ddff0b080d6c2e360165071af684b43844b15bda7","98edf9bdfe6c7794349a88d720af3035fd4a68480895e72beaf8ff8e758a33f5","8a2395a5c1a95d05c205b791f012b120b4d02eb50a806e24d69da02c51de9d6f","123b33d472e095eef247713b75d8af051322947c9f82376094e2464f5b2c6c62","3cfca5c9292d8d84fb8f2002fbc638f1ce1116842fcf49da324c3ce428e5ba01","ae8664425db4d0412262eacb152add3880bb26a00b3351c60251836d1b0ff06d","198a7b1868feda59532c0b8c9787a40bc1a016bfeb4f34ac429c72f00d85f480","440c72c435268a4eb551c89fdb9d23b17b8b4313e59865ecff97a45194a4b760","36c864656ff1816fe6bc4bbd36a981ab880e31819010ab32e4c4375a9cd0ffa0","084fe2843779e36cc634a29427dfa6b4ad19bf3fc749a8ab71f8b1845dac8063","e2ed3c88156fb2986622e353fde67b7e215474fc99ad997b0e8f98e9820a2362","590930e5cc30f27e0faadede9dd85b1f36a87345c5502c55c8ad21fe0c4a4972","ead5a4d77393ab3c673b20f171eb4187ed04c17070f6938a52a304ecd9c9f1d9","7c829ae2e0612753dec828fdc84baad4f98a1e0fa60ab79fe101b1020103a26e",{"version":"a139b5f761e657cda95b3a6f938ce7102878b5b39edbb743894d39388d83cc7b","affectsGlobalScope":true},{"version":"513dfbfe04b52253f35007545694c2a99c313fdb6b836bdb8cbc9c7fb0ff6166","affectsGlobalScope":true},{"version":"a4832e26b82049fc2774c96ca6e1c17b2c204246570a62fdbe7e8ee8af2cd4d4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","d0b93cf4a086095121a40a8a878f81c72783fc819ad055225a36ef829c6f41d4","50eac108cc307665c28801910626932956adcf8dc0dc70ab1939dd0e8aeb6f28","1a68643644167daaea17e2f89d04edd9d1fec7bf881e4fa3ad4cd43d92447ce1","7255a17d460541e2ccca5f485bb58b6fa64bc750047c5e57ce7abf17cc3f4f3d","571ffdcb677c42d897370ca1a616798670d7715361dc099f713f03c067e8c988","1f8d8388b2da5785ef9c169db1493969f8c9e1ea50e1db1194a21708403f2e10","a299dcd51a18896ffb9f1249507d387a996b8d733cd1ee7c0a5fb46b86f88524","2c3d2bc00ffd291568c89e1ea920cf5c41b6b6a532cdc0bcb74e917eaf133f3b","d164084ca52fc07a704d35264d524307e7e8ace196b817d4a86d0b93cf11ebd0","0de99ed9f5d0a953aabe8de8999b0ce24944f36374d36c06abf9dca6e5567368","a756f87e33897fd95428da3288ed3061182b8678e38b48000c53e5499c7f8863","f68abba533f1aee022d1800ab3ad273e163909b97c171c8eea15fa04e3d02280","9b526aac58282b2b9c1afd1969828336c77a81ca52916214ae63a70e256a8032","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f544c98b782364169412ac2bc65143918f9f1dd49880920302693f2eb3bd3570","e5d5ee66044d79018aadeabf3dc39d758d9c45c49c004b3a57b76a974fb346d7","34ef06f1d5e0ae95afb816e93c40f04f93641c11ad06e54b6fbe9335c3238c03","1873db8f2261ba4f248bde3e5bb4c79b1fdc990315054e9604fce8f41ddd1587","7fde24f7b90ddb8aef7ab8f3e2c318babe0c606b7ea5a833369475b0129a05ee","366c22193ba68d3c1ea31d37d98dd5f133fc9e234f07c46656284422bb4209fa","ff60413f9896b702b4e653cf85f6f8246e11482ad4d6859997ca9edafed9cc46","b682e653b63b5aa118887e61cd81a78fc45d4ef8fe95d8c6449742919a5638a4","bbc1e78124f19ccf50225278b700436ce64cf92b0c6b1ca15567431a28371b31","1f93a4dd7096a18c6cf99085327b467de58f3cd7f0f941a8bdc1d7ec4284b301","a822e999d9c1814859735e919c2bd2a11f7d3c8633ab6656215dc386684e07bc","ae1b8ffb16f8dd0a4008ccf2534e6503af171a3c4ea17da590faeb0c41f85f3e","1cfe76cc39491c2f2059192c7486297154f0a517fe9b3bd9d223824a5f803573","acc42289b4e6d8d789b9f3a4c48fe601c23ab6fe747080f1dc99787b8e79d256","9de7ce840e4a5b95405a164d166d010eaa99fd631817ea3b0310ec4e22b98d0e","e2624cd48a969f5f8da7560fed327adddbcb3089897923f9f7d5a7cf04f4e917","21e1b303e758ec4a1e9f703e1e1be8c47c8dd74034c2369fd01e9bfe1da98acc","427a853968c89787bcdc5ba0e0603c6fdca97766e343ceaa5acef230883ba807","33cb56e3cc910266a13ca59281b907459131acc58739c2bd68dab246f8ed01fa","c6d0cb5ad7498c2c977a5340f17bcfcc151609118789bbace2336079f2d9f84a","383d4add4d2b7a9b03bb0b7b9b2f62b70c269e79616b629946b51283c14a92cf","4162810d701126188368ff58526c81e7c4c6a9a32ed26c4b763a5d3535b46748","513b7862a230ed479fb045bbe87d37f9ee91cc20fee15dd4b16c3cc74aa3e514","8ff77a6b5f0b74c681e132e9510f5576a29150ee53b1324efed33d3d7fabd736","7bdf81223f6cfae94a48484223d4b59b8ef609cf680f0fa90941d8e093ff27b0","9fbe4ad05e10d7957283cc4a3aa909e70717c62d51bdc19516ffd75a60c2eaf4","8b423ba6b1f81c80542db7deba332d1938db29f6f127fe169287903abe67fe8d","9c0a4431746ad0073026505df7a5724b4126c0e1f41b90e87c1efa6b8335711d","0ec7fb37f4303f3cac4f35819f0d5d75b3b4692990da2590c63c656729447dfe","ed6fbb1cb7cb8dc283f9d5efa68c17d5a9fc5e32fc481e2be7eccd5077d3afc0","e96e84cd79dac3fb1369911a8e9888308deda9542dcfb19d1540414e9ab64465","616ed304b4a011a969ba5d2aa5fca781d66b3f0c8f3d099e19c7158da36fa07b","163be962fa11ca0e3bc9afd1188701e16f5db0d84f904be3a5327c04bf14c1dc","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","23255560340f60336ff79daf50b3b6432ec0f32f7dd19638d3a2406826a15d49","cbf272d1fef2ab8cca386524e1aa8e06caa3509eb6e724e0008ca613c05e7fdb","f8f0a01a9ec6571933c3b63b6d877d74729fbdab0be2fa87c18999b11357cf32","fca853da554cd762704a9bf8ad62cbf6d55d81c9d69b07b3c8a552367f4976d6","6b8d8f68865166b7f761ccdea7a66018f0452ddb7c6f75bf5cbaa31e6163af8f","d9cef8e439c407166963fa89b317d3ea7367e204035611447c9765786026f03b","ca888feddeab794c01fb1bec893ff46186801a30bca77c8a1aa28477f7e6f839","bb96345dfdd3b0695f5281537427e38fa85cb79449e3c6b59151bb7d753ef6f7","2561fd263d1d42554d0de99369f6fb352981090e2de0966b2e257891abf9977a","b01b764b8b1ce1376a70aa1bde2914093b36810a2a3e60cc9fd8f2741490a8f9","e6047a9c095d3b4a903aea90b49815be068476f1719e76766b7792ee21310f3a","cdcd29d866abedc194a88851871320fbb9c29e1c4868583b1f91ee2786acb818","c02107d9cae7a0c7541e8af0f4e0497650b1494e561e409e7cb90a12bc65ed09","5e62225c303695c8511d3831bca37c141931fd584e3aa1c8c5dd4b57cf01b1d0","1c3dd3b5d7eee485481470a75bd1829ee8e0388e87c8c8f8a8418f702592876a","53336c5924937a0a2a4ba1a515499f48092e4dd853386e77276c0a4ff8a1fa50","5a42225ecf779e7d42b44ff91cd7f842421835f28287e295e42622aa51aeeb6f","baab49106b672deb07dcd3e31333e4a2539970b5db9ee896aedbdba3ca2400e5","2af60becd168c31f931c6839f2cb126713bb0f556780b07959afd04b8311eade","826ea84343ee53323b8b67320019287543a15c1f25ad163552f4adfba79368da","7181cfa9a4f05524e825271e409017810c1bc6a4b9544e05be5bd59ee76ca691","ad9afc2c60e7303174e70e6cbfc1eca63d8a770855d5fa3ddaac8769b9d93658","7e6b3017bd81ce434b27ae46cee6bdc5850db0e0d75e6a1d45c6c23e17eb135b","9304c3176830887fd3bbb010a9542ce549397b63624a51c8e7f2be032adb76e9","6c9c7d76d7f525a366d5ebdb0b42bccfab0ec7bdc0bce4db5b97573ee0970d3e","c7322d04c36fbd32b9035e07416c30073fbadf0bb6c1e855425f12c1df645aee","198c3858acc28364fb1cdf1d99d140fd9e0f3732c57ccd40a1752bcf8f318a0b","0625a691c77d71dd48fc83a59bff500dfbf3bdc1fe9c079b64bcaf078b5158d4",{"version":"662564f7dc409b31c6ad48129d12a1320c132b45bcafd3a990d0f8f545ce0529","affectsGlobalScope":true},"49616c77d1f7669df57e8cc8afccd8454730bd5e3fa785edcfb3c0ba504cca3f","4e1cb04564eb20088c531c817c8f6c4db49620ef50376f35245642c67eb145ce","d3add4e7d6efaf837f6d0db385083d6b23a484c2c6079acbc8fa892c201487c7","8376014c53e41b0d5f96a78fdd2d8a8758640ad2f6ce292b5c66aebd6d088b46","03f3ca4f21862f79e971b5ca6b63805895cff6ccbd7ed31d2fd7327f19f5e028","f2b9951257d06d78828f43dc4047510ec21fe000f21cefd58684476db831ac5f","536fb1e2b80cceb77644b414e26ce29a8417f94a72f867f57e2e0c2db980a9ce","f0b0ef0ccfe0beeaa902aacd48798cc9a7f755546481cb149c4a57c7956c6d0a","2476381be38618f2937afa95c337739684aa174576a278139b7b08b6ab1f5341","c5d12b850beb2feb0369374909dc30fea794f25baaae8aa6f23ee533d80dfbac","ca8d29244d394cdc4cbfbddbbbe183bdcdb25daeb1814777bd1b988efc963bc5","e6d39558cb48d3ecf1e18dcfea09f5b891d97e0fc287dec68440088e88750930","0a5939cc81f0c470f3cae077943ab1a8f27bd0e0ef31fb6d9999c1099d5c1557","da1c29ce8da2803892f72c74fdb05992765ec7d5d9a6ef4dd82f3534e7d4773e","deb2c4a4f7e35965dde684402787eac08ca9143178a75b2c441d07fa7830fcbe","069d9515e3cb0d254928b11bf7da7e22afddf1d2a14f239421a128952069f898","c33ff15f5bb2ec9fe792288ee8a6e61a45210aad52007bc573d11e49a17542de","0cb0bb747f030197835fd42fab515388f3cd9745256f8b9badb0ed33477b4275","40d2b100e0cf82c6a297597f2f68f152ed9bd67533bbab359c5cc3d2d43a0e98","47c12b9b24e5bfd2879de2e2d1e921b2fd984e11c2086460ef3110408135641d","43eb52bf5a546b3f84e7da5b4eb1305f9ecfe9f5a3f41b85d620d1354a5f3646","63633f5796c4cf53210ce75f02e5d6e81b88012f5c8832af32c35d0a8b75cdde","520872f7c5dd8e4aa5eded9d68906f287f0e7e1b223caa2826120dafea9b8410","a2847912ac2cc3df01cec42991da81b7c5dcb1f89ec690b5412b15f831ea687e","3cb00f0b39f0dbc16cf727d2c38ec9913b64b666b256fbc683a5eadd9fc767b6","0a52641f1e38e5b7a7edb7eebbd6ad06e561db7c017f397323a263d74dd58e3f","2ceab74277f8e35d481a528c74e2c992429b2b75b8f0873fcd541cab9b210f0f","e442f58a3f157713f6fe0cb7fe25dfdf9b499cceed0e126eb112451c4bda9f74","7db9398e6aee094d1e21d9bea2205ae3e94f39effd58c868db972e8fdca3b382","93a239166429cef36a11b58831be7493a8b6083297819b864f64fe5a6c51769d","7202799c12b024a0ad8bb7d331a2abfa37000f7d4d4400eedaf0e8de86e9325d","3158f69a5641c10fa2014100c5e7f0884b6d4a0cce43d32af91009a5e8031674","752fa9ab4f022a094d6c036e556ab0cd65b8c599db46b0ab6ef20c5f541347c3","85accdf9e385b0b171b1e536f1ddfb7574b2ad059f28dc9fec681d13383cae29","5e5011ba7c0d3ecb7a96f7bbdbd0b0c5e030e06a8084b9cecc8d51813707fdd1","3305eb25f74ae5fe0ae670a2ef5f5cfe12a6b890d4ddd019e232248aafb69041","a345e40ec66caa5e999bcb4e39443b41024c7dd83dcae1b271dfb9f3baf42fe0","e7c43187ecd8e6fd5ac183d8fab70d262601b83ac8a350f77102e501b70c3399","d7a43c368e3a7eeae8570e6b731ea30797a436dfe413308d909ba64d7ee40d90","f22947fc62ea413bdb41dccd2dc03ad90c517bf1499988e7e4e06dc4cfe4d0e4","8cbb340cf3ddabe63ca08a8a8ee687cbd2e2240efc203829d88d6bfc5442af9f","30e9979007b862c3653edc1bcdd9c3b2daac943d86e5dc45ea4568ed5e717480","ecac33101e9b0de576ced13eed08c3203f13524956f92437a49291cc1aace4f9","ad8c9effc950e5a2051075b274c45876a76ffb88341994b278468e62a4bf39fc","78a9c7b35d8ea1a9e15bb1926726f4d19121b57bc3314ac6e7c659dbca213258","78294e1333be0e2a3c02f253721dacd0c205b12689f9a2992a6b9392c9e8b0f6","7fefa48fa54e87d74f1ebafe6934fb8be19b17ffa65a12d5dea921da09f5fc30","02e8c7670313db815cfc304c046b77fde0ad6d1de4c7f1527a12430ed2b73568","339fa6c313815d88228c93adc09832f4386c890844b6462cbbcde1cea0c47a82","230bc82cfb0df428eee75a194cbd1768a2dcd35ca39d669e771ae31380d5589e","584dc1976391a7579cb93466a54df2263ce0c7a4811897cb9777cbeef22a26c2","3b5f29d4e9827cdfef6b008bc5b00f1458fcb7218097fad40945d90322efa278","00566869cb63f7915307b242d07724f7c28eaa51724c36fcc1662d3b6f62a594","1f20b8737e2c06851c822b26f427fa97cbb687f26b873db7cc1321f8a7f5f787","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"414535152cbb6d2ef11c94953a793e18cb23c5329d439dacf66183adf87989fd","fbf3b885d9bab5d9061d4b1edc2ff4fd845ea1c28e5dcd34ac4a43d156161f46","fc9726976c91a37ec5f4c3fa91e46dedba08232d0b695460c348ed1bb0268d25","39eaa898927709414259421f4310d4a9bbb943b4dcb82c7a5cd75f0142c86273","5f34e74f9d889817c1388da54dbfdb28a36af5676c396fa3041309690bfa9ade","b0e23a13de5e00df2097f3bbc0ba67ecc18946f10222c2d4571814ba718467d7","2f89dab4002cafa419a8385e6cd54f3fd5458a024feb0f79e9967bf4c47157f7","e841f45cbf880c37dfc3279dd87523670ac8bf5477541a682ab10669ae6db0f0","4dfb0de036b79d6c4851ad323b7b8ba8d2eff92099edb928c28e2b8f151b4c73","b59fc967b467026aeb1dc3f3fc02c26b8b0b613212ade066d58cb1050b774da1","b10686e239ffd69ba14643969dd14c8be05f0fabeaff6490637efd034686474a","1f46fefd83929ee6cc2714d2e1689e6bd8e39dbfba337a59a4e124928fa6678c","af9541a8f9e0991338378be681fa333f9c84b0846579b4f5d9189e5266d7acf8","cc6194741830edfe6eda4f51dd4b8c2708a14ba1eafd8fc95cbb2f94f699d48b","0637ca78a74b77392effa72e38c2951cce0bb5f7019276f312f85f3d308eb5ef","2b0dc274f4e10794352b468f179cf8b5a9a0203406d8185717dc93a5d7ea9136","53c520b2ebbd7c565fb533caffe747807ae5adbff2f50178a011bad4c334160c","dc0b70f6d69942102028e513dd78c86c81f7fa684dda1468d84e2594cda70f07","5cd67ca764212482493f391633f38a03b52ba303cdd719eadc5be76d28d7daa5","80aef8308811864da7ed1e0eb0eca70497e9a2c953bbaf6db2f98faef2655f20","7044c407773c0900946b7a02f3a0e7e5e79af8b0a32b14aeb419b7beedfb3fcd","d8ce14c69633699d7c76f2ad94f78e882071f7863706f8e6e0ecc31800169e67","ab7d96fca46a5075458fcbca5ca3d7059059ef04e426f8032013d3c3a5351933","bf351d3e9fc47ddec96c6a219d0b6d96c43c18fc376934615d1702ff334ee7de","e24d10ccda341f500740a2d46822b279969d98664f92e0f1c30f6ef796254d9d","f80c6be079ec1df24ab5e64fc860248767f86421e05de7896a493742486f1ee0","b1eb670eee94eebc06e77d75b6c606491f84d01122b2e9edef4edeb9ea143318","0c9f55f247187045cc1432f0d81c94bcf56fb409acb163d408bfd5a1793447a5","c13e280d244dc0829d954089e1d0446455efdb72fb4bdc2e3f0561ffbc66c905","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e",{"version":"24ff7ac33bdb941a8cd04408a31ba15fafab9684f751e7e88234813b89712c19","affectsGlobalScope":true},{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","55cb77e6ff3d95a68568446f53d3f1dc8fca753575d7c60471a865685f08dcc3","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"dda27180d5ff550ace8378f5df0f7a26e616f0c4e310c77e94329e2355f9c255","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","12a01de318341fefb7be11f22eb4bf28478a5f137b1b4546c509156e9c158198","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","5aa2a9a778a055cd668ea419ea80ba6e195210eb37d47707a1a58886aa4d80f0","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","9e6a556cf660a94faa51f5bce6ed009b9e02373546a4c67925da909f36c039d0","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"61dd09b57a0a5cf1486c3ceb3a18ad23babfe602c323035ce3d01544c5e3e0b6","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","b1b1adc57093310531ddf3f78b21bda16c30f7319088b0981449476a6616cff3","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","de1d6e224048139baf7494237a9231be6bab9e990fb239c7825bfd38b06d8c90","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","abc2748988e07e7e754b43cfcfadca4d45f3449eb4c0be503f13630a3f15f22b","6109487f86bc33b14eebb35cbc878b591328e19657d92bc6c61b667f7f9594c8","96b729b46007058fceb10567283275a023415f724af78e91cab3ac7073c19635","620a033e8ff8ffc3d280c3d78981d8a929d0a8c14574a3b87413d99d7f02fadd","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","062bd2910098fc059ba93e347649b3e126c555f7b144033d21d3f8ef63d3e39b","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","fda7ad096a1619fbae01b3d869cc82e29116f22be50133ac8fb08cee21279acd","9751247ee3bbcf1c63592f0f4dafb44559680b2b3e5736b7f0578c6a737d74c8","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26",{"version":"2d2482647045d334fcfce6eefa3340db2800cb2d0814e7b58d4f3b53c274d8ec","affectsGlobalScope":true},{"version":"f1e1d121f108eb57d576df44fc40e01448e0fc7fec64493b07aa852471b6a59d","affectsGlobalScope":true},{"version":"838524a3cc660f7bbb104ffa15febad659d1ef1633dac47340bfbfcbbbffdb08","affectsGlobalScope":true},{"version":"50a03e74fae4542ecfb326b34517ec2e058aee15bcb60af5b2e41c5e2db0d079","affectsGlobalScope":true},{"version":"d252bde46b7594f8f90a45d59181b08134ee8c4919ebb2ba7088ba26056bf621","affectsGlobalScope":true},{"version":"c892c9c7905dd7435264ca83ff0f3ac7f39a0937ee728acdce4b476ece7d6fd9","affectsGlobalScope":true},{"version":"1abdfe21f6b99b864965f9dc5073c49f0c0f3d5e8e1fe498fb94bd0a479d3afe","affectsGlobalScope":true},"4d737cdd77685ed65bd61d375375cae446fb0f46f711bbb3ef3f81a350212569","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51",{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},"4370c91e46f6992a89e3979c50434cf932088e1b5ae6e3a5214d778634dea768",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","ed3b711f533ddb3a5451f4c4bb0df3a0b95e9d0433b3b7834644dd1718d06d31","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","30783d97bd0231ae2c4b9320043d61442a8177e81c7df826a5536b95fdd63280","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","aec0cabbdfacf43db998d8e50ee6f1e72131d24b5018dfb84f14806717baa0a6","e32dad799d088c53cbe1da736e34cad03027d56dd2fc77d484a67100278bc4bd","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","9d74c7330800b325bb19cc8c1a153a612c080a60094e1ab6cfb6e39cf1b88c36","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","b2f006ee835f315d01c43c0f5d9e9ad78a5870b380899877b32a33078d065dbd",{"version":"3a1e422f919c70fca66e94dc641ad8d9732b3d2533ac047b8a9aaca9eea3aa10","affectsGlobalScope":true},"f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"target":4},"fileIdsList":[[250],[53],[250,251,252,253,254],[250,252],[71,95],[302],[304],[305,306],[305],[308],[310],[50,303],[312,313,314,315],[316],[268,269,302,317],[269,302],[320],[50],[325],[326],[88,90],[66,67,68,69,70],[221],[209,211,212,213,214,215,216,217,218,219,220,221],[209,210,212,213,214,215,216,217,218,219,220,221],[210,211,212,213,214,215,216,217,218,219,220,221],[209,210,211,213,214,215,216,217,218,219,220,221],[209,210,211,212,214,215,216,217,218,219,220,221],[209,210,211,212,213,215,216,217,218,219,220,221],[209,210,211,212,213,214,216,217,218,219,220,221],[209,210,211,212,213,214,215,217,218,219,220,221],[209,210,211,212,213,214,215,216,218,219,220,221],[209,210,211,212,213,214,215,216,217,219,220,221],[209,210,211,212,213,214,215,216,217,218,220,221],[209,210,211,212,213,214,215,216,217,218,219,221],[209,210,211,212,213,214,215,216,217,218,219,220],[271,291,302,335,336],[271,285,302],[299,300],[268,269,276,285],[260,268,276],[292],[264,269,277],[285],[266,268,276],[268],[268,270,285,291],[269],[276,285,291],[268,269,271,276,285,288,291],[271,288,291],[301],[291],[266,268,285],[258],[290],[283,292,294],[276],[257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298],[282],[268,270,285,291,294],[344],[344,345,346,347,348,349],[309,343],[343,344],[50,322,356],[50,358],[50,360],[360,361,362,363,364],[46,47,48,49],[372],[371],[302,378,379,380,381,382,383,384,385,386,387,388],[377,378,387],[378,387],[369,377,378,387],[378],[264,377,387],[377,378,379,380,381,382,383,384,385,386,388],[264,302,371,374,375,376,389],[392],[84,85],[84,85,86,87],[89],[48,50,51,52,54,225,232,233,234,235,240],[51],[51,238,240,243],[51,238],[51,225,232,238,239],[51,94,232,235,238,240,242],[51,235,239,240],[51,235,240,241,243,244,245],[51,233],[50,51],[48,50,94,95,98],[48,50],[50,102],[48,50,94,95,98,119],[50,54,95],[50,119],[50,93,94,124,127],[50,54],[50,93,94,125,126],[50,94],[50,103],[50,54,110],[50,111],[50,93,111],[50,111,114],[111,112,113,115],[71,93,98,99,100,101,103,104,105,106,110,116,117,118,119,120,121,122,123,127,128,129,130,131,132,133,136,137,142,143,144,145,146,147,148,149,150,151,152,153],[50,95,98,111,134],[135],[50,138],[138,139,140,141],[48,50,95],[50,96],[96,97],[107],[107,108,109],[48,50,156,161,162,174,175,177,178],[176],[94],[180],[179],[177],[94,184],[186],[156,161,162,174,175,177,178,179,180,181,182,183,184,185,187],[156,179],[157,158,159,160],[162,179],[162],[165],[163,164,166,167,168,169,170,171,172,173],[63],[48,50,53,93,94,154,188,189,198,223],[64,188],[64],[188],[154],[64,93,94,188,189],[93,196],[194,195],[56],[56,57,58,59,60,61,62],[55,64,65,155,189,190,191,192,193,197,224],[48,50,189],[48,50,94,189],[48,50,188,189],[48,50,64],[48,50,94,189,221],[50,200],[199],[50,199],[200,201,202,203,204,205,206,207,208,222],[48],[236,237],[226],[227],[229],[226,228,229,230,231],[76],[91],[72,73,74,75,76,77,78,79,80,81,82,83,92]],"referencedMap":[[252,1],[102,2],[255,3],[251,1],[253,4],[254,1],[256,5],[303,6],[305,7],[307,8],[306,9],[309,10],[311,11],[310,12],[316,13],[313,14],[318,15],[319,16],[321,17],[322,18],[326,19],[327,20],[91,21],[71,22],[329,6],[330,23],[242,23],[331,23],[332,23],[210,24],[211,25],[209,26],[212,27],[213,28],[214,29],[215,30],[216,31],[217,32],[218,33],[219,34],[220,35],[221,36],[333,17],[337,37],[335,38],[301,39],[260,40],[261,41],[262,42],[263,43],[264,44],[265,45],[267,46],[268,46],[269,47],[270,48],[271,49],[272,50],[273,51],[302,52],[274,46],[275,53],[276,54],[279,55],[280,56],[283,46],[284,57],[285,46],[288,58],[299,59],[290,58],[291,60],[293,44],[295,61],[296,44],[339,46],[345,62],[346,62],[347,62],[350,63],[344,64],[343,62],[348,62],[349,65],[124,18],[355,18],[357,66],[358,67],[359,18],[361,68],[363,18],[360,18],[362,68],[365,69],[126,18],[125,18],[50,70],[51,18],[366,6],[373,71],[375,72],[389,73],[388,74],[379,75],[380,76],[381,76],[382,75],[383,75],[384,75],[385,77],[378,78],[386,74],[387,79],[390,80],[393,81],[86,82],[88,83],[87,82],[372,72],[90,84],[241,85],[235,86],[244,87],[247,88],[239,86],[240,89],[243,90],[245,91],[246,92],[234,93],[233,86],[248,94],[249,86],[99,95],[100,96],[101,18],[103,97],[104,96],[105,18],[106,18],[118,18],[117,96],[120,98],[121,99],[122,100],[123,18],[128,101],[130,102],[127,103],[131,18],[132,18],[133,18],[137,18],[143,18],[144,18],[145,18],[119,18],[146,18],[147,104],[148,18],[150,18],[151,18],[152,105],[153,18],[111,106],[112,107],[114,108],[113,107],[115,109],[116,110],[154,111],[135,112],[134,107],[136,113],[139,114],[138,97],[140,18],[141,18],[142,115],[96,116],[97,117],[98,118],[108,119],[107,18],[109,119],[110,120],[179,121],[177,122],[178,123],[181,124],[183,124],[156,125],[184,126],[185,127],[187,128],[188,129],[159,130],[160,130],[157,130],[158,130],[161,131],[173,132],[164,133],[166,134],[167,133],[168,133],[169,134],[170,133],[171,133],[163,133],[165,133],[172,133],[174,135],[54,2],[64,136],[224,137],[189,138],[191,139],[198,140],[155,141],[190,142],[197,143],[196,144],[57,145],[58,145],[59,145],[60,145],[61,145],[62,145],[63,146],[225,147],[203,148],[204,148],[206,149],[207,150],[208,151],[222,152],[201,153],[202,154],[200,155],[223,156],[237,157],[238,158],[227,159],[228,160],[230,161],[232,162],[77,163],[92,164],[93,165]],"exportedModulesMap":[[252,1],[102,2],[255,3],[251,1],[253,4],[254,1],[256,5],[303,6],[305,7],[307,8],[306,9],[309,10],[311,11],[310,12],[316,13],[313,14],[318,15],[319,16],[321,17],[322,18],[326,19],[327,20],[91,21],[71,22],[329,6],[330,23],[242,23],[331,23],[332,23],[210,24],[211,25],[209,26],[212,27],[213,28],[214,29],[215,30],[216,31],[217,32],[218,33],[219,34],[220,35],[221,36],[333,17],[337,37],[335,38],[301,39],[260,40],[261,41],[262,42],[263,43],[264,44],[265,45],[267,46],[268,46],[269,47],[270,48],[271,49],[272,50],[273,51],[302,52],[274,46],[275,53],[276,54],[279,55],[280,56],[283,46],[284,57],[285,46],[288,58],[299,59],[290,58],[291,60],[293,44],[295,61],[296,44],[339,46],[345,62],[346,62],[347,62],[350,63],[344,64],[343,62],[348,62],[349,65],[124,18],[355,18],[357,66],[358,67],[359,18],[361,68],[363,18],[360,18],[362,68],[365,69],[126,18],[125,18],[50,70],[51,18],[366,6],[373,71],[375,72],[389,73],[388,74],[379,75],[380,76],[381,76],[382,75],[383,75],[384,75],[385,77],[378,78],[386,74],[387,79],[390,80],[393,81],[86,82],[88,83],[87,82],[372,72],[90,84],[241,85],[235,86],[244,87],[247,88],[239,86],[240,89],[243,90],[245,91],[246,92],[234,93],[233,86],[248,94],[249,86],[99,95],[100,96],[101,18],[103,97],[104,96],[105,18],[106,18],[118,18],[117,96],[120,98],[121,99],[122,100],[123,18],[128,101],[130,102],[127,103],[131,18],[132,18],[133,18],[137,18],[143,18],[144,18],[145,18],[119,18],[146,18],[147,104],[148,18],[150,18],[151,18],[152,105],[153,18],[111,106],[112,107],[114,108],[113,107],[115,109],[116,110],[154,111],[135,112],[134,107],[136,113],[139,114],[138,97],[140,18],[141,18],[142,115],[96,116],[97,117],[98,118],[108,119],[107,18],[109,119],[110,120],[179,121],[177,122],[178,123],[181,124],[183,124],[156,125],[184,126],[185,127],[187,128],[188,129],[159,130],[160,130],[157,130],[158,130],[161,131],[173,132],[164,133],[166,134],[167,133],[168,133],[169,134],[170,133],[171,133],[163,133],[165,133],[172,133],[174,135],[54,2],[64,136],[224,137],[189,138],[191,139],[198,140],[155,141],[190,142],[197,143],[196,144],[57,145],[58,145],[59,145],[60,145],[61,145],[62,145],[63,146],[225,147],[203,148],[204,148],[206,149],[207,150],[208,151],[222,152],[201,153],[202,154],[200,155],[223,156],[237,157],[238,158],[227,159],[228,160],[230,161],[232,162],[77,163],[92,164],[93,165]],"semanticDiagnosticsPerFile":[252,250,53,102,255,251,253,254,256,303,305,307,306,304,309,311,310,312,316,313,315,318,319,321,322,323,324,325,326,327,91,67,66,71,69,68,314,328,329,330,242,331,332,210,211,209,212,213,214,215,216,217,218,219,220,221,333,94,317,334,308,336,337,335,300,258,301,259,260,261,262,263,264,265,266,267,268,269,270,257,297,271,272,273,302,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,299,290,291,292,293,294,298,295,296,338,339,340,341,342,345,346,347,350,344,343,348,349,351,352,48,353,354,124,355,357,358,359,361,363,360,362,364,365,126,125,46,50,51,366,367,49,368,70,369,370,373,374,375,320,391,389,388,379,380,381,382,383,384,385,378,386,387,377,390,392,393,376,47,176,84,86,88,87,85,52,95,372,90,89,356,371,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,42,43,44,1,9,45,241,235,244,247,239,240,243,245,246,234,233,248,249,99,100,101,103,104,105,106,118,117,120,121,122,123,129,128,130,127,131,132,133,137,143,144,145,119,146,147,148,149,150,151,152,153,111,112,114,113,115,116,154,135,134,136,139,138,140,141,142,96,97,98,108,107,109,110,179,175,177,162,180,178,181,182,183,156,184,185,186,187,188,159,160,157,158,161,173,164,166,167,168,169,170,171,163,165,172,174,54,55,64,65,224,189,191,198,155,190,192,193,197,194,195,196,57,58,59,60,61,62,56,63,225,203,204,205,206,207,208,222,201,199,202,200,223,237,236,238,227,228,230,229,226,231,232,72,73,75,74,82,77,76,78,92,79,81,80,83,93]},"version":"4.3.2"}
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@types/deep-equal/index.d.ts","../../../node_modules/memoize-one/dist/memoize-one.d.ts","../../../node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../icons/dist/index.d.ts","../../iris-grid/dist/DateUtils.d.ts","../../iris-grid/dist/formatters/TableColumnFormatter.d.ts","../../iris-grid/dist/formatters/BooleanColumnFormatter.d.ts","../../iris-grid/dist/formatters/CharColumnFormatter.d.ts","../../iris-grid/dist/formatters/DateTimeColumnFormatter.d.ts","../../iris-grid/dist/formatters/DecimalColumnFormatter.d.ts","../../iris-grid/dist/formatters/DefaultColumnFormatter.d.ts","../../iris-grid/dist/formatters/IntegerColumnFormatter.d.ts","../../iris-grid/dist/formatters/index.d.ts","../../iris-grid/dist/Formatter.d.ts","../../iris-grid/dist/FormatterUtils.d.ts","../../../node_modules/@types/jquery/JQueryStatic.d.ts","../../../node_modules/@types/jquery/JQuery.d.ts","../../../node_modules/@types/jquery/misc.d.ts","../../../node_modules/@types/jquery/legacy.d.ts","../../../node_modules/@types/sizzle/index.d.ts","../../../node_modules/@types/jquery/index.d.ts","../../utils/dist/CanceledPromiseError.d.ts","../../utils/dist/ColorUtils.d.ts","../../utils/dist/DbNameValidator.d.ts","../../utils/dist/DOMUtils.d.ts","../../utils/dist/PromiseUtils.d.ts","../../utils/dist/Pending.d.ts","../../utils/dist/RangeUtils.d.ts","../../utils/dist/TextUtils.d.ts","../../utils/dist/TimeoutError.d.ts","../../utils/dist/TimeUtils.d.ts","../../utils/dist/InvalidMetadataError.d.ts","../../utils/dist/ValidationError.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../utils/dist/TestUtils.d.ts","../../utils/dist/index.d.ts","../../../node_modules/@types/memoizee/index.d.ts","../../../node_modules/popper.js/index.d.ts","../../components/dist/popper/Popper.d.ts","../../components/dist/popper/Tooltip.d.ts","../../components/dist/popper/index.d.ts","../../components/dist/AutoCompleteInput.d.ts","../../components/dist/AutoResizeTextarea.d.ts","../../components/dist/BasicModal.d.ts","../../../node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../components/dist/Button.d.ts","../../components/dist/ButtonGroup.d.ts","../../components/dist/ButtonOld.d.ts","../../components/dist/CardFlip.d.ts","../../components/dist/shortcuts/Shortcut.d.ts","../../components/dist/shortcuts/GlobalShortcuts.d.ts","../../components/dist/shortcuts/ShortcutRegistry.d.ts","../../components/dist/shortcuts/index.d.ts","../../components/dist/context-actions/ContextActionUtils.d.ts","../../components/dist/context-actions/ContextActions.d.ts","../../components/dist/context-actions/ContextMenuItem.d.ts","../../components/dist/context-actions/ContextMenu.d.ts","../../components/dist/context-actions/ContextMenuRoot.d.ts","../../components/dist/context-actions/index.d.ts","../../components/dist/Collapse.d.ts","../../components/dist/Checkbox.d.ts","../../components/dist/SearchInput.d.ts","../../components/dist/ComboBox.d.ts","../../components/dist/CustomTimeSelect.d.ts","../../components/dist/DebouncedSearchInput.d.ts","../../components/dist/DeephavenSpinner.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-window/index.d.ts","../../../node_modules/@types/react-virtualized-auto-sizer/index.d.ts","../../components/dist/ItemList.d.ts","../../components/dist/DraggableItemList.d.ts","../../components/dist/DragUtils.d.ts","../../components/dist/HierarchicalCheckboxMenu.d.ts","../../components/dist/ItemListItem.d.ts","../../components/dist/LoadingOverlay.d.ts","../../components/dist/LoadingSpinner.d.ts","../../components/dist/menu-actions/Menu.d.ts","../../components/dist/menu-actions/DropdownMenu.d.ts","../../components/dist/menu-actions/index.d.ts","../../components/dist/MaskedInput.d.ts","../../components/dist/navigation/MenuItem.d.ts","../../components/dist/navigation/Menu.d.ts","../../components/dist/navigation/Page.d.ts","../../components/dist/navigation/Stack.d.ts","../../components/dist/navigation/index.d.ts","../../components/dist/Option.d.ts","../../components/dist/RadioGroup.d.ts","../../components/dist/RadioItem.d.ts","../../components/dist/Select.d.ts","../../components/dist/SelectValueList.d.ts","../../components/dist/SocketedButton.d.ts","../../components/dist/ThemeExport.d.ts","../../components/dist/TimeInput.d.ts","../../components/dist/TimeSlider.d.ts","../../components/dist/ToastNotification.d.ts","../../components/dist/UISwitch.d.ts","../../components/dist/index.d.ts","../../iris-grid/dist/IrisGridShortcuts.d.ts","../../grid/dist/KeyHandler.d.ts","../../grid/dist/key-handlers/SelectionKeyHandler.d.ts","../../grid/dist/key-handlers/TreeKeyHandler.d.ts","../../grid/dist/key-handlers/EditKeyHandler.d.ts","../../grid/dist/key-handlers/PasteKeyHandler.d.ts","../../grid/dist/key-handlers/index.d.ts","../../grid/dist/GridMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSelectionMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/EditMouseHandler.d.ts","../../grid/dist/mouse-handlers/index.d.ts","../../grid/dist/GridMetricCalculator.d.ts","../../../node_modules/event-target-shim/index.d.ts","../../grid/dist/GridModel.d.ts","../../grid/dist/GridRenderer.d.ts","../../grid/dist/Grid.d.ts","../../grid/dist/GridRange.d.ts","../../grid/dist/GridTestUtils.d.ts","../../grid/dist/GridTheme.d.ts","../../grid/dist/GridUtils.d.ts","../../grid/dist/MockGridModel.d.ts","../../grid/dist/MockTreeGridModel.d.ts","../../grid/dist/errors/PasteError.d.ts","../../grid/dist/errors/index.d.ts","../../grid/dist/index.d.ts","../../iris-grid/dist/IrisGridModel.d.ts","../../iris-grid/dist/IrisGridTableModel.d.ts","../../iris-grid/dist/IrisGridModelFactory.d.ts","../../iris-grid/dist/IrisGridTheme.d.ts","../../iris-grid/dist/IrisGridUtils.d.ts","../../iris-grid/dist/filters/FilterOperator.d.ts","../../iris-grid/dist/filters/FilterType.d.ts","../../iris-grid/dist/filters/index.d.ts","../../iris-grid/dist/TableUtils.d.ts","../../iris-grid/dist/IrisGridRenderer.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationOperation.d.ts","../../iris-grid/dist/sidebar/aggregations/Aggregations.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationEdit.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationUtils.d.ts","../../iris-grid/dist/sidebar/ChartBuilder.d.ts","../../iris-grid/dist/sidebar/CustomColumnBuilder.d.ts","../../iris-grid/dist/sidebar/OptionType.d.ts","../../iris-grid/dist/sidebar/RollupRows.d.ts","../../iris-grid/dist/sidebar/TableCsvExporter.d.ts","../../iris-grid/dist/sidebar/TableSaver.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../iris-grid/dist/sidebar/VisibilityOrderingBuilder.d.ts","../../iris-grid/dist/sidebar/index.d.ts","../../iris-grid/dist/IrisGrid.d.ts","../../iris-grid/dist/index.d.ts","../../log/dist/Logger.d.ts","../../log/dist/DefaultLogger.d.ts","../../log/dist/Log.d.ts","../../log/dist/LogProxy.d.ts","../../log/dist/LogHistory.d.ts","../../log/dist/LoggerLevel.d.ts","../../log/dist/index.d.ts","../src/plotly/Plotly.js","../src/plotly/Plot.js","../src/ChartModel.js","../../jsapi-shim/dist/dh.d.ts","../../jsapi-shim/dist/PropTypes.d.ts","../../jsapi-shim/dist/index.d.ts","../src/ChartTheme.js","../src/ChartUtils.js","../src/Chart.jsx","../../../node_modules/@types/lodash.debounce/index.d.ts","../src/FigureChartModel.js","../src/ChartModelFactory.js","../src/MockChartModel.js","../src/index.ts","../src/ChartTestUtils.js","../src/plotly/__mocks__/Plot.js","../src/plotly/__mocks__/Plotly.js","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bootstrap/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/base.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/jszip/index.d.ts","../../../node_modules/@types/lodash.clamp/index.d.ts","../../../node_modules/@types/lodash.flatten/index.d.ts","../../../node_modules/@types/lodash.throttle/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/overlayscrollbars/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/pouchdb-find/index.d.ts","../../../node_modules/@types/pouchdb-core/index.d.ts","../../../node_modules/@types/pouchdb-adapter-http/index.d.ts","../../../node_modules/@types/pouchdb-adapter-idb/index.d.ts","../../../node_modules/@types/pouchdb-adapter-websql/index.d.ts","../../../node_modules/@types/pouchdb-mapreduce/index.d.ts","../../../node_modules/@types/pouchdb-replication/index.d.ts","../../../node_modules/@types/pouchdb-browser/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/pretty-hrtime/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/react-transition-group/Transition.d.ts","../../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../../node_modules/@types/react-transition-group/config.d.ts","../../../node_modules/@types/react-transition-group/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/shortid/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/@types/stylelint/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/Source.d.ts","../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts","../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts","../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts","../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts","../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"38943ef508ccbc71691ff6c14f30e0468a85a4ec22c9e0a4eea2c9ba8ca19352","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9","2e345cb6511f4c4c60c274df6626c94f3182939034f06cdf414bfbccc584f822","63ea76eab54e08ce38ada84ddff0b080d6c2e360165071af684b43844b15bda7","98edf9bdfe6c7794349a88d720af3035fd4a68480895e72beaf8ff8e758a33f5","8a2395a5c1a95d05c205b791f012b120b4d02eb50a806e24d69da02c51de9d6f","123b33d472e095eef247713b75d8af051322947c9f82376094e2464f5b2c6c62","3cfca5c9292d8d84fb8f2002fbc638f1ce1116842fcf49da324c3ce428e5ba01","ae8664425db4d0412262eacb152add3880bb26a00b3351c60251836d1b0ff06d","198a7b1868feda59532c0b8c9787a40bc1a016bfeb4f34ac429c72f00d85f480","7438c25e995df1c13d7fc748e5cb01b90db71c9882bbeca26fbbb26669e899b4","81f15a049e25e077e47bd6654a33947253f23245a974d6cf84bc56e934057ea9","084fe2843779e36cc634a29427dfa6b4ad19bf3fc749a8ab71f8b1845dac8063","a321e06b62a5384475366ea8aa57d836cf1b49f18efae3714141bfb15097f48c","001f04d6a7434cac61cce765b969c30f7143a48f70dcc756e53000a8313fde30","2292a71a1c9601f1b9109ed3e6201a1de70597393f062f73ab3c8aae2b44747a","7c829ae2e0612753dec828fdc84baad4f98a1e0fa60ab79fe101b1020103a26e",{"version":"138070289059cb054c1e21c659e25a6c2f54b710f93ab7ebf5fa78a6568fad6a","affectsGlobalScope":true},{"version":"513dfbfe04b52253f35007545694c2a99c313fdb6b836bdb8cbc9c7fb0ff6166","affectsGlobalScope":true},{"version":"a4832e26b82049fc2774c96ca6e1c17b2c204246570a62fdbe7e8ee8af2cd4d4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","2b1af4170f6dfa90f43d2fe3d6c36f95b7fa121aa434a2acefb763d7be460a53","50eac108cc307665c28801910626932956adcf8dc0dc70ab1939dd0e8aeb6f28","1a68643644167daaea17e2f89d04edd9d1fec7bf881e4fa3ad4cd43d92447ce1","7255a17d460541e2ccca5f485bb58b6fa64bc750047c5e57ce7abf17cc3f4f3d","571ffdcb677c42d897370ca1a616798670d7715361dc099f713f03c067e8c988","1f8d8388b2da5785ef9c169db1493969f8c9e1ea50e1db1194a21708403f2e10","a299dcd51a18896ffb9f1249507d387a996b8d733cd1ee7c0a5fb46b86f88524","2c3d2bc00ffd291568c89e1ea920cf5c41b6b6a532cdc0bcb74e917eaf133f3b","e7857f874cbc2bd969097918305d8552156d0147d9a03a87e42f8cbd6e1729b5","0de99ed9f5d0a953aabe8de8999b0ce24944f36374d36c06abf9dca6e5567368","a756f87e33897fd95428da3288ed3061182b8678e38b48000c53e5499c7f8863","f68abba533f1aee022d1800ab3ad273e163909b97c171c8eea15fa04e3d02280","9b526aac58282b2b9c1afd1969828336c77a81ca52916214ae63a70e256a8032","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f544c98b782364169412ac2bc65143918f9f1dd49880920302693f2eb3bd3570","e5d5ee66044d79018aadeabf3dc39d758d9c45c49c004b3a57b76a974fb346d7","d73a69ee2796e4ceb9dcb037605d8e7ac1e44aa9683b9664c68b0cd1516a3905","1873db8f2261ba4f248bde3e5bb4c79b1fdc990315054e9604fce8f41ddd1587","7fde24f7b90ddb8aef7ab8f3e2c318babe0c606b7ea5a833369475b0129a05ee","366c22193ba68d3c1ea31d37d98dd5f133fc9e234f07c46656284422bb4209fa","ff60413f9896b702b4e653cf85f6f8246e11482ad4d6859997ca9edafed9cc46","b682e653b63b5aa118887e61cd81a78fc45d4ef8fe95d8c6449742919a5638a4","bbc1e78124f19ccf50225278b700436ce64cf92b0c6b1ca15567431a28371b31","1f93a4dd7096a18c6cf99085327b467de58f3cd7f0f941a8bdc1d7ec4284b301","a822e999d9c1814859735e919c2bd2a11f7d3c8633ab6656215dc386684e07bc","ae1b8ffb16f8dd0a4008ccf2534e6503af171a3c4ea17da590faeb0c41f85f3e","1cfe76cc39491c2f2059192c7486297154f0a517fe9b3bd9d223824a5f803573","acc42289b4e6d8d789b9f3a4c48fe601c23ab6fe747080f1dc99787b8e79d256","9de7ce840e4a5b95405a164d166d010eaa99fd631817ea3b0310ec4e22b98d0e","65c0791093075bbb931a7e218aa03c954f634702ecff2ae0b6efc92b71cc6db9","21e1b303e758ec4a1e9f703e1e1be8c47c8dd74034c2369fd01e9bfe1da98acc","cd303995edbd7439d6232f1e7596b38f5d1cd65ec0837e009ceba781aca110f5","33cb56e3cc910266a13ca59281b907459131acc58739c2bd68dab246f8ed01fa","c6d0cb5ad7498c2c977a5340f17bcfcc151609118789bbace2336079f2d9f84a","383d4add4d2b7a9b03bb0b7b9b2f62b70c269e79616b629946b51283c14a92cf","4162810d701126188368ff58526c81e7c4c6a9a32ed26c4b763a5d3535b46748","513b7862a230ed479fb045bbe87d37f9ee91cc20fee15dd4b16c3cc74aa3e514","8ff77a6b5f0b74c681e132e9510f5576a29150ee53b1324efed33d3d7fabd736","7bdf81223f6cfae94a48484223d4b59b8ef609cf680f0fa90941d8e093ff27b0","9fbe4ad05e10d7957283cc4a3aa909e70717c62d51bdc19516ffd75a60c2eaf4","8b423ba6b1f81c80542db7deba332d1938db29f6f127fe169287903abe67fe8d","9c0a4431746ad0073026505df7a5724b4126c0e1f41b90e87c1efa6b8335711d","0ec7fb37f4303f3cac4f35819f0d5d75b3b4692990da2590c63c656729447dfe","ed6fbb1cb7cb8dc283f9d5efa68c17d5a9fc5e32fc481e2be7eccd5077d3afc0","e96e84cd79dac3fb1369911a8e9888308deda9542dcfb19d1540414e9ab64465","616ed304b4a011a969ba5d2aa5fca781d66b3f0c8f3d099e19c7158da36fa07b","163be962fa11ca0e3bc9afd1188701e16f5db0d84f904be3a5327c04bf14c1dc","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","23255560340f60336ff79daf50b3b6432ec0f32f7dd19638d3a2406826a15d49","cbf272d1fef2ab8cca386524e1aa8e06caa3509eb6e724e0008ca613c05e7fdb","f8f0a01a9ec6571933c3b63b6d877d74729fbdab0be2fa87c18999b11357cf32","fca853da554cd762704a9bf8ad62cbf6d55d81c9d69b07b3c8a552367f4976d6","6b8d8f68865166b7f761ccdea7a66018f0452ddb7c6f75bf5cbaa31e6163af8f","d9cef8e439c407166963fa89b317d3ea7367e204035611447c9765786026f03b","ca888feddeab794c01fb1bec893ff46186801a30bca77c8a1aa28477f7e6f839","bb96345dfdd3b0695f5281537427e38fa85cb79449e3c6b59151bb7d753ef6f7","2561fd263d1d42554d0de99369f6fb352981090e2de0966b2e257891abf9977a","b01b764b8b1ce1376a70aa1bde2914093b36810a2a3e60cc9fd8f2741490a8f9","e6047a9c095d3b4a903aea90b49815be068476f1719e76766b7792ee21310f3a","cdcd29d866abedc194a88851871320fbb9c29e1c4868583b1f91ee2786acb818","c02107d9cae7a0c7541e8af0f4e0497650b1494e561e409e7cb90a12bc65ed09","5e62225c303695c8511d3831bca37c141931fd584e3aa1c8c5dd4b57cf01b1d0","1c3dd3b5d7eee485481470a75bd1829ee8e0388e87c8c8f8a8418f702592876a","53336c5924937a0a2a4ba1a515499f48092e4dd853386e77276c0a4ff8a1fa50","5a42225ecf779e7d42b44ff91cd7f842421835f28287e295e42622aa51aeeb6f","baab49106b672deb07dcd3e31333e4a2539970b5db9ee896aedbdba3ca2400e5","2af60becd168c31f931c6839f2cb126713bb0f556780b07959afd04b8311eade","826ea84343ee53323b8b67320019287543a15c1f25ad163552f4adfba79368da","7181cfa9a4f05524e825271e409017810c1bc6a4b9544e05be5bd59ee76ca691","ad9afc2c60e7303174e70e6cbfc1eca63d8a770855d5fa3ddaac8769b9d93658","7e6b3017bd81ce434b27ae46cee6bdc5850db0e0d75e6a1d45c6c23e17eb135b","9304c3176830887fd3bbb010a9542ce549397b63624a51c8e7f2be032adb76e9","6c9c7d76d7f525a366d5ebdb0b42bccfab0ec7bdc0bce4db5b97573ee0970d3e","c7322d04c36fbd32b9035e07416c30073fbadf0bb6c1e855425f12c1df645aee","198c3858acc28364fb1cdf1d99d140fd9e0f3732c57ccd40a1752bcf8f318a0b","0625a691c77d71dd48fc83a59bff500dfbf3bdc1fe9c079b64bcaf078b5158d4",{"version":"662564f7dc409b31c6ad48129d12a1320c132b45bcafd3a990d0f8f545ce0529","affectsGlobalScope":true},"49616c77d1f7669df57e8cc8afccd8454730bd5e3fa785edcfb3c0ba504cca3f","4e1cb04564eb20088c531c817c8f6c4db49620ef50376f35245642c67eb145ce","d3add4e7d6efaf837f6d0db385083d6b23a484c2c6079acbc8fa892c201487c7","8376014c53e41b0d5f96a78fdd2d8a8758640ad2f6ce292b5c66aebd6d088b46","03f3ca4f21862f79e971b5ca6b63805895cff6ccbd7ed31d2fd7327f19f5e028","f2b9951257d06d78828f43dc4047510ec21fe000f21cefd58684476db831ac5f","536fb1e2b80cceb77644b414e26ce29a8417f94a72f867f57e2e0c2db980a9ce","f0b0ef0ccfe0beeaa902aacd48798cc9a7f755546481cb149c4a57c7956c6d0a","2476381be38618f2937afa95c337739684aa174576a278139b7b08b6ab1f5341","c5d12b850beb2feb0369374909dc30fea794f25baaae8aa6f23ee533d80dfbac","ca8d29244d394cdc4cbfbddbbbe183bdcdb25daeb1814777bd1b988efc963bc5","685aa006f7939b593b1f39b823cedfb4f23ccb0002226988f8270b6345399aa4","0a5939cc81f0c470f3cae077943ab1a8f27bd0e0ef31fb6d9999c1099d5c1557","da1c29ce8da2803892f72c74fdb05992765ec7d5d9a6ef4dd82f3534e7d4773e","deb2c4a4f7e35965dde684402787eac08ca9143178a75b2c441d07fa7830fcbe","069d9515e3cb0d254928b11bf7da7e22afddf1d2a14f239421a128952069f898","c33ff15f5bb2ec9fe792288ee8a6e61a45210aad52007bc573d11e49a17542de","0cb0bb747f030197835fd42fab515388f3cd9745256f8b9badb0ed33477b4275","40d2b100e0cf82c6a297597f2f68f152ed9bd67533bbab359c5cc3d2d43a0e98","47c12b9b24e5bfd2879de2e2d1e921b2fd984e11c2086460ef3110408135641d","43eb52bf5a546b3f84e7da5b4eb1305f9ecfe9f5a3f41b85d620d1354a5f3646","63633f5796c4cf53210ce75f02e5d6e81b88012f5c8832af32c35d0a8b75cdde","520872f7c5dd8e4aa5eded9d68906f287f0e7e1b223caa2826120dafea9b8410","15f5b91eae3102052653d137607e564bae28611b8c4d7de7246a6ec18a6215b6","3cb00f0b39f0dbc16cf727d2c38ec9913b64b666b256fbc683a5eadd9fc767b6","0a52641f1e38e5b7a7edb7eebbd6ad06e561db7c017f397323a263d74dd58e3f","2ceab74277f8e35d481a528c74e2c992429b2b75b8f0873fcd541cab9b210f0f","e442f58a3f157713f6fe0cb7fe25dfdf9b499cceed0e126eb112451c4bda9f74","b3aaf4efcababe7229436c363719a2d6d64e66c5bf1952ad94f4e7e88d2292a0","93a239166429cef36a11b58831be7493a8b6083297819b864f64fe5a6c51769d","7202799c12b024a0ad8bb7d331a2abfa37000f7d4d4400eedaf0e8de86e9325d","3158f69a5641c10fa2014100c5e7f0884b6d4a0cce43d32af91009a5e8031674","752fa9ab4f022a094d6c036e556ab0cd65b8c599db46b0ab6ef20c5f541347c3","85accdf9e385b0b171b1e536f1ddfb7574b2ad059f28dc9fec681d13383cae29","cb709f8f0cf417b33a0604e45023c47ec2301ca09fe08177a1955b1cfbdd4e78","3305eb25f74ae5fe0ae670a2ef5f5cfe12a6b890d4ddd019e232248aafb69041","a345e40ec66caa5e999bcb4e39443b41024c7dd83dcae1b271dfb9f3baf42fe0","e7c43187ecd8e6fd5ac183d8fab70d262601b83ac8a350f77102e501b70c3399","d7a43c368e3a7eeae8570e6b731ea30797a436dfe413308d909ba64d7ee40d90","f22947fc62ea413bdb41dccd2dc03ad90c517bf1499988e7e4e06dc4cfe4d0e4","8cbb340cf3ddabe63ca08a8a8ee687cbd2e2240efc203829d88d6bfc5442af9f","30e9979007b862c3653edc1bcdd9c3b2daac943d86e5dc45ea4568ed5e717480","ecac33101e9b0de576ced13eed08c3203f13524956f92437a49291cc1aace4f9","ad8c9effc950e5a2051075b274c45876a76ffb88341994b278468e62a4bf39fc","78a9c7b35d8ea1a9e15bb1926726f4d19121b57bc3314ac6e7c659dbca213258","78294e1333be0e2a3c02f253721dacd0c205b12689f9a2992a6b9392c9e8b0f6","7fefa48fa54e87d74f1ebafe6934fb8be19b17ffa65a12d5dea921da09f5fc30","02e8c7670313db815cfc304c046b77fde0ad6d1de4c7f1527a12430ed2b73568","339fa6c313815d88228c93adc09832f4386c890844b6462cbbcde1cea0c47a82","230bc82cfb0df428eee75a194cbd1768a2dcd35ca39d669e771ae31380d5589e","584dc1976391a7579cb93466a54df2263ce0c7a4811897cb9777cbeef22a26c2","3b5f29d4e9827cdfef6b008bc5b00f1458fcb7218097fad40945d90322efa278","00566869cb63f7915307b242d07724f7c28eaa51724c36fcc1662d3b6f62a594","1f20b8737e2c06851c822b26f427fa97cbb687f26b873db7cc1321f8a7f5f787","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"414535152cbb6d2ef11c94953a793e18cb23c5329d439dacf66183adf87989fd","fbf3b885d9bab5d9061d4b1edc2ff4fd845ea1c28e5dcd34ac4a43d156161f46","8bd5c5d0bc2d2086c2e6d1b6e11340a86f75d69395ea0952226f7badd1b3c4ed","39eaa898927709414259421f4310d4a9bbb943b4dcb82c7a5cd75f0142c86273","5f34e74f9d889817c1388da54dbfdb28a36af5676c396fa3041309690bfa9ade","b0e23a13de5e00df2097f3bbc0ba67ecc18946f10222c2d4571814ba718467d7","2f89dab4002cafa419a8385e6cd54f3fd5458a024feb0f79e9967bf4c47157f7","e841f45cbf880c37dfc3279dd87523670ac8bf5477541a682ab10669ae6db0f0","4dfb0de036b79d6c4851ad323b7b8ba8d2eff92099edb928c28e2b8f151b4c73","b59fc967b467026aeb1dc3f3fc02c26b8b0b613212ade066d58cb1050b774da1","b10686e239ffd69ba14643969dd14c8be05f0fabeaff6490637efd034686474a","c933467f6d5ecf7e66c36fb0917c3a82ed8d5277d0d7614ae734c759f4aba1be","f7e4220251ece9f6ac33fe18be7ab8052662d747b08a23de18252936e7c1bf1a","cc6194741830edfe6eda4f51dd4b8c2708a14ba1eafd8fc95cbb2f94f699d48b","0637ca78a74b77392effa72e38c2951cce0bb5f7019276f312f85f3d308eb5ef","2b0dc274f4e10794352b468f179cf8b5a9a0203406d8185717dc93a5d7ea9136","53c520b2ebbd7c565fb533caffe747807ae5adbff2f50178a011bad4c334160c","dc0b70f6d69942102028e513dd78c86c81f7fa684dda1468d84e2594cda70f07","135f9d4fe165f3f64f8ca1edcbf4e57b59c7af3da6099bbcfb2a4af39f2a54d2","f31bc80b69e6ab4521a591db7ad53c5a9927fe19941ab442455685d41a4891b4","7044c407773c0900946b7a02f3a0e7e5e79af8b0a32b14aeb419b7beedfb3fcd","d8ce14c69633699d7c76f2ad94f78e882071f7863706f8e6e0ecc31800169e67","ab7d96fca46a5075458fcbca5ca3d7059059ef04e426f8032013d3c3a5351933","bf351d3e9fc47ddec96c6a219d0b6d96c43c18fc376934615d1702ff334ee7de","e24d10ccda341f500740a2d46822b279969d98664f92e0f1c30f6ef796254d9d","f80c6be079ec1df24ab5e64fc860248767f86421e05de7896a493742486f1ee0","b1eb670eee94eebc06e77d75b6c606491f84d01122b2e9edef4edeb9ea143318","0c9f55f247187045cc1432f0d81c94bcf56fb409acb163d408bfd5a1793447a5","c13e280d244dc0829d954089e1d0446455efdb72fb4bdc2e3f0561ffbc66c905","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e",{"version":"24ff7ac33bdb941a8cd04408a31ba15fafab9684f751e7e88234813b89712c19","affectsGlobalScope":true},{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","55cb77e6ff3d95a68568446f53d3f1dc8fca753575d7c60471a865685f08dcc3","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"dda27180d5ff550ace8378f5df0f7a26e616f0c4e310c77e94329e2355f9c255","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","12a01de318341fefb7be11f22eb4bf28478a5f137b1b4546c509156e9c158198","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","5aa2a9a778a055cd668ea419ea80ba6e195210eb37d47707a1a58886aa4d80f0","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","9e6a556cf660a94faa51f5bce6ed009b9e02373546a4c67925da909f36c039d0","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"61dd09b57a0a5cf1486c3ceb3a18ad23babfe602c323035ce3d01544c5e3e0b6","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","b1b1adc57093310531ddf3f78b21bda16c30f7319088b0981449476a6616cff3","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","de1d6e224048139baf7494237a9231be6bab9e990fb239c7825bfd38b06d8c90","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","abc2748988e07e7e754b43cfcfadca4d45f3449eb4c0be503f13630a3f15f22b","6109487f86bc33b14eebb35cbc878b591328e19657d92bc6c61b667f7f9594c8","96b729b46007058fceb10567283275a023415f724af78e91cab3ac7073c19635","620a033e8ff8ffc3d280c3d78981d8a929d0a8c14574a3b87413d99d7f02fadd","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","df38da6685578ac3d0e4ce2d20f3d59462ee53959b8263d2532ec9cec48ae098","9751247ee3bbcf1c63592f0f4dafb44559680b2b3e5736b7f0578c6a737d74c8","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26",{"version":"2d2482647045d334fcfce6eefa3340db2800cb2d0814e7b58d4f3b53c274d8ec","affectsGlobalScope":true},{"version":"2e332da5d628517bf415be2851b1954512b83f6bae4a98ed9786c6d4bf837bb8","affectsGlobalScope":true},{"version":"838524a3cc660f7bbb104ffa15febad659d1ef1633dac47340bfbfcbbbffdb08","affectsGlobalScope":true},{"version":"50a03e74fae4542ecfb326b34517ec2e058aee15bcb60af5b2e41c5e2db0d079","affectsGlobalScope":true},{"version":"d252bde46b7594f8f90a45d59181b08134ee8c4919ebb2ba7088ba26056bf621","affectsGlobalScope":true},{"version":"c892c9c7905dd7435264ca83ff0f3ac7f39a0937ee728acdce4b476ece7d6fd9","affectsGlobalScope":true},{"version":"1abdfe21f6b99b864965f9dc5073c49f0c0f3d5e8e1fe498fb94bd0a479d3afe","affectsGlobalScope":true},"4d737cdd77685ed65bd61d375375cae446fb0f46f711bbb3ef3f81a350212569","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51",{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},"2f40de129e44e238a61c6a44f0ac8e529daa358797893d727e0e5f584ac94cf3",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","ed3b711f533ddb3a5451f4c4bb0df3a0b95e9d0433b3b7834644dd1718d06d31","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","30783d97bd0231ae2c4b9320043d61442a8177e81c7df826a5536b95fdd63280","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","aec0cabbdfacf43db998d8e50ee6f1e72131d24b5018dfb84f14806717baa0a6","e32dad799d088c53cbe1da736e34cad03027d56dd2fc77d484a67100278bc4bd","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","9d74c7330800b325bb19cc8c1a153a612c080a60094e1ab6cfb6e39cf1b88c36","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","b2f006ee835f315d01c43c0f5d9e9ad78a5870b380899877b32a33078d065dbd",{"version":"3a1e422f919c70fca66e94dc641ad8d9732b3d2533ac047b8a9aaca9eea3aa10","affectsGlobalScope":true},"f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"target":4},"fileIdsList":[[251],[54],[251,252,253,254,255],[251,253],[72,96],[303],[305],[306,307],[306],[309],[311],[50,304],[313,314,315,316],[317],[269,270,303,318],[270,303],[321],[50],[326],[327],[89,91],[67,68,69,70,71],[222],[210,212,213,214,215,216,217,218,219,220,221,222],[210,211,213,214,215,216,217,218,219,220,221,222],[211,212,213,214,215,216,217,218,219,220,221,222],[210,211,212,214,215,216,217,218,219,220,221,222],[210,211,212,213,215,216,217,218,219,220,221,222],[210,211,212,213,214,216,217,218,219,220,221,222],[210,211,212,213,214,215,217,218,219,220,221,222],[210,211,212,213,214,215,216,218,219,220,221,222],[210,211,212,213,214,215,216,217,219,220,221,222],[210,211,212,213,214,215,216,217,218,220,221,222],[210,211,212,213,214,215,216,217,218,219,221,222],[210,211,212,213,214,215,216,217,218,219,220,222],[210,211,212,213,214,215,216,217,218,219,220,221],[272,292,303,336,337],[272,286,303],[300,301],[269,270,277,286],[261,269,277],[293],[265,270,278],[286],[267,269,277],[269],[269,271,286,292],[270],[277,286,292],[269,270,272,277,286,289,292],[272,289,292],[302],[292],[267,269,286],[259],[291],[284,293,295],[277],[258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299],[283],[269,271,286,292,295],[345],[345,346,347,348,349,350],[310,344],[344,345],[50,323,357],[50,359],[50,361],[361,362,363,364,365],[46,47,48,49],[373],[372],[303,379,380,381,382,383,384,385,386,387,388,389],[378,379,388],[379,388],[370,378,379,388],[379],[265,378,388],[378,379,380,381,382,383,384,385,386,387,389],[265,303,372,375,376,377,390],[393],[85,86],[85,86,87,88],[90],[48,50,51,52,53,55,226,233,234,235,236,241],[51],[51,239,241,244],[51,239],[51,226,233,239,240],[51,95,233,236,239,241,243],[51,236,240,241],[51,236,241,242,244,245,246],[51,234],[50,51],[48,50,95,96,99],[48,50],[50,103],[48,50,95,96,99,120],[50,55,96],[50,120],[50,94,95,125,128],[50,55],[50,94,95,126,127],[50,95],[50,104],[50,55,111],[50,112],[50,94,112],[50,112,115],[112,113,114,116],[72,94,99,100,101,102,104,105,106,107,111,117,118,119,120,121,122,123,124,128,129,130,131,132,133,134,137,138,143,144,145,146,147,148,149,150,151,152,153,154],[50,96,99,112,135],[136],[50,139],[139,140,141,142],[48,50,96],[50,97],[97,98],[108],[108,109,110],[48,50,157,162,163,175,176,178,179],[177],[95],[181],[180],[178],[95,185],[187],[157,162,163,175,176,178,179,180,181,182,183,184,185,186,188],[157,180],[158,159,160,161],[163,180],[163],[166],[164,165,167,168,169,170,171,172,173,174],[64],[48,50,54,94,95,155,189,190,199,224],[65,189],[65],[189],[155],[65,94,95,189,190],[94,197],[195,196],[57],[57,58,59,60,61,62,63],[56,65,66,156,190,191,192,193,194,198,225],[48,50,190],[48,50,95,190],[48,50,189,190],[48,50,65],[48,50,95,190,222],[50,201],[200],[50,200],[201,202,203,204,205,206,207,208,209,223],[48],[237,238],[227],[228],[230],[227,229,230,231,232],[77],[92],[73,74,75,76,77,78,79,80,81,82,83,84,93]],"referencedMap":[[253,1],[103,2],[256,3],[252,1],[254,4],[255,1],[257,5],[304,6],[306,7],[308,8],[307,9],[310,10],[312,11],[311,12],[317,13],[314,14],[319,15],[320,16],[322,17],[323,18],[327,19],[328,20],[92,21],[72,22],[330,6],[331,23],[243,23],[332,23],[333,23],[211,24],[212,25],[210,26],[213,27],[214,28],[215,29],[216,30],[217,31],[218,32],[219,33],[220,34],[221,35],[222,36],[334,17],[338,37],[336,38],[302,39],[261,40],[262,41],[263,42],[264,43],[265,44],[266,45],[268,46],[269,46],[270,47],[271,48],[272,49],[273,50],[274,51],[303,52],[275,46],[276,53],[277,54],[280,55],[281,56],[284,46],[285,57],[286,46],[289,58],[300,59],[291,58],[292,60],[294,44],[296,61],[297,44],[340,46],[346,62],[347,62],[348,62],[351,63],[345,64],[344,62],[349,62],[350,65],[125,18],[356,18],[358,66],[359,67],[360,18],[362,68],[364,18],[361,18],[363,68],[366,69],[127,18],[126,18],[50,70],[51,18],[367,6],[374,71],[376,72],[390,73],[389,74],[380,75],[381,76],[382,76],[383,75],[384,75],[385,75],[386,77],[379,78],[387,74],[388,79],[391,80],[394,81],[87,82],[89,83],[88,82],[373,72],[91,84],[242,85],[236,86],[245,87],[248,88],[240,86],[241,89],[244,90],[246,91],[247,92],[235,93],[234,86],[249,94],[250,86],[100,95],[101,96],[102,18],[104,97],[105,96],[106,18],[107,18],[119,18],[118,96],[121,98],[122,99],[123,100],[124,18],[129,101],[131,102],[128,103],[132,18],[133,18],[134,18],[138,18],[144,18],[145,18],[146,18],[120,18],[147,18],[148,104],[149,18],[151,18],[152,18],[153,105],[154,18],[112,106],[113,107],[115,108],[114,107],[116,109],[117,110],[155,111],[136,112],[135,107],[137,113],[140,114],[139,97],[141,18],[142,18],[143,115],[97,116],[98,117],[99,118],[109,119],[108,18],[110,119],[111,120],[180,121],[178,122],[179,123],[182,124],[184,124],[157,125],[185,126],[186,127],[188,128],[189,129],[160,130],[161,130],[158,130],[159,130],[162,131],[174,132],[165,133],[167,134],[168,133],[169,133],[170,134],[171,133],[172,133],[164,133],[166,133],[173,133],[175,135],[55,2],[65,136],[225,137],[190,138],[192,139],[199,140],[156,141],[191,142],[198,143],[197,144],[58,145],[59,145],[60,145],[61,145],[62,145],[63,145],[64,146],[226,147],[204,148],[205,148],[207,149],[208,150],[209,151],[223,152],[202,153],[203,154],[201,155],[224,156],[238,157],[239,158],[228,159],[229,160],[231,161],[233,162],[78,163],[93,164],[94,165]],"exportedModulesMap":[[253,1],[103,2],[256,3],[252,1],[254,4],[255,1],[257,5],[304,6],[306,7],[308,8],[307,9],[310,10],[312,11],[311,12],[317,13],[314,14],[319,15],[320,16],[322,17],[323,18],[327,19],[328,20],[92,21],[72,22],[330,6],[331,23],[243,23],[332,23],[333,23],[211,24],[212,25],[210,26],[213,27],[214,28],[215,29],[216,30],[217,31],[218,32],[219,33],[220,34],[221,35],[222,36],[334,17],[338,37],[336,38],[302,39],[261,40],[262,41],[263,42],[264,43],[265,44],[266,45],[268,46],[269,46],[270,47],[271,48],[272,49],[273,50],[274,51],[303,52],[275,46],[276,53],[277,54],[280,55],[281,56],[284,46],[285,57],[286,46],[289,58],[300,59],[291,58],[292,60],[294,44],[296,61],[297,44],[340,46],[346,62],[347,62],[348,62],[351,63],[345,64],[344,62],[349,62],[350,65],[125,18],[356,18],[358,66],[359,67],[360,18],[362,68],[364,18],[361,18],[363,68],[366,69],[127,18],[126,18],[50,70],[51,18],[367,6],[374,71],[376,72],[390,73],[389,74],[380,75],[381,76],[382,76],[383,75],[384,75],[385,75],[386,77],[379,78],[387,74],[388,79],[391,80],[394,81],[87,82],[89,83],[88,82],[373,72],[91,84],[242,85],[236,86],[245,87],[248,88],[240,86],[241,89],[244,90],[246,91],[247,92],[235,93],[234,86],[249,94],[250,86],[100,95],[101,96],[102,18],[104,97],[105,96],[106,18],[107,18],[119,18],[118,96],[121,98],[122,99],[123,100],[124,18],[129,101],[131,102],[128,103],[132,18],[133,18],[134,18],[138,18],[144,18],[145,18],[146,18],[120,18],[147,18],[148,104],[149,18],[151,18],[152,18],[153,105],[154,18],[112,106],[113,107],[115,108],[114,107],[116,109],[117,110],[155,111],[136,112],[135,107],[137,113],[140,114],[139,97],[141,18],[142,18],[143,115],[97,116],[98,117],[99,118],[109,119],[108,18],[110,119],[111,120],[180,121],[178,122],[179,123],[182,124],[184,124],[157,125],[185,126],[186,127],[188,128],[189,129],[160,130],[161,130],[158,130],[159,130],[162,131],[174,132],[165,133],[167,134],[168,133],[169,133],[170,134],[171,133],[172,133],[164,133],[166,133],[173,133],[175,135],[55,2],[65,136],[225,137],[190,138],[192,139],[199,140],[156,141],[191,142],[198,143],[197,144],[58,145],[59,145],[60,145],[61,145],[62,145],[63,145],[64,146],[226,147],[204,148],[205,148],[207,149],[208,150],[209,151],[223,152],[202,153],[203,154],[201,155],[224,156],[238,157],[239,158],[228,159],[229,160],[231,161],[233,162],[78,163],[93,164],[94,165]],"semanticDiagnosticsPerFile":[253,251,54,103,256,252,254,255,257,304,306,308,307,305,310,52,312,311,313,317,314,316,319,320,322,323,324,325,326,327,328,92,68,67,72,70,69,315,329,330,331,243,332,333,211,212,210,213,214,215,216,217,218,219,220,221,222,334,95,318,335,309,337,338,336,301,259,302,260,261,262,263,264,265,266,267,268,269,270,271,258,298,272,273,274,303,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,300,291,292,293,294,295,299,296,297,339,340,341,342,343,346,347,348,351,345,344,349,350,352,353,48,354,355,125,356,358,359,360,362,364,361,363,365,366,127,126,46,50,51,367,368,49,369,71,370,371,374,375,376,321,392,390,389,380,381,382,383,384,385,386,379,387,388,378,391,393,394,377,47,177,85,87,89,88,86,53,96,373,91,90,357,372,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,42,43,44,1,9,45,242,236,245,248,240,241,244,246,247,235,234,249,250,100,101,102,104,105,106,107,119,118,121,122,123,124,130,129,131,128,132,133,134,138,144,145,146,120,147,148,149,150,151,152,153,154,112,113,115,114,116,117,155,136,135,137,140,139,141,142,143,97,98,99,109,108,110,111,180,176,178,163,181,179,182,183,184,157,185,186,187,188,189,160,161,158,159,162,174,165,167,168,169,170,171,172,164,166,173,175,55,56,65,66,225,190,192,199,156,191,193,194,198,195,196,197,58,59,60,61,62,63,57,64,226,204,205,206,207,208,209,223,202,200,203,201,224,238,237,239,228,229,231,230,227,232,233,73,74,76,75,83,78,77,79,93,80,82,81,84,94]},"version":"4.3.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/chart",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3-bard.1+efeb75a",
|
|
4
4
|
"description": "Deephaven Chart",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@deephaven/icons": "^0.6.
|
|
38
|
-
"@deephaven/iris-grid": "^0.6.
|
|
39
|
-
"@deephaven/jsapi-shim": "^0.6.
|
|
37
|
+
"@deephaven/icons": "^0.6.3-bard.1+efeb75a",
|
|
38
|
+
"@deephaven/iris-grid": "^0.6.3-bard.1+efeb75a",
|
|
39
|
+
"@deephaven/jsapi-shim": "^0.6.3-bard.1+efeb75a",
|
|
40
40
|
"deep-equal": "^2.0.4",
|
|
41
41
|
"lodash.debounce": "^4.0.8",
|
|
42
42
|
"memoize-one": "^5.1.1",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@babel/cli": "^7.14.8",
|
|
54
|
-
"@deephaven/log": "^0.6.
|
|
55
|
-
"@deephaven/mocks": "^0.6.
|
|
56
|
-
"@deephaven/tsconfig": "^0.6.
|
|
54
|
+
"@deephaven/log": "^0.6.3-bard.1+efeb75a",
|
|
55
|
+
"@deephaven/mocks": "^0.6.3-bard.1+efeb75a",
|
|
56
|
+
"@deephaven/tsconfig": "^0.6.3-bard.1+efeb75a",
|
|
57
57
|
"@types/react": "^16.14.8",
|
|
58
58
|
"@types/react-dom": "^16.9.13",
|
|
59
59
|
"cross-env": "^7.0.2",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"publishConfig": {
|
|
74
74
|
"access": "public"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "efeb75ac28c37ccf3fa966286a3535ebcaae071a"
|
|
77
77
|
}
|