@deephaven/console 1.2.1-plotly-rc.2 → 1.2.1-plotly-rc3.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.
Files changed (56) hide show
  1. package/dist/Console.js.map +1 -1
  2. package/dist/ConsoleInput.js.map +1 -1
  3. package/dist/ConsoleObjectsMenu.js.map +1 -1
  4. package/dist/ConsolePropTypes.js.map +1 -1
  5. package/dist/ConsoleShortcuts.js.map +1 -1
  6. package/dist/ConsoleStatusBar.js.map +1 -1
  7. package/dist/HeapUsage.js.map +1 -1
  8. package/dist/StoragePropTypes.js.map +1 -1
  9. package/dist/command-history/CommandHistory.js.map +1 -1
  10. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  11. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  12. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  13. package/dist/command-history/CommandHistoryStorage.js.map +1 -1
  14. package/dist/command-history/CommandHistoryTypes.js.map +1 -1
  15. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  16. package/dist/command-history/index.js.map +1 -1
  17. package/dist/common/Code.js.map +1 -1
  18. package/dist/common/ConsoleConstants.js.map +1 -1
  19. package/dist/common/ConsoleUtils.js.map +1 -1
  20. package/dist/common/ObjectIcon.js.map +1 -1
  21. package/dist/common/index.js.map +1 -1
  22. package/dist/console-history/ConsoleHistory.js.map +1 -1
  23. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  24. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  25. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  26. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  27. package/dist/console-history/ConsoleHistoryTypes.js.map +1 -1
  28. package/dist/console-history/index.js.map +1 -1
  29. package/dist/csv/CsvFormats.js.map +1 -1
  30. package/dist/csv/CsvInputBar.js.map +1 -1
  31. package/dist/csv/CsvOverlay.js.map +1 -1
  32. package/dist/csv/CsvParser.js.map +1 -1
  33. package/dist/csv/CsvTypeParser.js.map +1 -1
  34. package/dist/csv/ZipStreamHelper.js.map +1 -1
  35. package/dist/declaration.d.js.map +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/log/LogLevel.js.map +1 -1
  38. package/dist/log/LogLevelMenuItem.js.map +1 -1
  39. package/dist/log/LogView.js.map +1 -1
  40. package/dist/monaco/MonacoProviders.js.map +1 -1
  41. package/dist/monaco/MonacoThemeProvider.js.map +1 -1
  42. package/dist/monaco/MonacoUtils.js.map +1 -1
  43. package/dist/monaco/RuffDefaultSettings.js.map +1 -1
  44. package/dist/monaco/RuffSettingsModal.js.map +1 -1
  45. package/dist/monaco/index.js.map +1 -1
  46. package/dist/monaco/lang/Language.js.map +1 -1
  47. package/dist/monaco/lang/db.js.map +1 -1
  48. package/dist/monaco/lang/groovy.js.map +1 -1
  49. package/dist/monaco/lang/log.js.map +1 -1
  50. package/dist/monaco/lang/python.js.map +1 -1
  51. package/dist/monaco/lang/scala.js.map +1 -1
  52. package/dist/monaco/ruffSchema.js.map +1 -1
  53. package/dist/notebook/Editor.js.map +1 -1
  54. package/dist/notebook/ScriptEditor.js.map +1 -1
  55. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  56. package/package.json +14 -14
