@deephaven/components 0.21.1-beta.0 → 0.21.1

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.
package/dist/ItemList.css CHANGED
@@ -1,7 +1,6 @@
1
1
  .item-list-scroll-pane {
2
2
  border: 1px solid #929192;
3
3
  border-radius: 4px;
4
- padding: 0.375rem 0 0.375rem;
5
4
  }
6
5
  .item-list-scroll-pane:focus {
7
6
  outline: none;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/ItemList.scss","../scss/bootstrap_overrides.scss"],"names":[],"mappings":"AACA;EACE;EACA,eCsHc;EDrHd;;AACA;EACE;;AAEF;EACE","file":"ItemList.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/ItemList.scss","../scss/bootstrap_overrides.scss"],"names":[],"mappings":"AACA;EAEE;EACA,eCqHc;;ADpHd;EACE;;AAEF;EACE","file":"ItemList.css"}
@@ -78,7 +78,6 @@ export declare class ItemList<T> extends PureComponent<ItemListProps<T>, ItemLis
78
78
  };
79
79
  static renderItem<P extends DefaultListItem>({ item, }: RenderItemProps<P>): JSX.Element;
80
80
  constructor(props: ItemListProps<T>);
81
- componentDidMount(): void;
82
81
  componentDidUpdate(prevProps: ItemListProps<T>, prevState: ItemListState): void;
83
82
  componentWillUnmount(): void;
84
83
  list: React.RefObject<List>;
@@ -97,6 +96,7 @@ export declare class ItemList<T> extends PureComponent<ItemListProps<T>, ItemLis
97
96
  renderItem: RenderItemFn<T>;
98
97
  }>;
99
98
  focus(): void;
99
+ restoreScrollPosition(): void;
100
100
  getElement(itemIndex: number): Element | null;
101
101
  focusItem(itemIndex: number): void;
102
102
  scrollToItem(itemIndex: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ItemList.d.ts","sourceRoot":"","sources":["../src/ItemList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ItemList.d.ts","sourceRoot":"","sources":["../src/ItemList.tsx"],"names":[],"mappings":"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"}
package/dist/ItemList.js CHANGED
@@ -131,19 +131,10 @@ export class ItemList extends PureComponent {
131
131
  };
132
132
  }
133
133
 
