@deephaven/dashboard-core-plugins 1.7.1 → 1.7.2-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/ChartBuilderPlugin.js.map +1 -1
  2. package/dist/ChartBuilderPluginConfig.js.map +1 -1
  3. package/dist/ChartPanelPlugin.js +1 -1
  4. package/dist/ChartPanelPlugin.js.map +1 -1
  5. package/dist/ChartPluginConfig.js.map +1 -1
  6. package/dist/ChartWidgetPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.d.ts.map +1 -1
  8. package/dist/ConsolePlugin.js +12 -2
  9. package/dist/ConsolePlugin.js.map +1 -1
  10. package/dist/FilterEvents.js.map +1 -1
  11. package/dist/FilterPlugin.js +2 -2
  12. package/dist/FilterPlugin.js.map +1 -1
  13. package/dist/FilterPluginConfig.js.map +1 -1
  14. package/dist/GridPanelPlugin.js.map +1 -1
  15. package/dist/GridPluginConfig.js.map +1 -1
  16. package/dist/GridWidgetPlugin.js.map +1 -1
  17. package/dist/LinkerPlugin.js.map +1 -1
  18. package/dist/LinkerPluginConfig.js.map +1 -1
  19. package/dist/MarkdownPlugin.js +1 -1
  20. package/dist/MarkdownPlugin.js.map +1 -1
  21. package/dist/MarkdownPluginConfig.js.map +1 -1
  22. package/dist/PandasPanelPlugin.js.map +1 -1
  23. package/dist/PandasPluginConfig.js.map +1 -1
  24. package/dist/PandasWidgetPlugin.js.map +1 -1
  25. package/dist/TablePluginWrapper.js.map +1 -1
  26. package/dist/WidgetLoaderPlugin.js.map +1 -1
  27. package/dist/WidgetLoaderPluginConfig.js.map +1 -1
  28. package/dist/controls/ControlType.js.map +1 -1
  29. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +1 -1
  30. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  31. package/dist/controls/dropdown-filter/DropdownFilter.js +4 -6
  32. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  33. package/dist/controls/input-filter/InputFilter.js +1 -2
  34. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownContainer.js +1 -2
  36. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  38. package/dist/controls/markdown/MarkdownStartPage.js +1 -2
  39. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  40. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  41. package/dist/events/ChartEvent.js +2 -0
  42. package/dist/events/ChartEvent.js.map +1 -1
  43. package/dist/events/ConsoleEvent.js.map +1 -1
  44. package/dist/events/InputFilterEvent.js +8 -0
  45. package/dist/events/InputFilterEvent.js.map +1 -1
  46. package/dist/events/IrisGridEvent.js +2 -0
  47. package/dist/events/IrisGridEvent.js.map +1 -1
  48. package/dist/events/MarkdownEvent.js.map +1 -1
  49. package/dist/events/NotebookEvent.js.map +1 -1
  50. package/dist/events/PQEvent.js.map +1 -1
  51. package/dist/events/PandasEvent.js +2 -0
  52. package/dist/events/PandasEvent.js.map +1 -1
  53. package/dist/events/TabEventMap.js.map +1 -1
  54. package/dist/events/index.js.map +1 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/linker/ColumnSelectionValidator.js.map +1 -1
  57. package/dist/linker/Linker.js +3 -3
  58. package/dist/linker/Linker.js.map +1 -1
  59. package/dist/linker/LinkerEvent.js.map +1 -1
  60. package/dist/linker/LinkerLink.js +1 -3
  61. package/dist/linker/LinkerLink.js.map +1 -1
  62. package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
  63. package/dist/linker/LinkerOverlayContent.js +3 -3
  64. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  65. package/dist/linker/LinkerUtils.d.ts +1 -1
  66. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  67. package/dist/linker/LinkerUtils.js.map +1 -1
  68. package/dist/linker/ToolType.js.map +1 -1
  69. package/dist/linker/index.js.map +1 -1
  70. package/dist/panels/ChartColumnSelectorOverlay.d.ts +0 -4
  71. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  72. package/dist/panels/ChartColumnSelectorOverlay.js +2 -7
  73. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  74. package/dist/panels/ChartFilterOverlay.d.ts +0 -12
  75. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  76. package/dist/panels/ChartFilterOverlay.js +1 -13
  77. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  78. package/dist/panels/ChartPanel.d.ts +10 -10
  79. package/dist/panels/ChartPanel.d.ts.map +1 -1
  80. package/dist/panels/ChartPanel.js +2 -4
  81. package/dist/panels/ChartPanel.js.map +1 -1
  82. package/dist/panels/ChartPanelUtils.js.map +1 -1
  83. package/dist/panels/CommandHistoryPanel.js +2 -4
  84. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  85. package/dist/panels/ConsolePanel.d.ts +2 -1
  86. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  87. package/dist/panels/ConsolePanel.js +11 -11
  88. package/dist/panels/ConsolePanel.js.map +1 -1
  89. package/dist/panels/CorePanel.js +3 -3
  90. package/dist/panels/CorePanel.js.map +1 -1
  91. package/dist/panels/DropdownFilterPanel.d.ts +2 -8
  92. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  93. package/dist/panels/DropdownFilterPanel.js +6 -6
  94. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  95. package/dist/panels/FileExplorerPanel.d.ts +1 -7
  96. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  97. package/dist/panels/FileExplorerPanel.js +1 -2
  98. package/dist/panels/FileExplorerPanel.js.map +1 -1
  99. package/dist/panels/FilterSetManager.js +12 -13
  100. package/dist/panels/FilterSetManager.js.map +1 -1
  101. package/dist/panels/FilterSetManagerPanel.d.ts +3 -3
  102. package/dist/panels/FilterSetManagerPanel.js +4 -4
  103. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  104. package/dist/panels/InputFilterPanel.d.ts +3 -3
  105. package/dist/panels/InputFilterPanel.js +4 -5
  106. package/dist/panels/InputFilterPanel.js.map +1 -1
  107. package/dist/panels/IrisGridPanel.d.ts +9 -7
  108. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  109. package/dist/panels/IrisGridPanel.js +18 -13
  110. package/dist/panels/IrisGridPanel.js.map +1 -1
  111. package/dist/panels/IrisGridPanelTooltip.js +1 -2
  112. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  113. package/dist/panels/IrisGridPanelTypes.js.map +1 -1
  114. package/dist/panels/LogPanel.d.ts +3 -3
  115. package/dist/panels/LogPanel.d.ts.map +1 -1
  116. package/dist/panels/LogPanel.js +1 -3
  117. package/dist/panels/LogPanel.js.map +1 -1
  118. package/dist/panels/MarkdownNotebook.js +3 -4
  119. package/dist/panels/MarkdownNotebook.js.map +1 -1
  120. package/dist/panels/MarkdownPanel.d.ts +3 -3
  121. package/dist/panels/MarkdownPanel.js.map +1 -1
  122. package/dist/panels/MockFileStorage.js.map +1 -1
  123. package/dist/panels/MockFileStorageTable.js +1 -1
  124. package/dist/panels/MockFileStorageTable.js.map +1 -1
  125. package/dist/panels/NotebookPanel.d.ts +7 -9
  126. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  127. package/dist/panels/NotebookPanel.js +8 -10
  128. package/dist/panels/NotebookPanel.js.map +1 -1
  129. package/dist/panels/PandasPanel.js +5 -6
  130. package/dist/panels/PandasPanel.js.map +1 -1
  131. package/dist/panels/PandasReloadButton.js +2 -3
  132. package/dist/panels/PandasReloadButton.js.map +1 -1
  133. package/dist/panels/WidgetPanel.js +2 -3
  134. package/dist/panels/WidgetPanel.js.map +1 -1
  135. package/dist/panels/WidgetPanelTooltip.js +1 -3
  136. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  137. package/dist/panels/WidgetPanelTypes.js.map +1 -1
  138. package/dist/panels/index.js.map +1 -1
  139. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  140. package/dist/prop-types/UIPropTypes.js.map +1 -1
  141. package/dist/prop-types/index.js.map +1 -1
  142. package/dist/redux/actions.js.map +1 -1
  143. package/dist/redux/index.js.map +1 -1
  144. package/dist/redux/selectors.js.map +1 -1
  145. package/dist/useChartLinker.js.map +1 -1
  146. package/dist/useConfigureRuff.js.map +1 -1
  147. package/dist/useDashboardColumnFilters.js.map +1 -1
  148. package/dist/useGridLinker.js.map +1 -1
  149. package/dist/useHydrateGrid.js.map +1 -1
  150. package/dist/useIrisGridModel.js +2 -2
  151. package/dist/useIrisGridModel.js.map +1 -1
  152. package/dist/useLoadTablePlugin.js.map +1 -1
  153. package/dist/useTablePlugin.js +1 -1
  154. package/dist/useTablePlugin.js.map +1 -1
  155. package/package.json +24 -24
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","nanoid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","Radio","Select","jsx","_jsx","jsxs","_jsxs","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","_document$querySelect","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","_defineProperty","createRef","filterSets","renameSet","undefined","some","_ref","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","_ref2","isEmptyList","eventTargetValue","applyFilterSet","onUpdateSets","getFilterState","panels","title","value","getNameError","_nameInputValue$trim","trimmedName","trim","_ref3","_nameInputValue$trim2","error","namedFilterSet","_objectSpread","selectedIndex","findIndex","_ref4","updatedModifiedFilterSets","push","prevFilterSets","_ref5","filter","_ref6","newSelectedIndex","Math","max","min","newSelectedId","_ref7","selectedSetIndex","_ref8","_ref9","selectedSet","find","_ref10","event","stopPropagation","target","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref11","_this$dropdownRef$cur","focus","_this$renameInputRef$","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","className","children","icon","mask","transform","updateSetIcon","isFlipped","kind","onClick","type","placeholder","ref","onKeyPress","spellCheck","tooltip","concat","editDropdownRef","disabled","map","_ref12","_ref13"],"sources":["../../src/panels/FilterSetManager.tsx"],"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 convenience method, not an actual a11y issue\n\nimport React, {\n type ChangeEvent,\n Component,\n type ReactNode,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport { nanoid } from 'nanoid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsEdit,\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n Button,\n CardFlip,\n RadioGroup,\n Radio,\n Select,\n} from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n panelId?: string | string[] | null;\n type: string;\n id?: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n restoreFullState?: boolean;\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState: () => FilterSetPanel[];\n onChange: (args: ChangeHandlerArgs) => void;\n onApply: (filterSet: FilterSet) => void;\n onUpdateSets: (filterSets: FilterSet[], editId?: string) => void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n restoreFullState: boolean;\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\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.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange =\n this.handleRestoreFullStateChange.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false,\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(eventTargetValue: string): void {\n this.setState({ editId: eventTargetValue });\n }\n\n handleFilterChange(eventTargetValue: string): void {\n const selectedId = eventTargetValue;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId: editId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = nanoid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n handleRestoreFullStateChange(value: string): void {\n this.setState({\n restoreFullState: value === 'true',\n });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets, restoreFullState } =\n this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = {\n ...renameSet,\n title: trimmedName,\n restoreFullState,\n };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetEdit(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title, restoreFullState = false } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div\n className=\"d-flex flex-column justify-content-center\"\n data-testid=\"edit-filter-set-container\"\n >\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet ? 'Edit set' : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n data-testid=\"rename-confirm-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n test-id=\"button-save\"\n icon={vsSave}\n />\n\n <Button\n data-testid=\"rename-cancel-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError !== undefined && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n <div className=\"form-group\">\n <RadioGroup\n aria-label=\"Restoration options\"\n onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <Radio value=\"false\">Restore only filters</Radio>\n <Radio value=\"true\">Restore full table state</Radio>\n </RadioGroup>\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"settings-card-filter-select\"\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetEdit}\n disabled={isEmptyEditList}\n icon={vsEdit}\n tooltip=\"Edit\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n &nbsp;\n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">Filter sets</div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"value-card-filter-select\"\n ref={this.dropdownRef}\n value={selectedId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n <Button\n data-testid=\"filter-apply-button\"\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","nanoid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","Radio","Select","jsx","_jsx","jsxs","_jsxs","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","_document$querySelect","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","_defineProperty","createRef","filterSets","renameSet","undefined","some","_ref","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","_ref2","isEmptyList","eventTargetValue","applyFilterSet","onUpdateSets","getFilterState","panels","title","value","getNameError","_nameInputValue$trim","trimmedName","trim","_ref3","_nameInputValue$trim2","error","namedFilterSet","_objectSpread","selectedIndex","findIndex","_ref4","updatedModifiedFilterSets","push","prevFilterSets","_ref5","filter","_ref6","newSelectedIndex","Math","max","min","newSelectedId","_ref7","selectedSetIndex","_ref8","_ref9","selectedSet","find","_ref0","event","stopPropagation","target","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref1","_this$dropdownRef$cur","focus","_this$renameInputRef$","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","className","children","icon","mask","transform","updateSetIcon","isFlipped","kind","onClick","type","placeholder","ref","onKeyPress","spellCheck","tooltip","concat","editDropdownRef","disabled","map","_ref10","_ref11"],"sources":["../../src/panels/FilterSetManager.tsx"],"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 convenience method, not an actual a11y issue\n\nimport React, {\n type ChangeEvent,\n Component,\n type ReactNode,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport { nanoid } from 'nanoid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsEdit,\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n Button,\n CardFlip,\n RadioGroup,\n Radio,\n Select,\n} from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n panelId?: string | string[] | null;\n type: string;\n id?: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n restoreFullState?: boolean;\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState: () => FilterSetPanel[];\n onChange: (args: ChangeHandlerArgs) => void;\n onApply: (filterSet: FilterSet) => void;\n onUpdateSets: (filterSets: FilterSet[], editId?: string) => void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n restoreFullState: boolean;\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\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.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange =\n this.handleRestoreFullStateChange.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false,\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(eventTargetValue: string): void {\n this.setState({ editId: eventTargetValue });\n }\n\n handleFilterChange(eventTargetValue: string): void {\n const selectedId = eventTargetValue;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId: editId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = nanoid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n handleRestoreFullStateChange(value: string): void {\n this.setState({\n restoreFullState: value === 'true',\n });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets, restoreFullState } =\n this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = {\n ...renameSet,\n title: trimmedName,\n restoreFullState,\n };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetEdit(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title, restoreFullState = false } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div\n className=\"d-flex flex-column justify-content-center\"\n data-testid=\"edit-filter-set-container\"\n >\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet ? 'Edit set' : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n data-testid=\"rename-confirm-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n test-id=\"button-save\"\n icon={vsSave}\n />\n\n <Button\n data-testid=\"rename-cancel-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError !== undefined && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n <div className=\"form-group\">\n <RadioGroup\n aria-label=\"Restoration options\"\n onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <Radio value=\"false\">Restore only filters</Radio>\n <Radio value=\"true\">Restore full table state</Radio>\n </RadioGroup>\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"settings-card-filter-select\"\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetEdit}\n disabled={isEmptyEditList}\n icon={vsEdit}\n tooltip=\"Edit\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n &nbsp;\n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">Filter sets</div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"value-card-filter-select\"\n ref={this.dropdownRef}\n value={selectedId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n <Button\n data-testid=\"filter-apply-button\"\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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","ignoreList":[]}
@@ -80,9 +80,9 @@ export declare class FilterSetManagerPanel extends Component<FilterSetManagerPan
80
80
  restoreInputFilterState(panel: PanelComponent | undefined, state: InputFilterPanelState): void;
