@deephaven/console 1.7.2-beta.1 → 1.7.2-react-18-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Console.d.ts +1 -1
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +6 -8
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.js +30 -34
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleObjectsMenu.js +2 -3
- package/dist/ConsoleObjectsMenu.js.map +1 -1
- package/dist/ConsoleShortcuts.js +0 -1
- package/dist/ConsoleShortcuts.js.map +1 -1
- package/dist/ConsoleStatusBar.js +2 -3
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/HeapUsage.js +2 -3
- package/dist/HeapUsage.js.map +1 -1
- package/dist/command-history/CommandHistory.js +2 -3
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +1 -2
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +1 -6
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +5 -10
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +2 -3
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryStorage.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.js.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/command-history/index.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/common/index.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +1 -2
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.d.ts +2 -10
- package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js +1 -6
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +1 -3
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +1 -2
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.js +2 -3
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js +5 -6
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js +4 -3
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/ZipStreamHelper.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js +1 -2
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js +9 -12
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoProviders.js +3 -4
- package/dist/monaco/MonacoProviders.js.map +1 -1
- package/dist/monaco/MonacoThemeProvider.js +1 -2
- package/dist/monaco/MonacoThemeProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.js +1 -1
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/RuffDefaultSettings.js +0 -1
- package/dist/monaco/RuffDefaultSettings.js.map +1 -1
- package/dist/monaco/RuffSettingsModal.js +5 -7
- package/dist/monaco/RuffSettingsModal.js.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.js.map +1 -1
- package/dist/monaco/lang/db.js +0 -1
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.js +0 -1
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.js +0 -1
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/monaco/ruffSchema.js.map +1 -1
- package/dist/notebook/Editor.js +1 -1
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js +1 -3
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +14 -15
- package/dist/ConsolePropTypes.d.ts +0 -9
- package/dist/ConsolePropTypes.d.ts.map +0 -1
- package/dist/ConsolePropTypes.js +0 -10
- package/dist/ConsolePropTypes.js.map +0 -1
- package/dist/StoragePropTypes.d.ts +0 -14
- package/dist/StoragePropTypes.d.ts.map +0 -1
- package/dist/StoragePropTypes.js +0 -16
- package/dist/StoragePropTypes.js.map +0 -1
package/dist/ConsoleInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","disconnect","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","editor","createModel","generateConsoleUri","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","create","setEOL","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","altKey","shiftKey","metaKey","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","getModel","closeDocument","dispose","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","_this$commandEditor5$","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","_this$commandSuggesti3","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor10","_this$commandEditor11","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","_this$commandEditor16","lastLine","lastCharTop","clear","_this$commandEditor17","_this$commandEditor18","_this$commandEditor19","layout","index","_this$commandEditor20","_this$commandEditor21","modifiedValue","get","historyValue","_this","_asyncToGenerator","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor22","_this$commandEditor23","updateOptions","render","disabled","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: dh.IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n\n this.commandContainer = React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n this.resizeObserver = new window.ResizeObserver(this.handleResize);\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n resizeObserver: ResizeObserver;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const model = monaco.editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\n const commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model,\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.code === 'ArrowUp' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.code === 'ArrowDown' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index: number | null): void {\n if (index !== null && index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\n table.close();\n } catch (err) {\n this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoProviders\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","disconnect","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","editor","createModel","generateConsoleUri","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","create","setEOL","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","altKey","shiftKey","metaKey","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","getModel","closeDocument","dispose","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor0","_this$commandEditor1","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor10","_this$commandEditor11","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","lastLine","lastCharTop","clear","_this$commandEditor15","_this$commandEditor16","layout","index","_this$commandEditor17","modifiedValue","get","historyValue","_this","_asyncToGenerator","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor18","_this$commandEditor19","updateOptions","render","disabled","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: dh.IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n\n this.commandContainer = React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n this.resizeObserver = new window.ResizeObserver(this.handleResize);\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n resizeObserver: ResizeObserver;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const model = monaco.editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\n const commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model,\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.code === 'ArrowUp' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.code === 'ArrowDown' &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index: number | null): void {\n if (index !== null && index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\n table.close();\n } catch (err) {\n this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoProviders\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,8 +5,7 @@ import { vsGraph, vsTriangleDown } from '@deephaven/icons';
|
|
|
5
5
|
import { useDebouncedCallback } from '@deephaven/react-hooks';
|
|
6
6
|
import { EMPTY_FUNCTION } from '@deephaven/utils';
|
|
7
7
|
import { ObjectIcon } from "./common/index.js";
|
|
8
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
9
|
var RESET_FILTER_DELAY = 5000;
|
|
11
10
|
function ConsoleObjectsMenu(_ref) {
|
|
12
11
|
var {
|
|
@@ -21,7 +20,7 @@ function ConsoleObjectsMenu(_ref) {
|
|
|
21
20
|
var handleMenuOpen = useCallback(() => {
|
|
22
21
|
var _searchRef$current;
|
|
23
22
|
resetFilter.cancel();
|
|
24
|
-
(_searchRef$current = searchRef.current) === null || _searchRef$current === void 0
|
|
23
|
+
(_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.select();
|
|
25
24
|
}, [resetFilter]);
|
|
26
25
|
var handleMenuClose = useCallback(() => {
|
|
27
26
|
resetFilter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleObjectsMenu.js","names":["React","useCallback","useMemo","useRef","useState","FontAwesomeIcon","Button","DropdownMenu","SearchInput","vsGraph","vsTriangleDown","useDebouncedCallback","EMPTY_FUNCTION","ObjectIcon","jsx","_jsx","jsxs","_jsxs","RESET_FILTER_DELAY","ConsoleObjectsMenu","_ref","openObject","objects","filterText","setFilterText","searchRef","resetFilter","handleMenuOpen","_searchRef$current","cancel","current","select","handleMenuClose","actions","length","searchActions","menuElement","value","onChange","e","target","className","ref","filteredObjects","filter","_ref2","title","toLowerCase","includes","objectActions","map","object","action","icon","type","kind","disabled","onClick","tooltip","children","mask","transform","onMenuOpened","onMenuClosed","options","initialKeyboardIndex","popperOptions","placement"],"sources":["../src/ConsoleObjectsMenu.tsx"],"sourcesContent":["import React, {\n type ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n SearchInput,\n} from '@deephaven/components';\nimport { vsGraph, vsTriangleDown } from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { useDebouncedCallback } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { ObjectIcon } from './common';\n\ninterface ConsoleObjectsMenuProps {\n openObject: (object: DhType.ide.VariableDefinition) => void;\n objects: readonly DhType.ide.VariableDefinition[];\n}\n\nconst RESET_FILTER_DELAY = 5000;\n\nfunction ConsoleObjectsMenu({\n openObject,\n objects,\n}: ConsoleObjectsMenuProps): ReactElement {\n const [filterText, setFilterText] = useState('');\n const searchRef = useRef<SearchInput>(null);\n\n const resetFilter = useDebouncedCallback(() => {\n setFilterText('');\n }, RESET_FILTER_DELAY);\n\n const handleMenuOpen = useCallback(() => {\n resetFilter.cancel();\n searchRef.current?.select();\n }, [resetFilter]);\n\n const handleMenuClose = useCallback(() => {\n resetFilter();\n }, [resetFilter]);\n\n const actions: DropdownActions = useMemo(() => {\n if (objects.length === 0) {\n return [];\n }\n const searchActions = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={e => {\n setFilterText(e.target.value);\n }}\n className=\"console-menu\"\n ref={searchRef}\n />\n ),\n };\n const filteredObjects = filterText\n ? objects.filter(\n ({ title }) =>\n title != null &&\n title.toLowerCase().includes(filterText.toLowerCase())\n )\n : objects;\n const objectActions = filteredObjects.map(object => ({\n title: object.title,\n action: () => {\n openObject(object);\n },\n icon: <ObjectIcon type={object.type} />,\n }));\n return [searchActions, ...objectActions];\n }, [objects, filterText, openObject]);\n\n return (\n <Button\n aria-label=\"Objects\"\n kind=\"ghost\"\n disabled={objects.length === 0}\n // no-op: click is handled in `DropdownMenu`\n onClick={EMPTY_FUNCTION}\n tooltip={objects.length === 0 ? 'No objects available' : 'Objects'}\n icon={\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsGraph}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n }\n >\n <DropdownMenu\n actions={actions}\n onMenuOpened={handleMenuOpen}\n onMenuClosed={handleMenuClose}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={{ placement: 'bottom-end' }}\n />\n </Button>\n );\n}\n\nexport default ConsoleObjectsMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,IAEVC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SACEC,MAAM,EAENC,YAAY,EACZC,WAAW,QACN,uBAAuB;AAC9B,SAASC,OAAO,EAAEC,cAAc,QAAQ,kBAAkB;AAE1D,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,cAAc,QAAQ,kBAAkB;AAAC,SACzCC,UAAU;AAAA,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"file":"ConsoleObjectsMenu.js","names":["React","useCallback","useMemo","useRef","useState","FontAwesomeIcon","Button","DropdownMenu","SearchInput","vsGraph","vsTriangleDown","useDebouncedCallback","EMPTY_FUNCTION","ObjectIcon","jsx","_jsx","jsxs","_jsxs","RESET_FILTER_DELAY","ConsoleObjectsMenu","_ref","openObject","objects","filterText","setFilterText","searchRef","resetFilter","handleMenuOpen","_searchRef$current","cancel","current","select","handleMenuClose","actions","length","searchActions","menuElement","value","onChange","e","target","className","ref","filteredObjects","filter","_ref2","title","toLowerCase","includes","objectActions","map","object","action","icon","type","kind","disabled","onClick","tooltip","children","mask","transform","onMenuOpened","onMenuClosed","options","initialKeyboardIndex","popperOptions","placement"],"sources":["../src/ConsoleObjectsMenu.tsx"],"sourcesContent":["import React, {\n type ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n SearchInput,\n} from '@deephaven/components';\nimport { vsGraph, vsTriangleDown } from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { useDebouncedCallback } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { ObjectIcon } from './common';\n\ninterface ConsoleObjectsMenuProps {\n openObject: (object: DhType.ide.VariableDefinition) => void;\n objects: readonly DhType.ide.VariableDefinition[];\n}\n\nconst RESET_FILTER_DELAY = 5000;\n\nfunction ConsoleObjectsMenu({\n openObject,\n objects,\n}: ConsoleObjectsMenuProps): ReactElement {\n const [filterText, setFilterText] = useState('');\n const searchRef = useRef<SearchInput>(null);\n\n const resetFilter = useDebouncedCallback(() => {\n setFilterText('');\n }, RESET_FILTER_DELAY);\n\n const handleMenuOpen = useCallback(() => {\n resetFilter.cancel();\n searchRef.current?.select();\n }, [resetFilter]);\n\n const handleMenuClose = useCallback(() => {\n resetFilter();\n }, [resetFilter]);\n\n const actions: DropdownActions = useMemo(() => {\n if (objects.length === 0) {\n return [];\n }\n const searchActions = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={e => {\n setFilterText(e.target.value);\n }}\n className=\"console-menu\"\n ref={searchRef}\n />\n ),\n };\n const filteredObjects = filterText\n ? objects.filter(\n ({ title }) =>\n title != null &&\n title.toLowerCase().includes(filterText.toLowerCase())\n )\n : objects;\n const objectActions = filteredObjects.map(object => ({\n title: object.title,\n action: () => {\n openObject(object);\n },\n icon: <ObjectIcon type={object.type} />,\n }));\n return [searchActions, ...objectActions];\n }, [objects, filterText, openObject]);\n\n return (\n <Button\n aria-label=\"Objects\"\n kind=\"ghost\"\n disabled={objects.length === 0}\n // no-op: click is handled in `DropdownMenu`\n onClick={EMPTY_FUNCTION}\n tooltip={objects.length === 0 ? 'No objects available' : 'Objects'}\n icon={\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsGraph}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n }\n >\n <DropdownMenu\n actions={actions}\n onMenuOpened={handleMenuOpen}\n onMenuClosed={handleMenuClose}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={{ placement: 'bottom-end' }}\n />\n </Button>\n );\n}\n\nexport default ConsoleObjectsMenu;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/ConsoleShortcuts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleShortcuts.js","names":["ShortcutRegistry","KEY","MODIFIER","CONSOLE","name","CLEAR","createAndAdd","id","shortcut","CTRL","L","macShortcut","C","FOCUS_HISTORY","H","OPTION","COMMAND_HISTORY","SEND_TO_CONSOLE","ENTER","SEND_TO_NOTEBOOK","CMD","RUN","ALT","R","NOTEBOOK","RUN_SELECTED","SHIFT","FIND","F","isEditable","MINIMAP","M","WORDWRAP","Z","SHORTCUTS"],"sources":["../src/ConsoleShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C],\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H], // cmd+H is a system level shortcut on Mac, so use something else\n }),\n};\n\nconst COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H],\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER],\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n};\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M],\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z],\n }),\n};\n\nconst SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,GAAG,EAAEC,QAAQ,QAAQ,uBAAuB;AAEvE,IAAMC,OAAO,GAAG;EACdC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAEL,gBAAgB,CAACM,YAAY,CAAC;IACnCC,EAAE,EAAE,eAAe;IACnBH,IAAI,EAAE,OAAO;IACbI,QAAQ,EAAE,CAACN,QAAQ,CAACO,IAAI,EAAER,GAAG,CAACS,CAAC,CAAC;IAChCC,WAAW,EAAE,CAACT,QAAQ,CAACO,IAAI,EAAER,GAAG,CAACW,CAAC;EACpC,CAAC,CAAC;EACFC,aAAa,EAAEb,gBAAgB,CAACM,YAAY,CAAC;IAC3CC,EAAE,EAAE,uBAAuB;IAC3BH,IAAI,EAAE,eAAe;IACrBI,QAAQ,EAAE,CAACN,QAAQ,CAACO,IAAI,EAAER,GAAG,CAACa,CAAC,CAAC;IAChCH,WAAW,EAAE,CAACT,QAAQ,CAACO,IAAI,EAAEP,QAAQ,CAACa,MAAM,EAAEd,GAAG,CAACa,CAAC,CAAC,CAAE;EACxD,CAAC;AACH,CAAC
|
|
1
|
+
{"version":3,"file":"ConsoleShortcuts.js","names":["ShortcutRegistry","KEY","MODIFIER","CONSOLE","name","CLEAR","createAndAdd","id","shortcut","CTRL","L","macShortcut","C","FOCUS_HISTORY","H","OPTION","COMMAND_HISTORY","SEND_TO_CONSOLE","ENTER","SEND_TO_NOTEBOOK","CMD","RUN","ALT","R","NOTEBOOK","RUN_SELECTED","SHIFT","FIND","F","isEditable","MINIMAP","M","WORDWRAP","Z","SHORTCUTS"],"sources":["../src/ConsoleShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C],\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H], // cmd+H is a system level shortcut on Mac, so use something else\n }),\n};\n\nconst COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H],\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER],\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n};\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M],\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z],\n }),\n};\n\nconst SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/ConsoleStatusBar.js
CHANGED
|
@@ -6,8 +6,7 @@ import { vsKebabVertical } from '@deephaven/icons';
|
|
|
6
6
|
import { Button, DropdownMenu, Tooltip } from '@deephaven/components';
|
|
7
7
|
import "./ConsoleStatusBar.css";
|
|
8
8
|
import { EMPTY_FUNCTION } from '@deephaven/utils';
|
|
9
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
10
|
var POPPER_OPTIONS = {
|
|
12
11
|
placement: 'bottom-end'
|
|
13
12
|
};
|
|
@@ -19,7 +18,7 @@ function ConsoleStatusBar(_ref) {
|
|
|
19
18
|
overflowActions
|
|
20
19
|
} = _ref;
|
|
21
20
|
var [pendingCommandCount, setPendingCommandCount] = useState(0);
|
|
22
|
-
var handleCommandStarted = useCallback(
|
|
21
|
+
var handleCommandStarted = useCallback(/*#__PURE__*/function () {
|
|
23
22
|
var _ref2 = _asyncToGenerator(function* (event) {
|
|
24
23
|
setPendingCommandCount(count => count + 1);
|
|
25
24
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleStatusBar.js","names":["React","useCallback","useEffect","useState","classNames","vsKebabVertical","Button","DropdownMenu","Tooltip","EMPTY_FUNCTION","jsx","_jsx","jsxs","_jsxs","POPPER_OPTIONS","placement","ConsoleStatusBar","_ref","children","dh","session","overflowActions","pendingCommandCount","setPendingCommandCount","handleCommandStarted","_ref2","_asyncToGenerator","event","count","result","detail","error","_x","apply","arguments","startListening","addEventListener","IdeSession","EVENT_COMMANDSTARTED","statusIconClass","tooltipText","hasActions","Array","isArray","length","className","kind","icon","tooltip","onClick","actions","popperOptions"],"sources":["../src/ConsoleStatusBar.tsx"],"sourcesContent":["import React, {\n type ReactElement,\n type ReactNode,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport { vsKebabVertical } from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n type PopperOptions,\n Tooltip,\n} from '@deephaven/components';\nimport './ConsoleStatusBar.scss';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\n\nconst POPPER_OPTIONS: PopperOptions = { placement: 'bottom-end' };\n\ninterface ConsoleStatusBarProps {\n children?: ReactNode;\n dh: typeof DhType;\n session: DhType.IdeSession;\n overflowActions?: DropdownActions;\n}\n\nfunction ConsoleStatusBar({\n children,\n dh,\n session,\n overflowActions,\n}: ConsoleStatusBarProps): ReactElement {\n const [pendingCommandCount, setPendingCommandCount] = useState(0);\n\n const handleCommandStarted = useCallback(\n async (event: DhType.Event<{ result: Promise<unknown> }>) => {\n setPendingCommandCount(count => count + 1);\n\n try {\n const { result } = event.detail;\n await result;\n } catch (error) {\n // No-op, fall through\n }\n\n setPendingCommandCount(count => count - 1);\n },\n []\n );\n\n useEffect(\n function startListening() {\n return session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n handleCommandStarted\n );\n },\n [dh, handleCommandStarted, session]\n );\n\n let statusIconClass = null;\n let tooltipText = null;\n if (pendingCommandCount > 0) {\n // Connected, Pending\n statusIconClass = 'console-status-icon-pending';\n tooltipText = 'Worker is busy';\n } else {\n // Connected, Idle\n statusIconClass = 'console-status-icon-idle';\n tooltipText = 'Worker is idle';\n }\n\n const hasActions =\n overflowActions != null &&\n (!Array.isArray(overflowActions) || overflowActions.length > 0);\n\n return (\n <div className=\"console-pane-status-bar\">\n <div>\n <div className={classNames('console-status-icon', statusIconClass)} />\n <Tooltip>{tooltipText}</Tooltip>\n </div>\n {children}\n {hasActions && (\n <Button\n kind=\"ghost\"\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n aria-label=\"More Actions...\"\n // no-op: click is handled in `DropdownMenu`\n onClick={EMPTY_FUNCTION}\n >\n <DropdownMenu\n actions={overflowActions}\n popperOptions={POPPER_OPTIONS}\n />\n </Button>\n )}\n </div>\n );\n}\n\nexport default ConsoleStatusBar;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAGVC,WAAW,EACXC,SAAS,EACTC,QAAQ,QACH,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,kBAAkB;AAElD,SACEC,MAAM,EAENC,YAAY,EAEZC,OAAO,QACF,uBAAuB;AAAC;AAE/B,SAASC,cAAc,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"file":"ConsoleStatusBar.js","names":["React","useCallback","useEffect","useState","classNames","vsKebabVertical","Button","DropdownMenu","Tooltip","EMPTY_FUNCTION","jsx","_jsx","jsxs","_jsxs","POPPER_OPTIONS","placement","ConsoleStatusBar","_ref","children","dh","session","overflowActions","pendingCommandCount","setPendingCommandCount","handleCommandStarted","_ref2","_asyncToGenerator","event","count","result","detail","error","_x","apply","arguments","startListening","addEventListener","IdeSession","EVENT_COMMANDSTARTED","statusIconClass","tooltipText","hasActions","Array","isArray","length","className","kind","icon","tooltip","onClick","actions","popperOptions"],"sources":["../src/ConsoleStatusBar.tsx"],"sourcesContent":["import React, {\n type ReactElement,\n type ReactNode,\n useCallback,\n useEffect,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport { vsKebabVertical } from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n type PopperOptions,\n Tooltip,\n} from '@deephaven/components';\nimport './ConsoleStatusBar.scss';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\n\nconst POPPER_OPTIONS: PopperOptions = { placement: 'bottom-end' };\n\ninterface ConsoleStatusBarProps {\n children?: ReactNode;\n dh: typeof DhType;\n session: DhType.IdeSession;\n overflowActions?: DropdownActions;\n}\n\nfunction ConsoleStatusBar({\n children,\n dh,\n session,\n overflowActions,\n}: ConsoleStatusBarProps): ReactElement {\n const [pendingCommandCount, setPendingCommandCount] = useState(0);\n\n const handleCommandStarted = useCallback(\n async (event: DhType.Event<{ result: Promise<unknown> }>) => {\n setPendingCommandCount(count => count + 1);\n\n try {\n const { result } = event.detail;\n await result;\n } catch (error) {\n // No-op, fall through\n }\n\n setPendingCommandCount(count => count - 1);\n },\n []\n );\n\n useEffect(\n function startListening() {\n return session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n handleCommandStarted\n );\n },\n [dh, handleCommandStarted, session]\n );\n\n let statusIconClass = null;\n let tooltipText = null;\n if (pendingCommandCount > 0) {\n // Connected, Pending\n statusIconClass = 'console-status-icon-pending';\n tooltipText = 'Worker is busy';\n } else {\n // Connected, Idle\n statusIconClass = 'console-status-icon-idle';\n tooltipText = 'Worker is idle';\n }\n\n const hasActions =\n overflowActions != null &&\n (!Array.isArray(overflowActions) || overflowActions.length > 0);\n\n return (\n <div className=\"console-pane-status-bar\">\n <div>\n <div className={classNames('console-status-icon', statusIconClass)} />\n <Tooltip>{tooltipText}</Tooltip>\n </div>\n {children}\n {hasActions && (\n <Button\n kind=\"ghost\"\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n aria-label=\"More Actions...\"\n // no-op: click is handled in `DropdownMenu`\n onClick={EMPTY_FUNCTION}\n >\n <DropdownMenu\n actions={overflowActions}\n popperOptions={POPPER_OPTIONS}\n />\n </Button>\n )}\n </div>\n );\n}\n\nexport default ConsoleStatusBar;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAGVC,WAAW,EACXC,SAAS,EACTC,QAAQ,QACH,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,kBAAkB;AAElD,SACEC,MAAM,EAENC,YAAY,EAEZC,OAAO,QACF,uBAAuB;AAAC;AAE/B,SAASC,cAAc,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElD,IAAMC,cAA6B,GAAG;EAAEC,SAAS,EAAE;AAAa,CAAC;AASjE,SAASC,gBAAgBA,CAAAC,IAAA,EAKe;EAAA,IALd;IACxBC,QAAQ;IACRC,EAAE;IACFC,OAAO;IACPC;EACqB,CAAC,GAAAJ,IAAA;EACtB,IAAM,CAACK,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGpB,QAAQ,CAAC,CAAC,CAAC;EAEjE,IAAMqB,oBAAoB,GAAGvB,WAAW;IAAA,IAAAwB,KAAA,GAAAC,iBAAA,CACtC,WAAOC,KAAiD,EAAK;MAC3DJ,sBAAsB,CAACK,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;MAE1C,IAAI;QACF,IAAM;UAAEC;QAAO,CAAC,GAAGF,KAAK,CAACG,MAAM;QAC/B,MAAMD,MAAM;MACd,CAAC,CAAC,OAAOE,KAAK,EAAE;QACd;MAAA;MAGFR,sBAAsB,CAACK,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;IAC5C,CAAC;IAAA,iBAAAI,EAAA;MAAA,OAAAP,KAAA,CAAAQ,KAAA,OAAAC,SAAA;IAAA;EAAA,KACD,EACF,CAAC;EAEDhC,SAAS,CACP,SAASiC,cAAcA,CAAA,EAAG;IACxB,OAAOf,OAAO,CAACgB,gBAAgB,CAC7BjB,EAAE,CAACkB,UAAU,CAACC,oBAAoB,EAClCd,oBACF,CAAC;EACH,CAAC,EACD,CAACL,EAAE,EAAEK,oBAAoB,EAAEJ,OAAO,CACpC,CAAC;EAED,IAAImB,eAAe,GAAG,IAAI;EAC1B,IAAIC,WAAW,GAAG,IAAI;EACtB,IAAIlB,mBAAmB,GAAG,CAAC,EAAE;IAC3B;IACAiB,eAAe,GAAG,6BAA6B;IAC/CC,WAAW,GAAG,gBAAgB;EAChC,CAAC,MAAM;IACL;IACAD,eAAe,GAAG,0BAA0B;IAC5CC,WAAW,GAAG,gBAAgB;EAChC;EAEA,IAAMC,UAAU,GACdpB,eAAe,IAAI,IAAI,KACtB,CAACqB,KAAK,CAACC,OAAO,CAACtB,eAAe,CAAC,IAAIA,eAAe,CAACuB,MAAM,GAAG,CAAC,CAAC;EAEjE,oBACE/B,KAAA;IAAKgC,SAAS,EAAC,yBAAyB;IAAA3B,QAAA,gBACtCL,KAAA;MAAAK,QAAA,gBACEP,IAAA;QAAKkC,SAAS,EAAEzC,UAAU,CAAC,qBAAqB,EAAEmC,eAAe;MAAE,CAAE,CAAC,eACtE5B,IAAA,CAACH,OAAO;QAAAU,QAAA,EAAEsB;MAAW,CAAU,CAAC;IAAA,CAC7B,CAAC,EACLtB,QAAQ,EACRuB,UAAU,iBACT9B,IAAA,CAACL,MAAM;MACLwC,IAAI,EAAC,OAAO;MACZC,IAAI,EAAE1C,eAAgB;MACtB2C,OAAO,EAAC,iBAAiB;MACzB,cAAW;MACX;MAAA;MACAC,OAAO,EAAExC,cAAe;MAAAS,QAAA,eAExBP,IAAA,CAACJ,YAAY;QACX2C,OAAO,EAAE7B,eAAgB;QACzB8B,aAAa,EAAErC;MAAe,CAC/B;IAAC,CACI,CACT;EAAA,CACE,CAAC;AAEV;AAEA,eAAeE,gBAAgB","ignoreList":[]}
|
package/dist/HeapUsage.js
CHANGED
|
@@ -7,8 +7,7 @@ import { Plot, useChartTheme } from '@deephaven/chart';
|
|
|
7
7
|
import Log from '@deephaven/log';
|
|
8
8
|
import { useAsyncInterval, useIsMountedRef } from '@deephaven/react-hooks';
|
|
9
9
|
import "./HeapUsage.css";
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
11
|
var log = Log.module('HeapUsage');
|
|
13
12
|
function HeapUsage(_ref) {
|
|
14
13
|
var _timestamps2;
|
|
@@ -31,7 +30,7 @@ function HeapUsage(_ref) {
|
|
|
31
30
|
usages: []
|
|
32
31
|
});
|
|
33
32
|
var isMountedRef = useIsMountedRef();
|
|
34
|
-
var setUsageUpdateInterval = useCallback(
|
|
33
|
+
var setUsageUpdateInterval = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
35
34
|
try {
|
|
36
35
|
var newUsage = yield connection.getWorkerHeapInfo();
|
|
37
36
|
if (!isMountedRef.current) {
|
package/dist/HeapUsage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","useChartTheme","Log","useAsyncInterval","useIsMountedRef","jsx","_jsx","jsxs","_jsxs","log","module","HeapUsage","_ref","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","chartTheme","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","isMountedRef","setUsageUpdateInterval","_asyncToGenerator","newUsage","getWorkerHeapInfo","current","currentUsage","currentTime","Date","now","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","arguments","undefined","className","children","lastTimestamp","totalPercentage","usedPercentage","style","width","concat","toFixed","onEntered","onExited","interactive","data","x","y","type","mode","config","staticPlot","responsive","height","layout","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, type ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { Plot, useChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval, useIsMountedRef } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: dh.IdeConnection;\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 chartTheme = useChartTheme();\n\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 const isMountedRef = useIsMountedRef();\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n\n if (!isMountedRef.current) {\n return;\n }\n\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 }, [connection, isMountedRef, bgMonitoring, isOpen, monitorDuration]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number): 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 = (\n text: string,\n size: string,\n bottomBorder = false\n ): JSX.Element => (\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 <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\n <Tooltip\n onEntered={(): void => setIsOpen(true)}\n onExited={(): void => 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 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 </div>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":";;AAAA,SAASA,QAAQ,EAAqBC,MAAM,EAAEC,WAAW,QAAQ,OAAO;AACxE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,uBAAuB;AAE/C,SAASC,IAAI,EAAEC,aAAa,QAAQ,kBAAkB;AACtD,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,wBAAwB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAG3E,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,WAAW,CAAC;AAYnC,SAASC,SAASA,CAAAC,IAAA,EAMe;EAAA,IAAAC,YAAA;EAAA,IANd;IACjBC,UAAU;IACVC,qBAAqB;IACrBC,mBAAmB;IACnBC,YAAY,GAAG,IAAI;IACnBC;EACc,CAAC,GAAAN,IAAA;EACf,IAAMO,UAAU,GAAGlB,aAAa,CAAC,CAAC;EAElC,IAAM,CAACmB,WAAW,EAAEC,cAAc,CAAC,GAAG1B,QAAQ,CAAC;IAC7C2B,UAAU,EAAE,CAAC;IACbC,eAAe,EAAE,GAAG;IACpBC,aAAa,EAAE;EACjB,CAAC,CAAC;EAEF,IAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG/B,QAAQ,CAAC,KAAK,CAAC;EAE3C,IAAMgC,YAAY,GAAG/B,MAAM,CAA6C;IACtEgC,UAAU,EAAE,EAAE;IACdC,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,IAAMC,YAAY,GAAG1B,eAAe,CAAC,CAAC;EAEtC,IAAM2B,sBAAsB,GAAGlC,WAAW,eAAAmC,iBAAA,CAAC,aAAY;IACrD,IAAI;MACF,IAAMC,QAAQ,SAASnB,UAAU,CAACoB,iBAAiB,CAAC,CAAC;MAErD,IAAI,CAACJ,YAAY,CAACK,OAAO,EAAE;QACzB;MACF;MAEAd,cAAc,CAACY,QAAQ,CAAC;MAExB,IAAIhB,YAAY,IAAIQ,MAAM,EAAE;QAC1B,IAAMW,YAAY,GAChB,CAACH,QAAQ,CAACT,aAAa,GAAGS,QAAQ,CAACX,UAAU,IAC7CW,QAAQ,CAACV,eAAe;QAC1B,IAAMc,WAAW,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;QAE9B,IAAM;UAAEX,UAAU,EAAVA,WAAU;UAAEC,MAAM,EAANA;QAAO,CAAC,GAAGF,YAAY,CAACQ,OAAO;QACnD,OACEP,WAAU,CAACY,MAAM,KAAK,CAAC,IACvBH,WAAW,GAAGT,WAAU,CAAC,CAAC,CAAC,GAAGV,eAAe,GAAG,GAAG,EACnD;UACAU,WAAU,CAACa,KAAK,CAAC,CAAC;UAClBZ,OAAM,CAACY,KAAK,CAAC,CAAC;QAChB;QAEAb,WAAU,CAACc,IAAI,CAACL,WAAW,CAAC;QAC5BR,OAAM,CAACa,IAAI,CAACN,YAAY,CAAC;MAC3B,CAAC,MAAM;QACLT,YAAY,CAACQ,OAAO,GAAG;UAAEP,UAAU,EAAE,EAAE;UAAEC,MAAM,EAAE;QAAG,CAAC;MACvD;IACF,CAAC,CAAC,OAAOc,CAAC,EAAE;MACVlC,GAAG,CAACmC,IAAI,CAAC,0BAA0B,EAAED,CAAC,CAAC;IACzC;EACF,CAAC,GAAE,CAAC7B,UAAU,EAAEgB,YAAY,EAAEb,YAAY,EAAEQ,MAAM,EAAEP,eAAe,CAAC,CAAC;EAErEf,gBAAgB,CACd4B,sBAAsB,EACtBN,MAAM,GAAGT,mBAAmB,GAAGD,qBACjC,CAAC;EAED,IAAM8B,cAAc,GAAGA,CAACC,GAAW,EAAEC,GAAW,KAC9CC,IAAI,CAACC,KAAK,CAACH,GAAG,GAAG,EAAE,IAAIC,GAAG,CAAC,GAAG,EAAE,IAAIA,GAAG;EAEzC,IAAMG,YAAY,GAAG,CAAC;EACtB,IAAMC,QAAQ,GAAG,IAAI,IAAI,CAAC;EAE1B,IAAM;IAAE7B,UAAU;IAAEE,aAAa;IAAED;EAAgB,CAAC,GAAGH,WAAW;EAElE,IAAMgC,YAAY,GAAGP,cAAc,CAACvB,UAAU,GAAG6B,QAAQ,EAAED,YAAY,CAAC;EACxE,IAAMG,WAAW,GAAGR,cAAc,CAACrB,aAAa,GAAG2B,QAAQ,EAAED,YAAY,CAAC;EAC1E,IAAMI,SAAS,GAAGT,cAAc,CAACtB,eAAe,GAAG4B,QAAQ,EAAED,YAAY,CAAC;EAC1E,IAAMK,OAAO,GAAGF,WAAW,GAAGD,YAAY;EAE1C,IAAMI,MAAM,GAAG,SAATA,MAAMA,CACVC,IAAY,EACZC,IAAY;IAAA,IACZC,YAAY,GAAAC,SAAA,CAAApB,MAAA,QAAAoB,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IAAA,oBAEpBpD,KAAA;MACEsD,SAAS,EAAEhE,UAAU,wBAAwB;QAC3C,uBAAuB,EAAE6D;MAC3B,CAAC,CAAE;MAAAI,QAAA,gBAEHzD,IAAA;QAAKwD,SAAS,EAAC,kBAAkB;QAAAC,QAAA,EAAEN;MAAI,CAAM,CAAC,eAC9CnD,IAAA;QAAAyD,QAAA,EAAML;MAAI,CAAM,CAAC;IAAA,CACd,CAAC;EAAA,CACP;EAED,IAAM;IAAE9B,UAAU;IAAEC;EAAO,CAAC,GAAGF,YAAY,CAACQ,OAAO;EAEnD,IAAM6B,aAAa,IAAAnD,YAAA,GAAGe,UAAU,CAACA,UAAU,CAACY,MAAM,GAAG,CAAC,CAAC,cAAA3B,YAAA,cAAAA,YAAA,GAAI,CAAC;EAE5D,IAAMoD,eAAe,GAAGzC,aAAa,GAAGD,eAAe;EACvD,IAAM2C,cAAc,GAAG,CAAC1C,aAAa,GAAGF,UAAU,IAAIC,eAAe;EAErE,oBACEf,KAAA;IAAKsD,SAAS,EAAC,YAAY;IAAAC,QAAA,gBACzBzD,IAAA;MACEwD,SAAS,EAAC,cAAc;MACxBK,KAAK,EAAE;QACLC,KAAK,UAAAC,MAAA,CAAUJ,eAAe,GAAG,GAAG,UAAAI,MAAA,CAAOJ,eAAe,GAAG,CAAC;MAChE;IAAE,CACH,CAAC,eACF3D,IAAA;MACEwD,SAAS,EAAEhE,UAAU,CAAC,aAAa,EAAE;QACnC,eAAe,EACb,CAAC0B,aAAa,GAAGF,UAAU,IAAIC,eAAe,GAAG;MACrD,CAAC,CAAE;MACH4C,KAAK,EAAE;QACLC,KAAK,UAAAC,MAAA,CAAUH,cAAc,GAAG,GAAG,UAAAG,MAAA,CAAOH,cAAc,GAAG,CAAC;MAC9D;IAAE,CACH,CAAC,eACF1D,KAAA;MAAKsD,SAAS,EAAC,aAAa;MAAAC,QAAA,GAAET,SAAS,CAACgB,OAAO,CAAC,CAAC,CAAC,EAAC,KAAG;IAAA,CAAK,CAAC,eAE5DhE,IAAA,CAACP,OAAO;MACNwE,SAAS,EAAEA,CAAA,KAAY7C,SAAS,CAAC,IAAI,CAAE;MACvC8C,QAAQ,EAAEA,CAAA,KAAY9C,SAAS,CAAC,KAAK,CAAE;MACvC+C,WAAW;MAAAV,QAAA,eAEXvD,KAAA;QAAKsD,SAAS,EAAC,cAAc;QAAAC,QAAA,GAC1BP,MAAM,CACL,SAAS,KAAAa,MAAA,CACNd,OAAO,CAACe,OAAO,CAACpB,YAAY,CAAC,UAAAmB,MAAA,CAAOf,SAAS,CAACgB,OAAO,CACtDpB,YACF,CAAC,UACD,IACF,CAAC,EACAM,MAAM,CAAC,OAAO,KAAAa,MAAA,CAAKjB,YAAY,CAACkB,OAAO,CAACpB,YAAY,CAAC,QAAK,CAAC,EAC3DM,MAAM,CAAC,QAAQ,KAAAa,MAAA,CAAKhB,WAAW,CAACiB,OAAO,CAACpB,YAAY,CAAC,QAAK,CAAC,EAC3DM,MAAM,CAAC,MAAM,KAAAa,MAAA,CAAKf,SAAS,CAACgB,OAAO,CAACpB,YAAY,CAAC,QAAK,CAAC,eACxD5C,IAAA;UAAKwD,SAAS,EAAC,WAAW;UAAAC,QAAA,eACxBzD,IAAA,CAACN,IAAI;YACH0E,IAAI,EAAE,CACJ;cACEC,CAAC,EAAE,CAAC,GAAG/C,UAAU,CAAC;cAClBgD,CAAC,EAAE,CAAC,GAAG/C,MAAM,CAAC;cACdgD,IAAI,EAAE,SAAS;cACfC,IAAI,EAAE;YACR,CAAC,CACD;YACFC,MAAM,EAAE;cAAEC,UAAU,EAAE,IAAI;cAAEC,UAAU,EAAE;YAAK,CAAE;YAC/Cd,KAAK,EAAE;cACLC,KAAK,EAAE,OAAO;cACdc,MAAM,EAAE;YACV,CAAE;YACFC,MAAM,EAAE;cACNC,MAAM,EAAE;gBAAEC,CAAC,EAAE,CAAC;gBAAEC,CAAC,EAAE,CAAC;gBAAEC,CAAC,EAAE,CAAC;gBAAEC,CAAC,EAAE;cAAE,CAAC;cAClCC,YAAY,EAAE,aAAa;cAC3BC,aAAa,EAAE,aAAa;cAC5BC,QAAQ,EAAE,CAAC,SAAS,CAAC;cACrBC,KAAK,EAAE;gBACLC,KAAK,EAAE7C,IAAI,CAACC,KAAK,CAAC/B,eAAe,GAAG,CAAC,CAAC;gBACtC4E,SAAS,EAAE3E,UAAU,CAAC4E,SAAS;gBAC/BC,KAAK,EAAE,CAAChC,aAAa,GAAG9C,eAAe,EAAE8C,aAAa,CAAC;gBACvD+B,SAAS,EAAE5E,UAAU,CAAC4E,SAAS;gBAC/BE,SAAS,EAAE,CAAC;gBACZC,MAAM,EAAE;cACV,CAAC;cACDC,KAAK,EAAE;gBACLN,KAAK,EAAE,GAAG;gBACVC,SAAS,EAAE3E,UAAU,CAAC4E,SAAS;gBAC/BC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACbD,SAAS,EAAE5E,UAAU,CAAC4E,SAAS;gBAC/BE,SAAS,EAAE,CAAC;gBACZC,MAAM,EAAE;cACV;YACF;UAAE,CACH;QAAC,CACC,CAAC,eACN1F,KAAA;UAAKsD,SAAS,EAAC,uBAAuB;UAAAC,QAAA,GAAC,qBAClB,EAACf,IAAI,CAACC,KAAK,CAAC/B,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC,EAAC,OAC9D;QAAA,CAAK,CAAC;MAAA,CACH;IAAC,CACC,CAAC;EAAA,CACP,CAAC;AAEV;AAEA,eAAeP,SAAS"}
|
|
1
|
+
{"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","useChartTheme","Log","useAsyncInterval","useIsMountedRef","jsx","_jsx","jsxs","_jsxs","log","module","HeapUsage","_ref","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","chartTheme","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","isMountedRef","setUsageUpdateInterval","_asyncToGenerator","newUsage","getWorkerHeapInfo","current","currentUsage","currentTime","Date","now","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","arguments","undefined","className","children","lastTimestamp","totalPercentage","usedPercentage","style","width","concat","toFixed","onEntered","onExited","interactive","data","x","y","type","mode","config","staticPlot","responsive","height","layout","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, type ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { Plot, useChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval, useIsMountedRef } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: dh.IdeConnection;\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 chartTheme = useChartTheme();\n\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 const isMountedRef = useIsMountedRef();\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n\n if (!isMountedRef.current) {\n return;\n }\n\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 }, [connection, isMountedRef, bgMonitoring, isOpen, monitorDuration]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number): 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 = (\n text: string,\n size: string,\n bottomBorder = false\n ): JSX.Element => (\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 <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\n <Tooltip\n onEntered={(): void => setIsOpen(true)}\n onExited={(): void => 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 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 </div>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,8 +15,7 @@ import ConsoleConstants from "../common/ConsoleConstants.js";
|
|
|
15
15
|
import "./CommandHistory.css";
|
|
16
16
|
import CommandHistoryViewportUpdater from "./CommandHistoryViewportUpdater.js";
|
|
17
17
|
import SHORTCUTS from "../ConsoleShortcuts.js";
|
|
18
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
19
|
var log = Log.module('CommandHistory');
|
|
21
20
|
class CommandHistory extends Component {
|
|
22
21
|
static getCommandsFromViewport(items, offset, sortedRanges) {
|
|
@@ -313,7 +312,7 @@ class CommandHistory extends Component {
|
|
|
313
312
|
}
|
|
314
313
|
restoreScrollPosition() {
|
|
315
314
|
var _this$itemListRef$cur;
|
|
316
|
-
(_this$itemListRef$cur = this.itemListRef.current) === null || _this$itemListRef$cur === void 0
|
|
315
|
+
(_this$itemListRef$cur = this.itemListRef.current) === null || _this$itemListRef$cur === void 0 || _this$itemListRef$cur.restoreScrollPosition();
|
|
317
316
|
}
|
|
318
317
|
render() {
|
|
319
318
|
var _ConsoleConstants$LAN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistory.js","names":["React","Component","debounce","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","jsx","_jsx","jsxs","_jsxs","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","_asyncToGenerator","getSnapshot","values","map","item","constructor","props","_defineProperty","setState","_ref","searchText","debouncedSearchText","selectedRanges","SET_SEARCH_DEBOUNCE_MS","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","componentWillUnmount","debouncedSearchChange","cancel","getSelectedCommands","_this","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","_ref2","_ref3","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","_this$itemListRef$cur","render","_ConsoleConstants$LAN","languageDisplayString","LANGUAGE_MAP","get","className","children","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, {\n type ChangeEvent,\n Component,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n type RenderItemProps,\n} from '@deephaven/components';\nimport { type ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, type 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 {\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport type CommandHistoryStorage from './CommandHistoryStorage';\nimport { type ItemAction, type 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: readonly Range[];\n searchText: string;\n debouncedSearchText: 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 SET_SEARCH_DEBOUNCE_MS = 150;\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 debouncedSearchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.debouncedSearchChange.cancel();\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 debouncedSearchChange = debounce((): void => {\n this.setState(({ searchText }) => ({\n debouncedSearchText: searchText,\n // clear selected range, as old selection could be filtered from list\n selectedRanges: [],\n }));\n }, CommandHistory.SET_SEARCH_DEBOUNCE_MS);\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: readonly 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 this.setState({ searchText: e.target.value });\n this.debouncedSearchChange();\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 debouncedSearchText,\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={debouncedSearchText}\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","debounce","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","jsx","_jsx","jsxs","_jsxs","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","_asyncToGenerator","getSnapshot","values","map","item","constructor","props","_defineProperty","setState","_ref","searchText","debouncedSearchText","selectedRanges","SET_SEARCH_DEBOUNCE_MS","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","componentWillUnmount","debouncedSearchChange","cancel","getSelectedCommands","_this","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","_ref2","_ref3","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","_this$itemListRef$cur","render","_ConsoleConstants$LAN","languageDisplayString","LANGUAGE_MAP","get","className","children","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, {\n type ChangeEvent,\n Component,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n type RenderItemProps,\n} from '@deephaven/components';\nimport { type ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, type 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 {\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport type CommandHistoryStorage from './CommandHistoryStorage';\nimport { type ItemAction, type 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: readonly Range[];\n searchText: string;\n debouncedSearchText: 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 SET_SEARCH_DEBOUNCE_MS = 150;\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 debouncedSearchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.debouncedSearchChange.cancel();\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 debouncedSearchChange = debounce((): void => {\n this.setState(({ searchText }) => ({\n debouncedSearchText: searchText,\n // clear selected range, as old selection could be filtered from list\n selectedRanges: [],\n }));\n }, CommandHistory.SET_SEARCH_DEBOUNCE_MS);\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: readonly 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 this.setState({ searchText: e.target.value });\n this.debouncedSearchChange();\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 debouncedSearchText,\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={debouncedSearchText}\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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","ignoreList":[]}
|
|
@@ -4,8 +4,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
4
4
|
import { Button } from '@deephaven/components';
|
|
5
5
|
import { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';
|
|
6
6
|
import "./CommandHistoryActions.css";
|
|
7
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
8
|
class CommandHistoryActions extends Component {
|
|
10
9
|
static itemKey(i, item) {
|
|
11
10
|
return "".concat(item.title);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryActions.js","names":["React","Component","classNames","FontAwesomeIcon","Button","vsArrowLeft","vsCircleLargeFilled","jsx","_jsx","jsxs","_jsxs","CommandHistoryActions","itemKey","i","item","concat","title","renderContent","selectionRequired","undefined","className","children","icon","mask","transform","render","actions","hasSelection","props","map","index","kind","onClick","action","tooltip","description","disabled"],"sources":["../../src/command-history/CommandHistoryActions.tsx"],"sourcesContent":["import React, { Component, type 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 { type 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,QAA2B,OAAO;AAC3D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,kBAAkB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"file":"CommandHistoryActions.js","names":["React","Component","classNames","FontAwesomeIcon","Button","vsArrowLeft","vsCircleLargeFilled","jsx","_jsx","jsxs","_jsxs","CommandHistoryActions","itemKey","i","item","concat","title","renderContent","selectionRequired","undefined","className","children","icon","mask","transform","render","actions","hasSelection","props","map","index","kind","onClick","action","tooltip","description","disabled"],"sources":["../../src/command-history/CommandHistoryActions.tsx"],"sourcesContent":["import React, { Component, type 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 { type 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,QAA2B,OAAO;AAC3D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,kBAAkB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AASpE,MAAMC,qBAAqB,SAASV,SAAS,CAG3C;EACA,OAAOW,OAAOA,CAACC,CAAU,EAAEC,IAAmB,EAAU;IACtD,UAAAC,MAAA,CAAUD,IAAI,CAACE,KAAK;EACtB;EAEA,OAAOC,aAAaA,CAACH,IAAmB,EAAe;IACrD,IAAIA,IAAI,CAACI,iBAAiB,KAAKC,SAAS,IAAIL,IAAI,CAACI,iBAAiB,EAAE;MAClE,oBACER,KAAA;QAAKU,SAAS,EAAC,iBAAiB;QAAAC,QAAA,gBAC9Bb,IAAA,CAACL,eAAe;UACdmB,IAAI,EAAEhB,mBAAoB;UAC1BiB,IAAI,EAAET,IAAI,CAACQ,IAAK;UAChBE,SAAS,EAAC;QAAyB,CACpC,CAAC,eACFhB,IAAA,CAACL,eAAe;UACdmB,IAAI,EAAEjB,WAAY;UAClBmB,SAAS,EAAC;QAAyB,CACpC,CAAC;MAAA,CACC,CAAC;IAEV;IACA,oBAAOhB,IAAA,CAACL,eAAe;MAACmB,IAAI,EAAER,IAAI,CAACQ;IAAK,CAAE,CAAC;EAC7C;EAEAG,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEC,OAAO;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACC,KAAK;IAE5C,oBACEpB,IAAA;MAAKY,SAAS,EAAC,yBAAyB;MAAAC,QAAA,EACrCK,OAAO,CAACG,GAAG,CAAC,CAACf,IAAI,EAAEgB,KAAK,kBACvBtB,IAAA,CAACJ,MAAM;QACL2B,IAAI,EAAC,QAAQ;QACbX,SAAS,EAAElB,UAAU,CAACY,IAAI,CAACM,SAAS,CAAE;QAEtCY,OAAO,EAAElB,IAAI,CAACmB,MAAO;QACrBC,OAAO,EAAEpB,IAAI,CAACqB,WAAY;QAC1BC,QAAQ,EACNtB,IAAI,CAACI,iBAAiB,KAAKC,SAAS,IACpCL,IAAI,CAACI,iBAAiB,IACtB,CAACS,YACF;QACDL,IAAI,EAAEX,qBAAqB,CAACM,aAAa,CAACH,IAAI;MAAE,GAR3CH,qBAAqB,CAACC,OAAO,CAACkB,KAAK,EAAEhB,IAAI,CAS/C,CACF;IAAC,CACC,CAAC;EAEV;AACF;AAEA,eAAeH,qBAAqB","ignoreList":[]}
|