@deephaven/iris-grid 1.2.1-plotly-rc.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/AdvancedFilterCreator.css.map +1 -1
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -1
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -1
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  8. package/dist/ColumnHeaderGroup.js.map +1 -1
  9. package/dist/ColumnStatistics.css.map +1 -1
  10. package/dist/ColumnStatistics.js.map +1 -1
  11. package/dist/CommonTypes.js.map +1 -1
  12. package/dist/CrossColumnSearch.css.map +1 -1
  13. package/dist/CrossColumnSearch.js.map +1 -1
  14. package/dist/EmptyIrisGridModel.js.map +1 -1
  15. package/dist/FilterInputField.css.map +1 -1
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.css.map +1 -1
  18. package/dist/GotoRow.js.map +1 -1
  19. package/dist/IrisGrid.css.map +1 -1
  20. package/dist/IrisGrid.js.map +1 -1
  21. package/dist/IrisGridBottomBar.css.map +1 -1
  22. package/dist/IrisGridBottomBar.js.map +1 -1
  23. package/dist/IrisGridCacheUtils.js.map +1 -1
  24. package/dist/IrisGridCellOverflowModal.css.map +1 -1
  25. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  26. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  27. package/dist/IrisGridCopyHandler.css.map +1 -1
  28. package/dist/IrisGridCopyHandler.js.map +1 -1
  29. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  30. package/dist/IrisGridIcons.js.map +1 -1
  31. package/dist/IrisGridMetricCalculator.js.map +1 -1
  32. package/dist/IrisGridModel.js.map +1 -1
  33. package/dist/IrisGridModelFactory.js.map +1 -1
  34. package/dist/IrisGridModelUpdater.js.map +1 -1
  35. package/dist/IrisGridPartitionSelector.css.map +1 -1
  36. package/dist/IrisGridPartitionSelector.js.map +1 -1
  37. package/dist/IrisGridPartitionedTableModel.js.map +1 -1
  38. package/dist/IrisGridProxyModel.js.map +1 -1
  39. package/dist/IrisGridRenderer.js.map +1 -1
  40. package/dist/IrisGridShortcuts.js.map +1 -1
  41. package/dist/IrisGridTableModel.js.map +1 -1
  42. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  43. package/dist/IrisGridTestUtils.js.map +1 -1
  44. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  45. package/dist/IrisGridTheme.js.map +1 -1
  46. package/dist/IrisGridTheme.module.css.map +1 -1
  47. package/dist/IrisGridThemeProvider.js.map +1 -1
  48. package/dist/IrisGridTreeTableModel.js.map +1 -1
  49. package/dist/IrisGridUtils.js.map +1 -1
  50. package/dist/LazyIrisGrid.js.map +1 -1
  51. package/dist/MissingKeyError.js.map +1 -1
  52. package/dist/MissingPartitionError.js.map +1 -1
  53. package/dist/NoPastePermissionModal.js.map +1 -1
  54. package/dist/PartitionedGridModel.js.map +1 -1
  55. package/dist/PendingDataBottomBar.css.map +1 -1
  56. package/dist/PendingDataBottomBar.js.map +1 -1
  57. package/dist/ToastBottomBar.js.map +1 -1
  58. package/dist/declaration.d.js.map +1 -1
  59. package/dist/format-context-menus/CustomFormatAction.css.map +1 -1
  60. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  61. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  62. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  63. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  64. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  65. package/dist/format-context-menus/index.js.map +1 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  68. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  69. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  70. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  71. package/dist/key-handlers/index.js.map +1 -1
  72. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  73. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  74. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  75. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -1
  76. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  77. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
  78. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  79. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  80. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  81. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  82. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  83. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  84. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  85. package/dist/mousehandlers/index.js.map +1 -1
  86. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  87. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  88. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  89. package/dist/sidebar/ChartBuilder.css.map +1 -1
  90. package/dist/sidebar/ChartBuilder.js.map +1 -1
  91. package/dist/sidebar/CustomColumnBuilder.css.map +1 -1
  92. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  93. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  94. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  95. package/dist/sidebar/InputEditor.css.map +1 -1
  96. package/dist/sidebar/InputEditor.js.map +1 -1
  97. package/dist/sidebar/OptionType.js.map +1 -1
  98. package/dist/sidebar/RollupRows.css.map +1 -1
  99. package/dist/sidebar/RollupRows.js.map +1 -1
  100. package/dist/sidebar/SelectDistinctBuilder.css.map +1 -1
  101. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  102. package/dist/sidebar/TableCsvExporter.css.map +1 -1
  103. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  104. package/dist/sidebar/TableSaver.js.map +1 -1
  105. package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -1
  106. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  107. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  108. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  109. package/dist/sidebar/aggregations/Aggregations.css.map +1 -1
  110. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  111. package/dist/sidebar/aggregations/index.js.map +1 -1
  112. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  113. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  114. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -1
  115. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  116. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  117. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -1
  118. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  119. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  120. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  121. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -1
  122. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  123. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  124. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  125. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  126. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  127. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  128. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  129. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  130. package/dist/sidebar/icons/index.js.map +1 -1
  131. package/dist/sidebar/index.js.map +1 -1
  132. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -1
  133. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  134. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  135. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -1
  136. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  137. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  138. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  139. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  140. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  141. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  142. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
  143. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  144. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  145. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  146. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  147. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../src/PendingDataBottomBar.scss"],"names":[],"mappings":"AAAA;AC6LA;AC3LA;EACE","file":"PendingDataBottomBar.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-input-disabled-fg);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n.pending-data-bottom-bar {\n background-color: var(--dh-color-surface-bg);\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../src/PendingDataBottomBar.scss"],"names":[],"mappings":"AAAA;AC6LA;AC3LA;EACE","file":"PendingDataBottomBar.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n.pending-data-bottom-bar {\n background-color: var(--dh-color-surface-bg);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","_ref","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","concat","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon","className","isShown","children","icon","kind","onClick","tooltip","disabled"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { type PendingDataErrorMap, type PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PendingDataBottomBar.js","names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","_ref","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","concat","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon","className","isShown","children","icon","kind","onClick","tooltip","disabled"],"sources":["../src/PendingDataBottomBar.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { type PendingDataErrorMap, type PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: PendingDataErrorMap;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function PendingDataBottomBar({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (\n prevIsSaving != null &&\n prevIsSaving &&\n !isSaving &&\n errorMessage == null\n ) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner className=\"loading-spinner-vertical-align\" />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage != null && errorMessage !== '' && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {(errorMessage == null || errorMessage === '') && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n}\n\nexport default PendingDataBottomBar;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastBottomBar.js","names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","jsx","_jsx","HIDE_TIMEOUT","ToastBottomBar","_ref","children","onEntering","onEntered","onExiting","onExited","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined","className"],"sources":["../src/ToastBottomBar.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function ToastBottomBar({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n}\n\nexport default ToastBottomBar;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGxB,IAAMC,YAAY,GAAG,IAAI;AAUzB,OAAO,SAASC,cAAcA,CAAAC,IAAA,EAMO;EAAA,IANN;IAC7BC,QAAQ,GAAG,IAAI;IACfC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC;EACmB,CAAC,GAAAL,IAAA;EACpB,IAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGd,QAAQ,CAAC,KAAK,CAAC;EAC7C,IAAMe,OAAO,GAAGhB,MAAM,CAAgC,CAAC;EACvD,IAAMiB,YAAY,GAAGf,WAAW,CAACO,QAAQ,CAAC;EAE1C,IAAMS,UAAU,GAAGpB,WAAW,CAAC,MAAM;IACnCiB,UAAU,CAAC,IAAI,CAAC;IAChB,IAAIC,OAAO,CAACG,OAAO,EAAE;MACnBC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC;IAC/B;IACAH,OAAO,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;MACjCN,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,EAAET,YAAY,CAAC;EAClB,CAAC,EAAE,CAACS,UAAU,EAAEC,OAAO,CAAC,CAAC;EAEzBjB,SAAS,CAAC,MAAM;IACd,IAAIkB,YAAY,KAAKR,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACjDS,UAAU,CAAC,CAAC;IACd;EACF,CAAC,EAAE,CAACT,QAAQ,EAAEQ,YAAY,EAAEF,UAAU,EAAEG,UAAU,CAAC,CAAC;EAEpDnB,SAAS,CACP,MAAM,MAAOiB,OAAO,CAACG,OAAO,GAAGC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC,GAAGG,SAAU,EACzE,EACF,CAAC;EAED,oBACEjB,IAAA,CAACF,iBAAiB;IAChBoB,SAAS,EAAC,kBAAkB;IAC5BT,OAAO,EAAEA,OAAQ;IACjBJ,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IAAAJ,QAAA,EAElBA;EAAQ,CACQ,CAAC;AAExB;AAEA,eAAeF,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"ToastBottomBar.js","names":["React","useCallback","useEffect","useRef","useState","usePrevious","IrisGridBottomBar","jsx","_jsx","HIDE_TIMEOUT","ToastBottomBar","_ref","children","onEntering","onEntered","onExiting","onExited","isShown","setIsShown","timeout","prevChildren","startTimer","current","clearTimeout","setTimeout","undefined","className"],"sources":["../src/ToastBottomBar.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\n\nconst HIDE_TIMEOUT = 3000;\n\nexport type ToastBottomBarProps = {\n children?: React.ReactNode;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport function ToastBottomBar({\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: ToastBottomBarProps): JSX.Element {\n const [isShown, setIsShown] = useState(false);\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const prevChildren = usePrevious(children);\n\n const startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n\n useEffect(\n () => () => (timeout.current ? clearTimeout(timeout.current) : undefined),\n []\n );\n\n return (\n <IrisGridBottomBar\n className=\"toast-bottom-bar\"\n isShown={isShown}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n {children}\n </IrisGridBottomBar>\n );\n}\n\nexport default ToastBottomBar;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACvE,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,iBAAiB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGxB,IAAMC,YAAY,GAAG,IAAI;AAUzB,OAAO,SAASC,cAAcA,CAAAC,IAAA,EAMO;EAAA,IANN;IAC7BC,QAAQ,GAAG,IAAI;IACfC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC;EACmB,CAAC,GAAAL,IAAA;EACpB,IAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGd,QAAQ,CAAC,KAAK,CAAC;EAC7C,IAAMe,OAAO,GAAGhB,MAAM,CAAgC,CAAC;EACvD,IAAMiB,YAAY,GAAGf,WAAW,CAACO,QAAQ,CAAC;EAE1C,IAAMS,UAAU,GAAGpB,WAAW,CAAC,MAAM;IACnCiB,UAAU,CAAC,IAAI,CAAC;IAChB,IAAIC,OAAO,CAACG,OAAO,EAAE;MACnBC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC;IAC/B;IACAH,OAAO,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;MACjCN,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,EAAET,YAAY,CAAC;EAClB,CAAC,EAAE,CAACS,UAAU,EAAEC,OAAO,CAAC,CAAC;EAEzBjB,SAAS,CAAC,MAAM;IACd,IAAIkB,YAAY,KAAKR,QAAQ,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACjDS,UAAU,CAAC,CAAC;IACd;EACF,CAAC,EAAE,CAACT,QAAQ,EAAEQ,YAAY,EAAEF,UAAU,EAAEG,UAAU,CAAC,CAAC;EAEpDnB,SAAS,CACP,MAAM,MAAOiB,OAAO,CAACG,OAAO,GAAGC,YAAY,CAACJ,OAAO,CAACG,OAAO,CAAC,GAAGG,SAAU,EACzE,EACF,CAAC;EAED,oBACEjB,IAAA,CAACF,iBAAiB;IAChBoB,SAAS,EAAC,kBAAkB;IAC5BT,OAAO,EAAEA,OAAQ;IACjBJ,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,QAAQ,EAAEA,QAAS;IAAAJ,QAAA,EAElBA;EAAQ,CACQ,CAAC;AAExB;AAEA,eAAeF,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/format-context-menus/CustomFormatAction.scss"],"names":[],"mappings":"AAAA;AC6LA;AC3LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE","file":"CustomFormatAction.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-input-disabled-fg);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n.custom-format-title {\n margin-bottom: 0;\n border: none;\n display: flex;\n width: 100%;\n padding: $input-btn-padding-y $input-btn-padding-x;\n white-space: nowrap;\n text-decoration: none;\n background-color: transparent;\n text-align: left;\n cursor: pointer;\n user-select: none;\n\n .icon {\n flex-grow: 0;\n margin-right: 0.5rem;\n width: 1rem;\n text-align: center;\n }\n\n .title {\n flex-grow: 1;\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/format-context-menus/CustomFormatAction.scss"],"names":[],"mappings":"AAAA;AC6LA;AC3LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE","file":"CustomFormatAction.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n.custom-format-title {\n margin-bottom: 0;\n border: none;\n display: flex;\n width: 100%;\n padding: $input-btn-padding-y $input-btn-padding-x;\n white-space: nowrap;\n text-decoration: none;\n background-color: transparent;\n text-align: left;\n cursor: pointer;\n user-select: none;\n\n .icon {\n flex-grow: 0;\n margin-right: 0.5rem;\n width: 1rem;\n text-align: center;\n }\n\n .title {\n flex-grow: 1;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFormatAction.js","names":["React","Component","Tooltip","DOMUtils","jsx","_jsx","jsxs","_jsxs","CustomFormatAction","constructor","props","arguments","length","undefined","defaultProps","_defineProperty","handleInputChange","bind","handleKeyDown","inputRef","createRef","onChange","current","value","closeContextMenu","forwardedProps","closeMenu","revertToDefault","returnFocusToContextMenu","parentContextMenu","getClosestByClassName","HTMLElement","focus","event","key","stopPropagation","render","formatString","placeholder","title","menuItem","description","iconElement","className","children","htmlFor","id","type","defaultValue","ref","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","focusInput"],"sources":["../../src/format-context-menus/CustomFormatAction.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { DOMUtils } from '@deephaven/utils';\n\nimport './CustomFormatAction.scss';\n\ntype CustomFormatActionProps = typeof CustomFormatAction.defaultProps & {\n forwardedProps: {\n menuItem: {\n title?: string;\n description?: string;\n };\n };\n};\n\n/**\n * Renders menuElement option with custom format input for use in formatting context menus\n *\n * TODO:\n * - capture focus when this menu action is selected via ArrowUp/ArrowDown keys\n * - dynamically update selected menu item when clicking on the input box\n */\nclass CustomFormatAction extends Component<CustomFormatActionProps> {\n static defaultProps = {\n formatString: '',\n forwardedProps: {\n menuItem: {},\n closeMenu(focusInput: boolean): void {\n // no-op\n },\n iconElement: null,\n },\n placeholder: '',\n title: '',\n onChange(value: string | null): void {\n // no-op\n },\n };\n\n constructor(\n props: CustomFormatActionProps = CustomFormatAction.defaultProps\n ) {\n super(props);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.inputRef = React.createRef();\n }\n\n inputRef: React.RefObject<HTMLInputElement>;\n\n handleInputChange(): void {\n const { onChange } = this.props;\n if (this.inputRef.current) {\n onChange(this.inputRef.current.value);\n }\n }\n\n closeContextMenu(): void {\n const { forwardedProps } = this.props;\n const { closeMenu } = forwardedProps;\n closeMenu(true);\n }\n\n revertToDefault(): void {\n const { onChange } = this.props;\n onChange(null);\n }\n\n returnFocusToContextMenu(): void {\n const parentContextMenu = DOMUtils.getClosestByClassName(\n this.inputRef.current,\n 'context-menu-container'\n );\n if (parentContextMenu instanceof HTMLElement) {\n parentContextMenu.focus();\n }\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Enter':\n event.stopPropagation();\n this.closeContextMenu();\n break;\n case 'Escape':\n event.stopPropagation();\n this.revertToDefault();\n this.closeContextMenu();\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n event.stopPropagation();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n this.returnFocusToContextMenu();\n break;\n default:\n event.stopPropagation();\n }\n }\n\n render(): JSX.Element {\n const { formatString, forwardedProps, placeholder, title } = this.props;\n const {\n menuItem: { description },\n iconElement,\n } = forwardedProps;\n return (\n <div className=\"form-group flex-grow mb-0\">\n <div className=\"custom-format-title\">\n <span className=\"icon\">{iconElement}</span>\n <label className=\"title mb-0\" htmlFor=\"custom-format-input\">\n {title}\n {description != null && <Tooltip>{description}</Tooltip>}\n </label>\n </div>\n <div className=\"pl-2 pr-2 pb-2\">\n <input\n id=\"custom-format-input\"\n className=\"form-control text-right mb-0\"\n type=\"text\"\n defaultValue={formatString}\n ref={this.inputRef}\n placeholder={placeholder}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleInputChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomFormatAction;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CustomFormatAction.js","names":["React","Component","Tooltip","DOMUtils","jsx","_jsx","jsxs","_jsxs","CustomFormatAction","constructor","props","arguments","length","undefined","defaultProps","_defineProperty","handleInputChange","bind","handleKeyDown","inputRef","createRef","onChange","current","value","closeContextMenu","forwardedProps","closeMenu","revertToDefault","returnFocusToContextMenu","parentContextMenu","getClosestByClassName","HTMLElement","focus","event","key","stopPropagation","render","formatString","placeholder","title","menuItem","description","iconElement","className","children","htmlFor","id","type","defaultValue","ref","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","focusInput"],"sources":["../../src/format-context-menus/CustomFormatAction.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { DOMUtils } from '@deephaven/utils';\n\nimport './CustomFormatAction.scss';\n\ntype CustomFormatActionProps = typeof CustomFormatAction.defaultProps & {\n forwardedProps: {\n menuItem: {\n title?: string;\n description?: string;\n };\n };\n};\n\n/**\n * Renders menuElement option with custom format input for use in formatting context menus\n *\n * TODO:\n * - capture focus when this menu action is selected via ArrowUp/ArrowDown keys\n * - dynamically update selected menu item when clicking on the input box\n */\nclass CustomFormatAction extends Component<CustomFormatActionProps> {\n static defaultProps = {\n formatString: '',\n forwardedProps: {\n menuItem: {},\n closeMenu(focusInput: boolean): void {\n // no-op\n },\n iconElement: null,\n },\n placeholder: '',\n title: '',\n onChange(value: string | null): void {\n // no-op\n },\n };\n\n constructor(\n props: CustomFormatActionProps = CustomFormatAction.defaultProps\n ) {\n super(props);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.inputRef = React.createRef();\n }\n\n inputRef: React.RefObject<HTMLInputElement>;\n\n handleInputChange(): void {\n const { onChange } = this.props;\n if (this.inputRef.current) {\n onChange(this.inputRef.current.value);\n }\n }\n\n closeContextMenu(): void {\n const { forwardedProps } = this.props;\n const { closeMenu } = forwardedProps;\n closeMenu(true);\n }\n\n revertToDefault(): void {\n const { onChange } = this.props;\n onChange(null);\n }\n\n returnFocusToContextMenu(): void {\n const parentContextMenu = DOMUtils.getClosestByClassName(\n this.inputRef.current,\n 'context-menu-container'\n );\n if (parentContextMenu instanceof HTMLElement) {\n parentContextMenu.focus();\n }\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Enter':\n event.stopPropagation();\n this.closeContextMenu();\n break;\n case 'Escape':\n event.stopPropagation();\n this.revertToDefault();\n this.closeContextMenu();\n break;\n case 'ArrowRight':\n case 'ArrowLeft':\n event.stopPropagation();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n this.returnFocusToContextMenu();\n break;\n default:\n event.stopPropagation();\n }\n }\n\n render(): JSX.Element {\n const { formatString, forwardedProps, placeholder, title } = this.props;\n const {\n menuItem: { description },\n iconElement,\n } = forwardedProps;\n return (\n <div className=\"form-group flex-grow mb-0\">\n <div className=\"custom-format-title\">\n <span className=\"icon\">{iconElement}</span>\n <label className=\"title mb-0\" htmlFor=\"custom-format-input\">\n {title}\n {description != null && <Tooltip>{description}</Tooltip>}\n </label>\n </div>\n <div className=\"pl-2 pr-2 pb-2\">\n <input\n id=\"custom-format-input\"\n className=\"form-control text-right mb-0\"\n type=\"text\"\n defaultValue={formatString}\n ref={this.inputRef}\n placeholder={placeholder}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleInputChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomFormatAction;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeFormatContextMenu.js","names":["DateTimeColumnFormatter","TableUtils","FormatContextMenuUtils","DateTimeFormatContextMenu","getOptions","formatter","selectedFormat","currentTime","Date","formatItems","group","dateGroup","formatString","timeGroup","dateTimeGroup","presetFormatOptions","map","item","format","makeFormat","TYPE_CONTEXT_PRESET","title","getFormattedString","dataType","DATETIME","makeOption","isSameFormat","defaultOption","isDefaultSelected","_defineProperty"],"sources":["../../src/format-context-menus/DateTimeFormatContextMenu.ts"],"sourcesContent":["import {\n DateTimeColumnFormatter,\n type Formatter,\n type TableColumnFormat,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport FormatContextMenuUtils, {\n type FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass DateTimeFormatContextMenu {\n static dateGroup = 10;\n\n static timeGroup = 20;\n\n static dateTimeGroup = 30;\n\n /**\n * Creates list of formatting options for DateTime context menu\n * @param formatter Formatter instance\n * @param selectedFormat Selected format object, null for no selected format\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n formatter: Formatter,\n selectedFormat: TableColumnFormat | null\n ): FormatContextMenuOption[] {\n const currentTime = new Date();\n const formatItems = [\n {\n group: DateTimeFormatContextMenu.dateGroup,\n formatString: 'yyyy-MM-dd',\n },\n {\n group: DateTimeFormatContextMenu.dateGroup,\n formatString: 'MM-dd-yyyy',\n },\n\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss',\n },\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss.SSS',\n },\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss.SSSSSSSSS',\n },\n\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss`,\n },\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss.SSS`,\n },\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n },\n ];\n\n const presetFormatOptions = formatItems.map(item => {\n const format = DateTimeColumnFormatter.makeFormat(\n '',\n item.formatString,\n DateTimeColumnFormatter.TYPE_CONTEXT_PRESET\n );\n const title = formatter.getFormattedString(\n currentTime,\n TableUtils.dataType.DATETIME,\n '',\n format\n );\n\n return FormatContextMenuUtils.makeOption(\n title,\n format,\n item.group,\n DateTimeColumnFormatter.isSameFormat(format, selectedFormat)\n );\n });\n\n const defaultOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n DateTimeFormatContextMenu.dateGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n return [defaultOption, ...presetFormatOptions];\n }\n}\n\nexport default DateTimeFormatContextMenu;\n"],"mappings":";;;AAAA,SACEA,uBAAuB,EAGvBC,UAAU,QACL,wBAAwB;AAAC,OACzBC,sBAAsB;AAI7B,MAAMC,yBAAyB,CAAC;EAO9B;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,UAAUA,CACfC,SAAoB,EACpBC,cAAwC,EACb;IAC3B,IAAMC,WAAW,GAAG,IAAIC,IAAI,CAAC,CAAC;IAC9B,IAAMC,WAAW,GAAG,CAClB;MACEC,KAAK,EAAEP,yBAAyB,CAACQ,SAAS;MAC1CC,YAAY,EAAE;IAChB,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACQ,SAAS;MAC1CC,YAAY,EAAE;IAChB,CAAC,EAED;MACEF,KAAK,EAAEP,yBAAyB,CAACU,SAAS;MAC1CD,YAAY,EAAE;IAChB,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACU,SAAS;MAC1CD,YAAY,EAAE;IAChB,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACU,SAAS;MAC1CD,YAAY,EAAE;IAChB,CAAC,EAED;MACEF,KAAK,EAAEP,yBAAyB,CAACW,aAAa;MAC9CF,YAAY;IACd,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACW,aAAa;MAC9CF,YAAY;IACd,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACW,aAAa;MAC9CF,YAAY;IACd,CAAC,CACF;IAED,IAAMG,mBAAmB,GAAGN,WAAW,CAACO,GAAG,CAACC,IAAI,IAAI;MAClD,IAAMC,MAAM,GAAGlB,uBAAuB,CAACmB,UAAU,CAC/C,EAAE,EACFF,IAAI,CAACL,YAAY,EACjBZ,uBAAuB,CAACoB,mBAC1B,CAAC;MACD,IAAMC,KAAK,GAAGhB,SAAS,CAACiB,kBAAkB,CACxCf,WAAW,EACXN,UAAU,CAACsB,QAAQ,CAACC,QAAQ,EAC5B,EAAE,EACFN,MACF,CAAC;MAED,OAAOhB,sBAAsB,CAACuB,UAAU,CACtCJ,KAAK,EACLH,MAAM,EACND,IAAI,CAACP,KAAK,EACVV,uBAAuB,CAAC0B,YAAY,CAACR,MAAM,EAAEZ,cAAc,CAC7D,CAAC;IACH,CAAC,CAAC;IAEF,IAAMqB,aAAa,GAAGzB,sBAAsB,CAACuB,UAAU,CACrD,SAAS,EACT,IAAI,EACJtB,yBAAyB,CAACQ,SAAS,EACnCT,sBAAsB,CAAC0B,iBAAiB,CAACtB,cAAc,CACzD,CAAC;IAED,OAAO,CAACqB,aAAa,EAAE,GAAGZ,mBAAmB,CAAC;EAChD;AACF;AAACc,eAAA,CArFK1B,yBAAyB,eACV,EAAE;AAAA0B,eAAA,CADjB1B,yBAAyB,eAGV,EAAE;AAAA0B,eAAA,CAHjB1B,yBAAyB,mBAKN,EAAE;AAkF3B,eAAeA,yBAAyB","ignoreList":[]}
1
+ {"version":3,"file":"DateTimeFormatContextMenu.js","names":["DateTimeColumnFormatter","TableUtils","FormatContextMenuUtils","DateTimeFormatContextMenu","getOptions","formatter","selectedFormat","currentTime","Date","formatItems","group","dateGroup","formatString","timeGroup","dateTimeGroup","presetFormatOptions","map","item","format","makeFormat","TYPE_CONTEXT_PRESET","title","getFormattedString","dataType","DATETIME","makeOption","isSameFormat","defaultOption","isDefaultSelected","_defineProperty"],"sources":["../../src/format-context-menus/DateTimeFormatContextMenu.ts"],"sourcesContent":["import {\n DateTimeColumnFormatter,\n type Formatter,\n type TableColumnFormat,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport FormatContextMenuUtils, {\n type FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass DateTimeFormatContextMenu {\n static dateGroup = 10;\n\n static timeGroup = 20;\n\n static dateTimeGroup = 30;\n\n /**\n * Creates list of formatting options for DateTime context menu\n * @param formatter Formatter instance\n * @param selectedFormat Selected format object, null for no selected format\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n formatter: Formatter,\n selectedFormat: TableColumnFormat | null\n ): FormatContextMenuOption[] {\n const currentTime = new Date();\n const formatItems = [\n {\n group: DateTimeFormatContextMenu.dateGroup,\n formatString: 'yyyy-MM-dd',\n },\n {\n group: DateTimeFormatContextMenu.dateGroup,\n formatString: 'MM-dd-yyyy',\n },\n\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss',\n },\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss.SSS',\n },\n {\n group: DateTimeFormatContextMenu.timeGroup,\n formatString: 'HH:mm:ss.SSSSSSSSS',\n },\n\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss`,\n },\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss.SSS`,\n },\n {\n group: DateTimeFormatContextMenu.dateTimeGroup,\n formatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n },\n ];\n\n const presetFormatOptions = formatItems.map(item => {\n const format = DateTimeColumnFormatter.makeFormat(\n '',\n item.formatString,\n DateTimeColumnFormatter.TYPE_CONTEXT_PRESET\n );\n const title = formatter.getFormattedString(\n currentTime,\n TableUtils.dataType.DATETIME,\n '',\n format\n );\n\n return FormatContextMenuUtils.makeOption(\n title,\n format,\n item.group,\n DateTimeColumnFormatter.isSameFormat(format, selectedFormat)\n );\n });\n\n const defaultOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n DateTimeFormatContextMenu.dateGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n return [defaultOption, ...presetFormatOptions];\n }\n}\n\nexport default DateTimeFormatContextMenu;\n"],"mappings":";;;AAAA,SACEA,uBAAuB,EAGvBC,UAAU,QACL,wBAAwB;AAAC,OACzBC,sBAAsB;AAI7B,MAAMC,yBAAyB,CAAC;EAO9B;AACF;AACA;AACA;AACA;AACA;EACE,OAAOC,UAAUA,CACfC,SAAoB,EACpBC,cAAwC,EACb;IAC3B,IAAMC,WAAW,GAAG,IAAIC,IAAI,CAAC,CAAC;IAC9B,IAAMC,WAAW,GAAG,CAClB;MACEC,KAAK,EAAEP,yBAAyB,CAACQ,SAAS;MAC1CC,YAAY,EAAE;IAChB,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACQ,SAAS;MAC1CC,YAAY,EAAE;IAChB,CAAC,EAED;MACEF,KAAK,EAAEP,yBAAyB,CAACU,SAAS;MAC1CD,YAAY,EAAE;IAChB,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACU,SAAS;MAC1CD,YAAY,EAAE;IAChB,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACU,SAAS;MAC1CD,YAAY,EAAE;IAChB,CAAC,EAED;MACEF,KAAK,EAAEP,yBAAyB,CAACW,aAAa;MAC9CF,YAAY;IACd,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACW,aAAa;MAC9CF,YAAY;IACd,CAAC,EACD;MACEF,KAAK,EAAEP,yBAAyB,CAACW,aAAa;MAC9CF,YAAY;IACd,CAAC,CACF;IAED,IAAMG,mBAAmB,GAAGN,WAAW,CAACO,GAAG,CAACC,IAAI,IAAI;MAClD,IAAMC,MAAM,GAAGlB,uBAAuB,CAACmB,UAAU,CAC/C,EAAE,EACFF,IAAI,CAACL,YAAY,EACjBZ,uBAAuB,CAACoB,mBAC1B,CAAC;MACD,IAAMC,KAAK,GAAGhB,SAAS,CAACiB,kBAAkB,CACxCf,WAAW,EACXN,UAAU,CAACsB,QAAQ,CAACC,QAAQ,EAC5B,EAAE,EACFN,MACF,CAAC;MAED,OAAOhB,sBAAsB,CAACuB,UAAU,CACtCJ,KAAK,EACLH,MAAM,EACND,IAAI,CAACP,KAAK,EACVV,uBAAuB,CAAC0B,YAAY,CAACR,MAAM,EAAEZ,cAAc,CAC7D,CAAC;IACH,CAAC,CAAC;IAEF,IAAMqB,aAAa,GAAGzB,sBAAsB,CAACuB,UAAU,CACrD,SAAS,EACT,IAAI,EACJtB,yBAAyB,CAACQ,SAAS,EACnCT,sBAAsB,CAAC0B,iBAAiB,CAACtB,cAAc,CACzD,CAAC;IAED,OAAO,CAACqB,aAAa,EAAE,GAAGZ,mBAAmB,CAAC;EAChD;AACF;AAACc,eAAA,CArFK1B,yBAAyB,eACV,EAAE;AAAA0B,eAAA,CADjB1B,yBAAyB,eAGV,EAAE;AAAA0B,eAAA,CAHjB1B,yBAAyB,mBAKN,EAAE;AAkF3B,eAAeA,yBAAyB"}
@@ -1 +1 @@
1
- {"version":3,"file":"DecimalFormatContextMenu.js","names":["DecimalColumnFormatter","FormatContextMenuUtils","DecimalFormatContextMenu","getOptions","dh","selectedFormat","onCustomFormatChange","formatItems","format","FORMAT_PERCENT","group","presetGroup","FORMAT_BASIS_POINTS","FORMAT_THOUSANDS","FORMAT_MILLIONS","FORMAT_SCIENTIFIC_NOTATION","FORMAT_ROUND","presetRoundGroup","FORMAT_ROUND_TWO_DECIMALS","FORMAT_ROUND_FOUR_DECIMALS","defaultFormatOption","makeOption","defaultGroup","isDefaultSelected","presetFormatOptions","map","item","label","isSameFormat","isCustomSelected","customFormat","makeCustomFormat","customFormatOption","makeCustomFormatOption","customGroup","DEFAULT_FORMAT_STRING","formatString","newCustomFormat","isValid","_defineProperty"],"sources":["../../src/format-context-menus/DecimalFormatContextMenu.ts"],"sourcesContent":["import {\n type DecimalColumnFormat,\n DecimalColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport FormatContextMenuUtils, {\n type FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass DecimalFormatContextMenu {\n static defaultGroup = 10;\n\n static presetGroup = 20;\n\n static presetRoundGroup = 30;\n\n static customGroup = 40;\n\n /**\n * Creates list of formatting options for Decimal context menu\n * @param dh JSAPI instance\n * @param selectedFormat Selected format object, null for no selected format\n * @param onCustomFormatChange Callback to call when the custom format is changed\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n dh: typeof DhType,\n selectedFormat: DecimalColumnFormat,\n onCustomFormatChange: (value: DecimalColumnFormat | null) => void\n ): FormatContextMenuOption[] {\n const formatItems = [\n {\n format: DecimalColumnFormatter.FORMAT_PERCENT,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_BASIS_POINTS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_THOUSANDS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_MILLIONS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_SCIENTIFIC_NOTATION,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND_TWO_DECIMALS,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND_FOUR_DECIMALS,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n ];\n\n const defaultFormatOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n DecimalFormatContextMenu.defaultGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n const presetFormatOptions = formatItems.map(item =>\n FormatContextMenuUtils.makeOption(\n item.format.label,\n item.format,\n item.group,\n DecimalColumnFormatter.isSameFormat(item.format, selectedFormat)\n )\n );\n\n const isCustomSelected =\n FormatContextMenuUtils.isCustomSelected(selectedFormat);\n\n const customFormat = isCustomSelected\n ? selectedFormat\n : DecimalColumnFormatter.makeCustomFormat();\n\n const customFormatOption = FormatContextMenuUtils.makeCustomFormatOption(\n customFormat,\n DecimalFormatContextMenu.customGroup,\n DecimalColumnFormatter.DEFAULT_FORMAT_STRING,\n isCustomSelected,\n formatString => {\n if (formatString != null) {\n const newCustomFormat =\n DecimalColumnFormatter.makeCustomFormat(formatString);\n if (DecimalColumnFormatter.isValid(dh, newCustomFormat)) {\n onCustomFormatChange(newCustomFormat);\n }\n } else {\n onCustomFormatChange(null);\n }\n }\n );\n\n return [defaultFormatOption, ...presetFormatOptions, customFormatOption];\n }\n}\n\nexport default DecimalFormatContextMenu;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DecimalFormatContextMenu.js","names":["DecimalColumnFormatter","FormatContextMenuUtils","DecimalFormatContextMenu","getOptions","dh","selectedFormat","onCustomFormatChange","formatItems","format","FORMAT_PERCENT","group","presetGroup","FORMAT_BASIS_POINTS","FORMAT_THOUSANDS","FORMAT_MILLIONS","FORMAT_SCIENTIFIC_NOTATION","FORMAT_ROUND","presetRoundGroup","FORMAT_ROUND_TWO_DECIMALS","FORMAT_ROUND_FOUR_DECIMALS","defaultFormatOption","makeOption","defaultGroup","isDefaultSelected","presetFormatOptions","map","item","label","isSameFormat","isCustomSelected","customFormat","makeCustomFormat","customFormatOption","makeCustomFormatOption","customGroup","DEFAULT_FORMAT_STRING","formatString","newCustomFormat","isValid","_defineProperty"],"sources":["../../src/format-context-menus/DecimalFormatContextMenu.ts"],"sourcesContent":["import {\n type DecimalColumnFormat,\n DecimalColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport FormatContextMenuUtils, {\n type FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass DecimalFormatContextMenu {\n static defaultGroup = 10;\n\n static presetGroup = 20;\n\n static presetRoundGroup = 30;\n\n static customGroup = 40;\n\n /**\n * Creates list of formatting options for Decimal context menu\n * @param dh JSAPI instance\n * @param selectedFormat Selected format object, null for no selected format\n * @param onCustomFormatChange Callback to call when the custom format is changed\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n dh: typeof DhType,\n selectedFormat: DecimalColumnFormat,\n onCustomFormatChange: (value: DecimalColumnFormat | null) => void\n ): FormatContextMenuOption[] {\n const formatItems = [\n {\n format: DecimalColumnFormatter.FORMAT_PERCENT,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_BASIS_POINTS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_THOUSANDS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_MILLIONS,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_SCIENTIFIC_NOTATION,\n group: DecimalFormatContextMenu.presetGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND_TWO_DECIMALS,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n {\n format: DecimalColumnFormatter.FORMAT_ROUND_FOUR_DECIMALS,\n group: DecimalFormatContextMenu.presetRoundGroup,\n },\n ];\n\n const defaultFormatOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n DecimalFormatContextMenu.defaultGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n const presetFormatOptions = formatItems.map(item =>\n FormatContextMenuUtils.makeOption(\n item.format.label,\n item.format,\n item.group,\n DecimalColumnFormatter.isSameFormat(item.format, selectedFormat)\n )\n );\n\n const isCustomSelected =\n FormatContextMenuUtils.isCustomSelected(selectedFormat);\n\n const customFormat = isCustomSelected\n ? selectedFormat\n : DecimalColumnFormatter.makeCustomFormat();\n\n const customFormatOption = FormatContextMenuUtils.makeCustomFormatOption(\n customFormat,\n DecimalFormatContextMenu.customGroup,\n DecimalColumnFormatter.DEFAULT_FORMAT_STRING,\n isCustomSelected,\n formatString => {\n if (formatString != null) {\n const newCustomFormat =\n DecimalColumnFormatter.makeCustomFormat(formatString);\n if (DecimalColumnFormatter.isValid(dh, newCustomFormat)) {\n onCustomFormatChange(newCustomFormat);\n }\n } else {\n onCustomFormatChange(null);\n }\n }\n );\n\n return [defaultFormatOption, ...presetFormatOptions, customFormatOption];\n }\n}\n\nexport default DecimalFormatContextMenu;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormatContextMenuUtils.js","names":["React","TableColumnFormatter","CustomFormatAction","jsx","_jsx","FormatContextMenuUtils","isDefaultSelected","selectedFormat","TYPE_CONTEXT_CUSTOM","TYPE_CONTEXT_PRESET","includes","type","isCustomSelected","makeOption","title","format","group","isSelected","description","makeCustomFormatOption","placeholder","onChange","_format$formatString","label","menuElement","formatString","undefined"],"sources":["../../src/format-context-menus/FormatContextMenuUtils.tsx"],"sourcesContent":["import React from 'react';\nimport {\n type TableColumnFormat,\n TableColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport CustomFormatAction from './CustomFormatAction';\n\nexport interface FormatContextMenuOption {\n title: string;\n description: string;\n group: number;\n format: TableColumnFormat | null;\n isSelected: boolean;\n}\n\nexport interface CustomFormatOption extends FormatContextMenuOption {\n menuElement: React.ReactElement;\n}\n\nclass FormatContextMenuUtils {\n /**\n * Returns true if default option should be active in the context menu\n * @param selectedFormat selected format object or null\n */\n static isDefaultSelected(selectedFormat: TableColumnFormat | null): boolean {\n return (\n !selectedFormat ||\n ![\n TableColumnFormatter.TYPE_CONTEXT_CUSTOM,\n TableColumnFormatter.TYPE_CONTEXT_PRESET,\n ].includes(selectedFormat.type)\n );\n }\n\n /**\n * Returns true if custom format option should be active in the context menu\n * @param selectedFormat selected format object or null\n */\n static isCustomSelected(selectedFormat: TableColumnFormat): boolean {\n return (\n selectedFormat != null &&\n selectedFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n );\n }\n\n /**\n * Creates context menu option\n * @param title Context menu title\n * @param format Format object\n * @param group Context menu group\n * @param isSelected Is current option selected\n */\n static makeOption(\n title: string,\n format: TableColumnFormat | null,\n group: number,\n isSelected: boolean\n ): FormatContextMenuOption {\n return {\n title,\n description: title,\n group,\n format,\n isSelected,\n };\n }\n\n /**\n * Creates context menu option with an input element\n * @param format Format object\n * @param group Context menu group\n * @param placeholder Input element placeholder\n * @param isSelected Is current option selected\n * @param onChange Input element onChange callback\n */\n static makeCustomFormatOption(\n format: TableColumnFormat,\n group: number,\n placeholder: string,\n isSelected: boolean,\n onChange: (value: string | null) => void\n ): CustomFormatOption {\n return {\n title: format.label,\n description: format.label,\n format,\n group,\n isSelected,\n menuElement: (\n <CustomFormatAction\n formatString={format.formatString ?? undefined}\n title={format.label}\n placeholder={placeholder}\n onChange={onChange}\n />\n ),\n };\n }\n}\n\nexport default FormatContextMenuUtils;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAEEC,oBAAoB,QACf,wBAAwB;AAAC,OACzBC,kBAAkB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAczB,MAAMC,sBAAsB,CAAC;EAC3B;AACF;AACA;AACA;EACE,OAAOC,iBAAiBA,CAACC,cAAwC,EAAW;IAC1E,OACE,CAACA,cAAc,IACf,CAAC,CACCN,oBAAoB,CAACO,mBAAmB,EACxCP,oBAAoB,CAACQ,mBAAmB,CACzC,CAACC,QAAQ,CAACH,cAAc,CAACI,IAAI,CAAC;EAEnC;;EAEA;AACF;AACA;AACA;EACE,OAAOC,gBAAgBA,CAACL,cAAiC,EAAW;IAClE,OACEA,cAAc,IAAI,IAAI,IACtBA,cAAc,CAACI,IAAI,KAAKV,oBAAoB,CAACO,mBAAmB;EAEpE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOK,UAAUA,CACfC,KAAa,EACbC,MAAgC,EAChCC,KAAa,EACbC,UAAmB,EACM;IACzB,OAAO;MACLH,KAAK;MACLI,WAAW,EAAEJ,KAAK;MAClBE,KAAK;MACLD,MAAM;MACNE;IACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOE,sBAAsBA,CAC3BJ,MAAyB,EACzBC,KAAa,EACbI,WAAmB,EACnBH,UAAmB,EACnBI,QAAwC,EACpB;IAAA,IAAAC,oBAAA;IACpB,OAAO;MACLR,KAAK,EAAEC,MAAM,CAACQ,KAAK;MACnBL,WAAW,EAAEH,MAAM,CAACQ,KAAK;MACzBR,MAAM;MACNC,KAAK;MACLC,UAAU;MACVO,WAAW,eACTpB,IAAA,CAACF,kBAAkB;QACjBuB,YAAY,GAAAH,oBAAA,GAAEP,MAAM,CAACU,YAAY,cAAAH,oBAAA,cAAAA,oBAAA,GAAII,SAAU;QAC/CZ,KAAK,EAAEC,MAAM,CAACQ,KAAM;QACpBH,WAAW,EAAEA,WAAY;QACzBC,QAAQ,EAAEA;MAAS,CACpB;IAEL,CAAC;EACH;AACF;AAEA,eAAehB,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"FormatContextMenuUtils.js","names":["React","TableColumnFormatter","CustomFormatAction","jsx","_jsx","FormatContextMenuUtils","isDefaultSelected","selectedFormat","TYPE_CONTEXT_CUSTOM","TYPE_CONTEXT_PRESET","includes","type","isCustomSelected","makeOption","title","format","group","isSelected","description","makeCustomFormatOption","placeholder","onChange","_format$formatString","label","menuElement","formatString","undefined"],"sources":["../../src/format-context-menus/FormatContextMenuUtils.tsx"],"sourcesContent":["import React from 'react';\nimport {\n type TableColumnFormat,\n TableColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport CustomFormatAction from './CustomFormatAction';\n\nexport interface FormatContextMenuOption {\n title: string;\n description: string;\n group: number;\n format: TableColumnFormat | null;\n isSelected: boolean;\n}\n\nexport interface CustomFormatOption extends FormatContextMenuOption {\n menuElement: React.ReactElement;\n}\n\nclass FormatContextMenuUtils {\n /**\n * Returns true if default option should be active in the context menu\n * @param selectedFormat selected format object or null\n */\n static isDefaultSelected(selectedFormat: TableColumnFormat | null): boolean {\n return (\n !selectedFormat ||\n ![\n TableColumnFormatter.TYPE_CONTEXT_CUSTOM,\n TableColumnFormatter.TYPE_CONTEXT_PRESET,\n ].includes(selectedFormat.type)\n );\n }\n\n /**\n * Returns true if custom format option should be active in the context menu\n * @param selectedFormat selected format object or null\n */\n static isCustomSelected(selectedFormat: TableColumnFormat): boolean {\n return (\n selectedFormat != null &&\n selectedFormat.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n );\n }\n\n /**\n * Creates context menu option\n * @param title Context menu title\n * @param format Format object\n * @param group Context menu group\n * @param isSelected Is current option selected\n */\n static makeOption(\n title: string,\n format: TableColumnFormat | null,\n group: number,\n isSelected: boolean\n ): FormatContextMenuOption {\n return {\n title,\n description: title,\n group,\n format,\n isSelected,\n };\n }\n\n /**\n * Creates context menu option with an input element\n * @param format Format object\n * @param group Context menu group\n * @param placeholder Input element placeholder\n * @param isSelected Is current option selected\n * @param onChange Input element onChange callback\n */\n static makeCustomFormatOption(\n format: TableColumnFormat,\n group: number,\n placeholder: string,\n isSelected: boolean,\n onChange: (value: string | null) => void\n ): CustomFormatOption {\n return {\n title: format.label,\n description: format.label,\n format,\n group,\n isSelected,\n menuElement: (\n <CustomFormatAction\n formatString={format.formatString ?? undefined}\n title={format.label}\n placeholder={placeholder}\n onChange={onChange}\n />\n ),\n };\n }\n}\n\nexport default FormatContextMenuUtils;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAEEC,oBAAoB,QACf,wBAAwB;AAAC,OACzBC,kBAAkB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAczB,MAAMC,sBAAsB,CAAC;EAC3B;AACF;AACA;AACA;EACE,OAAOC,iBAAiBA,CAACC,cAAwC,EAAW;IAC1E,OACE,CAACA,cAAc,IACf,CAAC,CACCN,oBAAoB,CAACO,mBAAmB,EACxCP,oBAAoB,CAACQ,mBAAmB,CACzC,CAACC,QAAQ,CAACH,cAAc,CAACI,IAAI,CAAC;EAEnC;;EAEA;AACF;AACA;AACA;EACE,OAAOC,gBAAgBA,CAACL,cAAiC,EAAW;IAClE,OACEA,cAAc,IAAI,IAAI,IACtBA,cAAc,CAACI,IAAI,KAAKV,oBAAoB,CAACO,mBAAmB;EAEpE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOK,UAAUA,CACfC,KAAa,EACbC,MAAgC,EAChCC,KAAa,EACbC,UAAmB,EACM;IACzB,OAAO;MACLH,KAAK;MACLI,WAAW,EAAEJ,KAAK;MAClBE,KAAK;MACLD,MAAM;MACNE;IACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOE,sBAAsBA,CAC3BJ,MAAyB,EACzBC,KAAa,EACbI,WAAmB,EACnBH,UAAmB,EACnBI,QAAwC,EACpB;IAAA,IAAAC,oBAAA;IACpB,OAAO;MACLR,KAAK,EAAEC,MAAM,CAACQ,KAAK;MACnBL,WAAW,EAAEH,MAAM,CAACQ,KAAK;MACzBR,MAAM;MACNC,KAAK;MACLC,UAAU;MACVO,WAAW,eACTpB,IAAA,CAACF,kBAAkB;QACjBuB,YAAY,GAAAH,oBAAA,GAAEP,MAAM,CAACU,YAAY,cAAAH,oBAAA,cAAAA,oBAAA,GAAII,SAAU;QAC/CZ,KAAK,EAAEC,MAAM,CAACQ,KAAM;QACpBH,WAAW,EAAEA,WAAY;QACzBC,QAAQ,EAAEA;MAAS,CACpB;IAEL,CAAC;EACH;AACF;AAEA,eAAehB,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerFormatContextMenu.js","names":["IntegerColumnFormatter","FormatContextMenuUtils","IntegerFormatContextMenu","getOptions","dh","selectedFormat","onCustomFormatChange","formatItems","format","FORMAT_THOUSANDS","group","presetGroup","FORMAT_MILLIONS","FORMAT_SCIENTIFIC_NOTATION","defaultFormatOption","makeOption","defaultGroup","isDefaultSelected","presetFormatOptions","map","item","label","isSameFormat","isCustomSelected","customFormat","makeCustomFormat","customFormatOption","makeCustomFormatOption","customGroup","DEFAULT_FORMAT_STRING","formatString","newCustomFormat","isValid","_defineProperty"],"sources":["../../src/format-context-menus/IntegerFormatContextMenu.ts"],"sourcesContent":["import {\n type IntegerColumnFormat,\n IntegerColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport FormatContextMenuUtils, {\n type FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass IntegerFormatContextMenu {\n static defaultGroup = 10;\n\n static presetGroup = 20;\n\n static customGroup = 30;\n\n /**\n * Creates list of formatting options for Integer context menu\n * @param dh JSAPI instance\n * @param selectedFormat Selected format object, null for no selected format\n * @param onCustomFormatChange Callback to call when the custom format is changed\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n dh: typeof DhType,\n selectedFormat: IntegerColumnFormat,\n onCustomFormatChange: (value: IntegerColumnFormat | null) => void\n ): FormatContextMenuOption[] {\n const formatItems = [\n {\n format: IntegerColumnFormatter.FORMAT_THOUSANDS,\n group: IntegerFormatContextMenu.presetGroup,\n },\n {\n format: IntegerColumnFormatter.FORMAT_MILLIONS,\n group: IntegerFormatContextMenu.presetGroup,\n },\n {\n format: IntegerColumnFormatter.FORMAT_SCIENTIFIC_NOTATION,\n group: IntegerFormatContextMenu.presetGroup,\n },\n ];\n\n const defaultFormatOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n IntegerFormatContextMenu.defaultGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n const presetFormatOptions = formatItems.map(item =>\n FormatContextMenuUtils.makeOption(\n item.format.label,\n item.format,\n item.group,\n IntegerColumnFormatter.isSameFormat(item.format, selectedFormat)\n )\n );\n\n const isCustomSelected =\n FormatContextMenuUtils.isCustomSelected(selectedFormat);\n\n const customFormat = isCustomSelected\n ? selectedFormat\n : IntegerColumnFormatter.makeCustomFormat();\n\n const customFormatOption = FormatContextMenuUtils.makeCustomFormatOption(\n customFormat,\n IntegerFormatContextMenu.customGroup,\n IntegerColumnFormatter.DEFAULT_FORMAT_STRING,\n isCustomSelected,\n formatString => {\n if (formatString != null) {\n const newCustomFormat =\n IntegerColumnFormatter.makeCustomFormat(formatString);\n if (IntegerColumnFormatter.isValid(dh, newCustomFormat)) {\n onCustomFormatChange(newCustomFormat);\n }\n } else {\n onCustomFormatChange(null);\n }\n }\n );\n\n return [defaultFormatOption, ...presetFormatOptions, customFormatOption];\n }\n}\n\nexport default IntegerFormatContextMenu;\n"],"mappings":";;;AAAA,SAEEA,sBAAsB,QACjB,wBAAwB;AAAC,OAEzBC,sBAAsB;AAI7B,MAAMC,wBAAwB,CAAC;EAO7B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,UAAUA,CACfC,EAAiB,EACjBC,cAAmC,EACnCC,oBAAiE,EACtC;IAC3B,IAAMC,WAAW,GAAG,CAClB;MACEC,MAAM,EAAER,sBAAsB,CAACS,gBAAgB;MAC/CC,KAAK,EAAER,wBAAwB,CAACS;IAClC,CAAC,EACD;MACEH,MAAM,EAAER,sBAAsB,CAACY,eAAe;MAC9CF,KAAK,EAAER,wBAAwB,CAACS;IAClC,CAAC,EACD;MACEH,MAAM,EAAER,sBAAsB,CAACa,0BAA0B;MACzDH,KAAK,EAAER,wBAAwB,CAACS;IAClC,CAAC,CACF;IAED,IAAMG,mBAAmB,GAAGb,sBAAsB,CAACc,UAAU,CAC3D,SAAS,EACT,IAAI,EACJb,wBAAwB,CAACc,YAAY,EACrCf,sBAAsB,CAACgB,iBAAiB,CAACZ,cAAc,CACzD,CAAC;IAED,IAAMa,mBAAmB,GAAGX,WAAW,CAACY,GAAG,CAACC,IAAI,IAC9CnB,sBAAsB,CAACc,UAAU,CAC/BK,IAAI,CAACZ,MAAM,CAACa,KAAK,EACjBD,IAAI,CAACZ,MAAM,EACXY,IAAI,CAACV,KAAK,EACVV,sBAAsB,CAACsB,YAAY,CAACF,IAAI,CAACZ,MAAM,EAAEH,cAAc,CACjE,CACF,CAAC;IAED,IAAMkB,gBAAgB,GACpBtB,sBAAsB,CAACsB,gBAAgB,CAAClB,cAAc,CAAC;IAEzD,IAAMmB,YAAY,GAAGD,gBAAgB,GACjClB,cAAc,GACdL,sBAAsB,CAACyB,gBAAgB,CAAC,CAAC;IAE7C,IAAMC,kBAAkB,GAAGzB,sBAAsB,CAAC0B,sBAAsB,CACtEH,YAAY,EACZtB,wBAAwB,CAAC0B,WAAW,EACpC5B,sBAAsB,CAAC6B,qBAAqB,EAC5CN,gBAAgB,EAChBO,YAAY,IAAI;MACd,IAAIA,YAAY,IAAI,IAAI,EAAE;QACxB,IAAMC,eAAe,GACnB/B,sBAAsB,CAACyB,gBAAgB,CAACK,YAAY,CAAC;QACvD,IAAI9B,sBAAsB,CAACgC,OAAO,CAAC5B,EAAE,EAAE2B,eAAe,CAAC,EAAE;UACvDzB,oBAAoB,CAACyB,eAAe,CAAC;QACvC;MACF,CAAC,MAAM;QACLzB,oBAAoB,CAAC,IAAI,CAAC;MAC5B;IACF,CACF,CAAC;IAED,OAAO,CAACQ,mBAAmB,EAAE,GAAGI,mBAAmB,EAAEQ,kBAAkB,CAAC;EAC1E;AACF;AAACO,eAAA,CA7EK/B,wBAAwB,kBACN,EAAE;AAAA+B,eAAA,CADpB/B,wBAAwB,iBAGP,EAAE;AAAA+B,eAAA,CAHnB/B,wBAAwB,iBAKP,EAAE;AA0EzB,eAAeA,wBAAwB","ignoreList":[]}
1
+ {"version":3,"file":"IntegerFormatContextMenu.js","names":["IntegerColumnFormatter","FormatContextMenuUtils","IntegerFormatContextMenu","getOptions","dh","selectedFormat","onCustomFormatChange","formatItems","format","FORMAT_THOUSANDS","group","presetGroup","FORMAT_MILLIONS","FORMAT_SCIENTIFIC_NOTATION","defaultFormatOption","makeOption","defaultGroup","isDefaultSelected","presetFormatOptions","map","item","label","isSameFormat","isCustomSelected","customFormat","makeCustomFormat","customFormatOption","makeCustomFormatOption","customGroup","DEFAULT_FORMAT_STRING","formatString","newCustomFormat","isValid","_defineProperty"],"sources":["../../src/format-context-menus/IntegerFormatContextMenu.ts"],"sourcesContent":["import {\n type IntegerColumnFormat,\n IntegerColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport FormatContextMenuUtils, {\n type FormatContextMenuOption,\n} from './FormatContextMenuUtils';\n\nclass IntegerFormatContextMenu {\n static defaultGroup = 10;\n\n static presetGroup = 20;\n\n static customGroup = 30;\n\n /**\n * Creates list of formatting options for Integer context menu\n * @param dh JSAPI instance\n * @param selectedFormat Selected format object, null for no selected format\n * @param onCustomFormatChange Callback to call when the custom format is changed\n * @returns Array of formatting options for the context menu\n */\n static getOptions(\n dh: typeof DhType,\n selectedFormat: IntegerColumnFormat,\n onCustomFormatChange: (value: IntegerColumnFormat | null) => void\n ): FormatContextMenuOption[] {\n const formatItems = [\n {\n format: IntegerColumnFormatter.FORMAT_THOUSANDS,\n group: IntegerFormatContextMenu.presetGroup,\n },\n {\n format: IntegerColumnFormatter.FORMAT_MILLIONS,\n group: IntegerFormatContextMenu.presetGroup,\n },\n {\n format: IntegerColumnFormatter.FORMAT_SCIENTIFIC_NOTATION,\n group: IntegerFormatContextMenu.presetGroup,\n },\n ];\n\n const defaultFormatOption = FormatContextMenuUtils.makeOption(\n 'Default',\n null,\n IntegerFormatContextMenu.defaultGroup,\n FormatContextMenuUtils.isDefaultSelected(selectedFormat)\n );\n\n const presetFormatOptions = formatItems.map(item =>\n FormatContextMenuUtils.makeOption(\n item.format.label,\n item.format,\n item.group,\n IntegerColumnFormatter.isSameFormat(item.format, selectedFormat)\n )\n );\n\n const isCustomSelected =\n FormatContextMenuUtils.isCustomSelected(selectedFormat);\n\n const customFormat = isCustomSelected\n ? selectedFormat\n : IntegerColumnFormatter.makeCustomFormat();\n\n const customFormatOption = FormatContextMenuUtils.makeCustomFormatOption(\n customFormat,\n IntegerFormatContextMenu.customGroup,\n IntegerColumnFormatter.DEFAULT_FORMAT_STRING,\n isCustomSelected,\n formatString => {\n if (formatString != null) {\n const newCustomFormat =\n IntegerColumnFormatter.makeCustomFormat(formatString);\n if (IntegerColumnFormatter.isValid(dh, newCustomFormat)) {\n onCustomFormatChange(newCustomFormat);\n }\n } else {\n onCustomFormatChange(null);\n }\n }\n );\n\n return [defaultFormatOption, ...presetFormatOptions, customFormatOption];\n }\n}\n\nexport default IntegerFormatContextMenu;\n"],"mappings":";;;AAAA,SAEEA,sBAAsB,QACjB,wBAAwB;AAAC,OAEzBC,sBAAsB;AAI7B,MAAMC,wBAAwB,CAAC;EAO7B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,UAAUA,CACfC,EAAiB,EACjBC,cAAmC,EACnCC,oBAAiE,EACtC;IAC3B,IAAMC,WAAW,GAAG,CAClB;MACEC,MAAM,EAAER,sBAAsB,CAACS,gBAAgB;MAC/CC,KAAK,EAAER,wBAAwB,CAACS;IAClC,CAAC,EACD;MACEH,MAAM,EAAER,sBAAsB,CAACY,eAAe;MAC9CF,KAAK,EAAER,wBAAwB,CAACS;IAClC,CAAC,EACD;MACEH,MAAM,EAAER,sBAAsB,CAACa,0BAA0B;MACzDH,KAAK,EAAER,wBAAwB,CAACS;IAClC,CAAC,CACF;IAED,IAAMG,mBAAmB,GAAGb,sBAAsB,CAACc,UAAU,CAC3D,SAAS,EACT,IAAI,EACJb,wBAAwB,CAACc,YAAY,EACrCf,sBAAsB,CAACgB,iBAAiB,CAACZ,cAAc,CACzD,CAAC;IAED,IAAMa,mBAAmB,GAAGX,WAAW,CAACY,GAAG,CAACC,IAAI,IAC9CnB,sBAAsB,CAACc,UAAU,CAC/BK,IAAI,CAACZ,MAAM,CAACa,KAAK,EACjBD,IAAI,CAACZ,MAAM,EACXY,IAAI,CAACV,KAAK,EACVV,sBAAsB,CAACsB,YAAY,CAACF,IAAI,CAACZ,MAAM,EAAEH,cAAc,CACjE,CACF,CAAC;IAED,IAAMkB,gBAAgB,GACpBtB,sBAAsB,CAACsB,gBAAgB,CAAClB,cAAc,CAAC;IAEzD,IAAMmB,YAAY,GAAGD,gBAAgB,GACjClB,cAAc,GACdL,sBAAsB,CAACyB,gBAAgB,CAAC,CAAC;IAE7C,IAAMC,kBAAkB,GAAGzB,sBAAsB,CAAC0B,sBAAsB,CACtEH,YAAY,EACZtB,wBAAwB,CAAC0B,WAAW,EACpC5B,sBAAsB,CAAC6B,qBAAqB,EAC5CN,gBAAgB,EAChBO,YAAY,IAAI;MACd,IAAIA,YAAY,IAAI,IAAI,EAAE;QACxB,IAAMC,eAAe,GACnB/B,sBAAsB,CAACyB,gBAAgB,CAACK,YAAY,CAAC;QACvD,IAAI9B,sBAAsB,CAACgC,OAAO,CAAC5B,EAAE,EAAE2B,eAAe,CAAC,EAAE;UACvDzB,oBAAoB,CAACyB,eAAe,CAAC;QACvC;MACF,CAAC,MAAM;QACLzB,oBAAoB,CAAC,IAAI,CAAC;MAC5B;IACF,CACF,CAAC;IAED,OAAO,CAACQ,mBAAmB,EAAE,GAAGI,mBAAmB,EAAEQ,kBAAkB,CAAC;EAC1E;AACF;AAACO,eAAA,CA7EK/B,wBAAwB,kBACN,EAAE;AAAA+B,eAAA,CADpB/B,wBAAwB,iBAGP,EAAE;AAAA+B,eAAA,CAHnB/B,wBAAwB,iBAKP,EAAE;AA0EzB,eAAeA,wBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu"],"sources":["../../src/format-context-menus/index.ts"],"sourcesContent":["export { default as DateTimeFormatContextMenu } from './DateTimeFormatContextMenu';\nexport { default as DecimalFormatContextMenu } from './DecimalFormatContextMenu';\nexport { default as IntegerFormatContextMenu } from './IntegerFormatContextMenu';\n"],"mappings":"SAASA,OAAO,IAAIC,yBAAyB;AAAA,SACpCD,OAAO,IAAIE,wBAAwB;AAAA,SACnCF,OAAO,IAAIG,wBAAwB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu"],"sources":["../../src/format-context-menus/index.ts"],"sourcesContent":["export { default as DateTimeFormatContextMenu } from './DateTimeFormatContextMenu';\nexport { default as DecimalFormatContextMenu } from './DecimalFormatContextMenu';\nexport { default as IntegerFormatContextMenu } from './IntegerFormatContextMenu';\n"],"mappings":"SAASA,OAAO,IAAIC,yBAAyB;AAAA,SACpCD,OAAO,IAAIE,wBAAwB;AAAA,SACnCF,OAAO,IAAIG,wBAAwB"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["IrisGrid","default","ColumnHeaderGroup","SHORTCUTS","IrisGridModel","IrisGridTableModel","IrisGridPartitionedTableModel","IrisGridTreeTableModel","IrisGridTableModelTemplate","IrisGridModelFactory","createDefaultIrisGridTheme","IrisGridTestUtils","IrisGridUtils"],"sources":["../src/index.ts"],"sourcesContent":["import IrisGrid from './LazyIrisGrid';\n\nexport default IrisGrid;\nexport { IrisGrid };\nexport * from './sidebar';\nexport * from './AdvancedFilterCreator';\nexport * from './CommonTypes';\nexport * from './mousehandlers';\nexport { default as ColumnHeaderGroup } from './ColumnHeaderGroup';\nexport * from './PartitionedGridModel';\nexport * from './IrisGrid';\nexport type { default as IrisGridType } from './IrisGrid';\nexport { default as SHORTCUTS } from './IrisGridShortcuts';\nexport { default as IrisGridModel } from './IrisGridModel';\nexport * from './IrisGridModel';\nexport { default as IrisGridTableModel } from './IrisGridTableModel';\nexport * from './IrisGridTableModel';\nexport { default as IrisGridPartitionedTableModel } from './IrisGridPartitionedTableModel';\nexport { default as IrisGridTreeTableModel } from './IrisGridTreeTableModel';\nexport { default as IrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nexport * from './IrisGridTreeTableModel';\nexport * from './IrisGridTableModelTemplate';\nexport { default as IrisGridModelFactory } from './IrisGridModelFactory';\nexport { createDefaultIrisGridTheme } from './IrisGridTheme';\nexport type { IrisGridThemeType } from './IrisGridTheme';\nexport * from './IrisGridThemeProvider';\nexport { default as IrisGridTestUtils } from './IrisGridTestUtils';\nexport { default as IrisGridUtils } from './IrisGridUtils';\nexport * from './IrisGridUtils';\nexport * from './IrisGridMetricCalculator';\nexport * from './IrisGridRenderer';\nexport * from './IrisGridCacheUtils';\n"],"mappings":"OAAOA,QAAQ;AAEf,eAAeA,QAAQ;AACvB,SAASA,QAAQ;AAAG;AAAA;AAAA;AAAA;AAAA,SAKXC,OAAO,IAAIC,iBAAiB;AAAA;AAAA;AAAA,SAI5BD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,aAAa;AAAA;AAAA,SAExBH,OAAO,IAAII,kBAAkB;AAAA;AAAA,SAE7BJ,OAAO,IAAIK,6BAA6B;AAAA,SACxCL,OAAO,IAAIM,sBAAsB;AAAA,SACjCN,OAAO,IAAIO,0BAA0B;AAAA;AAAA;AAAA,SAGrCP,OAAO,IAAIQ,oBAAoB;AAAA,SAC/BC,0BAA0B;AAAA;AAAA,SAG1BT,OAAO,IAAIU,iBAAiB;AAAA,SAC5BV,OAAO,IAAIW,aAAa;AAAA;AAAA;AAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["IrisGrid","default","ColumnHeaderGroup","SHORTCUTS","IrisGridModel","IrisGridTableModel","IrisGridPartitionedTableModel","IrisGridTreeTableModel","IrisGridTableModelTemplate","IrisGridModelFactory","createDefaultIrisGridTheme","IrisGridTestUtils","IrisGridUtils"],"sources":["../src/index.ts"],"sourcesContent":["import IrisGrid from './LazyIrisGrid';\n\nexport default IrisGrid;\nexport { IrisGrid };\nexport * from './sidebar';\nexport * from './AdvancedFilterCreator';\nexport * from './CommonTypes';\nexport * from './mousehandlers';\nexport { default as ColumnHeaderGroup } from './ColumnHeaderGroup';\nexport * from './PartitionedGridModel';\nexport * from './IrisGrid';\nexport type { default as IrisGridType } from './IrisGrid';\nexport { default as SHORTCUTS } from './IrisGridShortcuts';\nexport { default as IrisGridModel } from './IrisGridModel';\nexport * from './IrisGridModel';\nexport { default as IrisGridTableModel } from './IrisGridTableModel';\nexport * from './IrisGridTableModel';\nexport { default as IrisGridPartitionedTableModel } from './IrisGridPartitionedTableModel';\nexport { default as IrisGridTreeTableModel } from './IrisGridTreeTableModel';\nexport { default as IrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nexport * from './IrisGridTreeTableModel';\nexport * from './IrisGridTableModelTemplate';\nexport { default as IrisGridModelFactory } from './IrisGridModelFactory';\nexport { createDefaultIrisGridTheme } from './IrisGridTheme';\nexport type { IrisGridThemeType } from './IrisGridTheme';\nexport * from './IrisGridThemeProvider';\nexport { default as IrisGridTestUtils } from './IrisGridTestUtils';\nexport { default as IrisGridUtils } from './IrisGridUtils';\nexport * from './IrisGridUtils';\nexport * from './IrisGridMetricCalculator';\nexport * from './IrisGridRenderer';\nexport * from './IrisGridCacheUtils';\n"],"mappings":"OAAOA,QAAQ;AAEf,eAAeA,QAAQ;AACvB,SAASA,QAAQ;AAAG;AAAA;AAAA;AAAA;AAAA,SAKXC,OAAO,IAAIC,iBAAiB;AAAA;AAAA;AAAA,SAI5BD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,aAAa;AAAA;AAAA,SAExBH,OAAO,IAAII,kBAAkB;AAAA;AAAA,SAE7BJ,OAAO,IAAIK,6BAA6B;AAAA,SACxCL,OAAO,IAAIM,sBAAsB;AAAA,SACjCN,OAAO,IAAIO,0BAA0B;AAAA;AAAA;AAAA,SAGrCP,OAAO,IAAIQ,oBAAoB;AAAA,SAC/BC,0BAA0B;AAAA;AAAA,SAG1BT,OAAO,IAAIU,iBAAiB;AAAA,SAC5BV,OAAO,IAAIW,aAAa;AAAA;AAAA;AAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClearFilterKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ClearFilterKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","CLEAR_FILTERS","matchesEvent","clearAllFilters"],"sources":["../../src/key-handlers/ClearFilterKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ClearFilterKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.CLEAR_FILTERS.matchesEvent(event)) {\n this.irisGrid.clearAllFilters();\n return true;\n }\n return false;\n }\n}\n\nexport default ClearFilterKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,qBAAqB,SAASF,UAAU,CAAC;EAG7CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,aAAa,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MAC7D,IAAI,CAACH,QAAQ,CAACO,eAAe,CAAC,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeT,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"ClearFilterKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ClearFilterKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","CLEAR_FILTERS","matchesEvent","clearAllFilters"],"sources":["../../src/key-handlers/ClearFilterKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ClearFilterKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.CLEAR_FILTERS.matchesEvent(event)) {\n this.irisGrid.clearAllFilters();\n return true;\n }\n return false;\n }\n}\n\nexport default ClearFilterKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,qBAAqB,SAASF,UAAU,CAAC;EAG7CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,aAAa,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MAC7D,IAAI,CAACH,QAAQ,CAACO,eAAe,CAAC,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeT,qBAAqB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CopyCellKeyHandler.js","names":["KeyHandler","ContextActionUtils","CopyCellKeyHandler","constructor","irisGrid","_defineProperty","cursor","onDown","event","grid","altKey","isModifierKeyDown","shiftKey","mouseX","mouseY","state","gridPoint","getGridPointFromXY","column","row","props","copyCursor","onUp"],"sources":["../../src/key-handlers/CopyCellKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nimport type { Grid } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\nclass CopyCellKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n if (\n event.altKey &&\n !ContextActionUtils.isModifierKeyDown(event) &&\n !event.shiftKey\n ) {\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n const gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n\n onUp(event: KeyboardEvent, grid: Grid): boolean {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\n\nexport default CopyCellKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,uBAAuB;AAI1D,MAAMC,kBAAkB,SAASF,UAAU,CAAC;EAG1CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,MAAM,GAAG,IAAI;EACpB;EAEAC,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,IACED,KAAK,CAACE,MAAM,IACZ,CAACT,kBAAkB,CAACU,iBAAiB,CAACH,KAAK,CAAC,IAC5C,CAACA,KAAK,CAACI,QAAQ,EACf;MACA,IAAM;QAAEC,MAAM;QAAEC;MAAO,CAAC,GAAGL,IAAI,CAACM,KAAK;MACrC,IAAIF,MAAM,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,EAAE;QACpC,OAAO,KAAK;MACd;MACA,IAAME,SAAS,GAAGP,IAAI,CAACQ,kBAAkB,CAACJ,MAAM,EAAEC,MAAM,CAAC;MACzD,IAAIE,SAAS,CAACE,MAAM,IAAI,IAAI,IAAIF,SAAS,CAACG,GAAG,IAAI,IAAI,EAAE;QACrD,IAAI,CAACb,MAAM,GAAG,IAAI,CAACF,QAAQ,CAACgB,KAAK,CAACC,UAAU;QAC5C,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,IAAIA,CAACd,KAAoB,EAAEC,IAAU,EAAW;IAC9C,IAAI,IAAI,CAACH,MAAM,KAAK,IAAI,CAACF,QAAQ,CAACgB,KAAK,CAACC,UAAU,EAAE;MAClD,IAAI,CAACf,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"CopyCellKeyHandler.js","names":["KeyHandler","ContextActionUtils","CopyCellKeyHandler","constructor","irisGrid","_defineProperty","cursor","onDown","event","grid","altKey","isModifierKeyDown","shiftKey","mouseX","mouseY","state","gridPoint","getGridPointFromXY","column","row","props","copyCursor","onUp"],"sources":["../../src/key-handlers/CopyCellKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nimport type { Grid } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\nclass CopyCellKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n if (\n event.altKey &&\n !ContextActionUtils.isModifierKeyDown(event) &&\n !event.shiftKey\n ) {\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n const gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n\n onUp(event: KeyboardEvent, grid: Grid): boolean {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\n\nexport default CopyCellKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,uBAAuB;AAI1D,MAAMC,kBAAkB,SAASF,UAAU,CAAC;EAG1CG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,MAAM,GAAG,IAAI;EACpB;EAEAC,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,IACED,KAAK,CAACE,MAAM,IACZ,CAACT,kBAAkB,CAACU,iBAAiB,CAACH,KAAK,CAAC,IAC5C,CAACA,KAAK,CAACI,QAAQ,EACf;MACA,IAAM;QAAEC,MAAM;QAAEC;MAAO,CAAC,GAAGL,IAAI,CAACM,KAAK;MACrC,IAAIF,MAAM,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,EAAE;QACpC,OAAO,KAAK;MACd;MACA,IAAME,SAAS,GAAGP,IAAI,CAACQ,kBAAkB,CAACJ,MAAM,EAAEC,MAAM,CAAC;MACzD,IAAIE,SAAS,CAACE,MAAM,IAAI,IAAI,IAAIF,SAAS,CAACG,GAAG,IAAI,IAAI,EAAE;QACrD,IAAI,CAACb,MAAM,GAAG,IAAI,CAACF,QAAQ,CAACgB,KAAK,CAACC,UAAU;QAC5C,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,IAAIA,CAACd,KAAoB,EAAEC,IAAU,EAAW;IAC9C,IAAI,IAAI,CAACH,MAAM,KAAK,IAAI,CAACF,QAAQ,CAACgB,KAAK,CAACC,UAAU,EAAE;MAClD,IAAI,CAACf,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CopyKeyHandler.js","names":["ContextActionUtils","KeyHandler","IrisGridUtils","CopyKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","selectedRanges","state","key","isModifierKeyDown","isValidSnapshotRanges","copyRanges"],"sources":["../../src/key-handlers/CopyKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { type KeyboardEvent } from 'react';\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridUtils from '../IrisGridUtils';\n\nclass CopyKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n const { selectedRanges } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(\n selectedRanges,\n false,\n false,\n 'Invalid copy ranges'\n );\n }\n return true;\n }\n return false;\n }\n}\n\nexport default CopyKeyHandler;\n"],"mappings":";;;AAAA;;AAEA,SAASA,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,aAAa;AAEpB,MAAMC,cAAc,SAASF,UAAU,CAAC;EAGtCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAM;MAAEC;IAAe,CAAC,GAAG,IAAI,CAACJ,QAAQ,CAACK,KAAK;IAC9C,IAAIF,KAAK,CAACG,GAAG,KAAK,GAAG,IAAIX,kBAAkB,CAACY,iBAAiB,CAACJ,KAAK,CAAC,EAAE;MACpE,IAAIN,aAAa,CAACW,qBAAqB,CAACJ,cAAc,CAAC,EAAE;QACvD,IAAI,CAACJ,QAAQ,CAACS,UAAU,CAACL,cAAc,CAAC;MAC1C,CAAC,MAAM;QACL,IAAI,CAACJ,QAAQ,CAACS,UAAU,CACtBL,cAAc,EACd,KAAK,EACL,KAAK,EACL,qBACF,CAAC;MACH;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeN,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"CopyKeyHandler.js","names":["ContextActionUtils","KeyHandler","IrisGridUtils","CopyKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","selectedRanges","state","key","isModifierKeyDown","isValidSnapshotRanges","copyRanges"],"sources":["../../src/key-handlers/CopyKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { type KeyboardEvent } from 'react';\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridUtils from '../IrisGridUtils';\n\nclass CopyKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n const { selectedRanges } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(\n selectedRanges,\n false,\n false,\n 'Invalid copy ranges'\n );\n }\n return true;\n }\n return false;\n }\n}\n\nexport default CopyKeyHandler;\n"],"mappings":";;;AAAA;;AAEA,SAASA,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,aAAa;AAEpB,MAAMC,cAAc,SAASF,UAAU,CAAC;EAGtCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAM;MAAEC;IAAe,CAAC,GAAG,IAAI,CAACJ,QAAQ,CAACK,KAAK;IAC9C,IAAIF,KAAK,CAACG,GAAG,KAAK,GAAG,IAAIX,kBAAkB,CAACY,iBAAiB,CAACJ,KAAK,CAAC,EAAE;MACpE,IAAIN,aAAa,CAACW,qBAAqB,CAACJ,cAAc,CAAC,EAAE;QACvD,IAAI,CAACJ,QAAQ,CAACS,UAAU,CAACL,cAAc,CAAC;MAC1C,CAAC,MAAM;QACL,IAAI,CAACJ,QAAQ,CAACS,UAAU,CACtBL,cAAc,EACd,KAAK,EACL,KAAK,EACL,qBACF,CAAC;MACH;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeN,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReverseKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverse","state"],"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverse } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,iBAAiB,SAASF,UAAU,CAAC;EAGzCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,OAAO,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MACvD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACO,YAAY,CAAC,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,IAAM;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACR,QAAQ,CAACS,KAAK;MACvC,IAAI,CAACT,QAAQ,CAACQ,OAAO,CAAC,CAACA,OAAO,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeV,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"ReverseKeyHandler.js","names":["KeyHandler","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","_defineProperty","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverse","state"],"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"sourcesContent":["import { type KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverse } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"mappings":";;;AACA,SAASA,UAAU,QAAQ,iBAAiB;AAAC,OAEtCC,iBAAiB;AAExB,MAAMC,iBAAiB,SAASF,UAAU,CAAC;EAGzCG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEAE,MAAMA,CAACC,KAAoB,EAAW;IACpC,IAAIN,iBAAiB,CAACO,KAAK,CAACC,OAAO,CAACC,YAAY,CAACH,KAAK,CAAC,EAAE;MACvD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACO,YAAY,CAAC,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,IAAM;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACR,QAAQ,CAACS,KAAK;MACvC,IAAI,CAACT,QAAQ,CAACQ,OAAO,CAAC,CAACA,OAAO,CAAC;MAC/B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeV,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","CopyCellKeyHandler","CopyKeyHandler","ReverseKeyHandler","ClearFilterKeyHandler"],"sources":["../../src/key-handlers/index.ts"],"sourcesContent":["export { default as CopyCellKeyHandler } from './CopyCellKeyHandler';\nexport { default as CopyKeyHandler } from './CopyKeyHandler';\nexport { default as ReverseKeyHandler } from './ReverseKeyHandler';\nexport { default as ClearFilterKeyHandler } from './ClearFilterKeyHandler';\n"],"mappings":"SAASA,OAAO,IAAIC,kBAAkB;AAAA,SAC7BD,OAAO,IAAIE,cAAc;AAAA,SACzBF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","CopyCellKeyHandler","CopyKeyHandler","ReverseKeyHandler","ClearFilterKeyHandler"],"sources":["../../src/key-handlers/index.ts"],"sourcesContent":["export { default as CopyCellKeyHandler } from './CopyCellKeyHandler';\nexport { default as CopyKeyHandler } from './CopyKeyHandler';\nexport { default as ReverseKeyHandler } from './ReverseKeyHandler';\nexport { default as ClearFilterKeyHandler } from './ClearFilterKeyHandler';\n"],"mappings":"SAASA,OAAO,IAAIC,kBAAkB;AAAA,SAC7BD,OAAO,IAAIE,cAAc;AAAA,SACzBF,OAAO,IAAIG,iBAAiB;AAAA,SAC5BH,OAAO,IAAII,qBAAqB"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridCellOverflowMouseHandler.js","names":["GridMouseHandler","deepEqual","IrisGridCellOverflowMouseHandler","constructor","irisGrid","_defineProperty","destroyColumnTooltip","setState","overflowButtonTooltipProps","setCursor","point","isHoveringOverflowButton","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","renderer","grid","state","props","metrics","model","canvasContext","context","theme","getTheme","rendererState","mouseX","mouseY","left","top","width","height","getCellOverflowButtonPosition","_this$getButtonPositi","shouldRenderOverflowButton","onMove","newProps","onWheel","onDown","showOverflowModal","overflowText","getValueForCell","onContextMenu","onLeave"],"sources":["../../src/mousehandlers/IrisGridCellOverflowMouseHandler.ts"],"sourcesContent":["import {\n type GridPoint,\n GridMouseHandler,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport deepEqual from 'fast-deep-equal';\nimport type IrisGrid from '../IrisGrid';\nimport { type IrisGridRenderState } from '../IrisGridRenderer';\n\n/**\n * Handles cursor and click action for cell overflow button\n * The button is rendered via IrisGridRenderer\n */\nclass IrisGridCellOverflowMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(850); // Needs to be before GridSelectionMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyColumnTooltip(): void {\n this.irisGrid.setState({ overflowButtonTooltipProps: null });\n }\n\n private setCursor(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = this.irisGrid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const { left, top, width, height } =\n renderer.getCellOverflowButtonPosition(rendererState);\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n private isHoveringOverflowButton(point: GridPoint): boolean {\n const { x, y } = point;\n const { left, top, width, height } = this.getButtonPosition(point) ?? {};\n if (left == null || width == null || top == null || height == null) {\n return false;\n }\n\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return false;\n }\n const { metrics } = state;\n const { model } = props;\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n } as IrisGridRenderState;\n\n return (\n renderer.shouldRenderOverflowButton(rendererState) &&\n x >= left &&\n x <= left + width &&\n y >= top &&\n y <= top + height\n );\n }\n\n onMove(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n const { overflowButtonTooltipProps } = this.irisGrid.state;\n const newProps = this.getButtonPosition(point);\n if (!deepEqual(overflowButtonTooltipProps, newProps)) {\n this.irisGrid.setState({ overflowButtonTooltipProps: newProps });\n }\n } else {\n this.destroyColumnTooltip();\n }\n return this.setCursor(point);\n }\n\n onWheel(point: GridPoint): EventHandlerResult {\n this.destroyColumnTooltip();\n return this.onMove(point);\n }\n\n // Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown\n onDown(point: GridPoint): boolean {\n this.destroyColumnTooltip();\n const { column, row } = point;\n\n if (this.isHoveringOverflowButton(point)) {\n this.irisGrid.setState({\n showOverflowModal: true,\n overflowText: this.irisGrid.getValueForCell(column, row) as string,\n });\n }\n\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n}\n\nexport default IrisGridCellOverflowMouseHandler;\n"],"mappings":";;;AAAA,SAEEA,gBAAgB,QAEX,iBAAiB;AACxB,OAAOC,SAAS,MAAM,iBAAiB;AAIvC;AACA;AACA;AACA;AACA,MAAMC,gCAAgC,SAASF,gBAAgB,CAAC;EAG9DG,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAAAC,eAAA;IAEZ,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAEQE,oBAAoBA,CAAA,EAAS;IACnC,IAAI,CAACF,QAAQ,CAACG,QAAQ,CAAC;MAAEC,0BAA0B,EAAE;IAAK,CAAC,CAAC;EAC9D;EAEQC,SAASA,CAACC,KAAgB,EAAsB;IACtD,IAAI,IAAI,CAACC,wBAAwB,CAACD,KAAK,CAAC,EAAE;MACxC,IAAI,CAACE,MAAM,GAAG,SAAS;MACvB,OAAO;QAAEC,eAAe,EAAE,KAAK;QAAEC,cAAc,EAAE;MAAM,CAAC;IAC1D;IAEA,IAAI,CAACF,MAAM,GAAG,IAAI;IAClB,OAAO,KAAK;EACd;EAEQG,iBAAiBA,CAAAC,IAAA,EAKhB;IAAA,IALiB;MAAEC,CAAC;MAAEC,CAAC;MAAEC,MAAM;MAAEC;IAAe,CAAC,GAAAJ,IAAA;IAMxD,IAAIG,MAAM,IAAI,IAAI,IAAIC,GAAG,IAAI,IAAI,EAAE;MACjC,OAAO,IAAI;IACb;IACA,IAAM;MAAEC,QAAQ;MAAEC,IAAI;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACpB,QAAQ;IACtD,IAAI,CAACkB,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IACA,IAAM;MAAEG;IAAQ,CAAC,GAAGF,KAAK;IACzB,IAAM;MAAEG;IAAM,CAAC,GAAGF,KAAK;IAEvB,IAAM;MAAEG,aAAa,EAAEC;IAAQ,CAAC,GAAGN,IAAI;IACvC,IAAMO,KAAK,GAAG,IAAI,CAACzB,QAAQ,CAAC0B,QAAQ,CAAC,CAAC;IACtC,IAAMC,aAAa,GAAG;MACpBH,OAAO;MACPI,MAAM,EAAEf,CAAC;MACTgB,MAAM,EAAEf,CAAC;MACTO,OAAO;MACPC,KAAK;MACLG;IACF,CAAC;IAED,IAAM;MAAEK,IAAI;MAAEC,GAAG;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAChChB,QAAQ,CAACiB,6BAA6B,CAACP,aAAa,CAAC;IACvD,IAAIG,IAAI,IAAI,IAAI,IAAIE,KAAK,IAAI,IAAI,IAAID,GAAG,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClE,OAAO,IAAI;IACb;IAEA,OAAO;MAAEH,IAAI;MAAEC,GAAG;MAAEC,KAAK;MAAEC;IAAO,CAAC;EACrC;EAEQ1B,wBAAwBA,CAACD,KAAgB,EAAW;IAAA,IAAA6B,qBAAA;IAC1D,IAAM;MAAEtB,CAAC;MAAEC;IAAE,CAAC,GAAGR,KAAK;IACtB,IAAM;MAAEwB,IAAI;MAAEC,GAAG;MAAEC,KAAK;MAAEC;IAAO,CAAC,IAAAE,qBAAA,GAAG,IAAI,CAACxB,iBAAiB,CAACL,KAAK,CAAC,cAAA6B,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;IACxE,IAAIL,IAAI,IAAI,IAAI,IAAIE,KAAK,IAAI,IAAI,IAAID,GAAG,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClE,OAAO,KAAK;IACd;IAEA,IAAM;MAAEhB,QAAQ;MAAEC,IAAI;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACpB,QAAQ;IACtD,IAAI,CAACkB,IAAI,EAAE;MACT,OAAO,KAAK;IACd;IACA,IAAM;MAAEG;IAAQ,CAAC,GAAGF,KAAK;IACzB,IAAM;MAAEG;IAAM,CAAC,GAAGF,KAAK;IACvB,IAAM;MAAEG,aAAa,EAAEC;IAAQ,CAAC,GAAGN,IAAI;IACvC,IAAMO,KAAK,GAAGP,IAAI,CAACQ,QAAQ,CAAC,CAAC;IAC7B,IAAMC,aAAa,GAAG;MACpBH,OAAO;MACPI,MAAM,EAAEf,CAAC;MACTgB,MAAM,EAAEf,CAAC;MACTO,OAAO;MACPC,KAAK;MACLG;IACF,CAAwB;IAExB,OACER,QAAQ,CAACmB,0BAA0B,CAACT,aAAa,CAAC,IAClDd,CAAC,IAAIiB,IAAI,IACTjB,CAAC,IAAIiB,IAAI,GAAGE,KAAK,IACjBlB,CAAC,IAAIiB,GAAG,IACRjB,CAAC,IAAIiB,GAAG,GAAGE,MAAM;EAErB;EAEAI,MAAMA,CAAC/B,KAAgB,EAAsB;IAC3C,IAAI,IAAI,CAACC,wBAAwB,CAACD,KAAK,CAAC,EAAE;MACxC,IAAM;QAAEF;MAA2B,CAAC,GAAG,IAAI,CAACJ,QAAQ,CAACmB,KAAK;MAC1D,IAAMmB,QAAQ,GAAG,IAAI,CAAC3B,iBAAiB,CAACL,KAAK,CAAC;MAC9C,IAAI,CAACT,SAAS,CAACO,0BAA0B,EAAEkC,QAAQ,CAAC,EAAE;QACpD,IAAI,CAACtC,QAAQ,CAACG,QAAQ,CAAC;UAAEC,0BAA0B,EAAEkC;QAAS,CAAC,CAAC;MAClE;IACF,CAAC,MAAM;MACL,IAAI,CAACpC,oBAAoB,CAAC,CAAC;IAC7B;IACA,OAAO,IAAI,CAACG,SAAS,CAACC,KAAK,CAAC;EAC9B;EAEAiC,OAAOA,CAACjC,KAAgB,EAAsB;IAC5C,IAAI,CAACJ,oBAAoB,CAAC,CAAC;IAC3B,OAAO,IAAI,CAACmC,MAAM,CAAC/B,KAAK,CAAC;EAC3B;;EAEA;EACAkC,MAAMA,CAAClC,KAAgB,EAAW;IAChC,IAAI,CAACJ,oBAAoB,CAAC,CAAC;IAC3B,IAAM;MAAEa,MAAM;MAAEC;IAAI,CAAC,GAAGV,KAAK;IAE7B,IAAI,IAAI,CAACC,wBAAwB,CAACD,KAAK,CAAC,EAAE;MACxC,IAAI,CAACN,QAAQ,CAACG,QAAQ,CAAC;QACrBsC,iBAAiB,EAAE,IAAI;QACvBC,YAAY,EAAE,IAAI,CAAC1C,QAAQ,CAAC2C,eAAe,CAAC5B,MAAM,EAAEC,GAAG;MACzD,CAAC,CAAC;IACJ;IAEA,OAAO,KAAK;EACd;EAEA4B,aAAaA,CAAA,EAAuB;IAClC,IAAI,CAAC1C,oBAAoB,CAAC,CAAC;IAC3B,OAAO,KAAK;EACd;EAEA2C,OAAOA,CAAA,EAAuB;IAC5B,IAAI,CAAC3C,oBAAoB,CAAC,CAAC;IAC3B,OAAO,KAAK;EACd;AACF;AAEA,eAAeJ,gCAAgC","ignoreList":[]}
1
+ {"version":3,"file":"IrisGridCellOverflowMouseHandler.js","names":["GridMouseHandler","deepEqual","IrisGridCellOverflowMouseHandler","constructor","irisGrid","_defineProperty","destroyColumnTooltip","setState","overflowButtonTooltipProps","setCursor","point","isHoveringOverflowButton","cursor","stopPropagation","preventDefault","getButtonPosition","_ref","x","y","column","row","renderer","grid","state","props","metrics","model","canvasContext","context","theme","getTheme","rendererState","mouseX","mouseY","left","top","width","height","getCellOverflowButtonPosition","_this$getButtonPositi","shouldRenderOverflowButton","onMove","newProps","onWheel","onDown","showOverflowModal","overflowText","getValueForCell","onContextMenu","onLeave"],"sources":["../../src/mousehandlers/IrisGridCellOverflowMouseHandler.ts"],"sourcesContent":["import {\n type GridPoint,\n GridMouseHandler,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport deepEqual from 'fast-deep-equal';\nimport type IrisGrid from '../IrisGrid';\nimport { type IrisGridRenderState } from '../IrisGridRenderer';\n\n/**\n * Handles cursor and click action for cell overflow button\n * The button is rendered via IrisGridRenderer\n */\nclass IrisGridCellOverflowMouseHandler extends GridMouseHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super(850); // Needs to be before GridSelectionMouseHandler\n\n this.irisGrid = irisGrid;\n }\n\n private destroyColumnTooltip(): void {\n this.irisGrid.setState({ overflowButtonTooltipProps: null });\n }\n\n private setCursor(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n\n this.cursor = null;\n return false;\n }\n\n private getButtonPosition({ x, y, column, row }: GridPoint): {\n left: number;\n top: number;\n width: number;\n height: number;\n } | null {\n if (column == null || row == null) {\n return null;\n }\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return null;\n }\n const { metrics } = state;\n const { model } = props;\n\n const { canvasContext: context } = grid;\n const theme = this.irisGrid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n };\n\n const { left, top, width, height } =\n renderer.getCellOverflowButtonPosition(rendererState);\n if (left == null || width == null || top == null || height == null) {\n return null;\n }\n\n return { left, top, width, height };\n }\n\n private isHoveringOverflowButton(point: GridPoint): boolean {\n const { x, y } = point;\n const { left, top, width, height } = this.getButtonPosition(point) ?? {};\n if (left == null || width == null || top == null || height == null) {\n return false;\n }\n\n const { renderer, grid, state, props } = this.irisGrid;\n if (!grid) {\n return false;\n }\n const { metrics } = state;\n const { model } = props;\n const { canvasContext: context } = grid;\n const theme = grid.getTheme();\n const rendererState = {\n context,\n mouseX: x,\n mouseY: y,\n metrics,\n model,\n theme,\n } as IrisGridRenderState;\n\n return (\n renderer.shouldRenderOverflowButton(rendererState) &&\n x >= left &&\n x <= left + width &&\n y >= top &&\n y <= top + height\n );\n }\n\n onMove(point: GridPoint): EventHandlerResult {\n if (this.isHoveringOverflowButton(point)) {\n const { overflowButtonTooltipProps } = this.irisGrid.state;\n const newProps = this.getButtonPosition(point);\n if (!deepEqual(overflowButtonTooltipProps, newProps)) {\n this.irisGrid.setState({ overflowButtonTooltipProps: newProps });\n }\n } else {\n this.destroyColumnTooltip();\n }\n return this.setCursor(point);\n }\n\n onWheel(point: GridPoint): EventHandlerResult {\n this.destroyColumnTooltip();\n return this.onMove(point);\n }\n\n // Needs to be onDown and not onClick b/c of GridSelectionMouseHandler shifting cell onDown\n onDown(point: GridPoint): boolean {\n this.destroyColumnTooltip();\n const { column, row } = point;\n\n if (this.isHoveringOverflowButton(point)) {\n this.irisGrid.setState({\n showOverflowModal: true,\n overflowText: this.irisGrid.getValueForCell(column, row) as string,\n });\n }\n\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyColumnTooltip();\n return false;\n }\n}\n\nexport default IrisGridCellOverflowMouseHandler;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridColumnSelectMouseHandler.js","names":["GridMouseHandler","IrisGridColumnSelectMouseHandler","constructor","irisGrid","_defineProperty","cursor","isActive","isSelectingColumn","props","isValidColumn","tableColumn","isProxy","columnSelectionValidator","updateColumnSelectionStatus","getTableColumn","columnIndex","model","modelColumn","getModelColumn","columns","onMove","gridPoint","columnAllowedCursor","columnNotAllowedCursor","column","setState","hoverSelectColumn","onWheel","preventDefault","stopPropagation","onLeave","onDown","onClick","selectColumn"],"sources":["../../src/mousehandlers/IrisGridColumnSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n type GridPoint,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport type IrisGrid from '../IrisGrid';\nimport { type DisplayColumn } from '../IrisGridModel';\n\n/**\n * Handles interaction with tables when the Linker tool is active\n */\nclass IrisGridColumnSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n private irisGrid: IrisGrid;\n\n private isActive(): boolean {\n const { isSelectingColumn } = this.irisGrid.props;\n return isSelectingColumn;\n }\n\n private isValidColumn(tableColumn: DisplayColumn | null): boolean {\n if (tableColumn == null || tableColumn.isProxy === true) {\n return false;\n }\n\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n return columnSelectionValidator(tableColumn);\n }\n return true;\n }\n\n private updateColumnSelectionStatus(): void {\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n columnSelectionValidator(null);\n }\n }\n\n private getTableColumn(columnIndex: number | null): dh.Column | null {\n if (columnIndex == null) {\n return null;\n }\n\n const { model } = this.irisGrid.props;\n const modelColumn = this.irisGrid.getModelColumn(columnIndex);\n if (modelColumn == null) {\n return null;\n }\n\n return model.columns[modelColumn];\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n return true;\n }\n\n // keeps linker cursor state during wheel event\n onWheel(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n // don't block wheel event from scrolling\n return { preventDefault: false, stopPropagation: false };\n }\n\n onLeave(): EventHandlerResult {\n if (this.isActive()) {\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n this.updateColumnSelectionStatus();\n\n return false;\n }\n\n onDown(): EventHandlerResult {\n return this.isActive();\n }\n\n onClick(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n if (tableColumn != null && this.isValidColumn(tableColumn)) {\n this.irisGrid.selectColumn(tableColumn);\n }\n\n return true;\n }\n}\n\nexport default IrisGridColumnSelectMouseHandler;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"IrisGridColumnSelectMouseHandler.js","names":["GridMouseHandler","IrisGridColumnSelectMouseHandler","constructor","irisGrid","_defineProperty","cursor","isActive","isSelectingColumn","props","isValidColumn","tableColumn","isProxy","columnSelectionValidator","updateColumnSelectionStatus","getTableColumn","columnIndex","model","modelColumn","getModelColumn","columns","onMove","gridPoint","columnAllowedCursor","columnNotAllowedCursor","column","setState","hoverSelectColumn","onWheel","preventDefault","stopPropagation","onLeave","onDown","onClick","selectColumn"],"sources":["../../src/mousehandlers/IrisGridColumnSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n type GridPoint,\n type EventHandlerResult,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport type IrisGrid from '../IrisGrid';\nimport { type DisplayColumn } from '../IrisGridModel';\n\n/**\n * Handles interaction with tables when the Linker tool is active\n */\nclass IrisGridColumnSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n private irisGrid: IrisGrid;\n\n private isActive(): boolean {\n const { isSelectingColumn } = this.irisGrid.props;\n return isSelectingColumn;\n }\n\n private isValidColumn(tableColumn: DisplayColumn | null): boolean {\n if (tableColumn == null || tableColumn.isProxy === true) {\n return false;\n }\n\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n return columnSelectionValidator(tableColumn);\n }\n return true;\n }\n\n private updateColumnSelectionStatus(): void {\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n columnSelectionValidator(null);\n }\n }\n\n private getTableColumn(columnIndex: number | null): dh.Column | null {\n if (columnIndex == null) {\n return null;\n }\n\n const { model } = this.irisGrid.props;\n const modelColumn = this.irisGrid.getModelColumn(columnIndex);\n if (modelColumn == null) {\n return null;\n }\n\n return model.columns[modelColumn];\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n return true;\n }\n\n // keeps linker cursor state during wheel event\n onWheel(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n // don't block wheel event from scrolling\n return { preventDefault: false, stopPropagation: false };\n }\n\n onLeave(): EventHandlerResult {\n if (this.isActive()) {\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n this.updateColumnSelectionStatus();\n\n return false;\n }\n\n onDown(): EventHandlerResult {\n return this.isActive();\n }\n\n onClick(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n if (tableColumn != null && this.isValidColumn(tableColumn)) {\n this.irisGrid.selectColumn(tableColumn);\n }\n\n return true;\n }\n}\n\nexport default IrisGridColumnSelectMouseHandler;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridColumnTooltipMouseHandler.js","names":["GridMouseHandler","IrisGridColumnTooltipMouseHandler","constructor","irisGrid","_defineProperty","hideColumnTooltip","tooltip","stopTimer","hide","onDown","onContextMenu","onWheel","onLeave","gridPoint","grid","event","relatedTarget","MouseEvent","nativeEvent","popper","current","Element","element","contains","onMove","column","row","columnHeaderDepth","shownColumnTooltip","state","newTooltip","setState"],"sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n type GridPoint,\n type EventHandlerResult,\n type Grid,\n type GridMouseEvent,\n} from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\n/**\n * Detects mouse hover over column headers and displays the appropriate tooltip\n */\nclass IrisGridColumnTooltipMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n private irisGrid: IrisGrid;\n\n private hideColumnTooltip(): void {\n const { tooltip } = this.irisGrid;\n if (tooltip) {\n tooltip.stopTimer();\n tooltip.hide();\n }\n }\n\n onDown(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onLeave(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n /**\n * This should always be a react event\n * React seems to be handling onMouseLeave incorrectly at times\n * When moving to the padding between the column and popper, React sets\n * event.relatedTarget to window, but event.nativeEvent.relatedTarget is the popper.\n * It's possibly related to popper being rendered in a portal\n */\n const { relatedTarget } =\n event instanceof MouseEvent ? event : event.nativeEvent;\n\n const { tooltip } = this.irisGrid;\n if (!tooltip) {\n return false;\n }\n\n const popper = tooltip.popper.current;\n\n if (\n popper &&\n relatedTarget instanceof Element &&\n popper.element.contains(relatedTarget)\n ) {\n // Do not hide the popper if we moved the cursor from canvas to popper\n return false;\n }\n this.hideColumnTooltip();\n return false;\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n const { column, row, columnHeaderDepth } = gridPoint;\n const { shownColumnTooltip } = this.irisGrid.state;\n let newTooltip = null;\n if (column !== null && row === null && columnHeaderDepth === 0) {\n newTooltip = column;\n }\n\n if (newTooltip !== shownColumnTooltip) {\n this.irisGrid.setState({ shownColumnTooltip: newTooltip });\n }\n\n return false;\n }\n}\n\nexport default IrisGridColumnTooltipMouseHandler;\n"],"mappings":";;;AAAA;AACA,SACEA,gBAAgB,QAKX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,iCAAiC,SAASD,gBAAgB,CAAC;EAC/DE,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAIQE,iBAAiBA,CAAA,EAAS;IAChC,IAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACH,QAAQ;IACjC,IAAIG,OAAO,EAAE;MACXA,OAAO,CAACC,SAAS,CAAC,CAAC;MACnBD,OAAO,CAACE,IAAI,CAAC,CAAC;IAChB;EACF;EAEAC,MAAMA,CAAA,EAAuB;IAC3B,IAAI,CAACJ,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAK,aAAaA,CAAA,EAAuB;IAClC,IAAI,CAACL,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAM,OAAOA,CAAA,EAAuB;IAC5B,IAAI,CAACN,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAO,OAAOA,CACLC,SAAoB,EACpBC,IAAU,EACVC,KAAqB,EACD;IACpB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAM;MAAEC;IAAc,CAAC,GACrBD,KAAK,YAAYE,UAAU,GAAGF,KAAK,GAAGA,KAAK,CAACG,WAAW;IAEzD,IAAM;MAAEZ;IAAQ,CAAC,GAAG,IAAI,CAACH,QAAQ;IACjC,IAAI,CAACG,OAAO,EAAE;MACZ,OAAO,KAAK;IACd;IAEA,IAAMa,MAAM,GAAGb,OAAO,CAACa,MAAM,CAACC,OAAO;IAErC,IACED,MAAM,IACNH,aAAa,YAAYK,OAAO,IAChCF,MAAM,CAACG,OAAO,CAACC,QAAQ,CAACP,aAAa,CAAC,EACtC;MACA;MACA,OAAO,KAAK;IACd;IACA,IAAI,CAACX,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAmB,MAAMA,CAACX,SAAoB,EAAsB;IAC/C,IAAM;MAAEY,MAAM;MAAEC,GAAG;MAAEC;IAAkB,CAAC,GAAGd,SAAS;IACpD,IAAM;MAAEe;IAAmB,CAAC,GAAG,IAAI,CAACzB,QAAQ,CAAC0B,KAAK;IAClD,IAAIC,UAAU,GAAG,IAAI;IACrB,IAAIL,MAAM,KAAK,IAAI,IAAIC,GAAG,KAAK,IAAI,IAAIC,iBAAiB,KAAK,CAAC,EAAE;MAC9DG,UAAU,GAAGL,MAAM;IACrB;IAEA,IAAIK,UAAU,KAAKF,kBAAkB,EAAE;MACrC,IAAI,CAACzB,QAAQ,CAAC4B,QAAQ,CAAC;QAAEH,kBAAkB,EAAEE;MAAW,CAAC,CAAC;IAC5D;IAEA,OAAO,KAAK;EACd;AACF;AAEA,eAAe7B,iCAAiC","ignoreList":[]}
1
+ {"version":3,"file":"IrisGridColumnTooltipMouseHandler.js","names":["GridMouseHandler","IrisGridColumnTooltipMouseHandler","constructor","irisGrid","_defineProperty","hideColumnTooltip","tooltip","stopTimer","hide","onDown","onContextMenu","onWheel","onLeave","gridPoint","grid","event","relatedTarget","MouseEvent","nativeEvent","popper","current","Element","element","contains","onMove","column","row","columnHeaderDepth","shownColumnTooltip","state","newTooltip","setState"],"sources":["../../src/mousehandlers/IrisGridColumnTooltipMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n type GridPoint,\n type EventHandlerResult,\n type Grid,\n type GridMouseEvent,\n} from '@deephaven/grid';\nimport type IrisGrid from '../IrisGrid';\n\n/**\n * Detects mouse hover over column headers and displays the appropriate tooltip\n */\nclass IrisGridColumnTooltipMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n private irisGrid: IrisGrid;\n\n private hideColumnTooltip(): void {\n const { tooltip } = this.irisGrid;\n if (tooltip) {\n tooltip.stopTimer();\n tooltip.hide();\n }\n }\n\n onDown(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.hideColumnTooltip();\n return false;\n }\n\n onLeave(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n /**\n * This should always be a react event\n * React seems to be handling onMouseLeave incorrectly at times\n * When moving to the padding between the column and popper, React sets\n * event.relatedTarget to window, but event.nativeEvent.relatedTarget is the popper.\n * It's possibly related to popper being rendered in a portal\n */\n const { relatedTarget } =\n event instanceof MouseEvent ? event : event.nativeEvent;\n\n const { tooltip } = this.irisGrid;\n if (!tooltip) {\n return false;\n }\n\n const popper = tooltip.popper.current;\n\n if (\n popper &&\n relatedTarget instanceof Element &&\n popper.element.contains(relatedTarget)\n ) {\n // Do not hide the popper if we moved the cursor from canvas to popper\n return false;\n }\n this.hideColumnTooltip();\n return false;\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n const { column, row, columnHeaderDepth } = gridPoint;\n const { shownColumnTooltip } = this.irisGrid.state;\n let newTooltip = null;\n if (column !== null && row === null && columnHeaderDepth === 0) {\n newTooltip = column;\n }\n\n if (newTooltip !== shownColumnTooltip) {\n this.irisGrid.setState({ shownColumnTooltip: newTooltip });\n }\n\n return false;\n }\n}\n\nexport default IrisGridColumnTooltipMouseHandler;\n"],"mappings":";;;AAAA;AACA,SACEA,gBAAgB,QAKX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,iCAAiC,SAASD,gBAAgB,CAAC;EAC/DE,WAAWA,CAACC,QAAkB,EAAE;IAC9B,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC1B;EAIQE,iBAAiBA,CAAA,EAAS;IAChC,IAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACH,QAAQ;IACjC,IAAIG,OAAO,EAAE;MACXA,OAAO,CAACC,SAAS,CAAC,CAAC;MACnBD,OAAO,CAACE,IAAI,CAAC,CAAC;IAChB;EACF;EAEAC,MAAMA,CAAA,EAAuB;IAC3B,IAAI,CAACJ,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAK,aAAaA,CAAA,EAAuB;IAClC,IAAI,CAACL,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAM,OAAOA,CAAA,EAAuB;IAC5B,IAAI,CAACN,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAO,OAAOA,CACLC,SAAoB,EACpBC,IAAU,EACVC,KAAqB,EACD;IACpB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAM;MAAEC;IAAc,CAAC,GACrBD,KAAK,YAAYE,UAAU,GAAGF,KAAK,GAAGA,KAAK,CAACG,WAAW;IAEzD,IAAM;MAAEZ;IAAQ,CAAC,GAAG,IAAI,CAACH,QAAQ;IACjC,IAAI,CAACG,OAAO,EAAE;MACZ,OAAO,KAAK;IACd;IAEA,IAAMa,MAAM,GAAGb,OAAO,CAACa,MAAM,CAACC,OAAO;IAErC,IACED,MAAM,IACNH,aAAa,YAAYK,OAAO,IAChCF,MAAM,CAACG,OAAO,CAACC,QAAQ,CAACP,aAAa,CAAC,EACtC;MACA;MACA,OAAO,KAAK;IACd;IACA,IAAI,CAACX,iBAAiB,CAAC,CAAC;IACxB,OAAO,KAAK;EACd;EAEAmB,MAAMA,CAACX,SAAoB,EAAsB;IAC/C,IAAM;MAAEY,MAAM;MAAEC,GAAG;MAAEC;IAAkB,CAAC,GAAGd,SAAS;IACpD,IAAM;MAAEe;IAAmB,CAAC,GAAG,IAAI,CAACzB,QAAQ,CAAC0B,KAAK;IAClD,IAAIC,UAAU,GAAG,IAAI;IACrB,IAAIL,MAAM,KAAK,IAAI,IAAIC,GAAG,KAAK,IAAI,IAAIC,iBAAiB,KAAK,CAAC,EAAE;MAC9DG,UAAU,GAAGL,MAAM;IACrB;IAEA,IAAIK,UAAU,KAAKF,kBAAkB,EAAE;MACrC,IAAI,CAACzB,QAAQ,CAAC4B,QAAQ,CAAC;QAAEH,kBAAkB,EAAEE;MAAW,CAAC,CAAC;IAC5D;IAEA,OAAO,KAAK;EACd;AACF;AAEA,eAAe7B,iCAAiC"}