@deephaven/dashboard-core-plugins 1.24.0 → 1.25.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.
@@ -15,12 +15,20 @@
15
15
  }
16
16
  .notebook-container .notebook-toolbar {
17
17
  display: flex;
18
- justify-content: center;
18
+ justify-content: flex-start;
19
19
  flex-direction: row;
20
20
  background: var(--dh-color-content-bg, #2d2a2e);
21
21
  border-bottom: 2px solid var(--dh-color-bg, #1a171a);
22
22
  padding: 0.25rem 0.5rem;
23
23
  gap: 0.25rem;
24
+ container-type: inline-size;
25
+ overflow: hidden;
26
+ }
27
+ .notebook-container .notebook-toolbar .notebook-toolbar-actions {
28
+ display: contents;
29
+ }
30
+ .notebook-container .notebook-toolbar .btn-overflow {
31
+ margin-left: auto;
24
32
  }
25
33
  .notebook-container .notebook-toolbar .btn-play:hover,
26
34
  .notebook-container .notebook-toolbar .btn-play-selected:hover {
@@ -30,4 +38,20 @@
30
38
  transform: translate(0, -4px);
31
39
  }
32
40
 
41
+ @container (width < 128px) {
42
+ .notebook-toolbar .btn-save {
43
+ display: none;
44
+ }
45
+ }
46
+ @container (width < 96px) {
47
+ .notebook-toolbar .btn-run-selected {
48
+ display: none;
49
+ }
50
+ }
51
+ @container (width < 64px) {
52
+ .notebook-toolbar .btn-run {
53
+ display: none;
54
+ }
55
+ }
56
+
33
57
  /*# sourceMappingURL=NotebookPanel.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/panels/NotebookPanel.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;ACxLE;EACE;;;AAIJ;EACE,SCNS;EDOT,ODUS;;;ACPX;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA,YDYS;ECXT;EACA;EACA,KCtBO;;ADwBP;AAAA;EAEE,ODvBE;;AC0BJ;EACE","file":"NotebookPanel.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 './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\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:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n 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$text-select-color: var(--dh-color-text-highlight);\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 var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\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: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\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: $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\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n$toolbar-bg: $content-bg;\n\n.notebook-title {\n &.is-preview {\n font-style: italic;\n }\n}\n\n.notebook-session-not-connected {\n padding: $spacer-2;\n color: $gray-600;\n}\n\n.notebook-container {\n display: flex;\n flex-direction: column;\n\n .notebook-toolbar {\n display: flex;\n justify-content: center;\n flex-direction: row;\n background: $toolbar-bg;\n border-bottom: 2px solid $background;\n padding: $spacer-1 $spacer-2;\n gap: $spacer-1;\n\n .btn-play:hover,\n .btn-play-selected:hover {\n color: $green;\n }\n\n .icon-create-pq {\n transform: translate(0, -4px);\n }\n }\n}\n","@use 'sass:math';\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:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n 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: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/panels/NotebookPanel.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;ACxLE;EACE;;;AAIJ;EACE,SCNS;EDOT,ODUS;;;ACPX;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA,YDYS;ECXT;EACA;EACA,KCtBO;EDuBP;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE,ODjCE;;ACoCJ;EACE;;;AAQN;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;IACE","file":"NotebookPanel.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 './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\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:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n 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$text-select-color: var(--dh-color-text-highlight);\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 var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\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: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\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: $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\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n$toolbar-bg: $content-bg;\n\n.notebook-title {\n &.is-preview {\n font-style: italic;\n }\n}\n\n.notebook-session-not-connected {\n padding: $spacer-2;\n color: $gray-600;\n}\n\n.notebook-container {\n display: flex;\n flex-direction: column;\n\n .notebook-toolbar {\n display: flex;\n justify-content: flex-start;\n flex-direction: row;\n background: $toolbar-bg;\n border-bottom: 2px solid $background;\n padding: $spacer-1 $spacer-2;\n gap: $spacer-1;\n container-type: inline-size;\n overflow: hidden;\n\n .notebook-toolbar-actions {\n display: contents;\n }\n\n .btn-overflow {\n margin-left: auto;\n }\n\n .btn-play:hover,\n .btn-play-selected:hover {\n color: $green;\n }\n\n .icon-create-pq {\n transform: translate(0, -4px);\n }\n }\n}\n\n// Hide toolbar action buttons one-by-one as the toolbar narrows.\n// Each button is ~32px; breakpoints account for padding (16px) and gaps (4px each).\n// The overflow (⋮) button is always visible.\n@container (width < 128px) {\n .notebook-toolbar .btn-save {\n display: none;\n }\n}\n\n@container (width < 96px) {\n .notebook-toolbar .btn-run-selected {\n display: none;\n }\n}\n\n@container (width < 64px) {\n .notebook-toolbar .btn-run {\n display: none;\n }\n}\n","@use 'sass:math';\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:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n 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: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
@@ -127,7 +127,7 @@ declare class NotebookPanel extends Component<NotebookPanelProps, NotebookPanelS
127
127
  setPreviewStatus(): void;
128
128
  handlePreviewPromotion(): void;
129
129
  getSettings: (initialSettings: editor.IStandaloneEditorConstructionOptions, isMinimapEnabled: boolean) => editor.IStandaloneEditorConstructionOptions;
130
- getOverflowActions: (isMinimapEnabled: boolean, isWordWrapEnabled: boolean, formatOnSave: boolean) => DropdownAction[];
130
+ getOverflowActions: (isMinimapEnabled: boolean, isWordWrapEnabled: boolean, formatOnSave: boolean, runButtonsDisabled: boolean, toolbarDisabled: boolean) => DropdownAction[];
131
131
  savePanelState(): void;
132
132
  handleCloseDiscard(): void;
133
133
  handleCloseSave(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"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"}
@@ -71,8 +71,32 @@ class NotebookPanel extends Component {
71
71
  enabled: isMinimapEnabled
72
72
  }
73
73
  })));
74
- _defineProperty(this, "getOverflowActions", memoize((isMinimapEnabled, isWordWrapEnabled, formatOnSave) => {
74
+ _defineProperty(this, "getOverflowActions", memoize((isMinimapEnabled, isWordWrapEnabled, formatOnSave, runButtonsDisabled, toolbarDisabled) => {
75
75
  var actions = [{
76
+ title: 'Run',
77
+ icon: vsPlay,
78
+ action: this.handleRunAll,
79
+ disabled: runButtonsDisabled,
80
+ shortcut: SHORTCUTS.NOTEBOOK.RUN,
81
+ group: ContextActions.groups.high,
82
+ order: 1
83
+ }, {
84
+ title: 'Run Selected',
85
+ icon: dhRunSelection,
86
+ action: this.handleRunSelected,
87
+ disabled: runButtonsDisabled,
88
+ shortcut: SHORTCUTS.NOTEBOOK.RUN_SELECTED,
89
+ group: ContextActions.groups.high,
90
+ order: 2
91
+ }, {
92
+ title: 'Save',
93
+ icon: vsSave,
94
+ action: this.handleSave,
95
+ disabled: toolbarDisabled,
96
+ shortcut: GLOBAL_SHORTCUTS.SAVE,
97
+ group: ContextActions.groups.high,
98
+ order: 3
99
+ }, {
76
100
  title: 'Find',
77
101
  icon: dhFileSearch,
78
102
  action: this.handleFind,
@@ -1017,8 +1041,17 @@ class NotebookPanel extends Component {
1017
1041
  var notebookSettings = this.props.notebookSettings;
1018
1042
  var isMinimapEnabled = notebookSettings.isMinimapEnabled,
1019
1043
  formatOnSave = notebookSettings.formatOnSave;
1020
- var initialSettings = this.state.settings;
1021
- return this.getOverflowActions(isMinimapEnabled !== null && isMinimapEnabled !== void 0 ? isMinimapEnabled : false, this.getSettings(initialSettings, isMinimapEnabled !== null && isMinimapEnabled !== void 0 ? isMinimapEnabled : false).wordWrap === 'on', formatOnSave !== null && formatOnSave !== void 0 ? formatOnSave : false);
1044
+ var _this$state0 = this.state,
1045
+ initialSettings = _this$state0.settings,
1046
+ session = _this$state0.session,
1047
+ sessionLanguage = _this$state0.sessionLanguage,
1048
+ isLoaded = _this$state0.isLoaded;
1049
+ var settings = this.getSettings(initialSettings, isMinimapEnabled !== null && isMinimapEnabled !== void 0 ? isMinimapEnabled : false);
1050
+ var isSessionConnected = session != null;
1051
+ var isLanguageMatching = sessionLanguage === settings.language;
1052
+ var runButtonsDisabled = !isLoaded || !isSessionConnected || !isLanguageMatching;
1053
+ var toolbarDisabled = !isLoaded;
1054
+ return this.getOverflowActions(isMinimapEnabled !== null && isMinimapEnabled !== void 0 ? isMinimapEnabled : false, settings.wordWrap === 'on', formatOnSave !== null && formatOnSave !== void 0 ? formatOnSave : false, runButtonsDisabled, toolbarDisabled);
1022
1055
  }
1023
1056
  render() {
1024
1057
  var _fileMetadata$itemNam, _notebookSettings$isM2, _settings$value;
@@ -1028,21 +1061,21 @@ class NotebookPanel extends Component {
1028
1061
  tab = _this$props8.glContainer.tab,
1029
1062
  glEventHub = _this$props8.glEventHub,
1030
1063
  notebookSettings = _this$props8.notebookSettings;
1031
- var _this$state0 = this.state,
1032
- changeCount = _this$state0.changeCount,
1033
- savedChangeCount = _this$state0.savedChangeCount,
1034
- error = _this$state0.error,
1035
- isDashboardActive = _this$state0.isDashboardActive,
1036
- isLoaded = _this$state0.isLoaded,
1037
- isLoading = _this$state0.isLoading,
1038
- isPreview = _this$state0.isPreview,
1039
- fileMetadata = _this$state0.fileMetadata,
1040
- session = _this$state0.session,
1041
- sessionLanguage = _this$state0.sessionLanguage,
1042
- initialSettings = _this$state0.settings,
1043
- showCloseModal = _this$state0.showCloseModal,
1044
- showDeleteModal = _this$state0.showDeleteModal,
1045
- showSaveAsModal = _this$state0.showSaveAsModal;
1064
+ var _this$state1 = this.state,
1065
+ changeCount = _this$state1.changeCount,
1066
+ savedChangeCount = _this$state1.savedChangeCount,
1067
+ error = _this$state1.error,
1068
+ isDashboardActive = _this$state1.isDashboardActive,
1069
+ isLoaded = _this$state1.isLoaded,
1070
+ isLoading = _this$state1.isLoading,
1071
+ isPreview = _this$state1.isPreview,
1072
+ fileMetadata = _this$state1.fileMetadata,
1073
+ session = _this$state1.session,
1074
+ sessionLanguage = _this$state1.sessionLanguage,
1075
+ initialSettings = _this$state1.settings,
1076
+ showCloseModal = _this$state1.showCloseModal,
1077
+ showDeleteModal = _this$state1.showDeleteModal,
1078
+ showSaveAsModal = _this$state1.showSaveAsModal;
1046
1079
  // We don't want to steal focus if this isn't shown or it's just a preview
1047
1080
  var focusOnMount = isDashboardActive && !glContainer.isHidden && !isPreview;
1048
1081
  var itemName = (_fileMetadata$itemNam = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName) !== null && _fileMetadata$itemNam !== void 0 ? _fileMetadata$itemNam : NotebookPanel.DEFAULT_NAME;
@@ -1101,44 +1134,47 @@ class NotebookPanel extends Component {
1101
1134
  children: [!isMarkdown && /*#__PURE__*/_jsxs(_Fragment, {
1102
1135
  children: [/*#__PURE__*/_jsxs("div", {
1103
1136
  className: "notebook-toolbar",
1104
- children: [/*#__PURE__*/_jsxs("span", {
1105
- children: [/*#__PURE__*/_jsx(Button, {
1137
+ children: [/*#__PURE__*/_jsxs("div", {
1138
+ className: "notebook-toolbar-actions",
1139
+ children: [/*#__PURE__*/_jsxs("span", {
1140
+ children: [/*#__PURE__*/_jsx(Button, {
1141
+ kind: "ghost",
1142
+ className: "btn-play btn-run",
1143
+ onClick: this.handleRunAll,
1144
+ disabled: runButtonsDisabled,
1145
+ icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {
1146
+ icon: vsPlay,
1147
+ transform: "grow-4"
1148
+ }),
1149
+ tooltip: "Run ".concat(SHORTCUTS.NOTEBOOK.RUN.getDisplayText()),
1150
+ "aria-label": "Run"
1151
+ }), disabledRunButtonTooltip != null && /*#__PURE__*/_jsx(Tooltip, {
1152
+ children: disabledRunButtonTooltip
1153
+ })]
1154
+ }), /*#__PURE__*/_jsxs("span", {
1155
+ children: [/*#__PURE__*/_jsx(Button, {
1156
+ kind: "ghost",
1157
+ className: "btn-play btn-run-selected",
1158
+ onClick: this.handleRunSelected,
1159
+ disabled: runButtonsDisabled,
1160
+ icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {
1161
+ icon: dhRunSelection,
1162
+ transform: "grow-4"
1163
+ }),
1164
+ tooltip: "Run Selected ".concat(SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()),
1165
+ "aria-label": "Run Selected"
1166
+ }), disabledRunSelectedButtonTooltip != null && /*#__PURE__*/_jsx(Tooltip, {
1167
+ children: disabledRunSelectedButtonTooltip
1168
+ })]
1169
+ }), /*#__PURE__*/_jsx(Button, {
1106
1170
  kind: "ghost",
1107
- className: "btn-play",
1108
- onClick: this.handleRunAll,
1109
- disabled: runButtonsDisabled,
1110
- icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {
1111
- icon: vsPlay,
1112
- transform: "grow-4"
1113
- }),
1114
- tooltip: "Run ".concat(SHORTCUTS.NOTEBOOK.RUN.getDisplayText()),
1115
- "aria-label": "Run"
1116
- }), disabledRunButtonTooltip != null && /*#__PURE__*/_jsx(Tooltip, {
1117
- children: disabledRunButtonTooltip
1171
+ className: "btn-save",
1172
+ disabled: toolbarDisabled,
1173
+ onClick: this.handleSave,
1174
+ icon: vsSave,
1175
+ tooltip: "Save ".concat(GLOBAL_SHORTCUTS.SAVE.getDisplayText()),
1176
+ "aria-label": "Save"
1118
1177
  })]
1119
- }), /*#__PURE__*/_jsxs("span", {
1120
- children: [/*#__PURE__*/_jsx(Button, {
1121
- kind: "ghost",
1122
- className: "btn-play",
1123
- onClick: this.handleRunSelected,
1124
- disabled: runButtonsDisabled,
1125
- icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {
1126
- icon: dhRunSelection,
1127
- transform: "grow-4"
1128
- }),
1129
- tooltip: "Run Selected ".concat(SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()),
1130
- "aria-label": "Run Selected"
1131
- }), disabledRunSelectedButtonTooltip != null && /*#__PURE__*/_jsx(Tooltip, {
1132
- children: disabledRunSelectedButtonTooltip
1133
- })]
1134
- }), /*#__PURE__*/_jsx(Button, {
1135
- kind: "ghost",
1136
- className: "mr-auto",
1137
- disabled: toolbarDisabled,
1138
- onClick: this.handleSave,
1139
- icon: vsSave,
1140
- tooltip: "Save ".concat(GLOBAL_SHORTCUTS.SAVE.getDisplayText()),
1141
- "aria-label": "Save"
1142
1178
  }), /*#__PURE__*/_jsx(Button, {
1143
1179
  kind: "ghost",
1144
1180
  className: "btn-overflow",
@@ -1 +1 @@
1
- {"version":3,"file":"NotebookPanel.js","names":["React","Component","Suspense","lazy","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","LoadingOverlay","MonacoUtils","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateNotebookSettings","updateNotebookSettingsAction","getNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","concat","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","_defineProperty","initialSettings","isMinimapEnabled","_objectSpread","minimap","enabled","isWordWrapEnabled","formatOnSave","actions","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","canFormat","push","handleFormat","handleFormatOnSaveChange","handleCloseCancel","bind","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","_panelState$fileMetad","_panelState$isPreview","_panelState$settings","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","_this$props","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","_this$state","notebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","_this$props2","_this$state2","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","_this$state3","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","_this$state4","notebookValue","getValue","_this$state5","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","_this$props3","metadata","tabId","REGISTER_FILE","renameTab","RENAME","_this$state6","fileStorage","loadFile","then","loadedFile","_NotebookPanel$langua","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","_ref","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","_this","_asyncToGenerator","_this$props4","_this$state7","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","SELECT_NOTEBOOK","_this2","_this2$props","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","_notebookSettings$isM","_this$props5","newSettings","_notebookSettings$for","_this$props6","event","_this$props7","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","_this3","_notebookSettings$for2","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","_this$notebook","_this4","_this4$notebook","formatDocument","oldName","newName","_this$state8","curPanelState","JSON","stringify","_this$notebook2","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook3","droppedId","forceUpdate","_len","args","Array","_key","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","_this$state9","CREATE_NOTEBOOK","SEND_COMMAND","_ref3","getOverflowActions","getSettings","render","_fileMetadata$itemNam","_notebookSettings$isM2","_settings$value","_this$props8","_this$state0","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","children","createPortal","className","componentPanel","onTab","onResize","onShow","onTabClicked","onTabFocus","onTabBlur","onSessionOpen","onSessionClose","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","fallback","onLinkClick","onRunCode","transformImageUri","transformLinkUri","isOpen","type","defaultValue","onSubmit","onCancel","notifyOnExtensionChange","storage","headerText","bodyText","onConfirm","confirmButtonText","onDiscard","discardButtonText","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","_ref4","sessionConfig","config","_ref5","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, type ReactElement, Suspense, lazy } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n Button,\n type DropdownAction,\n LoadingOverlay,\n} from '@deephaven/components';\nimport {\n MonacoUtils,\n ScriptEditor,\n ScriptEditorUtils,\n SHORTCUTS,\n} from '@deephaven/console';\nimport {\n type FileStorage,\n FileUtils,\n NewItemModal,\n type File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n updateNotebookSettings as updateNotebookSettingsAction,\n type RootState,\n type WorkspaceSettings,\n getNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n PanelEvent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { type CoreConsoleSession } from '../ConsoleEvents';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './CorePanel';\nimport './NotebookPanel.scss';\n\nconst MarkdownNotebook = lazy(() => import('./MarkdownNotebook'));\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\ninterface Metadata extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled?: boolean;\n formatOnSave?: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelMappedProps {\n notebookSettings: NotebookSetting;\n fileStorage: FileStorage;\n session?: dh.IdeSession;\n sessionLanguage?: string;\n}\n\ninterface NotebookPanelProps\n extends DashboardPanelProps,\n NotebookPanelMappedProps {\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n panelState: PanelState;\n notebooksUrl: string;\n updateNotebookSettings: (\n settings: Partial<WorkspaceSettings['notebookSettings']>\n ) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: editor.IStandaloneEditorConstructionOptions;\n\n session?: dh.IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showDeleteModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n\n formatOnSave: boolean;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n notebookSettings: { isMinimapEnabled: true },\n };\n\n static languageFromFileName(fileName: string): string | null {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props: NotebookPanelProps) {\n super(props);\n\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleFormatOnSaveChange = this.handleFormatOnSaveChange.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.handleFormat = this.handleFormat.bind(this);\n this.canFormat = this.canFormat.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n\n this.tabInitOnce = false;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\n isDashboardActive,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n\n formatOnSave: false,\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { notebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n notebookSettings.isMinimapEnabled !==\n prevProps.notebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n editor?: editor.IStandaloneCodeEditor;\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab: Tab): void {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | undefined {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent(): void {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata: FileMetadata, isPreview: boolean): void {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName) ?? '',\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (\n isMinimapEnabled: boolean,\n isWordWrapEnabled: boolean,\n formatOnSave: boolean\n ) => {\n const actions: DropdownAction[] = [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ];\n\n if (this.canFormat()) {\n actions.push({\n title: 'Format Document',\n action: this.handleFormat,\n group: ContextActions.groups.low,\n order: 10,\n });\n actions.push({\n title: 'Format on Save',\n icon: formatOnSave ? vsCheck : undefined,\n action: this.handleFormatOnSaveChange,\n group: ContextActions.groups.low,\n order: 15,\n });\n }\n\n return actions;\n }\n );\n\n savePanelState(): void {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue =\n changeCount !== savedChangeCount ? value : undefined;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard(): void {\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1, savedChangeCount };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { notebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: notebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n isMinimapEnabled: !(notebookSettings.isMinimapEnabled ?? false),\n };\n updateNotebookSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\n }\n }\n\n handleFormatOnSaveChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n formatOnSave: !(notebookSettings.formatOnSave ?? false),\n };\n updateNotebookSettings(newSettings);\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: React.MouseEvent<HTMLAnchorElement>): void {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n async handleSave(): Promise<void> {\n log.debug('handleSave');\n const { notebookSettings } = this.props;\n const { formatOnSave = false } = notebookSettings;\n if (formatOnSave) {\n await this.handleFormat();\n }\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename) ?? '';\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n oldMetadata &&\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue() ?? '';\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n canFormat(): boolean {\n return this.notebook?.editor != null\n ? MonacoUtils.canFormat(this.notebook.editor)\n : false;\n }\n\n async handleFormat(): Promise<void> {\n if (this.notebook?.editor != null) {\n await MonacoUtils.formatDocument(this.notebook.editor);\n }\n }\n\n handleRenameFile(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened({ session, language }: CoreConsoleSession): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command?: string): void {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n getDropdownOverflowActions(): DropdownAction[] {\n const { notebookSettings } = this.props;\n const { isMinimapEnabled, formatOnSave } = notebookSettings;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n isMinimapEnabled ?? false,\n this.getSettings(initialSettings, isMinimapEnabled ?? false).wordWrap ===\n 'on',\n formatOnSave ?? false\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n notebookSettings,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const settings = this.getSettings(\n initialSettings,\n notebookSettings.isMinimapEnabled ?? false\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\n )}\n />,\n portal // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabClicked={this.handleTabClick}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </Button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <Suspense\n fallback={<LoadingOverlay data-testid=\"notebook-panel-loading\" />}\n >\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n </Suspense>\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): NotebookPanelMappedProps => {\n const fileStorage = getFileStorage(state);\n const notebookSettings = getNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n notebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n {\n updateNotebookSettings: updateNotebookSettingsAction,\n },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NotebookPanel.js","names":["React","Component","Suspense","lazy","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","LoadingOverlay","MonacoUtils","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateNotebookSettings","updateNotebookSettingsAction","getNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","concat","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","_defineProperty","initialSettings","isMinimapEnabled","_objectSpread","minimap","enabled","isWordWrapEnabled","formatOnSave","runButtonsDisabled","toolbarDisabled","actions","title","icon","action","handleRunAll","disabled","shortcut","NOTEBOOK","RUN","group","groups","high","order","handleRunSelected","RUN_SELECTED","handleSave","SAVE","handleFind","FIND","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","canFormat","push","handleFormat","handleFormatOnSaveChange","handleCloseCancel","bind","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","_panelState$fileMetad","_panelState$isPreview","_panelState$settings","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","_this$props","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","_this$state","notebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","_this$props2","_this$state2","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","_this$state3","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","_this$state4","notebookValue","getValue","_this$state5","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","_this$props3","metadata","tabId","REGISTER_FILE","renameTab","RENAME","_this$state6","fileStorage","loadFile","then","loadedFile","_NotebookPanel$langua","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","_ref","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","_this","_asyncToGenerator","_this$props4","_this$state7","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","SELECT_NOTEBOOK","_this2","_this2$props","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","_notebookSettings$isM","_this$props5","newSettings","_notebookSettings$for","_this$props6","event","_this$props7","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","_this3","_notebookSettings$for2","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","_this$notebook","_this4","_this4$notebook","formatDocument","oldName","newName","_this$state8","curPanelState","JSON","stringify","_this$notebook2","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook3","droppedId","forceUpdate","_len","args","Array","_key","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","_this$state9","CREATE_NOTEBOOK","SEND_COMMAND","_ref3","_this$state0","getSettings","isSessionConnected","isLanguageMatching","getOverflowActions","render","_fileMetadata$itemNam","_notebookSettings$isM2","_settings$value","_this$props8","_this$state1","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","contextActions","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","children","createPortal","className","componentPanel","onTab","onResize","onShow","onTabClicked","onTabFocus","onTabBlur","onSessionOpen","onSessionClose","renderTabTooltip","kind","onClick","transform","tooltip","getDisplayText","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","fallback","onLinkClick","onRunCode","transformImageUri","transformLinkUri","isOpen","type","defaultValue","onSubmit","onCancel","notifyOnExtensionChange","storage","headerText","bodyText","onConfirm","confirmButtonText","onDiscard","discardButtonText","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","_ref4","sessionConfig","config","_ref5","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, type ReactElement, Suspense, lazy } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n Button,\n type DropdownAction,\n LoadingOverlay,\n} from '@deephaven/components';\nimport {\n MonacoUtils,\n ScriptEditor,\n ScriptEditorUtils,\n SHORTCUTS,\n} from '@deephaven/console';\nimport {\n type FileStorage,\n FileUtils,\n NewItemModal,\n type File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n updateNotebookSettings as updateNotebookSettingsAction,\n type RootState,\n type WorkspaceSettings,\n getNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n PanelEvent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { type CoreConsoleSession } from '../ConsoleEvents';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './CorePanel';\nimport './NotebookPanel.scss';\n\nconst MarkdownNotebook = lazy(() => import('./MarkdownNotebook'));\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\ninterface Metadata extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled?: boolean;\n formatOnSave?: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelMappedProps {\n notebookSettings: NotebookSetting;\n fileStorage: FileStorage;\n session?: dh.IdeSession;\n sessionLanguage?: string;\n}\n\ninterface NotebookPanelProps\n extends DashboardPanelProps,\n NotebookPanelMappedProps {\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n panelState: PanelState;\n notebooksUrl: string;\n updateNotebookSettings: (\n settings: Partial<WorkspaceSettings['notebookSettings']>\n ) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: editor.IStandaloneEditorConstructionOptions;\n\n session?: dh.IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showDeleteModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n\n formatOnSave: boolean;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n notebookSettings: { isMinimapEnabled: true },\n };\n\n static languageFromFileName(fileName: string): string | null {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props: NotebookPanelProps) {\n super(props);\n\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleFormatOnSaveChange = this.handleFormatOnSaveChange.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.handleFormat = this.handleFormat.bind(this);\n this.canFormat = this.canFormat.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n\n this.tabInitOnce = false;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\n isDashboardActive,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n\n formatOnSave: false,\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { notebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n notebookSettings.isMinimapEnabled !==\n prevProps.notebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n editor?: editor.IStandaloneCodeEditor;\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab: Tab): void {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | undefined {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent(): void {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata: FileMetadata, isPreview: boolean): void {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName) ?? '',\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (\n isMinimapEnabled: boolean,\n isWordWrapEnabled: boolean,\n formatOnSave: boolean,\n runButtonsDisabled: boolean,\n toolbarDisabled: boolean\n ) => {\n const actions: DropdownAction[] = [\n {\n title: 'Run',\n icon: vsPlay,\n action: this.handleRunAll,\n disabled: runButtonsDisabled,\n shortcut: SHORTCUTS.NOTEBOOK.RUN,\n group: ContextActions.groups.high,\n order: 1,\n },\n {\n title: 'Run Selected',\n icon: dhRunSelection,\n action: this.handleRunSelected,\n disabled: runButtonsDisabled,\n shortcut: SHORTCUTS.NOTEBOOK.RUN_SELECTED,\n group: ContextActions.groups.high,\n order: 2,\n },\n {\n title: 'Save',\n icon: vsSave,\n action: this.handleSave,\n disabled: toolbarDisabled,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n group: ContextActions.groups.high,\n order: 3,\n },\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ];\n\n if (this.canFormat()) {\n actions.push({\n title: 'Format Document',\n action: this.handleFormat,\n group: ContextActions.groups.low,\n order: 10,\n });\n actions.push({\n title: 'Format on Save',\n icon: formatOnSave ? vsCheck : undefined,\n action: this.handleFormatOnSaveChange,\n group: ContextActions.groups.low,\n order: 15,\n });\n }\n\n return actions;\n }\n );\n\n savePanelState(): void {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue =\n changeCount !== savedChangeCount ? value : undefined;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard(): void {\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1, savedChangeCount };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { notebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: notebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n isMinimapEnabled: !(notebookSettings.isMinimapEnabled ?? false),\n };\n updateNotebookSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\n }\n }\n\n handleFormatOnSaveChange(): void {\n const { notebookSettings, updateNotebookSettings } = this.props;\n const newSettings = {\n formatOnSave: !(notebookSettings.formatOnSave ?? false),\n };\n updateNotebookSettings(newSettings);\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: React.MouseEvent<HTMLAnchorElement>): void {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n async handleSave(): Promise<void> {\n log.debug('handleSave');\n const { notebookSettings } = this.props;\n const { formatOnSave = false } = notebookSettings;\n if (formatOnSave) {\n await this.handleFormat();\n }\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename) ?? '';\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n oldMetadata &&\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue() ?? '';\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n canFormat(): boolean {\n return this.notebook?.editor != null\n ? MonacoUtils.canFormat(this.notebook.editor)\n : false;\n }\n\n async handleFormat(): Promise<void> {\n if (this.notebook?.editor != null) {\n await MonacoUtils.formatDocument(this.notebook.editor);\n }\n }\n\n handleRenameFile(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened({ session, language }: CoreConsoleSession): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command?: string): void {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n getDropdownOverflowActions(): DropdownAction[] {\n const { notebookSettings } = this.props;\n const { isMinimapEnabled, formatOnSave } = notebookSettings;\n const {\n settings: initialSettings,\n session,\n sessionLanguage,\n isLoaded,\n } = this.state;\n const settings = this.getSettings(\n initialSettings,\n isMinimapEnabled ?? false\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n return this.getOverflowActions(\n isMinimapEnabled ?? false,\n settings.wordWrap === 'on',\n formatOnSave ?? false,\n runButtonsDisabled,\n toolbarDisabled\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n notebookSettings,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const settings = this.getSettings(\n initialSettings,\n notebookSettings.isMinimapEnabled ?? false\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\n )}\n />,\n portal // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabClicked={this.handleTabClick}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <div className=\"notebook-toolbar-actions\">\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play btn-run\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n }\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play btn-run-selected\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"btn-save\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n </div>\n <Button\n kind=\"ghost\"\n className=\"btn-overflow\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </Button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <Suspense\n fallback={<LoadingOverlay data-testid=\"notebook-panel-loading\" />}\n >\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n </Suspense>\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): NotebookPanelMappedProps => {\n const fileStorage = getFileStorage(state);\n const notebookSettings = getNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n notebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n {\n updateNotebookSettings: updateNotebookSettingsAction,\n },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/dashboard-core-plugins",
3
- "version": "1.24.0",
3
+ "version": "1.25.0",
4
4
  "description": "Deephaven Dashboard Core Plugins",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -29,15 +29,15 @@
29
29
  "@deephaven/file-explorer": "^1.22.1",
30
30
  "@deephaven/filters": "^1.1.0",
31
31
  "@deephaven/golden-layout": "^1.24.0",
32
- "@deephaven/grid": "^1.23.0",
32
+ "@deephaven/grid": "^1.25.0",
33
33
  "@deephaven/icons": "^1.2.0",
34
- "@deephaven/iris-grid": "^1.23.0",
34
+ "@deephaven/iris-grid": "^1.25.0",
35
35
  "@deephaven/jsapi-bootstrap": "^1.23.0",
36
36
  "@deephaven/jsapi-components": "^1.23.0",
37
37
  "@deephaven/jsapi-types": "^1.0.0-dev0.40.4",
38
38
  "@deephaven/jsapi-utils": "^1.23.0",
39
39
  "@deephaven/log": "^1.8.0",
40
- "@deephaven/plugin": "^1.24.0",
40
+ "@deephaven/plugin": "^1.25.0",
41
41
  "@deephaven/react-hooks": "^1.21.1",
42
42
  "@deephaven/redux": "^1.23.0",
43
43
  "@deephaven/storage": "^1.8.0",
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "27e12b2ad1e57305d0bb607a8208077d01123d15"
82
+ "gitHead": "de176de003d3058c39373cc8390652795b0896d4"
83
83
  }