@deephaven/components 0.16.1-beta.0 → 0.16.1-vite.20

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 (73) hide show
  1. package/dist/AutoCompleteInput.js.map +1 -1
  2. package/dist/AutoResizeTextarea.js.map +1 -1
  3. package/dist/BasicModal.js.map +1 -1
  4. package/dist/Button.js.map +1 -1
  5. package/dist/ButtonGroup.js.map +1 -1
  6. package/dist/ButtonOld.js.map +1 -1
  7. package/dist/CardFlip.js.map +1 -1
  8. package/dist/Checkbox.js.map +1 -1
  9. package/dist/Collapse.js.map +1 -1
  10. package/dist/ComboBox.js.map +1 -1
  11. package/dist/CustomTimeSelect.js.map +1 -1
  12. package/dist/DebouncedSearchInput.js.map +1 -1
  13. package/dist/DeephavenSpinner.js.map +1 -1
  14. package/dist/DragUtils.js.map +1 -1
  15. package/dist/DraggableItemList.js +1 -1
  16. package/dist/DraggableItemList.js.map +1 -1
  17. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  18. package/dist/ItemList.js +1 -1
  19. package/dist/ItemList.js.map +1 -1
  20. package/dist/ItemListItem.js.map +1 -1
  21. package/dist/LoadingOverlay.js.map +1 -1
  22. package/dist/LoadingSpinner.js.map +1 -1
  23. package/dist/MaskedInput.js.map +1 -1
  24. package/dist/Option.js.map +1 -1
  25. package/dist/RadioGroup.js.map +1 -1
  26. package/dist/RadioItem.js.map +1 -1
  27. package/dist/SearchInput.js.map +1 -1
  28. package/dist/Select.js.map +1 -1
  29. package/dist/SelectValueList.js.map +1 -1
  30. package/dist/SocketedButton.js.map +1 -1
  31. package/dist/ThemeExport.js.map +1 -1
  32. package/dist/TimeInput.js.map +1 -1
  33. package/dist/TimeSlider.js.map +1 -1
  34. package/dist/ToastNotification.js.map +1 -1
  35. package/dist/UISwitch.js.map +1 -1
  36. package/dist/ValidateLabelInput.js.map +1 -1
  37. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  38. package/dist/context-actions/ContextActions.js.map +1 -1
  39. package/dist/context-actions/ContextMenu.js.map +1 -1
  40. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  41. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  42. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  43. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  44. package/dist/context-actions/index.js.map +1 -1
  45. package/dist/declaration.d.js.map +1 -1
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  51. package/dist/menu-actions/Menu.js.map +1 -1
  52. package/dist/menu-actions/index.js.map +1 -1
  53. package/dist/modal/Modal.js.map +1 -1
  54. package/dist/modal/ModalBody.js.map +1 -1
  55. package/dist/modal/ModalFooter.js.map +1 -1
  56. package/dist/modal/ModalHeader.js.map +1 -1
  57. package/dist/modal/index.js.map +1 -1
  58. package/dist/navigation/Menu.js.map +1 -1
  59. package/dist/navigation/MenuItem.js.map +1 -1
  60. package/dist/navigation/Page.js.map +1 -1
  61. package/dist/navigation/Stack.js.map +1 -1
  62. package/dist/navigation/index.js.map +1 -1
  63. package/dist/popper/Popper.js.map +1 -1
  64. package/dist/popper/Tooltip.js.map +1 -1
  65. package/dist/popper/index.js.map +1 -1
  66. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  67. package/dist/shortcuts/Shortcut.js.map +1 -1
  68. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  69. package/dist/shortcuts/index.js.map +1 -1
  70. package/package.json +9 -9
  71. package/scss/BaseStyleSheet.scss +847 -0
  72. package/dist/BaseStyleSheet.css +0 -11560
  73. package/dist/BaseStyleSheet.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/CustomTimeSelect.tsx"],"names":["React","Component","FontAwesomeIcon","vsCheck","dhSort","TimeUtils","classNames","TimeInput","DropdownMenu","CUSTOM_OPTION","MENU_NAVIGATION_DIRECTION","CustomTimeSelect","constructor","props","value","valueToTime","toggleMenu","bind","handleMenuKeyDown","closeMenu","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","handleCustomInput","csContainer","createRef","menuContainer","button","input","state","keyboardOptionIndex","menuIsOpen","inputWidth","customTime","inputFocused","getSelectedText","options","placeholder","i","length","option","title","formatTime","setInputWidth","current","setState","getBoundingClientRect","width","focus","updateInputValue","onChange","handleResize","event","key","updateFromCustom","stopPropagation","preventDefault","shiftKey","handleMenuNavigation","UP","DOWN","direction","menuOptionsLength","newKeyboardOptionIndex","focusInput","focusOption","scrollOptionIntoView","optionIndex","Number","currentTarget","timeToValue","update","updateAndClose","target","activeOption","querySelector","HTMLElement","valueIndex","map","indexOf","index","children","item","openMenu","updateKeyboardIndex","focusButton","offsetTop","DROP_DOWN_MENU_HEIGHT","scrollTop","renderMenuElement","renderOptions","icon","customText","matchFound","optionArray","push","render","disabled","invalid","dataTestId","popperOptions","placement","modifiers","preventOverflow","enabled","menuElement","maxWidth","Math","round","time","undefined"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { PopperOptions } from 'popper.js';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck, dhSort, IconDefinition } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput, { TimeInputElement } from './TimeInput';\nimport DropdownMenu from './menu-actions/DropdownMenu';\nimport './CustomTimeSelect.scss';\n\nconst CUSTOM_OPTION = -1;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ntype CustomTimeSelectProps = {\n options: { title: string; value: number }[];\n popperOptions: PopperOptions;\n value: number | null;\n onChange(value: number): void;\n disabled: boolean;\n icon: IconDefinition;\n placeholder: string;\n customText: string;\n // Defaults to converting the value in milliseconds to time in seconds\n valueToTime(val: number | null): number;\n // Defaults to converting the time in seconds to value in milliseconds\n timeToValue(time: number): number;\n invalid: boolean;\n 'data-testid'?: string;\n};\n\ntype TimeInSeconds = number;\n\ntype CustomTimeSelectState = {\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n customTime: TimeInSeconds;\n inputFocused: boolean;\n};\n\nclass CustomTimeSelect extends Component<\n CustomTimeSelectProps,\n CustomTimeSelectState\n> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 125;\n\n static defaultProps: Partial<CustomTimeSelectProps> = {\n onChange(): void {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => (value === null ? 0 : Math.round(value / 1000)),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined,\n };\n\n constructor(props: CustomTimeSelectProps) {\n super(props);\n\n const { value, valueToTime } = props;\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n\n this.csContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.button = React.createRef();\n this.input = React.createRef();\n\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false,\n };\n }\n\n csContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n button: React.RefObject<HTMLButtonElement>;\n\n input: React.RefObject<TimeInputElement>;\n\n getSelectedText(): string {\n const { options, value, placeholder } = this.props;\n const { customTime } = this.state;\n\n if (value === null) {\n return placeholder;\n }\n\n for (let i = 0; i < options.length; i += 1) {\n const option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n\n return TimeUtils.formatTime(customTime);\n }\n\n setInputWidth(): void {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n focus(): void {\n this.button.current?.focus();\n }\n\n updateInputValue(value: number): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent<HTMLDivElement>): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n\n switch (event.key) {\n case 'Enter':\n case ' ': // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.button.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n } else {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n const menuOptionsLength = options.length;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (\n keyboardOptionIndex < menuOptionsLength &&\n !(inputFocused && keyboardOptionIndex === 0)\n ) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { options, timeToValue } = this.props;\n const { customTime } = this.state;\n\n if (optionIndex === CUSTOM_OPTION) {\n const update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n\n updateAndClose(update: number): void {\n this.updateInputValue(update);\n this.closeMenu();\n this.button.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleMenuOpened(): void {\n const { options, value } = this.props;\n const { keyboardOptionIndex } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n const activeOption = this.menuContainer.current?.querySelector(\n '.cs-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n\n focusInput(): void {\n this.input.current?.focus();\n }\n\n focusOption(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children) {\n const option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n handleCustomInput(value: number): void {\n const { timeToValue } = this.props;\n\n const update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value,\n });\n }\n\n updateFromCustom(): void {\n const { timeToValue } = this.props;\n const { customTime } = this.state;\n\n const update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n }\n\n closeMenu(focusButton = true): void {\n this.setState({ menuIsOpen: false });\n if (focusButton) {\n this.button.current?.focus();\n }\n }\n\n updateKeyboardIndex(): void {\n const { options, value } = this.props;\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n }\n\n scrollOptionIntoView(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children) {\n const activeOption = options.children.item(index);\n if (\n activeOption instanceof HTMLElement &&\n activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT\n ) {\n options.scrollTop =\n activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (\n (activeOption instanceof HTMLElement && activeOption.offsetTop < 0) ||\n index === 0\n ) {\n options.scrollTop = 0;\n }\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className=\"cs-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n >\n <div className=\"cs-options-container\">\n <div className=\"cs-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options, value, icon, customText } = this.props;\n const { keyboardOptionIndex, customTime, inputFocused } = this.state;\n\n let matchFound = false;\n const optionArray: JSX.Element[] = [];\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const key = `option-${index}-${option.value}`;\n matchFound = matchFound || option.value === value;\n optionArray.push(\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.value === value && (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n )}\n {option.value !== value && <span className=\"mr-4\" />}\n {option.title}\n </button>\n );\n }\n\n optionArray.push(<hr className=\"cs-divider\" key=\"option-divider\" />);\n\n optionArray.push(\n <button\n key=\"option-custom-label\"\n type=\"button\"\n value={CUSTOM_OPTION}\n className={classNames('cs-option-btn', {\n 'keyboard-active': inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {!matchFound && value !== null ? (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n ) : (\n <span className=\"mr-4\" />\n )}\n {customText}\n </button>\n );\n\n optionArray.push(\n <div key=\"cs-custom-container\" className=\"cs-custom-container\">\n <span className=\"mr-2\" />\n <TimeInput\n key=\"option-input\"\n ref={this.input}\n onChange={this.handleCustomInput}\n value={customTime}\n onFocus={() => this.setState({ inputFocused: true })}\n onBlur={() => this.setState({ inputFocused: false })}\n />\n <span className=\"ml-2\" />\n </div>\n );\n\n optionArray.push(<hr key=\"option-end\" className=\"mb-2\" />);\n\n return optionArray;\n }\n\n render(): JSX.Element {\n const { disabled, invalid, value, 'data-testid': dataTestId } = this.props;\n const { menuIsOpen } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div\n className=\"input-group cs-container context-menu\"\n ref={this.csContainer}\n data-testid={dataTestId}\n >\n <div\n className={classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid,\n })}\n >\n <button\n type=\"button\"\n className={classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid,\n })}\n ref={this.button}\n onClick={this.toggleMenu}\n disabled={disabled}\n >\n <span\n className={classNames({\n 'text-muted': value === null,\n })}\n >\n {this.getSelectedText()}\n </span>\n <span>\n <FontAwesomeIcon icon={dhSort} className=\"cs-caret\" />\n </span>\n <DropdownMenu\n isShown={menuIsOpen}\n actions={{ menuElement: this.renderMenuElement() }}\n popperOptions={popperOptions}\n popperClassName=\"CustomTimeSelect\"\n onMenuOpened={this.handleMenuOpened}\n onMenuClosed={this.handleMenuExited}\n menuStyle={{ maxWidth: '100rem' }}\n />\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomTimeSelect;\n"],"file":"CustomTimeSelect.js"}
