@deephaven/dashboard-core-plugins 0.11.2-package-directory.0 → 0.11.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.
@@ -1 +1 @@
1
- {"version":3,"file":"InputFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":[],"mappings":";AAkBA;IACE,2BAAsC;IAEtC,wBAqBC;IA0CD,qCAQC;IAED,sCAYC;IAED,oCAMC;IAED,6BAGC;IAOD,sCAIC;IATD,2BAGC;IAQD,wCAKC;IAkBD,mBAIC;IA9HC,+BAAiC;IAqCnC,yGAYG;IAyDH,mBAKC;IAED,oBAEC;IAED;;;;;aAGC;CAsHF"}
1
+ {"version":3,"file":"InputFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":[],"mappings":";AAkBA;IACE,2BAAsC;IAEtC,wBAqBC;IA0CD,qCAQC;IAED,sCAYC;IAED,oCAMC;IAED,6BAGC;IAOD,sCAIC;IATD,2BAGC;IAQD,wCAKC;IAsBD,mBAIC;IAlIC,+BAAiC;IAqCnC,yGAYG;IAyDH,mBAKC;IAED,oBAEC;IAED;;;;;aAOC;CAsHF"}
@@ -193,11 +193,15 @@ class InputFilter extends Component {
193
193
  name,
194
194
  type
195
195
  } : null;
196
- this.setState({
196
+ var update = isValueShown === undefined ? {
197
+ column,
198
+ value
199
+ } : {
197
200
  column,
198
201
  value,
199
202
  isValueShown
200
- });
203
+ };
204
+ this.setState(update);
201
205
  }
202
206
 
