@deephaven/components 0.46.1-beta.2 → 0.46.1-beta.7

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 (111) hide show
  1. package/dist/AutoCompleteInput.js +40 -34
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +2 -1
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +48 -33
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/Button.js +19 -8
  8. package/dist/Button.js.map +1 -1
  9. package/dist/ButtonGroup.js +5 -3
  10. package/dist/ButtonGroup.js.map +1 -1
  11. package/dist/ButtonOld.js +5 -3
  12. package/dist/ButtonOld.js.map +1 -1
  13. package/dist/CardFlip.js +14 -9
  14. package/dist/CardFlip.js.map +1 -1
  15. package/dist/Checkbox.js +23 -19
  16. package/dist/Checkbox.js.map +1 -1
  17. package/dist/Collapse.js +12 -9
  18. package/dist/Collapse.js.map +1 -1
  19. package/dist/ComboBox.js +61 -51
  20. package/dist/ComboBox.js.map +1 -1
  21. package/dist/CopyButton.js +5 -3
  22. package/dist/CopyButton.js.map +1 -1
  23. package/dist/CustomTimeSelect.js +92 -84
  24. package/dist/CustomTimeSelect.js.map +1 -1
  25. package/dist/DateInput.js +19 -17
  26. package/dist/DateInput.js.map +1 -1
  27. package/dist/DateTimeInput.js +20 -18
  28. package/dist/DateTimeInput.js.map +1 -1
  29. package/dist/DebouncedSearchInput.js +2 -1
  30. package/dist/DebouncedSearchInput.js.map +1 -1
  31. package/dist/DraggableItemList.js +97 -80
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/EditableItemList.js +53 -46
  34. package/dist/EditableItemList.js.map +1 -1
  35. package/dist/HierarchicalCheckboxMenu.js +59 -49
  36. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  37. package/dist/ItemList.js +42 -37
  38. package/dist/ItemList.js.map +1 -1
  39. package/dist/ItemListItem.js +5 -3
  40. package/dist/ItemListItem.js.map +1 -1
  41. package/dist/LoadingOverlay.js +28 -20
  42. package/dist/LoadingOverlay.js.map +1 -1
  43. package/dist/LoadingSpinner.js +13 -10
  44. package/dist/LoadingSpinner.js.map +1 -1
  45. package/dist/MaskedInput.js +2 -1
  46. package/dist/MaskedInput.js.map +1 -1
  47. package/dist/Option.js +5 -3
  48. package/dist/Option.js.map +1 -1
  49. package/dist/RadioGroup.js +14 -10
  50. package/dist/RadioGroup.js.map +1 -1
  51. package/dist/RadioItem.js +23 -19
  52. package/dist/RadioItem.js.map +1 -1
  53. package/dist/RandomAreaPlotAnimation.js +8 -6
  54. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  55. package/dist/SearchInput.js +26 -21
  56. package/dist/SearchInput.js.map +1 -1
  57. package/dist/Select.js +5 -3
  58. package/dist/Select.js.map +1 -1
  59. package/dist/SelectValueList.js +29 -24
  60. package/dist/SelectValueList.js.map +1 -1
  61. package/dist/SocketedButton.js +13 -10
  62. package/dist/SocketedButton.js.map +1 -1
  63. package/dist/TimeInput.js +2 -1
  64. package/dist/TimeInput.js.map +1 -1
  65. package/dist/TimeSlider.js +123 -106
  66. package/dist/TimeSlider.js.map +1 -1
  67. package/dist/ToastNotification.js +35 -27
  68. package/dist/ToastNotification.js.map +1 -1
  69. package/dist/UISwitch.js +7 -5
  70. package/dist/UISwitch.js.map +1 -1
  71. package/dist/ValidateLabelInput.js +33 -24
  72. package/dist/ValidateLabelInput.js.map +1 -1
  73. package/dist/context-actions/ContextActions.js +7 -5
  74. package/dist/context-actions/ContextActions.js.map +1 -1
  75. package/dist/context-actions/ContextMenu.js +44 -41
  76. package/dist/context-actions/ContextMenu.js.map +1 -1
  77. package/dist/context-actions/ContextMenuItem.js +34 -24
  78. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  79. package/dist/context-actions/ContextMenuRoot.js +6 -4
  80. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  81. package/dist/context-actions/GlobalContextActions.js +3 -3
  82. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  83. package/dist/menu-actions/DropdownMenu.js +19 -16
  84. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  85. package/dist/menu-actions/Menu.js +8 -9
  86. package/dist/menu-actions/Menu.js.map +1 -1
  87. package/dist/modal/DebouncedModal.js +14 -9
  88. package/dist/modal/DebouncedModal.js.map +1 -1
  89. package/dist/modal/InfoModal.js +22 -13
  90. package/dist/modal/InfoModal.js.map +1 -1
  91. package/dist/modal/Modal.js +70 -60
  92. package/dist/modal/Modal.js.map +1 -1
  93. package/dist/modal/ModalBody.js +5 -3
  94. package/dist/modal/ModalBody.js.map +1 -1
  95. package/dist/modal/ModalFooter.js +5 -3
  96. package/dist/modal/ModalFooter.js.map +1 -1
  97. package/dist/modal/ModalHeader.js +19 -13
  98. package/dist/modal/ModalHeader.js.map +1 -1
  99. package/dist/navigation/Menu.js +15 -12
  100. package/dist/navigation/Menu.js.map +1 -1
  101. package/dist/navigation/MenuItem.js +29 -22
  102. package/dist/navigation/MenuItem.js.map +1 -1
  103. package/dist/navigation/Page.js +35 -26
  104. package/dist/navigation/Page.js.map +1 -1
  105. package/dist/navigation/Stack.js +33 -20
  106. package/dist/navigation/Stack.js.map +1 -1
  107. package/dist/popper/Popper.js +31 -25
  108. package/dist/popper/Popper.js.map +1 -1
  109. package/dist/popper/Tooltip.js +18 -13
  110. package/dist/popper/Tooltip.js.map +1 -1
  111. package/package.json +7 -7
@@ -5,6 +5,7 @@ import React, { Component } from 'react';
5
5
  import classNames from 'classnames';
6
6
  import "./ItemListItem.css";
7
7
  import Log from '@deephaven/log';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
8
9
  var log = Log.module('ItemListItem');
