@deephaven/components 1.22.1 → 1.22.2-alpha-pivot-builder.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 (241) hide show
  1. package/dist/AutoCompleteInput.js +41 -79
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +29 -13
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +17 -15
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/BulkActionBar.js +3 -5
  8. package/dist/BulkActionBar.js.map +1 -1
  9. package/dist/Button.js +24 -25
  10. package/dist/Button.js.map +1 -1
  11. package/dist/CardFlip.js +4 -6
  12. package/dist/CardFlip.js.map +1 -1
  13. package/dist/Checkbox.js +22 -13
  14. package/dist/Checkbox.js.map +1 -1
  15. package/dist/Collapse.js +6 -9
  16. package/dist/Collapse.js.map +1 -1
  17. package/dist/CopyButton.js +14 -6
  18. package/dist/CopyButton.js.map +1 -1
  19. package/dist/CustomTimeSelect.js +49 -88
  20. package/dist/CustomTimeSelect.js.map +1 -1
  21. package/dist/DateInput.js +25 -10
  22. package/dist/DateInput.js.map +1 -1
  23. package/dist/DateInputUtils.js +1 -3
  24. package/dist/DateInputUtils.js.map +1 -1
  25. package/dist/DateTimeInput.js +28 -12
  26. package/dist/DateTimeInput.js.map +1 -1
  27. package/dist/DebouncedSearchInput.js +10 -19
  28. package/dist/DebouncedSearchInput.js.map +1 -1
  29. package/dist/DragUtils.js +15 -6
  30. package/dist/DragUtils.js.map +1 -1
  31. package/dist/DraggableItemList.js +42 -57
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/EditableItemList.js +28 -13
  34. package/dist/EditableItemList.js.map +1 -1
  35. package/dist/ErrorBoundary.js +6 -11
  36. package/dist/ErrorBoundary.js.map +1 -1
  37. package/dist/ErrorView.js +20 -8
  38. package/dist/ErrorView.js.map +1 -1
  39. package/dist/HierarchicalCheckboxMenu.js +30 -28
  40. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  41. package/dist/ItemList.js +96 -168
  42. package/dist/ItemList.js.map +1 -1
  43. package/dist/ItemListItem.js +46 -60
  44. package/dist/ItemListItem.js.map +1 -1
  45. package/dist/LoadingOverlay.js +13 -9
  46. package/dist/LoadingOverlay.js.map +1 -1
  47. package/dist/LoadingSpinner.js +3 -4
  48. package/dist/LoadingSpinner.js.map +1 -1
  49. package/dist/MaskedInput.js +44 -41
  50. package/dist/MaskedInput.js.map +1 -1
  51. package/dist/MaskedInputUtils.js +1 -3
  52. package/dist/MaskedInputUtils.js.map +1 -1
  53. package/dist/Option.js +1 -3
  54. package/dist/Option.js.map +1 -1
  55. package/dist/RadioGroup.js +17 -9
  56. package/dist/RadioGroup.js.map +1 -1
  57. package/dist/RadioItem.js +25 -14
  58. package/dist/RadioItem.js.map +1 -1
  59. package/dist/RandomAreaPlotAnimation.js +17 -13
  60. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  61. package/dist/SearchInput.js +13 -14
  62. package/dist/SearchInput.js.map +1 -1
  63. package/dist/SearchableCombobox.js +3 -5
  64. package/dist/SearchableCombobox.js.map +1 -1
  65. package/dist/Select.js +5 -7
  66. package/dist/Select.js.map +1 -1
  67. package/dist/SelectValueList.js +21 -30
  68. package/dist/SelectValueList.js.map +1 -1
  69. package/dist/SocketedButton.js +18 -17
  70. package/dist/SocketedButton.js.map +1 -1
  71. package/dist/SplitButtonGroup.js +4 -6
  72. package/dist/SplitButtonGroup.js.map +1 -1
  73. package/dist/TableViewEmptyState.js +14 -6
  74. package/dist/TableViewEmptyState.js.map +1 -1
  75. package/dist/TextWithTooltip.js +3 -4
  76. package/dist/TextWithTooltip.js.map +1 -1
  77. package/dist/TimeInput.js +29 -12
  78. package/dist/TimeInput.js.map +1 -1
  79. package/dist/TimeSlider.js +46 -38
  80. package/dist/TimeSlider.js.map +1 -1
  81. package/dist/ToastNotification.js +9 -10
  82. package/dist/ToastNotification.js.map +1 -1
  83. package/dist/UISwitch.js +8 -9
  84. package/dist/UISwitch.js.map +1 -1
  85. package/dist/actions/ConfirmActionButton.js +7 -9
  86. package/dist/actions/ConfirmActionButton.js.map +1 -1
  87. package/dist/actions/IconActionButton.js +3 -5
  88. package/dist/actions/IconActionButton.js.map +1 -1
  89. package/dist/context-actions/ContextActionUtils.js +1 -3
  90. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  91. package/dist/context-actions/ContextActions.js +8 -18
  92. package/dist/context-actions/ContextActions.js.map +1 -1
  93. package/dist/context-actions/ContextMenu.js +53 -89
  94. package/dist/context-actions/ContextMenu.js.map +1 -1
  95. package/dist/context-actions/ContextMenuItem.js +11 -11
  96. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  97. package/dist/context-actions/ContextMenuRoot.js +6 -11
  98. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  99. package/dist/context-actions/GlobalContextAction.js +2 -6
  100. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  101. package/dist/context-actions/GlobalContextActions.js +4 -7
  102. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  103. package/dist/dialogs/ActionButtonDialogTrigger.js +7 -9
  104. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  105. package/dist/dialogs/ConfirmationDialog.js +8 -11
  106. package/dist/dialogs/ConfirmationDialog.js.map +1 -1
  107. package/dist/menu-actions/DropdownMenu.js +12 -22
  108. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  109. package/dist/menu-actions/Menu.js +19 -45
  110. package/dist/menu-actions/Menu.js.map +1 -1
  111. package/dist/modal/DebouncedModal.js +8 -9
  112. package/dist/modal/DebouncedModal.js.map +1 -1
  113. package/dist/modal/InfoModal.js +6 -7
  114. package/dist/modal/InfoModal.js.map +1 -1
  115. package/dist/modal/Modal.js +27 -15
  116. package/dist/modal/Modal.js.map +1 -1
  117. package/dist/modal/ModalBody.js +4 -6
  118. package/dist/modal/ModalBody.js.map +1 -1
  119. package/dist/modal/ModalFooter.js +3 -5
  120. package/dist/modal/ModalFooter.js.map +1 -1
  121. package/dist/modal/ModalHeader.js +7 -8
  122. package/dist/modal/ModalHeader.js.map +1 -1
  123. package/dist/navigation/DashboardList.js +17 -6
  124. package/dist/navigation/DashboardList.js.map +1 -1
  125. package/dist/navigation/Menu.js +4 -5
  126. package/dist/navigation/Menu.js.map +1 -1
  127. package/dist/navigation/MenuItem.js +7 -10
  128. package/dist/navigation/MenuItem.js.map +1 -1
  129. package/dist/navigation/NavTab.js +14 -17
  130. package/dist/navigation/NavTab.js.map +1 -1
  131. package/dist/navigation/NavTabList.js +39 -33
  132. package/dist/navigation/NavTabList.js.map +1 -1
  133. package/dist/navigation/Page.js +5 -7
  134. package/dist/navigation/Page.js.map +1 -1
  135. package/dist/navigation/Stack.js +20 -7
  136. package/dist/navigation/Stack.js.map +1 -1
  137. package/dist/popper/Popper.js +30 -57
  138. package/dist/popper/Popper.js.map +1 -1
  139. package/dist/popper/Tooltip.js +24 -54
  140. package/dist/popper/Tooltip.js.map +1 -1
  141. package/dist/shortcuts/Shortcut.js +10 -15
  142. package/dist/shortcuts/Shortcut.js.map +1 -1
  143. package/dist/shortcuts/ShortcutRegistry.js +1 -3
  144. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  145. package/dist/spectrum/ActionGroup.js +7 -9
  146. package/dist/spectrum/ActionGroup.js.map +1 -1
  147. package/dist/spectrum/ActionMenu.js +3 -5
  148. package/dist/spectrum/ActionMenu.js.map +1 -1
  149. package/dist/spectrum/CheckboxGroup.js +1 -3
  150. package/dist/spectrum/CheckboxGroup.js.map +1 -1
  151. package/dist/spectrum/Heading.js +2 -4
  152. package/dist/spectrum/Heading.js.map +1 -1
  153. package/dist/spectrum/ItemContent.js +16 -10
  154. package/dist/spectrum/ItemContent.js.map +1 -1
  155. package/dist/spectrum/ItemTooltip.js +2 -4
  156. package/dist/spectrum/ItemTooltip.js.map +1 -1
  157. package/dist/spectrum/TabPanels.js +3 -4
  158. package/dist/spectrum/TabPanels.js.map +1 -1
  159. package/dist/spectrum/Text.js +2 -4
  160. package/dist/spectrum/Text.js.map +1 -1
  161. package/dist/spectrum/View.js +11 -14
  162. package/dist/spectrum/View.js.map +1 -1
  163. package/dist/spectrum/comboBox/ComboBox.js +5 -9
  164. package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
  165. package/dist/spectrum/comboBox/ComboBoxNormalized.js +3 -7
  166. package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
  167. package/dist/spectrum/listView/ListView.js +11 -11
  168. package/dist/spectrum/listView/ListView.js.map +1 -1
  169. package/dist/spectrum/listView/ListViewNormalized.js +22 -24
  170. package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
  171. package/dist/spectrum/listView/ListViewWrapper.js +11 -15
  172. package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
  173. package/dist/spectrum/multiSelect/MultiSelect.js +113 -100
  174. package/dist/spectrum/multiSelect/MultiSelect.js.map +1 -1
  175. package/dist/spectrum/multiSelect/MultiSelectListBox.js +9 -11
  176. package/dist/spectrum/multiSelect/MultiSelectListBox.js.map +1 -1
  177. package/dist/spectrum/multiSelect/MultiSelectNormalized.js +3 -7
  178. package/dist/spectrum/multiSelect/MultiSelectNormalized.js.map +1 -1
  179. package/dist/spectrum/multiSelect/MultiSelectTag.js +5 -7
  180. package/dist/spectrum/multiSelect/MultiSelectTag.js.map +1 -1
  181. package/dist/spectrum/multiSelect/useMultiSelectFilter.js +20 -14
  182. package/dist/spectrum/multiSelect/useMultiSelectFilter.js.map +1 -1
  183. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js +27 -20
  184. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js.map +1 -1
  185. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js +14 -7
  186. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js.map +1 -1
  187. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js +20 -22
  188. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js.map +1 -1
  189. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js +13 -6
  190. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js.map +1 -1
  191. package/dist/spectrum/multiSelect/useMultiSelectState.js +16 -9
  192. package/dist/spectrum/multiSelect/useMultiSelectState.js.map +1 -1
  193. package/dist/spectrum/picker/Picker.js +5 -9
  194. package/dist/spectrum/picker/Picker.js.map +1 -1
  195. package/dist/spectrum/picker/PickerNormalized.js +2 -6
  196. package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
  197. package/dist/spectrum/picker/usePickerItemScale.js +2 -3
  198. package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
  199. package/dist/spectrum/picker/usePickerNormalizedProps.js +31 -33
  200. package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
  201. package/dist/spectrum/picker/usePickerProps.js +26 -29
  202. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  203. package/dist/spectrum/picker/usePickerScrollOnOpen.js +6 -9
  204. package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
  205. package/dist/spectrum/utils/itemUtils.js +4 -6
  206. package/dist/spectrum/utils/itemUtils.js.map +1 -1
  207. package/dist/spectrum/utils/propsUtils.js +35 -37
  208. package/dist/spectrum/utils/propsUtils.js.map +1 -1
  209. package/dist/spectrum/utils/themeUtils.js +5 -7
  210. package/dist/spectrum/utils/themeUtils.js.map +1 -1
  211. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +13 -6
  212. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
  213. package/dist/spectrum/utils/useRenderNormalizedItem.js +5 -7
  214. package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
  215. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +4 -6
  216. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
  217. package/dist/spectrum/utils/useStringifiedMultiSelection.js +5 -7
  218. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  219. package/dist/spectrum/utils/useStringifiedSelection.js +5 -7
  220. package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
  221. package/dist/theme/FontBootstrap.js +13 -5
  222. package/dist/theme/FontBootstrap.js.map +1 -1
  223. package/dist/theme/FontsLoaded.js +1 -3
  224. package/dist/theme/FontsLoaded.js.map +1 -1
  225. package/dist/theme/Logo.js +2 -4
  226. package/dist/theme/Logo.js.map +1 -1
  227. package/dist/theme/SpectrumThemeProvider.js +17 -9
  228. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  229. package/dist/theme/ThemePicker.js +4 -5
  230. package/dist/theme/ThemePicker.js.map +1 -1
  231. package/dist/theme/ThemeProvider.js +20 -8
  232. package/dist/theme/ThemeProvider.js.map +1 -1
  233. package/dist/theme/ThemeUtils.js +35 -19
  234. package/dist/theme/ThemeUtils.js.map +1 -1
  235. package/dist/theme/useExternalTheme.js +16 -7
  236. package/dist/theme/useExternalTheme.js.map +1 -1
  237. package/dist/transitions/FadeTransition.js +5 -6
  238. package/dist/transitions/FadeTransition.js.map +1 -1
  239. package/dist/transitions/SlideTransition.js +6 -7
  240. package/dist/transitions/SlideTransition.js.map +1 -1
  241. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchicalCheckboxMenu.js","names":["React","Component","FontAwesomeIcon","classNames","Checkbox","Popper","Button","jsx","_jsx","jsxs","_jsxs","HierarchicalCheckboxMenu","isParentSelected","parent","valueMap","children","get","undefined","includesTrue","Array","from","values","includes","includesFalse","constructor","props","toggleMenu","bind","toggleValueFor","selectAll","clear","state","menuIsOpen","event","stopPropagation","preventDefault","setState","child","onUpdateValueMap","map","Map","newChildren","set","parentSelected","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","className","entries","_ref","checked","onChange","_ref2","kind","onClick","concat","render","menuText","icon","id","type","options","placement","isShown","onExited","closeOnBlur","interactive","_defineProperty"],"sources":["../src/HierarchicalCheckboxMenu.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\nimport Button from './Button';\n\nexport type HierarchicalCheckboxValueMap = Map<\n string,\n boolean | Map<string, boolean>\n>;\n\ntype HierarchicalCheckboxMenuProps = {\n className: string;\n menuText: string;\n valueMap: HierarchicalCheckboxValueMap;\n onUpdateValueMap: (map: HierarchicalCheckboxValueMap) => void;\n icon: IconDefinition | null;\n id: string;\n 'data-testid'?: string;\n};\n\ntype HierarchicalCheckboxMenuState = {\n menuIsOpen: boolean;\n};\n\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component<\n HierarchicalCheckboxMenuProps,\n HierarchicalCheckboxMenuState\n> {\n static defaultProps: Partial<HierarchicalCheckboxMenuProps> = {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined,\n };\n\n static isParentSelected(\n parent: string,\n valueMap: HierarchicalCheckboxValueMap\n ): boolean | null {\n const children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n const includesTrue = Array.from(children.values()).includes(true);\n const includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n\n constructor(props: HierarchicalCheckboxMenuProps) {\n super(props);\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n\n this.state = {\n menuIsOpen: false,\n };\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n const { menuIsOpen } = state;\n return { menuIsOpen: !menuIsOpen };\n });\n }\n\n toggleValueFor(parent: string, child?: string): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n const map = new Map(valueMap);\n const children = map.get(parent);\n if (children instanceof Map) {\n const newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) !== true);\n } else {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n const newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n const currentChildren = map.get(parent);\n if (\n child === undefined &&\n currentChildren !== undefined &&\n typeof currentChildren !== 'boolean'\n ) {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n );\n if (parentSelected != null && parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n\n onUpdateValueMap(map);\n }\n\n setAllValues(value: boolean): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and set everything\n const copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n const children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n\n onUpdateValueMap(copy);\n }\n\n selectAll(): void {\n this.setAllValues(true);\n }\n\n clear(): void {\n this.setAllValues(false);\n }\n\n renderMenuElement(): JSX.Element {\n const { valueMap, 'data-testid': dataTestId } = this.props;\n return (\n <div className=\"hcm-menu-container\">\n {Array.from(valueMap.entries()).map(([parent, children]) => (\n <div key={parent}>\n <Checkbox\n className=\"hcm-parent\"\n checked={HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n )}\n onChange={() => this.toggleValueFor(parent)}\n >\n {parent}\n </Checkbox>\n {children !== undefined &&\n typeof children !== 'boolean' &&\n Array.from(children.entries()).map(([child, value]) => (\n <Checkbox\n className=\"hcm-child\"\n key={child}\n checked={value}\n onChange={() => this.toggleValueFor(parent, child)}\n >\n {child}\n </Checkbox>\n ))}\n </div>\n ))}\n <Button\n kind=\"ghost\"\n onClick={this.selectAll}\n data-testid={\n dataTestId !== undefined\n ? `${dataTestId}-btn-select-all`\n : undefined\n }\n >\n Select All\n </Button>\n <Button\n kind=\"ghost\"\n onClick={this.clear}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-clear` : undefined\n }\n >\n Clear\n </Button>\n </div>\n );\n }\n\n render(): JSX.Element {\n const {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuIsOpen } = this.state;\n\n return (\n <button\n type=\"button\"\n className={classNames('btn hcm-btn', className)}\n onClick={this.toggleMenu}\n id={id}\n data-testid={dataTestId}\n >\n <span>\n {icon && <FontAwesomeIcon icon={icon} className=\"hcm-icon mr-1\" />}\n {menuText}\n </span>\n <span className=\"cs-caret\" />\n <Popper\n options={{ placement: 'bottom' }}\n isShown={menuIsOpen}\n onExited={() => {\n this.setState({ menuIsOpen: false });\n }}\n closeOnBlur\n interactive\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n );\n }\n}\n\nexport default HierarchicalCheckboxMenu;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HierarchicalCheckboxMenu.js","names":["React","Component","FontAwesomeIcon","classNames","Checkbox","Popper","Button","jsx","_jsx","jsxs","_jsxs","HierarchicalCheckboxMenu","isParentSelected","parent","valueMap","children","get","undefined","includesTrue","Array","from","values","includes","includesFalse","constructor","props","toggleMenu","bind","toggleValueFor","selectAll","clear","state","menuIsOpen","event","stopPropagation","preventDefault","setState","child","_this$props","onUpdateValueMap","map","Map","newChildren","set","parentSelected","newChildValue","forEach","_","key","currentChildren","setAllValues","value","_this$props2","copy","renderMenuElement","_this$props3","dataTestId","className","entries","_ref","_ref2","_slicedToArray","checked","onChange","_ref3","_ref4","kind","onClick","concat","render","_this$props4","menuText","icon","id","type","options","placement","isShown","onExited","closeOnBlur","interactive","_defineProperty"],"sources":["../src/HierarchicalCheckboxMenu.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\nimport Button from './Button';\n\nexport type HierarchicalCheckboxValueMap = Map<\n string,\n boolean | Map<string, boolean>\n>;\n\ntype HierarchicalCheckboxMenuProps = {\n className: string;\n menuText: string;\n valueMap: HierarchicalCheckboxValueMap;\n onUpdateValueMap: (map: HierarchicalCheckboxValueMap) => void;\n icon: IconDefinition | null;\n id: string;\n 'data-testid'?: string;\n};\n\ntype HierarchicalCheckboxMenuState = {\n menuIsOpen: boolean;\n};\n\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component<\n HierarchicalCheckboxMenuProps,\n HierarchicalCheckboxMenuState\n> {\n static defaultProps: Partial<HierarchicalCheckboxMenuProps> = {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined,\n };\n\n static isParentSelected(\n parent: string,\n valueMap: HierarchicalCheckboxValueMap\n ): boolean | null {\n const children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n const includesTrue = Array.from(children.values()).includes(true);\n const includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n\n constructor(props: HierarchicalCheckboxMenuProps) {\n super(props);\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n\n this.state = {\n menuIsOpen: false,\n };\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n const { menuIsOpen } = state;\n return { menuIsOpen: !menuIsOpen };\n });\n }\n\n toggleValueFor(parent: string, child?: string): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n const map = new Map(valueMap);\n const children = map.get(parent);\n if (children instanceof Map) {\n const newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) !== true);\n } else {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n const newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n const currentChildren = map.get(parent);\n if (\n child === undefined &&\n currentChildren !== undefined &&\n typeof currentChildren !== 'boolean'\n ) {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n );\n if (parentSelected != null && parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n\n onUpdateValueMap(map);\n }\n\n setAllValues(value: boolean): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and set everything\n const copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n const children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n\n onUpdateValueMap(copy);\n }\n\n selectAll(): void {\n this.setAllValues(true);\n }\n\n clear(): void {\n this.setAllValues(false);\n }\n\n renderMenuElement(): JSX.Element {\n const { valueMap, 'data-testid': dataTestId } = this.props;\n return (\n <div className=\"hcm-menu-container\">\n {Array.from(valueMap.entries()).map(([parent, children]) => (\n <div key={parent}>\n <Checkbox\n className=\"hcm-parent\"\n checked={HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n )}\n onChange={() => this.toggleValueFor(parent)}\n >\n {parent}\n </Checkbox>\n {children !== undefined &&\n typeof children !== 'boolean' &&\n Array.from(children.entries()).map(([child, value]) => (\n <Checkbox\n className=\"hcm-child\"\n key={child}\n checked={value}\n onChange={() => this.toggleValueFor(parent, child)}\n >\n {child}\n </Checkbox>\n ))}\n </div>\n ))}\n <Button\n kind=\"ghost\"\n onClick={this.selectAll}\n data-testid={\n dataTestId !== undefined\n ? `${dataTestId}-btn-select-all`\n : undefined\n }\n >\n Select All\n </Button>\n <Button\n kind=\"ghost\"\n onClick={this.clear}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-clear` : undefined\n }\n >\n Clear\n </Button>\n </div>\n );\n }\n\n render(): JSX.Element {\n const {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuIsOpen } = this.state;\n\n return (\n <button\n type=\"button\"\n className={classNames('btn hcm-btn', className)}\n onClick={this.toggleMenu}\n id={id}\n data-testid={dataTestId}\n >\n <span>\n {icon && <FontAwesomeIcon icon={icon} className=\"hcm-icon mr-1\" />}\n {menuText}\n </span>\n <span className=\"cs-caret\" />\n <Popper\n options={{ placement: 'bottom' }}\n isShown={menuIsOpen}\n onExited={() => {\n this.setState({ menuIsOpen: false });\n }}\n closeOnBlur\n interactive\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n );\n }\n}\n\nexport default HierarchicalCheckboxMenu;\n"],"mappings":"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","ignoreList":[]}
package/dist/ItemList.js CHANGED
@@ -24,9 +24,7 @@ var MIN_DRAG_DELTA = 5;
24
24
  export class ItemList extends PureComponent {
25
25
  static renderItem(_ref) {
26
26
  var _ref2, _item$displayValue;
27
- var {
28
- item
29
- } = _ref;
27
+ var item = _ref.item;
30
28
  return /*#__PURE__*/_jsx("div", {
31
29
  className: "item-list-item-content",
32
30
  children: item != null && ((_ref2 = (_item$displayValue = item.displayValue) !== null && _item$displayValue !== void 0 ? _item$displayValue : item.value) !== null && _ref2 !== void 0 ? _ref2 : "".concat(item))
@@ -115,10 +113,8 @@ export class ItemList extends PureComponent {
115
113
  this.renderInnerElement = this.renderInnerElement.bind(this);
116
114
  this.list = /*#__PURE__*/React.createRef();
117
115
  this.listContainer = /*#__PURE__*/React.createRef();
118
- var {
119
- isStickyBottom,
120
- selectedRanges: _selectedRanges
121
- } = _props;
116
+ var isStickyBottom = _props.isStickyBottom,
117
+ _selectedRanges = _props.selectedRanges;
122
118
  this.state = {
123
119
  focusIndex: null,
124
120
  mouseDownIndex: null,
@@ -133,17 +129,15 @@ export class ItemList extends PureComponent {
133
129
  };
134
130
  }
135
131
  componentDidUpdate(prevProps, prevState) {
136
- var {
137
- selectedRanges: propSelectedRanges,
138
- itemCount
139
- } = this.props;
140
- var {
141
- focusIndex,
142
- isStuckToBottom,
143
- scrollOffset,
144
- height,
145
- selectedRanges
146
- } = this.state;
132
+ var _this$props = this.props,
133
+ propSelectedRanges = _this$props.selectedRanges,
134
+ itemCount = _this$props.itemCount;
135
+ var _this$state = this.state,
136
+ focusIndex = _this$state.focusIndex,
137
+ isStuckToBottom = _this$state.isStuckToBottom,
138
+ scrollOffset = _this$state.scrollOffset,
139
+ height = _this$state.height,
140
+ selectedRanges = _this$state.selectedRanges;
147
141
  if (isStuckToBottom && !this.isListAtBottom() && itemCount > 0) {
148
142
  this.scrollToBottom();
149
143
  }
@@ -153,15 +147,11 @@ export class ItemList extends PureComponent {
153
147
  if (propSelectedRanges !== prevProps.selectedRanges && propSelectedRanges !== selectedRanges) {
154
148
  this.setSelectedRanges(propSelectedRanges);
155
149
  } else if (selectedRanges !== prevState.selectedRanges) {
156
- var {
157
- onSelectionChange
158
- } = this.props;
150
+ var onSelectionChange = this.props.onSelectionChange;
159
151
  onSelectionChange(selectedRanges);
160
152
  }
161
153
  if (focusIndex !== prevState.focusIndex) {
162
- var {
163
- onFocusChange
164
- } = this.props;
154
+ var onFocusChange = this.props.onFocusChange;
165
155
  onFocusChange(focusIndex);
166
156
  }
167
157
  }
@@ -173,9 +163,7 @@ export class ItemList extends PureComponent {
173
163
  (_this$listContainer$c = this.listContainer.current) === null || _this$listContainer$c === void 0 || _this$listContainer$c.focus();
174
164
  }
175
165
  restoreScrollPosition() {
176
- var {
177
- scrollOffset
178
- } = this.state;
166
+ var scrollOffset = this.state.scrollOffset;
179
167
  if (scrollOffset != null) {
180
168
  var _this$listContainer$c2;
181
169
  // manually restore the scroll containers offset
@@ -187,20 +175,14 @@ export class ItemList extends PureComponent {
187
175
  if (this.listContainer.current == null) {
188
176
  return null;
189
177
  }
190
- var {
191
- focusSelector
192
- } = this.props;
193
- var {
194
- overscanStartIndex
195
- } = this.state;
178
+ var focusSelector = this.props.focusSelector;
179
+ var overscanStartIndex = this.state.overscanStartIndex;
196
180
  var elements = this.listContainer.current.querySelectorAll(focusSelector);
197
181
  var elementIndex = itemIndex - overscanStartIndex;
198
182
  return elements[elementIndex];
199
183
  }
200
184
  focusItem(itemIndex) {
201
- var {
202
- disableSelect
203
- } = this.props;
185
+ var disableSelect = this.props.disableSelect;
204
186
  if (disableSelect) return;
205
187
  this.setState({
206
188
  focusIndex: itemIndex
@@ -224,9 +206,7 @@ export class ItemList extends PureComponent {
224
206
  });
225
207
 
226
208
  // Update the selection, but don't consume the mouse event - it will trigger the context menu
227
- var {
228
- selectedRanges
229
- } = this.state;
209
+ var selectedRanges = this.state.selectedRanges;
230
210
  var isSelected = RangeUtils.isSelected(selectedRanges, itemIndex);
231
211
 
232
212
  // When right-clicking, we want to maintain the current selection if the right click happened within the selection even if the modifier key isn't down
@@ -234,15 +214,12 @@ export class ItemList extends PureComponent {
234
214
  this.toggleSelect(itemIndex, e.shiftKey, isModifierDown, false);
235
215
  }
236
216
  handleItemDoubleClick(itemIndex, e) {
237
- var {
238
- isDoubleClickSelect,
239
- onSelect
240
- } = this.props;
217
+ var _this$props2 = this.props,
218
+ isDoubleClickSelect = _this$props2.isDoubleClickSelect,
219
+ onSelect = _this$props2.onSelect;
241
220
  if (isDoubleClickSelect) {
242
221
  this.setState(_ref3 => {
243
- var {
244
- selectedRanges
245
- } = _ref3;
222
+ var selectedRanges = _ref3.selectedRanges;
246
223
  return {
247
224
  selectedRanges: RangeUtils.selectRange(selectedRanges, [itemIndex, itemIndex])
248
225
  };
@@ -252,9 +229,7 @@ export class ItemList extends PureComponent {
252
229
  }
253
230
  }
254
231
  handleItemMouseDown(index, e) {
255
- var {
256
- selectedRanges
257
- } = this.state;
232
+ var selectedRanges = this.state.selectedRanges;
258
233
  if (e.target instanceof HTMLElement && ['button', 'select', 'input', 'textarea'].indexOf(e.target.tagName.toLowerCase()) !== -1) {
259
234
  // allow these elements to do their own behaviours
260
235
  return;
@@ -289,9 +264,7 @@ export class ItemList extends PureComponent {
289
264
  handleItemFocus(itemIndex, e) {
290
265
  log.debug2('item focus', itemIndex, e.target);
291
266
  this.setState(state => {
292
- var {
293
- focusIndex
294
- } = state;
267
+ var focusIndex = state.focusIndex;
295
268
  if (focusIndex !== itemIndex) {
296
269
  return {
297
270
  focusIndex: itemIndex
@@ -301,17 +274,15 @@ export class ItemList extends PureComponent {
301
274
  });
302
275
  }
303
276
  handleItemMouseMove(itemIndex, e) {
304
- var {
305
- isDragSelect,
306
- isMultiSelect,
307
- disableSelect
308
- } = this.props;
309
- var {
310
- mouseDownIndex,
311
- selectedRanges,
312
- mouseX,
313
- mouseY
314
- } = this.state;
277
+ var _this$props3 = this.props,
278
+ isDragSelect = _this$props3.isDragSelect,
279
+ isMultiSelect = _this$props3.isMultiSelect,
280
+ disableSelect = _this$props3.disableSelect;
281
+ var _this$state2 = this.state,
282
+ mouseDownIndex = _this$state2.mouseDownIndex,
283
+ selectedRanges = _this$state2.selectedRanges,
284
+ mouseX = _this$state2.mouseX,
285
+ mouseY = _this$state2.mouseY;
315
286
  if (mouseDownIndex == null || disableSelect) return;
316
287
  var mouseMoveX = Math.abs(e.clientX - (mouseX !== null && mouseX !== void 0 ? mouseX : 0));
317
288
  var mouseMoveY = Math.abs(e.clientY - (mouseY !== null && mouseY !== void 0 ? mouseY : 0));
@@ -334,15 +305,13 @@ export class ItemList extends PureComponent {
334
305
  }
335
306
  }
336
307
  handleItemMouseUp(index, e) {
337
- var {
338
- isDeselectOnClick,
339
- isDoubleClickSelect,
340
- onSelect
341
- } = this.props;
342
- var {
343
- mouseDownIndex,
344
- isDragging
345
- } = this.state;
308
+ var _this$props4 = this.props,
309
+ isDeselectOnClick = _this$props4.isDeselectOnClick,
310
+ isDoubleClickSelect = _this$props4.isDoubleClickSelect,
311
+ onSelect = _this$props4.onSelect;
312
+ var _this$state3 = this.state,
313
+ mouseDownIndex = _this$state3.mouseDownIndex,
314
+ isDragging = _this$state3.isDragging;
346
315
  if (e.target instanceof HTMLElement && ['button', 'select', 'input', 'textarea'].indexOf(e.target.tagName.toLowerCase()) !== -1) {
347
316
  return;
348
317
  }
@@ -358,17 +327,13 @@ export class ItemList extends PureComponent {
358
327
  this.resetMouseState();
359
328
  }
360
329
  handleItemsRendered(_ref4) {
361
- var {
362
- overscanStartIndex
363
- } = _ref4;
330
+ var overscanStartIndex = _ref4.overscanStartIndex;
364
331
  this.setState({
365
332
  overscanStartIndex
366
333
  });
367
334
  }
368
335
  handleResize(_ref5) {
369
- var {
370
- height
371
- } = _ref5;
336
+ var height = _ref5.height;
372
337
  this.setState({
373
338
  height
374
339
  });
@@ -383,14 +348,11 @@ export class ItemList extends PureComponent {
383
348
  window.removeEventListener('mouseup', this.handleWindowMouseUp);
384
349
  }
385
350
  handleKeyDown(e) {
386
- var {
387
- isMultiSelect,
388
- itemCount,
389
- onSelect
390
- } = this.props;
391
- var {
392
- focusIndex: oldFocus
393
- } = this.state;
351
+ var _this$props5 = this.props,
352
+ isMultiSelect = _this$props5.isMultiSelect,
353
+ itemCount = _this$props5.itemCount,
354
+ onSelect = _this$props5.onSelect;
355
+ var oldFocus = this.state.focusIndex;
394
356
  var newFocus = oldFocus;
395
357
  if (e.key === 'Enter' || e.key === ' ') {
396
358
  if (!isMultiSelect && newFocus != null) {
@@ -423,9 +385,7 @@ export class ItemList extends PureComponent {
423
385
  e.stopPropagation();
424
386
  e.preventDefault();
425
387
  this.focusItem(newFocus);
426
- var {
427
- selectedRanges
428
- } = this.state;
388
+ var selectedRanges = this.state.selectedRanges;
429
389
  if (e.shiftKey && selectedRanges.length > 0) {
430
390
  var lastRange = selectedRanges[selectedRanges.length - 1];
431
391
  this.selectRange([Math.min(newFocus, lastRange[0]), Math.max(newFocus, lastRange[1])]);
@@ -442,10 +402,8 @@ export class ItemList extends PureComponent {
442
402
  }
443
403
  }
444
404
  handleScroll(_ref6) {
445
- var {
446
- scrollUpdateWasRequested,
447
- scrollOffset
448
- } = _ref6;
405
+ var scrollUpdateWasRequested = _ref6.scrollUpdateWasRequested,
406
+ scrollOffset = _ref6.scrollOffset;
449
407
  this.setState(state => {
450
408
  if (scrollUpdateWasRequested) {
451
409
  // The scroll was caused by scrollTo() or scrollToItem()
@@ -454,12 +412,8 @@ export class ItemList extends PureComponent {
454
412
  scrollOffset
455
413
  };
456
414
  }
457
- var {
458
- isStickyBottom
459
- } = this.props;
460
- var {
461
- height
462
- } = state;
415
+ var isStickyBottom = this.props.isStickyBottom;
416
+ var height = state.height;
463
417
  var isStuckToBottom = isStickyBottom && this.isListAtBottom({
464
418
  scrollOffset,
465
419
  height
@@ -477,9 +431,7 @@ export class ItemList extends PureComponent {
477
431
  });
478
432
  }
479
433
  scrollToBottom() {
480
- var {
481
- itemCount
482
- } = this.props;
434
+ var itemCount = this.props.itemCount;
483
435
  if (this.list.current) {
484
436
  this.list.current.scrollToItem(itemCount);
485
437
  }
@@ -498,12 +450,8 @@ export class ItemList extends PureComponent {
498
450
  */
499
451
  toggleSelect(index, isShiftDown, isModifierDown) {
500
452
  var isDeselectable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
501
- var {
502
- isMultiSelect
503
- } = this.props;
504
- var {
505
- selectedRanges
506
- } = this.state;
453
+ var isMultiSelect = this.props.isMultiSelect;
454
+ var selectedRanges = this.state.selectedRanges;
507
455
  if (isMultiSelect && isShiftDown && selectedRanges.length > 0) {
508
456
  var lastRange = selectedRanges[selectedRanges.length - 1];
509
457
  this.selectRange([Math.min(lastRange[0], index), Math.max(index, lastRange[1])]);
@@ -525,9 +473,7 @@ export class ItemList extends PureComponent {
525
473
  }
526
474
  }
527
475
  deselectAll() {
528
- var {
529
- itemCount
530
- } = this.props;
476
+ var itemCount = this.props.itemCount;
531
477
  this.deselectRange([0, itemCount]);
532
478
  }
533
479
  deselectItem(index) {
@@ -536,27 +482,21 @@ export class ItemList extends PureComponent {
536
482
  deselectRange(range) {
537
483
  RangeUtils.validateRange(range);
538
484
  this.setState(_ref7 => {
539
- var {
540
- selectedRanges
541
- } = _ref7;
485
+ var selectedRanges = _ref7.selectedRanges;
542
486
  return {
543
487
  selectedRanges: RangeUtils.deselectRange(selectedRanges, range)
544
488
  };
545
489
  });
546
490
  }
547
491
  selectItem(index) {
548
- var {
549
- disableSelect
550
- } = this.props;
492
+ var disableSelect = this.props.disableSelect;
551
493
  if (disableSelect) return;
552
494
  this.selectRange([index, index]);
553
495
  }
554
496
  selectRange(range) {
555
497
  RangeUtils.validateRange(range);
556
498
  this.setState(_ref8 => {
557
- var {
558
- selectedRanges
559
- } = _ref8;
499
+ var selectedRanges = _ref8.selectedRanges;
560
500
  return {
561
501
  selectedRanges: RangeUtils.selectRange(selectedRanges, range)
562
502
  };
@@ -568,49 +508,41 @@ export class ItemList extends PureComponent {
568
508
  });
569
509
  }
570
510
  sendViewportUpdate() {
571
- var {
572
- scrollOffset,
573
- height
574
- } = this.state;
511
+ var _this$state4 = this.state,
512
+ scrollOffset = _this$state4.scrollOffset,
513
+ height = _this$state4.height;
575
514
  if (scrollOffset != null && height != null) {
576
- var {
577
- onViewportChange,
578
- rowHeight
579
- } = this.props;
515
+ var _this$props6 = this.props,
516
+ onViewportChange = _this$props6.onViewportChange,
517
+ rowHeight = _this$props6.rowHeight;
580
518
  var topRow = Math.floor(scrollOffset / rowHeight);
581
519
  var bottomRow = topRow + Math.ceil(height / rowHeight);
582
520
  onViewportChange(topRow, bottomRow);
583
521
  }
584
522
  }
585
523
  isListAtBottom() {
586
- var {
587
- scrollOffset,
588
- height
589
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;
524
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state,
525
+ scrollOffset = _ref9.scrollOffset,
526
+ height = _ref9.height;
590
527
  if (height == null || scrollOffset == null) {
591
528
  return false;
592
529
  }
593
- var {
594
- itemCount,
595
- rowHeight
596
- } = this.props;
530
+ var _this$props7 = this.props,
531
+ itemCount = _this$props7.itemCount,
532
+ rowHeight = _this$props7.rowHeight;
597
533
  return scrollOffset + height >= itemCount * rowHeight;
598
534
  }
599
- renderInnerElement(_ref9) {
600
- var {
601
- index: itemIndex,
602
- style
603
- } = _ref9;
604
- var {
605
- items,
606
- offset,
607
- renderItem,
608
- disableSelect
609
- } = this.props;
610
- var {
611
- focusIndex,
612
- selectedRanges
613
- } = this.state;
535
+ renderInnerElement(_ref0) {
536
+ var itemIndex = _ref0.index,
537
+ style = _ref0.style;
538
+ var _this$props8 = this.props,
539
+ items = _this$props8.items,
540
+ offset = _this$props8.offset,
541
+ renderItem = _this$props8.renderItem,
542
+ disableSelect = _this$props8.disableSelect;
543
+ var _this$state5 = this.state,
544
+ focusIndex = _this$state5.focusIndex,
545
+ selectedRanges = _this$state5.selectedRanges;
614
546
  if (itemIndex < offset || itemIndex >= offset + items.length) {
615
547
  return null;
616
548
  }
@@ -618,26 +550,22 @@ export class ItemList extends PureComponent {
618
550
  return this.getCachedItem(itemIndex, itemIndex, item, itemIndex === focusIndex && !disableSelect, this.getItemSelected(itemIndex, selectedRanges), renderItem, style, disableSelect);
619
551
  }
620
552
  render() {
621
- var {
622
- items,
623
- itemCount,
624
- overscanCount,
625
- renderItem,
626
- rowHeight,
627
- 'data-testid': dataTestId
628
- } = this.props;
629
- var {
630
- selectedRanges,
631
- isStuckToBottom
632
- } = this.state;
553
+ var _this$props9 = this.props,
554
+ items = _this$props9.items,
555
+ itemCount = _this$props9.itemCount,
556
+ overscanCount = _this$props9.overscanCount,
557
+ renderItem = _this$props9.renderItem,
558
+ rowHeight = _this$props9.rowHeight,
559
+ dataTestId = _this$props9['data-testid'];
560
+ var _this$state6 = this.state,
561
+ selectedRanges = _this$state6.selectedRanges,
562
+ isStuckToBottom = _this$state6.isStuckToBottom;
633
563
  return /*#__PURE__*/_jsx(AutoSizer, {
634
564
  className: "item-list-auto-sizer",
635
565
  onResize: this.handleResize,
636
- children: _ref0 => {
637
- var {
638
- width,
639
- height
640
- } = _ref0;
566
+ children: _ref1 => {
567
+ var width = _ref1.width,
568
+ height = _ref1.height;
641
569
  return /*#__PURE__*/_jsx(List, {
642
570
  className: "item-list-scroll-pane",
643
571
  height: height,