81
81
  render(): ReactElement;
82
82
  }
83
- declare const ConnectedFilterSetManagerPanel: import("react-redux").ConnectedComponent<typeof FilterSetManagerPanel, import("react-redux").Omit<Pick<FilterSetManagerPanelProps, "glEventHub" | "glContainer" | "localDashboardId" | "filterSets" | "panelTableMap" | "dashboardOpenedPanelMap" | "setDashboardFilterSets"> & Partial<Pick<FilterSetManagerPanelProps, "panelState">> & Partial<Pick<{
84
- panelState: null;
85
- }, never>>, "filterSets" | "panelTableMap" | "dashboardOpenedPanelMap" | "setDashboardFilterSets"> & {
83
+ declare const ConnectedFilterSetManagerPanel: import("react-redux").ConnectedComponent<typeof FilterSetManagerPanel, import("react-redux").Omit<Pick<FilterSetManagerPanelProps, "glEventHub" | "glContainer" | "localDashboardId" | "filterSets" | "panelTableMap" | "dashboardOpenedPanelMap" | "setDashboardFilterSets"> & {
84
+ panelState?: PanelState | undefined;
85
+ } & {}, "filterSets" | "panelTableMap" | "dashboardOpenedPanelMap" | "setDashboardFilterSets"> & {
86
86
  localDashboardId: string;
87
87
  }>;
88
88
  export default ConnectedFilterSetManagerPanel;
@@ -92,15 +92,15 @@ export class FilterSetManagerPanel extends Component {
92
92
  switch (componentName) {
93
93
  case LayoutUtils.getComponentName(IrisGridPanel):
94
94
  {
95
- var _state;
95
+ var state;
96
96
  if (panelId != null) {
97
- _state = this.getIrisGridPanelFilters(panelId, panelState);
97
+ state = this.getIrisGridPanelFilters(panelId, panelState);
98
98
  }
99
- if (_state != null) {
99
+ if (state != null) {
100
100
  panels.push({
101
101
  panelId,
102
102
  type: componentName,
103
- state: _state
103
+ state
104
104
  });
105
105
  }
106
106
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSetManagerPanel.js","names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","jsx","_jsx","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","_ref","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","concat","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","_objectSpread","_ref2","setState","updatePanelState","filterSet","restoreFullState","_ref3","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","_ref4","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","className","componentPanel","isClonable","isRenamable","children","onChange","onApply","onUpdateSets","_defineProperty","mapStateToProps","ownProps","dashboardInputFilters","ConnectedFilterSetManagerPanel","forwardRef"],"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"sourcesContent":["import React, { Component, type ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n type PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type RootState } from '@deephaven/redux';\nimport {\n type AdvancedFilter,\n type ColumnName,\n type DehydratedIrisGridState,\n type QuickFilter,\n} from '@deephaven/iris-grid';\nimport { type GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './CorePanel';\nimport FilterSetManager, {\n type ChangeHandlerArgs,\n type FilterSet,\n type FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n type PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\nimport { type FilterChangeEvent } from '../FilterEvents';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], dh.Table>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(panel: PanelComponent): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (\n panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }\n ).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: dh.Table,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\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) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\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(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\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(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\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(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\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 {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\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(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\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(): void {\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(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\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, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\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 as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n FilterSetManagerPanelProps,\n 'dashboardOpenedPanelMap' | 'filterSets' | 'panelTableMap'\n> & {\n dashboardInputFilters: FilterChangeEvent[];\n} => {\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\nconst ConnectedFilterSetManagerPanel = connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n\nexport default ConnectedFilterSetManagerPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilterSetManagerPanel.js","names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","jsx","_jsx","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","_ref","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","concat","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","_objectSpread","_ref2","setState","updatePanelState","filterSet","restoreFullState","_ref3","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","_ref4","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","className","componentPanel","isClonable","isRenamable","children","onChange","onApply","onUpdateSets","_defineProperty","mapStateToProps","ownProps","dashboardInputFilters","ConnectedFilterSetManagerPanel","forwardRef"],"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"sourcesContent":["import React, { Component, type ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n type PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type RootState } from '@deephaven/redux';\nimport {\n type AdvancedFilter,\n type ColumnName,\n type DehydratedIrisGridState,\n type QuickFilter,\n} from '@deephaven/iris-grid';\nimport { type GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './CorePanel';\nimport FilterSetManager, {\n type ChangeHandlerArgs,\n type FilterSet,\n type FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n type PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\nimport { type FilterChangeEvent } from '../FilterEvents';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], dh.Table>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(panel: PanelComponent): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (\n panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }\n ).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: dh.Table,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\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) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\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(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\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(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\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(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\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 {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\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(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\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(): void {\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(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\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, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\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 as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n FilterSetManagerPanelProps,\n 'dashboardOpenedPanelMap' | 'filterSets' | 'panelTableMap'\n> & {\n dashboardInputFilters: FilterChangeEvent[];\n} => {\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\nconst ConnectedFilterSetManagerPanel = connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n\nexport default ConnectedFilterSetManagerPanel;\n"],"mappings":"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","ignoreList":[]}
@@ -50,9 +50,9 @@ declare class InputFilterPanel extends Component<InputFilterPanelProps, InputFil
50
50
  updateColumns(): void;
51
51
  render(): JSX.Element;
52
52
  }
53
- declare const ConnectedInputFilterPanel: import("react-redux").ConnectedComponent<typeof InputFilterPanel, import("react-redux").Omit<Pick<InputFilterPanelProps, "glEventHub" | "glContainer" | "columns"> & Partial<Pick<InputFilterPanelProps, "panelState">> & Partial<Pick<{
54
- panelState: null;
55
- }, never>>, "columns"> & {
53
+ declare const ConnectedInputFilterPanel: import("react-redux").ConnectedComponent<typeof InputFilterPanel, import("react-redux").Omit<Pick<InputFilterPanelProps, "glEventHub" | "glContainer" | "columns"> & {
54
+ panelState?: PanelState | undefined;
55
+ } & {}, "columns"> & {
56
56
  localDashboardId: string;
57
57
  }>;
58
58
  export default ConnectedInputFilterPanel;
@@ -13,8 +13,6 @@ import { emitFilterChanged } from "../FilterEvents.js";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  var INPUT_FILTER_DEBOUNCE = 250;
15
15
  class InputFilterPanel extends Component {
16
- // Have to explicitly specify displayName
17
- // otherwise it gets minified and breaks LayoutUtils.getComponentName
18
16
  constructor(props) {
19
17
  super(props);
20
18
  _defineProperty(this, "inputFilterRef", void 0);
@@ -47,7 +45,6 @@ class InputFilterPanel extends Component {
47
45
  panelState // Dehydrated panel state that can load this panel
48
46
  };
49
47
  }
50
-
51
48
  componentDidMount() {
52
49
  this.updateColumns();
53
50
  var {
@@ -121,7 +118,7 @@ class InputFilterPanel extends Component {
121
118
  }
122
119
  handleClearAllFilters() {
123
120
  var _this$inputFilterRef$;
124
- (_this$inputFilterRef$ = this.inputFilterRef.current) === null || _this$inputFilterRef$ === void 0 ? void 0 : _this$inputFilterRef$.clearFilter();
121
+ (_this$inputFilterRef$ = this.inputFilterRef.current) === null || _this$inputFilterRef$ === void 0 || _this$inputFilterRef$.clearFilter();
125
122
  }
126
123
  sendUpdate(name, type, value, timestamp) {
127
124
  var {
@@ -152,7 +149,7 @@ class InputFilterPanel extends Component {
152
149
 
153
150
  // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes
154
151
  // Setting the ref state directly triggers the onChange handler and updates the panelState
155
- (_this$inputFilterRef$2 = this.inputFilterRef.current) === null || _this$inputFilterRef$2 === void 0 ? void 0 : _this$inputFilterRef$2.setFilterState(state);
152
+ (_this$inputFilterRef$2 = this.inputFilterRef.current) === null || _this$inputFilterRef$2 === void 0 || _this$inputFilterRef$2.setFilterState(state);
156
153
  }
157
154
  updateColumns() {
158
155
  var {
@@ -221,6 +218,8 @@ _defineProperty(InputFilterPanel, "defaultProps", {
221
218
  panelState: null
222
219
  });
223
220
  _defineProperty(InputFilterPanel, "COMPONENT", 'InputFilterPanel');
221
+ // Have to explicitly specify displayName
222
+ // otherwise it gets minified and breaks LayoutUtils.getComponentName
224
223
  _defineProperty(InputFilterPanel, "displayName", 'InputFilterPanel');
225
224
  var mapStateToProps = (state, ownProps) => {
226
225
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"InputFilterPanel.js","names":["React","Component","connect","debounce","LayoutUtils","assertNotNull","Panel","InputFilter","getColumnsForDashboard","emitFilterChanged","jsx","_jsx","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","_defineProperty","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","Date","now","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","_ref","setState","_ref2","_ref3","prevTimestamp","isFlip","_this$inputFilterRef$","current","clearFilter","glEventHub","panelId","getIdFromPanel","setPanelState","_this$inputFilterRef$2","arguments","length","setFilterState","find","_ref4","render","glContainer","className","componentPanel","onClearAllFilters","isClonable","isRenamable","children","ref","onChange","mapStateToProps","ownProps","localDashboardId","ConnectedInputFilterPanel","forwardRef"],"sources":["../../src/panels/InputFilterPanel.tsx"],"sourcesContent":["import React, { Component, type RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { type RootState } from '@deephaven/redux';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport { assertNotNull } from '@deephaven/utils';\nimport Panel from './CorePanel';\nimport InputFilter, {\n type InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { getColumnsForDashboard } from '../redux';\nimport { emitFilterChanged } from '../FilterEvents';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const {\n value,\n isValueShown = false,\n name,\n type,\n timestamp = Date.now(),\n } = panelState ?? {};\n\n this.state = {\n columns: [],\n column: name != null && type != null ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps): void {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }): void {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(\n name?: string,\n type?: string,\n value?: string,\n timestamp?: number\n ): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterChanged(\n glEventHub,\n panelId,\n name != null && type != null && value != null && timestamp != null\n ? {\n name,\n type,\n value,\n timestamp,\n }\n : null\n );\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false): void {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns(): void {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render(): JSX.Element {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<InputFilterPanelProps, 'columns'> => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedInputFilterPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(InputFilterPanel);\n\nexport default ConnectedInputFilterPanel;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAwB,OAAO;AACxD,SAASC,OAAO,QAAQ,aAAa;AACrC,OAAOC,QAAQ,MAAM,iBAAiB;AAGtC,SAASC,WAAW,QAAQ,sBAAsB;AAClD,SAASC,aAAa,QAAQ,kBAAkB;AAAC,OAC1CC,KAAK;AAAA,OACLC,WAAW;AAAA,SAGTC,sBAAsB;AAAA,SACtBC,iBAAiB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE1B,IAAMC,qBAAqB,GAAG,GAAG;AA4BjC,MAAMC,gBAAgB,SAASZ,SAAS,CAGtC;EAOA;EACA;EAGAa,WAAWA,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAEb,IAAI,CAACC,YAAY,GAAGd,QAAQ,CAC1B,IAAI,CAACc,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC,EAC5BN,qBACF,CAAC;IACD,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACD,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,CAACE,cAAc,gBAAGpB,KAAK,CAACqB,SAAS,CAAC,CAAC;IAEvC,IAAM;MAAEC;IAAW,CAAC,GAAGP,KAAK;IAC5B;IACA,IAAM;MACJQ,KAAK;MACLC,YAAY,GAAG,KAAK;MACpBC,IAAI;MACJC,IAAI;MACJC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC;IACvB,CAAC,GAAGP,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,CAAC,CAAC;IAEpB,IAAI,CAACQ,KAAK,GAAG;MACXC,OAAO,EAAE,EAAE;MACXC,MAAM,EAAEP,IAAI,IAAI,IAAI,IAAIC,IAAI,IAAI,IAAI,GAAG;QAAED,IAAI;QAAEC;MAAK,CAAC,GAAGO,SAAS;MACjEV,KAAK;MACLI,SAAS;MACTH,YAAY;MACZU,UAAU,EAAE,KAAK;MACjBC,UAAU,EAAE,KAAK;MACjB;MACAb,UAAU,CAAE;IACd,CAAC;EACH;;EAEAc,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,aAAa,CAAC,CAAC;IAEpB,IAAM;MAAEL,MAAM;MAAET,KAAK;MAAEI;IAAU,CAAC,GAAG,IAAI,CAACG,KAAK;IAC/C,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClB,IAAM;QAAEP,IAAI;QAAEC;MAAK,CAAC,GAAGM,MAAM;MAC7B,IAAI,CAACM,UAAU,CAACb,IAAI,EAAEC,IAAI,EAAEH,KAAK,EAAEI,SAAS,CAAC;IAC/C;EACF;EAEAY,kBAAkBA,CAACC,SAAgC,EAAQ;IACzD,IAAM;MAAET;IAAQ,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC9B,IAAIgB,OAAO,KAAKS,SAAS,CAACT,OAAO,EAAE;MACjC,IAAI,CAACM,aAAa,CAAC,CAAC;IACtB;EACF;EAIApB,YAAYA,CAAAwB,IAAA,EAQH;IAAA,IARI;MACXT,MAAM;MACNR,YAAY,GAAG,KAAK;MACpBD;IAKF,CAAC,GAAAkB,IAAA;IACC,IAAIhB,IAAwB;IAC5B,IAAIC,IAAwB;IAC5B,IAAIM,MAAM,IAAI,IAAI,EAAE;MAClB,CAAC;QAAEP,IAAI;QAAEC;MAAK,CAAC,GAAGM,MAAM;IAC1B;IACA,IAAIM,UAAU,GAAG,IAAI;IACrB,IAAIX,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAACa,QAAQ,CACXC,KAAA,IAAsE;MAAA,IAAAC,KAAA;MAAA,IAArE;QAAEtB,UAAU;QAAEK,SAAS,EAAEkB,aAAa;QAAEX,UAAU;QAAEC;MAAW,CAAC,GAAAQ,KAAA;MAC/D;MACA,IAAMG,MAAM,GACVxB,UAAU,IAAI,IAAI,IAClBE,YAAY,KAAKF,UAAU,CAACE,YAAY,IACxCC,IAAI,KAAKH,UAAU,CAACG,IAAI,IACxBC,IAAI,KAAKJ,UAAU,CAACI,IAAI,IACxBH,KAAK,KAAKD,UAAU,CAACC,KAAK;MAC5Be,UAAU,IAAAM,KAAA,GACP,CAACT,UAAU,IAAIX,YAAY,KAAK,CAACsB,MAAM,IAAI,CAACZ,UAAU,CAAC,cAAAU,KAAA,cAAAA,KAAA,GAAK,KAAK;MAEpE,IAAI,CAACN,UAAU,EAAE;QACfX,SAAS,GAAGkB,aAAa;MAC3B;MAEA,OAAO;QACLvB,UAAU,EAAE;UACVE,YAAY;UACZC,IAAI;UACJC,IAAI;UACJH,KAAK;UACLI;QACF,CAAC;QACDA,SAAS;QACTO,UAAU,EAAEY,MAAM;QAClBX,UAAU,EAAE;MACd,CAAC;IACH,CAAC,EACD,MAAM;MACJ,IAAIG,UAAU,EAAE;QACd,IAAI,CAACA,UAAU,CAACb,IAAI,EAAEC,IAAI,EAAEH,KAAK,EAAEI,SAAS,CAAC;MAC/C;IACF,CACF,CAAC;EACH;EAEAR,qBAAqBA,CAAA,EAAS;IAAA,IAAA4B,qBAAA;IAC5B,CAAAA,qBAAA,OAAI,CAAC3B,cAAc,CAAC4B,OAAO,cAAAD,qBAAA,uBAA3BA,qBAAA,CAA6BE,WAAW,CAAC,CAAC;EAC5C;EAEAX,UAAUA,CACRb,IAAa,EACbC,IAAa,EACbH,KAAc,EACdI,SAAkB,EACZ;IACN,IAAM;MAAEuB;IAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;IACjC,IAAMoC,OAAO,GAAG/C,WAAW,CAACgD,cAAc,CAAC,IAAI,CAAC;IAChD/C,aAAa,CAAC8C,OAAO,CAAC;IACtB1C,iBAAiB,CACfyC,UAAU,EACVC,OAAO,EACP1B,IAAI,IAAI,IAAI,IAAIC,IAAI,IAAI,IAAI,IAAIH,KAAK,IAAI,IAAI,IAAII,SAAS,IAAI,IAAI,GAC9D;MACEF,IAAI;MACJC,IAAI;MACJH,KAAK;MACLI;IACF,CAAC,GACD,IACN,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACE0B,aAAaA,CAACvB,KAAiB,EAA4B;IAAA,IAAAwB,sBAAA;IAAA,IAA1BhB,UAAU,GAAAiB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAtB,SAAA,GAAAsB,SAAA,MAAG,KAAK;IACjD;IACA,IAAI,CAACb,QAAQ,CAAC;MAAEP,UAAU,EAAE,CAACG;IAAW,CAAC,CAAC;;IAE1C;IACA;IACA,CAAAgB,sBAAA,OAAI,CAAClC,cAAc,CAAC4B,OAAO,cAAAM,sBAAA,uBAA3BA,sBAAA,CAA6BG,cAAc,CAAC3B,KAAK,CAAC;EACpD;EAEAO,aAAaA,CAAA,EAAS;IACpB,IAAM;MAAEN;IAAQ,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC9B,IAAIgB,OAAO,IAAI,IAAI,EAAE;MACnB;IACF;IAEA,IAAI,CAACW,QAAQ,CAACZ,KAAK,IAAI;MACrB,IAAM;QAAEE;MAAO,CAAC,GAAGF,KAAK;MAExB,IAAIE,MAAM,IAAI,IAAI,IAAID,OAAO,CAACyB,MAAM,GAAG,CAAC,EAAE;QACxC,OAAO;UACLzB,OAAO,EAAE,CAAC,GAAGA,OAAO,CAAC;UACrBC,MAAM,EAAED,OAAO,CAAC,CAAC;QACnB,CAAC;MACH;MAEA,IACEC,MAAM,IAAI,IAAI,IACd,CAACD,OAAO,CAAC2B,IAAI,CACXC,KAAA;QAAA,IAAC;UAAElC,IAAI;UAAEC;QAAK,CAAC,GAAAiC,KAAA;QAAA,OAAK3B,MAAM,CAACP,IAAI,KAAKA,IAAI,IAAIO,MAAM,CAACN,IAAI,KAAKA,IAAI;MAAA,CAClE,CAAC,EACD;QACA,OAAO;UAAEK,OAAO,EAAE,CAAC,GAAGA,OAAO,EAAEC,MAAM;QAAE,CAAC;MAC1C;MAEA,OAAO;QAAED,OAAO,EAAE,CAAC,GAAGA,OAAO;MAAE,CAAC;IAClC,CAAC,CAAC;EACJ;EAEA6B,MAAMA,CAAA,EAAgB;IACpB,IAAM;MAAEC,WAAW;MAAEX;IAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;IAC9C,IAAM;MAAEiB,MAAM;MAAED,OAAO;MAAEP,YAAY;MAAED;IAAM,CAAC,GAAG,IAAI,CAACO,KAAK;IAC3D,oBACEnB,IAAA,CAACL,KAAK;MACJwD,SAAS,EAAC,yBAAyB;MACnCC,cAAc,EAAE,IAAK;MACrBF,WAAW,EAAEA,WAAY;MACzBX,UAAU,EAAEA,UAAW;MACvBc,iBAAiB,EAAE,IAAI,CAAC7C,qBAAsB;MAC9C8C,UAAU;MACVC,WAAW;MAAAC,QAAA,eAEXxD,IAAA,CAACJ,WAAW;QACV6D,GAAG,EAAE,IAAI,CAAChD,cAAe;QACzBY,MAAM,EAAEA,MAAO;QACfD,OAAO,EAAEA,OAAQ;QACjBsC,QAAQ,EAAE,IAAI,CAACpD,YAAa;QAC5BO,YAAY,EAAEA,YAAa;QAC3BD,KAAK,EAAEA;MAAM,CACd;IAAC,CACG,CAAC;EAEZ;AACF;AAACP,eAAA,CAtNKH,gBAAgB,kBAIE;EACpBS,UAAU,EAAE;AACd,CAAC;AAAAN,eAAA,CANGH,gBAAgB,eAQD,kBAAkB;AAAAG,eAAA,CARjCH,gBAAgB,iBAYC,kBAAkB;AA4MzC,IAAMyD,eAAe,GAAGA,CACtBxC,KAAgB,EAChByC,QAAsC,KACK;EAC3C,IAAM;IAAEC;EAAiB,CAAC,GAAGD,QAAQ;EAErC,OAAO;IACLxC,OAAO,EAAEvB,sBAAsB,CAACsB,KAAK,EAAE0C,gBAAgB;EACzD,CAAC;AACH,CAAC;AAED,IAAMC,yBAAyB,GAAGvE,OAAO,CAACoE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;EACrEI,UAAU,EAAE;AACd,CAAC,CAAC,CAAC7D,gBAAgB,CAAC;AAEpB,eAAe4D,yBAAyB"}
1
+ {"version":3,"file":"InputFilterPanel.js","names":["React","Component","connect","debounce","LayoutUtils","assertNotNull","Panel","InputFilter","getColumnsForDashboard","emitFilterChanged","jsx","_jsx","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","_defineProperty","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","Date","now","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","_ref","setState","_ref2","_ref3","prevTimestamp","isFlip","_this$inputFilterRef$","current","clearFilter","glEventHub","panelId","getIdFromPanel","setPanelState","_this$inputFilterRef$2","arguments","length","setFilterState","find","_ref4","render","glContainer","className","componentPanel","onClearAllFilters","isClonable","isRenamable","children","ref","onChange","mapStateToProps","ownProps","localDashboardId","ConnectedInputFilterPanel","forwardRef"],"sources":["../../src/panels/InputFilterPanel.tsx"],"sourcesContent":["import React, { Component, type RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { type RootState } from '@deephaven/redux';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport { assertNotNull } from '@deephaven/utils';\nimport Panel from './CorePanel';\nimport InputFilter, {\n type InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { getColumnsForDashboard } from '../redux';\nimport { emitFilterChanged } from '../FilterEvents';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const {\n value,\n isValueShown = false,\n name,\n type,\n timestamp = Date.now(),\n } = panelState ?? {};\n\n this.state = {\n columns: [],\n column: name != null && type != null ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps): void {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }): void {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(\n name?: string,\n type?: string,\n value?: string,\n timestamp?: number\n ): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterChanged(\n glEventHub,\n panelId,\n name != null && type != null && value != null && timestamp != null\n ? {\n name,\n type,\n value,\n timestamp,\n }\n : null\n );\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false): void {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns(): void {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render(): JSX.Element {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<InputFilterPanelProps, 'columns'> => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedInputFilterPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(InputFilterPanel);\n\nexport default ConnectedInputFilterPanel;\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import React, { PureComponent, type ReactElement, type ReactNode, type RefObject } from 'react';
2
2
  import { type DashboardPanelProps, type PanelComponent } from '@deephaven/dashboard';
3
- import { type IrisGridType, IrisGridModel, type ColumnName, type PendingDataMap, type InputFilter, type IrisGridThemeType, type ReadonlyAdvancedFilterMap, type AggregationSettings, type AdvancedSettingsType, type UIRollupConfig, type UIRow, type ReadonlyQuickFilterMap, type FilterMap, type QuickFilter, type AdvancedFilter, type SidebarFormattingRule, type IrisGridState, type ChartBuilderSettings, type DehydratedIrisGridState, type DehydratedIrisGridPanelState, type ColumnHeaderGroup, type IrisGridContextMenuData, type PartitionConfig } from '@deephaven/iris-grid';
3
+ import { type IrisGridType, IrisGridModel, type ColumnName, type PendingDataMap, type InputFilter, type IrisGridThemeType, type ReadonlyAdvancedFilterMap, type AggregationSettings, type AdvancedSettingsType, type UIRollupConfig, type UIRow, type ReadonlyQuickFilterMap, type FilterMap, type QuickFilter, type AdvancedFilter, type SidebarFormattingRule, type IrisGridState, type ChartBuilderSettings, type DehydratedIrisGridState, type DehydratedIrisGridPanelState, type ColumnHeaderGroup, type IrisGridContextMenuData, type PartitionConfig, type IrisGridRenderer, type MouseHandlersProp } from '@deephaven/iris-grid';
4
4
  import { type RowDataMap, type FormattingRule } from '@deephaven/jsapi-utils';
5
5
  import { type User, type WorkspaceSettings } from '@deephaven/redux';
6
6
  import { type CancelablePromise, type EventT } from '@deephaven/utils';
@@ -43,7 +43,9 @@ export interface OwnProps extends DashboardPanelProps {
43
43
  getDownloadWorker?: () => Promise<ServiceWorker>;
44
44
  /** Load a plugin defined by the table */
45
45
  loadPlugin: (pluginName: string) => TablePluginComponent;
46
- theme?: IrisGridThemeType;
46
+ theme?: Partial<IrisGridThemeType> & Record<string, unknown>;
47
+ mouseHandlers?: MouseHandlersProp;
48
+ renderer?: IrisGridRenderer;
47
49
  }
48
50
  interface StateProps {
49
51
  inputFilters: InputFilter[];
@@ -120,7 +122,7 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
120
122
  getTableName(): string;
121
123
  getGridInputFilters: (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) => InputFilter[];
122
124
  getAlwaysFetchColumns: (dashboardLinks: readonly Link[], pluginFetchColumns: readonly string[]) => string[];
123
- getPluginContent: (Plugin: TablePluginComponent | undefined, model: IrisGridModel | undefined, pluginState: unknown) => JSX.Element | null;
125
+ getPluginContent: (Plugin: TablePluginComponent | undefined, model: IrisGridModel | undefined, pluginState: unknown) => import("react/jsx-runtime").JSX.Element | null;
124
126
  getDehydratedIrisGridPanelState: (model: IrisGridModel, isSelectingPartition: boolean, partitions: (string | null)[], advancedSettings: Map<AdvancedSettingsType, boolean>) => DehydratedIrisGridPanelState;
125
127
  getCachedPanelState: (irisGridPanelState: PanelState["irisGridPanelState"], irisGridState: PanelState["irisGridState"], gridState: PanelState["gridState"], pluginState: PanelState["pluginState"]) => PanelState;
126
128
  getWidgetPanelDescriptor: (metadata: IrisGridPanelProps["metadata"], description?: string) => WidgetPanelDescriptor;
@@ -180,9 +182,9 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
180
182
  updateGrid(): void;
181
183
  render(): ReactElement;
182
184
  }
183
- declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glEventHub" | "children" | "glContainer" | "metadata" | "panelState" | "makeModel" | "localDashboardId" | "theme" | "getDownloadWorker" | "loadPlugin" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & Partial<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "onStateChange" | "onPanelStateUpdate">> & Partial<Pick<{
184
- onStateChange: () => void;
185
- onPanelStateUpdate: () => void;
186
- }, never>>, "user" | "settings" | "inputFilters" | "links" | "columnSelectionValidator"> & OwnProps>;
185
+ declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glEventHub" | "children" | "glContainer" | "metadata" | "makeModel" | "localDashboardId" | "panelState" | "theme" | "getDownloadWorker" | "loadPlugin" | "mouseHandlers" | "renderer" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & {
186
+ onStateChange?: ((irisGridState: IrisGridState, gridState: GridState) => void) | undefined;
187
+ onPanelStateUpdate?: ((panelState: PanelState) => void) | undefined;
188
+ } & {}, "user" | "settings" | "inputFilters" | "links" | "columnSelectionValidator"> & OwnProps>;
187
189
  export default ConnectedIrisGridPanel;
188
190
  //# sourceMappingURL=IrisGridPanel.d.ts.map