9
10
  class ItemListItem extends Component {
10
11
  static handleKeyDown() {
@@ -131,7 +132,7 @@ class ItemListItem extends Component {
131
132
  children,
132
133
  'data-testid': dataTestId
133
134
  } = this.props;
134
- return /*#__PURE__*/React.createElement("div", {
135
+ return /*#__PURE__*/_jsx("div", {
135
136
  className: classNames('item-list-item', {
136
137
  active: isSelected
137
138
  }, {
@@ -158,8 +159,9 @@ class ItemListItem extends Component {
158
159
  onFocus: this.handleFocus,
159
160
  onBlur: this.handleBlur,
160
161
  draggable: isDraggable,
161
- "data-testid": dataTestId
162
- }, children);
162
+ "data-testid": dataTestId,
163
+ children: children
164
+ });
163
165
  }
164
166
  }
165
167
  _defineProperty(ItemListItem, "defaultProps", {
@@ -1 +1 @@
1
- {"version":3,"file":"ItemListItem.js","names":["React","Component","classNames","Log","log","module","ItemListItem","handleKeyDown","constructor","props","handleBlur","bind","handleFocus","handleClick","handleContextMenu","handleDragStart","handleDrag","handleDragOver","handleDragEnd","handleDrop","handleDoubleClick","handleMouseDown","handleMouseMove","handleMouseUp","itemRef","createRef","e","itemIndex","onBlur","onFocus","onClick","onContextMenu","onDragStart","onDrag","preventDefault","onDragOver","onDragEnd","onDrop","onDoubleClick","onMouseMove","onMouseDown","onMouseUp","render","isDraggable","isFocused","isSelected","style","children","dataTestId","active","undefined"],"sources":["../src/ItemListItem.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport './ItemListItem.scss';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ItemListItem');\n\ninterface ItemListItemProps {\n isDraggable: boolean;\n isFocused: boolean;\n isSelected: boolean;\n itemIndex: number;\n // eslint-disable-next-line react/no-unused-prop-types\n disableSelect: boolean;\n onBlur(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onContextMenu(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onDragStart(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrag(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragOver(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragEnd(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrop(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDoubleClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onFocus(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onMouseDown(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseMove(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseUp(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n style: React.CSSProperties;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nclass ItemListItem extends Component<ItemListItemProps, Record<string, never>> {\n static defaultProps = {\n children: null,\n isDraggable: false,\n isFocused: false,\n isSelected: false,\n itemIndex: 0,\n 'data-testid': undefined,\n\n onBlur(): void {\n // no-op\n },\n onClick(): void {\n // no-op\n },\n onContextMenu(): void {\n // no-op\n },\n onDragStart(): void {\n // no-op\n },\n onDrag(): void {\n // no-op\n },\n onDragOver(): void {\n // no-op\n },\n onDragEnd(): void {\n // no-op\n },\n onDrop(): void {\n // no-op\n },\n onDoubleClick(): void {\n // no-op\n },\n onFocus(): void {\n // no-op\n },\n onMouseDown(): void {\n // no-op\n },\n onMouseMove(): void {\n // no-op\n },\n onMouseUp(): void {\n // no-op\n },\n style: {},\n };\n\n static handleKeyDown(): boolean {\n log.log('ItemListItem.handleKeyDown false');\n return false;\n }\n\n constructor(props: ItemListItemProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragOver = this.handleDragOver.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n\n this.itemRef = React.createRef();\n }\n\n itemRef: React.RefObject<HTMLDivElement>;\n\n handleBlur(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onBlur } = this.props;\n onBlur(itemIndex, e);\n }\n\n handleFocus(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onFocus } = this.props;\n onFocus(itemIndex, e);\n }\n\n handleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onClick } = this.props;\n onClick(itemIndex, e);\n }\n\n handleContextMenu(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onContextMenu } = this.props;\n onContextMenu(itemIndex, e);\n }\n\n handleDragStart(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragStart } = this.props;\n onDragStart(itemIndex, e);\n }\n\n handleDrag(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrag } = this.props;\n onDrag(itemIndex, e);\n }\n\n handleDragOver(e: React.DragEvent<HTMLDivElement>): void {\n // Have to call preventDefault otherwise onDrop won't get triggered\n e.preventDefault();\n const { itemIndex, onDragOver } = this.props;\n onDragOver(itemIndex, e);\n }\n\n handleDragEnd(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragEnd } = this.props;\n onDragEnd(itemIndex, e);\n }\n\n handleDrop(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrop } = this.props;\n onDrop(itemIndex, e);\n }\n\n handleDoubleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onDoubleClick } = this.props;\n onDoubleClick(itemIndex, e);\n }\n\n handleMouseMove(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseMove } = this.props;\n onMouseMove(itemIndex, e);\n }\n\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseDown } = this.props;\n onMouseDown(itemIndex, e);\n }\n\n handleMouseUp(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseUp } = this.props;\n onMouseUp(itemIndex, e);\n }\n\n render(): JSX.Element {\n const {\n isDraggable,\n isFocused,\n isSelected,\n style,\n children,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <div\n className={classNames(\n 'item-list-item',\n { active: isSelected },\n { 'is-focused': isFocused },\n { 'is-draggable': isDraggable }\n )}\n onKeyDown={ItemListItem.handleKeyDown}\n onContextMenuCapture={this.handleContextMenu}\n onClick={this.handleClick}\n onDrag={this.handleDrag}\n onDragStart={this.handleDragStart}\n onDragOver={this.handleDragOver}\n onDragEnd={this.handleDragEnd}\n onDrop={this.handleDrop}\n onDoubleClick={this.handleDoubleClick}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseUp={this.handleMouseUp}\n tabIndex={-1}\n ref={this.itemRef}\n role=\"listitem\"\n style={style}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n draggable={isDraggable}\n data-testid={dataTestId}\n >\n {children}\n </div>\n );\n }\n}\n\nexport default ItemListItem;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItemListItem.js","names":["React","Component","classNames","Log","log","module","ItemListItem","handleKeyDown","constructor","props","handleBlur","bind","handleFocus","handleClick","handleContextMenu","handleDragStart","handleDrag","handleDragOver","handleDragEnd","handleDrop","handleDoubleClick","handleMouseDown","handleMouseMove","handleMouseUp","itemRef","createRef","e","itemIndex","onBlur","onFocus","onClick","onContextMenu","onDragStart","onDrag","preventDefault","onDragOver","onDragEnd","onDrop","onDoubleClick","onMouseMove","onMouseDown","onMouseUp","render","isDraggable","isFocused","isSelected","style","children","dataTestId","active","undefined"],"sources":["../src/ItemListItem.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport './ItemListItem.scss';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ItemListItem');\n\ninterface ItemListItemProps {\n isDraggable: boolean;\n isFocused: boolean;\n isSelected: boolean;\n itemIndex: number;\n // eslint-disable-next-line react/no-unused-prop-types\n disableSelect: boolean;\n onBlur(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onContextMenu(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onDragStart(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrag(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragOver(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragEnd(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrop(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDoubleClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onFocus(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onMouseDown(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseMove(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseUp(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n style: React.CSSProperties;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nclass ItemListItem extends Component<ItemListItemProps, Record<string, never>> {\n static defaultProps = {\n children: null,\n isDraggable: false,\n isFocused: false,\n isSelected: false,\n itemIndex: 0,\n 'data-testid': undefined,\n\n onBlur(): void {\n // no-op\n },\n onClick(): void {\n // no-op\n },\n onContextMenu(): void {\n // no-op\n },\n onDragStart(): void {\n // no-op\n },\n onDrag(): void {\n // no-op\n },\n onDragOver(): void {\n // no-op\n },\n onDragEnd(): void {\n // no-op\n },\n onDrop(): void {\n // no-op\n },\n onDoubleClick(): void {\n // no-op\n },\n onFocus(): void {\n // no-op\n },\n onMouseDown(): void {\n // no-op\n },\n onMouseMove(): void {\n // no-op\n },\n onMouseUp(): void {\n // no-op\n },\n style: {},\n };\n\n static handleKeyDown(): boolean {\n log.log('ItemListItem.handleKeyDown false');\n return false;\n }\n\n constructor(props: ItemListItemProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragOver = this.handleDragOver.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n\n this.itemRef = React.createRef();\n }\n\n itemRef: React.RefObject<HTMLDivElement>;\n\n handleBlur(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onBlur } = this.props;\n onBlur(itemIndex, e);\n }\n\n handleFocus(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onFocus } = this.props;\n onFocus(itemIndex, e);\n }\n\n handleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onClick } = this.props;\n onClick(itemIndex, e);\n }\n\n handleContextMenu(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onContextMenu } = this.props;\n onContextMenu(itemIndex, e);\n }\n\n handleDragStart(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragStart } = this.props;\n onDragStart(itemIndex, e);\n }\n\n handleDrag(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrag } = this.props;\n onDrag(itemIndex, e);\n }\n\n handleDragOver(e: React.DragEvent<HTMLDivElement>): void {\n // Have to call preventDefault otherwise onDrop won't get triggered\n e.preventDefault();\n const { itemIndex, onDragOver } = this.props;\n onDragOver(itemIndex, e);\n }\n\n handleDragEnd(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragEnd } = this.props;\n onDragEnd(itemIndex, e);\n }\n\n handleDrop(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrop } = this.props;\n onDrop(itemIndex, e);\n }\n\n handleDoubleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onDoubleClick } = this.props;\n onDoubleClick(itemIndex, e);\n }\n\n handleMouseMove(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseMove } = this.props;\n onMouseMove(itemIndex, e);\n }\n\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseDown } = this.props;\n onMouseDown(itemIndex, e);\n }\n\n handleMouseUp(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseUp } = this.props;\n onMouseUp(itemIndex, e);\n }\n\n render(): JSX.Element {\n const {\n isDraggable,\n isFocused,\n isSelected,\n style,\n children,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <div\n className={classNames(\n 'item-list-item',\n { active: isSelected },\n { 'is-focused': isFocused },\n { 'is-draggable': isDraggable }\n )}\n onKeyDown={ItemListItem.handleKeyDown}\n onContextMenuCapture={this.handleContextMenu}\n onClick={this.handleClick}\n onDrag={this.handleDrag}\n onDragStart={this.handleDragStart}\n onDragOver={this.handleDragOver}\n onDragEnd={this.handleDragEnd}\n onDrop={this.handleDrop}\n onDoubleClick={this.handleDoubleClick}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseUp={this.handleMouseUp}\n tabIndex={-1}\n ref={this.itemRef}\n role=\"listitem\"\n style={style}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n draggable={isDraggable}\n data-testid={dataTestId}\n >\n {children}\n </div>\n );\n }\n}\n\nexport default ItemListItem;\n"],"mappings":"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"}
@@ -6,6 +6,8 @@ import { vsWarning } from '@deephaven/icons';
6
6
  import ThemeExport from "./ThemeExport.js";
7
7
  import LoadingSpinner from "./LoadingSpinner.js";
8
8
  import "./LoadingOverlay.css";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
11
  /**
10
12
  * A loading overlay that handles displaying a loading spinner or an error message
11
13
  */
@@ -18,31 +20,37 @@ function LoadingOverlay(_ref) {
18
20
  } = _ref;
19
21
  var messageTestId = dataTestId != null ? "".concat(dataTestId, "-message") : undefined;
20
22
  var spinnerTestId = dataTestId != null ? "".concat(dataTestId, "-spinner") : undefined;
21
- return /*#__PURE__*/React.createElement(CSSTransition, {
23
+ return /*#__PURE__*/_jsx(CSSTransition, {
22
24
  in: Boolean(errorMessage) || !isLoaded || isLoading,
23
25
  timeout: ThemeExport.transitionMs,
24
26
  classNames: isLoaded ? 'fade' : '',
25
27
  mountOnEnter: true,
26
- unmountOnExit: true
27
- }, /*#__PURE__*/React.createElement("div", {
28
- className: "fill-parent-absolute",
29
- "data-testid": dataTestId
30
- }, /*#__PURE__*/React.createElement("div", {
31
- className: classNames('iris-panel-message-overlay', 'fill-parent-absolute', {
32
- 'iris-panel-scrim-background': isLoaded
28
+ unmountOnExit: true,
29
+ children: /*#__PURE__*/_jsx("div", {
30
+ className: "fill-parent-absolute",
31
+ "data-testid": dataTestId,
32
+ children: /*#__PURE__*/_jsx("div", {
33
+ className: classNames('iris-panel-message-overlay', 'fill-parent-absolute', {
34
+ 'iris-panel-scrim-background': isLoaded
35
+ }),
36
+ children: /*#__PURE__*/_jsxs("div", {
37
+ className: "message-content",
38
+ children: [/*#__PURE__*/_jsxs("div", {
39
+ className: "message-icon",
40
+ children: [isLoading && /*#__PURE__*/_jsx(LoadingSpinner, {
41
+ "data-testid": spinnerTestId
42
+ }), !isLoading && errorMessage != null && /*#__PURE__*/_jsx(FontAwesomeIcon, {
43
+ icon: vsWarning
44
+ })]
45
+ }), errorMessage != null && /*#__PURE__*/_jsx("div", {
46
+ className: "message-text",
47
+ "data-testid": messageTestId,
48
+ children: errorMessage
49
+ })]
50
+ })
51
+ })
33
52
  })
34
- }, /*#__PURE__*/React.createElement("div", {
35
- className: "message-content"
36
- }, /*#__PURE__*/React.createElement("div", {
37
- className: "message-icon"
38
- }, isLoading && /*#__PURE__*/React.createElement(LoadingSpinner, {
39
- "data-testid": spinnerTestId
40
- }), !isLoading && errorMessage != null && /*#__PURE__*/React.createElement(FontAwesomeIcon, {
41
- icon: vsWarning
42
- })), errorMessage != null && /*#__PURE__*/React.createElement("div", {
43
- className: "message-text",
44
- "data-testid": messageTestId
45
- }, errorMessage)))));
53
+ });
46
54
  }
47
55
  export default LoadingOverlay;
48
56
  //# sourceMappingURL=LoadingOverlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingOverlay.js","names":["React","CSSTransition","classNames","FontAwesomeIcon","vsWarning","ThemeExport","LoadingSpinner","LoadingOverlay","isLoaded","isLoading","errorMessage","dataTestId","messageTestId","undefined","spinnerTestId","Boolean","transitionMs"],"sources":["../src/LoadingOverlay.tsx"],"sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport ThemeExport from './ThemeExport';\nimport LoadingSpinner from './LoadingSpinner';\nimport './LoadingOverlay.scss';\n\ntype LoadingOverlayProps = {\n isLoaded?: boolean;\n isLoading?: boolean;\n errorMessage?: string | null;\n 'data-testid'?: string;\n};\n\n/**\n * A loading overlay that handles displaying a loading spinner or an error message\n */\nfunction LoadingOverlay({\n isLoaded = false,\n isLoading = true,\n errorMessage = null,\n 'data-testid': dataTestId,\n}: LoadingOverlayProps): JSX.Element {\n const messageTestId =\n dataTestId != null ? `${dataTestId}-message` : undefined;\n const spinnerTestId =\n dataTestId != null ? `${dataTestId}-spinner` : undefined;\n return (\n <CSSTransition\n in={Boolean(errorMessage) || !isLoaded || isLoading}\n timeout={ThemeExport.transitionMs}\n classNames={isLoaded ? 'fade' : ''}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"fill-parent-absolute\" data-testid={dataTestId}>\n <div\n className={classNames(\n 'iris-panel-message-overlay',\n 'fill-parent-absolute',\n { 'iris-panel-scrim-background': isLoaded }\n )}\n >\n <div className=\"message-content\">\n <div className=\"message-icon\">\n {isLoading && <LoadingSpinner data-testid={spinnerTestId} />}\n {!isLoading && errorMessage != null && (\n <FontAwesomeIcon icon={vsWarning} />\n )}\n </div>\n {errorMessage != null && (\n <div className=\"message-text\" data-testid={messageTestId}>\n {errorMessage}\n </div>\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n );\n}\n\nexport default LoadingOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAAC,OACtCC,WAAW;AAAA,OACXC,cAAc;AAAA;AAUrB;AACA;AACA;AACA,SAASC,cAAc,OAKc;EAAA,IALb;IACtBC,QAAQ,GAAG,KAAK;IAChBC,SAAS,GAAG,IAAI;IAChBC,YAAY,GAAG,IAAI;IACnB,aAAa,EAAEC;EACI,CAAC;EACpB,IAAMC,aAAa,GACjBD,UAAU,IAAI,IAAI,aAAMA,UAAU,gBAAaE,SAAS;EAC1D,IAAMC,aAAa,GACjBH,UAAU,IAAI,IAAI,aAAMA,UAAU,gBAAaE,SAAS;EAC1D,oBACE,oBAAC,aAAa;IACZ,EAAE,EAAEE,OAAO,CAACL,YAAY,CAAC,IAAI,CAACF,QAAQ,IAAIC,SAAU;IACpD,OAAO,EAAEJ,WAAW,CAACW,YAAa;IAClC,UAAU,EAAER,QAAQ,GAAG,MAAM,GAAG,EAAG;IACnC,YAAY;IACZ,aAAa;EAAA,gBAEb;IAAK,SAAS,EAAC,sBAAsB;IAAC,eAAaG;EAAW,gBAC5D;IACE,SAAS,EAAET,UAAU,CACnB,4BAA4B,EAC5B,sBAAsB,EACtB;MAAE,6BAA6B,EAAEM;IAAS,CAAC;EAC3C,gBAEF;IAAK,SAAS,EAAC;EAAiB,gBAC9B;IAAK,SAAS,EAAC;EAAc,GAC1BC,SAAS,iBAAI,oBAAC,cAAc;IAAC,eAAaK;EAAc,EAAG,EAC3D,CAACL,SAAS,IAAIC,YAAY,IAAI,IAAI,iBACjC,oBAAC,eAAe;IAAC,IAAI,EAAEN;EAAU,EAClC,CACG,EACLM,YAAY,IAAI,IAAI,iBACnB;IAAK,SAAS,EAAC,cAAc;IAAC,eAAaE;EAAc,GACtDF,YAAY,CAEhB,CACG,CACF,CACF,CACQ;AAEpB;AAEA,eAAeH,cAAc"}
1
+ {"version":3,"file":"LoadingOverlay.js","names":["React","CSSTransition","classNames","FontAwesomeIcon","vsWarning","ThemeExport","LoadingSpinner","LoadingOverlay","isLoaded","isLoading","errorMessage","dataTestId","messageTestId","undefined","spinnerTestId","Boolean","transitionMs"],"sources":["../src/LoadingOverlay.tsx"],"sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport ThemeExport from './ThemeExport';\nimport LoadingSpinner from './LoadingSpinner';\nimport './LoadingOverlay.scss';\n\ntype LoadingOverlayProps = {\n isLoaded?: boolean;\n isLoading?: boolean;\n errorMessage?: string | null;\n 'data-testid'?: string;\n};\n\n/**\n * A loading overlay that handles displaying a loading spinner or an error message\n */\nfunction LoadingOverlay({\n isLoaded = false,\n isLoading = true,\n errorMessage = null,\n 'data-testid': dataTestId,\n}: LoadingOverlayProps): JSX.Element {\n const messageTestId =\n dataTestId != null ? `${dataTestId}-message` : undefined;\n const spinnerTestId =\n dataTestId != null ? `${dataTestId}-spinner` : undefined;\n return (\n <CSSTransition\n in={Boolean(errorMessage) || !isLoaded || isLoading}\n timeout={ThemeExport.transitionMs}\n classNames={isLoaded ? 'fade' : ''}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"fill-parent-absolute\" data-testid={dataTestId}>\n <div\n className={classNames(\n 'iris-panel-message-overlay',\n 'fill-parent-absolute',\n { 'iris-panel-scrim-background': isLoaded }\n )}\n >\n <div className=\"message-content\">\n <div className=\"message-icon\">\n {isLoading && <LoadingSpinner data-testid={spinnerTestId} />}\n {!isLoading && errorMessage != null && (\n <FontAwesomeIcon icon={vsWarning} />\n )}\n </div>\n {errorMessage != null && (\n <div className=\"message-text\" data-testid={messageTestId}>\n {errorMessage}\n </div>\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n );\n}\n\nexport default LoadingOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAAC,OACtCC,WAAW;AAAA,OACXC,cAAc;AAAA;AAAA;AAAA;AAUrB;AACA;AACA;AACA,SAASC,cAAc,OAKc;EAAA,IALb;IACtBC,QAAQ,GAAG,KAAK;IAChBC,SAAS,GAAG,IAAI;IAChBC,YAAY,GAAG,IAAI;IACnB,aAAa,EAAEC;EACI,CAAC;EACpB,IAAMC,aAAa,GACjBD,UAAU,IAAI,IAAI,aAAMA,UAAU,gBAAaE,SAAS;EAC1D,IAAMC,aAAa,GACjBH,UAAU,IAAI,IAAI,aAAMA,UAAU,gBAAaE,SAAS;EAC1D,oBACE,KAAC,aAAa;IACZ,EAAE,EAAEE,OAAO,CAACL,YAAY,CAAC,IAAI,CAACF,QAAQ,IAAIC,SAAU;IACpD,OAAO,EAAEJ,WAAW,CAACW,YAAa;IAClC,UAAU,EAAER,QAAQ,GAAG,MAAM,GAAG,EAAG;IACnC,YAAY;IACZ,aAAa;IAAA,uBAEb;MAAK,SAAS,EAAC,sBAAsB;MAAC,eAAaG,UAAW;MAAA,uBAC5D;QACE,SAAS,EAAET,UAAU,CACnB,4BAA4B,EAC5B,sBAAsB,EACtB;UAAE,6BAA6B,EAAEM;QAAS,CAAC,CAC3C;QAAA,uBAEF;UAAK,SAAS,EAAC,iBAAiB;UAAA,wBAC9B;YAAK,SAAS,EAAC,cAAc;YAAA,WAC1BC,SAAS,iBAAI,KAAC,cAAc;cAAC,eAAaK;YAAc,EAAG,EAC3D,CAACL,SAAS,IAAIC,YAAY,IAAI,IAAI,iBACjC,KAAC,eAAe;cAAC,IAAI,EAAEN;YAAU,EAClC;UAAA,EACG,EACLM,YAAY,IAAI,IAAI,iBACnB;YAAK,SAAS,EAAC,cAAc;YAAC,eAAaE,aAAc;YAAA,UACtDF;UAAY,EAEhB;QAAA;MACG;IACF;EACF,EACQ;AAEpB;AAEA,eAAeH,cAAc"}
@@ -3,22 +3,25 @@ import classNames from 'classnames';
3
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { vsCircleLarge, vsLoading } from '@deephaven/icons';
5
5
  import "./LoadingSpinner.css";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ import { jsxs as _jsxs } from "react/jsx-runtime";
6
8
  function LoadingSpinner(_ref) {
7
9
  var {
8
10
  className = '',
9
11
  'data-testid': dataTestId
10
12
  } = _ref;
11
- return /*#__PURE__*/React.createElement("div", {
13
+ return /*#__PURE__*/_jsxs("div", {
12
14
  className: classNames('loading-spinner fa-layers', className),
13
- "data-testid": dataTestId
14
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
15
- icon: vsCircleLarge,
16
- className: "text-white-50"
17
- }), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
18
- icon: vsLoading,
19
- className: "text-primary",
20
- spin: true
21
- }));
15
+ "data-testid": dataTestId,
16
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
17
+ icon: vsCircleLarge,
18
+ className: "text-white-50"
19
+ }), /*#__PURE__*/_jsx(FontAwesomeIcon, {
20
+ icon: vsLoading,
21
+ className: "text-primary",
22
+ spin: true
23
+ })]
24
+ });
22
25
  }
23
26
  export default LoadingSpinner;
24
27
  //# sourceMappingURL=LoadingSpinner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingSpinner.js","names":["React","classNames","FontAwesomeIcon","vsCircleLarge","vsLoading","LoadingSpinner","className","dataTestId"],"sources":["../src/LoadingSpinner.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCircleLarge, vsLoading } from '@deephaven/icons';\nimport './LoadingSpinner.scss';\n\ntype LoadingSpinnerProps = {\n className?: string;\n 'data-testid'?: string;\n};\n\nfunction LoadingSpinner({\n className = '',\n 'data-testid': dataTestId,\n}: LoadingSpinnerProps): JSX.Element {\n return (\n <div\n className={classNames('loading-spinner fa-layers', className)}\n data-testid={dataTestId}\n >\n <FontAwesomeIcon icon={vsCircleLarge} className=\"text-white-50\" />\n <FontAwesomeIcon icon={vsLoading} className=\"text-primary\" spin />\n </div>\n );\n}\n\nexport default LoadingSpinner;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,aAAa,EAAEC,SAAS,QAAQ,kBAAkB;AAAC;AAQ5D,SAASC,cAAc,OAGc;EAAA,IAHb;IACtBC,SAAS,GAAG,EAAE;IACd,aAAa,EAAEC;EACI,CAAC;EACpB,oBACE;IACE,SAAS,EAAEN,UAAU,CAAC,2BAA2B,EAAEK,SAAS,CAAE;IAC9D,eAAaC;EAAW,gBAExB,oBAAC,eAAe;IAAC,IAAI,EAAEJ,aAAc;IAAC,SAAS,EAAC;EAAe,EAAG,eAClE,oBAAC,eAAe;IAAC,IAAI,EAAEC,SAAU;IAAC,SAAS,EAAC,cAAc;IAAC,IAAI;EAAA,EAAG,CAC9D;AAEV;AAEA,eAAeC,cAAc"}
1
+ {"version":3,"file":"LoadingSpinner.js","names":["React","classNames","FontAwesomeIcon","vsCircleLarge","vsLoading","LoadingSpinner","className","dataTestId"],"sources":["../src/LoadingSpinner.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCircleLarge, vsLoading } from '@deephaven/icons';\nimport './LoadingSpinner.scss';\n\ntype LoadingSpinnerProps = {\n className?: string;\n 'data-testid'?: string;\n};\n\nfunction LoadingSpinner({\n className = '',\n 'data-testid': dataTestId,\n}: LoadingSpinnerProps): JSX.Element {\n return (\n <div\n className={classNames('loading-spinner fa-layers', className)}\n data-testid={dataTestId}\n >\n <FontAwesomeIcon icon={vsCircleLarge} className=\"text-white-50\" />\n <FontAwesomeIcon icon={vsLoading} className=\"text-primary\" spin />\n </div>\n );\n}\n\nexport default LoadingSpinner;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,aAAa,EAAEC,SAAS,QAAQ,kBAAkB;AAAC;AAAA;AAAA;AAQ5D,SAASC,cAAc,OAGc;EAAA,IAHb;IACtBC,SAAS,GAAG,EAAE;IACd,aAAa,EAAEC;EACI,CAAC;EACpB,oBACE;IACE,SAAS,EAAEN,UAAU,CAAC,2BAA2B,EAAEK,SAAS,CAAE;IAC9D,eAAaC,UAAW;IAAA,wBAExB,KAAC,eAAe;MAAC,IAAI,EAAEJ,aAAc;MAAC,SAAS,EAAC;IAAe,EAAG,eAClE,KAAC,eAAe;MAAC,IAAI,EAAEC,SAAU;MAAC,SAAS,EAAC,cAAc;MAAC,IAAI;IAAA,EAAG;EAAA,EAC9D;AAEV;AAEA,eAAeC,cAAc"}
@@ -9,6 +9,7 @@ import Log from '@deephaven/log';
9
9
  import { useForwardedRef } from '@deephaven/react-hooks';
10
10
  import { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING, fillToLength, trimTrailingMask } from "./MaskedInputUtils.js";
11
11
  import "./MaskedInput.css";
12
+ import { jsx as _jsx } from "react/jsx-runtime";
12
13
  var log = Log.module('MaskedInput');
13
14
  var SELECTION_DIRECTION = {
14
15
  FORWARD: 'forward',
@@ -354,7 +355,7 @@ var MaskedInput = /*#__PURE__*/React.forwardRef((props, ref) => {
354
355
  }
355
356
 
356
357
  // Need to use "text" type so we can apply a pattern and make selection properly
357
- return /*#__PURE__*/React.createElement("input", {
358
+ return /*#__PURE__*/_jsx("input", {
358
359
  ref: input,
359
360
  className: classNames('form-control masked-input', className),
360
361
  type: "text",
@@ -1 +1 @@
1
- {"version":3,"file":"MaskedInput.js","names":["React","useMemo","useEffect","useCallback","classNames","Log","useForwardedRef","DEFAULT_GET_PREFERRED_REPLACEMENT_STRING","fillToLength","trimTrailingMask","log","module","SELECTION_DIRECTION","FORWARD","BACKWARD","NONE","FIXED_WIDTH_SPACE","MaskedInput","forwardRef","props","ref","className","example","getNextSegmentValue","range","delta","segmentValue","getPreferredReplacementString","onChange","onSelect","onSubmit","pattern","placeholder","selection","value","onFocus","onBlur","dataTestId","input","examples","Array","isArray","emptyMask","replace","setSelectedSegment","debug","selectionStart","selectionEnd","selectionDirection","current","setSelectionRange","getSegment","cursorPosition","testValue","length","i","test","charAt","fillValue","checkValue","exampleValue","filledValue","concat","substring","isValid","patternRegex","RegExp","nextSegment","position","currentSegment","nextPosition","previousSegment","previousPosition","nextSegmentValue","segment","newSegmentValue","newValue","handleSelect","event","target","error","debug2","nativeEvent","type","newSelection","handleSelectCapture","preventDefault","stopPropagation","handleArrowKey","key","handleKeyDown","startsWith","trimmedValue","altKey","metaKey","ctrlKey","newChars","from","Set","toUpperCase","toLowerCase","newChar","maxReplaceIndex","replaceIndex","newSelectionStart","nextSegmentSelection","undefined","defaultProps"],"sources":["../src/MaskedInput.tsx"],"sourcesContent":["import React, { useMemo, useEffect, useCallback, KeyboardEvent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { useForwardedRef } from '@deephaven/react-hooks';\nimport {\n DEFAULT_GET_PREFERRED_REPLACEMENT_STRING,\n fillToLength,\n trimTrailingMask,\n} from './MaskedInputUtils';\nimport './MaskedInput.scss';\n\nconst log = Log.module('MaskedInput');\n\nconst SELECTION_DIRECTION = {\n FORWARD: 'forward',\n BACKWARD: 'backward',\n NONE: 'none',\n} as const;\n\n/**\n * Special space character that's the same size as tabular numbers\n * https://www.fileformat.info/info/unicode/char/2007/index.htm\n */\nconst FIXED_WIDTH_SPACE = '\\u2007';\n\nexport type SelectionSegment = {\n selectionStart: number;\n selectionEnd: number;\n selectionDirection?: (typeof SELECTION_DIRECTION)[keyof typeof SELECTION_DIRECTION];\n};\n\ntype MaskedInputProps = {\n /** An extra class name to add to the component */\n className?: string;\n /** The regex pattern this masked input must match */\n pattern: string;\n /** Input placeholder */\n placeholder?: string;\n /** The current value to display */\n value: string;\n /** One or more examples of valid values. Used when deciding if next keystroke is valid (as rest of the current value may be incomplete) */\n example: string | string[];\n /** The current selection to use for the input */\n selection?: SelectionSegment;\n /** Called when the value changes. Note the value may still be incomplete. */\n onChange?(value: string): void;\n /** Called when selection changes */\n onSelect?(segment: SelectionSegment): void;\n /** Called when enter is pressed */\n onSubmit?(event?: KeyboardEvent<HTMLInputElement>): void;\n /** Retrieve the next value for a provided segment */\n getNextSegmentValue?(\n segment: SelectionSegment,\n delta: number,\n segmentValue: string,\n value: string\n ): string;\n getPreferredReplacementString?(\n value: string,\n replaceIndex: number,\n replaceChar: string,\n selectionStart: number,\n selectionEnd: number\n ): string;\n onFocus?: React.FocusEventHandler;\n onBlur?: React.FocusEventHandler;\n\n 'data-testid'?: string;\n};\n\n/**\n * A masked input for entering data from a template.\n * Won't work by itself, must use within another component and handle updating the value/selection.\n */\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\n// eslint-disable-next-line react/display-name\nconst MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (props: MaskedInputProps, ref) => {\n const {\n className,\n example,\n getNextSegmentValue = (range, delta, segmentValue) => segmentValue,\n getPreferredReplacementString = DEFAULT_GET_PREFERRED_REPLACEMENT_STRING,\n onChange = () => false,\n onSelect = () => false,\n onSubmit,\n pattern,\n placeholder,\n selection,\n value,\n onFocus = () => false,\n onBlur = () => false,\n 'data-testid': dataTestId,\n } = props;\n const input = useForwardedRef(ref);\n const examples = useMemo(\n () => (Array.isArray(example) ? example : [example]),\n [example]\n );\n const emptyMask = useMemo(\n () => examples[0].replace(/[a-zA-Z0-9]/g, FIXED_WIDTH_SPACE),\n [examples]\n );\n\n useEffect(\n function setSelectedSegment() {\n if (selection != null) {\n log.debug('setting selection...', selection);\n const { selectionStart, selectionEnd, selectionDirection } =\n selection;\n input.current?.setSelectionRange(\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n log.debug('selection set!');\n }\n },\n [selection, input]\n );\n\n /**\n * Returns the selection range for the segment at the given cursor position\n * @param cursorPosition The current position of the cursor\n */\n const getSegment = useCallback(\n (cursorPosition: number) => {\n let selectionStart = cursorPosition;\n let selectionEnd = cursorPosition;\n const testValue = examples.length > 0 ? examples[0] : value;\n\n for (let i = selectionStart - 1; i >= 0; i -= 1) {\n if (!/[a-zA-Z0-9]/g.test(testValue.charAt(i))) {\n break;\n }\n\n selectionStart = i;\n }\n\n for (let i = selectionEnd; i < testValue.length; i += 1) {\n if (!/[a-zA-Z0-9]/g.test(testValue.charAt(i))) {\n break;\n }\n\n selectionEnd = i + 1;\n }\n\n const selectionDirection =\n selectionStart === selectionEnd\n ? SELECTION_DIRECTION.NONE\n : SELECTION_DIRECTION.BACKWARD;\n\n return {\n selectionStart,\n selectionEnd,\n selectionDirection,\n };\n },\n [examples, value]\n );\n\n /**\n * Replaces all blank spaces and everything after the current cursor position with the example value\n * @param checkValue The value to check/fill in\n * @param exampleValue The example to fill in the value from\n * @param cursorPosition The cursor position\n * @returns The filled in value\n */\n function fillValue(\n checkValue: string,\n exampleValue: string,\n cursorPosition = checkValue.length\n ): string {\n let filledValue = '';\n for (let i = 0; i < cursorPosition; i += 1) {\n if (checkValue.charAt(i) !== FIXED_WIDTH_SPACE) {\n filledValue = filledValue.concat(checkValue[i]);\n } else {\n filledValue = filledValue.concat(exampleValue[i]);\n }\n }\n filledValue = filledValue.concat(exampleValue.substring(cursorPosition));\n\n return filledValue;\n }\n\n /**\n * Checks if a given `value` is valid up until the `cursorPosition`.\n * Uses the examples to build the rest of the string\n * @param checkValue The value to check validity of\n * @param cursorPosition The position of the cursor to check up to\n */\n function isValid(\n checkValue: string,\n cursorPosition = checkValue.length\n ): boolean {\n const patternRegex = new RegExp(`^${pattern}$`);\n if (patternRegex.test(checkValue)) {\n return true;\n }\n\n for (let i = 0; i < examples.length; i += 1) {\n const filledValue = fillValue(checkValue, examples[i], cursorPosition);\n if (patternRegex.test(filledValue)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns the next segment after the given position\n * @param position The cursor position to start at\n * @returns The new selection range\n */\n function nextSegment(position: number): SelectionSegment {\n const currentSegment = getSegment(position);\n const nextPosition = currentSegment.selectionEnd + 1;\n if (nextPosition >= value.length) {\n return currentSegment;\n }\n\n return getSegment(nextPosition);\n }\n\n /**\n * Returns the previous segment before the given position\n * @param position The cursor position to start at\n * @returns The new selection range\n */\n function previousSegment(position: number): SelectionSegment {\n const currentSegment = getSegment(position);\n const previousPosition = currentSegment.selectionStart - 1;\n if (previousPosition <= 0) {\n return currentSegment;\n }\n\n return getSegment(previousPosition);\n }\n\n function nextSegmentValue(position: number, delta: number): void {\n const segment = getSegment(position);\n const segmentValue = value.substring(\n segment.selectionStart,\n segment.selectionEnd\n );\n const newSegmentValue = getNextSegmentValue(\n segment,\n delta,\n segmentValue,\n value\n );\n const newValue =\n value.substring(0, segment.selectionStart) +\n newSegmentValue +\n value.substring(segment.selectionEnd);\n if (isValid(newValue, segment.selectionEnd)) {\n onChange(newValue);\n onSelect(segment);\n }\n }\n\n const handleSelect = useCallback(\n (event: React.UIEvent<HTMLInputElement>) => {\n const {\n selectionStart = 0,\n selectionEnd = 0,\n selectionDirection = 'none',\n } = event.target as HTMLInputElement;\n\n if (\n selectionStart === null ||\n selectionEnd === null ||\n selectionDirection === null\n ) {\n log.error(\n 'Selection attempted on non-text input element',\n event.target\n );\n return;\n }\n\n log.debug2(\n 'handleSelect',\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n if (\n selection != null &&\n selectionStart === selection.selectionStart &&\n selectionEnd === selection.selectionEnd\n ) {\n return;\n }\n if (\n selection != null &&\n selectionStart === value.length &&\n selectionEnd === value.length &&\n event.nativeEvent.type !== 'mouseup'\n ) {\n // React triggers onSelect event with the cursor at the end of the input content\n // when the component is rendered at a different location in the DOM,\n // i.e. when start/end times switch places in the TimeSlider.\n // Ignore this event and reset the selection to its previous state.\n onSelect({ ...selection });\n return;\n }\n if (selectionStart === selectionEnd) {\n const newSelection = getSegment(selectionStart);\n log.debug(\n 'Selection segment from ',\n selectionStart,\n selectionEnd,\n '=>',\n newSelection\n );\n onSelect(newSelection);\n } else {\n onSelect({ selectionStart, selectionEnd, selectionDirection });\n }\n },\n [getSegment, onSelect, selection, value]\n );\n\n const handleSelectCapture = useCallback(\n (event: React.UIEvent<HTMLInputElement>) => {\n if (!input.current) {\n return;\n }\n log.debug('handleSelectCapture', event);\n const selectionStart = input.current.selectionStart ?? 0;\n if (\n selectionStart === value.length &&\n selection != null &&\n selectionStart !== selection.selectionStart\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [input, selection, value]\n );\n\n function handleArrowKey(event: React.KeyboardEvent<HTMLInputElement>) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!input.current) {\n return;\n }\n\n const { key } = event;\n const { selectionStart = 0, selectionEnd = 0 } = input.current;\n if (selectionStart === null || selectionEnd === null) {\n log.error(\n 'Selection arrow nvaigation attempted on non-text input element',\n event.target\n );\n return;\n }\n\n if (key === 'ArrowLeft') {\n onSelect(previousSegment(selectionStart));\n } else if (key === 'ArrowRight') {\n onSelect(nextSegment(selectionEnd));\n } else if (key === 'ArrowUp') {\n nextSegmentValue(selectionStart, -1);\n } else if (key === 'ArrowDown') {\n nextSegmentValue(selectionStart, 1);\n }\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (!input.current) {\n return;\n }\n log.debug('handleKeyDown', event);\n const { key } = event;\n const { selectionStart = 0, selectionEnd = 0 } = input.current;\n if (selectionStart === null || selectionEnd === null) {\n log.error(\n 'Selection key event on non-text input element',\n event.target\n );\n return;\n }\n if (key === 'Enter') {\n onSubmit?.(event);\n return;\n }\n if (key.startsWith('Arrow')) {\n handleArrowKey(event);\n return;\n }\n\n if (key === 'Delete' || key === 'Backspace') {\n event.preventDefault();\n event.stopPropagation();\n\n // Deleting at the end of the value\n if (selectionEnd >= trimTrailingMask(value, emptyMask).length) {\n const newValue = value.substring(\n 0,\n // Delete whole selection or just the char before the cursor\n selectionStart === selectionEnd\n ? selectionStart - 1\n : selectionStart\n );\n const trimmedValue = trimTrailingMask(newValue, emptyMask);\n if (trimmedValue !== value) {\n onChange(trimmedValue);\n onSelect({\n selectionStart: trimmedValue.length,\n selectionEnd: trimmedValue.length,\n selectionDirection: SELECTION_DIRECTION.NONE,\n });\n }\n return;\n }\n\n if (selectionStart !== selectionEnd) {\n // Replace all non-masked characters with blanks, set selection to start\n const newValue =\n value.substring(0, selectionStart) +\n value\n .substring(selectionStart, selectionEnd)\n .replace(/[a-zA-Z0-9]/g, FIXED_WIDTH_SPACE) +\n value.substring(selectionEnd);\n log.debug(\n 'Range ',\n selectionStart,\n selectionEnd,\n 'deleted, setting value',\n newValue\n );\n\n onChange(newValue);\n onSelect({\n selectionStart,\n selectionEnd: selectionStart,\n selectionDirection: SELECTION_DIRECTION.NONE,\n });\n } else if (selectionStart > 0) {\n for (let i = selectionStart - 1; i >= 0; i -= 1) {\n // Only replace non placeholder text\n const newValue =\n value.substring(0, i) +\n value\n .substring(i, selectionStart)\n .replace(/[a-zA-Z0-9]/g, FIXED_WIDTH_SPACE) +\n value.substring(selectionStart);\n\n if (newValue !== value) {\n onChange(newValue);\n onSelect({\n selectionStart: i,\n selectionEnd: i,\n selectionDirection: SELECTION_DIRECTION.NONE,\n });\n return;\n }\n }\n }\n\n return;\n }\n\n if (event.altKey || event.metaKey || event.ctrlKey || key.length > 1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n // Get the different permutations of the character they entered, remove duplicates\n const newChars = Array.from(\n new Set([key, key.toUpperCase(), key.toLowerCase()])\n );\n for (let i = 0; i < newChars.length; i += 1) {\n const newChar = newChars[i];\n\n // If they're typing an alphanumeric character, be smart and allow it to jump ahead\n const maxReplaceIndex = /[a-zA-Z0-9]/g.test(newChar)\n ? examples[0].length - 1\n : selectionStart;\n for (\n let replaceIndex = selectionStart;\n replaceIndex <= maxReplaceIndex;\n replaceIndex += 1\n ) {\n // Fill with the example chars if necessary\n const filledValue = fillToLength(\n value,\n examples[0],\n replaceIndex + 1\n );\n const newValue = getPreferredReplacementString(\n filledValue,\n replaceIndex,\n newChar,\n selectionStart,\n selectionEnd\n );\n if (isValid(newValue, replaceIndex + 1)) {\n const currentSegment = getSegment(replaceIndex);\n const newSelectionStart = replaceIndex + 1;\n let newSelection: SelectionSegment = {\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionStart,\n selectionDirection: SELECTION_DIRECTION.NONE,\n };\n if (newSelectionStart >= currentSegment.selectionEnd) {\n const nextSegmentSelection = nextSegment(replaceIndex);\n if (\n nextSegmentSelection.selectionStart !==\n currentSegment.selectionStart\n ) {\n newSelection = nextSegmentSelection;\n }\n }\n log.debug('handleKeyDown', key, '=>', newValue, newSelection);\n onChange(newValue);\n onSelect(newSelection);\n return;\n }\n }\n }\n }\n\n // Need to use \"text\" type so we can apply a pattern and make selection properly\n return (\n <input\n ref={input}\n className={classNames('form-control masked-input', className)}\n type=\"text\"\n pattern={pattern}\n placeholder={placeholder}\n value={value}\n onChange={() => undefined}\n onKeyDown={handleKeyDown}\n onSelect={handleSelect}\n onSelectCapture={handleSelectCapture}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={dataTestId}\n />\n );\n }\n);\n\nMaskedInput.defaultProps = {\n className: '',\n placeholder: undefined,\n onChange(): void {\n // no-op\n },\n onSelect(): void {\n // no-op\n },\n getNextSegmentValue: (range, delta, segmentValue) => segmentValue,\n getPreferredReplacementString: DEFAULT_GET_PREFERRED_REPLACEMENT_STRING,\n selection: undefined,\n onFocus(): void {\n // no-op\n },\n onBlur(): void {\n // no-op\n },\n 'data-testid': undefined,\n};\n\nexport default MaskedInput;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MaskedInput.js","names":["React","useMemo","useEffect","useCallback","classNames","Log","useForwardedRef","DEFAULT_GET_PREFERRED_REPLACEMENT_STRING","fillToLength","trimTrailingMask","log","module","SELECTION_DIRECTION","FORWARD","BACKWARD","NONE","FIXED_WIDTH_SPACE","MaskedInput","forwardRef","props","ref","className","example","getNextSegmentValue","range","delta","segmentValue","getPreferredReplacementString","onChange","onSelect","onSubmit","pattern","placeholder","selection","value","onFocus","onBlur","dataTestId","input","examples","Array","isArray","emptyMask","replace","setSelectedSegment","debug","selectionStart","selectionEnd","selectionDirection","current","setSelectionRange","getSegment","cursorPosition","testValue","length","i","test","charAt","fillValue","checkValue","exampleValue","filledValue","concat","substring","isValid","patternRegex","RegExp","nextSegment","position","currentSegment","nextPosition","previousSegment","previousPosition","nextSegmentValue","segment","newSegmentValue","newValue","handleSelect","event","target","error","debug2","nativeEvent","type","newSelection","handleSelectCapture","preventDefault","stopPropagation","handleArrowKey","key","handleKeyDown","startsWith","trimmedValue","altKey","metaKey","ctrlKey","newChars","from","Set","toUpperCase","toLowerCase","newChar","maxReplaceIndex","replaceIndex","newSelectionStart","nextSegmentSelection","undefined","defaultProps"],"sources":["../src/MaskedInput.tsx"],"sourcesContent":["import React, { useMemo, useEffect, useCallback, KeyboardEvent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { useForwardedRef } from '@deephaven/react-hooks';\nimport {\n DEFAULT_GET_PREFERRED_REPLACEMENT_STRING,\n fillToLength,\n trimTrailingMask,\n} from './MaskedInputUtils';\nimport './MaskedInput.scss';\n\nconst log = Log.module('MaskedInput');\n\nconst SELECTION_DIRECTION = {\n FORWARD: 'forward',\n BACKWARD: 'backward',\n NONE: 'none',\n} as const;\n\n/**\n * Special space character that's the same size as tabular numbers\n * https://www.fileformat.info/info/unicode/char/2007/index.htm\n */\nconst FIXED_WIDTH_SPACE = '\\u2007';\n\nexport type SelectionSegment = {\n selectionStart: number;\n selectionEnd: number;\n selectionDirection?: (typeof SELECTION_DIRECTION)[keyof typeof SELECTION_DIRECTION];\n};\n\ntype MaskedInputProps = {\n /** An extra class name to add to the component */\n className?: string;\n /** The regex pattern this masked input must match */\n pattern: string;\n /** Input placeholder */\n placeholder?: string;\n /** The current value to display */\n value: string;\n /** One or more examples of valid values. Used when deciding if next keystroke is valid (as rest of the current value may be incomplete) */\n example: string | string[];\n /** The current selection to use for the input */\n selection?: SelectionSegment;\n /** Called when the value changes. Note the value may still be incomplete. */\n onChange?(value: string): void;\n /** Called when selection changes */\n onSelect?(segment: SelectionSegment): void;\n /** Called when enter is pressed */\n onSubmit?(event?: KeyboardEvent<HTMLInputElement>): void;\n /** Retrieve the next value for a provided segment */\n getNextSegmentValue?(\n segment: SelectionSegment,\n delta: number,\n segmentValue: string,\n value: string\n ): string;\n getPreferredReplacementString?(\n value: string,\n replaceIndex: number,\n replaceChar: string,\n selectionStart: number,\n selectionEnd: number\n ): string;\n onFocus?: React.FocusEventHandler;\n onBlur?: React.FocusEventHandler;\n\n 'data-testid'?: string;\n};\n\n/**\n * A masked input for entering data from a template.\n * Won't work by itself, must use within another component and handle updating the value/selection.\n */\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\n// eslint-disable-next-line react/display-name\nconst MaskedInput = React.forwardRef<HTMLInputElement, MaskedInputProps>(\n (props: MaskedInputProps, ref) => {\n const {\n className,\n example,\n getNextSegmentValue = (range, delta, segmentValue) => segmentValue,\n getPreferredReplacementString = DEFAULT_GET_PREFERRED_REPLACEMENT_STRING,\n onChange = () => false,\n onSelect = () => false,\n onSubmit,\n pattern,\n placeholder,\n selection,\n value,\n onFocus = () => false,\n onBlur = () => false,\n 'data-testid': dataTestId,\n } = props;\n const input = useForwardedRef(ref);\n const examples = useMemo(\n () => (Array.isArray(example) ? example : [example]),\n [example]\n );\n const emptyMask = useMemo(\n () => examples[0].replace(/[a-zA-Z0-9]/g, FIXED_WIDTH_SPACE),\n [examples]\n );\n\n useEffect(\n function setSelectedSegment() {\n if (selection != null) {\n log.debug('setting selection...', selection);\n const { selectionStart, selectionEnd, selectionDirection } =\n selection;\n input.current?.setSelectionRange(\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n log.debug('selection set!');\n }\n },\n [selection, input]\n );\n\n /**\n * Returns the selection range for the segment at the given cursor position\n * @param cursorPosition The current position of the cursor\n */\n const getSegment = useCallback(\n (cursorPosition: number) => {\n let selectionStart = cursorPosition;\n let selectionEnd = cursorPosition;\n const testValue = examples.length > 0 ? examples[0] : value;\n\n for (let i = selectionStart - 1; i >= 0; i -= 1) {\n if (!/[a-zA-Z0-9]/g.test(testValue.charAt(i))) {\n break;\n }\n\n selectionStart = i;\n }\n\n for (let i = selectionEnd; i < testValue.length; i += 1) {\n if (!/[a-zA-Z0-9]/g.test(testValue.charAt(i))) {\n break;\n }\n\n selectionEnd = i + 1;\n }\n\n const selectionDirection =\n selectionStart === selectionEnd\n ? SELECTION_DIRECTION.NONE\n : SELECTION_DIRECTION.BACKWARD;\n\n return {\n selectionStart,\n selectionEnd,\n selectionDirection,\n };\n },\n [examples, value]\n );\n\n /**\n * Replaces all blank spaces and everything after the current cursor position with the example value\n * @param checkValue The value to check/fill in\n * @param exampleValue The example to fill in the value from\n * @param cursorPosition The cursor position\n * @returns The filled in value\n */\n function fillValue(\n checkValue: string,\n exampleValue: string,\n cursorPosition = checkValue.length\n ): string {\n let filledValue = '';\n for (let i = 0; i < cursorPosition; i += 1) {\n if (checkValue.charAt(i) !== FIXED_WIDTH_SPACE) {\n filledValue = filledValue.concat(checkValue[i]);\n } else {\n filledValue = filledValue.concat(exampleValue[i]);\n }\n }\n filledValue = filledValue.concat(exampleValue.substring(cursorPosition));\n\n return filledValue;\n }\n\n /**\n * Checks if a given `value` is valid up until the `cursorPosition`.\n * Uses the examples to build the rest of the string\n * @param checkValue The value to check validity of\n * @param cursorPosition The position of the cursor to check up to\n */\n function isValid(\n checkValue: string,\n cursorPosition = checkValue.length\n ): boolean {\n const patternRegex = new RegExp(`^${pattern}$`);\n if (patternRegex.test(checkValue)) {\n return true;\n }\n\n for (let i = 0; i < examples.length; i += 1) {\n const filledValue = fillValue(checkValue, examples[i], cursorPosition);\n if (patternRegex.test(filledValue)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns the next segment after the given position\n * @param position The cursor position to start at\n * @returns The new selection range\n */\n function nextSegment(position: number): SelectionSegment {\n const currentSegment = getSegment(position);\n const nextPosition = currentSegment.selectionEnd + 1;\n if (nextPosition >= value.length) {\n return currentSegment;\n }\n\n return getSegment(nextPosition);\n }\n\n /**\n * Returns the previous segment before the given position\n * @param position The cursor position to start at\n * @returns The new selection range\n */\n function previousSegment(position: number): SelectionSegment {\n const currentSegment = getSegment(position);\n const previousPosition = currentSegment.selectionStart - 1;\n if (previousPosition <= 0) {\n return currentSegment;\n }\n\n return getSegment(previousPosition);\n }\n\n function nextSegmentValue(position: number, delta: number): void {\n const segment = getSegment(position);\n const segmentValue = value.substring(\n segment.selectionStart,\n segment.selectionEnd\n );\n const newSegmentValue = getNextSegmentValue(\n segment,\n delta,\n segmentValue,\n value\n );\n const newValue =\n value.substring(0, segment.selectionStart) +\n newSegmentValue +\n value.substring(segment.selectionEnd);\n if (isValid(newValue, segment.selectionEnd)) {\n onChange(newValue);\n onSelect(segment);\n }\n }\n\n const handleSelect = useCallback(\n (event: React.UIEvent<HTMLInputElement>) => {\n const {\n selectionStart = 0,\n selectionEnd = 0,\n selectionDirection = 'none',\n } = event.target as HTMLInputElement;\n\n if (\n selectionStart === null ||\n selectionEnd === null ||\n selectionDirection === null\n ) {\n log.error(\n 'Selection attempted on non-text input element',\n event.target\n );\n return;\n }\n\n log.debug2(\n 'handleSelect',\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n if (\n selection != null &&\n selectionStart === selection.selectionStart &&\n selectionEnd === selection.selectionEnd\n ) {\n return;\n }\n if (\n selection != null &&\n selectionStart === value.length &&\n selectionEnd === value.length &&\n event.nativeEvent.type !== 'mouseup'\n ) {\n // React triggers onSelect event with the cursor at the end of the input content\n // when the component is rendered at a different location in the DOM,\n // i.e. when start/end times switch places in the TimeSlider.\n // Ignore this event and reset the selection to its previous state.\n onSelect({ ...selection });\n return;\n }\n if (selectionStart === selectionEnd) {\n const newSelection = getSegment(selectionStart);\n log.debug(\n 'Selection segment from ',\n selectionStart,\n selectionEnd,\n '=>',\n newSelection\n );\n onSelect(newSelection);\n } else {\n onSelect({ selectionStart, selectionEnd, selectionDirection });\n }\n },\n [getSegment, onSelect, selection, value]\n );\n\n const handleSelectCapture = useCallback(\n (event: React.UIEvent<HTMLInputElement>) => {\n if (!input.current) {\n return;\n }\n log.debug('handleSelectCapture', event);\n const selectionStart = input.current.selectionStart ?? 0;\n if (\n selectionStart === value.length &&\n selection != null &&\n selectionStart !== selection.selectionStart\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [input, selection, value]\n );\n\n function handleArrowKey(event: React.KeyboardEvent<HTMLInputElement>) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!input.current) {\n return;\n }\n\n const { key } = event;\n const { selectionStart = 0, selectionEnd = 0 } = input.current;\n if (selectionStart === null || selectionEnd === null) {\n log.error(\n 'Selection arrow nvaigation attempted on non-text input element',\n event.target\n );\n return;\n }\n\n if (key === 'ArrowLeft') {\n onSelect(previousSegment(selectionStart));\n } else if (key === 'ArrowRight') {\n onSelect(nextSegment(selectionEnd));\n } else if (key === 'ArrowUp') {\n nextSegmentValue(selectionStart, -1);\n } else if (key === 'ArrowDown') {\n nextSegmentValue(selectionStart, 1);\n }\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (!input.current) {\n return;\n }\n log.debug('handleKeyDown', event);\n const { key } = event;\n const { selectionStart = 0, selectionEnd = 0 } = input.current;\n if (selectionStart === null || selectionEnd === null) {\n log.error(\n 'Selection key event on non-text input element',\n event.target\n );\n return;\n }\n if (key === 'Enter') {\n onSubmit?.(event);\n return;\n }\n if (key.startsWith('Arrow')) {\n handleArrowKey(event);\n return;\n }\n\n if (key === 'Delete' || key === 'Backspace') {\n event.preventDefault();\n event.stopPropagation();\n\n // Deleting at the end of the value\n if (selectionEnd >= trimTrailingMask(value, emptyMask).length) {\n const newValue = value.substring(\n 0,\n // Delete whole selection or just the char before the cursor\n selectionStart === selectionEnd\n ? selectionStart - 1\n : selectionStart\n );\n const trimmedValue = trimTrailingMask(newValue, emptyMask);\n if (trimmedValue !== value) {\n onChange(trimmedValue);\n onSelect({\n selectionStart: trimmedValue.length,\n selectionEnd: trimmedValue.length,\n selectionDirection: SELECTION_DIRECTION.NONE,\n });\n }\n return;\n }\n\n if (selectionStart !== selectionEnd) {\n // Replace all non-masked characters with blanks, set selection to start\n const newValue =\n value.substring(0, selectionStart) +\n value\n .substring(selectionStart, selectionEnd)\n .replace(/[a-zA-Z0-9]/g, FIXED_WIDTH_SPACE) +\n value.substring(selectionEnd);\n log.debug(\n 'Range ',\n selectionStart,\n selectionEnd,\n 'deleted, setting value',\n newValue\n );\n\n onChange(newValue);\n onSelect({\n selectionStart,\n selectionEnd: selectionStart,\n selectionDirection: SELECTION_DIRECTION.NONE,\n });\n } else if (selectionStart > 0) {\n for (let i = selectionStart - 1; i >= 0; i -= 1) {\n // Only replace non placeholder text\n const newValue =\n value.substring(0, i) +\n value\n .substring(i, selectionStart)\n .replace(/[a-zA-Z0-9]/g, FIXED_WIDTH_SPACE) +\n value.substring(selectionStart);\n\n if (newValue !== value) {\n onChange(newValue);\n onSelect({\n selectionStart: i,\n selectionEnd: i,\n selectionDirection: SELECTION_DIRECTION.NONE,\n });\n return;\n }\n }\n }\n\n return;\n }\n\n if (event.altKey || event.metaKey || event.ctrlKey || key.length > 1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n // Get the different permutations of the character they entered, remove duplicates\n const newChars = Array.from(\n new Set([key, key.toUpperCase(), key.toLowerCase()])\n );\n for (let i = 0; i < newChars.length; i += 1) {\n const newChar = newChars[i];\n\n // If they're typing an alphanumeric character, be smart and allow it to jump ahead\n const maxReplaceIndex = /[a-zA-Z0-9]/g.test(newChar)\n ? examples[0].length - 1\n : selectionStart;\n for (\n let replaceIndex = selectionStart;\n replaceIndex <= maxReplaceIndex;\n replaceIndex += 1\n ) {\n // Fill with the example chars if necessary\n const filledValue = fillToLength(\n value,\n examples[0],\n replaceIndex + 1\n );\n const newValue = getPreferredReplacementString(\n filledValue,\n replaceIndex,\n newChar,\n selectionStart,\n selectionEnd\n );\n if (isValid(newValue, replaceIndex + 1)) {\n const currentSegment = getSegment(replaceIndex);\n const newSelectionStart = replaceIndex + 1;\n let newSelection: SelectionSegment = {\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionStart,\n selectionDirection: SELECTION_DIRECTION.NONE,\n };\n if (newSelectionStart >= currentSegment.selectionEnd) {\n const nextSegmentSelection = nextSegment(replaceIndex);\n if (\n nextSegmentSelection.selectionStart !==\n currentSegment.selectionStart\n ) {\n newSelection = nextSegmentSelection;\n }\n }\n log.debug('handleKeyDown', key, '=>', newValue, newSelection);\n onChange(newValue);\n onSelect(newSelection);\n return;\n }\n }\n }\n }\n\n // Need to use \"text\" type so we can apply a pattern and make selection properly\n return (\n <input\n ref={input}\n className={classNames('form-control masked-input', className)}\n type=\"text\"\n pattern={pattern}\n placeholder={placeholder}\n value={value}\n onChange={() => undefined}\n onKeyDown={handleKeyDown}\n onSelect={handleSelect}\n onSelectCapture={handleSelectCapture}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={dataTestId}\n />\n );\n }\n);\n\nMaskedInput.defaultProps = {\n className: '',\n placeholder: undefined,\n onChange(): void {\n // no-op\n },\n onSelect(): void {\n // no-op\n },\n getNextSegmentValue: (range, delta, segmentValue) => segmentValue,\n getPreferredReplacementString: DEFAULT_GET_PREFERRED_REPLACEMENT_STRING,\n selection: undefined,\n onFocus(): void {\n // no-op\n },\n onBlur(): void {\n // no-op\n },\n 'data-testid': undefined,\n};\n\nexport default MaskedInput;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,OAAO,EAAEC,SAAS,EAAEC,WAAW,QAAuB,OAAO;AAC7E,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,QAAQ,wBAAwB;AAAC,SAEvDC,wCAAwC,EACxCC,YAAY,EACZC,gBAAgB;AAAA;AAAA;AAIlB,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAM,CAAC,aAAa,CAAC;AAErC,IAAMC,mBAAmB,GAAG;EAC1BC,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA;AACA;AACA;AACA,IAAMC,iBAAiB,GAAG,QAAQ;AA+ClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,WAAW,gBAAGjB,KAAK,CAACkB,UAAU,CAClC,CAACC,KAAuB,EAAEC,GAAG,KAAK;EAChC,IAAM;IACJC,SAAS;IACTC,OAAO;IACPC,mBAAmB,GAAG,CAACC,KAAK,EAAEC,KAAK,EAAEC,YAAY,KAAKA,YAAY;IAClEC,6BAA6B,GAAGpB,wCAAwC;IACxEqB,QAAQ,GAAG,MAAM,KAAK;IACtBC,QAAQ,GAAG,MAAM,KAAK;IACtBC,QAAQ;IACRC,OAAO;IACPC,WAAW;IACXC,SAAS;IACTC,KAAK;IACLC,OAAO,GAAG,MAAM,KAAK;IACrBC,MAAM,GAAG,MAAM,KAAK;IACpB,aAAa,EAAEC;EACjB,CAAC,GAAGlB,KAAK;EACT,IAAMmB,KAAK,GAAGhC,eAAe,CAACc,GAAG,CAAC;EAClC,IAAMmB,QAAQ,GAAGtC,OAAO,CACtB,MAAOuC,KAAK,CAACC,OAAO,CAACnB,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAE,EACpD,CAACA,OAAO,CAAC,CACV;EACD,IAAMoB,SAAS,GAAGzC,OAAO,CACvB,MAAMsC,QAAQ,CAAC,CAAC,CAAC,CAACI,OAAO,CAAC,cAAc,EAAE3B,iBAAiB,CAAC,EAC5D,CAACuB,QAAQ,CAAC,CACX;EAEDrC,SAAS,CACP,SAAS0C,kBAAkB,GAAG;IAC5B,IAAIX,SAAS,IAAI,IAAI,EAAE;MAAA;MACrBvB,GAAG,CAACmC,KAAK,CAAC,sBAAsB,EAAEZ,SAAS,CAAC;MAC5C,IAAM;QAAEa,cAAc,EAAdA,eAAc;QAAEC,YAAY,EAAZA,aAAY;QAAEC;MAAmB,CAAC,GACxDf,SAAS;MACX,kBAAAK,KAAK,CAACW,OAAO,mDAAb,eAAeC,iBAAiB,CAC9BJ,eAAc,EACdC,aAAY,EACZC,kBAAkB,CACnB;MACDtC,GAAG,CAACmC,KAAK,CAAC,gBAAgB,CAAC;IAC7B;EACF,CAAC,EACD,CAACZ,SAAS,EAAEK,KAAK,CAAC,CACnB;;EAED;AACJ;AACA;AACA;EACI,IAAMa,UAAU,GAAGhD,WAAW,CAC3BiD,cAAsB,IAAK;IAC1B,IAAIN,cAAc,GAAGM,cAAc;IACnC,IAAIL,YAAY,GAAGK,cAAc;IACjC,IAAMC,SAAS,GAAGd,QAAQ,CAACe,MAAM,GAAG,CAAC,GAAGf,QAAQ,CAAC,CAAC,CAAC,GAAGL,KAAK;IAE3D,KAAK,IAAIqB,CAAC,GAAGT,cAAc,GAAG,CAAC,EAAES,CAAC,IAAI,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;MAC/C,IAAI,CAAC,cAAc,CAACC,IAAI,CAACH,SAAS,CAACI,MAAM,CAACF,CAAC,CAAC,CAAC,EAAE;QAC7C;MACF;MAEAT,cAAc,GAAGS,CAAC;IACpB;IAEA,KAAK,IAAIA,EAAC,GAAGR,YAAY,EAAEQ,EAAC,GAAGF,SAAS,CAACC,MAAM,EAAEC,EAAC,IAAI,CAAC,EAAE;MACvD,IAAI,CAAC,cAAc,CAACC,IAAI,CAACH,SAAS,CAACI,MAAM,CAACF,EAAC,CAAC,CAAC,EAAE;QAC7C;MACF;MAEAR,YAAY,GAAGQ,EAAC,GAAG,CAAC;IACtB;IAEA,IAAMP,kBAAkB,GACtBF,cAAc,KAAKC,YAAY,GAC3BnC,mBAAmB,CAACG,IAAI,GACxBH,mBAAmB,CAACE,QAAQ;IAElC,OAAO;MACLgC,cAAc;MACdC,YAAY;MACZC;IACF,CAAC;EACH,CAAC,EACD,CAACT,QAAQ,EAAEL,KAAK,CAAC,CAClB;;EAED;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAASwB,SAAS,CAChBC,UAAkB,EAClBC,YAAoB,EAEZ;IAAA,IADRR,cAAc,uEAAGO,UAAU,CAACL,MAAM;IAElC,IAAIO,WAAW,GAAG,EAAE;IACpB,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,cAAc,EAAEG,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAII,UAAU,CAACF,MAAM,CAACF,CAAC,CAAC,KAAKvC,iBAAiB,EAAE;QAC9C6C,WAAW,GAAGA,WAAW,CAACC,MAAM,CAACH,UAAU,CAACJ,CAAC,CAAC,CAAC;MACjD,CAAC,MAAM;QACLM,WAAW,GAAGA,WAAW,CAACC,MAAM,CAACF,YAAY,CAACL,CAAC,CAAC,CAAC;MACnD;IACF;IACAM,WAAW,GAAGA,WAAW,CAACC,MAAM,CAACF,YAAY,CAACG,SAAS,CAACX,cAAc,CAAC,CAAC;IAExE,OAAOS,WAAW;EACpB;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI,SAASG,OAAO,CACdL,UAAkB,EAET;IAAA,IADTP,cAAc,uEAAGO,UAAU,CAACL,MAAM;IAElC,IAAMW,YAAY,GAAG,IAAIC,MAAM,YAAKnC,OAAO,OAAI;IAC/C,IAAIkC,YAAY,CAACT,IAAI,CAACG,UAAU,CAAC,EAAE;MACjC,OAAO,IAAI;IACb;IAEA,KAAK,IAAIJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,QAAQ,CAACe,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;MAC3C,IAAMM,WAAW,GAAGH,SAAS,CAACC,UAAU,EAAEpB,QAAQ,CAACgB,CAAC,CAAC,EAAEH,cAAc,CAAC;MACtE,IAAIa,YAAY,CAACT,IAAI,CAACK,WAAW,CAAC,EAAE;QAClC,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;;EAEA;AACJ;AACA;AACA;AACA;EACI,SAASM,WAAW,CAACC,QAAgB,EAAoB;IACvD,IAAMC,cAAc,GAAGlB,UAAU,CAACiB,QAAQ,CAAC;IAC3C,IAAME,YAAY,GAAGD,cAAc,CAACtB,YAAY,GAAG,CAAC;IACpD,IAAIuB,YAAY,IAAIpC,KAAK,CAACoB,MAAM,EAAE;MAChC,OAAOe,cAAc;IACvB;IAEA,OAAOlB,UAAU,CAACmB,YAAY,CAAC;EACjC;;EAEA;AACJ;AACA;AACA;AACA;EACI,SAASC,eAAe,CAACH,QAAgB,EAAoB;IAC3D,IAAMC,cAAc,GAAGlB,UAAU,CAACiB,QAAQ,CAAC;IAC3C,IAAMI,gBAAgB,GAAGH,cAAc,CAACvB,cAAc,GAAG,CAAC;IAC1D,IAAI0B,gBAAgB,IAAI,CAAC,EAAE;MACzB,OAAOH,cAAc;IACvB;IAEA,OAAOlB,UAAU,CAACqB,gBAAgB,CAAC;EACrC;EAEA,SAASC,gBAAgB,CAACL,QAAgB,EAAE3C,KAAa,EAAQ;IAC/D,IAAMiD,OAAO,GAAGvB,UAAU,CAACiB,QAAQ,CAAC;IACpC,IAAM1C,YAAY,GAAGQ,KAAK,CAAC6B,SAAS,CAClCW,OAAO,CAAC5B,cAAc,EACtB4B,OAAO,CAAC3B,YAAY,CACrB;IACD,IAAM4B,eAAe,GAAGpD,mBAAmB,CACzCmD,OAAO,EACPjD,KAAK,EACLC,YAAY,EACZQ,KAAK,CACN;IACD,IAAM0C,QAAQ,GACZ1C,KAAK,CAAC6B,SAAS,CAAC,CAAC,EAAEW,OAAO,CAAC5B,cAAc,CAAC,GAC1C6B,eAAe,GACfzC,KAAK,CAAC6B,SAAS,CAACW,OAAO,CAAC3B,YAAY,CAAC;IACvC,IAAIiB,OAAO,CAACY,QAAQ,EAAEF,OAAO,CAAC3B,YAAY,CAAC,EAAE;MAC3CnB,QAAQ,CAACgD,QAAQ,CAAC;MAClB/C,QAAQ,CAAC6C,OAAO,CAAC;IACnB;EACF;EAEA,IAAMG,YAAY,GAAG1E,WAAW,CAC7B2E,KAAsC,IAAK;IAC1C,IAAM;MACJhC,cAAc,GAAG,CAAC;MAClBC,YAAY,GAAG,CAAC;MAChBC,kBAAkB,GAAG;IACvB,CAAC,GAAG8B,KAAK,CAACC,MAA0B;IAEpC,IACEjC,cAAc,KAAK,IAAI,IACvBC,YAAY,KAAK,IAAI,IACrBC,kBAAkB,KAAK,IAAI,EAC3B;MACAtC,GAAG,CAACsE,KAAK,CACP,+CAA+C,EAC/CF,KAAK,CAACC,MAAM,CACb;MACD;IACF;IAEArE,GAAG,CAACuE,MAAM,CACR,cAAc,EACdnC,cAAc,EACdC,YAAY,EACZC,kBAAkB,CACnB;IACD,IACEf,SAAS,IAAI,IAAI,IACjBa,cAAc,KAAKb,SAAS,CAACa,cAAc,IAC3CC,YAAY,KAAKd,SAAS,CAACc,YAAY,EACvC;MACA;IACF;IACA,IACEd,SAAS,IAAI,IAAI,IACjBa,cAAc,KAAKZ,KAAK,CAACoB,MAAM,IAC/BP,YAAY,KAAKb,KAAK,CAACoB,MAAM,IAC7BwB,KAAK,CAACI,WAAW,CAACC,IAAI,KAAK,SAAS,EACpC;MACA;MACA;MACA;MACA;MACAtD,QAAQ,mBAAMI,SAAS,EAAG;MAC1B;IACF;IACA,IAAIa,cAAc,KAAKC,YAAY,EAAE;MACnC,IAAMqC,YAAY,GAAGjC,UAAU,CAACL,cAAc,CAAC;MAC/CpC,GAAG,CAACmC,KAAK,CACP,yBAAyB,EACzBC,cAAc,EACdC,YAAY,EACZ,IAAI,EACJqC,YAAY,CACb;MACDvD,QAAQ,CAACuD,YAAY,CAAC;IACxB,CAAC,MAAM;MACLvD,QAAQ,CAAC;QAAEiB,cAAc;QAAEC,YAAY;QAAEC;MAAmB,CAAC,CAAC;IAChE;EACF,CAAC,EACD,CAACG,UAAU,EAAEtB,QAAQ,EAAEI,SAAS,EAAEC,KAAK,CAAC,CACzC;EAED,IAAMmD,mBAAmB,GAAGlF,WAAW,CACpC2E,KAAsC,IAAK;IAAA;IAC1C,IAAI,CAACxC,KAAK,CAACW,OAAO,EAAE;MAClB;IACF;IACAvC,GAAG,CAACmC,KAAK,CAAC,qBAAqB,EAAEiC,KAAK,CAAC;IACvC,IAAMhC,cAAc,4BAAGR,KAAK,CAACW,OAAO,CAACH,cAAc,yEAAI,CAAC;IACxD,IACEA,cAAc,KAAKZ,KAAK,CAACoB,MAAM,IAC/BrB,SAAS,IAAI,IAAI,IACjBa,cAAc,KAAKb,SAAS,CAACa,cAAc,EAC3C;MACAgC,KAAK,CAACQ,cAAc,EAAE;MACtBR,KAAK,CAACS,eAAe,EAAE;IACzB;EACF,CAAC,EACD,CAACjD,KAAK,EAAEL,SAAS,EAAEC,KAAK,CAAC,CAC1B;EAED,SAASsD,cAAc,CAACV,KAA4C,EAAE;IACpEA,KAAK,CAACQ,cAAc,EAAE;IACtBR,KAAK,CAACS,eAAe,EAAE;IAEvB,IAAI,CAACjD,KAAK,CAACW,OAAO,EAAE;MAClB;IACF;IAEA,IAAM;MAAEwC;IAAI,CAAC,GAAGX,KAAK;IACrB,IAAM;MAAEhC,cAAc,GAAG,CAAC;MAAEC,YAAY,GAAG;IAAE,CAAC,GAAGT,KAAK,CAACW,OAAO;IAC9D,IAAIH,cAAc,KAAK,IAAI,IAAIC,YAAY,KAAK,IAAI,EAAE;MACpDrC,GAAG,CAACsE,KAAK,CACP,gEAAgE,EAChEF,KAAK,CAACC,MAAM,CACb;MACD;IACF;IAEA,IAAIU,GAAG,KAAK,WAAW,EAAE;MACvB5D,QAAQ,CAAC0C,eAAe,CAACzB,cAAc,CAAC,CAAC;IAC3C,CAAC,MAAM,IAAI2C,GAAG,KAAK,YAAY,EAAE;MAC/B5D,QAAQ,CAACsC,WAAW,CAACpB,YAAY,CAAC,CAAC;IACrC,CAAC,MAAM,IAAI0C,GAAG,KAAK,SAAS,EAAE;MAC5BhB,gBAAgB,CAAC3B,cAAc,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,MAAM,IAAI2C,GAAG,KAAK,WAAW,EAAE;MAC9BhB,gBAAgB,CAAC3B,cAAc,EAAE,CAAC,CAAC;IACrC;EACF;EAEA,SAAS4C,aAAa,CAACZ,KAA4C,EAAE;IACnE,IAAI,CAACxC,KAAK,CAACW,OAAO,EAAE;MAClB;IACF;IACAvC,GAAG,CAACmC,KAAK,CAAC,eAAe,EAAEiC,KAAK,CAAC;IACjC,IAAM;MAAEW;IAAI,CAAC,GAAGX,KAAK;IACrB,IAAM;MAAEhC,cAAc,GAAG,CAAC;MAAEC,YAAY,GAAG;IAAE,CAAC,GAAGT,KAAK,CAACW,OAAO;IAC9D,IAAIH,cAAc,KAAK,IAAI,IAAIC,YAAY,KAAK,IAAI,EAAE;MACpDrC,GAAG,CAACsE,KAAK,CACP,+CAA+C,EAC/CF,KAAK,CAACC,MAAM,CACb;MACD;IACF;IACA,IAAIU,GAAG,KAAK,OAAO,EAAE;MACnB3D,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGgD,KAAK,CAAC;MACjB;IACF;IACA,IAAIW,GAAG,CAACE,UAAU,CAAC,OAAO,CAAC,EAAE;MAC3BH,cAAc,CAACV,KAAK,CAAC;MACrB;IACF;IAEA,IAAIW,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,WAAW,EAAE;MAC3CX,KAAK,CAACQ,cAAc,EAAE;MACtBR,KAAK,CAACS,eAAe,EAAE;;MAEvB;MACA,IAAIxC,YAAY,IAAItC,gBAAgB,CAACyB,KAAK,EAAEQ,SAAS,CAAC,CAACY,MAAM,EAAE;QAC7D,IAAMsB,QAAQ,GAAG1C,KAAK,CAAC6B,SAAS,CAC9B,CAAC;QACD;QACAjB,cAAc,KAAKC,YAAY,GAC3BD,cAAc,GAAG,CAAC,GAClBA,cAAc,CACnB;QACD,IAAM8C,YAAY,GAAGnF,gBAAgB,CAACmE,QAAQ,EAAElC,SAAS,CAAC;QAC1D,IAAIkD,YAAY,KAAK1D,KAAK,EAAE;UAC1BN,QAAQ,CAACgE,YAAY,CAAC;UACtB/D,QAAQ,CAAC;YACPiB,cAAc,EAAE8C,YAAY,CAACtC,MAAM;YACnCP,YAAY,EAAE6C,YAAY,CAACtC,MAAM;YACjCN,kBAAkB,EAAEpC,mBAAmB,CAACG;UAC1C,CAAC,CAAC;QACJ;QACA;MACF;MAEA,IAAI+B,cAAc,KAAKC,YAAY,EAAE;QACnC;QACA,IAAM6B,SAAQ,GACZ1C,KAAK,CAAC6B,SAAS,CAAC,CAAC,EAAEjB,cAAc,CAAC,GAClCZ,KAAK,CACF6B,SAAS,CAACjB,cAAc,EAAEC,YAAY,CAAC,CACvCJ,OAAO,CAAC,cAAc,EAAE3B,iBAAiB,CAAC,GAC7CkB,KAAK,CAAC6B,SAAS,CAAChB,YAAY,CAAC;QAC/BrC,GAAG,CAACmC,KAAK,CACP,QAAQ,EACRC,cAAc,EACdC,YAAY,EACZ,wBAAwB,EACxB6B,SAAQ,CACT;QAEDhD,QAAQ,CAACgD,SAAQ,CAAC;QAClB/C,QAAQ,CAAC;UACPiB,cAAc;UACdC,YAAY,EAAED,cAAc;UAC5BE,kBAAkB,EAAEpC,mBAAmB,CAACG;QAC1C,CAAC,CAAC;MACJ,CAAC,MAAM,IAAI+B,cAAc,GAAG,CAAC,EAAE;QAC7B,KAAK,IAAIS,CAAC,GAAGT,cAAc,GAAG,CAAC,EAAES,CAAC,IAAI,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;UAC/C;UACA,IAAMqB,UAAQ,GACZ1C,KAAK,CAAC6B,SAAS,CAAC,CAAC,EAAER,CAAC,CAAC,GACrBrB,KAAK,CACF6B,SAAS,CAACR,CAAC,EAAET,cAAc,CAAC,CAC5BH,OAAO,CAAC,cAAc,EAAE3B,iBAAiB,CAAC,GAC7CkB,KAAK,CAAC6B,SAAS,CAACjB,cAAc,CAAC;UAEjC,IAAI8B,UAAQ,KAAK1C,KAAK,EAAE;YACtBN,QAAQ,CAACgD,UAAQ,CAAC;YAClB/C,QAAQ,CAAC;cACPiB,cAAc,EAAES,CAAC;cACjBR,YAAY,EAAEQ,CAAC;cACfP,kBAAkB,EAAEpC,mBAAmB,CAACG;YAC1C,CAAC,CAAC;YACF;UACF;QACF;MACF;MAEA;IACF;IAEA,IAAI+D,KAAK,CAACe,MAAM,IAAIf,KAAK,CAACgB,OAAO,IAAIhB,KAAK,CAACiB,OAAO,IAAIN,GAAG,CAACnC,MAAM,GAAG,CAAC,EAAE;MACpE;IACF;IAEAwB,KAAK,CAACQ,cAAc,EAAE;IACtBR,KAAK,CAACS,eAAe,EAAE;;IAEvB;IACA,IAAMS,QAAQ,GAAGxD,KAAK,CAACyD,IAAI,CACzB,IAAIC,GAAG,CAAC,CAACT,GAAG,EAAEA,GAAG,CAACU,WAAW,EAAE,EAAEV,GAAG,CAACW,WAAW,EAAE,CAAC,CAAC,CACrD;IACD,KAAK,IAAI7C,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGyC,QAAQ,CAAC1C,MAAM,EAAEC,GAAC,IAAI,CAAC,EAAE;MAC3C,IAAM8C,OAAO,GAAGL,QAAQ,CAACzC,GAAC,CAAC;;MAE3B;MACA,IAAM+C,eAAe,GAAG,cAAc,CAAC9C,IAAI,CAAC6C,OAAO,CAAC,GAChD9D,QAAQ,CAAC,CAAC,CAAC,CAACe,MAAM,GAAG,CAAC,GACtBR,cAAc;MAClB,KACE,IAAIyD,aAAY,GAAGzD,cAAc,EACjCyD,aAAY,IAAID,eAAe,EAC/BC,aAAY,IAAI,CAAC,EACjB;QACA;QACA,IAAM1C,WAAW,GAAGrD,YAAY,CAC9B0B,KAAK,EACLK,QAAQ,CAAC,CAAC,CAAC,EACXgE,aAAY,GAAG,CAAC,CACjB;QACD,IAAM3B,UAAQ,GAAGjD,6BAA6B,CAC5CkC,WAAW,EACX0C,aAAY,EACZF,OAAO,EACPvD,cAAc,EACdC,YAAY,CACb;QACD,IAAIiB,OAAO,CAACY,UAAQ,EAAE2B,aAAY,GAAG,CAAC,CAAC,EAAE;UACvC,IAAMlC,cAAc,GAAGlB,UAAU,CAACoD,aAAY,CAAC;UAC/C,IAAMC,iBAAiB,GAAGD,aAAY,GAAG,CAAC;UAC1C,IAAInB,YAA8B,GAAG;YACnCtC,cAAc,EAAE0D,iBAAiB;YACjCzD,YAAY,EAAEyD,iBAAiB;YAC/BxD,kBAAkB,EAAEpC,mBAAmB,CAACG;UAC1C,CAAC;UACD,IAAIyF,iBAAiB,IAAInC,cAAc,CAACtB,YAAY,EAAE;YACpD,IAAM0D,oBAAoB,GAAGtC,WAAW,CAACoC,aAAY,CAAC;YACtD,IACEE,oBAAoB,CAAC3D,cAAc,KACnCuB,cAAc,CAACvB,cAAc,EAC7B;cACAsC,YAAY,GAAGqB,oBAAoB;YACrC;UACF;UACA/F,GAAG,CAACmC,KAAK,CAAC,eAAe,EAAE4C,GAAG,EAAE,IAAI,EAAEb,UAAQ,EAAEQ,YAAY,CAAC;UAC7DxD,QAAQ,CAACgD,UAAQ,CAAC;UAClB/C,QAAQ,CAACuD,YAAY,CAAC;UACtB;QACF;MACF;IACF;EACF;;EAEA;EACA,oBACE;IACE,GAAG,EAAE9C,KAAM;IACX,SAAS,EAAElC,UAAU,CAAC,2BAA2B,EAAEiB,SAAS,CAAE;IAC9D,IAAI,EAAC,MAAM;IACX,OAAO,EAAEU,OAAQ;IACjB,WAAW,EAAEC,WAAY;IACzB,KAAK,EAAEE,KAAM;IACb,QAAQ,EAAE,MAAMwE,SAAU;IAC1B,SAAS,EAAEhB,aAAc;IACzB,QAAQ,EAAEb,YAAa;IACvB,eAAe,EAAEQ,mBAAoB;IACrC,OAAO,EAAElD,OAAQ;IACjB,MAAM,EAAEC,MAAO;IACf,eAAaC;EAAW,EACxB;AAEN,CAAC,CACF;AAEDpB,WAAW,CAAC0F,YAAY,GAAG;EACzBtF,SAAS,EAAE,EAAE;EACbW,WAAW,EAAE0E,SAAS;EACtB9E,QAAQ,GAAS;IACf;EAAA,CACD;EACDC,QAAQ,GAAS;IACf;EAAA,CACD;EACDN,mBAAmB,EAAE,CAACC,KAAK,EAAEC,KAAK,EAAEC,YAAY,KAAKA,YAAY;EACjEC,6BAA6B,EAAEpB,wCAAwC;EACvE0B,SAAS,EAAEyE,SAAS;EACpBvE,OAAO,GAAS;IACd;EAAA,CACD;EACDC,MAAM,GAAS;IACb;EAAA,CACD;EACD,aAAa,EAAEsE;AACjB,CAAC;AAED,eAAezF,WAAW"}
package/dist/Option.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
2
3
  function Option(_ref) {
3
4
  var {
4
5
  children,
@@ -6,11 +7,12 @@ function Option(_ref) {
6
7
  value,
7
8
  'data-testid': dataTestId
8
9
  } = _ref;
9
- return /*#__PURE__*/React.createElement("option", {
10
+ return /*#__PURE__*/_jsx("option", {
10
11
  value: value,
11
12
  disabled: disabled,
12
- "data-testid": dataTestId
13
- }, children);
13
+ "data-testid": dataTestId,
14
+ children: children
15
+ });
14
16
  }
15
17
  export default Option;
16
18
  //# sourceMappingURL=Option.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","names":["React","Option","children","disabled","value","dataTestId"],"sources":["../src/Option.tsx"],"sourcesContent":["import React from 'react';\n\nexport type OptionProps = {\n children: React.ReactNode;\n disabled?: boolean;\n value: string;\n 'data-testid'?: string;\n};\n\nfunction Option({\n children,\n disabled,\n value,\n 'data-testid': dataTestId,\n}: OptionProps): JSX.Element {\n return (\n <option value={value} disabled={disabled} data-testid={dataTestId}>\n {children}\n </option>\n );\n}\n\nexport default Option;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AASzB,SAASC,MAAM,OAKc;EAAA,IALb;IACdC,QAAQ;IACRC,QAAQ;IACRC,KAAK;IACL,aAAa,EAAEC;EACJ,CAAC;EACZ,oBACE;IAAQ,KAAK,EAAED,KAAM;IAAC,QAAQ,EAAED,QAAS;IAAC,eAAaE;EAAW,GAC/DH,QAAQ,CACF;AAEb;AAEA,eAAeD,MAAM"}
1
+ {"version":3,"file":"Option.js","names":["React","Option","children","disabled","value","dataTestId"],"sources":["../src/Option.tsx"],"sourcesContent":["import React from 'react';\n\nexport type OptionProps = {\n children: React.ReactNode;\n disabled?: boolean;\n value: string;\n 'data-testid'?: string;\n};\n\nfunction Option({\n children,\n disabled,\n value,\n 'data-testid': dataTestId,\n}: OptionProps): JSX.Element {\n return (\n <option value={value} disabled={disabled} data-testid={dataTestId}>\n {children}\n </option>\n );\n}\n\nexport default Option;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAAC;AAS1B,SAASC,MAAM,OAKc;EAAA,IALb;IACdC,QAAQ;IACRC,QAAQ;IACRC,KAAK;IACL,aAAa,EAAEC;EACJ,CAAC;EACZ,oBACE;IAAQ,KAAK,EAAED,KAAM;IAAC,QAAQ,EAAED,QAAS;IAAC,eAAaE,UAAW;IAAA,UAC/DH;EAAQ,EACF;AAEb;AAEA,eAAeD,MAAM"}
@@ -1,5 +1,7 @@
1
1
  import React, { useState } from 'react';
2
2
  import shortid from 'shortid';
3
+ import { Fragment as _Fragment } from "react/jsx-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
3
5
  /**
4
6
  * A group of radio buttons. Use with RadioItems to populate, eg.
5
7
  * <RadioGroup>
@@ -19,16 +21,18 @@ function RadioGroup(props) {
19
21
  var [name] = useState(propsName !== null && propsName !== void 0 ? propsName : shortid());
20
22
 
21
23
  // Need to use "text" type so we can apply a pattern and make selection properly
22
- return /*#__PURE__*/React.createElement(React.Fragment, null, React.Children.map(children, child => {
23
- var _child$props$onChange, _child$props$disabled;
24
- return child ? /*#__PURE__*/React.cloneElement(child, {
25
- name,
26
- onChange: (_child$props$onChange = child.props.onChange) !== null && _child$props$onChange !== void 0 ? _child$props$onChange : onChange,
27
- checked: value === child.props.value,
28
- disabled: (_child$props$disabled = child.props.disabled) !== null && _child$props$disabled !== void 0 ? _child$props$disabled : disabled,
29
- 'data-testid': dataTestId
30
- }) : null;
31
- }));
24
+ return /*#__PURE__*/_jsx(_Fragment, {
25
+ children: React.Children.map(children, child => {
26
+ var _child$props$onChange, _child$props$disabled;
27
+ return child ? /*#__PURE__*/React.cloneElement(child, {
28
+ name,
29
+ onChange: (_child$props$onChange = child.props.onChange) !== null && _child$props$onChange !== void 0 ? _child$props$onChange : onChange,
30
+ checked: value === child.props.value,
31
+ disabled: (_child$props$disabled = child.props.disabled) !== null && _child$props$disabled !== void 0 ? _child$props$disabled : disabled,
32
+ 'data-testid': dataTestId
33
+ }) : null;
34
+ })
35
+ });
32
36
  }
33
37
  export default RadioGroup;
34
38
  //# sourceMappingURL=RadioGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","names":["React","useState","shortid","RadioGroup","props","children","disabled","name","propsName","onChange","value","dataTestId","Children","map","child","cloneElement","checked"],"sources":["../src/RadioGroup.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport shortid from 'shortid';\n\ntype RadioGroupProps = {\n /** The radio items to populate this radio. Should be of type RadioItem. */\n children?: React.ReactElement | React.ReactElement[];\n\n /** The name to use for the radio items. If not specified, a name is automatically generated */\n name?: string;\n\n /** Triggered when a radio button is changed */\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n\n /** The currently selected value. Will automatically set the `checked` attribute of the RadioItem. */\n value?: string;\n\n disabled?: boolean;\n 'data-testid'?: string;\n};\n\n/**\n * A group of radio buttons. Use with RadioItems to populate, eg.\n * <RadioGroup>\n * <RadioItem .../>\n * <RadioItem .../>\n * </RadioGroup>\n */\nfunction RadioGroup(props: RadioGroupProps): JSX.Element {\n const {\n children,\n disabled = false,\n name: propsName,\n onChange,\n value = '',\n 'data-testid': dataTestId,\n } = props;\n const [name] = useState(propsName ?? shortid());\n\n // Need to use \"text\" type so we can apply a pattern and make selection properly\n return (\n <>\n {React.Children.map(children, child =>\n child\n ? React.cloneElement(child, {\n name,\n onChange: child.props.onChange ?? onChange,\n checked: value === child.props.value,\n disabled: child.props.disabled ?? disabled,\n 'data-testid': dataTestId,\n })\n : null\n )}\n </>\n );\n}\n\nexport default RadioGroup;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,OAAO,MAAM,SAAS;AAmB7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAU,CAACC,KAAsB,EAAe;EACvD,IAAM;IACJC,QAAQ;IACRC,QAAQ,GAAG,KAAK;IAChBC,IAAI,EAAEC,SAAS;IACfC,QAAQ;IACRC,KAAK,GAAG,EAAE;IACV,aAAa,EAAEC;EACjB,CAAC,GAAGP,KAAK;EACT,IAAM,CAACG,IAAI,CAAC,GAAGN,QAAQ,CAACO,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIN,OAAO,EAAE,CAAC;;EAE/C;EACA,oBACE,0CACGF,KAAK,CAACY,QAAQ,CAACC,GAAG,CAACR,QAAQ,EAAES,KAAK;IAAA;IAAA,OACjCA,KAAK,gBACDd,KAAK,CAACe,YAAY,CAACD,KAAK,EAAE;MACxBP,IAAI;MACJE,QAAQ,2BAAEK,KAAK,CAACV,KAAK,CAACK,QAAQ,yEAAIA,QAAQ;MAC1CO,OAAO,EAAEN,KAAK,KAAKI,KAAK,CAACV,KAAK,CAACM,KAAK;MACpCJ,QAAQ,2BAAEQ,KAAK,CAACV,KAAK,CAACE,QAAQ,yEAAIA,QAAQ;MAC1C,aAAa,EAAEK;IACjB,CAAC,CAAC,GACF,IAAI;EAAA,EACT,CACA;AAEP;AAEA,eAAeR,UAAU"}
1
+ {"version":3,"file":"RadioGroup.js","names":["React","useState","shortid","RadioGroup","props","children","disabled","name","propsName","onChange","value","dataTestId","Children","map","child","cloneElement","checked"],"sources":["../src/RadioGroup.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport shortid from 'shortid';\n\ntype RadioGroupProps = {\n /** The radio items to populate this radio. Should be of type RadioItem. */\n children?: React.ReactElement | React.ReactElement[];\n\n /** The name to use for the radio items. If not specified, a name is automatically generated */\n name?: string;\n\n /** Triggered when a radio button is changed */\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n\n /** The currently selected value. Will automatically set the `checked` attribute of the RadioItem. */\n value?: string;\n\n disabled?: boolean;\n 'data-testid'?: string;\n};\n\n/**\n * A group of radio buttons. Use with RadioItems to populate, eg.\n * <RadioGroup>\n * <RadioItem .../>\n * <RadioItem .../>\n * </RadioGroup>\n */\nfunction RadioGroup(props: RadioGroupProps): JSX.Element {\n const {\n children,\n disabled = false,\n name: propsName,\n onChange,\n value = '',\n 'data-testid': dataTestId,\n } = props;\n const [name] = useState(propsName ?? shortid());\n\n // Need to use \"text\" type so we can apply a pattern and make selection properly\n return (\n <>\n {React.Children.map(children, child =>\n child\n ? React.cloneElement(child, {\n name,\n onChange: child.props.onChange ?? onChange,\n checked: value === child.props.value,\n disabled: child.props.disabled ?? disabled,\n 'data-testid': dataTestId,\n })\n : null\n )}\n </>\n );\n}\n\nexport default RadioGroup;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,OAAO,MAAM,SAAS;AAAC;AAAA;AAmB9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAU,CAACC,KAAsB,EAAe;EACvD,IAAM;IACJC,QAAQ;IACRC,QAAQ,GAAG,KAAK;IAChBC,IAAI,EAAEC,SAAS;IACfC,QAAQ;IACRC,KAAK,GAAG,EAAE;IACV,aAAa,EAAEC;EACjB,CAAC,GAAGP,KAAK;EACT,IAAM,CAACG,IAAI,CAAC,GAAGN,QAAQ,CAACO,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIN,OAAO,EAAE,CAAC;;EAE/C;EACA,oBACE;IAAA,UACGF,KAAK,CAACY,QAAQ,CAACC,GAAG,CAACR,QAAQ,EAAES,KAAK;MAAA;MAAA,OACjCA,KAAK,gBACDd,KAAK,CAACe,YAAY,CAACD,KAAK,EAAE;QACxBP,IAAI;QACJE,QAAQ,2BAAEK,KAAK,CAACV,KAAK,CAACK,QAAQ,yEAAIA,QAAQ;QAC1CO,OAAO,EAAEN,KAAK,KAAKI,KAAK,CAACV,KAAK,CAACM,KAAK;QACpCJ,QAAQ,2BAAEQ,KAAK,CAACV,KAAK,CAACE,QAAQ,yEAAIA,QAAQ;QAC1C,aAAa,EAAEK;MACjB,CAAC,CAAC,GACF,IAAI;IAAA;EACT,EACA;AAEP;AAEA,eAAeR,UAAU"}
package/dist/RadioItem.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import React, { useState } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import shortid from 'shortid';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { jsxs as _jsxs } from "react/jsx-runtime";
4
6
  /**
5
7
  * A RadioItem to be used within the Radio component.
6
8
  */
@@ -19,25 +21,27 @@ var RadioItem = /*#__PURE__*/React.forwardRef((props, ref) => {
19
21
  'data-testid': dataTestId
20
22
  } = props;
21
23
  var [id] = useState(shortid());
22
- return /*#__PURE__*/React.createElement("div", {
23
- className: classNames('custom-control custom-radio', className)
24
- }, /*#__PURE__*/React.createElement("input", {
25
- type: "radio",
26
- id: id,
27
- "data-testid": dataTestId,
28
- name: name,
29
- ref: ref,
30
- className: classNames('custom-control-input', inputClassName, {
31
- 'is-invalid': isInvalid
32
- }),
33
- checked: checked,
34
- disabled: disabled,
35
- value: value,
36
- onChange: onChange
37
- }), /*#__PURE__*/React.createElement("label", {
38
- className: classNames('custom-control-label', labelClassName),
39
- htmlFor: id
40
- }, children));
24
+ return /*#__PURE__*/_jsxs("div", {
25
+ className: classNames('custom-control custom-radio', className),
26
+ children: [/*#__PURE__*/_jsx("input", {
27
+ type: "radio",
28
+ id: id,
29
+ "data-testid": dataTestId,
30
+ name: name,
31
+ ref: ref,
32
+ className: classNames('custom-control-input', inputClassName, {
33
+ 'is-invalid': isInvalid
34
+ }),
35
+ checked: checked,
36
+ disabled: disabled,
37
+ value: value,
38
+ onChange: onChange
39
+ }), /*#__PURE__*/_jsx("label", {
40
+ className: classNames('custom-control-label', labelClassName),
41
+ htmlFor: id,
42
+ children: children
43
+ })]
44
+ });
41
45
  });
42
46
  RadioItem.displayName = 'RadioItem';
43
47
  RadioItem.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"RadioItem.js","names":["React","useState","classNames","shortid","RadioItem","forwardRef","props","ref","checked","children","className","disabled","inputClassName","isInvalid","labelClassName","name","onChange","value","dataTestId","id","displayName","defaultProps","undefined"],"sources":["../src/RadioItem.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\n\ntype RadioItemProps = {\n /** Whether this value is currently checked or not */\n checked?: boolean;\n\n /** The node/text to put in the label of this radio item */\n children: React.ReactNode;\n\n /** An extra class name to add to the outer div component */\n className?: string;\n\n /** An extra class for disabling the radio button component */\n disabled?: boolean;\n\n /** An extra class name for the input component */\n inputClassName?: string;\n\n /** The value is invalid, style to show it's invalid */\n isInvalid?: boolean;\n\n /** An extra class name for the label component */\n labelClassName?: string;\n\n /** The name for this RadioItem. Should be specified by the parent Radio component */\n name?: string;\n\n /** Triggered when the input is checked/unchecked. Provided by the parent Radio component. */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n\n /** The value to associate with this radio item */\n value: string;\n\n /** An id used for test */\n 'data-testid'?: string;\n};\n\n/**\n * A RadioItem to be used within the Radio component.\n */\nconst RadioItem = React.forwardRef<HTMLInputElement, RadioItemProps>(\n (props: RadioItemProps, ref) => {\n const {\n checked,\n children,\n className = '',\n disabled = false,\n inputClassName = '',\n isInvalid = false,\n labelClassName = '',\n name,\n onChange,\n value,\n 'data-testid': dataTestId,\n } = props;\n\n const [id] = useState(shortid());\n\n return (\n <div className={classNames('custom-control custom-radio', className)}>\n <input\n type=\"radio\"\n id={id}\n data-testid={dataTestId}\n name={name}\n ref={ref}\n className={classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid,\n })}\n checked={checked}\n disabled={disabled}\n value={value}\n onChange={onChange}\n />\n <label\n className={classNames('custom-control-label', labelClassName)}\n htmlFor={id}\n >\n {children}\n </label>\n </div>\n );\n }\n);\n\nRadioItem.displayName = 'RadioItem';\n\nRadioItem.defaultProps = {\n checked: undefined,\n className: '',\n disabled: false,\n inputClassName: '',\n isInvalid: false,\n labelClassName: '',\n name: undefined,\n onChange: undefined,\n 'data-testid': undefined,\n};\n\nexport default RadioItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,SAAS;AAqC7B;AACA;AACA;AACA,IAAMC,SAAS,gBAAGJ,KAAK,CAACK,UAAU,CAChC,CAACC,KAAqB,EAAEC,GAAG,KAAK;EAC9B,IAAM;IACJC,OAAO;IACPC,QAAQ;IACRC,SAAS,GAAG,EAAE;IACdC,QAAQ,GAAG,KAAK;IAChBC,cAAc,GAAG,EAAE;IACnBC,SAAS,GAAG,KAAK;IACjBC,cAAc,GAAG,EAAE;IACnBC,IAAI;IACJC,QAAQ;IACRC,KAAK;IACL,aAAa,EAAEC;EACjB,CAAC,GAAGZ,KAAK;EAET,IAAM,CAACa,EAAE,CAAC,GAAGlB,QAAQ,CAACE,OAAO,EAAE,CAAC;EAEhC,oBACE;IAAK,SAAS,EAAED,UAAU,CAAC,6BAA6B,EAAEQ,SAAS;EAAE,gBACnE;IACE,IAAI,EAAC,OAAO;IACZ,EAAE,EAAES,EAAG;IACP,eAAaD,UAAW;IACxB,IAAI,EAAEH,IAAK;IACX,GAAG,EAAER,GAAI;IACT,SAAS,EAAEL,UAAU,CAAC,sBAAsB,EAAEU,cAAc,EAAE;MAC5D,YAAY,EAAEC;IAChB,CAAC,CAAE;IACH,OAAO,EAAEL,OAAQ;IACjB,QAAQ,EAAEG,QAAS;IACnB,KAAK,EAAEM,KAAM;IACb,QAAQ,EAAED;EAAS,EACnB,eACF;IACE,SAAS,EAAEd,UAAU,CAAC,sBAAsB,EAAEY,cAAc,CAAE;IAC9D,OAAO,EAAEK;EAAG,GAEXV,QAAQ,CACH,CACJ;AAEV,CAAC,CACF;AAEDL,SAAS,CAACgB,WAAW,GAAG,WAAW;AAEnChB,SAAS,CAACiB,YAAY,GAAG;EACvBb,OAAO,EAAEc,SAAS;EAClBZ,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,KAAK;EACfC,cAAc,EAAE,EAAE;EAClBC,SAAS,EAAE,KAAK;EAChBC,cAAc,EAAE,EAAE;EAClBC,IAAI,EAAEO,SAAS;EACfN,QAAQ,EAAEM,SAAS;EACnB,aAAa,EAAEA;AACjB,CAAC;AAED,eAAelB,SAAS"}
1
+ {"version":3,"file":"RadioItem.js","names":["React","useState","classNames","shortid","RadioItem","forwardRef","props","ref","checked","children","className","disabled","inputClassName","isInvalid","labelClassName","name","onChange","value","dataTestId","id","displayName","defaultProps","undefined"],"sources":["../src/RadioItem.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\n\ntype RadioItemProps = {\n /** Whether this value is currently checked or not */\n checked?: boolean;\n\n /** The node/text to put in the label of this radio item */\n children: React.ReactNode;\n\n /** An extra class name to add to the outer div component */\n className?: string;\n\n /** An extra class for disabling the radio button component */\n disabled?: boolean;\n\n /** An extra class name for the input component */\n inputClassName?: string;\n\n /** The value is invalid, style to show it's invalid */\n isInvalid?: boolean;\n\n /** An extra class name for the label component */\n labelClassName?: string;\n\n /** The name for this RadioItem. Should be specified by the parent Radio component */\n name?: string;\n\n /** Triggered when the input is checked/unchecked. Provided by the parent Radio component. */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n\n /** The value to associate with this radio item */\n value: string;\n\n /** An id used for test */\n 'data-testid'?: string;\n};\n\n/**\n * A RadioItem to be used within the Radio component.\n */\nconst RadioItem = React.forwardRef<HTMLInputElement, RadioItemProps>(\n (props: RadioItemProps, ref) => {\n const {\n checked,\n children,\n className = '',\n disabled = false,\n inputClassName = '',\n isInvalid = false,\n labelClassName = '',\n name,\n onChange,\n value,\n 'data-testid': dataTestId,\n } = props;\n\n const [id] = useState(shortid());\n\n return (\n <div className={classNames('custom-control custom-radio', className)}>\n <input\n type=\"radio\"\n id={id}\n data-testid={dataTestId}\n name={name}\n ref={ref}\n className={classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid,\n })}\n checked={checked}\n disabled={disabled}\n value={value}\n onChange={onChange}\n />\n <label\n className={classNames('custom-control-label', labelClassName)}\n htmlFor={id}\n >\n {children}\n </label>\n </div>\n );\n }\n);\n\nRadioItem.displayName = 'RadioItem';\n\nRadioItem.defaultProps = {\n checked: undefined,\n className: '',\n disabled: false,\n inputClassName: '',\n isInvalid: false,\n labelClassName: '',\n name: undefined,\n onChange: undefined,\n 'data-testid': undefined,\n};\n\nexport default RadioItem;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,SAAS;AAAC;AAAA;AAqC9B;AACA;AACA;AACA,IAAMC,SAAS,gBAAGJ,KAAK,CAACK,UAAU,CAChC,CAACC,KAAqB,EAAEC,GAAG,KAAK;EAC9B,IAAM;IACJC,OAAO;IACPC,QAAQ;IACRC,SAAS,GAAG,EAAE;IACdC,QAAQ,GAAG,KAAK;IAChBC,cAAc,GAAG,EAAE;IACnBC,SAAS,GAAG,KAAK;IACjBC,cAAc,GAAG,EAAE;IACnBC,IAAI;IACJC,QAAQ;IACRC,KAAK;IACL,aAAa,EAAEC;EACjB,CAAC,GAAGZ,KAAK;EAET,IAAM,CAACa,EAAE,CAAC,GAAGlB,QAAQ,CAACE,OAAO,EAAE,CAAC;EAEhC,oBACE;IAAK,SAAS,EAAED,UAAU,CAAC,6BAA6B,EAAEQ,SAAS,CAAE;IAAA,wBACnE;MACE,IAAI,EAAC,OAAO;MACZ,EAAE,EAAES,EAAG;MACP,eAAaD,UAAW;MACxB,IAAI,EAAEH,IAAK;MACX,GAAG,EAAER,GAAI;MACT,SAAS,EAAEL,UAAU,CAAC,sBAAsB,EAAEU,cAAc,EAAE;QAC5D,YAAY,EAAEC;MAChB,CAAC,CAAE;MACH,OAAO,EAAEL,OAAQ;MACjB,QAAQ,EAAEG,QAAS;MACnB,KAAK,EAAEM,KAAM;MACb,QAAQ,EAAED;IAAS,EACnB,eACF;MACE,SAAS,EAAEd,UAAU,CAAC,sBAAsB,EAAEY,cAAc,CAAE;MAC9D,OAAO,EAAEK,EAAG;MAAA,UAEXV;IAAQ,EACH;EAAA,EACJ;AAEV,CAAC,CACF;AAEDL,SAAS,CAACgB,WAAW,GAAG,WAAW;AAEnChB,SAAS,CAACiB,YAAY,GAAG;EACvBb,OAAO,EAAEc,SAAS;EAClBZ,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,KAAK;EACfC,cAAc,EAAE,EAAE;EAClBC,SAAS,EAAE,KAAK;EAChBC,cAAc,EAAE,EAAE;EAClBC,IAAI,EAAEO,SAAS;EACfN,QAAQ,EAAEM,SAAS;EACnB,aAAa,EAAEA;AACjB,CAAC;AAED,eAAelB,SAAS"}
@@ -6,6 +6,7 @@ import debounce from 'lodash.debounce';
6
6
  import { assertNotNull } from '@deephaven/utils';
7
7
  import "./RandomAreaPlotAnimation.css";
8
8
  import ThemeExport from "./ThemeExport.js";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
9
10
  var VOLATILITY = 0.025; // how spikey the data gets
10
11
  var LOW = 0.9;
11
12
  var HIGH = 0.1;
@@ -278,13 +279,14 @@ var RandomAreaPlotAnimation = /*#__PURE__*/React.memo(() => {
278
279
  debouncedHandleResize.cancel();
279
280
  };
280
281
  }, []);
281
- return /*#__PURE__*/React.createElement("div", {
282
+ return /*#__PURE__*/_jsx("div", {
282
283
  className: "random-area-plot-animation-container",
283
- ref: container
284
- }, /*#__PURE__*/React.createElement("canvas", {
285
- ref: canvas,
286
- className: shade ? 'shade' : ''
287
- }));
284
+ ref: container,
285
+ children: /*#__PURE__*/_jsx("canvas", {
286
+ ref: canvas,
287
+ className: shade ? 'shade' : ''
288
+ })
289
+ });
288
290
  });
289
291
  export default RandomAreaPlotAnimation;
290
292
  //# sourceMappingURL=RandomAreaPlotAnimation.js.map