react-autoql 3.5.1 → 3.5.2

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.
@@ -7,7 +7,7 @@ import utc from 'dayjs/plugin/utc';
7
7
  import timezone from 'dayjs/plugin/timezone';
8
8
  import axios from 'axios';
9
9
  import _$1 from 'lodash';
10
- import React, { Fragment, Component } from 'react';
10
+ import React, { Fragment, Component, createRef } from 'react';
11
11
  import _regeneratorRuntime from '@babel/runtime/regenerator';
12
12
  import PropTypes, { shape, string, number, bool, oneOf, arrayOf, func, instanceOf, oneOfType, array } from 'prop-types';
13
13
  import { BsArrowBarDown, BsArrowBarUp } from 'react-icons/bs';
@@ -48,7 +48,6 @@ import { symbol, symbolCircle, pie, arc } from 'd3-shape';
48
48
  import { entries } from 'd3-collection';
49
49
  import 'd3-transition';
50
50
  import Drawer from 'rc-drawer';
51
- import 'lodash.includes';
52
51
  import _has from 'lodash.has';
53
52
  import { Scrollbars } from 'react-custom-scrollbars';
54
53
  import LocalizedStrings from 'react-localization';
@@ -1721,7 +1720,7 @@ var lang = new LocalizedStrings({
1721
1720
  queryPrompt: 'Type your queries here ',
1722
1721
  seeMore: 'See more',
1723
1722
  dataMessengerOptions: 'Options menu',
1724
- openFilterLocking: 'Open filter locking menu',
1723
+ openFilterLocking: 'Manage Filters',
1725
1724
  closeFilterLocking: 'Close filter menu',
1726
1725
  filterLockingTitle: 'Filter Locking',
1727
1726
  noFiltersLocked: 'No Filters are locked yet',
@@ -1761,7 +1760,7 @@ var lang = new LocalizedStrings({
1761
1760
  queryPrompt: 'Escribe tus consultas aquí',
1762
1761
  seeMore: 'Ver más',
1763
1762
  dataMessengerOptions: 'Menú de opciones',
1764
- openFilterLocking: 'Abrir menú de filtrar',
1763
+ openFilterLocking: 'Administrar filtros',
1765
1764
  closeFilterLocking: 'Cerrar menú de filtrar',
1766
1765
  filterLockingTitle: 'Menú de Filtro',
1767
1766
  noFiltersLocked: 'Ningún filtro está bloqueado todavía',
@@ -3099,9 +3098,10 @@ var fetchConditions = function fetchConditions() {
3099
3098
  token = _ref10.token,
3100
3099
  domain = _ref10.domain;
3101
3100
 
3102
- // if (!domain || !apiKey || !token) {
3103
- // return Promise.reject(new Error('Unauthenticated'))
3104
- // }
3101
+ if (!domain || !apiKey || !token) {
3102
+ return Promise.reject(new Error('Unauthenticated'));
3103
+ }
3104
+
3105
3105
  var url = "".concat(domain, "/autoql/api/v1/query/condition-locking?key=").concat(apiKey);
3106
3106
  var config = {
3107
3107
  headers: {
@@ -3454,6 +3454,12 @@ var QueryInput = /*#__PURE__*/function (_React$Component) {
3454
3454
  if (!_isEqual(getThemeConfig(_this.props.themeConfig), getThemeConfig(prevProps.themeConfig))) {
3455
3455
  setCSSVars(getThemeConfig(_this.props.themeConfig));
3456
3456
  }
3457
+
3458
+ if (_this.props.inputValue && _this.props.inputValue !== prevProps.inputValue) {
3459
+ _this.setState({
3460
+ inputValue: _this.props.inputValue
3461
+ });
3462
+ }
3457
3463
  });
3458
3464
 
3459
3465
  _defineProperty(_assertThisInitialized(_this), "componentWillUnmount", function () {
@@ -3737,6 +3743,12 @@ var QueryInput = /*#__PURE__*/function (_React$Component) {
3737
3743
  queryText: _this.userSelectedValue
3738
3744
  });
3739
3745
  }
3746
+
3747
+ if (_this.props.isBackButtonClicked) {
3748
+ _this.setState({
3749
+ inputValue: ''
3750
+ });
3751
+ }
3740
3752
  });
3741
3753
 
3742
3754
  _defineProperty(_assertThisInitialized(_this), "moveCaretAtEnd", function (e) {
@@ -3774,7 +3786,9 @@ var QueryInput = /*#__PURE__*/function (_React$Component) {
3774
3786
  onFocus: _this.moveCaretAtEnd,
3775
3787
  autoFocus: true
3776
3788
  }
3777
- }) // <QueryInputWithValidation
3789
+ }) :
3790
+ /*#__PURE__*/
3791
+ // <QueryInputWithValidation
3778
3792
  // authentication={getAuthentication(this.props.authentication)}
3779
3793
  // themeConfig={getThemeConfig(this.props.themeConfig)}
3780
3794
  // ref={(ref) => (this.queryValidationInputRef = ref)}
@@ -3791,7 +3805,7 @@ var QueryInput = /*#__PURE__*/function (_React$Component) {
3791
3805
  // this.focus()
3792
3806
  // }}
3793
3807
  // />
3794
- : /*#__PURE__*/React.createElement("input", {
3808
+ React.createElement("input", {
3795
3809
  className: "react-autoql-chatbar-input".concat(_this.props.showChataIcon ? ' left-padding' : ''),
3796
3810
  placeholder: _this.props.placeholder || 'Type your queries here',
3797
3811
  value: _this.state.inputValue,
@@ -3848,7 +3862,8 @@ _defineProperty(QueryInput, "propTypes", {
3848
3862
  className: string,
3849
3863
  autoCompletePlacement: string,
3850
3864
  showLoadingDots: bool,
3851
- showChataIcon: bool
3865
+ showChataIcon: bool,
3866
+ inputValue: string
3852
3867
  });
3853
3868
 
3854
3869
  _defineProperty(QueryInput, "defaultProps", {
@@ -3862,6 +3877,8 @@ _defineProperty(QueryInput, "defaultProps", {
3862
3877
  className: null,
3863
3878
  showLoadingDots: true,
3864
3879
  showChataIcon: true,
3880
+ isBackButtonClicked: false,
3881
+ inputValue: undefined,
3865
3882
  source: [],
3866
3883
  onSubmit: function onSubmit() {},
3867
3884
  onResponseCallback: function onResponseCallback() {}
@@ -7959,6 +7976,10 @@ var ChataChart = /*#__PURE__*/function (_Component) {
7959
7976
  });
7960
7977
  var leftMargin = Math.ceil(maxYLabelWidth) + 55; // margin to include axis label
7961
7978
 
7979
+ if (isNaN(leftMargin)) {
7980
+ leftMargin = 96; // if there is no yAxisLabels, set leftMargin to default value as 96
7981
+ }
7982
+
7962
7983
  if (xAxisBBox.width > _this.props.width) {
7963
7984
  leftMargin += xAxisBBox.width - _this.props.width;
7964
7985
  }
@@ -8014,7 +8035,11 @@ var ChataChart = /*#__PURE__*/function (_Component) {
8014
8035
  var xAxis = select(_this.chartRef).select('.axis-Bottom').node();
8015
8036
  var xAxisBBox = xAxis ? xAxis.getBBox() : {};
8016
8037
  var bottomMargin = Math.ceil(xAxisBBox.height) + bottomLegendMargin + 40; // margin to include axis label
8017
- // only for bar charts (vertical grid lines mess with the axis size)
8038
+
8039
+ if (xAxisBBox.height === 0) {
8040
+ bottomMargin = 463; // if no xAxisBBox available, set bottomMarigin to default as 463
8041
+ } // only for bar charts (vertical grid lines mess with the axis size)
8042
+
8018
8043
 
8019
8044
  if (_this.props.type === 'bar' || _this.props.type === 'stacked_bar') {
8020
8045
  var innerTickSize = _this.props.height - _this.state.topMargin - _this.state.bottomMargin;
@@ -8298,7 +8323,9 @@ var ChataChart = /*#__PURE__*/function (_Component) {
8298
8323
  currencySelectorState = _this$state2.currencySelectorState,
8299
8324
  quantitySelectorState = _this$state2.quantitySelectorState,
8300
8325
  ratioSelectorState = _this$state2.ratioSelectorState;
8301
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
8326
+ return /*#__PURE__*/React.createElement("div", {
8327
+ id: "chata-chart-popover"
8328
+ }, /*#__PURE__*/React.createElement("div", {
8302
8329
  className: "axis-selector-container"
8303
8330
  }, !!currencySelectorState.length && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
8304
8331
  className: "number-selector-header"
@@ -10235,7 +10262,7 @@ var QueryOutput = /*#__PURE__*/function (_React$Component) {
10235
10262
  var formattedColumns = columns.map(function (col, i) {
10236
10263
  /**
10237
10264
  * EDIT:
10238
- * We no longer want to default to one over the other. Howeever,
10265
+ * We no longer want to default to one over the other. Howeever,
10239
10266
  * I would like to hang onto this code for now incase we do want to
10240
10267
  * include either/or in some cases in the future
10241
10268
  */
@@ -10975,9 +11002,9 @@ var QueryOutput = /*#__PURE__*/function (_React$Component) {
10975
11002
  var text = output.replace(/'/g, '');
10976
11003
 
10977
11004
  if (_get(queryResponse, 'data.data.persistent_locked_conditions').includes(text) || _get(queryResponse, 'data.data.session_locked_conditions').includes(text)) {
10978
- return "\n <a class=\"react-autoql-condition-link-filtered\">\n <span class=\"material-icons react-autoql-custom-icon\">lock</span>\n ".concat(' ', text, "\n </a>\n ");
11005
+ return "\n <a id=\"react-autoql-interpreted-value-label\" class=\"react-autoql-condition-link-filtered\">\n <span class=\"material-icons react-autoql-custom-icon\">lock</span>\n ".concat(' ', text, "\n </a>\n ");
10979
11006
  } else {
10980
- return "<a class=\"react-autoql-condition-link\">".concat(text, "</a>");
11007
+ return "<a id=\"react-autoql-interpreted-value-label\" class=\"react-autoql-condition-link\">".concat(text, "</a>");
10981
11008
  }
10982
11009
  }).replace(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/gi, function (output) {
10983
11010
  return moment.utc(output).format('ll').toString();
@@ -10991,13 +11018,13 @@ var QueryOutput = /*#__PURE__*/function (_React$Component) {
10991
11018
  float: 'left',
10992
11019
  minHeight: 20
10993
11020
  } // onClick={() => {
10994
- // this.setState({
10995
- // isShowingInterpretation: !this.state.isShowingInterpretation
11021
+ // this.setState({
11022
+ // isShowingInterpretation: !this.state.isShowingInterpretation
10996
11023
  // })
10997
11024
  // }}
10998
11025
 
10999
- }, /*#__PURE__*/React.createElement(Icon // type={this.state.isShowingInterpretation ? 'caret-down' : 'caret-right' }
11000
- // data-tip={this.state.isShowingInterpretation ? "Hide query interpretation" : "Show query interpretation" }
11026
+ }, /*#__PURE__*/React.createElement(Icon // type={this.state.isShowingInterpretation ? 'caret-down' : 'caret-right' }
11027
+ // data-tip={this.state.isShowingInterpretation ? "Hide query interpretation" : "Show query interpretation" }
11001
11028
  , {
11002
11029
  type: "info" // data-for="react-autoql-interpretation"
11003
11030
 
@@ -11006,8 +11033,8 @@ var QueryOutput = /*#__PURE__*/function (_React$Component) {
11006
11033
  isOpened: true // isOpened={this.state.isShowingInterpretation}
11007
11034
 
11008
11035
  }, /*#__PURE__*/React.createElement("strong", null, "Interpreted as:", ' '), /*#__PURE__*/React.createElement("span", {
11009
- onClick: function onClick() {
11010
- return _this.props.onConditionClickCallback();
11036
+ onClick: function onClick(e) {
11037
+ return _this.props.onConditionClickCallback(e);
11011
11038
  },
11012
11039
  dangerouslySetInnerHTML: {
11013
11040
  __html: "".concat(reverseTranslation)
@@ -13252,6 +13279,7 @@ var NotificationItem = /*#__PURE__*/function (_React$Component) {
13252
13279
  ref: function ref(r) {
13253
13280
  return _this.OUTPUT_REF = r;
13254
13281
  },
13282
+ isDashboardQuery: true,
13255
13283
  queryResponse: queryResponse,
13256
13284
  autoQLConfig: {
13257
13285
  enableDrilldowns: false
@@ -15067,6 +15095,8 @@ var DataAlerts = /*#__PURE__*/function (_React$Component) {
15067
15095
  }
15068
15096
  }
15069
15097
 
15098
+ _this.props.onSuccessAlert('Notification created!');
15099
+
15070
15100
  _this.setState({
15071
15101
  isEditModalVisible: false,
15072
15102
  customAlertsList: newDataAlertList
@@ -15255,7 +15285,7 @@ var DataAlerts = /*#__PURE__*/function (_React$Component) {
15255
15285
  className: "react-autoql-re-initialize-btn-text"
15256
15286
  }, /*#__PURE__*/React.createElement(Icon, {
15257
15287
  type: "warning-triangle"
15258
- }), ' ', " Resend")), /*#__PURE__*/React.createElement(Checkbox, {
15288
+ }), " Resend")), /*#__PURE__*/React.createElement(Checkbox, {
15259
15289
  themeConfig: getThemeConfig(_this.props.themeConfig),
15260
15290
  type: "switch",
15261
15291
  className: "react-autoql-notification-disable-checkbox"
@@ -15335,7 +15365,8 @@ _defineProperty(DataAlerts, "propTypes", {
15335
15365
  authentication: authenticationType,
15336
15366
  themeConfig: themeConfigType,
15337
15367
  onErrorCallback: PropTypes.func,
15338
- showCreateAlertBtn: PropTypes.bool
15368
+ showCreateAlertBtn: PropTypes.bool,
15369
+ onSuccessAlert: PropTypes.func
15339
15370
  });
15340
15371
 
15341
15372
  _defineProperty(DataAlerts, "defaultProps", {
@@ -15343,7 +15374,8 @@ _defineProperty(DataAlerts, "defaultProps", {
15343
15374
  themeConfig: themeConfigDefault,
15344
15375
  showCreateAlertBtn: false,
15345
15376
  onErrorCallback: function onErrorCallback() {},
15346
- onAlertInitializationCallback: function onAlertInitializationCallback() {}
15377
+ onAlertInitializationCallback: function onAlertInitializationCallback() {},
15378
+ onSuccessAlert: function onSuccessAlert() {}
15347
15379
  });
15348
15380
 
15349
15381
  var getInitialStateData$2 = function getInitialStateData(initialData) {
@@ -18290,8 +18322,8 @@ var ChatMessage = /*#__PURE__*/function (_React$Component) {
18290
18322
  });
18291
18323
  }
18292
18324
  },
18293
- onConditionClickCallback: function onConditionClickCallback() {
18294
- _this.props.onConditionClickCallback();
18325
+ onConditionClickCallback: function onConditionClickCallback(e) {
18326
+ _this.props.onConditionClickCallback(e);
18295
18327
  }
18296
18328
  }));
18297
18329
  }
@@ -18311,7 +18343,7 @@ var ChatMessage = /*#__PURE__*/function (_React$Component) {
18311
18343
 
18312
18344
  _this.scrollIntoView();
18313
18345
  } else {
18314
- messageElement.style.maxHeight = '85%';
18346
+ messageElement.style.maxHeight = '90%';
18315
18347
  messageElement.style.height = "".concat(messageElement.offsetHeights, "px");
18316
18348
  }
18317
18349
  } catch (error) {
@@ -18846,6 +18878,10 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
18846
18878
 
18847
18879
  _defineProperty(_assertThisInitialized(_this), "UNIQUE_ID", uuid.v4());
18848
18880
 
18881
+ _defineProperty(_assertThisInitialized(_this), "mouseInfoRef", /*#__PURE__*/createRef());
18882
+
18883
+ _defineProperty(_assertThisInitialized(_this), "mouseSettingRef", /*#__PURE__*/createRef());
18884
+
18849
18885
  _defineProperty(_assertThisInitialized(_this), "state", {
18850
18886
  inputValue: '',
18851
18887
  lastQuery: '',
@@ -18897,11 +18933,28 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
18897
18933
  }
18898
18934
  }
18899
18935
 
18900
- _this.setState({
18901
- selectedConditions: array.sort(),
18902
- inputValue: '',
18903
- isFetchingConditions: false
18904
- });
18936
+ if (_this.props.initFilterText && _this.props.initFilterText !== '') {
18937
+ _this.setState({
18938
+ selectedConditions: array.sort(),
18939
+ isFetchingConditions: false
18940
+ });
18941
+
18942
+ for (var _i2 = 0; _i2 < array.length; _i2++) {
18943
+ if (array[_i2].keyword === _this.props.initFilterText) {
18944
+ _this.handleHighlightFilterRow(_i2);
18945
+
18946
+ return;
18947
+ }
18948
+ }
18949
+
18950
+ _this.animateInputTextAndSubmit(_this.props.initFilterText);
18951
+ } else {
18952
+ _this.setState({
18953
+ selectedConditions: array.sort(),
18954
+ inputValue: '',
18955
+ isFetchingConditions: false
18956
+ });
18957
+ }
18905
18958
  });
18906
18959
  } catch (error) {
18907
18960
  console.error(error);
@@ -18934,7 +18987,9 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
18934
18987
 
18935
18988
  setConditions(_objectSpread2(_objectSpread2({}, getAuthentication(_this.props.authentication)), {}, {
18936
18989
  conditions: array
18937
- }));
18990
+ })).then(function () {
18991
+ _this.handleShowMessage('lock', "".concat(suggestion.name.keyword, " has been locked"));
18992
+ });
18938
18993
  }
18939
18994
  });
18940
18995
 
@@ -19064,6 +19119,57 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
19064
19119
  });
19065
19120
  });
19066
19121
 
19122
+ _defineProperty(_assertThisInitialized(_this), "timer", void 0);
19123
+
19124
+ _defineProperty(_assertThisInitialized(_this), "onEnterFilterHeaderInfo", function () {
19125
+ var el = document.getElementById('react-autoql-filter-description-id');
19126
+ _this.timer = setTimeout(function () {
19127
+ el.className = 'show';
19128
+ }, 500);
19129
+ });
19130
+
19131
+ _defineProperty(_assertThisInitialized(_this), "onLeaveFilterHeaderInfo", function () {
19132
+ var el = document.getElementById('react-autoql-filter-description-id');
19133
+ el.className = el.className.replace('show', '');
19134
+ clearTimeout(_this.timer);
19135
+ });
19136
+
19137
+ _defineProperty(_assertThisInitialized(_this), "onEnterFilterSettingInfo", function () {
19138
+ var el = document.getElementById('react-autoql-filter-setting-info-card');
19139
+ _this.timer = setTimeout(function () {
19140
+ el.className = 'show';
19141
+ }, 500);
19142
+ });
19143
+
19144
+ _defineProperty(_assertThisInitialized(_this), "onLeaveFilterSettingInfo", function () {
19145
+ var el = document.getElementById('react-autoql-filter-setting-info-card');
19146
+ el.className = el.className.replace('show', '');
19147
+ clearTimeout(_this.timer);
19148
+ });
19149
+
19150
+ _defineProperty(_assertThisInitialized(_this), "animateInputTextAndSubmit", function (text) {
19151
+ if (typeof text === 'string' && _get(text, 'length')) {
19152
+ var _loop = function _loop(i) {
19153
+ setTimeout(function () {
19154
+ _this.setState({
19155
+ inputValue: text.slice(0, i)
19156
+ });
19157
+
19158
+ if (i === text.length) {
19159
+ setTimeout(function () {
19160
+ var input = document.querySelector('#react-autoql-filter-menu-input');
19161
+ input.focus();
19162
+ }, 300);
19163
+ }
19164
+ }, i * 50);
19165
+ };
19166
+
19167
+ for (var i = 1; i <= text.length; i++) {
19168
+ _loop(i);
19169
+ }
19170
+ }
19171
+ });
19172
+
19067
19173
  _defineProperty(_assertThisInitialized(_this), "renderShowMessage", function () {
19068
19174
  return /*#__PURE__*/React.createElement("div", {
19069
19175
  id: "react-autoql-condition-show-message"
@@ -19110,18 +19216,9 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
19110
19216
  className: "react-autoql-filter-locking-title"
19111
19217
  }, lang.filterLockingTitle, " ", ' ', /*#__PURE__*/React.createElement(Icon, {
19112
19218
  type: "info",
19113
- onMouseEnter: function onMouseEnter() {
19114
- return setTimeout(function () {
19115
- _this.setState({
19116
- isShowingInfo: true
19117
- });
19118
- }, 300);
19119
- },
19120
- onMouseLeave: function onMouseLeave() {
19121
- return _this.setState({
19122
- isShowingInfo: false
19123
- });
19124
- }
19219
+ ref: _this.mouseInfoRef,
19220
+ onMouseEnter: _this.onEnterFilterHeaderInfo,
19221
+ onMouseLeave: _this.onLeaveFilterHeaderInfo
19125
19222
  })), /*#__PURE__*/React.createElement("button", {
19126
19223
  onClick: function onClick() {
19127
19224
  _this.props.onClose();
@@ -19133,84 +19230,81 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
19133
19230
  type: "close"
19134
19231
  }))), /*#__PURE__*/React.createElement("div", {
19135
19232
  className: "autoql-condition-locking-menu-container"
19136
- }, _this.state.isShowingInfo ? /*#__PURE__*/React.createElement("div", {
19137
- className: "react-autoql-filter-locking-empty-list"
19233
+ }, /*#__PURE__*/React.createElement("div", {
19234
+ id: "react-autoql-filter-description-id"
19138
19235
  }, /*#__PURE__*/React.createElement(Icon, {
19139
19236
  type: "info"
19140
- }), /*#__PURE__*/React.createElement("p", null, "Filters can be applied to narrow down your query results. Locking a filter ensures that only the specific data you wish to see is returned.")) : null, /*#__PURE__*/React.createElement(Autosuggest, {
19237
+ }), /*#__PURE__*/React.createElement("p", {
19238
+ className: "react-autoql-filter-info-text"
19239
+ }, "Filters can be applied to narrow down your query results. Locking a filter ensures that only the specific data you wish to see is returned.")), /*#__PURE__*/React.createElement(Autosuggest, {
19141
19240
  ref: function ref(_ref2) {
19142
19241
  _this.autoSuggest = _ref2;
19143
19242
  },
19243
+ id: "react-autoql-filter-menu-input",
19144
19244
  highlightFirstSuggestion: true,
19145
19245
  suggestions: _this.state.suggestions,
19146
19246
  onSuggestionsFetchRequested: _this.onSuggestionsFetchRequested,
19147
19247
  onSuggestionsClearRequested: _this.onSuggestionsClearRequested,
19148
19248
  getSuggestionValue: _this.getSuggestionValue,
19149
19249
  renderSuggestion: function renderSuggestion(suggestion) {
19150
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("table", {
19250
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", {
19251
+ id: "react-autoql-filter-table",
19151
19252
  className: "autoql-condition-locking-menu-list"
19152
- }, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", {
19253
+ }, /*#__PURE__*/React.createElement("tr", {
19254
+ id: "react-autoql-filter-table-row"
19255
+ }, /*#__PURE__*/React.createElement("td", {
19256
+ id: "react-autoql-filter-table-data",
19153
19257
  style: {
19154
19258
  width: 300
19155
19259
  }
19156
- }, suggestion.name.keyword), /*#__PURE__*/React.createElement("td", null, suggestion.name.show_message)))));
19260
+ }, suggestion.name.keyword), /*#__PURE__*/React.createElement("td", {
19261
+ id: "react-autoql-filter-table-data"
19262
+ }, suggestion.name.show_message))));
19157
19263
  },
19158
19264
  inputProps: {
19159
19265
  onChange: _this.onInputChange,
19160
19266
  value: _this.state.inputValue,
19161
19267
  disabled: _this.state.isFetchingConditions,
19162
19268
  placeholder: 'Search & select a filter',
19163
- className: 'react-autoql-condition-locking-input'
19269
+ className: 'react-autoql-condition-locking-input',
19270
+ id: 'react-autoql-filter-menu-input'
19164
19271
  }
19165
- }), _this.state.isShowingSettingInfo ? /*#__PURE__*/React.createElement("div", {
19166
- className: "react-autoql-filter-setting-info-card"
19167
- }, /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(Icon, {
19272
+ }), /*#__PURE__*/React.createElement("div", {
19273
+ id: "react-autoql-filter-setting-info-card"
19274
+ }, /*#__PURE__*/React.createElement("p", {
19275
+ className: "react-autoql-filter-info-text"
19276
+ }, /*#__PURE__*/React.createElement(Icon, {
19168
19277
  type: "info"
19169
19278
  }), ' ', /*#__PURE__*/React.createElement("strong", null, "Persistent"), " filters remain locked at all times, unless the filter is removed.", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Icon, {
19170
19279
  type: "info"
19171
- }), ' ', /*#__PURE__*/React.createElement("strong", null, "Session"), " filters remain locked until you end your browser session.")) : null)), _this.state.isFetchingConditions ? /*#__PURE__*/React.createElement("div", {
19280
+ }), ' ', /*#__PURE__*/React.createElement("strong", null, "Session"), " filters remain locked until you end your browser session.")))), _this.state.isFetchingConditions ? /*#__PURE__*/React.createElement("div", {
19172
19281
  className: "react-autoql-condition-list-loading-container"
19173
19282
  }, /*#__PURE__*/React.createElement(LoadingDots, null)) : /*#__PURE__*/React.createElement("div", {
19174
19283
  className: "react-autoql-condition-list"
19175
19284
  }, _get(_this.state.selectedConditions, 'length') === 0 ? /*#__PURE__*/React.createElement("div", {
19176
19285
  className: "react-autoql-empty-condition-list"
19177
- }, /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("i", null, lang.noFiltersLocked))) : /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
19178
- style: {
19179
- minHeight: 150
19180
- }
19181
- }, /*#__PURE__*/React.createElement("table", {
19286
+ }, /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("i", null, lang.noFiltersLocked))) : /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("table", {
19182
19287
  className: "react-autoql-condition-table"
19183
- }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("th", {
19184
- scope: "col"
19185
- }, "Filter"), /*#__PURE__*/React.createElement("th", {
19186
- scope: "col",
19288
+ }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", {
19187
19289
  style: {
19188
- minWidth: 154
19290
+ width: '60%'
19189
19291
  }
19190
- }, "Settings", /*#__PURE__*/React.createElement(Icon, {
19292
+ }, "Filter"), /*#__PURE__*/React.createElement("th", null, "Settings", /*#__PURE__*/React.createElement(Icon, {
19191
19293
  type: "info",
19192
- onMouseEnter: function onMouseEnter() {
19193
- return setTimeout(function () {
19194
- _this.setState({
19195
- isShowingSettingInfo: true
19196
- });
19197
- }, 300);
19198
- },
19199
- onMouseLeave: function onMouseLeave() {
19200
- return _this.setState({
19201
- isShowingSettingInfo: false
19202
- });
19203
- }
19294
+ ref: _this.mouseSettingRef,
19295
+ onMouseEnter: _this.onEnterFilterSettingInfo,
19296
+ onMouseLeave: _this.onLeaveFilterSettingInfo
19204
19297
  })), /*#__PURE__*/React.createElement("th", {
19205
- scope: "col",
19206
19298
  style: {
19207
19299
  display: 'table-cell',
19208
19300
  verticalAlign: 'middle',
19209
- textAlign: 'right'
19301
+ textAlign: 'right',
19302
+ width: '35px'
19210
19303
  }
19211
- })), /*#__PURE__*/React.createElement("tbody", null, _this.state.selectedConditions.map(function (item, index) {
19304
+ }))), /*#__PURE__*/React.createElement("tbody", null, _this.state.selectedConditions.map(function (item, index) {
19212
19305
  return /*#__PURE__*/React.createElement("tr", {
19213
- key: index
19306
+ key: index,
19307
+ id: "react-autoql-condition-table-list-item-".concat(index)
19214
19308
  }, /*#__PURE__*/React.createElement("td", {
19215
19309
  className: "react-autoql-condition-table-list-item"
19216
19310
  }, item.keyword, ' ', "(".concat(item.show_message, ")")), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Switch, {
@@ -19228,10 +19322,12 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
19228
19322
  height: 18,
19229
19323
  width: 34
19230
19324
  }), ' ', item.lock_flag ? 'Persistent' : 'Session')), /*#__PURE__*/React.createElement("td", {
19325
+ id: "react-autoql-remove-filter-container",
19231
19326
  style: {
19232
19327
  display: 'table-cell',
19233
19328
  verticalAlign: 'middle',
19234
- textAlign: 'right'
19329
+ textAlign: 'right',
19330
+ width: '35px'
19235
19331
  }
19236
19332
  }, /*#__PURE__*/React.createElement(ReactTooltip, {
19237
19333
  className: "react-autoql-chart-tooltip",
@@ -19239,9 +19335,11 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
19239
19335
  effect: "solid",
19240
19336
  html: true
19241
19337
  }), /*#__PURE__*/React.createElement(Icon, {
19338
+ id: "react-autoql-remove-filtered-condition-icon",
19242
19339
  style: {
19243
19340
  paddingLeft: 5,
19244
- color: 'red'
19341
+ color: 'red',
19342
+ cursor: 'pointer'
19245
19343
  },
19246
19344
  "data-tip": "Remove filter",
19247
19345
  "data-for": "react-autoql-remove-condition",
@@ -19284,6 +19382,18 @@ var ConditionLockMenu = /*#__PURE__*/function (_React$Component) {
19284
19382
  }
19285
19383
  });
19286
19384
  }
19385
+ }, {
19386
+ key: "handleHighlightFilterRow",
19387
+ value: function handleHighlightFilterRow(index) {
19388
+ var el = document.getElementById("react-autoql-condition-table-list-item-".concat(index));
19389
+
19390
+ if (el) {
19391
+ el.className = 'react-autoql-highlight-row';
19392
+ setTimeout(function () {
19393
+ el.className = el.className.replace('react-autoql-highlight-row', '');
19394
+ }, 1800);
19395
+ }
19396
+ }
19287
19397
  }]);
