@deephaven/dashboard-core-plugins 1.22.1 → 1.22.2-alpha-pivot-builder.0
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 +8 -15
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPanelPlugin.js +13 -6
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartWidgetPlugin.js +11 -4
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +38 -46
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +63 -44
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPanelPlugin.js +3 -5
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +11 -1
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +48 -30
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +3 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +18 -17
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPanelPlugin.js +3 -5
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasWidgetPlugin.js +3 -7
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js +8 -10
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js +24 -29
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -58
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +4 -5
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +7 -10
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +8 -12
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/Linker.js +100 -192
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +23 -31
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +65 -66
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +6 -14
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +7 -9
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +136 -220
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js +3 -4
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +33 -52
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +68 -130
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +6 -18
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +109 -165
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +30 -55
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +81 -141
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +68 -87
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +45 -68
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +28 -6
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +224 -280
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -3
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +6 -13
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +28 -50
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +19 -38
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +157 -292
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -15
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +1 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +42 -51
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +6 -10
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/useConfigureRuff.js +8 -9
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js +4 -7
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js +9 -16
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useIrisGridModel.d.ts +2 -2
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +34 -6
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useTablePlugin.js +27 -14
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","Select","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","nanoid","Log","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","_defineProperty","source","columns","filter","_ref","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","value","children","forEach","columnItem","index","getItemLabel","concat","name","values","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","max","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","id","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","debug2","parseInt","setState","allColumns","getCompatibleColumns","event","key","preventDefault","stopPropagation","valueIndex","_ref2","_ref3","showSettings","target","current","_this$dropdownRef$cur","focus","clearFilter","setFilterState","_ref4","_ref5","oldValue","oldIsValueShown","render","_source$columnName","disableLinking","isLinkerActive","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","sourceColumnId","filterColumnId","className","htmlFor","onClick","onMouseEnter","onMouseLeave","SOURCE_BUTTON_CLASS_NAME","disabled","String","kind","tooltip","ref","onKeyDown","title","icon","transform"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n Component,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n CardFlip,\n Select,\n SocketedButton,\n} from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport { nanoid } from 'nanoid';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { type LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type: string;\n}\n\nexport interface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: readonly DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string | null;\n values: readonly (string | null)[];\n onChange: (change: {\n column: Partial<dh.Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n id: string;\n}\n\nexport class DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.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 this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n id: nanoid(),\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: readonly DropdownFilterColumn[]) =>\n source != null\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: readonly (string | null)[], value: string | null) =>\n values.indexOf(value)\n );\n\n getValueOptions = memoize((values: readonly (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val ?? '(null)'}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee(\n (columns: readonly DropdownFilterColumn[], 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 { max: 1000 }\n );\n\n handleColumnChange(eventTargetValue: string): void {\n const value = eventTargetValue;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(eventTargetValue: string): void {\n const valueIndex = eventTargetValue;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\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.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n // Called by the parent component via ref\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 } : null;\n this.setState(({ value: oldValue, isValueShown: oldIsValueShown }) => ({\n column,\n value: value ?? oldValue,\n isValueShown: isValueShown ?? oldIsValueShown,\n }));\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const { column, disableCancel, id, isValueShown, selectedColumn, value } =\n this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n const sourceColumnId = `source-column-btn-${id}`;\n const filterColumnId = `filter-column-select-${id}`;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label htmlFor={sourceColumnId}>Source Column</label>\n <SocketedButton\n id={sourceColumnId}\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label htmlFor={filterColumnId}>Filter Column</label>\n <Select\n id={filterColumnId}\n value={String(selectedIndex)}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </Select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n data-testid=\"dropdown-filter-value-background\"\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <Select\n className=\"custom-select\"\n value={String(selectedOption)}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyDown={this.handleDropdownKeyPress}\n title=\"Select Value\"\n >\n {valueOptions}\n </Select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-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=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","Select","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","nanoid","Log","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","_defineProperty","source","columns","filter","_ref","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","value","children","forEach","columnItem","index","getItemLabel","concat","name","values","indexOf","PLACEHOLDER","map","val","_columns$index","length","shortType","substring","lastIndexOf","max","onChange","_this$state","state","column","isValueShown","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","id","disableCancel","componentDidUpdate","prevProps","prevState","_this$props","isLoaded","_this$state2","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","debug2","parseInt","setState","_this$props2","allColumns","getCompatibleColumns","event","key","preventDefault","stopPropagation","valueIndex","_ref2","_ref3","showSettings","target","current","_this$dropdownRef$cur","focus","clearFilter","setFilterState","_ref4","_ref5","oldValue","oldIsValueShown","render","_source$columnName","_this$props3","disableLinking","isLinkerActive","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","settingsError","_this$state3","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","_this$getColumnOption","getColumnOptions","_this$getColumnOption2","_slicedToArray","columnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","sourceColumnId","filterColumnId","className","htmlFor","onClick","onMouseEnter","onMouseLeave","SOURCE_BUTTON_CLASS_NAME","disabled","String","kind","tooltip","ref","onKeyDown","title","icon","transform"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n Component,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n CardFlip,\n Select,\n SocketedButton,\n} from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport { nanoid } from 'nanoid';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { type LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type: string;\n}\n\nexport interface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: readonly DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string | null;\n values: readonly (string | null)[];\n onChange: (change: {\n column: Partial<dh.Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n id: string;\n}\n\nexport class DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.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 this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n id: nanoid(),\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: readonly DropdownFilterColumn[]) =>\n source != null\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: readonly (string | null)[], value: string | null) =>\n values.indexOf(value)\n );\n\n getValueOptions = memoize((values: readonly (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val ?? '(null)'}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee(\n (columns: readonly DropdownFilterColumn[], 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 { max: 1000 }\n );\n\n handleColumnChange(eventTargetValue: string): void {\n const value = eventTargetValue;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(eventTargetValue: string): void {\n const valueIndex = eventTargetValue;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\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.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n // Called by the parent component via ref\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 } : null;\n this.setState(({ value: oldValue, isValueShown: oldIsValueShown }) => ({\n column,\n value: value ?? oldValue,\n isValueShown: isValueShown ?? oldIsValueShown,\n }));\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const { column, disableCancel, id, isValueShown, selectedColumn, value } =\n this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n const sourceColumnId = `source-column-btn-${id}`;\n const filterColumnId = `filter-column-select-${id}`;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label htmlFor={sourceColumnId}>Source Column</label>\n <SocketedButton\n id={sourceColumnId}\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label htmlFor={filterColumnId}>Filter Column</label>\n <Select\n id={filterColumnId}\n value={String(selectedIndex)}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </Select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n data-testid=\"dropdown-filter-value-background\"\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <Select\n className=\"custom-select\"\n value={String(selectedOption)}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyDown={this.handleDropdownKeyPress}\n title=\"Select Value\"\n >\n {valueOptions}\n </Select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-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=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,10 +21,9 @@ class InputFilter extends Component {
|
|
|
21
21
|
super(props);
|
|
22
22
|
_defineProperty(this, "inputRef", void 0);
|
|
23
23
|
_defineProperty(this, "getItemLabel", memoizee((columns, index) => {
|
|
24
|
-
var
|
|
25
|
-
name,
|
|
26
|
-
type
|
|
27
|
-
} = columns[index];
|
|
24
|
+
var _columns$index = columns[index],
|
|
25
|
+
name = _columns$index.name,
|
|
26
|
+
type = _columns$index.type;
|
|
28
27
|
if (index > 0 && columns[index - 1].name === name || index < columns.length - 1 && columns[index + 1].name === name) {
|
|
29
28
|
var shortType = type.substring(type.lastIndexOf('.') + 1);
|
|
30
29
|
return "".concat(name, " (").concat(shortType, ")");
|
|
@@ -34,14 +33,11 @@ class InputFilter extends Component {
|
|
|
34
33
|
max: 1000
|
|
35
34
|
}));
|
|
36
35
|
_defineProperty(this, "sendUpdate", debounce(() => {
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
value,
|
|
43
|
-
isValueShown
|
|
44
|
-
} = this.state;
|
|
36
|
+
var onChange = this.props.onChange;
|
|
37
|
+
var _this$state = this.state,
|
|
38
|
+
column = _this$state.column,
|
|
39
|
+
value = _this$state.value,
|
|
40
|
+
isValueShown = _this$state.isValueShown;
|
|
45
41
|
onChange({
|
|
46
42
|
column,
|
|
47
43
|
isValueShown,
|
|
@@ -56,11 +52,9 @@ class InputFilter extends Component {
|
|
|
56
52
|
this.handleSettingsSave = this.handleSettingsSave.bind(this);
|
|
57
53
|
this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
|
|
58
54
|
this.inputRef = /*#__PURE__*/React.createRef();
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
value: _value
|
|
63
|
-
} = props;
|
|
55
|
+
var _column = props.column,
|
|
56
|
+
_isValueShown = props.isValueShown,
|
|
57
|
+
_value = props.value;
|
|
64
58
|
this.state = {
|
|
65
59
|
column: _column,
|
|
66
60
|
selectedColumn: _column,
|
|
@@ -69,14 +63,11 @@ class InputFilter extends Component {
|
|
|
69
63
|
};
|
|
70
64
|
}
|
|
71
65
|
componentDidUpdate(prevProps, prevState) {
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
value,
|
|
78
|
-
isValueShown
|
|
79
|
-
} = this.state;
|
|
66
|
+
var propColumn = this.props.column;
|
|
67
|
+
var _this$state2 = this.state,
|
|
68
|
+
column = _this$state2.column,
|
|
69
|
+
value = _this$state2.value,
|
|
70
|
+
isValueShown = _this$state2.isValueShown;
|
|
80
71
|
if (propColumn !== prevProps.column) {
|
|
81
72
|
// eslint-disable-next-line react/no-did-update-set-state
|
|
82
73
|
this.setState({
|
|
@@ -95,9 +86,7 @@ class InputFilter extends Component {
|
|
|
95
86
|
this.sendUpdate.flush();
|
|
96
87
|
}
|
|
97
88
|
handleColumnChange(eventTargetValue) {
|
|
98
|
-
var
|
|
99
|
-
columns
|
|
100
|
-
} = this.props;
|
|
89
|
+
var columns = this.props.columns;
|
|
101
90
|
var selectedColumn = columns[parseInt(eventTargetValue, 10)];
|
|
102
91
|
log.debug2('handleColumnChange', selectedColumn);
|
|
103
92
|
this.setState({
|
|
@@ -110,9 +99,7 @@ class InputFilter extends Component {
|
|
|
110
99
|
event.preventDefault();
|
|
111
100
|
event.stopPropagation();
|
|
112
101
|
this.setState(_ref => {
|
|
113
|
-
var
|
|
114
|
-
value
|
|
115
|
-
} = _ref;
|
|
102
|
+
var value = _ref.value;
|
|
116
103
|
return value == null ? {
|
|
117
104
|
value: ''
|
|
118
105
|
} : null;
|
|
@@ -123,36 +110,28 @@ class InputFilter extends Component {
|
|
|
123
110
|
}
|
|
124
111
|
}
|
|
125
112
|
handleValueChange(event) {
|
|
126
|
-
var
|
|
127
|
-
value
|
|
128
|
-
} = event.target;
|
|
113
|
+
var value = event.target.value;
|
|
129
114
|
log.debug2('handleValueChange', value);
|
|
130
115
|
this.setState({
|
|
131
116
|
value
|
|
132
117
|
});
|
|
133
118
|
}
|
|
134
119
|
handleSettingsCancel() {
|
|
135
|
-
var
|
|
136
|
-
column
|
|
137
|
-
} = this.state;
|
|
120
|
+
var column = this.state.column;
|
|
138
121
|
this.setState({
|
|
139
122
|
selectedColumn: column,
|
|
140
123
|
isValueShown: true
|
|
141
124
|
});
|
|
142
125
|
}
|
|
143
126
|
handleSettingsSave() {
|
|
144
|
-
var
|
|
145
|
-
selectedColumn
|
|
146
|
-
} = this.state;
|
|
127
|
+
var selectedColumn = this.state.selectedColumn;
|
|
147
128
|
this.setState({
|
|
148
129
|
column: selectedColumn,
|
|
149
130
|
isValueShown: true
|
|
150
131
|
});
|
|
151
132
|
}
|
|
152
133
|
handleSettingsClick(event) {
|
|
153
|
-
var
|
|
154
|
-
column
|
|
155
|
-
} = this.state;
|
|
134
|
+
var column = this.state.column;
|
|
156
135
|
this.setState({
|
|
157
136
|
selectedColumn: column,
|
|
158
137
|
isValueShown: false
|
|
@@ -177,12 +156,10 @@ class InputFilter extends Component {
|
|
|
177
156
|
});
|
|
178
157
|
}
|
|
179
158
|
setFilterState(_ref2) {
|
|
180
|
-
var
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
isValueShown
|
|
185
|
-
} = _ref2;
|
|
159
|
+
var name = _ref2.name,
|
|
160
|
+
type = _ref2.type,
|
|
161
|
+
value = _ref2.value,
|
|
162
|
+
isValueShown = _ref2.isValueShown;
|
|
186
163
|
var column = name != null && type != null ? {
|
|
187
164
|
name,
|
|
188
165
|
type
|
|
@@ -198,15 +175,12 @@ class InputFilter extends Component {
|
|
|
198
175
|
this.setState(update);
|
|
199
176
|
}
|
|
200
177
|
render() {
|
|
201
|
-
var
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
selectedColumn,
|
|
208
|
-
value
|
|
209
|
-
} = this.state;
|
|
178
|
+
var columns = this.props.columns;
|
|
179
|
+
var _this$state3 = this.state,
|
|
180
|
+
column = _this$state3.column,
|
|
181
|
+
isValueShown = _this$state3.isValueShown,
|
|
182
|
+
selectedColumn = _this$state3.selectedColumn,
|
|
183
|
+
value = _this$state3.value;
|
|
210
184
|
var inputLength = value == null || value.length === 0 ? InputFilter.PLACEHOLDER.length : value.length;
|
|
211
185
|
var titleLabel = null;
|
|
212
186
|
if (column != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","Select","FontAwesomeIcon","vsGear","memoizee","debounce","Log","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","_defineProperty","columns","index","name","type","length","shortType","substring","lastIndexOf","concat","max","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","eventTargetValue","parseInt","debug2","event","key","preventDefault","stopPropagation","_ref","target","current","select","focus","clearFilter","setFilterState","_ref2","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","className","isFlipped","children","String","map","columnItem","disabled","kind","onClick","ref","placeholder","onKeyPress","style","width","spellCheck","icon","transform","tooltip"],"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 type ChangeEvent,\n Component,\n type RefObject,\n type MouseEvent,\n type KeyboardEvent,\n type ReactElement,\n} from 'react';\nimport { Button, CardFlip, Select } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport type { dh } 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<dh.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(\n (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 { max: 1000 }\n );\n\n handleColumnChange(eventTargetValue: string): void {\n const { columns } = this.props;\n const selectedColumn = columns[parseInt(eventTargetValue, 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={String(\n columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","Select","FontAwesomeIcon","vsGear","memoizee","debounce","Log","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","_defineProperty","columns","index","_columns$index","name","type","length","shortType","substring","lastIndexOf","concat","max","onChange","_this$state","state","column","value","isValueShown","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","_this$state2","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","parseInt","debug2","event","key","preventDefault","stopPropagation","_ref","target","current","select","focus","clearFilter","setFilterState","_ref2","update","render","_this$state3","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","className","isFlipped","children","String","map","columnItem","disabled","kind","onClick","ref","placeholder","onKeyPress","style","width","spellCheck","icon","transform","tooltip"],"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 type ChangeEvent,\n Component,\n type RefObject,\n type MouseEvent,\n type KeyboardEvent,\n type ReactElement,\n} from 'react';\nimport { Button, CardFlip, Select } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport type { dh } 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<dh.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(\n (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 { max: 1000 }\n );\n\n handleColumnChange(eventTargetValue: string): void {\n const { columns } = this.props;\n const selectedColumn = columns[parseInt(eventTargetValue, 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={String(\n columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )\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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","ignoreList":[]}
|
|
@@ -8,11 +8,10 @@ import { vsEdit } from '@deephaven/icons';
|
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
9
|
export default class MarkdownContainer extends PureComponent {
|
|
10
10
|
render() {
|
|
11
|
-
var
|
|
12
|
-
isEditing,
|
|
13
|
-
children,
|
|
14
|
-
onDoubleClick
|
|
15
|
-
} = this.props;
|
|
11
|
+
var _this$props = this.props,
|
|
12
|
+
isEditing = _this$props.isEditing,
|
|
13
|
+
children = _this$props.children,
|
|
14
|
+
onDoubleClick = _this$props.onDoubleClick;
|
|
16
15
|
return /*#__PURE__*/_jsxs("div", {
|
|
17
16
|
className: "markdown-editor-container h-100 w-100",
|
|
18
17
|
onDoubleClick: onDoubleClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownContainer.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsEdit","jsx","_jsx","jsxs","_jsxs","MarkdownContainer","render","isEditing","children","onDoubleClick","
|
|
1
|
+
{"version":3,"file":"MarkdownContainer.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsEdit","jsx","_jsx","jsxs","_jsxs","MarkdownContainer","render","_this$props","props","isEditing","children","onDoubleClick","className","viewing","undefined","icon","_defineProperty"],"sources":["../../../src/controls/markdown/MarkdownContainer.tsx"],"sourcesContent":["import React, {\n type MouseEventHandler,\n PureComponent,\n type ReactElement,\n type 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,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ1C,eAAe,MAAMC,iBAAiB,SAASR,aAAa,CAG1D;EAKAS,MAAMA,CAAA,EAAiB;IACrB,IAAAC,WAAA,GAA+C,IAAI,CAACC,KAAK;MAAjDC,SAAS,GAAAF,WAAA,CAATE,SAAS;MAAEC,QAAQ,GAAAH,WAAA,CAARG,QAAQ;MAAEC,aAAa,GAAAJ,WAAA,CAAbI,aAAa;IAE1C,oBACEP,KAAA;MACEQ,SAAS,EAAC,uCAAuC;MACjDD,aAAa,EAAEA,aAAc;MAAAD,QAAA,gBAE7BR,IAAA;QACEU,SAAS,EAAEd,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE;UAC/Ce,OAAO,EAAEJ,SAAS,KAAKK,SAAS,IAAI,CAACL;QACvC,CAAC,CAAE;QAAAC,QAAA,eAEHN,KAAA;UAAAM,QAAA,GAAM,uBACiB,eAAAR,IAAA,CAACH,eAAe;YAACgB,IAAI,EAAEf;UAAO,CAAE,CAAC;QAAA,CAClD;MAAC,CACJ,CAAC,EACLU,QAAQ;IAAA,CACN,CAAC;EAEV;AACF;AAACM,eAAA,CA7BoBX,iBAAiB,kBAId;EACpBI,SAAS,EAAE;AACb,CAAC","ignoreList":[]}
|
|
@@ -8,11 +8,9 @@ import rehypeMathjax from 'rehype-mathjax';
|
|
|
8
8
|
import { Code, Editor } from '@deephaven/console';
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
var renderMarkdown = props => {
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
className
|
|
15
|
-
} = props;
|
|
11
|
+
var children = props.children,
|
|
12
|
+
inline = props.inline,
|
|
13
|
+
className = props.className;
|
|
16
14
|
if (inline === true) {
|
|
17
15
|
return /*#__PURE__*/_jsx("code", {
|
|
18
16
|
children: React.Children.map(children, child => typeof child === 'string' ? child.trim() : child)
|
|
@@ -35,11 +33,10 @@ export default class MarkdownEditor extends PureComponent {
|
|
|
35
33
|
this.container = null;
|
|
36
34
|
}
|
|
37
35
|
render() {
|
|
38
|
-
var
|
|
39
|
-
isEditing,
|
|
40
|
-
content,
|
|
41
|
-
onEditorInitialized
|
|
42
|
-
} = this.props;
|
|
36
|
+
var _this$props = this.props,
|
|
37
|
+
isEditing = _this$props.isEditing,
|
|
38
|
+
content = _this$props.content,
|
|
39
|
+
onEditorInitialized = _this$props.onEditorInitialized;
|
|
43
40
|
return /*#__PURE__*/_jsx("div", {
|
|
44
41
|
className: "markdown-editor-container",
|
|
45
42
|
ref: container => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.js","names":["React","PureComponent","Markdown","remarkMath","rehypeMathjax","Code","Editor","jsx","_jsx","renderMarkdown","props","children","inline","className","Children","map","child","trim","language","undefined","startsWith","substring","MarkdownEditor","constructor","_defineProperty","container","render","isEditing","content","onEditorInitialized","ref","settings","value","lineNumbers","components","code","remarkPlugins","rehypePlugins"],"sources":["../../../src/controls/markdown/MarkdownEditor.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport Markdown from 'react-markdown';\nimport { type CodeComponent } from 'react-markdown/lib/ast-to-react';\nimport remarkMath from 'remark-math';\nimport rehypeMathjax from 'rehype-mathjax';\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, inline, className } = props;\n if (inline === true) {\n return (\n <code>\n {React.Children.map(children, child =>\n typeof child === 'string' ? child.trim() : child\n )}\n </code>\n );\n }\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\n components={{ code: renderMarkdown }}\n remarkPlugins={[remarkMath]}\n rehypePlugins={[rehypeMathjax]}\n >\n {content}\n </Markdown>\n )}\n </div>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAC/D,OAAOC,QAAQ,MAAM,gBAAgB;AAErC,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,aAAa,MAAM,gBAAgB;AAC1C,SAASC,IAAI,EAAEC,MAAM,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASlD,IAAMC,cAA6B,GAAGC,KAAK,IAAI;EAC7C,
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.js","names":["React","PureComponent","Markdown","remarkMath","rehypeMathjax","Code","Editor","jsx","_jsx","renderMarkdown","props","children","inline","className","Children","map","child","trim","language","undefined","startsWith","substring","MarkdownEditor","constructor","_defineProperty","container","render","_this$props","isEditing","content","onEditorInitialized","ref","settings","value","lineNumbers","components","code","remarkPlugins","rehypePlugins"],"sources":["../../../src/controls/markdown/MarkdownEditor.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport Markdown from 'react-markdown';\nimport { type CodeComponent } from 'react-markdown/lib/ast-to-react';\nimport remarkMath from 'remark-math';\nimport rehypeMathjax from 'rehype-mathjax';\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, inline, className } = props;\n if (inline === true) {\n return (\n <code>\n {React.Children.map(children, child =>\n typeof child === 'string' ? child.trim() : child\n )}\n </code>\n );\n }\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\n components={{ code: renderMarkdown }}\n remarkPlugins={[remarkMath]}\n rehypePlugins={[rehypeMathjax]}\n >\n {content}\n </Markdown>\n )}\n </div>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAC/D,OAAOC,QAAQ,MAAM,gBAAgB;AAErC,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,aAAa,MAAM,gBAAgB;AAC1C,SAASC,IAAI,EAAEC,MAAM,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASlD,IAAMC,cAA6B,GAAGC,KAAK,IAAI;EAC7C,IAAQC,QAAQ,GAAwBD,KAAK,CAArCC,QAAQ;IAAEC,MAAM,GAAgBF,KAAK,CAA3BE,MAAM;IAAEC,SAAS,GAAKH,KAAK,CAAnBG,SAAS;EACnC,IAAID,MAAM,KAAK,IAAI,EAAE;IACnB,oBACEJ,IAAA;MAAAG,QAAA,EACGX,KAAK,CAACc,QAAQ,CAACC,GAAG,CAACJ,QAAQ,EAAEK,KAAK,IACjC,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACC,IAAI,CAAC,CAAC,GAAGD,KAC7C;IAAC,CACG,CAAC;EAEX;EACA,IAAME,QAAQ,GACZL,SAAS,KAAKM,SAAS,IAAIN,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEO,UAAU,CAAC,WAAW,CAAC,GACzDP,SAAS,CAACQ,SAAS,CAAC,CAAC,CAAC,GACtB,WAAW;EACjB,oBACEb,IAAA;IAAAG,QAAA,eACEH,IAAA;MAAAG,QAAA,eACEH,IAAA,CAACH,IAAI;QAACa,QAAQ,EAAEA,QAAS;QAAAP,QAAA,EACtBX,KAAK,CAACc,QAAQ,CAACC,GAAG,CAACJ,QAAQ,EAAEK,KAAK,IACjC,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACC,IAAI,CAAC,CAAC,GAAGD,KAC7C;MAAC,CACG;IAAC,CACH;EAAC,CACJ,CAAC;AAEV,CAAC;AACD,eAAe,MAAMM,cAAc,SAASrB,aAAa,CAGvD;EAMAsB,WAAWA,CAACb,KAA0B,EAAE;IACtC,KAAK,CAACA,KAAK,CAAC;IAACc,eAAA;IACb,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB;EAIAC,MAAMA,CAAA,EAAiB;IACrB,IAAAC,WAAA,GAAoD,IAAI,CAACjB,KAAK;MAAtDkB,SAAS,GAAAD,WAAA,CAATC,SAAS;MAAEC,OAAO,GAAAF,WAAA,CAAPE,OAAO;MAAEC,mBAAmB,GAAAH,WAAA,CAAnBG,mBAAmB;IAC/C,oBACEtB,IAAA;MACEK,SAAS,EAAC,2BAA2B;MACrCkB,GAAG,EAAEN,SAAS,IAAI;QAChB,IAAI,CAACA,SAAS,GAAGA,SAAS;MAC5B,CAAE;MAAAd,QAAA,EAEDiB,SAAS,gBACRpB,IAAA,CAACF,MAAM;QACL0B,QAAQ,EAAE;UACRd,QAAQ,EAAE,UAAU;UACpBe,KAAK,EAAEJ,OAAO;UACdK,WAAW,EAAE;QACf,CAAE;QACFJ,mBAAmB,EAAEA;MAAoB,CAC1C,CAAC,gBAEFtB,IAAA,CAACN,QAAQ;QACPiC,UAAU,EAAE;UAAEC,IAAI,EAAE3B;QAAe,CAAE;QACrC4B,aAAa,EAAE,CAAClC,UAAU,CAAE;QAC5BmC,aAAa,EAAE,CAAClC,aAAa,CAAE;QAAAO,QAAA,EAE9BkB;MAAO,CACA;IACX,CACE,CAAC;EAEV;AACF;AAACL,eAAA,CA9CoBF,cAAc,kBAIX;EACpBM,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAE;AACX,CAAC","ignoreList":[]}
|
|
@@ -32,9 +32,7 @@ class MarkdownStartPage extends PureComponent {
|
|
|
32
32
|
handleDeleteMarkdown(markdown) {
|
|
33
33
|
log.debug('delete markdown: ', markdown);
|
|
34
34
|
if (markdown !== undefined) {
|
|
35
|
-
var
|
|
36
|
-
onDelete
|
|
37
|
-
} = this.props;
|
|
35
|
+
var onDelete = this.props.onDelete;
|
|
38
36
|
onDelete(markdown);
|
|
39
37
|
}
|
|
40
38
|
this.setState({
|
|
@@ -43,15 +41,13 @@ class MarkdownStartPage extends PureComponent {
|
|
|
43
41
|
});
|
|
44
42
|
}
|
|
45
43
|
render() {
|
|
46
|
-
var
|
|
47
|
-
closedMarkdowns,
|
|
48
|
-
onOpen,
|
|
49
|
-
onCreate
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
toBeDeleted
|
|
54
|
-
} = this.state;
|
|
44
|
+
var _this$props = this.props,
|
|
45
|
+
closedMarkdowns = _this$props.closedMarkdowns,
|
|
46
|
+
onOpen = _this$props.onOpen,
|
|
47
|
+
onCreate = _this$props.onCreate;
|
|
48
|
+
var _this$state = this.state,
|
|
49
|
+
isDeleteModalShown = _this$state.isDeleteModalShown,
|
|
50
|
+
toBeDeleted = _this$state.toBeDeleted;
|
|
55
51
|
return /*#__PURE__*/_jsx("div", {
|
|
56
52
|
className: "markdown-panel-start-page h-100 w-100",
|
|
57
53
|
children: /*#__PURE__*/_jsxs("div", {
|
|
@@ -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,EAAAC,IAAA,IAAAC,KAAA;AAGjC,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAM,CAAC,mBAAmB,CAAC;AAc3C,MAAMC,iBAAiB,SAASf,aAAa,CAG3C;EAQAgB,WAAWA,CAACC,KAA6B,EAAE;IACzC,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACC,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACC,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACC,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACD,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACE,KAAK,GAAG;MACXC,kBAAkB,EAAE;IACtB,CAAC;EACH;EAEAJ,uBAAuBA,CAACK,QAA8B,EAAQ;IAC5D,IAAI,CAACC,QAAQ,CAAC;MAAEF,kBAAkB,EAAE,IAAI;MAAEG,WAAW,EAAEF;IAAS,CAAC,CAAC;EACpE;EAEAH,sBAAsBA,CAAA,EAAS;IAC7B,IAAI,CAACI,QAAQ,CAAC;MAAEF,kBAAkB,EAAE,KAAK;MAAEG,WAAW,EAAEC;IAAU,CAAC,CAAC;EACtE;EAEAC,oBAAoBA,CAACJ,QAA+B,EAAQ;IAC1DV,GAAG,CAACe,KAAK,CAAC,mBAAmB,EAAEL,QAAQ,CAAC;IAExC,IAAIA,QAAQ,KAAKG,SAAS,EAAE;MAC1B,
|
|
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","_this$props","closedMarkdowns","onOpen","onCreate","_this$state","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":[]}
|