@deephaven/dashboard-core-plugins 0.46.1-beta.2 → 0.46.1-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/LinkerPlugin.js +2 -1
  2. package/dist/LinkerPlugin.js.map +1 -1
  3. package/dist/controls/dropdown-filter/DropdownFilter.js +120 -93
  4. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  5. package/dist/controls/input-filter/InputFilter.js +85 -65
  6. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  7. package/dist/controls/markdown/MarkdownContainer.js +15 -9
  8. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  9. package/dist/controls/markdown/MarkdownEditor.js +24 -16
  10. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  11. package/dist/controls/markdown/MarkdownStartPage.js +67 -46
  12. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  13. package/dist/linker/Linker.js +17 -15
  14. package/dist/linker/Linker.js.map +1 -1
  15. package/dist/linker/LinkerLink.js +80 -65
  16. package/dist/linker/LinkerLink.js.map +1 -1
  17. package/dist/linker/LinkerOverlayContent.js +75 -65
  18. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  19. package/dist/panels/ChartColumnSelectorOverlay.js +25 -19
  20. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  21. package/dist/panels/ChartFilterOverlay.js +50 -33
  22. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  23. package/dist/panels/ChartPanel.js +51 -44
  24. package/dist/panels/ChartPanel.js.map +1 -1
  25. package/dist/panels/CommandHistoryPanel.js +21 -14
  26. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  27. package/dist/panels/ConsolePanel.js +50 -24
  28. package/dist/panels/ConsolePanel.js.map +1 -1
  29. package/dist/panels/DropdownFilterPanel.js +25 -22
  30. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  31. package/dist/panels/FileExplorerPanel.js +24 -21
  32. package/dist/panels/FileExplorerPanel.js.map +1 -1
  33. package/dist/panels/FilterSetManager.js +227 -185
  34. package/dist/panels/FilterSetManager.js.map +1 -1
  35. package/dist/panels/FilterSetManagerPanel.js +16 -13
  36. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  37. package/dist/panels/InputFilterPanel.js +12 -10
  38. package/dist/panels/InputFilterPanel.js.map +1 -1
  39. package/dist/panels/IrisGridPanel.js +76 -72
  40. package/dist/panels/IrisGridPanel.js.map +1 -1
  41. package/dist/panels/IrisGridPanelTooltip.js +18 -9
  42. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  43. package/dist/panels/LogPanel.js +14 -10
  44. package/dist/panels/LogPanel.js.map +1 -1
  45. package/dist/panels/MarkdownNotebook.js +64 -51
  46. package/dist/panels/MarkdownNotebook.js.map +1 -1
  47. package/dist/panels/MarkdownPanel.js +21 -18
  48. package/dist/panels/MarkdownPanel.js.map +1 -1
  49. package/dist/panels/NotebookPanel.js +126 -108
  50. package/dist/panels/NotebookPanel.js.map +1 -1
  51. package/dist/panels/PandasPanel.js +21 -12
  52. package/dist/panels/PandasPanel.js.map +1 -1
  53. package/dist/panels/Panel.js +30 -23
  54. package/dist/panels/Panel.js.map +1 -1
  55. package/dist/panels/PanelContextMenu.js +2 -1
  56. package/dist/panels/PanelContextMenu.js.map +1 -1
  57. package/dist/panels/RenameDialog.js +42 -31
  58. package/dist/panels/RenameDialog.js.map +1 -1
  59. package/dist/panels/WidgetPanel.js +9 -6
  60. package/dist/panels/WidgetPanel.js.map +1 -1
  61. package/dist/panels/WidgetPanelTooltip.js +31 -19
  62. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  63. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","event","target","parseInt","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"sources":["../../../src/controls/input-filter/InputFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { Button, CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (\n isValueShown !== undefined &&\n isValueShown &&\n isValueShown !== prevState.isValueShown\n ) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns: InputFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[parseInt(value, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Input Filter Settings\"\n />\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","event","target","parseInt","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"sources":["../../../src/controls/input-filter/InputFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { Button, CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (\n isValueShown !== undefined &&\n isValueShown &&\n isValueShown !== prevState.isValueShown\n ) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns: InputFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[parseInt(value, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Input Filter Settings\"\n />\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"mappings":"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"}
@@ -5,6 +5,8 @@ import React, { PureComponent } from 'react';
5
5
  import classNames from 'classnames';
6
6
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
7
  import { vsEdit } from '@deephaven/icons';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
8
10
  export default class MarkdownContainer extends PureComponent {
9
11
  render() {
10
12
  var {
@@ -12,16 +14,20 @@ export default class MarkdownContainer extends PureComponent {
12
14
  children,
13
15
  onDoubleClick
14
16
  } = this.props;
15
- return /*#__PURE__*/React.createElement("div", {
17
+ return /*#__PURE__*/_jsxs("div", {
16
18
  className: "markdown-editor-container h-100 w-100",
17
- onDoubleClick: onDoubleClick
18
- }, /*#__PURE__*/React.createElement("div", {
19
- className: classNames('text-muted', 'edit-hint', {
20
- viewing: isEditing === undefined || !isEditing
21
- })
22
- }, /*#__PURE__*/React.createElement("span", null, "double-click to edit ", /*#__PURE__*/React.createElement(FontAwesomeIcon, {
23
- icon: vsEdit
24
- }))), children);
19
+ onDoubleClick: onDoubleClick,
20
+ children: [/*#__PURE__*/_jsx("div", {
21
+ className: classNames('text-muted', 'edit-hint', {
22
+ viewing: isEditing === undefined || !isEditing
23
+ }),
24
+ children: /*#__PURE__*/_jsxs("span", {
25
+ children: ["double-click to edit ", /*#__PURE__*/_jsx(FontAwesomeIcon, {
26
+ icon: vsEdit
27
+ })]
28
+ })
29
+ }), children]
30
+ });
25
31
  }
26
32
  }
27
33
  _defineProperty(MarkdownContainer, "defaultProps", {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownContainer.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsEdit","MarkdownContainer","render","isEditing","children","onDoubleClick","props","viewing","undefined"],"sources":["../../../src/controls/markdown/MarkdownContainer.tsx"],"sourcesContent":["import React, {\n MouseEventHandler,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit } from '@deephaven/icons';\n\ninterface MarkdownContainerProps {\n onDoubleClick: MouseEventHandler;\n children: ReactNode;\n isEditing?: boolean;\n}\n\nexport default class MarkdownContainer extends PureComponent<\n MarkdownContainerProps,\n Record<string, never>\n> {\n static defaultProps = {\n isEditing: false,\n };\n\n render(): ReactElement {\n const { isEditing, children, onDoubleClick } = this.props;\n\n return (\n <div\n className=\"markdown-editor-container h-100 w-100\"\n onDoubleClick={onDoubleClick}\n >\n <div\n className={classNames('text-muted', 'edit-hint', {\n viewing: isEditing === undefined || !isEditing,\n })}\n >\n <span>\n double-click to edit <FontAwesomeIcon icon={vsEdit} />\n </span>\n </div>\n {children}\n </div>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAEVC,aAAa,QAGR,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,kBAAkB;AAQzC,eAAe,MAAMC,iBAAiB,SAASJ,aAAa,CAG1D;EAKAK,MAAM,GAAiB;IACrB,IAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACC,KAAK;IAEzD,oBACE;MACE,SAAS,EAAC,uCAAuC;MACjD,aAAa,EAAED;IAAc,gBAE7B;MACE,SAAS,EAAEP,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE;QAC/CS,OAAO,EAAEJ,SAAS,KAAKK,SAAS,IAAI,CAACL;MACvC,CAAC;IAAE,gBAEH,kCAAM,uBACiB,mCAAC,eAAe;MAAC,IAAI,EAAEH;IAAO,EAAG,CACjD,CACH,EACLI,QAAQ,CACL;EAEV;AACF;AAAC,gBA7BoBH,iBAAiB,kBAId;EACpBE,SAAS,EAAE;AACb,CAAC"}
1
+ {"version":3,"file":"MarkdownContainer.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsEdit","MarkdownContainer","render","isEditing","children","onDoubleClick","props","viewing","undefined"],"sources":["../../../src/controls/markdown/MarkdownContainer.tsx"],"sourcesContent":["import React, {\n MouseEventHandler,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit } from '@deephaven/icons';\n\ninterface MarkdownContainerProps {\n onDoubleClick: MouseEventHandler;\n children: ReactNode;\n isEditing?: boolean;\n}\n\nexport default class MarkdownContainer extends PureComponent<\n MarkdownContainerProps,\n Record<string, never>\n> {\n static defaultProps = {\n isEditing: false,\n };\n\n render(): ReactElement {\n const { isEditing, children, onDoubleClick } = this.props;\n\n return (\n <div\n className=\"markdown-editor-container h-100 w-100\"\n onDoubleClick={onDoubleClick}\n >\n <div\n className={classNames('text-muted', 'edit-hint', {\n viewing: isEditing === undefined || !isEditing,\n })}\n >\n <span>\n double-click to edit <FontAwesomeIcon icon={vsEdit} />\n </span>\n </div>\n {children}\n </div>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAEVC,aAAa,QAGR,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,kBAAkB;AAAC;AAAA;AAQ1C,eAAe,MAAMC,iBAAiB,SAASJ,aAAa,CAG1D;EAKAK,MAAM,GAAiB;IACrB,IAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACC,KAAK;IAEzD,oBACE;MACE,SAAS,EAAC,uCAAuC;MACjD,aAAa,EAAED,aAAc;MAAA,wBAE7B;QACE,SAAS,EAAEP,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE;UAC/CS,OAAO,EAAEJ,SAAS,KAAKK,SAAS,IAAI,CAACL;QACvC,CAAC,CAAE;QAAA,uBAEH;UAAA,WAAM,uBACiB,oBAAC,eAAe;YAAC,IAAI,EAAEH;UAAO,EAAG;QAAA;MACjD,EACH,EACLI,QAAQ;IAAA,EACL;EAEV;AACF;AAAC,gBA7BoBH,iBAAiB,kBAId;EACpBE,SAAS,EAAE;AACb,CAAC"}
@@ -4,15 +4,21 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
4
4
  import React, { PureComponent } from 'react';
5
5
  import Markdown from 'react-markdown';
6
6
  import { Code, Editor } from '@deephaven/console';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
7
8
  var renderMarkdown = props => {
8
9
  var {
9
10
  children,
10
11
  className
11
12
  } = props;
12
13
  var language = className !== undefined && className !== null && className !== void 0 && className.startsWith('language-') ? className.substring(9) : 'plaintext';
13
- return /*#__PURE__*/React.createElement("pre", null, /*#__PURE__*/React.createElement("code", null, /*#__PURE__*/React.createElement(Code, {
14
- language: language
15
- }, React.Children.map(children, child => typeof child === 'string' ? child.trim() : child))));
14
+ return /*#__PURE__*/_jsx("pre", {
15
+ children: /*#__PURE__*/_jsx("code", {
16
+ children: /*#__PURE__*/_jsx(Code, {
17
+ language: language,
18
+ children: React.Children.map(children, child => typeof child === 'string' ? child.trim() : child)
19
+ })
20
+ })
21
+ });
16
22
  };
17
23
  export default class MarkdownEditor extends PureComponent {
18
24
  constructor(props) {
@@ -26,23 +32,25 @@ export default class MarkdownEditor extends PureComponent {
26
32
  content,
27
33
  onEditorInitialized
28
34
  } = this.props;
29
- return /*#__PURE__*/React.createElement("div", {
35
+ return /*#__PURE__*/_jsx("div", {
30
36
  className: "markdown-editor-container",
31
37
  ref: container => {
32
38
  this.container = container;
33
- }
34
- }, isEditing ? /*#__PURE__*/React.createElement(Editor, {
35
- settings: {
36
- language: 'markdown',
37
- value: content,
38
- lineNumbers: 'off'
39
39
  },
40
- onEditorInitialized: onEditorInitialized
41
- }) : /*#__PURE__*/React.createElement(Markdown, {
42
- components: {
43
- code: renderMarkdown
44
- }
45
- }, content));
40
+ children: isEditing ? /*#__PURE__*/_jsx(Editor, {
41
+ settings: {
42
+ language: 'markdown',
43
+ value: content,
44
+ lineNumbers: 'off'
45
+ },
46
+ onEditorInitialized: onEditorInitialized
47
+ }) : /*#__PURE__*/_jsx(Markdown, {
48
+ components: {
49
+ code: renderMarkdown
50
+ },
51
+ children: content
52
+ })
53
+ });
46
54
  }
47
55
  }
48
56
  _defineProperty(MarkdownEditor, "defaultProps", {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownEditor.js","names":["React","PureComponent","Markdown","Code","Editor","renderMarkdown","props","children","className","language","undefined","startsWith","substring","Children","map","child","trim","MarkdownEditor","constructor","container","render","isEditing","content","onEditorInitialized","value","lineNumbers","code"],"sources":["../../../src/controls/markdown/MarkdownEditor.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport Markdown from 'react-markdown';\nimport { CodeComponent } from 'react-markdown/src/ast-to-react';\nimport { Code, Editor } from '@deephaven/console';\nimport type * as monaco from 'monaco-editor';\n\ninterface MarkdownEditorProps {\n isEditing: boolean;\n content: string;\n onEditorInitialized: (editor: monaco.editor.IStandaloneCodeEditor) => void;\n}\n\nconst renderMarkdown: CodeComponent = props => {\n const { children, className } = props;\n const language =\n className !== undefined && className?.startsWith('language-')\n ? className.substring(9)\n : 'plaintext';\n return (\n <pre>\n <code>\n <Code language={language}>\n {React.Children.map(children, child =>\n typeof child === 'string' ? child.trim() : child\n )}\n </Code>\n </code>\n </pre>\n );\n};\nexport default class MarkdownEditor extends PureComponent<\n MarkdownEditorProps,\n Record<string, never>\n> {\n static defaultProps = {\n isEditing: false,\n content: '',\n };\n\n constructor(props: MarkdownEditorProps) {\n super(props);\n this.container = null;\n }\n\n container: HTMLDivElement | null;\n\n render(): ReactElement {\n const { isEditing, content, onEditorInitialized } = this.props;\n return (\n <div\n className=\"markdown-editor-container\"\n ref={container => {\n this.container = container;\n }}\n >\n {isEditing ? (\n <Editor\n settings={{\n language: 'markdown',\n value: content,\n lineNumbers: 'off',\n }}\n onEditorInitialized={onEditorInitialized}\n />\n ) : (\n <Markdown components={{ code: renderMarkdown }}>{content}</Markdown>\n )}\n </div>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAAsB,OAAO;AAC1D,OAAOC,QAAQ,MAAM,gBAAgB;AAErC,SAASC,IAAI,EAAEC,MAAM,QAAQ,oBAAoB;AASjD,IAAMC,cAA6B,GAAGC,KAAK,IAAI;EAC7C,IAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGF,KAAK;EACrC,IAAMG,QAAQ,GACZD,SAAS,KAAKE,SAAS,IAAIF,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEG,UAAU,CAAC,WAAW,CAAC,GACzDH,SAAS,CAACI,SAAS,CAAC,CAAC,CAAC,GACtB,WAAW;EACjB,oBACE,8CACE,+CACE,oBAAC,IAAI;IAAC,QAAQ,EAAEH;EAAS,GACtBT,KAAK,CAACa,QAAQ,CAACC,GAAG,CAACP,QAAQ,EAAEQ,KAAK,IACjC,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACC,IAAI,EAAE,GAAGD,KAAK,CACjD,CACI,CACF,CACH;AAEV,CAAC;AACD,eAAe,MAAME,cAAc,SAAShB,aAAa,CAGvD;EAMAiB,WAAW,CAACZ,KAA0B,EAAE;IACtC,KAAK,CAACA,KAAK,CAAC;IAAC;IACb,IAAI,CAACa,SAAS,GAAG,IAAI;EACvB;EAIAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,SAAS;MAAEC,OAAO;MAAEC;IAAoB,CAAC,GAAG,IAAI,CAACjB,KAAK;IAC9D,oBACE;MACE,SAAS,EAAC,2BAA2B;MACrC,GAAG,EAAEa,SAAS,IAAI;QAChB,IAAI,CAACA,SAAS,GAAGA,SAAS;MAC5B;IAAE,GAEDE,SAAS,gBACR,oBAAC,MAAM;MACL,QAAQ,EAAE;QACRZ,QAAQ,EAAE,UAAU;QACpBe,KAAK,EAAEF,OAAO;QACdG,WAAW,EAAE;MACf,CAAE;MACF,mBAAmB,EAAEF;IAAoB,EACzC,gBAEF,oBAAC,QAAQ;MAAC,UAAU,EAAE;QAAEG,IAAI,EAAErB;MAAe;IAAE,GAAEiB,OAAO,CACzD,CACG;EAEV;AACF;AAAC,gBAxCoBL,cAAc,kBAIX;EACpBI,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE;AACX,CAAC"}
1
+ {"version":3,"file":"MarkdownEditor.js","names":["React","PureComponent","Markdown","Code","Editor","renderMarkdown","props","children","className","language","undefined","startsWith","substring","Children","map","child","trim","MarkdownEditor","constructor","container","render","isEditing","content","onEditorInitialized","value","lineNumbers","code"],"sources":["../../../src/controls/markdown/MarkdownEditor.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport Markdown from 'react-markdown';\nimport { CodeComponent } from 'react-markdown/src/ast-to-react';\nimport { Code, Editor } from '@deephaven/console';\nimport type * as monaco from 'monaco-editor';\n\ninterface MarkdownEditorProps {\n isEditing: boolean;\n content: string;\n onEditorInitialized: (editor: monaco.editor.IStandaloneCodeEditor) => void;\n}\n\nconst renderMarkdown: CodeComponent = props => {\n const { children, className } = props;\n const language =\n className !== undefined && className?.startsWith('language-')\n ? className.substring(9)\n : 'plaintext';\n return (\n <pre>\n <code>\n <Code language={language}>\n {React.Children.map(children, child =>\n typeof child === 'string' ? child.trim() : child\n )}\n </Code>\n </code>\n </pre>\n );\n};\nexport default class MarkdownEditor extends PureComponent<\n MarkdownEditorProps,\n Record<string, never>\n> {\n static defaultProps = {\n isEditing: false,\n content: '',\n };\n\n constructor(props: MarkdownEditorProps) {\n super(props);\n this.container = null;\n }\n\n container: HTMLDivElement | null;\n\n render(): ReactElement {\n const { isEditing, content, onEditorInitialized } = this.props;\n return (\n <div\n className=\"markdown-editor-container\"\n ref={container => {\n this.container = container;\n }}\n >\n {isEditing ? (\n <Editor\n settings={{\n language: 'markdown',\n value: content,\n lineNumbers: 'off',\n }}\n onEditorInitialized={onEditorInitialized}\n />\n ) : (\n <Markdown components={{ code: renderMarkdown }}>{content}</Markdown>\n )}\n </div>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAAsB,OAAO;AAC1D,OAAOC,QAAQ,MAAM,gBAAgB;AAErC,SAASC,IAAI,EAAEC,MAAM,QAAQ,oBAAoB;AAAC;AASlD,IAAMC,cAA6B,GAAGC,KAAK,IAAI;EAC7C,IAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGF,KAAK;EACrC,IAAMG,QAAQ,GACZD,SAAS,KAAKE,SAAS,IAAIF,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEG,UAAU,CAAC,WAAW,CAAC,GACzDH,SAAS,CAACI,SAAS,CAAC,CAAC,CAAC,GACtB,WAAW;EACjB,oBACE;IAAA,uBACE;MAAA,uBACE,KAAC,IAAI;QAAC,QAAQ,EAAEH,QAAS;QAAA,UACtBT,KAAK,CAACa,QAAQ,CAACC,GAAG,CAACP,QAAQ,EAAEQ,KAAK,IACjC,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACC,IAAI,EAAE,GAAGD,KAAK;MACjD;IACI;EACF,EACH;AAEV,CAAC;AACD,eAAe,MAAME,cAAc,SAAShB,aAAa,CAGvD;EAMAiB,WAAW,CAACZ,KAA0B,EAAE;IACtC,KAAK,CAACA,KAAK,CAAC;IAAC;IACb,IAAI,CAACa,SAAS,GAAG,IAAI;EACvB;EAIAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,SAAS;MAAEC,OAAO;MAAEC;IAAoB,CAAC,GAAG,IAAI,CAACjB,KAAK;IAC9D,oBACE;MACE,SAAS,EAAC,2BAA2B;MACrC,GAAG,EAAEa,SAAS,IAAI;QAChB,IAAI,CAACA,SAAS,GAAGA,SAAS;MAC5B,CAAE;MAAA,UAEDE,SAAS,gBACR,KAAC,MAAM;QACL,QAAQ,EAAE;UACRZ,QAAQ,EAAE,UAAU;UACpBe,KAAK,EAAEF,OAAO;UACdG,WAAW,EAAE;QACf,CAAE;QACF,mBAAmB,EAAEF;MAAoB,EACzC,gBAEF,KAAC,QAAQ;QAAC,UAAU,EAAE;UAAEG,IAAI,EAAErB;QAAe,CAAE;QAAA,UAAEiB;MAAO;IACzD,EACG;EAEV;AACF;AAAC,gBAxCoBL,cAAc,kBAIX;EACpBI,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE;AACX,CAAC"}
@@ -6,6 +6,8 @@ import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/c
6
6
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
7
  import { vsTrash } from '@deephaven/icons';
8
8
  import Log from '@deephaven/log';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
11
  var log = Log.module('MarkdownStartPage');
10
12
  class MarkdownStartPage extends PureComponent {
11
13
  constructor(props) {
@@ -51,52 +53,71 @@ class MarkdownStartPage extends PureComponent {
51
53
  isDeleteModalShown,
52
54
  toBeDeleted
53
55
  } = this.state;
54
- return /*#__PURE__*/React.createElement("div", {
55
- className: "markdown-panel-start-page h-100 w-100"
56
- }, /*#__PURE__*/React.createElement("div", {
57
- className: "markdown-panel-start-page-container"
58
- }, /*#__PURE__*/React.createElement("div", {
59
- className: "markdown-panel-start-list"
60
- }, /*#__PURE__*/React.createElement("h3", {
61
- className: "list-title"
62
- }, "Start"), /*#__PURE__*/React.createElement("div", {
63
- className: "list-item"
64
- }, /*#__PURE__*/React.createElement(Button, {
65
- kind: "ghost",
66
- className: "title",
67
- onClick: onCreate
68
- }, "New Markdown Note"))), /*#__PURE__*/React.createElement("div", {
69
- className: "markdown-panel-start-list"
70
- }, /*#__PURE__*/React.createElement("h3", {
71
- className: "list-title"
72
- }, "Recently Closed from Dashboard"), closedMarkdowns.map(markdown => /*#__PURE__*/React.createElement("div", {
73
- className: "list-item",
74
- key: markdown.id
75
- }, /*#__PURE__*/React.createElement(Button, {
76
- kind: "ghost",
77
- className: "title",
78
- onClick: () => onOpen(markdown)
79
- }, markdown.title), /*#__PURE__*/React.createElement("button", {
80
- className: "btn-link icon",
81
- type: "button",
82
- onClick: () => {
83
- this.handleDeleteButtonClick(markdown);
84
- }
85
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
86
- icon: vsTrash
87
- })))), /*#__PURE__*/React.createElement(Modal, {
88
- isOpen: isDeleteModalShown,
89
- toggle: this.handleDeleteModalClose,
90
- className: "modal-dialog-centered markdown-delete-modal theme-bg-light"
91
- }, /*#__PURE__*/React.createElement(ModalHeader, null, "Are you sure you want to permanently delete this note?"), /*#__PURE__*/React.createElement(ModalBody, null, "You can't undo this action."), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
92
- kind: "secondary",
93
- onClick: this.handleDeleteModalClose
94
- }, "Cancel"), /*#__PURE__*/React.createElement(Button, {
95
- kind: "danger",
96
- onClick: () => {
97
- this.handleDeleteMarkdown(toBeDeleted);
98
- }
99
- }, "Delete"))))));
56
+ return /*#__PURE__*/_jsx("div", {
57
+ className: "markdown-panel-start-page h-100 w-100",
58
+ children: /*#__PURE__*/_jsxs("div", {
59
+ className: "markdown-panel-start-page-container",
60
+ children: [/*#__PURE__*/_jsxs("div", {
61
+ className: "markdown-panel-start-list",
62
+ children: [/*#__PURE__*/_jsx("h3", {
63
+ className: "list-title",
64
+ children: "Start"
65
+ }), /*#__PURE__*/_jsx("div", {
66
+ className: "list-item",
67
+ children: /*#__PURE__*/_jsx(Button, {
68
+ kind: "ghost",
69
+ className: "title",
70
+ onClick: onCreate,
71
+ children: "New Markdown Note"
72
+ })
73
+ })]
74
+ }), /*#__PURE__*/_jsxs("div", {
75
+ className: "markdown-panel-start-list",
76
+ children: [/*#__PURE__*/_jsx("h3", {
77
+ className: "list-title",
78
+ children: "Recently Closed from Dashboard"
79
+ }), closedMarkdowns.map(markdown => /*#__PURE__*/_jsxs("div", {
80
+ className: "list-item",
81
+ children: [/*#__PURE__*/_jsx(Button, {
82
+ kind: "ghost",
83
+ className: "title",
84
+ onClick: () => onOpen(markdown),
85
+ children: markdown.title
86
+ }), /*#__PURE__*/_jsx("button", {
87
+ className: "btn-link icon",
88
+ type: "button",
89
+ onClick: () => {
90
+ this.handleDeleteButtonClick(markdown);
91
+ },
92
+ children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
93
+ icon: vsTrash
94
+ })
95
+ })]
96
+ }, markdown.id)), /*#__PURE__*/_jsxs(Modal, {
97
+ isOpen: isDeleteModalShown,
98
+ toggle: this.handleDeleteModalClose,
99
+ className: "modal-dialog-centered markdown-delete-modal theme-bg-light",
100
+ children: [/*#__PURE__*/_jsx(ModalHeader, {
101
+ children: "Are you sure you want to permanently delete this note?"
102
+ }), /*#__PURE__*/_jsx(ModalBody, {
103
+ children: "You can't undo this action."
104
+ }), /*#__PURE__*/_jsxs(ModalFooter, {
105
+ children: [/*#__PURE__*/_jsx(Button, {
106
+ kind: "secondary",
107
+ onClick: this.handleDeleteModalClose,
108
+ children: "Cancel"
109
+ }), /*#__PURE__*/_jsx(Button, {
110
+ kind: "danger",
111
+ onClick: () => {
112
+ this.handleDeleteMarkdown(toBeDeleted);
113
+ },
114
+ children: "Delete"
115
+ })]
116
+ })]
117
+ })]
118
+ })]
119
+ })
120
+ });
100
121
  }
101
122
  }
102
123
  _defineProperty(MarkdownStartPage, "defaultProps", {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownStartPage.js","names":["React","PureComponent","Button","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","markdown","setState","toBeDeleted","undefined","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","map","id","title"],"sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"sourcesContent":["import React, {\n Key,\n MouseEventHandler,\n PureComponent,\n 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 theme-bg-light\"\n >\n <ModalHeader>\n Are you sure you want to permanently delete this note?\n </ModalHeader>\n <ModalBody>You can&#39;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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"}
1
+ {"version":3,"file":"MarkdownStartPage.js","names":["React","PureComponent","Button","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","markdown","setState","toBeDeleted","undefined","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","map","title","id"],"sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"sourcesContent":["import React, {\n Key,\n MouseEventHandler,\n PureComponent,\n 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 theme-bg-light\"\n >\n <ModalHeader>\n Are you sure you want to permanently delete this note?\n </ModalHeader>\n <ModalBody>You can&#39;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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"}
@@ -19,6 +19,7 @@ import ToolType from "./ToolType.js";
19
19
  import { ChartEvent, IrisGridEvent, InputFilterEvent } from "../events/index.js";
20
20
  import LinkerOverlayContent from "./LinkerOverlayContent.js";
21
21
  import LinkerUtils, { isLinkablePanel, isLinkableColumn } from "./LinkerUtils.js";
22
+ import { jsx as _jsx } from "react/jsx-runtime";
22
23
  var log = Log.module('Linker');
23
24
  var mapState = (state, ownProps) => ({
24
25
  activeTool: getActiveTool(state),
@@ -709,26 +710,27 @@ export class Linker extends Component {
709
710
  var isLinkOverlayShown = this.isOverlayShown();
710
711
  var disabled = linkInProgress != null && linkInProgress.start != null;
711
712
  var linkerOverlayMessage = isolatedLinkerPanelId === undefined ? '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.' : '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.';
712
- return !isDraggingPanel ? /*#__PURE__*/React.createElement(CSSTransition, {
713
+ return !isDraggingPanel ? /*#__PURE__*/_jsx(CSSTransition, {
713
714
  in: isLinkOverlayShown,
714
715
  timeout: ThemeExport.transitionMs,
715
716
  classNames: "fade",
716
717
  mountOnEnter: true,
717
718
  unmountOnExit: true,
718
- onExited: this.handleExited
719
- }, /*#__PURE__*/React.createElement(LinkerOverlayContent, {
720
- disabled: disabled,
721
- panelManager: panelManager,
722
- links: this.getCachedLinks(links, linkInProgress, isolatedLinkerPanelId),
723
- selectedIds: selectedIds,
724
- messageText: linkerOverlayMessage,
725
- onLinkSelected: this.handleLinkSelected,
726
- onLinkDeleted: this.handleLinkDeleted,
727
- onAllLinksDeleted: this.handleAllLinksDeleted,
728
- onLinksUpdated: this.handleLinksUpdated,
729
- onDone: this.handleDone,
730
- onCancel: this.handleCancel
731
- })) : null;
719
+ onExited: this.handleExited,
720
+ children: /*#__PURE__*/_jsx(LinkerOverlayContent, {
721
+ disabled: disabled,
722
+ panelManager: panelManager,
723
+ links: this.getCachedLinks(links, linkInProgress, isolatedLinkerPanelId),
724
+ selectedIds: selectedIds,
725
+ messageText: linkerOverlayMessage,
726
+ onLinkSelected: this.handleLinkSelected,
727
+ onLinkDeleted: this.handleLinkDeleted,
728
+ onAllLinksDeleted: this.handleAllLinksDeleted,
729
+ onLinksUpdated: this.handleLinksUpdated,
730
+ onDone: this.handleDone,
731
+ onCancel: this.handleCancel
732
+ })
733
+ }) : null;
732
734
  }
733
735
  }
734
736
  var ConnectedLinker = connector(Linker);