@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.
- package/dist/Console.css +44 -0
- package/dist/Console.css.map +1 -0
- package/dist/Console.js +875 -0
- package/dist/Console.js.map +1 -0
- package/dist/ConsoleInput.css +42 -0
- package/dist/ConsoleInput.css.map +1 -0
- package/dist/ConsoleInput.js +442 -0
- package/dist/ConsoleInput.js.map +1 -0
- package/dist/ConsoleMenu.css +25 -0
- package/dist/ConsoleMenu.css.map +1 -0
- package/dist/ConsoleMenu.js +192 -0
- package/dist/ConsoleMenu.js.map +1 -0
- package/dist/ConsolePropTypes.js +10 -0
- package/dist/ConsolePropTypes.js.map +1 -0
- package/dist/ConsoleShortcuts.js +85 -0
- package/dist/ConsoleShortcuts.js.map +1 -0
- package/dist/ConsoleStatusBar.css +52 -0
- package/dist/ConsoleStatusBar.css.map +1 -0
- package/dist/ConsoleStatusBar.js +105 -0
- package/dist/ConsoleStatusBar.js.map +1 -0
- package/dist/HeapUsage.css +61 -0
- package/dist/HeapUsage.css.map +1 -0
- package/dist/HeapUsage.js +168 -0
- package/dist/HeapUsage.js.map +1 -0
- package/dist/StoragePropTypes.js +16 -0
- package/dist/StoragePropTypes.js.map +1 -0
- package/dist/command-history/CommandHistory.css +41 -0
- package/dist/command-history/CommandHistory.css.map +1 -0
- package/dist/command-history/CommandHistory.js +381 -0
- package/dist/command-history/CommandHistory.js.map +1 -0
- package/dist/command-history/CommandHistoryActions.css +10 -0
- package/dist/command-history/CommandHistoryActions.css.map +1 -0
- package/dist/command-history/CommandHistoryActions.js +47 -0
- package/dist/command-history/CommandHistoryActions.js.map +1 -0
- package/dist/command-history/CommandHistoryItem.css +61 -0
- package/dist/command-history/CommandHistoryItem.css.map +1 -0
- package/dist/command-history/CommandHistoryItem.js +50 -0
- package/dist/command-history/CommandHistoryItem.js.map +1 -0
- package/dist/command-history/CommandHistoryItemTooltip.css +37 -0
- package/dist/command-history/CommandHistoryItemTooltip.css.map +1 -0
- package/dist/command-history/CommandHistoryItemTooltip.js +159 -0
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -0
- package/dist/command-history/CommandHistoryStorage.js +2 -0
- package/dist/command-history/CommandHistoryStorage.js.map +1 -0
- package/dist/command-history/CommandHistoryTypes.js +2 -0
- package/dist/command-history/CommandHistoryTypes.js.map +1 -0
- package/dist/command-history/CommandHistoryViewportUpdater.js +57 -0
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -0
- package/dist/command-history/index.js +7 -0
- package/dist/command-history/index.js.map +1 -0
- package/dist/common/Code.js +45 -0
- package/dist/common/Code.js.map +1 -0
- package/dist/common/ConsoleConstants.js +10 -0
- package/dist/common/ConsoleConstants.js.map +1 -0
- package/dist/common/ConsoleUtils.js +62 -0
- package/dist/common/ConsoleUtils.js.map +1 -0
- package/dist/common/ObjectIcon.js +33 -0
- package/dist/common/ObjectIcon.js.map +1 -0
- package/dist/common/index.js +5 -0
- package/dist/common/index.js.map +1 -0
- package/dist/console-history/ConsoleHistory.css +42 -0
- package/dist/console-history/ConsoleHistory.css.map +1 -0
- package/dist/console-history/ConsoleHistory.js +42 -0
- package/dist/console-history/ConsoleHistory.js.map +1 -0
- package/dist/console-history/ConsoleHistoryItem.css +87 -0
- package/dist/console-history/ConsoleHistoryItem.css.map +1 -0
- package/dist/console-history/ConsoleHistoryItem.js +139 -0
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -0
- package/dist/console-history/ConsoleHistoryItemResult.js +22 -0
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -0
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +142 -0
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.css +27 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.css.map +1 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.js +66 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -0
- package/dist/console-history/ConsoleHistoryTypes.js +2 -0
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
- package/dist/console-history/index.js +6 -0
- package/dist/console-history/index.js.map +1 -0
- package/dist/csv/CsvFormats.js +134 -0
- package/dist/csv/CsvFormats.js.map +1 -0
- package/dist/csv/CsvInputBar.css +36 -0
- package/dist/csv/CsvInputBar.css.map +1 -0
- package/dist/csv/CsvInputBar.js +342 -0
- package/dist/csv/CsvInputBar.js.map +1 -0
- package/dist/csv/CsvOverlay.css +57 -0
- package/dist/csv/CsvOverlay.css.map +1 -0
- package/dist/csv/CsvOverlay.js +244 -0
- package/dist/csv/CsvOverlay.js.map +1 -0
- package/dist/csv/CsvParser.js +268 -0
- package/dist/csv/CsvParser.js.map +1 -0
- package/dist/csv/CsvTypeParser.js +235 -0
- package/dist/csv/CsvTypeParser.js.map +1 -0
- package/dist/csv/NewTableColumnTypes.js +16 -0
- package/dist/csv/NewTableColumnTypes.js.map +1 -0
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/log/LogLevel.js +11 -0
- package/dist/log/LogLevel.js.map +1 -0
- package/dist/log/LogLevelMenuItem.css +38 -0
- package/dist/log/LogLevelMenuItem.css.map +1 -0
- package/dist/log/LogLevelMenuItem.js +32 -0
- package/dist/log/LogLevelMenuItem.js.map +1 -0
- package/dist/log/LogView.css +65 -0
- package/dist/log/LogView.css.map +1 -0
- package/dist/log/LogView.js +487 -0
- package/dist/log/LogView.js.map +1 -0
- package/dist/monaco/MonacoProviders.js +314 -0
- package/dist/monaco/MonacoProviders.js.map +1 -0
- package/dist/monaco/MonacoTheme.module.css +54 -0
- package/dist/monaco/MonacoTheme.module.css.map +1 -0
- package/dist/monaco/MonacoUtils.js +423 -0
- package/dist/monaco/MonacoUtils.js.map +1 -0
- package/dist/monaco/index.js +4 -0
- package/dist/monaco/index.js.map +1 -0
- package/dist/monaco/lang/Language.js +2 -0
- package/dist/monaco/lang/Language.js.map +1 -0
- package/dist/monaco/lang/db.js +152 -0
- package/dist/monaco/lang/db.js.map +1 -0
- package/dist/monaco/lang/groovy.js +229 -0
- package/dist/monaco/lang/groovy.js.map +1 -0
- package/dist/monaco/lang/log.js +64 -0
- package/dist/monaco/lang/log.js.map +1 -0
- package/dist/monaco/lang/python.js +234 -0
- package/dist/monaco/lang/python.js.map +1 -0
- package/dist/monaco/lang/scala.js +264 -0
- package/dist/monaco/lang/scala.js.map +1 -0
- package/dist/notebook/Editor.css +6 -0
- package/dist/notebook/Editor.css.map +1 -0
- package/dist/notebook/Editor.js +130 -0
- package/dist/notebook/Editor.js.map +1 -0
- package/dist/notebook/ScriptEditor.css +8 -0
- package/dist/notebook/ScriptEditor.css.map +1 -0
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +311 -0
- package/dist/notebook/ScriptEditor.js.map +1 -0
- package/dist/notebook/ScriptEditorUtils.d.ts +7 -0
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +52 -0
- package/dist/notebook/ScriptEditorUtils.js.map +1 -0
- package/package.json +12 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/console-history/ConsoleHistory.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/common/_ConsoleVariables.scss"],"names":[],"mappings":"AAAA;ACMA;EACE;;;AAGF;AAAA;EAEE,aCuFsB;EDtFtB,WEbU;EFcV,aEbY;EFcZ;;AAEA;AAAA;AAAA;AAAA;EAEE;EACA;EACA,YAjBmB;EAkBnB;EACA;EACA,OCHO;EDIP;;AAGF;AAAA;EACE;EACA;EACA;;AAIA;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA","file":"ConsoleHistory.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","@use '../common/ConsoleVariables';\n@import '@deephaven/components/scss/custom.scss';\n\n$console-history-gutter-color: $gray-400;\n$console-gutter-width: 30px;\n\n.console-history .console-command-result {\n padding: 0 0 $spacer-1 0;\n}\n\n.console-history,\n.console-history-footer {\n font-family: $font-family-monospace;\n font-size: ConsoleVariables.$font-size;\n line-height: ConsoleVariables.$line-height;\n padding: 0;\n\n .console-history-gutter,\n .error-gutter {\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: $console-gutter-width;\n text-align: right;\n padding-right: 8px;\n color: $console-history-gutter-color;\n user-select: none;\n }\n\n .console-history-content {\n min-width: 0;\n flex-grow: 1;\n overflow-wrap: break-word;\n }\n\n .console-history-content .error-message.expanded {\n .error-content {\n user-select: text;\n user-select: contain;\n white-space: pre-wrap;\n word-break: break-word;\n overflow: auto;\n text-overflow: clip;\n cursor: default;\n }\n }\n}\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","$font-size: 12px;\n$line-height: 18px;\n$button-height: 26px;\n$button-vert-margin: 4px;\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Console display for use in the Iris environment.
|
|
6
|
+
*/
|
|
7
|
+
import React, { Component } from 'react';
|
|
8
|
+
import ConsoleHistoryItem from "./ConsoleHistoryItem.js";
|
|
9
|
+
import "./ConsoleHistory.css";
|
|
10
|
+
class ConsoleHistory extends Component {
|
|
11
|
+
static itemKey(i, item) {
|
|
12
|
+
return "".concat(i, ".").concat(item.command, ".").concat(item.result && item.result.message, ".").concat(item.result && item.result.error);
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
var {
|
|
16
|
+
disabled,
|
|
17
|
+
items,
|
|
18
|
+
language,
|
|
19
|
+
openObject
|
|
20
|
+
} = this.props;
|
|
21
|
+
var historyElements = [];
|
|
22
|
+
for (var i = 0; i < items.length; i += 1) {
|
|
23
|
+
var item = items[i];
|
|
24
|
+
var historyElement = /*#__PURE__*/React.createElement(ConsoleHistoryItem, {
|
|
25
|
+
key: ConsoleHistory.itemKey(i, item),
|
|
26
|
+
disabled: disabled,
|
|
27
|
+
item: item,
|
|
28
|
+
openObject: openObject,
|
|
29
|
+
language: language
|
|
30
|
+
});
|
|
31
|
+
historyElements.push(historyElement);
|
|
32
|
+
}
|
|
33
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
34
|
+
className: "container-fluid console-history"
|
|
35
|
+
}, historyElements);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
_defineProperty(ConsoleHistory, "defaultProps", {
|
|
39
|
+
disabled: false
|
|
40
|
+
});
|
|
41
|
+
export default ConsoleHistory;
|
|
42
|
+
//# sourceMappingURL=ConsoleHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleHistory.js","names":["React","Component","ConsoleHistoryItem","ConsoleHistory","itemKey","i","item","command","result","message","error","render","disabled","items","language","openObject","props","historyElements","length","historyElement","push"],"sources":["../../src/console-history/ConsoleHistory.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { Component, ReactElement } from 'react';\nimport type { VariableDefinition } from '@deephaven/jsapi-types';\nimport ConsoleHistoryItem from './ConsoleHistoryItem';\n\nimport './ConsoleHistory.scss';\nimport { ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\ninterface ConsoleHistoryProps {\n items: ConsoleHistoryActionItem[];\n language: string;\n openObject: (object: VariableDefinition) => void;\n disabled?: boolean;\n}\n\nclass ConsoleHistory extends Component<\n ConsoleHistoryProps,\n Record<string, never>\n> {\n static defaultProps = {\n disabled: false,\n };\n\n static itemKey(i: number, item: ConsoleHistoryActionItem): string {\n return `${i}.${item.command}.${item.result && item.result.message}.${\n item.result && item.result.error\n }`;\n }\n\n render(): ReactElement {\n const { disabled, items, language, openObject } = this.props;\n const historyElements = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const historyElement = (\n <ConsoleHistoryItem\n key={ConsoleHistory.itemKey(i, item)}\n disabled={disabled}\n item={item}\n openObject={openObject}\n language={language}\n />\n );\n historyElements.push(historyElement);\n }\n\n return (\n <div className=\"container-fluid console-history\">{historyElements}</div>\n );\n }\n}\n\nexport default ConsoleHistory;\n"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,SAAS,QAAsB,OAAO;AAAC,OAEhDC,kBAAkB;AAAA;AAYzB,MAAMC,cAAc,SAASF,SAAS,CAGpC;EAKA,OAAOG,OAAO,CAACC,CAAS,EAAEC,IAA8B,EAAU;IAChE,iBAAUD,CAAC,cAAIC,IAAI,CAACC,OAAO,cAAID,IAAI,CAACE,MAAM,IAAIF,IAAI,CAACE,MAAM,CAACC,OAAO,cAC/DH,IAAI,CAACE,MAAM,IAAIF,IAAI,CAACE,MAAM,CAACE,KAAK;EAEpC;EAEAC,MAAM,GAAiB;IACrB,IAAM;MAAEC,QAAQ;MAAEC,KAAK;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACC,KAAK;IAC5D,IAAMC,eAAe,GAAG,EAAE;IAC1B,KAAK,IAAIZ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,KAAK,CAACK,MAAM,EAAEb,CAAC,IAAI,CAAC,EAAE;MACxC,IAAMC,IAAI,GAAGO,KAAK,CAACR,CAAC,CAAC;MACrB,IAAMc,cAAc,gBAClB,oBAAC,kBAAkB;QACjB,GAAG,EAAEhB,cAAc,CAACC,OAAO,CAACC,CAAC,EAAEC,IAAI,CAAE;QACrC,QAAQ,EAAEM,QAAS;QACnB,IAAI,EAAEN,IAAK;QACX,UAAU,EAAES,UAAW;QACvB,QAAQ,EAAED;MAAS,EAEtB;MACDG,eAAe,CAACG,IAAI,CAACD,cAAc,CAAC;IACtC;IAEA,oBACE;MAAK,SAAS,EAAC;IAAiC,GAAEF,eAAe,CAAO;EAE5E;AACF;AAAC,gBAnCKd,cAAc,kBAII;EACpBS,QAAQ,EAAE;AACZ,CAAC;AA+BH,eAAeT,cAAc"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
+
.console-history-item-command,
|
|
3
|
+
.console-history-item-result {
|
|
4
|
+
display: flex;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.console-history-item-command {
|
|
8
|
+
white-space: pre-line;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.console-history-item-result .log-message {
|
|
12
|
+
white-space: pre-wrap;
|
|
13
|
+
word-wrap: break-word;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.console-result-buttons .console-history-item-result .console-history-gutter {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: flex-end;
|
|
20
|
+
max-height: 34px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.console-history-item-result .btn-console-object {
|
|
24
|
+
display: inline-flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
gap: 0.25rem;
|
|
27
|
+
text-align: left;
|
|
28
|
+
font-size: 12px;
|
|
29
|
+
padding-left: 1rem;
|
|
30
|
+
margin: 4px 4px 4px 0;
|
|
31
|
+
height: 26px;
|
|
32
|
+
border-radius: 26px;
|
|
33
|
+
}
|
|
34
|
+
.console-history-item-result .btn-console-object[disabled] {
|
|
35
|
+
background-color: #403e41;
|
|
36
|
+
border-color: #403e41;
|
|
37
|
+
pointer-events: none;
|
|
38
|
+
}
|
|
39
|
+
.console-history-item-result .error-message {
|
|
40
|
+
color: #f95d84;
|
|
41
|
+
display: flex;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
user-select: text;
|
|
44
|
+
}
|
|
45
|
+
.console-history-item-result .error-message .error-gutter {
|
|
46
|
+
padding: 0;
|
|
47
|
+
flex-basis: 15px;
|
|
48
|
+
}
|
|
49
|
+
.console-history-item-result .error-message .error-gutter .error-btn-link {
|
|
50
|
+
min-width: 15px;
|
|
51
|
+
background-color: transparent;
|
|
52
|
+
border: 0;
|
|
53
|
+
text-align: left;
|
|
54
|
+
padding-left: 0;
|
|
55
|
+
padding-right: 0;
|
|
56
|
+
color: rgba(249, 93, 132, 0.5);
|
|
57
|
+
transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out, border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out;
|
|
58
|
+
}
|
|
59
|
+
.console-history-item-result .error-message .error-gutter .error-btn-link:hover,
|
|
60
|
+
.console-history-item-result .error-message .error-gutter .error-btn-link--active {
|
|
61
|
+
color: #f95d84;
|
|
62
|
+
}
|
|
63
|
+
.console-history-item-result .error-message .error-content {
|
|
64
|
+
flex-grow: 1;
|
|
65
|
+
white-space: normal;
|
|
66
|
+
cursor: default;
|
|
67
|
+
overflow: visible;
|
|
68
|
+
text-overflow: ellipsis;
|
|
69
|
+
}
|
|
70
|
+
.console-history-item-result .error-message .console-error-text-trigger {
|
|
71
|
+
cursor: pointer;
|
|
72
|
+
color: #f95d84;
|
|
73
|
+
display: inline-block;
|
|
74
|
+
margin-right: 0.25rem;
|
|
75
|
+
border: 1px solid transparent;
|
|
76
|
+
border-radius: 4px;
|
|
77
|
+
overflow: visible;
|
|
78
|
+
white-space: pre-wrap;
|
|
79
|
+
}
|
|
80
|
+
.console-history-item-result .error-message .console-error-text-trigger:focus {
|
|
81
|
+
outline: 0;
|
|
82
|
+
}
|
|
83
|
+
.console-history-item-result .error-message .console-error-text-trigger:focus-visible {
|
|
84
|
+
border: 1px solid rgba(249, 93, 132, 0.5);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/*# sourceMappingURL=ConsoleHistoryItem.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/console-history/ConsoleHistoryItem.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss","../../src/common/_ConsoleVariables.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACSA;AAAA;EAEE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;;;AAIA;EACE;EACA;EACA,KCjCO;EDkCP;EACA,WErCQ;EFsCR,cClCO;EDmCP;EACA,QEtCY;EFuCZ,eEvCY;;AFyCZ;EACE,kBGpBK;EHqBL,cGrBK;EHsBL;;AAIJ;EACE,OGhDE;EHiDF;EACA;EACA;;AAEA;EACE;EACA,YAvDe;;AAyDf;EACE,WA1Da;EA2Db;EACA;EACA;EACA;EACA;EACA;EACA,YG4DS;;AHzDX;AAAA;EAEE,OGtEF;;AH0EF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA,OGpFA;EHqFA;EACA,cCvFK;EDwFL;EACA,eG8BU;EH7BV;EACA;;AAEA;EACE;;AAEF;EACE","file":"ConsoleHistoryItem.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","@use '../common/ConsoleVariables';\n@import '@deephaven/components/scss/custom.scss';\n\n$error-gutter-width: 15px;\n$hover-item-fade: 0.5;\n$font-size: ConsoleVariables.$font-size;\n$button-height: ConsoleVariables.$button-height;\n$button-vert-margin: ConsoleVariables.$button-vert-margin;\n\n.console-history-item-command,\n.console-history-item-result {\n display: flex;\n}\n\n.console-history-item-command {\n white-space: pre-line;\n}\n\n.console-history-item-result .log-message {\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n// adjust gutter tick to align in the middle of button results\n.console-result-buttons .console-history-item-result .console-history-gutter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n max-height: calc($button-height + $button-vert-margin + $button-vert-margin);\n}\n\n.console-history-item-result {\n .btn-console-object {\n display: inline-flex;\n align-items: center;\n gap: $spacer-1;\n text-align: left;\n font-size: $font-size;\n padding-left: $spacer-3;\n margin: $button-vert-margin $button-vert-margin $button-vert-margin 0;\n height: $button-height;\n border-radius: $button-height;\n\n &[disabled] {\n background-color: $gray-700;\n border-color: $gray-700;\n pointer-events: none;\n }\n }\n\n .error-message {\n color: $danger;\n display: flex;\n overflow: hidden;\n user-select: text;\n\n .error-gutter {\n padding: 0;\n flex-basis: $error-gutter-width;\n\n .error-btn-link {\n min-width: $error-gutter-width;\n background-color: transparent;\n border: 0;\n text-align: left;\n padding-left: 0;\n padding-right: 0;\n color: rgba($danger, $hover-item-fade);\n transition: $btn-transition;\n }\n\n .error-btn-link:hover,\n .error-btn-link--active {\n color: $danger;\n }\n }\n\n .error-content {\n flex-grow: 1;\n white-space: normal;\n cursor: default;\n overflow: visible;\n text-overflow: ellipsis;\n }\n\n .console-error-text-trigger {\n cursor: pointer;\n color: $danger;\n display: inline-block;\n margin-right: $spacer-1;\n border: 1px solid transparent;\n border-radius: $border-radius;\n overflow: visible;\n white-space: pre-wrap;\n // keyboard navigation only focus state\n &:focus {\n outline: 0;\n }\n &:focus-visible {\n border: 1px solid rgba($danger, $hover-item-fade);\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","$font-size: 12px;\n$line-height: 18px;\n$button-height: 26px;\n$button-vert-margin: 4px;\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,139 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Console display for use in the Iris environment.
|
|
6
|
+
*/
|
|
7
|
+
import React, { PureComponent } from 'react';
|
|
8
|
+
import { Button } from '@deephaven/components';
|
|
9
|
+
import Log from '@deephaven/log';
|
|
10
|
+
import classNames from 'classnames';
|
|
11
|
+
import { Code, ObjectIcon } from "../common/index.js";
|
|
12
|
+
import ConsoleHistoryItemResult from "./ConsoleHistoryItemResult.js";
|
|
13
|
+
import ConsoleHistoryResultInProgress from "./ConsoleHistoryResultInProgress.js";
|
|
14
|
+
import ConsoleHistoryResultErrorMessage from "./ConsoleHistoryResultErrorMessage.js";
|
|
15
|
+
import "./ConsoleHistoryItem.css";
|
|
16
|
+
var log = Log.module('ConsoleHistoryItem');
|
|
17
|
+
class ConsoleHistoryItem extends PureComponent {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
this.handleCancelClick = this.handleCancelClick.bind(this);
|
|
21
|
+
this.handleObjectClick = this.handleObjectClick.bind(this);
|
|
22
|
+
}
|
|
23
|
+
handleObjectClick(object) {
|
|
24
|
+
log.debug('handleObjectClick', object);
|
|
25
|
+
var {
|
|
26
|
+
openObject
|
|
27
|
+
} = this.props;
|
|
28
|
+
openObject(object);
|
|
29
|
+
}
|
|
30
|
+
handleCancelClick() {
|
|
31
|
+
var {
|
|
32
|
+
item
|
|
33
|
+
} = this.props;
|
|
34
|
+
if (item != null && item.cancelResult) {
|
|
35
|
+
log.debug("Cancelling command: ".concat(item.command));
|
|
36
|
+
item.cancelResult();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
var {
|
|
41
|
+
disabled,
|
|
42
|
+
item,
|
|
43
|
+
language
|
|
44
|
+
} = this.props;
|
|
45
|
+
var {
|
|
46
|
+
disabledObjects,
|
|
47
|
+
result
|
|
48
|
+
} = item;
|
|
49
|
+
var commandElement = null;
|
|
50
|
+
if (item.command != null && item.command !== '') {
|
|
51
|
+
commandElement = /*#__PURE__*/React.createElement("div", {
|
|
52
|
+
className: "console-history-item-command"
|
|
53
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
54
|
+
className: "console-history-gutter"
|
|
55
|
+
}, ">"), /*#__PURE__*/React.createElement("div", {
|
|
56
|
+
className: "console-history-content"
|
|
57
|
+
}, /*#__PURE__*/React.createElement(Code, {
|
|
58
|
+
language: language
|
|
59
|
+
}, item.command)));
|
|
60
|
+
}
|
|
61
|
+
var resultElements = [];
|
|
62
|
+
var hasButtons = false;
|
|
63
|
+
if (result) {
|
|
64
|
+
var {
|
|
65
|
+
error,
|
|
66
|
+
message,
|
|
67
|
+
changes
|
|
68
|
+
} = result;
|
|
69
|
+
if (changes) {
|
|
70
|
+
var {
|
|
71
|
+
created,
|
|
72
|
+
updated
|
|
73
|
+
} = changes;
|
|
74
|
+
[...created, ...updated].forEach(object => {
|
|
75
|
+
hasButtons = true;
|
|
76
|
+
var {
|
|
77
|
+
title
|
|
78
|
+
} = object;
|
|
79
|
+
var key = "".concat(title);
|
|
80
|
+
var btnDisabled = disabled === undefined || disabled || (disabledObjects !== null && disabledObjects !== void 0 ? disabledObjects : []).indexOf(key) >= 0;
|
|
81
|
+
var element = /*#__PURE__*/React.createElement(Button, {
|
|
82
|
+
key: key,
|
|
83
|
+
kind: "primary",
|
|
84
|
+
onClick: () => this.handleObjectClick(object),
|
|
85
|
+
className: "btn-console-object",
|
|
86
|
+
disabled: btnDisabled,
|
|
87
|
+
icon: /*#__PURE__*/React.createElement(ObjectIcon, {
|
|
88
|
+
type: object.type
|
|
89
|
+
})
|
|
90
|
+
}, title);
|
|
91
|
+
resultElements.push(element);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 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
|
|
96
|
+
if (error != null && item.command == null) {
|
|
97
|
+
var _message;
|
|
98
|
+
var errorMessage = "".concat((_message = error.message) !== null && _message !== void 0 ? _message : error);
|
|
99
|
+
if (!errorMessage) {
|
|
100
|
+
errorMessage = error;
|
|
101
|
+
}
|
|
102
|
+
var element = /*#__PURE__*/React.createElement(ConsoleHistoryResultErrorMessage, {
|
|
103
|
+
key: "result-error",
|
|
104
|
+
message: errorMessage
|
|
105
|
+
});
|
|
106
|
+
resultElements.push(element);
|
|
107
|
+
}
|
|
108
|
+
if (message !== undefined && message !== '') {
|
|
109
|
+
var _element = /*#__PURE__*/React.createElement("div", {
|
|
110
|
+
key: "log-message",
|
|
111
|
+
className: "log-message"
|
|
112
|
+
}, message);
|
|
113
|
+
resultElements.push(_element);
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
hasButtons = true;
|
|
117
|
+
var _element2 = /*#__PURE__*/React.createElement(ConsoleHistoryResultInProgress, {
|
|
118
|
+
key: "in_progress",
|
|
119
|
+
onCancelClick: this.handleCancelClick,
|
|
120
|
+
disabled: disabled
|
|
121
|
+
});
|
|
122
|
+
resultElements.push(_element2);
|
|
123
|
+
}
|
|
124
|
+
var resultElement = null;
|
|
125
|
+
if (resultElements.length > 0) {
|
|
126
|
+
resultElement = /*#__PURE__*/React.createElement(ConsoleHistoryItemResult, null, resultElements);
|
|
127
|
+
}
|
|
128
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
129
|
+
className: classNames('console-command-result', {
|
|
130
|
+
'console-result-buttons': hasButtons
|
|
131
|
+
})
|
|
132
|
+
}, commandElement, resultElement);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
_defineProperty(ConsoleHistoryItem, "defaultProps", {
|
|
136
|
+
disabled: false
|
|
137
|
+
});
|
|
138
|
+
export default ConsoleHistoryItem;
|
|
139
|
+
//# sourceMappingURL=ConsoleHistoryItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleHistoryItem.js","names":["React","PureComponent","Button","Log","classNames","Code","ObjectIcon","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","command","render","disabled","language","disabledObjects","result","commandElement","resultElements","hasButtons","error","message","changes","created","updated","forEach","title","key","btnDisabled","undefined","indexOf","element","type","push","errorMessage","resultElement","length"],"sources":["../../src/console-history/ConsoleHistoryItem.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent, ReactElement } from 'react';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport type { VariableDefinition } from '@deephaven/jsapi-types';\nimport classNames from 'classnames';\nimport { Code, ObjectIcon } from '../common';\nimport ConsoleHistoryItemResult from './ConsoleHistoryItemResult';\nimport ConsoleHistoryResultInProgress from './ConsoleHistoryResultInProgress';\nimport ConsoleHistoryResultErrorMessage from './ConsoleHistoryResultErrorMessage';\nimport './ConsoleHistoryItem.scss';\nimport { ConsoleHistoryActionItem } from './ConsoleHistoryTypes';\n\nconst log = Log.module('ConsoleHistoryItem');\n\ninterface ConsoleHistoryItemProps {\n item: ConsoleHistoryActionItem;\n language: string;\n openObject: (object: VariableDefinition) => void;\n disabled?: boolean;\n}\n\nclass ConsoleHistoryItem extends PureComponent<\n ConsoleHistoryItemProps,\n Record<string, never>\n> {\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props: ConsoleHistoryItemProps) {\n super(props);\n\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n\n handleObjectClick(object: VariableDefinition): void {\n log.debug('handleObjectClick', object);\n\n const { openObject } = this.props;\n openObject(object);\n }\n\n handleCancelClick(): void {\n const { item } = this.props;\n if (item != null && item.cancelResult) {\n log.debug(`Cancelling command: ${item.command}`);\n item.cancelResult();\n }\n }\n\n render(): ReactElement {\n const { disabled, item, language } = this.props;\n const { disabledObjects, result } = item;\n\n let commandElement = null;\n if (item.command != null && item.command !== '') {\n commandElement = (\n <div className=\"console-history-item-command\">\n <div className=\"console-history-gutter\">></div>\n <div className=\"console-history-content\">\n <Code language={language}>{item.command}</Code>\n </div>\n </div>\n );\n }\n\n const resultElements = [];\n let hasButtons = false;\n\n if (result) {\n const { error, message, changes } = result;\n\n if (changes) {\n const { created, updated } = changes;\n [...created, ...updated].forEach(object => {\n hasButtons = true;\n const { title } = object;\n const key = `${title}`;\n const btnDisabled =\n disabled === undefined ||\n disabled ||\n (disabledObjects ?? []).indexOf(key) >= 0;\n const element = (\n <Button\n key={key}\n kind=\"primary\"\n onClick={() => this.handleObjectClick(object)}\n className=\"btn-console-object\"\n disabled={btnDisabled}\n icon={<ObjectIcon type={object.type} />}\n >\n {title}\n </Button>\n );\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error != null && item.command == null) {\n let errorMessage = `${(error as { message: string }).message ?? error}`;\n if (!errorMessage) {\n errorMessage = error as string;\n }\n const element = (\n <ConsoleHistoryResultErrorMessage\n key=\"result-error\"\n message={errorMessage}\n />\n );\n resultElements.push(element);\n }\n\n if (message !== undefined && message !== '') {\n const element = (\n <div key=\"log-message\" className=\"log-message\">\n {message}\n </div>\n );\n resultElements.push(element);\n }\n } else {\n hasButtons = true;\n const element = (\n <ConsoleHistoryResultInProgress\n key=\"in_progress\"\n onCancelClick={this.handleCancelClick}\n disabled={disabled}\n />\n );\n resultElements.push(element);\n }\n\n let resultElement = null;\n if (resultElements.length > 0) {\n resultElement = (\n <ConsoleHistoryItemResult>{resultElements}</ConsoleHistoryItemResult>\n );\n }\n\n return (\n <div\n className={classNames('console-command-result', {\n 'console-result-buttons': hasButtons,\n })}\n >\n {commandElement}\n {resultElement}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryItem;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console display for use in the Iris environment.
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
function ConsoleHistoryItemResult(_ref) {
|
|
7
|
+
var {
|
|
8
|
+
children
|
|
9
|
+
} = _ref;
|
|
10
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
11
|
+
className: "console-history-item-result"
|
|
12
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
13
|
+
className: "console-history-gutter"
|
|
14
|
+
}, "-"), /*#__PURE__*/React.createElement("div", {
|
|
15
|
+
className: "console-history-content"
|
|
16
|
+
}, children));
|
|
17
|
+
}
|
|
18
|
+
ConsoleHistoryItemResult.propTypes = {
|
|
19
|
+
children: PropTypes.node.isRequired
|
|
20
|
+
};
|
|
21
|
+
export default ConsoleHistoryItemResult;
|
|
22
|
+
//# sourceMappingURL=ConsoleHistoryItemResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleHistoryItemResult.js","names":["React","PropTypes","ConsoleHistoryItemResult","children","propTypes","node","isRequired"],"sources":["../../src/console-history/ConsoleHistoryItemResult.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { ReactElement, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ConsoleHistoryItemResult({\n children,\n}: {\n children: ReactNode;\n}): ReactElement {\n return (\n <div className=\"console-history-item-result\">\n <div className=\"console-history-gutter\">-</div>\n <div className=\"console-history-content\">{children}</div>\n </div>\n );\n}\n\nConsoleHistoryItemResult.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default ConsoleHistoryItemResult;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAmC,OAAO;AACtD,OAAOC,SAAS,MAAM,YAAY;AAElC,SAASC,wBAAwB,OAIhB;EAAA,IAJiB;IAChCC;EAGF,CAAC;EACC,oBACE;IAAK,SAAS,EAAC;EAA6B,gBAC1C;IAAK,SAAS,EAAC;EAAwB,GAAC,GAAC,CAAM,eAC/C;IAAK,SAAS,EAAC;EAAyB,GAAEA,QAAQ,CAAO,CACrD;AAEV;AAEAD,wBAAwB,CAACE,SAAS,GAAG;EACnCD,QAAQ,EAAEF,SAAS,CAACI,IAAI,CAACC;AAC3B,CAAC;AAED,eAAeJ,wBAAwB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Error message that can be expanded
|
|
6
|
+
*/
|
|
7
|
+
import React, { PureComponent } from 'react';
|
|
8
|
+
import classNames from 'classnames';
|
|
9
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
10
|
+
import { vsTriangleRight, vsTriangleDown } from '@deephaven/icons';
|
|
11
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
12
|
+
class ConsoleHistoryResultErrorMessage extends PureComponent {
|
|
13
|
+
constructor(props) {
|
|
14
|
+
super(props);
|
|
15
|
+
_defineProperty(this, "mouseX", void 0);
|
|
16
|
+
_defineProperty(this, "mouseY", void 0);
|
|
17
|
+
_defineProperty(this, "isClicking", void 0);
|
|
18
|
+
this.handleKeyPress = this.handleKeyPress.bind(this);
|
|
19
|
+
this.handleMouseDown = this.handleMouseDown.bind(this);
|
|
20
|
+
this.handleMouseMove = this.handleMouseMove.bind(this);
|
|
21
|
+
this.handleMouseUp = this.handleMouseUp.bind(this);
|
|
22
|
+
this.handleToggleError = this.handleToggleError.bind(this);
|
|
23
|
+
this.handleMouseEnter = this.handleMouseEnter.bind(this);
|
|
24
|
+
this.handleMouseLeave = this.handleMouseLeave.bind(this);
|
|
25
|
+
this.mouseX = null;
|
|
26
|
+
this.mouseY = null;
|
|
27
|
+
this.isClicking = false;
|
|
28
|
+
this.state = {
|
|
29
|
+
isExpanded: false,
|
|
30
|
+
isTriggerHovered: false
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
handleKeyPress(event) {
|
|
34
|
+
switch (event.key) {
|
|
35
|
+
case 'Enter':
|
|
36
|
+
case ' ':
|
|
37
|
+
// Toggle the error open/closed
|
|
38
|
+
this.handleToggleError();
|
|
39
|
+
event.stopPropagation();
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
handleMouseDown(event) {
|
|
47
|
+
this.mouseX = event.clientX;
|
|
48
|
+
this.mouseY = event.clientY;
|
|
49
|
+
this.isClicking = true;
|
|
50
|
+
}
|
|
51
|
+
handleMouseMove(event) {
|
|
52
|
+
if (this.mouseX != null && this.mouseY != null) {
|
|
53
|
+
if (Math.abs(event.clientX - this.mouseX) >= ConsoleHistoryResultErrorMessage.mouseDragThreshold || Math.abs(event.clientY - this.mouseY) >= ConsoleHistoryResultErrorMessage.mouseDragThreshold) {
|
|
54
|
+
this.isClicking = false;
|
|
55
|
+
}
|
|
56
|
+
} else if (this.isClicking) {
|
|
57
|
+
// Rare case - could happen if you mouse down, switch window focus, release the mouse, then come back, mouse down outside of the error, drag into the error, then release the mouse
|
|
58
|
+
this.isClicking = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
handleMouseUp(event) {
|
|
62
|
+
// We don't want to expand/collapse the error if user is holding shift or an alt key
|
|
63
|
+
// They may be trying to adjust their selection
|
|
64
|
+
if (this.isClicking && !event.shiftKey && !event.metaKey && !event.altKey) {
|
|
65
|
+
this.handleToggleError();
|
|
66
|
+
}
|
|
67
|
+
this.mouseX = null;
|
|
68
|
+
this.mouseY = null;
|
|
69
|
+
this.isClicking = false;
|
|
70
|
+
}
|
|
71
|
+
handleToggleError() {
|
|
72
|
+
this.setState(state => ({
|
|
73
|
+
isExpanded: !state.isExpanded
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
handleMouseEnter() {
|
|
77
|
+
this.setState({
|
|
78
|
+
isTriggerHovered: true
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
handleMouseLeave() {
|
|
82
|
+
this.setState({
|
|
83
|
+
isTriggerHovered: false
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
render() {
|
|
87
|
+
var {
|
|
88
|
+
isExpanded,
|
|
89
|
+
isTriggerHovered
|
|
90
|
+
} = this.state;
|
|
91
|
+
var {
|
|
92
|
+
message: messageProp
|
|
93
|
+
} = this.props;
|
|
94
|
+
assertNotNull(messageProp);
|
|
95
|
+
var lineBreakIndex = messageProp.indexOf('\n');
|
|
96
|
+
var isMultiline = lineBreakIndex > -1;
|
|
97
|
+
var topLineOfMessage = messageProp;
|
|
98
|
+
if (isMultiline) {
|
|
99
|
+
topLineOfMessage = messageProp.slice(0, lineBreakIndex);
|
|
100
|
+
}
|
|
101
|
+
var remainderOfMessage = messageProp.slice(lineBreakIndex);
|
|
102
|
+
var arrowBtnClasses = isTriggerHovered ? 'error-btn-link error-btn-link--active' : 'error-btn-link';
|
|
103
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
104
|
+
key: "error",
|
|
105
|
+
className: classNames('error-message', {
|
|
106
|
+
expanded: isExpanded
|
|
107
|
+
})
|
|
108
|
+
}, isMultiline && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
109
|
+
className: "error-gutter"
|
|
110
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
111
|
+
type: "button",
|
|
112
|
+
onClick: this.handleToggleError,
|
|
113
|
+
className: arrowBtnClasses,
|
|
114
|
+
tabIndex: -1
|
|
115
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
116
|
+
icon: isExpanded ? vsTriangleDown : vsTriangleRight,
|
|
117
|
+
transform: "left-3"
|
|
118
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
119
|
+
className: "error-content"
|
|
120
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
121
|
+
className: "console-error-text-trigger",
|
|
122
|
+
role: "button",
|
|
123
|
+
tabIndex: 0,
|
|
124
|
+
onKeyPress: this.handleKeyPress,
|
|
125
|
+
onMouseDown: this.handleMouseDown,
|
|
126
|
+
onMouseMove: this.handleMouseMove,
|
|
127
|
+
onMouseEnter: this.handleMouseEnter,
|
|
128
|
+
onMouseLeave: this.handleMouseLeave,
|
|
129
|
+
onMouseUp: this.handleMouseUp
|
|
130
|
+
}, topLineOfMessage), isExpanded ? remainderOfMessage : '')), !isMultiline && /*#__PURE__*/React.createElement("div", {
|
|
131
|
+
className: "error-content"
|
|
132
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
133
|
+
className: "console-error-text"
|
|
134
|
+
}, topLineOfMessage)));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
_defineProperty(ConsoleHistoryResultErrorMessage, "defaultProps", {
|
|
138
|
+
message: ''
|
|
139
|
+
});
|
|
140
|
+
_defineProperty(ConsoleHistoryResultErrorMessage, "mouseDragThreshold", 5);
|
|
141
|
+
export default ConsoleHistoryResultErrorMessage;
|
|
142
|
+
//# sourceMappingURL=ConsoleHistoryResultErrorMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleHistoryResultErrorMessage.js","names":["React","PureComponent","classNames","FontAwesomeIcon","vsTriangleRight","vsTriangleDown","assertNotNull","ConsoleHistoryResultErrorMessage","constructor","props","handleKeyPress","bind","handleMouseDown","handleMouseMove","handleMouseUp","handleToggleError","handleMouseEnter","handleMouseLeave","mouseX","mouseY","isClicking","state","isExpanded","isTriggerHovered","event","key","stopPropagation","preventDefault","clientX","clientY","Math","abs","mouseDragThreshold","shiftKey","metaKey","altKey","setState","render","message","messageProp","lineBreakIndex","indexOf","isMultiline","topLineOfMessage","slice","remainderOfMessage","arrowBtnClasses","expanded"],"sources":["../../src/console-history/ConsoleHistoryResultErrorMessage.tsx"],"sourcesContent":["/**\n * Error message that can be expanded\n */\nimport React, {\n KeyboardEvent,\n MouseEvent,\n PureComponent,\n ReactElement,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleRight, vsTriangleDown } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\n\ninterface ConsoleHistoryResultErrorMessageProps {\n message?: string;\n}\n\ninterface ConsoleHistoryResultErrorMessageState {\n isExpanded: boolean;\n isTriggerHovered: boolean;\n}\n\nclass ConsoleHistoryResultErrorMessage extends PureComponent<\n ConsoleHistoryResultErrorMessageProps,\n ConsoleHistoryResultErrorMessageState\n> {\n static defaultProps = {\n message: '',\n };\n\n static mouseDragThreshold = 5;\n\n constructor(props: ConsoleHistoryResultErrorMessageProps) {\n super(props);\n\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleToggleError = this.handleToggleError.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n\n this.state = {\n isExpanded: false,\n isTriggerHovered: false,\n };\n }\n\n mouseX: number | null;\n\n mouseY: number | null;\n\n isClicking: boolean;\n\n handleKeyPress(event: KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Toggle the error open/closed\n this.handleToggleError();\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n handleMouseDown(event: MouseEvent<HTMLDivElement>): void {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.isClicking = true;\n }\n\n handleMouseMove(event: MouseEvent<HTMLDivElement>): void {\n if (this.mouseX != null && this.mouseY != null) {\n if (\n Math.abs(event.clientX - this.mouseX) >=\n ConsoleHistoryResultErrorMessage.mouseDragThreshold ||\n Math.abs(event.clientY - this.mouseY) >=\n ConsoleHistoryResultErrorMessage.mouseDragThreshold\n ) {\n this.isClicking = false;\n }\n } else if (this.isClicking) {\n // Rare case - could happen if you mouse down, switch window focus, release the mouse, then come back, mouse down outside of the error, drag into the error, then release the mouse\n this.isClicking = false;\n }\n }\n\n handleMouseUp(event: MouseEvent<HTMLDivElement>): void {\n // We don't want to expand/collapse the error if user is holding shift or an alt key\n // They may be trying to adjust their selection\n if (this.isClicking && !event.shiftKey && !event.metaKey && !event.altKey) {\n this.handleToggleError();\n }\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n }\n\n handleToggleError(): void {\n this.setState(state => ({ isExpanded: !state.isExpanded }));\n }\n\n handleMouseEnter(): void {\n this.setState({ isTriggerHovered: true });\n }\n\n handleMouseLeave(): void {\n this.setState({ isTriggerHovered: false });\n }\n\n render(): ReactElement {\n const { isExpanded, isTriggerHovered } = this.state;\n const { message: messageProp } = this.props;\n assertNotNull(messageProp);\n const lineBreakIndex = messageProp.indexOf('\\n');\n const isMultiline = lineBreakIndex > -1;\n let topLineOfMessage = messageProp;\n if (isMultiline) {\n topLineOfMessage = messageProp.slice(0, lineBreakIndex);\n }\n const remainderOfMessage = messageProp.slice(lineBreakIndex);\n const arrowBtnClasses = isTriggerHovered\n ? 'error-btn-link error-btn-link--active'\n : 'error-btn-link';\n\n return (\n <div\n key=\"error\"\n className={classNames('error-message', {\n expanded: isExpanded,\n })}\n >\n {isMultiline && (\n <>\n <div className=\"error-gutter\">\n <button\n type=\"button\"\n onClick={this.handleToggleError}\n className={arrowBtnClasses}\n tabIndex={-1}\n >\n <FontAwesomeIcon\n icon={isExpanded ? vsTriangleDown : vsTriangleRight}\n transform=\"left-3\"\n />\n </button>\n </div>\n <div className=\"error-content\">\n <div\n className=\"console-error-text-trigger\"\n role=\"button\"\n tabIndex={0}\n onKeyPress={this.handleKeyPress}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onMouseUp={this.handleMouseUp}\n >\n {topLineOfMessage}\n </div>\n {isExpanded ? remainderOfMessage : ''}\n </div>\n </>\n )}\n {!isMultiline && (\n <div className=\"error-content\">\n <div className=\"console-error-text\">{topLineOfMessage}</div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ConsoleHistoryResultErrorMessage;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
+
.console-history-result-in-progress {
|
|
3
|
+
user-select: none;
|
|
4
|
+
}
|
|
5
|
+
.console-history-result-in-progress .badge {
|
|
6
|
+
background-color: #555356;
|
|
7
|
+
color: #f0f0ee;
|
|
8
|
+
font-size: 12px;
|
|
9
|
+
font-weight: 400;
|
|
10
|
+
margin: 4px 4px 4px 0;
|
|
11
|
+
height: 26px;
|
|
12
|
+
border-radius: 26px;
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
align-items: center;
|
|
16
|
+
padding-right: 0;
|
|
17
|
+
}
|
|
18
|
+
.console-history-result-in-progress .badge .console-history-result-in-progress-cancel::after {
|
|
19
|
+
border-radius: 26px;
|
|
20
|
+
}
|
|
21
|
+
.console-history-result-in-progress.disabled .badge {
|
|
22
|
+
color: #c0bfbf;
|
|
23
|
+
background-color: #403e41;
|
|
24
|
+
border-color: #403e41;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*# sourceMappingURL=ConsoleHistoryResultInProgress.css.map */
|