@deephaven/components 0.44.2-provenance.4 → 0.45.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/DraggableItemList.d.ts +1 -1
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js +3 -1
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/MaskedInput.d.ts +1 -1
- package/dist/MaskedInput.d.ts.map +1 -1
- package/dist/MaskedInput.js.map +1 -1
- package/dist/ThemeExport.d.ts +1 -1
- package/dist/ThemeExport.d.ts.map +1 -1
- package/dist/ThemeExport.js.map +1 -1
- package/dist/TimeSlider.css.map +1 -1
- package/dist/TimeSlider.module.css.map +1 -1
- package/dist/ToastNotification.d.ts +1 -1
- package/dist/ToastNotification.d.ts.map +1 -1
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.css.map +1 -1
- package/dist/context-actions/ContextMenu.d.ts.map +1 -1
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/navigation/Stack.d.ts.map +1 -1
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/popper/Popper.css.map +1 -1
- package/dist/popper/Popper.d.ts.map +1 -1
- package/dist/popper/Popper.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.js","names":["React","PureComponent","classNames","Log","PromiseUtils","ContextActionUtils","ContextMenuItem","LoadingSpinner","log","module","ContextMenu","handleContextMenu","e","metaKey","stopPropagation","preventDefault","constructor","props","handleBlur","bind","handleCloseSubMenu","handleKeyDown","handleMenuItemClick","handleMenuItemContextMenu","handleMenuItemMouseMove","handleMouseLeave","handleWindowResize","container","createRef","oldFocus","document","activeElement","activeSubMenuRef","subMenuTimer","rAF","initialPosition","top","left","state","menuItems","pendingItems","activeSubMenu","hasOverflow","subMenuTop","subMenuLeft","subMenuParentWidth","subMenuParentHeight","keyboardIndex","mouseIndex","componentDidMount","initMenu","verifyPosition","window","addEventListener","requestAnimationFrame","current","focus","onMenuOpened","componentDidUpdate","prevProps","prevState","actions","setActiveSubMenuPosition","contains","componentWillUnmount","cancelPromises","removeEventListener","cancelAnimationFrame","getKeyboardIndex","options","separateKeyboardMouse","undefined","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","initialKeyboardIndex","getMenuItems","nonPromiseItems","i","length","menuItem","Promise","initMenuPromise","push","sortActions","promise","cancellablePromise","makeCancelable","concat","then","resolvedMenuItems","indexOf","slice","splice","error","isCanceled","map","item","cancel","parentRect","getBoundingClientRect","right","height","width","updatePosition","oldTop","oldLeft","doNotVerifyPosition","scrollHeight","innerHeight","innerWidth","closeMenu","warn","relatedTarget","element","isContextMenuChild","hasAttribute","parentElement","isEscapeKey","key","newFocus","openSubMenu","shiftKey","getNextMenuItem","HTMLElement","newSubMenu","closeAll","onMenuClosed","closeSubMenu","closeAllMenus","disabled","action","focusIndex","render","menuItemElements","group","menuItemElement","pendingElement","menuStyle","dataTestId","showSubmenu","verifiedTop","verifiedLeft"],"sources":["../../src/context-actions/ContextMenu.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils, CancelablePromise } from '@deephaven/utils';\nimport ContextActionUtils, {\n ContextAction,\n ResolvableContextAction,\n} from './ContextActionUtils';\nimport ContextMenuItem from './ContextMenuItem';\nimport LoadingSpinner from '../LoadingSpinner';\n\nconst log = Log.module('ContextMenu');\n\ninterface ContextMenuProps {\n top: number;\n left: number;\n updatePosition(top: number, left: number): void;\n // only submenus will have these, defaults to 0 otherwise\n // represents the width height of the parent menu item\n subMenuParentWidth: number;\n subMenuParentHeight: number;\n actions: ResolvableContextAction[];\n closeMenu(closeAll: boolean): void;\n onMenuClosed(menu: ContextMenu): void;\n onMenuOpened(menu: ContextMenu): void;\n options: {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n };\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n}\n\ninterface ContextMenuState {\n menuItems: ContextAction[];\n pendingItems: CancelablePromise<ContextAction[]>[];\n activeSubMenu: number | null;\n hasOverflow: boolean;\n subMenuTop: number | null;\n subMenuLeft: number | null;\n subMenuParentWidth: number;\n subMenuParentHeight: number;\n keyboardIndex: number;\n mouseIndex: number;\n}\n\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent<ContextMenuProps, ContextMenuState> {\n static defaultProps = {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n static handleContextMenu(e: React.MouseEvent): void {\n if (e.metaKey) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n constructor(props: ContextMenuProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n\n this.initialPosition = { top: props.top, left: props.left };\n\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.verifyPosition();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n this.container.current?.focus();\n\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(\n prevProps: ContextMenuProps,\n prevState: ContextMenuState\n ): void {\n const { actions } = this.props;\n const { activeSubMenu } = this.state;\n\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n // close sub menu, refocus parent menu\n this.container.current?.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n\n if (prevProps.actions !== actions) {\n this.initMenu();\n\n if (\n this.container.current == null ||\n !this.container.current.contains(document.activeElement)\n ) {\n this.container.current?.focus();\n }\n }\n\n this.verifyPosition();\n }\n\n componentWillUnmount(): void {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n activeSubMenuRef: React.RefObject<HTMLDivElement>;\n\n subMenuTimer: number;\n\n rAF: number;\n\n initialPosition: { top: number; left: number };\n\n getKeyboardIndex(): number {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n\n const { options } = this.props;\n let keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions);\n const nonPromiseItems: ContextAction[] = [];\n for (let i = menuItems.length - 1; i >= 0; i -= 1) {\n const menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem as Promise<ContextAction[]>);\n } else {\n nonPromiseItems.push(menuItem as ContextAction);\n }\n }\n\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems),\n });\n }\n\n initMenuPromise(promise: Promise<ContextAction[]>): void {\n // make all promises cancellable\n const cancellablePromise = PromiseUtils.makeCancelable(promise);\n\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise),\n }));\n\n cancellablePromise.then(\n resolvedMenuItems => {\n this.setState(state => {\n const index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n const pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n\n return {\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(resolvedMenuItems)\n ),\n pendingItems,\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n },\n error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n const index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n const pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems,\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n }\n );\n }\n\n cancelPromises(): void {\n const { pendingItems } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition(): void {\n if (this.activeSubMenuRef.current === null) return;\n const parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width,\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition(): void {\n const {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft,\n } = this.props;\n\n if (\n !this.container.current ||\n (options.doNotVerifyPosition != null && options.doNotVerifyPosition)\n ) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n let { top, left } = this.initialPosition;\n const {\n width,\n height,\n } = this.container.current?.getBoundingClientRect() ?? {\n width: 0,\n height: 0,\n };\n const hasOverflow =\n (this.container.current?.scrollHeight ?? 0) > window.innerHeight;\n\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({ hasOverflow });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize(): void {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n\n handleBlur(e: React.FocusEvent<HTMLDivElement>): void {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n\n if (!this.container.current.contains(e.relatedTarget as Node)) {\n let element: HTMLElement | null = e.relatedTarget as HTMLElement;\n let isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key: string): boolean {\n const { left } = this.props;\n return (\n key === 'Escape' ||\n (left < 0 && key === 'ArrowRight') ||\n key === 'ArrowLeft'\n );\n }\n\n handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus: number | null = oldFocus;\n let openSubMenu = false;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(\n menuItems[oldFocus],\n (e as React.SyntheticEvent) as React.MouseEvent\n );\n }\n return;\n }\n\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n openSubMenu(index: number): void {\n const { menuItems, activeSubMenu } = this.state;\n const newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null,\n });\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n closeSubMenu(): void {\n this.setState({\n activeSubMenu: null,\n });\n }\n\n handleCloseSubMenu(closeAllMenus: boolean): void {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.MouseEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n const { menuItems } = this.state;\n if (\n menuItem != null &&\n (menuItem.disabled === undefined || !menuItem.disabled)\n ) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action();\n this.closeMenu(true);\n }\n }\n }\n\n handleMenuItemContextMenu(\n menuItem: ContextAction,\n e: React.MouseEvent\n ): void {\n if (e.metaKey) {\n return;\n }\n\n this.handleMenuItemClick(menuItem, e);\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n\n if (\n focusIndex >= 0 &&\n focusIndex < menuItems.length &&\n (menuItem.disabled === undefined || !menuItem.disabled)\n ) {\n this.openSubMenu(focusIndex);\n }\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { top, left } = this.props;\n const {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight,\n } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n ref={activeSubMenu === i ? this.activeSubMenuRef : null}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseSubMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={this.handleMenuItemContextMenu}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n let pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = (\n <div className=\"loading\">\n <LoadingSpinner />\n </div>\n );\n }\n\n const { menuStyle, 'data-testid': dataTestId } = this.props;\n\n // don't show submenu until it has an position initialized\n const showSubmenu =\n activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n\n return (\n <>\n <div\n className={classNames(\n { 'has-overflow': hasOverflow },\n 'context-menu-container'\n )}\n style={{ top, left, ...menuStyle }}\n ref={this.container}\n data-dh-context-menu\n onBlur={this.handleBlur}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n onContextMenu={ContextMenu.handleContextMenu}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n {pendingElement}\n </div>\n {showSubmenu &&\n activeSubMenu !== null &&\n subMenuTop !== null &&\n subMenuLeft !== null && (\n <ContextMenu\n key={`sub-${activeSubMenu}`}\n actions={menuItems[activeSubMenu].actions || []}\n closeMenu={this.handleCloseSubMenu}\n top={subMenuTop}\n left={subMenuLeft}\n updatePosition={(verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft,\n });\n }}\n subMenuParentWidth={subMenuParentWidth}\n subMenuParentHeight={subMenuParentHeight}\n />\n )}\n </>\n );\n }\n}\n\nexport default ContextMenu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","names":["React","PureComponent","classNames","Log","PromiseUtils","ContextActionUtils","ContextMenuItem","LoadingSpinner","log","module","ContextMenu","handleContextMenu","e","metaKey","stopPropagation","preventDefault","constructor","props","handleBlur","bind","handleCloseSubMenu","handleKeyDown","handleMenuItemClick","handleMenuItemContextMenu","handleMenuItemMouseMove","handleMouseLeave","handleWindowResize","container","createRef","oldFocus","document","activeElement","activeSubMenuRef","subMenuTimer","rAF","initialPosition","top","left","state","menuItems","pendingItems","activeSubMenu","hasOverflow","subMenuTop","subMenuLeft","subMenuParentWidth","subMenuParentHeight","keyboardIndex","mouseIndex","componentDidMount","initMenu","verifyPosition","window","addEventListener","requestAnimationFrame","current","focus","onMenuOpened","componentDidUpdate","prevProps","prevState","actions","setActiveSubMenuPosition","contains","componentWillUnmount","cancelPromises","removeEventListener","cancelAnimationFrame","getKeyboardIndex","options","separateKeyboardMouse","undefined","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","initialKeyboardIndex","getMenuItems","nonPromiseItems","i","length","menuItem","Promise","initMenuPromise","push","sortActions","promise","cancellablePromise","makeCancelable","concat","then","resolvedMenuItems","indexOf","slice","splice","error","isCanceled","map","item","cancel","parentRect","getBoundingClientRect","right","height","width","updatePosition","oldTop","oldLeft","doNotVerifyPosition","scrollHeight","innerHeight","innerWidth","closeMenu","warn","relatedTarget","element","isContextMenuChild","hasAttribute","parentElement","isEscapeKey","key","newFocus","openSubMenu","shiftKey","getNextMenuItem","HTMLElement","newSubMenu","closeAll","onMenuClosed","closeSubMenu","closeAllMenus","disabled","action","focusIndex","render","menuItemElements","group","menuItemElement","pendingElement","menuStyle","dataTestId","showSubmenu","verifiedTop","verifiedLeft"],"sources":["../../src/context-actions/ContextMenu.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils, CancelablePromise } from '@deephaven/utils';\nimport ContextActionUtils, {\n ContextAction,\n ResolvableContextAction,\n} from './ContextActionUtils';\nimport ContextMenuItem from './ContextMenuItem';\nimport LoadingSpinner from '../LoadingSpinner';\n\nconst log = Log.module('ContextMenu');\n\ninterface ContextMenuProps {\n top: number;\n left: number;\n updatePosition(top: number, left: number): void;\n // only submenus will have these, defaults to 0 otherwise\n // represents the width height of the parent menu item\n subMenuParentWidth: number;\n subMenuParentHeight: number;\n actions: ResolvableContextAction[];\n closeMenu(closeAll: boolean): void;\n onMenuClosed(menu: ContextMenu): void;\n onMenuOpened(menu: ContextMenu): void;\n options: {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n };\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n}\n\ninterface ContextMenuState {\n menuItems: ContextAction[];\n pendingItems: CancelablePromise<ContextAction[]>[];\n activeSubMenu: number | null;\n hasOverflow: boolean;\n subMenuTop: number | null;\n subMenuLeft: number | null;\n subMenuParentWidth: number;\n subMenuParentHeight: number;\n keyboardIndex: number;\n mouseIndex: number;\n}\n\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent<ContextMenuProps, ContextMenuState> {\n static defaultProps = {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n static handleContextMenu(e: React.MouseEvent): void {\n if (e.metaKey) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n constructor(props: ContextMenuProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n\n this.initialPosition = { top: props.top, left: props.left };\n\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.verifyPosition();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n this.container.current?.focus();\n\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(\n prevProps: ContextMenuProps,\n prevState: ContextMenuState\n ): void {\n const { actions } = this.props;\n const { activeSubMenu } = this.state;\n\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n // close sub menu, refocus parent menu\n this.container.current?.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n\n if (prevProps.actions !== actions) {\n this.initMenu();\n\n if (\n this.container.current == null ||\n !this.container.current.contains(document.activeElement)\n ) {\n this.container.current?.focus();\n }\n }\n\n this.verifyPosition();\n }\n\n componentWillUnmount(): void {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n activeSubMenuRef: React.RefObject<HTMLDivElement>;\n\n subMenuTimer: number;\n\n rAF: number;\n\n initialPosition: { top: number; left: number };\n\n getKeyboardIndex(): number {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n\n const { options } = this.props;\n let keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions);\n const nonPromiseItems: ContextAction[] = [];\n for (let i = menuItems.length - 1; i >= 0; i -= 1) {\n const menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem as Promise<ContextAction[]>);\n } else {\n nonPromiseItems.push(menuItem as ContextAction);\n }\n }\n\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems),\n });\n }\n\n initMenuPromise(promise: Promise<ContextAction[]>): void {\n // make all promises cancellable\n const cancellablePromise = PromiseUtils.makeCancelable(promise);\n\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise),\n }));\n\n cancellablePromise.then(\n resolvedMenuItems => {\n this.setState(state => {\n const index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n const pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n\n return {\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(resolvedMenuItems)\n ),\n pendingItems,\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n },\n error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n const index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n const pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems,\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n }\n );\n }\n\n cancelPromises(): void {\n const { pendingItems } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition(): void {\n if (this.activeSubMenuRef.current === null) return;\n const parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width,\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition(): void {\n const {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft,\n } = this.props;\n\n if (\n !this.container.current ||\n (options.doNotVerifyPosition != null && options.doNotVerifyPosition)\n ) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n let { top, left } = this.initialPosition;\n const { width, height } =\n this.container.current?.getBoundingClientRect() ?? {\n width: 0,\n height: 0,\n };\n const hasOverflow =\n (this.container.current?.scrollHeight ?? 0) > window.innerHeight;\n\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({ hasOverflow });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize(): void {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n\n handleBlur(e: React.FocusEvent<HTMLDivElement>): void {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n\n if (!this.container.current.contains(e.relatedTarget as Node)) {\n let element: HTMLElement | null = e.relatedTarget as HTMLElement;\n let isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key: string): boolean {\n const { left } = this.props;\n return (\n key === 'Escape' ||\n (left < 0 && key === 'ArrowRight') ||\n key === 'ArrowLeft'\n );\n }\n\n handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus: number | null = oldFocus;\n let openSubMenu = false;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(\n menuItems[oldFocus],\n e as React.SyntheticEvent as React.MouseEvent\n );\n }\n return;\n }\n\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || (e.shiftKey && e.key === 'Tab')) {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n openSubMenu(index: number): void {\n const { menuItems, activeSubMenu } = this.state;\n const newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null,\n });\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n closeSubMenu(): void {\n this.setState({\n activeSubMenu: null,\n });\n }\n\n handleCloseSubMenu(closeAllMenus: boolean): void {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.MouseEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n const { menuItems } = this.state;\n if (\n menuItem != null &&\n (menuItem.disabled === undefined || !menuItem.disabled)\n ) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action();\n this.closeMenu(true);\n }\n }\n }\n\n handleMenuItemContextMenu(\n menuItem: ContextAction,\n e: React.MouseEvent\n ): void {\n if (e.metaKey) {\n return;\n }\n\n this.handleMenuItemClick(menuItem, e);\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n\n if (\n focusIndex >= 0 &&\n focusIndex < menuItems.length &&\n (menuItem.disabled === undefined || !menuItem.disabled)\n ) {\n this.openSubMenu(focusIndex);\n }\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { top, left } = this.props;\n const {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight,\n } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n ref={activeSubMenu === i ? this.activeSubMenuRef : null}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseSubMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={this.handleMenuItemContextMenu}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n let pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = (\n <div className=\"loading\">\n <LoadingSpinner />\n </div>\n );\n }\n\n const { menuStyle, 'data-testid': dataTestId } = this.props;\n\n // don't show submenu until it has an position initialized\n const showSubmenu =\n activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n\n return (\n <>\n <div\n className={classNames(\n { 'has-overflow': hasOverflow },\n 'context-menu-container'\n )}\n style={{ top, left, ...menuStyle }}\n ref={this.container}\n data-dh-context-menu\n onBlur={this.handleBlur}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n onContextMenu={ContextMenu.handleContextMenu}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n {pendingElement}\n </div>\n {showSubmenu &&\n activeSubMenu !== null &&\n subMenuTop !== null &&\n subMenuLeft !== null && (\n <ContextMenu\n key={`sub-${activeSubMenu}`}\n actions={menuItems[activeSubMenu].actions || []}\n closeMenu={this.handleCloseSubMenu}\n top={subMenuTop}\n left={subMenuLeft}\n updatePosition={(verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft,\n });\n }}\n subMenuParentWidth={subMenuParentWidth}\n subMenuParentHeight={subMenuParentHeight}\n />\n )}\n </>\n );\n }\n}\n\nexport default ContextMenu;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/navigation/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAIzE,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/navigation/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAIzE,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CAqG1B;AAED,eAAe,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.js","names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","dataTestId","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","initAnimation","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"sources":["../../src/navigation/Stack.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport ThemeExport from '../ThemeExport';\nimport './Stack.scss';\n\nexport type StackProps = {\n children: React.ReactNode | React.ReactNode[];\n 'data-testid'?: string;\n};\n\n/**\n * Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.\n * Adding items to the stack will do a \"push\" animation, and removing items from the stack will do a \"pop\" animation.\n */\nexport function Stack({\n children,\n 'data-testid': dataTestId,\n}: StackProps): JSX.Element {\n const childrenArray = useMemo(() => React.Children.toArray(children)
|
|
1
|
+
{"version":3,"file":"Stack.js","names":["React","useState","useEffect","useMemo","useCallback","CSSTransition","usePrevious","ThemeExport","Stack","children","dataTestId","childrenArray","Children","toArray","prevChildrenArray","mainView","setMainView","length","pushingView","setPushingView","poppingView","setPoppingView","initAnimation","undefined","topChild","pushComplete","popComplete","transitionMidMs"],"sources":["../../src/navigation/Stack.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport ThemeExport from '../ThemeExport';\nimport './Stack.scss';\n\nexport type StackProps = {\n children: React.ReactNode | React.ReactNode[];\n 'data-testid'?: string;\n};\n\n/**\n * Pass a full navigation stack of children, and then automatically does a sliding animation when the stack changes.\n * Adding items to the stack will do a \"push\" animation, and removing items from the stack will do a \"pop\" animation.\n */\nexport function Stack({\n children,\n 'data-testid': dataTestId,\n}: StackProps): JSX.Element {\n const childrenArray = useMemo(\n () => React.Children.toArray(children),\n [children]\n );\n const prevChildrenArray = usePrevious(childrenArray);\n const [mainView, setMainView] = useState<React.ReactNode>(\n childrenArray[childrenArray.length - 1]\n );\n\n const [pushingView, setPushingView] = useState<React.ReactNode>(null);\n const [poppingView, setPoppingView] = useState<React.ReactNode>(null);\n\n /**\n * To do the animation effect, we just need to set the proper pushing/popping views when the stack changes.\n * `mainView` - The main view of the stack, stationary, filling the container.\n * `pushingView` - A view that's currently being pushed. Slides from off screen right to overtop of `mainView`.\n * `poppingView` - A view that's currently being popped. Slides from overtop of `mainView` to right off screen.\n *\n * When the `pushingView` or `poppingView` is set, that will kick off their animation.\n * Completion of the animation is handled in `pushComplete` or `popComplete`, and then the stack is in an idle state again.\n */\n useEffect(\n function initAnimation() {\n if (\n prevChildrenArray === undefined ||\n childrenArray === prevChildrenArray\n ) {\n return;\n }\n const topChild = childrenArray[childrenArray.length - 1];\n if (\n childrenArray.length === prevChildrenArray.length ||\n prevChildrenArray.length === 0 ||\n pushingView !== null ||\n poppingView !== null\n ) {\n // 1) Stack is the same size, we've just mounted, or we're already in an animation - just update the view\n if (pushingView !== null && topChild !== pushingView) {\n // Stack was updated mid animation\n setPushingView(topChild);\n } else if (topChild !== poppingView && topChild !== mainView) {\n // Replace the current view\n setMainView(topChild);\n }\n } else if (childrenArray.length > prevChildrenArray.length) {\n // 2) Stack has grown - start the push animation\n setPushingView(topChild);\n } else if (childrenArray.length < prevChildrenArray.length) {\n // 3) Stack has shrunk - start the pop animation\n setMainView(topChild);\n setPoppingView(prevChildrenArray[prevChildrenArray.length - 1]);\n }\n },\n [childrenArray, prevChildrenArray, pushingView, poppingView, mainView]\n );\n\n const pushComplete = useCallback(() => {\n setMainView(pushingView);\n setPushingView(null);\n }, [pushingView]);\n\n const popComplete = useCallback(() => {\n setPoppingView(null);\n }, []);\n\n return (\n <div className=\"navigation-stack\">\n <div className=\"main-view\" data-testid={dataTestId}>\n {mainView}\n </div>\n\n <CSSTransition\n in={poppingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-right\"\n onEntered={popComplete}\n >\n {/* Without the fragment, the transition doesn't work. Without the conditional render, the stack is blank */}\n {/* eslint-disable-next-line react/jsx-no-useless-fragment */}\n <>\n {poppingView != null && (\n <div className=\"popping-view\">{poppingView}</div>\n )}\n </>\n </CSSTransition>\n <CSSTransition\n in={pushingView != null}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntered={pushComplete}\n >\n {/* eslint-disable-next-line react/jsx-no-useless-fragment */}\n <>\n {pushingView != null && (\n <div className=\"pushing-view\">{pushingView}</div>\n )}\n </>\n </CSSTransition>\n </div>\n );\n}\n\nexport default Stack;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,WAAW,QAAQ,OAAO;AACxE,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,WAAW;AAAA;AAQlB;AACA;AACA;AACA;AACA,OAAO,SAASC,KAAK,OAGO;EAAA,IAHN;IACpBC,QAAQ;IACR,aAAa,EAAEC;EACL,CAAC;EACX,IAAMC,aAAa,GAAGR,OAAO,CAC3B,MAAMH,KAAK,CAACY,QAAQ,CAACC,OAAO,CAACJ,QAAQ,CAAC,EACtC,CAACA,QAAQ,CAAC,CACX;EACD,IAAMK,iBAAiB,GAAGR,WAAW,CAACK,aAAa,CAAC;EACpD,IAAM,CAACI,QAAQ,EAAEC,WAAW,CAAC,GAAGf,QAAQ,CACtCU,aAAa,CAACA,aAAa,CAACM,MAAM,GAAG,CAAC,CAAC,CACxC;EAED,IAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGlB,QAAQ,CAAkB,IAAI,CAAC;EACrE,IAAM,CAACmB,WAAW,EAAEC,cAAc,CAAC,GAAGpB,QAAQ,CAAkB,IAAI,CAAC;;EAErE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,SAAS,CACP,SAASoB,aAAa,GAAG;IACvB,IACER,iBAAiB,KAAKS,SAAS,IAC/BZ,aAAa,KAAKG,iBAAiB,EACnC;MACA;IACF;IACA,IAAMU,QAAQ,GAAGb,aAAa,CAACA,aAAa,CAACM,MAAM,GAAG,CAAC,CAAC;IACxD,IACEN,aAAa,CAACM,MAAM,KAAKH,iBAAiB,CAACG,MAAM,IACjDH,iBAAiB,CAACG,MAAM,KAAK,CAAC,IAC9BC,WAAW,KAAK,IAAI,IACpBE,WAAW,KAAK,IAAI,EACpB;MACA;MACA,IAAIF,WAAW,KAAK,IAAI,IAAIM,QAAQ,KAAKN,WAAW,EAAE;QACpD;QACAC,cAAc,CAACK,QAAQ,CAAC;MAC1B,CAAC,MAAM,IAAIA,QAAQ,KAAKJ,WAAW,IAAII,QAAQ,KAAKT,QAAQ,EAAE;QAC5D;QACAC,WAAW,CAACQ,QAAQ,CAAC;MACvB;IACF,CAAC,MAAM,IAAIb,aAAa,CAACM,MAAM,GAAGH,iBAAiB,CAACG,MAAM,EAAE;MAC1D;MACAE,cAAc,CAACK,QAAQ,CAAC;IAC1B,CAAC,MAAM,IAAIb,aAAa,CAACM,MAAM,GAAGH,iBAAiB,CAACG,MAAM,EAAE;MAC1D;MACAD,WAAW,CAACQ,QAAQ,CAAC;MACrBH,cAAc,CAACP,iBAAiB,CAACA,iBAAiB,CAACG,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE;EACF,CAAC,EACD,CAACN,aAAa,EAAEG,iBAAiB,EAAEI,WAAW,EAAEE,WAAW,EAAEL,QAAQ,CAAC,CACvE;EAED,IAAMU,YAAY,GAAGrB,WAAW,CAAC,MAAM;IACrCY,WAAW,CAACE,WAAW,CAAC;IACxBC,cAAc,CAAC,IAAI,CAAC;EACtB,CAAC,EAAE,CAACD,WAAW,CAAC,CAAC;EAEjB,IAAMQ,WAAW,GAAGtB,WAAW,CAAC,MAAM;IACpCiB,cAAc,CAAC,IAAI,CAAC;EACtB,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE;IAAK,SAAS,EAAC;EAAkB,gBAC/B;IAAK,SAAS,EAAC,WAAW;IAAC,eAAaX;EAAW,GAChDK,QAAQ,CACL,eAEN,oBAAC,aAAa;IACZ,EAAE,EAAEK,WAAW,IAAI,IAAK;IACxB,OAAO,EAAEb,WAAW,CAACoB,eAAgB;IACrC,UAAU,EAAC,aAAa;IACxB,SAAS,EAAED;EAAY,gBAIvB,0CACGN,WAAW,IAAI,IAAI,iBAClB;IAAK,SAAS,EAAC;EAAc,GAAEA,WAAW,CAC3C,CACA,CACW,eAChB,oBAAC,aAAa;IACZ,EAAE,EAAEF,WAAW,IAAI,IAAK;IACxB,OAAO,EAAEX,WAAW,CAACoB,eAAgB;IACrC,UAAU,EAAC,YAAY;IACvB,SAAS,EAAEF;EAAa,gBAGxB,0CACGP,WAAW,IAAI,IAAI,iBAClB;IAAK,SAAS,EAAC;EAAc,GAAEA,WAAW,CAC3C,CACA,CACW,CACZ;AAEV;AAEA,eAAeV,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../scss/custom.scss","../../src/popper/Popper.scss","../../scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACOA;EACE;EACA;;;AAGF;EACE,YCWS;EDVT,OCDe;EDEf,eC0Gc;EDzGd;EACA;EACA;;AAEA;EACE;EACA,YAnBY;;AAqBZ;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA,QAjCU;EAkCV,cCZO;;;ADgBX;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;EAOE;EACA;EACA;;;AAGF;EACE,eArFY;;AAuFZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE,YAnGY;;AAqGZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE,aAjHY;;AAmHZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE,cA/HY;;AAiIZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA","file":"Popper.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '../../scss/custom.scss';\n\n$arrow-width: 5px;\n$popper-shadow: 0 0.1rem 1.5rem 0.25rem rgba($black, 0.45);\n$animation-scale: 0.92;\n$animation-offset: 10px;\n\n.popper-container {\n position: absolute;\n z-index: 5000;\n}\n\n.popper {\n background: $tooltip-bg;\n color: $tooltip-color;\n border-radius: $border-radius;\n transition: visibility $transition, opacity $transition;\n pointer-events: none;\n outline: 0;\n\n .popper-content {\n position: relative;\n box-shadow: $popper-shadow;\n\n .tooltip-content {\n text-align: center;\n padding: $tooltip-padding-y $tooltip-padding-x;\n }\n }\n\n .popper-arrow {\n width: 0;\n height: 0;\n border-style: solid;\n position: absolute;\n margin: $arrow-width;\n border-color: $tooltip-bg;\n }\n}\n\n.popper.interactive {\n pointer-events: auto;\n}\n\n.popper-transition-enter {\n opacity: 0;\n transition: none;\n}\n\n.popper-transition-exit {\n opacity: 0;\n transition: all $transition;\n}\n\n.popper-container[x-placement^='top'] > .popper-transition-enter,\n.popper-container[x-placement^='top'] > .popper-transition-exit {\n transform: scale($animation-scale) translate(0, $animation-offset);\n}\n\n.popper-container[x-placement^='right'] > .popper-transition-enter,\n.popper-container[x-placement^='right'] > .popper-transition-exit {\n transform: scale($animation-scale) translate(-$animation-offset, 0);\n}\n\n.popper-container[x-placement^='bottom'] > .popper-transition-enter,\n.popper-container[x-placement^='bottom'] > .popper-transition-exit {\n transform: scale($animation-scale) translate(0, -$animation-offset);\n}\n\n.popper-container[x-placement^='left'] > .popper-transition-enter,\n.popper-container[x-placement^='left'] > .popper-transition-exit {\n transform: scale($animation-scale) translate($animation-offset, 0);\n}\n\n.popper-container[x-placement^='top'] > .popper-transition-enter-active.popper,\n.popper-container[x-placement^='right']\n > .popper-transition-enter-active.popper,\n.popper-container[x-placement^='bottom']\n > .popper-transition-enter-active.popper,\n.popper-container[x-placement^='left']\n > .popper-transition-enter-active.popper {\n opacity: 1;\n transform: none;\n transition: all $transition ease-out;\n}\n\n.popper-container[x-placement^='top'] > .popper {\n margin-bottom: $arrow-width;\n\n .popper-arrow {\n border-width: $arrow-width $arrow-width 0 $arrow-width;\n border-left-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent;\n bottom: -$arrow-width;\n margin-top: 0;\n margin-bottom: 0;\n }\n}\n\n.popper-container[x-placement^='bottom'] > .popper {\n margin-top: $arrow-width;\n\n .popper-arrow {\n border-width: 0 $arrow-width $arrow-width $arrow-width;\n border-left-color: transparent;\n border-right-color: transparent;\n border-top-color: transparent;\n top: -$arrow-width;\n margin-top: 0;\n margin-bottom: 0;\n }\n}\n\n.popper-container[x-placement^='right'] > .popper {\n margin-left: $arrow-width;\n\n .popper-arrow {\n border-width: $arrow-width $arrow-width $arrow-width 0;\n border-left-color: transparent;\n border-top-color: transparent;\n border-bottom-color: transparent;\n left: -$arrow-width;\n margin-left: 0;\n margin-right: 0;\n }\n}\n\n.popper-container[x-placement^='left'] > .popper {\n margin-right: $arrow-width;\n\n .popper-arrow {\n border-width: $arrow-width 0 $arrow-width $arrow-width;\n border-top-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent;\n right: -$arrow-width;\n margin-left: 0;\n margin-right: 0;\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../scss/custom.scss","../../src/popper/Popper.scss","../../scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACOA;EACE;EACA;;;AAGF;EACE,YCWS;EDVT,OCDe;EDEf,eC0Gc;EDzGd,YACE;EAEF;EACA;;AAEA;EACE;EACA,YArBY;;AAuBZ;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA,QAnCU;EAoCV,cCdO;;;ADkBX;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;EAOE;EACA;EACA;;;AAGF;EACE,eAvFY;;AAyFZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE,YArGY;;AAuGZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE,aAnHY;;AAqHZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE,cAjIY;;AAmIZ;EACE;EACA;EACA;EACA;EACA;EACA;EACA","file":"Popper.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '../../scss/custom.scss';\n\n$arrow-width: 5px;\n$popper-shadow: 0 0.1rem 1.5rem 0.25rem rgba($black, 0.45);\n$animation-scale: 0.92;\n$animation-offset: 10px;\n\n.popper-container {\n position: absolute;\n z-index: 5000;\n}\n\n.popper {\n background: $tooltip-bg;\n color: $tooltip-color;\n border-radius: $border-radius;\n transition:\n visibility $transition,\n opacity $transition;\n pointer-events: none;\n outline: 0;\n\n .popper-content {\n position: relative;\n box-shadow: $popper-shadow;\n\n .tooltip-content {\n text-align: center;\n padding: $tooltip-padding-y $tooltip-padding-x;\n }\n }\n\n .popper-arrow {\n width: 0;\n height: 0;\n border-style: solid;\n position: absolute;\n margin: $arrow-width;\n border-color: $tooltip-bg;\n }\n}\n\n.popper.interactive {\n pointer-events: auto;\n}\n\n.popper-transition-enter {\n opacity: 0;\n transition: none;\n}\n\n.popper-transition-exit {\n opacity: 0;\n transition: all $transition;\n}\n\n.popper-container[x-placement^='top'] > .popper-transition-enter,\n.popper-container[x-placement^='top'] > .popper-transition-exit {\n transform: scale($animation-scale) translate(0, $animation-offset);\n}\n\n.popper-container[x-placement^='right'] > .popper-transition-enter,\n.popper-container[x-placement^='right'] > .popper-transition-exit {\n transform: scale($animation-scale) translate(-$animation-offset, 0);\n}\n\n.popper-container[x-placement^='bottom'] > .popper-transition-enter,\n.popper-container[x-placement^='bottom'] > .popper-transition-exit {\n transform: scale($animation-scale) translate(0, -$animation-offset);\n}\n\n.popper-container[x-placement^='left'] > .popper-transition-enter,\n.popper-container[x-placement^='left'] > .popper-transition-exit {\n transform: scale($animation-scale) translate($animation-offset, 0);\n}\n\n.popper-container[x-placement^='top'] > .popper-transition-enter-active.popper,\n.popper-container[x-placement^='right']\n > .popper-transition-enter-active.popper,\n.popper-container[x-placement^='bottom']\n > .popper-transition-enter-active.popper,\n.popper-container[x-placement^='left']\n > .popper-transition-enter-active.popper {\n opacity: 1;\n transform: none;\n transition: all $transition ease-out;\n}\n\n.popper-container[x-placement^='top'] > .popper {\n margin-bottom: $arrow-width;\n\n .popper-arrow {\n border-width: $arrow-width $arrow-width 0 $arrow-width;\n border-left-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent;\n bottom: -$arrow-width;\n margin-top: 0;\n margin-bottom: 0;\n }\n}\n\n.popper-container[x-placement^='bottom'] > .popper {\n margin-top: $arrow-width;\n\n .popper-arrow {\n border-width: 0 $arrow-width $arrow-width $arrow-width;\n border-left-color: transparent;\n border-right-color: transparent;\n border-top-color: transparent;\n top: -$arrow-width;\n margin-top: 0;\n margin-bottom: 0;\n }\n}\n\n.popper-container[x-placement^='right'] > .popper {\n margin-left: $arrow-width;\n\n .popper-arrow {\n border-width: $arrow-width $arrow-width $arrow-width 0;\n border-left-color: transparent;\n border-top-color: transparent;\n border-bottom-color: transparent;\n left: -$arrow-width;\n margin-left: 0;\n margin-right: 0;\n }\n}\n\n.popper-container[x-placement^='left'] > .popper {\n margin-right: $arrow-width;\n\n .popper-arrow {\n border-width: $arrow-width 0 $arrow-width $arrow-width;\n border-top-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent;\n right: -$arrow-width;\n margin-left: 0;\n margin-right: 0;\n }\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,eAAe,CAAC;AAEvB,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,SAAS;;;;;;;;;;;;MAYd;IAEF,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAG3C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IA4ClB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,eAAe,CAAC;AAEvB,UAAU,WAAW;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,SAAS;;;;;;;;;;;;MAYd;IAEF,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAG3C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IA4ClB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;IAoC5B,MAAM,IAAI,GAAG,CAAC,OAAO;CActB;AAED,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","Popper","constructor","props","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","placement","modifiers","preventOverflow","boundariesElement","body","appendChild","parent","scheduleUpdate","contains","activeElement","elem","firstElementChild","HTMLElement","focus","setState","updateState","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","stopPropagation","key","undefined","render","dataTestId","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // for blur on close to work, focus needs to be on or within the popper\n if (closeOnBlur && !this.element.contains(document.activeElement)) {\n // only set focus, if a focus isn't already set within\n const elem = this.element.firstElementChild;\n if (elem instanceof HTMLElement) {\n elem.focus(); // first child of the portal element\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur,\n } = this.props;\n const { show } = this.state;\n\n return (\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames('popper', { interactive }, className)}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,QAAQ,MAA0C,WAAW;AACpE,OAAOC,SAAS,MAAM,YAAY;AAAC,OAC5BC,WAAW;AAAA;AAqBlB,MAAMC,MAAM,SAASP,SAAS,CAA2B;EAgCvDQ,WAAW,CAACC,KAAkB,EAAE;IAC9B,KAAK,CAACA,KAAK,CAAC;IAAC;IAAA;IAAA;IAEb,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACC,UAAU,GAAG,IAAI,CAACA,UAAU,CAACD,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACE,UAAU,GAAG,IAAI,CAACA,UAAU,CAACF,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACG,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC5C,IAAI,CAACF,OAAO,CAACG,SAAS,GAAG,kBAAkB;IAC3C,IAAI,CAACC,SAAS,gBAAGnB,KAAK,CAACoB,SAAS,EAAkB;;IAElD;IACA;IACA,IAAI,CAACC,GAAG,GAAG,CAAC;IAEZ,IAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACZ,KAAK;IAE9B,IAAI,CAACa,KAAK,GAAG;MACXC,IAAI,EAAEF,OAAO;MACbG,MAAM,EAAE;IACV,CAAC;EACH;EAEAC,kBAAkB,CAACC,SAAsB,EAAQ;IAC/C,IAAM;MAAEL;IAAQ,CAAC,GAAG,IAAI,CAACZ,KAAK;IAE9B,IAAIiB,SAAS,CAACL,OAAO,KAAKA,OAAO,EAAE;MACjC,IAAIA,OAAO,EAAE;QACXM,oBAAoB,CAAC,IAAI,CAACP,GAAG,CAAC;QAC9B,IAAI,CAACA,GAAG,GAAGQ,MAAM,CAACC,qBAAqB,CAAC,MAAM;UAC5C,IAAI,CAACN,IAAI,EAAE;QACb,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAI,CAACO,IAAI,EAAE;MACb;IACF;EACF;EAEAC,oBAAoB,GAAS;IAC3B,IAAI,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3B;EASA;EACAC,iBAAiB,CAACnB,OAA2B,EAAsB;IACjE,IACEA,OAAO,IAAI,IAAI,IACfA,OAAO,CAACoB,YAAY,GAAG,CAAC,IACxBpB,OAAO,CAACqB,WAAW,GAAG,CAAC,EACvB;MACA,OAAOrB,OAAO;IAChB;IAEA,OAAO,IAAI,CAACmB,iBAAiB,CAACnB,OAAO,CAACsB,aAAa,CAAC;EACtD;EAEAC,UAAU,GAAS;IACjB,IAAI;MAAEb;IAAO,CAAC,GAAG,IAAI,CAACF,KAAK;IAC3B,IAAM;MAAEgB,WAAW;MAAEC;IAAgB,CAAC,GAAG,IAAI,CAAC9B,KAAK;IAEnD,IAAIe,MAAM,EAAE;MACV;IACF;IAEA,IAAI,IAAI,CAACN,SAAS,CAACsB,OAAO,KAAK,IAAI,EAAE;MACnC;IACF;IAEA,IAAI;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAAChC,KAAK;IAC5BgC,OAAO;MACLC,SAAS,EAAE,MAAM;MACjBC,SAAS,EAAE;QAAEC,eAAe,EAAE;UAAEC,iBAAiB,EAAE;QAAW;MAAE;IAAC,GAC9DJ,OAAO,CACX;IACD1B,QAAQ,CAAC+B,IAAI,CAACC,WAAW,CAAC,IAAI,CAACjC,OAAO,CAAC;IAEvC,IAAIkC,MAAM,GAAG,IAAI,CAACf,iBAAiB,CAAC,IAAI,CAACf,SAAS,CAACsB,OAAO,CAAC;IAC3D,IAAIQ,MAAM,IAAI,IAAI,EAAE;MAClBA,MAAM,GAAG,IAAI,CAAC9B,SAAS,CAACsB,OAAO;IACjC;IAEAhB,MAAM,GAAG,IAAIpB,QAAQ,CAACmC,eAAe,IAAIS,MAAM,EAAE,IAAI,CAAClC,OAAO,EAAE2B,OAAO,CAAC;IACvEjB,MAAM,CAACyB,cAAc,EAAE;;IAEvB;IACAtB,oBAAoB,CAAC,IAAI,CAACP,GAAG,CAAC;IAC9B,IAAI,CAACA,GAAG,GAAGQ,MAAM,CAACC,qBAAqB,CAAC,MAAM;MAC5C;MACA,IAAIS,WAAW,IAAI,CAAC,IAAI,CAACxB,OAAO,CAACoC,QAAQ,CAACnC,QAAQ,CAACoC,aAAa,CAAC,EAAE;QACjE;QACA,IAAMC,IAAI,GAAG,IAAI,CAACtC,OAAO,CAACuC,iBAAiB;QAC3C,IAAID,IAAI,YAAYE,WAAW,EAAE;UAC/BF,IAAI,CAACG,KAAK,EAAE,CAAC,CAAC;QAChB;MACF;IACF,CAAC,CAAC;;IAEF,IAAI,CAACC,QAAQ,CAAC;MAAEhC;IAAO,CAAC,CAAC;EAC3B;EAEAQ,aAAa,GAA2B;IAAA,IAA1ByB,WAAW,uEAAG,IAAI;IAC9B9B,oBAAoB,CAAC,IAAI,CAACP,GAAG,CAAC;IAE9B,IAAM;MAAEI;IAAO,CAAC,GAAG,IAAI,CAACF,KAAK;IAC7B,IAAI,CAACE,MAAM,EAAE;MACX;IACF;IAEAA,MAAM,CAACkC,OAAO,EAAE;;IAEhB;IACA;IACA;IACA,IAAI3C,QAAQ,CAAC+B,IAAI,CAACI,QAAQ,CAAC,IAAI,CAACpC,OAAO,CAAC,EAAE;MACxCC,QAAQ,CAAC+B,IAAI,CAACa,WAAW,CAAC,IAAI,CAAC7C,OAAO,CAAC;IACzC;IAEA,IAAI2C,WAAW,EAAE;MACf,IAAI,CAACD,QAAQ,CAAC;QAAEhC,MAAM,EAAE;MAAK,CAAC,CAAC;IACjC;EACF;EAEAD,IAAI,GAAS;IACX,IAAI,CAACc,UAAU,EAAE;IACjB,IAAI,CAACmB,QAAQ,CAAC;MAAEjC,IAAI,EAAE;IAAK,CAAC,CAAC;EAC/B;EAEAO,IAAI,GAAS;IACX,IAAI,CAAC0B,QAAQ,CAAC;MAAEjC,IAAI,EAAE;IAAM,CAAC,CAAC;EAChC;EAEA0B,cAAc,GAAS;IACrB,IAAM;MAAEzB;IAAO,CAAC,GAAG,IAAI,CAACF,KAAK;IAC7B,IAAIE,MAAM,EAAEA,MAAM,CAACyB,cAAc,EAAE;EACrC;EAEApC,UAAU,CAAC+C,CAAmB,EAAQ;IACpC,IAAI,EAAEA,CAAC,CAACC,aAAa,YAAYP,WAAW,CAAC,EAAE;MAC7C;IACF;IACA,IAAI,CAAC,IAAI,CAACxC,OAAO,CAACoC,QAAQ,CAACU,CAAC,CAACC,aAAa,CAAC,EAAE;MAC3C,IAAI,CAAC/B,IAAI,EAAE;IACb;EACF;EAEApB,WAAW,GAAS;IAClB,IAAM;MAAEoD;IAAU,CAAC,GAAG,IAAI,CAACrD,KAAK;IAChCqD,SAAS,EAAE,CAAC,CAAC;EACf;;EAEAlD,UAAU,GAAS;IACjB,IAAM;MAAEmD;IAAS,CAAC,GAAG,IAAI,CAACtD,KAAK;IAC/B,IAAM;MAAEc;IAAK,CAAC,GAAG,IAAI,CAACD,KAAK;IAC3B,IAAI,CAACC,IAAI,EAAE;MACT,IAAI,CAACS,aAAa,EAAE;IACtB;IACA+B,QAAQ,EAAE,CAAC,CAAC;EACd;;EAEAC,aAAa,GAAgB;IAC3B,IAAM;MACJ/C,SAAS;MACTgD,QAAQ;MACRC,OAAO;MACPC,WAAW;MACX7B;IACF,CAAC,GAAG,IAAI,CAAC7B,KAAK;IACd,IAAM;MAAEc;IAAK,CAAC,GAAG,IAAI,CAACD,KAAK;IAE3B,oBACE,oBAAC,aAAa;MACZ,EAAE,EAAEC,IAAK;MACT,OAAO,EAAE2C,OAAQ;MACjB,UAAU,EAAC,mBAAmB;MAC9B,SAAS,EAAE,IAAI,CAACxD,WAAY;MAC5B,QAAQ,EAAE,IAAI,CAACE;IAAW,gBAE1B;MACE,OAAO,EAAEgD,CAAC,IAAI;QACZ;QACAA,CAAC,CAACQ,eAAe,EAAE;MACrB,CAAE;MACF,SAAS,EAAER,CAAC,IAAI;QACd,IAAIA,CAAC,CAACS,GAAG,KAAK,QAAQ,EAAE,IAAI,CAACvC,IAAI,EAAE;MACrC,CAAE;MACF,SAAS,EAAE5B,UAAU,CAAC,QAAQ,EAAE;QAAEiE;MAAY,CAAC,EAAElD,SAAS,CAAE;MAC5D,MAAM,EAAEqB,WAAW,GAAG,IAAI,CAACzB,UAAU,GAAGyD,SAAU;MAClD,QAAQ,EAAEhC,WAAW,GAAG,CAAC,CAAC,GAAGgC,SAAU;MACvC,IAAI,EAAC;IAAc,gBAEnB;MAAK,SAAS,EAAC;IAAgB,GAC5BL,QAAQ,eAET;MAAK,SAAS,EAAC,cAAc;MAAC,WAAQ;IAAE,EAAG,CACvC,CACF,CACQ;EAEpB;EAEAM,MAAM,GAAgB;IACpB,IAAM;MAAE/C;IAAO,CAAC,GAAG,IAAI,CAACF,KAAK;IAC7B,IAAM;MAAE,aAAa,EAAEkD;IAAW,CAAC,GAAG,IAAI,CAAC/D,KAAK;IAChD,oBACE;MACE,SAAS,EAAC,yBAAyB;MACnC,GAAG,EAAE,IAAI,CAACS,SAAU;MACpB,KAAK,EAAE;QAAEuD,OAAO,EAAE;MAAO,CAAE;MAC3B,eAAaD;IAAW,GAEvBhD,MAAM,iBAAIvB,QAAQ,CAACyE,YAAY,CAAC,IAAI,CAACV,aAAa,EAAE,EAAE,IAAI,CAAClD,OAAO,CAAC,CAChE;EAEV;AACF;AAAC,gBA3PKP,MAAM,eACS;EACjB0D,QAAQ,EAAE5D,SAAS,CAACsE,IAAI,CAACC,UAAU;EACnCnC,OAAO,EAAEpC,SAAS,CAACwE,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5B5D,SAAS,EAAEZ,SAAS,CAACyE,MAAM;EAC3BZ,OAAO,EAAE7D,SAAS,CAAC0E,MAAM;EACzBjB,SAAS,EAAEzD,SAAS,CAAC2E,IAAI;EACzBjB,QAAQ,EAAE1D,SAAS,CAAC2E,IAAI;EACxB3D,OAAO,EAAEhB,SAAS,CAAC4E,IAAI;EACvB3C,WAAW,EAAEjC,SAAS,CAAC4E,IAAI;EAC3Bd,WAAW,EAAE9D,SAAS,CAAC4E,IAAI;EAC3B1C,eAAe,EAAElC,SAAS,CAACwE,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,aAAa,EAAExE,SAAS,CAACyE;AAC3B,CAAC;AAAA,gBAbGvE,MAAM,kBAeY;EACpBkC,OAAO,EAAE,CAAC,CAAC;EACXxB,SAAS,EAAE,EAAE;EACbiD,OAAO,EAAE5D,WAAW,CAAC4E,YAAY;EACjCpB,SAAS,GAAS;IAChB;EAAA,CACD;EACDC,QAAQ,GAAS;IACf;EAAA,CACD;EACD1C,OAAO,EAAE,KAAK;EACd8C,WAAW,EAAE,KAAK;EAClB7B,WAAW,EAAE,KAAK;EAClBC,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE+B;AACjB,CAAC;AA+NH,eAAe/D,MAAM"}
|
|
1
|
+
{"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","classNames","CSSTransition","PopperJs","PropTypes","ThemeExport","Popper","constructor","props","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","closeOnBlur","referenceObject","current","options","placement","modifiers","preventOverflow","boundariesElement","body","appendChild","parent","scheduleUpdate","contains","activeElement","elem","firstElementChild","HTMLElement","focus","setState","updateState","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","stopPropagation","key","undefined","render","dataTestId","display","createPortal","node","isRequired","shape","string","number","func","bool","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { PopperOptions, ReferenceObject } from 'popper.js';\nimport PropTypes from 'prop-types';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\n\ninterface PopperProps {\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static propTypes = {\n children: PropTypes.node.isRequired,\n options: PropTypes.shape({}),\n className: PropTypes.string,\n timeout: PropTypes.number,\n onEntered: PropTypes.func,\n onExited: PropTypes.func,\n isShown: PropTypes.bool,\n closeOnBlur: PropTypes.bool,\n interactive: PropTypes.bool,\n referenceObject: PropTypes.shape({}),\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n let { popper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (popper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // for blur on close to work, focus needs to be on or within the popper\n if (closeOnBlur && !this.element.contains(document.activeElement)) {\n // only set focus, if a focus isn't already set within\n const elem = this.element.firstElementChild;\n if (elem instanceof HTMLElement) {\n elem.focus(); // first child of the portal element\n }\n }\n });\n\n this.setState({ popper });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n this.setState({ show: true });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames('popper', { interactive }, className)}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.45.1-beta.0+1f0f10b9",
|
|
4
4
|
"description": "Deephaven React component library",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist ./scss/BaseStyleSheet.scss:./css/BaseStyleSheet.css"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@deephaven/icons": "^0.
|
|
27
|
-
"@deephaven/log": "^0.
|
|
28
|
-
"@deephaven/react-hooks": "^0.
|
|
29
|
-
"@deephaven/utils": "^0.
|
|
26
|
+
"@deephaven/icons": "^0.45.1-beta.0+1f0f10b9",
|
|
27
|
+
"@deephaven/log": "^0.45.1-beta.0+1f0f10b9",
|
|
28
|
+
"@deephaven/react-hooks": "^0.45.1-beta.0+1f0f10b9",
|
|
29
|
+
"@deephaven/utils": "^0.45.1-beta.0+1f0f10b9",
|
|
30
30
|
"@fortawesome/fontawesome-svg-core": "^6.2.1",
|
|
31
31
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
32
32
|
"@react-spectrum/theme-default": "^3.5.1",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"react-dom": "^17.x"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@deephaven/mocks": "^0.
|
|
53
|
+
"@deephaven/mocks": "^0.45.1-beta.0+1f0f10b9"
|
|
54
54
|
},
|
|
55
55
|
"files": [
|
|
56
56
|
"dist",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"publishConfig": {
|
|
64
64
|
"access": "public"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "1f0f10b9de2fc8a7ff0800115ec3460c0572c016"
|
|
67
67
|
}
|