@@ -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;AAAA,SAAAC,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":[]}
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;AAAA,SAAAC,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"}
@@ -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":"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","ignoreList":[]}
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StoragePropTypes.js","names":["PropTypes","CommandHistoryStorage","shape","addItem","func","isRequired","updateItem","getTable","CommandHistoryTable","size","number","getSnapshot","StoragePropTypes","Object","freeze"],"sources":["../src/StoragePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryStorage = PropTypes.shape({\n addItem: PropTypes.func.isRequired,\n updateItem: PropTypes.func.isRequired,\n getTable: PropTypes.func.isRequired,\n});\n\nconst CommandHistoryTable = PropTypes.shape({\n size: PropTypes.number.isRequired,\n getSnapshot: PropTypes.func.isRequired,\n});\n\nconst StoragePropTypes = Object.freeze({\n CommandHistoryStorage,\n CommandHistoryTable,\n});\n\nexport default StoragePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAGD,SAAS,CAACE,KAAK,CAAC;EAC5CC,OAAO,EAAEH,SAAS,CAACI,IAAI,CAACC,UAAU;EAClCC,UAAU,EAAEN,SAAS,CAACI,IAAI,CAACC,UAAU;EACrCE,QAAQ,EAAEP,SAAS,CAACI,IAAI,CAACC;AAC3B,CAAC,CAAC;AAEF,IAAMG,mBAAmB,GAAGR,SAAS,CAACE,KAAK,CAAC;EAC1CO,IAAI,EAAET,SAAS,CAACU,MAAM,CAACL,UAAU;EACjCM,WAAW,EAAEX,SAAS,CAACI,IAAI,CAACC;AAC9B,CAAC,CAAC;AAEF,IAAMO,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCb,qBAAqB;EACrBO;AACF,CAAC,CAAC;AAEF,eAAeI,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"StoragePropTypes.js","names":["PropTypes","CommandHistoryStorage","shape","addItem","func","isRequired","updateItem","getTable","CommandHistoryTable","size","number","getSnapshot","StoragePropTypes","Object","freeze"],"sources":["../src/StoragePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryStorage = PropTypes.shape({\n addItem: PropTypes.func.isRequired,\n updateItem: PropTypes.func.isRequired,\n getTable: PropTypes.func.isRequired,\n});\n\nconst CommandHistoryTable = PropTypes.shape({\n size: PropTypes.number.isRequired,\n getSnapshot: PropTypes.func.isRequired,\n});\n\nconst StoragePropTypes = Object.freeze({\n CommandHistoryStorage,\n CommandHistoryTable,\n});\n\nexport default StoragePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAElC,IAAMC,qBAAqB,GAAGD,SAAS,CAACE,KAAK,CAAC;EAC5CC,OAAO,EAAEH,SAAS,CAACI,IAAI,CAACC,UAAU;EAClCC,UAAU,EAAEN,SAAS,CAACI,IAAI,CAACC,UAAU;EACrCE,QAAQ,EAAEP,SAAS,CAACI,IAAI,CAACC;AAC3B,CAAC,CAAC;AAEF,IAAMG,mBAAmB,GAAGR,SAAS,CAACE,KAAK,CAAC;EAC1CO,IAAI,EAAET,SAAS,CAACU,MAAM,CAACL,UAAU;EACjCM,WAAW,EAAEX,SAAS,CAACI,IAAI,CAACC;AAC9B,CAAC,CAAC;AAEF,IAAMO,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCb,qBAAqB;EACrBO;AACF,CAAC,CAAC;AAEF,eAAeI,gBAAgB"}
@@ -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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","ignoreList":[]}
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 +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;AAAA,SAAAC,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":[]}
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;AAAA,SAAAC,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryItem.js","names":["React","useRef","useCallback","classNames","Tooltip","CommandHistoryItemTooltip","jsx","_jsx","jsxs","_jsxs","MAX_TRUNCATE_LENGTH","CommandHistoryItem","props","item","language","isSelected","commandHistoryStorage","previewText","name","substring","tooltip","handleUpdate","_tooltip$current","current","update","className","selected","children","ref","interactive","options","placement","modifiers","preventOverflow","enabled","boundariesElement","order","popperClassName","onUpdate","defaultProps"],"sources":["../../src/command-history/CommandHistoryItem.tsx"],"sourcesContent":["import React, { useRef, useCallback, type ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\n\nimport './CommandHistoryItem.scss';\nimport CommandHistoryItemTooltip from './CommandHistoryItemTooltip';\nimport { type CommandHistoryStorageItem } from './CommandHistoryStorage';\nimport type CommandHistoryStorage from './CommandHistoryStorage';\n\ninterface CommandHistoryItemProps {\n item: CommandHistoryStorageItem;\n language: string;\n isSelected?: boolean;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\nconst MAX_TRUNCATE_LENGTH = 512;\n\nfunction CommandHistoryItem(props: CommandHistoryItemProps): ReactElement {\n const { item, language, isSelected, commandHistoryStorage } = props;\n const previewText = item.name.substring(0, MAX_TRUNCATE_LENGTH);\n const tooltip = useRef<Tooltip>(null);\n const handleUpdate = useCallback(() => {\n tooltip.current?.update();\n }, [tooltip]);\n\n return (\n <div\n className={classNames('command-history-item', {\n selected: isSelected,\n })}\n >\n {previewText}\n <Tooltip\n ref={tooltip}\n interactive\n options={{\n placement: 'left',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'viewport',\n order: 825, // modify order so boundary is enforced at end of popper calcs\n },\n },\n }}\n popperClassName=\"command-history-item-popper\"\n >\n <CommandHistoryItemTooltip\n item={item}\n language={language}\n onUpdate={handleUpdate}\n commandHistoryStorage={commandHistoryStorage}\n />\n </Tooltip>\n </div>\n );\n}\n\nCommandHistoryItem.defaultProps = {\n isSelected: false,\n};\n\nexport default CommandHistoryItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,WAAW,QAA2B,OAAO;AACrE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,uBAAuB;AAAC;AAAA,OAGzCC,yBAAyB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAWhC,IAAMC,mBAAmB,GAAG,GAAG;AAE/B,SAASC,kBAAkBA,CAACC,KAA8B,EAAgB;EACxE,IAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,UAAU;IAAEC;EAAsB,CAAC,GAAGJ,KAAK;EACnE,IAAMK,WAAW,GAAGJ,IAAI,CAACK,IAAI,CAACC,SAAS,CAAC,CAAC,EAAET,mBAAmB,CAAC;EAC/D,IAAMU,OAAO,GAAGnB,MAAM,CAAU,IAAI,CAAC;EACrC,IAAMoB,YAAY,GAAGnB,WAAW,CAAC,MAAM;IAAA,IAAAoB,gBAAA;IACrC,CAAAA,gBAAA,GAAAF,OAAO,CAACG,OAAO,cAAAD,gBAAA,uBAAfA,gBAAA,CAAiBE,MAAM,CAAC,CAAC;EAC3B,CAAC,EAAE,CAACJ,OAAO,CAAC,CAAC;EAEb,oBACEX,KAAA;IACEgB,SAAS,EAAEtB,UAAU,CAAC,sBAAsB,EAAE;MAC5CuB,QAAQ,EAAEX;IACZ,CAAC,CAAE;IAAAY,QAAA,GAEFV,WAAW,eACZV,IAAA,CAACH,OAAO;MACNwB,GAAG,EAAER,OAAQ;MACbS,WAAW;MACXC,OAAO,EAAE;QACPC,SAAS,EAAE,MAAM;QACjBC,SAAS,EAAE;UACTC,eAAe,EAAE;YACfC,OAAO,EAAE,IAAI;YACbC,iBAAiB,EAAE,UAAU;YAC7BC,KAAK,EAAE,GAAG,CAAE;UACd;QACF;MACF,CAAE;;MACFC,eAAe,EAAC,6BAA6B;MAAAV,QAAA,eAE7CpB,IAAA,CAACF,yBAAyB;QACxBQ,IAAI,EAAEA,IAAK;QACXC,QAAQ,EAAEA,QAAS;QACnBwB,QAAQ,EAAEjB,YAAa;QACvBL,qBAAqB,EAAEA;MAAsB,CAC9C;IAAC,CACK,CAAC;EAAA,CACP,CAAC;AAEV;AAEAL,kBAAkB,CAAC4B,YAAY,GAAG;EAChCxB,UAAU,EAAE;AACd,CAAC;AAED,eAAeJ,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"CommandHistoryItem.js","names":["React","useRef","useCallback","classNames","Tooltip","CommandHistoryItemTooltip","jsx","_jsx","jsxs","_jsxs","MAX_TRUNCATE_LENGTH","CommandHistoryItem","props","item","language","isSelected","commandHistoryStorage","previewText","name","substring","tooltip","handleUpdate","_tooltip$current","current","update","className","selected","children","ref","interactive","options","placement","modifiers","preventOverflow","enabled","boundariesElement","order","popperClassName","onUpdate","defaultProps"],"sources":["../../src/command-history/CommandHistoryItem.tsx"],"sourcesContent":["import React, { useRef, useCallback, type ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\n\nimport './CommandHistoryItem.scss';\nimport CommandHistoryItemTooltip from './CommandHistoryItemTooltip';\nimport { type CommandHistoryStorageItem } from './CommandHistoryStorage';\nimport type CommandHistoryStorage from './CommandHistoryStorage';\n\ninterface CommandHistoryItemProps {\n item: CommandHistoryStorageItem;\n language: string;\n isSelected?: boolean;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\nconst MAX_TRUNCATE_LENGTH = 512;\n\nfunction CommandHistoryItem(props: CommandHistoryItemProps): ReactElement {\n const { item, language, isSelected, commandHistoryStorage } = props;\n const previewText = item.name.substring(0, MAX_TRUNCATE_LENGTH);\n const tooltip = useRef<Tooltip>(null);\n const handleUpdate = useCallback(() => {\n tooltip.current?.update();\n }, [tooltip]);\n\n return (\n <div\n className={classNames('command-history-item', {\n selected: isSelected,\n })}\n >\n {previewText}\n <Tooltip\n ref={tooltip}\n interactive\n options={{\n placement: 'left',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'viewport',\n order: 825, // modify order so boundary is enforced at end of popper calcs\n },\n },\n }}\n popperClassName=\"command-history-item-popper\"\n >\n <CommandHistoryItemTooltip\n item={item}\n language={language}\n onUpdate={handleUpdate}\n commandHistoryStorage={commandHistoryStorage}\n />\n </Tooltip>\n </div>\n );\n}\n\nCommandHistoryItem.defaultProps = {\n isSelected: false,\n};\n\nexport default CommandHistoryItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,WAAW,QAA2B,OAAO;AACrE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,uBAAuB;AAAC;AAAA,OAGzCC,yBAAyB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAWhC,IAAMC,mBAAmB,GAAG,GAAG;AAE/B,SAASC,kBAAkBA,CAACC,KAA8B,EAAgB;EACxE,IAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,UAAU;IAAEC;EAAsB,CAAC,GAAGJ,KAAK;EACnE,IAAMK,WAAW,GAAGJ,IAAI,CAACK,IAAI,CAACC,SAAS,CAAC,CAAC,EAAET,mBAAmB,CAAC;EAC/D,IAAMU,OAAO,GAAGnB,MAAM,CAAU,IAAI,CAAC;EACrC,IAAMoB,YAAY,GAAGnB,WAAW,CAAC,MAAM;IAAA,IAAAoB,gBAAA;IACrC,CAAAA,gBAAA,GAAAF,OAAO,CAACG,OAAO,cAAAD,gBAAA,uBAAfA,gBAAA,CAAiBE,MAAM,CAAC,CAAC;EAC3B,CAAC,EAAE,CAACJ,OAAO,CAAC,CAAC;EAEb,oBACEX,KAAA;IACEgB,SAAS,EAAEtB,UAAU,CAAC,sBAAsB,EAAE;MAC5CuB,QAAQ,EAAEX;IACZ,CAAC,CAAE;IAAAY,QAAA,GAEFV,WAAW,eACZV,IAAA,CAACH,OAAO;MACNwB,GAAG,EAAER,OAAQ;MACbS,WAAW;MACXC,OAAO,EAAE;QACPC,SAAS,EAAE,MAAM;QACjBC,SAAS,EAAE;UACTC,eAAe,EAAE;YACfC,OAAO,EAAE,IAAI;YACbC,iBAAiB,EAAE,UAAU;YAC7BC,KAAK,EAAE,GAAG,CAAE;UACd;QACF;MACF,CAAE;;MACFC,eAAe,EAAC,6BAA6B;MAAAV,QAAA,eAE7CpB,IAAA,CAACF,yBAAyB;QACxBQ,IAAI,EAAEA,IAAK;QACXC,QAAQ,EAAEA,QAAS;QACnBwB,QAAQ,EAAEjB,YAAa;QACvBL,qBAAqB,EAAEA;MAAsB,CAC9C;IAAC,CACK,CAAC;EAAA,CACP,CAAC;AAEV;AAEAL,kBAAkB,CAAC4B,YAAY,GAAG;EAChCxB,UAAU,EAAE;AACd,CAAC;AAED,eAAeJ,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","jsx","_jsx","jsxs","_jsxs","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","_defineProperty","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","_prevState$data","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","window","setInterval","clearInterval","updateTime","setState","error","concat","onUpdate","render","_result$error","errorMessage","timeString","previewText","getPreviewText","hasTimeString","className","children","length","icon"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, type ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { type StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport {\n type CommandHistoryStorageData,\n type CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\nimport type CommandHistoryStorage from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: number;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = window.setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer != null) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n (name: string) => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","jsx","_jsx","jsxs","_jsxs","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","_defineProperty","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","_prevState$data","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","window","setInterval","clearInterval","updateTime","setState","error","concat","onUpdate","render","_result$error","errorMessage","timeString","previewText","getPreviewText","hasTimeString","className","children","length","icon"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, type ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { type StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport {\n type CommandHistoryStorageData,\n type CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\nimport type CommandHistoryStorage from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: number;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = window.setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer != null) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n (name: string) => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryStorage.js","names":[],"sources":["../../src/command-history/CommandHistoryStorage.ts"],"sourcesContent":["import {\n type StorageTable,\n type StorageItem,\n type StorageItemListener,\n type StorageListenerRemover,\n type StorageErrorListener,\n} from '@deephaven/storage';\n\nexport interface CommandHistoryStorageData {\n command: string;\n startTime: string;\n endTime?: string;\n result?: { error?: string };\n}\n\nexport interface CommandHistoryStorageItem extends StorageItem {\n name: string;\n data: CommandHistoryStorageData;\n}\n\nexport interface CommandHistoryTable\n extends StorageTable<CommandHistoryStorageItem> {\n setSearch: (search: string) => void;\n}\n\nexport interface CommandHistoryStorage {\n /**\n * Retrieve a table filtered to the command history for the language and scope specified.\n * To achieve a separate history per scope (ie. dashboard), we add the scope as suffix to the data type.\n * When fetching the history, we then filter based on the timestamp\n * @param language The language to get the command history for\n * @param scope The scope of this command history, to keep different command histories separate\n * @param timestamp The time this command history scope was started\n */\n getTable: (\n language: string,\n scope: string,\n timestamp: number\n ) => Promise<CommandHistoryTable>;\n\n /**\n * Add a command to the command history\n * @param language The language to add the command history item for\n * @param scope The scope to add the command history for\n * @param command The command to add to the history\n * @param data The data to save with the command\n */\n addItem: (\n language: string,\n scope: string,\n command: string,\n data: CommandHistoryStorageData\n ) => Promise<CommandHistoryStorageItem>;\n\n /**\n * Save a modified CommandHistoryStorageItem\n * @param language The language of the item to save\n * @param item The modified item to save\n */\n updateItem: (\n language: string,\n item: CommandHistoryStorageItem\n ) => Promise<CommandHistoryStorageItem>;\n\n /**\n * Listen to an item with a specific id\n *\n * @param language The language of the item\n * @param id The id of the item to listen to\n * @param listener Called whenever there is an update on the item\n */\n listenItem: (\n language: string,\n id: string,\n listener: StorageItemListener<CommandHistoryStorageItem>,\n onError?: StorageErrorListener\n ) => StorageListenerRemover;\n}\n\nexport default CommandHistoryStorage;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"CommandHistoryStorage.js","names":[],"sources":["../../src/command-history/CommandHistoryStorage.ts"],"sourcesContent":["import {\n type StorageTable,\n type StorageItem,\n type StorageItemListener,\n type StorageListenerRemover,\n type StorageErrorListener,\n} from '@deephaven/storage';\n\nexport interface CommandHistoryStorageData {\n command: string;\n startTime: string;\n endTime?: string;\n result?: { error?: string };\n}\n\nexport interface CommandHistoryStorageItem extends StorageItem {\n name: string;\n data: CommandHistoryStorageData;\n}\n\nexport interface CommandHistoryTable\n extends StorageTable<CommandHistoryStorageItem> {\n setSearch: (search: string) => void;\n}\n\nexport interface CommandHistoryStorage {\n /**\n * Retrieve a table filtered to the command history for the language and scope specified.\n * To achieve a separate history per scope (ie. dashboard), we add the scope as suffix to the data type.\n * When fetching the history, we then filter based on the timestamp\n * @param language The language to get the command history for\n * @param scope The scope of this command history, to keep different command histories separate\n * @param timestamp The time this command history scope was started\n */\n getTable: (\n language: string,\n scope: string,\n timestamp: number\n ) => Promise<CommandHistoryTable>;\n\n /**\n * Add a command to the command history\n * @param language The language to add the command history item for\n * @param scope The scope to add the command history for\n * @param command The command to add to the history\n * @param data The data to save with the command\n */\n addItem: (\n language: string,\n scope: string,\n command: string,\n data: CommandHistoryStorageData\n ) => Promise<CommandHistoryStorageItem>;\n\n /**\n * Save a modified CommandHistoryStorageItem\n * @param language The language of the item to save\n * @param item The modified item to save\n */\n updateItem: (\n language: string,\n item: CommandHistoryStorageItem\n ) => Promise<CommandHistoryStorageItem>;\n\n /**\n * Listen to an item with a specific id\n *\n * @param language The language of the item\n * @param id The id of the item to listen to\n * @param listener Called whenever there is an update on the item\n */\n listenItem: (\n language: string,\n id: string,\n listener: StorageItemListener<CommandHistoryStorageItem>,\n onError?: StorageErrorListener\n ) => StorageListenerRemover;\n}\n\nexport default CommandHistoryStorage;\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryTypes.js","names":[],"sources":["../../src/command-history/CommandHistoryTypes.tsx"],"sourcesContent":["import { type ContextAction } from '@deephaven/components';\nimport { type IconDefinition } from '@deephaven/icons';\n\nexport type ItemAction = ContextAction & {\n title: string;\n description: string;\n icon: IconDefinition;\n action: () => void;\n group: number;\n order?: number;\n};\n\nexport type HistoryAction = ContextAction & {\n action: () => void;\n title: string;\n description: string;\n icon: IconDefinition;\n selectionRequired?: boolean;\n className?: string;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"CommandHistoryTypes.js","names":[],"sources":["../../src/command-history/CommandHistoryTypes.tsx"],"sourcesContent":["import { type ContextAction } from '@deephaven/components';\nimport { type IconDefinition } from '@deephaven/icons';\n\nexport type ItemAction = ContextAction & {\n title: string;\n description: string;\n icon: IconDefinition;\n action: () => void;\n group: number;\n order?: number;\n};\n\nexport type HistoryAction = ContextAction & {\n action: () => void;\n title: string;\n description: string;\n icon: IconDefinition;\n selectionRequired?: boolean;\n className?: string;\n};\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","throttle","Log","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","_ref","table","columns","top","bottom","search","isReversed","onUpdate","throttledUpdateViewport","viewport","viewHeight","bufferedTop","Math","max","bufferedBottom","setViewport","updateTableAndReturnCleanup","cleanup","viewportData","_viewportData$items","_viewportData$offset","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 type StorageTableViewport,\n type ViewportData,\n type ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport Log from '@deephaven/log';\nimport {\n type CommandHistoryStorageItem,\n type 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,6BAA6BA,CAAAC,IAAA,EAQO;EAAA,IARN;IACrCC,KAAK;IACLC,OAAO;IACPC,GAAG,GAAG,CAAC;IACPC,MAAM,GAAG,CAAC;IACVC,MAAM;IACNC,UAAU,GAAG,KAAK;IAClBC;EACkC,CAAC,GAAAP,IAAA;EACnC,IAAMQ,uBAAuB,GAAGhB,OAAO,CACrC,MACEC,QAAQ,CAAEgB,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,GAAGd,gBAC9B,CAAC;IACD,IAAMkB,cAAc,GAAGL,QAAQ,CAACL,MAAM,GAAGM,UAAU,GAAGd,gBAAgB;IAEtEK,KAAK,CAACc,WAAW,CAAC;MAChBZ,GAAG,EAAEQ,WAAW;MAChBP,MAAM,EAAEU,cAAc;MACtBZ,OAAO,EAAEO,QAAQ,CAACP;IACpB,CAAC,CAAC;EACJ,CAAC,EAAEP,YAAY,CAAC,EAClB,CAACM,KAAK,CACR,CAAC;EAEDV,SAAS,CACP,SAASyB,2BAA2BA,CAAA,EAAG;IACrC,IAAMC,OAAO,GAAGhB,KAAK,CAACM,QAAQ,CAC3BW,YAAqD,IAAK;MAAA,IAAAC,mBAAA,EAAAC,oBAAA;MACzDb,QAAQ,CAAC;QACPc,KAAK,GAAAF,mBAAA,GAAED,YAAY,CAACG,KAAK,cAAAF,mBAAA,cAAAA,mBAAA,GAAI,EAAE;QAC/BG,MAAM,GAAAF,oBAAA,GAAEF,YAAY,CAACI,MAAM,cAAAF,oBAAA,cAAAA,oBAAA,GAAI;MACjC,CAAC,CAAC;IACJ,CACF,CAAC;IAED,OAAO,MAAM;MACXvB,GAAG,CAAC0B,KAAK,CAAC,kBAAkB,CAAC;MAC7BN,OAAO,CAAC,CAAC;IACX,CAAC;EACH,CAAC,EACD,CAAChB,KAAK,EAAEM,QAAQ,CAClB,CAAC;EAEDhB,SAAS,CACP,SAASiC,aAAaA,CAAA,EAAG;IACvBvB,KAAK,CAACwB,SAAS,CAACpB,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,CAAC;EAC/B,CAAC,EACD,CAACJ,KAAK,EAAEI,MAAM,CAChB,CAAC;EACDd,SAAS,CACP,SAASmC,cAAcA,CAAA,EAAG;IACxBlB,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,CACpE,CAAC;EACDf,SAAS,CACP,MAAM,MAAM;IACVM,GAAG,CAAC8B,MAAM,CAAC,gCAAgC,CAAC;IAC5CnB,uBAAuB,CAACoB,MAAM,CAAC,CAAC;EAClC,CAAC,EACD,CAACpB,uBAAuB,CAC1B,CAAC;EAED,OAAO,IAAI;AACb;AAEA,eAAeT,6BAA6B","ignoreList":[]}
1
+ {"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","throttle","Log","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","_ref","table","columns","top","bottom","search","isReversed","onUpdate","throttledUpdateViewport","viewport","viewHeight","bufferedTop","Math","max","bufferedBottom","setViewport","updateTableAndReturnCleanup","cleanup","viewportData","_viewportData$items","_viewportData$offset","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 type StorageTableViewport,\n type ViewportData,\n type ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport Log from '@deephaven/log';\nimport {\n type CommandHistoryStorageItem,\n type 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,6BAA6BA,CAAAC,IAAA,EAQO;EAAA,IARN;IACrCC,KAAK;IACLC,OAAO;IACPC,GAAG,GAAG,CAAC;IACPC,MAAM,GAAG,CAAC;IACVC,MAAM;IACNC,UAAU,GAAG,KAAK;IAClBC;EACkC,CAAC,GAAAP,IAAA;EACnC,IAAMQ,uBAAuB,GAAGhB,OAAO,CACrC,MACEC,QAAQ,CAAEgB,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,GAAGd,gBAC9B,CAAC;IACD,IAAMkB,cAAc,GAAGL,QAAQ,CAACL,MAAM,GAAGM,UAAU,GAAGd,gBAAgB;IAEtEK,KAAK,CAACc,WAAW,CAAC;MAChBZ,GAAG,EAAEQ,WAAW;MAChBP,MAAM,EAAEU,cAAc;MACtBZ,OAAO,EAAEO,QAAQ,CAACP;IACpB,CAAC,CAAC;EACJ,CAAC,EAAEP,YAAY,CAAC,EAClB,CAACM,KAAK,CACR,CAAC;EAEDV,SAAS,CACP,SAASyB,2BAA2BA,CAAA,EAAG;IACrC,IAAMC,OAAO,GAAGhB,KAAK,CAACM,QAAQ,CAC3BW,YAAqD,IAAK;MAAA,IAAAC,mBAAA,EAAAC,oBAAA;MACzDb,QAAQ,CAAC;QACPc,KAAK,GAAAF,mBAAA,GAAED,YAAY,CAACG,KAAK,cAAAF,mBAAA,cAAAA,mBAAA,GAAI,EAAE;QAC/BG,MAAM,GAAAF,oBAAA,GAAEF,YAAY,CAACI,MAAM,cAAAF,oBAAA,cAAAA,oBAAA,GAAI;MACjC,CAAC,CAAC;IACJ,CACF,CAAC;IAED,OAAO,MAAM;MACXvB,GAAG,CAAC0B,KAAK,CAAC,kBAAkB,CAAC;MAC7BN,OAAO,CAAC,CAAC;IACX,CAAC;EACH,CAAC,EACD,CAAChB,KAAK,EAAEM,QAAQ,CAClB,CAAC;EAEDhB,SAAS,CACP,SAASiC,aAAaA,CAAA,EAAG;IACvBvB,KAAK,CAACwB,SAAS,CAACpB,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,CAAC;EAC/B,CAAC,EACD,CAACJ,KAAK,EAAEI,MAAM,CAChB,CAAC;EACDd,SAAS,CACP,SAASmC,cAAcA,CAAA,EAAG;IACxBlB,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,CACpE,CAAC;EACDf,SAAS,CACP,MAAM,MAAM;IACVM,GAAG,CAAC8B,MAAM,CAAC,gCAAgC,CAAC;IAC5CnB,uBAAuB,CAACoB,MAAM,CAAC,CAAC;EAClC,CAAC,EACD,CAACpB,uBAAuB,CAC1B,CAAC;EAED,OAAO,IAAI;AACb;AAEA,eAAeT,6BAA6B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","CommandHistory","CommandHistoryActions","CommandHistoryItem","CommandHistoryItemTooltip"],"sources":["../../src/command-history/index.ts"],"sourcesContent":["export { default as CommandHistory } from './CommandHistory';\nexport * from './CommandHistory';\nexport { default as CommandHistoryActions } from './CommandHistoryActions';\nexport { default as CommandHistoryItem } from './CommandHistoryItem';\nexport { default as CommandHistoryItemTooltip } from './CommandHistoryItemTooltip';\nexport * from './CommandHistoryStorage';\n"],"mappings":"SAASA,OAAO,IAAIC,cAAc;AAAA;AAAA,SAEzBD,OAAO,IAAIE,qBAAqB;AAAA,SAChCF,OAAO,IAAIG,kBAAkB;AAAA,SAC7BH,OAAO,IAAII,yBAAyB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","CommandHistory","CommandHistoryActions","CommandHistoryItem","CommandHistoryItemTooltip"],"sources":["../../src/command-history/index.ts"],"sourcesContent":["export { default as CommandHistory } from './CommandHistory';\nexport * from './CommandHistory';\nexport { default as CommandHistoryActions } from './CommandHistoryActions';\nexport { default as CommandHistoryItem } from './CommandHistoryItem';\nexport { default as CommandHistoryItemTooltip } from './CommandHistoryItemTooltip';\nexport * from './CommandHistoryStorage';\n"],"mappings":"SAASA,OAAO,IAAIC,cAAc;AAAA;AAAA,SAEzBD,OAAO,IAAIE,qBAAqB;AAAA,SAChCF,OAAO,IAAIG,kBAAkB;AAAA,SAC7BH,OAAO,IAAII,yBAAyB;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Code.js","names":["React","useEffect","useState","monaco","useTheme","jsx","_jsx","Code","_ref","children","language","colorizedHtml","setColorizedHtml","activeThemes","isCanceled","colorize","_colorize","apply","arguments","_asyncToGenerator","result","editor","toString","style","pointerEvents","dangerouslySetInnerHTML","__html","undefined"],"sources":["../../src/common/Code.tsx"],"sourcesContent":["import React, { useEffect, useState, type ReactNode } from 'react';\nimport * as monaco from 'monaco-editor';\nimport { useTheme } from '@deephaven/components';\n\ninterface CodeProps {\n children: ReactNode;\n language: string;\n}\n\nfunction Code({ children, language }: CodeProps): JSX.Element {\n const [colorizedHtml, setColorizedHtml] = useState<string | null>(null);\n const { activeThemes } = useTheme();\n\n useEffect(() => {\n let isCanceled = false;\n async function colorize() {\n if (children != null && activeThemes != null) {\n const result = await monaco.editor.colorize(\n children.toString(),\n language,\n {}\n );\n if (!isCanceled) {\n setColorizedHtml(result);\n }\n }\n }\n colorize();\n return () => {\n isCanceled = true;\n };\n }, [activeThemes, children, language]);\n\n return (\n <div\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style={{ pointerEvents: 'none' }}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={\n colorizedHtml != null ? { __html: colorizedHtml } : undefined\n }\n />\n );\n}\n\nexport default Code;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAwB,OAAO;AAClE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOjD,SAASC,IAAIA,CAAAC,IAAA,EAAiD;EAAA,IAAhD;IAAEC,QAAQ;IAAEC;EAAoB,CAAC,GAAAF,IAAA;EAC7C,IAAM,CAACG,aAAa,EAAEC,gBAAgB,CAAC,GAAGV,QAAQ,CAAgB,IAAI,CAAC;EACvE,IAAM;IAAEW;EAAa,CAAC,GAAGT,QAAQ,CAAC,CAAC;EAEnCH,SAAS,CAAC,MAAM;IACd,IAAIa,UAAU,GAAG,KAAK;IAAC,SACRC,QAAQA,CAAA;MAAA,OAAAC,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,UAAA;MAAAA,SAAA,GAAAG,iBAAA,CAAvB,aAA0B;QACxB,IAAIV,QAAQ,IAAI,IAAI,IAAII,YAAY,IAAI,IAAI,EAAE;UAC5C,IAAMO,MAAM,SAASjB,MAAM,CAACkB,MAAM,CAACN,QAAQ,CACzCN,QAAQ,CAACa,QAAQ,CAAC,CAAC,EACnBZ,QAAQ,EACR,CAAC,CACH,CAAC;UACD,IAAI,CAACI,UAAU,EAAE;YACfF,gBAAgB,CAACQ,MAAM,CAAC;UAC1B;QACF;MACF,CAAC;MAAA,OAAAJ,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,QAAQ,CAAC,CAAC;IACV,OAAO,MAAM;MACXD,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EAAE,CAACD,YAAY,EAAEJ,QAAQ,EAAEC,QAAQ,CAAC,CAAC;EAEtC,oBACEJ,IAAA;IACE;IACA;IACAiB,KAAK,EAAE;MAAEC,aAAa,EAAE;IAAO;IAC/B;IAAA;IACAC,uBAAuB,EACrBd,aAAa,IAAI,IAAI,GAAG;MAAEe,MAAM,EAAEf;IAAc,CAAC,GAAGgB;EACrD,CACF,CAAC;AAEN;AAEA,eAAepB,IAAI","ignoreList":[]}
1
+ {"version":3,"file":"Code.js","names":["React","useEffect","useState","monaco","useTheme","jsx","_jsx","Code","_ref","children","language","colorizedHtml","setColorizedHtml","activeThemes","isCanceled","colorize","_colorize","apply","arguments","_asyncToGenerator","result","editor","toString","style","pointerEvents","dangerouslySetInnerHTML","__html","undefined"],"sources":["../../src/common/Code.tsx"],"sourcesContent":["import React, { useEffect, useState, type ReactNode } from 'react';\nimport * as monaco from 'monaco-editor';\nimport { useTheme } from '@deephaven/components';\n\ninterface CodeProps {\n children: ReactNode;\n language: string;\n}\n\nfunction Code({ children, language }: CodeProps): JSX.Element {\n const [colorizedHtml, setColorizedHtml] = useState<string | null>(null);\n const { activeThemes } = useTheme();\n\n useEffect(() => {\n let isCanceled = false;\n async function colorize() {\n if (children != null && activeThemes != null) {\n const result = await monaco.editor.colorize(\n children.toString(),\n language,\n {}\n );\n if (!isCanceled) {\n setColorizedHtml(result);\n }\n }\n }\n colorize();\n return () => {\n isCanceled = true;\n };\n }, [activeThemes, children, language]);\n\n return (\n <div\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style={{ pointerEvents: 'none' }}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={\n colorizedHtml != null ? { __html: colorizedHtml } : undefined\n }\n />\n );\n}\n\nexport default Code;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAwB,OAAO;AAClE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOjD,SAASC,IAAIA,CAAAC,IAAA,EAAiD;EAAA,IAAhD;IAAEC,QAAQ;IAAEC;EAAoB,CAAC,GAAAF,IAAA;EAC7C,IAAM,CAACG,aAAa,EAAEC,gBAAgB,CAAC,GAAGV,QAAQ,CAAgB,IAAI,CAAC;EACvE,IAAM;IAAEW;EAAa,CAAC,GAAGT,QAAQ,CAAC,CAAC;EAEnCH,SAAS,CAAC,MAAM;IACd,IAAIa,UAAU,GAAG,KAAK;IAAC,SACRC,QAAQA,CAAA;MAAA,OAAAC,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,UAAA;MAAAA,SAAA,GAAAG,iBAAA,CAAvB,aAA0B;QACxB,IAAIV,QAAQ,IAAI,IAAI,IAAII,YAAY,IAAI,IAAI,EAAE;UAC5C,IAAMO,MAAM,SAASjB,MAAM,CAACkB,MAAM,CAACN,QAAQ,CACzCN,QAAQ,CAACa,QAAQ,CAAC,CAAC,EACnBZ,QAAQ,EACR,CAAC,CACH,CAAC;UACD,IAAI,CAACI,UAAU,EAAE;YACfF,gBAAgB,CAACQ,MAAM,CAAC;UAC1B;QACF;MACF,CAAC;MAAA,OAAAJ,SAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,QAAQ,CAAC,CAAC;IACV,OAAO,MAAM;MACXD,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EAAE,CAACD,YAAY,EAAEJ,QAAQ,EAAEC,QAAQ,CAAC,CAAC;EAEtC,oBACEJ,IAAA;IACE;IACA;IACAiB,KAAK,EAAE;MAAEC,aAAa,EAAE;IAAO;IAC/B;IAAA;IACAC,uBAAuB,EACrBd,aAAa,IAAI,IAAI,GAAG;MAAEe,MAAM,EAAEf;IAAc,CAAC,GAAGgB;EACrD,CACF,CAAC;AAEN;AAEA,eAAepB,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleConstants.js","names":["ConsoleConstants","LANGUAGE_MAP","Map"],"sources":["../../src/common/ConsoleConstants.ts"],"sourcesContent":["class ConsoleConstants {\n /**\n * Map of language keys to their display names\n */\n static get LANGUAGE_MAP(): Map<string, string> {\n return new Map([\n ['python', 'Python'],\n ['groovy', 'Groovy'],\n ['scala', 'Scala'],\n ]);\n }\n}\n\nexport default ConsoleConstants;\n"],"mappings":"AAAA,MAAMA,gBAAgB,CAAC;EACrB;AACF;AACA;EACE,WAAWC,YAAYA,CAAA,EAAwB;IAC7C,OAAO,IAAIC,GAAG,CAAC,CACb,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;EACJ;AACF;AAEA,eAAeF,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"ConsoleConstants.js","names":["ConsoleConstants","LANGUAGE_MAP","Map"],"sources":["../../src/common/ConsoleConstants.ts"],"sourcesContent":["class ConsoleConstants {\n /**\n * Map of language keys to their display names\n */\n static get LANGUAGE_MAP(): Map<string, string> {\n return new Map([\n ['python', 'Python'],\n ['groovy', 'Groovy'],\n ['scala', 'Scala'],\n ]);\n }\n}\n\nexport default ConsoleConstants;\n"],"mappings":"AAAA,MAAMA,gBAAgB,CAAC;EACrB;AACF;AACA;EACE,WAAWC,YAAYA,CAAA,EAAwB;IAC7C,OAAO,IAAIC,GAAG,CAAC,CACb,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;EACJ;AACF;AAEA,eAAeF,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","concat","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","dh","type","VariableType","TABLE","TREETABLE","HIERARCHICALTABLE","PARTITIONEDTABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"sources":["../../src/common/ConsoleUtils.ts"],"sourcesContent":["import ShellQuote, { type ParseEntry, type ControlOperator } from 'shell-quote';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (str == null || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (date == null || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(dh: typeof DhType, type: string): boolean {\n return (\n type === dh.VariableType.TABLE ||\n type === dh.VariableType.TREETABLE ||\n type === dh.VariableType.HIERARCHICALTABLE ||\n type === dh.VariableType.PARTITIONEDTABLE\n );\n }\n\n static isWidgetType(dh: typeof DhType, type: string): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(dh: typeof DhType, type: string): boolean {\n return (\n ConsoleUtils.isTableType(dh, type) || ConsoleUtils.isWidgetType(dh, type)\n );\n }\n\n static isFigureType(dh: typeof DhType, type: string): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(dh: typeof DhType, type: string): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","concat","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","dh","type","VariableType","TABLE","TREETABLE","HIERARCHICALTABLE","PARTITIONEDTABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"sources":["../../src/common/ConsoleUtils.ts"],"sourcesContent":["import ShellQuote, { type ParseEntry, type ControlOperator } from 'shell-quote';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (str == null || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (date == null || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(dh: typeof DhType, type: string): boolean {\n return (\n type === dh.VariableType.TABLE ||\n type === dh.VariableType.TREETABLE ||\n type === dh.VariableType.HIERARCHICALTABLE ||\n type === dh.VariableType.PARTITIONEDTABLE\n );\n }\n\n static isWidgetType(dh: typeof DhType, type: string): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(dh: typeof DhType, type: string): boolean {\n return (\n ConsoleUtils.isTableType(dh, type) || ConsoleUtils.isWidgetType(dh, type)\n );\n }\n\n static isFigureType(dh: typeof DhType, type: string): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(dh: typeof DhType, type: string): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectIcon.js","names":["React","FontAwesomeIcon","dhPandas","dhTable","vsGraph","vsPreview","useApi","jsx","_jsx","ObjectIcon","_ref","type","dh","VariableType","TABLE","TABLEMAP","TREETABLE","HIERARCHICALTABLE","PARTITIONEDTABLE","icon","FIGURE","PANDAS"],"sources":["../../src/common/ObjectIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\n\nexport type ObjectIconProps = {\n type: string;\n};\n\nfunction ObjectIcon({ type }: ObjectIconProps): JSX.Element {\n const dh = useApi();\n switch (type) {\n case dh.VariableType.TABLE:\n case dh.VariableType.TABLEMAP:\n case dh.VariableType.TREETABLE:\n case dh.VariableType.HIERARCHICALTABLE:\n case dh.VariableType.PARTITIONEDTABLE:\n return <FontAwesomeIcon icon={dhTable} />;\n case dh.VariableType.FIGURE:\n return <FontAwesomeIcon icon={vsGraph} />;\n case dh.VariableType.PANDAS:\n return <FontAwesomeIcon icon={dhPandas} />;\n default:\n return <FontAwesomeIcon icon={vsPreview} />;\n }\n}\n\nexport default ObjectIcon;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAEC,SAAS,QAAQ,kBAAkB;AACxE,SAASC,MAAM,QAAQ,4BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMpD,SAASC,UAAUA,CAAAC,IAAA,EAAyC;EAAA,IAAxC;IAAEC;EAAsB,CAAC,GAAAD,IAAA;EAC3C,IAAME,EAAE,GAAGN,MAAM,CAAC,CAAC;EACnB,QAAQK,IAAI;IACV,KAAKC,EAAE,CAACC,YAAY,CAACC,KAAK;IAC1B,KAAKF,EAAE,CAACC,YAAY,CAACE,QAAQ;IAC7B,KAAKH,EAAE,CAACC,YAAY,CAACG,SAAS;IAC9B,KAAKJ,EAAE,CAACC,YAAY,CAACI,iBAAiB;IACtC,KAAKL,EAAE,CAACC,YAAY,CAACK,gBAAgB;MACnC,oBAAOV,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEhB;MAAQ,CAAE,CAAC;IAC3C,KAAKS,EAAE,CAACC,YAAY,CAACO,MAAM;MACzB,oBAAOZ,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEf;MAAQ,CAAE,CAAC;IAC3C,KAAKQ,EAAE,CAACC,YAAY,CAACQ,MAAM;MACzB,oBAAOb,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEjB;MAAS,CAAE,CAAC;IAC5C;MACE,oBAAOM,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEd;MAAU,CAAE,CAAC;EAC/C;AACF;AAEA,eAAeI,UAAU","ignoreList":[]}
1
+ {"version":3,"file":"ObjectIcon.js","names":["React","FontAwesomeIcon","dhPandas","dhTable","vsGraph","vsPreview","useApi","jsx","_jsx","ObjectIcon","_ref","type","dh","VariableType","TABLE","TABLEMAP","TREETABLE","HIERARCHICALTABLE","PARTITIONEDTABLE","icon","FIGURE","PANDAS"],"sources":["../../src/common/ObjectIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\n\nexport type ObjectIconProps = {\n type: string;\n};\n\nfunction ObjectIcon({ type }: ObjectIconProps): JSX.Element {\n const dh = useApi();\n switch (type) {\n case dh.VariableType.TABLE:\n case dh.VariableType.TABLEMAP:\n case dh.VariableType.TREETABLE:\n case dh.VariableType.HIERARCHICALTABLE:\n case dh.VariableType.PARTITIONEDTABLE:\n return <FontAwesomeIcon icon={dhTable} />;\n case dh.VariableType.FIGURE:\n return <FontAwesomeIcon icon={vsGraph} />;\n case dh.VariableType.PANDAS:\n return <FontAwesomeIcon icon={dhPandas} />;\n default:\n return <FontAwesomeIcon icon={vsPreview} />;\n }\n}\n\nexport default ObjectIcon;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAEC,SAAS,QAAQ,kBAAkB;AACxE,SAASC,MAAM,QAAQ,4BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMpD,SAASC,UAAUA,CAAAC,IAAA,EAAyC;EAAA,IAAxC;IAAEC;EAAsB,CAAC,GAAAD,IAAA;EAC3C,IAAME,EAAE,GAAGN,MAAM,CAAC,CAAC;EACnB,QAAQK,IAAI;IACV,KAAKC,EAAE,CAACC,YAAY,CAACC,KAAK;IAC1B,KAAKF,EAAE,CAACC,YAAY,CAACE,QAAQ;IAC7B,KAAKH,EAAE,CAACC,YAAY,CAACG,SAAS;IAC9B,KAAKJ,EAAE,CAACC,YAAY,CAACI,iBAAiB;IACtC,KAAKL,EAAE,CAACC,YAAY,CAACK,gBAAgB;MACnC,oBAAOV,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEhB;MAAQ,CAAE,CAAC;IAC3C,KAAKS,EAAE,CAACC,YAAY,CAACO,MAAM;MACzB,oBAAOZ,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEf;MAAQ,CAAE,CAAC;IAC3C,KAAKQ,EAAE,CAACC,YAAY,CAACQ,MAAM;MACzB,oBAAOb,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEjB;MAAS,CAAE,CAAC;IAC5C;MACE,oBAAOM,IAAA,CAACP,eAAe;QAACkB,IAAI,EAAEd;MAAU,CAAE,CAAC;EAC/C;AACF;AAEA,eAAeI,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ObjectIcon","Code","ConsoleConstants","ConsoleUtils"],"sources":["../../src/common/index.ts"],"sourcesContent":["export { default as ObjectIcon } from './ObjectIcon';\nexport { default as Code } from './Code';\nexport { default as ConsoleConstants } from './ConsoleConstants';\nexport { default as ConsoleUtils } from './ConsoleUtils';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,IAAI;AAAA,SACfF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","ObjectIcon","Code","ConsoleConstants","ConsoleUtils"],"sources":["../../src/common/index.ts"],"sourcesContent":["export { default as ObjectIcon } from './ObjectIcon';\nexport { default as Code } from './Code';\nexport { default as ConsoleConstants } from './ConsoleConstants';\nexport { default as ConsoleUtils } from './ConsoleUtils';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,IAAI;AAAA,SACfF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleHistory.js","names":["React","ConsoleHistoryItem","jsx","_jsx","itemKey","i","item","concat","command","result","message","error","ConsoleHistory","forwardRef","props","ref","disabled","items","language","openObject","supportsType","iconForType","historyElements","length","historyElement","push","className","children"],"sources":["../../src/console-history/ConsoleHistory.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { type ReactElement } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport ConsoleHistoryItem from './ConsoleHistoryItem';\n\nimport './ConsoleHistory.scss';\nimport { type ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\ninterface ConsoleHistoryProps {\n items: ConsoleHistoryActionItem[];\n language: string;\n openObject: (object: dh.ide.VariableDefinition) => void;\n disabled?: boolean;\n supportsType: (type: string) => boolean;\n iconForType: (type: string) => ReactElement;\n}\n\nfunction itemKey(i: number, item: ConsoleHistoryActionItem): string {\n return `${i}.${item.command}.${item.result && item.result.message}.${\n item.result && item.result.error\n }`;\n}\n\n/**\n * Display the console history.\n */\nconst ConsoleHistory = React.forwardRef(function ConsoleHistory(\n props: ConsoleHistoryProps,\n ref: React.Ref<HTMLDivElement>\n): ReactElement {\n const {\n disabled = false,\n items,\n language,\n openObject,\n supportsType,\n iconForType,\n } = props;\n const historyElements = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const historyElement = (\n <ConsoleHistoryItem\n key={itemKey(i, item)}\n disabled={disabled}\n item={item}\n openObject={openObject}\n language={language}\n supportsType={supportsType}\n iconForType={iconForType}\n />\n );\n historyElements.push(historyElement);\n }\n\n return (\n <div ref={ref} className=\"container-fluid console-history\">\n {historyElements}\n </div>\n );\n});\n\nexport default ConsoleHistory;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAA6B,OAAO;AAAC,OAE1CC,kBAAkB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAczB,SAASC,OAAOA,CAACC,CAAS,EAAEC,IAA8B,EAAU;EAClE,UAAAC,MAAA,CAAUF,CAAC,OAAAE,MAAA,CAAID,IAAI,CAACE,OAAO,OAAAD,MAAA,CAAID,IAAI,CAACG,MAAM,IAAIH,IAAI,CAACG,MAAM,CAACC,OAAO,OAAAH,MAAA,CAC/DD,IAAI,CAACG,MAAM,IAAIH,IAAI,CAACG,MAAM,CAACE,KAAK;AAEpC;;AAEA;AACA;AACA;AACA,IAAMC,cAAc,gBAAGZ,KAAK,CAACa,UAAU,CAAC,SAASD,cAAcA,CAC7DE,KAA0B,EAC1BC,GAA8B,EAChB;EACd,IAAM;IACJC,QAAQ,GAAG,KAAK;IAChBC,KAAK;IACLC,QAAQ;IACRC,UAAU;IACVC,YAAY;IACZC;EACF,CAAC,GAAGP,KAAK;EACT,IAAMQ,eAAe,GAAG,EAAE;EAC1B,KAAK,IAAIjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGY,KAAK,CAACM,MAAM,EAAElB,CAAC,IAAI,CAAC,EAAE;IACxC,IAAMC,IAAI,GAAGW,KAAK,CAACZ,CAAC,CAAC;IACrB,IAAMmB,cAAc,gBAClBrB,IAAA,CAACF,kBAAkB;MAEjBe,QAAQ,EAAEA,QAAS;MACnBV,IAAI,EAAEA,IAAK;MACXa,UAAU,EAAEA,UAAW;MACvBD,QAAQ,EAAEA,QAAS;MACnBE,YAAY,EAAEA,YAAa;MAC3BC,WAAW,EAAEA;IAAY,GANpBjB,OAAO,CAACC,CAAC,EAAEC,IAAI,CAOrB,CACF;IACDgB,eAAe,CAACG,IAAI,CAACD,cAAc,CAAC;EACtC;EAEA,oBACErB,IAAA;IAAKY,GAAG,EAAEA,GAAI;IAACW,SAAS,EAAC,iCAAiC;IAAAC,QAAA,EACvDL;EAAe,CACb,CAAC;AAEV,CAAC,CAAC;AAEF,eAAeV,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"ConsoleHistory.js","names":["React","ConsoleHistoryItem","jsx","_jsx","itemKey","i","item","concat","command","result","message","error","ConsoleHistory","forwardRef","props","ref","disabled","items","language","openObject","supportsType","iconForType","historyElements","length","historyElement","push","className","children"],"sources":["../../src/console-history/ConsoleHistory.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { type ReactElement } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport ConsoleHistoryItem from './ConsoleHistoryItem';\n\nimport './ConsoleHistory.scss';\nimport { type ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\ninterface ConsoleHistoryProps {\n items: ConsoleHistoryActionItem[];\n language: string;\n openObject: (object: dh.ide.VariableDefinition) => void;\n disabled?: boolean;\n supportsType: (type: string) => boolean;\n iconForType: (type: string) => ReactElement;\n}\n\nfunction itemKey(i: number, item: ConsoleHistoryActionItem): string {\n return `${i}.${item.command}.${item.result && item.result.message}.${\n item.result && item.result.error\n }`;\n}\n\n/**\n * Display the console history.\n */\nconst ConsoleHistory = React.forwardRef(function ConsoleHistory(\n props: ConsoleHistoryProps,\n ref: React.Ref<HTMLDivElement>\n): ReactElement {\n const {\n disabled = false,\n items,\n language,\n openObject,\n supportsType,\n iconForType,\n } = props;\n const historyElements = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const historyElement = (\n <ConsoleHistoryItem\n key={itemKey(i, item)}\n disabled={disabled}\n item={item}\n openObject={openObject}\n language={language}\n supportsType={supportsType}\n iconForType={iconForType}\n />\n );\n historyElements.push(historyElement);\n }\n\n return (\n <div ref={ref} className=\"container-fluid console-history\">\n {historyElements}\n </div>\n );\n});\n\nexport default ConsoleHistory;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAA6B,OAAO;AAAC,OAE1CC,kBAAkB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAczB,SAASC,OAAOA,CAACC,CAAS,EAAEC,IAA8B,EAAU;EAClE,UAAAC,MAAA,CAAUF,CAAC,OAAAE,MAAA,CAAID,IAAI,CAACE,OAAO,OAAAD,MAAA,CAAID,IAAI,CAACG,MAAM,IAAIH,IAAI,CAACG,MAAM,CAACC,OAAO,OAAAH,MAAA,CAC/DD,IAAI,CAACG,MAAM,IAAIH,IAAI,CAACG,MAAM,CAACE,KAAK;AAEpC;;AAEA;AACA;AACA;AACA,IAAMC,cAAc,gBAAGZ,KAAK,CAACa,UAAU,CAAC,SAASD,cAAcA,CAC7DE,KAA0B,EAC1BC,GAA8B,EAChB;EACd,IAAM;IACJC,QAAQ,GAAG,KAAK;IAChBC,KAAK;IACLC,QAAQ;IACRC,UAAU;IACVC,YAAY;IACZC;EACF,CAAC,GAAGP,KAAK;EACT,IAAMQ,eAAe,GAAG,EAAE;EAC1B,KAAK,IAAIjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGY,KAAK,CAACM,MAAM,EAAElB,CAAC,IAAI,CAAC,EAAE;IACxC,IAAMC,IAAI,GAAGW,KAAK,CAACZ,CAAC,CAAC;IACrB,IAAMmB,cAAc,gBAClBrB,IAAA,CAACF,kBAAkB;MAEjBe,QAAQ,EAAEA,QAAS;MACnBV,IAAI,EAAEA,IAAK;MACXa,UAAU,EAAEA,UAAW;MACvBD,QAAQ,EAAEA,QAAS;MACnBE,YAAY,EAAEA,YAAa;MAC3BC,WAAW,EAAEA;IAAY,GANpBjB,OAAO,CAACC,CAAC,EAAEC,IAAI,CAOrB,CACF;IACDgB,eAAe,CAACG,IAAI,CAACD,cAAc,CAAC;EACtC;EAEA,oBACErB,IAAA;IAAKY,GAAG,EAAEA,GAAI;IAACW,SAAS,EAAC,iCAAiC;IAAAC,QAAA,EACvDL;EAAe,CACb,CAAC;AAEV,CAAC,CAAC;AAEF,eAAeV,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleHistoryItem.js","names":["React","PureComponent","Button","Log","classNames","Code","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","jsx","_jsx","jsxs","_jsxs","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","concat","command","render","disabled","language","iconForType","disabledObjects","result","hasCommand","commandElement","className","children","resultElements","hasButtons","error","message","changes","created","updated","forEach","title","key","btnDisabled","undefined","indexOf","element","kind","onClick","icon","type","push","_message","errorMessage","onCancelClick","resultElement","length","_defineProperty"],"sources":["../../src/console-history/ConsoleHistoryItem.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent, type ReactElement } from 'react';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport classNames from 'classnames';\nimport { Code } from '../common';\nimport ConsoleHistoryItemResult from './ConsoleHistoryItemResult';\nimport ConsoleHistoryResultInProgress from './ConsoleHistoryResultInProgress';\nimport ConsoleHistoryResultErrorMessage from './ConsoleHistoryResultErrorMessage';\nimport './ConsoleHistoryItem.scss';\nimport { type ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\nconst log = Log.module('ConsoleHistoryItem');\n\ninterface ConsoleHistoryItemProps {\n item: ConsoleHistoryActionItem;\n language: string;\n openObject: (object: dh.ide.VariableDefinition) => void;\n disabled?: boolean;\n // TODO: #1573 Remove this eslint disable\n // eslint-disable-next-line react/no-unused-prop-types\n supportsType: (type: string) => boolean;\n iconForType: (type: string) => ReactElement;\n}\n\nclass ConsoleHistoryItem extends PureComponent<\n ConsoleHistoryItemProps,\n Record<string, never>\n> {\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props: ConsoleHistoryItemProps) {\n super(props);\n\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n\n handleObjectClick(object: dh.ide.VariableDefinition): void {\n log.debug('handleObjectClick', object);\n\n const { openObject } = this.props;\n openObject(object);\n }\n\n handleCancelClick(): void {\n const { item } = this.props;\n if (item != null && item.cancelResult) {\n log.debug(`Cancelling command: ${item.command}`);\n item.cancelResult();\n }\n }\n\n render(): ReactElement {\n const { disabled, item, language, iconForType } = this.props;\n const { disabledObjects, result } = item;\n const hasCommand = item.command != null && item.command !== '';\n\n let commandElement = null;\n if (hasCommand) {\n commandElement = (\n <div className=\"console-history-item-command\">\n <div className=\"console-history-gutter\">&gt;</div>\n <div className=\"console-history-content\">\n <Code language={language}>{item.command}</Code>\n </div>\n </div>\n );\n }\n\n const resultElements = [];\n let hasButtons = false;\n\n if (result) {\n const { error, message, changes } = result;\n\n if (changes) {\n const { created, updated } = changes;\n // TODO: #1573 filter for supported types or change button kind\n // based on if type is supported. Possibly a warn state for widgets\n // that the UI doesn't have anything registered to support.\n [...created, ...updated].forEach(object => {\n hasButtons = true;\n const { title } = object;\n const key = `${title}`;\n const btnDisabled =\n disabled === undefined ||\n disabled ||\n (disabledObjects ?? []).indexOf(key) >= 0;\n const element = (\n <Button\n key={key}\n kind=\"primary\"\n onClick={() => this.handleObjectClick(object)}\n className=\"btn-console-object\"\n disabled={btnDisabled}\n icon={iconForType(object.type)}\n >\n {title}\n </Button>\n );\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error != null && !hasCommand) {\n let errorMessage = `${(error as { message: string }).message ?? error}`;\n if (!errorMessage) {\n errorMessage = error as string;\n }\n const element = (\n <ConsoleHistoryResultErrorMessage\n key=\"result-error\"\n message={errorMessage}\n />\n );\n resultElements.push(element);\n }\n\n if (message !== undefined && message !== '') {\n const element = (\n <div key=\"log-message\" className=\"log-message\">\n {message}\n </div>\n );\n resultElements.push(element);\n }\n } else {\n hasButtons = true;\n const element = (\n <ConsoleHistoryResultInProgress\n key=\"in_progress\"\n onCancelClick={this.handleCancelClick}\n disabled={disabled}\n />\n );\n resultElements.push(element);\n }\n\n let resultElement = null;\n if (resultElements.length > 0) {\n resultElement = (\n <ConsoleHistoryItemResult>{resultElements}</ConsoleHistoryItemResult>\n );\n }\n\n return (\n <div\n className={classNames('console-command-result', {\n 'console-result-buttons': hasButtons,\n })}\n >\n {commandElement}\n {resultElement}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryItem;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConsoleHistoryItem.js","names":["React","PureComponent","Button","Log","classNames","Code","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","jsx","_jsx","jsxs","_jsxs","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","concat","command","render","disabled","language","iconForType","disabledObjects","result","hasCommand","commandElement","className","children","resultElements","hasButtons","error","message","changes","created","updated","forEach","title","key","btnDisabled","undefined","indexOf","element","kind","onClick","icon","type","push","_message","errorMessage","onCancelClick","resultElement","length","_defineProperty"],"sources":["../../src/console-history/ConsoleHistoryItem.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent, type ReactElement } from 'react';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport classNames from 'classnames';\nimport { Code } from '../common';\nimport ConsoleHistoryItemResult from './ConsoleHistoryItemResult';\nimport ConsoleHistoryResultInProgress from './ConsoleHistoryResultInProgress';\nimport ConsoleHistoryResultErrorMessage from './ConsoleHistoryResultErrorMessage';\nimport './ConsoleHistoryItem.scss';\nimport { type ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\nconst log = Log.module('ConsoleHistoryItem');\n\ninterface ConsoleHistoryItemProps {\n item: ConsoleHistoryActionItem;\n language: string;\n openObject: (object: dh.ide.VariableDefinition) => void;\n disabled?: boolean;\n // TODO: #1573 Remove this eslint disable\n // eslint-disable-next-line react/no-unused-prop-types\n supportsType: (type: string) => boolean;\n iconForType: (type: string) => ReactElement;\n}\n\nclass ConsoleHistoryItem extends PureComponent<\n ConsoleHistoryItemProps,\n Record<string, never>\n> {\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props: ConsoleHistoryItemProps) {\n super(props);\n\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n\n handleObjectClick(object: dh.ide.VariableDefinition): void {\n log.debug('handleObjectClick', object);\n\n const { openObject } = this.props;\n openObject(object);\n }\n\n handleCancelClick(): void {\n const { item } = this.props;\n if (item != null && item.cancelResult) {\n log.debug(`Cancelling command: ${item.command}`);\n item.cancelResult();\n }\n }\n\n render(): ReactElement {\n const { disabled, item, language, iconForType } = this.props;\n const { disabledObjects, result } = item;\n const hasCommand = item.command != null && item.command !== '';\n\n let commandElement = null;\n if (hasCommand) {\n commandElement = (\n <div className=\"console-history-item-command\">\n <div className=\"console-history-gutter\">&gt;</div>\n <div className=\"console-history-content\">\n <Code language={language}>{item.command}</Code>\n </div>\n </div>\n );\n }\n\n const resultElements = [];\n let hasButtons = false;\n\n if (result) {\n const { error, message, changes } = result;\n\n if (changes) {\n const { created, updated } = changes;\n // TODO: #1573 filter for supported types or change button kind\n // based on if type is supported. Possibly a warn state for widgets\n // that the UI doesn't have anything registered to support.\n [...created, ...updated].forEach(object => {\n hasButtons = true;\n const { title } = object;\n const key = `${title}`;\n const btnDisabled =\n disabled === undefined ||\n disabled ||\n (disabledObjects ?? []).indexOf(key) >= 0;\n const element = (\n <Button\n key={key}\n kind=\"primary\"\n onClick={() => this.handleObjectClick(object)}\n className=\"btn-console-object\"\n disabled={btnDisabled}\n icon={iconForType(object.type)}\n >\n {title}\n </Button>\n );\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error != null && !hasCommand) {\n let errorMessage = `${(error as { message: string }).message ?? error}`;\n if (!errorMessage) {\n errorMessage = error as string;\n }\n const element = (\n <ConsoleHistoryResultErrorMessage\n key=\"result-error\"\n message={errorMessage}\n />\n );\n resultElements.push(element);\n }\n\n if (message !== undefined && message !== '') {\n const element = (\n <div key=\"log-message\" className=\"log-message\">\n {message}\n </div>\n );\n resultElements.push(element);\n }\n } else {\n hasButtons = true;\n const element = (\n <ConsoleHistoryResultInProgress\n key=\"in_progress\"\n onCancelClick={this.handleCancelClick}\n disabled={disabled}\n />\n );\n resultElements.push(element);\n }\n\n let resultElement = null;\n if (resultElements.length > 0) {\n resultElement = (\n <ConsoleHistoryItemResult>{resultElements}</ConsoleHistoryItemResult>\n );\n }\n\n return (\n <div\n className={classNames('console-command-result', {\n 'console-result-buttons': hasButtons,\n })}\n >\n {commandElement}\n {resultElement}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryItem;\n"],"mappings":"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"}