@deephaven/dashboard-core-plugins 0.5.2-matplotlib.3 → 0.6.1-demo.8

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 (354) hide show
  1. package/dist/{src/ChartPlugin.d.ts → ChartPlugin.d.ts} +0 -0
  2. package/dist/ChartPlugin.d.ts.map +1 -0
  3. package/dist/ChartPlugin.js +25 -22
  4. package/dist/ChartPlugin.js.map +1 -1
  5. package/dist/{src/ConsolePlugin.d.ts → ConsolePlugin.d.ts} +0 -0
  6. package/dist/ConsolePlugin.d.ts.map +1 -0
  7. package/dist/ConsolePlugin.js +141 -139
  8. package/dist/ConsolePlugin.js.map +1 -1
  9. package/dist/{src/FilterPlugin.d.ts → FilterPlugin.d.ts} +0 -0
  10. package/dist/FilterPlugin.d.ts.map +1 -0
  11. package/dist/FilterPlugin.js +114 -116
  12. package/dist/FilterPlugin.js.map +1 -1
  13. package/dist/{src/GridPlugin.d.ts → GridPlugin.d.ts} +0 -0
  14. package/dist/GridPlugin.d.ts.map +1 -0
  15. package/dist/GridPlugin.js +29 -26
  16. package/dist/GridPlugin.js.map +1 -1
  17. package/dist/{src/LinkerPlugin.d.ts → LinkerPlugin.d.ts} +0 -0
  18. package/dist/LinkerPlugin.d.ts.map +1 -0
  19. package/dist/LinkerPlugin.js +7 -5
  20. package/dist/LinkerPlugin.js.map +1 -1
  21. package/dist/{src/MarkdownPlugin.d.ts → MarkdownPlugin.d.ts} +0 -0
  22. package/dist/MarkdownPlugin.d.ts.map +1 -0
  23. package/dist/MarkdownPlugin.js +44 -45
  24. package/dist/MarkdownPlugin.js.map +1 -1
  25. package/dist/PandasPlugin.d.ts +8 -0
  26. package/dist/PandasPlugin.d.ts.map +1 -0
  27. package/dist/PandasPlugin.js +12 -12
  28. package/dist/PandasPlugin.js.map +1 -1
  29. package/dist/{src/controls → controls}/ControlType.d.ts +2 -0
  30. package/dist/controls/ControlType.d.ts.map +1 -0
  31. package/dist/controls/ControlType.js +5 -5
  32. package/dist/controls/ControlType.js.map +1 -1
  33. package/dist/{src/controls → controls}/dropdown-filter/DropdownFilter.d.ts +6 -0
  34. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -0
  35. package/dist/controls/dropdown-filter/DropdownFilter.js +356 -394
  36. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  37. package/dist/{src/controls → controls}/input-filter/InputFilter.d.ts +6 -0
  38. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -0
  39. package/dist/controls/input-filter/InputFilter.js +256 -270
  40. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  41. package/dist/{src/controls → controls}/markdown/MarkdownContainer.d.ts +0 -0
  42. package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -0
  43. package/dist/controls/markdown/MarkdownContainer.js +18 -56
  44. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  45. package/dist/{src/controls → controls}/markdown/MarkdownEditor.d.ts +0 -0
  46. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -0
  47. package/dist/controls/markdown/MarkdownEditor.js +36 -75
  48. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  49. package/dist/{src/controls → controls}/markdown/MarkdownStartPage.d.ts +0 -0
  50. package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -0
  51. package/dist/controls/markdown/MarkdownStartPage.js +93 -133
  52. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  53. package/dist/{src/controls → controls}/markdown/MarkdownUtils.d.ts +0 -0
  54. package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -0
  55. package/dist/controls/markdown/MarkdownUtils.js +17 -32
  56. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  57. package/dist/{src/events → events}/ChartEvent.d.ts +0 -0
  58. package/dist/events/ChartEvent.d.ts.map +1 -0
  59. package/dist/events/ChartEvent.js +1 -5
  60. package/dist/events/ChartEvent.js.map +1 -1
  61. package/dist/{src/events → events}/ConsoleEvent.d.ts +0 -0
  62. package/dist/events/ConsoleEvent.d.ts.map +1 -0
  63. package/dist/events/ConsoleEvent.js +1 -5
  64. package/dist/events/ConsoleEvent.js.map +1 -1
  65. package/dist/{src/events → events}/ControlEvent.d.ts +0 -0
  66. package/dist/events/ControlEvent.d.ts.map +1 -0
  67. package/dist/events/ControlEvent.js +1 -5
  68. package/dist/events/ControlEvent.js.map +1 -1
  69. package/dist/{src/events → events}/InputFilterEvent.d.ts +2 -0
  70. package/dist/events/InputFilterEvent.d.ts.map +1 -0
  71. package/dist/events/InputFilterEvent.js +3 -5
  72. package/dist/events/InputFilterEvent.js.map +1 -1
  73. package/dist/{src/events → events}/IrisGridEvent.d.ts +0 -0
  74. package/dist/events/IrisGridEvent.d.ts.map +1 -0
  75. package/dist/events/IrisGridEvent.js +1 -5
  76. package/dist/events/IrisGridEvent.js.map +1 -1
  77. package/dist/{src/events → events}/MarkdownEvent.d.ts +0 -0
  78. package/dist/events/MarkdownEvent.d.ts.map +1 -0
  79. package/dist/{src/events → events}/NotebookEvent.d.ts +0 -0
  80. package/dist/events/NotebookEvent.d.ts.map +1 -0
  81. package/dist/events/NotebookEvent.js +1 -5
  82. package/dist/events/NotebookEvent.js.map +1 -1
  83. package/dist/{src/events → events}/PQEvent.d.ts +0 -0
  84. package/dist/events/PQEvent.d.ts.map +1 -0
  85. package/dist/events/PQEvent.js +1 -5
  86. package/dist/events/PQEvent.js.map +1 -1
  87. package/dist/{src/events → events}/PandasEvent.d.ts +0 -0
  88. package/dist/events/PandasEvent.d.ts.map +1 -0
  89. package/dist/events/PandasEvent.js +1 -5
  90. package/dist/events/PandasEvent.js.map +1 -1
  91. package/dist/{src/events → events}/TabEvent.d.ts +0 -0
  92. package/dist/events/TabEvent.d.ts.map +1 -0
  93. package/dist/events/TabEvent.js +1 -5
  94. package/dist/events/TabEvent.js.map +1 -1
  95. package/dist/{dist/events → events}/index.d.ts +0 -1
  96. package/dist/{dist/events → events}/index.d.ts.map +1 -1
  97. package/dist/events/index.js +9 -10
  98. package/dist/events/index.js.map +1 -1
  99. package/dist/{src/index.d.ts → index.d.ts} +0 -1
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +10 -11
  102. package/dist/index.js.map +1 -1
  103. package/dist/{src/linker → linker}/Linker.d.ts +1 -1
  104. package/dist/linker/Linker.d.ts.map +1 -0
  105. package/dist/linker/Linker.js +594 -606
  106. package/dist/linker/Linker.js.map +1 -1
  107. package/dist/{src/linker → linker}/LinkerLink.d.ts +0 -0
  108. package/dist/linker/LinkerLink.d.ts.map +1 -0
  109. package/dist/linker/LinkerLink.js +92 -126
  110. package/dist/linker/LinkerLink.js.map +1 -1
  111. package/dist/{src/linker → linker}/LinkerOverlayContent.d.ts +0 -0
  112. package/dist/linker/LinkerOverlayContent.d.ts.map +1 -0
  113. package/dist/linker/LinkerOverlayContent.js +162 -220
  114. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  115. package/dist/{src/linker → linker}/LinkerUtils.d.ts +0 -0
  116. package/dist/linker/LinkerUtils.d.ts.map +1 -0
  117. package/dist/linker/LinkerUtils.js +105 -114
  118. package/dist/linker/LinkerUtils.js.map +1 -1
  119. package/dist/{src/linker → linker}/ToolType.d.ts +0 -0
  120. package/dist/{src/linker → linker}/ToolType.d.ts.map +1 -1
  121. package/dist/{src/panels → panels}/ChartColumnSelectorOverlay.d.ts +0 -0
  122. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -0
  123. package/dist/panels/ChartColumnSelectorOverlay.js +19 -25
  124. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  125. package/dist/{src/panels → panels}/ChartFilterOverlay.d.ts +0 -0
  126. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -0
  127. package/dist/panels/ChartFilterOverlay.js +18 -24
  128. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  129. package/dist/{src/panels → panels}/ChartPanel.d.ts +3 -0
  130. package/dist/panels/ChartPanel.d.ts.map +1 -0
  131. package/dist/panels/ChartPanel.js +839 -873
  132. package/dist/panels/ChartPanel.js.map +1 -1
  133. package/dist/{src/panels → panels}/CommandHistoryPanel.d.ts +0 -0
  134. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -0
  135. package/dist/panels/CommandHistoryPanel.js +160 -186
  136. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  137. package/dist/{src/panels → panels}/ConsolePanel.d.ts +1 -1
  138. package/dist/panels/ConsolePanel.d.ts.map +1 -0
  139. package/dist/panels/ConsolePanel.js +327 -374
  140. package/dist/panels/ConsolePanel.js.map +1 -1
  141. package/dist/{src/panels → panels}/DropdownFilterPanel.d.ts +6 -0
  142. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -0
  143. package/dist/panels/DropdownFilterPanel.js +537 -566
  144. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  145. package/dist/{src/panels → panels}/FileExplorerPanel.d.ts +6 -1
  146. package/dist/panels/FileExplorerPanel.d.ts.map +1 -0
  147. package/dist/panels/FileExplorerPanel.js +208 -210
  148. package/dist/panels/FileExplorerPanel.js.map +1 -1
  149. package/dist/panels/FilterSetManager.css +111 -0
  150. package/dist/panels/FilterSetManager.css.map +1 -0
  151. package/dist/panels/FilterSetManager.d.ts +66 -0
  152. package/dist/panels/FilterSetManager.d.ts.map +1 -0
  153. package/dist/panels/FilterSetManager.js +732 -0
  154. package/dist/panels/FilterSetManager.js.map +1 -0
  155. package/dist/panels/FilterSetManagerPanel.css +33 -0
  156. package/dist/panels/FilterSetManagerPanel.css.map +1 -0
  157. package/dist/panels/FilterSetManagerPanel.d.ts +69 -0
  158. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -0
  159. package/dist/panels/FilterSetManagerPanel.js +383 -0
  160. package/dist/panels/FilterSetManagerPanel.js.map +1 -0
  161. package/dist/{src/panels → panels}/InputFilterPanel.d.ts +7 -0
  162. package/dist/panels/InputFilterPanel.d.ts.map +1 -0
  163. package/dist/panels/InputFilterPanel.js +198 -206
  164. package/dist/panels/InputFilterPanel.js.map +1 -1
  165. package/dist/{src/panels → panels}/IrisGridPanel.d.ts +11 -3
  166. package/dist/panels/IrisGridPanel.d.ts.map +1 -0
  167. package/dist/panels/IrisGridPanel.js +779 -771
  168. package/dist/panels/IrisGridPanel.js.map +1 -1
  169. package/dist/{src/panels → panels}/LogPanel.d.ts +0 -0
  170. package/dist/panels/LogPanel.d.ts.map +1 -0
  171. package/dist/panels/LogPanel.js +80 -116
  172. package/dist/panels/LogPanel.js.map +1 -1
  173. package/dist/panels/MarkdownNotebookContainer.d.ts +21 -0
  174. package/dist/panels/MarkdownNotebookContainer.d.ts.map +1 -0
  175. package/dist/panels/MarkdownNotebookContainer.js +35 -0
  176. package/dist/panels/MarkdownNotebookContainer.js.map +1 -0
  177. package/dist/panels/MarkdownNotebookEditor.d.ts +46 -0
  178. package/dist/panels/MarkdownNotebookEditor.d.ts.map +1 -0
  179. package/dist/panels/MarkdownNotebookEditor.js +257 -0
  180. package/dist/panels/MarkdownNotebookEditor.js.map +1 -0
  181. package/dist/panels/MarkdownNotebookPanel.css +127 -0
  182. package/dist/panels/MarkdownNotebookPanel.css.map +1 -0
  183. package/dist/panels/MarkdownNotebookPanel.d.ts +91 -0
  184. package/dist/panels/MarkdownNotebookPanel.d.ts.map +1 -0
  185. package/dist/panels/MarkdownNotebookPanel.js +446 -0
  186. package/dist/panels/MarkdownNotebookPanel.js.map +1 -0
  187. package/dist/{src/panels → panels}/MarkdownPanel.d.ts +0 -0
  188. package/dist/panels/MarkdownPanel.d.ts.map +1 -0
  189. package/dist/panels/MarkdownPanel.js +165 -199
  190. package/dist/panels/MarkdownPanel.js.map +1 -1
  191. package/dist/{src/panels → panels}/NotebookPanel.d.ts +3 -1
  192. package/dist/panels/NotebookPanel.d.ts.map +1 -0
  193. package/dist/panels/NotebookPanel.js +870 -862
  194. package/dist/panels/NotebookPanel.js.map +1 -1
  195. package/dist/{src/panels → panels}/PandasPanel.d.ts +0 -0
  196. package/dist/panels/PandasPanel.d.ts.map +1 -0
  197. package/dist/panels/PandasPanel.js +56 -90
  198. package/dist/panels/PandasPanel.js.map +1 -1
  199. package/dist/{src/panels → panels}/Panel.d.ts +0 -0
  200. package/dist/panels/Panel.d.ts.map +1 -0
  201. package/dist/panels/Panel.js +282 -313
  202. package/dist/panels/Panel.js.map +1 -1
  203. package/dist/{src/panels → panels}/PanelContextMenu.d.ts +0 -0
  204. package/dist/panels/PanelContextMenu.d.ts.map +1 -0
  205. package/dist/panels/PanelContextMenu.js +107 -158
  206. package/dist/panels/PanelContextMenu.js.map +1 -1
  207. package/dist/{src/panels → panels}/RenameDialog.d.ts +0 -0
  208. package/dist/panels/RenameDialog.d.ts.map +1 -0
  209. package/dist/panels/RenameDialog.js +144 -172
  210. package/dist/panels/RenameDialog.js.map +1 -1
  211. package/dist/{src/panels → panels}/Shortcuts.d.ts +0 -0
  212. package/dist/panels/Shortcuts.d.ts.map +1 -0
  213. package/dist/panels/Shortcuts.js +1 -1
  214. package/dist/panels/Shortcuts.js.map +1 -1
  215. package/dist/{src/panels → panels}/WidgetPanel.d.ts +0 -0
  216. package/dist/panels/WidgetPanel.d.ts.map +1 -0
  217. package/dist/panels/WidgetPanel.js +133 -163
  218. package/dist/panels/WidgetPanel.js.map +1 -1
  219. package/dist/{src/panels → panels}/WidgetPanelTooltip.d.ts +0 -0
  220. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -0
  221. package/dist/panels/WidgetPanelTooltip.js +7 -5
  222. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  223. package/dist/{src/panels → panels}/index.d.ts +1 -1
  224. package/dist/{src/events → panels}/index.d.ts.map +1 -1
  225. package/dist/panels/index.js +16 -16
  226. package/dist/panels/index.js.map +1 -1
  227. package/dist/{src/prop-types → prop-types}/CommonPropTypes.d.ts +0 -0
  228. package/dist/prop-types/CommonPropTypes.d.ts.map +1 -0
  229. package/dist/prop-types/CommonPropTypes.js +4 -8
  230. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  231. package/dist/{src/prop-types → prop-types}/UIPropTypes.d.ts +0 -0
  232. package/dist/prop-types/UIPropTypes.d.ts.map +1 -0
  233. package/dist/prop-types/UIPropTypes.js +6 -6
  234. package/dist/prop-types/UIPropTypes.js.map +1 -1
  235. package/dist/{src/prop-types → prop-types}/index.d.ts +0 -0
  236. package/dist/{src/panels → prop-types}/index.d.ts.map +1 -1
  237. package/dist/prop-types/index.js +2 -2
  238. package/dist/prop-types/index.js.map +1 -1
  239. package/dist/{src/redux → redux}/actionTypes.d.ts +0 -0
  240. package/dist/redux/actionTypes.d.ts.map +1 -0
  241. package/dist/{src/redux → redux}/actions.d.ts +1 -0
  242. package/dist/redux/actions.d.ts.map +1 -0
  243. package/dist/redux/actions.js +33 -54
  244. package/dist/redux/actions.js.map +1 -1
  245. package/dist/{src/redux → redux}/index.d.ts +0 -0
  246. package/dist/redux/index.d.ts.map +1 -0
  247. package/dist/redux/index.js +6 -21
  248. package/dist/redux/index.js.map +1 -1
  249. package/dist/{src/redux → redux}/reducers/index.d.ts +0 -0
  250. package/dist/{src/prop-types → redux/reducers}/index.d.ts.map +1 -1
  251. package/dist/redux/reducers/index.js +2 -2
  252. package/dist/redux/reducers/index.js.map +1 -1
  253. package/dist/{src/redux → redux}/reducers/sessionWrapper.d.ts +0 -0
  254. package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -0
  255. package/dist/redux/reducers/sessionWrapper.js +1 -1
  256. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  257. package/dist/{src/redux → redux}/selectors.d.ts +1 -0
  258. package/dist/redux/selectors.d.ts.map +1 -0
  259. package/dist/redux/selectors.js +22 -18
  260. package/dist/redux/selectors.js.map +1 -1
  261. package/dist/tsconfig.tsbuildinfo +1 -1
  262. package/package.json +27 -54
  263. package/dist/MatPlotLibPlugin.js +0 -45
  264. package/dist/MatPlotLibPlugin.js.map +0 -1
  265. package/dist/dist/events/ChartEvent.d.ts +0 -3
  266. package/dist/dist/events/ChartEvent.d.ts.map +0 -1
  267. package/dist/dist/events/ConsoleEvent.d.ts +0 -3
  268. package/dist/dist/events/ConsoleEvent.d.ts.map +0 -1
  269. package/dist/dist/events/ControlEvent.d.ts +0 -3
  270. package/dist/dist/events/ControlEvent.d.ts.map +0 -1
  271. package/dist/dist/events/InputFilterEvent.d.ts +0 -3
  272. package/dist/dist/events/InputFilterEvent.d.ts.map +0 -1
  273. package/dist/dist/events/IrisGridEvent.d.ts +0 -3
  274. package/dist/dist/events/IrisGridEvent.d.ts.map +0 -1
  275. package/dist/dist/events/MarkdownEvent.d.ts +0 -5
  276. package/dist/dist/events/MarkdownEvent.d.ts.map +0 -1
  277. package/dist/dist/events/MatPlotLibEvent.d.ts +0 -3
  278. package/dist/dist/events/MatPlotLibEvent.d.ts.map +0 -1
  279. package/dist/dist/events/NotebookEvent.d.ts +0 -3
  280. package/dist/dist/events/NotebookEvent.d.ts.map +0 -1
  281. package/dist/dist/events/PandasEvent.d.ts +0 -3
  282. package/dist/dist/events/PandasEvent.d.ts.map +0 -1
  283. package/dist/dist/events/TabEvent.d.ts +0 -3
  284. package/dist/dist/events/TabEvent.d.ts.map +0 -1
  285. package/dist/events/MatPlotLibEvent.js +0 -12
  286. package/dist/events/MatPlotLibEvent.js.map +0 -1
  287. package/dist/panels/MatPlotLibPanel.css +0 -11
  288. package/dist/panels/MatPlotLibPanel.css.map +0 -1
  289. package/dist/panels/MatPlotLibPanel.js +0 -124
  290. package/dist/panels/MatPlotLibPanel.js.map +0 -1
  291. package/dist/src/ChartPlugin.d.ts.map +0 -1
  292. package/dist/src/ConsolePlugin.d.ts.map +0 -1
  293. package/dist/src/FilterPlugin.d.ts.map +0 -1
  294. package/dist/src/GridPlugin.d.ts.map +0 -1
  295. package/dist/src/LinkerPlugin.d.ts.map +0 -1
  296. package/dist/src/MarkdownPlugin.d.ts.map +0 -1
  297. package/dist/src/MatPlotLibPlugin.d.ts +0 -5
  298. package/dist/src/MatPlotLibPlugin.d.ts.map +0 -1
  299. package/dist/src/PandasPlugin.d.ts +0 -5
  300. package/dist/src/PandasPlugin.d.ts.map +0 -1
  301. package/dist/src/controls/ControlType.d.ts.map +0 -1
  302. package/dist/src/controls/dropdown-filter/DropdownFilter.d.ts.map +0 -1
  303. package/dist/src/controls/input-filter/InputFilter.d.ts.map +0 -1
  304. package/dist/src/controls/markdown/MarkdownContainer.d.ts.map +0 -1
  305. package/dist/src/controls/markdown/MarkdownEditor.d.ts.map +0 -1
  306. package/dist/src/controls/markdown/MarkdownStartPage.d.ts.map +0 -1
  307. package/dist/src/controls/markdown/MarkdownUtils.d.ts.map +0 -1
  308. package/dist/src/events/ChartEvent.d.ts.map +0 -1
  309. package/dist/src/events/ConsoleEvent.d.ts.map +0 -1
  310. package/dist/src/events/ControlEvent.d.ts.map +0 -1
  311. package/dist/src/events/InputFilterEvent.d.ts.map +0 -1
  312. package/dist/src/events/IrisGridEvent.d.ts.map +0 -1
  313. package/dist/src/events/MarkdownEvent.d.ts.map +0 -1
  314. package/dist/src/events/MatPlotLibEvent.d.ts +0 -5
  315. package/dist/src/events/MatPlotLibEvent.d.ts.map +0 -1
  316. package/dist/src/events/NotebookEvent.d.ts.map +0 -1
  317. package/dist/src/events/PQEvent.d.ts.map +0 -1
  318. package/dist/src/events/PandasEvent.d.ts.map +0 -1
  319. package/dist/src/events/TabEvent.d.ts.map +0 -1
  320. package/dist/src/events/index.d.ts +0 -11
  321. package/dist/src/index.d.ts.map +0 -1
  322. package/dist/src/linker/Linker.d.ts.map +0 -1
  323. package/dist/src/linker/LinkerLink.d.ts.map +0 -1
  324. package/dist/src/linker/LinkerOverlayContent.d.ts.map +0 -1
  325. package/dist/src/linker/LinkerUtils.d.ts.map +0 -1
  326. package/dist/src/panels/ChartColumnSelectorOverlay.d.ts.map +0 -1
  327. package/dist/src/panels/ChartFilterOverlay.d.ts.map +0 -1
  328. package/dist/src/panels/ChartPanel.d.ts.map +0 -1
  329. package/dist/src/panels/CommandHistoryPanel.d.ts.map +0 -1
  330. package/dist/src/panels/ConsolePanel.d.ts.map +0 -1
  331. package/dist/src/panels/DropdownFilterPanel.d.ts.map +0 -1
  332. package/dist/src/panels/FileExplorerPanel.d.ts.map +0 -1
  333. package/dist/src/panels/InputFilterPanel.d.ts.map +0 -1
  334. package/dist/src/panels/IrisGridPanel.d.ts.map +0 -1
  335. package/dist/src/panels/LogPanel.d.ts.map +0 -1
  336. package/dist/src/panels/MarkdownPanel.d.ts.map +0 -1
  337. package/dist/src/panels/MatPlotLibPanel.d.ts +0 -22
  338. package/dist/src/panels/MatPlotLibPanel.d.ts.map +0 -1
  339. package/dist/src/panels/NotebookPanel.d.ts.map +0 -1
  340. package/dist/src/panels/PandasPanel.d.ts.map +0 -1
  341. package/dist/src/panels/Panel.d.ts.map +0 -1
  342. package/dist/src/panels/PanelContextMenu.d.ts.map +0 -1
  343. package/dist/src/panels/RenameDialog.d.ts.map +0 -1
  344. package/dist/src/panels/Shortcuts.d.ts.map +0 -1
  345. package/dist/src/panels/WidgetPanel.d.ts.map +0 -1
  346. package/dist/src/panels/WidgetPanelTooltip.d.ts.map +0 -1
  347. package/dist/src/prop-types/CommonPropTypes.d.ts.map +0 -1
  348. package/dist/src/prop-types/UIPropTypes.d.ts.map +0 -1
  349. package/dist/src/redux/actionTypes.d.ts.map +0 -1
  350. package/dist/src/redux/actions.d.ts.map +0 -1
  351. package/dist/src/redux/index.d.ts.map +0 -1
  352. package/dist/src/redux/reducers/index.d.ts.map +0 -1
  353. package/dist/src/redux/reducers/sessionWrapper.d.ts.map +0 -1
  354. package/dist/src/redux/selectors.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhICursor","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","createRef","filterSets","renameSet","undefined","some","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleSetDelete","handleSetRename","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","trimmedName","trim","error","namedFilterSet","selectedIndex","findIndex","updatedModifiedFilterSets","push","prevFilterSets","filter","newSelectedIndex","Math","max","min","newSelectedId","selectedSetIndex","selectedSet","find","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","onApply","filterSet","focus","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","updateSetIcon","editDropdownRef","map"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhICursor,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n id: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\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}\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\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetRename = this.handleSetRename.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 };\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(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\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, selectedId } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets, editId);\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 });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\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 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 } = 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 = { ...renameSet, title: trimmedName };\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 handleSetRename(): 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 } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\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 } = 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 className=\"d-flex flex-column justify-content-center\">\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet\n ? 'Rename set'\n : '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 kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n icon={vsSave}\n />\n\n <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 && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\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 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.handleSetRename}\n disabled={isEmptyEditList}\n icon={dhICursor}\n tooltip=\"Rename\"\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 <>\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">\n Filter sets\n </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 ref={this.dropdownRef}\n value={selectedId}\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 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 </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