19288
19398
 
19289
19399
  return ConditionLockMenu;
@@ -19293,12 +19403,16 @@ _defineProperty(ConditionLockMenu, "propTypes", {
19293
19403
  containerWidth: PropTypes.number,
19294
19404
  isOpen: PropTypes.bool,
19295
19405
  onClose: PropTypes.func,
19296
- authentication: authenticationType
19406
+ authentication: authenticationType,
19407
+ initFilterText: PropTypes.string
19297
19408
  });
19298
19409
 
19299
19410
  _defineProperty(ConditionLockMenu, "defaultProps", {
19300
19411
  containerWidth: undefined,
19301
- onClose: function onClose() {}
19412
+ onClose: function onClose() {},
19413
+ isOpen: false,
19414
+ authentication: undefined,
19415
+ initFilterText: undefined
19302
19416
  });
19303
19417
 
19304
19418
  var DataMessenger = /*#__PURE__*/function (_React$Component) {
@@ -19325,7 +19439,8 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19325
19439
  isResizing: false,
19326
19440
  lastMessageId: undefined,
19327
19441
  isOptionsDropdownOpen: false,
19328
- isConditionLockingMenuOpen: false,
19442
+ isFilterLockingMenuOpen: false,
19443
+ selectedValueLabel: undefined,
19329
19444
  conditions: undefined,
19330
19445
  messages: [],
19331
19446
  queryTipsList: undefined,
@@ -19359,7 +19474,7 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19359
19474
 
19360
19475
  try {
19361
19476
  fetchConditions(_objectSpread2({}, getAuthentication(_this.props.authentication))).then(function (response) {
19362
- var sessionConditions = JSON.parse(sessionStorage.getItem("conditions"));
19477
+ var sessionConditions = JSON.parse(sessionStorage.getItem('conditions'));
19363
19478
 
19364
19479
  _this.setState({
19365
19480
  conditions: {
@@ -19401,9 +19516,9 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19401
19516
  setCSSVars(getThemeConfig(getThemeConfig(_this.props.themeConfig)));
19402
19517
  }
19403
19518
 
19404
- if (_this.state.isConditionLockingMenuOpen !== prevState.isConditionLockingMenuOpen) {
19519
+ if (_this.state.isFilterLockingMenuOpen !== prevState.isFilterLockingMenuOpen) {
19405
19520
  fetchConditions(_objectSpread2({}, getAuthentication(_this.props.authentication))).then(function (response) {
19406
- var sessionConditions = JSON.parse(sessionStorage.getItem("conditions"));
19521
+ var sessionConditions = JSON.parse(sessionStorage.getItem('conditions'));
19407
19522
 
19408
19523
  _this.setState({
19409
19524
  conditions: {
@@ -19416,7 +19531,8 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19416
19531
 
19417
19532
  if (_this.state.activePage !== prevState.activePage) {
19418
19533
  _this.setState({
19419
- isConditionLockingMenuOpen: false
19534
+ isFilterLockingMenuOpen: false,
19535
+ selectedValueLabel: undefined
19420
19536
  });
19421
19537
  }
19422
19538
  } catch (error) {
@@ -19537,7 +19653,7 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19537
19653
  messages: introMessages,
19538
19654
  lastMessageId: introMessages[introMessages.length - 1].id,
19539
19655
  isOptionsDropdownOpen: false,
19540
- isConditionLockingMenuOpen: false
19656
+ isFilterLockingMenuOpen: false
19541
19657
  });
19542
19658
  });
19543
19659
 
@@ -19599,11 +19715,10 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19599
19715
  }
19600
19716
 
19601
19717
  if (_this.props.onMaskClick) {
19602
- _this.props.onMaskClick();
19603
-
19604
19718
  _this.setState({
19605
- isConditionLockingMenuOpen: false
19606
- });
19719
+ isFilterLockingMenuOpen: false,
19720
+ selectedValueLabel: undefined
19721
+ }, _this.props.onMaskClick());
19607
19722
  }
19608
19723
 
19609
19724
  if (_this.props.onHandleClick) {
@@ -19883,7 +19998,7 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19883
19998
  }
19884
19999
  });
19885
20000
 
19886
- _defineProperty(_assertThisInitialized(_this), "getConditionMenuPosition", function () {
20001
+ _defineProperty(_assertThisInitialized(_this), "getFilterMenuPosition", function () {
19887
20002
  switch (_this.getPlacementProp()) {
19888
20003
  case 'right':
19889
20004
  return {
@@ -19992,24 +20107,24 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
19992
20107
  _defineProperty(_assertThisInitialized(_this), "renderOptionsDropdown", function () {
19993
20108
  if (_this.state.activePage === 'data-messenger') {
19994
20109
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
19995
- id: "condition-dropdown",
20110
+ id: "react-autoql-filter-menu-dropdown",
19996
20111
  style: {
19997
20112
  justifyContent: 'left',
19998
20113
  position: 'absolute',
19999
20114
  right: 30
20000
20115
  }
20001
20116
  }, getAutoQLConfig$1(getAutoQLConfig$1(_this.props.autoQLConfig)).enableFilterLocking ? /*#__PURE__*/React.createElement("button", {
20002
- id: "condition-dropdown",
20117
+ id: "react-autoql-filter-menu-dropdown-button",
20003
20118
  onClick: function onClick() {
20004
20119
  _this.setState({
20005
- isConditionLockingMenuOpen: !_this.state.isConditionLockingMenuOpen
20120
+ isFilterLockingMenuOpen: !_this.state.isFilterLockingMenuOpen
20006
20121
  });
20007
20122
  },
20008
20123
  className: "react-autoql-drawer-header-btn clear-all",
20009
20124
  "data-tip": lang.openFilterLocking,
20010
20125
  "data-for": "react-autoql-header-tooltip"
20011
20126
  }, /*#__PURE__*/React.createElement(Icon, {
20012
- type: _get(_this.state.conditions, 'persistent.length') > 0 || _get(_this.state.conditions, 'session.length') > 0 ? "lock" : "unlock"
20127
+ type: _get(_this.state.conditions, 'persistent.length') > 0 || _get(_this.state.conditions, 'session.length') > 0 ? 'lock' : 'unlock'
20013
20128
  })) : /*#__PURE__*/React.createElement("span", null)), /*#__PURE__*/React.createElement(Popover, {
20014
20129
  isOpen: _this.state.isOptionsDropdownOpen,
20015
20130
  onClickOutside: function onClickOutside() {
@@ -20090,10 +20205,6 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
20090
20205
  className: "react-autoql-header-left-container"
20091
20206
  }, /*#__PURE__*/React.createElement("button", {
20092
20207
  onClick: function onClick() {
20093
- _this.setState({
20094
- isConditionLockingMenuOpen: false
20095
- });
20096
-
20097
20208
  _this.props.onHandleClick();
20098
20209
  },
20099
20210
  className: "react-autoql-drawer-header-btn close",
@@ -20101,11 +20212,25 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
20101
20212
  "data-for": "react-autoql-header-tooltip"
20102
20213
  }, /*#__PURE__*/React.createElement(Icon, {
20103
20214
  type: "close"
20104
- }))), !getAutoQLConfig$1(getAutoQLConfig$1(_this.props.autoQLConfig)).enableFilterLocking ? /*#__PURE__*/React.createElement("div", {
20215
+ }))), !getAutoQLConfig$1(getAutoQLConfig$1(_this.props.autoQLConfig)).enableFilterLocking && _this.state.isFilterLockingMenuOpen ? /*#__PURE__*/React.createElement("div", {
20105
20216
  className: "react-autoql-header-center-container"
20106
20217
  }, _this.renderHeaderTitle()) : /*#__PURE__*/React.createElement(Popover, {
20107
- containerStyle: _this.getConditionMenuPosition(),
20108
- isOpen: _this.state.isConditionLockingMenuOpen,
20218
+ containerStyle: _this.getFilterMenuPosition(),
20219
+ isOpen: _this.state.isFilterLockingMenuOpen,
20220
+ onClickOutside: function onClickOutside(e) {
20221
+ /**
20222
+ * Because the popover anchor is over the header title instead of the button,
20223
+ * the button is considered part of an "outside" event. This also includes
20224
+ * some elements inside of the popover as well for some reason.
20225
+ *
20226
+ * This is a hacky solution, but it works.
20227
+ */
20228
+ if (_get(e, 'target.id') !== 'react-autoql-interpreted-value-label' && _get(e, 'target.parentElement.parentElement.parentElement.id') !== 'react-autoql-filter-menu-dropdown-button' && _get(e, 'target.parentElement.parentElement.parentElement.id') !== 'react-autoql-filter-menu-dropdown' && _get(e, 'target.parentElement.id') !== 'react-autoql-filter-table-row' && _get(e, 'target.parentElement.id') !== 'react-autoql-remove-filtered-condition-icon' && _get(e, 'target.parentElement.parentElement.id') !== 'react-autoql-remove-filtered-condition-icon' && _get(e, 'target.parentElement.id') !== 'react-autoql-remove-filter-container' && !_get(e, 'target.classList.value').includes('react-autoql-drawer-resize-handle')) {
20229
+ _this.setState({
20230
+ isFilterLockingMenuOpen: false
20231
+ });
20232
+ }
20233
+ },
20109
20234
  position: "bottom",
20110
20235
  padding: 2,
20111
20236
  align: "center",
@@ -20117,10 +20242,12 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
20117
20242
  }, /*#__PURE__*/React.createElement(ConditionLockMenu, {
20118
20243
  authentication: getAuthentication(getAuthentication(_this.props.authentication)),
20119
20244
  containerWidth: _this.getDrawerWidth(),
20120
- isOpen: _this.state.isConditionLockingMenuOpen,
20245
+ isOpen: _this.state.isFilterLockingMenuOpen,
20246
+ initFilterText: _this.state.selectedValueLabel,
20121
20247
  onClose: function onClose() {
20122
20248
  _this.setState({
20123
- isConditionLockingMenuOpen: false
20249
+ isFilterLockingMenuOpen: false,
20250
+ selectedValueLabel: undefined
20124
20251
  });
20125
20252
  }
20126
20253
  }))
@@ -20210,9 +20337,15 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
20210
20337
  enableDynamicCharting: _this.props.enableDynamicCharting,
20211
20338
  onNoneOfTheseClick: _this.onNoneOfTheseClick,
20212
20339
  autoChartAggregations: _this.props.autoChartAggregations,
20213
- onConditionClickCallback: function onConditionClickCallback() {
20340
+ onConditionClickCallback: function onConditionClickCallback(e) {
20341
+ if (_get(e, 'target.classList.value').includes('react-autoql-condition-link')) {
20342
+ _this.setState({
20343
+ selectedValueLabel: _get(e, 'target.innerText').replace('lock ', '').trim()
20344
+ });
20345
+ }
20346
+
20214
20347
  _this.setState({
20215
- isConditionLockingMenuOpen: !_this.state.isConditionLockingMenuOpen
20348
+ isFilterLockingMenuOpen: true
20216
20349
  });
20217
20350
  }
20218
20351
  });
@@ -20560,7 +20693,12 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
20560
20693
  width: _this.getDrawerWidth(),
20561
20694
  height: _this.getDrawerHeight(),
20562
20695
  onMaskClick: _this.handleMaskClick,
20563
- onHandleClick: _this.props.onHandleClick,
20696
+ onHandleClick: function onHandleClick() {
20697
+ _this.setState({
20698
+ isFilterLockingMenuOpen: false,
20699
+ selectedValueLabel: undefined
20700
+ }, _this.props.onHandleClick);
20701
+ },
20564
20702
  afterVisibleChange: _this.props.onVisibleChange,
20565
20703
  handler: _this.getHandlerProp(),
20566
20704
  level: _this.props.shiftScreen ? 'all' : null,
@@ -20621,12 +20759,12 @@ var DataMessenger = /*#__PURE__*/function (_React$Component) {
20621
20759
  value:
20622
20760
  /**
20623
20761
  * For some indiscernible reason, the Data Messenger drawer duplicates itself in the DOM.
20624
- * three times when first opened, then a number more times with each and every query
20762
+ * three times when first opened, then a number more times with each and every query
20625
20763
  * being made.
20626
- *
20764
+ *
20627
20765
  * This function removes unnecessary duplicate instances of the Data Messenger Drawer
20628
20766
  * and should help improve performance a bit by reducing the amount of renders.
20629
- *
20767
+ *
20630
20768
  * https://stackoverflow.com/questions/57946748/remove-duplicate-dom-element-javascript-not-jquery
20631
20769
  */
20632
20770
  function removeDuplicateMessengerInstance() {
@@ -21571,6 +21709,8 @@ var DashboardTile = /*#__PURE__*/function (_React$Component) {
21571
21709
  });
21572
21710
 
21573
21711
  _defineProperty(_assertThisInitialized(_this), "renderQueryOutput", function (_ref12) {
21712
+ var _extends2;
21713
+
21574
21714
  var _ref12$queryOutputPro = _ref12.queryOutputProps,
21575
21715
  queryOutputProps = _ref12$queryOutputPro === void 0 ? {} : _ref12$queryOutputPro,
21576
21716
  _ref12$vizToolbarProp = _ref12.vizToolbarProps,
@@ -21592,25 +21732,24 @@ var DashboardTile = /*#__PURE__*/function (_React$Component) {
21592
21732
  }, !queryOutputProps.queryResponse || isExecuting || _this.props.isUnExecuted ? _this.renderContentPlaceholder({
21593
21733
  isExecuting: isExecuting,
21594
21734
  isExecuted: isExecuted
21595
- }) : /*#__PURE__*/React.createElement(Fragment, null, _this.getIsSuggestionResponse(queryOutputProps.queryResponse) && _this.renderSuggestionMessage(customMessage), !customMessage && /*#__PURE__*/React.createElement(QueryOutput, _extends({
21735
+ }) : /*#__PURE__*/React.createElement(Fragment, null, _this.getIsSuggestionResponse(queryOutputProps.queryResponse) && _this.renderSuggestionMessage(customMessage), !customMessage && /*#__PURE__*/React.createElement(QueryOutput, _extends((_extends2 = {
21596
21736
  authentication: getAuthentication(_this.props.authentication),
21597
21737
  themeConfig: getThemeConfig(_this.props.themeConfig),
21598
21738
  autoQLConfig: getAutoQLConfig$1(_this.props.autoQLConfig),
21599
21739
  dataFormatting: getDataFormatting(_this.props.dataFormatting),
21600
21740
  renderTooltips: false,
21601
21741
  autoSelectQueryValidationSuggestion: false,
21742
+ isDashboardQuery: true,
21602
21743
  autoChartAggregations: _this.props.autoChartAggregations,
21603
21744
  renderSuggestionsAsDropdown: _this.props.tile.h < 4,
21604
21745
  enableDynamicCharting: _this.props.enableDynamicCharting,
21605
- backgroundColor: document.documentElement.style.getPropertyValue('--react-autoql-background-color-primary'),
21606
- isDashboardQuery: true,
21607
- onDisplayTypeUpdate: function onDisplayTypeUpdate() {
21608
- // This is necessary to update the toolbar with the newly rendered QueryOutput
21609
- setTimeout(function () {
21610
- _this.forceUpdate();
21611
- }, 0);
21612
- }
21613
- }, queryOutputProps)), _this.renderDataLimitWarning()), _this.props.isEditing && /*#__PURE__*/React.createElement("div", {
21746
+ backgroundColor: document.documentElement.style.getPropertyValue('--react-autoql-background-color-primary')
21747
+ }, _defineProperty(_extends2, "isDashboardQuery", true), _defineProperty(_extends2, "onDisplayTypeUpdate", function onDisplayTypeUpdate() {
21748
+ // This is necessary to update the toolbar with the newly rendered QueryOutput
21749
+ setTimeout(function () {
21750
+ _this.forceUpdate();
21751
+ }, 0);
21752
+ }), _extends2), queryOutputProps)), _this.renderDataLimitWarning()), _this.props.isEditing && /*#__PURE__*/React.createElement("div", {
21614
21753
  className: "dashboard-tile-viz-toolbar-container"
21615
21754
  }, _this.props.isEditing && showSplitViewBtn && _this.renderSplitViewBtn(), /*#__PURE__*/React.createElement(VizToolbar$1, _extends({
21616
21755
  themeConfig: getThemeConfig(_this.props.themeConfig)