@deephaven/console 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/Console.css +44 -0
  2. package/dist/Console.css.map +1 -0
  3. package/dist/Console.js +875 -0
  4. package/dist/Console.js.map +1 -0
  5. package/dist/ConsoleInput.css +42 -0
  6. package/dist/ConsoleInput.css.map +1 -0
  7. package/dist/ConsoleInput.js +442 -0
  8. package/dist/ConsoleInput.js.map +1 -0
  9. package/dist/ConsoleMenu.css +25 -0
  10. package/dist/ConsoleMenu.css.map +1 -0
  11. package/dist/ConsoleMenu.js +192 -0
  12. package/dist/ConsoleMenu.js.map +1 -0
  13. package/dist/ConsolePropTypes.js +10 -0
  14. package/dist/ConsolePropTypes.js.map +1 -0
  15. package/dist/ConsoleShortcuts.js +85 -0
  16. package/dist/ConsoleShortcuts.js.map +1 -0
  17. package/dist/ConsoleStatusBar.css +52 -0
  18. package/dist/ConsoleStatusBar.css.map +1 -0
  19. package/dist/ConsoleStatusBar.js +105 -0
  20. package/dist/ConsoleStatusBar.js.map +1 -0
  21. package/dist/HeapUsage.css +61 -0
  22. package/dist/HeapUsage.css.map +1 -0
  23. package/dist/HeapUsage.js +168 -0
  24. package/dist/HeapUsage.js.map +1 -0
  25. package/dist/StoragePropTypes.js +16 -0
  26. package/dist/StoragePropTypes.js.map +1 -0
  27. package/dist/command-history/CommandHistory.css +41 -0
  28. package/dist/command-history/CommandHistory.css.map +1 -0
  29. package/dist/command-history/CommandHistory.js +381 -0
  30. package/dist/command-history/CommandHistory.js.map +1 -0
  31. package/dist/command-history/CommandHistoryActions.css +10 -0
  32. package/dist/command-history/CommandHistoryActions.css.map +1 -0
  33. package/dist/command-history/CommandHistoryActions.js +47 -0
  34. package/dist/command-history/CommandHistoryActions.js.map +1 -0
  35. package/dist/command-history/CommandHistoryItem.css +61 -0
  36. package/dist/command-history/CommandHistoryItem.css.map +1 -0
  37. package/dist/command-history/CommandHistoryItem.js +50 -0
  38. package/dist/command-history/CommandHistoryItem.js.map +1 -0
  39. package/dist/command-history/CommandHistoryItemTooltip.css +37 -0
  40. package/dist/command-history/CommandHistoryItemTooltip.css.map +1 -0
  41. package/dist/command-history/CommandHistoryItemTooltip.js +159 -0
  42. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -0
  43. package/dist/command-history/CommandHistoryStorage.js +2 -0
  44. package/dist/command-history/CommandHistoryStorage.js.map +1 -0
  45. package/dist/command-history/CommandHistoryTypes.js +2 -0
  46. package/dist/command-history/CommandHistoryTypes.js.map +1 -0
  47. package/dist/command-history/CommandHistoryViewportUpdater.js +57 -0
  48. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -0
  49. package/dist/command-history/index.js +7 -0
  50. package/dist/command-history/index.js.map +1 -0
  51. package/dist/common/Code.js +45 -0
  52. package/dist/common/Code.js.map +1 -0
  53. package/dist/common/ConsoleConstants.js +10 -0
  54. package/dist/common/ConsoleConstants.js.map +1 -0
  55. package/dist/common/ConsoleUtils.js +62 -0
  56. package/dist/common/ConsoleUtils.js.map +1 -0
  57. package/dist/common/ObjectIcon.js +33 -0
  58. package/dist/common/ObjectIcon.js.map +1 -0
  59. package/dist/common/index.js +5 -0
  60. package/dist/common/index.js.map +1 -0
  61. package/dist/console-history/ConsoleHistory.css +42 -0
  62. package/dist/console-history/ConsoleHistory.css.map +1 -0
  63. package/dist/console-history/ConsoleHistory.js +42 -0
  64. package/dist/console-history/ConsoleHistory.js.map +1 -0
  65. package/dist/console-history/ConsoleHistoryItem.css +87 -0
  66. package/dist/console-history/ConsoleHistoryItem.css.map +1 -0
  67. package/dist/console-history/ConsoleHistoryItem.js +139 -0
  68. package/dist/console-history/ConsoleHistoryItem.js.map +1 -0
  69. package/dist/console-history/ConsoleHistoryItemResult.js +22 -0
  70. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -0
  71. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +142 -0
  72. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -0
  73. package/dist/console-history/ConsoleHistoryResultInProgress.css +27 -0
  74. package/dist/console-history/ConsoleHistoryResultInProgress.css.map +1 -0
  75. package/dist/console-history/ConsoleHistoryResultInProgress.js +66 -0
  76. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -0
  77. package/dist/console-history/ConsoleHistoryTypes.js +2 -0
  78. package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
  79. package/dist/console-history/index.js +6 -0
  80. package/dist/console-history/index.js.map +1 -0
  81. package/dist/csv/CsvFormats.js +134 -0
  82. package/dist/csv/CsvFormats.js.map +1 -0
  83. package/dist/csv/CsvInputBar.css +36 -0
  84. package/dist/csv/CsvInputBar.css.map +1 -0
  85. package/dist/csv/CsvInputBar.js +342 -0
  86. package/dist/csv/CsvInputBar.js.map +1 -0
  87. package/dist/csv/CsvOverlay.css +57 -0
  88. package/dist/csv/CsvOverlay.css.map +1 -0
  89. package/dist/csv/CsvOverlay.js +244 -0
  90. package/dist/csv/CsvOverlay.js.map +1 -0
  91. package/dist/csv/CsvParser.js +268 -0
  92. package/dist/csv/CsvParser.js.map +1 -0
  93. package/dist/csv/CsvTypeParser.js +235 -0
  94. package/dist/csv/CsvTypeParser.js.map +1 -0
  95. package/dist/csv/NewTableColumnTypes.js +16 -0
  96. package/dist/csv/NewTableColumnTypes.js.map +1 -0
  97. package/dist/declaration.d.js +2 -0
  98. package/dist/declaration.d.js.map +1 -0
  99. package/dist/index.js +18 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/log/LogLevel.js +11 -0
  102. package/dist/log/LogLevel.js.map +1 -0
  103. package/dist/log/LogLevelMenuItem.css +38 -0
  104. package/dist/log/LogLevelMenuItem.css.map +1 -0
  105. package/dist/log/LogLevelMenuItem.js +32 -0
  106. package/dist/log/LogLevelMenuItem.js.map +1 -0
  107. package/dist/log/LogView.css +65 -0
  108. package/dist/log/LogView.css.map +1 -0
  109. package/dist/log/LogView.js +487 -0
  110. package/dist/log/LogView.js.map +1 -0
  111. package/dist/monaco/MonacoProviders.js +314 -0
  112. package/dist/monaco/MonacoProviders.js.map +1 -0
  113. package/dist/monaco/MonacoTheme.module.css +54 -0
  114. package/dist/monaco/MonacoTheme.module.css.map +1 -0
  115. package/dist/monaco/MonacoUtils.js +423 -0
  116. package/dist/monaco/MonacoUtils.js.map +1 -0
  117. package/dist/monaco/index.js +4 -0
  118. package/dist/monaco/index.js.map +1 -0
  119. package/dist/monaco/lang/Language.js +2 -0
  120. package/dist/monaco/lang/Language.js.map +1 -0
  121. package/dist/monaco/lang/db.js +152 -0
  122. package/dist/monaco/lang/db.js.map +1 -0
  123. package/dist/monaco/lang/groovy.js +229 -0
  124. package/dist/monaco/lang/groovy.js.map +1 -0
  125. package/dist/monaco/lang/log.js +64 -0
  126. package/dist/monaco/lang/log.js.map +1 -0
  127. package/dist/monaco/lang/python.js +234 -0
  128. package/dist/monaco/lang/python.js.map +1 -0
  129. package/dist/monaco/lang/scala.js +264 -0
  130. package/dist/monaco/lang/scala.js.map +1 -0
  131. package/dist/notebook/Editor.css +6 -0
  132. package/dist/notebook/Editor.css.map +1 -0
  133. package/dist/notebook/Editor.js +130 -0
  134. package/dist/notebook/Editor.js.map +1 -0
  135. package/dist/notebook/ScriptEditor.css +8 -0
  136. package/dist/notebook/ScriptEditor.css.map +1 -0
  137. package/dist/notebook/ScriptEditor.d.ts.map +1 -1
  138. package/dist/notebook/ScriptEditor.js +311 -0
  139. package/dist/notebook/ScriptEditor.js.map +1 -0
  140. package/dist/notebook/ScriptEditorUtils.d.ts +7 -0
  141. package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
  142. package/dist/notebook/ScriptEditorUtils.js +52 -0
  143. package/dist/notebook/ScriptEditorUtils.js.map +1 -0
  144. package/package.json +12 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHistoryItem.js","names":["React","useRef","useCallback","classNames","Tooltip","CommandHistoryItemTooltip","MAX_TRUNCATE_LENGTH","CommandHistoryItem","props","item","language","isSelected","commandHistoryStorage","previewText","name","substring","tooltip","handleUpdate","current","update","selected","placement","modifiers","preventOverflow","enabled","boundariesElement","order","defaultProps"],"sources":["../../src/command-history/CommandHistoryItem.tsx"],"sourcesContent":["import React, { useRef, useCallback, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\n\nimport './CommandHistoryItem.scss';\nimport CommandHistoryItemTooltip from './CommandHistoryItemTooltip';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemProps {\n item: CommandHistoryStorageItem;\n language: string;\n isSelected?: boolean;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\nconst MAX_TRUNCATE_LENGTH = 512;\n\nfunction CommandHistoryItem(props: CommandHistoryItemProps): ReactElement {\n const { item, language, isSelected, commandHistoryStorage } = props;\n const previewText = item.name.substring(0, MAX_TRUNCATE_LENGTH);\n const tooltip = useRef<Tooltip>(null);\n const handleUpdate = useCallback(() => {\n tooltip.current?.update();\n }, [tooltip]);\n\n return (\n <div\n className={classNames('command-history-item', {\n selected: isSelected,\n })}\n >\n {previewText}\n <Tooltip\n ref={tooltip}\n interactive\n options={{\n placement: 'left',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'viewport',\n order: 825, // modify order so boundary is enforced at end of popper calcs\n },\n },\n }}\n popperClassName=\"command-history-item-popper\"\n >\n <CommandHistoryItemTooltip\n item={item}\n language={language}\n onUpdate={handleUpdate}\n commandHistoryStorage={commandHistoryStorage}\n />\n </Tooltip>\n </div>\n );\n}\n\nCommandHistoryItem.defaultProps = {\n isSelected: false,\n};\n\nexport default CommandHistoryItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,WAAW,QAAsB,OAAO;AAChE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,uBAAuB;AAAC;AAAA,OAGzCC,yBAAyB;AAYhC,IAAMC,mBAAmB,GAAG,GAAG;AAE/B,SAASC,kBAAkB,CAACC,KAA8B,EAAgB;EACxE,IAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,UAAU;IAAEC;EAAsB,CAAC,GAAGJ,KAAK;EACnE,IAAMK,WAAW,GAAGJ,IAAI,CAACK,IAAI,CAACC,SAAS,CAAC,CAAC,EAAET,mBAAmB,CAAC;EAC/D,IAAMU,OAAO,GAAGf,MAAM,CAAU,IAAI,CAAC;EACrC,IAAMgB,YAAY,GAAGf,WAAW,CAAC,MAAM;IAAA;IACrC,oBAAAc,OAAO,CAACE,OAAO,qDAAf,iBAAiBC,MAAM,EAAE;EAC3B,CAAC,EAAE,CAACH,OAAO,CAAC,CAAC;EAEb,oBACE;IACE,SAAS,EAAEb,UAAU,CAAC,sBAAsB,EAAE;MAC5CiB,QAAQ,EAAET;IACZ,CAAC;EAAE,GAEFE,WAAW,eACZ,oBAAC,OAAO;IACN,GAAG,EAAEG,OAAQ;IACb,WAAW;IACX,OAAO,EAAE;MACPK,SAAS,EAAE,MAAM;MACjBC,SAAS,EAAE;QACTC,eAAe,EAAE;UACfC,OAAO,EAAE,IAAI;UACbC,iBAAiB,EAAE,UAAU;UAC7BC,KAAK,EAAE,GAAG,CAAE;QACd;MACF;IACF,CAAE;;IACF,eAAe,EAAC;EAA6B,gBAE7C,oBAAC,yBAAyB;IACxB,IAAI,EAAEjB,IAAK;IACX,QAAQ,EAAEC,QAAS;IACnB,QAAQ,EAAEO,YAAa;IACvB,qBAAqB,EAAEL;EAAsB,EAC7C,CACM,CACN;AAEV;AAEAL,kBAAkB,CAACoB,YAAY,GAAG;EAChChB,UAAU,EAAE;AACd,CAAC;AAED,eAAeJ,kBAAkB"}
@@ -0,0 +1,37 @@
1
+ /* stylelint-disable scss/at-import-no-partial-leading-underscore */
2
+ .command-history-item-popper {
3
+ padding: 0;
4
+ }
5
+ .command-history-item-popper .popper-content .tooltip-content {
6
+ padding: 0;
7
+ }
8
+ .command-history-item-popper .command-history-item-tooltip {
9
+ display: flex;
10
+ flex-direction: column;
11
+ max-height: 50vh;
12
+ max-width: 50vw;
13
+ text-align: left;
14
+ }
15
+ .command-history-item-popper .command-history-item-tooltip .scroll-container {
16
+ padding: 0.5rem;
17
+ overflow: auto;
18
+ }
19
+ .command-history-item-popper .command-history-item-tooltip .result-info {
20
+ flex-shrink: 0;
21
+ border-top: 1px solid #5b5a5c;
22
+ padding: 0.25rem 0.5rem;
23
+ overflow: auto;
24
+ max-height: 25vh;
25
+ }
26
+ .command-history-item-popper .command-history-item-tooltip .result-info .time-wrapper {
27
+ text-align: right;
28
+ color: #929192;
29
+ }
30
+ .command-history-item-popper .command-history-item-tooltip .result-info .time-wrapper .time-string {
31
+ color: #f0f0ee;
32
+ }
33
+ .command-history-item-popper .command-history-item-tooltip .result-info .error-message {
34
+ color: #f95d84;
35
+ }
36
+
37
+ /*# sourceMappingURL=CommandHistoryItemTooltip.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/command-history/CommandHistoryItemTooltip.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACCA;EACE;;AACA;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE,SCVK;EDWL;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA,OEHG;;AFIH;EACE,OEbO;;AFgBX;EACE,OE3BF","file":"CommandHistoryItemTooltip.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n.command-history-item-popper {\n padding: 0;\n .popper-content .tooltip-content {\n padding: 0;\n }\n .command-history-item-tooltip {\n display: flex;\n flex-direction: column;\n max-height: 50vh;\n max-width: 50vw;\n text-align: left;\n .scroll-container {\n padding: $spacer-2;\n overflow: auto;\n }\n .result-info {\n flex-shrink: 0;\n border-top: 1px solid $gray-500;\n padding: $spacer-1 $spacer-2;\n overflow: auto;\n max-height: 25vh;\n .time-wrapper {\n text-align: right;\n color: $text-muted;\n .time-string {\n color: $foreground;\n }\n }\n .error-message {\n color: $danger;\n }\n }\n }\n}\n","//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size: $ant-size $ant-thickness, $ant-size $ant-thickness,\n $ant-thickness $ant-size, $ant-thickness $ant-size;\n background-position: 0 top, 0 bottom, left 0, right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 0.12;\n$hover-bg-transparency: 0.14;\n$active-bg-transparency: 0.28;\n$exception-transparency: 0.13;\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -0,0 +1,159 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import React, { Component } from 'react';
5
+ import debounce from 'lodash.debounce';
6
+ import memoize from 'memoizee';
7
+ import { LoadingSpinner } from '@deephaven/components';
8
+ import { TimeUtils } from '@deephaven/utils';
9
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
+ import { vsWarning } from '@deephaven/icons';
11
+ import Code from "../common/Code.js";
12
+ import "./CommandHistoryItemTooltip.css";
13
+ var LOAD_DATA_DEBOUNCE = 250;
14
+ var MAX_NUMBER_OF_LINES = 2500;
15
+ export class CommandHistoryItemTooltip extends Component {
16
+ static getTimeString(startTime, endTime) {
17
+ if (startTime == null || endTime === '' || endTime === 0) {
18
+ return null;
19
+ }
20
+ var deltaTime = Math.round((new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000);
21
+ if (deltaTime < 1) return '<1s';
22
+ return TimeUtils.formatElapsedTime(deltaTime);
23
+ }
24
+ constructor(props) {
25
+ super(props);
26
+ _defineProperty(this, "timer", void 0);
27
+ _defineProperty(this, "cleanup", void 0);
28
+ _defineProperty(this, "loadData", debounce(() => {
29
+ var {
30
+ commandHistoryStorage,
31
+ item,
32
+ language
33
+ } = this.props;
34
+ var {
35
+ id
36
+ } = item;
37
+ this.cleanup = commandHistoryStorage.listenItem(language, id, this.handleUpdate, this.handleError);
38
+ }, LOAD_DATA_DEBOUNCE));
39
+ _defineProperty(this, "getPreviewText", memoize(name => name.split('\n', MAX_NUMBER_OF_LINES).join('\n'), {
40
+ max: 1
41
+ }));
42
+ this.handleUpdate = this.handleUpdate.bind(this);
43
+ this.handleError = this.handleError.bind(this);
44
+ this.handleTimeout = this.handleTimeout.bind(this);
45
+ this.state = {
46
+ currentTime: Date.now()
47
+ };
48
+ }
49
+ componentDidMount() {
50
+ this.loadData();
51
+ }
52
+ componentDidUpdate(prevProps, prevState) {
53
+ var _prevState$data;
54
+ var {
55
+ data
56
+ } = this.state;
57
+ if (this.timer == null && !(data !== null && data !== void 0 && data.result) && Boolean(data === null || data === void 0 ? void 0 : data.startTime) && !(data == null || data.endTime === undefined)) {
58
+ this.startTimer();
59
+ } else if (data !== null && data !== void 0 && data.result && !((_prevState$data = prevState.data) !== null && _prevState$data !== void 0 && _prevState$data.result) || Boolean(data === null || data === void 0 ? void 0 : data.endTime) && !(prevState.data == null || prevState.data.endTime === undefined)) {
60
+ // Command complete
61
+ this.stopTimer();
62
+ }
63
+ }
64
+ componentWillUnmount() {
65
+ this.loadData.cancel();
66
+ if (this.cleanup != null) {
67
+ this.cleanup();
68
+ }
69
+ this.stopTimer();
70
+ }
71
+ startTimer() {
72
+ this.stopTimer();
73
+ this.timer = setInterval(this.handleTimeout, 1000);
74
+ }
75
+ stopTimer() {
76
+ if (this.timer) {
77
+ clearInterval(this.timer);
78
+ this.timer = undefined;
79
+ }
80
+ }
81
+ updateTime() {
82
+ this.setState({
83
+ currentTime: Date.now()
84
+ });
85
+ }
86
+ handleError(error) {
87
+ this.setState({
88
+ error: "".concat(error)
89
+ });
90
+ }
91
+ handleUpdate(item) {
92
+ var {
93
+ data
94
+ } = item !== null && item !== void 0 ? item : {};
95
+ this.setState({
96
+ data
97
+ });
98
+ var {
99
+ onUpdate
100
+ } = this.props;
101
+ onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(data);
102
+ }
103
+ handleTimeout() {
104
+ this.updateTime();
105
+ }
106
+ render() {
107
+ var _result$error;
108
+ var {
109
+ item: {
110
+ name
111
+ },
112
+ language
113
+ } = this.props;
114
+ var {
115
+ currentTime,
116
+ data,
117
+ error
118
+ } = this.state;
119
+ var {
120
+ result,
121
+ startTime,
122
+ endTime
123
+ } = data !== null && data !== void 0 ? data : {};
124
+ var errorMessage = (_result$error = result === null || result === void 0 ? void 0 : result.error) !== null && _result$error !== void 0 ? _result$error : error;
125
+ var timeString = CommandHistoryItemTooltip.getTimeString(startTime, endTime !== null && endTime !== void 0 ? endTime : currentTime);
126
+
127
+ // colorizing in monaco is mostly a function of the number of lines,
128
+ // it gets real slow after a few thousand lines. Truncate the tooltip
129
+ // to avoid UI locks. The full command is still inserted.
130
+ var previewText = this.getPreviewText(name);
131
+ var hasTimeString = Boolean(timeString);
132
+ return /*#__PURE__*/React.createElement("div", {
133
+ className: "command-history-item-tooltip"
134
+ }, /*#__PURE__*/React.createElement("div", {
135
+ className: "scroll-container"
136
+ }, /*#__PURE__*/React.createElement(Code, {
137
+ language: language
138
+ }, previewText), previewText.length < name.length && /*#__PURE__*/React.createElement("p", null, "Preview Truncated...")), /*#__PURE__*/React.createElement("div", {
139
+ className: "result-info"
140
+ }, /*#__PURE__*/React.createElement("div", {
141
+ className: "d-flex justify-content-between"
142
+ }, Boolean(errorMessage) && /*#__PURE__*/React.createElement("div", {
143
+ className: "text-danger mr-1"
144
+ }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
145
+ icon: vsWarning
146
+ }), " Executed with errors"), /*#__PURE__*/React.createElement("div", {
147
+ className: "time-wrapper"
148
+ }, "Elapsed time:", ' ', hasTimeString ? /*#__PURE__*/React.createElement("span", {
149
+ className: "time-string"
150
+ }, timeString) : /*#__PURE__*/React.createElement(LoadingSpinner, null))), Boolean(errorMessage) && /*#__PURE__*/React.createElement("div", {
151
+ className: "error-message"
152
+ }, errorMessage)));
153
+ }
154
+ }
155
+ _defineProperty(CommandHistoryItemTooltip, "defaultProps", {
156
+ onUpdate: () => undefined
157
+ });
158
+ export default CommandHistoryItemTooltip;
159
+ //# sourceMappingURL=CommandHistoryItemTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","setInterval","clearInterval","updateTime","setState","error","onUpdate","render","errorMessage","timeString","previewText","getPreviewText","hasTimeString","length"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport CommandHistoryStorage, {\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: NodeJS.Timer;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n (name: string) => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CommandHistoryStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHistoryStorage.js","names":[],"sources":["../../src/command-history/CommandHistoryStorage.ts"],"sourcesContent":["import {\n StorageTable,\n StorageItem,\n StorageItemListener,\n StorageListenerRemover,\n 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":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CommandHistoryTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHistoryTypes.js","names":[],"sources":["../../src/command-history/CommandHistoryTypes.tsx"],"sourcesContent":["import { ContextAction } from '@deephaven/components';\nimport { 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":""}
@@ -0,0 +1,57 @@
1
+ import { useEffect, useMemo } from 'react';
2
+ import throttle from 'lodash.throttle';
3
+ import Log from '@deephaven/log';
4
+ var UPDATE_DELAY = 150;
5
+ var ROW_BUFFER_PAGES = 3;
6
+ var log = Log.module('CommandHistoryViewportUpdater');
7
+ function CommandHistoryViewportUpdater(_ref) {
8
+ var {
9
+ table,
10
+ columns,
11
+ top = 0,
12
+ bottom = 0,
13
+ search,
14
+ isReversed = false,
15
+ onUpdate
16
+ } = _ref;
17
+ var throttledUpdateViewport = useMemo(() => throttle(viewport => {
18
+ var viewHeight = viewport.bottom - viewport.top;
19
+ var bufferedTop = Math.max(0, viewport.top - viewHeight * ROW_BUFFER_PAGES);
20
+ var bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;
21
+ table.setViewport({
22
+ top: bufferedTop,
23
+ bottom: bufferedBottom,
24
+ columns: viewport.columns
25
+ });
26
+ }, UPDATE_DELAY), [table]);
27
+ useEffect(function updateTableAndReturnCleanup() {
28
+ var cleanup = table.onUpdate(viewportData => {
29
+ var _viewportData$items, _viewportData$offset;
30
+ onUpdate({
31
+ items: (_viewportData$items = viewportData.items) !== null && _viewportData$items !== void 0 ? _viewportData$items : [],
32
+ offset: (_viewportData$offset = viewportData.offset) !== null && _viewportData$offset !== void 0 ? _viewportData$offset : 0
33
+ });
34
+ });
35
+ return () => {
36
+ log.debug('onUpdate cleanup');
37
+ cleanup();
38
+ };
39
+ }, [table, onUpdate]);
40
+ useEffect(function setSearchText() {
41
+ table.setSearch(search !== null && search !== void 0 ? search : '');
42
+ }, [table, search]);
43
+ useEffect(function updateViewport() {
44
+ throttledUpdateViewport({
45
+ top,
46
+ bottom,
47
+ columns
48
+ });
49
+ }, [throttledUpdateViewport, top, bottom, columns, search, isReversed]);
50
+ useEffect(() => () => {
51
+ log.debug2('Cancel throttledUpdateViewport');
52
+ throttledUpdateViewport.cancel();
53
+ }, [throttledUpdateViewport]);
54
+ return null;
55
+ }
56
+ export default CommandHistoryViewportUpdater;
57
+ //# sourceMappingURL=CommandHistoryViewportUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandHistoryViewportUpdater.js","names":["useEffect","useMemo","throttle","Log","UPDATE_DELAY","ROW_BUFFER_PAGES","log","module","CommandHistoryViewportUpdater","table","columns","top","bottom","search","isReversed","onUpdate","throttledUpdateViewport","viewport","viewHeight","bufferedTop","Math","max","bufferedBottom","setViewport","updateTableAndReturnCleanup","cleanup","viewportData","items","offset","debug","setSearchText","setSearch","updateViewport","debug2","cancel"],"sources":["../../src/command-history/CommandHistoryViewportUpdater.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n StorageTableViewport,\n ViewportData,\n ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport Log from '@deephaven/log';\nimport {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\n\nexport type CommandHistoryViewportUpdaterProps = {\n table: CommandHistoryTable;\n columns?: string[];\n top?: number;\n bottom?: number;\n search?: string;\n isReversed?: boolean;\n onUpdate: ViewportUpdateCallback<CommandHistoryStorageItem>;\n};\n\nconst UPDATE_DELAY = 150;\n\nconst ROW_BUFFER_PAGES = 3;\n\nconst log = Log.module('CommandHistoryViewportUpdater');\n\nfunction CommandHistoryViewportUpdater({\n table,\n columns,\n top = 0,\n bottom = 0,\n search,\n isReversed = false,\n onUpdate,\n}: CommandHistoryViewportUpdaterProps): null {\n const throttledUpdateViewport = useMemo(\n () =>\n throttle((viewport: StorageTableViewport) => {\n const viewHeight = viewport.bottom - viewport.top;\n const bufferedTop = Math.max(\n 0,\n viewport.top - viewHeight * ROW_BUFFER_PAGES\n );\n const bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;\n\n table.setViewport({\n top: bufferedTop,\n bottom: bufferedBottom,\n columns: viewport.columns,\n });\n }, UPDATE_DELAY),\n [table]\n );\n\n useEffect(\n function updateTableAndReturnCleanup() {\n const cleanup = table.onUpdate(\n (viewportData: ViewportData<CommandHistoryStorageItem>) => {\n onUpdate({\n items: viewportData.items ?? [],\n offset: viewportData.offset ?? 0,\n });\n }\n );\n\n return () => {\n log.debug('onUpdate cleanup');\n cleanup();\n };\n },\n [table, onUpdate]\n );\n\n useEffect(\n function setSearchText() {\n table.setSearch(search ?? '');\n },\n [table, search]\n );\n useEffect(\n function updateViewport() {\n throttledUpdateViewport({\n top,\n bottom,\n columns,\n });\n },\n [throttledUpdateViewport, top, bottom, columns, search, isReversed]\n );\n useEffect(\n () => () => {\n log.debug2('Cancel throttledUpdateViewport');\n throttledUpdateViewport.cancel();\n },\n [throttledUpdateViewport]\n );\n\n return null;\n}\n\nexport default CommandHistoryViewportUpdater;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC1C,OAAOC,QAAQ,MAAM,iBAAiB;AAMtC,OAAOC,GAAG,MAAM,gBAAgB;AAgBhC,IAAMC,YAAY,GAAG,GAAG;AAExB,IAAMC,gBAAgB,GAAG,CAAC;AAE1B,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAM,CAAC,+BAA+B,CAAC;AAEvD,SAASC,6BAA6B,OAQO;EAAA,IARN;IACrCC,KAAK;IACLC,OAAO;IACPC,GAAG,GAAG,CAAC;IACPC,MAAM,GAAG,CAAC;IACVC,MAAM;IACNC,UAAU,GAAG,KAAK;IAClBC;EACkC,CAAC;EACnC,IAAMC,uBAAuB,GAAGf,OAAO,CACrC,MACEC,QAAQ,CAAEe,QAA8B,IAAK;IAC3C,IAAMC,UAAU,GAAGD,QAAQ,CAACL,MAAM,GAAGK,QAAQ,CAACN,GAAG;IACjD,IAAMQ,WAAW,GAAGC,IAAI,CAACC,GAAG,CAC1B,CAAC,EACDJ,QAAQ,CAACN,GAAG,GAAGO,UAAU,GAAGb,gBAAgB,CAC7C;IACD,IAAMiB,cAAc,GAAGL,QAAQ,CAACL,MAAM,GAAGM,UAAU,GAAGb,gBAAgB;IAEtEI,KAAK,CAACc,WAAW,CAAC;MAChBZ,GAAG,EAAEQ,WAAW;MAChBP,MAAM,EAAEU,cAAc;MACtBZ,OAAO,EAAEO,QAAQ,CAACP;IACpB,CAAC,CAAC;EACJ,CAAC,EAAEN,YAAY,CAAC,EAClB,CAACK,KAAK,CAAC,CACR;EAEDT,SAAS,CACP,SAASwB,2BAA2B,GAAG;IACrC,IAAMC,OAAO,GAAGhB,KAAK,CAACM,QAAQ,CAC3BW,YAAqD,IAAK;MAAA;MACzDX,QAAQ,CAAC;QACPY,KAAK,yBAAED,YAAY,CAACC,KAAK,qEAAI,EAAE;QAC/BC,MAAM,0BAAEF,YAAY,CAACE,MAAM,uEAAI;MACjC,CAAC,CAAC;IACJ,CAAC,CACF;IAED,OAAO,MAAM;MACXtB,GAAG,CAACuB,KAAK,CAAC,kBAAkB,CAAC;MAC7BJ,OAAO,EAAE;IACX,CAAC;EACH,CAAC,EACD,CAAChB,KAAK,EAAEM,QAAQ,CAAC,CAClB;EAEDf,SAAS,CACP,SAAS8B,aAAa,GAAG;IACvBrB,KAAK,CAACsB,SAAS,CAAClB,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,EAAE,CAAC;EAC/B,CAAC,EACD,CAACJ,KAAK,EAAEI,MAAM,CAAC,CAChB;EACDb,SAAS,CACP,SAASgC,cAAc,GAAG;IACxBhB,uBAAuB,CAAC;MACtBL,GAAG;MACHC,MAAM;MACNF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACM,uBAAuB,EAAEL,GAAG,EAAEC,MAAM,EAAEF,OAAO,EAAEG,MAAM,EAAEC,UAAU,CAAC,CACpE;EACDd,SAAS,CACP,MAAM,MAAM;IACVM,GAAG,CAAC2B,MAAM,CAAC,gCAAgC,CAAC;IAC5CjB,uBAAuB,CAACkB,MAAM,EAAE;EAClC,CAAC,EACD,CAAClB,uBAAuB,CAAC,CAC1B;EAED,OAAO,IAAI;AACb;AAEA,eAAeR,6BAA6B"}
@@ -0,0 +1,7 @@
1
+ export { default as CommandHistory } from "./CommandHistory.js";
2
+ export * from "./CommandHistory.js";
3
+ export { default as CommandHistoryActions } from "./CommandHistoryActions.js";
4
+ export { default as CommandHistoryItem } from "./CommandHistoryItem.js";
5
+ export { default as CommandHistoryItemTooltip } from "./CommandHistoryItemTooltip.js";
6
+ export * from "./CommandHistoryStorage.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,45 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import React, { Component } from 'react';
5
+ import * as monaco from 'monaco-editor';
6
+ class Code extends Component {
7
+ constructor(props) {
8
+ super(props);
9
+ _defineProperty(this, "container", void 0);
10
+ this.container = null;
11
+ }
12
+ componentDidMount() {
13
+ this.colorize();
14
+ }
15
+ colorize() {
16
+ var {
17
+ children
18
+ } = this.props;
19
+ if (this.container && children != null) {
20
+ monaco.editor.colorizeElement(this.container, {
21
+ theme: 'dh-dark'
22
+ });
23
+ }
24
+ }
25
+ render() {
26
+ var {
27
+ children,
28
+ language
29
+ } = this.props;
30
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
31
+ "data-lang": language,
32
+ ref: container => {
33
+ this.container = container;
34
+ }
35
+ // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.
36
+ // You can still select the text event with this set
37
+ ,
38
+ style: {
39
+ pointerEvents: 'none'
40
+ }
41
+ }, children));
42
+ }
43
+ }
44
+ export default Code;
45
+ //# sourceMappingURL=Code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Code.js","names":["React","Component","monaco","Code","constructor","props","container","componentDidMount","colorize","children","editor","colorizeElement","theme","render","language","pointerEvents"],"sources":["../../src/common/Code.tsx"],"sourcesContent":["import React, { Component, ReactElement, ReactNode } from 'react';\nimport * as monaco from 'monaco-editor';\n\ninterface CodeProps {\n children: ReactNode;\n language: string;\n}\n\nclass Code extends Component<CodeProps, Record<string, never>> {\n constructor(props: CodeProps) {\n super(props);\n\n this.container = null;\n }\n\n componentDidMount(): void {\n this.colorize();\n }\n\n container: HTMLDivElement | null;\n\n colorize(): void {\n const { children } = this.props;\n if (this.container && children != null) {\n monaco.editor.colorizeElement(this.container, {\n theme: 'dh-dark',\n });\n }\n }\n\n render(): ReactElement {\n const { children, language } = this.props;\n return (\n <div>\n <div\n data-lang={language}\n ref={container => {\n this.container = container;\n }}\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style={{ pointerEvents: 'none' }}\n >\n {children}\n </div>\n </div>\n );\n }\n}\n\nexport default Code;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAiC,OAAO;AACjE,OAAO,KAAKC,MAAM,MAAM,eAAe;AAOvC,MAAMC,IAAI,SAASF,SAAS,CAAmC;EAC7DG,WAAW,CAACC,KAAgB,EAAE;IAC5B,KAAK,CAACA,KAAK,CAAC;IAAC;IAEb,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB;EAEAC,iBAAiB,GAAS;IACxB,IAAI,CAACC,QAAQ,EAAE;EACjB;EAIAA,QAAQ,GAAS;IACf,IAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACJ,KAAK;IAC/B,IAAI,IAAI,CAACC,SAAS,IAAIG,QAAQ,IAAI,IAAI,EAAE;MACtCP,MAAM,CAACQ,MAAM,CAACC,eAAe,CAAC,IAAI,CAACL,SAAS,EAAE;QAC5CM,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEJ,QAAQ;MAAEK;IAAS,CAAC,GAAG,IAAI,CAACT,KAAK;IACzC,oBACE,8CACE;MACE,aAAWS,QAAS;MACpB,GAAG,EAAER,SAAS,IAAI;QAChB,IAAI,CAACA,SAAS,GAAGA,SAAS;MAC5B;MACA;MACA;MAAA;MACA,KAAK,EAAE;QAAES,aAAa,EAAE;MAAO;IAAE,GAEhCN,QAAQ,CACL,CACF;EAEV;AACF;AAEA,eAAeN,IAAI"}
@@ -0,0 +1,10 @@
1
+ class ConsoleConstants {
2
+ /**
3
+ * Map of language keys to their display names
4
+ */
5
+ static get LANGUAGE_MAP() {
6
+ return new Map([['python', 'Python'], ['groovy', 'Groovy'], ['scala', 'Scala']]);
7
+ }
8
+ }
9
+ export default ConsoleConstants;
10
+ //# sourceMappingURL=ConsoleConstants.js.map
@@ -0,0 +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,YAAY,GAAwB;IAC7C,OAAO,IAAIC,GAAG,CAAC,CACb,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAC;EACJ;AACF;AAEA,eAAeF,gBAAgB"}
@@ -0,0 +1,62 @@
1
+ import ShellQuote from 'shell-quote';
2
+ class ConsoleUtils {
3
+ static hasComment(arg) {
4
+ return arg.comment !== undefined;
5
+ }
6
+ static hasPattern(arg) {
7
+ return arg.pattern !== undefined;
8
+ }
9
+ static hasOp(arg) {
10
+ return arg.op !== undefined;
11
+ }
12
+
13
+ /**
14
+ * Given the provided text, parse out arguments using shell quoting rules.
15
+ * @param str The text to parse.
16
+ * @returns string[] of the arguments. Empty if no arguments found.
17
+ */
18
+ static parseArguments(str) {
19
+ if (str == null || !(typeof str === 'string' || str instanceof String)) {
20
+ return [];
21
+ }
22
+
23
+ // Parse can return an object, not just a string. See the `ParseEntry` type def for all types
24
+ // We must map them all to strings. Filter out comments that will not be needed as well.
25
+ return ShellQuote.parse(str).filter(arg => !this.hasComment(arg)).map(arg => {
26
+ if (this.hasPattern(arg)) {
27
+ return arg.pattern;
28
+ }
29
+ if (this.hasOp(arg)) {
30
+ return arg.op;
31
+ }
32
+ return "".concat(arg);
33
+ });
34
+ }
35
+ static formatTimestamp(date) {
36
+ if (date == null || !(date instanceof Date)) {
37
+ return null;
38
+ }
39
+ var hours = "".concat(date.getHours()).padStart(2, '0');
40
+ var minutes = "".concat(date.getMinutes()).padStart(2, '0');
41
+ var seconds = "".concat(date.getSeconds()).padStart(2, '0');
42
+ var milliseconds = "".concat(date.getMilliseconds()).padStart(3, '0');
43
+ return "".concat(hours, ":").concat(minutes, ":").concat(seconds, ".").concat(milliseconds);
44
+ }
45
+ static isTableType(dh, type) {
46
+ return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE || type === dh.VariableType.HIERARCHICALTABLE;
47
+ }
48
+ static isWidgetType(dh, type) {
49
+ return type === dh.VariableType.FIGURE || type === dh.VariableType.OTHERWIDGET || type === dh.VariableType.PANDAS;
50
+ }
51
+ static isOpenableType(dh, type) {
52
+ return ConsoleUtils.isTableType(dh, type) || ConsoleUtils.isWidgetType(dh, type);
53
+ }
54
+ static isFigureType(dh, type) {
55
+ return type === dh.VariableType.FIGURE;
56
+ }
57
+ static isPandas(dh, type) {
58
+ return type === dh.VariableType.PANDAS;
59
+ }
60
+ }
61
+ export default ConsoleUtils;
62
+ //# sourceMappingURL=ConsoleUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","dh","type","VariableType","TABLE","TREETABLE","HIERARCHICALTABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"sources":["../../src/common/ConsoleUtils.ts"],"sourcesContent":["import ShellQuote, { ParseEntry, ControlOperator } from 'shell-quote';\nimport 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: DhType, type: string): boolean {\n return (\n type === dh.VariableType.TABLE ||\n type === dh.VariableType.TREETABLE ||\n type === dh.VariableType.HIERARCHICALTABLE\n );\n }\n\n static isWidgetType(dh: 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: DhType, type: string): boolean {\n return (\n ConsoleUtils.isTableType(dh, type) || ConsoleUtils.isWidgetType(dh, type)\n );\n }\n\n static isFigureType(dh: DhType, type: string): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(dh: DhType, type: string): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
+ import { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';
4
+ import { useApi } from '@deephaven/jsapi-bootstrap';
5
+ function ObjectIcon(_ref) {
6
+ var {
7
+ type
8
+ } = _ref;
9
+ var dh = useApi();
10
+ switch (type) {
11
+ case dh.VariableType.TABLE:
12
+ case dh.VariableType.TABLEMAP:
13
+ case dh.VariableType.TREETABLE:
14
+ case dh.VariableType.HIERARCHICALTABLE:
15
+ return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
16
+ icon: dhTable
17
+ });
18
+ case dh.VariableType.FIGURE:
19
+ return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
20
+ icon: vsGraph
21
+ });
22
+ case dh.VariableType.PANDAS:
23
+ return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
24
+ icon: dhPandas
25
+ });
26
+ default:
27
+ return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
28
+ icon: vsPreview
29
+ });
30
+ }
31
+ }
32
+ export default ObjectIcon;
33
+ //# sourceMappingURL=ObjectIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectIcon.js","names":["React","FontAwesomeIcon","dhPandas","dhTable","vsGraph","vsPreview","useApi","ObjectIcon","type","dh","VariableType","TABLE","TABLEMAP","TREETABLE","HIERARCHICALTABLE","FIGURE","PANDAS"],"sources":["../../src/common/ObjectIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';\nimport { 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 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;AAMnD,SAASC,UAAU,OAAyC;EAAA,IAAxC;IAAEC;EAAsB,CAAC;EAC3C,IAAMC,EAAE,GAAGH,MAAM,EAAE;EACnB,QAAQE,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;MACpC,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEX;MAAQ,EAAG;IAC3C,KAAKM,EAAE,CAACC,YAAY,CAACK,MAAM;MACzB,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEX;MAAQ,EAAG;IAC3C,KAAKK,EAAE,CAACC,YAAY,CAACM,MAAM;MACzB,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEd;MAAS,EAAG;IAC5C;MACE,oBAAO,oBAAC,eAAe;QAAC,IAAI,EAAEG;MAAU,EAAG;EAAC;AAElD;AAEA,eAAeE,UAAU"}
@@ -0,0 +1,5 @@
1
+ export { default as ObjectIcon } from "./ObjectIcon.js";
2
+ export { default as Code } from "./Code.js";
3
+ export { default as ConsoleConstants } from "./ConsoleConstants.js";
4
+ export { default as ConsoleUtils } from "./ConsoleUtils.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,42 @@
1
+ /* stylelint-disable scss/at-import-no-partial-leading-underscore */
2
+ .console-history .console-command-result {
3
+ padding: 0 0 0.25rem 0;
4
+ }
5
+
6
+ .console-history,
7
+ .console-history-footer {
8
+ font-family: "Fira Mono", menlo, monaco, consolas, "Liberation Mono", "Courier New", monospace;
9
+ font-size: 12px;
10
+ line-height: 18px;
11
+ padding: 0;
12
+ }
13
+ .console-history .console-history-gutter,
14
+ .console-history .error-gutter,
15
+ .console-history-footer .console-history-gutter,
16
+ .console-history-footer .error-gutter {
17
+ flex-shrink: 0;
18
+ flex-grow: 0;
19
+ flex-basis: 30px;
20
+ text-align: right;
21
+ padding-right: 8px;
22
+ color: #929192;
23
+ user-select: none;
24
+ }
25
+ .console-history .console-history-content,
26
+ .console-history-footer .console-history-content {
27
+ min-width: 0;
28
+ flex-grow: 1;
29
+ overflow-wrap: break-word;
30
+ }
31
+ .console-history .console-history-content .error-message.expanded .error-content,
32
+ .console-history-footer .console-history-content .error-message.expanded .error-content {
33
+ user-select: text;
34
+ user-select: contain;
35
+ white-space: pre-wrap;
36
+ word-break: break-word;
37
+ overflow: auto;
38
+ text-overflow: clip;
39
+ cursor: default;
40
+ }
41
+
42
+ /*# sourceMappingURL=ConsoleHistory.css.map */