@@ -0,0 +1,33 @@
1
+ .filter-set-manager-panel {
2
+ padding-top: 1rem;
3
+ }
4
+
5
+ .screen-flash-overlay {
6
+ z-index: 1070;
7
+ position: absolute;
8
+ top: 0;
9
+ left: 0;
10
+ width: 100%;
11
+ height: 100%;
12
+ background: #fff;
13
+ opacity: 0;
14
+ mix-blend-mode: color-dodge;
15
+ pointer-events: none;
16
+ animation-duration: 0.4s;
17
+ animation-name: flash;
18
+ animation-timing-function: ease-out;
19
+ }
20
+
21
+ @keyframes flash {
22
+ 0% {
23
+ opacity: 0%;
24
+ }
25
+ 10% {
26
+ opacity: 100%;
27
+ }
28
+ 100% {
29
+ opacity: 0%;
30
+ }
31
+ }
32
+
33
+ /*# sourceMappingURL=FilterSetManagerPanel.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.scss","../../../components/scss/new_variables.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE,aCCS;;;ADEX;EACE,SE+qBkC;EF9qBlC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;EAGF;IACE","file":"FilterSetManagerPanel.css"}
@@ -0,0 +1,69 @@
1
+ declare var _default: import("react-redux").ConnectedComponent<typeof FilterSetManagerPanel, any>;
2
+ export default _default;
3
+ declare class FilterSetManagerPanel extends React.Component<any, any, any> {
4
+ static COMPONENT: string;
5
+ static changeFilterColumnNamesToIndexes(table: any, configs: any): any;
6
+ static changeFilterIndexesToColumnNames(table: any, configs: any): any;
7
+ constructor(props: any);
8
+ handleChange({ isValueShown, selectedId }: {
9
+ isValueShown: any;
10
+ selectedId: any;
11
+ }): void;
12
+ handleFilterApply(filterSet: any): void;
13
+ handleSetsUpdate(modifiedFilterSets: any, selectedEditId: any): void;
14
+ handleGetFilterState(): any[];
15
+ getFilterState(): any[];
16
+ getIrisGridPanelFilters(panelId: any, panelState: any): {
17
+ advancedFilters: any;
18
+ quickFilters: any;
19
+ } | null;
20
+ updatePanelState(): void;
21
+ restoreIrisGridFilters(panel: any, state: any): void;
22
+ restoreInputFilterState(panel: any, state: any): void;
23
+ }
24
+ declare namespace FilterSetManagerPanel {
25
+ namespace propTypes {
26
+ const glContainer: PropTypes.Validator<PropTypes.InferProps<{
27
+ on: PropTypes.Requireable<(...args: any[]) => any>;
28
+ off: PropTypes.Requireable<(...args: any[]) => any>;
29
+ isHidden: PropTypes.Requireable<boolean>;
30
+ tab: PropTypes.Requireable<PropTypes.InferProps<{
31
+ header: PropTypes.Requireable<PropTypes.InferProps<{
32
+ tabs: PropTypes.Requireable<(PropTypes.InferProps<{
33
+ contentItem: PropTypes.Requireable<PropTypes.InferProps<{}>>;
34
+ }> | null | undefined)[]>;
35
+ }>>;
36
+ }>>;
37
+ title: PropTypes.Requireable<string>;
38
+ setTitle: PropTypes.Requireable<(...args: any[]) => any>;
39
+ close: PropTypes.Requireable<(...args: any[]) => any>;
40
+ }>>;
41
+ const glEventHub: PropTypes.Validator<PropTypes.InferProps<{
42
+ on: PropTypes.Requireable<(...args: any[]) => any>;
43
+ off: PropTypes.Requireable<(...args: any[]) => any>;
44
+ emit: PropTypes.Requireable<(...args: any[]) => any>;
45
+ }>>;
46
+ const panelState: PropTypes.Requireable<PropTypes.InferProps<{
47
+ name: PropTypes.Requireable<string>;
48
+ type: PropTypes.Requireable<string>;
49
+ selectedId: PropTypes.Requireable<string>;
50
+ isValueShown: PropTypes.Requireable<boolean>;
51
+ }>>;
52
+ const filterSets: PropTypes.Validator<(PropTypes.InferProps<{
53
+ id: PropTypes.Validator<string>;
54
+ title: PropTypes.Validator<string>;
55
+ panels: PropTypes.Validator<(PropTypes.InferProps<{}> | null | undefined)[]>;
56
+ }> | null | undefined)[]>;
57
+ const localDashboardId: PropTypes.Validator<string>;
58
+ const dashboardOpenedPanelMap: PropTypes.Validator<Map<unknown, unknown>>;
59
+ const setDashboardFilterSets: PropTypes.Validator<(...args: any[]) => any>;
60
+ const panelTableMap: PropTypes.Validator<Map<unknown, unknown>>;
61
+ }
62
+ namespace defaultProps {
63
+ const panelState_1: null;
64
+ export { panelState_1 as panelState };
65
+ }
66
+ }
67
+ import React from "react";
68
+ import PropTypes from "prop-types";
69
+ //# sourceMappingURL=FilterSetManagerPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA4FD;;;aAIC;IAED,wCAsBC;IAED,qEAeC;IAjDD,8BAEC;IAvFD,wBAkDC;IAED;;;aA+BC;IAqDD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
@@ -0,0 +1,383 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import React, { Component } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { connect } from 'react-redux';
6
+ import { getOpenedPanelMapForDashboard, GLPropTypes, LayoutUtils } from '@deephaven/dashboard';
7
+ import { IrisGridUtils } from '@deephaven/iris-grid';
8
+ import Log from '@deephaven/log';
9
+ import { getFilterSetsForDashboard, getInputFiltersForDashboard, getTableMapForDashboard, setDashboardFilterSets as setDashboardFilterSetsAction } from "../redux/index.js";
10
+ import Panel from "./Panel.js";
11
+ import FilterSetManager from "./FilterSetManager.js";
12
+ import IrisGridPanel from "./IrisGridPanel.js";
13
+ import InputFilterPanel from "./InputFilterPanel.js";
14
+ import DropdownFilterPanel from "./DropdownFilterPanel.js";
15
+ import "./FilterSetManagerPanel.css";
16
+ var log = Log.module('FilterSetManagerPanel');
17
+
18
+ class FilterSetManagerPanel extends Component {
19
+ static changeFilterColumnNamesToIndexes(table, configs) {
20
+ return configs.map((_ref) => {
21
+ var {
22
+ name,
23
+ filter
24
+ } = _ref;
25
+ var index = table.columns.findIndex(column => column.name === name);
26
+ return index < 0 ? null : [index, filter];
27
+ }).filter(config => config != null);
28
+ }
29
+
30
+ static changeFilterIndexesToColumnNames(table, configs) {
31
+ return configs.map((_ref2) => {
32
+ var [index, filter] = _ref2;
33
+
34
+ if (index >= table.columns.length) {
35
+ return null;
36
+ }
37
+
38
+ var {
39
+ name
40
+ } = table.columns[index];
41
+ return {
42
+ name,
43
+ filter
44
+ };
45
+ }).filter(config => config != null);
46
+ }
47
+
48
+ constructor(props) {
49
+ super(props);
50
+ this.handleChange = this.handleChange.bind(this);
51
+ this.handleFilterApply = this.handleFilterApply.bind(this);
52
+ this.handleSetsUpdate = this.handleSetsUpdate.bind(this);
53
+ this.handleGetFilterState = this.handleGetFilterState.bind(this);
54
+ var {
55
+ panelState,
56
+ filterSets
57
+ } = props;
58
+ var {
59
+ selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,
60
+ isValueShown = false
61
+ } = panelState !== null && panelState !== void 0 ? panelState : {};
62
+ this.state = {
63
+ selectedId,
64
+ isValueShown,
65
+ // eslint-disable-next-line react/no-unused-state
66
+ panelState // Dehydrated panel state that can load this panel
67
+
68
+ };
69
+ } // Collect all filter values for each dashboard panel
70
+
71
+
72
+ getFilterState() {
73
+ var {
74
+ dashboardOpenedPanelMap
75
+ } = this.props;
76
+ var panels = [];
77
+ [...dashboardOpenedPanelMap.keys()].forEach(key => {
78
+ var panel = dashboardOpenedPanelMap.get(key);
79
+ var componentName = LayoutUtils.getComponentNameFromPanel(panel);
80
+ var panelId = LayoutUtils.getIdFromPanel(panel);
81
+ log.debug('Panel:', panel, componentName);
82
+ var {
83
+ glContainer = null
84
+ } = panel.props;
85
+
86
+ if (glContainer == null) {
87
+ log.error('Could not get panel container', panel);
88
+ return;
89
+ }
90
+
91
+ var config = LayoutUtils.getComponentConfigFromContainer(glContainer);
92
+
93
+ if (config == null) {
94
+ log.error('Could not get component config from container', glContainer);
95
+ return;
96
+ }
97
+
98
+ var panelState = LayoutUtils.getPanelComponentState(config);
99
+
100
+ if (panelState == null) {
101
+ log.debug("Panel state is null ".concat(panelId));
102
+ return;
103
+ }
104
+
105
+ switch (componentName) {
106
+ case LayoutUtils.getComponentName(IrisGridPanel):
107
+ {
108
+ var state = this.getIrisGridPanelFilters(panelId, panelState);
109
+
110
+ if (state != null) {
111
+ panels.push({
112
+ panelId,
113
+ type: componentName,
114
+ state
115
+ });
116
+ }
117
+
118
+ break;
119
+ }
120
+
121
+ case LayoutUtils.getComponentName(InputFilterPanel):
122
+ case LayoutUtils.getComponentName(DropdownFilterPanel):
123
+ {
124
+ var {
125
+ isValueShown,
126
+ name,
127
+ type,
128
+ value
129
+ } = panelState;
130
+ panels.push({
131
+ panelId,
132
+ type: componentName,
133
+ state: {
134
+ isValueShown,
135
+ name,
136
+ type,
137
+ value
138
+ }
139
+ });
140
+ break;
141
+ }
142
+
143
+ default:
144
+ }
145
+ });
146
+ return panels;
147
+ }
148
+
149
+ getIrisGridPanelFilters(panelId, panelState) {
150
+ var {
151
+ panelTableMap
152
+ } = this.props;
153
+ var table = panelTableMap.get(panelId);
154
+
155
+ if (table == null) {
156
+ log.error("Unable to get table for panel ".concat(panelId, "."));
157
+ return null;
158
+ } // IrisGridUtils.hydrate uses numeric indexes for columns
159
+ // Change indexes to column names to make it work for proxy models
160
+
161
+
162
+ var {
163
+ irisGridState = null
164
+ } = panelState;
165
+ var {
166
+ advancedFilters: indexedAdvancedFilters = [],
167
+ quickFilters: indexedQuickFilters = []
168
+ } = irisGridState !== null && irisGridState !== void 0 ? irisGridState : {};
169
+ var dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(table, indexedAdvancedFilters);
170
+ var advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedAdvancedFilters);
171
+ var dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(table, indexedQuickFilters);
172
+ var quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedQuickFilters);
173
+ return {
174
+ advancedFilters,
175
+ quickFilters
176
+ };
177
+ }
178
+
179
+ handleGetFilterState() {
180
+ return this.getFilterState();
181
+ }
182
+
183
+ handleChange(_ref3) {
184
+ var {
185
+ isValueShown,
186
+ selectedId
187
+ } = _ref3;
188
+ log.debug('handleChange', isValueShown, selectedId);
189
+ this.setState({
190
+ isValueShown,
191
+ selectedId
192
+ });
193
+ this.updatePanelState();
194
+ }
195
+
196
+ handleFilterApply(filterSet) {
197
+ var {
198
+ dashboardOpenedPanelMap
199
+ } = this.props;
200
+ var {
201
+ panels
202
+ } = filterSet;
203
+ log.debug("Apply filters from filter set", filterSet);
204
+ panels.forEach((_ref4) => {
205
+ var {
206
+ panelId,
207
+ type,
208
+ state
209
+ } = _ref4;
210
+
211
+ if (!dashboardOpenedPanelMap.has(panelId)) {
212
+ log.debug('Ignore closed panel', panelId);
213
+ return;
214
+ }
215
+
216
+ log.debug('Apply panel filters', panelId, type, state);
217
+ var panel = dashboardOpenedPanelMap.get(panelId);
218
+
219
+ switch (type) {
220
+ case LayoutUtils.getComponentName(IrisGridPanel):
221
+ this.restoreIrisGridFilters(panel, state);
222
+ break;
223
+
224
+ case LayoutUtils.getComponentName(InputFilterPanel):
225
+ case LayoutUtils.getComponentName(DropdownFilterPanel):
226
+ this.restoreInputFilterState(panel, state);
227
+ break;
228
+
229
+ default:
230
+ }
231
+ });
232
+ }
233
+
234
+ handleSetsUpdate(modifiedFilterSets, selectedEditId) {
235
+ var {
236
+ setDashboardFilterSets,
237
+ localDashboardId
238
+ } = this.props;
239
+ var {
240
+ selectedId
241
+ } = this.state; // Only change the selected filter if the previous selection was deleted
242
+
243
+ var prevSelection = modifiedFilterSets.find((_ref5) => {
244
+ var {
245
+ id
246
+ } = _ref5;
247
+ return id === selectedId;
248
+ });
249
+
250
+ if (prevSelection !== undefined) {
251
+ this.setState({
252
+ selectedId: selectedEditId
253
+ });
254
+ }
255
+
256
+ log.debug('Saving updated sets', modifiedFilterSets); // Filter sets are stored in dashboard data instead of the panelState
257
+ // because they need to be shared between the filter view manager panels
258
+
259
+ setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);
260
+ }
261
+
262
+ updatePanelState() {
263
+ this.setState((_ref6) => {
264
+ var {
265
+ selectedId,
266
+ isValueShown
267
+ } = _ref6;
268
+ return {
269
+ // eslint-disable-next-line react/no-unused-state
270
+ panelState: {
271
+ selectedId,
272
+ isValueShown
273
+ }
274
+ };
275
+ });
276
+ }
277
+
278
+ restoreIrisGridFilters(panel, state) {
279
+ var {
280
+ advancedFilters: savedAdvancedFilters,
281
+ quickFilters: savedQuickFilters
282
+ } = state;
283
+ var {
284
+ panelTableMap
285
+ } = this.props;
286
+ var panelId = LayoutUtils.getIdFromPanel(panel);
287
+ var table = panelTableMap.get(panelId);
288
+
289
+ if (table == null) {
290
+ log.error("Unable to get table for panel ".concat(panelId, "."));
291
+ return;
292
+ }
293
+
294
+ log.debug('restoreIrisGridFilters', panelId, state);
295
+ var quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(table, savedQuickFilters);
296
+ var advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(table, savedAdvancedFilters);
297
+ panel.setFilters({
298
+ quickFilters,
299
+ advancedFilters
300
+ });
301
+ } // eslint-disable-next-line class-methods-use-this
302
+
303
+
304
+ restoreInputFilterState(panel, state) {
305
+ log.debug('restoreInputFilterState', panel, state);
306
+ panel.setPanelState(state);
307
+ }
308
+
309
+ render() {
310
+ var {
311
+ glContainer,
312
+ glEventHub,
313
+ filterSets
314
+ } = this.props;
315
+ var {
316
+ isValueShown,
317
+ selectedId
318
+ } = this.state;
319
+ return /*#__PURE__*/React.createElement(Panel, {
320
+ className: "filter-set-manager-panel",
321
+ componentPanel: this,
322
+ glContainer: glContainer,
323
+ glEventHub: glEventHub,
324
+ isClonable: true,
325
+ isRenamable: true
326
+ }, /*#__PURE__*/React.createElement("div", {
327
+ className: "input-filter-container h-100 w-100 container"
328
+ }, /*#__PURE__*/React.createElement(FilterSetManager, {
329
+ onChange: this.handleChange,
330
+ onApply: this.handleFilterApply,
331
+ onUpdateSets: this.handleSetsUpdate,
332
+ isValueShown: isValueShown,
333
+ filterSets: filterSets,
334
+ selectedId: selectedId,
335
+ getFilterState: this.handleGetFilterState
336
+ })));
337
+ }
338
+
339
+ }
340
+
341
+ _defineProperty(FilterSetManagerPanel, "COMPONENT", 'FilterSetManagerPanel');
342
+
343
+ FilterSetManagerPanel.propTypes = {
344
+ glContainer: GLPropTypes.Container.isRequired,
345
+ glEventHub: GLPropTypes.EventHub.isRequired,
346
+ panelState: PropTypes.shape({
347
+ name: PropTypes.string,
348
+ type: PropTypes.string,
349
+ selectedId: PropTypes.string,
350
+ isValueShown: PropTypes.bool
351
+ }),
352
+ filterSets: PropTypes.arrayOf(PropTypes.shape({
353
+ id: PropTypes.string.isRequired,
354
+ title: PropTypes.string.isRequired,
355
+ panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired
356
+ })).isRequired,
357
+ localDashboardId: PropTypes.string.isRequired,
358
+ dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,
359
+ setDashboardFilterSets: PropTypes.func.isRequired,
360
+ panelTableMap: PropTypes.instanceOf(Map).isRequired
361
+ };
362
+ FilterSetManagerPanel.defaultProps = {
363
+ panelState: null
364
+ };
365
+
366
+ var mapStateToProps = (state, ownProps) => {
367
+ var {
368
+ localDashboardId
369
+ } = ownProps;
370
+ return {
371
+ filterSets: getFilterSetsForDashboard(state, localDashboardId),
372
+ dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(state, localDashboardId),
373
+ dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),
374
+ panelTableMap: getTableMapForDashboard(state, localDashboardId)
375
+ };
376
+ };
377
+
378
+ export default connect(mapStateToProps, {
379
+ setDashboardFilterSets: setDashboardFilterSetsAction
380
+ }, null, {
381
+ forwardRef: true
382
+ })(FilterSetManagerPanel);
383
+ //# sourceMappingURL=FilterSetManagerPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","selectedEditId","localDashboardId","prevSelection","find","savedAdvancedFilters","savedQuickFilters","setFilters","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\n\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null);\n }\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(panelId, panelState) {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const { irisGridState = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n table,\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets, selectedEditId) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n const { selectedId } = this.state;\n // Only change the selected filter if the previous selection was deleted\n const prevSelection = modifiedFilterSets.find(\n ({ id }) => id === selectedId\n );\n if (prevSelection !== undefined) {\n this.setState({ selectedId: selectedEditId });\n }\n\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState() {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(panel, state) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\n }\n\n render() {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}