@deephaven/iris-grid 0.22.3-beta.0 → 0.22.3-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/AdvancedFilterCreator.css.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -1
  3. package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -1
  4. package/dist/ColumnStatistics.css.map +1 -1
  5. package/dist/ColumnStatistics.d.ts +0 -2
  6. package/dist/ColumnStatistics.d.ts.map +1 -1
  7. package/dist/ColumnStatistics.js +7 -20
  8. package/dist/ColumnStatistics.js.map +1 -1
  9. package/dist/FilterInputField.css.map +1 -1
  10. package/dist/GotoRow.css.map +1 -1
  11. package/dist/IrisGrid.css.map +1 -1
  12. package/dist/IrisGrid.d.ts +1 -1
  13. package/dist/IrisGrid.d.ts.map +1 -1
  14. package/dist/IrisGrid.js +28 -15
  15. package/dist/IrisGrid.js.map +1 -1
  16. package/dist/IrisGridBottomBar.css.map +1 -1
  17. package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
  18. package/dist/IrisGridCellOverflowModal.js +10 -28
  19. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  20. package/dist/IrisGridCopyHandler.css.map +1 -1
  21. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  22. package/dist/IrisGridCopyHandler.js +3 -3
  23. package/dist/IrisGridCopyHandler.js.map +1 -1
  24. package/dist/IrisGridPartitionSelector.css.map +1 -1
  25. package/dist/IrisGridTableModelTemplate.d.ts +1 -1
  26. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  27. package/dist/IrisGridTableModelTemplate.js +3 -2
  28. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  29. package/dist/IrisGridTheme.module.css.map +1 -1
  30. package/dist/PartitionSelectorSearch.css.map +1 -1
  31. package/dist/PendingDataBottomBar.css.map +1 -1
  32. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -1
  33. package/dist/mousehandlers/IrisGridContextMenuHandler.js +2 -2
  34. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  35. package/dist/sidebar/ChartBuilder.css.map +1 -1
  36. package/dist/sidebar/CustomColumnBuilder.css.map +1 -1
  37. package/dist/sidebar/InputEditor.css.map +1 -1
  38. package/dist/sidebar/RollupRows.css.map +1 -1
  39. package/dist/sidebar/SelectDistinctBuilder.css.map +1 -1
  40. package/dist/sidebar/TableCsvExporter.css.map +1 -1
  41. package/dist/sidebar/TableCsvExporter.d.ts +5 -2
  42. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  43. package/dist/sidebar/TableCsvExporter.js +34 -7
  44. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  45. package/dist/sidebar/TableSaver.d.ts +1 -1
  46. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  47. package/dist/sidebar/TableSaver.js +4 -3
  48. package/dist/sidebar/TableSaver.js.map +1 -1
  49. package/dist/sidebar/VisibilityOrderingBuilder.css.map +1 -1
  50. package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -1
  51. package/dist/sidebar/aggregations/Aggregations.css.map +1 -1
  52. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -1
  53. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -1
  54. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/IrisGridBottomBar.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACKA;EACE;EACA;EACA;EACA;EACA;EACA,kBC6Ca;ED5Cb,OCCe;EDAf;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;;AAEF;AAAA;EACE;;AAIJ;EACE,OCxCE;;AD2CJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;AACA;EACE;;AAIJ;EACE;;;AAKN;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA,QA5EkB;EA6ElB;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"IrisGridBottomBar.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$bottom-bar-height: 50px;\n$ease-out-bounce-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n\n.iris-grid-bottom-bar {\n position: absolute;\n bottom: -$bottom-bar-height;\n left: 0;\n right: 0;\n height: calc(#{$bottom-bar-height} * 2);\n background-color: $toast-bg;\n color: $toast-color;\n display: flex;\n flex-direction: row;\n align-content: center;\n padding-left: 1em;\n padding-right: 1em;\n padding-bottom: 50px;\n\n .status-message,\n .error-message {\n flex-grow: 1;\n flex-shrink: 1;\n font-weight: 600;\n margin-right: 1em;\n overflow: hidden;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: -4px;\n user-select: none;\n span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n .svg-inline--fa {\n margin-right: 0.5rem;\n }\n }\n\n .error-message {\n color: $danger;\n }\n\n .buttons-container {\n flex-grow: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .btn {\n min-width: 10rem;\n .svg-inline--fa {\n margin-right: 0.5rem;\n }\n }\n\n .btn:not(:last-child) {\n margin-right: 0.5em;\n }\n }\n}\n\n.iris-grid-bottom-bar-slide-up-enter {\n transform: translate3d(0, 100%, 0);\n}\n\n.iris-grid-bottom-bar-slide-up-enter-active {\n transform: initial;\n transition: transform $transition-long $ease-out-bounce-back;\n}\n\n.iris-grid-bottom-bar-slide-up-enter-done {\n position: relative;\n bottom: 0;\n padding-bottom: 0;\n height: $bottom-bar-height;\n transition: transform $transition-long $ease-out-bounce-back;\n}\n\n.iris-grid-bottom-bar-slide-up-exit {\n transform: initial;\n}\n\n.iris-grid-bottom-bar-slide-up-exit-active {\n transform: translate3d(0, 100%, 0);\n transition: transform $transition-long $ease-out-bounce-back;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $interfacewhite;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $interfacewhite;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $interfacewhite;\n$dropdown-link-hover-color: $interfacewhite;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $interfacewhite;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/IrisGridBottomBar.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACKA;EACE;EACA;EACA;EACA;EACA;EACA,kBC6Ca;ED5Cb,OCCe;EDAf;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;;AAEF;AAAA;EACE;;AAIJ;EACE,OCxCE;;AD2CJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;AACA;EACE;;AAIJ;EACE;;;AAKN;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA,QA5EkB;EA6ElB;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"IrisGridBottomBar.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$bottom-bar-height: 50px;\n$ease-out-bounce-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n\n.iris-grid-bottom-bar {\n position: absolute;\n bottom: -$bottom-bar-height;\n left: 0;\n right: 0;\n height: calc(#{$bottom-bar-height} * 2);\n background-color: $toast-bg;\n color: $toast-color;\n display: flex;\n flex-direction: row;\n align-content: center;\n padding-left: 1em;\n padding-right: 1em;\n padding-bottom: 50px;\n\n .status-message,\n .error-message {\n flex-grow: 1;\n flex-shrink: 1;\n font-weight: 600;\n margin-right: 1em;\n overflow: hidden;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: -4px;\n user-select: none;\n span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n .svg-inline--fa {\n margin-right: 0.5rem;\n }\n }\n\n .error-message {\n color: $danger;\n }\n\n .buttons-container {\n flex-grow: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .btn {\n min-width: 10rem;\n .svg-inline--fa {\n margin-right: 0.5rem;\n }\n }\n\n .btn:not(:last-child) {\n margin-right: 0.5em;\n }\n }\n}\n\n.iris-grid-bottom-bar-slide-up-enter {\n transform: translate3d(0, 100%, 0);\n}\n\n.iris-grid-bottom-bar-slide-up-enter-active {\n transform: initial;\n transition: transform $transition-long $ease-out-bounce-back;\n}\n\n.iris-grid-bottom-bar-slide-up-enter-done {\n position: relative;\n bottom: 0;\n padding-bottom: 0;\n height: $bottom-bar-height;\n transition: transform $transition-long $ease-out-bounce-back;\n}\n\n.iris-grid-bottom-bar-slide-up-exit {\n transform: initial;\n}\n\n.iris-grid-bottom-bar-slide-up-exit-active {\n transform: translate3d(0, 100%, 0);\n transition: transform $transition-long $ease-out-bounce-back;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAW3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAoL5D"}
1
+ {"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAW3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8J5D"}
@@ -1,9 +1,11 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
2
  import { Editor } from '@deephaven/console';
3
- import { Button, ContextActionUtils, Modal, ModalBody, ModalHeader } from '@deephaven/components';
4
- import { vsCopy, vsJson, vsListOrdered, vsPassFilled } from '@deephaven/icons';
3
+ import { Button, CopyButton, Modal, ModalBody, ModalHeader } from '@deephaven/components';
4
+ import { vsJson, vsListOrdered } from '@deephaven/icons';
5
5
  import "./IrisGridCellOverflowModal.css";
6
6
  export default function IrisGridCellOverflowModal(_ref) {
7
+ var _editorRef$current$ge, _editorRef$current2;
8
+
7
9
  var {
8
10
  text,
9
11
  isOpen,
@@ -14,9 +16,7 @@ export default function IrisGridCellOverflowModal(_ref) {
14
16
  var [showLineNumbers, setShowLineNumbers] = useState(false);
15
17
  var [isFormatted, setIsFormatted] = useState(false);
16
18
  var [canFormat, setCanFormat] = useState(false);
17
- var editorRef = useRef();
18
- var copiedTimeout = useRef(null);
19
- var [copied, setCopied] = useState(false); // Update format button on open
19
+ var editorRef = useRef(); // Update format button on open
20
20
 
21
21
  useEffect(function enableFormatButtonWhenOpen() {
22
22
  if (!isOpen) {
@@ -46,32 +46,15 @@ export default function IrisGridCellOverflowModal(_ref) {
46
46
  });
47
47
  }
48
48
  }, [showLineNumbers]);
49
- useEffect(() => {
50
- if (copiedTimeout.current) clearTimeout(copiedTimeout.current);
51
- copiedTimeout.current = setTimeout(() => {
52
- setCopied(false);
53
- }, 1000);
54
- return () => {
55
- if (copiedTimeout.current) clearTimeout(copiedTimeout.current);
56
- };
57
- }, [copied]);
58
-
59
- function copyContents() {
60
- var _editorRef$current$ge, _editorRef$current;
61
-
62
- ContextActionUtils.copyToClipboard((_editorRef$current$ge = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text).then(() => {
63
- setCopied(true);
64
- });
65
- }
66
49
 
67
50
  function toggleLineNumbers() {
68
51
  setShowLineNumbers(!showLineNumbers);
69
52
  }
70
53
 
71
54
  function formatAsJSON() {
72
- var _editorRef$current2;
55
+ var _editorRef$current;
73
56
 
74
- var model = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getModel();
57
+ var model = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel();
75
58
 
76
59
  if (!canFormat || !model) {
77
60
  return;
@@ -137,11 +120,10 @@ export default function IrisGridCellOverflowModal(_ref) {
137
120
  toggle: onClose
138
121
  }, /*#__PURE__*/React.createElement("h5", {
139
122
  className: "overflow-modal-title"
140
- }, "Cell Contents"), /*#__PURE__*/React.createElement(Button, {
123
+ }, "Cell Contents"), /*#__PURE__*/React.createElement(CopyButton, {
141
124
  kind: "inline",
142
- icon: copied ? vsPassFilled : vsCopy,
143
- tooltip: copied ? 'Copied contents' : 'Copy contents',
144
- onClick: copyContents
125
+ tooltip: "Copy cell contents",
126
+ copy: (_editorRef$current$ge = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text
145
127
  }), /*#__PURE__*/React.createElement(Button, {
146
128
  kind: "inline",
147
129
  active: showLineNumbers,
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCellOverflowModal.js","names":["React","useEffect","useRef","useState","Editor","Button","ContextActionUtils","Modal","ModalBody","ModalHeader","vsCopy","vsJson","vsListOrdered","vsPassFilled","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","copiedTimeout","copied","setCopied","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","clearTimeout","setTimeout","copyContents","copyToClipboard","getValue","then","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"sources":["../src/IrisGridCellOverflowModal.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport * as monaco from 'monaco-editor';\nimport {\n Button,\n ContextActionUtils,\n Modal,\n ModalBody,\n ModalHeader,\n} from '@deephaven/components';\nimport { vsCopy, vsJson, vsListOrdered, vsPassFilled } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactElement | null {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n const copiedTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [copied, setCopied] = useState(false);\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n useEffect(() => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n copiedTimeout.current = setTimeout(() => {\n setCopied(false);\n }, 1000);\n return () => {\n if (copiedTimeout.current) clearTimeout(copiedTimeout.current);\n };\n }, [copied]);\n\n function copyContents() {\n ContextActionUtils.copyToClipboard(\n editorRef.current?.getValue() ?? text\n ).then(() => {\n setCopied(true);\n });\n }\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <Button\n kind=\"inline\"\n icon={copied ? vsPassFilled : vsCopy}\n tooltip={copied ? 'Copied contents' : 'Copy contents'}\n onClick={copyContents}\n />\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridCellOverflowModal.js","names":["React","useEffect","useRef","useState","Editor","Button","CopyButton","Modal","ModalBody","ModalHeader","vsJson","vsListOrdered","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","getValue","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"sources":["../src/IrisGridCellOverflowModal.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport * as monaco from 'monaco-editor';\nimport {\n Button,\n CopyButton,\n Modal,\n ModalBody,\n ModalHeader,\n} from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactElement | null {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <CopyButton\n kind=\"inline\"\n tooltip=\"Copy cell contents\"\n copy={editorRef.current?.getValue() ?? text}\n />\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/IrisGridCopyHandler.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACIA;EACE;EACA;EACA;EACA;EACA;EACA,kBC8Ca;ED7Cb,OCEe;EDDf;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE,OCxBK;EDyBL,cCzBK;ED0BL;;AAGF;EACE;;;AAKN;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"IrisGridCopyHandler.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$ease-out-bounce-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n\n.iris-grid-copy-handler {\n position: absolute;\n bottom: -50px;\n left: 0;\n right: 0;\n height: 100px;\n background-color: $toast-bg;\n color: $toast-color;\n display: flex;\n flex-direction: row;\n align-content: center;\n padding-left: 1em;\n padding-right: 1em;\n padding-bottom: 50px;\n\n .status-message {\n flex-grow: 1;\n font-weight: 600;\n margin-right: 1em;\n text-overflow: ellipsis;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: -4px;\n user-select: none;\n }\n\n .buttons-container {\n flex-grow: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .btn {\n min-width: 10rem;\n }\n\n .btn-cancel {\n color: $gray-100;\n border-color: $gray-100;\n margin-right: 0.5em;\n }\n\n .btn-copy:disabled {\n opacity: 1;\n }\n }\n}\n\n.copy-slide-up-enter {\n transform: translateY(50px);\n}\n\n.copy-slide-up-enter-active {\n transform: initial;\n transition: transform $transition-long $ease-out-bounce-back;\n}\n\n.copy-slide-up-exit {\n transform: initial;\n}\n\n.copy-slide-up-exit-active {\n transform: translateY(50px);\n transition: transform $transition-long $ease-out-bounce-back;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $interfacewhite;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $interfacewhite;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $interfacewhite;\n$dropdown-link-hover-color: $interfacewhite;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $interfacewhite;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/IrisGridCopyHandler.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACIA;EACE;EACA;EACA;EACA;EACA;EACA,kBC8Ca;ED7Cb,OCEe;EDDf;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE,OCxBK;EDyBL,cCzBK;ED0BL;;AAGF;EACE;;;AAKN;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"IrisGridCopyHandler.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$ease-out-bounce-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n\n.iris-grid-copy-handler {\n position: absolute;\n bottom: -50px;\n left: 0;\n right: 0;\n height: 100px;\n background-color: $toast-bg;\n color: $toast-color;\n display: flex;\n flex-direction: row;\n align-content: center;\n padding-left: 1em;\n padding-right: 1em;\n padding-bottom: 50px;\n\n .status-message {\n flex-grow: 1;\n font-weight: 600;\n margin-right: 1em;\n text-overflow: ellipsis;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: -4px;\n user-select: none;\n }\n\n .buttons-container {\n flex-grow: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .btn {\n min-width: 10rem;\n }\n\n .btn-cancel {\n color: $gray-100;\n border-color: $gray-100;\n margin-right: 0.5em;\n }\n\n .btn-copy:disabled {\n opacity: 1;\n }\n }\n}\n\n.copy-slide-up-enter {\n transform: translateY(50px);\n}\n\n.copy-slide-up-enter-active {\n transform: initial;\n transition: transform $transition-long $ease-out-bounce-back;\n}\n\n.copy-slide-up-exit {\n transform: initial;\n}\n\n.copy-slide-up-exit-active {\n transform: translateY(50px);\n transition: transform $transition-long $ease-out-bounce-back;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,aAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;IAyDlB,SAAS,IAAI,IAAI;IAQjB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAOrB,MAAM,IAAI,GAAG,CAAC,OAAO;CAgEtB;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAIlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,aAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;IAyDlB,SAAS,IAAI,IAAI;IAQjB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAOrB,MAAM,IAAI,GAAG,CAAC,OAAO;CAgEtB;AAED,eAAe,mBAAmB,CAAC"}
@@ -3,9 +3,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
3
3
  import React, { Component } from 'react';
4
4
  import classNames from 'classnames';
5
5
  import { CSSTransition } from 'react-transition-group';
6
- import { Button, ContextActionUtils, LoadingSpinner, ThemeExport } from '@deephaven/components';
6
+ import { Button, LoadingSpinner, ThemeExport } from '@deephaven/components';
7
7
  import { GridRange, GridUtils } from '@deephaven/grid';
8
- import { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';
8
+ import { CanceledPromiseError, copyToClipboard, PromiseUtils } from '@deephaven/utils';
9
9
  import Log from '@deephaven/log';
10
10
  import IrisGridUtils from "./IrisGridUtils.js";
11
11
  import IrisGridBottomBar from "./IrisGridBottomBar.js";
@@ -201,7 +201,7 @@ class IrisGridCopyHandler extends Component {
201
201
  copyText(text) {
202
202
  log.debug2('copyText', text);
203
203
  this.textData = text;
204
- ContextActionUtils.copyToClipboard(text).then(() => {
204
+ copyToClipboard(text).then(() => {
205
205
  this.setState({
206
206
  copyState: IrisGridCopyHandler.COPY_STATES.DONE
207
207
  });
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCopyHandler.js","names":["React","Component","classNames","CSSTransition","Button","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","state","error","undefined","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","textData","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","fetchPromise","makeCancelable","textSnapshot","catch","cancel","hideTimer","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs"],"sources":["../src/IrisGridCopyHandler.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n Button,\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n PromiseUtils,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\nimport IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('IrisGridCopyHandler');\n\ntype Values<T> = T[keyof T];\n\ntype ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;\n\nexport type CopyOperation = {\n ranges: GridRange[];\n includeHeaders: boolean;\n formatValues?: boolean;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n error?: string;\n};\n\ninterface IrisGridCopyHandlerProps {\n model: IrisGridModel;\n copyOperation: CopyOperation;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n}\n\ninterface IrisGridCopyHandlerState {\n error?: string;\n copyState: string;\n buttonState: string;\n isShown: boolean;\n rowCount: number;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component<\n IrisGridCopyHandlerProps,\n IrisGridCopyHandlerState\n> {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static defaultProps = {\n copyOperation: null,\n onEntering: (): void => undefined,\n onEntered: (): void => undefined,\n onExiting: (): void => undefined,\n onExited: (): void => undefined,\n };\n\n static getStatusMessageText(copyState: string, rowCount: number): string {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState: ButtonStateType): string {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props: IrisGridCopyHandlerProps) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount(): void {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount(): void {\n this.stopCopy();\n }\n\n textData?: string;\n\n hideTimer?: ReturnType<typeof setTimeout>;\n\n fetchPromise?: CancelablePromise<string>;\n\n startCopy(): void {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: undefined });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy(): void {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick(): void {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick(): void {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick(): void {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout(): void {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text: string): void {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch(): void {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue =\n formatValues != null && formatValues\n ? (value: unknown, column: Column) =>\n model.displayString(value, column.type, column.name)\n : (value: unknown) => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then((text: string) => {\n this.fetchPromise = undefined;\n this.copyText(text);\n })\n .catch((error: unknown) => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = undefined;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch(): void {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n\n startHideTimer(): void {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer(): void {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n\n render(): JSX.Element {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <Button\n kind={isFetching ? 'tertiary' : 'primary'}\n className={classNames('btn-copy', {\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </Button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nexport default IrisGridCopyHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridCopyHandler.js","names":["React","Component","classNames","CSSTransition","Button","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","copyToClipboard","PromiseUtils","Log","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","state","error","undefined","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","textData","stopFetch","stopHideTimer","copyText","text","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","fetchPromise","makeCancelable","textSnapshot","catch","cancel","hideTimer","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs"],"sources":["../src/IrisGridCopyHandler.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { Button, LoadingSpinner, ThemeExport } from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n copyToClipboard,\n PromiseUtils,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\nimport IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('IrisGridCopyHandler');\n\ntype Values<T> = T[keyof T];\n\ntype ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;\n\nexport type CopyOperation = {\n ranges: GridRange[];\n includeHeaders: boolean;\n formatValues?: boolean;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n error?: string;\n};\n\ninterface IrisGridCopyHandlerProps {\n model: IrisGridModel;\n copyOperation: CopyOperation;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n}\n\ninterface IrisGridCopyHandlerState {\n error?: string;\n copyState: string;\n buttonState: string;\n isShown: boolean;\n rowCount: number;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component<\n IrisGridCopyHandlerProps,\n IrisGridCopyHandlerState\n> {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static defaultProps = {\n copyOperation: null,\n onEntering: (): void => undefined,\n onEntered: (): void => undefined,\n onExiting: (): void => undefined,\n onExited: (): void => undefined,\n };\n\n static getStatusMessageText(copyState: string, rowCount: number): string {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState: ButtonStateType): string {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props: IrisGridCopyHandlerProps) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount(): void {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount(): void {\n this.stopCopy();\n }\n\n textData?: string;\n\n hideTimer?: ReturnType<typeof setTimeout>;\n\n fetchPromise?: CancelablePromise<string>;\n\n startCopy(): void {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: undefined });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy(): void {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick(): void {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick(): void {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick(): void {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout(): void {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text: string): void {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch(): void {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue =\n formatValues != null && formatValues\n ? (value: unknown, column: Column) =>\n model.displayString(value, column.type, column.name)\n : (value: unknown) => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then((text: string) => {\n this.fetchPromise = undefined;\n this.copyText(text);\n })\n .catch((error: unknown) => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = undefined;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch(): void {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n\n startHideTimer(): void {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer(): void {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n\n render(): JSX.Element {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <Button\n kind={isFetching ? 'tertiary' : 'primary'}\n className={classNames('btn-copy', {\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </Button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nexport default IrisGridCopyHandler;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,SAASC,MAAT,EAAiBC,cAAjB,EAAiCC,WAAjC,QAAoD,uBAApD;AACA,SACEC,SADF,EAEEC,SAFF,QAKO,iBALP;AAMA,SAEEC,oBAFF,EAGEC,eAHF,EAIEC,YAJF,QAKO,kBALP;AAMA,OAAOC,GAAP,MAAgB,gBAAhB;OAEOC,a;OACAC,iB;;AAIP,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAJ,CAAW,qBAAX,CAAZ;;AA+BA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAN,SAAkChB,SAAlC,CAGE;EAKA;AACF;AACA;EAoC6B,OAApBiB,oBAAoB,CAACC,SAAD,EAAoBC,QAApB,EAA8C;IACvE,QAAQD,SAAR;MACE,KAAKF,mBAAmB,CAACI,WAApB,CAAgCC,qBAArC;QACE,+CAAwCF,QAAQ,CAACG,cAAT,EAAxC;;MACF,KAAKN,mBAAmB,CAACI,WAApB,CAAgCG,cAArC;QACE,yBAAkBJ,QAAQ,CAACG,cAAT,EAAlB;;MACF,KAAKN,mBAAmB,CAACI,WAApB,CAAgCI,WAArC;QACE,OAAO,sBAAP;;MACF,KAAKR,mBAAmB,CAACI,WAApB,CAAgCK,iBAArC;QACE,0BAAmBN,QAAQ,CAACG,cAAT,EAAnB;;MACF,KAAKN,mBAAmB,CAACI,WAApB,CAAgCM,IAArC;QACE,OAAO,sBAAP;;MACF;QACE,OAAO,EAAP;IAZJ;EAcD;;EAEuB,OAAjBC,iBAAiB,CAACC,WAAD,EAAuC;IAC7D,QAAQA,WAAR;MACE,KAAKZ,mBAAmB,CAACa,aAApB,CAAkCJ,iBAAvC;QACE,OAAO,UAAP;;MACF,KAAKT,mBAAmB,CAACa,aAApB,CAAkCC,aAAvC;QACE,OAAO,eAAP;;MACF,KAAKd,mBAAmB,CAACa,aAApB,CAAkCE,KAAvC;QACE,OAAO,OAAP;;MACF;QACE,OAAO,MAAP;IARJ;EAUD;;EAEDC,WAAW,CAACC,KAAD,EAAkC;IAC3C,MAAMA,KAAN;;IAD2C;;IAAA;;IAAA;;IAG3C,KAAKC,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BC,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKE,eAAL,GAAuB,KAAKA,eAAL,CAAqBF,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKG,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBH,IAAvB,CAA4B,IAA5B,CAAzB;IAEA,KAAKI,KAAL,GAAa;MACXC,KAAK,EAAEC,SADI;MAEXvB,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCsB,IAFhC;MAGXd,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCc,IAHpC;MAIXC,OAAO,EAAE,KAJE;MAKXzB,QAAQ,EAAE;IALC,CAAb;EAOD;;EAED0B,iBAAiB,GAAS;IACxB,IAAM;MAAEC;IAAF,IAAoB,KAAKb,KAA/B;;IACA,IAAIa,aAAa,IAAI,IAArB,EAA2B;MACzB,KAAKC,SAAL;IACD;EACF;;EAEDC,kBAAkB,CAACC,SAAD,EAA4C;IAC5D,IAAM;MAAEH;IAAF,IAAoB,KAAKb,KAA/B;;IACA,IAAIgB,SAAS,CAACH,aAAV,KAA4BA,aAAhC,EAA+C;MAC7C,KAAKC,SAAL;IACD;EACF;;EAEDG,oBAAoB,GAAS;IAC3B,KAAKC,QAAL;EACD;;EAQDJ,SAAS,GAAS;IAChBjC,GAAG,CAACsC,MAAJ,CAAW,WAAX;IAEA,KAAKD,QAAL;IAEA,IAAM;MAAEL;IAAF,IAAoB,KAAKb,KAA/B;;IACA,IAAIa,aAAa,IAAI,IAArB,EAA2B;MACzBhC,GAAG,CAACsC,MAAJ,CAAW,uCAAX;MACA,KAAKC,QAAL,CAAc;QAAET,OAAO,EAAE;MAAX,CAAd;MACA;IACD;;IAED,IAAM;MAAEU,MAAF;MAAUd;IAAV,IAAoBM,aAA1B;;IACA,IAAIN,KAAK,IAAI,IAAb,EAAmB;MACjB1B,GAAG,CAACyC,KAAJ,CAAU,oBAAV,EAAgCf,KAAhC;MACA,KAAKa,QAAL,CAAc;QACZT,OAAO,EAAE,IADG;QAEZ1B,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCM,IAF/B;QAGZc;MAHY,CAAd;MAKA,KAAKgB,cAAL;MACA;IACD;;IAED,IAAMrC,QAAQ,GAAGb,SAAS,CAACa,QAAV,CAAmBmC,MAAnB,CAAjB;IAEA,KAAKD,QAAL,CAAc;MAAElC,QAAF;MAAYyB,OAAO,EAAE,IAArB;MAA2BJ,KAAK,EAAEC;IAAlC,CAAd;;IAEA,IAAItB,QAAQ,GAAGH,mBAAmB,CAACyC,mBAAnC,EAAwD;MACtD,KAAKJ,QAAL,CAAc;QACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCc,IADnC;QAEZzB,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCC;MAF/B,CAAd;IAID,CALD,MAKO;MACL,KAAKqC,UAAL;IACD;EACF;;EAEDP,QAAQ,GAAS;IACf,KAAKQ,QAAL,GAAgBlB,SAAhB;IACA,KAAKmB,SAAL;IACA,KAAKC,aAAL;EACD;;EAED3B,qBAAqB,GAAS;IAC5BpB,GAAG,CAACsC,MAAJ,CAAW,uBAAX;IAEA,IAAM;MAAElC;IAAF,IAAgB,KAAKqB,KAA3B;;IACA,IAAIrB,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IAAlD,EAAwD;MACtD,KAAK2B,QAAL,CAAc;QAAET,OAAO,EAAE;MAAX,CAAd;IACD;EACF;;EAEDR,iBAAiB,GAAS;IACxBtB,GAAG,CAACsC,MAAJ,CAAW,mBAAX;IAEA,KAAKQ,SAAL;IACA,KAAKP,QAAL,CAAc;MAAET,OAAO,EAAE;IAAX,CAAd;EACD;;EAEDP,eAAe,GAAS;IACtBvB,GAAG,CAACsC,MAAJ,CAAW,iBAAX;;IAEA,IAAI,KAAKO,QAAL,IAAiB,IAArB,EAA2B;MACzB,KAAKG,QAAL,CAAc,KAAKH,QAAnB;IACD,CAFD,MAEO;MACL,KAAKD,UAAL;IACD;EACF;;EAEDpB,iBAAiB,GAAS;IACxBxB,GAAG,CAACsC,MAAJ,CAAW,mBAAX;IAEA,KAAKS,aAAL;IAEA,KAAKR,QAAL,CAAc;MAAET,OAAO,EAAE;IAAX,CAAd;EACD;;EAEDkB,QAAQ,CAACC,IAAD,EAAqB;IAC3BjD,GAAG,CAACsC,MAAJ,CAAW,UAAX,EAAuBW,IAAvB;IAEA,KAAKJ,QAAL,GAAgBI,IAAhB;IAEAtD,eAAe,CAACsD,IAAD,CAAf,CAAsBC,IAAtB,CACE,MAAM;MACJ,KAAKX,QAAL,CAAc;QAAEnC,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCM;MAA7C,CAAd;MACA,KAAK8B,cAAL;IACD,CAJH,EAKEhB,KAAK,IAAI;MACP1B,GAAG,CAAC0B,KAAJ,CAAU,gBAAV,EAA4BA,KAA5B;MACA,KAAKa,QAAL,CAAc;QACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCC,aADnC;QAEZZ,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCG;MAF/B,CAAd;IAID,CAXH;EAaD;;EAEDmC,UAAU,GAAS;IACjB,KAAKE,SAAL;IAEA,KAAKP,QAAL,CAAc;MACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCJ,iBADnC;MAEZP,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCK;IAF/B,CAAd;IAKA,IAAM;MAAEwC,KAAF;MAASnB;IAAT,IAA2B,KAAKb,KAAtC;IACA,IAAM;MACJqB,MADI;MAEJY,cAFI;MAGJC,gBAHI;MAIJC,YAJI;MAKJC;IALI,IAMFvB,aANJ;IAOAhC,GAAG,CAACyC,KAAJ,CAAU,YAAV,EAAwBD,MAAxB;IAEA,IAAMgB,aAAa,GAAG1D,aAAa,CAAC2D,gBAAd,CAA+BJ,gBAA/B,CAAtB;IACA,IAAIK,WAAW,GAAGjE,SAAS,CAACkE,cAAV,CAAyBnB,MAAzB,EAAiCc,YAAjC,CAAlB;;IACA,IAAIE,aAAa,CAACI,MAAd,GAAuB,CAA3B,EAA8B;MAC5B,IAAMC,cAAc,GAAGL,aAAa,CAACM,GAAd,CAAkBtE,SAAS,CAACuE,UAA5B,CAAvB;MACAL,WAAW,GAAGlE,SAAS,CAACwE,wBAAV,CACZN,WADY,EAEZG,cAFY,CAAd;IAID,CA1BgB,CA4BjB;;;IACA,IAAMI,WAAW,GACfV,YAAY,IAAI,IAAhB,IAAwBA,YAAxB,GACI,CAACW,KAAD,EAAiBC,MAAjB,KACEhB,KAAK,CAACiB,aAAN,CAAoBF,KAApB,EAA2BC,MAAM,CAACE,IAAlC,EAAwCF,MAAM,CAACG,IAA/C,CAFN,GAGKJ,KAAD,cAAuBA,KAAvB,CAJN;IAMA,KAAKK,YAAL,GAAoB3E,YAAY,CAAC4E,cAAb,CAClBrB,KAAK,CAACsB,YAAN,CAAmBf,WAAnB,EAAgCN,cAAhC,EAAgDa,WAAhD,CADkB,CAApB;IAGA,KAAKM,YAAL,CACGrB,IADH,CACSD,IAAD,IAAkB;MACtB,KAAKsB,YAAL,GAAoB5C,SAApB;MACA,KAAKqB,QAAL,CAAcC,IAAd;IACD,CAJH,EAKGyB,KALH,CAKUhD,KAAD,IAAoB;MACzB,IAAIA,KAAK,YAAYhC,oBAArB,EAA2C;QACzCM,GAAG,CAACyC,KAAJ,CAAU,sBAAV;MACD,CAFD,MAEO;QACLzC,GAAG,CAAC0B,KAAJ,CAAU,yBAAV,EAAqCA,KAArC;QACA,KAAK6C,YAAL,GAAoB5C,SAApB;QACA,KAAKY,QAAL,CAAc;UACZzB,WAAW,EAAEZ,mBAAmB,CAACa,aAApB,CAAkCE,KADnC;UAEZb,SAAS,EAAEF,mBAAmB,CAACI,WAApB,CAAgCI;QAF/B,CAAd;MAID;IACF,CAhBH;EAiBD;;EAEDoC,SAAS,GAAS;IAChB,IAAI,KAAKyB,YAAT,EAAuB;MACrBvE,GAAG,CAACsC,MAAJ,CAAW,WAAX;MACA,KAAKiC,YAAL,CAAkBI,MAAlB;MACA,KAAKJ,YAAL,GAAoB5C,SAApB;IACD;EACF;;EAEDe,cAAc,GAAS;IACrB,KAAKK,aAAL;IAEA,KAAK6B,SAAL,GAAiBC,UAAU,CACzB,KAAKrD,iBADoB,EAEzBtB,mBAAmB,CAAC4E,YAFK,CAA3B;EAID;;EAED/B,aAAa,GAAS;IACpB,IAAI,KAAK6B,SAAL,IAAkB,IAAtB,EAA4B;MAC1BG,YAAY,CAAC,KAAKH,SAAN,CAAZ;MACA,KAAKA,SAAL,GAAiBjD,SAAjB;IACD;EACF;;EAEDqD,MAAM,GAAgB;IACpB,IAAM;MAAEC,UAAF;MAAcC,SAAd;MAAyBC,SAAzB;MAAoCC;IAApC,IAAiD,KAAKjE,KAA5D;IACA,IAAM;MAAEL,WAAF;MAAeV,SAAf;MAA0B0B,OAA1B;MAAmCzB,QAAnC;MAA6CqB;IAA7C,IAAuD,KAAKD,KAAlE;IAEA,IAAM4D,SAAS,GACbjF,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IAA9C,GACI,MADJ,GAEI,eAHN;IAIA,IAAM0E,cAAc,GAAGpF,mBAAmB,CAACW,iBAApB,CAAsCC,WAAtC,CAAvB;IACA,IAAMyE,iBAAiB,GACrB7D,KADqB,aACrBA,KADqB,cACrBA,KADqB,GACZxB,mBAAmB,CAACC,oBAApB,CAAyCC,SAAzC,EAAoDC,QAApD,CADX;IAEA,IAAMmF,wBAAwB,GAC5BpF,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IADhD;IAEA,IAAM6E,UAAU,GACd3E,WAAW,KAAKZ,mBAAmB,CAACa,aAApB,CAAkCJ,iBADpD;IAEA,IAAM+E,MAAM,GAAGtF,SAAS,KAAKF,mBAAmB,CAACI,WAApB,CAAgCM,IAA7D;IAEA,oBACE,oBAAC,iBAAD;MACE,SAAS,EAAEyE,SADb;MAEE,OAAO,EAAEvD,OAFX;MAGE,SAAS,EAAE3C,UAAU,CAAC,wBAAD,EAA2B;QAC9C,aAAauG;MADiC,CAA3B,CAHvB;MAME,OAAO,EAAE,KAAKtE,qBANhB;MAOE,UAAU,EAAE6D,UAPd;MAQE,SAAS,EAAEC,SARb;MASE,SAAS,EAAEC,SATb;MAUE,QAAQ,EAAEC;IAVZ,gBAYE;MAAK,SAAS,EAAC;IAAf,gBACE,kCAAOG,iBAAP,CADF,CAZF,eAeE,oBAAC,aAAD;MACE,EAAE,EAAEC,wBADN;MAEE,OAAO,EAAEjG,WAAW,CAACoG,YAFvB;MAGE,UAAU,EAAC,MAHb;MAIE,YAAY,MAJd;MAKE,aAAa;IALf,gBAOE;MAAK,SAAS,EAAC;IAAf,gBACE;MACE,IAAI,EAAC,QADP;MAEE,SAAS,EAAC,sCAFZ;MAGE,OAAO,EAAE,KAAKrE;IAHhB,YADF,eAQE,oBAAC,MAAD;MACE,IAAI,EAAEmE,UAAU,GAAG,UAAH,GAAgB,SADlC;MAEE,SAAS,EAAEtG,UAAU,CAAC,UAAD,EAAa;QAChC,eAAesG;MADiB,CAAb,CAFvB;MAKE,OAAO,EAAE,KAAKlE,eALhB;MAME,QAAQ,EAAEkE;IANZ,GAQGA,UAAU,iBAAI,oBAAC,cAAD,OARjB,EASGH,cATH,CARF,CAPF,CAfF,CADF;EA8CD;;AApWD;;gBAHIpF,mB,yBAIyB,K;;gBAJzBA,mB,kBAMkB,I;;gBANlBA,mB,iBAWiB;EACnB;EACA0B,IAAI,EAAE,MAFa;EAInB;EACArB,qBAAqB,EAAE,uBALJ;EAOnB;EACAI,iBAAiB,EAAE,mBARA;EAUnB;EACAD,WAAW,EAAE,aAXM;EAanB;EACAD,cAAc,EAAE,gBAdG;EAgBnB;EACAG,IAAI,EAAE;AAjBa,C;;gBAXjBV,mB,mBA+BmB;EACrB2B,IAAI,EAAE,MADe;EAErBlB,iBAAiB,EAAE,mBAFE;EAGrBK,aAAa,EAAE,eAHM;EAIrBC,KAAK,EAAE;AAJc,C;;gBA/BnBf,mB,kBAsCkB;EACpB8B,aAAa,EAAE,IADK;EAEpBiD,UAAU,EAAE,MAAYtD,SAFJ;EAGpBuD,SAAS,EAAE,MAAYvD,SAHH;EAIpBwD,SAAS,EAAE,MAAYxD,SAJH;EAKpByD,QAAQ,EAAE,MAAYzD;AALF,C;;AAoUxB,eAAezB,mBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/IrisGridPartitionSelector.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACGA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA,QAxB4B;;AA0B9B;EACE;EACA;;AAGJ;EACE;;AAEF;EACE,OCxBa;EDyBb,cCzBa;ED0Bb;EACA;;AAEF;EACE;EACA;EACA","file":"IrisGridPartitionSelector.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n$partition-selector-color: $white;\n$partition-selector-input-height: 2.25em;\n.iris-grid-partition-selector {\n display: flex;\n flex-wrap: wrap;\n background: transparent;\n vertical-align: middle;\n .status-message {\n text-overflow: ellipsis;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5em;\n white-space: nowrap;\n }\n div {\n flex-grow: 0;\n }\n .input-group {\n width: auto;\n align-items: center;\n .form-control {\n background-color: transparent;\n border: 2px solid $partition-selector-color;\n border-right: none;\n height: $partition-selector-input-height;\n }\n .btn {\n background-color: transparent;\n margin: 0;\n }\n }\n .iris-grid-partition-selector-spacer {\n flex-grow: 1;\n }\n .btn-outline-primary {\n color: $white;\n border-color: $white;\n margin: 0.35em 0.3em;\n padding: 0.25em 0.5em;\n }\n .btn-close {\n padding: 0 0.5em;\n margin: 0.25em 0.25em 0.25em 0;\n min-width: 0;\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $interfacewhite;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $interfacewhite;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $interfacewhite;\n$dropdown-link-hover-color: $interfacewhite;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $interfacewhite;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../src/IrisGridPartitionSelector.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACGA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAEF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA,QAxB4B;;AA0B9B;EACE;EACA;;AAGJ;EACE;;AAEF;EACE,OCxBa;EDyBb,cCzBa;ED0Bb;EACA;;AAEF;EACE;EACA;EACA","file":"IrisGridPartitionSelector.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n$partition-selector-color: $white;\n$partition-selector-input-height: 2.25em;\n.iris-grid-partition-selector {\n display: flex;\n flex-wrap: wrap;\n background: transparent;\n vertical-align: middle;\n .status-message {\n text-overflow: ellipsis;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5em;\n white-space: nowrap;\n }\n div {\n flex-grow: 0;\n }\n .input-group {\n width: auto;\n align-items: center;\n .form-control {\n background-color: transparent;\n border: 2px solid $partition-selector-color;\n border-right: none;\n height: $partition-selector-input-height;\n }\n .btn {\n background-color: transparent;\n margin: 0;\n }\n }\n .iris-grid-partition-selector-spacer {\n flex-grow: 1;\n }\n .btn-outline-primary {\n color: $white;\n border-color: $white;\n margin: 0.35em 0.3em;\n padding: 0.25em 0.5em;\n }\n .btn-close {\n padding: 0 0.5em;\n margin: 0.25em 0.25em 0.25em 0;\n min-width: 0;\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -176,7 +176,7 @@ declare class IrisGridTableModelTemplate<T extends TableTemplate<T> = Table, R e
176
176
  */
177
177
  applyViewport: import("lodash").DebouncedFunc<() => void>;
178
178
  applyBufferedViewport(viewportTop: number, viewportBottom: number, columns: Column[]): void;
179
- snapshot(ranges: GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: Column) => unknown): Promise<unknown[][]>;
179
+ snapshot(ranges: GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: Column) => unknown, consolidateRanges?: boolean): Promise<unknown[][]>;
180
180
  /**
181
181
  * Get a text snapshot of the provided ranges
182
182
  * @param ranges The ranges to get the snapshot for
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"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"}
@@ -1277,12 +1277,13 @@ class IrisGridTableModelTemplate extends IrisGridModel {
1277
1277
  return _asyncToGenerator(function* () {
1278
1278
  var includeHeaders = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;
1279
1279
  var formatValue = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : value => value;
1280
+ var consolidateRanges = _arguments.length > 3 && _arguments[3] !== undefined ? _arguments[3] : true;
1280
1281
 
1281
1282
  if (_this2.subscription == null) {
1282
1283
  throw new Error('No subscription available');
1283
1284
  }
1284
1285
 
1285
- var consolidated = GridRange.consolidate(ranges);
1286
+ var consolidated = consolidateRanges ? GridRange.consolidate(ranges) : ranges;
1286
1287
 
1287
1288
  if (!IrisGridUtils.isValidSnapshotRanges(consolidated)) {
1288
1289
  throw new Error("Invalid snapshot ranges ".concat(ranges));
@@ -1390,7 +1391,7 @@ class IrisGridTableModelTemplate extends IrisGridModel {
1390
1391
  var includeHeaders = _arguments2.length > 1 && _arguments2[1] !== undefined ? _arguments2[1] : false;
1391
1392
  var formatValue = _arguments2.length > 2 && _arguments2[2] !== undefined ? _arguments2[2] : value => "".concat(value);
1392
1393
  log.debug2('textSnapshot', ranges, includeHeaders);
1393
- var data = yield _this3.snapshot(ranges, includeHeaders, formatValue);
1394
+ var data = yield _this3.snapshot(ranges, includeHeaders, formatValue, false);
1394
1395
  return data.map(row => row.join('\t')).join('\n');
1395
1396
  })();
1396
1397
  }