134
- componentDidMount() {
135
- var {
136
- isStickyBottom
137
- } = this.props;
138
-
139
- if (isStickyBottom && !this.isListAtBottom()) {
140
- this.scrollToBottom();
141
- }
142
- }
143
-
144
134
  componentDidUpdate(prevProps, prevState) {
145
135
  var {
146
- selectedRanges: propSelectedRanges
136
+ selectedRanges: propSelectedRanges,
137
+ itemCount
147
138
  } = this.props;
148
139
  var {
149
140
  focusIndex,
@@ -153,7 +144,7 @@ export class ItemList extends PureComponent {
153
144
  selectedRanges
154
145
  } = this.state;
155
146
 
156
- if (isStuckToBottom && !this.isListAtBottom()) {
147
+ if (isStuckToBottom && !this.isListAtBottom() && itemCount > 0) {
157
148
  this.scrollToBottom();
158
149
  }
159
150
 
@@ -190,6 +181,20 @@ export class ItemList extends PureComponent {
190
181
  (_this$listContainer$c = this.listContainer.current) === null || _this$listContainer$c === void 0 ? void 0 : _this$listContainer$c.focus();
191
182
  }
192
183
 
184
+ restoreScrollPosition() {
185
+ var {
186
+ scrollOffset
187
+ } = this.state;
188
+
189
+ if (scrollOffset != null) {
190
+ var _this$listContainer$c2;
191
+
192
+ // manually restore the scroll containers offset
193
+ // virtual list doesn't restore scrolloffset in a re-render if it's the same
194
+ (_this$listContainer$c2 = this.listContainer.current) === null || _this$listContainer$c2 === void 0 ? void 0 : _this$listContainer$c2.scrollTo(0, scrollOffset);
195
+ }
196
+ }
197
+
193
198
  getElement(itemIndex) {
194
199
  if (this.listContainer.current == null) {
195
200
  return null;
@@ -464,9 +469,9 @@ export class ItemList extends PureComponent {
464
469
  if (newFocus !== null) {
465
470
  this.selectItem(newFocus);
466
471
  } else {
467
- var _this$listContainer$c2;
472
+ var _this$listContainer$c3;
468
473
 
469
- (_this$listContainer$c2 = this.listContainer.current) === null || _this$listContainer$c2 === void 0 ? void 0 : _this$listContainer$c2.focus();
474
+ (_this$listContainer$c3 = this.listContainer.current) === null || _this$listContainer$c3 === void 0 ? void 0 : _this$listContainer$c3.focus();
470
475
  }
471
476
  }
472
477
 
@@ -685,7 +690,8 @@ export class ItemList extends PureComponent {
685
690
  'data-testid': dataTestId
686
691
  } = this.props;
687
692
  var {
688
- selectedRanges
693
+ selectedRanges,
694
+ isStuckToBottom
689
695
  } = this.state;
690
696
  return /*#__PURE__*/React.createElement(AutoSizer, {
691
697
  className: "item-list-auto-sizer",
@@ -699,6 +705,7 @@ export class ItemList extends PureComponent {
699
705
  className: "item-list-scroll-pane",
700
706
  height: height,
701
707
  width: width,
708
+ initialScrollOffset: isStuckToBottom ? itemCount * rowHeight : 0,
702
709
  itemCount: itemCount,
703
710
  itemSize: rowHeight // This prop isn't actually used by us, it is passed to the render function by react-window
704
711
  // Used here to force a re-render of the List component.
@@ -1 +1 @@
1
- {"version":3,"file":"ItemList.js","names":["React","PureComponent","memoize","FixedSizeList","List","AutoSizer","Log","RangeUtils","ItemListItem","ContextActionUtils","log","module","ItemList","renderItem","item","displayValue","value","constructor","props","index","selectedRanges","isSelected","max","CACHE_SIZE","itemIndex","key","isFocused","style","disableSelect","content","handleItemContextMenu","handleItemDoubleClick","handleItemMouseDown","handleItemFocus","handleItemBlur","handleItemMouseMove","handleItemMouseUp","onKeyDown","component","forwardRef","ref","displayName","items","bind","handleItemsRendered","handleWindowMouseUp","handleKeyDown","handleMouseLeave","handleScroll","handleResize","renderInnerElement","list","createRef","listContainer","isStickyBottom","state","focusIndex","mouseDownIndex","overscanStartIndex","height","isDragging","isStuckToBottom","scrollOffset","componentDidMount","isListAtBottom","scrollToBottom","componentDidUpdate","prevProps","prevState","propSelectedRanges","sendViewportUpdate","setSelectedRanges","onSelectionChange","onFocusChange","componentWillUnmount","window","removeEventListener","focus","current","getElement","focusSelector","elements","querySelectorAll","elementIndex","focusItem","setState","element","HTMLElement","scrollToItem","scrollIntoView","block","e","isModifierDown","isModifierKeyDown","toggleSelect","shiftKey","isDoubleClickSelect","onSelect","selectRange","target","indexOf","tagName","toLowerCase","button","length","selectItem","addEventListener","debug2","currentTarget","relatedTarget","contains","isDragSelect","isMultiSelect","getItemSelected","deselectAll","Math","min","isDeselectOnClick","isShiftDown","resetMouseState","itemCount","oldFocus","newFocus","stopPropagation","preventDefault","lastRange","scrollUpdateWasRequested","isDeselectable","deselectItem","deselectRange","range","validateRange","onViewportChange","rowHeight","topRow","floor","bottomRow","ceil","offset","getCachedItem","render","overscanCount","dataTestId","width","getItemData","getOuterElement","getInnerElement","DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","undefined"],"sources":["../src/ItemList.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport memoize from 'memoizee';\nimport {\n FixedSizeList as List,\n ListOnItemsRenderedProps,\n ListOnScrollProps,\n} from 'react-window';\nimport AutoSizer, { Size } from 'react-virtualized-auto-sizer';\nimport Log from '@deephaven/log';\nimport { RangeUtils, Range } from '@deephaven/utils';\nimport ItemListItem from './ItemListItem';\nimport { ContextActionUtils } from './context-actions';\nimport './ItemList.scss';\n\nconst log = Log.module('ItemList');\n\nexport interface DefaultListItem {\n value?: string;\n displayValue?: string;\n}\n\nexport type RenderItemProps<T> = {\n item: T;\n itemIndex: number;\n isFocused: boolean;\n isSelected: boolean;\n style: React.CSSProperties;\n};\n\nexport type RenderItemFn<T> = (props: RenderItemProps<T>) => React.ReactNode;\n\nexport type ItemDragEventHandler = (\n index: number,\n event: React.DragEvent<HTMLDivElement>\n) => void;\n\nexport type ItemListProps<T> = {\n // Total item count\n itemCount: number;\n rowHeight: number;\n // Offset of the top item in the items array\n offset: number;\n // Item object format expected by the default renderItem function\n // Can be anything as long as it's supported by the renderItem\n // Default renderItem will look for a `displayValue` property, fallback\n // to the `value` property, or stringify the object if neither are defined\n items: T[];\n // Whether clicking a selected item should deselect in the item list or not. Defaults to true\n isDeselectOnClick: boolean;\n // Whether selection requires a double click or not\n isDoubleClickSelect: boolean;\n // Whether to allow dragging to change the selection after clicking\n isDragSelect: boolean;\n // Whether to allow multiple selections in this item list\n isMultiSelect: boolean;\n // Set to true if you want the list to scroll when new items are added and it's already at the bottom\n isStickyBottom: boolean;\n // Fired when an item gets focused\n onFocusChange(index: number | null): void;\n\n // Fired when an item is clicked. With multiple selection, fired on double click.\n onSelect(index: number, event: React.SyntheticEvent): void;\n onSelectionChange(ranges: Range[]): void;\n onViewportChange(topRow: number, bottomRow: number): void;\n overscanCount: number;\n selectedRanges: Range[];\n disableSelect: boolean;\n renderItem: RenderItemFn<T>;\n focusSelector: string;\n 'data-testid'?: string;\n};\n\ntype ItemListState = {\n focusIndex: number | null;\n mouseDownIndex: number | null;\n selectedRanges: Range[];\n overscanStartIndex: number;\n height: number | null;\n isDragging: boolean;\n isStuckToBottom: boolean;\n scrollOffset: number | null;\n};\n\n/**\n * Show items in a long scrollable list.\n * Can be navigated via keyboard or mouse.\n */\nexport class ItemList<T> extends PureComponent<\n ItemListProps<T>,\n ItemListState\n> {\n static CACHE_SIZE = 1000;\n\n static DEFAULT_ROW_HEIGHT = 20;\n\n // By drawing an additional 10 items on each side, tab/keyboard navigation works better (as the next element exists)\n static DEFAULT_OVERSCAN = 10;\n\n static defaultProps = {\n offset: 0,\n items: [],\n rowHeight: ItemList.DEFAULT_ROW_HEIGHT,\n\n isDeselectOnClick: true,\n\n isDoubleClickSelect: false,\n\n isDragSelect: true,\n\n isMultiSelect: false,\n\n isStickyBottom: false,\n\n disableSelect: false,\n\n onFocusChange(): void {\n // no-op\n },\n onSelect(): void {\n // no-op\n },\n onSelectionChange(): void {\n // no-op\n },\n onViewportChange(): void {\n // no-op\n },\n\n overscanCount: ItemList.DEFAULT_OVERSCAN,\n\n renderItem: ItemList.renderItem,\n selectedRanges: [],\n\n focusSelector: '.item-list-item',\n\n 'data-testid': undefined,\n };\n\n static renderItem<P extends DefaultListItem>({\n item,\n }: RenderItemProps<P>): JSX.Element {\n return (\n <div className=\"item-list-item-content\">\n {item != null && (item.displayValue ?? item.value ?? `${item}`)}\n </div>\n );\n }\n\n constructor(props: ItemListProps<T>) {\n super(props);\n\n this.handleItemBlur = this.handleItemBlur.bind(this);\n this.handleItemContextMenu = this.handleItemContextMenu.bind(this);\n this.handleItemFocus = this.handleItemFocus.bind(this);\n this.handleItemDoubleClick = this.handleItemDoubleClick.bind(this);\n this.handleItemMouseDown = this.handleItemMouseDown.bind(this);\n this.handleItemMouseMove = this.handleItemMouseMove.bind(this);\n this.handleItemMouseUp = this.handleItemMouseUp.bind(this);\n this.handleItemsRendered = this.handleItemsRendered.bind(this);\n this.handleWindowMouseUp = this.handleWindowMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.renderInnerElement = this.renderInnerElement.bind(this);\n\n this.list = React.createRef();\n this.listContainer = React.createRef();\n\n const { isStickyBottom, selectedRanges } = props;\n\n this.state = {\n focusIndex: null,\n mouseDownIndex: null,\n selectedRanges,\n overscanStartIndex: 0,\n height: null,\n isDragging: false,\n isStuckToBottom: isStickyBottom,\n scrollOffset: null,\n };\n }\n\n componentDidMount(): void {\n const { isStickyBottom } = this.props;\n if (isStickyBottom && !this.isListAtBottom()) {\n this.scrollToBottom();\n }\n }\n\n componentDidUpdate(\n prevProps: ItemListProps<T>,\n prevState: ItemListState\n ): void {\n const { selectedRanges: propSelectedRanges } = this.props;\n const {\n focusIndex,\n isStuckToBottom,\n scrollOffset,\n height,\n selectedRanges,\n } = this.state;\n if (isStuckToBottom && !this.isListAtBottom()) {\n this.scrollToBottom();\n }\n\n if (\n scrollOffset !== prevState.scrollOffset ||\n height !== prevState.height\n ) {\n this.sendViewportUpdate();\n }\n\n if (\n propSelectedRanges !== prevProps.selectedRanges &&\n propSelectedRanges !== selectedRanges\n ) {\n this.setSelectedRanges(propSelectedRanges);\n } else if (selectedRanges !== prevState.selectedRanges) {\n const { onSelectionChange } = this.props;\n onSelectionChange(selectedRanges);\n }\n\n if (focusIndex !== prevState.focusIndex) {\n const { onFocusChange } = this.props;\n onFocusChange(focusIndex);\n }\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('mouseup', this.handleWindowMouseUp);\n }\n\n list: React.RefObject<List>;\n\n listContainer: React.RefObject<HTMLDivElement>;\n\n getItemSelected = memoize(\n (index: number, selectedRanges: Range[]) =>\n RangeUtils.isSelected(selectedRanges, index),\n { max: ItemList.CACHE_SIZE }\n );\n\n getCachedItem = memoize(\n (\n itemIndex: number,\n key: number,\n item: T,\n isFocused: boolean,\n isSelected: boolean,\n renderItem: RenderItemFn<T>,\n style: React.CSSProperties,\n disableSelect: boolean\n ) => {\n const content = renderItem({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style,\n });\n\n return (\n <ItemListItem\n onContextMenu={this.handleItemContextMenu}\n onDoubleClick={this.handleItemDoubleClick}\n onMouseDown={this.handleItemMouseDown}\n onFocus={this.handleItemFocus}\n onBlur={this.handleItemBlur}\n disableSelect={disableSelect}\n onMouseMove={this.handleItemMouseMove}\n onMouseUp={this.handleItemMouseUp}\n isFocused={isFocused}\n isSelected={isSelected}\n itemIndex={itemIndex}\n style={style}\n key={key}\n >\n {content}\n </ItemListItem>\n );\n },\n { max: ItemList.CACHE_SIZE }\n );\n\n getOuterElement = memoize((onKeyDown: React.KeyboardEventHandler) => {\n const component = React.forwardRef<HTMLDivElement>((props, ref) => (\n // We need to add the tabIndex to make sure it is focusable, otherwise we can't get key events\n <div\n ref={ref}\n tabIndex={-1}\n onKeyDown={onKeyDown}\n role=\"presentation\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n ));\n component.displayName = 'ItemListOuterElement';\n return component;\n });\n\n getInnerElement = memoize(() => {\n const component = React.forwardRef<HTMLDivElement>((props, ref) => (\n <div\n className=\"item-list-inner-element\"\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n ));\n component.displayName = 'ItemListInnerElement';\n return component;\n });\n\n getItemData = memoize(\n (items: T[], selectedRanges: Range[], renderItem: RenderItemFn<T>) => ({\n items,\n selectedRanges,\n renderItem,\n })\n );\n\n focus(): void {\n this.listContainer.current?.focus();\n }\n\n getElement(itemIndex: number): Element | null {\n if (this.listContainer.current == null) {\n return null;\n }\n\n const { focusSelector } = this.props;\n const { overscanStartIndex } = this.state;\n const elements = this.listContainer.current.querySelectorAll(focusSelector);\n const elementIndex = itemIndex - overscanStartIndex;\n return elements[elementIndex];\n }\n\n focusItem(itemIndex: number): void {\n const { disableSelect } = this.props;\n if (disableSelect) return;\n\n this.setState({ focusIndex: itemIndex });\n\n const element = this.getElement(itemIndex);\n if (element instanceof HTMLElement) {\n element.focus();\n }\n }\n\n scrollToItem(itemIndex: number): void {\n const element = this.getElement(itemIndex);\n if (element != null) {\n element.scrollIntoView({ block: 'center' });\n }\n }\n\n handleItemContextMenu(\n itemIndex: number,\n e: React.MouseEvent<HTMLDivElement>\n ): void {\n // Update the selection, but don't consume the mouse event - it will trigger the context menu\n const { selectedRanges } = this.state;\n const isSelected = RangeUtils.isSelected(selectedRanges, itemIndex);\n\n // When right-clicking, we want to maintain the current selection if the right click happened within the selection even if the modifier key isn't down\n const isModifierDown =\n isSelected || ContextActionUtils.isModifierKeyDown(e);\n this.toggleSelect(itemIndex, e.shiftKey, isModifierDown, false);\n }\n\n handleItemDoubleClick(itemIndex: number, e: React.MouseEvent): void {\n const { isDoubleClickSelect, onSelect } = this.props;\n\n if (isDoubleClickSelect) {\n this.setState(\n ({ selectedRanges }) => ({\n selectedRanges: RangeUtils.selectRange(selectedRanges, [\n itemIndex,\n itemIndex,\n ]),\n }),\n () => {\n onSelect(itemIndex, e);\n }\n );\n }\n }\n\n handleItemMouseDown(index: number, e: React.MouseEvent): void {\n const { selectedRanges } = this.state;\n\n if (\n e.target instanceof HTMLElement &&\n ['button', 'select', 'input', 'textarea'].indexOf(\n e.target.tagName.toLowerCase()\n ) !== -1\n ) {\n // allow these elements to do their own behaviours\n return;\n }\n\n if (e.button === 2 && selectedRanges.length === 0) {\n // allow right click to act as a selection if selection is empty\n this.focusItem(index);\n this.selectItem(index);\n return;\n }\n\n if (e.button != null && e.button !== 0) {\n return;\n }\n\n this.setState({ mouseDownIndex: index });\n\n window.addEventListener('mouseup', this.handleWindowMouseUp);\n\n // Leave selection until mouse up, to allow for dragging behaviour\n }\n\n handleItemBlur(itemIndex: number, e: React.FocusEvent): void {\n log.debug2('item blur', itemIndex, e.currentTarget, e.relatedTarget);\n if (\n !e.relatedTarget ||\n (this.listContainer.current &&\n e.relatedTarget instanceof HTMLElement &&\n !this.listContainer.current.contains(e.relatedTarget))\n ) {\n // Next focused element is outside of the ItemList\n this.setState({ focusIndex: null });\n }\n }\n\n handleItemFocus(itemIndex: number, e: React.FocusEvent): void {\n log.debug2('item focus', itemIndex, e.target);\n this.setState(state => {\n const { focusIndex } = state;\n if (focusIndex !== itemIndex) {\n return { focusIndex: itemIndex };\n }\n return null;\n });\n }\n\n handleItemMouseMove(itemIndex: number, e: React.MouseEvent): void {\n const { isDragSelect, isMultiSelect, disableSelect } = this.props;\n const { mouseDownIndex, selectedRanges } = this.state;\n\n if (mouseDownIndex == null || disableSelect) return;\n\n this.setState({ isDragging: true });\n\n if (isDragSelect || mouseDownIndex === itemIndex) {\n this.focusItem(itemIndex);\n\n if (isMultiSelect) {\n if (\n !isDragSelect &&\n !this.getItemSelected(itemIndex, selectedRanges) &&\n !ContextActionUtils.isModifierKeyDown(e)\n ) {\n // If there's already a selection and they select outside of that range while dragging without a modifier key, start a new selection with just the new item\n this.deselectAll();\n }\n this.selectRange([\n Math.min(mouseDownIndex, itemIndex),\n Math.max(mouseDownIndex, itemIndex),\n ]);\n } else {\n this.toggleSelect(\n itemIndex,\n e.shiftKey,\n ContextActionUtils.isModifierKeyDown(e),\n false\n );\n }\n }\n }\n\n handleItemMouseUp(index: number, e: React.MouseEvent): void {\n const { isDeselectOnClick, isDoubleClickSelect, onSelect } = this.props;\n const { mouseDownIndex, isDragging } = this.state;\n\n if (\n e.target instanceof HTMLElement &&\n ['button', 'select', 'input', 'textarea'].indexOf(\n e.target.tagName.toLowerCase()\n ) !== -1\n ) {\n return;\n }\n\n if (mouseDownIndex === index && !isDragging) {\n const isShiftDown = e.shiftKey;\n const isModifierDown = ContextActionUtils.isModifierKeyDown(e);\n this.focusItem(index);\n this.toggleSelect(index, isShiftDown, isModifierDown, isDeselectOnClick);\n\n if (!isDoubleClickSelect && !isShiftDown && !isModifierDown) {\n onSelect(index, e);\n }\n }\n\n this.resetMouseState();\n }\n\n handleItemsRendered({ overscanStartIndex }: ListOnItemsRenderedProps): void {\n this.setState({ overscanStartIndex });\n }\n\n handleResize({ height }: Size): void {\n this.setState({ height });\n }\n\n handleMouseLeave(): void {\n this.setState({ mouseDownIndex: null });\n }\n\n handleWindowMouseUp(): void {\n this.resetMouseState();\n window.removeEventListener('mouseup', this.handleWindowMouseUp);\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { isMultiSelect, itemCount, onSelect } = this.props;\n const { focusIndex: oldFocus } = this.state;\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (!isMultiSelect && newFocus != null) {\n this.setState({ selectedRanges: [[newFocus, newFocus]] }, () => {\n if (newFocus != null) {\n onSelect(newFocus, e);\n }\n });\n }\n return;\n }\n\n if (e.key === 'ArrowUp') {\n if (newFocus != null && newFocus >= 0) {\n newFocus = Math.max(0, newFocus - 1);\n } else {\n newFocus = itemCount - 1;\n }\n } else if (e.key === 'ArrowDown') {\n if (newFocus != null && newFocus >= 0) {\n newFocus = Math.min(newFocus + 1, itemCount - 1);\n } else {\n newFocus = 0;\n }\n } else {\n return;\n }\n\n if (oldFocus !== newFocus) {\n e.stopPropagation();\n e.preventDefault();\n\n this.focusItem(newFocus);\n\n const { selectedRanges } = this.state;\n if (e.shiftKey && selectedRanges.length > 0) {\n const lastRange = selectedRanges[selectedRanges.length - 1];\n this.selectRange([\n Math.min(newFocus, lastRange[0]),\n Math.max(newFocus, lastRange[1]),\n ]);\n } else {\n this.deselectAll();\n if (newFocus !== null) {\n this.selectItem(newFocus);\n } else {\n this.listContainer.current?.focus();\n }\n }\n\n this.scrollIntoView(newFocus);\n }\n }\n\n handleScroll({\n scrollUpdateWasRequested,\n scrollOffset,\n }: ListOnScrollProps): void {\n this.setState(state => {\n if (scrollUpdateWasRequested) {\n // The scroll was caused by scrollTo() or scrollToItem()\n // Don't re-calc isStuckToBottom\n return { scrollOffset } as ItemListState;\n }\n\n const { isStickyBottom } = this.props;\n const { height } = state;\n\n const isStuckToBottom =\n isStickyBottom && this.isListAtBottom({ scrollOffset, height });\n return { isStuckToBottom, scrollOffset } as ItemListState;\n });\n }\n\n resetMouseState(): void {\n this.setState({ mouseDownIndex: null, isDragging: false });\n }\n\n scrollToBottom(): void {\n const { itemCount } = this.props;\n if (this.list.current) {\n this.list.current.scrollToItem(itemCount);\n }\n }\n\n scrollIntoView(itemIndex: number): void {\n if (this.list.current) {\n this.list.current.scrollToItem(itemIndex);\n }\n }\n\n /**\n * @param index The index to toggle selection for\n * @param isShiftDown True if the shift modifier key is down\n * @param isModifierDown True if the meta modifier key is down\n * @param isDeselectable True if item should be deselected if already selected\n */\n toggleSelect(\n index: number,\n isShiftDown: boolean,\n isModifierDown: boolean,\n isDeselectable = true\n ): void {\n const { isMultiSelect } = this.props;\n const { selectedRanges } = this.state;\n\n if (isMultiSelect && isShiftDown && selectedRanges.length > 0) {\n const lastRange = selectedRanges[selectedRanges.length - 1];\n this.selectRange([\n Math.min(lastRange[0], index),\n Math.max(index, lastRange[1]),\n ]);\n } else if (\n isMultiSelect &&\n selectedRanges.length === 1 &&\n selectedRanges[0][0] === index &&\n selectedRanges[0][1] === index\n ) {\n if (isDeselectable) {\n this.deselectItem(index);\n }\n } else if (isMultiSelect && isModifierDown) {\n if (this.getItemSelected(index, selectedRanges)) {\n if (isDeselectable) {\n this.deselectItem(index);\n }\n } else {\n this.selectItem(index);\n }\n } else {\n this.deselectAll();\n this.selectItem(index);\n }\n }\n\n deselectAll(): void {\n const { itemCount } = this.props;\n this.deselectRange([0, itemCount]);\n }\n\n deselectItem(index: number): void {\n this.deselectRange([index, index]);\n }\n\n deselectRange(range: Range): void {\n RangeUtils.validateRange(range);\n\n this.setState(({ selectedRanges }) => ({\n selectedRanges: RangeUtils.deselectRange(selectedRanges, range),\n }));\n }\n\n selectItem(index: number): void {\n const { disableSelect } = this.props;\n if (disableSelect) return;\n\n this.selectRange([index, index]);\n }\n\n selectRange(range: Range): void {\n RangeUtils.validateRange(range);\n\n this.setState(({ selectedRanges }) => ({\n selectedRanges: RangeUtils.selectRange(selectedRanges, range),\n }));\n }\n\n setSelectedRanges(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n }\n\n sendViewportUpdate(): void {\n const { scrollOffset, height } = this.state;\n if (scrollOffset != null && height != null) {\n const { onViewportChange, rowHeight } = this.props;\n const topRow = Math.floor(scrollOffset / rowHeight);\n const bottomRow = topRow + Math.ceil(height / rowHeight);\n onViewportChange(topRow, bottomRow);\n }\n }\n\n isListAtBottom(\n {\n scrollOffset,\n height,\n }: Pick<ItemListState, 'scrollOffset' | 'height'> = this.state\n ): boolean {\n if (height == null || scrollOffset == null) {\n return false;\n }\n\n const { itemCount, rowHeight } = this.props;\n return scrollOffset + height >= itemCount * rowHeight;\n }\n\n renderInnerElement({\n index: itemIndex,\n style,\n }: {\n index: number;\n style: React.CSSProperties;\n }): React.ReactElement | null {\n const { items, offset, renderItem, disableSelect } = this.props;\n const { focusIndex, selectedRanges } = this.state;\n if (itemIndex < offset || itemIndex >= offset + items.length) {\n return null;\n }\n\n const item = items[itemIndex - offset];\n return this.getCachedItem(\n itemIndex,\n itemIndex,\n item,\n itemIndex === focusIndex && !disableSelect,\n this.getItemSelected(itemIndex, selectedRanges),\n renderItem,\n style,\n disableSelect\n );\n }\n\n render(): JSX.Element {\n const {\n items,\n itemCount,\n overscanCount,\n renderItem,\n rowHeight,\n 'data-testid': dataTestId,\n } = this.props;\n const { selectedRanges } = this.state;\n return (\n <AutoSizer className=\"item-list-auto-sizer\" onResize={this.handleResize}>\n {({ width, height }) => (\n <List\n className=\"item-list-scroll-pane\"\n height={height}\n width={width}\n itemCount={itemCount}\n itemSize={rowHeight}\n // This prop isn't actually used by us, it is passed to the render function by react-window\n // Used here to force a re-render of the List component.\n // Otherwise it doesn't know to call the render again when selection or renderItem changes\n itemData={this.getItemData(items, selectedRanges, renderItem)}\n onScroll={this.handleScroll}\n onItemsRendered={this.handleItemsRendered}\n ref={this.list}\n outerElementType={this.getOuterElement(this.handleKeyDown)}\n outerRef={this.listContainer}\n innerElementType={this.getInnerElement()}\n overscanCount={overscanCount}\n data-testid={dataTestId}\n >\n {this.renderInnerElement}\n </List>\n )}\n </AutoSizer>\n );\n }\n}\n\nexport default ItemList;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItemList.js","names":["React","PureComponent","memoize","FixedSizeList","List","AutoSizer","Log","RangeUtils","ItemListItem","ContextActionUtils","log","module","ItemList","renderItem","item","displayValue","value","constructor","props","index","selectedRanges","isSelected","max","CACHE_SIZE","itemIndex","key","isFocused","style","disableSelect","content","handleItemContextMenu","handleItemDoubleClick","handleItemMouseDown","handleItemFocus","handleItemBlur","handleItemMouseMove","handleItemMouseUp","onKeyDown","component","forwardRef","ref","displayName","items","bind","handleItemsRendered","handleWindowMouseUp","handleKeyDown","handleMouseLeave","handleScroll","handleResize","renderInnerElement","list","createRef","listContainer","isStickyBottom","state","focusIndex","mouseDownIndex","overscanStartIndex","height","isDragging","isStuckToBottom","scrollOffset","componentDidUpdate","prevProps","prevState","propSelectedRanges","itemCount","isListAtBottom","scrollToBottom","sendViewportUpdate","setSelectedRanges","onSelectionChange","onFocusChange","componentWillUnmount","window","removeEventListener","focus","current","restoreScrollPosition","scrollTo","getElement","focusSelector","elements","querySelectorAll","elementIndex","focusItem","setState","element","HTMLElement","scrollToItem","scrollIntoView","block","e","isModifierDown","isModifierKeyDown","toggleSelect","shiftKey","isDoubleClickSelect","onSelect","selectRange","target","indexOf","tagName","toLowerCase","button","length","selectItem","addEventListener","debug2","currentTarget","relatedTarget","contains","isDragSelect","isMultiSelect","getItemSelected","deselectAll","Math","min","isDeselectOnClick","isShiftDown","resetMouseState","oldFocus","newFocus","stopPropagation","preventDefault","lastRange","scrollUpdateWasRequested","isDeselectable","deselectItem","deselectRange","range","validateRange","onViewportChange","rowHeight","topRow","floor","bottomRow","ceil","offset","getCachedItem","render","overscanCount","dataTestId","width","getItemData","getOuterElement","getInnerElement","DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","undefined"],"sources":["../src/ItemList.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport memoize from 'memoizee';\nimport {\n FixedSizeList as List,\n ListOnItemsRenderedProps,\n ListOnScrollProps,\n} from 'react-window';\nimport AutoSizer, { Size } from 'react-virtualized-auto-sizer';\nimport Log from '@deephaven/log';\nimport { RangeUtils, Range } from '@deephaven/utils';\nimport ItemListItem from './ItemListItem';\nimport { ContextActionUtils } from './context-actions';\nimport './ItemList.scss';\n\nconst log = Log.module('ItemList');\n\nexport interface DefaultListItem {\n value?: string;\n displayValue?: string;\n}\n\nexport type RenderItemProps<T> = {\n item: T;\n itemIndex: number;\n isFocused: boolean;\n isSelected: boolean;\n style: React.CSSProperties;\n};\n\nexport type RenderItemFn<T> = (props: RenderItemProps<T>) => React.ReactNode;\n\nexport type ItemDragEventHandler = (\n index: number,\n event: React.DragEvent<HTMLDivElement>\n) => void;\n\nexport type ItemListProps<T> = {\n // Total item count\n itemCount: number;\n rowHeight: number;\n // Offset of the top item in the items array\n offset: number;\n // Item object format expected by the default renderItem function\n // Can be anything as long as it's supported by the renderItem\n // Default renderItem will look for a `displayValue` property, fallback\n // to the `value` property, or stringify the object if neither are defined\n items: T[];\n // Whether clicking a selected item should deselect in the item list or not. Defaults to true\n isDeselectOnClick: boolean;\n // Whether selection requires a double click or not\n isDoubleClickSelect: boolean;\n // Whether to allow dragging to change the selection after clicking\n isDragSelect: boolean;\n // Whether to allow multiple selections in this item list\n isMultiSelect: boolean;\n // Set to true if you want the list to scroll when new items are added and it's already at the bottom\n isStickyBottom: boolean;\n // Fired when an item gets focused\n onFocusChange(index: number | null): void;\n\n // Fired when an item is clicked. With multiple selection, fired on double click.\n onSelect(index: number, event: React.SyntheticEvent): void;\n onSelectionChange(ranges: Range[]): void;\n onViewportChange(topRow: number, bottomRow: number): void;\n overscanCount: number;\n selectedRanges: Range[];\n disableSelect: boolean;\n renderItem: RenderItemFn<T>;\n focusSelector: string;\n 'data-testid'?: string;\n};\n\ntype ItemListState = {\n focusIndex: number | null;\n mouseDownIndex: number | null;\n selectedRanges: Range[];\n overscanStartIndex: number;\n height: number | null;\n isDragging: boolean;\n isStuckToBottom: boolean;\n scrollOffset: number | null;\n};\n\n/**\n * Show items in a long scrollable list.\n * Can be navigated via keyboard or mouse.\n */\nexport class ItemList<T> extends PureComponent<\n ItemListProps<T>,\n ItemListState\n> {\n static CACHE_SIZE = 1000;\n\n static DEFAULT_ROW_HEIGHT = 20;\n\n // By drawing an additional 10 items on each side, tab/keyboard navigation works better (as the next element exists)\n static DEFAULT_OVERSCAN = 10;\n\n static defaultProps = {\n offset: 0,\n items: [],\n rowHeight: ItemList.DEFAULT_ROW_HEIGHT,\n\n isDeselectOnClick: true,\n\n isDoubleClickSelect: false,\n\n isDragSelect: true,\n\n isMultiSelect: false,\n\n isStickyBottom: false,\n\n disableSelect: false,\n\n onFocusChange(): void {\n // no-op\n },\n onSelect(): void {\n // no-op\n },\n onSelectionChange(): void {\n // no-op\n },\n onViewportChange(): void {\n // no-op\n },\n\n overscanCount: ItemList.DEFAULT_OVERSCAN,\n\n renderItem: ItemList.renderItem,\n selectedRanges: [],\n\n focusSelector: '.item-list-item',\n\n 'data-testid': undefined,\n };\n\n static renderItem<P extends DefaultListItem>({\n item,\n }: RenderItemProps<P>): JSX.Element {\n return (\n <div className=\"item-list-item-content\">\n {item != null && (item.displayValue ?? item.value ?? `${item}`)}\n </div>\n );\n }\n\n constructor(props: ItemListProps<T>) {\n super(props);\n\n this.handleItemBlur = this.handleItemBlur.bind(this);\n this.handleItemContextMenu = this.handleItemContextMenu.bind(this);\n this.handleItemFocus = this.handleItemFocus.bind(this);\n this.handleItemDoubleClick = this.handleItemDoubleClick.bind(this);\n this.handleItemMouseDown = this.handleItemMouseDown.bind(this);\n this.handleItemMouseMove = this.handleItemMouseMove.bind(this);\n this.handleItemMouseUp = this.handleItemMouseUp.bind(this);\n this.handleItemsRendered = this.handleItemsRendered.bind(this);\n this.handleWindowMouseUp = this.handleWindowMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.renderInnerElement = this.renderInnerElement.bind(this);\n\n this.list = React.createRef();\n this.listContainer = React.createRef();\n\n const { isStickyBottom, selectedRanges } = props;\n\n this.state = {\n focusIndex: null,\n mouseDownIndex: null,\n selectedRanges,\n overscanStartIndex: 0,\n height: null,\n isDragging: false,\n isStuckToBottom: isStickyBottom,\n scrollOffset: null,\n };\n }\n\n componentDidUpdate(\n prevProps: ItemListProps<T>,\n prevState: ItemListState\n ): void {\n const { selectedRanges: propSelectedRanges, itemCount } = this.props;\n const {\n focusIndex,\n isStuckToBottom,\n scrollOffset,\n height,\n selectedRanges,\n } = this.state;\n if (isStuckToBottom && !this.isListAtBottom() && itemCount > 0) {\n this.scrollToBottom();\n }\n\n if (\n scrollOffset !== prevState.scrollOffset ||\n height !== prevState.height\n ) {\n this.sendViewportUpdate();\n }\n\n if (\n propSelectedRanges !== prevProps.selectedRanges &&\n propSelectedRanges !== selectedRanges\n ) {\n this.setSelectedRanges(propSelectedRanges);\n } else if (selectedRanges !== prevState.selectedRanges) {\n const { onSelectionChange } = this.props;\n onSelectionChange(selectedRanges);\n }\n\n if (focusIndex !== prevState.focusIndex) {\n const { onFocusChange } = this.props;\n onFocusChange(focusIndex);\n }\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('mouseup', this.handleWindowMouseUp);\n }\n\n list: React.RefObject<List>;\n\n listContainer: React.RefObject<HTMLDivElement>;\n\n getItemSelected = memoize(\n (index: number, selectedRanges: Range[]) =>\n RangeUtils.isSelected(selectedRanges, index),\n { max: ItemList.CACHE_SIZE }\n );\n\n getCachedItem = memoize(\n (\n itemIndex: number,\n key: number,\n item: T,\n isFocused: boolean,\n isSelected: boolean,\n renderItem: RenderItemFn<T>,\n style: React.CSSProperties,\n disableSelect: boolean\n ) => {\n const content = renderItem({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style,\n });\n\n return (\n <ItemListItem\n onContextMenu={this.handleItemContextMenu}\n onDoubleClick={this.handleItemDoubleClick}\n onMouseDown={this.handleItemMouseDown}\n onFocus={this.handleItemFocus}\n onBlur={this.handleItemBlur}\n disableSelect={disableSelect}\n onMouseMove={this.handleItemMouseMove}\n onMouseUp={this.handleItemMouseUp}\n isFocused={isFocused}\n isSelected={isSelected}\n itemIndex={itemIndex}\n style={style}\n key={key}\n >\n {content}\n </ItemListItem>\n );\n },\n { max: ItemList.CACHE_SIZE }\n );\n\n getOuterElement = memoize((onKeyDown: React.KeyboardEventHandler) => {\n const component = React.forwardRef<HTMLDivElement>((props, ref) => (\n // We need to add the tabIndex to make sure it is focusable, otherwise we can't get key events\n <div\n ref={ref}\n tabIndex={-1}\n onKeyDown={onKeyDown}\n role=\"presentation\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n ));\n component.displayName = 'ItemListOuterElement';\n return component;\n });\n\n getInnerElement = memoize(() => {\n const component = React.forwardRef<HTMLDivElement>((props, ref) => (\n <div\n className=\"item-list-inner-element\"\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n ));\n component.displayName = 'ItemListInnerElement';\n return component;\n });\n\n getItemData = memoize(\n (items: T[], selectedRanges: Range[], renderItem: RenderItemFn<T>) => ({\n items,\n selectedRanges,\n renderItem,\n })\n );\n\n focus(): void {\n this.listContainer.current?.focus();\n }\n\n restoreScrollPosition(): void {\n const { scrollOffset } = this.state;\n if (scrollOffset != null) {\n // manually restore the scroll containers offset\n // virtual list doesn't restore scrolloffset in a re-render if it's the same\n this.listContainer.current?.scrollTo(0, scrollOffset);\n }\n }\n\n getElement(itemIndex: number): Element | null {\n if (this.listContainer.current == null) {\n return null;\n }\n\n const { focusSelector } = this.props;\n const { overscanStartIndex } = this.state;\n const elements = this.listContainer.current.querySelectorAll(focusSelector);\n const elementIndex = itemIndex - overscanStartIndex;\n return elements[elementIndex];\n }\n\n focusItem(itemIndex: number): void {\n const { disableSelect } = this.props;\n if (disableSelect) return;\n\n this.setState({ focusIndex: itemIndex });\n\n const element = this.getElement(itemIndex);\n if (element instanceof HTMLElement) {\n element.focus();\n }\n }\n\n scrollToItem(itemIndex: number): void {\n const element = this.getElement(itemIndex);\n if (element != null) {\n element.scrollIntoView({ block: 'center' });\n }\n }\n\n handleItemContextMenu(\n itemIndex: number,\n e: React.MouseEvent<HTMLDivElement>\n ): void {\n // Update the selection, but don't consume the mouse event - it will trigger the context menu\n const { selectedRanges } = this.state;\n const isSelected = RangeUtils.isSelected(selectedRanges, itemIndex);\n\n // When right-clicking, we want to maintain the current selection if the right click happened within the selection even if the modifier key isn't down\n const isModifierDown =\n isSelected || ContextActionUtils.isModifierKeyDown(e);\n this.toggleSelect(itemIndex, e.shiftKey, isModifierDown, false);\n }\n\n handleItemDoubleClick(itemIndex: number, e: React.MouseEvent): void {\n const { isDoubleClickSelect, onSelect } = this.props;\n\n if (isDoubleClickSelect) {\n this.setState(\n ({ selectedRanges }) => ({\n selectedRanges: RangeUtils.selectRange(selectedRanges, [\n itemIndex,\n itemIndex,\n ]),\n }),\n () => {\n onSelect(itemIndex, e);\n }\n );\n }\n }\n\n handleItemMouseDown(index: number, e: React.MouseEvent): void {\n const { selectedRanges } = this.state;\n\n if (\n e.target instanceof HTMLElement &&\n ['button', 'select', 'input', 'textarea'].indexOf(\n e.target.tagName.toLowerCase()\n ) !== -1\n ) {\n // allow these elements to do their own behaviours\n return;\n }\n\n if (e.button === 2 && selectedRanges.length === 0) {\n // allow right click to act as a selection if selection is empty\n this.focusItem(index);\n this.selectItem(index);\n return;\n }\n\n if (e.button != null && e.button !== 0) {\n return;\n }\n\n this.setState({ mouseDownIndex: index });\n\n window.addEventListener('mouseup', this.handleWindowMouseUp);\n\n // Leave selection until mouse up, to allow for dragging behaviour\n }\n\n handleItemBlur(itemIndex: number, e: React.FocusEvent): void {\n log.debug2('item blur', itemIndex, e.currentTarget, e.relatedTarget);\n if (\n !e.relatedTarget ||\n (this.listContainer.current &&\n e.relatedTarget instanceof HTMLElement &&\n !this.listContainer.current.contains(e.relatedTarget))\n ) {\n // Next focused element is outside of the ItemList\n this.setState({ focusIndex: null });\n }\n }\n\n handleItemFocus(itemIndex: number, e: React.FocusEvent): void {\n log.debug2('item focus', itemIndex, e.target);\n this.setState(state => {\n const { focusIndex } = state;\n if (focusIndex !== itemIndex) {\n return { focusIndex: itemIndex };\n }\n return null;\n });\n }\n\n handleItemMouseMove(itemIndex: number, e: React.MouseEvent): void {\n const { isDragSelect, isMultiSelect, disableSelect } = this.props;\n const { mouseDownIndex, selectedRanges } = this.state;\n\n if (mouseDownIndex == null || disableSelect) return;\n\n this.setState({ isDragging: true });\n\n if (isDragSelect || mouseDownIndex === itemIndex) {\n this.focusItem(itemIndex);\n\n if (isMultiSelect) {\n if (\n !isDragSelect &&\n !this.getItemSelected(itemIndex, selectedRanges) &&\n !ContextActionUtils.isModifierKeyDown(e)\n ) {\n // If there's already a selection and they select outside of that range while dragging without a modifier key, start a new selection with just the new item\n this.deselectAll();\n }\n this.selectRange([\n Math.min(mouseDownIndex, itemIndex),\n Math.max(mouseDownIndex, itemIndex),\n ]);\n } else {\n this.toggleSelect(\n itemIndex,\n e.shiftKey,\n ContextActionUtils.isModifierKeyDown(e),\n false\n );\n }\n }\n }\n\n handleItemMouseUp(index: number, e: React.MouseEvent): void {\n const { isDeselectOnClick, isDoubleClickSelect, onSelect } = this.props;\n const { mouseDownIndex, isDragging } = this.state;\n\n if (\n e.target instanceof HTMLElement &&\n ['button', 'select', 'input', 'textarea'].indexOf(\n e.target.tagName.toLowerCase()\n ) !== -1\n ) {\n return;\n }\n\n if (mouseDownIndex === index && !isDragging) {\n const isShiftDown = e.shiftKey;\n const isModifierDown = ContextActionUtils.isModifierKeyDown(e);\n this.focusItem(index);\n this.toggleSelect(index, isShiftDown, isModifierDown, isDeselectOnClick);\n\n if (!isDoubleClickSelect && !isShiftDown && !isModifierDown) {\n onSelect(index, e);\n }\n }\n\n this.resetMouseState();\n }\n\n handleItemsRendered({ overscanStartIndex }: ListOnItemsRenderedProps): void {\n this.setState({ overscanStartIndex });\n }\n\n handleResize({ height }: Size): void {\n this.setState({ height });\n }\n\n handleMouseLeave(): void {\n this.setState({ mouseDownIndex: null });\n }\n\n handleWindowMouseUp(): void {\n this.resetMouseState();\n window.removeEventListener('mouseup', this.handleWindowMouseUp);\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { isMultiSelect, itemCount, onSelect } = this.props;\n const { focusIndex: oldFocus } = this.state;\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (!isMultiSelect && newFocus != null) {\n this.setState({ selectedRanges: [[newFocus, newFocus]] }, () => {\n if (newFocus != null) {\n onSelect(newFocus, e);\n }\n });\n }\n return;\n }\n\n if (e.key === 'ArrowUp') {\n if (newFocus != null && newFocus >= 0) {\n newFocus = Math.max(0, newFocus - 1);\n } else {\n newFocus = itemCount - 1;\n }\n } else if (e.key === 'ArrowDown') {\n if (newFocus != null && newFocus >= 0) {\n newFocus = Math.min(newFocus + 1, itemCount - 1);\n } else {\n newFocus = 0;\n }\n } else {\n return;\n }\n\n if (oldFocus !== newFocus) {\n e.stopPropagation();\n e.preventDefault();\n\n this.focusItem(newFocus);\n\n const { selectedRanges } = this.state;\n if (e.shiftKey && selectedRanges.length > 0) {\n const lastRange = selectedRanges[selectedRanges.length - 1];\n this.selectRange([\n Math.min(newFocus, lastRange[0]),\n Math.max(newFocus, lastRange[1]),\n ]);\n } else {\n this.deselectAll();\n if (newFocus !== null) {\n this.selectItem(newFocus);\n } else {\n this.listContainer.current?.focus();\n }\n }\n\n this.scrollIntoView(newFocus);\n }\n }\n\n handleScroll({\n scrollUpdateWasRequested,\n scrollOffset,\n }: ListOnScrollProps): void {\n this.setState(state => {\n if (scrollUpdateWasRequested) {\n // The scroll was caused by scrollTo() or scrollToItem()\n // Don't re-calc isStuckToBottom\n return { scrollOffset } as ItemListState;\n }\n\n const { isStickyBottom } = this.props;\n const { height } = state;\n\n const isStuckToBottom =\n isStickyBottom && this.isListAtBottom({ scrollOffset, height });\n return { isStuckToBottom, scrollOffset } as ItemListState;\n });\n }\n\n resetMouseState(): void {\n this.setState({ mouseDownIndex: null, isDragging: false });\n }\n\n scrollToBottom(): void {\n const { itemCount } = this.props;\n if (this.list.current) {\n this.list.current.scrollToItem(itemCount);\n }\n }\n\n scrollIntoView(itemIndex: number): void {\n if (this.list.current) {\n this.list.current.scrollToItem(itemIndex);\n }\n }\n\n /**\n * @param index The index to toggle selection for\n * @param isShiftDown True if the shift modifier key is down\n * @param isModifierDown True if the meta modifier key is down\n * @param isDeselectable True if item should be deselected if already selected\n */\n toggleSelect(\n index: number,\n isShiftDown: boolean,\n isModifierDown: boolean,\n isDeselectable = true\n ): void {\n const { isMultiSelect } = this.props;\n const { selectedRanges } = this.state;\n\n if (isMultiSelect && isShiftDown && selectedRanges.length > 0) {\n const lastRange = selectedRanges[selectedRanges.length - 1];\n this.selectRange([\n Math.min(lastRange[0], index),\n Math.max(index, lastRange[1]),\n ]);\n } else if (\n isMultiSelect &&\n selectedRanges.length === 1 &&\n selectedRanges[0][0] === index &&\n selectedRanges[0][1] === index\n ) {\n if (isDeselectable) {\n this.deselectItem(index);\n }\n } else if (isMultiSelect && isModifierDown) {\n if (this.getItemSelected(index, selectedRanges)) {\n if (isDeselectable) {\n this.deselectItem(index);\n }\n } else {\n this.selectItem(index);\n }\n } else {\n this.deselectAll();\n this.selectItem(index);\n }\n }\n\n deselectAll(): void {\n const { itemCount } = this.props;\n this.deselectRange([0, itemCount]);\n }\n\n deselectItem(index: number): void {\n this.deselectRange([index, index]);\n }\n\n deselectRange(range: Range): void {\n RangeUtils.validateRange(range);\n\n this.setState(({ selectedRanges }) => ({\n selectedRanges: RangeUtils.deselectRange(selectedRanges, range),\n }));\n }\n\n selectItem(index: number): void {\n const { disableSelect } = this.props;\n if (disableSelect) return;\n\n this.selectRange([index, index]);\n }\n\n selectRange(range: Range): void {\n RangeUtils.validateRange(range);\n\n this.setState(({ selectedRanges }) => ({\n selectedRanges: RangeUtils.selectRange(selectedRanges, range),\n }));\n }\n\n setSelectedRanges(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n }\n\n sendViewportUpdate(): void {\n const { scrollOffset, height } = this.state;\n if (scrollOffset != null && height != null) {\n const { onViewportChange, rowHeight } = this.props;\n const topRow = Math.floor(scrollOffset / rowHeight);\n const bottomRow = topRow + Math.ceil(height / rowHeight);\n onViewportChange(topRow, bottomRow);\n }\n }\n\n isListAtBottom(\n {\n scrollOffset,\n height,\n }: Pick<ItemListState, 'scrollOffset' | 'height'> = this.state\n ): boolean {\n if (height == null || scrollOffset == null) {\n return false;\n }\n\n const { itemCount, rowHeight } = this.props;\n return scrollOffset + height >= itemCount * rowHeight;\n }\n\n renderInnerElement({\n index: itemIndex,\n style,\n }: {\n index: number;\n style: React.CSSProperties;\n }): React.ReactElement | null {\n const { items, offset, renderItem, disableSelect } = this.props;\n const { focusIndex, selectedRanges } = this.state;\n if (itemIndex < offset || itemIndex >= offset + items.length) {\n return null;\n }\n\n const item = items[itemIndex - offset];\n return this.getCachedItem(\n itemIndex,\n itemIndex,\n item,\n itemIndex === focusIndex && !disableSelect,\n this.getItemSelected(itemIndex, selectedRanges),\n renderItem,\n style,\n disableSelect\n );\n }\n\n render(): JSX.Element {\n const {\n items,\n itemCount,\n overscanCount,\n renderItem,\n rowHeight,\n 'data-testid': dataTestId,\n } = this.props;\n const { selectedRanges, isStuckToBottom } = this.state;\n return (\n <AutoSizer className=\"item-list-auto-sizer\" onResize={this.handleResize}>\n {({ width, height }) => (\n <List\n className=\"item-list-scroll-pane\"\n height={height}\n width={width}\n initialScrollOffset={isStuckToBottom ? itemCount * rowHeight : 0}\n itemCount={itemCount}\n itemSize={rowHeight}\n // This prop isn't actually used by us, it is passed to the render function by react-window\n // Used here to force a re-render of the List component.\n // Otherwise it doesn't know to call the render again when selection or renderItem changes\n itemData={this.getItemData(items, selectedRanges, renderItem)}\n onScroll={this.handleScroll}\n onItemsRendered={this.handleItemsRendered}\n ref={this.list}\n outerElementType={this.getOuterElement(this.handleKeyDown)}\n outerRef={this.listContainer}\n innerElementType={this.getInnerElement()}\n overscanCount={overscanCount}\n data-testid={dataTestId}\n >\n {this.renderInnerElement}\n </List>\n )}\n </AutoSizer>\n );\n }\n}\n\nexport default ItemList;\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,7 +14,6 @@ export { default as CustomTimeSelect } from './CustomTimeSelect';
14
14
  export { default as DateTimeInput } from './DateTimeInput';
15
15
  export { default as DateInput } from './DateInput';
16
16
  export { default as DebouncedSearchInput } from './DebouncedSearchInput';
17
- export { default as DeephavenSpinner } from './DeephavenSpinner';
18
17
  export { default as DraggableItemList } from './DraggableItemList';
19
18
  export * from './DraggableItemList';
20
19
  export { default as DragUtils } from './DragUtils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,7 +13,6 @@ export { default as CustomTimeSelect } from "./CustomTimeSelect.js";
13
13
  export { default as DateTimeInput } from "./DateTimeInput.js";
14
14
  export { default as DateInput } from "./DateInput.js";
15
15
  export { default as DebouncedSearchInput } from "./DebouncedSearchInput.js";
16
- export { default as DeephavenSpinner } from "./DeephavenSpinner.js";
17
16
  export { default as DraggableItemList } from "./DraggableItemList.js";
18
17
  export * from "./DraggableItemList.js";
19
18
  export { default as DragUtils } from "./DragUtils.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CustomTimeSelect","DateTimeInput","DateInput","DebouncedSearchInput","DeephavenSpinner","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch","ValidateLabelInput"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DateTimeInput } from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport { default as DeephavenSpinner } from './DeephavenSpinner';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\nexport { default as ValidateLabelInput } from './ValidateLabelInput';\n"],"mappings":"SACSA,OAAO,IAAIC,iB;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,M;SACXJ,OAAO,IAAIK,W;SACXL,OAAO,IAAIM,S;SACXN,OAAO,IAAIO,Q;;SAEXP,OAAO,IAAIQ,Q;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,Q;SACXV,OAAO,IAAIW,gB;SACXX,OAAO,IAAIY,a;SACXZ,OAAO,IAAIa,S;SACXb,OAAO,IAAIc,oB;SACXd,OAAO,IAAIe,gB;SACXf,OAAO,IAAIgB,iB;;SAEXhB,OAAO,IAAIiB,S;SACXjB,OAAO,IAAIkB,gB;SACXlB,OAAO,IAAImB,wB;;;SAGXnB,OAAO,IAAIoB,Y;SACXpB,OAAO,IAAIqB,c;SACXrB,OAAO,IAAIsB,c;SACXtB,OAAO,IAAIuB,Y;;SAEXvB,OAAO,IAAIwB,W;;;SAGXxB,OAAO,IAAIyB,M;;;SAGXzB,OAAO,IAAI0B,U;SACX1B,OAAO,IAAI2B,S;SACX3B,OAAO,IAAI4B,M;SACX5B,OAAO,IAAI6B,W;SACX7B,OAAO,IAAI8B,e;;;SAGX9B,OAAO,IAAI+B,c;SACX/B,OAAO,IAAIgC,W;SACXhC,OAAO,IAAIiC,S;SACXjC,OAAO,IAAIkC,U;SACXlC,OAAO,IAAImC,iB;SACXnC,OAAO,IAAIoC,Q;SACXpC,OAAO,IAAIqC,kB"}
1
+ {"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CustomTimeSelect","DateTimeInput","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch","ValidateLabelInput"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DateTimeInput } from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\nexport { default as ValidateLabelInput } from './ValidateLabelInput';\n"],"mappings":"SACSA,OAAO,IAAIC,iB;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,M;SACXJ,OAAO,IAAIK,W;SACXL,OAAO,IAAIM,S;SACXN,OAAO,IAAIO,Q;;SAEXP,OAAO,IAAIQ,Q;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,Q;SACXV,OAAO,IAAIW,gB;SACXX,OAAO,IAAIY,a;SACXZ,OAAO,IAAIa,S;SACXb,OAAO,IAAIc,oB;SACXd,OAAO,IAAIe,iB;;SAEXf,OAAO,IAAIgB,S;SACXhB,OAAO,IAAIiB,gB;SACXjB,OAAO,IAAIkB,wB;;;SAGXlB,OAAO,IAAImB,Y;SACXnB,OAAO,IAAIoB,c;SACXpB,OAAO,IAAIqB,c;SACXrB,OAAO,IAAIsB,Y;;SAEXtB,OAAO,IAAIuB,W;;;SAGXvB,OAAO,IAAIwB,M;;;SAGXxB,OAAO,IAAIyB,U;SACXzB,OAAO,IAAI0B,S;SACX1B,OAAO,IAAI2B,M;SACX3B,OAAO,IAAI4B,W;SACX5B,OAAO,IAAI6B,e;;;SAGX7B,OAAO,IAAI8B,c;SACX9B,OAAO,IAAI+B,W;SACX/B,OAAO,IAAIgC,S;SACXhC,OAAO,IAAIiC,U;SACXjC,OAAO,IAAIkC,iB;SACXlC,OAAO,IAAImC,Q;SACXnC,OAAO,IAAIoC,kB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "0.21.1-beta.0+3dbfa81",
3
+ "version": "0.21.1",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -31,10 +31,10 @@
31
31
  "start": "cross-env NODE_ENV=development npm run watch"
32
32
  },
33
33
  "dependencies": {
34
- "@deephaven/icons": "^0.21.1-beta.0+3dbfa81",
35
- "@deephaven/log": "^0.21.1-beta.0+3dbfa81",
36
- "@deephaven/react-hooks": "^0.21.1-beta.0+3dbfa81",
37
- "@deephaven/utils": "^0.21.1-beta.0+3dbfa81",
34
+ "@deephaven/icons": "^0.21.0",
35
+ "@deephaven/log": "^0.21.0",
36
+ "@deephaven/react-hooks": "^0.21.0",
37
+ "@deephaven/utils": "^0.21.0",
38
38
  "@fortawesome/fontawesome-svg-core": "^6.1.1",
39
39
  "@fortawesome/react-fontawesome": "^0.1.18",
40
40
  "bootstrap": "4.6.2",
@@ -57,8 +57,8 @@
57
57
  "react-dom": "^17.x"
58
58
  },
59
59
  "devDependencies": {
60
- "@deephaven/mocks": "^0.21.1-beta.0+3dbfa81",
61
- "@deephaven/tsconfig": "^0.21.1-beta.0+3dbfa81"
60
+ "@deephaven/mocks": "^0.21.0",
61
+ "@deephaven/tsconfig": "^0.21.0"
62
62
  },
63
63
  "files": [
64
64
  "dist",
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "3dbfa81c03d76b04ea1b1e05ec5f3d7e95b65b9d"
74
+ "gitHead": "ecdbc76bcb69fa51d9d07b0922863482502764a9"
75
75
  }
@@ -1,182 +0,0 @@
1
- .dh-loader {
2
- position: relative;
3
- animation: dhOverallSpin 1.4s cubic-bezier(0.49, -0.56, 0.49, 1.42) infinite both;
4
- width: 200px;
5
- margin: auto;
6
- z-index: 20;
7
- opacity: 0;
8
- transform: scale(1.4);
9
- transition: opacity 100ms linear;
10
- pointer-events: none;
11
- }
12
- .dh-loader svg {
13
- transform: scale(1.4);
14
- transition: transform 150ms linear;
15
- }
16
- .dh-loader.show {
17
- opacity: 1;
18
- transition: opacity 150ms linear;
19
- }
20
- .dh-loader.show svg {
21
- transform: scale(1);
22
- transition: transform 200ms linear;
23
- }
24
- .dh-loader svg.dh-loader-tile {
25
- position: absolute;
26
- top: 0;
27
- left: 0;
28
- }
29
- .dh-loader .dh-loader-tile-3 {
30
- animation: dhTileFade3 1.4s linear infinite both;
31
- }
32
- .dh-loader .dh-loader-tile-2 {
33
- animation: dhTileFade2 1.4s linear infinite both;
34
- }
35
- .dh-loader .dh-loader-tile-5 {
36
- animation: dhTileFade5 1.4s linear infinite both;
37
- }
38
- .dh-loader .dh-loader-tile-6 {
39
- animation: dhTileFade6 1.4s linear infinite both;
40
- }
41
- .dh-loader .dh-loader-tile-7 {
42
- animation: dhTileFade7 1.4s linear infinite both;
43
- }
44
- .dh-loader .dh-loader-tile-4 {
45
- animation: dhTileFade4 1.4s linear infinite both;
46
- }
47
- @keyframes dhOverallSpin {
48
- 0% {
49
- transform: rotate(0deg);
50
- }
51
- 53.5714% {
52
- transform: rotate(0deg);
53
- }
54
- 92.8571% {
55
- transform: rotate(180deg);
56
- }
57
- 100% {
58
- transform: rotate(180deg);
59
- }
60
- }
61
- @keyframes dhTileFade3 {
62
- 0% {
63
- opacity: 0;
64
- }
65
- 25% {
66
- opacity: 0;
67
- }
68
- 42.8571% {
69
- opacity: 1;
70
- }
71
- 59.5238% {
72
- opacity: 1;
73
- }
74
- 77.3809% {
75
- opacity: 0;
76
- }
77
- 100% {
78
- opacity: 0;
79
- }
80
- }
81
- @keyframes dhTileFade2 {
82
- 0% {
83
- opacity: 0;
84
- }
85
- 20.2381% {
86
- opacity: 0;
87
- }
88
- 36.9048% {
89
- opacity: 1;
90
- }
91
- 54.7619% {
92
- opacity: 1;
93
- }
94
- 72.619% {
95
- opacity: 0;
96
- }
97
- 100% {
98
- opacity: 0;
99
- }
100
- }
101
- @keyframes dhTileFade5 {
102
- 0% {
103
- opacity: 0;
104
- }
105
- 15.4762% {
106
- opacity: 0;
107
- }
108
- 32.1429% {
109
- opacity: 1;
110
- }
111
- 50% {
112
- opacity: 1;
113
- }
114
- 67.8571% {
115
- opacity: 0;
116
- }
117
- 100% {
118
- opacity: 0;
119
- }
120
- }
121
- @keyframes dhTileFade6 {
122
- 0% {
123
- opacity: 0;
124
- }
125
- 10.7143% {
126
- opacity: 0;
127
- }
128
- 27.3809% {
129
- opacity: 1;
130
- }
131
- 73.8095% {
132
- opacity: 1;
133
- }
134
- 91.6667% {
135
- opacity: 0;
136
- }
137
- 100% {
138
- opacity: 0;
139
- }
140
- }
141
- @keyframes dhTileFade7 {
142
- 0% {
143
- opacity: 0;
144
- }
145
- 5.9524% {
146
- opacity: 0;
147
- }
148
- 22.619% {
149
- opacity: 1;
150
- }
151
- 69.0476% {
152
- opacity: 1;
153
- }
154
- 86.9048% {
155
- opacity: 0;
156
- }
157
- 100% {
158
- opacity: 0;
159
- }
160
- }
161
- @keyframes dhTileFade4 {
162
- 0% {
163
- opacity: 0;
164
- }
165
- 1.1905% {
166
- opacity: 0;
167
- }
168
- 17.8571% {
169
- opacity: 1;
170
- }
171
- 64.2857% {
172
- opacity: 1;
173
- }
174
- 82.1429% {
175
- opacity: 0;
176
- }
177
- 100% {
178
- opacity: 0;
179
- }
180
- }
181
-
182
- /*# sourceMappingURL=DeephavenSpinner.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/DeephavenSpinner.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGF;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE","file":"DeephavenSpinner.css"}
@@ -1,15 +0,0 @@
1
- /// <reference types="react" />
2
- import './DeephavenSpinner.scss';
3
- interface DeephavenSpinnerProps {
4
- className?: string;
5
- show?: boolean;
6
- 'data-testid'?: string;
7
- }
8
- /**
9
- * Break apart a generated svg into indivdual svg layers, to allow each to be animated on the GPU
10
- * CSS animations that reach into the svg are blocking since SVG aren't drawn by the gpu, only animations
11
- * that are performed on the whole svg remain hardware accelerated.
12
- */
13
- declare const DeephavenSpinner: ({ className, show, "data-testid": dataTestId, }: DeephavenSpinnerProps) => JSX.Element;
14
- export default DeephavenSpinner;
15
- //# sourceMappingURL=DeephavenSpinner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeephavenSpinner.d.ts","sourceRoot":"","sources":["../src/DeephavenSpinner.tsx"],"names":[],"mappings":";AACA,OAAO,yBAAyB,CAAC;AAGjC,UAAU,qBAAqB;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,QAAA,MAAM,gBAAgB,oDAInB,qBAAqB,KAAG,WAsF1B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,105 +0,0 @@
1
- import React from 'react';
2
- import "./DeephavenSpinner.css";
3
- import classNames from 'classnames';
4
-
5
- /**
6
- * Break apart a generated svg into indivdual svg layers, to allow each to be animated on the GPU
7
- * CSS animations that reach into the svg are blocking since SVG aren't drawn by the gpu, only animations
8
- * that are performed on the whole svg remain hardware accelerated.
9
- */
10
- var DeephavenSpinner = _ref => {
11
- var {
12
- className = '',
13
- show = true,
14
- 'data-testid': dataTestId
15
- } = _ref;
16
- return /*#__PURE__*/React.createElement("div", {
17
- className: classNames('dh-loader', className, {
18
- show
19
- }),
20
- "data-testid": dataTestId
21
- }, /*#__PURE__*/React.createElement("svg", {
22
- className: "dh-outer-shape",
23
- viewBox: "0 0 182 182"
24
- }, /*#__PURE__*/React.createElement("g", {
25
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
26
- }, /*#__PURE__*/React.createElement("path", {
27
- d: "M82.7429,0L82.7429,41.3714L45.2571,41.3714L45.2571,0L0,0L0,128L45.2571,128L45.2571,86.6286L82.5143,86.6286L82.5143,128L128,128L128,0L82.7429,0ZM41.3714,124.114L4.11429,124.114L4.11429,86.6286L41.3714,86.6286L41.3714,124.114ZM41.3714,82.7429L4.11429,82.7429L4.11429,45.2571L41.3714,45.2571L41.3714,82.7429ZM41.3714,41.3714L4.11429,41.3714L4.11429,4.11429L41.3714,4.11429L41.3714,41.3714ZM45.2571,82.7429L45.2571,45.2571L82.5143,45.2571L82.5143,82.5143L45.2571,82.5143ZM124.114,124.114L86.6286,124.114L86.6286,86.6286L123.886,86.6286L123.886,124.114ZM124.114,82.7429L86.6286,82.7429L86.6286,45.2571L123.886,45.2571L123.886,82.7429ZM86.6286,41.3714L86.6286,4.11429L123.886,4.11429L123.886,41.3714L86.6286,41.3714Z",
28
- fill: "#f0f0ee"
29
- }))), /*#__PURE__*/React.createElement("svg", {
30
- className: "dh-loader-tile dh-loader-tile-3",
31
- viewBox: "0 0 182 182"
32
- }, /*#__PURE__*/React.createElement("g", {
33
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
34
- }, /*#__PURE__*/React.createElement("g", {
35
- transform: "translate(63.9589,64.0492) translate(-59.9751,-63.9508)"
36
- }, /*#__PURE__*/React.createElement("rect", {
37
- width: "37.3438",
38
- height: "37.6389",
39
- fill: "#5189e5",
40
- transform: "translate(-21.9838,29.7957) translate(21.9838,15.3027)"
41
- })))), /*#__PURE__*/React.createElement("svg", {
42
- className: "dh-loader-tile dh-loader-tile-2",
43
- viewBox: "0 0 182 182"
44
- }, /*#__PURE__*/React.createElement("g", {
45
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
46
- }, /*#__PURE__*/React.createElement("g", {
47
- transform: "translate(63.9589,64.0492) translate(-59.9751,-63.9508)"
48
- }, /*#__PURE__*/React.createElement("rect", {
49
- width: "37.2755",
50
- height: "37.4675",
51
- fill: "#5189e5",
52
- transform: "translate(-21.9838,69.7957) translate(22.0822,16.7783)"
53
- })))), /*#__PURE__*/React.createElement("svg", {
54
- className: "dh-loader-tile dh-loader-tile-5",
55
- viewBox: "0 0 182 182"
56
- }, /*#__PURE__*/React.createElement("g", {
57
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
58
- }, /*#__PURE__*/React.createElement("g", {
59
- transform: "translate(63.9589,64.0492) translate(-59.9751,-63.9508)"
60
- }, /*#__PURE__*/React.createElement("rect", {
61
- width: "37.3512",
62
- height: "41.3781",
63
- fill: "#35618c",
64
- transform: "translate(18.0162,72.7957) translate(23.1643,13.7278)"
65
- })))), /*#__PURE__*/React.createElement("svg", {
66
- className: "dh-loader-tile dh-loader-tile-6",
67
- viewBox: "0 0 182 182"
68
- }, /*#__PURE__*/React.createElement("g", {
69
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
70
- }, /*#__PURE__*/React.createElement("g", {
71
- transform: "translate(63.9589,64.0492) translate(-59.9751,-63.9508)"
72
- }, /*#__PURE__*/React.createElement("rect", {
73
- width: "37.2483",
74
- height: "37.5869",
75
- fill: "#35618c",
76
- transform: "translate(59.0162,29.7957) translate(23.6379,15.3564)"
77
- })))), /*#__PURE__*/React.createElement("svg", {
78
- className: "dh-loader-tile dh-loader-tile-7",
79
- viewBox: "0 0 182 182"
80
- }, /*#__PURE__*/React.createElement("g", {
81
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
82
- }, /*#__PURE__*/React.createElement("g", {
83
- transform: "translate(63.9589,64.0492) translate(-59.9751,-63.9508)"
84
- }, /*#__PURE__*/React.createElement("rect", {
85
- width: "37.5664",
86
- height: "41.2747",
87
- fill: "#35618c",
88
- transform: "translate(17.0162,-13.2043) translate(24.2531,13.2043)"
89
- })))), /*#__PURE__*/React.createElement("svg", {
90
- className: "dh-loader-tile dh-loader-tile-4",
91
- viewBox: "0 0 182 182"
92
- }, /*#__PURE__*/React.createElement("g", {
93
- transform: "translate(91,91.0033) translate(-64,-64.0033)"
94
- }, /*#__PURE__*/React.createElement("g", {
95
- transform: "translate(63.9589,64.0492) translate(-59.9751,-63.9508)"
96
- }, /*#__PURE__*/React.createElement("rect", {
97
- width: "37.2854",
98
- height: "37.3014",
99
- fill: "#5189e5",
100
- transform: "translate(-21.9838,-13.2043) translate(22.0822,17.1792)"
101
- })))));
102
- };
103
-
104
- export default DeephavenSpinner;
105
- //# sourceMappingURL=DeephavenSpinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeephavenSpinner.js","names":["React","classNames","DeephavenSpinner","className","show","dataTestId"],"sources":["../src/DeephavenSpinner.tsx"],"sourcesContent":["import React from 'react';\nimport './DeephavenSpinner.scss';\nimport classNames from 'classnames';\n\ninterface DeephavenSpinnerProps {\n className?: string;\n show?: boolean;\n 'data-testid'?: string;\n}\n\n/**\n * Break apart a generated svg into indivdual svg layers, to allow each to be animated on the GPU\n * CSS animations that reach into the svg are blocking since SVG aren't drawn by the gpu, only animations\n * that are performed on the whole svg remain hardware accelerated.\n */\nconst DeephavenSpinner = ({\n className = '',\n show = true,\n 'data-testid': dataTestId,\n}: DeephavenSpinnerProps): JSX.Element => (\n <div\n className={classNames('dh-loader', className, { show })}\n data-testid={dataTestId}\n >\n <svg className=\"dh-outer-shape\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <path\n d=\"M82.7429,0L82.7429,41.3714L45.2571,41.3714L45.2571,0L0,0L0,128L45.2571,128L45.2571,86.6286L82.5143,86.6286L82.5143,128L128,128L128,0L82.7429,0ZM41.3714,124.114L4.11429,124.114L4.11429,86.6286L41.3714,86.6286L41.3714,124.114ZM41.3714,82.7429L4.11429,82.7429L4.11429,45.2571L41.3714,45.2571L41.3714,82.7429ZM41.3714,41.3714L4.11429,41.3714L4.11429,4.11429L41.3714,4.11429L41.3714,41.3714ZM45.2571,82.7429L45.2571,45.2571L82.5143,45.2571L82.5143,82.5143L45.2571,82.5143ZM124.114,124.114L86.6286,124.114L86.6286,86.6286L123.886,86.6286L123.886,124.114ZM124.114,82.7429L86.6286,82.7429L86.6286,45.2571L123.886,45.2571L123.886,82.7429ZM86.6286,41.3714L86.6286,4.11429L123.886,4.11429L123.886,41.3714L86.6286,41.3714Z\"\n fill=\"#f0f0ee\"\n />\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-3\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.3438\"\n height=\"37.6389\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,29.7957) translate(21.9838,15.3027)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-2\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2755\"\n height=\"37.4675\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,69.7957) translate(22.0822,16.7783)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-5\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.3512\"\n height=\"41.3781\"\n fill=\"#35618c\"\n transform=\"translate(18.0162,72.7957) translate(23.1643,13.7278)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-6\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2483\"\n height=\"37.5869\"\n fill=\"#35618c\"\n transform=\"translate(59.0162,29.7957) translate(23.6379,15.3564)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-7\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.5664\"\n height=\"41.2747\"\n fill=\"#35618c\"\n transform=\"translate(17.0162,-13.2043) translate(24.2531,13.2043)\"\n />\n </g>\n </g>\n </svg>\n <svg className=\"dh-loader-tile dh-loader-tile-4\" viewBox=\"0 0 182 182\">\n <g transform=\"translate(91,91.0033) translate(-64,-64.0033)\">\n <g transform=\"translate(63.9589,64.0492) translate(-59.9751,-63.9508)\">\n <rect\n width=\"37.2854\"\n height=\"37.3014\"\n fill=\"#5189e5\"\n transform=\"translate(-21.9838,-13.2043) translate(22.0822,17.1792)\"\n />\n </g>\n </g>\n </svg>\n </div>\n);\n\nexport default DeephavenSpinner;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,OAAOC,UAAP,MAAuB,YAAvB;;AAQA;AACA;AACA;AACA;AACA;AACA,IAAMC,gBAAgB,GAAG;EAAA,IAAC;IACxBC,SAAS,GAAG,EADY;IAExBC,IAAI,GAAG,IAFiB;IAGxB,eAAeC;EAHS,CAAD;EAAA,oBAKvB;IACE,SAAS,EAAEJ,UAAU,CAAC,WAAD,EAAcE,SAAd,EAAyB;MAAEC;IAAF,CAAzB,CADvB;IAEE,eAAaC;EAFf,gBAIE;IAAK,SAAS,EAAC,gBAAf;IAAgC,OAAO,EAAC;EAAxC,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,CAAC,EAAC,wsBADJ;IAEE,IAAI,EAAC;EAFP,EADF,CADF,CAJF,eAYE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAZF,eAwBE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAxBF,eAoCE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CApCF,eAgDE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAhDF,eA4DE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CA5DF,eAwEE;IAAK,SAAS,EAAC,iCAAf;IAAiD,OAAO,EAAC;EAAzD,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IAAG,SAAS,EAAC;EAAb,gBACE;IACE,KAAK,EAAC,SADR;IAEE,MAAM,EAAC,SAFT;IAGE,IAAI,EAAC,SAHP;IAIE,SAAS,EAAC;EAJZ,EADF,CADF,CADF,CAxEF,CALuB;AAAA,CAAzB;;AA4FA,eAAeH,gBAAf"}