1
+ {"version":3,"file":"CustomTimeSelect.js","names":["React","Component","FontAwesomeIcon","vsCheck","dhSort","TimeUtils","classNames","TimeInput","DropdownMenu","CUSTOM_OPTION","MENU_NAVIGATION_DIRECTION","CustomTimeSelect","constructor","props","value","valueToTime","toggleMenu","bind","handleMenuKeyDown","closeMenu","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","handleCustomInput","csContainer","createRef","menuContainer","button","input","state","keyboardOptionIndex","menuIsOpen","inputWidth","customTime","inputFocused","getSelectedText","options","placeholder","i","length","option","title","formatTime","setInputWidth","current","setState","getBoundingClientRect","width","focus","updateInputValue","onChange","handleResize","event","key","updateFromCustom","stopPropagation","preventDefault","shiftKey","handleMenuNavigation","UP","DOWN","direction","menuOptionsLength","newKeyboardOptionIndex","focusInput","focusOption","scrollOptionIntoView","optionIndex","Number","currentTarget","timeToValue","update","updateAndClose","target","activeOption","querySelector","HTMLElement","valueIndex","map","indexOf","index","children","item","openMenu","updateKeyboardIndex","focusButton","offsetTop","DROP_DOWN_MENU_HEIGHT","scrollTop","renderMenuElement","renderOptions","icon","customText","matchFound","optionArray","push","render","disabled","invalid","dataTestId","popperOptions","placement","modifiers","preventOverflow","enabled","menuElement","maxWidth","Math","round","time","undefined"],"sources":["../src/CustomTimeSelect.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { PopperOptions } from 'popper.js';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck, dhSort, IconDefinition } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput, { TimeInputElement } from './TimeInput';\nimport DropdownMenu from './menu-actions/DropdownMenu';\nimport './CustomTimeSelect.scss';\n\nconst CUSTOM_OPTION = -1;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ntype CustomTimeSelectProps = {\n options: { title: string; value: number }[];\n popperOptions: PopperOptions;\n value: number | null;\n onChange(value: number): void;\n disabled: boolean;\n icon: IconDefinition;\n placeholder: string;\n customText: string;\n // Defaults to converting the value in milliseconds to time in seconds\n valueToTime(val: number | null): number;\n // Defaults to converting the time in seconds to value in milliseconds\n timeToValue(time: number): number;\n invalid: boolean;\n 'data-testid'?: string;\n};\n\ntype TimeInSeconds = number;\n\ntype CustomTimeSelectState = {\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n customTime: TimeInSeconds;\n inputFocused: boolean;\n};\n\nclass CustomTimeSelect extends Component<\n CustomTimeSelectProps,\n CustomTimeSelectState\n> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 125;\n\n static defaultProps: Partial<CustomTimeSelectProps> = {\n onChange(): void {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => (value === null ? 0 : Math.round(value / 1000)),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined,\n };\n\n constructor(props: CustomTimeSelectProps) {\n super(props);\n\n const { value, valueToTime } = props;\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n\n this.csContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.button = React.createRef();\n this.input = React.createRef();\n\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false,\n };\n }\n\n csContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n button: React.RefObject<HTMLButtonElement>;\n\n input: React.RefObject<TimeInputElement>;\n\n getSelectedText(): string {\n const { options, value, placeholder } = this.props;\n const { customTime } = this.state;\n\n if (value === null) {\n return placeholder;\n }\n\n for (let i = 0; i < options.length; i += 1) {\n const option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n\n return TimeUtils.formatTime(customTime);\n }\n\n setInputWidth(): void {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n focus(): void {\n this.button.current?.focus();\n }\n\n updateInputValue(value: number): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent<HTMLDivElement>): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n\n switch (event.key) {\n case 'Enter':\n case ' ': // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.button.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n } else {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n const menuOptionsLength = options.length;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (\n keyboardOptionIndex < menuOptionsLength &&\n !(inputFocused && keyboardOptionIndex === 0)\n ) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { options, timeToValue } = this.props;\n const { customTime } = this.state;\n\n if (optionIndex === CUSTOM_OPTION) {\n const update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n\n updateAndClose(update: number): void {\n this.updateInputValue(update);\n this.closeMenu();\n this.button.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleMenuOpened(): void {\n const { options, value } = this.props;\n const { keyboardOptionIndex } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n const activeOption = this.menuContainer.current?.querySelector(\n '.cs-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n\n focusInput(): void {\n this.input.current?.focus();\n }\n\n focusOption(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children) {\n const option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n handleCustomInput(value: number): void {\n const { timeToValue } = this.props;\n\n const update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value,\n });\n }\n\n updateFromCustom(): void {\n const { timeToValue } = this.props;\n const { customTime } = this.state;\n\n const update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n }\n\n closeMenu(focusButton = true): void {\n this.setState({ menuIsOpen: false });\n if (focusButton) {\n this.button.current?.focus();\n }\n }\n\n updateKeyboardIndex(): void {\n const { options, value } = this.props;\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n }\n\n scrollOptionIntoView(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children) {\n const activeOption = options.children.item(index);\n if (\n activeOption instanceof HTMLElement &&\n activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT\n ) {\n options.scrollTop =\n activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (\n (activeOption instanceof HTMLElement && activeOption.offsetTop < 0) ||\n index === 0\n ) {\n options.scrollTop = 0;\n }\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className=\"cs-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n >\n <div className=\"cs-options-container\">\n <div className=\"cs-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options, value, icon, customText } = this.props;\n const { keyboardOptionIndex, customTime, inputFocused } = this.state;\n\n let matchFound = false;\n const optionArray: JSX.Element[] = [];\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const key = `option-${index}-${option.value}`;\n matchFound = matchFound || option.value === value;\n optionArray.push(\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.value === value && (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n )}\n {option.value !== value && <span className=\"mr-4\" />}\n {option.title}\n </button>\n );\n }\n\n optionArray.push(<hr className=\"cs-divider\" key=\"option-divider\" />);\n\n optionArray.push(\n <button\n key=\"option-custom-label\"\n type=\"button\"\n value={CUSTOM_OPTION}\n className={classNames('cs-option-btn', {\n 'keyboard-active': inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {!matchFound && value !== null ? (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n ) : (\n <span className=\"mr-4\" />\n )}\n {customText}\n </button>\n );\n\n optionArray.push(\n <div key=\"cs-custom-container\" className=\"cs-custom-container\">\n <span className=\"mr-2\" />\n <TimeInput\n key=\"option-input\"\n ref={this.input}\n onChange={this.handleCustomInput}\n value={customTime}\n onFocus={() => this.setState({ inputFocused: true })}\n onBlur={() => this.setState({ inputFocused: false })}\n />\n <span className=\"ml-2\" />\n </div>\n );\n\n optionArray.push(<hr key=\"option-end\" className=\"mb-2\" />);\n\n return optionArray;\n }\n\n render(): JSX.Element {\n const { disabled, invalid, value, 'data-testid': dataTestId } = this.props;\n const { menuIsOpen } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div\n className=\"input-group cs-container context-menu\"\n ref={this.csContainer}\n data-testid={dataTestId}\n >\n <div\n className={classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid,\n })}\n >\n <button\n type=\"button\"\n className={classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid,\n })}\n ref={this.button}\n onClick={this.toggleMenu}\n disabled={disabled}\n >\n <span\n className={classNames({\n 'text-muted': value === null,\n })}\n >\n {this.getSelectedText()}\n </span>\n <span>\n <FontAwesomeIcon icon={dhSort} className=\"cs-caret\" />\n </span>\n <DropdownMenu\n isShown={menuIsOpen}\n actions={{ menuElement: this.renderMenuElement() }}\n popperOptions={popperOptions}\n popperClassName=\"CustomTimeSelect\"\n onMenuOpened={this.handleMenuOpened}\n onMenuClosed={this.handleMenuExited}\n menuStyle={{ maxWidth: '100rem' }}\n />\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomTimeSelect;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DebouncedSearchInput.tsx"],"names":["React","PureComponent","debounce","SearchInput","DebouncedSearchInput","constructor","props","searchInput","createRef","handleChange","bind","sendUpdate","debounceMs","state","value","componentDidUpdate","prevProps","setState","focus","current","event","target","onChange","render","placeholder","className","matchCount","id","dataTestId","undefined"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,QAAP,MAAqB,iBAArB;OACOC,W;;AAiBP,MAAMC,oBAAN,SAAmCH,aAAnC,CAGE;AAUAI,EAAAA,WAAW,CAACC,KAAD,EAAmC;AAC5C,UAAMA,KAAN;;AAD4C;;AAE5C,SAAKC,WAAL,gBAAmBP,KAAK,CAACQ,SAAN,EAAnB;AACA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,UAAL,GAAkBT,QAAQ,CAAC,KAAKS,UAAL,CAAgBD,IAAhB,CAAqB,IAArB,CAAD,EAA6BJ,KAAK,CAACM,UAAnC,CAA1B;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,KAAK,EAAER,KAAK,CAACQ;AADF,KAAb;AAGD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAA6C;AAC7D,QAAM;AAAEF,MAAAA;AAAF,QAAY,KAAKR,KAAvB;;AACA,QAAIU,SAAS,CAACF,KAAV,KAAoBA,KAAxB,EAA+B;AAC7B;AACA,WAAKG,QAAL,CAAc;AAAEH,QAAAA;AAAF,OAAd;AACD;AACF;;AAIDI,EAAAA,KAAK,GAAS;AAAA;;AACZ,kCAAKX,WAAL,CAAiBY,OAAjB,gFAA0BD,KAA1B;AACD;;AAEDT,EAAAA,YAAY,CAACW,KAAD,EAAmD;AAC7D,SAAKH,QAAL,CAAc;AAAEH,MAAAA,KAAK,EAAEM,KAAK,CAACC,MAAN,CAAaP;AAAtB,KAAd,EAA6C,KAAKH,UAAlD;AACD;;AAEDA,EAAAA,UAAU,GAAS;AACjB,QAAM;AAAEW,MAAAA;AAAF,QAAe,KAAKhB,KAA1B;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAY,KAAKD,KAAvB;AACAS,IAAAA,QAAQ,CAACR,KAAD,CAAR;AACD;;AAEDS,EAAAA,MAAM,GAAgB;AACpB,QAAM;AACJC,MAAAA,WADI;AAEJC,MAAAA,SAFI;AAGJC,MAAAA,UAHI;AAIJC,MAAAA,EAJI;AAKJ,qBAAeC;AALX,QAMF,KAAKtB,KANT;AAOA,QAAM;AAAEQ,MAAAA;AAAF,QAAY,KAAKD,KAAvB;AACA,wBACE,oBAAC,WAAD;AACE,MAAA,KAAK,EAAEC,KADT;AAEE,MAAA,WAAW,EAAEU,WAFf;AAGE,MAAA,QAAQ,EAAE,KAAKf,YAHjB;AAIE,MAAA,SAAS,EAAEgB,SAJb;AAKE,MAAA,UAAU,EAAEC,UALd;AAME,MAAA,GAAG,EAAE,KAAKnB,WANZ;AAOE,MAAA,EAAE,EAAEoB,EAPN;AAQE,qBAAaC;AARf,MADF;AAYD;;AAlED;;gBAHIxB,oB,kBAIkB;AACpBoB,EAAAA,WAAW,EAAE,QADO;AAEpBC,EAAAA,SAAS,EAAE,EAFS;AAGpBC,EAAAA,UAAU,EAAE,IAHQ;AAIpBd,EAAAA,UAAU,EAAE,GAJQ;AAKpBe,EAAAA,EAAE,EAAE,EALgB;AAMpB,iBAAeE;AANK,C;;AAoExB,eAAezB,oBAAf","sourcesContent":["import React, { PureComponent } from 'react';\nimport debounce from 'lodash.debounce';\nimport SearchInput from './SearchInput';\n\ninterface DebouncedSearchInputProps {\n value: string;\n placeholder: string;\n onChange(value: string): void;\n className: string;\n matchCount: number;\n debounceMs: number;\n id: string;\n 'data-testid'?: string;\n}\n\ninterface DebouncedSearchInputState {\n value: string;\n}\n\nclass DebouncedSearchInput extends PureComponent<\n DebouncedSearchInputProps,\n DebouncedSearchInputState\n> {\n static defaultProps = {\n placeholder: 'Search',\n className: '',\n matchCount: null,\n debounceMs: 250,\n id: '',\n 'data-testid': undefined,\n };\n\n constructor(props: DebouncedSearchInputProps) {\n super(props);\n this.searchInput = React.createRef();\n this.handleChange = this.handleChange.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), props.debounceMs);\n\n this.state = {\n value: props.value,\n };\n }\n\n componentDidUpdate(prevProps: DebouncedSearchInputProps): void {\n const { value } = this.props;\n if (prevProps.value !== value) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ value });\n }\n }\n\n searchInput: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchInput.current?.focus();\n }\n\n handleChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ value: event.target.value }, this.sendUpdate);\n }\n\n sendUpdate(): void {\n const { onChange } = this.props;\n const { value } = this.state;\n onChange(value);\n }\n\n render(): JSX.Element {\n const {\n placeholder,\n className,\n matchCount,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { value } = this.state;\n return (\n <SearchInput\n value={value}\n placeholder={placeholder}\n onChange={this.handleChange}\n className={className}\n matchCount={matchCount}\n ref={this.searchInput}\n id={id}\n data-testid={dataTestId}\n />\n );\n }\n}\n\nexport default DebouncedSearchInput;\n"],"file":"DebouncedSearchInput.js"}
1
+ {"version":3,"file":"DebouncedSearchInput.js","names":["React","PureComponent","debounce","SearchInput","DebouncedSearchInput","constructor","props","searchInput","createRef","handleChange","bind","sendUpdate","debounceMs","state","value","componentDidUpdate","prevProps","setState","focus","current","event","target","onChange","render","placeholder","className","matchCount","id","dataTestId","undefined"],"sources":["../src/DebouncedSearchInput.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport debounce from 'lodash.debounce';\nimport SearchInput from './SearchInput';\n\ninterface DebouncedSearchInputProps {\n value: string;\n placeholder: string;\n onChange(value: string): void;\n className: string;\n matchCount: number;\n debounceMs: number;\n id: string;\n 'data-testid'?: string;\n}\n\ninterface DebouncedSearchInputState {\n value: string;\n}\n\nclass DebouncedSearchInput extends PureComponent<\n DebouncedSearchInputProps,\n DebouncedSearchInputState\n> {\n static defaultProps = {\n placeholder: 'Search',\n className: '',\n matchCount: null,\n debounceMs: 250,\n id: '',\n 'data-testid': undefined,\n };\n\n constructor(props: DebouncedSearchInputProps) {\n super(props);\n this.searchInput = React.createRef();\n this.handleChange = this.handleChange.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), props.debounceMs);\n\n this.state = {\n value: props.value,\n };\n }\n\n componentDidUpdate(prevProps: DebouncedSearchInputProps): void {\n const { value } = this.props;\n if (prevProps.value !== value) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ value });\n }\n }\n\n searchInput: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchInput.current?.focus();\n }\n\n handleChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ value: event.target.value }, this.sendUpdate);\n }\n\n sendUpdate(): void {\n const { onChange } = this.props;\n const { value } = this.state;\n onChange(value);\n }\n\n render(): JSX.Element {\n const {\n placeholder,\n className,\n matchCount,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { value } = this.state;\n return (\n <SearchInput\n value={value}\n placeholder={placeholder}\n onChange={this.handleChange}\n className={className}\n matchCount={matchCount}\n ref={this.searchInput}\n id={id}\n data-testid={dataTestId}\n />\n );\n }\n}\n\nexport default DebouncedSearchInput;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,QAAP,MAAqB,iBAArB;OACOC,W;;AAiBP,MAAMC,oBAAN,SAAmCH,aAAnC,CAGE;EAUAI,WAAW,CAACC,KAAD,EAAmC;IAC5C,MAAMA,KAAN;;IAD4C;;IAE5C,KAAKC,WAAL,gBAAmBP,KAAK,CAACQ,SAAN,EAAnB;IACA,KAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKC,UAAL,GAAkBT,QAAQ,CAAC,KAAKS,UAAL,CAAgBD,IAAhB,CAAqB,IAArB,CAAD,EAA6BJ,KAAK,CAACM,UAAnC,CAA1B;IAEA,KAAKC,KAAL,GAAa;MACXC,KAAK,EAAER,KAAK,CAACQ;IADF,CAAb;EAGD;;EAEDC,kBAAkB,CAACC,SAAD,EAA6C;IAC7D,IAAM;MAAEF;IAAF,IAAY,KAAKR,KAAvB;;IACA,IAAIU,SAAS,CAACF,KAAV,KAAoBA,KAAxB,EAA+B;MAC7B;MACA,KAAKG,QAAL,CAAc;QAAEH;MAAF,CAAd;IACD;EACF;;EAIDI,KAAK,GAAS;IAAA;;IACZ,8BAAKX,WAAL,CAAiBY,OAAjB,gFAA0BD,KAA1B;EACD;;EAEDT,YAAY,CAACW,KAAD,EAAmD;IAC7D,KAAKH,QAAL,CAAc;MAAEH,KAAK,EAAEM,KAAK,CAACC,MAAN,CAAaP;IAAtB,CAAd,EAA6C,KAAKH,UAAlD;EACD;;EAEDA,UAAU,GAAS;IACjB,IAAM;MAAEW;IAAF,IAAe,KAAKhB,KAA1B;IACA,IAAM;MAAEQ;IAAF,IAAY,KAAKD,KAAvB;IACAS,QAAQ,CAACR,KAAD,CAAR;EACD;;EAEDS,MAAM,GAAgB;IACpB,IAAM;MACJC,WADI;MAEJC,SAFI;MAGJC,UAHI;MAIJC,EAJI;MAKJ,eAAeC;IALX,IAMF,KAAKtB,KANT;IAOA,IAAM;MAAEQ;IAAF,IAAY,KAAKD,KAAvB;IACA,oBACE,oBAAC,WAAD;MACE,KAAK,EAAEC,KADT;MAEE,WAAW,EAAEU,WAFf;MAGE,QAAQ,EAAE,KAAKf,YAHjB;MAIE,SAAS,EAAEgB,SAJb;MAKE,UAAU,EAAEC,UALd;MAME,GAAG,EAAE,KAAKnB,WANZ;MAOE,EAAE,EAAEoB,EAPN;MAQE,eAAaC;IARf,EADF;EAYD;;AAlED;;gBAHIxB,oB,kBAIkB;EACpBoB,WAAW,EAAE,QADO;EAEpBC,SAAS,EAAE,EAFS;EAGpBC,UAAU,EAAE,IAHQ;EAIpBd,UAAU,EAAE,GAJQ;EAKpBe,EAAE,EAAE,EALgB;EAMpB,eAAeE;AANK,C;;AAoExB,eAAezB,oBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DeephavenSpinner.tsx"],"names":["React","classNames","DeephavenSpinner","className","show","dataTestId"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,OAAOC,UAAP,MAAuB,YAAvB;;AAQA;AACA;AACA;AACA;AACA;AACA,IAAMC,gBAAgB,GAAG;AAAA,MAAC;AACxBC,IAAAA,SAAS,GAAG,EADY;AAExBC,IAAAA,IAAI,GAAG,IAFiB;AAGxB,mBAAeC;AAHS,GAAD;AAAA,sBAKvB;AACE,IAAA,SAAS,EAAEJ,UAAU,CAAC,WAAD,EAAcE,SAAd,EAAyB;AAAEC,MAAAA;AAAF,KAAzB,CADvB;AAEE,mBAAaC;AAFf,kBAIE;AAAK,IAAA,SAAS,EAAC,gBAAf;AAAgC,IAAA,OAAO,EAAC;AAAxC,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,CAAC,EAAC,wsBADJ;AAEE,IAAA,IAAI,EAAC;AAFP,IADF,CADF,CAJF,eAYE;AAAK,IAAA,SAAS,EAAC,iCAAf;AAAiD,IAAA,OAAO,EAAC;AAAzD,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,KAAK,EAAC,SADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,IAAI,EAAC,SAHP;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF,CADF,CADF,CAZF,eAwBE;AAAK,IAAA,SAAS,EAAC,iCAAf;AAAiD,IAAA,OAAO,EAAC;AAAzD,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,KAAK,EAAC,SADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,IAAI,EAAC,SAHP;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF,CADF,CADF,CAxBF,eAoCE;AAAK,IAAA,SAAS,EAAC,iCAAf;AAAiD,IAAA,OAAO,EAAC;AAAzD,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,KAAK,EAAC,SADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,IAAI,EAAC,SAHP;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF,CADF,CADF,CApCF,eAgDE;AAAK,IAAA,SAAS,EAAC,iCAAf;AAAiD,IAAA,OAAO,EAAC;AAAzD,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,KAAK,EAAC,SADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,IAAI,EAAC,SAHP;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF,CADF,CADF,CAhDF,eA4DE;AAAK,IAAA,SAAS,EAAC,iCAAf;AAAiD,IAAA,OAAO,EAAC;AAAzD,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,KAAK,EAAC,SADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,IAAI,EAAC,SAHP;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF,CADF,CADF,CA5DF,eAwEE;AAAK,IAAA,SAAS,EAAC,iCAAf;AAAiD,IAAA,OAAO,EAAC;AAAzD,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AAAG,IAAA,SAAS,EAAC;AAAb,kBACE;AACE,IAAA,KAAK,EAAC,SADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,IAAI,EAAC,SAHP;AAIE,IAAA,SAAS,EAAC;AAJZ,IADF,CADF,CADF,CAxEF,CALuB;AAAA,CAAzB;;AA4FA,eAAeH,gBAAf","sourcesContent":["import React from 'react';\nimport './DeephavenSpinner.scss';\nimport classNames from 'classnames';\n\ninterface DeephavenSpinnerProps {\n className?: string;\n show?: boolean;\n 'data-testid'?: string;\n}\n\n/**\n * Break apart a generated svg into indivdual svg layers, to allow each to be animated on the GPU\n * CSS animations that reach into the svg are blocking since SVG aren't drawn by the gpu, only animations\n * that are performed on the whole svg remain hardware accelerated.\n */\nconst DeephavenSpinner = ({\n className = '',\n show = true,\n 'data-testid': dataTestId,\n}: DeephavenSpinnerProps): JSX.Element => (\n <div\n className={classNames('dh-loader', className, { show })}\n data-testid={dataTestId}\n >\n <svg className=\"dh-outer-shape\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <path\n d=\"M82.7429,0L82.7429,41.3714L45.2571,41.3714L45.2571,0L0,0L0,128L45.2571,128L45.2571,86.6286L82.5143,86.6286L82.5143,128L128,128L128,0L82.7429,0ZM41.3714,124.114L4.11429,124.114L4.11429,86.6286L41.3714,86.6286L41.3714,124.114ZM41.3714,82.7429L4.11429,82.7429L4.11429,45.2571L41.3714,45.2571L41.3714,82.7429ZM41.3714,41.3714L4.11429,41.3714L4.11429,4.11429L41.3714,4.11429L41.3714,41.3714ZM45.2571,82.7429L45.2571,45.2571L82.5143,45.2571L82.5143,82.5143L45.2571,82.5143ZM124.114,124.114L86.6286,124.114L86.6286,86.6286L123.886,86.6286L123.886,124.114ZM124.114,82.7429L86.6286,82.7429L86.6286,45.2571L123.886,45.2571L123.886,82.7429ZM86.6286,41.3714L86.6286,4.11429L123.886,4.11429L123.886,41.3714L86.6286,41.3714Z\"\n fill=\"#f0f0ee\"\n />\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-3\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.3438\"\n height=\"37.6389\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,29.7957) translate(21.9838,15.3027)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-2\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2755\"\n height=\"37.4675\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,69.7957) translate(22.0822,16.7783)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-5\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.3512\"\n height=\"41.3781\"\n fill=\"#35618c\"\n transform=\"translate(18.0162,72.7957) translate(23.1643,13.7278)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-6\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2483\"\n height=\"37.5869\"\n fill=\"#35618c\"\n transform=\"translate(59.0162,29.7957) translate(23.6379,15.3564)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-7\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.5664\"\n height=\"41.2747\"\n fill=\"#35618c\"\n transform=\"translate(17.0162,-13.2043) translate(24.2531,13.2043)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-4\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2854\"\n height=\"37.3014\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,-13.2043) translate(22.0822,17.1792)\"\n />\n </g>\n </g>\n </svg>\n </div>\n);\n\nexport default DeephavenSpinner;\n"],"file":"DeephavenSpinner.js"}
1
+ {"version":3,"file":"DeephavenSpinner.js","names":["React","classNames","DeephavenSpinner","className","show","dataTestId"],"sources":["../src/DeephavenSpinner.tsx"],"sourcesContent":["import React from 'react';\nimport './DeephavenSpinner.scss';\nimport classNames from 'classnames';\n\ninterface DeephavenSpinnerProps {\n className?: string;\n show?: boolean;\n 'data-testid'?: string;\n}\n\n/**\n * Break apart a generated svg into indivdual svg layers, to allow each to be animated on the GPU\n * CSS animations that reach into the svg are blocking since SVG aren't drawn by the gpu, only animations\n * that are performed on the whole svg remain hardware accelerated.\n */\nconst DeephavenSpinner = ({\n className = '',\n show = true,\n 'data-testid': dataTestId,\n}: DeephavenSpinnerProps): JSX.Element => (\n <div\n className={classNames('dh-loader', className, { show })}\n data-testid={dataTestId}\n >\n <svg className=\"dh-outer-shape\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <path\n d=\"M82.7429,0L82.7429,41.3714L45.2571,41.3714L45.2571,0L0,0L0,128L45.2571,128L45.2571,86.6286L82.5143,86.6286L82.5143,128L128,128L128,0L82.7429,0ZM41.3714,124.114L4.11429,124.114L4.11429,86.6286L41.3714,86.6286L41.3714,124.114ZM41.3714,82.7429L4.11429,82.7429L4.11429,45.2571L41.3714,45.2571L41.3714,82.7429ZM41.3714,41.3714L4.11429,41.3714L4.11429,4.11429L41.3714,4.11429L41.3714,41.3714ZM45.2571,82.7429L45.2571,45.2571L82.5143,45.2571L82.5143,82.5143L45.2571,82.5143ZM124.114,124.114L86.6286,124.114L86.6286,86.6286L123.886,86.6286L123.886,124.114ZM124.114,82.7429L86.6286,82.7429L86.6286,45.2571L123.886,45.2571L123.886,82.7429ZM86.6286,41.3714L86.6286,4.11429L123.886,4.11429L123.886,41.3714L86.6286,41.3714Z\"\n fill=\"#f0f0ee\"\n />\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-3\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.3438\"\n height=\"37.6389\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,29.7957) translate(21.9838,15.3027)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-2\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2755\"\n height=\"37.4675\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,69.7957) translate(22.0822,16.7783)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-5\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.3512\"\n height=\"41.3781\"\n fill=\"#35618c\"\n transform=\"translate(18.0162,72.7957) translate(23.1643,13.7278)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-6\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2483\"\n height=\"37.5869\"\n fill=\"#35618c\"\n transform=\"translate(59.0162,29.7957) translate(23.6379,15.3564)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-7\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.5664\"\n height=\"41.2747\"\n fill=\"#35618c\"\n transform=\"translate(17.0162,-13.2043) translate(24.2531,13.2043)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-4\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2854\"\n height=\"37.3014\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,-13.2043) translate(22.0822,17.1792)\"\n />\n </g>\n </g>\n </svg>\n </div>\n);\n\nexport default DeephavenSpinner;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,OAAOC,UAAP,MAAuB,YAAvB;;AAQA;AACA;AACA;AACA;AACA;AACA,IAAMC,gBAAgB,GAAG;EAAA,IAAC;IACxBC,SAAS,GAAG,EADY;IAExBC,IAAI,GAAG,IAFiB;IAGxB,eAAeC;EAHS,CAAD;EAAA,oBAKvB;IACE,SAAS,EAAEJ,UAAU,CAAC,WAAD,EAAcE,SAAd,EAAyB;MAAEC;IAAF,CAAzB,CADvB;IAEE,eAAaC;EAFf,gBAIE;IAAK,SAAS,EAAC,gBAAf;IAAgC,OAAO,EAAC;EAAxC,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,CAAC,EAAC,wsBADJ;IAEE,IAAI,EAAC;EAFP,EADF,CADF,CAJF,eAYE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAZF,eAwBE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAxBF,eAoCE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CApCF,eAgDE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAhDF,eA4DE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CA5DF,eAwEE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAxEF,CALuB;AAAA,CAAzB;;AA4FA,eAAeH,gBAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DragUtils.ts"],"names":["flatten","DragUtils","reorder","sourceList","selectedRanges","destinationList","destinationIndex","insertIndex","adjustDestinationIndex","draggedItems","removeItems","splice","list","ranges","items","sortedRanges","map","range","index","sort","a","b","i","length","start","end","adjustedIndex","Math","min","startDragging","document","documentElement","classList","add","stopDragging","remove"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,gBAApB;;AAIA,MAAMC,SAAN,CAAgB;AACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACgB,SAAPC,OAAO,CACZC,UADY,EAEZC,cAFY,EAGZC,eAHY,EAIZC,gBAJY,EAKP;AACL,QAAMC,WAAW,GACfJ,UAAU,KAAKE,eAAf,GACIJ,SAAS,CAACO,sBAAV,CAAiCF,gBAAjC,EAAmDF,cAAnD,CADJ,GAEIE,gBAHN;AAIA,QAAMG,YAAY,GAAGR,SAAS,CAACS,WAAV,CAAsBP,UAAtB,EAAkCC,cAAlC,CAArB;AACAC,IAAAA,eAAe,CAACM,MAAhB,CAAuBJ,WAAvB,EAAoC,CAApC,EAAuC,GAAGE,YAA1C;AACA,WAAOA,YAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACoB,SAAXC,WAAW,CAAIE,IAAJ,EAAeC,MAAf,EAAqC;AACrD,QAAMC,KAAK,GAAG,EAAd,CADqD,CAGrD;;AACA,QAAMC,YAAY,GAAGF,MAAM,CACxBG,GADkB,CACd,CAACC,KAAD,EAAQC,KAAR,MAAmB;AAAED,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAnB,CADc,EAElBC,IAFkB,CAEb,CAACC,CAAD,EAAIC,CAAJ,KAAUA,CAAC,CAACJ,KAAF,CAAQ,CAAR,IAAaG,CAAC,CAACH,KAAF,CAAQ,CAAR,CAFV,CAArB;;AAGA,SAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,YAAY,CAACQ,MAAjC,EAAyCD,CAAC,IAAI,CAA9C,EAAiD;AAC/C,UAAM;AAAEL,QAAAA,KAAF;AAASC,QAAAA;AAAT,UAAmBH,YAAY,CAACO,CAAD,CAArC;AACA,UAAM,CAACE,KAAD,EAAQC,GAAR,IAAeR,KAArB;AACAH,MAAAA,KAAK,CAACI,KAAD,CAAL,GAAeN,IAAI,CAACD,MAAL,CAAYa,KAAZ,EAAmBC,GAAG,GAAGD,KAAN,GAAc,CAAjC,CAAf;AACD;;AAED,WAAOxB,OAAO,CAACc,KAAD,CAAd;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AAC+B,SAAtBN,sBAAsB,CAC3BF,gBAD2B,EAE3BO,MAF2B,EAGnB;AACR,QAAIa,aAAa,GAAGpB,gBAApB;;AACA,SAAK,IAAIgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,MAAM,CAACU,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAM,CAACE,KAAD,EAAQC,GAAR,IAAeZ,MAAM,CAACS,CAAD,CAA3B;;AACA,UAAIE,KAAK,GAAGlB,gBAAZ,EAA8B;AAC5B;AACD;;AAEDoB,MAAAA,aAAa,IAAIC,IAAI,CAACC,GAAL,CAASH,GAAT,EAAcnB,gBAAgB,GAAG,CAAjC,IAAsCkB,KAAtC,GAA8C,CAA/D;AACD;;AACD,WAAOE,aAAP;AACD;;AAEmB,SAAbG,aAAa,GAAS;AAC3BC,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,0BAAvC;AACD;;AAEkB,SAAZC,YAAY,GAAS;AAC1BJ,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,0BAA1C;AACD;;AA1Ea;;AA6EhB,eAAelC,SAAf","sourcesContent":["import flatten from 'lodash.flatten';\n\ntype Range = [number, number];\n\nclass DragUtils {\n /**\n * Re-orders the provided item lists in place based on the selectedRanges and destinationIndex provided\n * @param sourceList Array of the source items\n * @param selectedRanges Array of the selected ranges in the source list\n * @param destinationList Destination items. If dragging within the same list, set it to sourceItems\n * @param destinationIndex The index items are being dropped in the destinationList, adjusted for the removed items\n * @returns The items that were dragged\n */\n static reorder<T>(\n sourceList: T[],\n selectedRanges: Range[],\n destinationList: T[],\n destinationIndex: number\n ): T[] {\n const insertIndex =\n sourceList === destinationList\n ? DragUtils.adjustDestinationIndex(destinationIndex, selectedRanges)\n : destinationIndex;\n const draggedItems = DragUtils.removeItems(sourceList, selectedRanges);\n destinationList.splice(insertIndex, 0, ...draggedItems);\n return draggedItems;\n }\n\n /**\n * Removes the provided ranges from the list in place\n * @param list Array of items to remove the ranges.\n * @param ranges Array of the ranges to remove.\n * @returns The removed items, in the order of the ranges removed.\n */\n static removeItems<T>(list: T[], ranges: Range[]): T[] {\n const items = [];\n\n // Sort them in reverse, so we don't screw up the range indexes\n const sortedRanges = ranges\n .map((range, index) => ({ range, index }))\n .sort((a, b) => b.range[0] - a.range[0]);\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const { range, index } = sortedRanges[i];\n const [start, end] = range;\n items[index] = list.splice(start, end - start + 1);\n }\n\n return flatten(items);\n }\n\n /**\n * Adjusts the destination index for when dropping into the same list you're dragging from.\n * @param destinationIndex The original destination index\n * @param ranges The ranges that are moving\n * @returns Index where item should be inserted after all ranges are removed\n */\n static adjustDestinationIndex(\n destinationIndex: number,\n ranges: Range[]\n ): number {\n let adjustedIndex = destinationIndex;\n for (let i = 0; i < ranges.length; i += 1) {\n const [start, end] = ranges[i];\n if (start > destinationIndex) {\n break;\n }\n\n adjustedIndex -= Math.min(end, destinationIndex - 1) - start + 1;\n }\n return adjustedIndex;\n }\n\n static startDragging(): void {\n document.documentElement.classList.add('drag-pointer-events-none');\n }\n\n static stopDragging(): void {\n document.documentElement.classList.remove('drag-pointer-events-none');\n }\n}\n\nexport default DragUtils;\n"],"file":"DragUtils.js"}
1
+ {"version":3,"file":"DragUtils.js","names":["flatten","DragUtils","reorder","sourceList","selectedRanges","destinationList","destinationIndex","insertIndex","adjustDestinationIndex","draggedItems","removeItems","splice","list","ranges","items","sortedRanges","map","range","index","sort","a","b","i","length","start","end","adjustedIndex","Math","min","startDragging","document","documentElement","classList","add","stopDragging","remove"],"sources":["../src/DragUtils.ts"],"sourcesContent":["import flatten from 'lodash.flatten';\n\ntype Range = [number, number];\n\nclass DragUtils {\n /**\n * Re-orders the provided item lists in place based on the selectedRanges and destinationIndex provided\n * @param sourceList Array of the source items\n * @param selectedRanges Array of the selected ranges in the source list\n * @param destinationList Destination items. If dragging within the same list, set it to sourceItems\n * @param destinationIndex The index items are being dropped in the destinationList, adjusted for the removed items\n * @returns The items that were dragged\n */\n static reorder<T>(\n sourceList: T[],\n selectedRanges: Range[],\n destinationList: T[],\n destinationIndex: number\n ): T[] {\n const insertIndex =\n sourceList === destinationList\n ? DragUtils.adjustDestinationIndex(destinationIndex, selectedRanges)\n : destinationIndex;\n const draggedItems = DragUtils.removeItems(sourceList, selectedRanges);\n destinationList.splice(insertIndex, 0, ...draggedItems);\n return draggedItems;\n }\n\n /**\n * Removes the provided ranges from the list in place\n * @param list Array of items to remove the ranges.\n * @param ranges Array of the ranges to remove.\n * @returns The removed items, in the order of the ranges removed.\n */\n static removeItems<T>(list: T[], ranges: Range[]): T[] {\n const items = [];\n\n // Sort them in reverse, so we don't screw up the range indexes\n const sortedRanges = ranges\n .map((range, index) => ({ range, index }))\n .sort((a, b) => b.range[0] - a.range[0]);\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const { range, index } = sortedRanges[i];\n const [start, end] = range;\n items[index] = list.splice(start, end - start + 1);\n }\n\n return flatten(items);\n }\n\n /**\n * Adjusts the destination index for when dropping into the same list you're dragging from.\n * @param destinationIndex The original destination index\n * @param ranges The ranges that are moving\n * @returns Index where item should be inserted after all ranges are removed\n */\n static adjustDestinationIndex(\n destinationIndex: number,\n ranges: Range[]\n ): number {\n let adjustedIndex = destinationIndex;\n for (let i = 0; i < ranges.length; i += 1) {\n const [start, end] = ranges[i];\n if (start > destinationIndex) {\n break;\n }\n\n adjustedIndex -= Math.min(end, destinationIndex - 1) - start + 1;\n }\n return adjustedIndex;\n }\n\n static startDragging(): void {\n document.documentElement.classList.add('drag-pointer-events-none');\n }\n\n static stopDragging(): void {\n document.documentElement.classList.remove('drag-pointer-events-none');\n }\n}\n\nexport default DragUtils;\n"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,gBAApB;;AAIA,MAAMC,SAAN,CAAgB;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACgB,OAAPC,OAAO,CACZC,UADY,EAEZC,cAFY,EAGZC,eAHY,EAIZC,gBAJY,EAKP;IACL,IAAMC,WAAW,GACfJ,UAAU,KAAKE,eAAf,GACIJ,SAAS,CAACO,sBAAV,CAAiCF,gBAAjC,EAAmDF,cAAnD,CADJ,GAEIE,gBAHN;IAIA,IAAMG,YAAY,GAAGR,SAAS,CAACS,WAAV,CAAsBP,UAAtB,EAAkCC,cAAlC,CAArB;IACAC,eAAe,CAACM,MAAhB,CAAuBJ,WAAvB,EAAoC,CAApC,EAAuC,GAAGE,YAA1C;IACA,OAAOA,YAAP;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;EACoB,OAAXC,WAAW,CAAIE,IAAJ,EAAeC,MAAf,EAAqC;IACrD,IAAMC,KAAK,GAAG,EAAd,CADqD,CAGrD;;IACA,IAAMC,YAAY,GAAGF,MAAM,CACxBG,GADkB,CACd,CAACC,KAAD,EAAQC,KAAR,MAAmB;MAAED,KAAF;MAASC;IAAT,CAAnB,CADc,EAElBC,IAFkB,CAEb,CAACC,CAAD,EAAIC,CAAJ,KAAUA,CAAC,CAACJ,KAAF,CAAQ,CAAR,IAAaG,CAAC,CAACH,KAAF,CAAQ,CAAR,CAFV,CAArB;;IAGA,KAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,YAAY,CAACQ,MAAjC,EAAyCD,CAAC,IAAI,CAA9C,EAAiD;MAC/C,IAAM;QAAEL,KAAF;QAASC;MAAT,IAAmBH,YAAY,CAACO,CAAD,CAArC;MACA,IAAM,CAACE,KAAD,EAAQC,GAAR,IAAeR,KAArB;MACAH,KAAK,CAACI,KAAD,CAAL,GAAeN,IAAI,CAACD,MAAL,CAAYa,KAAZ,EAAmBC,GAAG,GAAGD,KAAN,GAAc,CAAjC,CAAf;IACD;;IAED,OAAOxB,OAAO,CAACc,KAAD,CAAd;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;EAC+B,OAAtBN,sBAAsB,CAC3BF,gBAD2B,EAE3BO,MAF2B,EAGnB;IACR,IAAIa,aAAa,GAAGpB,gBAApB;;IACA,KAAK,IAAIgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,MAAM,CAACU,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;MACzC,IAAM,CAACE,KAAD,EAAQC,GAAR,IAAeZ,MAAM,CAACS,CAAD,CAA3B;;MACA,IAAIE,KAAK,GAAGlB,gBAAZ,EAA8B;QAC5B;MACD;;MAEDoB,aAAa,IAAIC,IAAI,CAACC,GAAL,CAASH,GAAT,EAAcnB,gBAAgB,GAAG,CAAjC,IAAsCkB,KAAtC,GAA8C,CAA/D;IACD;;IACD,OAAOE,aAAP;EACD;;EAEmB,OAAbG,aAAa,GAAS;IAC3BC,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,0BAAvC;EACD;;EAEkB,OAAZC,YAAY,GAAS;IAC1BJ,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,0BAA1C;EACD;;AA1Ea;;AA6EhB,eAAelC,SAAf"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/DraggableItemList.tsx"],"names":["React","PureComponent","classNames","memoize","Draggable","Droppable","FontAwesomeIcon","vsGripper","RangeUtils","ItemList","Tooltip","DraggableItemList","renderHandle","renderBadge","text","renderTextItem","badgeText","className","renderItem","item","isClone","selectedCount","displayValue","value","getDraggableId","draggablePrefix","itemIndex","getDraggableIndex","draggableId","parseInt","split","pop","constructor","props","isFocused","isSelected","isDragDisabled","style","provided","innerRef","draggableProps","dragHandleProps","max","CACHE_SIZE","getCachedDraggableItem","draggingItemClassName","items","offset","snapshot","rubric","state","index","source","handleSelectionChange","bind","itemList","createRef","selectItem","current","focusItem","scrollToItem","selectedRanges","setState","count","onSelectionChange","render","droppableId","isDoubleClickSelect","isDropDisabled","isMultiSelect","isStickyBottom","itemCount","onFocusChange","onSelect","onViewportChange","rowHeight","dataTestId","getCachedRenderClone","draggingFromThisWith","isDraggingOver","draggingOverWith","droppableProps","getCachedRenderDraggableItem","DEFAULT_ROW_HEIGHT","isDeselectOnClick","disableSelect","undefined"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoizee';\nimport { Draggable, Droppable, DraggableChildrenFn } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGripper } from '@deephaven/icons';\nimport { RangeUtils, Range } from '@deephaven/utils';\nimport ItemList, {\n RenderItemProps,\n DefaultListItem,\n ItemListProps,\n} from './ItemList';\nimport { Tooltip } from './popper';\nimport './DraggableItemList.scss';\n\nexport type DraggableRenderItemProps<T> = RenderItemProps<T> & {\n isClone?: boolean;\n selectedCount?: number;\n};\n\ntype DraggableRenderItemFn<T> = (\n props: DraggableRenderItemProps<T>\n) => React.ReactNode;\n\ntype DraggableItemListProps<T> = Omit<\n ItemListProps<T>,\n 'overscanCount' | 'focusSelector' | 'isDragSelect'\n> & {\n className: string;\n draggingItemClassName: string;\n isDropDisabled: boolean;\n // Whether to allow dragging items from this list\n isDragDisabled: boolean;\n\n renderItem: DraggableRenderItemFn<T>;\n style: React.CSSProperties;\n\n // The prefix to add to all draggable item IDs\n draggablePrefix: string;\n // The ID to give the droppable list\n droppableId: string;\n\n 'data-testid'?: string;\n};\n\ntype DraggableItemListState = {\n selectedCount: number;\n};\n\n/**\n * Show a draggable item list. It _must_ be used within a `DragDropContext`.\n * This implementation uses react-beautiful-dnd for handling dragging and dropping of items.\n * We use ItemList to handle selection for multi drag and drop (not built in to react-beautiful-dnd).\n * One caveat with the use of react-beautiful-dnd is that it doesn't allow a drag to be initiated while\n * using a modifier key: https://github.com/atlassian/react-beautiful-dnd/issues/1678\n */\nclass DraggableItemList<T> extends PureComponent<\n DraggableItemListProps<T>,\n DraggableItemListState\n> {\n static DEFAULT_ROW_HEIGHT = 30;\n\n static defaultProps = {\n className: '',\n draggingItemClassName: '',\n offset: 0,\n items: [],\n rowHeight: DraggableItemList.DEFAULT_ROW_HEIGHT,\n isDeselectOnClick: true,\n isDoubleClickSelect: true,\n isDropDisabled: false,\n isDragDisabled: false,\n isMultiSelect: false,\n isStickyBottom: false,\n disableSelect: false,\n style: null,\n onFocusChange(): void {\n // no-op\n },\n onSelect(): void {\n // no-op\n },\n onSelectionChange(): void {\n // no-op\n },\n onViewportChange(): void {\n // no-op\n },\n renderItem: DraggableItemList.renderItem,\n selectedRanges: [],\n draggablePrefix: 'draggable-item',\n droppableId: 'droppable-item-list',\n 'data-testid': undefined,\n };\n\n static renderHandle(): JSX.Element {\n return (\n <div>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n );\n }\n\n static renderBadge({ text }: { text?: string }): React.ReactNode {\n return text ? <span className=\"number-badge\">{text}</span> : null;\n }\n\n static renderTextItem({\n text,\n badgeText = '',\n className = '',\n }: {\n text: string;\n badgeText?: string;\n className: string;\n }): JSX.Element {\n return (\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">{text}</span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n );\n }\n\n static renderItem<P extends DefaultListItem>({\n item,\n isClone,\n selectedCount,\n }: DraggableRenderItemProps<P>): JSX.Element {\n const text = item && (item.displayValue || item.value || `${item}`);\n const badgeText = isClone ? `${selectedCount}` : '';\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static getDraggableId(draggablePrefix: string, itemIndex: number): string {\n return `${draggablePrefix}/${itemIndex}`;\n }\n\n static getDraggableIndex(draggableId: string): number {\n return parseInt(draggableId.split('/').pop() || '', 10);\n }\n\n constructor(props: DraggableItemListProps<T>) {\n super(props);\n\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n this.itemList = React.createRef();\n\n this.state = {\n selectedCount: 0,\n };\n }\n\n itemList: React.RefObject<ItemList<T>>;\n\n selectItem(itemIndex: number): void {\n this.itemList.current?.selectItem(itemIndex);\n }\n\n focusItem(itemIndex: number): void {\n this.itemList.current?.focusItem(itemIndex);\n }\n\n scrollToItem(itemIndex: number): void {\n this.itemList.current?.scrollToItem(itemIndex);\n }\n\n getCachedDraggableItem = memoize(\n (\n draggablePrefix: string,\n renderItem: DraggableRenderItemFn<T>,\n item: T,\n itemIndex: number,\n isFocused: boolean,\n isSelected: boolean,\n isDragDisabled: boolean,\n style: React.CSSProperties\n ) => (\n <Draggable\n key={itemIndex}\n draggableId={DraggableItemList.getDraggableId(\n draggablePrefix,\n itemIndex\n )}\n index={itemIndex}\n isDragDisabled={isDragDisabled}\n >\n {provided => (\n <div\n role=\"menuitem\"\n className=\"draggable-item-list-item\"\n ref={provided.innerRef}\n tabIndex={-1}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n {renderItem({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style,\n isClone: false,\n })}\n </div>\n )}\n </Draggable>\n ),\n { max: ItemList.CACHE_SIZE }\n );\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedCount: RangeUtils.count(selectedRanges) });\n\n const { onSelectionChange } = this.props;\n onSelectionChange(selectedRanges);\n }\n\n getCachedRenderDraggableItem = memoize(\n (\n draggablePrefix: string,\n isDragDisabled: boolean,\n renderItem: DraggableRenderItemFn<T>\n ) => ({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style,\n }: RenderItemProps<T>) =>\n this.getCachedDraggableItem(\n draggablePrefix,\n renderItem,\n item,\n itemIndex,\n isFocused,\n isSelected,\n isDragDisabled,\n style\n ),\n { max: 1 }\n );\n\n getCachedRenderClone = memoize(\n (\n draggingItemClassName: string,\n items: T[],\n offset: number,\n renderItem: DraggableRenderItemFn<T>\n ): DraggableChildrenFn => (provided, snapshot, rubric) => {\n const { selectedCount } = this.state;\n const { index: itemIndex } = rubric.source;\n const item = items[itemIndex - offset];\n return (\n <div\n className={classNames(\n 'draggable-item-list-dragging-item-container',\n draggingItemClassName\n )}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n <div\n className={classNames(\n 'draggable-item-list-dragging-item',\n { 'two-dragged': selectedCount === 2 },\n { 'multiple-dragged': selectedCount > 2 }\n )}\n >\n {renderItem({\n item,\n itemIndex,\n isFocused: false,\n isSelected: true,\n style: {},\n isClone: true,\n selectedCount,\n })}\n </div>\n </div>\n );\n },\n { max: 1 }\n );\n\n render(): JSX.Element {\n const {\n className,\n draggablePrefix,\n draggingItemClassName,\n droppableId,\n isDoubleClickSelect,\n isDragDisabled,\n isDropDisabled,\n isMultiSelect,\n isStickyBottom,\n itemCount,\n items,\n offset,\n onFocusChange,\n onSelect,\n onViewportChange,\n renderItem,\n rowHeight,\n selectedRanges,\n style,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <Droppable\n isDropDisabled={isDropDisabled}\n droppableId={droppableId}\n mode=\"virtual\"\n renderClone={this.getCachedRenderClone(\n draggingItemClassName,\n items,\n offset,\n renderItem\n )}\n data-testid={dataTestId}\n >\n {(provided, snapshot) => (\n <div\n role=\"menu\"\n className={classNames('draggable-item-list', className, {\n 'is-drop-disabled': isDropDisabled,\n 'is-drag-disabled': isDragDisabled,\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n style={style}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n <ItemList\n focusSelector=\".draggable-item-list-item\"\n isDoubleClickSelect={isDoubleClickSelect}\n isDragSelect={false}\n isMultiSelect={isMultiSelect}\n isStickyBottom={isStickyBottom}\n itemCount={itemCount}\n items={items}\n onFocusChange={onFocusChange}\n onSelect={onSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={onViewportChange}\n offset={offset}\n ref={this.itemList}\n renderItem={this.getCachedRenderDraggableItem(\n draggablePrefix,\n isDragDisabled,\n renderItem\n )}\n rowHeight={rowHeight}\n selectedRanges={selectedRanges}\n />\n </div>\n )}\n </Droppable>\n );\n }\n}\n\nexport default DraggableItemList;\n"],"file":"DraggableItemList.js"}
1
+ {"version":3,"file":"DraggableItemList.js","names":["React","PureComponent","classNames","memoize","Draggable","Droppable","FontAwesomeIcon","vsGripper","RangeUtils","ItemList","Tooltip","DraggableItemList","renderHandle","renderBadge","text","renderTextItem","badgeText","className","renderItem","item","isClone","selectedCount","displayValue","value","getDraggableId","draggablePrefix","itemIndex","getDraggableIndex","draggableId","parseInt","split","pop","constructor","props","isFocused","isSelected","isDragDisabled","style","provided","innerRef","draggableProps","dragHandleProps","max","CACHE_SIZE","getCachedDraggableItem","draggingItemClassName","items","offset","snapshot","rubric","state","index","source","handleSelectionChange","bind","itemList","createRef","selectItem","current","focusItem","scrollToItem","selectedRanges","setState","count","onSelectionChange","render","droppableId","isDoubleClickSelect","isDropDisabled","isMultiSelect","isStickyBottom","itemCount","onFocusChange","onSelect","onViewportChange","rowHeight","dataTestId","getCachedRenderClone","draggingFromThisWith","isDraggingOver","draggingOverWith","droppableProps","getCachedRenderDraggableItem","DEFAULT_ROW_HEIGHT","isDeselectOnClick","disableSelect","undefined"],"sources":["../src/DraggableItemList.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoizee';\nimport { Draggable, Droppable, DraggableChildrenFn } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGripper } from '@deephaven/icons';\nimport { RangeUtils, Range } from '@deephaven/utils';\nimport ItemList, {\n RenderItemProps,\n DefaultListItem,\n ItemListProps,\n} from './ItemList';\nimport { Tooltip } from './popper';\nimport './DraggableItemList.scss';\n\nexport type DraggableRenderItemProps<T> = RenderItemProps<T> & {\n isClone?: boolean;\n selectedCount?: number;\n};\n\ntype DraggableRenderItemFn<T> = (\n props: DraggableRenderItemProps<T>\n) => React.ReactNode;\n\ntype DraggableItemListProps<T> = Omit<\n ItemListProps<T>,\n 'overscanCount' | 'focusSelector' | 'isDragSelect'\n> & {\n className: string;\n draggingItemClassName: string;\n isDropDisabled: boolean;\n // Whether to allow dragging items from this list\n isDragDisabled: boolean;\n\n renderItem: DraggableRenderItemFn<T>;\n style: React.CSSProperties;\n\n // The prefix to add to all draggable item IDs\n draggablePrefix: string;\n // The ID to give the droppable list\n droppableId: string;\n\n 'data-testid'?: string;\n};\n\ntype DraggableItemListState = {\n selectedCount: number;\n};\n\n/**\n * Show a draggable item list. It _must_ be used within a `DragDropContext`.\n * This implementation uses react-beautiful-dnd for handling dragging and dropping of items.\n * We use ItemList to handle selection for multi drag and drop (not built in to react-beautiful-dnd).\n * One caveat with the use of react-beautiful-dnd is that it doesn't allow a drag to be initiated while\n * using a modifier key: https://github.com/atlassian/react-beautiful-dnd/issues/1678\n */\nclass DraggableItemList<T> extends PureComponent<\n DraggableItemListProps<T>,\n DraggableItemListState\n> {\n static DEFAULT_ROW_HEIGHT = 30;\n\n static defaultProps = {\n className: '',\n draggingItemClassName: '',\n offset: 0,\n items: [],\n rowHeight: DraggableItemList.DEFAULT_ROW_HEIGHT,\n isDeselectOnClick: true,\n isDoubleClickSelect: true,\n isDropDisabled: false,\n isDragDisabled: false,\n isMultiSelect: false,\n isStickyBottom: false,\n disableSelect: false,\n style: null,\n onFocusChange(): void {\n // no-op\n },\n onSelect(): void {\n // no-op\n },\n onSelectionChange(): void {\n // no-op\n },\n onViewportChange(): void {\n // no-op\n },\n renderItem: DraggableItemList.renderItem,\n selectedRanges: [],\n draggablePrefix: 'draggable-item',\n droppableId: 'droppable-item-list',\n 'data-testid': undefined,\n };\n\n static renderHandle(): JSX.Element {\n return (\n <div>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n );\n }\n\n static renderBadge({ text }: { text?: string }): React.ReactNode {\n return text ? <span className=\"number-badge\">{text}</span> : null;\n }\n\n static renderTextItem({\n text,\n badgeText = '',\n className = '',\n }: {\n text: string;\n badgeText?: string;\n className: string;\n }): JSX.Element {\n return (\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">{text}</span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n );\n }\n\n static renderItem<P extends DefaultListItem>({\n item,\n isClone,\n selectedCount,\n }: DraggableRenderItemProps<P>): JSX.Element {\n const text = item && (item.displayValue || item.value || `${item}`);\n const badgeText = isClone ? `${selectedCount}` : '';\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static getDraggableId(draggablePrefix: string, itemIndex: number): string {\n return `${draggablePrefix}/${itemIndex}`;\n }\n\n static getDraggableIndex(draggableId: string): number {\n return parseInt(draggableId.split('/').pop() || '', 10);\n }\n\n constructor(props: DraggableItemListProps<T>) {\n super(props);\n\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n this.itemList = React.createRef();\n\n this.state = {\n selectedCount: 0,\n };\n }\n\n itemList: React.RefObject<ItemList<T>>;\n\n selectItem(itemIndex: number): void {\n this.itemList.current?.selectItem(itemIndex);\n }\n\n focusItem(itemIndex: number): void {\n this.itemList.current?.focusItem(itemIndex);\n }\n\n scrollToItem(itemIndex: number): void {\n this.itemList.current?.scrollToItem(itemIndex);\n }\n\n getCachedDraggableItem = memoize(\n (\n draggablePrefix: string,\n renderItem: DraggableRenderItemFn<T>,\n item: T,\n itemIndex: number,\n isFocused: boolean,\n isSelected: boolean,\n isDragDisabled: boolean,\n style: React.CSSProperties\n ) => (\n <Draggable\n key={itemIndex}\n draggableId={DraggableItemList.getDraggableId(\n draggablePrefix,\n itemIndex\n )}\n index={itemIndex}\n isDragDisabled={isDragDisabled}\n >\n {provided => (\n <div\n role=\"menuitem\"\n className=\"draggable-item-list-item\"\n ref={provided.innerRef}\n tabIndex={-1}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n {renderItem({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style,\n isClone: false,\n })}\n </div>\n )}\n </Draggable>\n ),\n { max: ItemList.CACHE_SIZE }\n );\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedCount: RangeUtils.count(selectedRanges) });\n\n const { onSelectionChange } = this.props;\n onSelectionChange(selectedRanges);\n }\n\n getCachedRenderDraggableItem = memoize(\n (\n draggablePrefix: string,\n isDragDisabled: boolean,\n renderItem: DraggableRenderItemFn<T>\n ) => ({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style,\n }: RenderItemProps<T>) =>\n this.getCachedDraggableItem(\n draggablePrefix,\n renderItem,\n item,\n itemIndex,\n isFocused,\n isSelected,\n isDragDisabled,\n style\n ),\n { max: 1 }\n );\n\n getCachedRenderClone = memoize(\n (\n draggingItemClassName: string,\n items: T[],\n offset: number,\n renderItem: DraggableRenderItemFn<T>\n ): DraggableChildrenFn => (provided, snapshot, rubric) => {\n const { selectedCount } = this.state;\n const { index: itemIndex } = rubric.source;\n const item = items[itemIndex - offset];\n return (\n <div\n className={classNames(\n 'draggable-item-list-dragging-item-container',\n draggingItemClassName\n )}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n <div\n className={classNames(\n 'draggable-item-list-dragging-item',\n { 'two-dragged': selectedCount === 2 },\n { 'multiple-dragged': selectedCount > 2 }\n )}\n >\n {renderItem({\n item,\n itemIndex,\n isFocused: false,\n isSelected: true,\n style: {},\n isClone: true,\n selectedCount,\n })}\n </div>\n </div>\n );\n },\n { max: 1 }\n );\n\n render(): JSX.Element {\n const {\n className,\n draggablePrefix,\n draggingItemClassName,\n droppableId,\n isDoubleClickSelect,\n isDragDisabled,\n isDropDisabled,\n isMultiSelect,\n isStickyBottom,\n itemCount,\n items,\n offset,\n onFocusChange,\n onSelect,\n onViewportChange,\n renderItem,\n rowHeight,\n selectedRanges,\n style,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <Droppable\n isDropDisabled={isDropDisabled}\n droppableId={droppableId}\n mode=\"virtual\"\n renderClone={this.getCachedRenderClone(\n draggingItemClassName,\n items,\n offset,\n renderItem\n )}\n data-testid={dataTestId}\n >\n {(provided, snapshot) => (\n <div\n role=\"menu\"\n className={classNames('draggable-item-list', className, {\n 'is-drop-disabled': isDropDisabled,\n 'is-drag-disabled': isDragDisabled,\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n style={style}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n <ItemList\n focusSelector=\".draggable-item-list-item\"\n isDoubleClickSelect={isDoubleClickSelect}\n isDragSelect={false}\n isMultiSelect={isMultiSelect}\n isStickyBottom={isStickyBottom}\n itemCount={itemCount}\n items={items}\n onFocusChange={onFocusChange}\n onSelect={onSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={onViewportChange}\n offset={offset}\n ref={this.itemList}\n renderItem={this.getCachedRenderDraggableItem(\n draggablePrefix,\n isDragDisabled,\n renderItem\n )}\n rowHeight={rowHeight}\n selectedRanges={selectedRanges}\n />\n </div>\n )}\n </Droppable>\n );\n }\n}\n\nexport default DraggableItemList;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":["React","Component","FontAwesomeIcon","dhSort","classNames","Checkbox","Popper","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","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","entries","render","menuText","className","icon","id","placement"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhSort, IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\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));\n } else {\n const newChildValue = !HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, !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 if (HierarchicalCheckboxMenu.isParentSelected(parent, valueMap)) {\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(): React.ReactNode {\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 type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n data-testid={dataTestId ? `${dataTestId}-btn-select-all` : undefined}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n data-testid={dataTestId ? `${dataTestId}-btn-clear` : undefined}\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 <FontAwesomeIcon icon={dhSort} className=\"hcm-icon ml-1\" />\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"],"file":"HierarchicalCheckboxMenu.js"}
1
+ {"version":3,"file":"HierarchicalCheckboxMenu.js","names":["React","Component","FontAwesomeIcon","dhSort","classNames","Checkbox","Popper","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","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","entries","render","menuText","className","icon","id","placement"],"sources":["../src/HierarchicalCheckboxMenu.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhSort, IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\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));\n } else {\n const newChildValue = !HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, !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 if (HierarchicalCheckboxMenu.isParentSelected(parent, valueMap)) {\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(): React.ReactNode {\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 type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n data-testid={dataTestId ? `${dataTestId}-btn-select-all` : undefined}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n data-testid={dataTestId ? `${dataTestId}-btn-clear` : undefined}\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 <FontAwesomeIcon icon={dhSort} className=\"hcm-icon ml-1\" />\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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"}
package/dist/ItemList.js CHANGED
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4