@deephaven/console 0.40.5-beta.0 → 0.40.5-beta.2

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.
@@ -26,10 +26,12 @@ interface CommandHistoryState {
26
26
  offset: number;
27
27
  selectedRanges: Range[];
28
28
  searchText: string;
29
+ debouncedSearchText: string;
29
30
  }
30
31
  declare class CommandHistory extends Component<CommandHistoryProps, CommandHistoryState> {
31
32
  static ITEM_HEIGHT: number;
32
33
  static MAX_SELECTION_COUNT: number;
34
+ static SET_SEARCH_DEBOUNCE_MS: number;
33
35
  static menuGroups: {
34
36
  send: number;
35
37
  };
@@ -56,6 +58,7 @@ declare class CommandHistory extends Component<CommandHistoryProps, CommandHisto
56
58
  updateActions(): void;
57
59
  copySelectedCommands(): void;
58
60
  createNotebook(): void;
61
+ debouncedSearchChange: import("lodash").DebouncedFunc<() => void>;
59
62
  sendToNotebook(): void;
60
63
  sendToConsole(): void;
61
64
  runInConsole(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistory.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistory.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandHistory.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistory.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
4
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
5
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
6
  import React, { Component } from 'react';
7
+ import debounce from 'lodash.debounce';
7
8
  import { ContextActions, ItemList, SearchInput, GLOBAL_SHORTCUTS } from '@deephaven/components';
8
9
  import { vsFileCode, vsFiles, vsNewFile, vsPlay, vsTerminal } from '@deephaven/icons';
9
10
  import { copyToClipboard, Pending } from '@deephaven/utils';
@@ -44,6 +45,18 @@ class CommandHistory extends Component {
44
45
  _defineProperty(this, "pending", void 0);
45
46
  _defineProperty(this, "searchInputRef", void 0);
46
47
  _defineProperty(this, "itemListRef", void 0);
48
+ _defineProperty(this, "debouncedSearchChange", debounce(() => {
49
+ this.setState(_ref => {
50
+ var {
51
+ searchText
52
+ } = _ref;
53
+ return {
54
+ debouncedSearchText: searchText,
55
+ // clear selected range, as old selection could be filtered from list
56
+ selectedRanges: []
57
+ };
58
+ });
59
+ }, CommandHistory.SET_SEARCH_DEBOUNCE_MS));
47
60
  this.copySelectedCommands = this.copySelectedCommands.bind(this);
48
61
  this.createNotebook = this.createNotebook.bind(this);
49
62
  this.sendToConsole = this.sendToConsole.bind(this);
@@ -122,10 +135,12 @@ class CommandHistory extends Component {
122
135
  items: [],
123
136
  offset: 0,
124
137
  selectedRanges: [],
125
- searchText: ''
138
+ searchText: '',
139
+ debouncedSearchText: ''
126
140
  };
127
141
  }
128
142
  componentWillUnmount() {
143
+ this.debouncedSearchChange.cancel();
129
144
  this.pending.cancel();
130
145
  }
131
146
  /**
@@ -252,17 +267,16 @@ class CommandHistory extends Component {
252
267
  });
253
268
  }
254
269
  handleSearchChange(e) {
255
- // clear selected range, as old selection could be filtered from list
256
270
  this.setState({
257
- searchText: e.target.value,
258
- selectedRanges: []
271
+ searchText: e.target.value
259
272
  });
273
+ this.debouncedSearchChange();
260
274
  }
261
- handleViewportUpdate(_ref) {
275
+ handleViewportUpdate(_ref2) {
262
276
  var {
263
277
  items,
264
278
  offset
265
- } = _ref;
279
+ } = _ref2;
266
280
  var {
267
281
  table
268
282
  } = this.props;
@@ -273,12 +287,12 @@ class CommandHistory extends Component {
273
287
  offset
274
288
  });
275
289
  }
276
- renderItem(_ref2) {
290
+ renderItem(_ref3) {
277
291
  var {
278
292
  item,
279
293
  itemIndex,
280
294
  isSelected
281
- } = _ref2;
295
+ } = _ref3;
282
296
  var {
283
297
  language,
284
298
  commandHistoryStorage
@@ -309,6 +323,7 @@ class CommandHistory extends Component {
309
323
  actions,
310
324
  historyActions,
311
325
  searchText,
326
+ debouncedSearchText,
312
327
  top,
313
328
  bottom,
314
329
  items,
@@ -349,7 +364,7 @@ class CommandHistory extends Component {
349
364
  table: table,
350
365
  top: top,
351
366
  bottom: bottom,
352
- search: searchText,
367
+ search: debouncedSearchText,
353
368
  onUpdate: this.handleViewportUpdate
354
369
  }), /*#__PURE__*/React.createElement(ContextActions, {
355
370
  actions: actions
@@ -358,6 +373,7 @@ class CommandHistory extends Component {
358
373
  }
359
374
  _defineProperty(CommandHistory, "ITEM_HEIGHT", 29);
360
375
  _defineProperty(CommandHistory, "MAX_SELECTION_COUNT", 10000);
376
+ _defineProperty(CommandHistory, "SET_SEARCH_DEBOUNCE_MS", 150);
361
377
  _defineProperty(CommandHistory, "menuGroups", {
362
378
  send: ContextActions.groups.medium + 100
363
379
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistory.js","names":["React","Component","ContextActions","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","copyToClipboard","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","itemListRef","state","actions","top","bottom","itemCount","size","selectedRanges","searchText","componentWillUnmount","cancel","getSelectedCommands","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","setState","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","catch","error","commandText","language","value","index","e","target","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n this.itemListRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n itemListRef: React.RefObject<ItemList<CommandHistoryStorageItem>>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n // clear selected range, as old selection could be filtered from list\n this.setState({ searchText: e.target.value, selectedRanges: [] });\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n restoreScrollPosition(): void {\n this.itemListRef.current?.restoreScrollPosition();\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString =\n ConsoleConstants.LANGUAGE_MAP.get(language) ?? '';\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n ref={this.itemListRef}\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={searchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":"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"}
1
+ {"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","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","setState","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","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","itemIndex","isSelected","commandHistoryStorage","focus","current","restoreScrollPosition","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { copyToClipboard, Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n 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: 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 +1 @@
1
- {"version":3,"file":"CommandHistoryViewportUpdater.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistoryViewportUpdater.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;CAC7D,CAAC;AAUF,iBAAS,6BAA6B,CAAC,EACrC,KAAK,EACL,OAAO,EACP,GAAO,EACP,MAAU,EACV,MAAM,EACN,UAAkB,EAClB,QAAQ,GACT,EAAE,kCAAkC,GAAG,IAAI,CAwE3C;AAED,eAAe,6BAA6B,CAAC"}
1
+ {"version":3,"file":"CommandHistoryViewportUpdater.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistoryViewportUpdater.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;CAC7D,CAAC;AAQF,iBAAS,6BAA6B,CAAC,EACrC,KAAK,EACL,OAAO,EACP,GAAO,EACP,MAAU,EACV,MAAM,EACN,UAAkB,EAClB,QAAQ,GACT,EAAE,kCAAkC,GAAG,IAAI,CAgE3C;AAED,eAAe,6BAA6B,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import { useEffect, useMemo } from 'react';
2
- import debounce from 'lodash.debounce';
3
2
  import throttle from 'lodash.throttle';
4
3
  import Log from '@deephaven/log';
5
- var SET_SEARCH_DEBOUNCE_MS = 150;
6
4
  var UPDATE_DELAY = 150;
7
5
  var ROW_BUFFER_PAGES = 3;
8
6
  var log = Log.module('CommandHistoryViewportUpdater');
@@ -16,9 +14,6 @@ function CommandHistoryViewportUpdater(_ref) {
16
14
  isReversed = false,
17
15
  onUpdate
18
16
  } = _ref;
19
- var debounceSetSearch = useMemo(() => debounce(searchText => {
20
- table.setSearch(searchText !== null && searchText !== void 0 ? searchText : '');
21
- }, SET_SEARCH_DEBOUNCE_MS), [table]);
22
17
  var throttledUpdateViewport = useMemo(() => throttle(viewport => {
23
18
  var viewHeight = viewport.bottom - viewport.top;
24
19
  var bufferedTop = Math.max(0, viewport.top - viewHeight * ROW_BUFFER_PAGES);
@@ -43,8 +38,8 @@ function CommandHistoryViewportUpdater(_ref) {
43
38
  };
44
39
  }, [table, onUpdate]);
45
40
  useEffect(function setSearchText() {
46
- debounceSetSearch(search);
47
- }, [debounceSetSearch, search]);
41
+ table.setSearch(search !== null && search !== void 0 ? search : '');
42
+ }, [table, search]);
48
43
  useEffect(function updateViewport() {
49
44
  throttledUpdateViewport({
50
45
  top,
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","debounce","throttle","Log","SET_SEARCH_DEBOUNCE_MS","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","table","columns","top","bottom","search","isReversed","onUpdate","debounceSetSearch","searchText","setSearch","throttledUpdateViewport","viewport","viewHeight","bufferedTop","Math","max","bufferedBottom","setViewport","updateTableAndReturnCleanup","cleanup","viewportData","items","offset","debug","setSearchText","updateViewport","debug2","cancel"],"sources":["../../src/command-history/CommandHistoryViewportUpdater.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\nimport throttle from 'lodash.throttle';\nimport {\n StorageTableViewport,\n ViewportData,\n ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport Log from '@deephaven/log';\nimport {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\n\nexport type CommandHistoryViewportUpdaterProps = {\n table: CommandHistoryTable;\n columns?: string[];\n top?: number;\n bottom?: number;\n search?: string;\n isReversed?: boolean;\n onUpdate: ViewportUpdateCallback<CommandHistoryStorageItem>;\n};\n\nconst SET_SEARCH_DEBOUNCE_MS = 150;\n\nconst UPDATE_DELAY = 150;\n\nconst ROW_BUFFER_PAGES = 3;\n\nconst log = Log.module('CommandHistoryViewportUpdater');\n\nfunction CommandHistoryViewportUpdater({\n table,\n columns,\n top = 0,\n bottom = 0,\n search,\n isReversed = false,\n onUpdate,\n}: CommandHistoryViewportUpdaterProps): null {\n const debounceSetSearch = useMemo(\n () =>\n debounce((searchText?: string) => {\n table.setSearch(searchText ?? '');\n }, SET_SEARCH_DEBOUNCE_MS),\n [table]\n );\n\n const throttledUpdateViewport = useMemo(\n () =>\n throttle((viewport: StorageTableViewport) => {\n const viewHeight = viewport.bottom - viewport.top;\n const bufferedTop = Math.max(\n 0,\n viewport.top - viewHeight * ROW_BUFFER_PAGES\n );\n const bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;\n\n table.setViewport({\n top: bufferedTop,\n bottom: bufferedBottom,\n columns: viewport.columns,\n });\n }, UPDATE_DELAY),\n [table]\n );\n\n useEffect(\n function updateTableAndReturnCleanup() {\n const cleanup = table.onUpdate(\n (viewportData: ViewportData<CommandHistoryStorageItem>) => {\n onUpdate({\n items: viewportData.items ?? [],\n offset: viewportData.offset ?? 0,\n });\n }\n );\n\n return () => {\n log.debug('onUpdate cleanup');\n cleanup();\n };\n },\n [table, onUpdate]\n );\n\n useEffect(\n function setSearchText() {\n debounceSetSearch(search);\n },\n [debounceSetSearch, search]\n );\n useEffect(\n function updateViewport() {\n throttledUpdateViewport({\n top,\n bottom,\n columns,\n });\n },\n [throttledUpdateViewport, top, bottom, columns, search, isReversed]\n );\n useEffect(\n () => () => {\n log.debug2('Cancel throttledUpdateViewport');\n throttledUpdateViewport.cancel();\n },\n [throttledUpdateViewport]\n );\n\n return null;\n}\n\nexport default CommandHistoryViewportUpdater;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC1C,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,OAAOC,QAAQ,MAAM,iBAAiB;AAMtC,OAAOC,GAAG,MAAM,gBAAgB;AAgBhC,IAAMC,sBAAsB,GAAG,GAAG;AAElC,IAAMC,YAAY,GAAG,GAAG;AAExB,IAAMC,gBAAgB,GAAG,CAAC;AAE1B,IAAMC,GAAG,GAAGJ,GAAG,CAACK,MAAM,CAAC,+BAA+B,CAAC;AAEvD,SAASC,6BAA6B,OAQO;EAAA,IARN;IACrCC,KAAK;IACLC,OAAO;IACPC,GAAG,GAAG,CAAC;IACPC,MAAM,GAAG,CAAC;IACVC,MAAM;IACNC,UAAU,GAAG,KAAK;IAClBC;EACkC,CAAC;EACnC,IAAMC,iBAAiB,GAAGjB,OAAO,CAC/B,MACEC,QAAQ,CAAEiB,UAAmB,IAAK;IAChCR,KAAK,CAACS,SAAS,CAACD,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,EAAE,CAAC;EACnC,CAAC,EAAEd,sBAAsB,CAAC,EAC5B,CAACM,KAAK,CAAC,CACR;EAED,IAAMU,uBAAuB,GAAGpB,OAAO,CACrC,MACEE,QAAQ,CAAEmB,QAA8B,IAAK;IAC3C,IAAMC,UAAU,GAAGD,QAAQ,CAACR,MAAM,GAAGQ,QAAQ,CAACT,GAAG;IACjD,IAAMW,WAAW,GAAGC,IAAI,CAACC,GAAG,CAC1B,CAAC,EACDJ,QAAQ,CAACT,GAAG,GAAGU,UAAU,GAAGhB,gBAAgB,CAC7C;IACD,IAAMoB,cAAc,GAAGL,QAAQ,CAACR,MAAM,GAAGS,UAAU,GAAGhB,gBAAgB;IAEtEI,KAAK,CAACiB,WAAW,CAAC;MAChBf,GAAG,EAAEW,WAAW;MAChBV,MAAM,EAAEa,cAAc;MACtBf,OAAO,EAAEU,QAAQ,CAACV;IACpB,CAAC,CAAC;EACJ,CAAC,EAAEN,YAAY,CAAC,EAClB,CAACK,KAAK,CAAC,CACR;EAEDX,SAAS,CACP,SAAS6B,2BAA2B,GAAG;IACrC,IAAMC,OAAO,GAAGnB,KAAK,CAACM,QAAQ,CAC3Bc,YAAqD,IAAK;MAAA;MACzDd,QAAQ,CAAC;QACPe,KAAK,yBAAED,YAAY,CAACC,KAAK,qEAAI,EAAE;QAC/BC,MAAM,0BAAEF,YAAY,CAACE,MAAM,uEAAI;MACjC,CAAC,CAAC;IACJ,CAAC,CACF;IAED,OAAO,MAAM;MACXzB,GAAG,CAAC0B,KAAK,CAAC,kBAAkB,CAAC;MAC7BJ,OAAO,EAAE;IACX,CAAC;EACH,CAAC,EACD,CAACnB,KAAK,EAAEM,QAAQ,CAAC,CAClB;EAEDjB,SAAS,CACP,SAASmC,aAAa,GAAG;IACvBjB,iBAAiB,CAACH,MAAM,CAAC;EAC3B,CAAC,EACD,CAACG,iBAAiB,EAAEH,MAAM,CAAC,CAC5B;EACDf,SAAS,CACP,SAASoC,cAAc,GAAG;IACxBf,uBAAuB,CAAC;MACtBR,GAAG;MACHC,MAAM;MACNF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACS,uBAAuB,EAAER,GAAG,EAAEC,MAAM,EAAEF,OAAO,EAAEG,MAAM,EAAEC,UAAU,CAAC,CACpE;EACDhB,SAAS,CACP,MAAM,MAAM;IACVQ,GAAG,CAAC6B,MAAM,CAAC,gCAAgC,CAAC;IAC5ChB,uBAAuB,CAACiB,MAAM,EAAE;EAClC,CAAC,EACD,CAACjB,uBAAuB,CAAC,CAC1B;EAED,OAAO,IAAI;AACb;AAEA,eAAeX,6BAA6B"}
1
+ {"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","throttle","Log","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","table","columns","top","bottom","search","isReversed","onUpdate","throttledUpdateViewport","viewport","viewHeight","bufferedTop","Math","max","bufferedBottom","setViewport","updateTableAndReturnCleanup","cleanup","viewportData","items","offset","debug","setSearchText","setSearch","updateViewport","debug2","cancel"],"sources":["../../src/command-history/CommandHistoryViewportUpdater.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n StorageTableViewport,\n ViewportData,\n ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport Log from '@deephaven/log';\nimport {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\n\nexport type CommandHistoryViewportUpdaterProps = {\n table: CommandHistoryTable;\n columns?: string[];\n top?: number;\n bottom?: number;\n search?: string;\n isReversed?: boolean;\n onUpdate: ViewportUpdateCallback<CommandHistoryStorageItem>;\n};\n\nconst UPDATE_DELAY = 150;\n\nconst ROW_BUFFER_PAGES = 3;\n\nconst log = Log.module('CommandHistoryViewportUpdater');\n\nfunction CommandHistoryViewportUpdater({\n table,\n columns,\n top = 0,\n bottom = 0,\n search,\n isReversed = false,\n onUpdate,\n}: CommandHistoryViewportUpdaterProps): null {\n const throttledUpdateViewport = useMemo(\n () =>\n throttle((viewport: StorageTableViewport) => {\n const viewHeight = viewport.bottom - viewport.top;\n const bufferedTop = Math.max(\n 0,\n viewport.top - viewHeight * ROW_BUFFER_PAGES\n );\n const bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;\n\n table.setViewport({\n top: bufferedTop,\n bottom: bufferedBottom,\n columns: viewport.columns,\n });\n }, UPDATE_DELAY),\n [table]\n );\n\n useEffect(\n function updateTableAndReturnCleanup() {\n const cleanup = table.onUpdate(\n (viewportData: ViewportData<CommandHistoryStorageItem>) => {\n onUpdate({\n items: viewportData.items ?? [],\n offset: viewportData.offset ?? 0,\n });\n }\n );\n\n return () => {\n log.debug('onUpdate cleanup');\n cleanup();\n };\n },\n [table, onUpdate]\n );\n\n useEffect(\n function setSearchText() {\n table.setSearch(search ?? '');\n },\n [table, search]\n );\n useEffect(\n function updateViewport() {\n throttledUpdateViewport({\n top,\n bottom,\n columns,\n });\n },\n [throttledUpdateViewport, top, bottom, columns, search, isReversed]\n );\n useEffect(\n () => () => {\n log.debug2('Cancel throttledUpdateViewport');\n throttledUpdateViewport.cancel();\n },\n [throttledUpdateViewport]\n );\n\n return null;\n}\n\nexport default CommandHistoryViewportUpdater;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC1C,OAAOC,QAAQ,MAAM,iBAAiB;AAMtC,OAAOC,GAAG,MAAM,gBAAgB;AAgBhC,IAAMC,YAAY,GAAG,GAAG;AAExB,IAAMC,gBAAgB,GAAG,CAAC;AAE1B,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAM,CAAC,+BAA+B,CAAC;AAEvD,SAASC,6BAA6B,OAQO;EAAA,IARN;IACrCC,KAAK;IACLC,OAAO;IACPC,GAAG,GAAG,CAAC;IACPC,MAAM,GAAG,CAAC;IACVC,MAAM;IACNC,UAAU,GAAG,KAAK;IAClBC;EACkC,CAAC;EACnC,IAAMC,uBAAuB,GAAGf,OAAO,CACrC,MACEC,QAAQ,CAAEe,QAA8B,IAAK;IAC3C,IAAMC,UAAU,GAAGD,QAAQ,CAACL,MAAM,GAAGK,QAAQ,CAACN,GAAG;IACjD,IAAMQ,WAAW,GAAGC,IAAI,CAACC,GAAG,CAC1B,CAAC,EACDJ,QAAQ,CAACN,GAAG,GAAGO,UAAU,GAAGb,gBAAgB,CAC7C;IACD,IAAMiB,cAAc,GAAGL,QAAQ,CAACL,MAAM,GAAGM,UAAU,GAAGb,gBAAgB;IAEtEI,KAAK,CAACc,WAAW,CAAC;MAChBZ,GAAG,EAAEQ,WAAW;MAChBP,MAAM,EAAEU,cAAc;MACtBZ,OAAO,EAAEO,QAAQ,CAACP;IACpB,CAAC,CAAC;EACJ,CAAC,EAAEN,YAAY,CAAC,EAClB,CAACK,KAAK,CAAC,CACR;EAEDT,SAAS,CACP,SAASwB,2BAA2B,GAAG;IACrC,IAAMC,OAAO,GAAGhB,KAAK,CAACM,QAAQ,CAC3BW,YAAqD,IAAK;MAAA;MACzDX,QAAQ,CAAC;QACPY,KAAK,yBAAED,YAAY,CAACC,KAAK,qEAAI,EAAE;QAC/BC,MAAM,0BAAEF,YAAY,CAACE,MAAM,uEAAI;MACjC,CAAC,CAAC;IACJ,CAAC,CACF;IAED,OAAO,MAAM;MACXtB,GAAG,CAACuB,KAAK,CAAC,kBAAkB,CAAC;MAC7BJ,OAAO,EAAE;IACX,CAAC;EACH,CAAC,EACD,CAAChB,KAAK,EAAEM,QAAQ,CAAC,CAClB;EAEDf,SAAS,CACP,SAAS8B,aAAa,GAAG;IACvBrB,KAAK,CAACsB,SAAS,CAAClB,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,CAAC;EAC/B,CAAC,EACD,CAACJ,KAAK,EAAEI,MAAM,CAAC,CAChB;EACDb,SAAS,CACP,SAASgC,cAAc,GAAG;IACxBhB,uBAAuB,CAAC;MACtBL,GAAG;MACHC,MAAM;MACNF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACM,uBAAuB,EAAEL,GAAG,EAAEC,MAAM,EAAEF,OAAO,EAAEG,MAAM,EAAEC,UAAU,CAAC,CACpE;EACDd,SAAS,CACP,MAAM,MAAM;IACVM,GAAG,CAAC2B,MAAM,CAAC,gCAAgC,CAAC;IAC5CjB,uBAAuB,CAACkB,MAAM,EAAE;EAClC,CAAC,EACD,CAAClB,uBAAuB,CAAC,CAC1B;EAED,OAAO,IAAI;AACb;AAEA,eAAeR,6BAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.40.5-beta.0+02b8d4fc",
3
+ "version": "0.40.5-beta.2+26011467",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -23,14 +23,14 @@
23
23
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
24
24
  },
25
25
  "dependencies": {
26
- "@deephaven/chart": "^0.40.5-beta.0+02b8d4fc",
27
- "@deephaven/components": "^0.40.5-beta.0+02b8d4fc",
28
- "@deephaven/icons": "^0.40.5-beta.0+02b8d4fc",
29
- "@deephaven/jsapi-bootstrap": "^0.40.5-beta.0+02b8d4fc",
30
- "@deephaven/jsapi-types": "^0.40.5-beta.0+02b8d4fc",
31
- "@deephaven/log": "^0.40.5-beta.0+02b8d4fc",
32
- "@deephaven/storage": "^0.40.5-beta.0+02b8d4fc",
33
- "@deephaven/utils": "^0.40.5-beta.0+02b8d4fc",
26
+ "@deephaven/chart": "^0.40.5-beta.2+26011467",
27
+ "@deephaven/components": "^0.40.5-beta.2+26011467",
28
+ "@deephaven/icons": "^0.40.5-beta.2+26011467",
29
+ "@deephaven/jsapi-bootstrap": "^0.40.5-beta.2+26011467",
30
+ "@deephaven/jsapi-types": "^0.40.5-beta.2+26011467",
31
+ "@deephaven/log": "^0.40.5-beta.2+26011467",
32
+ "@deephaven/storage": "^0.40.5-beta.2+26011467",
33
+ "@deephaven/utils": "^0.40.5-beta.2+26011467",
34
34
  "@fortawesome/react-fontawesome": "^0.2.0",
35
35
  "classnames": "^2.3.1",
36
36
  "linkifyjs": "^4.1.0",
@@ -49,9 +49,9 @@
49
49
  "react-dom": "^17.x"
50
50
  },
51
51
  "devDependencies": {
52
- "@deephaven/jsapi-shim": "^0.40.5-beta.0+02b8d4fc",
53
- "@deephaven/mocks": "^0.40.5-beta.0+02b8d4fc",
54
- "@deephaven/tsconfig": "^0.40.5-beta.0+02b8d4fc"
52
+ "@deephaven/jsapi-shim": "^0.40.5-beta.2+26011467",
53
+ "@deephaven/mocks": "^0.40.5-beta.2+26011467",
54
+ "@deephaven/tsconfig": "^0.40.5-beta.2+26011467"
55
55
  },
56
56
  "files": [
57
57
  "dist"
@@ -62,5 +62,5 @@
62
62
  "publishConfig": {
63
63
  "access": "public"
64
64
  },
65
- "gitHead": "02b8d4fc46a58de4a509d6e3c17182ee93786a3d"
65
+ "gitHead": "26011467be3bb5947a2cf34d78eaaaedc47d909b"
66
66
  }