203
207
  sendUpdate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":["React","Component","PropTypes","CardFlip","FontAwesomeIcon","vsGear","APIPropTypes","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","sendUpdate","inputRef","createRef","column","isValueShown","value","state","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","focusInput","componentWillUnmount","flush","event","target","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","onChange","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width","propTypes","arrayOf","Column","isRequired","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nclass InputFilter extends Component {\n static PLACEHOLDER = 'Enter value...';\n\n constructor(props) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event) {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[value];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: null });\n }\n\n handleInputKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event) {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel() {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave() {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event) {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput() {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter() {\n this.setState({ value: '' });\n }\n\n setFilterState({ name, type, value, isValueShown }) {\n const column = name != null && type != null ? { name, type } : null;\n this.setState({ column, value, isValueShown });\n }\n\n sendUpdate() {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }\n\n render() {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nInputFilter.propTypes = {\n columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n column: APIPropTypes.Column,\n isValueShown: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nInputFilter.defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n};\n\nexport default InputFilter;\n"],"file":"InputFilter.js"}
1
+ {"version":3,"sources":["../../../src/controls/input-filter/InputFilter.jsx"],"names":["React","Component","PropTypes","CardFlip","FontAwesomeIcon","vsGear","APIPropTypes","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","sendUpdate","inputRef","createRef","column","isValueShown","value","state","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","focusInput","componentWillUnmount","flush","event","target","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","undefined","onChange","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width","propTypes","arrayOf","Column","isRequired","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nclass InputFilter extends Component {\n static PLACEHOLDER = 'Enter value...';\n\n constructor(props) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), UPDATE_DEBOUNCE);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event) {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[value];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: null });\n }\n\n handleInputKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event) {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel() {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave() {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event) {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput() {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter() {\n this.setState({ value: '' });\n }\n\n setFilterState({ name, type, value, isValueShown }) {\n const column = name != null && type != null ? { name, type } : null;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate() {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }\n\n render() {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nInputFilter.propTypes = {\n columns: PropTypes.arrayOf(APIPropTypes.Column).isRequired,\n column: APIPropTypes.Column,\n isValueShown: PropTypes.bool,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n};\n\nInputFilter.defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n};\n\nexport default InputFilter;\n"],"file":"InputFilter.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA2FD;;;aAIC;IAED,wCAsBC;IAED,gDAMC;IAxCD,8BAEC;IAtFD,wBAkDC;IAED;;;aA8BC;IA4CD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
1
+ {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA2FD;;;aAIC;IAED,wCAsBC;IAED,gDAMC;IAxCD,8BAEC;IAtFD,wBAkDC;IAED;;;aA8BC;IA4CD,yBAQC;IAED,qDAsBC;IAGD,sDAMC;CA4BF"}
@@ -1,3 +1,7 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
1
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
6
 
3
7
  import React, { Component } from 'react';
@@ -285,8 +289,12 @@ class FilterSetManagerPanel extends Component {
285
289
 
286
290
 
287
291
  restoreInputFilterState(panel, state) {
288
- log.debug('restoreInputFilterState', panel, state);
289
- panel.setPanelState(state);
292
+ var inputFilterState = _objectSpread({}, state); // Restore state but don't flip the card
293
+
294
+
295
+ delete inputFilterState.isValueShown;
296
+ log.debug('restoreInputFilterState', panel, inputFilterState);
297
+ panel.setPanelState(inputFilterState);
290
298
  }
291
299
 
292
300
  render() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","savedAdvancedFilters","savedQuickFilters","setFilters","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SACEC,6BADF,EAEEC,WAFF,EAGEC,WAHF,QAIO,sBAJP;AAKA,SAASC,aAAT,QAA8B,sBAA9B;AACA,OAAOC,GAAP,MAAgB,gBAAhB;SAEEC,yB,EACAC,2B,EACAC,uB,EACAC,sBAAsB,IAAIC,4B;OAErBC,K;OACAC,gB;OACAC,a;OACAC,gB;OACAC,mB;;AAIP,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAJ,CAAW,uBAAX,CAAZ;;AAEA,MAAMC,qBAAN,SAAoCpB,SAApC,CAA8C;AAGL,SAAhCqB,gCAAgC,CAACC,KAAD,EAAQC,OAAR,EAAiB;AACtD,WAAOA,OAAO,CACXC,GADI,CACA,QAAsB;AAAA,UAArB;AAAEC,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAqB;AACzB,UAAMC,KAAK,GAAGL,KAAK,CAACM,OAAN,CAAcC,SAAd,CAAwBC,MAAM,IAAIA,MAAM,CAACL,IAAP,KAAgBA,IAAlD,CAAd;AACA,aAAOE,KAAK,GAAG,CAAR,GAAY,IAAZ,GAAmB,CAACA,KAAD,EAAQD,MAAR,CAA1B;AACD,KAJI,EAKJA,MALI,CAKGK,MAAM,IAAIA,MAAM,IAAI,IALvB,CAAP;AAMD;;AAEsC,SAAhCC,gCAAgC,CAACV,KAAD,EAAQC,OAAR,EAAiB;AACtD,WAAOA,OAAO,CACXC,GADI,CACA,SAAqB;AAAA,UAApB,CAACG,KAAD,EAAQD,MAAR,CAAoB;;AACxB,UAAIC,KAAK,IAAIL,KAAK,CAACM,OAAN,CAAcK,MAA3B,EAAmC;AACjC,eAAO,IAAP;AACD;;AACD,UAAM;AAAER,QAAAA;AAAF,UAAWH,KAAK,CAACM,OAAN,CAAcD,KAAd,CAAjB;AACA,aAAO;AAAEF,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAP;AACD,KAPI,EAQJA,MARI,CAQGK,MAAM,IAAIA,MAAM,IAAI,IARvB,CAAP;AASD;;AAEDG,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKE,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBF,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKG,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BH,IAA1B,CAA+B,IAA/B,CAA5B;AAEA,QAAM;AAAEI,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAA6BP,KAAnC;AACA,QAAM;AACJQ,MAAAA,UAAU,GAAGD,UAAU,CAACT,MAAX,GAAoB,CAApB,GAAwBS,UAAU,CAAC,CAAD,CAAV,CAAcE,EAAtC,GAA2CC,SADpD;AAEJC,MAAAA,YAAY,GAAG;AAFX,QAGFL,UAHE,aAGFA,UAHE,cAGFA,UAHE,GAGY,EAHlB;AAKA,SAAKM,KAAL,GAAa;AACXJ,MAAAA,UADW;AAEXG,MAAAA,YAFW;AAGX;AACAL,MAAAA,UAJW,CAIC;;AAJD,KAAb;AAMD,GA5C2C,CA8C5C;;;AACAO,EAAAA,cAAc,GAAG;AACf,QAAM;AAAEC,MAAAA;AAAF,QAA8B,KAAKd,KAAzC;AACA,QAAMe,MAAM,GAAG,EAAf;AACA,KAAC,GAAGD,uBAAuB,CAACE,IAAxB,EAAJ,EAAoCC,OAApC,CAA4CC,GAAG,IAAI;AACjD,UAAMC,KAAK,GAAGL,uBAAuB,CAACM,GAAxB,CAA4BF,GAA5B,CAAd;AACA,UAAMG,aAAa,GAAGnD,WAAW,CAACoD,yBAAZ,CAAsCH,KAAtC,CAAtB;AACA,UAAMI,OAAO,GAAGrD,WAAW,CAACsD,cAAZ,CAA2BL,KAA3B,CAAhB;AACApC,MAAAA,GAAG,CAAC0C,KAAJ,CAAU,QAAV,EAAoBN,KAApB,EAA2BE,aAA3B;AAEA,UAAM;AAAEK,QAAAA,WAAW,GAAG;AAAhB,UAAyBP,KAAK,CAACnB,KAArC;;AACA,UAAI0B,WAAW,IAAI,IAAnB,EAAyB;AACvB3C,QAAAA,GAAG,CAAC4C,KAAJ,CAAU,+BAAV,EAA2CR,KAA3C;AACA;AACD;;AACD,UAAMvB,MAAM,GAAG1B,WAAW,CAAC0D,+BAAZ,CAA4CF,WAA5C,CAAf;;AACA,UAAI9B,MAAM,IAAI,IAAd,EAAoB;AAClBb,QAAAA,GAAG,CAAC4C,KAAJ,CAAU,+CAAV,EAA2DD,WAA3D;AACA;AACD;;AACD,UAAMpB,UAAU,GAAGpC,WAAW,CAAC2D,sBAAZ,CAAmCjC,MAAnC,CAAnB;;AACA,UAAIU,UAAU,IAAI,IAAlB,EAAwB;AACtBvB,QAAAA,GAAG,CAAC0C,KAAJ,+BAAiCF,OAAjC;AACA;AACD;;AACD,cAAQF,aAAR;AACE,aAAKnD,WAAW,CAAC4D,gBAAZ,CAA6BlD,aAA7B,CAAL;AAAkD;AAChD,gBAAMgC,KAAK,GAAG,KAAKmB,uBAAL,CAA6BR,OAA7B,EAAsCjB,UAAtC,CAAd;;AACA,gBAAIM,KAAK,IAAI,IAAb,EAAmB;AACjBG,cAAAA,MAAM,CAACiB,IAAP,CAAY;AACVT,gBAAAA,OADU;AAEVU,gBAAAA,IAAI,EAAEZ,aAFI;AAGVT,gBAAAA;AAHU,eAAZ;AAKD;;AACD;AACD;;AACD,aAAK1C,WAAW,CAAC4D,gBAAZ,CAA6BjD,gBAA7B,CAAL;AACA,aAAKX,WAAW,CAAC4D,gBAAZ,CAA6BhD,mBAA7B,CAAL;AAAwD;AACtD,gBAAM;AAAE6B,cAAAA,YAAF;AAAgBrB,cAAAA,IAAhB;AAAsB2C,cAAAA,IAAtB;AAA4BC,cAAAA;AAA5B,gBAAsC5B,UAA5C;AACAS,YAAAA,MAAM,CAACiB,IAAP,CAAY;AACVT,cAAAA,OADU;AAEVU,cAAAA,IAAI,EAAEZ,aAFI;AAGVT,cAAAA,KAAK,EAAE;AAAED,gBAAAA,YAAF;AAAgBrB,gBAAAA,IAAhB;AAAsB2C,gBAAAA,IAAtB;AAA4BC,gBAAAA;AAA5B;AAHG,aAAZ;AAKA;AACD;;AACD;AAtBF;AAwBD,KA7CD;AA8CA,WAAOnB,MAAP;AACD;;AAEDgB,EAAAA,uBAAuB,CAACR,OAAD,EAAUjB,UAAV,EAAsB;AAC3C,QAAM;AAAE6B,MAAAA;AAAF,QAAoB,KAAKnC,KAA/B;AACA,QAAMb,KAAK,GAAGgD,aAAa,CAACf,GAAd,CAAkBG,OAAlB,CAAd;;AACA,QAAIpC,KAAK,IAAI,IAAb,EAAmB;AACjBJ,MAAAA,GAAG,CAAC4C,KAAJ,yCAA2CJ,OAA3C;AACA,aAAO,IAAP;AACD,KAN0C,CAO3C;AACA;;;AACA,QAAM;AAAEa,MAAAA,aAAa,GAAG;AAAlB,QAA2B9B,UAAjC;AACA,QAAM;AACJ+B,MAAAA,eAAe,EAAEC,sBAAsB,GAAG,EADtC;AAEJC,MAAAA,YAAY,EAAEC,mBAAmB,GAAG;AAFhC,QAGFJ,aAHE,aAGFA,aAHE,cAGFA,aAHE,GAGe,EAHrB;AAIA,QAAMK,yBAAyB,GAAGtE,aAAa,CAACuE,wBAAd,CAChCvD,KAAK,CAACM,OAD0B,EAEhC6C,sBAFgC,CAAlC;AAIA,QAAMD,eAAe,GAAGpD,qBAAqB,CAACY,gCAAtB,CACtBV,KADsB,EAEtBsD,yBAFsB,CAAxB;AAIA,QAAME,sBAAsB,GAAGxE,aAAa,CAACyE,qBAAd,CAC7BJ,mBAD6B,CAA/B;AAGA,QAAMD,YAAY,GAAGtD,qBAAqB,CAACY,gCAAtB,CACnBV,KADmB,EAEnBwD,sBAFmB,CAArB;AAIA,WAAO;AAAEN,MAAAA,eAAF;AAAmBE,MAAAA;AAAnB,KAAP;AACD;;AAEDlC,EAAAA,oBAAoB,GAAG;AACrB,WAAO,KAAKQ,cAAL,EAAP;AACD;;AAEDZ,EAAAA,YAAY,QAA+B;AAAA,QAA9B;AAAEU,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,KAA8B;AACzCzB,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,cAAV,EAA0Bd,YAA1B,EAAwCH,UAAxC;AACA,SAAKqC,QAAL,CAAc;AAAElC,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,KAAd;AACA,SAAKsC,gBAAL;AACD;;AAED3C,EAAAA,iBAAiB,CAAC4C,SAAD,EAAY;AAC3B,QAAM;AAAEjC,MAAAA;AAAF,QAA8B,KAAKd,KAAzC;AACA,QAAM;AAAEe,MAAAA;AAAF,QAAagC,SAAnB;AACAhE,IAAAA,GAAG,CAAC0C,KAAJ,kCAA2CsB,SAA3C;AACAhC,IAAAA,MAAM,CAACE,OAAP,CAAe,SAA8B;AAAA,UAA7B;AAAEM,QAAAA,OAAF;AAAWU,QAAAA,IAAX;AAAiBrB,QAAAA;AAAjB,OAA6B;;AAC3C,UAAI,CAACE,uBAAuB,CAACkC,GAAxB,CAA4BzB,OAA5B,CAAL,EAA2C;AACzCxC,QAAAA,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCF,OAAjC;AACA;AACD;;AACDxC,MAAAA,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCF,OAAjC,EAA0CU,IAA1C,EAAgDrB,KAAhD;AACA,UAAMO,KAAK,GAAGL,uBAAuB,CAACM,GAAxB,CAA4BG,OAA5B,CAAd;;AACA,cAAQU,IAAR;AACE,aAAK/D,WAAW,CAAC4D,gBAAZ,CAA6BlD,aAA7B,CAAL;AACE,eAAKqE,sBAAL,CAA4B9B,KAA5B,EAAmCP,KAAnC;AACA;;AACF,aAAK1C,WAAW,CAAC4D,gBAAZ,CAA6BjD,gBAA7B,CAAL;AACA,aAAKX,WAAW,CAAC4D,gBAAZ,CAA6BhD,mBAA7B,CAAL;AACE,eAAKoE,uBAAL,CAA6B/B,KAA7B,EAAoCP,KAApC;AACA;;AACF;AARF;AAUD,KAjBD;AAkBD;;AAEDR,EAAAA,gBAAgB,CAAC+C,kBAAD,EAAqB;AACnC,QAAM;AAAE3E,MAAAA,sBAAF;AAA0B4E,MAAAA;AAA1B,QAA+C,KAAKpD,KAA1D;AACAjB,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiC0B,kBAAjC,EAFmC,CAGnC;AACA;;AACA3E,IAAAA,sBAAsB,CAAC4E,gBAAD,EAAmB,CAAC,GAAGD,kBAAJ,CAAnB,CAAtB;AACD;;AAEDL,EAAAA,gBAAgB,GAAG;AACjB,SAAKD,QAAL,CAAc;AAAA,UAAC;AAAErC,QAAAA,UAAF;AAAcG,QAAAA;AAAd,OAAD;AAAA,aAAmC;AAC/C;AACAL,QAAAA,UAAU,EAAE;AACVE,UAAAA,UADU;AAEVG,UAAAA;AAFU;AAFmC,OAAnC;AAAA,KAAd;AAOD;;AAEDsC,EAAAA,sBAAsB,CAAC9B,KAAD,EAAQP,KAAR,EAAe;AACnC,QAAM;AACJyB,MAAAA,eAAe,EAAEgB,oBADb;AAEJd,MAAAA,YAAY,EAAEe;AAFV,QAGF1C,KAHJ;AAIA,QAAM;AAAEuB,MAAAA;AAAF,QAAoB,KAAKnC,KAA/B;AACA,QAAMuB,OAAO,GAAGrD,WAAW,CAACsD,cAAZ,CAA2BL,KAA3B,CAAhB;AACA,QAAMhC,KAAK,GAAGgD,aAAa,CAACf,GAAd,CAAkBG,OAAlB,CAAd;;AACA,QAAIpC,KAAK,IAAI,IAAb,EAAmB;AACjBJ,MAAAA,GAAG,CAAC4C,KAAJ,yCAA2CJ,OAA3C;AACA;AACD;;AACDxC,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,wBAAV,EAAoCF,OAApC,EAA6CX,KAA7C;AACA,QAAM2B,YAAY,GAAGtD,qBAAqB,CAACC,gCAAtB,CACnBC,KADmB,EAEnBmE,iBAFmB,CAArB;AAIA,QAAMjB,eAAe,GAAGpD,qBAAqB,CAACC,gCAAtB,CACtBC,KADsB,EAEtBkE,oBAFsB,CAAxB;AAIAlC,IAAAA,KAAK,CAACoC,UAAN,CAAiB;AAAEhB,MAAAA,YAAF;AAAgBF,MAAAA;AAAhB,KAAjB;AACD,GA7M2C,CA+M5C;;;AACAa,EAAAA,uBAAuB,CAAC/B,KAAD,EAAQP,KAAR,EAAe;AACpC7B,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,yBAAV,EAAqCN,KAArC,EAA4CP,KAA5C;AACAO,IAAAA,KAAK,CAACqC,aAAN,CAAoB5C,KAApB;AACD;;AAED6C,EAAAA,MAAM,GAAG;AACP,QAAM;AAAE/B,MAAAA,WAAF;AAAegC,MAAAA,UAAf;AAA2BnD,MAAAA;AAA3B,QAA0C,KAAKP,KAArD;AACA,QAAM;AAAEW,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,QAA+B,KAAKI,KAA1C;AACA,wBACE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,0BADZ;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,WAAW,EAAEc,WAHf;AAIE,MAAA,UAAU,EAAEgC,UAJd;AAKE,MAAA,UAAU,MALZ;AAME,MAAA,WAAW;AANb,oBAQE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,gBAAD;AACE,MAAA,QAAQ,EAAE,KAAKzD,YADjB;AAEE,MAAA,OAAO,EAAE,KAAKE,iBAFhB;AAGE,MAAA,YAAY,EAAE,KAAKC,gBAHrB;AAIE,MAAA,YAAY,EAAEO,YAJhB;AAKE,MAAA,UAAU,EAAEJ,UALd;AAME,MAAA,UAAU,EAAEC,UANd;AAOE,MAAA,cAAc,EAAE,KAAKH;AAPvB,MADF,CARF,CADF;AAsBD;;AA9O2C;;gBAAxCpB,qB,eACe,uB;;AAgPrBA,qBAAqB,CAAC0E,SAAtB,GAAkC;AAChCjC,EAAAA,WAAW,EAAEzD,WAAW,CAAC2F,SAAZ,CAAsBC,UADH;AAEhCH,EAAAA,UAAU,EAAEzF,WAAW,CAAC6F,QAAZ,CAAqBD,UAFD;AAGhCvD,EAAAA,UAAU,EAAExC,SAAS,CAACiG,KAAV,CAAgB;AAC1BzE,IAAAA,IAAI,EAAExB,SAAS,CAACkG,MADU;AAE1B/B,IAAAA,IAAI,EAAEnE,SAAS,CAACkG,MAFU;AAG1BxD,IAAAA,UAAU,EAAE1C,SAAS,CAACkG,MAHI;AAI1BrD,IAAAA,YAAY,EAAE7C,SAAS,CAACmG;AAJE,GAAhB,CAHoB;AAShC1D,EAAAA,UAAU,EAAEzC,SAAS,CAACoG,OAAV,CACVpG,SAAS,CAACiG,KAAV,CAAgB;AACdtD,IAAAA,EAAE,EAAE3C,SAAS,CAACkG,MAAV,CAAiBH,UADP;AAEdM,IAAAA,KAAK,EAAErG,SAAS,CAACkG,MAAV,CAAiBH,UAFV;AAGd9C,IAAAA,MAAM,EAAEjD,SAAS,CAACoG,OAAV,CAAkBpG,SAAS,CAACiG,KAAV,CAAgB,EAAhB,CAAlB,EAAuCF;AAHjC,GAAhB,CADU,EAMVA,UAf8B;AAgBhCT,EAAAA,gBAAgB,EAAEtF,SAAS,CAACkG,MAAV,CAAiBH,UAhBH;AAiBhC/C,EAAAA,uBAAuB,EAAEhD,SAAS,CAACsG,UAAV,CAAqBC,GAArB,EAA0BR,UAjBnB;AAkBhCrF,EAAAA,sBAAsB,EAAEV,SAAS,CAACwG,IAAV,CAAeT,UAlBP;AAmBhC1B,EAAAA,aAAa,EAAErE,SAAS,CAACsG,UAAV,CAAqBC,GAArB,EAA0BR;AAnBT,CAAlC;AAsBA5E,qBAAqB,CAACsF,YAAtB,GAAqC;AACnCjE,EAAAA,UAAU,EAAE;AADuB,CAArC;;AAIA,IAAMkE,eAAe,GAAG,CAAC5D,KAAD,EAAQ6D,QAAR,KAAqB;AAC3C,MAAM;AAAErB,IAAAA;AAAF,MAAuBqB,QAA7B;AACA,SAAO;AACLlE,IAAAA,UAAU,EAAElC,yBAAyB,CAACuC,KAAD,EAAQwC,gBAAR,CADhC;AAELtC,IAAAA,uBAAuB,EAAE9C,6BAA6B,CACpD4C,KADoD,EAEpDwC,gBAFoD,CAFjD;AAMLsB,IAAAA,qBAAqB,EAAEpG,2BAA2B,CAACsC,KAAD,EAAQwC,gBAAR,CAN7C;AAOLjB,IAAAA,aAAa,EAAE5D,uBAAuB,CAACqC,KAAD,EAAQwC,gBAAR;AAPjC,GAAP;AASD,CAXD;;AAaA,eAAerF,OAAO,CACpByG,eADoB,EAEpB;AACEhG,EAAAA,sBAAsB,EAAEC;AAD1B,CAFoB,EAKpB,IALoB,EAMpB;AAAEkG,EAAAA,UAAU,EAAE;AAAd,CANoB,CAAP,CAOb1F,qBAPa,CAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\n\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null);\n }\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(panelId, panelState) {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const { irisGridState = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table.columns,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState() {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(panel, state) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\n }\n\n render() {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","savedAdvancedFilters","savedQuickFilters","setFilters","inputFilterState","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\n\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null);\n }\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(panelId, panelState) {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const { irisGridState = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table.columns,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState() {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(panel, state) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n panel.setPanelState(inputFilterState);\n }\n\n render() {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
@@ -20,4 +20,10 @@
20
20
  cursor: crosshair;
21
21
  }
22
22
 
23
+ .tab-tooltip-container .column-statistics-grid {
24
+ border-top: 1px solid #5b5a5c;
25
+ margin: 5px -15px 0;
26
+ font-weight: 300;
27
+ }
28
+
23
29
  /*# sourceMappingURL=IrisGridPanel.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/panels/IrisGridPanel.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAKE;EACE;EACA;;;AAKF;EACE;;;AAKF;EACE,aAjBwB;;;AAsB1B;EACE,SCvBO;EDwBP,OEvBE;;;AF2BN;EACE","file":"IrisGridPanel.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/panels/IrisGridPanel.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAKE;EACE;EACA;;;AAKF;EACE;;;AAKF;EACE,aAjBwB;;;AAsB1B;EACE,SCvBO;EDwBP,OEvBE;;;AF2BN;EACE;;;AAIA;EACE;EACA;EACA","file":"IrisGridPanel.css"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AAoCA;IACE,yBAAmC;IAEnC,wBAoFC;IA4nBD,uBAqFC;IA9dD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IA+CD,wCAGC;IAED,iDAGC;IAUD,8BAGC;IA1GD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED;;;;;;;;OAQG;IACH,yDAFW,aAAa,QA4BvB;IAYD,qBAEC;IAED,mBAEC;IAOD,yBAMC;IAED,wBAEC;IAtND,yCA6CC;IA2KD,kCAMC;IAtID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IAmKD,8BAMC;IAteC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA6EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAyBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;;;MAgDE;IAEF,wIAQE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IAsKD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aAmBC;IAGD,yBAEC;IAED,iCA6EC;IAyFD,mBAMC;CAwJF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmDgB,wCAAQ;;QACH,6CAAQ"}
1
+ {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AAqCA;IACE,yBAAmC;IAEnC,wBAoFC;IA4nBD,uBAqFC;IA9dD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IA+CD,wCAGC;IAED,iDAGC;IAUD,8BAGC;IA1GD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED;;;;;;;;OAQG;IACH,yDAFW,aAAa,QA4BvB;IAYD,qBAEC;IAED,mBAEC;IAOD,yBAMC;IAED,wBAEC;IAtND,yCA6CC;IA2KD,kCAMC;IAtID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IAmKD,8BAMC;IAteC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA6EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAyBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;;;MAgDE;IAEF,wIAQE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IAsKD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aAmBC;IAGD,yBAEC;IAED,iCA6EC;IAyFD,mBAMC;CA2KF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmDgB,wCAAQ;;QACH,6CAAQ"}
@@ -18,6 +18,7 @@ import { ConsoleEvent, InputFilterEvent, IrisGridEvent } from "../events/index.j
18
18
  import { getInputFiltersForDashboard, getLinksForDashboard, getColumnSelectionValidatorForDashboard } from "../redux/index.js";
19
19
  import { UIPropTypes } from "../prop-types/index.js";
20
20
  import WidgetPanel from "./WidgetPanel.js";
21
+ import WidgetPanelTooltip from "./WidgetPanelTooltip.js";
21
22
  import "./IrisGridPanel.css";
22
23
  var log = Log.module('IrisGridPanel');
23
24
  var DEBOUNCE_PANEL_STATE_UPDATE = 500;
@@ -839,7 +840,7 @@ export class IrisGridPanel extends PureComponent {
839
840
  }
840
841
 
841
842
  render() {
842
- var _model$description, _panelState$pluginSta;
843
+ var _model$description, _panelState$pluginSta, _model$rowCount;
843
844
 
844
845
  var {
845
846
  children,
@@ -910,6 +911,7 @@ export class IrisGridPanel extends PureComponent {
910
911
  canCopy,
911
912
  canDownloadCsv
912
913
  } = permissions;
914
+ var formattedRowCount = model === null || model === void 0 ? void 0 : model.displayString((_model$rowCount = model === null || model === void 0 ? void 0 : model.rowCount) !== null && _model$rowCount !== void 0 ? _model$rowCount : 0, 'long');
913
915
  return /*#__PURE__*/React.createElement(WidgetPanel, {
914
916
  errorMessage: errorMessage,
915
917
  isDisconnected: isDisconnected,
@@ -927,7 +929,19 @@ export class IrisGridPanel extends PureComponent {
927
929
  widgetName: name,
928
930
  widgetType: "Table",
929
931
  description: description,
930
- componentPanel: this
932
+ componentPanel: this,
933
+ renderTabTooltip: () => /*#__PURE__*/React.createElement(WidgetPanelTooltip, {
934
+ widgetType: "Table",
935
+ widgetName: name,
936
+ glContainer: glContainer,
937
+ description: description
938
+ }, /*#__PURE__*/React.createElement("div", {
939
+ className: "column-statistics-grid"
940
+ }, /*#__PURE__*/React.createElement("span", {
941
+ className: "column-statistic-operation"
942
+ }, "Number of Rows"), /*#__PURE__*/React.createElement("span", {
943
+ className: "column-statistic-value"
944
+ }, formattedRowCount)))
931
945
  }, isModelReady && /*#__PURE__*/React.createElement(IrisGrid, {
932
946
  advancedFilters: advancedFilters,
933
947
  aggregationSettings: aggregationSettings,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/IrisGridPanel.jsx"],"names":["React","PureComponent","memoize","PropTypes","connect","debounce","GLPropTypes","LayoutUtils","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","TableUtils","AdvancedSettings","Log","getSettings","getUser","getWorkspace","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","UIPropTypes","WidgetPanel","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","includes","getIdFromPanel","dashboardLinks","pluginFetchColumns","id","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","table","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","model","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","advancedSettings","pendingDataMap","frozenColumns","conditionalFormats","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","savePanelState","bind","handleAdvancedSettingsChange","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","modelPromise","panelState","metadata","queryName","query","state","error","isDisconnected","isLoaded","isLoading","isModelReady","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","cancel","getTableName","setState","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","debug","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","visibleIndex","getVisibleColumn","getColumnIndexByName","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","hydrateQuickFilters","hydrateAdvancedFilters","unsetFilterValue","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","onPanelStateUpdate","oldPanelState","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","querySerial","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","getAlwaysFetchColumns","getGridInputFilters","propTypes","node","Container","isRequired","EventHub","shape","string","arrayOf","array","func","InputFilter","Links","User","defaultProps","undefined","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport {\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n TableUtils,\n} from '@deephaven/iris-grid';\nimport AdvancedSettings from '@deephaven/iris-grid/dist/sidebar/AdvancedSettings';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport { UIPropTypes } from '../prop-types';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\nexport class IrisGridPanel extends PureComponent {\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props) {\n super(props);\n\n this.savePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(\n this\n );\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n this.modelPromise = null;\n\n const { panelState, metadata } = props;\n const queryName = metadata.query;\n\n this.irisGridState = null;\n this.gridState = null;\n this.pluginState = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: null,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partition: null,\n partitionColumn: null,\n queryName,\n rollupConfig: null,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n Plugin: null,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: null,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.initModel();\n }\n\n componentDidUpdate(_, prevState) {\n const { model } = this.state;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n }\n\n componentWillUnmount() {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = null;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n getTableName() {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize((columns, inputFilters) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n !excludePanelIds.includes(LayoutUtils.getIdFromPanel(this)))\n )\n )\n );\n\n getAlwaysFetchColumns = memoize((dashboardLinks, pluginFetchColumns) => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n });\n\n getPluginContent = memoize((Plugin, table, user, workspace, pluginState) => {\n if (Plugin == null || table == null) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n // onFilter is deprecated\n onFilter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n // onFetchColumns is deprecated\n onFetchColumns={this.handlePluginFetchColumns}\n table={table}\n user={user}\n panel={this}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n });\n\n getDehydratedIrisGridPanelState = memoize(\n (model, isSelectingPartition, partition, partitionColumn) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n advancedSettings,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n })\n );\n\n getDehydratedGridState = memoize(\n (model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel() {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(\n makeModel(),\n resolved => resolved.close\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam) {\n const model = modelParam;\n const { panelState } = this.props;\n const modelQueue = [];\n\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = irisGridState;\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam, modelQueue) {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n modelChange(model);\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(key, value) {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters) {\n const { model } = this.state;\n const { columns, formatter } = model;\n const pluginFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n );\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data) {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn) {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(irisGridState, gridState) {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState) {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event) {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column, value) {\n const { glEventHub } = this.props;\n const { name } = column;\n const tableName = this.getTableName();\n const command = `${tableName} = ${tableName}.where(\"${name}=\\`${value}\\`\")`;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n /**\n * Create a chart with the specified settings\n * @param {ChartBuilderSettings} settings The settings from the chart builder\n * @param {string} settings.type The settings from the chart builder\n * @param {string[]} settings.series The names of the series\n * @param {string} xAxis The xAxis for this chart\n * @param {boolean} isLinked Whether this chart should be linked or not\n * @param {IrisGridModel} model The IrisGridModel object\n */\n handleCreateChart(settings, model) {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters, metadata } = this.props;\n const { table } = metadata;\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n const tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: model.table,\n });\n }\n );\n }\n\n handleColumnSelected(column) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row, dataMap) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize() {\n this.updateGrid();\n }\n\n handleShow() {\n this.updateGrid();\n }\n\n handleError(error) {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model) {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = null;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n const { table } = model;\n const { pluginName } = table;\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters() {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns) {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model) {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model) {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName) {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n\n const { metrics } = irisGrid.state;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n } = metrics;\n const visibleIndex = irisGrid.getVisibleColumn(\n model.getColumnIndexByName(columnName)\n );\n const columnX = visibleColumnXs.get(visibleIndex) || 0;\n const columnWidth = visibleColumnWidths.get(visibleIndex) || 0;\n\n const x = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight;\n\n return [x, y];\n }\n\n setFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n const irisGrid = this.irisGrid.current;\n const { model, isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n const { columns, formatter } = model;\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue() {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model) {\n const { panelState } = this.props;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n } = IrisGridUtils.hydrateIrisGridState(model, irisGridState);\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = IrisGridUtils.hydrateGridState(\n model,\n gridState,\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState() {\n const { irisGridState, gridState, pluginState } = this;\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n } = this.state;\n const {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n metrics,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate(panelState);\n }\n }\n\n updateGrid() {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render() {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n queryName,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : null;\n const { table: name, querySerial } = metadata;\n const description = model?.description ?? null;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model?.table, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n queryName={queryName}\n querySerial={querySerial}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n >\n {isModelReady && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"not-allowed\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partition={partition}\n partitionColumn={partitionColumn}\n quickFilters={quickFilters}\n reverseType={reverseType}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n tableName={name}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onPartitionAppend={this.handlePartitionAppend}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nIrisGridPanel.propTypes = {\n children: PropTypes.node,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n metadata: PropTypes.shape({\n table: PropTypes.string.isRequired,\n query: PropTypes.string,\n querySerial: PropTypes.string,\n }).isRequired,\n panelState: PropTypes.shape({\n gridState: PropTypes.shape({}),\n irisGridState: PropTypes.shape({\n aggregationSettings: PropTypes.shape({}),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\n }),\n pendingDataMap: PropTypes.arrayOf(PropTypes.array),\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n }),\n irisGridPanelState: PropTypes.shape({}),\n pluginState: PropTypes.shape({}),\n }),\n makeModel: PropTypes.func.isRequired,\n inputFilters: PropTypes.arrayOf(UIPropTypes.InputFilter).isRequired,\n links: UIPropTypes.Links.isRequired,\n columnSelectionValidator: PropTypes.func,\n onStateChange: PropTypes.func,\n onPanelStateUpdate: PropTypes.func,\n user: UIPropTypes.User.isRequired,\n workspace: PropTypes.shape({}).isRequired,\n settings: PropTypes.shape({ timeZone: PropTypes.string.isRequired })\n .isRequired,\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: PropTypes.func,\n\n // Load a plugin defined by the table\n loadPlugin: PropTypes.func,\n\n theme: PropTypes.shape({}),\n};\n\nIrisGridPanel.defaultProps = {\n children: null,\n panelState: null,\n columnSelectionValidator: null,\n onStateChange: () => {},\n onPanelStateUpdate: () => {},\n getDownloadWorker: undefined,\n loadPlugin: undefined,\n theme: undefined,\n};\n\nIrisGridPanel.displayName = 'IrisGridPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGridPanel\n);\n"],"file":"IrisGridPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/IrisGridPanel.jsx"],"names":["React","PureComponent","memoize","PropTypes","connect","debounce","GLPropTypes","LayoutUtils","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","TableUtils","AdvancedSettings","Log","getSettings","getUser","getWorkspace","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","UIPropTypes","WidgetPanel","WidgetPanelTooltip","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","includes","getIdFromPanel","dashboardLinks","pluginFetchColumns","id","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","table","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","model","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","advancedSettings","pendingDataMap","frozenColumns","conditionalFormats","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","savePanelState","bind","handleAdvancedSettingsChange","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","modelPromise","panelState","metadata","queryName","query","state","error","isDisconnected","isLoaded","isLoading","isModelReady","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","cancel","getTableName","setState","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","debug","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","visibleIndex","getVisibleColumn","getColumnIndexByName","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","hydrateQuickFilters","hydrateAdvancedFilters","unsetFilterValue","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","onPanelStateUpdate","oldPanelState","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","querySerial","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","formattedRowCount","displayString","rowCount","getAlwaysFetchColumns","getGridInputFilters","propTypes","node","Container","isRequired","EventHub","shape","string","arrayOf","array","func","InputFilter","Links","User","defaultProps","undefined","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":";;AAAA;AACA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,SAASC,WAAT,EAAsBC,WAAtB,QAAyC,sBAAzC;AACA,SACEC,QADF,EAEEC,aAFF,EAGEC,aAHF,EAIEC,kBAJF,EAKEC,UALF,QAMO,sBANP;AAOA,OAAOC,gBAAP,MAA6B,oDAA7B;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,WAAT,EAAsBC,OAAtB,EAA+BC,YAA/B,QAAmD,kBAAnD;AACA,SAASC,YAAT,QAA6B,kBAA7B;AACA,SAASC,eAAT,QAAgC,uBAAhC;SACSC,Y,EAAcC,gB,EAAkBC,a;SAEvCC,2B,EACAC,oB,EACAC,uC;SAEOC,W;OACFC,W;OACAC,kB;;AAGP,IAAMC,GAAG,GAAGf,GAAG,CAACgB,MAAJ,CAAW,eAAX,CAAZ;AAEA,IAAMC,2BAA2B,GAAG,GAApC;AAEA,IAAMC,iBAAiB,GAAG;AAAExB,EAAAA,QAAF;AAAYG,EAAAA,kBAAZ;AAAgCQ,EAAAA;AAAhC,CAA1B;AAEA,OAAO,MAAMc,aAAN,SAA4BhC,aAA5B,CAA0C;AAG/CiC,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,iDA2HGjC,OAAO,CAAC,CAACkC,OAAD,EAAUC,YAAV,KAC5B3B,aAAa,CAAC4B,yBAAd,CACEF,OADF,EAEE;AACAC,IAAAA,YAAY,CAACE,MAAb,CACE;AAAA,UAAC;AAAEC,QAAAA,KAAF;AAASC,QAAAA;AAAT,OAAD;AAAA,aACED,KAAK,IAAI,IAAT,KACCC,eAAe,IAAI,IAAnB,IACC,CAACA,eAAe,CAACC,QAAhB,CAAyBnC,WAAW,CAACoC,cAAZ,CAA2B,IAA3B,CAAzB,CAFH,CADF;AAAA,KADF,CAHF,CAD2B,CA3HV;;AAAA,mDAwIKzC,OAAO,CAAC,CAAC0C,cAAD,EAAiBC,kBAAjB,KAAwC;AACtE,UAAMC,EAAE,GAAGvC,WAAW,CAACoC,cAAZ,CAA2B,IAA3B,CAAX,CADsE,CAEtE;;AACA,UAAMI,SAAS,GAAG,IAAIC,GAAJ,CAAQH,kBAAR,CAAlB;;AACA,WAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,cAAc,CAACM,MAAnC,EAA2CD,CAAC,IAAI,CAAhD,EAAmD;AACjD,YAAM;AAAEE,UAAAA;AAAF,YAAYP,cAAc,CAACK,CAAD,CAAhC;;AACA,YAAIE,KAAK,IAAIA,KAAK,CAACC,OAAN,KAAkBN,EAA/B,EAAmC;AACjCC,UAAAA,SAAS,CAACM,GAAV,CAAcF,KAAK,CAACG,UAApB;AACD;AACF;;AACD,aAAO,CAAC,GAAGP,SAAJ,CAAP;AACD,KAX8B,CAxIZ;;AAAA,8CAqJA7C,OAAO,CAAC,CAACqD,MAAD,EAASC,KAAT,EAAgBC,IAAhB,EAAsBC,SAAtB,EAAiCC,WAAjC,KAAiD;AAC1E,UAAIJ,MAAM,IAAI,IAAV,IAAkBC,KAAK,IAAI,IAA/B,EAAqC;AACnC,eAAO,IAAP;AACD;;AAED,0BACE;AAAK,QAAA,SAAS,EAAC;AAAf,sBACE,oBAAC,MAAD;AACE,QAAA,GAAG,EAAE,KAAKI,SADZ;AAEE,QAAA,MAAM,EAAE,KAAKC,kBAFf,CAGE;AAHF;AAIE,QAAA,QAAQ,EAAE,KAAKA,kBAJjB;AAKE,QAAA,YAAY,EAAE,KAAKC,wBALrB,CAME;AANF;AAOE,QAAA,cAAc,EAAE,KAAKA,wBAPvB;AAQE,QAAA,KAAK,EAAEN,KART;AASE,QAAA,IAAI,EAAEC,IATR;AAUE,QAAA,KAAK,EAAE,IAVT;AAWE,QAAA,SAAS,EAAEC,SAXb;AAYE,QAAA,UAAU,EAAE1B,iBAZd;AAaE,QAAA,aAAa,EAAE,KAAK+B,uBAbtB;AAcE,QAAA,WAAW,EAAEJ;AAdf,QADF,CADF;AAoBD,KAzByB,CArJP;;AAAA,6DAgLezD,OAAO,CACvC,CAAC8D,KAAD,EAAQC,oBAAR,EAA8BC,SAA9B,EAAyCC,eAAzC,KACEzD,aAAa,CAAC0D,2BAAd,CAA0CJ,KAA1C,EAAiD;AAC/CC,MAAAA,oBAD+C;AAE/CC,MAAAA,SAF+C;AAG/CC,MAAAA;AAH+C,KAAjD,CAFqC,CAhLtB;;AAAA,wDAyLUjE,OAAO,CAClC,CACE8D,KADF,EAEEK,KAFF,EAGEC,eAHF,EAIEC,qBAJF,EAKEC,gBALF,EAMEC,YANF,EAOEC,aAPF,EAQEC,WARF,EASEC,YATF,EAUEC,aAVF,EAWEC,WAXF,EAYEC,qBAZF,EAaEC,qBAbF,EAcEC,mBAdF,EAeEC,gBAfF,EAgBEC,cAhBF,EAiBEC,mBAjBF,EAkBEC,gBAlBF,EAmBEC,cAnBF,EAoBEC,aApBF,EAqBEC,kBArBF,KAuBE9E,aAAa,CAAC+E,sBAAd,CAAqCzB,KAArC,EAA4C;AAC1CM,MAAAA,eAD0C;AAE1Ce,MAAAA,gBAF0C;AAG1CD,MAAAA,mBAH0C;AAI1Cb,MAAAA,qBAJ0C;AAK1CC,MAAAA,gBAL0C;AAM1CkB,MAAAA,OAAO,EAAE;AACPR,QAAAA,gBADO;AAEPC,QAAAA;AAFO,OANiC;AAU1CV,MAAAA,YAV0C;AAW1CC,MAAAA,aAX0C;AAY1CC,MAAAA,WAZ0C;AAa1CC,MAAAA,YAb0C;AAc1CC,MAAAA,aAd0C;AAe1CC,MAAAA,WAf0C;AAgB1CC,MAAAA,qBAhB0C;AAiB1CC,MAAAA,qBAjB0C;AAkB1CX,MAAAA,KAlB0C;AAmB1CY,MAAAA,mBAnB0C;AAoB1CK,MAAAA,cApB0C;AAqB1CC,MAAAA,aArB0C;AAsB1CC,MAAAA;AAtB0C,KAA5C,CAxBgC,CAzLjB;;AAAA,oDA2OMtF,OAAO,CAC9B,CAAC8D,KAAD,EAAQ2B,YAAR,EAAsBC,SAAtB,EAAiCC,eAAjC,EAAkDC,cAAlD,KACEpF,aAAa,CAACqF,kBAAd,CAAiC/B,KAAjC,EAAwC;AACtC6B,MAAAA,eADsC;AAEtCC,MAAAA,cAFsC;AAGtCH,MAAAA,YAHsC;AAItCC,MAAAA;AAJsC,KAAxC,CAF4B,CA3Ob;;AAAA,iDAqPG1F,OAAO,CAC3B,CAAC8F,kBAAD,EAAqBC,aAArB,EAAoCC,SAApC,EAA+CvC,WAA/C,MAAgE;AAC9DqC,MAAAA,kBAD8D;AAE9DC,MAAAA,aAF8D;AAG9DC,MAAAA,SAH8D;AAI9DvC,MAAAA;AAJ8D,KAAhE,CAD2B,CArPV;;AAGjB,SAAKwC,cAAL,GAAsB9F,QAAQ,CAC5B,KAAK8F,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAD4B,EAE5BrE,2BAF4B,CAA9B;AAKA,SAAKsE,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCD,IAAlC,CAClC,IADkC,CAApC;AAGA,SAAKE,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BF,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKG,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBH,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKI,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BJ,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKK,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBL,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKM,WAAL,GAAmB,KAAKA,WAAL,CAAiBN,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKO,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BP,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKrC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BqC,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKQ,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BR,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKS,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBT,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKU,YAAL,GAAoB,KAAKA,YAAL,CAAkBV,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKW,UAAL,GAAkB,KAAKA,UAAL,CAAgBX,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKY,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBZ,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKa,eAAL,GAAuB,KAAKA,eAAL,CAAqBb,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKc,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBd,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKe,eAAL,GAAuB,KAAKA,eAAL,CAAqBf,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKgB,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BhB,IAA5B,CAAiC,IAAjC,CAA9B;AACA,SAAKiB,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBjB,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKvC,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBuC,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKtC,wBAAL,GAAgC,KAAKA,wBAAL,CAA8BsC,IAA9B,CAAmC,IAAnC,CAAhC;AACA,SAAKkB,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BlB,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,SAAKmB,QAAL,gBAAgBvH,KAAK,CAACwH,SAAN,EAAhB;AACA,SAAK5D,SAAL,gBAAiB5D,KAAK,CAACwH,SAAN,EAAjB;AACA,SAAKC,YAAL,GAAoB,IAApB;AAEA,QAAM;AAAEC,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAA2BxF,KAAjC;AACA,QAAMyF,SAAS,GAAGD,QAAQ,CAACE,KAA3B;AAEA,SAAK5B,aAAL,GAAqB,IAArB;AACA,SAAKC,SAAL,GAAiB,IAAjB;AACA,SAAKvC,WAAL,GAAmB,IAAnB;AAEA,SAAKmE,KAAL,GAAa;AACXC,MAAAA,KAAK,EAAE,IADI;AAEXC,MAAAA,cAAc,EAAE,KAFL;AAGXC,MAAAA,QAAQ,EAAE,KAHC;AAIXC,MAAAA,SAAS,EAAE,IAJA;AAKXC,MAAAA,YAAY,EAAE,KALH;AAMXnE,MAAAA,KAAK,EAAE,IANI;AAQX;AACAM,MAAAA,eAAe,EAAE,IAAI8D,GAAJ,EATN;AAUXhD,MAAAA,mBAAmB,EAAE;AAAEiD,QAAAA,YAAY,EAAE,EAAhB;AAAoBC,QAAAA,SAAS,EAAE;AAA/B,OAVV;AAWXjD,MAAAA,gBAAgB,EAAE,IAAI+C,GAAJ,CAAQvH,gBAAgB,CAAC0H,QAAzB,CAXP;AAYX7D,MAAAA,aAAa,EAAE,EAZJ;AAaXH,MAAAA,qBAAqB,EAAE,IAAI6D,GAAJ,EAbZ;AAcX5D,MAAAA,gBAAgB,EAAE,KAdP;AAeXC,MAAAA,YAAY,EAAE,IAAI2D,GAAJ,EAfH;AAgBX/D,MAAAA,KAAK,EAAE,EAhBI;AAiBXa,MAAAA,gBAAgB,EAAE,IAAIkD,GAAJ,EAjBP;AAkBXjD,MAAAA,cAAc,EAAE,IAAIiD,GAAJ,EAlBL;AAmBXzD,MAAAA,WAAW,EAAE/D,UAAU,CAAC4H,YAAX,CAAwBC,IAnB1B;AAoBX9C,MAAAA,YAAY,EAAE,EApBH;AAqBXC,MAAAA,SAAS,EAAE,EArBA;AAsBX3B,MAAAA,oBAAoB,EAAE,KAtBX;AAuBXC,MAAAA,SAAS,EAAE,IAvBA;AAwBXC,MAAAA,eAAe,EAAE,IAxBN;AAyBXyD,MAAAA,SAzBW;AA0BXhD,MAAAA,YAAY,EAAE,IA1BH;AA2BXC,MAAAA,aAAa,EAAE,KA3BJ;AA4BXC,MAAAA,WAAW,EAAE,EA5BF;AA6BXE,MAAAA,qBAAqB,EAAE,IA7BZ;AA8BXC,MAAAA,mBAAmB,EAAE,IA9BV;AA+BX1B,MAAAA,MAAM,EAAE,IA/BG;AAgCXmF,MAAAA,aAAa,EAAE,EAhCJ;AAiCX7F,MAAAA,kBAAkB,EAAE,EAjCT;AAkCX8F,MAAAA,UAAU,EAAE,EAlCD;AAmCXrD,MAAAA,cAAc,EAAE,IAAI8C,GAAJ,EAnCL;AAoCX7C,MAAAA,aAAa,EAAE,IApCJ;AAsCX;AACAmC,MAAAA,UAvCW,CAuCC;;AAvCD,KAAb;AAyCD;;AAEDkB,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,SAAL;AACD;;AAEDC,EAAAA,kBAAkB,CAACC,CAAD,EAAIC,SAAJ,EAAe;AAC/B,QAAM;AAAEhF,MAAAA;AAAF,QAAY,KAAK8D,KAAvB;;AACA,QAAI9D,KAAK,KAAKgF,SAAS,CAAChF,KAAxB,EAA+B;AAC7B,UAAIgF,SAAS,CAAChF,KAAV,IAAmB,IAAvB,EAA6B;AAC3B,aAAKiF,kBAAL,CAAwBD,SAAS,CAAChF,KAAlC;AACAgF,QAAAA,SAAS,CAAChF,KAAV,CAAgBkF,KAAhB;AACD;;AACD,UAAIlF,KAAK,IAAI,IAAb,EAAmB;AACjB,aAAKmF,mBAAL,CAAyBnF,KAAzB;AACD;AACF;AACF;;AAEDoF,EAAAA,oBAAoB,GAAG;AACrB,SAAKjD,cAAL,CAAoBkD,MAApB;;AAEA,QAAI,KAAK5B,YAAL,IAAqB,IAAzB,EAA+B;AAC7B,WAAKA,YAAL,CAAkB4B,MAAlB;AACA,WAAK5B,YAAL,GAAoB,IAApB;AACD;;AAED,QAAM;AAAEzD,MAAAA;AAAF,QAAY,KAAK8D,KAAvB;;AACA,QAAI9D,KAAJ,EAAW;AACT,WAAKiF,kBAAL,CAAwBjF,KAAxB;AACAA,MAAAA,KAAK,CAACkF,KAAN;AACD;AACF;;AAEDI,EAAAA,YAAY,GAAG;AACb,QAAM;AAAE3B,MAAAA;AAAF,QAAe,KAAKxF,KAA1B;AACA,WAAOwF,QAAQ,CAACnE,KAAhB;AACD;;AAqIDqF,EAAAA,SAAS,GAAG;AACV,SAAKU,QAAL,CAAc;AAAEpB,MAAAA,YAAY,EAAE,KAAhB;AAAuBD,MAAAA,SAAS,EAAE,IAAlC;AAAwCH,MAAAA,KAAK,EAAE;AAA/C,KAAd;AACA,QAAM;AAAEyB,MAAAA;AAAF,QAAgB,KAAKrH,KAA3B;;AACA,QAAI,KAAKsF,YAAL,IAAqB,IAAzB,EAA+B;AAC7B,WAAKA,YAAL,CAAkB4B,MAAlB;AACD;;AACD,SAAK5B,YAAL,GAAoBvG,YAAY,CAACuI,cAAb,CAClBD,SAAS,EADS,EAElBE,QAAQ,IAAIA,QAAQ,CAACR,KAFH,CAApB;AAIA,SAAKzB,YAAL,CAAkBkC,IAAlB,CAAuB,KAAKzC,iBAA5B,EAA+C0C,KAA/C,CAAqD,KAAKzC,eAA1D;AACD;;AAEDD,EAAAA,iBAAiB,CAAC2C,UAAD,EAAa;AAC5B,QAAM7F,KAAK,GAAG6F,UAAd;AACA,QAAM;AAAEnC,MAAAA;AAAF,QAAiB,KAAKvF,KAA5B;AACA,QAAMwG,UAAU,GAAG,EAAnB;;AAEA,QAAIjB,UAAU,IAAI,IAAlB,EAAwB;AACtB,UAAM;AAAEzB,QAAAA;AAAF,UAAoByB,UAA1B;AACA,UAAM;AACJtC,QAAAA,mBADI;AAEJV,QAAAA,aAFI;AAGJK,QAAAA,qBAAqB,GAAG,EAHpB;AAIJH,QAAAA;AAJI,UAKFqB,aALJ;;AAOA,UAAIvB,aAAa,CAACxB,MAAd,GAAuB,CAA3B,EAA8B;AAC5ByF,QAAAA,UAAU,CAACmB,IAAX,CAAgBC,CAAC,IAAI;AACnB;AACAA,UAAAA,CAAC,CAACrF,aAAF,GAAkBA,aAAlB;AACD,SAHD;AAID;;AAED,UAAIE,YAAY,IAAI,IAAhB,IAAwBA,YAAY,CAACxC,OAAb,CAAqBc,MAArB,GAA8B,CAA1D,EAA6D;AAC3D;AACA;AACA;AACAyF,QAAAA,UAAU,CAACmB,IAAX,CAAgBC,CAAC,IAAI;AACnB;AACAA,UAAAA,CAAC,CAACnF,YAAF,GAAiBlE,aAAa,CAACsJ,oBAAd,CACfD,CAAC,CAACE,eADa,EAEfrF,YAFe,EAGfQ,mBAHe,CAAjB;AAKD,SAPD;AAQD;;AAED,UAAIL,qBAAqB,CAAC7B,MAAtB,GAA+B,CAAnC,EAAsC;AACpCyF,QAAAA,UAAU,CAACmB,IAAX,CAAgBC,CAAC,IAAI;AACnB;AACAA,UAAAA,CAAC,CAAChF,qBAAF,GAA0BA,qBAA1B;AACD,SAHD;AAID;AACF;;AAED,SAAKwE,QAAL,CAAc;AAAEvF,MAAAA,KAAF;AAAS2E,MAAAA;AAAT,KAAd;AACA,SAAKuB,cAAL,CAAoBlG,KAApB,EAA2B2E,UAA3B;AACD;;AAEDuB,EAAAA,cAAc,CAACL,UAAD,EAAalB,UAAb,EAAyB;AACrC,QAAM3E,KAAK,GAAG6F,UAAd;;AACA,QAAIlB,UAAU,CAACzF,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,WAAKiH,gBAAL,CAAsBnG,KAAtB;AACA;AACD;;AACD,QAAMoG,WAAW,GAAGzB,UAAU,CAAC0B,KAAX,EAApB;AACAxI,IAAAA,GAAG,CAACyI,KAAJ,CAAU,gBAAV,EAA4BF,WAA5B,EAPqC,CAQrC;;AACAA,IAAAA,WAAW,CAACpG,KAAD,CAAX;AACA,SAAKuF,QAAL,CAAc;AAAEZ,MAAAA;AAAF,KAAd;AACD;;AAEDtC,EAAAA,4BAA4B,CAACkE,GAAD,EAAM/H,KAAN,EAAa;AACvCX,IAAAA,GAAG,CAACyI,KAAJ,CAAU,8BAAV,EAA0CC,GAA1C,EAA+C/H,KAA/C;AACA,SAAK+G,QAAL,CAAc;AAAA,UAAC;AAAElE,QAAAA;AAAF,OAAD;AAAA,aACZA,gBAAgB,CAACmF,GAAjB,CAAqBD,GAArB,MAA8B/H,KAA9B,GACI,IADJ,GAEI;AAAE6C,QAAAA,gBAAgB,EAAE,IAAI+C,GAAJ,CAAQ/C,gBAAR,EAA0BoF,GAA1B,CAA8BF,GAA9B,EAAmC/H,KAAnC;AAApB,OAHQ;AAAA,KAAd;AAKD;;AAEDqB,EAAAA,kBAAkB,CAAC6G,OAAD,EAAU;AAC1B,QAAM;AAAE1G,MAAAA;AAAF,QAAY,KAAK8D,KAAvB;AACA,QAAM;AAAE1F,MAAAA,OAAF;AAAWuI,MAAAA;AAAX,QAAyB3G,KAA/B;AACA,QAAM0E,aAAa,GAAGhI,aAAa,CAACkK,0BAAd,CACpBxI,OADoB,EAEpBsI,OAFoB,EAGpBC,SAAS,CAACE,QAHU,CAAtB;AAKA,SAAKtB,QAAL,CAAc;AAAEb,MAAAA;AAAF,KAAd;AACD;;AAED5E,EAAAA,wBAAwB,CAACjB,kBAAD,EAAqB;AAC3C,SAAK0G,QAAL,CAAc;AAAE1G,MAAAA;AAAF,KAAd;AACD;;AAEDwE,EAAAA,iBAAiB,CAACyD,IAAD,EAAO;AAAA;;AACtB,8DAAO,KAAKlH,SAAL,CAAemH,OAAtB,qFAAO,uBAAwBC,OAA/B,2DAAO,oDAAkCF,IAAlC,CAAP,yEAAkD,EAAlD;AACD;;AAED1D,EAAAA,sBAAsB,CAAC6D,WAAD,EAAc;AAClC,QAAM;AAAEC,MAAAA;AAAF,QAA+B,KAAK/I,KAA1C;;AACA,QAAI+I,wBAAJ,EAA8B;AAC5B,aAAOA,wBAAwB,CAAC,IAAD,EAAOD,WAAP,CAA/B;AACD;;AACD,WAAO,KAAP;AACD;;AAEDtE,EAAAA,qBAAqB,CAACV,aAAD,EAAgBC,SAAhB,EAA2B;AAC9C,SAAKD,aAAL,GAAqBA,aAArB;AACA,SAAKC,SAAL,GAAiBA,SAAjB,CAF8C,CAI9C;;AACA,SAAKqD,QAAL,CAAc;AAAEtB,MAAAA,QAAQ,EAAE,IAAZ;AAAkBC,MAAAA,SAAS,EAAE;AAA7B,KAAd;AAEA,SAAK/B,cAAL;AAEA,QAAM;AAAEgF,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAAgC,KAAKjJ,KAA3C;AACAgJ,IAAAA,UAAU,CAACE,IAAX,CAAgB/J,aAAa,CAACgK,aAA9B,EAA6C,IAA7C;AACAF,IAAAA,aAAa,CAACnF,aAAD,EAAgBC,SAAhB,CAAb;AACD;;AAEDnC,EAAAA,uBAAuB,CAACJ,WAAD,EAAc;AACnC,QAAM;AAAEsC,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAA+B,IAArC;AACA,SAAKvC,WAAL,GAAmBA,WAAnB,CAFmC,CAGnC;AACA;;AACA,QAAIsC,aAAa,KAAK,IAAlB,IAA0BC,SAAS,KAAK,IAA5C,EAAkD;AAChD,WAAKC,cAAL;AACD;AACF;;AAEDG,EAAAA,oBAAoB,CAACiF,KAAD,EAAQ;AAC1B,QAAM;AAAEpD,MAAAA,YAAF;AAAgBnE,MAAAA,KAAhB;AAAuB2E,MAAAA;AAAvB,QAAsC,KAAKb,KAAjD;;AACA,QAAIK,YAAJ,EAAkB;AAChB,WAAKqD,iBAAL,CAAuBD,KAAK,CAACE,MAA7B;AACD,KAFD,MAEO;AACL,WAAKvB,cAAL,CAAoBlG,KAApB,EAA2B2E,UAA3B;AACD;AACF;;AAEDpC,EAAAA,kBAAkB,CAACgF,KAAD,EAAQ;AACxB1J,IAAAA,GAAG,CAACyI,KAAJ,CAAU,oBAAV,EAAgCiB,KAAhC;AACA,QAAM;AAAEJ,MAAAA;AAAF,QAAiB,KAAKhJ,KAA5B;AACA,QAAM;AAAEsJ,MAAAA,MAAM,EAAEjI;AAAV,QAAoB+H,KAA1B;AACAJ,IAAAA,UAAU,CAACE,IAAX,CAAgBhK,gBAAgB,CAACqK,aAAjC,EAAgD,IAAhD,EAAsDlI,KAAtD;AACD;;AAEDoD,EAAAA,qBAAqB,CAAC+E,MAAD,EAASnJ,KAAT,EAAgB;AACnC,QAAM;AAAE2I,MAAAA;AAAF,QAAiB,KAAKhJ,KAA5B;AACA,QAAM;AAAEyJ,MAAAA;AAAF,QAAWD,MAAjB;AACA,QAAME,SAAS,GAAG,KAAKvC,YAAL,EAAlB;AACA,QAAMwC,OAAO,aAAMD,SAAN,gBAAqBA,SAArB,sBAAyCD,IAAzC,eAAmDpJ,KAAnD,SAAb;AACA2I,IAAAA,UAAU,CAACE,IAAX,CAAgBjK,YAAY,CAAC2K,YAA7B,EAA2CD,OAA3C,EAAoD,KAApD,EAA2D,IAA3D;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACEjF,EAAAA,iBAAiB,CAACmF,QAAD,EAAWhI,KAAX,EAAkB;AACjC;AACA,SAAKmC,cAAL,CAAoB8F,KAApB;AAEA,SAAK1C,QAAL,CACE,MAAM,IADR,EAEE,MAAM;AACJ,UAAM;AAAE4B,QAAAA,UAAF;AAAc9I,QAAAA,YAAd;AAA4BsF,QAAAA;AAA5B,UAAyC,KAAKxF,KAApD;AACA,UAAM;AAAEqB,QAAAA;AAAF,UAAYmE,QAAlB;AACA,UAAM;AAAED,QAAAA;AAAF,UAAiB,KAAKI,KAA5B;AACA,UAAMoE,aAAa,GAAG3L,WAAW,CAACoC,cAAZ,CAA2B,IAA3B,CAAtB;AACA,UAAMwJ,aAAa,GAAGzL,aAAa,CAAC0L,oBAAd,CACpB1E,UADoB,EAEpBrF,YAFoB,CAAtB;AAIA8I,MAAAA,UAAU,CAACE,IAAX,CAAgB/J,aAAa,CAAC+K,YAA9B,EAA4C;AAC1C1E,QAAAA,QAAQ,EAAE;AACRqE,UAAAA,QADQ;AAERE,UAAAA,aAFQ;AAGR1I,UAAAA,KAHQ;AAIR2I,UAAAA;AAJQ,SADgC;AAO1C3I,QAAAA,KAAK,EAAEQ,KAAK,CAACR;AAP6B,OAA5C;AASD,KApBH;AAsBD;;AAEDgD,EAAAA,oBAAoB,CAACmF,MAAD,EAAS;AAC3B,QAAM;AAAER,MAAAA;AAAF,QAAiB,KAAKhJ,KAA5B;AACAgJ,IAAAA,UAAU,CAACE,IAAX,CAAgB/J,aAAa,CAACgL,eAA9B,EAA+C,IAA/C,EAAqDX,MAArD;AACD;;AAEDlF,EAAAA,kBAAkB,CAAC8F,GAAD,EAAMC,OAAN,EAAe;AAC/B,QAAM;AAAErB,MAAAA;AAAF,QAAiB,KAAKhJ,KAA5B;AACAgJ,IAAAA,UAAU,CAACE,IAAX,CAAgB/J,aAAa,CAACmL,aAA9B,EAA6C,IAA7C,EAAmDD,OAAnD;AACD;;AAED1F,EAAAA,YAAY,GAAG;AACb,SAAK4F,UAAL;AACD;;AAED3F,EAAAA,UAAU,GAAG;AACX,SAAK2F,UAAL;AACD;;AAEDhG,EAAAA,WAAW,CAACqB,KAAD,EAAQ;AACjBlG,IAAAA,GAAG,CAACkG,KAAJ,CAAUA,KAAV;AACA,SAAKwB,QAAL,CAAc;AAAExB,MAAAA,KAAF;AAASG,MAAAA,SAAS,EAAE;AAApB,KAAd;AACD;;AAEDlB,EAAAA,gBAAgB,GAAG;AACjB,SAAKuC,QAAL,CAAc;AACZxB,MAAAA,KAAK,EAAE,IAAI4E,KAAJ,CAAU,oBAAV,CADK;AAEZ3E,MAAAA,cAAc,EAAE,IAFJ;AAGZE,MAAAA,SAAS,EAAE;AAHC,KAAd;AAKD;;AAEDjB,EAAAA,eAAe,GAAG;AAChB,SAAKsC,QAAL,CAAc;AAAEvB,MAAAA,cAAc,EAAE,KAAlB;AAAyBD,MAAAA,KAAK,EAAE;AAAhC,KAAd;AACD;;AAEDZ,EAAAA,eAAe,CAACY,KAAD,EAAQ;AACrB,QAAI7G,YAAY,CAAC0L,UAAb,CAAwB7E,KAAxB,CAAJ,EAAoC;AAClC;AACD;;AAED,SAAKrB,WAAL,CAAiBqB,KAAjB;AACD;;AAEDoC,EAAAA,gBAAgB,CAACnG,KAAD,EAAQ;AACtB,QAAM;AAAEmH,MAAAA,UAAF;AAAc0B,MAAAA;AAAd,QAA6B,KAAK1K,KAAxC;AAEA,SAAKsF,YAAL,GAAoB,IAApB,CAHsB,CAKtB;;AACA,SAAKqF,cAAL,CAAoB9I,KAApB;AAEA,SAAKuF,QAAL,CAAc;AAAEpB,MAAAA,YAAY,EAAE;AAAhB,KAAd;AAEA,QAAM;AAAE3E,MAAAA;AAAF,QAAYQ,KAAlB;AACA,QAAM;AAAE+I,MAAAA;AAAF,QAAiBvJ,KAAvB;;AACA,QAAIqJ,UAAU,IAAIE,UAAlB,EAA8B;AAC5B,UAAMxJ,MAAM,GAAGsJ,UAAU,CAACE,UAAD,CAAzB;AACA,WAAKxD,QAAL,CAAc;AAAEhG,QAAAA;AAAF,OAAd;AACD;;AACD4H,IAAAA,UAAU,CAACE,IAAX,CAAgBhK,gBAAgB,CAACqK,aAAjC,EAAgD,IAAhD,EAAsDlI,KAAtD;AAEA,SAAKgI,iBAAL,CAAuBxH,KAAK,CAAC5B,OAA7B;AACD;;AAEDkF,EAAAA,qBAAqB,GAAG;AACtB,QAAMC,QAAQ,GAAG,KAAKA,QAAL,CAAcwD,OAA/B;AACA,QAAM;AAAE/C,MAAAA;AAAF,QAAqB,KAAKF,KAAhC;;AACA,QAAIP,QAAQ,IAAI,IAAZ,IAAoB,CAACS,cAAzB,EAAyC;AACvCT,MAAAA,QAAQ,CAACyF,eAAT;AACD;AACF;;AAEDxB,EAAAA,iBAAiB,CAACpJ,OAAD,EAAU;AACzBP,IAAAA,GAAG,CAACoL,MAAJ,CAAW,mBAAX,EAAgC7K,OAAhC;AACA,QAAM;AAAE+I,MAAAA;AAAF,QAAiB,KAAKhJ,KAA5B;AACAgJ,IAAAA,UAAU,CAACE,IAAX,CAAgBhK,gBAAgB,CAAC6L,eAAjC,EAAkD,IAAlD,EAAwD9K,OAAxD;AACD;;AAED+G,EAAAA,mBAAmB,CAACnF,KAAD,EAAQ;AACzBA,IAAAA,KAAK,CAACmJ,gBAAN,CACE1M,aAAa,CAAC2M,KAAd,CAAoBC,UADtB,EAEE,KAAKrG,gBAFP;AAIAhD,IAAAA,KAAK,CAACmJ,gBAAN,CAAuB1M,aAAa,CAAC2M,KAAd,CAAoBE,SAA3C,EAAsD,KAAKrG,eAA3D;AACAjD,IAAAA,KAAK,CAACmJ,gBAAN,CACE1M,aAAa,CAAC2M,KAAd,CAAoBF,eADtB,EAEE,KAAK5G,oBAFP;AAIAtC,IAAAA,KAAK,CAACmJ,gBAAN,CACE1M,aAAa,CAAC2M,KAAd,CAAoB1B,aADtB,EAEE,KAAKnF,kBAFP;AAID;;AAED0C,EAAAA,kBAAkB,CAACjF,KAAD,EAAQ;AACxBA,IAAAA,KAAK,CAACuJ,mBAAN,CACE9M,aAAa,CAAC2M,KAAd,CAAoBC,UADtB,EAEE,KAAKrG,gBAFP;AAIAhD,IAAAA,KAAK,CAACuJ,mBAAN,CACE9M,aAAa,CAAC2M,KAAd,CAAoBE,SADtB,EAEE,KAAKrG,eAFP;AAIAjD,IAAAA,KAAK,CAACuJ,mBAAN,CACE9M,aAAa,CAAC2M,KAAd,CAAoBF,eADtB,EAEE,KAAK5G,oBAFP;AAIAtC,IAAAA,KAAK,CAACuJ,mBAAN,CACE9M,aAAa,CAAC2M,KAAd,CAAoB1B,aADtB,EAEE,KAAKnF,kBAFP;AAID;;AAEDiH,EAAAA,sBAAsB,CAAClK,UAAD,EAAa;AAAA;;AACjC,QAAM;AAAEU,MAAAA;AAAF,QAAY,KAAK8D,KAAvB;;AACA,QAAI,CAAC9D,KAAL,EAAY;AACV,aAAO,IAAP;AACD;;AAED,QAAMuD,QAAQ,GAAG,KAAKA,QAAL,CAAcwD,OAA/B;AACA,QAAM;AAAE0C,MAAAA;AAAF,QAAkBlG,QAAQ,IAAI,EAApC;AACA,QAAMmG,IAAI,4BAAGD,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEE,qBAAb,EAAH,yEAA2C,IAArD;;AACA,QAAID,IAAI,IAAI,IAAR,IAAgBA,IAAI,CAACE,KAAL,IAAc,CAA9B,IAAmCF,IAAI,CAACG,MAAL,IAAe,CAAtD,EAAyD;AACvD,aAAO,IAAP;AACD;;AAED,QAAM;AAAEnI,MAAAA;AAAF,QAAc6B,QAAQ,CAACO,KAA7B;AACA,QAAM;AACJgG,MAAAA,kBADI;AAEJC,MAAAA,eAFI;AAGJC,MAAAA,mBAHI;AAIJC,MAAAA;AAJI,QAKFvI,OALJ;AAMA,QAAMwI,YAAY,GAAG3G,QAAQ,CAAC4G,gBAAT,CACnBnK,KAAK,CAACoK,oBAAN,CAA2B9K,UAA3B,CADmB,CAArB;AAGA,QAAM+K,OAAO,GAAGN,eAAe,CAACvD,GAAhB,CAAoB0D,YAApB,KAAqC,CAArD;AACA,QAAMI,WAAW,GAAGN,mBAAmB,CAACxD,GAApB,CAAwB0D,YAAxB,KAAyC,CAA7D;AAEA,QAAMK,CAAC,GAAGC,IAAI,CAACC,GAAL,CACRf,IAAI,CAACgB,IADG,EAERF,IAAI,CAACG,GAAL,CACET,YAAY,GAAGD,KAAf,GACIP,IAAI,CAACO,KADT,GAEIP,IAAI,CAACgB,IAAL,GAAYL,OAAZ,GAAsBC,WAAW,GAAG,GAH1C,EAIEZ,IAAI,CAACO,KAJP,CAFQ,CAAV;AASA,QAAMW,CAAC,GAAGlB,IAAI,CAACmB,GAAL,GAAWf,kBAArB;AAEA,WAAO,CAACS,CAAD,EAAIK,CAAJ,CAAP;AACD;;AAEDE,EAAAA,YAAY,CAACC,SAAD,EAAY;AACtB,QAAMxH,QAAQ,GAAG,KAAKA,QAAL,CAAcwD,OAA/B;;AACA,QAAIxD,QAAQ,IAAI,IAAhB,EAAsB;AACpBA,MAAAA,QAAQ,CAACuH,YAAT,CAAsBC,SAAtB;AACD;AACF;;AAEDC,EAAAA,oBAAoB,CAACD,SAAD,EAAY;AAC9B,QAAMxH,QAAQ,GAAG,KAAKA,QAAL,CAAcwD,OAA/B;;AACA,QAAIxD,QAAQ,IAAI,IAAhB,EAAsB;AACpBA,MAAAA,QAAQ,CAACyH,oBAAT,CAA8BD,SAA9B;AACD;AACF;;AAEDE,EAAAA,UAAU,QAAoC;AAAA,QAAnC;AAAExK,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,KAAmC;AAC5C,QAAMiD,QAAQ,GAAG,KAAKA,QAAL,CAAcwD,OAA/B;AACA,QAAM;AAAE/G,MAAAA,KAAF;AAASgE,MAAAA;AAAT,QAA4B,KAAKF,KAAvC;;AACA,QAAIP,QAAQ,IAAI,IAAZ,IAAoB,CAACS,cAAzB,EAAyC;AACvC,UAAM;AAAE5F,QAAAA,OAAF;AAAWuI,QAAAA;AAAX,UAAyB3G,KAA/B;AACAuD,MAAAA,QAAQ,CAACyF,eAAT;AACAzF,MAAAA,QAAQ,CAAC0H,UAAT,CAAoB;AAClBxK,QAAAA,YAAY,EAAE/D,aAAa,CAACwO,mBAAd,CACZ9M,OADY,EAEZqC,YAFY,EAGZkG,SAAS,CAACE,QAHE,CADI;AAMlBvG,QAAAA,eAAe,EAAE5D,aAAa,CAACyO,sBAAd,CACf/M,OADe,EAEfkC,eAFe,EAGfqG,SAAS,CAACE,QAHK;AANC,OAApB;AAYD;AACF,GA7nB8C,CA+nB/C;;;AACAuE,EAAAA,gBAAgB,GAAG,CACjB;AACD;;AAEDtC,EAAAA,cAAc,CAAC9I,KAAD,EAAQ;AACpB,QAAM;AAAE0D,MAAAA;AAAF,QAAiB,KAAKvF,KAA5B;;AACA,QAAIuF,UAAU,IAAI,IAAlB,EAAwB;AACtB;AACD;;AAED,QAAI;AACF,UAAM;AAAExB,QAAAA,SAAF;AAAaD,QAAAA,aAAb;AAA4BD,QAAAA;AAA5B,UAAmD0B,UAAzD;AACA,UAAM;AACJzD,QAAAA,oBADI;AAEJC,QAAAA,SAFI;AAGJC,QAAAA;AAHI,UAIFzD,aAAa,CAAC2O,yBAAd,CAAwCrL,KAAxC,EAA+CgC,kBAA/C,CAJJ;AAKA,UAAM;AACJ1B,QAAAA,eADI;AAEJe,QAAAA,gBAFI;AAGJX,QAAAA,aAHI;AAIJH,QAAAA,qBAJI;AAKJC,QAAAA,gBALI;AAMJC,QAAAA,YANI;AAOJE,QAAAA,WAPI;AAQJC,QAAAA,YARI;AASJQ,QAAAA,mBATI;AAUJf,QAAAA,KAVI;AAWJa,QAAAA,gBAXI;AAYJC,QAAAA,cAZI;AAaJN,QAAAA,aAbI;AAcJC,QAAAA,WAdI;AAeJC,QAAAA,qBAfI;AAgBJC,QAAAA,qBAhBI;AAiBJC,QAAAA,mBAjBI;AAkBJK,QAAAA,cAlBI;AAmBJC,QAAAA,aAnBI;AAoBJC,QAAAA;AApBI,UAqBF9E,aAAa,CAAC4O,oBAAd,CAAmCtL,KAAnC,EAA0CiC,aAA1C,CArBJ;AAsBA,UAAM;AACJJ,QAAAA,eADI;AAEJC,QAAAA,cAFI;AAGJH,QAAAA,YAHI;AAIJC,QAAAA;AAJI,UAKFlF,aAAa,CAAC6O,gBAAd,CACFvL,KADE,EAEFkC,SAFE,EAGFD,aAAa,CAACvB,aAHZ,CALJ;AAUA,WAAK6E,QAAL,CAAc;AACZjF,QAAAA,eADY;AAEZe,QAAAA,gBAFY;AAGZG,QAAAA,kBAHY;AAIZd,QAAAA,aAJY;AAKZH,QAAAA,qBALY;AAMZC,QAAAA,gBANY;AAOZP,QAAAA,oBAPY;AAQZ0B,QAAAA,YARY;AASZC,QAAAA,SATY;AAUZ1B,QAAAA,SAVY;AAWZC,QAAAA,eAXY;AAYZM,QAAAA,YAZY;AAaZE,QAAAA,WAbY;AAcZC,QAAAA,YAdY;AAeZQ,QAAAA,mBAfY;AAgBZf,QAAAA,KAhBY;AAiBZa,QAAAA,gBAjBY;AAkBZC,QAAAA,cAlBY;AAmBZN,QAAAA,aAnBY;AAoBZC,QAAAA,WApBY;AAqBZC,QAAAA,qBArBY;AAsBZC,QAAAA,qBAtBY;AAuBZC,QAAAA,mBAvBY;AAwBZK,QAAAA,cAxBY;AAyBZC,QAAAA,aAzBY;AA0BZM,QAAAA,eA1BY;AA2BZC,QAAAA;AA3BY,OAAd;AA6BD,KApED,CAoEE,OAAOiC,KAAP,EAAc;AACdlG,MAAAA,GAAG,CAACkG,KAAJ,CAAU,0CAAV,EAAsDL,UAAtD,EAAkEK,KAAlE;AACD;AACF;;AAED5B,EAAAA,cAAc,GAAG;AACf,QAAM;AAAEF,MAAAA,aAAF;AAAiBC,MAAAA,SAAjB;AAA4BvC,MAAAA;AAA5B,QAA4C,IAAlD;AACA,QAAM;AAAE6L,MAAAA;AAAF,QAAyB,KAAKrN,KAApC;AACA,QAAM;AACJ6B,MAAAA,KADI;AAEJ0D,MAAAA,UAAU,EAAE+H,aAFR;AAGJxL,MAAAA,oBAHI;AAIJC,MAAAA,SAJI;AAKJC,MAAAA,eALI;AAMJkB,MAAAA;AANI,QAOF,KAAKyC,KAPT;AAQA,QAAM;AACJxD,MAAAA,eADI;AAEJc,MAAAA,mBAFI;AAGJb,MAAAA,qBAHI;AAIJC,MAAAA,gBAJI;AAKJC,MAAAA,YALI;AAMJC,MAAAA,aANI;AAOJC,MAAAA,WAPI;AAQJC,MAAAA,YARI;AASJC,MAAAA,aATI;AAUJC,MAAAA,WAVI;AAWJC,MAAAA,qBAXI;AAYJC,MAAAA,qBAZI;AAaJX,MAAAA,KAbI;AAcJY,MAAAA,mBAdI;AAeJS,MAAAA,OAfI;AAgBJJ,MAAAA,cAhBI;AAiBJC,MAAAA,aAjBI;AAkBJC,MAAAA;AAlBI,QAmBFS,aAnBJ;AAoBA,QAAM;AAAEf,MAAAA,gBAAF;AAAoBC,MAAAA;AAApB,QAAuCO,OAA7C;AACA,QAAM;AACJG,MAAAA,eADI;AAEJC,MAAAA,cAFI;AAGJH,MAAAA,YAHI;AAIJC,MAAAA;AAJI,QAKFM,SALJ;AAOA,QAAMwB,UAAU,GAAG,KAAKgI,mBAAL,CACjB,KAAKC,+BAAL,CACE3L,KADF,EAEEC,oBAFF,EAGEC,SAHF,EAIEC,eAJF,CADiB,EAOjB,KAAKyL,0BAAL,CACE5L,KADF,EAEEK,KAFF,EAGEC,eAHF,EAIEC,qBAJF,EAKEC,gBALF,EAMEC,YANF,EAOEC,aAPF,EAQEC,WARF,EASEC,YATF,EAUEC,aAVF,EAWEC,WAXF,EAYEC,qBAZF,EAaEC,qBAbF,EAcEC,mBAdF,EAeEC,gBAfF,EAgBEC,cAhBF,EAiBEC,mBAjBF,EAkBEC,gBAlBF,EAmBEC,cAnBF,EAoBEC,aApBF,EAqBEC,kBArBF,CAPiB,EA8BjB,KAAKqK,sBAAL,CACE7L,KADF,EAEE2B,YAFF,EAGEC,SAHF,EAIEC,eAJF,EAKEC,cALF,CA9BiB,EAqCjBnC,WArCiB,CAAnB;;AAwCA,QAAI+D,UAAU,KAAK+H,aAAnB,EAAkC;AAChC5N,MAAAA,GAAG,CAACyI,KAAJ,CAAU,oBAAV,EAAgC,IAAhC,EAAsC5C,UAAtC;AAEA,WAAK6B,QAAL,CAAc;AAAE7B,QAAAA;AAAF,OAAd;AACA8H,MAAAA,kBAAkB,CAAC9H,UAAD,CAAlB;AACD;AACF;;AAEDgF,EAAAA,UAAU,GAAG;AAAA;;AACX,QAAMoD,IAAI,sDAAG,KAAKvI,QAAL,CAAcwD,OAAjB,2DAAG,uBAAuB+E,IAA1B,yEAAkC,IAA5C;AACA,QAAI,CAACA,IAAL,EAAW,OAFA,CAIX;;AACAA,IAAAA,IAAI,CAAChJ,YAAL;AACD;;AAEDiJ,EAAAA,MAAM,GAAG;AAAA;;AACP,QAAM;AACJC,MAAAA,QADI;AAEJC,MAAAA,WAFI;AAGJ9E,MAAAA,UAHI;AAIJD,MAAAA,wBAJI;AAKJgF,MAAAA,iBALI;AAMJ7N,MAAAA,YANI;AAOJ8N,MAAAA,KAPI;AAQJxI,MAAAA,QARI;AASJD,MAAAA,UATI;AAUJjE,MAAAA,IAVI;AAWJC,MAAAA,SAXI;AAYJsI,MAAAA,QAZI;AAaJoE,MAAAA;AAbI,QAcF,KAAKjO,KAdT;AAeA,QAAM;AACJmC,MAAAA,eADI;AAEJc,MAAAA,mBAFI;AAGJC,MAAAA,gBAHI;AAIJG,MAAAA,kBAJI;AAKJd,MAAAA,aALI;AAMJH,MAAAA,qBANI;AAOJwD,MAAAA,KAPI;AAQJC,MAAAA,cARI;AASJxD,MAAAA,gBATI;AAUJP,MAAAA,oBAVI;AAWJ4B,MAAAA,eAXI;AAYJC,MAAAA,cAZI;AAaJmC,MAAAA,QAbI;AAcJC,MAAAA,SAdI;AAeJC,MAAAA,YAfI;AAgBJnE,MAAAA,KAhBI;AAiBJ2B,MAAAA,YAjBI;AAkBJC,MAAAA,SAlBI;AAmBJ1B,MAAAA,SAnBI;AAoBJC,MAAAA,eApBI;AAqBJyD,MAAAA,SArBI;AAsBJnD,MAAAA,YAtBI;AAuBJE,MAAAA,WAvBI;AAwBJC,MAAAA,YAxBI;AAyBJP,MAAAA,KAzBI;AA0BJa,MAAAA,gBA1BI;AA2BJC,MAAAA,cA3BI;AA4BJN,MAAAA,aA5BI;AA6BJC,MAAAA,WA7BI;AA8BJC,MAAAA,qBA9BI;AA+BJC,MAAAA,qBA/BI;AAgCJC,MAAAA,mBAhCI;AAiCJ1B,MAAAA,MAjCI;AAkCJmF,MAAAA,aAlCI;AAmCJ7F,MAAAA,kBAnCI;AAoCJyC,MAAAA,cApCI;AAqCJC,MAAAA;AArCI,QAsCF,KAAKuC,KAtCT;AAuCA,QAAMuI,YAAY,GAAGtI,KAAK,mCAA4BA,KAA5B,IAAsC,IAAhE;AACA,QAAM;AAAEvE,MAAAA,KAAK,EAAEoI,IAAT;AAAe0E,MAAAA;AAAf,QAA+B3I,QAArC;AACA,QAAM4I,WAAW,yBAAGvM,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEuM,WAAV,mEAAyB,IAA1C;AACA,QAAM5M,WAAW,4BAAG+D,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAE/D,WAAf,yEAA8B,IAA/C;AACA,QAAM6M,eAAe,GACnBR,QADmB,aACnBA,QADmB,cACnBA,QADmB,GAEnB,KAAKS,gBAAL,CAAsBlN,MAAtB,EAA8BS,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAER,KAArC,EAA4CC,IAA5C,EAAkDC,SAAlD,EAA6DC,WAA7D,CAFF;AAGA,QAAM;AAAE+M,MAAAA;AAAF,QAAkBjN,IAAxB;AACA,QAAM;AAAEkN,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAA8BF,WAApC;AACA,QAAMG,iBAAiB,GAAG7M,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAE8M,aAAP,oBACxB9M,KADwB,aACxBA,KADwB,uBACxBA,KAAK,CAAE+M,QADiB,6DACL,CADK,EAExB,MAFwB,CAA1B;AAKA,wBACE,oBAAC,WAAD;AACE,MAAA,YAAY,EAAEV,YADhB;AAEE,MAAA,cAAc,EAAErI,cAFlB;AAGE,MAAA,SAAS,EAAEE,SAHb;AAIE,MAAA,QAAQ,EAAED,QAJZ;AAKE,MAAA,SAAS,EAAC,iBALZ;AAME,MAAA,WAAW,EAAEgI,WANf;AAOE,MAAA,UAAU,EAAE9E,UAPd;AAQE,MAAA,iBAAiB,EAAE,KAAK7D,qBAR1B;AASE,MAAA,QAAQ,EAAE,KAAKR,YATjB;AAUE,MAAA,MAAM,EAAE,KAAKC,UAVf;AAWE,MAAA,UAAU,EAAE,KAAKA,UAXnB;AAYE,MAAA,SAAS,EAAEa,SAZb;AAaE,MAAA,WAAW,EAAE0I,WAbf;AAcE,MAAA,UAAU,EAAE1E,IAdd;AAeE,MAAA,UAAU,EAAC,OAfb;AAgBE,MAAA,WAAW,EAAE2E,WAhBf;AAiBE,MAAA,cAAc,EAAE,IAjBlB;AAkBE,MAAA,gBAAgB,EAAE,mBAChB,oBAAC,kBAAD;AACE,QAAA,UAAU,EAAC,OADb;AAEE,QAAA,UAAU,EAAE3E,IAFd;AAGE,QAAA,WAAW,EAAEqE,WAHf;AAIE,QAAA,WAAW,EAAEM;AAJf,sBAME;AAAK,QAAA,SAAS,EAAC;AAAf,sBACE;AAAM,QAAA,SAAS,EAAC;AAAhB,0BADF,eAEE;AAAM,QAAA,SAAS,EAAC;AAAhB,SACGM,iBADH,CAFF,CANF;AAnBJ,OAkCG1I,YAAY,iBACX,oBAAC,QAAD;AACE,MAAA,eAAe,EAAE7D,eADnB;AAEE,MAAA,mBAAmB,EAAEc,mBAFvB;AAGE,MAAA,gBAAgB,EAAEC,gBAHpB;AAIE,MAAA,kBAAkB,EAAE,KAAK2L,qBAAL,CAClBb,KADkB,EAElBtN,kBAFkB,CAJtB;AAQE,MAAA,mBAAmB,EAAC,QARtB;AASE,MAAA,sBAAsB,EAAC,aATzB;AAUE,MAAA,aAAa,EAAE6B,aAVjB;AAWE,MAAA,qBAAqB,EAAEH,qBAXzB;AAYE,MAAA,wBAAwB,EAAE,KAAK6C,sBAZjC;AAaE,MAAA,kBAAkB,EAAE5B,kBAbtB;AAcE,MAAA,YAAY,EAAE,KAAKyL,mBAAL,CAAyBjN,KAAK,CAAC5B,OAA/B,EAAwCC,YAAxC,CAdhB;AAeE,MAAA,uBAAuB,EAAEqF,UAAU,IAAI,IAfzC;AAgBE,MAAA,gBAAgB,EAAElD,gBAhBpB;AAiBE,MAAA,iBAAiB,EAAE0G,wBAAwB,IAAI,IAjBjD;AAkBE,MAAA,oBAAoB,EAAEjH,oBAlBxB;AAmBE,MAAA,eAAe,EAAE4B,eAnBnB;AAoBE,MAAA,cAAc,EAAEC,cApBlB;AAqBE,MAAA,YAAY,EAAEH,YArBhB;AAsBE,MAAA,SAAS,EAAEC,SAtBb;AAuBE,MAAA,SAAS,EAAE1B,SAvBb;AAwBE,MAAA,eAAe,EAAEC,eAxBnB;AAyBE,MAAA,YAAY,EAAEM,YAzBhB;AA0BE,MAAA,WAAW,EAAEE,WA1Bf;AA2BE,MAAA,YAAY,EAAEC,YA3BhB;AA4BE,MAAA,QAAQ,EAAEoH,QA5BZ;AA6BE,MAAA,KAAK,EAAE3H,KA7BT;AA8BE,MAAA,gBAAgB,EAAEa,gBA9BpB;AA+BE,MAAA,cAAc,EAAEC,cA/BlB;AAgCE,MAAA,KAAK,EAAEnB,KAhCT;AAiCE,MAAA,SAAS,EAAE4H,IAjCb;AAkCE,MAAA,aAAa,EAAE/G,aAlCjB;AAmCE,MAAA,WAAW,EAAEC,WAnCf;AAoCE,MAAA,qBAAqB,EAAEE,qBApCzB;AAqCE,MAAA,qBAAqB,EAAED,qBArCzB;AAsCE,MAAA,mBAAmB,EAAEE,mBAtCvB;AAuCE,MAAA,gBAAgB,EAAE,KAAKuB,oBAvCzB;AAwCE,MAAA,aAAa,EAAE,KAAKK,iBAxCtB;AAyCE,MAAA,cAAc,EAAE,KAAKJ,kBAzCvB;AA0CE,MAAA,OAAO,EAAE,KAAKC,WA1ChB;AA2CE,MAAA,iBAAiB,EAAE,KAAKE,qBA3C1B;AA4CE,MAAA,aAAa,EAAE,KAAKD,qBA5CtB;AA6CE,MAAA,aAAa,EAAE,KAAKU,iBA7CtB;AA8CE,MAAA,wBAAwB,EAAE,KAAKhB,4BA9CjC;AA+CE,MAAA,aAAa,EAAEqC,aA/CjB;AAgDE,MAAA,cAAc,EAAEpD,cAhDlB;AAiDE,MAAA,OAAO,EAAEqL,OAjDX;AAkDE,MAAA,cAAc,EAAEC,cAlDlB;AAmDE,MAAA,GAAG,EAAE,KAAKrJ,QAnDZ;AAoDE,MAAA,iBAAiB,EAAE2I,iBApDrB;AAqDE,MAAA,aAAa,EAAE3K,aArDjB;AAsDE,MAAA,KAAK,EAAE6K;AAtDT,OAwDGI,eAxDH,CAnCJ,EA+FG,CAACrI,YAAD,iBAAiB,yCA/FpB,CADF;AAmGD;;AA19B8C;;gBAApClG,a,eACQ,e;;AA49BrBA,aAAa,CAACiP,SAAd,GAA0B;AACxBlB,EAAAA,QAAQ,EAAE7P,SAAS,CAACgR,IADI;AAExBlB,EAAAA,WAAW,EAAE3P,WAAW,CAAC8Q,SAAZ,CAAsBC,UAFX;AAGxBlG,EAAAA,UAAU,EAAE7K,WAAW,CAACgR,QAAZ,CAAqBD,UAHT;AAIxB1J,EAAAA,QAAQ,EAAExH,SAAS,CAACoR,KAAV,CAAgB;AACxB/N,IAAAA,KAAK,EAAErD,SAAS,CAACqR,MAAV,CAAiBH,UADA;AAExBxJ,IAAAA,KAAK,EAAE1H,SAAS,CAACqR,MAFO;AAGxBlB,IAAAA,WAAW,EAAEnQ,SAAS,CAACqR;AAHC,GAAhB,EAIPH,UARqB;AASxB3J,EAAAA,UAAU,EAAEvH,SAAS,CAACoR,KAAV,CAAgB;AAC1BrL,IAAAA,SAAS,EAAE/F,SAAS,CAACoR,KAAV,CAAgB,EAAhB,CADe;AAE1BtL,IAAAA,aAAa,EAAE9F,SAAS,CAACoR,KAAV,CAAgB;AAC7BnM,MAAAA,mBAAmB,EAAEjF,SAAS,CAACoR,KAAV,CAAgB,EAAhB,CADQ;AAE7B7M,MAAAA,aAAa,EAAEvE,SAAS,CAACsR,OAAV,CAAkBtR,SAAS,CAACqR,MAA5B,CAFc;AAG7BhM,MAAAA,kBAAkB,EAAErF,SAAS,CAACsR,OAAV,CAAkBtR,SAAS,CAACoR,KAAV,CAAgB,EAAhB,CAAlB,CAHS;AAI7BxM,MAAAA,qBAAqB,EAAE5E,SAAS,CAACsR,OAAV,CAAkBtR,SAAS,CAACqR,MAA5B,CAJM;AAK7B5M,MAAAA,YAAY,EAAEzE,SAAS,CAACoR,KAAV,CAAgB;AAC5BnP,QAAAA,OAAO,EAAEjC,SAAS,CAACsR,OAAV,CAAkBtR,SAAS,CAACqR,MAA5B,EAAoCH;AADjB,OAAhB,CALe;AAQ7B/L,MAAAA,cAAc,EAAEnF,SAAS,CAACsR,OAAV,CAAkBtR,SAAS,CAACuR,KAA5B,CARa;AAS7BnM,MAAAA,aAAa,EAAEpF,SAAS,CAACsR,OAAV,CAAkBtR,SAAS,CAACqR,MAA5B;AATc,KAAhB,CAFW;AAa1BxL,IAAAA,kBAAkB,EAAE7F,SAAS,CAACoR,KAAV,CAAgB,EAAhB,CAbM;AAc1B5N,IAAAA,WAAW,EAAExD,SAAS,CAACoR,KAAV,CAAgB,EAAhB;AAda,GAAhB,CATY;AAyBxB/H,EAAAA,SAAS,EAAErJ,SAAS,CAACwR,IAAV,CAAeN,UAzBF;AA0BxBhP,EAAAA,YAAY,EAAElC,SAAS,CAACsR,OAAV,CAAkB/P,WAAW,CAACkQ,WAA9B,EAA2CP,UA1BjC;AA2BxBlB,EAAAA,KAAK,EAAEzO,WAAW,CAACmQ,KAAZ,CAAkBR,UA3BD;AA4BxBnG,EAAAA,wBAAwB,EAAE/K,SAAS,CAACwR,IA5BZ;AA6BxBvG,EAAAA,aAAa,EAAEjL,SAAS,CAACwR,IA7BD;AA8BxBnC,EAAAA,kBAAkB,EAAErP,SAAS,CAACwR,IA9BN;AA+BxBlO,EAAAA,IAAI,EAAE/B,WAAW,CAACoQ,IAAZ,CAAiBT,UA/BC;AAgCxB3N,EAAAA,SAAS,EAAEvD,SAAS,CAACoR,KAAV,CAAgB,EAAhB,EAAoBF,UAhCP;AAiCxBrF,EAAAA,QAAQ,EAAE7L,SAAS,CAACoR,KAAV,CAAgB;AAAE1G,IAAAA,QAAQ,EAAE1K,SAAS,CAACqR,MAAV,CAAiBH;AAA7B,GAAhB,EACPA,UAlCqB;AAoCxB;AACAnB,EAAAA,iBAAiB,EAAE/P,SAAS,CAACwR,IArCL;AAuCxB;AACA9E,EAAAA,UAAU,EAAE1M,SAAS,CAACwR,IAxCE;AA0CxBvB,EAAAA,KAAK,EAAEjQ,SAAS,CAACoR,KAAV,CAAgB,EAAhB;AA1CiB,CAA1B;AA6CAtP,aAAa,CAAC8P,YAAd,GAA6B;AAC3B/B,EAAAA,QAAQ,EAAE,IADiB;AAE3BtI,EAAAA,UAAU,EAAE,IAFe;AAG3BwD,EAAAA,wBAAwB,EAAE,IAHC;AAI3BE,EAAAA,aAAa,EAAE,MAAM,CAAE,CAJI;AAK3BoE,EAAAA,kBAAkB,EAAE,MAAM,CAAE,CALD;AAM3BU,EAAAA,iBAAiB,EAAE8B,SANQ;AAO3BnF,EAAAA,UAAU,EAAEmF,SAPe;AAQ3B5B,EAAAA,KAAK,EAAE4B;AARoB,CAA7B;AAWA/P,aAAa,CAACgQ,WAAd,GAA4B,eAA5B;;AAEA,IAAMC,eAAe,GAAG,CAACpK,KAAD,EAAQqK,QAAR,KAAqB;AAC3C,MAAM;AAAEC,IAAAA;AAAF,MAAuBD,QAA7B;AACA,SAAO;AACL9P,IAAAA,YAAY,EAAEd,2BAA2B,CAACuG,KAAD,EAAQsK,gBAAR,CADpC;AAELjC,IAAAA,KAAK,EAAE3O,oBAAoB,CAACsG,KAAD,EAAQsK,gBAAR,CAFtB;AAGLlH,IAAAA,wBAAwB,EAAEzJ,uCAAuC,CAC/DqG,KAD+D,EAE/DsK,gBAF+D,CAH5D;AAOL3O,IAAAA,IAAI,EAAEzC,OAAO,CAAC8G,KAAD,CAPR;AAQLpE,IAAAA,SAAS,EAAEzC,YAAY,CAAC6G,KAAD,CARlB;AASLkE,IAAAA,QAAQ,EAAEjL,WAAW,CAAC+G,KAAD;AAThB,GAAP;AAWD,CAbD;;AAeA,eAAe1H,OAAO,CAAC8R,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;AAAEG,EAAAA,UAAU,EAAE;AAAd,CAA9B,CAAP,CACbpQ,aADa,CAAf","sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport {\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n TableUtils,\n} from '@deephaven/iris-grid';\nimport AdvancedSettings from '@deephaven/iris-grid/dist/sidebar/AdvancedSettings';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport { UIPropTypes } from '../prop-types';\nimport WidgetPanel from './WidgetPanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './IrisGridPanel.scss';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\nexport class IrisGridPanel extends PureComponent {\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props) {\n super(props);\n\n this.savePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(\n this\n );\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n this.modelPromise = null;\n\n const { panelState, metadata } = props;\n const queryName = metadata.query;\n\n this.irisGridState = null;\n this.gridState = null;\n this.pluginState = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: null,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partition: null,\n partitionColumn: null,\n queryName,\n rollupConfig: null,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n Plugin: null,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: null,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.initModel();\n }\n\n componentDidUpdate(_, prevState) {\n const { model } = this.state;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n }\n\n componentWillUnmount() {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = null;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n getTableName() {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize((columns, inputFilters) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n !excludePanelIds.includes(LayoutUtils.getIdFromPanel(this)))\n )\n )\n );\n\n getAlwaysFetchColumns = memoize((dashboardLinks, pluginFetchColumns) => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n });\n\n getPluginContent = memoize((Plugin, table, user, workspace, pluginState) => {\n if (Plugin == null || table == null) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n // onFilter is deprecated\n onFilter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n // onFetchColumns is deprecated\n onFetchColumns={this.handlePluginFetchColumns}\n table={table}\n user={user}\n panel={this}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n });\n\n getDehydratedIrisGridPanelState = memoize(\n (model, isSelectingPartition, partition, partitionColumn) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n advancedSettings,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n })\n );\n\n getDehydratedGridState = memoize(\n (model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel() {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(\n makeModel(),\n resolved => resolved.close\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam) {\n const model = modelParam;\n const { panelState } = this.props;\n const modelQueue = [];\n\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = irisGridState;\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam, modelQueue) {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n modelChange(model);\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(key, value) {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters) {\n const { model } = this.state;\n const { columns, formatter } = model;\n const pluginFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n );\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data) {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn) {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(irisGridState, gridState) {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState) {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event) {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column, value) {\n const { glEventHub } = this.props;\n const { name } = column;\n const tableName = this.getTableName();\n const command = `${tableName} = ${tableName}.where(\"${name}=\\`${value}\\`\")`;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n /**\n * Create a chart with the specified settings\n * @param {ChartBuilderSettings} settings The settings from the chart builder\n * @param {string} settings.type The settings from the chart builder\n * @param {string[]} settings.series The names of the series\n * @param {string} xAxis The xAxis for this chart\n * @param {boolean} isLinked Whether this chart should be linked or not\n * @param {IrisGridModel} model The IrisGridModel object\n */\n handleCreateChart(settings, model) {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters, metadata } = this.props;\n const { table } = metadata;\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n const tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: model.table,\n });\n }\n );\n }\n\n handleColumnSelected(column) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row, dataMap) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize() {\n this.updateGrid();\n }\n\n handleShow() {\n this.updateGrid();\n }\n\n handleError(error) {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model) {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = null;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n const { table } = model;\n const { pluginName } = table;\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters() {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns) {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model) {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model) {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName) {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n\n const { metrics } = irisGrid.state;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n } = metrics;\n const visibleIndex = irisGrid.getVisibleColumn(\n model.getColumnIndexByName(columnName)\n );\n const columnX = visibleColumnXs.get(visibleIndex) || 0;\n const columnWidth = visibleColumnWidths.get(visibleIndex) || 0;\n\n const x = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight;\n\n return [x, y];\n }\n\n setFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n const irisGrid = this.irisGrid.current;\n const { model, isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n const { columns, formatter } = model;\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue() {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model) {\n const { panelState } = this.props;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n } = IrisGridUtils.hydrateIrisGridState(model, irisGridState);\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = IrisGridUtils.hydrateGridState(\n model,\n gridState,\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState() {\n const { irisGridState, gridState, pluginState } = this;\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n } = this.state;\n const {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n metrics,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate(panelState);\n }\n }\n\n updateGrid() {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render() {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n queryName,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : null;\n const { table: name, querySerial } = metadata;\n const description = model?.description ?? null;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model?.table, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const formattedRowCount = model?.displayString(\n model?.rowCount ?? 0,\n 'long'\n );\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n queryName={queryName}\n querySerial={querySerial}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <WidgetPanelTooltip\n widgetType=\"Table\"\n widgetName={name}\n glContainer={glContainer}\n description={description}\n >\n <div className=\"column-statistics-grid\">\n <span className=\"column-statistic-operation\">Number of Rows</span>\n <span className=\"column-statistic-value\">\n {formattedRowCount}\n </span>\n </div>\n </WidgetPanelTooltip>\n )}\n >\n {isModelReady && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"not-allowed\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partition={partition}\n partitionColumn={partitionColumn}\n quickFilters={quickFilters}\n reverseType={reverseType}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n tableName={name}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onPartitionAppend={this.handlePartitionAppend}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nIrisGridPanel.propTypes = {\n children: PropTypes.node,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n metadata: PropTypes.shape({\n table: PropTypes.string.isRequired,\n query: PropTypes.string,\n querySerial: PropTypes.string,\n }).isRequired,\n panelState: PropTypes.shape({\n gridState: PropTypes.shape({}),\n irisGridState: PropTypes.shape({\n aggregationSettings: PropTypes.shape({}),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\n }),\n pendingDataMap: PropTypes.arrayOf(PropTypes.array),\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n }),\n irisGridPanelState: PropTypes.shape({}),\n pluginState: PropTypes.shape({}),\n }),\n makeModel: PropTypes.func.isRequired,\n inputFilters: PropTypes.arrayOf(UIPropTypes.InputFilter).isRequired,\n links: UIPropTypes.Links.isRequired,\n columnSelectionValidator: PropTypes.func,\n onStateChange: PropTypes.func,\n onPanelStateUpdate: PropTypes.func,\n user: UIPropTypes.User.isRequired,\n workspace: PropTypes.shape({}).isRequired,\n settings: PropTypes.shape({ timeZone: PropTypes.string.isRequired })\n .isRequired,\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: PropTypes.func,\n\n // Load a plugin defined by the table\n loadPlugin: PropTypes.func,\n\n theme: PropTypes.shape({}),\n};\n\nIrisGridPanel.defaultProps = {\n children: null,\n panelState: null,\n columnSelectionValidator: null,\n onStateChange: () => {},\n onPanelStateUpdate: () => {},\n getDownloadWorker: undefined,\n loadPlugin: undefined,\n theme: undefined,\n};\n\nIrisGridPanel.displayName = 'IrisGridPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGridPanel\n);\n"],"file":"IrisGridPanel.js"}
@@ -7,7 +7,7 @@ declare class WidgetPanel extends React.PureComponent<any, any, any> {
7
7
  handleSessionClosed(...args: any[]): void;
8
8
  handleSessionOpened(...args: any[]): void;
9
9
  getErrorMessage(): string | null;
10
- getCachedRenderTabTooltip: (this: any, showTabTooltip: any) => (() => JSX.Element) | null;
10
+ getCachedRenderTabTooltip: (this: any, showTabTooltip: any, glContainer: any, widgetType: any, widgetName: any, description: any) => (() => JSX.Element) | null;
11
11
  }
12
12
  declare namespace WidgetPanel {
13
13
  namespace propTypes {
@@ -43,6 +43,8 @@ declare namespace WidgetPanel {
43
43
  const showTabTooltip: PropTypes.Requireable<boolean>;
44
44
  const widgetName: PropTypes.Requireable<string>;
45
45
  const widgetType: PropTypes.Requireable<string>;
46
+ const renderTabTooltip: PropTypes.Requireable<(...args: any[]) => any>;
47
+ const description: PropTypes.Requireable<string>;
46
48
  const onFocus: PropTypes.Requireable<(...args: any[]) => any>;
47
49
  const onBlur: PropTypes.Requireable<(...args: any[]) => any>;
48
50
  const onHide: PropTypes.Requireable<(...args: any[]) => any>;
@@ -75,6 +77,10 @@ declare namespace WidgetPanel {
75
77
  export { widgetName_1 as widgetName };
76
78
  const widgetType_1: string;
77
79
  export { widgetType_1 as widgetType };
80
+ const renderTabTooltip_1: null;
81
+ export { renderTabTooltip_1 as renderTabTooltip };
82
+ const description_1: string;
83
+ export { description_1 as description };
78
84
  export function onFocus_1(): void;
79
85
  export { onFocus_1 as onFocus };
80
86
  export function onBlur_1(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetPanel.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanel.jsx"],"names":[],"mappings":";AASA;;GAEG;AACH;IACE,wBAaC;IAkCD,0CAQC;IAED,0CAGC;IA7CD,iCA0BC;IAED,0FAEE;CAiFH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4CU,kCAAQ;;QACT,iCAAQ;;QACR,iCAAQ;;QACG,4CAAQ;;QACjB,mCAAQ;;QACF,yCAAQ;;QACT,wCAAQ;;QACf,iCAAQ;;QACL,oCAAQ;;QACP,qCAAQ"}
1
+ {"version":3,"file":"WidgetPanel.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanel.jsx"],"names":[],"mappings":";AASA;;GAEG;AACH;IACE,wBAaC;IA4CD,0CAQC;IAED,0CAGC;IAvDD,iCA0BC;IAED,gKAYE;CA6FH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgDU,kCAAQ;;QACT,iCAAQ;;QACR,iCAAQ;;QACG,4CAAQ;;QACjB,mCAAQ;;QACF,yCAAQ;;QACT,wCAAQ;;QACf,iCAAQ;;QACL,oCAAQ;;QACP,qCAAQ"}
@@ -16,7 +16,12 @@ class WidgetPanel extends PureComponent {
16
16
  constructor(props) {
17
17
  super(props);
18
18
 
19
- _defineProperty(this, "getCachedRenderTabTooltip", memoize(showTabTooltip => showTabTooltip ? () => WidgetPanelTooltip(this.props) : null));
19
+ _defineProperty(this, "getCachedRenderTabTooltip", memoize((showTabTooltip, glContainer, widgetType, widgetName, description) => showTabTooltip ? () => /*#__PURE__*/React.createElement(WidgetPanelTooltip, {
20
+ glContainer: glContainer,
21
+ widgetType: widgetType,
22
+ widgetName: widgetName,
23
+ description: description
24
+ }) : null));
20
25
 
21
26
  this.handleSessionClosed = this.handleSessionClosed.bind(this);
22
27
  this.handleSessionOpened = this.handleSessionOpened.bind(this);
@@ -102,6 +107,10 @@ class WidgetPanel extends PureComponent {
102
107
  isClonable,
103
108
  isRenamable,
104
109
  showTabTooltip,
110
+ renderTabTooltip,
111
+ widgetType,
112
+ widgetName,
113
+ description,
105
114
  onClearAllFilters,
106
115
  onHide,
107
116
  onFocus,
@@ -117,7 +126,7 @@ class WidgetPanel extends PureComponent {
117
126
  isPanelInactive
118
127
  } = this.state;
119
128
  var errorMessage = this.getErrorMessage();
120
- var renderTabTooltip = this.getCachedRenderTabTooltip(showTabTooltip);
129
+ var doRenderTabTooltip = renderTabTooltip !== null && renderTabTooltip !== void 0 ? renderTabTooltip : this.getCachedRenderTabTooltip(showTabTooltip, glContainer, widgetType, widgetName, description);
121
130
  return /*#__PURE__*/React.createElement(Panel, {
122
131
  className: classNames(className, {
123
132
  disconnected: isPanelDisconnected || isWidgetDisconnected || isDisconnected,
@@ -136,7 +145,7 @@ class WidgetPanel extends PureComponent {
136
145
  onSessionOpen: this.handleSessionOpened,
137
146
  onTabBlur: onTabBlur,
138
147
  onTabFocus: onTabFocus,
139
- renderTabTooltip: renderTabTooltip,
148
+ renderTabTooltip: doRenderTabTooltip,
140
149
  errorMessage: errorMessage,
141
150
  isLoaded: isLoaded,
142
151
  isLoading: isLoading,
@@ -164,6 +173,8 @@ WidgetPanel.propTypes = {
164
173
  showTabTooltip: PropTypes.bool,
165
174
  widgetName: PropTypes.string,
166
175
  widgetType: PropTypes.string,
176
+ renderTabTooltip: PropTypes.func,
177
+ description: PropTypes.string,
167
178
  onFocus: PropTypes.func,
168
179
  onBlur: PropTypes.func,
169
180
  onHide: PropTypes.func,
@@ -186,6 +197,8 @@ WidgetPanel.defaultProps = {
186
197
  showTabTooltip: true,
187
198
  widgetName: 'Widget',
188
199
  widgetType: 'Widget',
200
+ renderTabTooltip: null,
201
+ description: '',
189
202
  onFocus: () => {},
190
203
  onBlur: () => {},
191
204
  onHide: () => {},
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/WidgetPanel.jsx"],"names":["React","Component","PureComponent","classNames","memoize","PropTypes","GLPropTypes","Panel","WidgetPanelTooltip","WidgetPanel","constructor","props","showTabTooltip","handleSessionClosed","bind","handleSessionOpened","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","getErrorMessage","errorMessage","widgetName","widgetType","onSessionClose","setState","onSessionOpen","render","children","className","componentPanel","isLoaded","isLoading","glContainer","glEventHub","isDisconnected","isClonable","isRenamable","onClearAllFilters","onHide","onFocus","onBlur","onResize","onShow","onTabBlur","onTabFocus","renderTabTooltip","getCachedRenderTabTooltip","disconnected","inactive","propTypes","node","isRequired","instanceOf","Container","EventHub","string","bool","func","defaultProps"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,aAA3B,QAAgD,OAAhD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,WAAT,QAA4B,sBAA5B;OACOC,K;OACAC,kB;;AAGP;AACA;AACA;;AACA,MAAMC,WAAN,SAA0BP,aAA1B,CAAwC;AACtCQ,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,uDA2CSP,OAAO,CAACQ,cAAc,IAChDA,cAAc,GAAG,MAAMJ,kBAAkB,CAAC,KAAKG,KAAN,CAA3B,GAA0C,IADvB,CA3ChB;;AAGjB,SAAKE,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBC,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B,CAA3B;AAEA,SAAKE,KAAL,GAAa;AACXC,MAAAA,oBAAoB,EAAE,KADX;AAEXC,MAAAA,mBAAmB,EAAE,KAFV;AAGXC,MAAAA,oBAAoB,EAAE,KAHX;AAIXC,MAAAA,qBAAqB,EAAE,KAJZ;AAKXC,MAAAA,eAAe,EAAE;AALN,KAAb;AAOD;;AAEDC,EAAAA,eAAe,GAAG;AAChB,QAAM;AAAEC,MAAAA;AAAF,QAAmB,KAAKZ,KAA9B;AACA,QAAM;AACJM,MAAAA,oBADI;AAEJC,MAAAA,mBAFI;AAGJC,MAAAA,oBAHI;AAIJC,MAAAA;AAJI,QAKF,KAAKJ,KALT;;AAMA,QAAIO,YAAJ,EAAkB;AAChB,uBAAUA,YAAV;AACD;;AACD,QAAIN,oBAAoB,IAAIC,mBAAxB,IAA+CE,qBAAnD,EAA0E;AACxE,aAAO,4DAAP;AACD;;AACD,QAAIH,oBAAoB,IAAIC,mBAA5B,EAAiD;AAC/C,aAAO,2BAAP;AACD;;AACD,QAAIA,mBAAJ,EAAyB;AACvB,UAAM;AAAEM,QAAAA,UAAF;AAAcC,QAAAA;AAAd,UAA6B,KAAKd,KAAxC;AACA,kCAAoBa,UAApB,0BAA6CC,UAA7C;AACD;;AACD,QAAIN,oBAAJ,EAA0B;AACxB,UAAM;AAAEK,QAAAA,UAAU,EAAVA;AAAF,UAAiB,KAAKb,KAA5B;AACA,uBAAUa,WAAV;AACD;;AACD,WAAO,IAAP;AACD;;AAMDX,EAAAA,mBAAmB,GAAU;AAC3B,QAAM;AAAEa,MAAAA;AAAF,QAAqB,KAAKf,KAAhC,CAD2B,CAE3B;;AACA,SAAKgB,QAAL,CAAc;AACZT,MAAAA,mBAAmB,EAAE,IADT;AAEZE,MAAAA,qBAAqB,EAAE;AAFX,KAAd;AAIAM,IAAAA,cAAc,CAAC,YAAD,CAAd;AACD;;AAEDX,EAAAA,mBAAmB,GAAU;AAC3B,QAAM;AAAEa,MAAAA;AAAF,QAAoB,KAAKjB,KAA/B;AACAiB,IAAAA,aAAa,CAAC,YAAD,CAAb;AACD;;AAEDC,EAAAA,MAAM,GAAG;AACP,QAAM;AACJC,MAAAA,QADI;AAEJC,MAAAA,SAFI;AAGJC,MAAAA,cAHI;AAIJC,MAAAA,QAJI;AAKJC,MAAAA,SALI;AAMJC,MAAAA,WANI;AAOJC,MAAAA,UAPI;AAQJC,MAAAA,cARI;AASJC,MAAAA,UATI;AAUJC,MAAAA,WAVI;AAWJ3B,MAAAA,cAXI;AAaJ4B,MAAAA,iBAbI;AAcJC,MAAAA,MAdI;AAeJC,MAAAA,OAfI;AAgBJC,MAAAA,MAhBI;AAiBJC,MAAAA,QAjBI;AAkBJC,MAAAA,MAlBI;AAmBJC,MAAAA,SAnBI;AAoBJC,MAAAA;AApBI,QAqBF,KAAKpC,KArBT;AAuBA,QAAM;AACJO,MAAAA,mBADI;AAEJC,MAAAA,oBAFI;AAGJE,MAAAA;AAHI,QAIF,KAAKL,KAJT;AAKA,QAAMO,YAAY,GAAG,KAAKD,eAAL,EAArB;AACA,QAAM0B,gBAAgB,GAAG,KAAKC,yBAAL,CAA+BrC,cAA/B,CAAzB;AAEA,wBACE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAET,UAAU,CAAC4B,SAAD,EAAY;AAC/BmB,QAAAA,YAAY,EACVhC,mBAAmB,IAAIC,oBAAvB,IAA+CkB,cAFlB;AAG/Bc,QAAAA,QAAQ,EAAE9B;AAHqB,OAAZ,CADvB;AAME,MAAA,cAAc,EAAEW,cANlB;AAOE,MAAA,WAAW,EAAEG,WAPf;AAQE,MAAA,UAAU,EAAEC,UARd;AASE,MAAA,iBAAiB,EAAEI,iBATrB;AAUE,MAAA,MAAM,EAAEC,MAVV;AAWE,MAAA,OAAO,EAAEC,OAXX;AAYE,MAAA,MAAM,EAAEC,MAZV;AAaE,MAAA,QAAQ,EAAEC,QAbZ;AAcE,MAAA,MAAM,EAAEC,MAdV;AAeE,MAAA,cAAc,EAAE,KAAKhC,mBAfvB;AAgBE,MAAA,aAAa,EAAE,KAAKE,mBAhBtB;AAiBE,MAAA,SAAS,EAAE+B,SAjBb;AAkBE,MAAA,UAAU,EAAEC,UAlBd;AAmBE,MAAA,gBAAgB,EAAEC,gBAnBpB;AAoBE,MAAA,YAAY,EAAEzB,YApBhB;AAqBE,MAAA,QAAQ,EAAEU,QArBZ;AAsBE,MAAA,SAAS,EAAEC,SAtBb;AAuBE,MAAA,UAAU,EAAEI,UAvBd;AAwBE,MAAA,WAAW,EAAEC;AAxBf,OA0BGT,QA1BH,EA2BGT,eAAe,iBAAI;AAAK,MAAA,SAAS,EAAC;AAAf,MA3BtB,CADF;AA+BD;;AA9HqC;;AAiIxCZ,WAAW,CAAC2C,SAAZ,GAAwB;AACtBtB,EAAAA,QAAQ,EAAEzB,SAAS,CAACgD,IAAV,CAAeC,UADH;AAEtBtB,EAAAA,cAAc,EAAE3B,SAAS,CAACkD,UAAV,CAAqBtD,SAArB,EAAgCqD,UAF1B;AAItBnB,EAAAA,WAAW,EAAE7B,WAAW,CAACkD,SAAZ,CAAsBF,UAJb;AAKtBlB,EAAAA,UAAU,EAAE9B,WAAW,CAACmD,QAAZ,CAAqBH,UALX;AAOtBvB,EAAAA,SAAS,EAAE1B,SAAS,CAACqD,MAPC;AAQtBnC,EAAAA,YAAY,EAAElB,SAAS,CAACqD,MARF;AAStBpB,EAAAA,UAAU,EAAEjC,SAAS,CAACsD,IATA;AAUtBtB,EAAAA,cAAc,EAAEhC,SAAS,CAACsD,IAVJ;AAWtBzB,EAAAA,SAAS,EAAE7B,SAAS,CAACsD,IAXC;AAYtB1B,EAAAA,QAAQ,EAAE5B,SAAS,CAACsD,IAZE;AAatBpB,EAAAA,WAAW,EAAElC,SAAS,CAACsD,IAbD;AActB/C,EAAAA,cAAc,EAAEP,SAAS,CAACsD,IAdJ;AAetBnC,EAAAA,UAAU,EAAEnB,SAAS,CAACqD,MAfA;AAgBtBjC,EAAAA,UAAU,EAAEpB,SAAS,CAACqD,MAhBA;AAkBtBhB,EAAAA,OAAO,EAAErC,SAAS,CAACuD,IAlBG;AAmBtBjB,EAAAA,MAAM,EAAEtC,SAAS,CAACuD,IAnBI;AAoBtBnB,EAAAA,MAAM,EAAEpC,SAAS,CAACuD,IApBI;AAqBtBpB,EAAAA,iBAAiB,EAAEnC,SAAS,CAACuD,IArBP;AAsBtBhB,EAAAA,QAAQ,EAAEvC,SAAS,CAACuD,IAtBE;AAuBtBlC,EAAAA,cAAc,EAAErB,SAAS,CAACuD,IAvBJ;AAwBtBhC,EAAAA,aAAa,EAAEvB,SAAS,CAACuD,IAxBH;AAyBtBf,EAAAA,MAAM,EAAExC,SAAS,CAACuD,IAzBI;AA0BtBd,EAAAA,SAAS,EAAEzC,SAAS,CAACuD,IA1BC;AA2BtBb,EAAAA,UAAU,EAAE1C,SAAS,CAACuD;AA3BA,CAAxB;AA8BAnD,WAAW,CAACoD,YAAZ,GAA2B;AACzB9B,EAAAA,SAAS,EAAE,EADc;AAEzBR,EAAAA,YAAY,EAAE,IAFW;AAGzBe,EAAAA,UAAU,EAAE,IAHa;AAIzBD,EAAAA,cAAc,EAAE,KAJS;AAKzBH,EAAAA,SAAS,EAAE,KALc;AAMzBD,EAAAA,QAAQ,EAAE,IANe;AAOzBM,EAAAA,WAAW,EAAE,IAPY;AAQzB3B,EAAAA,cAAc,EAAE,IARS;AASzBY,EAAAA,UAAU,EAAE,QATa;AAUzBC,EAAAA,UAAU,EAAE,QAVa;AAYzBiB,EAAAA,OAAO,EAAE,MAAM,CAAE,CAZQ;AAazBC,EAAAA,MAAM,EAAE,MAAM,CAAE,CAbS;AAczBF,EAAAA,MAAM,EAAE,MAAM,CAAE,CAdS;AAezBD,EAAAA,iBAAiB,EAAE,MAAM,CAAE,CAfF;AAgBzBI,EAAAA,QAAQ,EAAE,MAAM,CAAE,CAhBO;AAiBzBlB,EAAAA,cAAc,EAAE,MAAM,CAAE,CAjBC;AAkBzBE,EAAAA,aAAa,EAAE,MAAM,CAAE,CAlBE;AAmBzBiB,EAAAA,MAAM,EAAE,MAAM,CAAE,CAnBS;AAoBzBC,EAAAA,SAAS,EAAE,MAAM,CAAE,CApBM;AAqBzBC,EAAAA,UAAU,EAAE,MAAM,CAAE;AArBK,CAA3B;AAwBA,eAAetC,WAAf","sourcesContent":["import React, { Component, PureComponent } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport Panel from './Panel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\n\n/**\n * Widget panel component that has a loading spinner and displays an error message when set\n */\nclass WidgetPanel extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n\n this.state = {\n isClientDisconnected: false,\n isPanelDisconnected: false,\n isWidgetDisconnected: false,\n isWaitingForReconnect: false,\n isPanelInactive: false,\n };\n }\n\n getErrorMessage() {\n const { errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage) {\n return `${errorMessage}`;\n }\n if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {\n return 'Disconnected from server.\\nCheck your internet connection.';\n }\n if (isClientDisconnected && isPanelDisconnected) {\n return 'Disconnected from server.';\n }\n if (isPanelDisconnected) {\n const { widgetName, widgetType } = this.props;\n return `Variable \"${widgetName}\" not set.\\n${widgetType} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n const { widgetName } = this.props;\n return `${widgetName} is unavailable.`;\n }\n return null;\n }\n\n getCachedRenderTabTooltip = memoize(showTabTooltip =>\n showTabTooltip ? () => WidgetPanelTooltip(this.props) : null\n );\n\n handleSessionClosed(...args) {\n const { onSessionClose } = this.props;\n // The session has closed and we won't be able to reconnect, as this widget isn't persisted\n this.setState({\n isPanelDisconnected: true,\n isWaitingForReconnect: false,\n });\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args) {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n render() {\n const {\n children,\n className,\n componentPanel,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onShow,\n onTabBlur,\n onTabFocus,\n } = this.props;\n\n const {\n isPanelDisconnected,\n isWidgetDisconnected,\n isPanelInactive,\n } = this.state;\n const errorMessage = this.getErrorMessage();\n const renderTabTooltip = this.getCachedRenderTabTooltip(showTabTooltip);\n\n return (\n <Panel\n className={classNames(className, {\n disconnected:\n isPanelDisconnected || isWidgetDisconnected || isDisconnected,\n inactive: isPanelInactive,\n })}\n componentPanel={componentPanel}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={onClearAllFilters}\n onHide={onHide}\n onFocus={onFocus}\n onBlur={onBlur}\n onResize={onResize}\n onShow={onShow}\n onSessionClose={this.handleSessionClosed}\n onSessionOpen={this.handleSessionOpened}\n onTabBlur={onTabBlur}\n onTabFocus={onTabFocus}\n renderTabTooltip={renderTabTooltip}\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n isClonable={isClonable}\n isRenamable={isRenamable}\n >\n {children}\n {isPanelInactive && <div className=\"fill-parent-absolute\" />}\n </Panel>\n );\n }\n}\n\nWidgetPanel.propTypes = {\n children: PropTypes.node.isRequired,\n componentPanel: PropTypes.instanceOf(Component).isRequired,\n\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n\n className: PropTypes.string,\n errorMessage: PropTypes.string,\n isClonable: PropTypes.bool,\n isDisconnected: PropTypes.bool,\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n isRenamable: PropTypes.bool,\n showTabTooltip: PropTypes.bool,\n widgetName: PropTypes.string,\n widgetType: PropTypes.string,\n\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onHide: PropTypes.func,\n onClearAllFilters: PropTypes.func,\n onResize: PropTypes.func,\n onSessionClose: PropTypes.func,\n onSessionOpen: PropTypes.func,\n onShow: PropTypes.func,\n onTabBlur: PropTypes.func,\n onTabFocus: PropTypes.func,\n};\n\nWidgetPanel.defaultProps = {\n className: '',\n errorMessage: null,\n isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n widgetName: 'Widget',\n widgetType: 'Widget',\n\n onFocus: () => {},\n onBlur: () => {},\n onHide: () => {},\n onClearAllFilters: () => {},\n onResize: () => {},\n onSessionClose: () => {},\n onSessionOpen: () => {},\n onShow: () => {},\n onTabBlur: () => {},\n onTabFocus: () => {},\n};\n\nexport default WidgetPanel;\n"],"file":"WidgetPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/WidgetPanel.jsx"],"names":["React","Component","PureComponent","classNames","memoize","PropTypes","GLPropTypes","Panel","WidgetPanelTooltip","WidgetPanel","constructor","props","showTabTooltip","glContainer","widgetType","widgetName","description","handleSessionClosed","bind","handleSessionOpened","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","getErrorMessage","errorMessage","onSessionClose","setState","onSessionOpen","render","children","className","componentPanel","isLoaded","isLoading","glEventHub","isDisconnected","isClonable","isRenamable","renderTabTooltip","onClearAllFilters","onHide","onFocus","onBlur","onResize","onShow","onTabBlur","onTabFocus","doRenderTabTooltip","getCachedRenderTabTooltip","disconnected","inactive","propTypes","node","isRequired","instanceOf","Container","EventHub","string","bool","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component, PureComponent } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport Panel from './Panel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\n\n/**\n * Widget panel component that has a loading spinner and displays an error message when set\n */\nclass WidgetPanel extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n\n this.state = {\n isClientDisconnected: false,\n isPanelDisconnected: false,\n isWidgetDisconnected: false,\n isWaitingForReconnect: false,\n isPanelInactive: false,\n };\n }\n\n getErrorMessage() {\n const { errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage) {\n return `${errorMessage}`;\n }\n if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {\n return 'Disconnected from server.\\nCheck your internet connection.';\n }\n if (isClientDisconnected && isPanelDisconnected) {\n return 'Disconnected from server.';\n }\n if (isPanelDisconnected) {\n const { widgetName, widgetType } = this.props;\n return `Variable \"${widgetName}\" not set.\\n${widgetType} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n const { widgetName } = this.props;\n return `${widgetName} is unavailable.`;\n }\n return null;\n }\n\n getCachedRenderTabTooltip = memoize(\n (showTabTooltip, glContainer, widgetType, widgetName, description) =>\n showTabTooltip\n ? () => (\n <WidgetPanelTooltip\n glContainer={glContainer}\n widgetType={widgetType}\n widgetName={widgetName}\n description={description}\n />\n )\n : null\n );\n\n handleSessionClosed(...args) {\n const { onSessionClose } = this.props;\n // The session has closed and we won't be able to reconnect, as this widget isn't persisted\n this.setState({\n isPanelDisconnected: true,\n isWaitingForReconnect: false,\n });\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args) {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n render() {\n const {\n children,\n className,\n componentPanel,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip,\n renderTabTooltip,\n widgetType,\n widgetName,\n description,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onShow,\n onTabBlur,\n onTabFocus,\n } = this.props;\n\n const {\n isPanelDisconnected,\n isWidgetDisconnected,\n isPanelInactive,\n } = this.state;\n const errorMessage = this.getErrorMessage();\n const doRenderTabTooltip =\n renderTabTooltip ??\n this.getCachedRenderTabTooltip(\n showTabTooltip,\n glContainer,\n widgetType,\n widgetName,\n description\n );\n\n return (\n <Panel\n className={classNames(className, {\n disconnected:\n isPanelDisconnected || isWidgetDisconnected || isDisconnected,\n inactive: isPanelInactive,\n })}\n componentPanel={componentPanel}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={onClearAllFilters}\n onHide={onHide}\n onFocus={onFocus}\n onBlur={onBlur}\n onResize={onResize}\n onShow={onShow}\n onSessionClose={this.handleSessionClosed}\n onSessionOpen={this.handleSessionOpened}\n onTabBlur={onTabBlur}\n onTabFocus={onTabFocus}\n renderTabTooltip={doRenderTabTooltip}\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n isClonable={isClonable}\n isRenamable={isRenamable}\n >\n {children}\n {isPanelInactive && <div className=\"fill-parent-absolute\" />}\n </Panel>\n );\n }\n}\n\nWidgetPanel.propTypes = {\n children: PropTypes.node.isRequired,\n componentPanel: PropTypes.instanceOf(Component).isRequired,\n\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n\n className: PropTypes.string,\n errorMessage: PropTypes.string,\n isClonable: PropTypes.bool,\n isDisconnected: PropTypes.bool,\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n isRenamable: PropTypes.bool,\n showTabTooltip: PropTypes.bool,\n widgetName: PropTypes.string,\n widgetType: PropTypes.string,\n renderTabTooltip: PropTypes.func,\n description: PropTypes.string,\n\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onHide: PropTypes.func,\n onClearAllFilters: PropTypes.func,\n onResize: PropTypes.func,\n onSessionClose: PropTypes.func,\n onSessionOpen: PropTypes.func,\n onShow: PropTypes.func,\n onTabBlur: PropTypes.func,\n onTabFocus: PropTypes.func,\n};\n\nWidgetPanel.defaultProps = {\n className: '',\n errorMessage: null,\n isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n widgetName: 'Widget',\n widgetType: 'Widget',\n renderTabTooltip: null,\n description: '',\n\n onFocus: () => {},\n onBlur: () => {},\n onHide: () => {},\n onClearAllFilters: () => {},\n onResize: () => {},\n onSessionClose: () => {},\n onSessionOpen: () => {},\n onShow: () => {},\n onTabBlur: () => {},\n onTabFocus: () => {},\n};\n\nexport default WidgetPanel;\n"],"file":"WidgetPanel.js"}
@@ -20,6 +20,7 @@ declare namespace WidgetPanelTooltip {
20
20
  const widgetType: PropTypes.Requireable<string>;
21
21
  const widgetName: PropTypes.Requireable<string>;
22
22
  const description: PropTypes.Requireable<string>;
23
+ const children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
23
24
  }
24
25
  namespace defaultProps {
25
26
  const widgetType_1: string;
@@ -28,6 +29,8 @@ declare namespace WidgetPanelTooltip {
28
29
  export { widgetName_1 as widgetName };
29
30
  const description_1: null;
30
31
  export { description_1 as description };
32
+ const children_1: null;
33
+ export { children_1 as children };
31
34
  }
32
35
  }
33
36
  import PropTypes from "prop-types";
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetPanelTooltip.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanelTooltip.jsx"],"names":[],"mappings":";AAKA,6DA2BC"}
1
+ {"version":3,"file":"WidgetPanelTooltip.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanelTooltip.jsx"],"names":[],"mappings":";AAKA,6DA4BC"}
@@ -8,7 +8,8 @@ var WidgetPanelTooltip = props => {
8
8
  widgetType,
9
9
  widgetName,
10
10
  glContainer,
11
- description
11
+ description,
12
+ children
12
13
  } = props;
13
14
  var panelTitle = LayoutUtils.getTitleFromContainer(glContainer);
14
15
  return /*#__PURE__*/React.createElement("div", {
@@ -29,19 +30,21 @@ var WidgetPanelTooltip = props => {
29
30
  className: "row"
30
31
  }, /*#__PURE__*/React.createElement("span", {
31
32
  className: "tab-tooltip-description"
32
- }, description)));
33
+ }, description)), children);
33
34
  };
34
35
 
35
36
  WidgetPanelTooltip.propTypes = {
36
37
  glContainer: GLPropTypes.Container.isRequired,
37
38
  widgetType: PropTypes.string,
38
39
  widgetName: PropTypes.string,
39
- description: PropTypes.string
40
+ description: PropTypes.string,
41
+ children: PropTypes.node
40
42
  };
41
43
  WidgetPanelTooltip.defaultProps = {
42
44
  widgetType: '',
43
45
  widgetName: '',
44
- description: null
46
+ description: null,
47
+ children: null
45
48
  };
46
49
  export default WidgetPanelTooltip;
47
50
  //# sourceMappingURL=WidgetPanelTooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/WidgetPanelTooltip.jsx"],"names":["React","PropTypes","GLPropTypes","LayoutUtils","WidgetPanelTooltip","props","widgetType","widgetName","glContainer","description","panelTitle","getTitleFromContainer","propTypes","Container","isRequired","string","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,WAAT,EAAsBC,WAAtB,QAAyC,sBAAzC;;;AAGA,IAAMC,kBAAkB,GAAGC,KAAK,IAAI;AAClC,MAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA,WAA1B;AAAuCC,IAAAA;AAAvC,MAAuDJ,KAA7D;AACA,MAAMK,UAAU,GAAGP,WAAW,CAACQ,qBAAZ,CAAkCH,WAAlC,CAAnB;AAEA,sBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAM,IAAA,SAAS,EAAC;AAAhB,kBACE,+BAAIF,UAAJ,WADF,CADF,eAIE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAoCC,UAApC,CAJF,CADF,EAOGA,UAAU,KAAKG,UAAf,iBACC;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAM,IAAA,SAAS,EAAC;AAAhB,kBACE,8CADF,CADF,eAIE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAoCA,UAApC,CAJF,CARJ,EAeGD,WAAW,iBACV;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAA2CA,WAA3C,CADF,CAhBJ,CADF;AAuBD,CA3BD;;AA6BAL,kBAAkB,CAACQ,SAAnB,GAA+B;AAC7BJ,EAAAA,WAAW,EAAEN,WAAW,CAACW,SAAZ,CAAsBC,UADN;AAE7BR,EAAAA,UAAU,EAAEL,SAAS,CAACc,MAFO;AAG7BR,EAAAA,UAAU,EAAEN,SAAS,CAACc,MAHO;AAI7BN,EAAAA,WAAW,EAAER,SAAS,CAACc;AAJM,CAA/B;AAOAX,kBAAkB,CAACY,YAAnB,GAAkC;AAChCV,EAAAA,UAAU,EAAE,EADoB;AAEhCC,EAAAA,UAAU,EAAE,EAFoB;AAGhCE,EAAAA,WAAW,EAAE;AAHmB,CAAlC;AAMA,eAAeL,kBAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport './WidgetPanelTooltip.scss';\n\nconst WidgetPanelTooltip = props => {\n const { widgetType, widgetName, glContainer, description } = props;\n const panelTitle = LayoutUtils.getTitleFromContainer(glContainer);\n\n return (\n <div className=\"tab-tooltip-container\">\n <div className=\"row\">\n <span className=\"tab-tooltip-title\">\n <b>{widgetType} Name </b>\n </span>\n <span className=\"tab-tooltip-name\">{widgetName}</span>\n </div>\n {widgetName !== panelTitle && (\n <div className=\"row\">\n <span className=\"tab-tooltip-title\">\n <b>Display Name</b>\n </span>\n <span className=\"tab-tooltip-name\">{panelTitle}</span>\n </div>\n )}\n {description && (\n <div className=\"row\">\n <span className=\"tab-tooltip-description\">{description}</span>\n </div>\n )}\n </div>\n );\n};\n\nWidgetPanelTooltip.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n widgetType: PropTypes.string,\n widgetName: PropTypes.string,\n description: PropTypes.string,\n};\n\nWidgetPanelTooltip.defaultProps = {\n widgetType: '',\n widgetName: '',\n description: null,\n};\n\nexport default WidgetPanelTooltip;\n"],"file":"WidgetPanelTooltip.js"}
1
+ {"version":3,"sources":["../../src/panels/WidgetPanelTooltip.jsx"],"names":["React","PropTypes","GLPropTypes","LayoutUtils","WidgetPanelTooltip","props","widgetType","widgetName","glContainer","description","children","panelTitle","getTitleFromContainer","propTypes","Container","isRequired","string","node","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,WAAT,EAAsBC,WAAtB,QAAyC,sBAAzC;;;AAGA,IAAMC,kBAAkB,GAAGC,KAAK,IAAI;AAClC,MAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA,WAA1B;AAAuCC,IAAAA,WAAvC;AAAoDC,IAAAA;AAApD,MAAiEL,KAAvE;AACA,MAAMM,UAAU,GAAGR,WAAW,CAACS,qBAAZ,CAAkCJ,WAAlC,CAAnB;AAEA,sBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAM,IAAA,SAAS,EAAC;AAAhB,kBACE,+BAAIF,UAAJ,WADF,CADF,eAIE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAoCC,UAApC,CAJF,CADF,EAOGA,UAAU,KAAKI,UAAf,iBACC;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAM,IAAA,SAAS,EAAC;AAAhB,kBACE,8CADF,CADF,eAIE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAoCA,UAApC,CAJF,CARJ,EAeGF,WAAW,iBACV;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAA2CA,WAA3C,CADF,CAhBJ,EAoBGC,QApBH,CADF;AAwBD,CA5BD;;AA8BAN,kBAAkB,CAACS,SAAnB,GAA+B;AAC7BL,EAAAA,WAAW,EAAEN,WAAW,CAACY,SAAZ,CAAsBC,UADN;AAE7BT,EAAAA,UAAU,EAAEL,SAAS,CAACe,MAFO;AAG7BT,EAAAA,UAAU,EAAEN,SAAS,CAACe,MAHO;AAI7BP,EAAAA,WAAW,EAAER,SAAS,CAACe,MAJM;AAK7BN,EAAAA,QAAQ,EAAET,SAAS,CAACgB;AALS,CAA/B;AAQAb,kBAAkB,CAACc,YAAnB,GAAkC;AAChCZ,EAAAA,UAAU,EAAE,EADoB;AAEhCC,EAAAA,UAAU,EAAE,EAFoB;AAGhCE,EAAAA,WAAW,EAAE,IAHmB;AAIhCC,EAAAA,QAAQ,EAAE;AAJsB,CAAlC;AAOA,eAAeN,kBAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport './WidgetPanelTooltip.scss';\n\nconst WidgetPanelTooltip = props => {\n const { widgetType, widgetName, glContainer, description, children } = props;\n const panelTitle = LayoutUtils.getTitleFromContainer(glContainer);\n\n return (\n <div className=\"tab-tooltip-container\">\n <div className=\"row\">\n <span className=\"tab-tooltip-title\">\n <b>{widgetType} Name </b>\n </span>\n <span className=\"tab-tooltip-name\">{widgetName}</span>\n </div>\n {widgetName !== panelTitle && (\n <div className=\"row\">\n <span className=\"tab-tooltip-title\">\n <b>Display Name</b>\n </span>\n <span className=\"tab-tooltip-name\">{panelTitle}</span>\n </div>\n )}\n {description && (\n <div className=\"row\">\n <span className=\"tab-tooltip-description\">{description}</span>\n </div>\n )}\n {children}\n </div>\n );\n};\n\nWidgetPanelTooltip.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n widgetType: PropTypes.string,\n widgetName: PropTypes.string,\n description: PropTypes.string,\n children: PropTypes.node,\n};\n\nWidgetPanelTooltip.defaultProps = {\n widgetType: '',\n widgetName: '',\n description: null,\n children: null,\n};\n\nexport default WidgetPanelTooltip;\n"],"file":"WidgetPanelTooltip.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/dashboard-core-plugins",
3
- "version": "0.11.2-package-directory.0+c1cc3fb",
3
+ "version": "0.11.2",
4
4
  "description": "Deephaven Dashboard Core Plugins",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -30,15 +30,15 @@
30
30
  "start": "cross-env NODE_ENV=development npm run watch"
31
31
  },
32
32
  "dependencies": {
33
- "@deephaven/chart": "^0.11.2-package-directory.0+c1cc3fb",
34
- "@deephaven/console": "^0.11.2-package-directory.0+c1cc3fb",
35
- "@deephaven/dashboard": "^0.11.2-package-directory.0+c1cc3fb",
36
- "@deephaven/file-explorer": "^0.11.2-package-directory.0+c1cc3fb",
37
- "@deephaven/golden-layout": "^0.11.2-package-directory.0+c1cc3fb",
38
- "@deephaven/icons": "^0.11.2-package-directory.0+c1cc3fb",
39
- "@deephaven/iris-grid": "^0.11.2-package-directory.0+c1cc3fb",
40
- "@deephaven/jsapi-shim": "^0.11.2-package-directory.0+c1cc3fb",
41
- "@deephaven/utils": "^0.11.2-package-directory.0+c1cc3fb",
33
+ "@deephaven/chart": "^0.11.2",
34
+ "@deephaven/console": "^0.11.2",
35
+ "@deephaven/dashboard": "^0.11.2",
36
+ "@deephaven/file-explorer": "^0.11.2",
37
+ "@deephaven/golden-layout": "^0.11.2",
38
+ "@deephaven/icons": "^0.11.2",
39
+ "@deephaven/iris-grid": "^0.11.2",
40
+ "@deephaven/jsapi-shim": "^0.11.2",
41
+ "@deephaven/utils": "^0.11.2",
42
42
  "@fortawesome/react-fontawesome": "^0.1.12",
43
43
  "classnames": "^2.3.1",
44
44
  "deep-equal": "^2.0.4",
@@ -63,15 +63,11 @@
63
63
  },
64
64
  "devDependencies": {
65
65
  "@babel/cli": "^7.16.0",
66
- "@deephaven/components": "^0.11.2-package-directory.0+c1cc3fb",
67
- "@deephaven/log": "^0.11.2-package-directory.0+c1cc3fb",
68
- "@deephaven/mocks": "^0.11.2-package-directory.0+c1cc3fb",
69
- "@deephaven/redux": "^0.11.2-package-directory.0+c1cc3fb",
70
- "@deephaven/tsconfig": "^0.11.2-package-directory.0+c1cc3fb",
71
- "@storybook/addon-actions": "^6.2.3",
72
- "@storybook/addon-essentials": "^6.2.3",
73
- "@storybook/addon-links": "^6.2.3",
74
- "@storybook/react": "^6.2.3",
66
+ "@deephaven/components": "^0.11.2",
67
+ "@deephaven/log": "^0.11.2",
68
+ "@deephaven/mocks": "^0.11.2",
69
+ "@deephaven/redux": "^0.11.2",
70
+ "@deephaven/tsconfig": "^0.11.2",
75
71
  "@types/react": "^17.0.2",
76
72
  "cross-env": "^7.0.2",
77
73
  "follow-redirects": ">=1.14.7",
@@ -89,5 +85,5 @@
89
85
  "publishConfig": {
90
86
  "access": "public"
91
87
  },
92
- "gitHead": "c1cc3fb15b49882e1325491308431bbf44a061e1"
88
+ "gitHead": "548192a2271314cce046487728c4ba18291d3dcd"
93
89
  }