@deephaven/console 0.37.4-logout.17 → 0.37.4-logout.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.js +0 -1
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/HeapUsage.js.map +1 -1
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleConstants.js.map +1 -1
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/common/ObjectIcon.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js +2 -1
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js +4 -2
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoProviders.js.map +1 -1
- package/dist/monaco/MonacoTheme.module.css +2 -1
- package/dist/monaco/MonacoTheme.module.css.map +1 -1
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +11 -11
package/dist/HeapUsage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeapUsage.js","names":["React","useEffect","useState","useRef","classNames","Tooltip","Plot","ChartTheme","Log","log","module","HeapUsage","_ref","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","fetchAndUpdate","_ref2","_asyncToGenerator","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","apply","arguments","updateUsage","setInterval","clearInterval","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","undefined","createElement","className","lastTimestamp","totalPercentage","usedPercentage","Fragment","style","width","concat","toFixed","onEntered","onExited","interactive","data","x","y","type","mode","config","staticPlot","responsive","height","layout","legend","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import React, { useEffect, useState, ReactElement, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport { QueryConnectable } from '@deephaven/jsapi-shim';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n useEffect(\n function setUsageUpdateInterval() {\n const fetchAndUpdate = async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n };\n fetchAndUpdate();\n\n const updateUsage = setInterval(\n fetchAndUpdate,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n return () => {\n clearInterval(updateUsage);\n };\n },\n [\n isOpen,\n hoverUpdateInterval,\n connection,\n defaultUpdateInterval,\n monitorDuration,\n bgMonitoring,\n ]\n );\n\n const toDecimalPlace = (num: number, dec: number) =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (text: string, size: string, bottomBorder = false) => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <>\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n legend: false,\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: ChartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: ChartTheme.linecolor,\n range: [0, 1],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeapUsage.js","names":["React","useEffect","useState","useRef","classNames","Tooltip","Plot","ChartTheme","Log","log","module","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","fetchAndUpdate","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","updateUsage","setInterval","clearInterval","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","lastTimestamp","totalPercentage","usedPercentage","width","toFixed","x","y","type","mode","staticPlot","responsive","height","legend","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import React, { useEffect, useState, ReactElement, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport { QueryConnectable } from '@deephaven/jsapi-shim';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n useEffect(\n function setUsageUpdateInterval() {\n const fetchAndUpdate = async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n };\n fetchAndUpdate();\n\n const updateUsage = setInterval(\n fetchAndUpdate,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n return () => {\n clearInterval(updateUsage);\n };\n },\n [\n isOpen,\n hoverUpdateInterval,\n connection,\n defaultUpdateInterval,\n monitorDuration,\n bgMonitoring,\n ]\n );\n\n const toDecimalPlace = (num: number, dec: number) =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (text: string, size: string, bottomBorder = false) => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <>\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n legend: false,\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: ChartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: ChartTheme.linecolor,\n range: [0, 1],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistory.js","names":["React","Component","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","_asyncToGenerator","getSnapshot","values","map","item","constructor","props","_defineProperty","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","itemListRef","state","actions","top","bottom","itemCount","size","selectedRanges","searchText","componentWillUnmount","cancel","getSelectedCommands","_this","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","setState","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","_ref","_ref2","itemIndex","isSelected","commandHistoryStorage","createElement","focus","current","restoreScrollPosition","_this$itemListRef$cur","render","_ConsoleConstants$LAN","languageDisplayString","LANGUAGE_MAP","get","className","ref","placeholder","concat","onChange","hasSelection","onSelect","onSelectionChange","onViewportChange","rowHeight","ITEM_HEIGHT","isDoubleClickSelect","isMultiSelect","isStickyBottom","search","onUpdate","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n this.itemListRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n itemListRef: React.RefObject<ItemList<CommandHistoryStorageItem>>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n // clear selected range, as old selection could be filtered from list\n this.setState({ searchText: e.target.value, selectedRanges: [] });\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n restoreScrollPosition(): void {\n this.itemListRef.current?.restoreScrollPosition();\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString =\n ConsoleConstants.LANGUAGE_MAP.get(language) ?? '';\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n ref={this.itemListRef}\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={searchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommandHistory.js","names":["React","Component","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","itemListRef","state","actions","top","bottom","itemCount","size","selectedRanges","searchText","componentWillUnmount","cancel","getSelectedCommands","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","setState","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n this.itemListRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n itemListRef: React.RefObject<ItemList<CommandHistoryStorageItem>>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n // clear selected range, as old selection could be filtered from list\n this.setState({ searchText: e.target.value, selectedRanges: [] });\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n restoreScrollPosition(): void {\n this.itemListRef.current?.restoreScrollPosition();\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString =\n ConsoleConstants.LANGUAGE_MAP.get(language) ?? '';\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n ref={this.itemListRef}\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={searchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryActions.js","names":["React","Component","classNames","FontAwesomeIcon","Button","vsArrowLeft","vsCircleLargeFilled","CommandHistoryActions","itemKey","i","item","
|
|
1
|
+
{"version":3,"file":"CommandHistoryActions.js","names":["React","Component","classNames","FontAwesomeIcon","Button","vsArrowLeft","vsCircleLargeFilled","CommandHistoryActions","itemKey","i","item","title","renderContent","selectionRequired","undefined","icon","render","actions","hasSelection","props","map","index","className","action","description"],"sources":["../../src/command-history/CommandHistoryActions.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';\nimport './CommandHistoryActions.scss';\nimport { HistoryAction } from './CommandHistoryTypes';\n\ninterface CommandHistoryActionsProps {\n actions: HistoryAction[];\n hasSelection: boolean;\n}\n\nclass CommandHistoryActions extends Component<\n CommandHistoryActionsProps,\n Record<string, never>\n> {\n static itemKey(i: unknown, item: HistoryAction): string {\n return `${item.title}`;\n }\n\n static renderContent(item: HistoryAction): JSX.Element {\n if (item.selectionRequired !== undefined && item.selectionRequired) {\n return (\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={item.icon}\n transform=\"right-5 down-5 shrink-4\"\n />\n <FontAwesomeIcon\n icon={vsArrowLeft}\n transform=\"shrink-3 right-7 down-6\"\n />\n </div>\n );\n }\n return <FontAwesomeIcon icon={item.icon} />;\n }\n\n render(): ReactElement {\n const { actions, hasSelection } = this.props;\n\n return (\n <div className=\"command-history-actions\">\n {actions.map((item, index) => (\n <Button\n kind=\"inline\"\n className={classNames(item.className)}\n key={CommandHistoryActions.itemKey(index, item)}\n onClick={item.action}\n tooltip={item.description}\n disabled={\n item.selectionRequired !== undefined &&\n item.selectionRequired &&\n !hasSelection\n }\n icon={CommandHistoryActions.renderContent(item)}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default CommandHistoryActions;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAsB,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,kBAAkB;AAAC;AASpE,MAAMC,qBAAqB,SAASN,SAAS,CAG3C;EACA,OAAOO,OAAO,CAACC,CAAU,EAAEC,IAAmB,EAAU;IACtD,iBAAUA,IAAI,CAACC,KAAK;EACtB;EAEA,OAAOC,aAAa,CAACF,IAAmB,EAAe;IACrD,IAAIA,IAAI,CAACG,iBAAiB,KAAKC,SAAS,IAAIJ,IAAI,CAACG,iBAAiB,EAAE;MAClE,oBACE;QAAK,SAAS,EAAC;MAAiB,gBAC9B,oBAAC,eAAe;QACd,IAAI,EAAEP,mBAAoB;QAC1B,IAAI,EAAEI,IAAI,CAACK,IAAK;QAChB,SAAS,EAAC;MAAyB,EACnC,eACF,oBAAC,eAAe;QACd,IAAI,EAAEV,WAAY;QAClB,SAAS,EAAC;MAAyB,EACnC,CACE;IAEV;IACA,oBAAO,oBAAC,eAAe;MAAC,IAAI,EAAEK,IAAI,CAACK;IAAK,EAAG;EAC7C;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,OAAO;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACC,KAAK;IAE5C,oBACE;MAAK,SAAS,EAAC;IAAyB,GACrCF,OAAO,CAACG,GAAG,CAAC,CAACV,IAAI,EAAEW,KAAK,kBACvB,oBAAC,MAAM;MACL,IAAI,EAAC,QAAQ;MACb,SAAS,EAAEnB,UAAU,CAACQ,IAAI,CAACY,SAAS,CAAE;MACtC,GAAG,EAAEf,qBAAqB,CAACC,OAAO,CAACa,KAAK,EAAEX,IAAI,CAAE;MAChD,OAAO,EAAEA,IAAI,CAACa,MAAO;MACrB,OAAO,EAAEb,IAAI,CAACc,WAAY;MAC1B,QAAQ,EACNd,IAAI,CAACG,iBAAiB,KAAKC,SAAS,IACpCJ,IAAI,CAACG,iBAAiB,IACtB,CAACK,YACF;MACD,IAAI,EAAEX,qBAAqB,CAACK,aAAa,CAACF,IAAI;IAAE,EAEnD,CAAC,CACE;EAEV;AACF;AAEA,eAAeH,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryItem.js","names":["React","useRef","useCallback","classNames","Tooltip","CommandHistoryItemTooltip","MAX_TRUNCATE_LENGTH","CommandHistoryItem","props","item","language","isSelected","commandHistoryStorage","previewText","name","substring","tooltip","handleUpdate","
|
|
1
|
+
{"version":3,"file":"CommandHistoryItem.js","names":["React","useRef","useCallback","classNames","Tooltip","CommandHistoryItemTooltip","MAX_TRUNCATE_LENGTH","CommandHistoryItem","props","item","language","isSelected","commandHistoryStorage","previewText","name","substring","tooltip","handleUpdate","current","update","selected","placement","modifiers","preventOverflow","enabled","boundariesElement","order","defaultProps"],"sources":["../../src/command-history/CommandHistoryItem.tsx"],"sourcesContent":["import React, { useRef, useCallback, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\n\nimport './CommandHistoryItem.scss';\nimport CommandHistoryItemTooltip from './CommandHistoryItemTooltip';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemProps {\n item: CommandHistoryStorageItem;\n language: string;\n isSelected?: boolean;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\nconst MAX_TRUNCATE_LENGTH = 512;\n\nfunction CommandHistoryItem(props: CommandHistoryItemProps): ReactElement {\n const { item, language, isSelected, commandHistoryStorage } = props;\n const previewText = item.name.substring(0, MAX_TRUNCATE_LENGTH);\n const tooltip = useRef<Tooltip>(null);\n const handleUpdate = useCallback(() => {\n tooltip.current?.update();\n }, [tooltip]);\n\n return (\n <div\n className={classNames('command-history-item', {\n selected: isSelected,\n })}\n >\n {previewText}\n <Tooltip\n ref={tooltip}\n interactive\n options={{\n placement: 'left',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'viewport',\n order: 825, // modify order so boundary is enforced at end of popper calcs\n },\n },\n }}\n popperClassName=\"command-history-item-popper\"\n >\n <CommandHistoryItemTooltip\n item={item}\n language={language}\n onUpdate={handleUpdate}\n commandHistoryStorage={commandHistoryStorage}\n />\n </Tooltip>\n </div>\n );\n}\n\nCommandHistoryItem.defaultProps = {\n isSelected: false,\n};\n\nexport default CommandHistoryItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,WAAW,QAAsB,OAAO;AAChE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,uBAAuB;AAAC;AAAA,OAGzCC,yBAAyB;AAYhC,IAAMC,mBAAmB,GAAG,GAAG;AAE/B,SAASC,kBAAkB,CAACC,KAA8B,EAAgB;EACxE,IAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,UAAU;IAAEC;EAAsB,CAAC,GAAGJ,KAAK;EACnE,IAAMK,WAAW,GAAGJ,IAAI,CAACK,IAAI,CAACC,SAAS,CAAC,CAAC,EAAET,mBAAmB,CAAC;EAC/D,IAAMU,OAAO,GAAGf,MAAM,CAAU,IAAI,CAAC;EACrC,IAAMgB,YAAY,GAAGf,WAAW,CAAC,MAAM;IAAA;IACrC,oBAAAc,OAAO,CAACE,OAAO,qDAAf,iBAAiBC,MAAM,EAAE;EAC3B,CAAC,EAAE,CAACH,OAAO,CAAC,CAAC;EAEb,oBACE;IACE,SAAS,EAAEb,UAAU,CAAC,sBAAsB,EAAE;MAC5CiB,QAAQ,EAAET;IACZ,CAAC;EAAE,GAEFE,WAAW,eACZ,oBAAC,OAAO;IACN,GAAG,EAAEG,OAAQ;IACb,WAAW;IACX,OAAO,EAAE;MACPK,SAAS,EAAE,MAAM;MACjBC,SAAS,EAAE;QACTC,eAAe,EAAE;UACfC,OAAO,EAAE,IAAI;UACbC,iBAAiB,EAAE,UAAU;UAC7BC,KAAK,EAAE,GAAG,CAAE;QACd;MACF;IACF,CAAE;;IACF,eAAe,EAAC;EAA6B,gBAE7C,oBAAC,yBAAyB;IACxB,IAAI,EAAEjB,IAAK;IACX,QAAQ,EAAEC,QAAS;IACnB,QAAQ,EAAEO,YAAa;IACvB,qBAAqB,EAAEL;EAAsB,EAC7C,CACM,CACN;AAEV;AAEAL,kBAAkB,CAACoB,YAAY,GAAG;EAChChB,UAAU,EAAE;AACd,CAAC;AAED,eAAeJ,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","_defineProperty","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","_prevState$data","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","setInterval","clearInterval","updateTime","setState","error","concat","onUpdate","render","_result$error","errorMessage","timeString","previewText","getPreviewText","hasTimeString","createElement","className","length","icon"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport CommandHistoryStorage, {\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: NodeJS.Timer;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n (name: string) => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAsB,OAAO;AACtD,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,OAAO,MAAM,UAAU;AAC9B,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAAC,OACtCC,IAAI;AAAA;AAoBX,IAAMC,kBAAkB,GAAG,GAAG;AAC9B,IAAMC,mBAAmB,GAAG,IAAI;AAEhC,OAAO,MAAMC,yBAAyB,SAASV,SAAS,CAGtD;EAKA,OAAOW,aAAaA,CAClBC,SAA6B,EAC7BC,OAAwB,EACT;IACf,IAAID,SAAS,IAAI,IAAI,IAAIC,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,CAAC,EAAE;MACxD,OAAO,IAAI;IACb;IAEA,IAAMC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAC1B,CAAC,IAAIC,IAAI,CAACJ,OAAO,CAAC,CAACK,OAAO,CAAC,CAAC,GAAG,IAAID,IAAI,CAACL,SAAS,CAAC,CAACM,OAAO,CAAC,CAAC,IAAI,IAClE,CAAC;IAED,IAAIJ,SAAS,GAAG,CAAC,EAAE,OAAO,KAAK;IAE/B,OAAOV,SAAS,CAACe,iBAAiB,CAACL,SAAS,CAAC;EAC/C;EAEAM,WAAWA,CAACC,KAAqC,EAAE;IACjD,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA,mBAkDJrB,QAAQ,CAAC,MAAY;MAC9B,IAAM;QAAEsB,qBAAqB;QAAEC,IAAI;QAAEC;MAAS,CAAC,GAAG,IAAI,CAACJ,KAAK;MAC5D,IAAM;QAAEK;MAAG,CAAC,GAAGF,IAAI;MACnB,IAAI,CAACG,OAAO,GAAGJ,qBAAqB,CAACK,UAAU,CAC7CH,QAAQ,EACRC,EAAE,EACF,IAAI,CAACG,YAAY,EACjB,IAAI,CAACC,WACP,CAAC;IACH,CAAC,EAAEtB,kBAAkB,CAAC;IAAAc,eAAA,yBAqCLpB,OAAO,CACrB6B,IAAY,IAAKA,IAAI,CAACC,KAAK,CAAC,IAAI,EAAEvB,mBAAmB,CAAC,CAACwB,IAAI,CAAC,IAAI,CAAC,EAClE;MAAEC,GAAG,EAAE;IAAE,CACX,CAAC;IAjGC,IAAI,CAACL,YAAY,GAAG,IAAI,CAACA,YAAY,CAACM,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACL,WAAW,GAAG,IAAI,CAACA,WAAW,CAACK,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC;IAElD,IAAI,CAACE,KAAK,GAAG;MACXC,WAAW,EAAErB,IAAI,CAACsB,GAAG,CAAC;IACxB,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,QAAQ,CAAC,CAAC;EACjB;EAEAC,kBAAkBA,CAChBC,SAAyC,EACzCC,SAAyC,EACnC;IAAA,IAAAC,eAAA;IACN,IAAM;MAAEC;IAAK,CAAC,GAAG,IAAI,CAACT,KAAK;IAE3B,IACE,IAAI,CAACU,KAAK,IAAI,IAAI,IAClB,EAACD,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEE,MAAM,KACbC,OAAO,CAACH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAElC,SAAS,CAAC,IACxB,EAAEkC,IAAI,IAAI,IAAI,IAAIA,IAAI,CAACjC,OAAO,KAAKqC,SAAS,CAAC,EAC7C;MACA,IAAI,CAACC,UAAU,CAAC,CAAC;IACnB,CAAC,MAAM,IACJL,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEE,MAAM,IAAI,GAAAH,eAAA,GAACD,SAAS,CAACE,IAAI,cAAAD,eAAA,eAAdA,eAAA,CAAgBG,MAAM,KACvCC,OAAO,CAACH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEjC,OAAO,CAAC,IACrB,EAAE+B,SAAS,CAACE,IAAI,IAAI,IAAI,IAAIF,SAAS,CAACE,IAAI,CAACjC,OAAO,KAAKqC,SAAS,CAAE,EACpE;MACA;MACA,IAAI,CAACE,SAAS,CAAC,CAAC;IAClB;EACF;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACZ,QAAQ,CAACa,MAAM,CAAC,CAAC;IACtB,IAAI,IAAI,CAAC3B,OAAO,IAAI,IAAI,EAAE;MACxB,IAAI,CAACA,OAAO,CAAC,CAAC;IAChB;IACA,IAAI,CAACyB,SAAS,CAAC,CAAC;EAClB;EAiBAD,UAAUA,CAAA,EAAS;IACjB,IAAI,CAACC,SAAS,CAAC,CAAC;IAEhB,IAAI,CAACL,KAAK,GAAGQ,WAAW,CAAC,IAAI,CAACnB,aAAa,EAAE,IAAI,CAAC;EACpD;EAEAgB,SAASA,CAAA,EAAS;IAChB,IAAI,IAAI,CAACL,KAAK,EAAE;MACdS,aAAa,CAAC,IAAI,CAACT,KAAK,CAAC;MACzB,IAAI,CAACA,KAAK,GAAGG,SAAS;IACxB;EACF;EAEAO,UAAUA,CAAA,EAAS;IACjB,IAAI,CAACC,QAAQ,CAAC;MACZpB,WAAW,EAAErB,IAAI,CAACsB,GAAG,CAAC;IACxB,CAAC,CAAC;EACJ;EAEAT,WAAWA,CAAC6B,KAAa,EAAQ;IAC/B,IAAI,CAACD,QAAQ,CAAC;MAAEC,KAAK,KAAAC,MAAA,CAAKD,KAAK;IAAG,CAAC,CAAC;EACtC;EAEA9B,YAAYA,CAACL,IAA+B,EAAQ;IAClD,IAAM;MAAEsB;IAAK,CAAC,GAAGtB,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,CAAC,CAAC;IAC3B,IAAI,CAACkC,QAAQ,CAAC;MAAEZ;IAAK,CAAC,CAAC;IAEvB,IAAM;MAAEe;IAAS,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC/BwC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGf,IAAI,CAAC;EAClB;EAEAV,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACqB,UAAU,CAAC,CAAC;EACnB;EAOAK,MAAMA,CAAA,EAAiB;IAAA,IAAAC,aAAA;IACrB,IAAM;MACJvC,IAAI,EAAE;QAAEO;MAAK,CAAC;MACdN;IACF,CAAC,GAAG,IAAI,CAACJ,KAAK;IACd,IAAM;MAAEiB,WAAW;MAAEQ,IAAI;MAAEa;IAAM,CAAC,GAAG,IAAI,CAACtB,KAAK;IAC/C,IAAM;MAAEW,MAAM;MAAEpC,SAAS;MAAEC;IAAQ,CAAC,GAAGiC,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,CAAC,CAAC;IAEjD,IAAMkB,YAAY,IAAAD,aAAA,GAAGf,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEW,KAAK,cAAAI,aAAA,cAAAA,aAAA,GAAIJ,KAAK;IAE3C,IAAMM,UAAU,GAAGvD,yBAAyB,CAACC,aAAa,CACxDC,SAAS,EACTC,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAIyB,WACb,CAAC;;IAED;IACA;IACA;IACA,IAAM4B,WAAW,GAAG,IAAI,CAACC,cAAc,CAACpC,IAAI,CAAC;IAE7C,IAAMqC,aAAa,GAAGnB,OAAO,CAACgB,UAAU,CAAC;IACzC,oBACElE,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAA8B,gBAC3CvE,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAAkB,gBAC/BvE,KAAA,CAAAsE,aAAA,CAAC9D,IAAI;MAACkB,QAAQ,EAAEA;IAAS,GAAEyC,WAAkB,CAAC,EAC7CA,WAAW,CAACK,MAAM,GAAGxC,IAAI,CAACwC,MAAM,iBAAIxE,KAAA,CAAAsE,aAAA,YAAG,sBAAuB,CAC5D,CAAC,eACNtE,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAAa,gBAC1BvE,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAAgC,GAC5CrB,OAAO,CAACe,YAAY,CAAC,iBACpBjE,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAAkB,gBAC/BvE,KAAA,CAAAsE,aAAA,CAAChE,eAAe;MAACmE,IAAI,EAAElE;IAAU,CAAE,CAAC,yBACjC,CACN,eACDP,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAAc,GAAC,eACf,EAAC,GAAG,EAChBF,aAAa,gBACZrE,KAAA,CAAAsE,aAAA;MAAMC,SAAS,EAAC;IAAa,GAAEL,UAAiB,CAAC,gBAEjDlE,KAAA,CAAAsE,aAAA,CAAClE,cAAc,MAAE,CAEhB,CACF,CAAC,EACL8C,OAAO,CAACe,YAAY,CAAC,iBACpBjE,KAAA,CAAAsE,aAAA;MAAKC,SAAS,EAAC;IAAe,GAAEN,YAAkB,CAEjD,CACF,CAAC;EAEV;AACF;AAAC1C,eAAA,CAjLYZ,yBAAyB,kBAId;EACpBmD,QAAQ,EAAEA,CAAA,KAAYX;AACxB,CAAC;AA6KH,eAAexC,yBAAyB"}
|
|
1
|
+
{"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","setInterval","clearInterval","updateTime","setState","error","onUpdate","render","errorMessage","timeString","previewText","getPreviewText","hasTimeString","length"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport CommandHistoryStorage, {\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: NodeJS.Timer;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n (name: string) => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","debounce","throttle","Log","SET_SEARCH_DEBOUNCE_MS","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","
|
|
1
|
+
{"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","debounce","throttle","Log","SET_SEARCH_DEBOUNCE_MS","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","table","columns","top","bottom","search","isReversed","onUpdate","debounceSetSearch","searchText","setSearch","throttledUpdateViewport","viewport","viewHeight","bufferedTop","Math","max","bufferedBottom","setViewport","updateTableAndReturnCleanup","cleanup","viewportData","items","offset","debug","setSearchText","updateViewport","debug2","cancel"],"sources":["../../src/command-history/CommandHistoryViewportUpdater.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\nimport throttle from 'lodash.throttle';\nimport {\n StorageTableViewport,\n ViewportData,\n ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport Log from '@deephaven/log';\nimport {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\n\nexport type CommandHistoryViewportUpdaterProps = {\n table: CommandHistoryTable;\n columns?: string[];\n top?: number;\n bottom?: number;\n search?: string;\n isReversed?: boolean;\n onUpdate: ViewportUpdateCallback<CommandHistoryStorageItem>;\n};\n\nconst SET_SEARCH_DEBOUNCE_MS = 150;\n\nconst UPDATE_DELAY = 150;\n\nconst ROW_BUFFER_PAGES = 3;\n\nconst log = Log.module('CommandHistoryViewportUpdater');\n\nfunction CommandHistoryViewportUpdater({\n table,\n columns,\n top = 0,\n bottom = 0,\n search,\n isReversed = false,\n onUpdate,\n}: CommandHistoryViewportUpdaterProps): null {\n const debounceSetSearch = useMemo(\n () =>\n debounce((searchText?: string) => {\n table.setSearch(searchText ?? '');\n }, SET_SEARCH_DEBOUNCE_MS),\n [table]\n );\n\n const throttledUpdateViewport = useMemo(\n () =>\n throttle((viewport: StorageTableViewport) => {\n const viewHeight = viewport.bottom - viewport.top;\n const bufferedTop = Math.max(\n 0,\n viewport.top - viewHeight * ROW_BUFFER_PAGES\n );\n const bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;\n\n table.setViewport({\n top: bufferedTop,\n bottom: bufferedBottom,\n columns: viewport.columns,\n });\n }, UPDATE_DELAY),\n [table]\n );\n\n useEffect(\n function updateTableAndReturnCleanup() {\n const cleanup = table.onUpdate(\n (viewportData: ViewportData<CommandHistoryStorageItem>) => {\n onUpdate({\n items: viewportData.items ?? [],\n offset: viewportData.offset ?? 0,\n });\n }\n );\n\n return () => {\n log.debug('onUpdate cleanup');\n cleanup();\n };\n },\n [table, onUpdate]\n );\n\n useEffect(\n function setSearchText() {\n debounceSetSearch(search);\n },\n [debounceSetSearch, search]\n );\n useEffect(\n function updateViewport() {\n throttledUpdateViewport({\n top,\n bottom,\n columns,\n });\n },\n [throttledUpdateViewport, top, bottom, columns, search, isReversed]\n );\n useEffect(\n () => () => {\n log.debug2('Cancel throttledUpdateViewport');\n throttledUpdateViewport.cancel();\n },\n [throttledUpdateViewport]\n );\n\n return null;\n}\n\nexport default CommandHistoryViewportUpdater;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC1C,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,QAAQ,MAAM,iBAAiB;AAMtC,OAAOC,GAAG,MAAM,gBAAgB;AAgBhC,IAAMC,sBAAsB,GAAG,GAAG;AAElC,IAAMC,YAAY,GAAG,GAAG;AAExB,IAAMC,gBAAgB,GAAG,CAAC;AAE1B,IAAMC,GAAG,GAAGJ,GAAG,CAACK,MAAM,CAAC,+BAA+B,CAAC;AAEvD,SAASC,6BAA6B,OAQO;EAAA,IARN;IACrCC,KAAK;IACLC,OAAO;IACPC,GAAG,GAAG,CAAC;IACPC,MAAM,GAAG,CAAC;IACVC,MAAM;IACNC,UAAU,GAAG,KAAK;IAClBC;EACkC,CAAC;EACnC,IAAMC,iBAAiB,GAAGjB,OAAO,CAC/B,MACEC,QAAQ,CAAEiB,UAAmB,IAAK;IAChCR,KAAK,CAACS,SAAS,CAACD,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,EAAE,CAAC;EACnC,CAAC,EAAEd,sBAAsB,CAAC,EAC5B,CAACM,KAAK,CAAC,CACR;EAED,IAAMU,uBAAuB,GAAGpB,OAAO,CACrC,MACEE,QAAQ,CAAEmB,QAA8B,IAAK;IAC3C,IAAMC,UAAU,GAAGD,QAAQ,CAACR,MAAM,GAAGQ,QAAQ,CAACT,GAAG;IACjD,IAAMW,WAAW,GAAGC,IAAI,CAACC,GAAG,CAC1B,CAAC,EACDJ,QAAQ,CAACT,GAAG,GAAGU,UAAU,GAAGhB,gBAAgB,CAC7C;IACD,IAAMoB,cAAc,GAAGL,QAAQ,CAACR,MAAM,GAAGS,UAAU,GAAGhB,gBAAgB;IAEtEI,KAAK,CAACiB,WAAW,CAAC;MAChBf,GAAG,EAAEW,WAAW;MAChBV,MAAM,EAAEa,cAAc;MACtBf,OAAO,EAAEU,QAAQ,CAACV;IACpB,CAAC,CAAC;EACJ,CAAC,EAAEN,YAAY,CAAC,EAClB,CAACK,KAAK,CAAC,CACR;EAEDX,SAAS,CACP,SAAS6B,2BAA2B,GAAG;IACrC,IAAMC,OAAO,GAAGnB,KAAK,CAACM,QAAQ,CAC3Bc,YAAqD,IAAK;MAAA;MACzDd,QAAQ,CAAC;QACPe,KAAK,yBAAED,YAAY,CAACC,KAAK,qEAAI,EAAE;QAC/BC,MAAM,0BAAEF,YAAY,CAACE,MAAM,uEAAI;MACjC,CAAC,CAAC;IACJ,CAAC,CACF;IAED,OAAO,MAAM;MACXzB,GAAG,CAAC0B,KAAK,CAAC,kBAAkB,CAAC;MAC7BJ,OAAO,EAAE;IACX,CAAC;EACH,CAAC,EACD,CAACnB,KAAK,EAAEM,QAAQ,CAAC,CAClB;EAEDjB,SAAS,CACP,SAASmC,aAAa,GAAG;IACvBjB,iBAAiB,CAACH,MAAM,CAAC;EAC3B,CAAC,EACD,CAACG,iBAAiB,EAAEH,MAAM,CAAC,CAC5B;EACDf,SAAS,CACP,SAASoC,cAAc,GAAG;IACxBf,uBAAuB,CAAC;MACtBR,GAAG;MACHC,MAAM;MACNF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACS,uBAAuB,EAAER,GAAG,EAAEC,MAAM,EAAEF,OAAO,EAAEG,MAAM,EAAEC,UAAU,CAAC,CACpE;EACDhB,SAAS,CACP,MAAM,MAAM;IACVQ,GAAG,CAAC6B,MAAM,CAAC,gCAAgC,CAAC;IAC5ChB,uBAAuB,CAACiB,MAAM,EAAE;EAClC,CAAC,EACD,CAACjB,uBAAuB,CAAC,CAC1B;EAED,OAAO,IAAI;AACb;AAEA,eAAeX,6BAA6B"}
|
package/dist/common/Code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Code.js","names":["React","Component","monaco","Code","constructor","props","
|
|
1
|
+
{"version":3,"file":"Code.js","names":["React","Component","monaco","Code","constructor","props","container","componentDidMount","colorize","children","editor","colorizeElement","theme","render","language","pointerEvents"],"sources":["../../src/common/Code.tsx"],"sourcesContent":["import React, { Component, ReactElement, ReactNode } from 'react';\nimport * as monaco from 'monaco-editor';\n\ninterface CodeProps {\n children: ReactNode;\n language: string;\n}\n\nclass Code extends Component<CodeProps, Record<string, never>> {\n constructor(props: CodeProps) {\n super(props);\n\n this.container = null;\n }\n\n componentDidMount(): void {\n this.colorize();\n }\n\n container: HTMLDivElement | null;\n\n colorize(): void {\n const { children } = this.props;\n if (this.container && children != null) {\n monaco.editor.colorizeElement(this.container, {\n theme: 'dh-dark',\n });\n }\n }\n\n render(): ReactElement {\n const { children, language } = this.props;\n return (\n <div>\n <div\n data-lang={language}\n ref={container => {\n this.container = container;\n }}\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style={{ pointerEvents: 'none' }}\n >\n {children}\n </div>\n </div>\n );\n }\n}\n\nexport default Code;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAiC,OAAO;AACjE,OAAO,KAAKC,MAAM,MAAM,eAAe;AAOvC,MAAMC,IAAI,SAASF,SAAS,CAAmC;EAC7DG,WAAW,CAACC,KAAgB,EAAE;IAC5B,KAAK,CAACA,KAAK,CAAC;IAAC;IAEb,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB;EAEAC,iBAAiB,GAAS;IACxB,IAAI,CAACC,QAAQ,EAAE;EACjB;EAIAA,QAAQ,GAAS;IACf,IAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACJ,KAAK;IAC/B,IAAI,IAAI,CAACC,SAAS,IAAIG,QAAQ,IAAI,IAAI,EAAE;MACtCP,MAAM,CAACQ,MAAM,CAACC,eAAe,CAAC,IAAI,CAACL,SAAS,EAAE;QAC5CM,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEJ,QAAQ;MAAEK;IAAS,CAAC,GAAG,IAAI,CAACT,KAAK;IACzC,oBACE,8CACE;MACE,aAAWS,QAAS;MACpB,GAAG,EAAER,SAAS,IAAI;QAChB,IAAI,CAACA,SAAS,GAAGA,SAAS;MAC5B;MACA;MACA;MAAA;MACA,KAAK,EAAE;QAAES,aAAa,EAAE;MAAO;IAAE,GAEhCN,QAAQ,CACL,CACF;EAEV;AACF;AAEA,eAAeN,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleConstants.js","names":["ConsoleConstants","LANGUAGE_MAP","Map"],"sources":["../../src/common/ConsoleConstants.ts"],"sourcesContent":["class ConsoleConstants {\n /**\n * Map of language keys to their display names\n */\n static get LANGUAGE_MAP(): Map<string, string> {\n return new Map([\n ['python', 'Python'],\n ['groovy', 'Groovy'],\n ['scala', 'Scala'],\n ]);\n }\n}\n\nexport default ConsoleConstants;\n"],"mappings":"AAAA,MAAMA,gBAAgB,CAAC;EACrB;AACF;AACA;EACE,WAAWC,
|
|
1
|
+
{"version":3,"file":"ConsoleConstants.js","names":["ConsoleConstants","LANGUAGE_MAP","Map"],"sources":["../../src/common/ConsoleConstants.ts"],"sourcesContent":["class ConsoleConstants {\n /**\n * Map of language keys to their display names\n */\n static get LANGUAGE_MAP(): Map<string, string> {\n return new Map([\n ['python', 'Python'],\n ['groovy', 'Groovy'],\n ['scala', 'Scala'],\n ]);\n }\n}\n\nexport default ConsoleConstants;\n"],"mappings":"AAAA,MAAMA,gBAAgB,CAAC;EACrB;AACF;AACA;EACE,WAAWC,YAAY,GAAwB;IAC7C,OAAO,IAAIC,GAAG,CAAC,CACb,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;EACJ;AACF;AAEA,eAAeF,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","dh","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","
|
|
1
|
+
{"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","dh","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","type","VariableType","TABLE","TREETABLE","HIERARCHICALTABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"sources":["../../src/common/ConsoleUtils.ts"],"sourcesContent":["import ShellQuote, { ParseEntry, ControlOperator } from 'shell-quote';\nimport dh, { VariableTypeUnion } from '@deephaven/jsapi-shim';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (str == null || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (date == null || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(type: VariableTypeUnion): boolean {\n return (\n type === dh.VariableType.TABLE ||\n type === dh.VariableType.TREETABLE ||\n type === dh.VariableType.HIERARCHICALTABLE\n );\n }\n\n static isWidgetType(type: VariableTypeUnion): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(type: VariableTypeUnion): boolean {\n return ConsoleUtils.isTableType(type) || ConsoleUtils.isWidgetType(type);\n }\n\n static isFigureType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectIcon.js","names":["React","FontAwesomeIcon","dhPandas","dhTable","vsGraph","vsPreview","dh","ObjectIcon","
|
|
1
|
+
{"version":3,"file":"ObjectIcon.js","names":["React","FontAwesomeIcon","dhPandas","dhTable","vsGraph","vsPreview","dh","ObjectIcon","type","VariableType","TABLE","TABLEMAP","TREETABLE","HIERARCHICALTABLE","FIGURE","PANDAS"],"sources":["../../src/common/ObjectIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';\nimport dh from '@deephaven/jsapi-shim';\n\nexport type ObjectIconProps = {\n type: string;\n};\n\nfunction ObjectIcon({ type }: ObjectIconProps): JSX.Element {\n switch (type) {\n case dh.VariableType.TABLE:\n case dh.VariableType.TABLEMAP:\n case dh.VariableType.TREETABLE:\n case dh.VariableType.HIERARCHICALTABLE:\n return <FontAwesomeIcon icon={dhTable} />;\n case dh.VariableType.FIGURE:\n return <FontAwesomeIcon icon={vsGraph} />;\n case dh.VariableType.PANDAS:\n return <FontAwesomeIcon icon={dhPandas} />;\n default:\n return <FontAwesomeIcon icon={vsPreview} />;\n }\n}\n\nexport default ObjectIcon;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAEC,SAAS,QAAQ,kBAAkB;AACxE,OAAOC,EAAE,MAAM,uBAAuB;AAMtC,SAASC,UAAU,OAAyC;EAAA,IAAxC;IAAEC;EAAsB,CAAC;EAC3C,QAAQA,IAAI;IACV,KAAKF,EAAE,CAACG,YAAY,CAACC,KAAK;IAC1B,KAAKJ,EAAE,CAACG,YAAY,CAACE,QAAQ;IAC7B,KAAKL,EAAE,CAACG,YAAY,CAACG,SAAS;IAC9B,KAAKN,EAAE,CAACG,YAAY,CAACI,iBAAiB;MACpC,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEV;MAAQ,EAAG;IAC3C,KAAKG,EAAE,CAACG,YAAY,CAACK,MAAM;MACzB,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEV;MAAQ,EAAG;IAC3C,KAAKE,EAAE,CAACG,YAAY,CAACM,MAAM;MACzB,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEb;MAAS,EAAG;IAC5C;MACE,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEG;MAAU,EAAG;EAAC;AAElD;AAEA,eAAeE,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleHistory.js","names":["React","Component","ConsoleHistoryItem","ConsoleHistory","itemKey","i","item","
|
|
1
|
+
{"version":3,"file":"ConsoleHistory.js","names":["React","Component","ConsoleHistoryItem","ConsoleHistory","itemKey","i","item","command","result","message","error","render","disabled","items","language","openObject","props","historyElements","length","historyElement","push"],"sources":["../../src/console-history/ConsoleHistory.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { Component, ReactElement } from 'react';\nimport { VariableDefinition } from '@deephaven/jsapi-shim';\nimport ConsoleHistoryItem from './ConsoleHistoryItem';\n\nimport './ConsoleHistory.scss';\nimport { ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\ninterface ConsoleHistoryProps {\n items: ConsoleHistoryActionItem[];\n language: string;\n openObject: (object: VariableDefinition) => void;\n disabled?: boolean;\n}\n\nclass ConsoleHistory extends Component<\n ConsoleHistoryProps,\n Record<string, never>\n> {\n static defaultProps = {\n disabled: false,\n };\n\n static itemKey(i: number, item: ConsoleHistoryActionItem): string {\n return `${i}.${item.command}.${item.result && item.result.message}.${\n item.result && item.result.error\n }`;\n }\n\n render(): ReactElement {\n const { disabled, items, language, openObject } = this.props;\n const historyElements = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const historyElement = (\n <ConsoleHistoryItem\n key={ConsoleHistory.itemKey(i, item)}\n disabled={disabled}\n item={item}\n openObject={openObject}\n language={language}\n />\n );\n historyElements.push(historyElement);\n }\n\n return (\n <div className=\"container-fluid console-history\">{historyElements}</div>\n );\n }\n}\n\nexport default ConsoleHistory;\n"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,SAAS,QAAsB,OAAO;AAAC,OAEhDC,kBAAkB;AAAA;AAYzB,MAAMC,cAAc,SAASF,SAAS,CAGpC;EAKA,OAAOG,OAAO,CAACC,CAAS,EAAEC,IAA8B,EAAU;IAChE,iBAAUD,CAAC,cAAIC,IAAI,CAACC,OAAO,cAAID,IAAI,CAACE,MAAM,IAAIF,IAAI,CAACE,MAAM,CAACC,OAAO,cAC/DH,IAAI,CAACE,MAAM,IAAIF,IAAI,CAACE,MAAM,CAACE,KAAK;EAEpC;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,QAAQ;MAAEC,KAAK;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACC,KAAK;IAC5D,IAAMC,eAAe,GAAG,EAAE;IAC1B,KAAK,IAAIZ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,KAAK,CAACK,MAAM,EAAEb,CAAC,IAAI,CAAC,EAAE;MACxC,IAAMC,IAAI,GAAGO,KAAK,CAACR,CAAC,CAAC;MACrB,IAAMc,cAAc,gBAClB,oBAAC,kBAAkB;QACjB,GAAG,EAAEhB,cAAc,CAACC,OAAO,CAACC,CAAC,EAAEC,IAAI,CAAE;QACrC,QAAQ,EAAEM,QAAS;QACnB,IAAI,EAAEN,IAAK;QACX,UAAU,EAAES,UAAW;QACvB,QAAQ,EAAED;MAAS,EAEtB;MACDG,eAAe,CAACG,IAAI,CAACD,cAAc,CAAC;IACtC;IAEA,oBACE;MAAK,SAAS,EAAC;IAAiC,GAAEF,eAAe,CAAO;EAE5E;AACF;AAAC,gBAnCKd,cAAc,kBAII;EACpBS,QAAQ,EAAE;AACZ,CAAC;AA+BH,eAAeT,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleHistoryItem.js","names":["React","PureComponent","Button","Log","classNames","Code","ObjectIcon","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","
|
|
1
|
+
{"version":3,"file":"ConsoleHistoryItem.js","names":["React","PureComponent","Button","Log","classNames","Code","ObjectIcon","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","command","render","disabled","language","disabledObjects","result","commandElement","resultElements","hasButtons","error","message","changes","created","updated","forEach","title","key","btnDisabled","undefined","indexOf","element","type","push","errorMessage","resultElement","length"],"sources":["../../src/console-history/ConsoleHistoryItem.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { VariableDefinition } from '@deephaven/jsapi-shim';\nimport classNames from 'classnames';\nimport { Code, ObjectIcon } from '../common';\nimport ConsoleHistoryItemResult from './ConsoleHistoryItemResult';\nimport ConsoleHistoryResultInProgress from './ConsoleHistoryResultInProgress';\nimport ConsoleHistoryResultErrorMessage from './ConsoleHistoryResultErrorMessage';\nimport './ConsoleHistoryItem.scss';\nimport { ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\nconst log = Log.module('ConsoleHistoryItem');\n\ninterface ConsoleHistoryItemProps {\n item: ConsoleHistoryActionItem;\n language: string;\n openObject: (object: VariableDefinition) => void;\n disabled?: boolean;\n}\n\nclass ConsoleHistoryItem extends PureComponent<\n ConsoleHistoryItemProps,\n Record<string, never>\n> {\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props: ConsoleHistoryItemProps) {\n super(props);\n\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n\n handleObjectClick(object: VariableDefinition): void {\n log.debug('handleObjectClick', object);\n\n const { openObject } = this.props;\n openObject(object);\n }\n\n handleCancelClick(): void {\n const { item } = this.props;\n if (item != null && item.cancelResult) {\n log.debug(`Cancelling command: ${item.command}`);\n item.cancelResult();\n }\n }\n\n render(): ReactElement {\n const { disabled, item, language } = this.props;\n const { disabledObjects, result } = item;\n\n let commandElement = null;\n if (item.command != null && item.command !== '') {\n commandElement = (\n <div className=\"console-history-item-command\">\n <div className=\"console-history-gutter\">></div>\n <div className=\"console-history-content\">\n <Code language={language}>{item.command}</Code>\n </div>\n </div>\n );\n }\n\n const resultElements = [];\n let hasButtons = false;\n\n if (result) {\n const { error, message, changes } = result;\n\n if (changes) {\n const { created, updated } = changes;\n [...created, ...updated].forEach(object => {\n hasButtons = true;\n const { title } = object;\n const key = `${title}`;\n const btnDisabled =\n disabled === undefined ||\n disabled ||\n (disabledObjects ?? []).indexOf(key) >= 0;\n const element = (\n <Button\n key={key}\n kind=\"primary\"\n onClick={() => this.handleObjectClick(object)}\n className=\"btn-console-object\"\n disabled={btnDisabled}\n icon={<ObjectIcon type={object.type} />}\n >\n {title}\n </Button>\n );\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error != null && item.command == null) {\n let errorMessage = `${(error as { message: string }).message ?? error}`;\n if (!errorMessage) {\n errorMessage = error as string;\n }\n const element = (\n <ConsoleHistoryResultErrorMessage\n key=\"result-error\"\n message={errorMessage}\n />\n );\n resultElements.push(element);\n }\n\n if (message !== undefined && message !== '') {\n const element = (\n <div key=\"log-message\" className=\"log-message\">\n {message}\n </div>\n );\n resultElements.push(element);\n }\n } else {\n hasButtons = true;\n const element = (\n <ConsoleHistoryResultInProgress\n key=\"in_progress\"\n onCancelClick={this.handleCancelClick}\n disabled={disabled}\n />\n );\n resultElements.push(element);\n }\n\n let resultElement = null;\n if (resultElements.length > 0) {\n resultElement = (\n <ConsoleHistoryItemResult>{resultElements}</ConsoleHistoryItemResult>\n );\n }\n\n return (\n <div\n className={classNames('console-command-result', {\n 'console-result-buttons': hasButtons,\n })}\n >\n {commandElement}\n {resultElement}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryItem;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleHistoryItemResult.js","names":["React","PropTypes","ConsoleHistoryItemResult","
|
|
1
|
+
{"version":3,"file":"ConsoleHistoryItemResult.js","names":["React","PropTypes","ConsoleHistoryItemResult","children","propTypes","node","isRequired"],"sources":["../../src/console-history/ConsoleHistoryItemResult.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { ReactElement, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ConsoleHistoryItemResult({\n children,\n}: {\n children: ReactNode;\n}): ReactElement {\n return (\n <div className=\"console-history-item-result\">\n <div className=\"console-history-gutter\">-</div>\n <div className=\"console-history-content\">{children}</div>\n </div>\n );\n}\n\nConsoleHistoryItemResult.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default ConsoleHistoryItemResult;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAmC,OAAO;AACtD,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,wBAAwB,OAIhB;EAAA,IAJiB;IAChCC;EAGF,CAAC;EACC,oBACE;IAAK,SAAS,EAAC;EAA6B,gBAC1C;IAAK,SAAS,EAAC;EAAwB,GAAC,GAAC,CAAM,eAC/C;IAAK,SAAS,EAAC;EAAyB,GAAEA,QAAQ,CAAO,CACrD;AAEV;AAEAD,wBAAwB,CAACE,SAAS,GAAG;EACnCD,QAAQ,EAAEF,SAAS,CAACI,IAAI,CAACC;AAC3B,CAAC;AAED,eAAeJ,wBAAwB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleHistoryResultErrorMessage.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsTriangleRight","vsTriangleDown","assertNotNull","ConsoleHistoryResultErrorMessage","constructor","props","_defineProperty","handleKeyPress","bind","handleMouseDown","handleMouseMove","handleMouseUp","handleToggleError","handleMouseEnter","handleMouseLeave","mouseX","mouseY","isClicking","state","isExpanded","isTriggerHovered","event","key","stopPropagation","preventDefault","clientX","clientY","Math","abs","mouseDragThreshold","shiftKey","metaKey","altKey","setState","render","message","messageProp","lineBreakIndex","indexOf","isMultiline","topLineOfMessage","slice","remainderOfMessage","arrowBtnClasses","createElement","className","expanded","Fragment","type","onClick","tabIndex","icon","transform","role","onKeyPress","onMouseDown","onMouseMove","onMouseEnter","onMouseLeave","onMouseUp"],"sources":["../../src/console-history/ConsoleHistoryResultErrorMessage.tsx"],"sourcesContent":["/**\n * Error message that can be expanded\n */\nimport React, {\n KeyboardEvent,\n MouseEvent,\n PureComponent,\n ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleRight, vsTriangleDown } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\n\ninterface ConsoleHistoryResultErrorMessageProps {\n message?: string;\n}\n\ninterface ConsoleHistoryResultErrorMessageState {\n isExpanded: boolean;\n isTriggerHovered: boolean;\n}\n\nclass ConsoleHistoryResultErrorMessage extends PureComponent<\n ConsoleHistoryResultErrorMessageProps,\n ConsoleHistoryResultErrorMessageState\n> {\n static defaultProps = {\n message: '',\n };\n\n static mouseDragThreshold = 5;\n\n constructor(props: ConsoleHistoryResultErrorMessageProps) {\n super(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleToggleError = this.handleToggleError.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n\n this.state = {\n isExpanded: false,\n isTriggerHovered: false,\n };\n }\n\n mouseX: number | null;\n\n mouseY: number | null;\n\n isClicking: boolean;\n\n handleKeyPress(event: KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Toggle the error open/closed\n this.handleToggleError();\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n handleMouseDown(event: MouseEvent<HTMLDivElement>): void {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.isClicking = true;\n }\n\n handleMouseMove(event: MouseEvent<HTMLDivElement>): void {\n if (this.mouseX != null && this.mouseY != null) {\n if (\n Math.abs(event.clientX - this.mouseX) >=\n ConsoleHistoryResultErrorMessage.mouseDragThreshold ||\n Math.abs(event.clientY - this.mouseY) >=\n ConsoleHistoryResultErrorMessage.mouseDragThreshold\n ) {\n this.isClicking = false;\n }\n } else if (this.isClicking) {\n // Rare case - could happen if you mouse down, switch window focus, release the mouse, then come back, mouse down outside of the error, drag into the error, then release the mouse\n this.isClicking = false;\n }\n }\n\n handleMouseUp(event: MouseEvent<HTMLDivElement>): void {\n // We don't want to expand/collapse the error if user is holding shift or an alt key\n // They may be trying to adjust their selection\n if (this.isClicking && !event.shiftKey && !event.metaKey && !event.altKey) {\n this.handleToggleError();\n }\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n }\n\n handleToggleError(): void {\n this.setState(state => ({ isExpanded: !state.isExpanded }));\n }\n\n handleMouseEnter(): void {\n this.setState({ isTriggerHovered: true });\n }\n\n handleMouseLeave(): void {\n this.setState({ isTriggerHovered: false });\n }\n\n render(): ReactElement {\n const { isExpanded, isTriggerHovered } = this.state;\n const { message: messageProp } = this.props;\n assertNotNull(messageProp);\n const lineBreakIndex = messageProp.indexOf('\\n');\n const isMultiline = lineBreakIndex > -1;\n let topLineOfMessage = messageProp;\n if (isMultiline) {\n topLineOfMessage = messageProp.slice(0, lineBreakIndex);\n }\n const remainderOfMessage = messageProp.slice(lineBreakIndex);\n const arrowBtnClasses = isTriggerHovered\n ? 'error-btn-link error-btn-link--active'\n : 'error-btn-link';\n\n return (\n <div\n key=\"error\"\n className={classNames('error-message', {\n expanded: isExpanded,\n })}\n >\n {isMultiline && (\n <>\n <div className=\"error-gutter\">\n <button\n type=\"button\"\n onClick={this.handleToggleError}\n className={arrowBtnClasses}\n tabIndex={-1}\n >\n <FontAwesomeIcon\n icon={isExpanded ? vsTriangleDown : vsTriangleRight}\n transform=\"left-3\"\n />\n </button>\n </div>\n <div className=\"error-content\">\n <div\n className=\"console-error-text-trigger\"\n role=\"button\"\n tabIndex={0}\n onKeyPress={this.handleKeyPress}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onMouseUp={this.handleMouseUp}\n >\n {topLineOfMessage}\n </div>\n {isExpanded ? remainderOfMessage : ''}\n </div>\n </>\n )}\n {!isMultiline && (\n <div className=\"error-content\">\n <div className=\"console-error-text\">{topLineOfMessage}</div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryResultErrorMessage;\n"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,KAAK,IAGVC,aAAa,QAER,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,eAAe,EAAEC,cAAc,QAAQ,kBAAkB;AAClE,SAASC,aAAa,QAAQ,kBAAkB;AAWhD,MAAMC,gCAAgC,SAASN,aAAa,CAG1D;EAOAO,WAAWA,CAACC,KAA4C,EAAE;IACxD,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAEb,IAAI,CAACC,cAAc,GAAG,IAAI,CAACA,cAAc,CAACC,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe,CAACD,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACE,eAAe,GAAG,IAAI,CAACA,eAAe,CAACF,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACG,aAAa,GAAG,IAAI,CAACA,aAAa,CAACH,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACI,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACK,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACL,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACM,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACN,IAAI,CAAC,IAAI,CAAC;IAExD,IAAI,CAACO,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,UAAU,GAAG,KAAK;IAEvB,IAAI,CAACC,KAAK,GAAG;MACXC,UAAU,EAAE,KAAK;MACjBC,gBAAgB,EAAE;IACpB,CAAC;EACH;EAQAb,cAAcA,CAACc,KAAoC,EAAQ;IACzD,QAAQA,KAAK,CAACC,GAAG;MACf,KAAK,OAAO;MACZ,KAAK,GAAG;QACN;QACA,IAAI,CAACV,iBAAiB,CAAC,CAAC;QACxBS,KAAK,CAACE,eAAe,CAAC,CAAC;QACvBF,KAAK,CAACG,cAAc,CAAC,CAAC;QACtB;MACF;QACE;IACJ;EACF;EAEAf,eAAeA,CAACY,KAAiC,EAAQ;IACvD,IAAI,CAACN,MAAM,GAAGM,KAAK,CAACI,OAAO;IAC3B,IAAI,CAACT,MAAM,GAAGK,KAAK,CAACK,OAAO;IAC3B,IAAI,CAACT,UAAU,GAAG,IAAI;EACxB;EAEAP,eAAeA,CAACW,KAAiC,EAAQ;IACvD,IAAI,IAAI,CAACN,MAAM,IAAI,IAAI,IAAI,IAAI,CAACC,MAAM,IAAI,IAAI,EAAE;MAC9C,IACEW,IAAI,CAACC,GAAG,CAACP,KAAK,CAACI,OAAO,GAAG,IAAI,CAACV,MAAM,CAAC,IACnCZ,gCAAgC,CAAC0B,kBAAkB,IACrDF,IAAI,CAACC,GAAG,CAACP,KAAK,CAACK,OAAO,GAAG,IAAI,CAACV,MAAM,CAAC,IACnCb,gCAAgC,CAAC0B,kBAAkB,EACrD;QACA,IAAI,CAACZ,UAAU,GAAG,KAAK;MACzB;IACF,CAAC,MAAM,IAAI,IAAI,CAACA,UAAU,EAAE;MAC1B;MACA,IAAI,CAACA,UAAU,GAAG,KAAK;IACzB;EACF;EAEAN,aAAaA,CAACU,KAAiC,EAAQ;IACrD;IACA;IACA,IAAI,IAAI,CAACJ,UAAU,IAAI,CAACI,KAAK,CAACS,QAAQ,IAAI,CAACT,KAAK,CAACU,OAAO,IAAI,CAACV,KAAK,CAACW,MAAM,EAAE;MACzE,IAAI,CAACpB,iBAAiB,CAAC,CAAC;IAC1B;IACA,IAAI,CAACG,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,UAAU,GAAG,KAAK;EACzB;EAEAL,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACqB,QAAQ,CAACf,KAAK,KAAK;MAAEC,UAAU,EAAE,CAACD,KAAK,CAACC;IAAW,CAAC,CAAC,CAAC;EAC7D;EAEAN,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAACoB,QAAQ,CAAC;MAAEb,gBAAgB,EAAE;IAAK,CAAC,CAAC;EAC3C;EAEAN,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAACmB,QAAQ,CAAC;MAAEb,gBAAgB,EAAE;IAAM,CAAC,CAAC;EAC5C;EAEAc,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEf,UAAU;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAACF,KAAK;IACnD,IAAM;MAAEiB,OAAO,EAAEC;IAAY,CAAC,GAAG,IAAI,CAAC/B,KAAK;IAC3CH,aAAa,CAACkC,WAAW,CAAC;IAC1B,IAAMC,cAAc,GAAGD,WAAW,CAACE,OAAO,CAAC,IAAI,CAAC;IAChD,IAAMC,WAAW,GAAGF,cAAc,GAAG,CAAC,CAAC;IACvC,IAAIG,gBAAgB,GAAGJ,WAAW;IAClC,IAAIG,WAAW,EAAE;MACfC,gBAAgB,GAAGJ,WAAW,CAACK,KAAK,CAAC,CAAC,EAAEJ,cAAc,CAAC;IACzD;IACA,IAAMK,kBAAkB,GAAGN,WAAW,CAACK,KAAK,CAACJ,cAAc,CAAC;IAC5D,IAAMM,eAAe,GAAGvB,gBAAgB,GACpC,uCAAuC,GACvC,gBAAgB;IAEpB,oBACExB,KAAA,CAAAgD,aAAA;MACEtB,GAAG,EAAC,OAAO;MACXuB,SAAS,EAAE/C,UAAU,CAAC,eAAe,EAAE;QACrCgD,QAAQ,EAAE3B;MACZ,CAAC;IAAE,GAEFoB,WAAW,iBACV3C,KAAA,CAAAgD,aAAA,CAAAhD,KAAA,CAAAmD,QAAA,qBACEnD,KAAA,CAAAgD,aAAA;MAAKC,SAAS,EAAC;IAAc,gBAC3BjD,KAAA,CAAAgD,aAAA;MACEI,IAAI,EAAC,QAAQ;MACbC,OAAO,EAAE,IAAI,CAACrC,iBAAkB;MAChCiC,SAAS,EAAEF,eAAgB;MAC3BO,QAAQ,EAAE,CAAC;IAAE,gBAEbtD,KAAA,CAAAgD,aAAA,CAAC7C,eAAe;MACdoD,IAAI,EAAEhC,UAAU,GAAGlB,cAAc,GAAGD,eAAgB;MACpDoD,SAAS,EAAC;IAAQ,CACnB,CACK,CACL,CAAC,eACNxD,KAAA,CAAAgD,aAAA;MAAKC,SAAS,EAAC;IAAe,gBAC5BjD,KAAA,CAAAgD,aAAA;MACEC,SAAS,EAAC,4BAA4B;MACtCQ,IAAI,EAAC,QAAQ;MACbH,QAAQ,EAAE,CAAE;MACZI,UAAU,EAAE,IAAI,CAAC/C,cAAe;MAChCgD,WAAW,EAAE,IAAI,CAAC9C,eAAgB;MAClC+C,WAAW,EAAE,IAAI,CAAC9C,eAAgB;MAClC+C,YAAY,EAAE,IAAI,CAAC5C,gBAAiB;MACpC6C,YAAY,EAAE,IAAI,CAAC5C,gBAAiB;MACpC6C,SAAS,EAAE,IAAI,CAAChD;IAAc,GAE7B6B,gBACE,CAAC,EACLrB,UAAU,GAAGuB,kBAAkB,GAAG,EAChC,CACL,CACH,EACA,CAACH,WAAW,iBACX3C,KAAA,CAAAgD,aAAA;MAAKC,SAAS,EAAC;IAAe,gBAC5BjD,KAAA,CAAAgD,aAAA;MAAKC,SAAS,EAAC;IAAoB,GAAEL,gBAAsB,CACxD,CAEJ,CAAC;EAEV;AACF;AAAClC,eAAA,CA/JKH,gCAAgC,kBAId;EACpBgC,OAAO,EAAE;AACX,CAAC;AAAA7B,eAAA,CANGH,gCAAgC,wBAQR,CAAC;AAyJ/B,eAAeA,gCAAgC"}
|
|
1
|
+
{"version":3,"file":"ConsoleHistoryResultErrorMessage.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsTriangleRight","vsTriangleDown","assertNotNull","ConsoleHistoryResultErrorMessage","constructor","props","handleKeyPress","bind","handleMouseDown","handleMouseMove","handleMouseUp","handleToggleError","handleMouseEnter","handleMouseLeave","mouseX","mouseY","isClicking","state","isExpanded","isTriggerHovered","event","key","stopPropagation","preventDefault","clientX","clientY","Math","abs","mouseDragThreshold","shiftKey","metaKey","altKey","setState","render","message","messageProp","lineBreakIndex","indexOf","isMultiline","topLineOfMessage","slice","remainderOfMessage","arrowBtnClasses","expanded"],"sources":["../../src/console-history/ConsoleHistoryResultErrorMessage.tsx"],"sourcesContent":["/**\n * Error message that can be expanded\n */\nimport React, {\n KeyboardEvent,\n MouseEvent,\n PureComponent,\n ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleRight, vsTriangleDown } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\n\ninterface ConsoleHistoryResultErrorMessageProps {\n message?: string;\n}\n\ninterface ConsoleHistoryResultErrorMessageState {\n isExpanded: boolean;\n isTriggerHovered: boolean;\n}\n\nclass ConsoleHistoryResultErrorMessage extends PureComponent<\n ConsoleHistoryResultErrorMessageProps,\n ConsoleHistoryResultErrorMessageState\n> {\n static defaultProps = {\n message: '',\n };\n\n static mouseDragThreshold = 5;\n\n constructor(props: ConsoleHistoryResultErrorMessageProps) {\n super(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleToggleError = this.handleToggleError.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n\n this.state = {\n isExpanded: false,\n isTriggerHovered: false,\n };\n }\n\n mouseX: number | null;\n\n mouseY: number | null;\n\n isClicking: boolean;\n\n handleKeyPress(event: KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Toggle the error open/closed\n this.handleToggleError();\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n handleMouseDown(event: MouseEvent<HTMLDivElement>): void {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.isClicking = true;\n }\n\n handleMouseMove(event: MouseEvent<HTMLDivElement>): void {\n if (this.mouseX != null && this.mouseY != null) {\n if (\n Math.abs(event.clientX - this.mouseX) >=\n ConsoleHistoryResultErrorMessage.mouseDragThreshold ||\n Math.abs(event.clientY - this.mouseY) >=\n ConsoleHistoryResultErrorMessage.mouseDragThreshold\n ) {\n this.isClicking = false;\n }\n } else if (this.isClicking) {\n // Rare case - could happen if you mouse down, switch window focus, release the mouse, then come back, mouse down outside of the error, drag into the error, then release the mouse\n this.isClicking = false;\n }\n }\n\n handleMouseUp(event: MouseEvent<HTMLDivElement>): void {\n // We don't want to expand/collapse the error if user is holding shift or an alt key\n // They may be trying to adjust their selection\n if (this.isClicking && !event.shiftKey && !event.metaKey && !event.altKey) {\n this.handleToggleError();\n }\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n }\n\n handleToggleError(): void {\n this.setState(state => ({ isExpanded: !state.isExpanded }));\n }\n\n handleMouseEnter(): void {\n this.setState({ isTriggerHovered: true });\n }\n\n handleMouseLeave(): void {\n this.setState({ isTriggerHovered: false });\n }\n\n render(): ReactElement {\n const { isExpanded, isTriggerHovered } = this.state;\n const { message: messageProp } = this.props;\n assertNotNull(messageProp);\n const lineBreakIndex = messageProp.indexOf('\\n');\n const isMultiline = lineBreakIndex > -1;\n let topLineOfMessage = messageProp;\n if (isMultiline) {\n topLineOfMessage = messageProp.slice(0, lineBreakIndex);\n }\n const remainderOfMessage = messageProp.slice(lineBreakIndex);\n const arrowBtnClasses = isTriggerHovered\n ? 'error-btn-link error-btn-link--active'\n : 'error-btn-link';\n\n return (\n <div\n key=\"error\"\n className={classNames('error-message', {\n expanded: isExpanded,\n })}\n >\n {isMultiline && (\n <>\n <div className=\"error-gutter\">\n <button\n type=\"button\"\n onClick={this.handleToggleError}\n className={arrowBtnClasses}\n tabIndex={-1}\n >\n <FontAwesomeIcon\n icon={isExpanded ? vsTriangleDown : vsTriangleRight}\n transform=\"left-3\"\n />\n </button>\n </div>\n <div className=\"error-content\">\n <div\n className=\"console-error-text-trigger\"\n role=\"button\"\n tabIndex={0}\n onKeyPress={this.handleKeyPress}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onMouseUp={this.handleMouseUp}\n >\n {topLineOfMessage}\n </div>\n {isExpanded ? remainderOfMessage : ''}\n </div>\n </>\n )}\n {!isMultiline && (\n <div className=\"error-content\">\n <div className=\"console-error-text\">{topLineOfMessage}</div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryResultErrorMessage;\n"],"mappings":"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"}
|