@deephaven/dashboard-core-plugins 1.7.1 → 1.7.2-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartBuilderPluginConfig.js.map +1 -1
- package/dist/ChartPanelPlugin.js +1 -1
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartPluginConfig.js.map +1 -1
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.d.ts.map +1 -1
- package/dist/ConsolePlugin.js +12 -2
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterEvents.js.map +1 -1
- package/dist/FilterPlugin.js +2 -2
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/FilterPluginConfig.js.map +1 -1
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridPluginConfig.js.map +1 -1
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/LinkerPluginConfig.js.map +1 -1
- package/dist/MarkdownPlugin.js +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/MarkdownPluginConfig.js.map +1 -1
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasPluginConfig.js.map +1 -1
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/WidgetLoaderPluginConfig.js.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +4 -6
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +1 -2
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +1 -2
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +1 -2
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js +2 -0
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.js +8 -0
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js +2 -0
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js +2 -0
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEventMap.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/ColumnSelectionValidator.js.map +1 -1
- package/dist/linker/Linker.js +3 -3
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerEvent.js.map +1 -1
- package/dist/linker/LinkerLink.js +1 -3
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +3 -3
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +1 -1
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/linker/index.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.d.ts +0 -4
- package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +2 -7
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts +0 -12
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +1 -13
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +10 -10
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +2 -4
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +2 -4
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +2 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +11 -11
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +3 -3
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +2 -8
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +6 -6
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.d.ts +1 -7
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
- package/dist/panels/FileExplorerPanel.js +1 -2
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +12 -13
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +3 -3
- package/dist/panels/FilterSetManagerPanel.js +4 -4
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +3 -3
- package/dist/panels/InputFilterPanel.js +4 -5
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +9 -7
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +18 -13
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -2
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/IrisGridPanelTypes.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +3 -3
- package/dist/panels/LogPanel.d.ts.map +1 -1
- package/dist/panels/LogPanel.js +1 -3
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +3 -4
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +3 -3
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/MockFileStorage.js.map +1 -1
- package/dist/panels/MockFileStorageTable.js +1 -1
- package/dist/panels/MockFileStorageTable.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +7 -9
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +8 -10
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -6
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +2 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +2 -3
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +1 -3
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/WidgetPanelTypes.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- 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/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/dist/useChartLinker.js.map +1 -1
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useHydrateGrid.js.map +1 -1
- package/dist/useIrisGridModel.js +2 -2
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useLoadTablePlugin.js.map +1 -1
- package/dist/useTablePlugin.js +1 -1
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownStartPage.js","names":["React","PureComponent","Button","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","jsx","_jsx","jsxs","_jsxs","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","markdown","setState","toBeDeleted","undefined","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","className","children","kind","onClick","map","title","type","icon","id","isOpen","toggle","_defineProperty"],"sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"sourcesContent":["import React, {\n type Key,\n type MouseEventHandler,\n PureComponent,\n type ReactElement,\n} from 'react';\nimport {\n Button,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTrash } from '@deephaven/icons';\n\nimport Log from '@deephaven/log';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\n\nconst log = Log.module('MarkdownStartPage');\n\ninterface MarkdownStartPageProps {\n closedMarkdowns: ReactComponentConfig[];\n onOpen: (markdown: ReactComponentConfig) => void;\n onCreate: MouseEventHandler<HTMLButtonElement>;\n onDelete: (markdown: ReactComponentConfig) => void;\n}\n\ninterface MarkdownStartPageState {\n isDeleteModalShown: boolean;\n toBeDeleted?: ReactComponentConfig;\n}\n\nclass MarkdownStartPage extends PureComponent<\n MarkdownStartPageProps,\n MarkdownStartPageState\n> {\n static defaultProps = {\n closedMarkdowns: [],\n onOpen: (): void => undefined,\n onCreate: (): void => undefined,\n onDelete: (): void => undefined,\n };\n\n constructor(props: MarkdownStartPageProps) {\n super(props);\n this.handleDeleteButtonClick = this.handleDeleteButtonClick.bind(this);\n this.handleDeleteModalClose = this.handleDeleteModalClose.bind(this);\n this.state = {\n isDeleteModalShown: false,\n };\n }\n\n handleDeleteButtonClick(markdown: ReactComponentConfig): void {\n this.setState({ isDeleteModalShown: true, toBeDeleted: markdown });\n }\n\n handleDeleteModalClose(): void {\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n handleDeleteMarkdown(markdown?: ReactComponentConfig): void {\n log.debug('delete markdown: ', markdown);\n\n if (markdown !== undefined) {\n const { onDelete } = this.props;\n onDelete(markdown);\n }\n\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n render(): ReactElement {\n const { closedMarkdowns, onOpen, onCreate } = this.props;\n const { isDeleteModalShown, toBeDeleted } = this.state;\n\n return (\n <div className=\"markdown-panel-start-page h-100 w-100\">\n <div className=\"markdown-panel-start-page-container\">\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Start</h3>\n <div className=\"list-item\">\n <Button kind=\"ghost\" className=\"title\" onClick={onCreate}>\n New Markdown Note\n </Button>\n </div>\n </div>\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Recently Closed from Dashboard</h3>\n {closedMarkdowns.map(markdown => (\n <div className=\"list-item\" key={markdown.id as Key}>\n <Button\n kind=\"ghost\"\n className=\"title\"\n onClick={() => onOpen(markdown)}\n >\n {markdown.title}\n </Button>\n <button\n className=\"btn-link icon\"\n type=\"button\"\n onClick={() => {\n this.handleDeleteButtonClick(markdown);\n }}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n </div>\n ))}\n <Modal\n isOpen={isDeleteModalShown}\n toggle={this.handleDeleteModalClose}\n className=\"modal-dialog-centered markdown-delete-modal\"\n >\n <ModalHeader>\n Are you sure you want to permanently delete this note?\n </ModalHeader>\n <ModalBody>You can't undo this action.</ModalBody>\n <ModalFooter>\n <Button kind=\"secondary\" onClick={this.handleDeleteModalClose}>\n Cancel\n </Button>\n <Button\n kind=\"danger\"\n onClick={() => {\n this.handleDeleteMarkdown(toBeDeleted);\n }}\n >\n Delete\n </Button>\n </ModalFooter>\n </Modal>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default MarkdownStartPage;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAGVC,aAAa,QAER,OAAO;AACd,SACEC,MAAM,EACNC,KAAK,EACLC,SAAS,EACTC,WAAW,EACXC,WAAW,QACN,uBAAuB;AAC9B,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,OAAO,QAAQ,kBAAkB;AAE1C,OAAOC,GAAG,MAAM,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"file":"MarkdownStartPage.js","names":["React","PureComponent","Button","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","jsx","_jsx","jsxs","_jsxs","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","markdown","setState","toBeDeleted","undefined","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","className","children","kind","onClick","map","title","type","icon","id","isOpen","toggle","_defineProperty"],"sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"sourcesContent":["import React, {\n type Key,\n type MouseEventHandler,\n PureComponent,\n type ReactElement,\n} from 'react';\nimport {\n Button,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTrash } from '@deephaven/icons';\n\nimport Log from '@deephaven/log';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\n\nconst log = Log.module('MarkdownStartPage');\n\ninterface MarkdownStartPageProps {\n closedMarkdowns: ReactComponentConfig[];\n onOpen: (markdown: ReactComponentConfig) => void;\n onCreate: MouseEventHandler<HTMLButtonElement>;\n onDelete: (markdown: ReactComponentConfig) => void;\n}\n\ninterface MarkdownStartPageState {\n isDeleteModalShown: boolean;\n toBeDeleted?: ReactComponentConfig;\n}\n\nclass MarkdownStartPage extends PureComponent<\n MarkdownStartPageProps,\n MarkdownStartPageState\n> {\n static defaultProps = {\n closedMarkdowns: [],\n onOpen: (): void => undefined,\n onCreate: (): void => undefined,\n onDelete: (): void => undefined,\n };\n\n constructor(props: MarkdownStartPageProps) {\n super(props);\n this.handleDeleteButtonClick = this.handleDeleteButtonClick.bind(this);\n this.handleDeleteModalClose = this.handleDeleteModalClose.bind(this);\n this.state = {\n isDeleteModalShown: false,\n };\n }\n\n handleDeleteButtonClick(markdown: ReactComponentConfig): void {\n this.setState({ isDeleteModalShown: true, toBeDeleted: markdown });\n }\n\n handleDeleteModalClose(): void {\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n handleDeleteMarkdown(markdown?: ReactComponentConfig): void {\n log.debug('delete markdown: ', markdown);\n\n if (markdown !== undefined) {\n const { onDelete } = this.props;\n onDelete(markdown);\n }\n\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n render(): ReactElement {\n const { closedMarkdowns, onOpen, onCreate } = this.props;\n const { isDeleteModalShown, toBeDeleted } = this.state;\n\n return (\n <div className=\"markdown-panel-start-page h-100 w-100\">\n <div className=\"markdown-panel-start-page-container\">\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Start</h3>\n <div className=\"list-item\">\n <Button kind=\"ghost\" className=\"title\" onClick={onCreate}>\n New Markdown Note\n </Button>\n </div>\n </div>\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Recently Closed from Dashboard</h3>\n {closedMarkdowns.map(markdown => (\n <div className=\"list-item\" key={markdown.id as Key}>\n <Button\n kind=\"ghost\"\n className=\"title\"\n onClick={() => onOpen(markdown)}\n >\n {markdown.title}\n </Button>\n <button\n className=\"btn-link icon\"\n type=\"button\"\n onClick={() => {\n this.handleDeleteButtonClick(markdown);\n }}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n </div>\n ))}\n <Modal\n isOpen={isDeleteModalShown}\n toggle={this.handleDeleteModalClose}\n className=\"modal-dialog-centered markdown-delete-modal\"\n >\n <ModalHeader>\n Are you sure you want to permanently delete this note?\n </ModalHeader>\n <ModalBody>You can't undo this action.</ModalBody>\n <ModalFooter>\n <Button kind=\"secondary\" onClick={this.handleDeleteModalClose}>\n Cancel\n </Button>\n <Button\n kind=\"danger\"\n onClick={() => {\n this.handleDeleteMarkdown(toBeDeleted);\n }}\n >\n Delete\n </Button>\n </ModalFooter>\n </Modal>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default MarkdownStartPage;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownUtils.js","names":["memoize","MarkdownUtils","getNewMarkdownTitle","usedTitles","title","concat","DEFAULT_TITLE","titleIndex","indexOf","_defineProperty","closedPanels","filter","panel","component","props","panelState","content","reverse"],"sources":["../../../src/controls/markdown/MarkdownUtils.ts"],"sourcesContent":["import { type ClosedPanels } from '@deephaven/dashboard';\nimport memoize from 'memoize-one';\n\nclass MarkdownUtils {\n static DEFAULT_TITLE = 'Note';\n\n static DEFAULT_CONTENT =\n '# Markdown Note\\n\\nThis note can be edited using **markdown** for styling.';\n\n /**\n * Retrieves a new markdown title that does not conflict with the current titles\n * @param usedTitles Markdown titles that are already in use\n * @returns The new title\n */\n static getNewMarkdownTitle(usedTitles: string[]): string {\n let title = `${MarkdownUtils.DEFAULT_TITLE}`;\n let titleIndex = 0;\n while (usedTitles.indexOf(title) >= 0) {\n titleIndex += 1;\n title = `${MarkdownUtils.DEFAULT_TITLE}-${titleIndex}`;\n }\n\n return title;\n }\n\n static getClosedMarkdowns = memoize((closedPanels: ClosedPanels) =>\n closedPanels\n .filter(\n panel =>\n panel.component === 'MarkdownPanel' &&\n panel.props.panelState.content !== '' &&\n panel.props.panelState.content !== null\n )\n .reverse()\n );\n}\n\nexport default MarkdownUtils;\n"],"mappings":";;;AACA,OAAOA,OAAO,MAAM,aAAa;AAEjC,MAAMC,aAAa,CAAC;EAMlB;AACF;AACA;AACA;AACA;EACE,OAAOC,mBAAmBA,CAACC,UAAoB,EAAU;IACvD,IAAIC,KAAK,MAAAC,MAAA,CAAMJ,aAAa,CAACK,aAAa,CAAE;IAC5C,IAAIC,UAAU,GAAG,CAAC;IAClB,OAAOJ,UAAU,CAACK,OAAO,CAACJ,KAAK,CAAC,IAAI,CAAC,EAAE;MACrCG,UAAU,IAAI,CAAC;MACfH,KAAK,MAAAC,MAAA,CAAMJ,aAAa,CAACK,aAAa,OAAAD,MAAA,CAAIE,UAAU,CAAE;IACxD;IAEA,OAAOH,KAAK;EACd;AAYF;AAACK,eAAA,CAhCKR,aAAa,mBACM,MAAM;AAAAQ,eAAA,CADzBR,aAAa,qBAIf,4EAA4E;AAAAQ,eAAA,CAJ1ER,aAAa,wBAsBWD,OAAO,CAAEU,YAA0B,IAC7DA,YAAY,CACTC,MAAM,CACLC,KAAK,IACHA,KAAK,CAACC,SAAS,KAAK,eAAe,IACnCD,KAAK,CAACE,KAAK,CAACC,UAAU,CAACC,OAAO,KAAK,EAAE,IACrCJ,KAAK,CAACE,KAAK,CAACC,UAAU,CAACC,OAAO,KAAK,IACvC,CAAC,CACAC,OAAO,CAAC,CACb,CAAC;AAGH,eAAehB,aAAa"}
|
|
1
|
+
{"version":3,"file":"MarkdownUtils.js","names":["memoize","MarkdownUtils","getNewMarkdownTitle","usedTitles","title","concat","DEFAULT_TITLE","titleIndex","indexOf","_defineProperty","closedPanels","filter","panel","component","props","panelState","content","reverse"],"sources":["../../../src/controls/markdown/MarkdownUtils.ts"],"sourcesContent":["import { type ClosedPanels } from '@deephaven/dashboard';\nimport memoize from 'memoize-one';\n\nclass MarkdownUtils {\n static DEFAULT_TITLE = 'Note';\n\n static DEFAULT_CONTENT =\n '# Markdown Note\\n\\nThis note can be edited using **markdown** for styling.';\n\n /**\n * Retrieves a new markdown title that does not conflict with the current titles\n * @param usedTitles Markdown titles that are already in use\n * @returns The new title\n */\n static getNewMarkdownTitle(usedTitles: string[]): string {\n let title = `${MarkdownUtils.DEFAULT_TITLE}`;\n let titleIndex = 0;\n while (usedTitles.indexOf(title) >= 0) {\n titleIndex += 1;\n title = `${MarkdownUtils.DEFAULT_TITLE}-${titleIndex}`;\n }\n\n return title;\n }\n\n static getClosedMarkdowns = memoize((closedPanels: ClosedPanels) =>\n closedPanels\n .filter(\n panel =>\n panel.component === 'MarkdownPanel' &&\n panel.props.panelState.content !== '' &&\n panel.props.panelState.content !== null\n )\n .reverse()\n );\n}\n\nexport default MarkdownUtils;\n"],"mappings":";;;AACA,OAAOA,OAAO,MAAM,aAAa;AAEjC,MAAMC,aAAa,CAAC;EAMlB;AACF;AACA;AACA;AACA;EACE,OAAOC,mBAAmBA,CAACC,UAAoB,EAAU;IACvD,IAAIC,KAAK,MAAAC,MAAA,CAAMJ,aAAa,CAACK,aAAa,CAAE;IAC5C,IAAIC,UAAU,GAAG,CAAC;IAClB,OAAOJ,UAAU,CAACK,OAAO,CAACJ,KAAK,CAAC,IAAI,CAAC,EAAE;MACrCG,UAAU,IAAI,CAAC;MACfH,KAAK,MAAAC,MAAA,CAAMJ,aAAa,CAACK,aAAa,OAAAD,MAAA,CAAIE,UAAU,CAAE;IACxD;IAEA,OAAOH,KAAK;EACd;AAYF;AAACK,eAAA,CAhCKR,aAAa,mBACM,MAAM;AAAAQ,eAAA,CADzBR,aAAa,qBAIf,4EAA4E;AAAAQ,eAAA,CAJ1ER,aAAa,wBAsBWD,OAAO,CAAEU,YAA0B,IAC7DA,YAAY,CACTC,MAAM,CACLC,KAAK,IACHA,KAAK,CAACC,SAAS,KAAK,eAAe,IACnCD,KAAK,CAACE,KAAK,CAACC,UAAU,CAACC,OAAO,KAAK,EAAE,IACrCJ,KAAK,CAACE,KAAK,CAACC,UAAU,CAACC,OAAO,KAAK,IACvC,CAAC,CACAC,OAAO,CAAC,CACb,CAAC;AAGH,eAAehB,aAAa","ignoreList":[]}
|
|
@@ -2,7 +2,9 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
class ChartEvent {}
|
|
5
|
+
/** @deprecated Use PanelEvent.OPEN instead */
|
|
5
6
|
_defineProperty(ChartEvent, "OPEN", 'ChartEvent.OPEN');
|
|
7
|
+
/** @deprecated Use PanelEvent.CLOSE instead */
|
|
6
8
|
_defineProperty(ChartEvent, "CLOSE", 'ChartEvent.CLOSE');
|
|
7
9
|
_defineProperty(ChartEvent, "COLUMN_SELECTED", 'ChartEvent.COLUMN_SELECTED');
|
|
8
10
|
export default ChartEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartEvent.js","names":["ChartEvent","_defineProperty"],"sources":["../../src/events/ChartEvent.ts"],"sourcesContent":["class ChartEvent {\n /** @deprecated Use PanelEvent.OPEN instead */\n static OPEN = 'ChartEvent.OPEN';\n\n /** @deprecated Use PanelEvent.CLOSE instead */\n static CLOSE = 'ChartEvent.CLOSE';\n\n static COLUMN_SELECTED = 'ChartEvent.COLUMN_SELECTED';\n}\n\nexport default ChartEvent;\n"],"mappings":";;;AAAA,MAAMA,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartEvent.js","names":["ChartEvent","_defineProperty"],"sources":["../../src/events/ChartEvent.ts"],"sourcesContent":["class ChartEvent {\n /** @deprecated Use PanelEvent.OPEN instead */\n static OPEN = 'ChartEvent.OPEN';\n\n /** @deprecated Use PanelEvent.CLOSE instead */\n static CLOSE = 'ChartEvent.CLOSE';\n\n static COLUMN_SELECTED = 'ChartEvent.COLUMN_SELECTED';\n}\n\nexport default ChartEvent;\n"],"mappings":";;;AAAA,MAAMA,UAAU,CAAC;AACf;AAAAC,eAAA,CADID,UAAU,UAEA,iBAAiB;AAE/B;AAAAC,eAAA,CAJID,UAAU,WAKC,kBAAkB;AAAAC,eAAA,CAL7BD,UAAU,qBAOW,4BAA4B;AAGvD,eAAeA,UAAU","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleEvent.js","names":["ConsoleEvent","_defineProperty"],"sources":["../../src/events/ConsoleEvent.ts"],"sourcesContent":["class ConsoleEvent {\n static SESSION_OPENED = 'ConsoleEvent.SESSION_OPENED';\n\n static SESSION_CLOSED = 'ConsoleEvent.SESSION_CLOSED';\n\n static FOCUS_HISTORY = 'ConsoleEvent.FOCUS_HISTORY';\n\n static SEND_COMMAND = 'ConsoleEvent.SEND_COMMAND';\n\n static SETTINGS_CHANGED = 'ConsoleEvent.SETTINGS_CHANGED';\n}\n\nexport default ConsoleEvent;\n"],"mappings":";;;AAAA,MAAMA,YAAY,CAAC;AAUlBC,eAAA,CAVKD,YAAY,oBACQ,6BAA6B;AAAAC,eAAA,CADjDD,YAAY,oBAGQ,6BAA6B;AAAAC,eAAA,CAHjDD,YAAY,mBAKO,4BAA4B;AAAAC,eAAA,CAL/CD,YAAY,kBAOM,2BAA2B;AAAAC,eAAA,CAP7CD,YAAY,sBASU,+BAA+B;AAG3D,eAAeA,YAAY"}
|
|
1
|
+
{"version":3,"file":"ConsoleEvent.js","names":["ConsoleEvent","_defineProperty"],"sources":["../../src/events/ConsoleEvent.ts"],"sourcesContent":["class ConsoleEvent {\n static SESSION_OPENED = 'ConsoleEvent.SESSION_OPENED';\n\n static SESSION_CLOSED = 'ConsoleEvent.SESSION_CLOSED';\n\n static FOCUS_HISTORY = 'ConsoleEvent.FOCUS_HISTORY';\n\n static SEND_COMMAND = 'ConsoleEvent.SEND_COMMAND';\n\n static SETTINGS_CHANGED = 'ConsoleEvent.SETTINGS_CHANGED';\n}\n\nexport default ConsoleEvent;\n"],"mappings":";;;AAAA,MAAMA,YAAY,CAAC;AAUlBC,eAAA,CAVKD,YAAY,oBACQ,6BAA6B;AAAAC,eAAA,CADjDD,YAAY,oBAGQ,6BAA6B;AAAAC,eAAA,CAHjDD,YAAY,mBAKO,4BAA4B;AAAAC,eAAA,CAL/CD,YAAY,kBAOM,2BAA2B;AAAAC,eAAA,CAP7CD,YAAY,sBASU,+BAA+B;AAG3D,eAAeA,YAAY","ignoreList":[]}
|
|
@@ -2,13 +2,21 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
class InputFilterEvent {}
|
|
5
|
+
/** table object for a given panel has changed */
|
|
5
6
|
_defineProperty(InputFilterEvent, "TABLE_CHANGED", 'InputFilterEvent.TABLE_CHANGED');
|
|
7
|
+
/** columns list for a given panel has changed */
|
|
6
8
|
_defineProperty(InputFilterEvent, "COLUMNS_CHANGED", 'InputFilterEvent.COLUMNS_CHANGED');
|
|
9
|
+
/** The filter values from an filter panel have changed */
|
|
7
10
|
_defineProperty(InputFilterEvent, "FILTERS_CHANGED", 'InputFilterEvent.FILTERS_CHANGED');
|
|
11
|
+
/** Clear all the values in currently open filter panels */
|
|
8
12
|
_defineProperty(InputFilterEvent, "CLEAR_ALL_FILTERS", 'InputFilterEvent.CLEAR_ALL_FILTERS');
|
|
13
|
+
/** A column was selected from an input filter panel */
|
|
9
14
|
_defineProperty(InputFilterEvent, "COLUMN_SELECTED", 'InputFilterEvent.COLUMN_SELECTED');
|
|
15
|
+
/** Open a Dropdown filter panel */
|
|
10
16
|
_defineProperty(InputFilterEvent, "OPEN_DROPDOWN", 'InputFilterEvent.OPEN_DROPDOWN');
|
|
17
|
+
/** Open an input filter panel */
|
|
11
18
|
_defineProperty(InputFilterEvent, "OPEN_INPUT", 'InputFilterEvent.OPEN_INPUT');
|
|
19
|
+
/** Open a filter set manager panel */
|
|
12
20
|
_defineProperty(InputFilterEvent, "OPEN_FILTER_SET_MANAGER", 'InputFilterEvent.OPEN_FILTER_SET_MANAGER');
|
|
13
21
|
export default InputFilterEvent;
|
|
14
22
|
//# sourceMappingURL=InputFilterEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFilterEvent.js","names":["InputFilterEvent","_defineProperty"],"sources":["../../src/events/InputFilterEvent.ts"],"sourcesContent":["class InputFilterEvent {\n /** table object for a given panel has changed */\n static TABLE_CHANGED = 'InputFilterEvent.TABLE_CHANGED';\n\n /** columns list for a given panel has changed */\n static COLUMNS_CHANGED = 'InputFilterEvent.COLUMNS_CHANGED';\n\n /** The filter values from an filter panel have changed */\n static FILTERS_CHANGED = 'InputFilterEvent.FILTERS_CHANGED';\n\n /** Clear all the values in currently open filter panels */\n static CLEAR_ALL_FILTERS = 'InputFilterEvent.CLEAR_ALL_FILTERS';\n\n /** A column was selected from an input filter panel */\n static COLUMN_SELECTED = 'InputFilterEvent.COLUMN_SELECTED';\n\n /** Open a Dropdown filter panel */\n static OPEN_DROPDOWN = 'InputFilterEvent.OPEN_DROPDOWN';\n\n /** Open an input filter panel */\n static OPEN_INPUT = 'InputFilterEvent.OPEN_INPUT';\n\n /** Open a filter set manager panel */\n static OPEN_FILTER_SET_MANAGER = 'InputFilterEvent.OPEN_FILTER_SET_MANAGER';\n}\n\nexport default InputFilterEvent;\n"],"mappings":";;;AAAA,MAAMA,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"InputFilterEvent.js","names":["InputFilterEvent","_defineProperty"],"sources":["../../src/events/InputFilterEvent.ts"],"sourcesContent":["class InputFilterEvent {\n /** table object for a given panel has changed */\n static TABLE_CHANGED = 'InputFilterEvent.TABLE_CHANGED';\n\n /** columns list for a given panel has changed */\n static COLUMNS_CHANGED = 'InputFilterEvent.COLUMNS_CHANGED';\n\n /** The filter values from an filter panel have changed */\n static FILTERS_CHANGED = 'InputFilterEvent.FILTERS_CHANGED';\n\n /** Clear all the values in currently open filter panels */\n static CLEAR_ALL_FILTERS = 'InputFilterEvent.CLEAR_ALL_FILTERS';\n\n /** A column was selected from an input filter panel */\n static COLUMN_SELECTED = 'InputFilterEvent.COLUMN_SELECTED';\n\n /** Open a Dropdown filter panel */\n static OPEN_DROPDOWN = 'InputFilterEvent.OPEN_DROPDOWN';\n\n /** Open an input filter panel */\n static OPEN_INPUT = 'InputFilterEvent.OPEN_INPUT';\n\n /** Open a filter set manager panel */\n static OPEN_FILTER_SET_MANAGER = 'InputFilterEvent.OPEN_FILTER_SET_MANAGER';\n}\n\nexport default InputFilterEvent;\n"],"mappings":";;;AAAA,MAAMA,gBAAgB,CAAC;AACrB;AAAAC,eAAA,CADID,gBAAgB,mBAEG,gCAAgC;AAEvD;AAAAC,eAAA,CAJID,gBAAgB,qBAKK,kCAAkC;AAE3D;AAAAC,eAAA,CAPID,gBAAgB,qBAQK,kCAAkC;AAE3D;AAAAC,eAAA,CAVID,gBAAgB,uBAWO,oCAAoC;AAE/D;AAAAC,eAAA,CAbID,gBAAgB,qBAcK,kCAAkC;AAE3D;AAAAC,eAAA,CAhBID,gBAAgB,mBAiBG,gCAAgC;AAEvD;AAAAC,eAAA,CAnBID,gBAAgB,gBAoBA,6BAA6B;AAEjD;AAAAC,eAAA,CAtBID,gBAAgB,6BAuBa,0CAA0C;AAG7E,eAAeA,gBAAgB","ignoreList":[]}
|
|
@@ -2,7 +2,9 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
export class IrisGridEvent {}
|
|
5
|
+
/** @deprecated Use PanelEvent.OPEN instead */
|
|
5
6
|
_defineProperty(IrisGridEvent, "OPEN_GRID", 'IrisGridEvent.OPEN_GRID');
|
|
7
|
+
/** @deprecated Use PanelEvent.CLOSE instead */
|
|
6
8
|
_defineProperty(IrisGridEvent, "CLOSE_GRID", 'IrisGridEvent.CLOSE_GRID');
|
|
7
9
|
_defineProperty(IrisGridEvent, "DATA_SELECTED", 'IrisGridEvent.DATA_SELECTED');
|
|
8
10
|
_defineProperty(IrisGridEvent, "COLUMN_SELECTED", 'IrisGridEvent.COLUMN_SELECTED');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridEvent.js","names":["IrisGridEvent","_defineProperty"],"sources":["../../src/events/IrisGridEvent.ts"],"sourcesContent":["import { type RowDataMap } from '@deephaven/jsapi-utils';\nimport { type IrisGridPanel } from '../panels/IrisGridPanel';\n\nexport type IrisGridDataSelectedEventCallback = (\n panel: IrisGridPanel,\n data: RowDataMap\n) => void;\n\nexport class IrisGridEvent {\n /** @deprecated Use PanelEvent.OPEN instead */\n static OPEN_GRID = 'IrisGridEvent.OPEN_GRID';\n\n /** @deprecated Use PanelEvent.CLOSE instead */\n static CLOSE_GRID = 'IrisGridEvent.CLOSE_GRID';\n\n static DATA_SELECTED = 'IrisGridEvent.DATA_SELECTED';\n\n static COLUMN_SELECTED = 'IrisGridEvent.COLUMN_SELECTED';\n\n static STATE_CHANGED = 'IrisGridEvent.STATE_CHANGED';\n\n static CREATE_CHART = 'IrisGridevent.CREATE_CHART';\n}\n\nexport default IrisGridEvent;\n"],"mappings":";;;AAQA,OAAO,MAAMA,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridEvent.js","names":["IrisGridEvent","_defineProperty"],"sources":["../../src/events/IrisGridEvent.ts"],"sourcesContent":["import { type RowDataMap } from '@deephaven/jsapi-utils';\nimport { type IrisGridPanel } from '../panels/IrisGridPanel';\n\nexport type IrisGridDataSelectedEventCallback = (\n panel: IrisGridPanel,\n data: RowDataMap\n) => void;\n\nexport class IrisGridEvent {\n /** @deprecated Use PanelEvent.OPEN instead */\n static OPEN_GRID = 'IrisGridEvent.OPEN_GRID';\n\n /** @deprecated Use PanelEvent.CLOSE instead */\n static CLOSE_GRID = 'IrisGridEvent.CLOSE_GRID';\n\n static DATA_SELECTED = 'IrisGridEvent.DATA_SELECTED';\n\n static COLUMN_SELECTED = 'IrisGridEvent.COLUMN_SELECTED';\n\n static STATE_CHANGED = 'IrisGridEvent.STATE_CHANGED';\n\n static CREATE_CHART = 'IrisGridevent.CREATE_CHART';\n}\n\nexport default IrisGridEvent;\n"],"mappings":";;;AAQA,OAAO,MAAMA,aAAa,CAAC;AACzB;AAAAC,eAAA,CADWD,aAAa,eAEL,yBAAyB;AAE5C;AAAAC,eAAA,CAJWD,aAAa,gBAKJ,0BAA0B;AAAAC,eAAA,CALnCD,aAAa,mBAOD,6BAA6B;AAAAC,eAAA,CAPzCD,aAAa,qBASC,+BAA+B;AAAAC,eAAA,CAT7CD,aAAa,mBAWD,6BAA6B;AAAAC,eAAA,CAXzCD,aAAa,kBAaF,4BAA4B;AAGpD,eAAeA,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEvent.js","names":["Object","freeze","OPEN"],"sources":["../../src/events/MarkdownEvent.ts"],"sourcesContent":["export default Object.freeze({ OPEN: 'MarkdownEvent.OPEN' });\n"],"mappings":"AAAA,eAAeA,MAAM,CAACC,MAAM,CAAC;EAAEC,IAAI,EAAE;AAAqB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"MarkdownEvent.js","names":["Object","freeze","OPEN"],"sources":["../../src/events/MarkdownEvent.ts"],"sourcesContent":["export default Object.freeze({ OPEN: 'MarkdownEvent.OPEN' });\n"],"mappings":"AAAA,eAAeA,MAAM,CAACC,MAAM,CAAC;EAAEC,IAAI,EAAE;AAAqB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookEvent.js","names":["NotebookEvent","_defineProperty"],"sources":["../../src/events/NotebookEvent.ts"],"sourcesContent":["class NotebookEvent {\n static CREATE_NOTEBOOK = 'NotebookEvent.createNotebook';\n\n static SELECT_NOTEBOOK = 'NotebookEvent.selectNotebook';\n\n static CLOSE_FILE = 'NotebookEvent.closeFile';\n\n static RENAME = 'NotebookEvent.rename';\n\n static RENAME_FILE = 'NotebookEvent.renameFile';\n\n static REGISTER_FILE = 'NotebookEvent.registerFile';\n\n static SEND_TO_NOTEBOOK = 'NotebookEvent.sendToNotebook';\n\n static UNREGISTER_FILE = 'NotebookEvent.unregisterFile';\n\n static PROMOTE_FROM_PREVIEW = 'NotebookEvent.promoteFromPreview';\n}\n\nexport default NotebookEvent;\n"],"mappings":";;;AAAA,MAAMA,aAAa,CAAC;AAkBnBC,eAAA,CAlBKD,aAAa,qBACQ,8BAA8B;AAAAC,eAAA,CADnDD,aAAa,qBAGQ,8BAA8B;AAAAC,eAAA,CAHnDD,aAAa,gBAKG,yBAAyB;AAAAC,eAAA,CALzCD,aAAa,YAOD,sBAAsB;AAAAC,eAAA,CAPlCD,aAAa,iBASI,0BAA0B;AAAAC,eAAA,CAT3CD,aAAa,mBAWM,4BAA4B;AAAAC,eAAA,CAX/CD,aAAa,sBAaS,8BAA8B;AAAAC,eAAA,CAbpDD,aAAa,qBAeQ,8BAA8B;AAAAC,eAAA,CAfnDD,aAAa,0BAiBa,kCAAkC;AAGlE,eAAeA,aAAa"}
|
|
1
|
+
{"version":3,"file":"NotebookEvent.js","names":["NotebookEvent","_defineProperty"],"sources":["../../src/events/NotebookEvent.ts"],"sourcesContent":["class NotebookEvent {\n static CREATE_NOTEBOOK = 'NotebookEvent.createNotebook';\n\n static SELECT_NOTEBOOK = 'NotebookEvent.selectNotebook';\n\n static CLOSE_FILE = 'NotebookEvent.closeFile';\n\n static RENAME = 'NotebookEvent.rename';\n\n static RENAME_FILE = 'NotebookEvent.renameFile';\n\n static REGISTER_FILE = 'NotebookEvent.registerFile';\n\n static SEND_TO_NOTEBOOK = 'NotebookEvent.sendToNotebook';\n\n static UNREGISTER_FILE = 'NotebookEvent.unregisterFile';\n\n static PROMOTE_FROM_PREVIEW = 'NotebookEvent.promoteFromPreview';\n}\n\nexport default NotebookEvent;\n"],"mappings":";;;AAAA,MAAMA,aAAa,CAAC;AAkBnBC,eAAA,CAlBKD,aAAa,qBACQ,8BAA8B;AAAAC,eAAA,CADnDD,aAAa,qBAGQ,8BAA8B;AAAAC,eAAA,CAHnDD,aAAa,gBAKG,yBAAyB;AAAAC,eAAA,CALzCD,aAAa,YAOD,sBAAsB;AAAAC,eAAA,CAPlCD,aAAa,iBASI,0BAA0B;AAAAC,eAAA,CAT3CD,aAAa,mBAWM,4BAA4B;AAAAC,eAAA,CAX/CD,aAAa,sBAaS,8BAA8B;AAAAC,eAAA,CAbpDD,aAAa,qBAeQ,8BAA8B;AAAAC,eAAA,CAfnDD,aAAa,0BAiBa,kCAAkC;AAGlE,eAAeA,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PQEvent.js","names":["PQEvent","_defineProperty"],"sources":["../../src/events/PQEvent.ts"],"sourcesContent":["class PQEvent {\n static OPEN = 'PQEvent.open';\n\n static CLOSE = 'PQEvent.close';\n\n static RENAME = 'PQEvent.rename';\n}\n\nexport default PQEvent;\n"],"mappings":";;;AAAA,MAAMA,OAAO,CAAC;AAMbC,eAAA,CANKD,OAAO,UACG,cAAc;AAAAC,eAAA,CADxBD,OAAO,WAGI,eAAe;AAAAC,eAAA,CAH1BD,OAAO,YAKK,gBAAgB;AAGlC,eAAeA,OAAO"}
|
|
1
|
+
{"version":3,"file":"PQEvent.js","names":["PQEvent","_defineProperty"],"sources":["../../src/events/PQEvent.ts"],"sourcesContent":["class PQEvent {\n static OPEN = 'PQEvent.open';\n\n static CLOSE = 'PQEvent.close';\n\n static RENAME = 'PQEvent.rename';\n}\n\nexport default PQEvent;\n"],"mappings":";;;AAAA,MAAMA,OAAO,CAAC;AAMbC,eAAA,CANKD,OAAO,UACG,cAAc;AAAAC,eAAA,CADxBD,OAAO,WAGI,eAAe;AAAAC,eAAA,CAH1BD,OAAO,YAKK,gBAAgB;AAGlC,eAAeA,OAAO","ignoreList":[]}
|
|
@@ -2,7 +2,9 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
class PandasEvent {}
|
|
5
|
+
/** @deprecated Use PanelEvent.OPEN */
|
|
5
6
|
_defineProperty(PandasEvent, "OPEN", 'PandasEvent.OPEN');
|
|
7
|
+
/** @deprecated Use PanelEvent.CLOSE */
|
|
6
8
|
_defineProperty(PandasEvent, "CLOSE", 'PandasEvent.CLOSE');
|
|
7
9
|
export default PandasEvent;
|
|
8
10
|
//# sourceMappingURL=PandasEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PandasEvent.js","names":["PandasEvent","_defineProperty"],"sources":["../../src/events/PandasEvent.ts"],"sourcesContent":["class PandasEvent {\n /** @deprecated Use PanelEvent.OPEN */\n static OPEN = 'PandasEvent.OPEN';\n\n /** @deprecated Use PanelEvent.CLOSE */\n static CLOSE = 'PandasEvent.CLOSE';\n}\n\nexport default PandasEvent;\n"],"mappings":";;;AAAA,MAAMA,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"PandasEvent.js","names":["PandasEvent","_defineProperty"],"sources":["../../src/events/PandasEvent.ts"],"sourcesContent":["class PandasEvent {\n /** @deprecated Use PanelEvent.OPEN */\n static OPEN = 'PandasEvent.OPEN';\n\n /** @deprecated Use PanelEvent.CLOSE */\n static CLOSE = 'PandasEvent.CLOSE';\n}\n\nexport default PandasEvent;\n"],"mappings":";;;AAAA,MAAMA,WAAW,CAAC;AAChB;AAAAC,eAAA,CADID,WAAW,UAED,kBAAkB;AAEhC;AAAAC,eAAA,CAJID,WAAW,WAKA,mBAAmB;AAGpC,eAAeA,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabEventMap.js","names":[],"sources":["../../src/events/TabEventMap.ts"],"sourcesContent":["import { type ValueOf } from '@deephaven/utils';\nimport { type TabEvent } from '@deephaven/dashboard';\n\nexport type TabEventType = ValueOf<typeof TabEvent>;\n\nexport interface TabEventMap\n extends Record<TabEventType, (...args: never[]) => void> {\n [TabEvent.focus]: () => void;\n [TabEvent.blur]: () => void;\n}\n\nexport default TabEventMap;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"TabEventMap.js","names":[],"sources":["../../src/events/TabEventMap.ts"],"sourcesContent":["import { type ValueOf } from '@deephaven/utils';\nimport { type TabEvent } from '@deephaven/dashboard';\n\nexport type TabEventType = ValueOf<typeof TabEvent>;\n\nexport interface TabEventMap\n extends Record<TabEventType, (...args: never[]) => void> {\n [TabEvent.focus]: () => void;\n [TabEvent.blur]: () => void;\n}\n\nexport default TabEventMap;\n"],"mappings":"","ignoreList":[]}
|
package/dist/events/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TabEvent","DashboardTabEvent","default","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","MarkdownEvent","NotebookEvent","PandasEvent"],"sources":["../../src/events/index.ts"],"sourcesContent":["import { TabEvent as DashboardTabEvent } from '@deephaven/dashboard';\n\nexport { default as ChartEvent } from './ChartEvent';\nexport { default as ConsoleEvent } from './ConsoleEvent';\nexport { default as InputFilterEvent } from './InputFilterEvent';\nexport { default as IrisGridEvent } from './IrisGridEvent';\nexport { default as MarkdownEvent } from './MarkdownEvent';\nexport { default as NotebookEvent } from './NotebookEvent';\nexport { default as PandasEvent } from './PandasEvent';\n\n/**\n * @deprecated Use TabEvent from @deephaven/dashboard\n */\nexport const TabEvent = DashboardTabEvent;\n"],"mappings":"AAAA,SAASA,QAAQ,IAAIC,iBAAiB,QAAQ,sBAAsB;AAAC,SAE5DC,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,YAAY;AAAA,SACvBF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,aAAa;AAAA,SACxBJ,OAAO,IAAIK,aAAa;AAAA,SACxBL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,WAAW;AAE/B;AACA;AACA;AACA,OAAO,IAAMT,QAAQ,GAAGC,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["TabEvent","DashboardTabEvent","default","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","MarkdownEvent","NotebookEvent","PandasEvent"],"sources":["../../src/events/index.ts"],"sourcesContent":["import { TabEvent as DashboardTabEvent } from '@deephaven/dashboard';\n\nexport { default as ChartEvent } from './ChartEvent';\nexport { default as ConsoleEvent } from './ConsoleEvent';\nexport { default as InputFilterEvent } from './InputFilterEvent';\nexport { default as IrisGridEvent } from './IrisGridEvent';\nexport { default as MarkdownEvent } from './MarkdownEvent';\nexport { default as NotebookEvent } from './NotebookEvent';\nexport { default as PandasEvent } from './PandasEvent';\n\n/**\n * @deprecated Use TabEvent from @deephaven/dashboard\n */\nexport const TabEvent = DashboardTabEvent;\n"],"mappings":"AAAA,SAASA,QAAQ,IAAIC,iBAAiB,QAAQ,sBAAsB;AAAC,SAE5DC,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,YAAY;AAAA,SACvBF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,aAAa;AAAA,SACxBJ,OAAO,IAAIK,aAAa;AAAA,SACxBL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,WAAW;AAE/B;AACA;AACA;AACA,OAAO,IAAMT,QAAQ,GAAGC,iBAAiB","ignoreList":[]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","ChartPanelPlugin","ChartWidgetPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPanelPlugin","GridWidgetPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPanelPlugin","PandasWidgetPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPanelPlugin } from './ChartPanelPlugin';\nexport { default as ChartWidgetPlugin } from './ChartWidgetPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPanelPlugin } from './GridPanelPlugin';\nexport { default as GridWidgetPlugin } from './GridWidgetPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPanelPlugin } from './PandasPanelPlugin';\nexport { default as PandasWidgetPlugin } from './PandasWidgetPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\nexport * from './useConfigureRuff';\nexport * from './useDashboardColumnFilters';\nexport * from './useGridLinker';\nexport * from './useLoadTablePlugin';\nexport * from './useTablePlugin';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,gBAAgB;AAAA,SAC3BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,kBAAkB;AAAA,SAC7BJ,OAAO,IAAIK,wBAAwB;AAAA,SACnCL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,kBAAkB;AAAA,SAC7BR,OAAO,IAAIS,eAAe;AAAA,SAC1BT,OAAO,IAAIU,gBAAgB;AAAA,SAC3BV,OAAO,IAAIW,gBAAgB;AAAA,SAC3BX,OAAO,IAAIY,YAAY;AAAA,SACvBZ,OAAO,IAAIa,kBAAkB;AAAA,SAC7Bb,OAAO,IAAIc,cAAc;AAAA,SACzBd,OAAO,IAAIe,oBAAoB;AAAA,SAC/Bf,OAAO,IAAIgB,iBAAiB;AAAA,SAC5BhB,OAAO,IAAIiB,kBAAkB;AAAA,SAC7BjB,OAAO,IAAIkB,kBAAkB;AAAA,SAC7BlB,OAAO,IAAImB,kBAAkB;AAAA,SAC7BnB,OAAO,IAAIoB,wBAAwB;AAAA,SACnCpB,OAAO,IAAIqB,WAAW;AAAA,SACtBrB,OAAO,IAAIsB,WAAW;AAAA,SAEtBtB,OAAO,IAAIuB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","ChartPanelPlugin","ChartWidgetPlugin","ChartPluginConfig","ChartBuilderPlugin","ChartBuilderPluginConfig","ConsolePlugin","FilterPlugin","FilterPluginConfig","GridPanelPlugin","GridWidgetPlugin","GridPluginConfig","LinkerPlugin","LinkerPluginConfig","MarkdownPlugin","MarkdownPluginConfig","PandasPanelPlugin","PandasWidgetPlugin","PandasPluginConfig","WidgetLoaderPlugin","WidgetLoaderPluginConfig","ControlType","LinkerUtils","ToolType"],"sources":["../src/index.ts"],"sourcesContent":["export { default as ChartPanelPlugin } from './ChartPanelPlugin';\nexport { default as ChartWidgetPlugin } from './ChartWidgetPlugin';\nexport { default as ChartPluginConfig } from './ChartPluginConfig';\nexport { default as ChartBuilderPlugin } from './ChartBuilderPlugin';\nexport { default as ChartBuilderPluginConfig } from './ChartBuilderPluginConfig';\nexport { default as ConsolePlugin } from './ConsolePlugin';\nexport { default as FilterPlugin } from './FilterPlugin';\nexport { default as FilterPluginConfig } from './FilterPluginConfig';\nexport { default as GridPanelPlugin } from './GridPanelPlugin';\nexport { default as GridWidgetPlugin } from './GridWidgetPlugin';\nexport { default as GridPluginConfig } from './GridPluginConfig';\nexport { default as LinkerPlugin } from './LinkerPlugin';\nexport { default as LinkerPluginConfig } from './LinkerPluginConfig';\nexport { default as MarkdownPlugin } from './MarkdownPlugin';\nexport { default as MarkdownPluginConfig } from './MarkdownPluginConfig';\nexport { default as PandasPanelPlugin } from './PandasPanelPlugin';\nexport { default as PandasWidgetPlugin } from './PandasWidgetPlugin';\nexport { default as PandasPluginConfig } from './PandasPluginConfig';\nexport { default as WidgetLoaderPlugin } from './WidgetLoaderPlugin';\nexport { default as WidgetLoaderPluginConfig } from './WidgetLoaderPluginConfig';\nexport { default as ControlType } from './controls/ControlType';\nexport { default as LinkerUtils } from './linker/LinkerUtils';\nexport type { Link } from './linker/LinkerUtils';\nexport { default as ToolType } from './linker/ToolType';\nexport * from './useConfigureRuff';\nexport * from './useDashboardColumnFilters';\nexport * from './useGridLinker';\nexport * from './useLoadTablePlugin';\nexport * from './useTablePlugin';\n\nexport * from './events';\nexport * from './panels';\nexport * from './redux';\nexport * from './prop-types';\nexport * from './linker';\n"],"mappings":"SAASA,OAAO,IAAIC,gBAAgB;AAAA,SAC3BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,kBAAkB;AAAA,SAC7BJ,OAAO,IAAIK,wBAAwB;AAAA,SACnCL,OAAO,IAAIM,aAAa;AAAA,SACxBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,kBAAkB;AAAA,SAC7BR,OAAO,IAAIS,eAAe;AAAA,SAC1BT,OAAO,IAAIU,gBAAgB;AAAA,SAC3BV,OAAO,IAAIW,gBAAgB;AAAA,SAC3BX,OAAO,IAAIY,YAAY;AAAA,SACvBZ,OAAO,IAAIa,kBAAkB;AAAA,SAC7Bb,OAAO,IAAIc,cAAc;AAAA,SACzBd,OAAO,IAAIe,oBAAoB;AAAA,SAC/Bf,OAAO,IAAIgB,iBAAiB;AAAA,SAC5BhB,OAAO,IAAIiB,kBAAkB;AAAA,SAC7BjB,OAAO,IAAIkB,kBAAkB;AAAA,SAC7BlB,OAAO,IAAImB,kBAAkB;AAAA,SAC7BnB,OAAO,IAAIoB,wBAAwB;AAAA,SACnCpB,OAAO,IAAIqB,WAAW;AAAA,SACtBrB,OAAO,IAAIsB,WAAW;AAAA,SAEtBtB,OAAO,IAAIuB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSelectionValidator.js","names":[],"sources":["../../src/linker/ColumnSelectionValidator.ts"],"sourcesContent":["import { type PanelComponent } from '@deephaven/dashboard';\nimport { type LinkPointOptions, type LinkColumn } from './LinkerUtils';\n\nexport type ColumnSelectionValidator = (\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n) => boolean;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ColumnSelectionValidator.js","names":[],"sources":["../../src/linker/ColumnSelectionValidator.ts"],"sourcesContent":["import { type PanelComponent } from '@deephaven/dashboard';\nimport { type LinkPointOptions, type LinkColumn } from './LinkerUtils';\n\nexport type ColumnSelectionValidator = (\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n) => boolean;\n"],"mappings":"","ignoreList":[]}
|
package/dist/linker/Linker.js
CHANGED
|
@@ -51,7 +51,7 @@ export class Linker extends Component {
|
|
|
51
51
|
if (isolateForPanelId !== undefined) {
|
|
52
52
|
return combinedLinks.filter(link => {
|
|
53
53
|
var _link$start, _link$end;
|
|
54
|
-
return (link === null || link === void 0
|
|
54
|
+
return (link === null || link === void 0 || (_link$start = link.start) === null || _link$start === void 0 ? void 0 : _link$start.panelId) === isolateForPanelId || (link === null || link === void 0 || (_link$end = link.end) === null || _link$end === void 0 ? void 0 : _link$end.panelId) === isolateForPanelId || (link === null || link === void 0 ? void 0 : link.end) == null;
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
// Show all links in regular linker mode -- both isolated and not
|
|
@@ -483,7 +483,7 @@ export class Linker extends Component {
|
|
|
483
483
|
} else {
|
|
484
484
|
var isolatedLinks = links.filter(link => {
|
|
485
485
|
var _link$start3, _link$end3;
|
|
486
|
-
return (link === null || link === void 0
|
|
486
|
+
return (link === null || link === void 0 || (_link$start3 = link.start) === null || _link$start3 === void 0 ? void 0 : _link$start3.panelId) === isolatedLinkerPanelId || (link === null || link === void 0 || (_link$end3 = link.end) === null || _link$end3 === void 0 ? void 0 : _link$end3.panelId) === isolatedLinkerPanelId;
|
|
487
487
|
});
|
|
488
488
|
this.deleteLinks(isolatedLinks);
|
|
489
489
|
}
|
|
@@ -526,7 +526,7 @@ export class Linker extends Component {
|
|
|
526
526
|
end,
|
|
527
527
|
operator
|
|
528
528
|
} = links[i];
|
|
529
|
-
if (start.panelId === sourceId && end != null
|
|
529
|
+
if (start.panelId === sourceId && end != null) {
|
|
530
530
|
var _filterMap$get$filter, _filterMap$get;
|
|
531
531
|
var {
|
|
532
532
|
panelId: endPanelId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Linker.js","names":["React","Component","connect","nanoid","memoize","FadeTransition","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","assertNotNull","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","listenForFilterColumnsChanged","listenForLinkPointSelected","listenForLinkSourceDataSelected","listenForRegisterLinkTarget","jsx","_jsx","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","_defineProperty","Map","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","_link$start","_link$end","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkPointSelected","handleTargetRegistered","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","removerFns","CLOSE","CLOSED","DRAGGING","DROPPED","off","forEach","remove","setState","panel","column","getIdFromPanel","columnSelected","sourceId","columns","debug","deleteLinksForPanelId","linksToDelete","_ref","findColumn","deleteLinks","debug2","options","type","isIsolatedLinker","isAlwaysEnd","isOverlayShown","panelLinks","_link$start2","_link$end2","LINKER","length","isAlwaysEndPoint","arguments","overrideIsolatedLinkerPanelId","name","columnName","columnType","newLink","id","isReversed","endType","_linkInProgress$endTy","isValid","isLinkValid","finalType","existingLinkPanelId","_ref2","panelLinkEnd","existingLinkEnd","existingLinkStart","_ref3","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","_linkTargetPropMap$ge","linkTargetPropMap","unsetFilterValue","get","endPanel","getOpenedPanelById","setPanelFilterMap","filterMap","_linkTargetPropMap$ge2","setFilterValues","setFilterMap","clearAll","map","_ref4","isolatedLinks","_link$start3","_link$end3","linkId","find","l","handlers","delete","set","dataMap","panelFilterMap","i","_filterMap$get$filter","_filterMap$get","endPanelId","existingFilterMap","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","concat","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","newLinks","forceUpdate","updateLinkInProgressType","_ref5","_objectSpread","panelOrId","tableColumn","_linkInProgress$endTy2","getComponentNameFromPanel","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","in","mountOnEnter","unmountOnExit","onExited","children","getCachedLinks","messageText","onLinkSelected","onLinkDeleted","onAllLinksDeleted","onLinksUpdated","onDone","onCancel","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, type ErrorInfo } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport memoize from 'memoize-one';\nimport { FadeTransition } from '@deephaven/components';\nimport {\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n type PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n type RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getApi,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n type RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n type Link,\n type LinkColumn,\n type LinkFilterMap,\n type LinkType,\n isLinkableColumn,\n type LinkPointOptions,\n} from './LinkerUtils';\nimport {\n type FilterColumnSourceId,\n listenForFilterColumnsChanged,\n} from '../FilterEvents';\nimport {\n type LinkTargetProps,\n listenForLinkPointSelected,\n listenForLinkSourceDataSelected,\n listenForRegisterLinkTarget,\n} from './LinkerEvent';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: typeof DhType;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator:\n setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link & { endType?: LinkType };\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkPointSelected = this.handleLinkPointSelected.bind(this);\n this.handleTargetRegistered = this.handleTargetRegistered.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n private linkTargetPropMap: Map<string, LinkTargetProps> = new Map();\n\n private removerFns: (() => void)[] = [];\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n this.removerFns = [\n listenForFilterColumnsChanged(eventHub, this.handleColumnsChanged),\n listenForLinkPointSelected(eventHub, this.handleLinkPointSelected),\n listenForLinkSourceDataSelected(eventHub, this.handleUpdateValues),\n listenForRegisterLinkTarget(eventHub, this.handleTargetRegistered),\n ];\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n this.removerFns.forEach(remove => remove());\n this.removerFns = [];\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'chartLink', true);\n }\n\n handleColumnsChanged(\n sourceId: FilterColumnSourceId,\n columns: readonly LinkColumn[] | null\n ): void {\n log.debug('handleColumnsChanged', sourceId, columns);\n const { links } = this.props;\n if (sourceId == null) {\n log.error('Invalid filter columns source id', sourceId);\n return;\n }\n\n // Columns is null when dh.ui widgets with linker capability are closed\n if (columns == null) {\n this.deleteLinksForPanelId(sourceId);\n return;\n }\n // NOTE: links need to be updated to use sourceId instead of panelId. This will be done when we implement linker for dh.ui widgets DH-18840\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === sourceId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === sourceId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'tableLink');\n }\n\n handleLinkPointSelected(\n sourceId: string,\n column: LinkColumn,\n options: LinkPointOptions\n ): void {\n const { type } = options;\n const isIsolatedLinker = type === 'filterSource';\n const isAlwaysEnd = type === 'chartLink' || type === 'filterSource';\n\n // filterSource type should open in isolated linker mode\n if (!this.isOverlayShown() && sourceId != null && isIsolatedLinker) {\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelLinks = links.filter(\n link =>\n link.start?.panelId === sourceId || link.end?.panelId === sourceId\n );\n\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, sourceId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(sourceId, column, type, isAlwaysEnd, sourceId);\n }\n return;\n }\n\n this.columnSelected(sourceId, column, type, isAlwaysEnd);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param sourceId The ID of the source for the column selection\n * @param column The column that was selected\n * @param type The type of the link point\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n sourceId: string,\n column: LinkColumn,\n type: LinkType,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link & { endType?: LinkType } = {\n id: nanoid(),\n start: {\n panelId: sourceId,\n columnName,\n columnType,\n },\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n if (isAlwaysEndPoint) {\n newLink.endType = type;\n }\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed = false } = linkInProgress;\n const end = {\n panelId: sourceId,\n columnName,\n columnType,\n };\n\n const isValid =\n !(isReversed && isAlwaysEndPoint) && // Cannot add a point which is only an end when we already have an end\n LinkerUtils.isLinkValid(\n isReversed ? end : start,\n isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n if (!isValid) {\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n }\n\n // The end point is what determines the type\n // If the link is reversed, we already set the type on the linkInProgress\n const finalType = linkInProgress.endType ?? type;\n\n switch (finalType) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink': {\n const existingLinkEnd = isReversed === true ? start : end;\n const existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', { existingLinkEnd, start, end });\n // Don't allow linking more than one column per source to each chart column\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd, start: panelLinkStart }) =>\n panelLinkStart?.panelId === existingLinkStart.panelId &&\n panelLinkEnd?.panelId === existingLinkEnd.panelId &&\n panelLinkEnd?.columnName === existingLinkEnd.columnName &&\n panelLinkEnd?.columnType === existingLinkEnd.columnType\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed ? end : start,\n end: isReversed ? start : end,\n id,\n type: finalType,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const { linkTargetPropMap } = this;\n const unsetFilterValue = linkTargetPropMap.get(panelId)?.unsetFilterValue;\n if (unsetFilterValue) {\n unsetFilterValue(columnName, columnType);\n return;\n }\n\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists or target is not a panel. Ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const { linkTargetPropMap } = this;\n const setFilterValues = linkTargetPropMap.get(panelId)?.setFilterValues;\n if (setFilterValues) {\n setFilterValues(filterMap);\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug(\n 'panel no longer exists or target is not a panel. Ignoring setFilterMap',\n panelId\n );\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleTargetRegistered(\n sourceId: string,\n handlers: LinkTargetProps | null\n ): void {\n const { linkTargetPropMap } = this;\n if (handlers == null) {\n linkTargetPropMap.delete(sourceId);\n } else {\n linkTargetPropMap.set(sourceId, handlers);\n }\n }\n\n handleUpdateValues(sourceId: string, dataMap: RowDataMap): void {\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap: Map<string, LinkFilterMap> = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === sourceId && end != null && operator != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const existingFilterMap = panelFilterMap.get(endPanelId);\n const filterMap: LinkFilterMap = existingFilterMap ?? new Map();\n const filterList = filterMap.get(columnName)?.filterList ?? [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n filterList.push({ operator, text, value, startColumnIndex });\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(type: LinkType = 'invalid'): void {\n this.setState(({ linkInProgress }) => {\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n };\n }\n return null;\n });\n }\n\n isColumnSelectionValid(\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n // This is backwards compatibility for Grizzly Enterprise panels\n // IrisGridPanel is the only allowed start point for a link\n // The enterprise panels will not call this method with options\n // They are also JS and removed in sanluis, so figure this is best for now\n const isAlwaysEnd =\n typeof panelOrId === 'string'\n ? options.type === 'filterSource' || options.type === 'chartLink'\n : LayoutUtils.getComponentNameFromPanel(panelOrId) !== 'IrisGridPanel';\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed = false, start } = linkInProgress;\n const panelId =\n typeof panelOrId === 'string'\n ? panelOrId\n : LayoutUtils.getIdFromPanel(panelOrId);\n if (panelId == null) {\n return false;\n }\n\n // We've already selected an end point, so we can't select another one\n if (isReversed && isAlwaysEnd) {\n this.updateLinkInProgressType('invalid');\n return false;\n }\n\n const end = {\n panelId,\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const isValid = isReversed\n ? LinkerUtils.isLinkValid(end, start, isolatedLinkerPanelId)\n : LinkerUtils.isLinkValid(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(\n isValid ? linkInProgress.endType ?? options.type : 'invalid'\n );\n\n return isValid;\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <FadeTransition\n in={isLinkOverlayShown}\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n linkTargetPropMap={this.linkTargetPropMap}\n />\n </FadeTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Linker.js","names":["React","Component","connect","nanoid","memoize","FadeTransition","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","assertNotNull","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","listenForFilterColumnsChanged","listenForLinkPointSelected","listenForLinkSourceDataSelected","listenForRegisterLinkTarget","jsx","_jsx","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","_defineProperty","Map","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","_link$start","_link$end","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkPointSelected","handleTargetRegistered","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","removerFns","CLOSE","CLOSED","DRAGGING","DROPPED","off","forEach","remove","setState","panel","column","getIdFromPanel","columnSelected","sourceId","columns","debug","deleteLinksForPanelId","linksToDelete","_ref","findColumn","deleteLinks","debug2","options","type","isIsolatedLinker","isAlwaysEnd","isOverlayShown","panelLinks","_link$start2","_link$end2","LINKER","length","isAlwaysEndPoint","arguments","overrideIsolatedLinkerPanelId","name","columnName","columnType","newLink","id","isReversed","endType","_linkInProgress$endTy","isValid","isLinkValid","finalType","existingLinkPanelId","_ref2","panelLinkEnd","existingLinkEnd","existingLinkStart","_ref3","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","_linkTargetPropMap$ge","linkTargetPropMap","unsetFilterValue","get","endPanel","getOpenedPanelById","setPanelFilterMap","filterMap","_linkTargetPropMap$ge2","setFilterValues","setFilterMap","clearAll","map","_ref4","isolatedLinks","_link$start3","_link$end3","linkId","find","l","handlers","delete","set","dataMap","panelFilterMap","i","_filterMap$get$filter","_filterMap$get","endPanelId","existingFilterMap","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","concat","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","newLinks","forceUpdate","updateLinkInProgressType","_ref5","_objectSpread","panelOrId","tableColumn","_linkInProgress$endTy2","getComponentNameFromPanel","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","in","mountOnEnter","unmountOnExit","onExited","children","getCachedLinks","messageText","onLinkSelected","onLinkDeleted","onAllLinksDeleted","onLinksUpdated","onDone","onCancel","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, type ErrorInfo } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport memoize from 'memoize-one';\nimport { FadeTransition } from '@deephaven/components';\nimport {\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n type PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n type RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getApi,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n type RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n type Link,\n type LinkColumn,\n type LinkFilterMap,\n type LinkType,\n isLinkableColumn,\n type LinkPointOptions,\n} from './LinkerUtils';\nimport {\n type FilterColumnSourceId,\n listenForFilterColumnsChanged,\n} from '../FilterEvents';\nimport {\n type LinkTargetProps,\n listenForLinkPointSelected,\n listenForLinkSourceDataSelected,\n listenForRegisterLinkTarget,\n} from './LinkerEvent';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: typeof DhType;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator:\n setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link & { endType?: LinkType };\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkPointSelected = this.handleLinkPointSelected.bind(this);\n this.handleTargetRegistered = this.handleTargetRegistered.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n private linkTargetPropMap: Map<string, LinkTargetProps> = new Map();\n\n private removerFns: (() => void)[] = [];\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n this.removerFns = [\n listenForFilterColumnsChanged(eventHub, this.handleColumnsChanged),\n listenForLinkPointSelected(eventHub, this.handleLinkPointSelected),\n listenForLinkSourceDataSelected(eventHub, this.handleUpdateValues),\n listenForRegisterLinkTarget(eventHub, this.handleTargetRegistered),\n ];\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n this.removerFns.forEach(remove => remove());\n this.removerFns = [];\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'chartLink', true);\n }\n\n handleColumnsChanged(\n sourceId: FilterColumnSourceId,\n columns: readonly LinkColumn[] | null\n ): void {\n log.debug('handleColumnsChanged', sourceId, columns);\n const { links } = this.props;\n if (sourceId == null) {\n log.error('Invalid filter columns source id', sourceId);\n return;\n }\n\n // Columns is null when dh.ui widgets with linker capability are closed\n if (columns == null) {\n this.deleteLinksForPanelId(sourceId);\n return;\n }\n // NOTE: links need to be updated to use sourceId instead of panelId. This will be done when we implement linker for dh.ui widgets DH-18840\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === sourceId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === sourceId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'tableLink');\n }\n\n handleLinkPointSelected(\n sourceId: string,\n column: LinkColumn,\n options: LinkPointOptions\n ): void {\n const { type } = options;\n const isIsolatedLinker = type === 'filterSource';\n const isAlwaysEnd = type === 'chartLink' || type === 'filterSource';\n\n // filterSource type should open in isolated linker mode\n if (!this.isOverlayShown() && sourceId != null && isIsolatedLinker) {\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelLinks = links.filter(\n link =>\n link.start?.panelId === sourceId || link.end?.panelId === sourceId\n );\n\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, sourceId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(sourceId, column, type, isAlwaysEnd, sourceId);\n }\n return;\n }\n\n this.columnSelected(sourceId, column, type, isAlwaysEnd);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param sourceId The ID of the source for the column selection\n * @param column The column that was selected\n * @param type The type of the link point\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n sourceId: string,\n column: LinkColumn,\n type: LinkType,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link & { endType?: LinkType } = {\n id: nanoid(),\n start: {\n panelId: sourceId,\n columnName,\n columnType,\n },\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n if (isAlwaysEndPoint) {\n newLink.endType = type;\n }\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed = false } = linkInProgress;\n const end = {\n panelId: sourceId,\n columnName,\n columnType,\n };\n\n const isValid =\n !(isReversed && isAlwaysEndPoint) && // Cannot add a point which is only an end when we already have an end\n LinkerUtils.isLinkValid(\n isReversed ? end : start,\n isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n if (!isValid) {\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n }\n\n // The end point is what determines the type\n // If the link is reversed, we already set the type on the linkInProgress\n const finalType = linkInProgress.endType ?? type;\n\n switch (finalType) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink': {\n const existingLinkEnd = isReversed === true ? start : end;\n const existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', { existingLinkEnd, start, end });\n // Don't allow linking more than one column per source to each chart column\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd, start: panelLinkStart }) =>\n panelLinkStart?.panelId === existingLinkStart.panelId &&\n panelLinkEnd?.panelId === existingLinkEnd.panelId &&\n panelLinkEnd?.columnName === existingLinkEnd.columnName &&\n panelLinkEnd?.columnType === existingLinkEnd.columnType\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed ? end : start,\n end: isReversed ? start : end,\n id,\n type: finalType,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const { linkTargetPropMap } = this;\n const unsetFilterValue = linkTargetPropMap.get(panelId)?.unsetFilterValue;\n if (unsetFilterValue) {\n unsetFilterValue(columnName, columnType);\n return;\n }\n\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists or target is not a panel. Ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const { linkTargetPropMap } = this;\n const setFilterValues = linkTargetPropMap.get(panelId)?.setFilterValues;\n if (setFilterValues) {\n setFilterValues(filterMap);\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug(\n 'panel no longer exists or target is not a panel. Ignoring setFilterMap',\n panelId\n );\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleTargetRegistered(\n sourceId: string,\n handlers: LinkTargetProps | null\n ): void {\n const { linkTargetPropMap } = this;\n if (handlers == null) {\n linkTargetPropMap.delete(sourceId);\n } else {\n linkTargetPropMap.set(sourceId, handlers);\n }\n }\n\n handleUpdateValues(sourceId: string, dataMap: RowDataMap): void {\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap: Map<string, LinkFilterMap> = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === sourceId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const existingFilterMap = panelFilterMap.get(endPanelId);\n const filterMap: LinkFilterMap = existingFilterMap ?? new Map();\n const filterList = filterMap.get(columnName)?.filterList ?? [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n filterList.push({ operator, text, value, startColumnIndex });\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(type: LinkType = 'invalid'): void {\n this.setState(({ linkInProgress }) => {\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n };\n }\n return null;\n });\n }\n\n isColumnSelectionValid(\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n // This is backwards compatibility for Grizzly Enterprise panels\n // IrisGridPanel is the only allowed start point for a link\n // The enterprise panels will not call this method with options\n // They are also JS and removed in sanluis, so figure this is best for now\n const isAlwaysEnd =\n typeof panelOrId === 'string'\n ? options.type === 'filterSource' || options.type === 'chartLink'\n : LayoutUtils.getComponentNameFromPanel(panelOrId) !== 'IrisGridPanel';\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed = false, start } = linkInProgress;\n const panelId =\n typeof panelOrId === 'string'\n ? panelOrId\n : LayoutUtils.getIdFromPanel(panelOrId);\n if (panelId == null) {\n return false;\n }\n\n // We've already selected an end point, so we can't select another one\n if (isReversed && isAlwaysEnd) {\n this.updateLinkInProgressType('invalid');\n return false;\n }\n\n const end = {\n panelId,\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const isValid = isReversed\n ? LinkerUtils.isLinkValid(end, start, isolatedLinkerPanelId)\n : LinkerUtils.isLinkValid(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(\n isValid ? linkInProgress.endType ?? options.type : 'invalid'\n );\n\n return isValid;\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <FadeTransition\n in={isLinkOverlayShown}\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n linkTargetPropMap={this.linkTargetPropMap}\n />\n </FadeTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerEvent.js","names":["makeEventFunctions","LinkerEvent","Object","freeze","LINK_POINT_SELECTED","SOURCE_DATA_SELECTED","REGISTER_TARGET","linkPointSelectedFns","listenForLinkPointSelected","listen","emitLinkPointSelected","emit","useLinkPointSelectedListener","useListener","linkSourceDataSelectedFns","listenForLinkSourceDataSelected","emitLinkSourceDataSelected","useLinkSourceDataSelectedListener","registerLinkTargetFns","listenForRegisterLinkTarget","emitRegisterLinkTarget","useRegisterLinkTargetListener"],"sources":["../../src/linker/LinkerEvent.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\nimport { type RowDataMap } from '@deephaven/jsapi-utils';\nimport {\n type LinkPointOptions,\n type LinkColumn,\n type LinkFilterMap,\n} from './LinkerUtils';\n\nexport const LinkerEvent = Object.freeze({\n LINK_POINT_SELECTED: 'LinkerEvent.LINK_POINT_SELECTED',\n SOURCE_DATA_SELECTED: 'LinkerEvent.SOURCE_DATA_SELECTED',\n REGISTER_TARGET: 'LinkerEvent.REGISTER_TARGET',\n});\n\nconst linkPointSelectedFns = makeEventFunctions<\n [sourceId: string, column: LinkColumn, options: LinkPointOptions]\n>(LinkerEvent.LINK_POINT_SELECTED);\nexport const listenForLinkPointSelected = linkPointSelectedFns.listen;\n\n/**\n * Emit a linker point selected event\n * @param sourceId The source ID for the link point. Typically panel ID or widget ID\n * @param column The column selected as the link point\n * @param options Optional parameters for the link point selection\n * @param options.isAlwaysEnd Whether this link point is always the end of a link\n * @param options.isIsolatedLinker Whether this link point is selected in an isolated linker context\n */\nexport const emitLinkPointSelected = linkPointSelectedFns.emit;\nexport const useLinkPointSelectedListener = linkPointSelectedFns.useListener;\n\nconst linkSourceDataSelectedFns = makeEventFunctions<\n [sourceId: string, data: RowDataMap]\n>(LinkerEvent.SOURCE_DATA_SELECTED);\nexport const listenForLinkSourceDataSelected = linkSourceDataSelectedFns.listen;\nexport const emitLinkSourceDataSelected = linkSourceDataSelectedFns.emit;\nexport const useLinkSourceDataSelectedListener =\n linkSourceDataSelectedFns.useListener;\n\nexport type LinkTargetProps = {\n /**\n * Gets the coordinates for displaying a link point in the target.\n * Coordinates are relative to the window, not the panel.\n * @param columnName The column name to get coordinates for\n * @returns The coordinates for the column, or null if column not visible\n * @throws Error if the column is not valid for this target\n */\n getCoordinates: (columnName: string) => [number, number] | null;\n\n /**\n * Called when a link source value is selected.\n * Only includes the values from the current event, not previously set links.\n * @param filterMap The filter map to set for the target. May include multiple columns.\n */\n setFilterValues: (filterMap: LinkFilterMap) => void;\n\n /**\n * Called when a link is deleted or a filter value is unset.\n * @param columnName The column name to unset the filter value for.\n * @param type The column type of the filter to unset.\n */\n unsetFilterValue: (columnName: string, type: string | null) => void;\n\n /**\n * The ID of the golden layout panel the target is in.\n * May be the same as the sourceId if the target is a panel component.\n */\n panelId: string;\n};\n\nconst registerLinkTargetFns = makeEventFunctions<\n [sourceId: string, props: LinkTargetProps | null]\n>(LinkerEvent.REGISTER_TARGET);\n\nexport const listenForRegisterLinkTarget = registerLinkTargetFns.listen;\nexport const emitRegisterLinkTarget = registerLinkTargetFns.emit;\nexport const useRegisterLinkTargetListener = registerLinkTargetFns.useListener;\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAQ7D,OAAO,IAAMC,WAAW,GAAGC,MAAM,CAACC,MAAM,CAAC;EACvCC,mBAAmB,EAAE,iCAAiC;EACtDC,oBAAoB,EAAE,kCAAkC;EACxDC,eAAe,EAAE;AACnB,CAAC,CAAC;AAEF,IAAMC,oBAAoB,GAAGP,kBAAkB,CAE7CC,WAAW,CAACG,mBAAmB,CAAC;AAClC,OAAO,IAAMI,0BAA0B,GAAGD,oBAAoB,CAACE,MAAM;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,qBAAqB,GAAGH,oBAAoB,CAACI,IAAI;AAC9D,OAAO,IAAMC,4BAA4B,GAAGL,oBAAoB,CAACM,WAAW;AAE5E,IAAMC,yBAAyB,GAAGd,kBAAkB,CAElDC,WAAW,CAACI,oBAAoB,CAAC;AACnC,OAAO,IAAMU,+BAA+B,GAAGD,yBAAyB,CAACL,MAAM;AAC/E,OAAO,IAAMO,0BAA0B,GAAGF,yBAAyB,CAACH,IAAI;AACxE,OAAO,IAAMM,iCAAiC,GAC5CH,yBAAyB,CAACD,WAAW;AAiCvC,IAAMK,qBAAqB,GAAGlB,kBAAkB,CAE9CC,WAAW,CAACK,eAAe,CAAC;AAE9B,OAAO,IAAMa,2BAA2B,GAAGD,qBAAqB,CAACT,MAAM;AACvE,OAAO,IAAMW,sBAAsB,GAAGF,qBAAqB,CAACP,IAAI;AAChE,OAAO,IAAMU,6BAA6B,GAAGH,qBAAqB,CAACL,WAAW"}
|
|
1
|
+
{"version":3,"file":"LinkerEvent.js","names":["makeEventFunctions","LinkerEvent","Object","freeze","LINK_POINT_SELECTED","SOURCE_DATA_SELECTED","REGISTER_TARGET","linkPointSelectedFns","listenForLinkPointSelected","listen","emitLinkPointSelected","emit","useLinkPointSelectedListener","useListener","linkSourceDataSelectedFns","listenForLinkSourceDataSelected","emitLinkSourceDataSelected","useLinkSourceDataSelectedListener","registerLinkTargetFns","listenForRegisterLinkTarget","emitRegisterLinkTarget","useRegisterLinkTargetListener"],"sources":["../../src/linker/LinkerEvent.ts"],"sourcesContent":["import { makeEventFunctions } from '@deephaven/golden-layout';\nimport { type RowDataMap } from '@deephaven/jsapi-utils';\nimport {\n type LinkPointOptions,\n type LinkColumn,\n type LinkFilterMap,\n} from './LinkerUtils';\n\nexport const LinkerEvent = Object.freeze({\n LINK_POINT_SELECTED: 'LinkerEvent.LINK_POINT_SELECTED',\n SOURCE_DATA_SELECTED: 'LinkerEvent.SOURCE_DATA_SELECTED',\n REGISTER_TARGET: 'LinkerEvent.REGISTER_TARGET',\n});\n\nconst linkPointSelectedFns = makeEventFunctions<\n [sourceId: string, column: LinkColumn, options: LinkPointOptions]\n>(LinkerEvent.LINK_POINT_SELECTED);\nexport const listenForLinkPointSelected = linkPointSelectedFns.listen;\n\n/**\n * Emit a linker point selected event\n * @param sourceId The source ID for the link point. Typically panel ID or widget ID\n * @param column The column selected as the link point\n * @param options Optional parameters for the link point selection\n * @param options.isAlwaysEnd Whether this link point is always the end of a link\n * @param options.isIsolatedLinker Whether this link point is selected in an isolated linker context\n */\nexport const emitLinkPointSelected = linkPointSelectedFns.emit;\nexport const useLinkPointSelectedListener = linkPointSelectedFns.useListener;\n\nconst linkSourceDataSelectedFns = makeEventFunctions<\n [sourceId: string, data: RowDataMap]\n>(LinkerEvent.SOURCE_DATA_SELECTED);\nexport const listenForLinkSourceDataSelected = linkSourceDataSelectedFns.listen;\nexport const emitLinkSourceDataSelected = linkSourceDataSelectedFns.emit;\nexport const useLinkSourceDataSelectedListener =\n linkSourceDataSelectedFns.useListener;\n\nexport type LinkTargetProps = {\n /**\n * Gets the coordinates for displaying a link point in the target.\n * Coordinates are relative to the window, not the panel.\n * @param columnName The column name to get coordinates for\n * @returns The coordinates for the column, or null if column not visible\n * @throws Error if the column is not valid for this target\n */\n getCoordinates: (columnName: string) => [number, number] | null;\n\n /**\n * Called when a link source value is selected.\n * Only includes the values from the current event, not previously set links.\n * @param filterMap The filter map to set for the target. May include multiple columns.\n */\n setFilterValues: (filterMap: LinkFilterMap) => void;\n\n /**\n * Called when a link is deleted or a filter value is unset.\n * @param columnName The column name to unset the filter value for.\n * @param type The column type of the filter to unset.\n */\n unsetFilterValue: (columnName: string, type: string | null) => void;\n\n /**\n * The ID of the golden layout panel the target is in.\n * May be the same as the sourceId if the target is a panel component.\n */\n panelId: string;\n};\n\nconst registerLinkTargetFns = makeEventFunctions<\n [sourceId: string, props: LinkTargetProps | null]\n>(LinkerEvent.REGISTER_TARGET);\n\nexport const listenForRegisterLinkTarget = registerLinkTargetFns.listen;\nexport const emitRegisterLinkTarget = registerLinkTargetFns.emit;\nexport const useRegisterLinkTargetListener = registerLinkTargetFns.useListener;\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,0BAA0B;AAQ7D,OAAO,IAAMC,WAAW,GAAGC,MAAM,CAACC,MAAM,CAAC;EACvCC,mBAAmB,EAAE,iCAAiC;EACtDC,oBAAoB,EAAE,kCAAkC;EACxDC,eAAe,EAAE;AACnB,CAAC,CAAC;AAEF,IAAMC,oBAAoB,GAAGP,kBAAkB,CAE7CC,WAAW,CAACG,mBAAmB,CAAC;AAClC,OAAO,IAAMI,0BAA0B,GAAGD,oBAAoB,CAACE,MAAM;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,qBAAqB,GAAGH,oBAAoB,CAACI,IAAI;AAC9D,OAAO,IAAMC,4BAA4B,GAAGL,oBAAoB,CAACM,WAAW;AAE5E,IAAMC,yBAAyB,GAAGd,kBAAkB,CAElDC,WAAW,CAACI,oBAAoB,CAAC;AACnC,OAAO,IAAMU,+BAA+B,GAAGD,yBAAyB,CAACL,MAAM;AAC/E,OAAO,IAAMO,0BAA0B,GAAGF,yBAAyB,CAACH,IAAI;AACxE,OAAO,IAAMM,iCAAiC,GAC5CH,yBAAyB,CAACD,WAAW;AAiCvC,IAAMK,qBAAqB,GAAGlB,kBAAkB,CAE9CC,WAAW,CAACK,eAAe,CAAC;AAE9B,OAAO,IAAMa,2BAA2B,GAAGD,qBAAqB,CAACT,MAAM;AACvE,OAAO,IAAMW,sBAAsB,GAAGF,qBAAqB,CAACP,IAAI;AAChE,OAAO,IAAMU,6BAA6B,GAAGH,qBAAqB,CAACL,WAAW","ignoreList":[]}
|
|
@@ -11,9 +11,7 @@ import { Type as FilterType, getLabelForNumberFilter, getLabelForTextFilter, get
|
|
|
11
11
|
import Log from '@deephaven/log';
|
|
12
12
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
13
13
|
import "./LinkerLink.css";
|
|
14
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
15
|
var log = Log.module('LinkerLink');
|
|
18
16
|
|
|
19
17
|
/** The constant for how droopy the links are. Increase for more droopiness. */
|