@deephaven/dashboard-core-plugins 0.22.3-beta.18 → 0.22.3-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.d.ts +1 -1
- package/dist/ChartBuilderPlugin.d.ts.map +1 -1
- package/dist/ChartBuilderPlugin.js +6 -8
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPlugin.d.ts +1 -1
- package/dist/ChartPlugin.d.ts.map +1 -1
- package/dist/ChartPlugin.js +4 -8
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts +1 -1
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +16 -62
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.d.ts +1 -1
- package/dist/FilterPlugin.d.ts.map +1 -1
- package/dist/FilterPlugin.js +6 -13
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.d.ts +1 -1
- package/dist/GridPlugin.d.ts.map +1 -1
- package/dist/GridPlugin.js +4 -8
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.d.ts +1 -1
- package/dist/LinkerPlugin.d.ts.map +1 -1
- package/dist/LinkerPlugin.js +2 -2
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.d.ts +1 -1
- package/dist/MarkdownPlugin.d.ts.map +1 -1
- package/dist/MarkdownPlugin.js +4 -8
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.d.ts +1 -1
- package/dist/PandasPlugin.d.ts.map +1 -1
- package/dist/PandasPlugin.js +4 -8
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.js +0 -6
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +7 -51
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +1 -31
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +0 -3
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.d.ts +0 -2
- package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +13 -20
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +0 -11
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js +0 -7
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js +0 -5
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js +0 -7
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.js +0 -10
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js +0 -8
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js +0 -10
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js +0 -5
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js +0 -4
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.js +0 -8
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.d.ts +3 -0
- package/dist/linker/Linker.d.ts.map +1 -1
- package/dist/linker/Linker.js +70 -119
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.css +90 -25
- package/dist/linker/LinkerLink.css.map +1 -1
- package/dist/linker/LinkerLink.d.ts +20 -2
- package/dist/linker/LinkerLink.d.ts.map +1 -1
- package/dist/linker/LinkerLink.js +214 -23
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.css +0 -4
- package/dist/linker/LinkerOverlayContent.css.map +1 -1
- package/dist/linker/LinkerOverlayContent.d.ts +11 -0
- package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +78 -33
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +9 -2
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js +9 -25
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.d.ts +5 -5
- package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -7
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts +4 -4
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +2 -7
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +11 -150
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +1 -26
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +12 -57
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +16 -122
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +4 -33
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.d.ts.map +1 -1
- package/dist/panels/FilterSetManager.js +13 -86
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +10 -64
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +8 -38
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +24 -133
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.d.ts +5 -5
- package/dist/panels/IrisGridPanelTooltip.d.ts.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +2 -5
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +4 -22
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +3 -30
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +2 -30
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/MockFileStorage.js +1 -14
- package/dist/panels/MockFileStorage.js.map +1 -1
- package/dist/panels/MockFileStorageTable.js +11 -30
- package/dist/panels/MockFileStorageTable.js.map +1 -1
- package/dist/panels/NotebookPanel.js +24 -182
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +1 -20
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.js +2 -38
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.js +7 -29
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.js +2 -17
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanel.js +2 -20
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.d.ts +5 -5
- package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +2 -4
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js +0 -3
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actionTypes.js.map +1 -1
- package/dist/redux/actions.js +8 -9
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/connection.js.map +1 -1
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.js +10 -15
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +21 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilterPanel.js","names":["React","Component","connect","debounce","deepEqual","memoize","LayoutUtils","dh","DateTimeColumnFormatter","Formatter","FormatterUtils","TableUtils","Log","getActiveTool","getSettings","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","ToolType","WidgetPanel","log","module","DROPDOWN_FILTER_DEBOUNCE","DropdownFilterPanel","constructor","props","rawValues","formatter","type","name","undefined","isDateType","map","value","DATETIME_FORMATTER","format","getFormattedString","dashboardLinks","panel","panelId","getIdFromPanel","debug","filter","link","end","links","source","length","start","error","panelTableMap","get","table","columns","find","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","panelState","settings","columnFormats","getColumnFormats","isValueShown","timestamp","column","state","valuesTable","valuesColumn","sourceSize","values","wasFlipped","skipUpdate","isDisconnected","isLoading","isLoaded","componentDidMount","updateValuesTable","sourceTable","getSourceTable","startListeningToSource","sendUpdate","componentDidUpdate","prevProps","prevState","getSource","prevSource","prevSourceTable","updateFormatterSettings","close","stopListeningToSource","componentWillUnmount","cancel","cleanup","getCoordinateForColumn","current","element","querySelector","SOURCE_BUTTON_CLASS_NAME","rect","getBoundingClientRect","width","height","x","left","y","bottom","getSettingsErrorMessage","MAX_TABLE_SIZE","getPanelErrorMessage","panelLinks","getCachedPanelLinks","getCachedSource","getCachedSourceTable","getValuesColumn","getCachedSourceColumn","addEventListener","Table","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","EVENT_SIZECHANGED","EVENT_DISCONNECT","EVENT_RECONNECT","removeEventListener","Date","now","setState","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","clearFilter","setPanelState","setFilterState","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCanceled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","rows","row","columnSelectionValidator","render","disableLinking","glContainer","isLinkerActive","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","showTimeZone","showTSeparator","defaultDateTimeFormatString","Object","freeze","mapStateToProps","ownProps","localDashboardId","activeTool","isolatedLinkerPanelId","LINKER","forwardRef"],"sources":["../../src/panels/DropdownFilterPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport dh from '@deephaven/jsapi-shim';\nimport type { Column, Row, Table, TableTemplate } from '@deephaven/jsapi-shim';\nimport {\n DateTimeColumnFormatter,\n Formatter,\n FormatterUtils,\n FormattingRule,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings, RootState } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport DropdownFilter, {\n DropdownFilterColumn,\n} from '../controls/dropdown-filter/DropdownFilter';\nimport { InputFilterEvent } from '../events';\nimport {\n getColumnsForDashboard,\n getColumnSelectionValidatorForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n} from '../redux';\nimport './DropdownFilterPanel.scss';\nimport ToolType from '../linker/ToolType';\nimport WidgetPanel from './WidgetPanel';\nimport type { Link, LinkPoint } from '../linker/LinkerUtils';\nimport { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\ninterface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface DropdownFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState?: PanelState;\n isLinkerActive: boolean;\n columns: Column[];\n columnSelectionValidator?: ColumnSelectionValidator;\n disableLinking: boolean;\n settings: {\n formatter: FormattingRule[];\n };\n // eslint-disable-next-line react/no-unused-prop-types\n panelTableMap: Map<string | string[], TableTemplate>;\n // eslint-disable-next-line react/no-unused-prop-types\n dashboardLinks: Link[];\n}\n\ninterface DropdownFilterPanelState {\n column?: DropdownFilterColumn;\n formatter: Formatter;\n valuesTable?: TableTemplate;\n valuesColumn?: Column;\n sourceSize: number;\n value: string;\n timestamp?: number;\n values: unknown[];\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n\n panelState?: PanelState; // Dehydrated panel state that can load this panel\n\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n error: unknown | null;\n}\n\nclass DropdownFilterPanel extends Component<\n DropdownFilterPanelProps,\n DropdownFilterPanelState\n> {\n static displayName = 'DropdownFilterPanel';\n\n static COMPONENT = 'DropdownFilterPanel';\n\n static MAX_TABLE_SIZE = 256;\n\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n static DATETIME_FORMATTER = new DateTimeColumnFormatter({\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\n\n static SOURCE_COLUMN = Object.freeze({\n name: 'FilterSource',\n type: null,\n });\n\n constructor(props: DropdownFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n DROPDOWN_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n\n this.dropdownFilterRef = React.createRef();\n this.panelContainer = React.createRef();\n this.pending = new Pending();\n\n const { panelState, settings } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n const { value = '', isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n const column = name != null && type != null ? { name, type } : undefined;\n this.state = {\n column,\n formatter: new Formatter(this.columnFormats),\n valuesTable: undefined,\n valuesColumn: undefined,\n sourceSize: 0,\n value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null,\n };\n }\n\n componentDidMount() {\n this.updateValuesTable();\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable();\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterPanelProps,\n prevState: DropdownFilterPanelState\n ) {\n const { valuesTable } = this.state;\n const { settings } = this.props;\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n const prevSource = this.getSource(prevProps);\n const prevSourceTable = this.getSourceTable(prevProps);\n\n if (settings !== prevProps.settings && settings !== undefined) {\n this.updateFormatterSettings(settings);\n }\n\n if (\n valuesTable !== prevState.valuesTable &&\n prevState.valuesTable != null\n ) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n\n componentWillUnmount(): void {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable != null) {\n valuesTable.close();\n }\n }\n\n dropdownFilterRef: RefObject<DropdownFilter>;\n\n panelContainer: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n cleanup?: () => void;\n\n columnFormats?: FormattingRule[];\n\n getCachedValues = memoize(\n (\n rawValues: unknown[],\n { type, name }: DropdownFilterColumn,\n formatter: Formatter\n ) => {\n if (type !== undefined && TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n DropdownFilterPanel.DATETIME_FORMATTER.format(value as number)\n );\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null && type != null\n ? formatter.getFormattedString(value, type, name)\n : null\n );\n }\n );\n\n getCoordinateForColumn(): [number, number] | null {\n if (this.panelContainer.current == null) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(\n `.${DropdownFilter.SOURCE_BUTTON_CLASS_NAME}`\n );\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n getSettingsErrorMessage(): string | undefined {\n const { sourceSize } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return `Table too large, must have fewer than ${DropdownFilterPanel.MAX_TABLE_SIZE} options.`;\n }\n return undefined;\n }\n\n getPanelErrorMessage(): string | undefined {\n const { error } = this.state;\n return error != null ? `${error}` : undefined;\n }\n\n getCachedPanelLinks = memoize(\n (dashboardLinks: Link[], panel: DropdownFilterPanel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n }\n );\n\n getCachedSource = memoize((links: Link[]) => {\n log.debug('getCachedSource', links);\n let source: LinkPoint | undefined;\n if (links.length > 0) {\n const [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n });\n\n getCachedSourceTable = memoize(\n (\n panelTableMap: Map<string | string[], TableTemplate<Table>>,\n source: LinkPoint | undefined\n ) => {\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n const { panelId } = source;\n return panelTableMap.get(panelId) ?? null;\n }\n );\n\n getCachedSourceColumn = memoize(\n (table: TableTemplate, source: LinkPoint | undefined) => {\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (\n table.columns.find(\n ({ name, type }) =>\n name === source.columnName && type === source.columnType\n ) ?? null\n );\n }\n );\n\n getSource(props = this.props) {\n const { dashboardLinks } = props;\n const panelLinks = this.getCachedPanelLinks(dashboardLinks, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(props = this.props) {\n const { panelTableMap } = props;\n const source = this.getSource(props);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(valuesTable: TableTemplate): Column | null {\n const source = this.getSource();\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable: TableTemplate): void {\n log.debug('startListeningToSource');\n sourceTable.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n stopListeningToSource(sourceTable: TableTemplate): void {\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n handleChange({\n column,\n isValueShown,\n value,\n }: {\n column: Partial<Column> | null;\n isValueShown?: boolean | undefined;\n value?: string | undefined;\n }) {\n const { name = undefined, type = undefined } = column ?? {};\n let sendUpdate = true;\n let timestamp: number | undefined = 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: timestamp ?? undefined,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name ?? null, type, value, timestamp);\n }\n }\n );\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }: { detail: number }) {\n this.setState({ sourceSize: detail });\n }\n\n handleColumnSelected(): void {\n log.debug('handleColumnSelected');\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMN_SELECTED,\n this,\n DropdownFilterPanel.SOURCE_COLUMN\n );\n }\n\n handleClearAllFilters(): void {\n this.dropdownFilterRef?.current?.clearFilter();\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(\n state: {\n name: string;\n type: string;\n value: string;\n isValueShown: boolean;\n },\n sendUpdate = false\n ): void {\n if (this.getSource() == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\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.dropdownFilterRef?.current?.setFilterState(state);\n }\n\n sendUpdate(\n name: string | null,\n type: string | undefined,\n value: string | undefined,\n timestamp?: number\n ): void {\n const { glEventHub } = this.props;\n const sourcePanelId = this.getSource()?.panelId;\n const excludePanelIds = sourcePanelId === null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds,\n });\n\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds,\n });\n }\n\n updateValuesTable(): void {\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n log.debug('updateValuesTable', source, sourceTable);\n\n this.setState({\n values: [],\n valuesTable: undefined,\n error: null,\n });\n\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n\n if (sourceTable == null) {\n return;\n }\n\n this.setState({ isLoaded: false, sourceSize: sourceTable.size });\n\n this.pending\n .add(sourceTable.copy(), resolved => resolved.close())\n .then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({ valuesTable });\n })\n .catch((error: unknown) => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n this.setState({ isLoading: false, error });\n });\n }\n\n applySourceSorts() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceSorts', sourceTable?.sort);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n\n applySourceFilters(): void {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceFilters', sourceTable?.filter);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n\n updateViewportListener(valuesTable: TableTemplate): void {\n log.debug('updateViewportListener', valuesTable?.size);\n\n if (this.cleanup) {\n this.cleanup();\n }\n\n if (valuesTable == null) {\n this.cleanup = undefined;\n return;\n }\n\n this.cleanup = valuesTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleValuesTableUpdate\n );\n\n this.setViewport(valuesTable);\n }\n\n setViewport(valuesTable: TableTemplate): void {\n const valuesColumn = this.getValuesColumn(valuesTable);\n if (!valuesColumn) {\n log.error('values column is null');\n return;\n }\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [\n valuesColumn,\n ]);\n }\n\n updateFormatterSettings(settings: {\n formatter?: FormattingRule[] | undefined;\n }) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(columnFormats) });\n }\n }\n\n handleValuesTableUpdate({ detail }: { detail: { rows: Row[] } }) {\n const { rows } = detail;\n const { valuesTable } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n const valuesColumn = this.getValuesColumn(valuesTable);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n const values = rows.map(row => row.get(valuesColumn));\n this.setState({ values, isLoading: false, isLoaded: true, valuesColumn });\n }\n\n handleSourceMouseEnter() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n render() {\n const {\n columns,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive,\n } = this.props;\n const {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded,\n } = this.state;\n\n const source = this.getSource();\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : [];\n\n return (\n <WidgetPanel\n errorMessage={panelErrorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n isDisconnected={isDisconnected}\n className=\"iris-dropdown-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n widgetName=\"Dropdown Filter\"\n widgetType=\"DropdownFilter\"\n >\n <div\n ref={this.panelContainer}\n className=\"dropdown-filter-container h-100 w-100 container\"\n >\n <DropdownFilter\n ref={this.dropdownFilterRef}\n column={column}\n columns={columns}\n isValueShown={isValueShown}\n isLinkerActive={isLinkerActive}\n disableLinking={disableLinking}\n isLoaded={isLoaded}\n settingsError={settingsErrorMessage}\n source={source}\n value={value}\n values={formattedValues}\n onChange={this.handleChange}\n onColumnSelected={this.handleColumnSelected}\n onSourceMouseEnter={this.handleSourceMouseEnter}\n onSourceMouseLeave={this.handleSourceMouseLeave}\n />\n </div>\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string; glContainer: Container }\n) => {\n const { localDashboardId } = ownProps;\n const panelId = LayoutUtils.getIdFromPanel({ props: ownProps });\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const dashboardLinks = getLinksForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER &&\n (isolatedLinkerPanelId === undefined || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n const disableLinking =\n activeTool === ToolType.LINKER &&\n isolatedLinkerPanelId !== undefined &&\n isolatedLinkerPanelId !== panelId;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n DropdownFilterPanel\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownFilterPanel.js","names":["React","Component","connect","debounce","deepEqual","memoize","LayoutUtils","dh","DateTimeColumnFormatter","Formatter","FormatterUtils","TableUtils","Log","getActiveTool","getSettings","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","ToolType","WidgetPanel","log","module","DROPDOWN_FILTER_DEBOUNCE","DropdownFilterPanel","constructor","props","rawValues","formatter","type","name","undefined","isDateType","map","value","DATETIME_FORMATTER","format","getFormattedString","dashboardLinks","panel","panelId","getIdFromPanel","debug","filter","link","end","links","source","length","start","error","panelTableMap","get","table","columns","find","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","panelState","settings","columnFormats","getColumnFormats","isValueShown","timestamp","column","state","valuesTable","valuesColumn","sourceSize","values","wasFlipped","skipUpdate","isDisconnected","isLoading","isLoaded","componentDidMount","updateValuesTable","sourceTable","getSourceTable","startListeningToSource","sendUpdate","componentDidUpdate","prevProps","prevState","getSource","prevSource","prevSourceTable","updateFormatterSettings","close","stopListeningToSource","componentWillUnmount","cancel","cleanup","getCoordinateForColumn","current","element","querySelector","SOURCE_BUTTON_CLASS_NAME","rect","getBoundingClientRect","width","height","x","left","y","bottom","getSettingsErrorMessage","MAX_TABLE_SIZE","getPanelErrorMessage","panelLinks","getCachedPanelLinks","getCachedSource","getCachedSourceTable","getValuesColumn","getCachedSourceColumn","addEventListener","Table","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","EVENT_SIZECHANGED","EVENT_DISCONNECT","EVENT_RECONNECT","removeEventListener","Date","now","setState","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","clearFilter","setPanelState","setFilterState","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCanceled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","rows","row","columnSelectionValidator","render","disableLinking","glContainer","isLinkerActive","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","showTimeZone","showTSeparator","defaultDateTimeFormatString","Object","freeze","mapStateToProps","ownProps","localDashboardId","activeTool","isolatedLinkerPanelId","LINKER","forwardRef"],"sources":["../../src/panels/DropdownFilterPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport dh from '@deephaven/jsapi-shim';\nimport type { Column, Row, Table, TableTemplate } from '@deephaven/jsapi-shim';\nimport {\n DateTimeColumnFormatter,\n Formatter,\n FormatterUtils,\n FormattingRule,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings, RootState } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport DropdownFilter, {\n DropdownFilterColumn,\n} from '../controls/dropdown-filter/DropdownFilter';\nimport { InputFilterEvent } from '../events';\nimport {\n getColumnsForDashboard,\n getColumnSelectionValidatorForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n} from '../redux';\nimport './DropdownFilterPanel.scss';\nimport ToolType from '../linker/ToolType';\nimport WidgetPanel from './WidgetPanel';\nimport type { Link, LinkPoint } from '../linker/LinkerUtils';\nimport { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\ninterface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface DropdownFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState?: PanelState;\n isLinkerActive: boolean;\n columns: Column[];\n columnSelectionValidator?: ColumnSelectionValidator;\n disableLinking: boolean;\n settings: {\n formatter: FormattingRule[];\n };\n // eslint-disable-next-line react/no-unused-prop-types\n panelTableMap: Map<string | string[], TableTemplate>;\n // eslint-disable-next-line react/no-unused-prop-types\n dashboardLinks: Link[];\n}\n\ninterface DropdownFilterPanelState {\n column?: DropdownFilterColumn;\n formatter: Formatter;\n valuesTable?: TableTemplate;\n valuesColumn?: Column;\n sourceSize: number;\n value: string;\n timestamp?: number;\n values: unknown[];\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n\n panelState?: PanelState; // Dehydrated panel state that can load this panel\n\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n error: unknown | null;\n}\n\nclass DropdownFilterPanel extends Component<\n DropdownFilterPanelProps,\n DropdownFilterPanelState\n> {\n static displayName = 'DropdownFilterPanel';\n\n static COMPONENT = 'DropdownFilterPanel';\n\n static MAX_TABLE_SIZE = 256;\n\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n static DATETIME_FORMATTER = new DateTimeColumnFormatter({\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\n\n static SOURCE_COLUMN = Object.freeze({\n name: 'FilterSource',\n type: null,\n });\n\n constructor(props: DropdownFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n DROPDOWN_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n\n this.dropdownFilterRef = React.createRef();\n this.panelContainer = React.createRef();\n this.pending = new Pending();\n\n const { panelState, settings } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n const { value = '', isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n const column = name != null && type != null ? { name, type } : undefined;\n this.state = {\n column,\n formatter: new Formatter(this.columnFormats),\n valuesTable: undefined,\n valuesColumn: undefined,\n sourceSize: 0,\n value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null,\n };\n }\n\n componentDidMount() {\n this.updateValuesTable();\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable();\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterPanelProps,\n prevState: DropdownFilterPanelState\n ) {\n const { valuesTable } = this.state;\n const { settings } = this.props;\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n const prevSource = this.getSource(prevProps);\n const prevSourceTable = this.getSourceTable(prevProps);\n\n if (settings !== prevProps.settings && settings !== undefined) {\n this.updateFormatterSettings(settings);\n }\n\n if (\n valuesTable !== prevState.valuesTable &&\n prevState.valuesTable != null\n ) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n\n componentWillUnmount(): void {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable != null) {\n valuesTable.close();\n }\n }\n\n dropdownFilterRef: RefObject<DropdownFilter>;\n\n panelContainer: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n cleanup?: () => void;\n\n columnFormats?: FormattingRule[];\n\n getCachedValues = memoize(\n (\n rawValues: unknown[],\n { type, name }: DropdownFilterColumn,\n formatter: Formatter\n ) => {\n if (type !== undefined && TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n DropdownFilterPanel.DATETIME_FORMATTER.format(value as number)\n );\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null && type != null\n ? formatter.getFormattedString(value, type, name)\n : null\n );\n }\n );\n\n getCoordinateForColumn(): [number, number] | null {\n if (this.panelContainer.current == null) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(\n `.${DropdownFilter.SOURCE_BUTTON_CLASS_NAME}`\n );\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n getSettingsErrorMessage(): string | undefined {\n const { sourceSize } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return `Table too large, must have fewer than ${DropdownFilterPanel.MAX_TABLE_SIZE} options.`;\n }\n return undefined;\n }\n\n getPanelErrorMessage(): string | undefined {\n const { error } = this.state;\n return error != null ? `${error}` : undefined;\n }\n\n getCachedPanelLinks = memoize(\n (dashboardLinks: Link[], panel: DropdownFilterPanel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n }\n );\n\n getCachedSource = memoize((links: Link[]) => {\n log.debug('getCachedSource', links);\n let source: LinkPoint | undefined;\n if (links.length > 0) {\n const [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n });\n\n getCachedSourceTable = memoize(\n (\n panelTableMap: Map<string | string[], TableTemplate<Table>>,\n source: LinkPoint | undefined\n ) => {\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n const { panelId } = source;\n return panelTableMap.get(panelId) ?? null;\n }\n );\n\n getCachedSourceColumn = memoize(\n (table: TableTemplate, source: LinkPoint | undefined) => {\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (\n table.columns.find(\n ({ name, type }) =>\n name === source.columnName && type === source.columnType\n ) ?? null\n );\n }\n );\n\n getSource(props = this.props) {\n const { dashboardLinks } = props;\n const panelLinks = this.getCachedPanelLinks(dashboardLinks, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(props = this.props) {\n const { panelTableMap } = props;\n const source = this.getSource(props);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(valuesTable: TableTemplate): Column | null {\n const source = this.getSource();\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable: TableTemplate): void {\n log.debug('startListeningToSource');\n sourceTable.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n stopListeningToSource(sourceTable: TableTemplate): void {\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column: Partial<Column> | null;\n isValueShown?: boolean | undefined;\n value?: string | undefined;\n }) {\n const { name = undefined, type = undefined } = column ?? {};\n let sendUpdate = true;\n let timestamp: number | undefined = 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: timestamp ?? undefined,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name ?? null, type, value, timestamp);\n }\n }\n );\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }: { detail: number }) {\n this.setState({ sourceSize: detail });\n }\n\n handleColumnSelected(): void {\n log.debug('handleColumnSelected');\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMN_SELECTED,\n this,\n DropdownFilterPanel.SOURCE_COLUMN\n );\n }\n\n handleClearAllFilters(): void {\n this.dropdownFilterRef?.current?.clearFilter();\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(\n state: {\n name: string;\n type: string;\n value: string;\n isValueShown: boolean;\n },\n sendUpdate = false\n ): void {\n if (this.getSource() == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\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.dropdownFilterRef?.current?.setFilterState(state);\n }\n\n sendUpdate(\n name: string | null,\n type: string | undefined,\n value: string | undefined,\n timestamp?: number\n ): void {\n const { glEventHub } = this.props;\n const sourcePanelId = this.getSource()?.panelId;\n const excludePanelIds = sourcePanelId === null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds,\n });\n\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds,\n });\n }\n\n updateValuesTable(): void {\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n log.debug('updateValuesTable', source, sourceTable);\n\n this.setState({\n values: [],\n valuesTable: undefined,\n error: null,\n });\n\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n\n if (sourceTable == null) {\n return;\n }\n\n this.setState({ isLoaded: false, sourceSize: sourceTable.size });\n\n this.pending\n .add(sourceTable.copy(), resolved => resolved.close())\n .then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({ valuesTable });\n })\n .catch((error: unknown) => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n this.setState({ isLoading: false, error });\n });\n }\n\n applySourceSorts() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceSorts', sourceTable?.sort);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n\n applySourceFilters(): void {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceFilters', sourceTable?.filter);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n\n updateViewportListener(valuesTable: TableTemplate): void {\n log.debug('updateViewportListener', valuesTable?.size);\n\n if (this.cleanup) {\n this.cleanup();\n }\n\n if (valuesTable == null) {\n this.cleanup = undefined;\n return;\n }\n\n this.cleanup = valuesTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleValuesTableUpdate\n );\n\n this.setViewport(valuesTable);\n }\n\n setViewport(valuesTable: TableTemplate): void {\n const valuesColumn = this.getValuesColumn(valuesTable);\n if (!valuesColumn) {\n log.error('values column is null');\n return;\n }\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [\n valuesColumn,\n ]);\n }\n\n updateFormatterSettings(settings: {\n formatter?: FormattingRule[] | undefined;\n }) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(columnFormats) });\n }\n }\n\n handleValuesTableUpdate({ detail }: { detail: { rows: Row[] } }) {\n const { rows } = detail;\n const { valuesTable } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n const valuesColumn = this.getValuesColumn(valuesTable);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n const values = rows.map(row => row.get(valuesColumn));\n this.setState({ values, isLoading: false, isLoaded: true, valuesColumn });\n }\n\n handleSourceMouseEnter() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n render() {\n const {\n columns,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive,\n } = this.props;\n const {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded,\n } = this.state;\n\n const source = this.getSource();\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : [];\n\n return (\n <WidgetPanel\n errorMessage={panelErrorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n isDisconnected={isDisconnected}\n className=\"iris-dropdown-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n widgetName=\"Dropdown Filter\"\n widgetType=\"DropdownFilter\"\n >\n <div\n ref={this.panelContainer}\n className=\"dropdown-filter-container h-100 w-100 container\"\n >\n <DropdownFilter\n ref={this.dropdownFilterRef}\n column={column}\n columns={columns}\n isValueShown={isValueShown}\n isLinkerActive={isLinkerActive}\n disableLinking={disableLinking}\n isLoaded={isLoaded}\n settingsError={settingsErrorMessage}\n source={source}\n value={value}\n values={formattedValues}\n onChange={this.handleChange}\n onColumnSelected={this.handleColumnSelected}\n onSourceMouseEnter={this.handleSourceMouseEnter}\n onSourceMouseLeave={this.handleSourceMouseLeave}\n />\n </div>\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string; glContainer: Container }\n) => {\n const { localDashboardId } = ownProps;\n const panelId = LayoutUtils.getIdFromPanel({ props: ownProps });\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const dashboardLinks = getLinksForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER &&\n (isolatedLinkerPanelId === undefined || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n const disableLinking =\n activeTool === ToolType.LINKER &&\n isolatedLinkerPanelId !== undefined &&\n isolatedLinkerPanelId !== panelId;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n DropdownFilterPanel\n);\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
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
2
|
import Log from '@deephaven/log';
|
|
4
3
|
import { getFileStorage } from '@deephaven/redux';
|
|
5
4
|
import FileExplorer, { FileExplorerToolbar, FileUtils, NewItemModal } from '@deephaven/file-explorer';
|
|
@@ -10,7 +9,6 @@ import { NotebookEvent } from "../events/index.js";
|
|
|
10
9
|
import "./FileExplorerPanel.css";
|
|
11
10
|
import { getDashboardSessionWrapper } from "../redux/index.js";
|
|
12
11
|
var log = Log.module('FileExplorerPanel');
|
|
13
|
-
|
|
14
12
|
var mapStateToProps = (state, ownProps) => {
|
|
15
13
|
var fileStorage = getFileStorage(state);
|
|
16
14
|
var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);
|
|
@@ -25,40 +23,35 @@ var mapStateToProps = (state, ownProps) => {
|
|
|
25
23
|
session
|
|
26
24
|
};
|
|
27
25
|
};
|
|
28
|
-
|
|
29
26
|
var connector = connect(mapStateToProps, null, null, {
|
|
30
27
|
forwardRef: true
|
|
31
28
|
});
|
|
32
|
-
|
|
33
29
|
function isMouseEvent(e) {
|
|
34
30
|
var mouseEvent = e;
|
|
35
31
|
return mouseEvent != null && typeof mouseEvent.button === 'number';
|
|
36
32
|
}
|
|
33
|
+
|
|
37
34
|
/**
|
|
38
35
|
* Panel for showing a FileExplorer in a Dashboard.
|
|
39
36
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
37
|
export class FileExplorerPanel extends React.Component {
|
|
43
38
|
static handleError(error) {
|
|
44
39
|
log.error(error);
|
|
45
40
|
}
|
|
41
|
+
|
|
46
42
|
/**
|
|
47
43
|
* Return true if the event should open a file and focus it, otherwise false
|
|
48
44
|
* @param event The event to check
|
|
49
45
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
46
|
static isFocusEvent(event) {
|
|
53
47
|
if (isMouseEvent(event)) {
|
|
54
48
|
// If it's not a double click, then it's a preview event
|
|
55
49
|
return event.detail >= 2;
|
|
56
|
-
}
|
|
57
|
-
|
|
50
|
+
}
|
|
58
51
|
|
|
52
|
+
// Keyboard event should always open with focus
|
|
59
53
|
return true;
|
|
60
54
|
}
|
|
61
|
-
|
|
62
55
|
constructor(props) {
|
|
63
56
|
super(props);
|
|
64
57
|
this.handleFileSelect = this.handleFileSelect.bind(this);
|
|
@@ -84,7 +77,6 @@ export class FileExplorerPanel extends React.Component {
|
|
|
84
77
|
focusedFilePath: '/'
|
|
85
78
|
};
|
|
86
79
|
}
|
|
87
|
-
|
|
88
80
|
componentDidMount() {
|
|
89
81
|
if (!this.isHidden()) {
|
|
90
82
|
this.setState({
|
|
@@ -92,7 +84,6 @@ export class FileExplorerPanel extends React.Component {
|
|
|
92
84
|
});
|
|
93
85
|
}
|
|
94
86
|
}
|
|
95
|
-
|
|
96
87
|
handleCreateFile() {
|
|
97
88
|
var {
|
|
98
89
|
glEventHub
|
|
@@ -108,20 +99,17 @@ export class FileExplorerPanel extends React.Component {
|
|
|
108
99
|
log.debug('handleCreateFile', session, language, notebookSettings);
|
|
109
100
|
glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, language, notebookSettings);
|
|
110
101
|
}
|
|
111
|
-
|
|
112
102
|
handleCreateDirectory(path) {
|
|
113
103
|
this.setState({
|
|
114
104
|
showCreateFolder: true
|
|
115
105
|
});
|
|
116
106
|
}
|
|
117
|
-
|
|
118
107
|
handleCreateDirectoryCancel() {
|
|
119
108
|
log.debug('handleCreateDirectoryCancel');
|
|
120
109
|
this.setState({
|
|
121
110
|
showCreateFolder: false
|
|
122
111
|
});
|
|
123
112
|
}
|
|
124
|
-
|
|
125
113
|
handleCreateDirectorySubmit(path) {
|
|
126
114
|
log.debug('handleCreateDirectorySubmit', path);
|
|
127
115
|
this.setState({
|
|
@@ -132,7 +120,6 @@ export class FileExplorerPanel extends React.Component {
|
|
|
132
120
|
} = this.props;
|
|
133
121
|
fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);
|
|
134
122
|
}
|
|
135
|
-
|
|
136
123
|
handleDelete(files) {
|
|
137
124
|
var {
|
|
138
125
|
glEventHub
|
|
@@ -144,10 +131,8 @@ export class FileExplorerPanel extends React.Component {
|
|
|
144
131
|
});
|
|
145
132
|
});
|
|
146
133
|
}
|
|
147
|
-
|
|
148
134
|
handleSelectionChange(selectedItems) {
|
|
149
135
|
var path = '/';
|
|
150
|
-
|
|
151
136
|
if (selectedItems.length === 1) {
|
|
152
137
|
if (selectedItems[0].type === 'directory') {
|
|
153
138
|
path = FileUtils.makePath(selectedItems[0].filename);
|
|
@@ -155,19 +140,15 @@ export class FileExplorerPanel extends React.Component {
|
|
|
155
140
|
path = FileUtils.getPath(selectedItems[0].filename);
|
|
156
141
|
}
|
|
157
142
|
}
|
|
158
|
-
|
|
159
143
|
this.setState({
|
|
160
144
|
focusedFilePath: path
|
|
161
145
|
});
|
|
162
146
|
}
|
|
163
|
-
|
|
164
147
|
handleFileSelect(file, event) {
|
|
165
148
|
log.debug('fileSelect', file);
|
|
166
|
-
|
|
167
149
|
if (file.type === 'directory') {
|
|
168
150
|
return;
|
|
169
151
|
}
|
|
170
|
-
|
|
171
152
|
var shouldFocus = FileExplorerPanel.isFocusEvent(event);
|
|
172
153
|
var fileMetadata = {
|
|
173
154
|
id: file.filename,
|
|
@@ -186,7 +167,6 @@ export class FileExplorerPanel extends React.Component {
|
|
|
186
167
|
};
|
|
187
168
|
glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, language, notebookSettings, fileMetadata, shouldFocus);
|
|
188
169
|
}
|
|
189
|
-
|
|
190
170
|
handleRename(oldName, newName) {
|
|
191
171
|
var {
|
|
192
172
|
glEventHub
|
|
@@ -194,7 +174,6 @@ export class FileExplorerPanel extends React.Component {
|
|
|
194
174
|
log.debug('handleRename', oldName, newName);
|
|
195
175
|
glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);
|
|
196
176
|
}
|
|
197
|
-
|
|
198
177
|
handleSessionOpened(session, _ref) {
|
|
199
178
|
var {
|
|
200
179
|
language
|
|
@@ -204,20 +183,17 @@ export class FileExplorerPanel extends React.Component {
|
|
|
204
183
|
language
|
|
205
184
|
});
|
|
206
185
|
}
|
|
207
|
-
|
|
208
186
|
handleSessionClosed() {
|
|
209
187
|
this.setState({
|
|
210
188
|
session: undefined,
|
|
211
189
|
language: undefined
|
|
212
190
|
});
|
|
213
191
|
}
|
|
214
|
-
|
|
215
192
|
handleShow() {
|
|
216
193
|
this.setState({
|
|
217
194
|
isShown: true
|
|
218
195
|
});
|
|
219
196
|
}
|
|
220
|
-
|
|
221
197
|
isHidden() {
|
|
222
198
|
var {
|
|
223
199
|
glContainer
|
|
@@ -227,7 +203,6 @@ export class FileExplorerPanel extends React.Component {
|
|
|
227
203
|
} = glContainer;
|
|
228
204
|
return isHidden;
|
|
229
205
|
}
|
|
230
|
-
|
|
231
206
|
render() {
|
|
232
207
|
var {
|
|
233
208
|
fileStorage,
|
|
@@ -267,12 +242,8 @@ export class FileExplorerPanel extends React.Component {
|
|
|
267
242
|
defaultValue: focusedFilePath
|
|
268
243
|
}));
|
|
269
244
|
}
|
|
270
|
-
|
|
271
245
|
}
|
|
272
|
-
|
|
273
246
|
_defineProperty(FileExplorerPanel, "COMPONENT", 'FileExplorerPanel');
|
|
274
|
-
|
|
275
247
|
_defineProperty(FileExplorerPanel, "TITLE", 'File Explorer');
|
|
276
|
-
|
|
277
248
|
export default connector(FileExplorerPanel);
|
|
278
249
|
//# sourceMappingURL=FileExplorerPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","files","forEach","file","CLOSE_FILE","id","filename","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","newName","RENAME_FILE","undefined","glContainer","render"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n FileStorage,\n FileStorageItem,\n FileUtils,\n NewItemModal,\n} from '@deephaven/file-explorer';\nimport React, { ReactNode } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language: string;\n session?: IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel = this.handleCreateDirectoryCancel.bind(\n this\n );\n this.handleCreateDirectorySubmit = this.handleCreateDirectorySubmit.bind(\n this\n );\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(path?: string): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nexport default connector(FileExplorerPanel);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","files","forEach","file","CLOSE_FILE","id","filename","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","newName","RENAME_FILE","undefined","glContainer","render"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n FileStorage,\n FileStorageItem,\n FileUtils,\n NewItemModal,\n} from '@deephaven/file-explorer';\nimport React, { ReactNode } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language: string;\n session?: IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel = this.handleCreateDirectoryCancel.bind(\n this\n );\n this.handleCreateDirectorySubmit = this.handleCreateDirectorySubmit.bind(\n this\n );\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(path?: string): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nexport default connector(FileExplorerPanel);\n"],"mappings":";AACA,OAAOA,GAAG,MAAM,gBAAgB;AAChC,SAASC,cAAc,QAAmB,kBAAkB;AAC5D,OAAOC,YAAY,IACjBC,mBAAmB,EAGnBC,SAAS,EACTC,YAAY,QACP,0BAA0B;AACjC,OAAOC,KAAK,MAAqB,OAAO;AACxC,SAASC,OAAO,QAAwB,aAAa;AAAC,OAE/CC,KAAK;AAAA,SACHC,aAAa;AAAA;AAAA,SAEbC,0BAA0B;AAEnC,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAM,CAAC,mBAAmB,CAAC;AAU3C,IAAMC,eAAe,GAAG,CAACC,KAAgB,EAAEC,QAAkB,KAAiB;EAC5E,IAAMC,WAAW,GAAGf,cAAc,CAACa,KAAK,CAAC;EACzC,IAAMG,cAAc,GAAGP,0BAA0B,CAC/CI,KAAK,EACLC,QAAQ,CAACG,gBAAgB,CAC1B;EACD,IAAM;IAAEC,OAAO;IAAEC,MAAM,EAAEC;EAAc,CAAC,GAAGJ,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,CAAC,CAAC;EAC/D,IAAMK,QAAQ,GAAGD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,IAAI;EAEpC,OAAO;IACLP,WAAW;IACXM,QAAQ;IACRH;EACF,CAAC;AACH,CAAC;AAED,IAAMK,SAAS,GAAGjB,OAAO,CAACM,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;EAAEY,UAAU,EAAE;AAAK,CAAC,CAAC;AAc5E,SAASC,YAAY,CAAIC,CAA0B,EAA4B;EAC7E,IAAMC,UAAU,GAAGD,CAAwB;EAC3C,OAAOC,UAAU,IAAI,IAAI,IAAI,OAAOA,UAAU,CAACC,MAAM,KAAK,QAAQ;AACpE;;AAEA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,SAASxB,KAAK,CAACyB,SAAS,CAGpD;EAKA,OAAOC,WAAW,CAACC,KAAY,EAAQ;IACrCtB,GAAG,CAACsB,KAAK,CAACA,KAAK,CAAC;EAClB;;EAEA;AACF;AACA;AACA;EACE,OAAOC,YAAY,CAACC,KAA2B,EAAW;IACxD,IAAIT,YAAY,CAACS,KAAK,CAAC,EAAE;MACvB;MACA,OAAOA,KAAK,CAACC,MAAM,IAAI,CAAC;IAC1B;;IAEA;IACA,OAAO,IAAI;EACb;EAEAC,WAAW,CAACC,KAA6B,EAAE;IACzC,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACC,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACE,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACF,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACG,2BAA2B,GAAG,IAAI,CAACA,2BAA2B,CAACH,IAAI,CACtE,IAAI,CACL;IACD,IAAI,CAACI,2BAA2B,GAAG,IAAI,CAACA,2BAA2B,CAACJ,IAAI,CACtE,IAAI,CACL;IACD,IAAI,CAACK,YAAY,GAAG,IAAI,CAACA,YAAY,CAACL,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACM,YAAY,GAAG,IAAI,CAACA,YAAY,CAACN,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACO,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACP,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACQ,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACR,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACS,UAAU,GAAG,IAAI,CAACA,UAAU,CAACT,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACU,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACV,IAAI,CAAC,IAAI,CAAC;IAElE,IAAM;MAAErB,OAAO;MAAEG;IAAS,CAAC,GAAGgB,KAAK;IACnC,IAAI,CAACxB,KAAK,GAAG;MACXqC,OAAO,EAAE,KAAK;MACd7B,QAAQ;MACRH,OAAO;MACPiC,gBAAgB,EAAE,KAAK;MACvBC,eAAe,EAAE;IACnB,CAAC;EACH;EAEAC,iBAAiB,GAAS;IACxB,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE,EAAE;MACpB,IAAI,CAACC,QAAQ,CAAC;QAAEL,OAAO,EAAE;MAAK,CAAC,CAAC;IAClC;EACF;EAEAV,gBAAgB,GAAS;IACvB,IAAM;MAAEgB;IAAW,CAAC,GAAG,IAAI,CAACnB,KAAK;IACjC,IAAM;MAAEnB,OAAO;MAAEG;IAAS,CAAC,GAAG,IAAI,CAACR,KAAK;IACxC,IAAM4C,gBAAgB,GAAG;MACvBpC,QAAQ;MACRqC,KAAK,EAAE;IACT,CAAC;IACDhD,GAAG,CAACiD,KAAK,CAAC,kBAAkB,EAAEzC,OAAO,EAAEG,QAAQ,EAAEoC,gBAAgB,CAAC;IAClED,UAAU,CAACI,IAAI,CACbpD,aAAa,CAACqD,eAAe,EAC7B3C,OAAO,EACPG,QAAQ,EACRoC,gBAAgB,CACjB;EACH;EAEAhB,qBAAqB,CAACqB,IAAa,EAAQ;IACzC,IAAI,CAACP,QAAQ,CAAC;MAAEJ,gBAAgB,EAAE;IAAK,CAAC,CAAC;EAC3C;EAEAT,2BAA2B,GAAS;IAClChC,GAAG,CAACiD,KAAK,CAAC,6BAA6B,CAAC;IACxC,IAAI,CAACJ,QAAQ,CAAC;MACZJ,gBAAgB,EAAE;IACpB,CAAC,CAAC;EACJ;EAEAR,2BAA2B,CAACmB,IAAY,EAAQ;IAC9CpD,GAAG,CAACiD,KAAK,CAAC,6BAA6B,EAAEG,IAAI,CAAC;IAC9C,IAAI,CAACP,QAAQ,CAAC;MAAEJ,gBAAgB,EAAE;IAAM,CAAC,CAAC;IAC1C,IAAM;MAAEpC;IAAY,CAAC,GAAG,IAAI,CAACsB,KAAK;IAClCtB,WAAW,CAACgD,eAAe,CAACD,IAAI,CAAC,CAACE,KAAK,CAACnC,iBAAiB,CAACE,WAAW,CAAC;EACxE;EAEAa,YAAY,CAACqB,KAAwB,EAAQ;IAC3C,IAAM;MAAET;IAAW,CAAC,GAAG,IAAI,CAACnB,KAAK;IACjC4B,KAAK,CAACC,OAAO,CAACC,IAAI,IAAI;MACpBX,UAAU,CAACI,IAAI,CAACpD,aAAa,CAAC4D,UAAU,EAAE;QACxCC,EAAE,EAAEF,IAAI,CAACG,QAAQ;QACjBC,QAAQ,EAAEJ,IAAI,CAACG;MACjB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEArB,qBAAqB,CAACuB,aAAgC,EAAQ;IAC5D,IAAIV,IAAI,GAAG,GAAG;IACd,IAAIU,aAAa,CAACC,MAAM,KAAK,CAAC,EAAE;MAC9B,IAAID,aAAa,CAAC,CAAC,CAAC,CAAClD,IAAI,KAAK,WAAW,EAAE;QACzCwC,IAAI,GAAG3D,SAAS,CAACuE,QAAQ,CAACF,aAAa,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC;MACtD,CAAC,MAAM;QACLR,IAAI,GAAG3D,SAAS,CAACwE,OAAO,CAACH,aAAa,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC;MACrD;IACF;IACA,IAAI,CAACf,QAAQ,CAAC;MAAEH,eAAe,EAAEU;IAAK,CAAC,CAAC;EAC1C;EAEAxB,gBAAgB,CAAC6B,IAAqB,EAAEjC,KAA2B,EAAQ;IACzExB,GAAG,CAACiD,KAAK,CAAC,YAAY,EAAEQ,IAAI,CAAC;IAC7B,IAAIA,IAAI,CAAC7C,IAAI,KAAK,WAAW,EAAE;MAC7B;IACF;IAEA,IAAMsD,WAAW,GAAG/C,iBAAiB,CAACI,YAAY,CAACC,KAAK,CAAC;IACzD,IAAM2C,YAAY,GAAG;MAAER,EAAE,EAAEF,IAAI,CAACG,QAAQ;MAAEC,QAAQ,EAAEJ,IAAI,CAACG;IAAS,CAAC;IACnE,IAAM;MAAEd;IAAW,CAAC,GAAG,IAAI,CAACnB,KAAK;IACjC,IAAM;MAAEnB,OAAO;MAAEG;IAAS,CAAC,GAAG,IAAI,CAACR,KAAK;IACxC,IAAM4C,gBAAgB,GAAG;MACvBC,KAAK,EAAE,IAAI;MACXrC;IACF,CAAC;IACDmC,UAAU,CAACI,IAAI,CACbpD,aAAa,CAACsE,eAAe,EAC7B5D,OAAO,EACPG,QAAQ,EACRoC,gBAAgB,EAChBoB,YAAY,EACZD,WAAW,CACZ;EACH;EAEA/B,YAAY,CAACkC,OAAe,EAAEC,OAAe,EAAQ;IACnD,IAAM;MAAExB;IAAW,CAAC,GAAG,IAAI,CAACnB,KAAK;IACjC3B,GAAG,CAACiD,KAAK,CAAC,cAAc,EAAEoB,OAAO,EAAEC,OAAO,CAAC;IAC3CxB,UAAU,CAACI,IAAI,CAACpD,aAAa,CAACyE,WAAW,EAAEF,OAAO,EAAEC,OAAO,CAAC;EAC9D;EAEAlC,mBAAmB,CACjB5B,OAAmB,QAEb;IAAA,IADN;MAAEG;IAA+B,CAAC;IAElC,IAAI,CAACkC,QAAQ,CAAC;MACZrC,OAAO;MACPG;IACF,CAAC,CAAC;EACJ;EAEA0B,mBAAmB,GAAS;IAC1B,IAAI,CAACQ,QAAQ,CAAC;MACZrC,OAAO,EAAEgE,SAAS;MAClB7D,QAAQ,EAAE6D;IACZ,CAAC,CAAC;EACJ;EAEAlC,UAAU,GAAS;IACjB,IAAI,CAACO,QAAQ,CAAC;MAAEL,OAAO,EAAE;IAAK,CAAC,CAAC;EAClC;EAEAI,QAAQ,GAAY;IAClB,IAAM;MAAE6B;IAAY,CAAC,GAAG,IAAI,CAAC9C,KAAK;IAClC,IAAM;MAAEiB;IAAS,CAAC,GAAG6B,WAAW;IAChC,OAAO7B,QAAQ;EACjB;EAEA8B,MAAM,GAAc;IAClB,IAAM;MAAErE,WAAW;MAAEoE,WAAW;MAAE3B;IAAW,CAAC,GAAG,IAAI,CAACnB,KAAK;IAC3D,IAAM;MAAEa,OAAO;MAAEC,gBAAgB;MAAEC;IAAgB,CAAC,GAAG,IAAI,CAACvC,KAAK;IACjE,oBACE,oBAAC,KAAK;MACJ,SAAS,EAAC,qBAAqB;MAC/B,cAAc,EAAE,IAAK;MACrB,WAAW,EAAEsE,WAAY;MACzB,UAAU,EAAE3B,UAAW;MACvB,aAAa,EAAE,IAAI,CAACV,mBAAoB;MACxC,cAAc,EAAE,IAAI,CAACC,mBAAoB;MACzC,MAAM,EAAE,IAAI,CAACC;IAAW,gBAExB,oBAAC,mBAAmB;MAClB,UAAU,EAAE,IAAI,CAACR,gBAAiB;MAClC,YAAY,EAAE,IAAI,CAACC;IAAsB,EACzC,EACDS,OAAO,iBACN,oBAAC,YAAY;MACX,aAAa;MACb,OAAO,EAAEnC,WAAY;MACrB,QAAQ,EAAE,IAAI,CAAC6B,YAAa;MAC5B,QAAQ,EAAE,IAAI,CAACC,YAAa;MAC5B,QAAQ,EAAE,IAAI,CAACP,gBAAiB;MAChC,iBAAiB,EAAE,IAAI,CAACW;IAAsB,EAEjD,eACD,oBAAC,YAAY;MACX,MAAM,EAAEE,gBAAiB;MACzB,IAAI,EAAC,WAAW;MAChB,KAAK,EAAC,mBAAmB;MACzB,OAAO,EAAEpC,WAAY;MACrB,QAAQ,EAAE,IAAI,CAAC4B,2BAA4B;MAC3C,QAAQ,EAAE,IAAI,CAACD,2BAA4B;MAC3C,YAAY,EAAEU;IAAgB,EAC9B,CACI;EAEZ;AACF;AAAC,gBArNYvB,iBAAiB,eAIT,mBAAmB;AAAA,gBAJ3BA,iBAAiB,WAMb,eAAe;AAiNhC,eAAeN,SAAS,CAACM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManager.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManager.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FilterSetManager.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManager.tsx"],"names":[],"mappings":"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"}
|