@linzjs/step-ag-grid 4.0.2 → 4.0.3
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/index.js +66 -40
- package/dist/index.js.map +1 -1
- package/dist/src/components/GridPopoverHook.d.ts +1 -0
- package/dist/step-ag-grid.esm.js +66 -40
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/GridPopoverHook.tsx +24 -4
- package/src/components/gridForm/GridFormDropDown.tsx +14 -4
- package/src/components/gridForm/GridFormEditBearing.tsx +15 -6
- package/src/components/gridForm/GridFormTextArea.tsx +6 -4
- package/src/components/gridForm/GridFormTextInput.tsx +11 -4
- package/src/stories/grid/FormTest.tsx +8 -5
- package/src/stories/grid/GridPopoutBearing.stories.tsx +3 -2
- package/src/utils/bearing.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-ag-grid.esm.js","sources":["../src/react-menu3/hooks/useBEM.ts","../src/react-menu3/hooks/useCombinedRef.ts","../src/react-menu3/hooks/useIsomorphicLayoutEffect.ts","../src/react-menu3/utils/constants.ts","../src/react-menu3/utils/utils.ts","../src/react-menu3/contexts/HoverItemContext.ts","../src/react-menu3/utils/withHovering.tsx","../src/react-menu3/hooks/useItems.ts","../src/react-menu3/hooks/useItemEffect.ts","../src/react-menu3/contexts/MenuListItemContext.ts","../src/react-menu3/contexts/ItemSettingsContext.ts","../src/react-menu3/hooks/useItemState.ts","../src/react-menu3/hooks/useMenuChange.ts","../node_modules/react-transition-state/dist/index.es.js","../src/react-menu3/hooks/useMenuState.ts","../src/react-menu3/hooks/useMenuStateAndFocus.ts","../src/react-menu3/components/MenuButton.tsx","../src/react-menu3/positionUtils/getPositionHelpers.ts","../src/react-menu3/positionUtils/positionContextMenu.ts","../src/react-menu3/positionUtils/placeArrowVertical.ts","../src/react-menu3/positionUtils/placeLeftorRight.ts","../src/react-menu3/positionUtils/placeArrowHorizontal.ts","../src/react-menu3/positionUtils/placeToporBottom.ts","../src/react-menu3/positionUtils/positionMenu.ts","../src/react-menu3/contexts/MenuListContext.ts","../src/react-menu3/contexts/SettingsContext.ts","../src/react-menu3/components/MenuList.tsx","../src/utils/util.ts","../src/react-menu3/contexts/EventHandlersContext.ts","../src/react-menu3/components/ControlledMenu.tsx","../src/react-menu3/components/Menu.tsx","../src/react-menu3/components/SubMenu.tsx","../src/react-menu3/contexts/RadioGroupContext.ts","../src/react-menu3/components/MenuItem.tsx","../src/react-menu3/components/FocusableItem.tsx","../src/react-menu3/components/MenuDivider.tsx","../src/react-menu3/components/MenuHeader.tsx","../src/react-menu3/components/MenuGroup.tsx","../src/react-menu3/components/MenuRadioGroup.tsx","../src/contexts/GridContext.tsx","../src/contexts/GridUpdatingContext.tsx","../src/contexts/GridContextProvider.tsx","../src/contexts/GridUpdatingContextProvider.tsx","../src/contexts/GridPopoverContext.tsx","../src/contexts/GridPopoverContextProvider.tsx","../src/contexts/GridSubComponentContext.ts","../node_modules/clsx/dist/clsx.m.js","../src/components/PostSortRowsHook.ts","../src/components/gridHeader/GridHeaderSelect.tsx","../src/components/Grid.tsx","../src/components/GenericCellClass.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/components/GridLoadableCell.tsx","../src/components/GridIcon.tsx","../src/components/gridRender/GridRenderGenericCell.tsx","../src/components/GridCell.tsx","../src/components/ComponentLoadingWrapper.tsx","../src/components/GridPopoverHook.tsx","../src/components/gridRender/GridRenderPopoutMenuCell.tsx","../node_modules/debounce-promise/dist/index.js","../src/components/gridForm/GridFormDropDown.tsx","../src/components/gridForm/GridFormMultiSelect.tsx","../src/components/gridPopoverEdit/GridPopoutEditMultiSelect.ts","../src/components/gridForm/GridFormPopoverMenu.tsx","../src/components/gridPopoverEdit/GridPopoverMenu.tsx","../src/utils/bearing.ts","../src/lui/TextInputFormatted.tsx","../src/components/gridForm/GridFormEditBearing.tsx","../src/components/gridPopoverEdit/GridPopoverEditBearing.ts","../src/components/gridPopoverEdit/GridPopoverEditDropDown.ts","../src/components/gridForm/GridFormMessage.tsx","../src/components/gridPopoverEdit/GridPopoverMessage.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/lui/TextAreaInput.tsx","../src/utils/textValidator.ts","../src/components/gridForm/GridFormTextArea.tsx","../src/components/gridPopoverEdit/GridPopoverTextArea.ts","../src/components/gridForm/GridFormTextInput.tsx","../src/components/gridPopoverEdit/GridPopoverTextInput.ts","../src/components/gridForm/GridFormSubComponentTextInput.tsx","../src/components/gridForm/GridFormSubComponentTextArea.tsx","../src/lui/reactUtils.tsx","../src/lui/timeoutHook.tsx","../src/lui/stateDeferredHook.tsx","../src/lui/ActionButton.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ClassNameProp } from \"../types\";\n\ntype useBemModifiers = Record<string, boolean | string | undefined>;\n\ninterface useBemProps {\n block: string;\n element?: string;\n modifiers?: useBemModifiers;\n className?: ClassNameProp<any>;\n}\n\n// Generate className following BEM methodology: http://getbem.com/naming/\n// Modifier value can be one of the following types: boolean, string, undefined\nexport const useBEM = ({ block, element, modifiers, className }: useBemProps) =>\n useMemo(() => {\n const blockElement = element ? `${block}__${element}` : block;\n\n let classString = blockElement;\n modifiers &&\n Object.keys(modifiers).forEach((name) => {\n const value = modifiers[name];\n if (value) classString += ` ${blockElement}--${value === true ? name : `${name}-${value}`}`;\n });\n\n let expandedClassName = typeof className === \"function\" ? className(modifiers) : className;\n if (typeof expandedClassName === \"string\") {\n expandedClassName = expandedClassName.trim();\n if (expandedClassName) classString += ` ${expandedClassName}`;\n }\n\n return classString;\n }, [block, element, modifiers, className]);\n","import { useMemo, LegacyRef, ForwardedRef } from \"react\";\n\n// Adapted from material-ui\n// https://github.com/mui-org/material-ui/blob/f996027d00e7e4bff3fc040786c1706f9c6c3f82/packages/material-ui-utils/src/useForkRef.ts\n\nconst setRef = <T>(ref: ForwardedRef<T> | undefined, instance: T | null) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref) {\n ref.current = instance;\n }\n};\n\nexport const useCombinedRef = <Instance>(\n refA: ForwardedRef<Instance> | undefined,\n refB: ForwardedRef<Instance> | undefined,\n): LegacyRef<Instance> => {\n return useMemo(() => {\n return (instance: any) => {\n setRef(refA, instance);\n setRef(refB, instance);\n };\n }, [refA, refB]);\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\n// Get around a warning when using useLayoutEffect on the server.\n// https://github.com/reduxjs/react-redux/blob/b48d087d76f666e1c6c5a9713bbec112a1631841/src/utils/useIsomorphicLayoutEffect.js#L12\n// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n// https://github.com/facebook/react/issues/14927#issuecomment-549457471\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n ? useLayoutEffect\n : useEffect;\n\nexport { useIsomorphicLayoutEffect as useLayoutEffect };\n","import { MenuState } from \"../types\";\n\nexport const menuContainerClass = \"szh-menu-container\";\nexport const menuClass = \"szh-menu\";\nexport const menuButtonClass = \"szh-menu-button\";\nexport const menuArrowClass = \"arrow\";\nexport const menuItemClass = \"item\";\nexport const menuDividerClass = \"divider\";\nexport const menuHeaderClass = \"header\";\nexport const menuGroupClass = \"group\";\nexport const subMenuClass = \"submenu\";\nexport const radioGroupClass = \"radio-group\";\n\nexport interface RMEvent {\n value: any;\n syntheticEvent: any;\n checked?: boolean;\n name?: string;\n key?: string;\n}\n\nexport const Keys = Object.freeze({\n ENTER: \"Enter\",\n ESC: \"Escape\",\n SPACE: \" \",\n HOME: \"Home\",\n END: \"End\",\n LEFT: \"ArrowLeft\",\n RIGHT: \"ArrowRight\",\n UP: \"ArrowUp\",\n DOWN: \"ArrowDown\",\n});\n\nexport const HoverActionTypes = Object.freeze({\n RESET: 0,\n SET: 1,\n UNSET: 2,\n INCREASE: 3,\n DECREASE: 4,\n FIRST: 5,\n LAST: 6,\n SET_INDEX: 7,\n});\n\nexport const CloseReason = Object.freeze({\n CLICK: \"click\",\n CANCEL: \"cancel\",\n BLUR: \"blur\",\n SCROLL: \"scroll\",\n});\n\nexport const FocusPositions = Object.freeze({\n FIRST: \"first\",\n LAST: \"last\",\n});\n\nexport const MenuStateMap: Record<string, MenuState> = Object.freeze({\n entering: \"opening\",\n entered: \"open\",\n exiting: \"closing\",\n exited: \"closed\",\n});\n","import { unstable_batchedUpdates } from \"react-dom\";\nimport { MenuState, MenuStateOptions } from \"../types\";\nimport { MenuButtonProps } from \"../components/MenuButton\";\nimport { findIndex } from \"lodash-es\";\n\nexport const isMenuOpen = (state?: MenuState) => !!state && state[0] === \"o\";\nexport const batchedUpdates = unstable_batchedUpdates || ((callback: () => any) => callback());\nexport const values = Object.values || ((obj: { [x: string]: any }) => Object.keys(obj).map((key) => obj[key]));\nexport const floatEqual = (a: number, b: number, diff = 0.0001) => Math.abs(a - b) < diff;\n\nexport type TransitionMap = {\n open?: boolean;\n close?: boolean;\n item?: boolean;\n};\nexport const getTransition = (transition: MenuStateOptions[\"transition\"], name: keyof TransitionMap) =>\n transition === true || !!(transition && transition[name]);\n\nexport function safeCall<T, R>(fn: (arg?: T) => R, arg?: T): R;\nexport function safeCall<T, R>(fn: T, arg: R): T;\nexport function safeCall<T, R>(fn: (arg?: T) => R, arg?: T): T | R {\n return typeof fn === \"function\" ? fn(arg) : fn;\n}\n\nconst internalKey = \"_szhsinMenu\";\nexport const getName = (component: Record<string, any | undefined>) => component[internalKey];\n//export const defineName = <T extends any[]>(name: string, component: (...args: T) => JSX.Element) =>\n// Object.defineProperty(component, internalKey, { value: name });\n\nexport const defineName = (\n name: string,\n component: React.ForwardRefExoticComponent<React.PropsWithoutRef<MenuButtonProps> & React.RefAttributes<unknown>>,\n) => Object.defineProperty(component, internalKey, { value: name });\n\nexport const mergeProps = (target: any, source: any) => {\n source &&\n Object.keys(source).forEach((key) => {\n const targetProp = target[key];\n const sourceProp = source[key];\n if (typeof sourceProp === \"function\" && targetProp) {\n target[key] = (...arg: any[]) => {\n sourceProp(...arg);\n targetProp(...arg);\n };\n } else {\n target[key] = sourceProp;\n }\n });\n\n return target;\n};\n\nexport const parsePadding = (paddingStr: string | undefined) => {\n if (paddingStr == null) return { top: 0, right: 0, bottom: 0, left: 0 };\n\n const padding = paddingStr.trim().split(/\\s+/, 4).map(parseFloat);\n const top = !isNaN(padding[0]) ? padding[0] : 0;\n const right = !isNaN(padding[1]) ? padding[1] : top;\n return {\n top,\n right,\n bottom: !isNaN(padding[2]) ? padding[2] : top,\n left: !isNaN(padding[3]) ? padding[3] : right,\n };\n};\n\n// Adapted from https://github.com/popperjs/popper-core/tree/v2.9.1/src/dom-utils\nexport const getScrollAncestor = (node: Node | null): Element | null => {\n const thisWindow = (node?.ownerDocument ?? document).defaultView ?? window;\n while (node) {\n node = node.parentNode;\n if (!node || node === thisWindow?.document?.body) return null;\n if (node instanceof Element) {\n const { overflow, overflowX, overflowY } = thisWindow.getComputedStyle(node);\n if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) return node;\n }\n }\n return null;\n};\n\nexport function commonProps(isDisabled?: boolean, isHovering?: boolean) {\n return {\n \"aria-disabled\": isDisabled || undefined,\n tabIndex: isHovering ? 0 : -1,\n };\n}\n\nexport const indexOfNode = (nodeList: NodeListOf<Node>, node: Node) => findIndex(nodeList, node);\n","import { createContext } from \"react\";\n\nexport const HoverItemContext = createContext(undefined);\n","import { memo, forwardRef, useContext, useRef, MutableRefObject } from \"react\";\nimport { HoverItemContext } from \"../contexts/HoverItemContext\";\n\nexport interface withHoveringResultProps {\n isHovering?: boolean;\n externalRef?: MutableRefObject<any>;\n menuItemRef?: MutableRefObject<any>;\n}\n\nexport const withHovering = (name: string, WrappedComponent: (...args: any) => JSX.Element): any => {\n const Component = memo(WrappedComponent);\n const WithHovering = forwardRef<any>((props: any, ref) => {\n const menuItemRef = useRef<any>(null);\n return (\n <Component\n {...props}\n menuItemRef={menuItemRef}\n externalRef={ref}\n isHovering={useContext(HoverItemContext) === menuItemRef.current}\n />\n );\n });\n\n WithHovering.displayName = `WithHovering(${name})`;\n\n return WithHovering;\n};\n","import { useState, useCallback, useRef, MutableRefObject } from \"react\";\nimport { HoverActionTypes, indexOfNode } from \"../utils\";\nimport { FocusPosition } from \"../types\";\n\nexport const useItems = (menuRef: MutableRefObject<any>, focusRef: MutableRefObject<any> | undefined) => {\n const [hoverItem, setHoverItem] = useState<any>();\n const stateRef = useRef({\n items: [] as any[],\n hoverIndex: -1,\n sorted: false,\n });\n const mutableState = stateRef.current;\n\n const updateItems = useCallback(\n (item?: any, isMounted?: boolean) => {\n const { items } = mutableState;\n if (!item) {\n mutableState.items = [];\n } else if (isMounted) {\n items.push(item);\n } else {\n const index = items.indexOf(item);\n if (index > -1) {\n items.splice(index, 1);\n if (item.contains(document.activeElement)) {\n focusRef?.current?.focus();\n setHoverItem(undefined);\n }\n }\n }\n mutableState.hoverIndex = -1;\n mutableState.sorted = false;\n },\n [mutableState, focusRef],\n );\n\n const dispatch = useCallback(\n (actionType: number, item: any, nextIndex: FocusPosition) => {\n const { items, hoverIndex } = mutableState;\n const sortItems = () => {\n if (mutableState.sorted) return;\n const orderedNodes = menuRef.current.querySelectorAll(\".szh-menu__item\");\n items.sort((a, b) => indexOfNode(orderedNodes, a) - indexOfNode(orderedNodes, b));\n mutableState.sorted = true;\n };\n\n let index = -1,\n newItem = undefined;\n switch (actionType) {\n case HoverActionTypes.RESET:\n break;\n\n case HoverActionTypes.SET:\n newItem = item;\n break;\n\n case HoverActionTypes.UNSET:\n newItem = (prevItem: any) => (prevItem === item ? undefined : prevItem);\n break;\n\n case HoverActionTypes.FIRST:\n sortItems();\n index = 0;\n newItem = items[index];\n break;\n\n case HoverActionTypes.LAST:\n sortItems();\n index = items.length - 1;\n newItem = items[index];\n break;\n\n case HoverActionTypes.SET_INDEX:\n if (typeof nextIndex !== \"number\") break;\n sortItems();\n index = nextIndex;\n newItem = items[index];\n break;\n\n case HoverActionTypes.INCREASE:\n sortItems();\n index = hoverIndex;\n if (index < 0) index = items.indexOf(item);\n index++;\n if (index >= items.length) index = 0;\n newItem = items[index];\n break;\n\n case HoverActionTypes.DECREASE:\n sortItems();\n index = hoverIndex;\n if (index < 0) index = items.indexOf(item);\n index--;\n if (index < 0) index = items.length - 1;\n newItem = items[index];\n break;\n\n default:\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(`[React-Menu] Unknown hover action type: ${actionType}`);\n }\n\n if (!newItem) index = -1;\n setHoverItem(newItem);\n mutableState.hoverIndex = index;\n },\n [menuRef, mutableState],\n );\n\n return { hoverItem, dispatch, updateItems };\n};\n","import { MutableRefObject } from \"react\";\nimport { useLayoutEffect } from \"./useIsomorphicLayoutEffect\";\n\nexport const useItemEffect = (\n isDisabled: boolean | undefined,\n menuItemRef: MutableRefObject<any> | undefined,\n updateItems: (item: any, isMounted?: boolean) => void,\n) => {\n useLayoutEffect(() => {\n if (!menuItemRef) return;\n if (process.env.NODE_ENV !== \"production\" && !updateItems) {\n throw new Error(\n `[React-Menu] This menu item or submenu should be rendered under a menu: ${menuItemRef.current.outerHTML}`,\n );\n }\n if (isDisabled) return;\n const item = menuItemRef.current;\n updateItems(item, true);\n return () => {\n updateItems(item);\n };\n }, [isDisabled, menuItemRef, updateItems]);\n};\n","import { FocusPosition } from \"../types\";\nimport { createContext } from \"react\";\n\ninterface MenuListItemContextType {\n isParentOpen?: boolean;\n isSubmenuOpen?: boolean;\n dispatch: (actionType: number, item: any, nextIndex: FocusPosition) => void;\n updateItems: (item: any, isMounted?: boolean) => void;\n setOpenSubmenuCount: (fn: (count: number) => number) => void;\n}\n\nexport const MenuListItemContext = createContext<MenuListItemContextType>({\n dispatch: () => {},\n updateItems: () => {},\n setOpenSubmenuCount: () => 0,\n});\n","import { createContext } from \"react\";\n\nexport const ItemSettingsContext = createContext<{ submenuCloseDelay: number; submenuOpenDelay: number }>({\n submenuOpenDelay: 0,\n submenuCloseDelay: 0,\n});\n","import { useRef, useContext, useEffect, FocusEvent, MutableRefObject } from \"react\";\nimport { HoverActionTypes } from \"../utils\";\nimport { useItemEffect } from \"./useItemEffect\";\nimport { MenuListItemContext } from \"../contexts/MenuListItemContext\";\nimport { ItemSettingsContext } from \"../contexts/ItemSettingsContext\";\n\n// This hook includes some common stateful logic in MenuItem and FocusableItem\nexport const useItemState = (\n menuItemRef: MutableRefObject<any> | undefined,\n focusRef: MutableRefObject<any> | undefined,\n isHovering?: boolean,\n isDisabled?: boolean,\n) => {\n const { submenuCloseDelay } = useContext(ItemSettingsContext);\n const { isParentOpen, isSubmenuOpen, dispatch, updateItems } = useContext(MenuListItemContext);\n const timeoutId = useRef<ReturnType<typeof setTimeout>>();\n\n const setHover = () => {\n !isHovering && !isDisabled && dispatch(HoverActionTypes.SET, menuItemRef?.current, 0);\n };\n\n const unsetHover = () => {\n !isDisabled && dispatch(HoverActionTypes.UNSET, menuItemRef?.current, 0);\n };\n\n const onBlur = (e: FocusEvent) => {\n // Focus has moved out of the entire item\n // It handles situation such as clicking on a sibling disabled menu item\n if (isHovering && !e.currentTarget.contains(e.relatedTarget)) unsetHover();\n };\n\n const onPointerMove = () => {\n if (isSubmenuOpen) {\n if (!timeoutId.current)\n timeoutId.current = setTimeout(() => {\n timeoutId.current = undefined;\n setHover();\n }, submenuCloseDelay);\n } else {\n setHover();\n }\n };\n\n const onPointerLeave = (_: PointerEvent, keepHover: boolean) => {\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n timeoutId.current = undefined;\n }\n\n !keepHover && unsetHover();\n };\n\n useItemEffect(isDisabled, menuItemRef, updateItems);\n useEffect(() => () => clearTimeout(timeoutId.current), []);\n useEffect(() => {\n // Don't set focus when parent menu is closed, otherwise focus will be lost\n // and onBlur event will be fired with relatedTarget setting as null.\n if (isHovering && isParentOpen) {\n focusRef?.current && focusRef.current.focus();\n }\n }, [focusRef, isHovering, isParentOpen]);\n\n return {\n setHover,\n onBlur,\n onPointerMove,\n onPointerLeave,\n };\n};\n","import { useRef, useEffect } from \"react\";\nimport { safeCall } from \"../utils\";\nimport { EventHandler, MenuChangeEvent } from \"../types\";\n\nexport const useMenuChange = (onMenuChange?: EventHandler<MenuChangeEvent>, isOpen?: boolean) => {\n const prevOpen = useRef(isOpen);\n\n useEffect(() => {\n if (onMenuChange && prevOpen.current !== isOpen) safeCall(onMenuChange, { open: !!isOpen });\n prevOpen.current = isOpen;\n }, [onMenuChange, isOpen]);\n};\n","import { useState, useRef, useCallback, useEffect } from 'react';\n\nvar PRE_ENTER = 0;\nvar ENTERING = 1;\nvar ENTERED = 2;\nvar PRE_EXIT = 3;\nvar EXITING = 4;\nvar EXITED = 5;\nvar UNMOUNTED = 6;\nvar STATES = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];\n\nvar startOrEnd = function startOrEnd(unmounted) {\n return unmounted ? UNMOUNTED : EXITED;\n};\n\nvar updateState = function updateState(state, setState, latestState, timeoutId, onChange) {\n clearTimeout(timeoutId.current);\n setState(state);\n latestState.current = state;\n onChange && onChange({\n state: STATES[state]\n });\n};\n\nvar useTransition = function useTransition(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$enter = _ref.enter,\n enter = _ref$enter === void 0 ? true : _ref$enter,\n _ref$exit = _ref.exit,\n exit = _ref$exit === void 0 ? true : _ref$exit,\n preEnter = _ref.preEnter,\n preExit = _ref.preExit,\n timeout = _ref.timeout,\n initialEntered = _ref.initialEntered,\n mountOnEnter = _ref.mountOnEnter,\n unmountOnExit = _ref.unmountOnExit,\n onChange = _ref.onChange;\n\n var _useState = useState(initialEntered ? ENTERED : startOrEnd(mountOnEnter)),\n state = _useState[0],\n setState = _useState[1];\n\n var latestState = useRef(state);\n var timeoutId = useRef();\n var enterTimeout, exitTimeout;\n\n if (typeof timeout === 'object') {\n enterTimeout = timeout.enter;\n exitTimeout = timeout.exit;\n } else {\n enterTimeout = exitTimeout = timeout;\n }\n\n var endTransition = useCallback(function () {\n var newState;\n\n switch (latestState.current) {\n case ENTERING:\n case PRE_ENTER:\n newState = ENTERED;\n break;\n\n case EXITING:\n case PRE_EXIT:\n newState = startOrEnd(unmountOnExit);\n break;\n }\n\n if (newState !== undefined) {\n updateState(newState, setState, latestState, timeoutId, onChange);\n }\n }, [onChange, unmountOnExit]);\n var toggle = useCallback(function (toEnter) {\n var transitState = function transitState(newState) {\n updateState(newState, setState, latestState, timeoutId, onChange);\n\n switch (newState) {\n case ENTERING:\n if (enterTimeout >= 0) timeoutId.current = setTimeout(endTransition, enterTimeout);\n break;\n\n case EXITING:\n if (exitTimeout >= 0) timeoutId.current = setTimeout(endTransition, exitTimeout);\n break;\n\n case PRE_ENTER:\n case PRE_EXIT:\n timeoutId.current = setTimeout(function () {\n return transitState(newState + 1);\n }, 0);\n break;\n }\n };\n\n var enterStage = latestState.current <= ENTERED;\n if (typeof toEnter !== 'boolean') toEnter = !enterStage;\n\n if (toEnter) {\n if (!enterStage) {\n transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);\n }\n } else {\n if (enterStage) {\n transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));\n }\n }\n }, [endTransition, onChange, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);\n useEffect(function () {\n return function () {\n return clearTimeout(timeoutId.current);\n };\n }, []);\n return [STATES[state], toggle, endTransition];\n};\n\nexport { useTransition as default, useTransition };\n","import { useTransition } from \"react-transition-state\";\nimport { MenuStateMap, getTransition } from \"../utils\";\nimport { MenuState, MenuStateOptions } from \"../types\";\n\n/**\n * A custom Hook which helps manage the states of `ControlledMenu`.\n */\nexport const useMenuState = (\n props?: MenuStateOptions,\n): [\n {\n /**\n * Menu state which should be forwarded to `ControlledMenu`.\n */\n state?: MenuState;\n /**\n * Stop transition animation. This function value should be forwarded to `ControlledMenu`.\n */\n endTransition: () => void;\n },\n\n /**\n * Open or close menu.\n *\n * - If no parameter is supplied, this function will toggle state between open and close phases.\n * - You can set a boolean parameter to explicitly switch into one of the two phases.\n */\n (open?: boolean) => void,\n] => {\n const { initialMounted, unmountOnClose, transition, transitionTimeout } = props ?? {\n transition: false,\n };\n const [state, toggleMenu, endTransition] = useTransition({\n mountOnEnter: !initialMounted,\n unmountOnExit: unmountOnClose,\n timeout: transitionTimeout ?? 500,\n enter: getTransition(transition, \"open\"),\n exit: getTransition(transition, \"close\"),\n });\n\n return [{ state: MenuStateMap[state], endTransition }, toggleMenu];\n};\n","import { useState } from \"react\";\nimport { useMenuState } from \"./useMenuState\";\nimport { ControlledMenuProps, FocusPosition, MenuStateOptions } from \"../types\";\n\nexport const useMenuStateAndFocus = (\n options: MenuStateOptions,\n): [any, (open?: boolean) => void, (position?: FocusPosition, alwaysUpdate?: boolean) => void] => {\n const [menuProps, toggleMenu] = useMenuState(options);\n const [menuItemFocus, setMenuItemFocus] = useState<ControlledMenuProps[\"menuItemFocus\"]>();\n\n const openMenu = (position?: FocusPosition, alwaysUpdate?: boolean) => {\n setMenuItemFocus({ position, alwaysUpdate });\n toggleMenu(true);\n };\n\n return [{ menuItemFocus, ...menuProps }, toggleMenu, openMenu];\n};\n","import { forwardRef, LegacyRef, ReactNode, useMemo } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuButtonClass } from \"../utils\";\nimport { BaseProps, MenuButtonModifiers } from \"../types\";\n\nexport interface MenuButtonProps extends BaseProps<MenuButtonModifiers> {\n disabled?: boolean;\n children?: ReactNode;\n\n // Seems to be an internal thing, wasn't in original code\n isOpen?: boolean;\n}\n\nexport const MenuButton = forwardRef(function MenuButton(\n { className, isOpen, disabled, children, ...restProps }: MenuButtonProps,\n ref: LegacyRef<HTMLButtonElement>,\n) {\n const modifiers = useMemo(() => ({ open: isOpen }), [isOpen]);\n\n return (\n <button\n aria-haspopup\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n type=\"button\"\n disabled={disabled}\n {...restProps}\n ref={ref}\n className={useBEM({ block: menuButtonClass, modifiers, className })}\n >\n {children}\n </button>\n );\n});\n","import { parsePadding } from \"../utils\";\nimport { MutableRefObject } from \"react\";\n\nexport const getPositionHelpers = (\n containerRef: MutableRefObject<HTMLElement | undefined>,\n menuRef: MutableRefObject<HTMLElement>,\n menuScroll: Window | Element,\n boundingBoxPadding: string | undefined,\n) => {\n const menuRect = menuRef.current.getBoundingClientRect();\n const thisWindow = containerRef.current?.ownerDocument.defaultView ?? window;\n const containerRect = (containerRef.current ?? thisWindow.document.body).getBoundingClientRect();\n\n const boundingRect =\n menuScroll === window || menuScroll === thisWindow\n ? {\n left: 0,\n top: 0,\n right: thisWindow.document.documentElement.clientWidth,\n bottom: thisWindow.innerHeight,\n }\n : (menuScroll as Element).getBoundingClientRect();\n const padding = parsePadding(boundingBoxPadding);\n\n // For left and top, overflows are negative value.\n // For right and bottom, overflows are positive value.\n const getLeftOverflow = (x: number) => x + containerRect.left - boundingRect.left - padding.left;\n const getRightOverflow = (x: number) => x + containerRect.left + menuRect.width - boundingRect.right + padding.right;\n const getTopOverflow = (y: number) => y + containerRect.top - boundingRect.top - padding.top;\n const getBottomOverflow = (y: number) =>\n y + containerRect.top + menuRect.height - boundingRect.bottom + padding.bottom;\n\n const confineHorizontally = (x: number) => {\n // If menu overflows to the left side, adjust x to have the menu contained within the viewport\n // and there is no need to check the right side;\n // if it doesn't overflow to the left, then check the right side\n let leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) {\n x -= leftOverflow;\n } else {\n const rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n x -= rightOverflow;\n // Check again to make sure menu doesn't overflow to the left\n // because it may go off-screen and cannot be scrolled into view.\n leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) x -= leftOverflow;\n }\n }\n\n return x;\n };\n\n const confineVertically = (y: number) => {\n // Similar logic to confineHorizontally above\n let topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n y -= topOverflow;\n } else {\n const bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n // Check again to make sure menu doesn't overflow to the bottom\n // because it may go off screen and cannot be scroll into view.\n topOverflow = getTopOverflow(y);\n if (topOverflow < 0) y -= topOverflow;\n }\n }\n\n return y;\n };\n\n return {\n menuRect,\n containerRect,\n getLeftOverflow,\n getRightOverflow,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n };\n};\n","import { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MenuDirection } from \"../types\";\n\nexport const positionContextMenu = ({\n positionHelpers,\n anchorPoint,\n}: {\n positionHelpers: ReturnType<typeof getPositionHelpers>;\n anchorPoint: { x: number; y: number };\n}): {\n x: number;\n y: number;\n computedDirection: MenuDirection;\n} => {\n const {\n menuRect,\n containerRect,\n getLeftOverflow,\n getRightOverflow,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n } = positionHelpers;\n\n let x, y;\n\n // position the menu with cursor pointing to its top-left corner\n x = anchorPoint.x - containerRect.left;\n y = anchorPoint.y - containerRect.top;\n\n // If menu overflows to the right of viewport,\n // try to reposition it on the left side of cursor.\n // If menu overflows to the left of viewport after repositioning,\n // choose a side which has less overflow\n // and adjust x to have it contained within the viewport.\n const rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n const adjustedX = x - menuRect.width;\n const leftOverflow = getLeftOverflow(adjustedX);\n if (leftOverflow >= 0 || -leftOverflow < rightOverflow) {\n x = adjustedX;\n }\n x = confineHorizontally(x);\n }\n\n // Similar logic to the left and right side above.\n let computedDirection: MenuDirection = \"bottom\";\n const bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n const adjustedY = y - menuRect.height;\n const topOverflow = getTopOverflow(adjustedY);\n if (topOverflow >= 0 || -topOverflow < bottomOverflow) {\n y = adjustedY;\n computedDirection = \"top\";\n }\n y = confineVertically(y);\n }\n\n return { x, y, computedDirection };\n};\n","import { MutableRefObject } from \"react\";\n\nexport const placeArrowVertical = (p: {\n arrowRef: MutableRefObject<HTMLElement | null>;\n menuY: number;\n anchorRect: DOMRect;\n containerRect: DOMRect;\n menuRect: DOMRect;\n}) => {\n let y = p.anchorRect.top - p.containerRect.top - p.menuY + p.anchorRect.height / 2;\n const offset = p.arrowRef.current ? p.arrowRef.current.offsetHeight * 1.25 : 0;\n y = Math.max(offset, y);\n y = Math.min(y, p.menuRect.height - offset);\n return y;\n};\n","import { placeArrowVertical } from \"./placeArrowVertical\";\nimport { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MutableRefObject } from \"react\";\nimport { MenuDirection } from \"../types\";\n\nexport interface placeLeftorRightParams {\n anchorRect: DOMRect;\n placeLeftorRightY: number;\n placeLeftX: number;\n placeRightX: number;\n arrowRef: MutableRefObject<HTMLElement | null>;\n arrow?: boolean;\n direction: MenuDirection;\n position: \"auto\" | \"anchor\" | \"initial\";\n}\n\nexport const placeLeftorRight = (\n props: ReturnType<typeof getPositionHelpers> & placeLeftorRightParams,\n): { arrowY: number | undefined; x: number; y: number; computedDirection: MenuDirection } => {\n const {\n anchorRect,\n containerRect,\n menuRect,\n placeLeftorRightY,\n placeLeftX,\n placeRightX,\n getLeftOverflow,\n getRightOverflow,\n confineHorizontally,\n confineVertically,\n arrowRef,\n arrow,\n direction,\n position,\n } = props;\n let computedDirection = direction;\n let y = placeLeftorRightY;\n if (position !== \"initial\") {\n y = confineVertically(y);\n if (position === \"anchor\") {\n // restrict menu to the edge of anchor element\n y = Math.min(y, anchorRect.bottom - containerRect.top);\n y = Math.max(y, anchorRect.top - containerRect.top - menuRect.height);\n }\n }\n\n let x, leftOverflow, rightOverflow;\n if (computedDirection === \"left\") {\n x = placeLeftX;\n\n if (position !== \"initial\") {\n // if menu overflows to the left,\n // try to reposition it to the right of the anchor.\n leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) {\n // if menu overflows to the right after repositioning,\n // choose a side which has less overflow\n rightOverflow = getRightOverflow(placeRightX);\n if (rightOverflow <= 0 || -leftOverflow > rightOverflow) {\n x = placeRightX;\n computedDirection = \"right\";\n }\n }\n }\n } else {\n // Opposite logic to the 'left' direction above\n x = placeRightX;\n\n if (position !== \"initial\") {\n rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n leftOverflow = getLeftOverflow(placeLeftX);\n if (leftOverflow >= 0 || -leftOverflow < rightOverflow) {\n x = placeLeftX;\n computedDirection = \"left\";\n }\n }\n }\n }\n\n if (position === \"auto\") x = confineHorizontally(x);\n const arrowY = arrow\n ? placeArrowVertical({\n menuY: y,\n arrowRef,\n anchorRect,\n containerRect,\n menuRect,\n })\n : undefined;\n return { arrowY, x, y, computedDirection };\n};\n","import { MutableRefObject } from \"react\";\n\nexport const placeArrowHorizontal = (p: {\n arrowRef: MutableRefObject<HTMLElement | null>;\n menuX: number;\n anchorRect: DOMRect;\n containerRect: DOMRect;\n menuRect: DOMRect;\n}) => {\n let x = p.anchorRect.left - p.containerRect.left - p.menuX + p.anchorRect.width / 2;\n const offset = p.arrowRef.current ? p.arrowRef.current.offsetWidth * 1.25 : 0;\n x = Math.max(offset, x);\n x = Math.min(x, p.menuRect.width - offset);\n return x;\n};\n","import { placeArrowHorizontal } from \"./placeArrowHorizontal\";\nimport { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MutableRefObject } from \"react\";\nimport { MenuDirection } from \"../types\";\n\nexport interface placeToporBottomParams {\n anchorRect: DOMRect;\n placeToporBottomX: number;\n placeTopY: number;\n placeBottomY: number;\n arrowRef: MutableRefObject<HTMLElement | null>;\n arrow?: boolean;\n direction: \"left\" | \"right\" | \"top\" | \"bottom\";\n position: \"auto\" | \"anchor\" | \"initial\";\n}\n\nexport const placeToporBottom = (\n props: ReturnType<typeof getPositionHelpers> & placeToporBottomParams,\n): { arrowX?: number | undefined; x: number; y: number; computedDirection: MenuDirection } => {\n const {\n anchorRect,\n containerRect,\n menuRect,\n placeToporBottomX,\n placeTopY,\n placeBottomY,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n arrowRef,\n arrow,\n direction,\n position,\n } = props;\n // make sure invalid direction is treated as 'bottom'\n let computedDirection: MenuDirection = direction === \"top\" ? \"top\" : \"bottom\";\n let x = placeToporBottomX;\n if (position !== \"initial\") {\n x = confineHorizontally(x);\n if (position === \"anchor\") {\n // restrict menu to the edge of anchor element\n x = Math.min(x, anchorRect.right - containerRect.left);\n x = Math.max(x, anchorRect.left - containerRect.left - menuRect.width);\n }\n }\n\n let y, topOverflow, bottomOverflow;\n if (computedDirection === \"top\") {\n y = placeTopY;\n\n if (position !== \"initial\") {\n // if menu overflows to the top,\n // try to reposition it to the bottom of the anchor.\n topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n // if menu overflows to the bottom after repositioning,\n // choose a side which has less overflow\n bottomOverflow = getBottomOverflow(placeBottomY);\n if (bottomOverflow <= 0 || -topOverflow > bottomOverflow) {\n y = placeBottomY;\n computedDirection = \"bottom\";\n }\n }\n }\n } else {\n // Opposite logic to the 'top' direction above\n y = placeBottomY;\n\n if (position !== \"initial\") {\n bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n topOverflow = getTopOverflow(placeTopY);\n if (topOverflow >= 0 || -topOverflow < bottomOverflow) {\n y = placeTopY;\n computedDirection = \"top\";\n }\n }\n }\n }\n\n if (position === \"auto\") y = confineVertically(y);\n const arrowX = arrow\n ? placeArrowHorizontal({\n menuX: x,\n arrowRef,\n anchorRect,\n containerRect,\n menuRect,\n })\n : undefined;\n return { arrowX, x, y, computedDirection };\n};\n","import { placeLeftorRight } from \"./placeLeftorRight\";\nimport { placeToporBottom } from \"./placeToporBottom\";\nimport { MutableRefObject } from \"react\";\nimport { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MenuDirection } from \"../types\";\n\ninterface positionMenuProps {\n offsetX: number;\n offsetY: number;\n arrowRef: MutableRefObject<HTMLDivElement | null>;\n anchorRef: MutableRefObject<Element | null>;\n arrow?: boolean;\n direction: MenuDirection;\n position: \"auto\" | \"anchor\" | \"initial\";\n align: \"start\" | \"center\" | \"end\";\n positionHelpers: ReturnType<typeof getPositionHelpers>;\n}\n\nexport const positionMenu = (props: positionMenuProps) => {\n const { arrow, align, direction, offsetX, offsetY, position, anchorRef, arrowRef, positionHelpers } = props;\n const { menuRect, containerRect } = positionHelpers;\n\n let horizontalOffset = offsetX;\n let verticalOffset = offsetY;\n if (arrow && arrowRef.current) {\n if (direction === \"left\" || direction === \"right\") {\n horizontalOffset += arrowRef.current.offsetWidth;\n } else {\n verticalOffset += arrowRef.current.offsetHeight;\n }\n }\n\n const anchorRect = anchorRef.current\n ? anchorRef.current.getBoundingClientRect()\n : ({ left: 0, right: 0, top: 200, bottom: 200, width: 200, height: 200 } as DOMRect);\n const placeLeftX = anchorRect.left - containerRect.left - menuRect.width - horizontalOffset;\n const placeRightX = anchorRect.right - containerRect.left + horizontalOffset;\n const placeTopY = anchorRect.top - containerRect.top - menuRect.height - verticalOffset;\n const placeBottomY = anchorRect.bottom - containerRect.top + verticalOffset;\n\n let placeToporBottomX, placeLeftorRightY;\n if (align === \"end\") {\n placeToporBottomX = anchorRect.right - containerRect.left - menuRect.width;\n placeLeftorRightY = anchorRect.bottom - containerRect.top - menuRect.height;\n } else if (align === \"center\") {\n placeToporBottomX = anchorRect.left - containerRect.left - (menuRect.width - anchorRect.width) / 2;\n placeLeftorRightY = anchorRect.top - containerRect.top - (menuRect.height - anchorRect.height) / 2;\n } else {\n placeToporBottomX = anchorRect.left - containerRect.left;\n placeLeftorRightY = anchorRect.top - containerRect.top;\n }\n placeToporBottomX += horizontalOffset;\n placeLeftorRightY += verticalOffset;\n\n const options = {\n ...positionHelpers,\n anchorRect,\n placeLeftX,\n placeRightX,\n placeLeftorRightY,\n placeTopY,\n placeBottomY,\n placeToporBottomX,\n arrowRef,\n arrow,\n direction,\n position,\n };\n\n switch (direction) {\n case \"left\":\n case \"right\":\n return placeLeftorRight(options);\n\n case \"top\":\n case \"bottom\":\n default:\n return placeToporBottom(options);\n }\n};\n","import { createContext, MutableRefObject } from \"react\";\nimport { MenuDirection, MenuOverflow } from \"../types\";\n\nexport const MenuListContext = createContext<{\n overflow?: MenuOverflow;\n overflowAmt?: number;\n parentMenuRef?: MutableRefObject<any>;\n parentDir?: MenuDirection;\n reposSubmenu?: boolean;\n}>({});\n","import { createContext, MutableRefObject, RefObject } from \"react\";\nimport { ControlledMenuProps, MenuReposition, MenuViewScroll, RectElement, TransitionFieldType } from \"../types\";\n\ninterface SettingsContextType extends ControlledMenuProps {\n rootMenuRef?: MutableRefObject<any>;\n rootAnchorRef?: MutableRefObject<any>;\n scrollNodesRef: MutableRefObject<{ anchors?: Element[]; menu?: any }>;\n\n initialMounted?: boolean;\n unmountOnClose?: boolean;\n transition?: TransitionFieldType;\n transitionTimeout?: number;\n boundingBoxRef?: RefObject<Element | RectElement>;\n boundingBoxPadding?: string;\n reposition?: MenuReposition;\n viewScroll?: MenuViewScroll;\n}\n\n// FIXME hacking a default context in here is probably bad, but the context is mess\nexport const SettingsContext = createContext<SettingsContextType>({} as SettingsContextType);\n","import { useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useBEM, useCombinedRef, useItems, useLayoutEffect } from \"../hooks\";\nimport { getPositionHelpers, positionContextMenu, positionMenu } from \"../positionUtils\";\nimport {\n batchedUpdates,\n CloseReason,\n commonProps,\n floatEqual,\n FocusPositions,\n getScrollAncestor,\n getTransition,\n HoverActionTypes,\n isMenuOpen,\n Keys,\n menuArrowClass,\n menuClass,\n mergeProps,\n safeCall,\n} from \"../utils\";\nimport { ControlledMenuProps, MenuDirection } from \"../types\";\nimport { MenuListItemContext } from \"../contexts/MenuListItemContext\";\nimport { HoverItemContext } from \"../contexts/HoverItemContext\";\nimport { MenuListContext } from \"../contexts/MenuListContext\";\nimport { SettingsContext } from \"../contexts/SettingsContext\";\nimport { debounce } from \"lodash-es\";\n\nexport const MenuList = ({\n ariaLabel,\n menuClassName,\n menuStyle,\n arrowClassName,\n arrowStyle,\n anchorPoint,\n anchorRef,\n containerRef,\n externalRef,\n parentScrollingRef,\n arrow,\n align = \"start\",\n direction = \"bottom\",\n position = \"auto\",\n overflow = \"visible\",\n setDownOverflow,\n repositionFlag,\n captureFocus = true,\n state,\n endTransition,\n isDisabled,\n menuItemFocus,\n dontShrinkIfDirectionIsTop,\n offsetX = 0,\n offsetY = 0,\n children,\n onClose,\n ...restProps\n}: ControlledMenuProps) => {\n const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });\n const [arrowPosition, setArrowPosition] = useState({ x: 0, y: 0 });\n const [overflowData, setOverflowData] = useState<{ height: number; overflowAmt: number | undefined }>();\n const [expandedDirection, setExpandedDirection] = useState(direction);\n const [openSubmenuCount, setOpenSubmenuCount] = useState(0);\n const [reposSubmenu, forceReposSubmenu] = useReducer((c) => c + 1, 1);\n const {\n transition,\n boundingBoxRef,\n boundingBoxPadding,\n rootMenuRef,\n rootAnchorRef,\n scrollNodesRef,\n reposition,\n viewScroll,\n } = useContext(SettingsContext);\n const reposFlag = useContext(MenuListContext).reposSubmenu || repositionFlag;\n const menuRef = useRef<HTMLUListElement>({} as HTMLUListElement);\n const focusRef = useRef<HTMLDivElement>(null);\n const arrowRef = useRef<HTMLDivElement>(null);\n const prevOpen = useRef(false);\n const latestWindowSize = useRef({ width: 0, height: 0 });\n const latestMenuSize = useRef({ width: 0, height: 0 });\n const latestHandlePosition = useRef(() => {});\n const { hoverItem, dispatch, updateItems } = useItems(menuRef, focusRef);\n\n const isOpen = isMenuOpen(state);\n const openTransition = getTransition(transition, \"open\");\n const closeTransition = getTransition(transition, \"close\");\n const scrollNodes = scrollNodesRef.current;\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n const elementTarget = e.target instanceof HTMLElement ? (e.target as HTMLElement) : null;\n const isTextInputTarget =\n elementTarget &&\n (elementTarget.nodeName === \"TEXTAREA\" ||\n (elementTarget.nodeName === \"INPUT\" && elementTarget.getAttribute(\"type\") === \"text\"));\n switch (e.key) {\n case Keys.HOME:\n // Don't eat home/end events on inputs\n if (isTextInputTarget) return;\n dispatch(HoverActionTypes.FIRST, null, 0);\n break;\n\n case Keys.END:\n // Don't eat home/end events on inputs\n if (isTextInputTarget) return;\n dispatch(HoverActionTypes.LAST, null, 0);\n break;\n\n case Keys.UP:\n dispatch(HoverActionTypes.DECREASE, hoverItem, 0);\n break;\n\n case Keys.DOWN:\n dispatch(HoverActionTypes.INCREASE, hoverItem, 0);\n break;\n\n // prevent browser from scrolling the page when SPACE is pressed\n case Keys.SPACE:\n // Don't preventDefault on children of FocusableItem\n if (elementTarget && elementTarget.className.includes(menuClass)) {\n e.preventDefault();\n }\n return;\n\n default:\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n };\n\n const onAnimationEnd = () => {\n if (state === \"closing\") {\n setOverflowData(undefined); // reset overflowData after closing\n }\n\n endTransition && safeCall(endTransition);\n };\n\n const handlePosition = useCallback(\n (noOverflowCheck?: boolean) => {\n if (!containerRef?.current) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n '[React-Menu] Menu cannot be positioned properly as container ref is null. If you need to initialise `state` prop to \"open\" for ControlledMenu, please see this solution: https://codesandbox.io/s/initial-open-sp10wn',\n );\n }\n return;\n }\n\n if (!scrollNodes.menu) {\n scrollNodes.menu =\n (boundingBoxRef\n ? boundingBoxRef.current // user explicitly sets boundingBoxRef\n : getScrollAncestor(rootMenuRef?.current)) || window; // try to discover bounding box automatically\n }\n\n const positionHelpers = getPositionHelpers(containerRef, menuRef, scrollNodes.menu, boundingBoxPadding);\n const { menuRect } = positionHelpers;\n let results: { computedDirection: MenuDirection; arrowX?: number; arrowY?: number; x: number; y: number } = {\n computedDirection: \"bottom\",\n x: 0,\n y: 0,\n };\n if (anchorPoint) {\n results = positionContextMenu({ positionHelpers, anchorPoint });\n } else if (anchorRef) {\n results = positionMenu({\n arrow,\n align,\n direction,\n offsetX,\n offsetY,\n position,\n anchorRef,\n arrowRef,\n positionHelpers,\n });\n }\n let { y } = results;\n const { x, arrowX, arrowY, computedDirection } = results;\n let menuHeight = menuRect.height;\n\n if (!noOverflowCheck && overflow !== \"visible\") {\n const { getTopOverflow, getBottomOverflow } = positionHelpers;\n\n let height: number | undefined, overflowAmt: number | undefined;\n const prevHeight = latestMenuSize.current.height;\n const bottomOverflow = getBottomOverflow(y);\n // When bottomOverflow is 0, menu is on the bottom edge of viewport\n // This might be the result of a previous maxHeight set on the menu.\n // In this situation, we need to still apply a new maxHeight.\n // Same reason for the top side\n if (bottomOverflow > 0 || (floatEqual(bottomOverflow, 0) && floatEqual(menuHeight, prevHeight))) {\n height = menuHeight - bottomOverflow;\n overflowAmt = bottomOverflow;\n } else {\n const topOverflow = getTopOverflow(y);\n if (topOverflow < 0 || (floatEqual(topOverflow, 0) && floatEqual(menuHeight, prevHeight))) {\n height = menuHeight + topOverflow;\n overflowAmt = 0 - topOverflow; // avoid getting -0\n if (height >= 0) y -= topOverflow;\n }\n }\n\n if (height != null && height >= 0) {\n // To avoid triggering reposition in the next ResizeObserver callback\n menuHeight = height;\n setOverflowData({ height, overflowAmt });\n } else {\n setOverflowData(undefined);\n }\n }\n\n if (arrow) setArrowPosition({ x: arrowX ?? 0, y: arrowY ?? 0 });\n setMenuPosition({ x, y });\n setExpandedDirection(computedDirection);\n latestMenuSize.current = { width: menuRect.width, height: menuHeight };\n },\n [\n arrow,\n align,\n boundingBoxPadding,\n direction,\n offsetX,\n offsetY,\n position,\n overflow,\n anchorPoint,\n anchorRef,\n containerRef,\n boundingBoxRef,\n rootMenuRef,\n scrollNodes,\n ],\n );\n\n useLayoutEffect(() => {\n if (isOpen) {\n handlePosition();\n // Reposition submenu whenever deps(except isOpen) have changed\n if (prevOpen.current) forceReposSubmenu();\n }\n prevOpen.current = isOpen;\n latestHandlePosition.current = handlePosition;\n }, [isOpen, handlePosition, /* effect dep */ reposFlag]);\n\n useLayoutEffect(() => {\n if (overflowData && !setDownOverflow) menuRef.current.scrollTop = 0;\n }, [overflowData, setDownOverflow]);\n\n useLayoutEffect(() => updateItems, [updateItems]);\n\n useEffect(() => {\n let { menu: menuScroll } = scrollNodes;\n if (!isOpen || !menuScroll) return;\n\n menuScroll = menuScroll.addEventListener ? menuScroll : window;\n if (!scrollNodes.anchors) {\n scrollNodes.anchors = [];\n let anchorScroll = getScrollAncestor(rootAnchorRef && rootAnchorRef.current);\n while (anchorScroll && anchorScroll !== menuScroll) {\n scrollNodes.anchors.push(anchorScroll);\n anchorScroll = getScrollAncestor(anchorScroll);\n }\n }\n\n let scroll = viewScroll;\n if (scrollNodes.anchors.length && scroll === \"initial\") scroll = \"auto\";\n if (scroll === \"initial\") return;\n\n const handleScroll = () => {\n if (scroll === \"auto\") {\n batchedUpdates(() => handlePosition(true));\n } else {\n safeCall(onClose, { reason: CloseReason.SCROLL });\n }\n };\n\n const scrollObservers = scrollNodes.anchors.concat(viewScroll !== \"initial\" ? menuScroll : []);\n scrollObservers.forEach((o: any) => o.addEventListener(\"scroll\", handleScroll));\n return () => scrollObservers.forEach((o) => o.removeEventListener(\"scroll\", handleScroll));\n }, [rootAnchorRef, scrollNodes, isOpen, onClose, viewScroll, handlePosition]);\n\n const hasOverflow = !!overflowData && overflowData.overflowAmt != null && overflowData.overflowAmt > 0;\n useEffect(() => {\n if (hasOverflow || !isOpen || !parentScrollingRef) return;\n\n const handleScroll = () => batchedUpdates(handlePosition);\n const parentScroll = parentScrollingRef.current;\n parentScroll.addEventListener(\"scroll\", handleScroll);\n return () => parentScroll.removeEventListener(\"scroll\", handleScroll);\n }, [isOpen, hasOverflow, parentScrollingRef, handlePosition]);\n\n useEffect(() => {\n if (typeof ResizeObserver !== \"function\" || reposition === \"initial\") return;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { borderBoxSize, target } = entry;\n let width, height;\n if (borderBoxSize) {\n const { inlineSize, blockSize } = borderBoxSize[0] || borderBoxSize;\n width = inlineSize;\n height = blockSize;\n } else {\n const borderRect = target.getBoundingClientRect();\n width = borderRect.width;\n height = borderRect.height;\n }\n\n if (width === 0 || height === 0) return;\n if (floatEqual(width, latestMenuSize.current.width, 1) && floatEqual(height, latestMenuSize.current.height, 1))\n return;\n flushSync(() => {\n latestHandlePosition.current();\n forceReposSubmenu();\n });\n });\n\n const observeTarget = menuRef.current;\n resizeObserver.observe(observeTarget, { box: \"border-box\" });\n return () => resizeObserver.unobserve(observeTarget);\n }, [reposition]);\n\n // Matt added window resize observer\n useEffect(() => {\n if (typeof ResizeObserver !== \"function\" || reposition === \"initial\") return;\n\n const callback = debounce(() => {\n const { width, height } = menuRef.current.ownerDocument.body.getBoundingClientRect();\n if (width === 0 || height === 0) return;\n if (\n floatEqual(width, latestWindowSize.current.width, 1) &&\n floatEqual(height, latestWindowSize.current.height, 1)\n ) {\n return;\n }\n latestWindowSize.current = { width, height };\n flushSync(() => {\n latestHandlePosition.current();\n forceReposSubmenu();\n });\n }, 250);\n\n const resizeObserver = new ResizeObserver(callback);\n\n const observeTarget = menuRef.current.ownerDocument.body;\n resizeObserver.observe(observeTarget, { box: \"border-box\" });\n return () => {\n callback.cancel();\n resizeObserver.unobserve(observeTarget);\n };\n }, [reposition]);\n\n useEffect(() => {\n if (!isOpen) {\n dispatch(HoverActionTypes.RESET, undefined, 0);\n if (!closeTransition) setOverflowData(undefined);\n return () => {};\n }\n\n const { position, alwaysUpdate } = menuItemFocus || {};\n const setItemFocus = () => {\n if (position === FocusPositions.FIRST) {\n dispatch(HoverActionTypes.FIRST, undefined, 0);\n } else if (position === FocusPositions.LAST) {\n dispatch(HoverActionTypes.LAST, undefined, 0);\n } else if (typeof position === \"number\" && position >= -1) {\n dispatch(HoverActionTypes.SET_INDEX, undefined, position);\n }\n };\n\n if (alwaysUpdate) {\n setItemFocus();\n } else if (captureFocus) {\n // Use a timeout here because if set focus immediately, page might scroll unexpectedly.\n const id = setTimeout(\n () => {\n // If focus has already been set to a children element, don't set focus on menu or item\n if (!menuRef.current.contains(document.activeElement)) {\n // Handle popover portal focus\n const popupElement = focusRef.current?.nextSibling;\n if (popupElement instanceof Element) {\n const input = popupElement.querySelectorAll(\"input,textarea\")[0] as HTMLElement;\n if (input) {\n input.focus();\n // Text areas should start at end\n if (input instanceof HTMLTextAreaElement) {\n input.selectionStart = input.value.length;\n }\n } else {\n focusRef.current?.focus();\n }\n } else {\n focusRef.current?.focus();\n }\n setItemFocus();\n }\n },\n openTransition ? 170 : 100,\n );\n\n return () => clearTimeout(id);\n }\n return () => {};\n }, [isOpen, openTransition, closeTransition, captureFocus, menuItemFocus, dispatch]);\n\n const isSubmenuOpen = openSubmenuCount > 0;\n const itemContext = useMemo(\n () => ({\n isParentOpen: isOpen,\n isSubmenuOpen,\n setOpenSubmenuCount,\n dispatch,\n updateItems,\n }),\n [isOpen, isSubmenuOpen, dispatch, updateItems],\n );\n\n let maxHeight: number | undefined;\n let overflowAmt: number | undefined;\n if (overflowData) {\n setDownOverflow ? (overflowAmt = overflowData.overflowAmt) : (maxHeight = overflowData.height);\n }\n\n const listContext = useMemo(\n () => ({\n reposSubmenu,\n overflow,\n overflowAmt,\n parentMenuRef: menuRef,\n parentDir: expandedDirection,\n }),\n [reposSubmenu, overflow, overflowAmt, expandedDirection],\n );\n const overflowStyle = maxHeight != null && maxHeight >= 0 ? { maxHeight, overflow } : undefined;\n\n const modifiers = useMemo(\n () => ({\n state,\n dir: expandedDirection,\n }),\n [state, expandedDirection],\n );\n const arrowModifiers = useMemo(() => ({ dir: expandedDirection }), [expandedDirection]);\n const _arrowClass = useBEM({\n block: menuClass,\n element: menuArrowClass,\n modifiers: arrowModifiers,\n className: arrowClassName,\n });\n\n const minHeight = useRef(0);\n if (dontShrinkIfDirectionIsTop && menuRef.current?.getBoundingClientRect) {\n const h = menuRef.current?.getBoundingClientRect().height;\n if (minHeight.current < h) minHeight.current = h;\n }\n\n const dontShrinkOps = useMemo(\n () =>\n expandedDirection === \"top\" && dontShrinkIfDirectionIsTop\n ? {\n overflowY: isSubmenuOpen ? \"\" : \"auto\",\n minHeight: (isSubmenuOpen ? 0 : minHeight.current) + \"px\",\n }\n : undefined,\n [dontShrinkIfDirectionIsTop, expandedDirection, isSubmenuOpen],\n );\n\n return (\n <ul\n role=\"menu\"\n aria-label={ariaLabel}\n {...mergeProps({ onKeyDown, onAnimationEnd }, restProps)}\n {...commonProps(isDisabled)}\n ref={useCombinedRef(externalRef, menuRef)}\n className={useBEM({ block: menuClass, modifiers, className: menuClassName })}\n style={{\n ...menuStyle,\n ...overflowStyle,\n ...dontShrinkOps,\n margin: 0,\n display: state === \"closed\" ? \"none\" : undefined,\n position: \"absolute\",\n left: menuPosition.x,\n top: menuPosition.y,\n }}\n >\n <div ref={focusRef} tabIndex={-1} style={{ position: \"absolute\", left: 0, top: 0 }} />\n {arrow && (\n <div\n className={_arrowClass}\n style={{\n ...arrowStyle,\n position: \"absolute\",\n left: arrowPosition.x,\n top: arrowPosition.y,\n }}\n ref={arrowRef}\n />\n )}\n\n <MenuListContext.Provider value={listContext}>\n <MenuListItemContext.Provider value={itemContext}>\n <HoverItemContext.Provider value={hoverItem}>{children}</HoverItemContext.Provider>\n </MenuListItemContext.Provider>\n </MenuListContext.Provider>\n </ul>\n );\n};\n","import { isEmpty as _isEmpty } from \"lodash-es\";\n\n// Typed version of lodash !isEmpty\nexport const isNotEmpty = (obj: Set<any> | Map<any, any> | Record<any, any> | any[] | undefined): boolean =>\n !_isEmpty(obj);\n\nexport const wait = (timeoutMs: number) =>\n new Promise<(string | null)[]>((resolve) => {\n setTimeout(resolve, timeoutMs);\n });\n\nexport const isFloat = (value: string) => {\n const regexp = /^-?\\d+(\\.\\d+)?$/;\n return regexp.test(value);\n};\n\nexport const hasParentClass = function (className: string, child: Node) {\n let node: Node | null = child;\n while (node) {\n // When nodes are in portals they aren't type node anymore hence treating it as any here\n if ((node as any).classList && (node as any).classList.contains(className)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n};\n","import { createContext } from \"react\";\nimport { RMEvent } from \"../utils\";\n\nexport interface EventHandlersContextType {\n handleClose?: () => void;\n handleClick: (event: RMEvent, checked: boolean) => void;\n}\n\nexport const EventHandlersContext = createContext<EventHandlersContextType>({\n handleClick: () => {},\n});\n","import {\n forwardRef,\n useRef,\n useMemo,\n useCallback,\n useEffect,\n KeyboardEvent,\n FocusEvent,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { MenuList } from \"./MenuList\";\nimport { useBEM } from \"../hooks\";\nimport { menuContainerClass, mergeProps, safeCall, isMenuOpen, getTransition, CloseReason, Keys } from \"../utils\";\nimport { hasParentClass } from \"../../utils/util\";\nimport { ControlledMenuProps, PortalFieldType, RadioChangeEvent } from \"../types\";\nimport { ItemSettingsContext } from \"../contexts/ItemSettingsContext\";\nimport { SettingsContext } from \"../contexts/SettingsContext\";\nimport { EventHandlersContext, EventHandlersContextType } from \"../contexts/EventHandlersContext\";\n\nexport const ControlledMenuFr = (\n {\n \"aria-label\": ariaLabel,\n className,\n containerProps,\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n boundingBoxRef,\n boundingBoxPadding,\n reposition = \"auto\",\n submenuOpenDelay = 300,\n submenuCloseDelay = 150,\n skipOpen,\n viewScroll = \"initial\",\n portal,\n theming,\n onItemClick,\n onClose,\n saveButtonRef,\n closeMenuExclusionClassName,\n ...restProps\n }: ControlledMenuProps & { saveButtonRef?: MutableRefObject<HTMLButtonElement | null> },\n externalRef: ForwardedRef<HTMLUListElement>,\n) => {\n const containerRef = useRef<HTMLElement>();\n const scrollNodesRef = useRef<{ anchors?: HTMLDivElement[] }>({});\n const { anchorRef, state } = restProps;\n\n const settings = useMemo(\n () => ({\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n boundingBoxRef,\n boundingBoxPadding,\n rootMenuRef: containerRef,\n rootAnchorRef: anchorRef,\n scrollNodesRef,\n reposition,\n viewScroll,\n }),\n [\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n anchorRef,\n boundingBoxRef,\n boundingBoxPadding,\n reposition,\n viewScroll,\n ],\n );\n\n const isWithinMenu = useCallback(\n (target: EventTarget | null) =>\n hasParentClass(\"szh-menu--state-open\", target as Node) ||\n (closeMenuExclusionClassName && hasParentClass(closeMenuExclusionClassName, target as Node)),\n [closeMenuExclusionClassName],\n );\n\n const handleScreenEventForSave = useCallback(\n (ev: MouseEvent) => {\n if (!isWithinMenu(ev.target)) {\n ev.preventDefault();\n ev.stopPropagation();\n // Note: There's an issue in React17\n // the cell doesn't refresh during update if save is invoked from a native event\n // This doesn't happen in React18\n // To work around it, I invoke the save by clicking on a passed in invisible button ref\n if (saveButtonRef?.current) saveButtonRef.current.click();\n else safeCall(onClose, { reason: CloseReason.BLUR });\n\n // If a user clicks on the menu button when a menu is open, we need to close the menu.\n // However, a blur event will be fired prior to the click event on menu button,\n // which makes the menu first close and then open again.\n // If this happens, e.relatedTarget is incorrectly set to null instead of the button in Safari and Firefox,\n // and makes it difficult to determine whether onBlur is fired because of clicking on menu button.\n // This is a workaround approach which sets a flag to skip a following click event.\n if (skipOpen) {\n skipOpen.current = true;\n setTimeout(() => (skipOpen.current = false), 300);\n }\n }\n },\n [isWithinMenu, onClose, saveButtonRef, skipOpen],\n );\n\n const handleScreenEventForCancel = useCallback(\n (ev: MouseEvent) => {\n if (!isWithinMenu(ev.target)) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n },\n [isWithinMenu],\n );\n\n useEffect(() => {\n if (isMenuOpen(state)) {\n const thisDocument = anchorRef?.current ? anchorRef?.current.ownerDocument : document;\n thisDocument.addEventListener(\"mousedown\", handleScreenEventForSave, true);\n thisDocument.addEventListener(\"mouseup\", handleScreenEventForCancel, true);\n thisDocument.addEventListener(\"click\", handleScreenEventForCancel, true);\n thisDocument.addEventListener(\"dblclick\", handleScreenEventForCancel, true);\n return () => {\n thisDocument.removeEventListener(\"mousedown\", handleScreenEventForSave, true);\n thisDocument.removeEventListener(\"mouseup\", handleScreenEventForCancel, true);\n thisDocument.removeEventListener(\"click\", handleScreenEventForCancel, true);\n thisDocument.removeEventListener(\"dblclick\", handleScreenEventForCancel, true);\n };\n }\n return () => {};\n }, [handleScreenEventForSave, handleScreenEventForCancel, state, anchorRef]);\n\n const itemSettings = useMemo(\n () => ({\n submenuOpenDelay,\n submenuCloseDelay,\n }),\n [submenuOpenDelay, submenuCloseDelay],\n );\n\n const eventHandlers = useMemo(\n (): EventHandlersContextType => ({\n handleClick(event: RadioChangeEvent, isCheckOrRadio: boolean) {\n if (!event.stopPropagation) safeCall(onItemClick, event);\n\n let keepOpen = event.keepOpen;\n if (keepOpen === undefined) {\n // if event.keepOpen is undefined, the following default behaviour is used\n // According to WAI-ARIA Authoring Practices 1.1\n // Keep menu open when check or radio is invoked by SPACE key\n keepOpen = isCheckOrRadio && event.key === Keys.SPACE;\n }\n\n if (!keepOpen) {\n safeCall(onClose, {\n value: event.value,\n key: event.key,\n reason: CloseReason.CLICK,\n });\n }\n },\n\n handleClose(key?: string) {\n safeCall(onClose, { key, reason: CloseReason.CLICK });\n },\n }),\n [onItemClick, onClose],\n );\n\n const onKeyDown = ({ key }: KeyboardEvent) => {\n switch (key) {\n case Keys.ESC:\n safeCall(onClose, { key, reason: CloseReason.CANCEL });\n break;\n }\n };\n\n const onBlur = (e: FocusEvent) => {\n if (\n isMenuOpen(state) &&\n !e.currentTarget.contains(e.relatedTarget || document.activeElement) &&\n !isWithinMenu(e.relatedTarget)\n ) {\n safeCall(onClose, { reason: CloseReason.BLUR });\n\n // If a user clicks on the menu button when a menu is open, we need to close the menu.\n // However, a blur event will be fired prior to the click event on menu button,\n // which makes the menu first close and then open again.\n // If this happens, e.relatedTarget is incorrectly set to null instead of the button in Safari and Firefox,\n // and makes it difficult to determine whether onBlur is fired because of clicking on menu button.\n // This is a workaround approach which sets a flag to skip a following click event.\n if (skipOpen) {\n skipOpen.current = true;\n setTimeout(() => (skipOpen.current = false), 300);\n }\n }\n };\n\n const itemTransition = getTransition(transition, \"item\");\n const modifiers = useMemo(() => ({ theme: theming, itemTransition }), [theming, itemTransition]);\n\n const menuList = (\n <div\n {...mergeProps({ onKeyDown, onBlur }, containerProps)}\n className={useBEM({\n block: menuContainerClass,\n modifiers,\n className,\n })}\n style={{ ...containerProps?.style, position: \"relative\" }}\n ref={containerRef}\n >\n {state && (\n <SettingsContext.Provider value={settings}>\n <ItemSettingsContext.Provider value={itemSettings}>\n <EventHandlersContext.Provider value={eventHandlers}>\n <MenuList\n {...restProps}\n ariaLabel={ariaLabel || \"Menu\"}\n externalRef={externalRef}\n containerRef={containerRef}\n onClose={onClose}\n />\n </EventHandlersContext.Provider>\n </ItemSettingsContext.Provider>\n </SettingsContext.Provider>\n )}\n </div>\n );\n\n if (portal === true && anchorRef?.current != null) {\n portal = { target: anchorRef.current.ownerDocument.body } as PortalFieldType;\n }\n\n if (portal) {\n if (typeof portal === \"boolean\") {\n if (portal && typeof document !== \"undefined\") {\n return createPortal(menuList, document.body);\n }\n } else {\n return portal.target ? createPortal(menuList, portal.target) : portal.stablePosition ? null : menuList;\n }\n }\n return menuList;\n};\n\nexport const ControlledMenu = forwardRef(ControlledMenuFr);\n","import {\n cloneElement,\n Fragment,\n forwardRef,\n useRef,\n useCallback,\n useImperativeHandle,\n ReactElement,\n ForwardedRef,\n} from \"react\";\nimport { ControlledMenu } from \"./ControlledMenu\";\nimport { useMenuChange, useMenuStateAndFocus, useCombinedRef } from \"../hooks\";\nimport { getName, mergeProps, safeCall, isMenuOpen, Keys, FocusPositions } from \"../utils\";\nimport { MenuButtonModifiers, RenderProp, RootMenuProps, UncontrolledMenuProps } from \"../types\";\n\n//\n// Menu\n// ----------------------------------------------------------------------\nexport interface MenuProps extends RootMenuProps, UncontrolledMenuProps {\n /**\n * Can be a `MenuButton`, a `button` element, or a React component.\n * It also can be a render function that returns one.\n *\n * If a React component is provided, it needs to implement the following contracts:\n * - Accepts a `ref` prop that is forwarded to an element to which menu will be positioned.\n * The element should be able to receive focus.\n * - Accepts `onClick` and `onKeyDown` event props.\n */\n menuButton: RenderProp<MenuButtonModifiers, ReactElement>;\n}\n\nexport function MenuFr(\n { \"aria-label\": ariaLabel, menuButton, instanceRef, onMenuChange, ...restProps }: MenuProps,\n externalRef: ForwardedRef<ReactElement>,\n) {\n const [stateProps, toggleMenu, openMenu] = useMenuStateAndFocus(restProps);\n const isOpen = isMenuOpen(stateProps.state);\n const skipOpen = useRef(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleClose = useCallback(\n (e) => {\n toggleMenu(false);\n if (e.key) buttonRef.current && buttonRef.current.focus();\n },\n [toggleMenu],\n );\n\n const onClick = (e: MouseEvent) => {\n if (skipOpen.current) return;\n // Focus (hover) the first menu item when onClick event is trigger by keyboard\n openMenu(e.detail === 0 ? FocusPositions.FIRST : undefined);\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case Keys.UP:\n openMenu(FocusPositions.LAST);\n break;\n\n case Keys.DOWN:\n openMenu(FocusPositions.FIRST);\n break;\n\n default:\n return;\n }\n\n e.preventDefault();\n };\n\n // Too many mixed types here to figure out what to pick for button. Bad code.\n const button: any = safeCall(menuButton, { open: isOpen });\n if (!button || !button.type) throw new Error(\"Menu requires a menuButton prop.\");\n\n const buttonProps = {\n ref: useCombinedRef(button.ref, buttonRef),\n ...mergeProps({ onClick, onKeyDown }, button.props),\n isOpen: false,\n };\n if (getName(button.type) === \"MenuButton\") {\n buttonProps.isOpen = isOpen;\n }\n const renderButton = cloneElement(button, buttonProps);\n\n useMenuChange(onMenuChange, isOpen);\n\n useImperativeHandle(instanceRef, () => ({\n openMenu,\n closeMenu: () => toggleMenu(false),\n }));\n\n return (\n <Fragment>\n {renderButton}\n <ControlledMenu\n {...restProps}\n {...stateProps}\n aria-label={ariaLabel || (typeof button.props.children === \"string\" ? button.props.children : \"Menu\")}\n anchorRef={buttonRef}\n ref={externalRef}\n onClose={handleClose}\n skipOpen={skipOpen}\n />\n </Fragment>\n );\n}\nexport const Menu = forwardRef(MenuFr);\n","import {\n useRef,\n useContext,\n useEffect,\n useMemo,\n useImperativeHandle,\n CSSProperties,\n ReactNode,\n KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useBEM, useCombinedRef, useMenuChange, useMenuStateAndFocus, useItemEffect } from \"../hooks\";\nimport { MenuList } from \"./MenuList\";\nimport {\n mergeProps,\n batchedUpdates,\n commonProps,\n safeCall,\n menuClass,\n subMenuClass,\n menuItemClass,\n isMenuOpen,\n withHovering,\n Keys,\n HoverActionTypes,\n FocusPositions,\n} from \"../utils\";\nimport {\n BaseProps,\n ClassNameProp,\n Hoverable,\n MenuAlign,\n MenuArrowModifiers,\n MenuDirection,\n MenuModifiers,\n MenuOverflow,\n MenuPosition,\n RenderProp,\n UncontrolledMenuProps,\n} from \"../types\";\nimport { withHoveringResultProps } from \"../utils/withHovering\";\nimport { MenuListItemContext } from \"../contexts/MenuListItemContext\";\nimport { MenuListContext } from \"../contexts/MenuListContext\";\nimport { SettingsContext } from \"../contexts/SettingsContext\";\nimport { ItemSettingsContext } from \"../contexts/ItemSettingsContext\";\n\n//\n// SubMenu\n// ----------------------------------------------------------------------\nexport type SubMenuItemModifiers = Readonly<{\n /**\n * Indicates if the submenu is open.\n */\n open: boolean;\n /**\n * Indicates if the submenu item is being hovered and has focus.\n */\n hover: boolean;\n /**\n * Indicates if the submenu and item are disabled.\n */\n disabled: boolean;\n}>;\n\n/**\n * Common props for `Menu`, `SubMenu` and `ControlledMenu`\n */\ninterface BaseMenuProps extends Omit<BaseProps, \"style\"> {\n /**\n * Can be a string or a function which receives a modifier object and returns a CSS `class` string.\n */\n menuClassName?: ClassNameProp<MenuModifiers>;\n /**\n * This prop is forwarded to the `style` prop of menu DOM element.\n */\n menuStyle?: CSSProperties;\n /**\n * Can be a string or a function which receives a modifier object and returns a CSS `class` string.\n */\n arrowClassName?: ClassNameProp<MenuArrowModifiers>;\n /**\n * This prop is forwarded to the `style` prop of menu arrow DOM element.\n */\n arrowStyle?: CSSProperties;\n /**\n * Set `true` to display an arrow pointing to its anchor element.\n */\n arrow?: boolean;\n /**\n * Set the horizontal distance (in pixels) between menu and its anchor element.\n * The value can be negative.\n * @default 0\n */\n offsetX?: number;\n /**\n * Set the vertical distance (in pixels) between menu and its anchor element.\n * The value can be negative.\n * @default 0\n */\n offsetY?: number;\n /**\n * Set alignment of menu with anchor element.\n * @default 'start'\n */\n align?: MenuAlign;\n /**\n * Set direction in which menu expands against anchor element.\n * @default 'bottom'\n */\n direction?: MenuDirection;\n /**\n * Set the position of menu related to its anchor element:\n *\n * - 'auto' menu position is adjusted to have it contained within the viewport,\n * even if it will be detached from the anchor element.\n * This option allows to display menu in the viewport as much as possible.\n *\n * - 'anchor' menu position is adjusted to have it contained within the viewport,\n * but it will be kept attached to the edges of anchor element.\n *\n * - 'initial' menu always stays at its initial position.\n * @default 'auto'\n */\n position?: MenuPosition;\n /**\n * Make the menu list scrollable or hidden when there is not enough viewport space to\n * display all menu items. The prop is similar to the CSS `overflow` property.\n * @default 'visible'\n */\n overflow?: MenuOverflow;\n /**\n * Set computed overflow amount down to a child `MenuGroup`.\n * The `MenuGroup` should have `takeOverflow` prop set as `true` accordingly.\n */\n setDownOverflow?: boolean;\n children?: ReactNode;\n}\n\nexport interface SubMenuProps extends BaseMenuProps, Hoverable, UncontrolledMenuProps, withHoveringResultProps {\n /**\n * Properties of this object are spread to the submenu item DOM element.\n */\n itemProps?: BaseProps<SubMenuItemModifiers>;\n /**\n * The submenu `label` can be a `string` or JSX element, or a render function that returns one.\n */\n label?: RenderProp<SubMenuItemModifiers>;\n /**\n * - `undefined` submenu opens when the label item is hovered or clicked. This is the default behaviour.\n * - 'clickOnly' submenu opens when the label item is clicked.\n * - 'none' submenu doesn't open with mouse or keyboard events;\n * you can call the `openMenu` function on `instanceRef` to open submenu programmatically.\n */\n openTrigger?: \"none\" | \"clickOnly\";\n}\n\nexport const SubMenuFr = ({\n \"aria-label\": ariaLabel,\n className,\n disabled,\n direction,\n label,\n openTrigger,\n onMenuChange,\n isHovering,\n instanceRef,\n menuItemRef,\n itemProps = {},\n ...restProps\n}: SubMenuProps) => {\n const settings = useContext(SettingsContext);\n const { rootMenuRef } = settings;\n const { submenuOpenDelay, submenuCloseDelay } = useContext(ItemSettingsContext);\n const { parentMenuRef, parentDir, overflow: parentOverflow } = useContext(MenuListContext);\n const { isParentOpen, isSubmenuOpen, setOpenSubmenuCount, dispatch, updateItems } = useContext(MenuListItemContext);\n const isPortal = parentOverflow !== \"visible\";\n\n const [stateProps, toggleMenu, _openMenu] = useMenuStateAndFocus(settings);\n\n const { state } = stateProps;\n const isDisabled = !!disabled;\n const isOpen = isMenuOpen(state);\n const containerRef = useRef(null);\n const timeoutId = useRef<ReturnType<typeof setTimeout>>();\n\n const stopTimer = () => {\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n timeoutId.current = undefined;\n }\n };\n\n const openMenu = (...args: any[]) => {\n stopTimer();\n setHover();\n !isDisabled && _openMenu(...args);\n };\n\n const setHover = () => !isHovering && !isDisabled && dispatch(HoverActionTypes.SET, menuItemRef?.current, 0);\n\n const delayOpen = (delay: number) => {\n setHover();\n if (!openTrigger) timeoutId.current = setTimeout(() => batchedUpdates(openMenu), Math.max(delay, 0));\n };\n\n const handlePointerMove = () => {\n if (timeoutId.current || isOpen || isDisabled) return;\n\n if (isSubmenuOpen) {\n timeoutId.current = setTimeout(() => delayOpen(submenuOpenDelay - submenuCloseDelay), submenuCloseDelay);\n } else {\n delayOpen(submenuOpenDelay);\n }\n };\n\n const handlePointerLeave = () => {\n stopTimer();\n if (!isOpen) dispatch(HoverActionTypes.UNSET, menuItemRef?.current, 0);\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n let handled = false;\n\n switch (e.key) {\n // LEFT key is bubbled up from submenu items\n case Keys.LEFT:\n if (isOpen) {\n menuItemRef?.current && menuItemRef.current.focus();\n toggleMenu(false);\n handled = true;\n }\n break;\n\n // prevent browser from scrolling page to the right\n case Keys.RIGHT:\n if (!isOpen) handled = true;\n break;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleItemKeyDown = (e: KeyboardEvent) => {\n if (!isHovering) return;\n\n switch (e.key) {\n case Keys.ENTER:\n case Keys.SPACE:\n case Keys.RIGHT:\n openTrigger !== \"none\" && openMenu(FocusPositions.FIRST);\n break;\n }\n };\n\n useItemEffect(isDisabled, menuItemRef, updateItems);\n useMenuChange(onMenuChange, isOpen);\n\n useEffect(() => () => clearTimeout(timeoutId.current), []);\n useEffect(() => {\n // Don't set focus when parent menu is closed, otherwise focus will be lost\n // and onBlur event will be fired with relatedTarget setting as null.\n if (isHovering && isParentOpen) {\n menuItemRef?.current && menuItemRef.current.focus();\n } else {\n toggleMenu(false);\n }\n }, [isHovering, isParentOpen, toggleMenu, menuItemRef]);\n\n useEffect(() => {\n setOpenSubmenuCount((count: number) => (isOpen ? count + 1 : Math.max(count - 1, 0)));\n }, [setOpenSubmenuCount, isOpen]);\n\n useImperativeHandle(instanceRef, () => ({\n openMenu: (...args) => {\n isParentOpen && openMenu(...args);\n },\n closeMenu: () => {\n if (isOpen) {\n menuItemRef?.current && menuItemRef.current.focus();\n toggleMenu(false);\n }\n },\n }));\n\n const modifiers = useMemo(\n () => ({\n open: isOpen,\n hover: isHovering,\n disabled: isDisabled,\n submenu: true,\n }),\n [isOpen, isHovering, isDisabled],\n );\n\n const { ref: externalItemRef, className: itemClassName, ...restItemProps } = itemProps;\n\n const mergedItemProps = mergeProps(\n {\n onPointerMove: handlePointerMove,\n onPointerLeave: handlePointerLeave,\n onKeyDown: handleItemKeyDown,\n onClick: () => openTrigger !== \"none\" && openMenu(),\n },\n restItemProps,\n );\n\n const getMenuList = () => {\n const menuList = (\n <MenuList\n {...restProps}\n {...stateProps}\n ariaLabel={ariaLabel || (typeof label === \"string\" ? label : \"Submenu\")}\n anchorRef={menuItemRef}\n containerRef={isPortal ? rootMenuRef : containerRef}\n direction={direction || (parentDir === \"right\" || parentDir === \"left\" ? parentDir : \"right\")}\n parentScrollingRef={isPortal && parentMenuRef}\n isDisabled={isDisabled}\n />\n );\n const container = rootMenuRef?.current;\n return isPortal && container ? createPortal(menuList, container) : menuList;\n };\n\n return (\n <li\n className={useBEM({ block: menuClass, element: subMenuClass, className })}\n style={{ position: \"relative\" }}\n role=\"presentation\"\n ref={containerRef}\n onKeyDown={handleKeyDown}\n >\n <div\n role=\"menuitem\"\n aria-haspopup\n aria-expanded={isOpen}\n {...mergedItemProps}\n {...commonProps(isDisabled, isHovering)}\n ref={useCombinedRef(externalItemRef, menuItemRef)}\n className={useBEM({\n block: menuClass,\n element: menuItemClass,\n modifiers,\n className: itemClassName,\n })}\n >\n {useMemo(() => safeCall(label, modifiers), [label, modifiers])}\n </div>\n\n {state && getMenuList()}\n </li>\n );\n};\n\nexport const SubMenu = withHovering(\"SubMenu\", SubMenuFr);\n","import { createContext } from \"react\";\nimport { EventHandler, RadioChangeEvent } from \"../types\";\n\nexport const RadioGroupContext = createContext<{\n value?: any;\n name?: string;\n onRadioChange?: EventHandler<RadioChangeEvent>;\n}>({});\n","import { Ref, useContext, useMemo } from \"react\";\nimport { useBEM, useItemState, useCombinedRef } from \"../hooks\";\nimport { mergeProps, commonProps, safeCall, menuClass, menuItemClass, withHovering, Keys, RMEvent } from \"../utils\";\nimport { BaseProps, ClickEvent, EventHandler, Hoverable, MenuItemTypeProp, RenderProp } from \"../types\";\nimport { withHoveringResultProps } from \"../utils/withHovering\";\nimport { EventHandlersContext } from \"../contexts/EventHandlersContext\";\nimport { RadioGroupContext } from \"../contexts/RadioGroupContext\";\n\n//\n// MenuItem\n// ----------------------------------------------------------------------\nexport type MenuItemModifiers = Readonly<{\n /**\n * 'radio' for radio item, 'checkbox' for checkbox item, or `undefined` for other items.\n */\n type?: MenuItemTypeProp;\n /**\n * Indicates if the menu item is disabled.\n */\n disabled: boolean;\n /**\n * Indicates if the menu item is being hovered and has focus.\n */\n hover: boolean;\n /**\n * Indicates if the menu item is checked when it's a radio or checkbox item.\n */\n checked: boolean;\n /**\n * Indicates if the menu item has a URL link.\n */\n anchor: boolean;\n}>;\n\nexport interface MenuItemProps extends Omit<BaseProps<MenuItemModifiers>, \"onClick\">, Hoverable {\n /**\n * Any value provided to this prop will be available in the event object of click events.\n *\n * It's useful for helping identify which menu item is clicked when you\n * listen on `onItemClick` event on root menu component.\n */\n value?: any;\n /**\n * If provided, menu item renders an HTML `<a>` element with this `href` attribute.\n */\n href?: string;\n rel?: string;\n target?: string;\n /**\n * Set this prop to make the item a checkbox or radio menu item.\n */\n type?: MenuItemTypeProp;\n /**\n * Set `true` if a checkbox menu item is checked.\n *\n * *Please note radio menu item doesn't use this prop.*\n */\n checked?: boolean;\n /**\n * Event fired when the menu item is clicked.\n */\n onClick?: EventHandler<ClickEvent>;\n /**\n * Any valid React node or a render function that returns one.\n */\n children?: RenderProp<MenuItemModifiers>;\n}\n\nconst MenuItemFr = ({\n className,\n value,\n href,\n type,\n checked,\n disabled,\n children,\n onClick,\n isHovering,\n menuItemRef,\n externalRef,\n ...restProps\n}: MenuItemProps & withHoveringResultProps) => {\n const isDisabled = !!disabled;\n const { setHover, ...restStateProps } = useItemState(menuItemRef, menuItemRef, isHovering, isDisabled);\n const eventHandlers = useContext(EventHandlersContext);\n const radioGroup = useContext(RadioGroupContext);\n const isRadio = type === \"radio\";\n const isCheckBox = type === \"checkbox\";\n const isAnchor = !!href && !isDisabled && !isRadio && !isCheckBox;\n const isChecked = isRadio ? radioGroup.value === value : isCheckBox ? !!checked : false;\n\n // handle click seems to be a combination of multiple event types, bad code.\n const handleClick = (e: any) => {\n if (isDisabled) {\n if (e.syntheticEvent) {\n e.syntheticEvent.stopPropagation();\n e.syntheticEvent.preventDefault();\n } else {\n e.stopPropagation();\n e.preventDefault();\n }\n return;\n }\n\n const event: RMEvent = {\n value,\n syntheticEvent: e,\n };\n if (e.key !== undefined) event.key = e.key;\n if (isCheckBox) event.checked = !isChecked;\n if (isRadio) event.name = radioGroup.name;\n safeCall(onClick, event);\n if (isRadio) safeCall(radioGroup.onRadioChange, event);\n eventHandlers.handleClick(event, isCheckBox || isRadio);\n };\n\n /**\n * Keyboard events are triggered on up, otherwise sub-components get spaces and enters typed in them\n */\n const handleKeyUp = (e: KeyboardEvent) => {\n if (!isHovering) return;\n\n switch (e.key) {\n case Keys.ENTER:\n case Keys.SPACE:\n if (isAnchor) {\n menuItemRef?.current && menuItemRef.current.click();\n } else {\n handleClick(e);\n }\n break;\n }\n };\n\n const modifiers = useMemo(\n () => ({\n type,\n disabled: isDisabled,\n hover: isHovering,\n checked: isChecked,\n anchor: isAnchor,\n }),\n [type, isDisabled, isHovering, isChecked, isAnchor],\n );\n\n const mergedProps = mergeProps(\n {\n ...restStateProps,\n onPointerDown: setHover,\n onKeyUp: handleKeyUp,\n onClick: handleClick,\n },\n restProps,\n );\n\n // Order of props overriding (same in all components):\n // 1. Preset props adhering to WAI-ARIA Authoring Practices.\n // 2. Merged outer and local props\n // 3. ref, className\n const menuItemProps = {\n role: isRadio ? \"menuitemradio\" : isCheckBox ? \"menuitemcheckbox\" : \"menuitem\",\n \"aria-checked\": isRadio || isCheckBox ? isChecked : undefined,\n ...mergedProps,\n ...commonProps(isDisabled, isHovering),\n ref: useCombinedRef(externalRef as Ref<any>, menuItemRef),\n className: useBEM({ block: menuClass, element: menuItemClass, modifiers, className }),\n children: useMemo(() => safeCall(children, modifiers), [children, modifiers]),\n };\n\n if (isAnchor) {\n return (\n <li role=\"presentation\">\n <a href={href} {...menuItemProps} />\n </li>\n );\n } else {\n return <li {...menuItemProps} />;\n }\n};\n\nexport const MenuItem = withHovering(\"MenuItem\", MenuItemFr);\n","import { LegacyRef, useContext, useMemo, useRef } from \"react\";\nimport { useBEM, useCombinedRef, useItemState } from \"../hooks\";\nimport { mergeProps, commonProps, safeCall, menuClass, menuItemClass, withHovering } from \"../utils\";\nimport { BaseProps } from \"../types\";\nimport { withHoveringResultProps } from \"../utils/withHovering\";\nimport { EventHandlersContext } from \"../contexts/EventHandlersContext\";\n\nexport interface FocusableItemProps extends BaseProps, withHoveringResultProps {\n disabled?: boolean;\n children: (ref: LegacyRef<any>) => JSX.Element;\n}\n\nexport const FocusableItemFr = ({\n className,\n disabled,\n children,\n isHovering,\n menuItemRef,\n externalRef,\n ...restProps\n}: FocusableItemProps) => {\n const isDisabled = !!disabled;\n const ref = useRef(null);\n const { setHover, onPointerLeave, ...restStateProps } = useItemState(menuItemRef, ref, isHovering, isDisabled);\n const { handleClose } = useContext(EventHandlersContext);\n\n const modifiers = useMemo(\n () => ({\n disabled: isDisabled,\n hover: isHovering,\n focusable: true,\n }),\n [isDisabled, isHovering],\n );\n\n const renderChildren = useMemo(\n () =>\n safeCall(children, {\n ...modifiers,\n ref,\n closeMenu: handleClose,\n }),\n [children, modifiers, handleClose],\n );\n\n const mergedProps = mergeProps(\n {\n ...restStateProps,\n onPointerLeave: (e: PointerEvent) => onPointerLeave(e, true),\n onFocus: setHover,\n },\n restProps,\n );\n\n return (\n <li\n role=\"menuitem\"\n {...mergedProps}\n {...commonProps(isDisabled)}\n ref={useCombinedRef(externalRef, menuItemRef)}\n className={useBEM({ block: menuClass, element: menuItemClass, modifiers, className })}\n >\n {renderChildren}\n </li>\n );\n};\n\nexport const FocusableItem = withHovering(\"FocusableItem\", FocusableItemFr);\n","import { memo, forwardRef, LegacyRef } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuClass, menuDividerClass } from \"../utils\";\nimport { BaseProps } from \"../types\";\n\nconst MenuDividerFr = ({ className, ...restProps }: BaseProps, externalRef: LegacyRef<HTMLLIElement>) => {\n return (\n <li\n role=\"separator\"\n {...restProps}\n ref={externalRef}\n className={useBEM({ block: menuClass, element: menuDividerClass, className })}\n />\n );\n};\n\nexport const MenuDivider = memo(forwardRef(MenuDividerFr));\n","import { memo, forwardRef, ForwardedRef } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuClass, menuHeaderClass } from \"../utils\";\nimport { BasePropsWithChildren } from \"../types\";\n\nexport const MenuHeaderFr = (\n { className, ...restProps }: BasePropsWithChildren,\n externalRef: ForwardedRef<HTMLLIElement>,\n) => {\n return (\n <li\n role=\"presentation\"\n {...restProps}\n ref={externalRef}\n className={useBEM({ block: menuClass, element: menuHeaderClass, className })}\n />\n );\n};\n\nexport const MenuHeader = memo(forwardRef(MenuHeaderFr));\n","import { ForwardedRef, forwardRef, ReactNode, useContext, useRef, useState } from \"react\";\nimport { useBEM, useLayoutEffect, useCombinedRef } from \"../hooks\";\nimport { menuClass, menuGroupClass } from \"../utils\";\nimport { BaseProps, MenuOverflow } from \"../types\";\nimport { MenuListContext } from \"../contexts/MenuListContext\";\n\nexport interface MenuGroupProps extends BaseProps {\n children?: ReactNode;\n /**\n * Set `true` to apply overflow of the parent menu to the group.\n * Only one `MenuGroup` in a menu should set this prop as `true`.\n */\n takeOverflow?: boolean;\n}\n\nexport const MenuGroupFr = (\n { className, style, takeOverflow, ...restProps }: MenuGroupProps,\n externalRef: ForwardedRef<HTMLDivElement>,\n) => {\n const ref = useRef<HTMLDivElement>(null);\n const [overflowStyle, setOverflowStyle] = useState<{ maxHeight?: number; overflow?: MenuOverflow }>();\n const { overflow, overflowAmt } = useContext(MenuListContext);\n\n useLayoutEffect(() => {\n let maxHeight;\n if (takeOverflow && overflowAmt != null && overflowAmt >= 0 && ref.current) {\n maxHeight = ref.current.getBoundingClientRect().height - overflowAmt;\n if (maxHeight < 0) maxHeight = 0;\n }\n setOverflowStyle(maxHeight != null && maxHeight >= 0 ? { maxHeight, overflow } : undefined);\n }, [takeOverflow, overflow, overflowAmt]);\n\n useLayoutEffect(() => {\n if (overflowStyle && ref.current) ref.current.scrollTop = 0;\n }, [overflowStyle]);\n\n return (\n <div\n {...restProps}\n ref={useCombinedRef(externalRef, ref)}\n className={useBEM({ block: menuClass, element: menuGroupClass, className })}\n style={{ ...style, ...overflowStyle }}\n />\n );\n};\n\nexport const MenuGroup = forwardRef(MenuGroupFr);\n","import { ForwardedRef, forwardRef, ReactNode, useMemo } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuClass, radioGroupClass } from \"../utils\";\nimport { BaseProps, EventHandler, RadioChangeEvent } from \"../types\";\nimport { RadioGroupContext } from \"../contexts/RadioGroupContext\";\n\n//\n// MenuRadioGroup\n// ----------------------------------------------------------------------\nexport interface MenuRadioGroupProps extends BaseProps {\n /**\n * Optionally set the radio group name.\n *\n * The name will be passed to the `onRadioChange` event.\n * It's useful for identifying radio groups if you attach the same event handler to multiple groups.\n */\n name?: string;\n /**\n * Set value of the radio group.\n *\n * The child menu item which has the same value (strict equality ===) as the\n * radio group is marked as checked.\n */\n value?: any;\n children?: ReactNode;\n /**\n * Event fired when a child menu item is clicked (selected).\n */\n onRadioChange?: EventHandler<RadioChangeEvent>;\n}\n\nexport const MenuRadioGroupFr = (\n { \"aria-label\": ariaLabel, className, name, value, onRadioChange, ...restProps }: MenuRadioGroupProps,\n externalRef: ForwardedRef<HTMLUListElement>,\n) => {\n const contextValue = useMemo(() => ({ name, value, onRadioChange }), [name, value, onRadioChange]);\n\n return (\n <RadioGroupContext.Provider value={contextValue}>\n <li role=\"presentation\">\n <ul\n role=\"group\"\n aria-label={ariaLabel || name || \"Radio group\"}\n {...restProps}\n ref={externalRef}\n className={useBEM({ block: menuClass, element: radioGroupClass, className })}\n />\n </li>\n </RadioGroupContext.Provider>\n );\n};\n\nexport const MenuRadioGroup = forwardRef(MenuRadioGroupFr);\n","import { createContext } from \"react\";\nimport { GridApi, RowNode } from \"ag-grid-community\";\nimport { GridBaseRow } from \"../components/Grid\";\n\nexport interface GridContextType {\n gridReady: () => boolean;\n setGridApi: (gridApi: GridApi | undefined) => void;\n setQuickFilter: (quickFilter: string) => void;\n editingCells: () => boolean;\n getSelectedRows: <T extends GridBaseRow>() => T[];\n getSelectedRowIds: () => number[];\n selectRowsDiff: (updateFn: () => Promise<any>) => Promise<void>;\n selectRowsWithFlashDiff: (updateFn: () => Promise<any>) => Promise<void>;\n selectRowsById: (rowIds?: number[]) => void;\n selectRowsByIdWithFlash: (rowIds?: number[]) => void;\n flashRows: (rowIds?: number[]) => void;\n flashRowsDiff: (updateFn: () => Promise<any>) => Promise<void>;\n ensureRowVisible: (id: number) => void;\n ensureSelectedRowIsVisible: () => void;\n sizeColumnsToFit: () => void;\n stopEditing: () => void;\n updatingCells: (\n props: { selectedRows: GridBaseRow[]; field?: string },\n fnUpdate: (selectedRows: any[]) => Promise<boolean>,\n setSaving?: (saving: boolean) => void,\n ) => Promise<boolean>;\n redrawRows: (rowNodes?: RowNode[]) => void;\n}\n\nexport const GridContext = createContext<GridContextType>({\n gridReady: () => {\n console.error(\"no context provider for gridReady\");\n return false;\n },\n setGridApi: () => {\n console.error(\"no context provider for setGridApi\");\n },\n setQuickFilter: () => {\n console.error(\"no context provider for setQuickFilter\");\n },\n selectRowsById: () => {\n console.error(\"no context provider for selectRows\");\n },\n getSelectedRows: <T extends unknown>(): T[] => {\n console.error(\"no context provider for getSelectedRows\");\n return [];\n },\n getSelectedRowIds: () => {\n console.error(\"no context provider for getSelectedRowIds\");\n return [];\n },\n selectRowsDiff: async () => {\n console.error(\"no context provider for selectRowsDiff\");\n },\n selectRowsByIdWithFlash: () => {\n console.error(\"no context provider for selectRowsWithFlash\");\n },\n selectRowsWithFlashDiff: async () => {\n console.error(\"no context provider for selectRowsWithFlashDiff\");\n },\n flashRows: () => {\n console.error(\"no context provider for flashRows\");\n },\n flashRowsDiff: async () => {\n console.error(\"no context provider for flashRows\");\n },\n ensureRowVisible: () => {\n console.error(\"no context provider for ensureRowVisible\");\n },\n ensureSelectedRowIsVisible: () => {\n console.error(\"no context provider for ensureSelectedRowIsVisible\");\n },\n sizeColumnsToFit: () => {\n console.error(\"no context provider for sizeColumnsToFit\");\n },\n editingCells: () => {\n console.error(\"no context provider for editingCells\");\n return false;\n },\n stopEditing: () => {\n console.error(\"no context provider for stopEditing\");\n },\n updatingCells: async () => {\n console.error(\"no context provider for modifyUpdating\");\n return false;\n },\n redrawRows: () => {\n console.error(\"no context provider for redrawRows\");\n },\n});\n","import { createContext } from \"react\";\n\nexport type GridUpdatingContextType = {\n checkUpdating: (fields: string | string[], id: number | string) => boolean;\n modifyUpdating: (field: string, ids: (number | string)[], fn: () => void | Promise<void>) => Promise<void>;\n};\n\nexport const GridUpdatingContext = createContext<GridUpdatingContextType>({\n checkUpdating: () => {\n console.error(\"Missing GridUpdatingContext\");\n return false;\n },\n modifyUpdating: async () => {\n console.error(\"Missing GridUpdatingContext\");\n },\n});\n","import { ReactElement, ReactNode, useContext, useRef } from \"react\";\nimport { GridApi, RowNode } from \"ag-grid-community\";\nimport { GridContext } from \"./GridContext\";\nimport { delay, difference, isEmpty, last, sortBy } from \"lodash-es\";\nimport { isNotEmpty } from \"../utils/util\";\nimport { GridUpdatingContext } from \"./GridUpdatingContext\";\nimport { GridBaseRow } from \"../components/Grid\";\n\ninterface GridContextProps {\n children: ReactNode;\n}\n\n/**\n * Context for AgGrid operations.\n * Make sure you wrap AgGrid in this.\n * Also, make sure the provider is created in a separate component, otherwise it won't be found.\n */\nexport const GridContextProvider = (props: GridContextProps): ReactElement => {\n const { modifyUpdating } = useContext(GridUpdatingContext);\n const gridApiRef = useRef<GridApi>();\n const idsBeforeUpdate = useRef<number[]>([]);\n\n /**\n * Has Grid api has been set?\n * Some ops in components may occur before onGridReady has been called,\n * and thus will need to check grid is ready before calling.\n */\n const gridReady = () => gridApiRef.current != null;\n\n /**\n * Set current ref to grid api.\n */\n const setGridApi = (_gridApi: GridApi | undefined) => {\n gridApiRef.current = _gridApi;\n };\n\n /**\n * Wraps things that require gridApi in common handling, for when gridApi not present.\n *\n * @param hasApiFn Execute when api is ready.\n * @param noApiFn Execute if api is not ready.\n */\n const gridApiOp = <T extends unknown, R extends unknown>(\n hasApiFn: (gridApi: GridApi) => T,\n noApiFn?: () => R,\n ): T | R => {\n if (!noApiFn) {\n noApiFn = (() => {}) as () => R;\n }\n const gridApi = gridApiRef.current;\n return gridApi ? hasApiFn(gridApi) : noApiFn();\n };\n\n /**\n * Set the quick filter value to grid.\n */\n const setQuickFilter = (quickFilter: string) => {\n gridApiOp((gridApi) => gridApi.setQuickFilter(quickFilter));\n };\n\n /**\n * Get all row id's in grid.\n */\n const _getAllRowIds = () => {\n const result: number[] = [];\n return gridApiOp(\n (gridApi) => {\n gridApi.forEachNode((node) => result.push(node.data.id));\n return result;\n },\n () => result,\n );\n };\n\n /**\n * Record all row id's before update so that we can select/flash the new rows after update.\n */\n const beforeUpdate = () => {\n idsBeforeUpdate.current = _getAllRowIds();\n };\n\n /**\n * Find new row ids\n * Uses beforeUpdate ids to find new nodes.\n */\n const _getNewNodes = (): RowNode[] => {\n return gridApiOp(\n (gridApi) =>\n difference(_getAllRowIds(), idsBeforeUpdate.current)\n .map((rowId) => gridApi.getRowNode(\"\" + rowId)) //\n .filter((r) => r) as RowNode[],\n () => [],\n );\n };\n\n /**\n * Get grid nodes via rowIds. If rowIds has no matching node the result may be smaller than expected.\n * This can happen if the grid has not re-rendered yet.\n *\n * @param rowIds Row ids to get from grid.\n */\n const _rowIdsToNodes = (rowIds: number[]): RowNode[] => {\n return gridApiOp(\n (gridApi) =>\n rowIds\n .map((rowId) => gridApi.getRowNode(\"\" + rowId)) //\n .filter((r) => r) as RowNode[],\n () => [] as RowNode[],\n );\n };\n\n /**\n * Internal method for selecting and flashing rows.\n *\n * @param rowIds RowIds to select and flash. If undefined a diff is done with beforeUpdate and current state to select\n * @param select Whether to select rows\n * @param flash Whether to flash rows\n * @param retryCount Table updates may not be present when this is called, so retry is needed.\n */\n const _selectRowsWithOptionalFlash = (\n rowIds: number[] | undefined,\n select: boolean,\n flash: boolean,\n retryCount = 5, // We retry for approximately 5x200ms=1s\n ) => {\n return gridApiOp((gridApi) => {\n const rowNodes = rowIds ? _rowIdsToNodes(rowIds) : _getNewNodes();\n const gridRowIdsNotUpdatedYet = rowIds && rowNodes.length !== rowIds.length; // rowIds are specified\n const gridRowIdsNotChangedYet = !rowIds && isEmpty(rowNodes); // rowIds are from beforeUpdate\n const gridHasNotUpdated = gridRowIdsNotUpdatedYet || gridRowIdsNotChangedYet;\n // After retry count expires we give-up and deselect all rows, then select any subset of rows that have updated\n if (gridHasNotUpdated && retryCount > 0) {\n delay(() => _selectRowsWithOptionalFlash(rowIds, select, flash, retryCount - 1), 250);\n return;\n }\n\n const rowsThatNeedSelecting = sortBy(\n rowNodes.filter((node) => !node.isSelected()),\n (node) => node.data.id,\n );\n const firstNode = rowsThatNeedSelecting[0];\n firstNode && gridApi.ensureNodeVisible(firstNode);\n if (select) {\n // Select rows that shouldn't be selected\n rowsThatNeedSelecting.forEach((node) => node.setSelected(true));\n // Unselect rows that shouldn't be selected\n gridApi.getSelectedNodes()?.forEach((node) => {\n if (node && !rowNodes.includes(node)) {\n node.setSelected(false);\n }\n });\n }\n if (flash) {\n delay(() => {\n try {\n gridApi.flashCells({ rowNodes });\n } catch {\n // ignore, flash cells sometimes throws errors as nodes have gone out of scope\n }\n }, 250);\n }\n });\n };\n\n const selectRowsById = (rowIds?: number[]) => _selectRowsWithOptionalFlash(rowIds, true, false);\n const selectRowsByIdWithFlash = (rowIds?: number[]) => _selectRowsWithOptionalFlash(rowIds, true, true);\n const flashRows = (rowIds?: number[]) => _selectRowsWithOptionalFlash(rowIds, false, true);\n\n const selectRowsDiff = async (fn: () => Promise<any>) => {\n beforeUpdate();\n await fn();\n _selectRowsWithOptionalFlash(undefined, true, false);\n };\n\n const selectRowsWithFlashDiff = async (fn: () => Promise<any>) => {\n beforeUpdate();\n await fn();\n _selectRowsWithOptionalFlash(undefined, true, true);\n };\n\n const flashRowsDiff = async (fn: () => Promise<any>) => {\n beforeUpdate();\n await fn();\n _selectRowsWithOptionalFlash(undefined, false, true);\n };\n\n const getSelectedRows = <T extends unknown>(): T[] => {\n return gridApiOp(\n (gridApi) => gridApi.getSelectedRows(),\n () => [],\n );\n };\n\n const getSelectedRowIds = (): number[] => getSelectedRows().map((row) => (row as any).id as number);\n\n const editingCells = (): boolean => {\n return gridApiOp(\n (gridApi) => isNotEmpty(gridApi.getEditingCells()),\n () => false,\n );\n };\n\n const ensureRowVisible = (id: number): void => {\n gridApiOp((gridApi) => {\n const node = gridApi.getRowNode(`${id}`);\n node && gridApi.ensureNodeVisible(node);\n });\n };\n\n /**\n * Scroll last selected row into view on grid sort change\n */\n const ensureSelectedRowIsVisible = (): void => {\n gridApiOp((gridApi) => {\n const selectedNodes = gridApi.getSelectedNodes();\n if (isEmpty(selectedNodes)) return;\n gridApi.ensureNodeVisible(last(selectedNodes));\n });\n };\n\n /**\n * Resize columns to fit container\n */\n const sizeColumnsToFit = (): void => {\n gridApiOp((gridApi) => {\n // Hide size columns to fit errors in tests\n document.body.clientWidth && gridApi.sizeColumnsToFit();\n });\n };\n\n const stopEditing = (): void => gridApiOp((gridApi) => gridApi.stopEditing());\n\n const updatingCells = async (\n props: { selectedRows: GridBaseRow[]; field?: string },\n fnUpdate: (selectedRows: any[]) => Promise<boolean>,\n setSaving?: (saving: boolean) => void,\n ): Promise<boolean> => {\n setSaving && setSaving(true);\n\n return await gridApiOp(async (gridApi) => {\n const selectedRows = props.selectedRows;\n\n let ok = false;\n await modifyUpdating(\n props.field ?? \"\",\n selectedRows.map((data) => data.id),\n async () => {\n // Need to refresh to get spinners to work on all rows\n gridApi.refreshCells({ rowNodes: props.selectedRows as RowNode[], force: true });\n ok = await fnUpdate(selectedRows);\n },\n );\n\n // async processes need to refresh their own rows\n gridApi.refreshCells({ rowNodes: selectedRows as RowNode[], force: true });\n\n if (ok) {\n const cell = gridApi.getFocusedCell();\n if (cell && gridApi.getFocusedCell() == null) {\n gridApi.setFocusedCell(cell.rowIndex, cell.column);\n }\n // This is needed to trigger postSortRowsHook\n gridApi.refreshClientSideRowModel();\n } else {\n // Don't set saving if ok as the form has already closed\n setSaving && setSaving(false);\n }\n return ok;\n });\n };\n\n const redrawRows = (rowNodes?: RowNode[]) => {\n gridApiOp((gridApi) => {\n gridApi.redrawRows(rowNodes ? { rowNodes } : undefined);\n });\n };\n\n return (\n <GridContext.Provider\n value={{\n gridReady,\n setGridApi,\n setQuickFilter,\n selectRowsById,\n selectRowsDiff,\n selectRowsByIdWithFlash,\n selectRowsWithFlashDiff,\n flashRows,\n flashRowsDiff,\n getSelectedRows,\n getSelectedRowIds,\n editingCells,\n ensureRowVisible,\n ensureSelectedRowIsVisible,\n sizeColumnsToFit,\n stopEditing,\n updatingCells,\n redrawRows,\n }}\n >\n {props.children}\n </GridContext.Provider>\n );\n};\n","import { ReactNode, useRef } from \"react\";\nimport { castArray, flatten, remove } from \"lodash-es\";\nimport { GridUpdatingContext } from \"./GridUpdatingContext\";\n\ninterface UpdatingContextProviderProps {\n children: ReactNode;\n}\n\nexport type GridUpdatingContextStatus = Record<string, (number | string)[] | undefined>;\n\ntype FieldName = string;\ntype IdList = (number | string)[];\ntype UpdatingBlock = Record<FieldName, IdList[]>;\n\nexport const GridUpdatingContextProvider = (props: UpdatingContextProviderProps) => {\n const updatingBlocks = useRef<UpdatingBlock>({});\n const updating = useRef<GridUpdatingContextStatus>({});\n\n const resetUpdating = () => {\n const mergedUpdatingBlocks: GridUpdatingContextStatus = {};\n for (const key in updatingBlocks.current) {\n mergedUpdatingBlocks[key] = flatten(updatingBlocks.current[key]);\n }\n updating.current = mergedUpdatingBlocks;\n };\n\n const modifyUpdating = async (field: string, ids: (number | string)[], fn: () => void | Promise<void>) => {\n const fieldUpdatingIds = updatingBlocks.current[field] ?? (updatingBlocks.current[field] = []);\n const idRef = [...ids];\n fieldUpdatingIds.push(idRef);\n resetUpdating();\n await fn();\n remove(fieldUpdatingIds, (idList) => idList === idRef);\n resetUpdating();\n };\n\n const checkUpdating = (fields: string | string[], id: number | string): boolean =>\n castArray(fields).some((f) => updating.current[f]?.includes(id));\n\n return (\n <GridUpdatingContext.Provider value={{ modifyUpdating, checkUpdating }}>\n {props.children}\n </GridUpdatingContext.Provider>\n );\n};\n","import { createContext, RefObject, useContext } from \"react\";\nimport { GridBaseRow } from \"../components/Grid\";\n\nexport interface PropsType {\n value: any;\n data: any;\n field: string;\n selectedRows: any[];\n updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;\n}\n\nexport interface GridPopoverContextType<RowType extends GridBaseRow> {\n anchorRef: RefObject<Element>;\n saving: boolean;\n setSaving: (saving: boolean) => void;\n field: keyof RowType;\n value: any;\n data: RowType;\n selectedRows: RowType[];\n updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;\n}\n\nexport const GridPopoverContext = createContext<GridPopoverContextType<any>>({\n anchorRef: { current: null },\n saving: false,\n setSaving: () => {},\n field: \"\",\n value: null,\n data: {} as GridBaseRow,\n selectedRows: [],\n updateValue: async () => false,\n});\n\nexport const useGridPopoverContext = <RowType extends GridBaseRow>() =>\n useContext<GridPopoverContextType<RowType>>(GridPopoverContext);\n","import { ReactNode, RefObject, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport { GridPopoverContext } from \"./GridPopoverContext\";\nimport { ICellEditorParams } from \"ag-grid-community\";\nimport { GridContext } from \"./GridContext\";\nimport { sortBy } from \"lodash-es\";\nimport { GridBaseRow } from \"../components/Grid\";\n\ninterface GridPopoverContextProps {\n props: ICellEditorParams;\n children: ReactNode;\n}\n\nexport const GridPopoverContextProvider = ({ props, children }: GridPopoverContextProps) => {\n const { getSelectedRows, updatingCells, stopEditing } = useContext(GridContext);\n const anchorRef = useRef<Element>(props.eGridCell);\n\n const [saving, setSaving] = useState(false);\n\n const { colDef } = props;\n const { cellEditorParams } = colDef;\n const multiEdit = cellEditorParams?.multiEdit ?? false;\n // Then item that is clicked on will always be first in the list\n const selectedRows = useMemo(\n () => (multiEdit ? sortBy(getSelectedRows(), (row) => row.id !== props.data.id) : [props.data as GridBaseRow]),\n [getSelectedRows, multiEdit, props.data],\n );\n const field = props.colDef?.field ?? \"\";\n\n const updateValue = useCallback(\n async (saveFn: (selectedRows: any[]) => Promise<boolean>): Promise<boolean> => {\n let result = false;\n if (!saving) {\n result = await updatingCells({ selectedRows, field }, saveFn, setSaving);\n if (result) stopEditing();\n }\n\n return result;\n },\n [field, saving, selectedRows, stopEditing, updatingCells],\n );\n\n return (\n <GridPopoverContext.Provider\n value={{\n anchorRef: anchorRef as any as RefObject<Element>,\n saving,\n setSaving,\n selectedRows,\n field,\n data: props.data,\n value: props.value,\n updateValue,\n }}\n >\n {children}\n </GridPopoverContext.Provider>\n );\n};\n","import { createContext } from \"react\";\n\nexport interface GridSubComponentContextType {\n value: any;\n data: any;\n setValue: (value: string) => void;\n setValid: (valid: boolean) => void;\n triggerSave: () => Promise<void>;\n}\n\nexport const GridSubComponentContext = createContext<GridSubComponentContextType>({\n value: \"GridSubComponentContext value no context\",\n data: {},\n setValue: () => {\n console.error(\"GridSubComponentContext setValue no context\");\n },\n setValid: () => {\n console.error(\"GridSubComponentContext setValid no context\");\n },\n triggerSave: async () => {\n console.error(\"GridSubComponentContext triggerSave no context\");\n },\n});\n","function toVal(mix) {\n\tvar k, y, str='';\n\tif (mix) {\n\t\tif (typeof mix === 'object') {\n\t\t\tif (Array.isArray(mix)) {\n\t\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\t\tif (mix[k] && (y = toVal(mix[k]))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (k in mix) {\n\t\t\t\t\tif (mix[k] && (y = toVal(k))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof mix !== 'boolean' && !mix.call) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += mix;\n\t\t}\n\t}\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (x = toVal(arguments[i++])) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += x\n\t\t}\n\t}\n\treturn str;\n}\n","import { useCallback, useContext, useRef } from \"react\";\nimport { PostSortRowsParams } from \"ag-grid-community/dist/lib/entities/iCallbackParams\";\nimport { ColumnState } from \"ag-grid-community/dist/lib/columns/columnModel\";\nimport { isEmpty } from \"lodash-es\";\nimport { RowNode } from \"ag-grid-community\";\nimport { GridContext } from \"../contexts/GridContext\";\n\ninterface PostSortRowsHookProps {\n setStaleGrid: (stale: boolean) => void;\n}\n\n/**\n * Retains last sort order from via <AgGrid postRowSort>.\n * Then applies this sort until next sort column change.\n * Handles stale sort, when you edit a row but don't want to re-sort.\n */\nexport const usePostSortRowsHook = ({ setStaleGrid }: PostSortRowsHookProps) => {\n const { redrawRows } = useContext(GridContext);\n\n // On first run we need to init the first backed up sort order\n const initialised = useRef(false);\n\n // Used to detect sort order has changed since last run\n const lastSortOrderHash = useRef<string>(\"\");\n\n // Used to detect if sort order was the same, has the direction changed\n const previousRowSortIndexRef = useRef<Record<string, { index: number; hash: string } | undefined>>({});\n\n // stale sort is when there's a sort and user edits a row\n // this applies a class to the div wrapping the grid which in turn adds a * beside the sort arrow\n const sortWasStale = useRef(false);\n\n // Previous col sort is stored and reapplied if the sort direction changes on the same column and the sort was stale\n // As a sort on a stale row should just resort, not change sort direction\n const previousColSort = useRef<ColumnState[]>([]);\n\n const previousQuickFilter = useRef(\"\");\n\n return useCallback(\n ({ api, columnApi, nodes }: PostSortRowsParams) => {\n // Grid is destroyed\n if (!api || !columnApi) return;\n\n const previousRowSortIndex = previousRowSortIndexRef.current;\n\n const hashNode = (node: RowNode | undefined) => {\n return node ? JSON.stringify(node.data) : \"\";\n };\n\n const copyCurrentSortSettings = (): ColumnState[] =>\n columnApi.getColumnState().map((row) => ({ colId: row.colId, sort: row.sort, sortIndex: row.sortIndex }));\n\n const backupSortOrder = () => {\n for (const x in previousRowSortIndex) delete previousRowSortIndex[x];\n nodes.forEach((node, index) => (previousRowSortIndex[`${node.data.id}`] = { index, hash: hashNode(node) }));\n };\n\n // Check if column is the first sorted column. Note: column is preconfigured to sort its sortIndex is null not 1\n const isFirstSortColumn = (row: ColumnState) => row.sort && [0, null].includes(row.sortIndex ?? null);\n\n const isSameColumnAndDifferentSort = (col1: ColumnState | undefined, col2: ColumnState | undefined) =>\n col1 && col2 && col1.colId === col2.colId && col1.sort != col2.sort;\n\n const restorePreviousSortColumnState = () => columnApi.applyColumnState({ state: previousColSort.current });\n\n const sortNodesByPreviousSort = () => {\n nodes.sort(\n (a, b) =>\n (previousRowSortIndex[`${a.data.id}`]?.index ?? Number.MAX_SAFE_INTEGER) -\n (previousRowSortIndex[`${b.data.id}`]?.index ?? Number.MAX_SAFE_INTEGER),\n );\n };\n\n // On first load copy the current sort\n if (!initialised.current) {\n initialised.current = true;\n previousColSort.current = copyCurrentSortSettings();\n }\n\n const newSortOrder = JSON.stringify(copyCurrentSortSettings());\n let sortOrderChanged = newSortOrder != lastSortOrderHash.current;\n\n const quickFilter = (api as any).filterManager.quickFilter;\n if (previousQuickFilter.current != quickFilter) {\n previousQuickFilter.current = quickFilter;\n sortOrderChanged = true;\n }\n\n if (isEmpty(previousRowSortIndex)) {\n backupSortOrder();\n }\n\n if (sortOrderChanged) {\n const thisFirstCol = copyCurrentSortSettings().find(isFirstSortColumn);\n const previousFirstCol = previousColSort.current.find(isFirstSortColumn);\n\n // Change to sort can be: (in the context of stale sort do...)\n // - no sort to sorted (do nothing)\n // - asc to desc (resort as asc, and remove stale sort)\n // - desc to no sort (resort as desc, and remove stale sort)\n const wasSortChangedOnSameColumn =\n previousFirstCol && (!thisFirstCol || isSameColumnAndDifferentSort(previousFirstCol, thisFirstCol));\n\n // if sort was stale, and we're here, someone has clicked a stale sort order (^*) in the column header\n if (sortWasStale.current && wasSortChangedOnSameColumn) {\n // Sort was an existing priority 1 column\n // We want to re-sort with the old sort direction and clear stale sort\n sortWasStale.current = false;\n setStaleGrid(false);\n\n // trigger a recapture of sort order\n lastSortOrderHash.current = \"\";\n restorePreviousSortColumnState();\n } else {\n // Sort was on a different column so clear sort and sort like normal\n if (sortWasStale.current) {\n sortWasStale.current = false;\n setStaleGrid(false);\n }\n // Columns were sorted so retain the sort\n backupSortOrder();\n lastSortOrderHash.current = newSortOrder;\n }\n } else {\n let firstChangedNodeIndex = -1;\n let lastNewNode: RowNode | undefined = undefined;\n let changedRowCount = 0;\n let newRowCount = 0;\n let index = 0;\n for (const node of nodes) {\n const psr = previousRowSortIndex[`${node.data.id}`];\n if (psr) {\n if (psr.hash != hashNode(node)) {\n if (firstChangedNodeIndex === -1) firstChangedNodeIndex = index;\n changedRowCount++;\n }\n } else {\n lastNewNode = node;\n newRowCount++;\n }\n index++;\n }\n\n let wasStale = false;\n if (changedRowCount === 0 && newRowCount === 1) {\n // insert new row at end\n const newIndex = index - 1;\n previousRowSortIndex[`${lastNewNode?.data.id}`] = { index: newIndex, hash: hashNode(lastNewNode) };\n wasStale = true;\n } else if (changedRowCount === 2 && newRowCount === 0) {\n // This must be a swap rows\n backupSortOrder();\n wasStale = false;\n } else if (changedRowCount > 1 && newRowCount === 1) {\n // This must be a insert so, insert new row near the row that changed\n previousRowSortIndex[`${lastNewNode?.data.id}`] = {\n index: firstChangedNodeIndex + 0.5,\n hash: hashNode(lastNewNode),\n };\n wasStale = true;\n // For some reason AgGrid mis-positions the inserted row.\n lastNewNode && redrawRows();\n } else if (changedRowCount == 1 && newRowCount === 0) {\n // User edited one row so, do nothing, retain sort\n wasStale = true;\n } else if (changedRowCount !== 0 || newRowCount != 0) {\n // too many rows changed, resort\n backupSortOrder();\n }\n\n if (wasStale) {\n // Check if the sort order the aggrid passed matches our stale sort order\n const stillStale =\n Object.keys(previousRowSortIndex).length != nodes.length ||\n nodes.some((node, index) => previousRowSortIndex[`${node.data.id}`]?.index !== index);\n\n // If we haven't already processed a stale sort then...\n if (stillStale && !sortWasStale.current) {\n // backup sort state, so we can restore it when sort is clicked on a stale column\n previousColSort.current = copyCurrentSortSettings();\n sortWasStale.current = true;\n setStaleGrid(true);\n }\n }\n sortNodesByPreviousSort();\n }\n },\n [redrawRows, setStaleGrid],\n );\n};\n","import clsx from \"clsx\";\nimport { IHeaderParams } from \"ag-grid-community\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n/**\n * AgGrid's existing select header doesn't work the way we want.\n * If you have partial select then clicking the header checkbox will select all,\n * but we want to deselect all on partial select.\n */\nexport const GridHeaderSelect = ({ api }: IHeaderParams) => {\n // This is used to force an update on selection change\n const [updateCounter, setUpdateCounter] = useState(0);\n const selectedNodeCount = api.getSelectedRows().length;\n\n const clickHandler = useCallback(() => {\n setUpdateCounter(updateCounter + 1);\n }, [updateCounter]);\n\n useEffect(() => {\n api.addEventListener(\"selectionChanged\", clickHandler);\n return () => api.removeEventListener(\"selectionChanged\", clickHandler);\n }, [api, clickHandler]);\n\n const handleMultiSelect = () => {\n if (selectedNodeCount == 0) {\n api.selectAllFiltered();\n } else {\n api.deselectAll();\n }\n };\n\n const totalNodeCount = api.getModel().getRowCount();\n const partialSelect = selectedNodeCount != 0 && selectedNodeCount != totalNodeCount;\n const allSelected = selectedNodeCount != 0 && selectedNodeCount == totalNodeCount;\n\n return (\n <div\n className={clsx(\n \"ag-wrapper ag-input-wrapper ag-checkbox-input-wrapper\",\n partialSelect && \"ag-indeterminate\",\n allSelected && \"ag-checked\",\n )}\n onClick={handleMultiSelect}\n >\n <input\n type=\"checkbox\"\n className={\"ag-checkbox-input-wrapper\"}\n onChange={() => {\n /* do nothing */\n }}\n />\n </div>\n );\n};\n","import clsx from \"clsx\";\nimport { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { AgGridReact } from \"ag-grid-react\";\nimport { CellClickedEvent, ColDef } from \"ag-grid-community\";\nimport { CellEvent, GridReadyEvent, SelectionChangedEvent } from \"ag-grid-community/dist/lib/events\";\nimport { GridOptions } from \"ag-grid-community/dist/lib/entities/gridOptions\";\nimport { difference, last, xorBy } from \"lodash-es\";\nimport { GridContext } from \"../contexts/GridContext\";\nimport { usePostSortRowsHook } from \"./PostSortRowsHook\";\nimport { isNotEmpty } from \"../utils/util\";\nimport { GridHeaderSelect } from \"./gridHeader/GridHeaderSelect\";\nimport { GridUpdatingContext } from \"../contexts/GridUpdatingContext\";\n\nexport interface GridBaseRow {\n id: string | number;\n}\n\nexport interface GridProps {\n selectable?: boolean;\n dataTestId?: string;\n quickFilter?: boolean;\n quickFilterPlaceholder?: string;\n quickFilterValue?: string;\n domLayout?: GridOptions[\"domLayout\"];\n externalSelectedItems?: any[];\n setExternalSelectedItems?: (items: any[]) => void;\n defaultColDef?: GridOptions[\"defaultColDef\"];\n columnDefs: GridOptions[\"columnDefs\"];\n rowData: GridOptions[\"rowData\"];\n noRowsOverlayText?: string;\n postSortRows?: GridOptions[\"postSortRows\"];\n}\n\n/**\n * Wrapper for AgGrid to add commonly used functionality.\n */\nexport const Grid = (params: GridProps): JSX.Element => {\n const {\n gridReady,\n setGridApi,\n setQuickFilter,\n ensureRowVisible,\n selectRowsById,\n ensureSelectedRowIsVisible,\n sizeColumnsToFit,\n } = useContext(GridContext);\n const { checkUpdating } = useContext(GridUpdatingContext);\n\n const [internalQuickFilter, setInternalQuickFilter] = useState(\"\");\n const lastSelectedIds = useRef<number[]>([]);\n const [staleGrid, setStaleGrid] = useState(false);\n const postSortRows = usePostSortRowsHook({ setStaleGrid });\n\n /**\n * AgGrid checkbox select does not pass clicks within cell but not on the checkbox to checkbox.\n * This passes the event to the checkbox when you click anywhere in the cell.\n */\n const clickSelectorCheckboxWhenContainingCellClicked = useCallback(({ event }: CellClickedEvent) => {\n if (!event) return;\n const input = (event.target as Element).querySelector(\"input\");\n input?.dispatchEvent(event);\n }, []);\n\n /**\n * Ensure external selected items list is in sync with panel.\n */\n const synchroniseExternalStateToGridSelection = useCallback(\n ({ api }: SelectionChangedEvent) => {\n if (!params.externalSelectedItems || !params.setExternalSelectedItems) return;\n\n const selectedRows = api.getSelectedRows();\n // We don't want to update selected Items if it hasn't changed to prevent excess renders\n if (\n params.externalSelectedItems.length != selectedRows.length ||\n isNotEmpty(xorBy(selectedRows, params.externalSelectedItems, (row) => row.id))\n ) {\n params.setExternalSelectedItems([...selectedRows]);\n }\n },\n [params],\n );\n\n /**\n * Synchronise externally selected items to grid.\n * If new ids are selected scroll them into view.\n */\n const synchroniseExternallySelectedItemsToGrid = useCallback(() => {\n if (!gridReady()) return;\n if (!params.externalSelectedItems) return;\n\n const selectedIds = params.externalSelectedItems.map((row) => row.id) as number[];\n const lastNewId = last(difference(selectedIds, lastSelectedIds.current));\n if (lastNewId != null) ensureRowVisible(lastNewId);\n lastSelectedIds.current = selectedIds;\n selectRowsById(selectedIds);\n }, [params.externalSelectedItems, ensureRowVisible, gridReady, selectRowsById]);\n\n /**\n * Synchronise quick filter to grid\n */\n const updateQuickFilter = useCallback(() => {\n if (!gridReady()) return;\n if (params.quickFilter) {\n setQuickFilter(internalQuickFilter);\n return;\n }\n if (params.quickFilterValue == null) return;\n setQuickFilter(params.quickFilterValue);\n }, [gridReady, internalQuickFilter, params.quickFilter, params.quickFilterValue, setQuickFilter]);\n\n /**\n * Synchronise quick filter to grid\n */\n useEffect(() => {\n updateQuickFilter();\n }, [updateQuickFilter]);\n\n /**\n * Synchronise externally selected items to grid on externalSelectedItems change\n */\n useEffect(() => {\n synchroniseExternallySelectedItemsToGrid();\n }, [synchroniseExternallySelectedItemsToGrid]);\n\n const columnDefs = useMemo(\n (): GridOptions[\"columnDefs\"] =>\n params.selectable\n ? [\n {\n colId: \"selection\",\n editable: false,\n initialWidth: 35,\n minWidth: 35,\n maxWidth: 35,\n suppressSizeToFit: true,\n checkboxSelection: true,\n headerComponent: GridHeaderSelect,\n onCellClicked: clickSelectorCheckboxWhenContainingCellClicked,\n },\n ...(params.columnDefs as ColDef[]),\n ]\n : [...(params.columnDefs as ColDef[])],\n [clickSelectorCheckboxWhenContainingCellClicked, params.columnDefs, params.selectable],\n );\n\n const onGridReady = useCallback(\n (event: GridReadyEvent) => {\n setGridApi(event.api);\n synchroniseExternallySelectedItemsToGrid();\n updateQuickFilter();\n },\n [setGridApi, synchroniseExternallySelectedItemsToGrid, updateQuickFilter],\n );\n\n const noRowsOverlayComponent = useCallback(\n () => <span>{params.noRowsOverlayText ?? \"There are currently no rows\"}</span>,\n [params.noRowsOverlayText],\n );\n\n const refreshSelectedRows = useCallback((event: CellEvent): void => {\n // Force-refresh all selected rows to re-run class function, to update selection highlighting\n event.api.refreshCells({\n force: true,\n rowNodes: event.api.getSelectedNodes(),\n });\n }, []);\n\n const startCellEditing = useCallback(\n (event: CellEvent) => {\n if (!event.node.isSelected()) {\n event.node.setSelected(true, true);\n }\n // Cell already being edited, so don't re-edit until finished\n if (checkUpdating([event.colDef.field ?? \"\"], event.data.id)) {\n return;\n }\n if (event.rowIndex !== null) {\n event.api.startEditingCell({\n rowIndex: event.rowIndex,\n colKey: event.column.getColId(),\n });\n }\n },\n [checkUpdating],\n );\n\n const onCellDoubleClick = useCallback(\n (event: CellEvent) => {\n if (!event.colDef?.cellRendererParams?.singleClickEdit) {\n startCellEditing(event);\n }\n },\n [startCellEditing],\n );\n\n const onCellClicked = useCallback(\n (event: CellEvent) => {\n if (event.colDef?.cellRendererParams?.singleClickEdit) {\n startCellEditing(event);\n }\n },\n [startCellEditing],\n );\n\n const onCellKeyPress = useCallback(\n (e: CellEvent) => {\n if ((e.event as KeyboardEvent).key === \"Enter\") startCellEditing(e);\n },\n [startCellEditing],\n );\n\n const onCellEditingStopped = useCallback(\n (event: CellEvent) => {\n refreshSelectedRows(event);\n // The grid loses cell focus after editing\n const cell = event.api.getFocusedCell();\n cell && event.api.setFocusedCell(cell.rowIndex, cell.column);\n },\n [refreshSelectedRows],\n );\n\n // When rows added or removed then resize columns\n useEffect(() => {\n if (columnDefs?.length) {\n sizeColumnsToFit();\n }\n }, [columnDefs?.length, sizeColumnsToFit]);\n\n return (\n <div\n data-testid={params.dataTestId}\n className={clsx(\"Grid-container\", \"ag-theme-alpine\", staleGrid && \"Grid-sortIsStale\")}\n >\n {params.quickFilter && (\n <div className=\"Grid-quickFilter\">\n <input\n aria-label=\"Search\"\n className=\"lui-margin-top-xxs lui-margin-bottom-xxs Grid-quickFilterBox\"\n type=\"text\"\n placeholder={params.quickFilterPlaceholder ?? \"Search...\"}\n value={internalQuickFilter}\n onChange={(event): void => {\n setInternalQuickFilter(event.target.value);\n }}\n />\n </div>\n )}\n <AgGridReact\n getRowId={(params) => `${params.data.id}`}\n suppressRowClickSelection={true}\n rowSelection={\"multiple\"}\n suppressBrowserResizeObserver={true}\n colResizeDefault={\"shift\"}\n onFirstDataRendered={sizeColumnsToFit}\n onGridSizeChanged={sizeColumnsToFit}\n suppressClickEdit={true}\n onCellKeyPress={onCellKeyPress}\n onCellClicked={onCellClicked}\n onCellDoubleClicked={onCellDoubleClick}\n onCellEditingStarted={refreshSelectedRows}\n onCellEditingStopped={onCellEditingStopped}\n domLayout={params.domLayout}\n columnDefs={columnDefs}\n rowData={params.rowData}\n noRowsOverlayComponent={noRowsOverlayComponent}\n onGridReady={onGridReady}\n onSortChanged={ensureSelectedRowIsVisible}\n postSortRows={params.postSortRows ?? postSortRows}\n onSelectionChanged={synchroniseExternalStateToGridSelection}\n />\n </div>\n );\n};\n","import { CellClassFunc } from \"ag-grid-community\";\n\nexport const GenericMultiEditCellClass: CellClassFunc = (props): string => {\n const api = props.api;\n if (api == null) return \"\";\n\n const rowSelected = api\n .getSelectedNodes()\n .map((row) => row.id)\n .includes(props.node.id);\n\n return rowSelected && api.getEditingCells().some((cell) => cell.column.getColDef() === props.colDef)\n ? \"ag-selected-for-edit\"\n : \"\";\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./GridLoadableCell.scss\";\n\nimport { LuiMiniSpinner } from \"@linzjs/lui\";\nimport clsx from \"clsx\";\n\nexport const GridLoadableCell = (props: {\n isLoading: boolean;\n dataTestId?: string;\n children: JSX.Element | string;\n className?: string;\n}): JSX.Element => {\n if (props.isLoading) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n <LuiMiniSpinner size={22} divProps={{ role: \"status\", \"aria-label\": \"Loading\", style: { marginBottom: 4 } }} />\n </div>\n );\n }\n // only add test id into ONE of the columns in a grid. this way each row will have one unique id :)\n return (\n <div data-testid={props.dataTestId} className={clsx(\"GridLoadableCell-container\", props.className)}>\n {props.children}\n </div>\n );\n};\n","import { IconName } from \"@linzjs/lui/dist/components/LuiIcon/LuiIcon\";\nimport { LuiIcon } from \"@linzjs/lui\";\n\nexport const GridIcon = (props: { icon: IconName; title: string }): JSX.Element => (\n <LuiIcon\n name={props.icon}\n title={props.title}\n alt={props.title}\n size={\"md\"}\n className={`AgGridGenericCellRenderer-${props.icon}Icon`}\n />\n);\n","import \"../../styles/GridRenderGenericCell.scss\";\n\nimport { useContext } from \"react\";\nimport { GridUpdatingContext } from \"../../contexts/GridUpdatingContext\";\nimport { GridLoadableCell } from \"../GridLoadableCell\";\nimport { GridIcon } from \"../GridIcon\";\nimport { ColDef, ICellRendererParams } from \"ag-grid-community\";\nimport { ValueFormatterParams } from \"ag-grid-community/dist/lib/entities/colDef\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ColDefT } from \"../GridCell\";\n\nexport interface RowICellRendererParams<RowType extends GridBaseRow> extends ICellRendererParams {\n data: RowType;\n}\n\nexport interface GenericCellColDef<RowType extends GridBaseRow> extends ColDefT<RowType> {\n cellRendererParams?: GenericCellRendererParams<RowType>;\n}\n\nexport interface GenericCellRendererParams<RowType extends GridBaseRow> {\n singleClickEdit?: boolean;\n warning?: (props: RowICellRendererParams<RowType>) => string | boolean | null | undefined;\n info?: (props: RowICellRendererParams<RowType>) => string | boolean | null | undefined;\n}\n\nexport const GridRendererGenericCell = <RowType extends GridBaseRow>(props: ICellRendererParams): JSX.Element => {\n const { checkUpdating } = useContext(GridUpdatingContext);\n\n const colDef = props.colDef as ColDef;\n const cellRendererParams = colDef.cellRendererParams as GenericCellRendererParams<RowType> | undefined;\n const warningFn = cellRendererParams?.warning;\n const warningText = warningFn ? warningFn(props) : undefined;\n const infoFn = cellRendererParams?.info;\n const infoText = infoFn ? infoFn(props) : undefined;\n\n const defaultFormatter = (props: ValueFormatterParams): string => props.value;\n const formatter = colDef.valueFormatter ?? defaultFormatter;\n if (typeof formatter === \"string\") {\n console.error(\"valueFormatter must be a function\");\n return <span>valueFormatter must be a function</span>;\n }\n const formatted = formatter(props as ValueFormatterParams);\n\n return (\n <GridLoadableCell isLoading={checkUpdating(colDef.field ?? colDef.colId ?? \"\", props.data.id)}>\n <>\n {typeof warningText === \"string\" && <GridIcon icon={\"ic_warning\"} title={warningText} />}\n {typeof infoText === \"string\" && <GridIcon icon={\"ic_info\"} title={infoText} />}\n <span title={formatted}>{formatted}</span>\n </>\n </GridLoadableCell>\n );\n};\n","import { forwardRef, useContext } from \"react\";\nimport { GridBaseRow } from \"./Grid\";\nimport { GridUpdatingContext } from \"../contexts/GridUpdatingContext\";\nimport { GenericMultiEditCellClass } from \"./GenericCellClass\";\nimport {\n GenericCellColDef,\n GenericCellRendererParams,\n GridRendererGenericCell,\n} from \"./gridRender/GridRenderGenericCell\";\nimport { ColDef, ICellEditorParams, ICellRendererParams } from \"ag-grid-community\";\nimport { GridLoadableCell } from \"./GridLoadableCell\";\nimport { GridIcon } from \"./GridIcon\";\nimport { ValueFormatterParams } from \"ag-grid-community/dist/lib/entities/colDef\";\nimport { GridPopoverContextProvider } from \"../contexts/GridPopoverContextProvider\";\n\nexport interface GenericCellEditorProps<E> {\n multiEdit?: boolean;\n editor?: (editorProps: E) => JSX.Element;\n editorParams?: E;\n}\n\nexport const GridCellRenderer = (props: ICellRendererParams) => {\n const { checkUpdating } = useContext(GridUpdatingContext);\n const colDef = props.colDef as ColDef;\n\n const rendererParams = colDef.cellRendererParams as GenericCellRendererParams<any> | undefined;\n const warningFn = rendererParams?.warning;\n const warningText = warningFn ? warningFn(props) : undefined;\n const infoFn = rendererParams?.info;\n const infoText = infoFn ? infoFn(props) : undefined;\n\n return colDef?.cellRendererParams?.originalCellRenderer ? (\n <GridLoadableCell isLoading={checkUpdating(colDef.field ?? colDef.colId ?? \"\", props.data.id)}>\n <>\n {typeof warningText === \"string\" && <GridIcon icon={\"ic_warning\"} title={warningText} />}\n {typeof infoText === \"string\" && <GridIcon icon={\"ic_info\"} title={infoText} />}\n <colDef.cellRendererParams.originalCellRenderer {...props} />\n </>\n </GridLoadableCell>\n ) : (\n <GridRendererGenericCell {...props} />\n );\n};\n\n// This is so that typescript retains the row type to pass to the GridCells\nexport interface ColDefT<RowType extends GridBaseRow> extends ColDef {\n _?: RowType;\n editor?: (editorProps: any) => JSX.Element;\n}\n\n/*\n * All cells should use this\n */\nexport const GridCell = <RowType extends GridBaseRow, Props extends CellEditorCommon>(\n props: GenericCellColDef<RowType>,\n custom?: {\n multiEdit?: boolean;\n editor?: (editorProps: Props) => JSX.Element;\n editorParams?: Props;\n },\n): ColDefT<RowType> => {\n return {\n colId: props.field,\n sortable: !!(props?.field || props?.valueGetter),\n resizable: true,\n ...(custom?.editor && {\n cellClass: custom?.multiEdit ? GenericMultiEditCellClass : undefined,\n editable: props.editable ?? true,\n cellEditor: GenericCellEditorComponentWrapper(custom),\n }),\n suppressKeyboardEvent: (e) => {\n // It's important that aggrid doesn't trigger edit on enter\n // as the incorrect selected rows will be returned\n return e.event.key === \"Enter\";\n },\n ...(custom?.editorParams && {\n cellEditorParams: { ...custom.editorParams, multiEdit: custom.multiEdit },\n }),\n // Default value formatter, otherwise react freaks out on objects\n valueFormatter: (params: ValueFormatterParams) => {\n if (params.value == null) return \"-\";\n const types = [\"number\", \"boolean\", \"string\"];\n if (types.includes(typeof params.value)) return `${params.value}`;\n else return JSON.stringify(params.value);\n },\n ...props,\n cellRenderer: GridCellRenderer,\n cellRendererParams: {\n originalCellRenderer: props.cellRenderer,\n ...props.cellRendererParams,\n },\n };\n};\n\nexport interface CellEditorCommon {\n className?: string | undefined;\n}\n\nexport const GenericCellEditorComponentWrapper = (custom?: { editor?: (props: any) => JSX.Element }) => {\n return forwardRef(function GenericCellEditorComponentFr(cellEditorParams: ICellEditorParams, _) {\n return (\n <GridPopoverContextProvider props={cellEditorParams}>\n {<cellEditorParams.colDef.cellRenderer {...cellEditorParams} {...cellEditorParams.colDef.cellRendererParams} />}\n {custom?.editor && <custom.editor {...cellEditorParams} />}\n </GridPopoverContextProvider>\n );\n });\n};\n","import { LuiMiniSpinner } from \"@linzjs/lui\";\n\n/**\n * If loading is true this returns a loading spinner, otherwise it returns its children.\n */\nexport const ComponentLoadingWrapper = (props: {\n loading?: boolean;\n saving?: boolean;\n children: JSX.Element | undefined;\n className: string | undefined;\n}): JSX.Element => {\n return props.loading ? (\n <LuiMiniSpinner size={22} divProps={{ role: \"status\", [\"aria-label\"]: \"Loading\", style: { padding: 16 } }} />\n ) : (\n <div style={{ pointerEvents: props.saving ? \"none\" : \"inherit\" }} className={props.className}>\n {props.saving && (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n backgroundColor: \"rgba(64,64,64,0.1)\",\n zIndex: 1000,\n }}\n />\n )}\n {props.children}\n </div>\n );\n};\n","import { KeyboardEvent, KeyboardEventHandler, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { GridContext } from \"../contexts/GridContext\";\nimport { GridBaseRow } from \"./Grid\";\nimport { ControlledMenu } from \"../react-menu3\";\nimport { useGridPopoverContext } from \"../contexts/GridPopoverContext\";\nimport { MenuCloseEvent } from \"../react-menu3/types\";\n\nexport interface GridPopoverHookProps<RowType> {\n className: string | undefined;\n save?: (selectedRows: RowType[]) => Promise<boolean>;\n}\n\nexport const useGridPopoverHook = <RowType extends GridBaseRow>(props: GridPopoverHookProps<RowType>) => {\n const { stopEditing } = useContext(GridContext);\n const { anchorRef, saving, updateValue } = useGridPopoverContext<RowType>();\n const saveButtonRef = useRef<HTMLButtonElement>(null);\n const [isOpen, setOpen] = useState(false);\n\n useEffect(() => {\n setOpen(true);\n }, []);\n\n const triggerSave = useCallback(\n async (reason?: string) => {\n if (reason == \"cancel\" || !props.save || (updateValue && (await updateValue(props.save)))) {\n setOpen(false);\n stopEditing();\n }\n },\n [props.save, stopEditing, updateValue],\n );\n\n const onlyInputKeyboardEventHandlers: {\n onKeyUp?: KeyboardEventHandler<HTMLElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLElement> | undefined;\n } = {\n onKeyUp: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n triggerSave().then();\n } else if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n onKeyDown: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n } else if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n !e.shiftKey && triggerSave().then();\n }\n },\n };\n const firstInputKeyboardEventHandlers: {\n onKeyUp?: KeyboardEventHandler<HTMLElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLElement> | undefined;\n } = {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n };\n\n const lastInputKeyboardEventHandlers: {\n onKeyUp?: KeyboardEventHandler<HTMLElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLElement> | undefined;\n } = {\n onKeyUp: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n triggerSave().then();\n } else if (e.key === \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n onKeyDown: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n } else if (e.key === \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n triggerSave().then();\n }\n },\n };\n\n const popoverWrapper = useCallback(\n (children: JSX.Element) => {\n return (\n <>\n {anchorRef.current && (\n <ControlledMenu\n state={isOpen ? \"open\" : \"closed\"}\n portal={true}\n unmountOnClose={true}\n anchorRef={anchorRef}\n saveButtonRef={saveButtonRef}\n menuClassName={\"step-ag-grid-react-menu\"}\n onClose={(event: MenuCloseEvent) => {\n // Prevent menu from closing when modals are invoked\n if (event.reason === \"blur\") return;\n triggerSave(event.reason).then();\n }}\n viewScroll={\"auto\"}\n dontShrinkIfDirectionIsTop={true}\n className={props.className}\n closeMenuExclusionClassName={\"ReactModal__Content\"}\n >\n {saving && ( // This is the overlay that prevents editing when the editor is saving\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n backgroundColor: \"rgba(64,64,64,0.1)\",\n zIndex: 1000,\n }}\n />\n )}\n {children}\n <button ref={saveButtonRef} onClick={() => triggerSave().then()} style={{ display: \"none\" }} />\n </ControlledMenu>\n )}\n </>\n );\n },\n [anchorRef, isOpen, props.className, saving, triggerSave],\n );\n\n return {\n popoverWrapper,\n triggerSave,\n onlyInputKeyboardEventHandlers,\n firstInputKeyboardEventHandlers,\n lastInputKeyboardEventHandlers,\n };\n};\n","import { useContext } from \"react\";\nimport { ColDef, ICellRendererParams } from \"ag-grid-community\";\nimport { GridUpdatingContext } from \"../../contexts/GridUpdatingContext\";\nimport { GridLoadableCell } from \"../GridLoadableCell\";\nimport { LuiIcon } from \"@linzjs/lui\";\nimport { Column } from \"ag-grid-community/dist/lib/entities/column\";\n\nexport const GridRenderPopoutMenuCell = (props: ICellRendererParams) => {\n const { checkUpdating } = useContext(GridUpdatingContext);\n const isLoading = checkUpdating(props.colDef?.field ?? \"\", props.data.id);\n const editable = props.colDef?.editable;\n const disabled = !(typeof editable === \"function\"\n ? editable({\n node: props.node,\n data: props.data,\n column: props.column as Column,\n colDef: props.colDef as ColDef,\n api: props.api,\n columnApi: props.columnApi,\n context: props.context,\n })\n : editable);\n\n return (\n <GridLoadableCell\n isLoading={isLoading}\n className={disabled ? `GridPopoutMenu-burgerDisabled` : `GridPopoutMenu-burger`}\n >\n <LuiIcon name={\"ic_more_vert\"} alt={\"More actions\"} size={\"md\"} />\n </GridLoadableCell>\n );\n};\n","'use strict';\n\n/* global setTimeout, clearTimeout */\n\nmodule.exports = function debounce(fn) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var lastCallAt = void 0;\n var deferred = void 0;\n var timer = void 0;\n var pendingArgs = [];\n return function debounced() {\n var currentWait = getWait(wait);\n var currentTime = new Date().getTime();\n\n var isCold = !lastCallAt || currentTime - lastCallAt > currentWait;\n\n lastCallAt = currentTime;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isCold && options.leading) {\n return options.accumulate ? Promise.resolve(fn.call(this, [args])).then(function (result) {\n return result[0];\n }) : Promise.resolve(fn.call.apply(fn, [this].concat(args)));\n }\n\n if (deferred) {\n clearTimeout(timer);\n } else {\n deferred = defer();\n }\n\n pendingArgs.push(args);\n timer = setTimeout(flush.bind(this), currentWait);\n\n if (options.accumulate) {\n var argsIndex = pendingArgs.length - 1;\n return deferred.promise.then(function (results) {\n return results[argsIndex];\n });\n }\n\n return deferred.promise;\n };\n\n function flush() {\n var thisDeferred = deferred;\n clearTimeout(timer);\n\n Promise.resolve(options.accumulate ? fn.call(this, pendingArgs) : fn.apply(this, pendingArgs[pendingArgs.length - 1])).then(thisDeferred.resolve, thisDeferred.reject);\n\n pendingArgs = [];\n deferred = null;\n }\n};\n\nfunction getWait(wait) {\n return typeof wait === 'function' ? wait() : wait;\n}\n\nfunction defer() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n//# sourceMappingURL=index.js.map","import \"../../styles/GridFormDropDown.scss\";\n\nimport { FocusableItem, MenuDivider, MenuHeader, MenuItem } from \"../../react-menu3\";\nimport { KeyboardEvent, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { GridContext } from \"../../contexts/GridContext\";\nimport { delay } from \"lodash-es\";\nimport debounce from \"debounce-promise\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\nimport { GridSubComponentContext } from \"contexts/GridSubComponentContext\";\nimport { ClickEvent, MenuInstance } from \"../../react-menu3/types\";\n\nexport interface GridPopoutEditDropDownSelectedItem<RowType, ValueType> {\n // Note the row that was clicked on will be first\n selectedRows: RowType[];\n value: ValueType;\n subComponentValue?: ValueType;\n}\n\ninterface FinalSelectOption<ValueType> {\n value: ValueType;\n label?: JSX.Element | string;\n disabled?: boolean | string;\n subComponent?: (props: any, ref: any) => any;\n}\n\nexport const MenuSeparatorString = \"_____MENU_SEPARATOR_____\";\nexport const MenuSeparator = Object.freeze({ value: MenuSeparatorString });\n\nexport const MenuHeaderString = \"_____MENU_HEADER_____\";\nexport const MenuHeaderItem = (title: string) => {\n return { label: title, value: MenuHeaderString };\n};\n\nexport type SelectOption<ValueType> = ValueType | FinalSelectOption<ValueType>;\n\nexport interface GridFormPopoutDropDownProps<RowType extends GridBaseRow, ValueType> extends CellEditorCommon {\n // This overrides CellEditorCommon to provide some common class options\n className?:\n | \"GridPopoverEditDropDown-containerSmall\"\n | \"GridPopoverEditDropDown-containerMedium\"\n | \"GridPopoverEditDropDown-containerLarge\"\n | \"GridPopoverEditDropDown-containerUnlimited\"\n | string\n | undefined;\n // local means the filter won't change if it's reloaded, reload means it does change\n filtered?: \"local\" | \"reload\";\n filterPlaceholder?: string;\n onSelectedItem?: (props: GridPopoutEditDropDownSelectedItem<RowType, ValueType>) => Promise<void>;\n onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<RowType, string>) => Promise<void>;\n options:\n | SelectOption<ValueType>[]\n | ((selectedRows: RowType[], filter?: string) => Promise<SelectOption<ValueType>[]> | SelectOption<ValueType>[]);\n optionsRequestCancel?: () => void;\n}\n\nconst fieldToString = (field: any) => {\n return typeof field == \"symbol\" ? field.toString() : `${field}`;\n};\n\nexport const GridFormDropDown = <RowType extends GridBaseRow, ValueType>(\n props: GridFormPopoutDropDownProps<RowType, ValueType>,\n) => {\n const { selectedRows, field, updateValue, data } = useGridPopoverContext<RowType>();\n const { stopEditing } = useContext(GridContext);\n\n const [filter, setFilter] = useState(\"\");\n const [filteredValues, setFilteredValues] = useState<any[]>([]);\n const optionsInitialising = useRef(false);\n const [options, setOptions] = useState<FinalSelectOption<ValueType>[] | null>(null);\n const subComponentIsValid = useRef(false);\n const [subSelectedValue, setSubSelectedValue] = useState<any>();\n const [selectedSubComponent, setSelectedSubComponent] = useState<any>();\n\n const selectItemHandler = useCallback(\n async (value: ValueType, subComponentValue?: ValueType): Promise<boolean> => {\n if (subComponentValue !== undefined && !subComponentIsValid.current) return false;\n\n return updateValue(async (selectedRows) => {\n const hasChanged = selectedRows.some((row) => row[field as keyof RowType] !== value);\n if (hasChanged) {\n if (props.onSelectedItem) {\n await props.onSelectedItem({ selectedRows, value, subComponentValue });\n } else {\n selectedRows.forEach((row) => (row[field as keyof RowType] = value));\n }\n }\n return true;\n });\n },\n [field, props, updateValue],\n );\n\n const selectFilterHandler = useCallback(\n async (value: string) =>\n updateValue(async (selectedRows) => {\n props.onSelectFilter && (await props.onSelectFilter({ selectedRows, value }));\n return true;\n }),\n [props, updateValue],\n );\n\n // Load up options list if it's async function\n useEffect(() => {\n if (options || optionsInitialising.current) return;\n optionsInitialising.current = true;\n let optionsConf = props.options ?? [];\n\n (async () => {\n if (typeof optionsConf == \"function\") {\n optionsConf = await optionsConf(selectedRows, filter);\n }\n\n const optionsList = optionsConf?.map((item) => {\n if (item == null || typeof item == \"string\" || typeof item == \"number\") {\n item = {\n value: item as unknown as ValueType,\n label: item,\n disabled: false,\n } as unknown as FinalSelectOption<ValueType>;\n }\n return item;\n }) as any as FinalSelectOption<ValueType>[];\n\n if (props.filtered) {\n // This is needed otherwise when filter input is rendered and sets autofocus\n // the mouse up of the double click edit triggers the cell to cancel editing\n delay(() => setOptions(optionsList), 100);\n } else {\n setOptions(optionsList);\n }\n optionsInitialising.current = false;\n })();\n }, [filter, options, props, selectedRows]);\n\n // Local filtering.\n useEffect(() => {\n if (props.filtered == \"local\") {\n if (options == null) return;\n setFilteredValues(\n options\n .map((option) => {\n if (option.label != null && typeof option.label !== \"string\") {\n console.error(\"Cannot filter non-string labels\", option);\n return undefined;\n }\n const str = (option.label as string) || \"\";\n return str.toLowerCase().indexOf(filter) === -1 ? option.value : undefined;\n })\n .filter((r) => r !== undefined),\n );\n }\n }, [props.filtered, filter, options]);\n\n const researchOnFilterChange = debounce(\n useCallback(() => {\n setOptions(null);\n }, []),\n 500,\n );\n\n const previousFilter = useRef<string>(filter);\n\n // Reload filtering.\n useEffect(() => {\n if (previousFilter.current != filter && props.filtered == \"reload\") {\n previousFilter.current = filter;\n props.optionsRequestCancel && props.optionsRequestCancel();\n researchOnFilterChange().then();\n }\n }, [filter, props, researchOnFilterChange]);\n\n const onFilterKeyDown = useCallback(\n async (e: KeyboardEvent) => {\n if (!options) return;\n if (e.key == \"Enter\" || e.key == \"Tab\") {\n const activeOptions = options.filter((option) => !filteredValues.includes(option.value));\n if (activeOptions.length == 1) {\n await selectItemHandler(activeOptions[0].value);\n stopEditing();\n } else if (props.onSelectFilter) {\n await selectFilterHandler(filter);\n stopEditing();\n } else {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n },\n [filteredValues, options, selectItemHandler, selectFilterHandler, stopEditing, filter, props],\n );\n\n const save = useCallback(async () => {\n // Handler for sub-selected value\n if (!selectedSubComponent) return true;\n if (!subComponentIsValid.current) return false;\n await selectItemHandler(selectedSubComponent.value as ValueType, subSelectedValue);\n return true;\n }, [selectItemHandler, selectedSubComponent, subSelectedValue]);\n\n const { popoverWrapper } = useGridPopoverHook({ className: props.className, save });\n return popoverWrapper(\n <>\n {props.filtered && (\n <div className={\"GridFormDropDown-filter\"}>\n <FocusableItem className={\"filter-item\"}>\n {({ ref }: any) => (\n <div style={{ display: \"flex\", width: \"100%\" }}>\n <input\n autoFocus\n className={\"free-text-input\"}\n style={{ border: \"0px\" }}\n ref={ref}\n type=\"text\"\n placeholder={props.filterPlaceholder ?? \"Placeholder\"}\n data-testid={\"filteredMenu-free-text-input\"}\n defaultValue={filter}\n onChange={(e) => setFilter(e.target.value.toLowerCase())}\n onKeyDown={(e) => onFilterKeyDown(e)}\n />\n </div>\n )}\n </FocusableItem>\n <MenuDivider key={`$$divider_filter`} />\n </div>\n )}\n <ComponentLoadingWrapper loading={!options} className={\"GridFormDropDown-options\"}>\n <>\n {options && options.length == filteredValues?.length && (\n <MenuItem key={`${fieldToString(field)}-empty`}>[Empty]</MenuItem>\n )}\n {options?.map((item: FinalSelectOption<ValueType | string>, index) =>\n item.value === MenuSeparatorString ? (\n <MenuDivider key={`$$divider_${index}`} />\n ) : item.value === MenuHeaderString ? (\n <MenuHeader key={`$$header_${index}`}>{item.label}</MenuHeader>\n ) : filteredValues.includes(item.value) ? null : (\n <div key={`menu-wrapper-${index}`}>\n <MenuItem\n key={`${fieldToString(field)}-${index}`}\n disabled={!!item.disabled}\n title={item.disabled && typeof item.disabled !== \"boolean\" ? item.disabled : \"\"}\n value={item.value}\n onClick={(e: ClickEvent) => {\n if (item.subComponent) {\n if (selectedSubComponent === item) {\n setSelectedSubComponent(null);\n subComponentIsValid.current = true;\n } else {\n setSelectedSubComponent(item);\n }\n e.keepOpen = true;\n } else {\n selectItemHandler(item.value as ValueType).then();\n }\n }}\n >\n {item.label ?? (item.value == null ? `<${item.value}>` : `${item.value}`)}\n </MenuItem>\n\n {item.subComponent && selectedSubComponent === item && (\n <FocusableItem className={\"LuiDeprecatedForms\"} key={`${item.label}_subcomponent`}>\n {(ref: MenuInstance) => (\n <GridSubComponentContext.Provider\n value={{\n data,\n value: subSelectedValue,\n setValue: (value: any) => {\n setSubSelectedValue(value);\n },\n setValid: (valid: boolean) => {\n subComponentIsValid.current = valid;\n },\n triggerSave: async () => {\n ref.closeMenu();\n },\n }}\n >\n {item.subComponent && (\n <item.subComponent key={`${fieldToString(field)}-${index}_subcomponent_inner`} />\n )}\n </GridSubComponentContext.Provider>\n )}\n </FocusableItem>\n )}\n </div>\n ),\n )}\n </>\n </ComponentLoadingWrapper>\n </>,\n );\n};\n","import \"../../styles/GridFormMultiSelect.scss\";\n\nimport { FocusableItem, MenuDivider, MenuItem } from \"../../react-menu3\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { delay, fromPairs, isEqual, omit, pick, toPairs } from \"lodash-es\";\nimport { LuiCheckboxInput } from \"@linzjs/lui\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { MenuSeparatorString } from \"./GridFormDropDown\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { ClickEvent } from \"../../react-menu3/types\";\nimport { GridSubComponentContext } from \"contexts/GridSubComponentContext\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\ninterface MultiFinalSelectOption<ValueType> {\n value: ValueType;\n label?: JSX.Element | string;\n subComponent?: (props: any) => JSX.Element;\n}\n\nexport type MultiSelectOption<ValueType> = ValueType | MultiFinalSelectOption<ValueType>;\n\nexport interface SelectedOptionResult<ValueType> extends MultiFinalSelectOption<ValueType> {\n subValue?: any;\n}\n\nexport interface GridFormMultiSelectProps<RowType extends GridBaseRow, ValueType> extends CellEditorCommon {\n className?:\n | \"GridMultiSelect-containerSmall\"\n | \"GridMultiSelect-containerMedium\"\n | \"GridMultiSelect-containerLarge\"\n | \"GridMultiSelect-containerUnlimited\"\n | string\n | undefined;\n filtered?: boolean;\n filterPlaceholder?: string;\n onSave?: (selectedRows: RowType[], selectedOptions: SelectedOptionResult<ValueType>[]) => Promise<boolean>;\n options:\n | MultiSelectOption<ValueType>[]\n | ((selectedRows: RowType[]) => Promise<MultiSelectOption<ValueType>[]> | MultiSelectOption<ValueType>[]);\n initialSelectedValues?: (selectedRows: RowType[]) => any[] | Record<string, null | any>;\n}\n\nexport const GridFormMultiSelect = <RowType extends GridBaseRow, ValueType>(\n props: GridFormMultiSelectProps<RowType, ValueType>,\n) => {\n const { selectedRows, data } = useGridPopoverContext<RowType>();\n\n const initialiseValues = useMemo(() => {\n const r = props.initialSelectedValues && props.initialSelectedValues(selectedRows);\n // convert array of strings to object<value,null>\n return Array.isArray(r) ? fromPairs(r.map((v) => [v, null])) : r;\n }, [props, selectedRows]);\n\n const subComponentIsValid = useRef<Record<string, boolean>>({});\n const [selectedValues, setSelectedValues] = useState<Record<string, null | any>>(() => initialiseValues ?? {});\n\n const [filter, setFilter] = useState(\"\");\n const [filteredValues, setFilteredValues] = useState<any[]>([]);\n const optionsInitialising = useRef(false);\n const [options, setOptions] = useState<MultiFinalSelectOption<ValueType>[]>();\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (props.onSave) {\n if (!options) {\n console.error(\"options not initialised\");\n return false;\n }\n\n const validations = pick(subComponentIsValid.current, Object.keys(selectedValues));\n const notValid = Object.values(validations).some((v) => !v);\n if (notValid) return false;\n\n const menuOptionSubValueResult = toPairs(selectedValues).map(([value, subValue]) => {\n const o = {\n ...options.find((o) => o.value == value),\n } as SelectedOptionResult<ValueType>;\n o.subValue = subValue;\n return o;\n });\n\n if (isEqual(initialiseValues, selectedValues)) {\n // No changes to save\n return true;\n }\n\n return await props.onSave(selectedRows, menuOptionSubValueResult);\n }\n return true;\n },\n [initialiseValues, options, props, selectedValues],\n );\n\n // Load up options list if it's async function\n useEffect(() => {\n if (options || optionsInitialising.current) return;\n optionsInitialising.current = true;\n let optionsConf = props.options ?? [];\n\n (async () => {\n if (typeof optionsConf == \"function\") {\n optionsConf = await optionsConf(selectedRows);\n }\n\n const optionsList = optionsConf?.map((item) => {\n if (item == null || typeof item === \"string\" || typeof item === \"number\") {\n item = { value: item as ValueType, label: item } as MultiFinalSelectOption<ValueType>;\n }\n return item;\n }) as any as MultiFinalSelectOption<ValueType>[];\n\n if (props.filtered) {\n // This is needed otherwise when filter input is rendered and sets autofocus\n // the mouse up of the double click edit triggers the cell to cancel editing\n delay(() => setOptions(optionsList), 100);\n } else {\n setOptions(optionsList);\n }\n optionsInitialising.current = false;\n })();\n }, [props.filtered, props.options, options, selectedRows]);\n\n useEffect(() => {\n if (!props.filtered || options == null) return;\n setFilteredValues(\n options\n .map((option) => {\n if (option.label != null && typeof option.label !== \"string\") {\n console.error(\"Cannot filter non-string labels\", option);\n return undefined;\n }\n const str = (option.label as string) || \"\";\n return str.toLowerCase().indexOf(filter.trim()) === -1 ? option.value : undefined;\n })\n .filter((r) => r !== undefined),\n );\n }, [props.filtered, filter, options]);\n\n const toggleValue = useCallback(\n (item: MultiFinalSelectOption<ValueType>) => {\n if (`${item.value}` in selectedValues) {\n setSelectedValues(omit(selectedValues, [`${item.value}`]));\n } else {\n setSelectedValues({ ...selectedValues, [`${item.value}`]: null });\n }\n },\n [selectedValues],\n );\n\n const { popoverWrapper, lastInputKeyboardEventHandlers, triggerSave } = useGridPopoverHook({\n className: props.className,\n save,\n });\n return popoverWrapper(\n <ComponentLoadingWrapper loading={!options} className={\"GridFormMultiSelect-container\"}>\n <>\n {options && props.filtered && (\n <>\n <FocusableItem className={\"filter-item\"} key={\"filter\"}>\n {({ ref }: any) => (\n <div style={{ display: \"flex\", width: \"100%\" }} className={\"GridFormMultiSelect-filter\"}>\n <input\n autoFocus\n className={\"free-text-input\"}\n style={{ border: \"0px\" }}\n ref={ref}\n type=\"text\"\n placeholder={props.filterPlaceholder ?? \"Placeholder\"}\n data-testid={\"filteredMenu-free-text-input\"}\n defaultValue={\"\"}\n onChange={(e) => setFilter(e.target.value.toLowerCase())}\n />\n </div>\n )}\n </FocusableItem>\n <MenuDivider key={`$$divider_filter`} />\n </>\n )}\n <div className={\"GridFormMultiSelect-options\"}>\n {options?.map((item, index) =>\n item.value === MenuSeparatorString ? (\n <MenuDivider key={`$$divider_${index}`} />\n ) : filteredValues.includes(item.value) ? null : (\n <div key={`${index}`}>\n <MenuItem\n onClick={(e: ClickEvent) => {\n e.keepOpen = true;\n toggleValue(item);\n }}\n {...lastInputKeyboardEventHandlers}\n >\n <LuiCheckboxInput\n isChecked={`${item.value}` in selectedValues}\n value={`${item.value}`}\n label={item.label ?? (item.value == null ? `<${item.value}>` : `${item.value}`)}\n inputProps={{\n onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n return false;\n },\n }}\n onChange={() => {\n /*Do nothing, change handled by menuItem*/\n }}\n />\n </MenuItem>\n\n {`${item.value}` in selectedValues && item.subComponent && (\n <FocusableItem className={\"LuiDeprecatedForms\"} key={`${item.value}_subcomponent`}>\n {(_: any) =>\n item.subComponent && (\n <GridSubComponentContext.Provider\n value={{\n data,\n value: selectedValues[`${item.value}`],\n setValue: (value: any) => {\n setSelectedValues({\n ...selectedValues,\n [`${item.value}`]: value,\n });\n },\n setValid: (valid: boolean) => {\n subComponentIsValid.current[`${item.value}`] = valid;\n },\n triggerSave,\n }}\n >\n <item.subComponent />\n </GridSubComponentContext.Provider>\n )\n }\n </FocusableItem>\n )}\n </div>\n ),\n )}\n </div>\n </>\n </ComponentLoadingWrapper>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormMultiSelect, GridFormMultiSelectProps } from \"../gridForm/GridFormMultiSelect\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoutEditMultiSelect = <RowType extends GridBaseRow, ValueType>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormMultiSelectProps<RowType, ValueType>>,\n): ColDefT<RowType> =>\n GridCell(colDef, {\n editor: GridFormMultiSelect,\n ...props,\n editorParams: {\n className: \"GridMultiSelect-containerMedium\",\n ...(props.editorParams as GridFormMultiSelectProps<RowType, ValueType>),\n },\n });\n","import { GridBaseRow } from \"../Grid\";\nimport { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { FocusableItem, MenuDivider, MenuItem } from \"../../react-menu3\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { GridSubComponentContext } from \"../../contexts/GridSubComponentContext\";\nimport { ClickEvent } from \"../../react-menu3/types\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\nexport interface GridFormPopoutMenuProps<RowType extends GridBaseRow> extends CellEditorCommon {\n options: (selectedRows: RowType[]) => Promise<MenuOption<RowType>[]>;\n defaultAction?: (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => Promise<void>;\n}\n\n/** Menu configuration types **/\nexport const PopoutMenuSeparator = Object.freeze({ __isMenuSeparator__: true });\n\ninterface MenuSeparatorType {\n __isMenuSeparator__: boolean;\n}\n\nexport interface SelectedMenuOptionResult<RowType extends GridBaseRow> extends MenuOption<RowType> {\n subValue: any;\n}\n\nexport interface MenuOption<RowType extends GridBaseRow> {\n label: JSX.Element | string | MenuSeparatorType;\n action?: (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => Promise<void>;\n disabled?: string | boolean;\n supportsMultiEdit: boolean;\n hidden?: boolean;\n subComponent?: (props: any) => JSX.Element;\n}\n\n/**\n * NOTE: If the popout menu doesn't appear on single click when also selecting row it's because\n * you need a useMemo around your columnDefs\n */\nexport const GridFormPopoverMenu = <RowType extends GridBaseRow>(props: GridFormPopoutMenuProps<RowType>) => {\n const { selectedRows, updateValue, data } = useGridPopoverContext<RowType>();\n\n const optionsInitialising = useRef(false);\n const [options, setOptions] = useState<MenuOption<RowType>[]>();\n\n // Save triggers during async action processing which triggers another action(), this ref blocks that\n const actionProcessing = useRef(false);\n const [subComponentSelected, setSubComponentSelected] = useState<MenuOption<RowType> | null>(null);\n const subComponentIsValid = useRef(false);\n const [subSelectedValue, setSubSelectedValue] = useState<any>();\n\n const defaultAction = useCallback(\n async (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => {\n if (props.defaultAction) await props.defaultAction(selectedRows, menuOption);\n else console.error(`No action specified for ${menuOption.label} menu options`);\n },\n [props],\n );\n\n // Load up options list if it's async function\n useEffect(() => {\n if (options || optionsInitialising.current) return;\n optionsInitialising.current = true;\n const optionsConf = props.options ?? [];\n\n (async () => {\n const newOptions = typeof optionsConf == \"function\" ? await optionsConf(selectedRows) : optionsConf;\n setOptions(newOptions);\n if (!props.defaultAction) {\n const anyOptionsAreMissingAction = newOptions.some((option) => !option.action);\n if (anyOptionsAreMissingAction) {\n console.error(\"There's no default action handler and some Menu options are missing an action handler\", {\n invalidMenuOptions: newOptions.filter((option) => !option.action),\n });\n }\n }\n optionsInitialising.current = false;\n })();\n }, [options, props.defaultAction, props.options, selectedRows]);\n\n const actionClick = useCallback(\n async (menuOption: MenuOption<RowType>) => {\n actionProcessing.current = true;\n return updateValue(async () => {\n const result = { ...menuOption, subValue: subSelectedValue };\n await (menuOption.action ?? defaultAction)(selectedRows, result);\n actionProcessing.current = false;\n return true;\n });\n },\n [defaultAction, selectedRows, subSelectedValue, updateValue],\n );\n\n const onMenuItemClick = useCallback(\n (e: ClickEvent, item: MenuOption<RowType>) => {\n if (item.subComponent) {\n subComponentIsValid.current = false;\n setSubSelectedValue(null);\n setSubComponentSelected(subComponentSelected === item ? null : item);\n e.keepOpen = true;\n } else {\n actionClick(item).then();\n e.keepOpen = true;\n }\n },\n [actionClick, subComponentSelected],\n );\n\n const selectedRowCount = selectedRows.length;\n\n const filteredOptions = options?.filter((menuOption) => {\n return menuOption.label === PopoutMenuSeparator || selectedRowCount === 1 || menuOption.supportsMultiEdit;\n });\n\n const save = useCallback(async () => {\n // if a subcomponent is open we assume that it's meant to be saved.\n if (!actionProcessing.current && subComponentSelected) {\n if (!subComponentIsValid.current) return false;\n await actionClick(subComponentSelected);\n return false;\n }\n // Otherwise assume it's a cancel, either way we close the menu\n return true;\n }, [actionClick, subComponentSelected]);\n\n const { popoverWrapper, triggerSave } = useGridPopoverHook({ className: props.className, save });\n\n return popoverWrapper(\n <ComponentLoadingWrapper loading={!filteredOptions} className={\"GridFormPopupMenu\"}>\n <>\n {options?.map((item, index) =>\n item.label === PopoutMenuSeparator ? (\n <MenuDivider key={`$$divider_${index}`} />\n ) : (\n !item.hidden && (\n <Fragment key={`${item.label}`}>\n <MenuItem\n key={`${item.label}`}\n onClick={(e: ClickEvent) => onMenuItemClick(e, item)}\n disabled={!!item.disabled || !filteredOptions?.includes(item)}\n title={item.disabled && typeof item.disabled !== \"boolean\" ? item.disabled : \"\"}\n >\n {item.label as JSX.Element | string}\n </MenuItem>\n {item.subComponent && subComponentSelected === item && (\n <FocusableItem className={\"LuiDeprecatedForms\"} key={`${item.label}_subcomponent`}>\n {(_: any) =>\n item.subComponent && (\n <GridSubComponentContext.Provider\n value={{\n data,\n value: subSelectedValue,\n setValue: (value: any) => {\n setSubSelectedValue(value);\n },\n setValid: (valid: boolean) => {\n subComponentIsValid.current = valid;\n },\n triggerSave,\n }}\n >\n <item.subComponent />\n </GridSubComponentContext.Provider>\n )\n }\n </FocusableItem>\n )}\n </Fragment>\n )\n ),\n )}\n </>\n </ComponentLoadingWrapper>,\n );\n};\n","import \"./GridPopoverMenu.scss\";\n\nimport { GenericMultiEditCellClass } from \"../GenericCellClass\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridFormPopoverMenu, GridFormPopoutMenuProps } from \"../gridForm/GridFormPopoverMenu\";\nimport { GridRenderPopoutMenuCell } from \"../gridRender/GridRenderPopoutMenuCell\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\n/**\n * Popout burger menu\n */\nexport const GridPopoverMenu = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n custom: GenericCellEditorProps<GridFormPopoutMenuProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell<RowType, GridFormPopoutMenuProps<RowType>>(\n {\n maxWidth: 40,\n editable: colDef.editable != null ? colDef.editable : true,\n cellStyle: { justifyContent: \"flex-end\" },\n cellRenderer: GridRenderPopoutMenuCell,\n cellClass: custom?.multiEdit ? GenericMultiEditCellClass : undefined,\n ...colDef,\n cellRendererParams: {\n // Menus open on single click, this parameter is picked up in Grid.tsx\n singleClickEdit: true,\n },\n },\n {\n editor: GridFormPopoverMenu,\n ...custom,\n },\n );\n","import { ValueFormatterParams } from \"ag-grid-community/dist/lib/entities/colDef\";\n\nexport const bearingValueFormatter = (params: ValueFormatterParams): string => {\n const value = params.value;\n if (value == null) {\n return \"-\";\n }\n return convertDDToDMS(value, false, false);\n};\n\nexport const bearingCorrectionValueFormatter = (params: ValueFormatterParams): string => {\n const value = params.value;\n if (value == null) {\n return \"-\";\n }\n if (typeof value === \"string\") {\n return convertDDToDMS(bearingNumberParser(value), true, true);\n }\n return convertDDToDMS(value, true, true);\n};\n\nexport const bearingNumberParser = (value: string): number | null => {\n if (value === \"\") return null;\n return parseFloat(value);\n};\n\nconst validMaskForDmsBearing = /^((-)?\\d+)?(\\.([0-5](\\d([0-5](\\d(\\d+)?)?)?)?)?)?$/;\nexport const bearingStringValidator = (\n value: string,\n customValidate?: (value: number | null) => string | null,\n): string | null => {\n value = value.trim();\n if (value === \"\") return null;\n const match = value.match(validMaskForDmsBearing);\n if (!match) return \"Bearing must be a positive number in D.MMSSS format\";\n const decimalPart = match[4];\n if (decimalPart != null && decimalPart.length > 5) {\n return \"Bearing has a maximum of 5 decimal places\";\n }\n\n const bearing = parseFloat(value);\n return customValidate ? customValidate(bearing) : null;\n};\n\n// Decimal-ish degrees to Degrees Minutes Seconds converter\nexport const convertDDToDMS = (dd: number | null, showPositiveSymbol = true, addTrailingZeros = true): string => {\n if (dd == null) return \"–\";\n\n if (dd === 0) addTrailingZeros = false;\n\n // toFixed rounds parts up greater than 60, which has to be corrected below\n const [bearingWholeString, bearingDecimalString] = dd.toFixed(5).split(\".\");\n\n let bearingWhole = Math.abs(parseInt(bearingWholeString));\n let minNumeric = parseInt(bearingDecimalString?.substring(0, 2));\n let secNumeric = parseInt(bearingDecimalString?.substring(2, 4));\n\n // If the toFixed caused rounding beyond 60 minutes/seconds then apply the carry\n if (secNumeric >= 60) {\n minNumeric++;\n secNumeric -= 60;\n }\n if (minNumeric >= 60) {\n bearingWhole++;\n minNumeric -= 60;\n }\n if (bearingWhole >= 360) {\n bearingWhole -= 360;\n }\n\n const minString = minNumeric.toString().padStart(2, \"0\");\n const secString = secNumeric.toString().padStart(2, \"0\");\n const deciSecString = bearingDecimalString?.substring(4, 5);\n\n let dmsString = `${showPositiveSymbol && dd > 0 ? \"+\" : \"\"}${dd < 0 ? \"-\" : \"\"}${bearingWhole}°`;\n if (addTrailingZeros || deciSecString != \"0\") {\n dmsString += `\\xa0${minString}'\\xa0${secString}.${deciSecString}\"`; // \"\\xa0\" is here for non-breaking space\n } else if (secNumeric != 0) {\n dmsString += `\\xa0${minString}'\\xa0${secString}\"`;\n } else {\n dmsString += `\\xa0${minString}'`;\n }\n\n return dmsString;\n};\n","import \"./TextInputFormatted.scss\";\n\nimport { DetailedHTMLProps, InputHTMLAttributes } from \"react\";\n\nimport clsx from \"clsx\";\nimport { LuiIcon } from \"@linzjs/lui\";\nimport { omit } from \"lodash-es\";\n\nexport interface LuiTextInputProps extends DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> {\n // overrides value in base class to be string type only\n value: string;\n\n // Custom fields\n helpText?: string;\n error?: string | boolean | null;\n formatted?: string;\n}\n\nexport const TextInputFormatted = (props: LuiTextInputProps): JSX.Element => {\n return (\n <div className={clsx(\"LuiTextInput Grid-popoverContainer\", props.error && \"hasError\", props.className)}>\n <span className=\"LuiTextInput-inputWrapper\">\n {/* wrapper div used for error styling */}\n <input\n type={\"text\"}\n spellCheck={true}\n defaultValue={props.value}\n {...omit(props, [\"error\", \"value\", \"helpText\", \"formatted\", \"className\"])}\n className={\"LuiTextInput-input\"}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n props.onMouseEnter && props.onMouseEnter(e);\n }}\n />\n <span className={\"LuiTextInput-formatted\"}>{props.formatted}</span>\n </span>\n\n {props.error && (\n <span className=\"LuiTextInput-error\">\n <LuiIcon alt=\"error\" name=\"ic_error\" className=\"LuiTextInput-error-icon\" size=\"sm\" status=\"error\" />\n {props.error}\n </span>\n )}\n\n {props.helpText && !props.error && (\n <span\n style={{\n fontSize: \"0.7rem\",\n }}\n >\n {props.helpText}\n </span>\n )}\n </div>\n );\n};\n","import \"../../styles/GridFormEditBearing.scss\";\n\nimport { useCallback, useState } from \"react\";\nimport { GridBaseRow } from \"../Grid\";\nimport { TextInputFormatted } from \"../../lui/TextInputFormatted\";\nimport { bearingNumberParser, bearingStringValidator, convertDDToDMS } from \"../../utils/bearing\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\nexport interface GridFormEditBearingProps<RowType extends GridBaseRow> extends CellEditorCommon {\n placeHolder?: string;\n range?: (value: number | null) => string | null;\n onSave?: (selectedRows: RowType[], value: number | null) => Promise<boolean>;\n}\n\nexport const GridFormEditBearing = <RowType extends GridBaseRow>(props: GridFormEditBearingProps<RowType>) => {\n const { field, value: initialValue } = useGridPopoverContext<RowType>();\n\n const [value, setValue] = useState<string>(`${initialValue ?? \"\"}`);\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (bearingStringValidator(value)) return false;\n const parsedValue = bearingNumberParser(value);\n // Value didn't change so don't save just cancel\n if (parsedValue === initialValue) {\n return true;\n }\n\n if (props.onSave) {\n return await props.onSave(selectedRows, parsedValue);\n } else {\n if (field == null) {\n console.error(\"field is not defined in ColDef\");\n } else {\n selectedRows.forEach((row) => {\n row[field] = parsedValue as any;\n });\n }\n }\n return true;\n },\n [field, initialValue, props, value],\n );\n const { popoverWrapper, onlyInputKeyboardEventHandlers } = useGridPopoverHook({\n className: props.className,\n save,\n });\n\n return popoverWrapper(\n <div className={\"GridFormEditBearing-input Grid-popoverContainer\"}>\n <TextInputFormatted\n value={value ?? \"\"}\n onChange={(e) => {\n setValue(e.target.value.trim());\n }}\n autoFocus={true}\n placeholder={props.placeHolder}\n {...onlyInputKeyboardEventHandlers}\n formatted={bearingStringValidator(value, props.range) ? \"?\" : convertDDToDMS(bearingNumberParser(value))}\n error={bearingStringValidator(value, props.range)}\n />\n </div>,\n );\n};\n","import { bearingCorrectionValueFormatter, bearingValueFormatter } from \"../../utils/bearing\";\nimport { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridFormEditBearing, GridFormEditBearingProps } from \"../gridForm/GridFormEditBearing\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverEditBearingLike = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormEditBearingProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell(\n {\n initialWidth: 65,\n maxWidth: 150,\n valueFormatter: bearingValueFormatter,\n ...colDef,\n },\n {\n editor: GridFormEditBearing,\n ...props,\n },\n );\n\nexport const GridPopoverEditBearing = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormEditBearingProps<RowType>>,\n): ColDefT<RowType> =>\n GridPopoverEditBearingLike(\n { valueFormatter: bearingValueFormatter, ...colDef },\n {\n multiEdit: !!props.multiEdit,\n editorParams: {\n placeHolder: \"Enter bearing correction\",\n range: (value: number | null) => {\n if (value === null) return \"Bearing correction is required\";\n if (value >= 360) return \"Bearing correction must be less than 360 degrees\";\n if (value < 0) return \"Bearing correction must not be negative\";\n return null;\n },\n ...props.editorParams,\n },\n },\n );\n\nexport const GridPopoverEditBearingCorrection = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormEditBearingProps<RowType>>,\n): ColDefT<RowType> =>\n GridPopoverEditBearingLike(\n { valueFormatter: bearingCorrectionValueFormatter, ...colDef },\n {\n multiEdit: !!props.multiEdit,\n editorParams: {\n placeHolder: \"Enter bearing correction\",\n range: (value: number | null) => {\n if (value === null) return \"Bearing is required\";\n if (value >= 360) return \"Bearing must be less than 360 degrees\";\n if (value <= -180) return \"Bearing must be greater then -180 degrees\";\n return null;\n },\n ...props.editorParams,\n },\n },\n );\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormDropDown, GridFormPopoutDropDownProps } from \"../gridForm/GridFormDropDown\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverEditDropDown = <RowType extends GridBaseRow, ValueType>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormPopoutDropDownProps<RowType, ValueType>>,\n): ColDefT<RowType> =>\n GridCell(colDef, {\n editor: GridFormDropDown,\n ...props,\n editorParams: {\n // Defaults to medium size container\n className: \"GridPopoverEditDropDown-containerMedium\",\n ...(props.editorParams as GridFormPopoutDropDownProps<RowType, ValueType>),\n },\n });\n","import clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { GridBaseRow } from \"../Grid\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\nexport interface GridFormMessageProps<RowType extends GridBaseRow> extends CellEditorCommon {\n message: (selectedRows: RowType[]) => Promise<string | JSX.Element> | string | JSX.Element;\n}\n\nexport const GridFormMessage = <RowType extends GridBaseRow>(props: GridFormMessageProps<RowType>) => {\n const { selectedRows } = useGridPopoverContext<RowType>();\n\n const [message, setMessage] = useState<string | JSX.Element | null>(null);\n const { popoverWrapper } = useGridPopoverHook({ className: props.className });\n\n useEffect(() => {\n (async () => {\n setMessage(await props.message(selectedRows));\n })().then();\n }, [props, selectedRows]);\n\n return popoverWrapper(\n <ComponentLoadingWrapper loading={message === null} className={clsx(\"GridFormMessage-container\", props.className)}>\n <>{message}</>\n </ComponentLoadingWrapper>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridFormMessage, GridFormMessageProps } from \"../gridForm/GridFormMessage\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverMessage = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormMessageProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell(\n {\n resizable: false,\n ...colDef,\n cellRendererParams: {\n singleClickEdit: true,\n ...colDef.cellRendererParams,\n },\n },\n {\n editor: GridFormMessage,\n ...props,\n },\n );\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { InputHTMLAttributes, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { LuiIcon } from \"@linzjs/lui\";\nimport { v4 as uuidVersion4 } from \"uuid\";\nimport { omit } from \"lodash-es\";\n\nexport const useGenerateOrDefaultId = (idFromProps?: string) => {\n const [id] = useState(idFromProps ? idFromProps : uuidVersion4());\n return id;\n};\n\nexport interface LuiTextAreaInputProps extends InputHTMLAttributes<HTMLTextAreaElement> {\n // overrides value in base class to be string type only\n value: string;\n\n // Custom fields\n label?: JSX.Element | string;\n mandatory?: boolean;\n helpText?: string;\n error?: string | boolean | null;\n}\n\nexport const TextAreaInput = (props: LuiTextAreaInputProps) => {\n const id = useGenerateOrDefaultId(props?.id);\n\n return (\n <div\n className={clsx(\n \"LuiTextAreaInput Grid-popoverContainer\",\n props.disabled ? \"isDisabled\" : \"\",\n props.error ? \"hasError\" : \"\",\n props.className,\n )}\n >\n <label htmlFor={id}>\n {props.mandatory != null && <span className=\"LuiTextAreaInput-mandatory\">*</span>}\n {props.label != null && <span className=\"LuiTextAreaInput-label\">{props.label}</span>}\n <div className=\"LuiTextAreaInput-wrapper\">\n {/* wrapper div used for error styling */}\n <textarea\n rows={5}\n {...omit(props, [\"error\", \"value\", \"helpText\", \"formatted\", \"className\"])}\n id={id}\n value={props.value ?? \"\"}\n spellCheck={true}\n onMouseEnter={(e) => {\n if (document.activeElement != e.currentTarget) {\n e.currentTarget.focus();\n e.currentTarget.selectionStart = e.currentTarget.value.length;\n }\n props.onMouseEnter && props.onMouseEnter(e);\n }}\n >\n {props.value}\n </textarea>\n </div>\n </label>\n\n {/* Error message */}\n {props.error && (\n <span className=\"LuiTextAreaInput-error\">\n <LuiIcon alt=\"error\" name=\"ic_error\" className=\"LuiTextAreaInput-error-icon\" size=\"sm\" status=\"error\" />\n {props.error}\n </span>\n )}\n\n {props.helpText && !props.error && (\n <span\n style={{\n fontSize: \"0.7rem\",\n }}\n >\n {props.helpText}\n </span>\n )}\n </div>\n );\n};\n","import { GridBaseRow } from \"../components/Grid\";\n\nexport interface TextInputValidatorProps<RowType extends GridBaseRow> {\n required?: boolean;\n maxLength?: number;\n validate?: (value: string, data: RowType) => string | null;\n}\n\nexport const TextInputValidator = <RowType extends GridBaseRow>(\n props: TextInputValidatorProps<RowType>,\n value: string | null,\n data: RowType,\n) => {\n if (value == null) return null;\n\n // This can happen because subcomponent is invoked without type safety\n if (typeof value !== \"string\") {\n console.error(\"Value is not a string\", value);\n }\n if (props.required && value.length === 0) {\n return `Some text is required`;\n }\n if (props.maxLength && value.length > props.maxLength) {\n return `Text must be no longer than ${props.maxLength} characters`;\n }\n if (props.validate) {\n return props.validate(value, data);\n }\n return null;\n};\n","import { useCallback, useState } from \"react\";\nimport { TextAreaInput } from \"../../lui/TextAreaInput\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { GridBaseRow } from \"../Grid\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\n\nexport interface GridFormTextAreaProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n width?: string | number;\n onSave?: (selectedRows: RowType[], value: string) => Promise<boolean>;\n helpText?: string;\n}\n\nexport const GridFormTextArea = <RowType extends GridBaseRow>(props: GridFormTextAreaProps<RowType>) => {\n const { field, value: initialVale, data } = useGridPopoverContext<RowType>();\n const [value, setValue] = useState(initialVale != null ? `${initialVale}` : \"\");\n\n const helpText = props.helpText ?? \"Press tab to save\";\n\n const invalid = useCallback(() => TextInputValidator(props, value, data), [props, value, data]);\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (invalid()) return false;\n\n if (initialVale === (value ?? \"\")) return true;\n\n if (props.onSave) {\n return await props.onSave(selectedRows, value);\n }\n\n if (field == null) {\n console.error(\"ColDef has no field set\");\n return false;\n }\n selectedRows.forEach((row) => {\n row[field] = value as any;\n });\n return true;\n },\n [invalid, initialVale, value, props, field],\n );\n const { popoverWrapper, onlyInputKeyboardEventHandlers } = useGridPopoverHook({ className: props.className, save });\n return popoverWrapper(\n <div style={{ display: \"flex\", flexDirection: \"row\", width: props.width ?? 240 }}>\n <TextAreaInput\n value={value}\n onChange={(e) => setValue(e.target.value)}\n error={invalid()}\n placeholder={props.placeholder}\n helpText={helpText}\n {...onlyInputKeyboardEventHandlers}\n />\n </div>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormTextArea, GridFormTextAreaProps } from \"../gridForm/GridFormTextArea\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverTextArea = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n params: GenericCellEditorProps<GridFormTextAreaProps<RowType>>,\n): ColDefT<RowType> => GridCell(colDef, { editor: GridFormTextArea, ...params });\n","import { useCallback, useState } from \"react\";\nimport { TextInputFormatted } from \"../../lui/TextInputFormatted\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { GridBaseRow } from \"../Grid\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\n\nexport interface GridFormTextInputProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n units?: string;\n width?: string | number;\n onSave?: (selectedRows: RowType[], value: string) => Promise<boolean>;\n helpText?: string;\n}\n\nexport const GridFormTextInput = <RowType extends GridBaseRow>(props: GridFormTextInputProps<RowType>) => {\n const { field, value: initialVale, data } = useGridPopoverContext<RowType>();\n\n const helpText = props.helpText ?? \"Press enter or tab to save\";\n\n const initValue = initialVale == null ? \"\" : `${initialVale}`;\n const [value, setValue] = useState(initValue);\n\n const invalid = useCallback(() => TextInputValidator<RowType>(props, value, data), [data, props, value]);\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (invalid()) return false;\n const trimmedValue = value.trim();\n if (initValue === trimmedValue) return true;\n\n if (props.onSave) {\n return await props.onSave(selectedRows, trimmedValue);\n }\n\n if (field == null) {\n console.error(\"ColDef has no field set\");\n return false;\n }\n selectedRows.forEach((row) => {\n row[field] = trimmedValue as any;\n });\n return true;\n },\n [invalid, value, initValue, props, field],\n );\n const { popoverWrapper, onlyInputKeyboardEventHandlers } = useGridPopoverHook({ className: props.className, save });\n\n return popoverWrapper(\n <div style={{ display: \"flex\", flexDirection: \"row\", width: props.width ?? 240 }} className={\"FormTest\"}>\n <TextInputFormatted\n value={value}\n onChange={(e) => setValue(e.target.value)}\n error={invalid()}\n formatted={props.units}\n style={{ width: \"100%\" }}\n placeholder={props.placeholder}\n {...onlyInputKeyboardEventHandlers}\n helpText={helpText}\n />\n </div>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormTextInput, GridFormTextInputProps } from \"../gridForm/GridFormTextInput\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverTextInput = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n params: GenericCellEditorProps<GridFormTextInputProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell(colDef, {\n editor: GridFormTextInput,\n ...params,\n });\n","import { useCallback, useContext, useEffect } from \"react\";\nimport { GridSubComponentContext } from \"../../contexts/GridSubComponentContext\";\nimport { TextInputFormatted } from \"../../lui/TextInputFormatted\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\n\nexport interface GridFormSubComponentTextInputProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n width?: string | number;\n defaultValue: string;\n helpText?: string;\n}\n\nexport const GridFormSubComponentTextInput = <RowType extends GridBaseRow>(\n props: GridFormSubComponentTextInputProps<RowType>,\n): JSX.Element => {\n const { value, setValue, setValid, triggerSave, data } = useContext(GridSubComponentContext);\n\n const helpText = props.helpText ?? \"Press enter or tab to save\";\n\n // If is not initialised yet as it's just been created then set the default value\n useEffect(() => {\n if (value == null) setValue(props.defaultValue);\n }, [props.defaultValue, setValue, value]);\n\n const invalid = useCallback(() => TextInputValidator(props, value, data), [data, props, value]);\n\n useEffect(() => {\n setValid(value != null && invalid() == null);\n }, [setValid, invalid, value]);\n\n return (\n <TextInputFormatted\n value={value}\n error={invalid()}\n onChange={(e) => setValue(e.target.value)}\n helpText={helpText}\n autoFocus={true}\n onKeyDown={(e) => {\n if (e.key === \"Tab\" || e.key === \"Enter\") {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n onKeyUp={(e) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n !e.shiftKey && triggerSave().then();\n } else if (e.key === \"Enter\") {\n triggerSave().then();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n placeholder={props.placeholder}\n style={{\n width: \"100%\",\n }}\n />\n );\n};\n","import { useCallback, useContext, useEffect } from \"react\";\nimport { GridSubComponentContext } from \"../../contexts/GridSubComponentContext\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport clsx from \"clsx\";\nimport { TextAreaInput } from \"../../lui/TextAreaInput\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\nimport { GridBaseRow } from \"../Grid\";\n\nexport interface GridSubComponentTextAreaProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n width?: string | number;\n defaultValue: string;\n className?: string;\n helpText?: string;\n}\n\nexport const GridFormSubComponentTextArea = <RowType extends GridBaseRow>(\n props: GridSubComponentTextAreaProps<RowType>,\n): JSX.Element => {\n const { value, data, setValue, setValid, triggerSave } = useContext(GridSubComponentContext);\n\n const helpText = props.helpText ?? \"Press tab to save\";\n\n // If is not initialised yet as it's just been created then set the default value\n useEffect(() => {\n if (value == null) setValue(props.defaultValue);\n }, [props.defaultValue, setValue, value]);\n\n const invalid = useCallback(() => TextInputValidator(props, value, data), [data, props, value]);\n\n useEffect(() => {\n setValid(value != null && invalid() == null);\n }, [setValid, invalid, value]);\n\n return (\n <div className={clsx(\"FreeTextInput LuiDeprecatedForms\", props.className)}>\n <TextAreaInput\n className={\"free-text-input\"}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n error={invalid()}\n helpText={helpText}\n autoFocus={true}\n placeholder={props.placeholder}\n onKeyDown={(e) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n onKeyUp={(e) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n !e.shiftKey && triggerSave().then();\n }\n }}\n />\n </div>\n );\n};\n","import { useEffect, useRef } from \"react\";\n\n/**\n * Track previous values of states.\n *\n * @param value Value to track.\n */\nexport const usePrevious = <T extends unknown>(value: T): T | undefined => {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n","import { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Cancels timeouts on scope being destroyed.\n *\n * This could almost be a debounce, but debounce tracks by function reference, this tracks by hook reference.\n * This could have been implemented using debounce if the callers function was wrapped in useCallback,\n * but there's no way to enforce that, so it would lead to bugs.\n */\nexport const useTimeoutHook = () => {\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n\n /**\n * Clear any pending timeouts.\n */\n const clearTimeouts = () => {\n if (timeout.current) {\n const tc = timeout.current;\n timeout.current = undefined;\n clearTimeout(tc);\n }\n };\n\n /**\n * Call this when your action has completed.\n */\n const invoke = useCallback((fn: () => void, waitTimeMs: number) => {\n clearTimeouts();\n timeout.current = setTimeout(fn, waitTimeMs);\n }, []);\n\n /**\n * Clear timeout on loss of scope.\n */\n useEffect(() => {\n return () => clearTimeouts();\n }, []);\n\n return invoke;\n};\n","import { useCallback, useRef, useState } from \"react\";\nimport { useTimeoutHook } from \"./timeoutHook\";\n\n/**\n * Defers state change up to a minimum time since last state change.\n */\nexport const useStateDeferred = <T extends unknown>(\n initialValue: T,\n): [T, (v: T) => void, (v: T, w: number) => void] => {\n const startTime = useRef<number>(0);\n const timeoutHook = useTimeoutHook();\n\n const [value, _setValue] = useState(initialValue);\n\n const setValue = useCallback((newValue: T) => {\n startTime.current = Date.now();\n _setValue(newValue);\n }, []);\n\n const setValueDeferred = useCallback(\n (newValue: T, minimumWaitTimeMs: number) => {\n const waitTimeMs = Math.max(minimumWaitTimeMs - (Date.now() - startTime.current), 0);\n timeoutHook(() => _setValue(newValue), waitTimeMs);\n },\n [timeoutHook],\n );\n\n return [value, setValue, setValueDeferred];\n};\n","import \"./ActionButton.scss\";\n\nimport clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport { LuiButton, LuiIcon, LuiMiniSpinner } from \"@linzjs/lui\";\nimport { IconName } from \"@linzjs/lui/dist/components/LuiIcon/LuiIcon\";\nimport { usePrevious } from \"./reactUtils\";\nimport { useStateDeferred } from \"./stateDeferredHook\";\nimport { LuiButtonProps } from \"@linzjs/lui/dist/components/LuiButton/LuiButton\";\n\nexport interface ActionButtonProps {\n icon: IconName;\n name?: string;\n \"aria-label\"?: string;\n inProgressName?: string;\n title?: string;\n dataTestId?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"ns\";\n className?: string;\n onAction: () => Promise<void> | void;\n // Used for external code to get access to whether action is in progress\n externalSetInProgress?: () => void;\n level?: LuiButtonProps[\"level\"];\n}\n\n// Kept this less than one second, so I don't have issues with waitFor as it defaults to 1s\nconst minimumInProgressTimeMs = 950;\n\nexport const ActionButton = ({\n icon,\n name,\n inProgressName,\n dataTestId,\n className,\n title,\n onAction,\n externalSetInProgress,\n size = \"sm\",\n level = \"tertiary\",\n \"aria-label\": ariaLabel,\n}: ActionButtonProps): JSX.Element => {\n const [inProgress, setInProgress] = useState(false);\n const lastInProgress = usePrevious(inProgress ?? false);\n const [localInProgress, setLocalInProgress, setLocalInProgressDeferred] = useStateDeferred<boolean>(inProgress);\n\n useEffect(() => {\n if (inProgress == lastInProgress) return;\n inProgress ? setLocalInProgress(true) : setLocalInProgressDeferred(false, minimumInProgressTimeMs);\n }, [inProgress, lastInProgress, setLocalInProgress, setLocalInProgressDeferred]);\n\n return (\n <LuiButton\n data-testid={dataTestId}\n type={\"button\"}\n level={level}\n title={title ?? ariaLabel ?? name}\n aria-label={ariaLabel ?? name}\n className={clsx(\"lui-button-icon\", \"ActionButton\", className, localInProgress && \"ActionButton-inProgress\")}\n size={\"lg\"}\n style={name == null ? { padding: \"8px 5px\" } : {}}\n onClick={async () => {\n const promise = onAction();\n const isPromise = typeof promise !== \"undefined\";\n if (isPromise) {\n setInProgress(true);\n externalSetInProgress && setInProgress(true);\n if (isPromise) await promise;\n externalSetInProgress && setInProgress(false);\n setInProgress(false);\n }\n }}\n disabled={localInProgress}\n >\n {localInProgress ? (\n <LuiMiniSpinner\n size={16}\n divProps={{\n \"data-testid\": \"loading-spinner\",\n style: { margin: 0, paddingRight: 5, paddingLeft: 3, paddingBottom: 0, paddingTop: 0 },\n role: \"status\",\n \"aria-label\": \"Loading\",\n }}\n />\n ) : (\n <LuiIcon name={icon} alt={ariaLabel ?? name ?? \"\"} size={size} />\n )}\n <span className={\"ActionButton-minimalArea\"}>\n <span className={\"ActionButton-minimalAreaDisplay\"}>{(localInProgress ? inProgressName : name) ?? name}</span>\n {/* This makes sure the button expands to fill maximum length text at all times */}\n <span className={\"ActionButton-minimalAreaExpand\"}>{name}</span>\n </span>\n </LuiButton>\n );\n};\n"],"names":["_jsx","useLayoutEffect","_jsxs","_isEmpty","_Fragment","debounce","uuidVersion4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"step-ag-grid.esm.js","sources":["../src/react-menu3/hooks/useBEM.ts","../src/react-menu3/hooks/useCombinedRef.ts","../src/react-menu3/hooks/useIsomorphicLayoutEffect.ts","../src/react-menu3/utils/constants.ts","../src/react-menu3/utils/utils.ts","../src/react-menu3/contexts/HoverItemContext.ts","../src/react-menu3/utils/withHovering.tsx","../src/react-menu3/hooks/useItems.ts","../src/react-menu3/hooks/useItemEffect.ts","../src/react-menu3/contexts/MenuListItemContext.ts","../src/react-menu3/contexts/ItemSettingsContext.ts","../src/react-menu3/hooks/useItemState.ts","../src/react-menu3/hooks/useMenuChange.ts","../node_modules/react-transition-state/dist/index.es.js","../src/react-menu3/hooks/useMenuState.ts","../src/react-menu3/hooks/useMenuStateAndFocus.ts","../src/react-menu3/components/MenuButton.tsx","../src/react-menu3/positionUtils/getPositionHelpers.ts","../src/react-menu3/positionUtils/positionContextMenu.ts","../src/react-menu3/positionUtils/placeArrowVertical.ts","../src/react-menu3/positionUtils/placeLeftorRight.ts","../src/react-menu3/positionUtils/placeArrowHorizontal.ts","../src/react-menu3/positionUtils/placeToporBottom.ts","../src/react-menu3/positionUtils/positionMenu.ts","../src/react-menu3/contexts/MenuListContext.ts","../src/react-menu3/contexts/SettingsContext.ts","../src/react-menu3/components/MenuList.tsx","../src/utils/util.ts","../src/react-menu3/contexts/EventHandlersContext.ts","../src/react-menu3/components/ControlledMenu.tsx","../src/react-menu3/components/Menu.tsx","../src/react-menu3/components/SubMenu.tsx","../src/react-menu3/contexts/RadioGroupContext.ts","../src/react-menu3/components/MenuItem.tsx","../src/react-menu3/components/FocusableItem.tsx","../src/react-menu3/components/MenuDivider.tsx","../src/react-menu3/components/MenuHeader.tsx","../src/react-menu3/components/MenuGroup.tsx","../src/react-menu3/components/MenuRadioGroup.tsx","../src/contexts/GridContext.tsx","../src/contexts/GridUpdatingContext.tsx","../src/contexts/GridContextProvider.tsx","../src/contexts/GridUpdatingContextProvider.tsx","../src/contexts/GridPopoverContext.tsx","../src/contexts/GridPopoverContextProvider.tsx","../src/contexts/GridSubComponentContext.ts","../node_modules/clsx/dist/clsx.m.js","../src/components/PostSortRowsHook.ts","../src/components/gridHeader/GridHeaderSelect.tsx","../src/components/Grid.tsx","../src/components/GenericCellClass.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/components/GridLoadableCell.tsx","../src/components/GridIcon.tsx","../src/components/gridRender/GridRenderGenericCell.tsx","../src/components/GridCell.tsx","../src/components/ComponentLoadingWrapper.tsx","../src/components/GridPopoverHook.tsx","../src/components/gridRender/GridRenderPopoutMenuCell.tsx","../node_modules/debounce-promise/dist/index.js","../src/components/gridForm/GridFormDropDown.tsx","../src/components/gridForm/GridFormMultiSelect.tsx","../src/components/gridPopoverEdit/GridPopoutEditMultiSelect.ts","../src/components/gridForm/GridFormPopoverMenu.tsx","../src/components/gridPopoverEdit/GridPopoverMenu.tsx","../src/utils/bearing.ts","../src/lui/TextInputFormatted.tsx","../src/components/gridForm/GridFormEditBearing.tsx","../src/components/gridPopoverEdit/GridPopoverEditBearing.ts","../src/components/gridPopoverEdit/GridPopoverEditDropDown.ts","../src/components/gridForm/GridFormMessage.tsx","../src/components/gridPopoverEdit/GridPopoverMessage.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/lui/TextAreaInput.tsx","../src/utils/textValidator.ts","../src/components/gridForm/GridFormTextArea.tsx","../src/components/gridPopoverEdit/GridPopoverTextArea.ts","../src/components/gridForm/GridFormTextInput.tsx","../src/components/gridPopoverEdit/GridPopoverTextInput.ts","../src/components/gridForm/GridFormSubComponentTextInput.tsx","../src/components/gridForm/GridFormSubComponentTextArea.tsx","../src/lui/reactUtils.tsx","../src/lui/timeoutHook.tsx","../src/lui/stateDeferredHook.tsx","../src/lui/ActionButton.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ClassNameProp } from \"../types\";\n\ntype useBemModifiers = Record<string, boolean | string | undefined>;\n\ninterface useBemProps {\n block: string;\n element?: string;\n modifiers?: useBemModifiers;\n className?: ClassNameProp<any>;\n}\n\n// Generate className following BEM methodology: http://getbem.com/naming/\n// Modifier value can be one of the following types: boolean, string, undefined\nexport const useBEM = ({ block, element, modifiers, className }: useBemProps) =>\n useMemo(() => {\n const blockElement = element ? `${block}__${element}` : block;\n\n let classString = blockElement;\n modifiers &&\n Object.keys(modifiers).forEach((name) => {\n const value = modifiers[name];\n if (value) classString += ` ${blockElement}--${value === true ? name : `${name}-${value}`}`;\n });\n\n let expandedClassName = typeof className === \"function\" ? className(modifiers) : className;\n if (typeof expandedClassName === \"string\") {\n expandedClassName = expandedClassName.trim();\n if (expandedClassName) classString += ` ${expandedClassName}`;\n }\n\n return classString;\n }, [block, element, modifiers, className]);\n","import { useMemo, LegacyRef, ForwardedRef } from \"react\";\n\n// Adapted from material-ui\n// https://github.com/mui-org/material-ui/blob/f996027d00e7e4bff3fc040786c1706f9c6c3f82/packages/material-ui-utils/src/useForkRef.ts\n\nconst setRef = <T>(ref: ForwardedRef<T> | undefined, instance: T | null) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref) {\n ref.current = instance;\n }\n};\n\nexport const useCombinedRef = <Instance>(\n refA: ForwardedRef<Instance> | undefined,\n refB: ForwardedRef<Instance> | undefined,\n): LegacyRef<Instance> => {\n return useMemo(() => {\n return (instance: any) => {\n setRef(refA, instance);\n setRef(refB, instance);\n };\n }, [refA, refB]);\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\n// Get around a warning when using useLayoutEffect on the server.\n// https://github.com/reduxjs/react-redux/blob/b48d087d76f666e1c6c5a9713bbec112a1631841/src/utils/useIsomorphicLayoutEffect.js#L12\n// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n// https://github.com/facebook/react/issues/14927#issuecomment-549457471\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n ? useLayoutEffect\n : useEffect;\n\nexport { useIsomorphicLayoutEffect as useLayoutEffect };\n","import { MenuState } from \"../types\";\n\nexport const menuContainerClass = \"szh-menu-container\";\nexport const menuClass = \"szh-menu\";\nexport const menuButtonClass = \"szh-menu-button\";\nexport const menuArrowClass = \"arrow\";\nexport const menuItemClass = \"item\";\nexport const menuDividerClass = \"divider\";\nexport const menuHeaderClass = \"header\";\nexport const menuGroupClass = \"group\";\nexport const subMenuClass = \"submenu\";\nexport const radioGroupClass = \"radio-group\";\n\nexport interface RMEvent {\n value: any;\n syntheticEvent: any;\n checked?: boolean;\n name?: string;\n key?: string;\n}\n\nexport const Keys = Object.freeze({\n ENTER: \"Enter\",\n ESC: \"Escape\",\n SPACE: \" \",\n HOME: \"Home\",\n END: \"End\",\n LEFT: \"ArrowLeft\",\n RIGHT: \"ArrowRight\",\n UP: \"ArrowUp\",\n DOWN: \"ArrowDown\",\n});\n\nexport const HoverActionTypes = Object.freeze({\n RESET: 0,\n SET: 1,\n UNSET: 2,\n INCREASE: 3,\n DECREASE: 4,\n FIRST: 5,\n LAST: 6,\n SET_INDEX: 7,\n});\n\nexport const CloseReason = Object.freeze({\n CLICK: \"click\",\n CANCEL: \"cancel\",\n BLUR: \"blur\",\n SCROLL: \"scroll\",\n});\n\nexport const FocusPositions = Object.freeze({\n FIRST: \"first\",\n LAST: \"last\",\n});\n\nexport const MenuStateMap: Record<string, MenuState> = Object.freeze({\n entering: \"opening\",\n entered: \"open\",\n exiting: \"closing\",\n exited: \"closed\",\n});\n","import { unstable_batchedUpdates } from \"react-dom\";\nimport { MenuState, MenuStateOptions } from \"../types\";\nimport { MenuButtonProps } from \"../components/MenuButton\";\nimport { findIndex } from \"lodash-es\";\n\nexport const isMenuOpen = (state?: MenuState) => !!state && state[0] === \"o\";\nexport const batchedUpdates = unstable_batchedUpdates || ((callback: () => any) => callback());\nexport const values = Object.values || ((obj: { [x: string]: any }) => Object.keys(obj).map((key) => obj[key]));\nexport const floatEqual = (a: number, b: number, diff = 0.0001) => Math.abs(a - b) < diff;\n\nexport type TransitionMap = {\n open?: boolean;\n close?: boolean;\n item?: boolean;\n};\nexport const getTransition = (transition: MenuStateOptions[\"transition\"], name: keyof TransitionMap) =>\n transition === true || !!(transition && transition[name]);\n\nexport function safeCall<T, R>(fn: (arg?: T) => R, arg?: T): R;\nexport function safeCall<T, R>(fn: T, arg: R): T;\nexport function safeCall<T, R>(fn: (arg?: T) => R, arg?: T): T | R {\n return typeof fn === \"function\" ? fn(arg) : fn;\n}\n\nconst internalKey = \"_szhsinMenu\";\nexport const getName = (component: Record<string, any | undefined>) => component[internalKey];\n//export const defineName = <T extends any[]>(name: string, component: (...args: T) => JSX.Element) =>\n// Object.defineProperty(component, internalKey, { value: name });\n\nexport const defineName = (\n name: string,\n component: React.ForwardRefExoticComponent<React.PropsWithoutRef<MenuButtonProps> & React.RefAttributes<unknown>>,\n) => Object.defineProperty(component, internalKey, { value: name });\n\nexport const mergeProps = (target: any, source: any) => {\n source &&\n Object.keys(source).forEach((key) => {\n const targetProp = target[key];\n const sourceProp = source[key];\n if (typeof sourceProp === \"function\" && targetProp) {\n target[key] = (...arg: any[]) => {\n sourceProp(...arg);\n targetProp(...arg);\n };\n } else {\n target[key] = sourceProp;\n }\n });\n\n return target;\n};\n\nexport const parsePadding = (paddingStr: string | undefined) => {\n if (paddingStr == null) return { top: 0, right: 0, bottom: 0, left: 0 };\n\n const padding = paddingStr.trim().split(/\\s+/, 4).map(parseFloat);\n const top = !isNaN(padding[0]) ? padding[0] : 0;\n const right = !isNaN(padding[1]) ? padding[1] : top;\n return {\n top,\n right,\n bottom: !isNaN(padding[2]) ? padding[2] : top,\n left: !isNaN(padding[3]) ? padding[3] : right,\n };\n};\n\n// Adapted from https://github.com/popperjs/popper-core/tree/v2.9.1/src/dom-utils\nexport const getScrollAncestor = (node: Node | null): Element | null => {\n const thisWindow = (node?.ownerDocument ?? document).defaultView ?? window;\n while (node) {\n node = node.parentNode;\n if (!node || node === thisWindow?.document?.body) return null;\n if (node instanceof Element) {\n const { overflow, overflowX, overflowY } = thisWindow.getComputedStyle(node);\n if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) return node;\n }\n }\n return null;\n};\n\nexport function commonProps(isDisabled?: boolean, isHovering?: boolean) {\n return {\n \"aria-disabled\": isDisabled || undefined,\n tabIndex: isHovering ? 0 : -1,\n };\n}\n\nexport const indexOfNode = (nodeList: NodeListOf<Node>, node: Node) => findIndex(nodeList, node);\n","import { createContext } from \"react\";\n\nexport const HoverItemContext = createContext(undefined);\n","import { memo, forwardRef, useContext, useRef, MutableRefObject } from \"react\";\nimport { HoverItemContext } from \"../contexts/HoverItemContext\";\n\nexport interface withHoveringResultProps {\n isHovering?: boolean;\n externalRef?: MutableRefObject<any>;\n menuItemRef?: MutableRefObject<any>;\n}\n\nexport const withHovering = (name: string, WrappedComponent: (...args: any) => JSX.Element): any => {\n const Component = memo(WrappedComponent);\n const WithHovering = forwardRef<any>((props: any, ref) => {\n const menuItemRef = useRef<any>(null);\n return (\n <Component\n {...props}\n menuItemRef={menuItemRef}\n externalRef={ref}\n isHovering={useContext(HoverItemContext) === menuItemRef.current}\n />\n );\n });\n\n WithHovering.displayName = `WithHovering(${name})`;\n\n return WithHovering;\n};\n","import { useState, useCallback, useRef, MutableRefObject } from \"react\";\nimport { HoverActionTypes, indexOfNode } from \"../utils\";\nimport { FocusPosition } from \"../types\";\n\nexport const useItems = (menuRef: MutableRefObject<any>, focusRef: MutableRefObject<any> | undefined) => {\n const [hoverItem, setHoverItem] = useState<any>();\n const stateRef = useRef({\n items: [] as any[],\n hoverIndex: -1,\n sorted: false,\n });\n const mutableState = stateRef.current;\n\n const updateItems = useCallback(\n (item?: any, isMounted?: boolean) => {\n const { items } = mutableState;\n if (!item) {\n mutableState.items = [];\n } else if (isMounted) {\n items.push(item);\n } else {\n const index = items.indexOf(item);\n if (index > -1) {\n items.splice(index, 1);\n if (item.contains(document.activeElement)) {\n focusRef?.current?.focus();\n setHoverItem(undefined);\n }\n }\n }\n mutableState.hoverIndex = -1;\n mutableState.sorted = false;\n },\n [mutableState, focusRef],\n );\n\n const dispatch = useCallback(\n (actionType: number, item: any, nextIndex: FocusPosition) => {\n const { items, hoverIndex } = mutableState;\n const sortItems = () => {\n if (mutableState.sorted) return;\n const orderedNodes = menuRef.current.querySelectorAll(\".szh-menu__item\");\n items.sort((a, b) => indexOfNode(orderedNodes, a) - indexOfNode(orderedNodes, b));\n mutableState.sorted = true;\n };\n\n let index = -1,\n newItem = undefined;\n switch (actionType) {\n case HoverActionTypes.RESET:\n break;\n\n case HoverActionTypes.SET:\n newItem = item;\n break;\n\n case HoverActionTypes.UNSET:\n newItem = (prevItem: any) => (prevItem === item ? undefined : prevItem);\n break;\n\n case HoverActionTypes.FIRST:\n sortItems();\n index = 0;\n newItem = items[index];\n break;\n\n case HoverActionTypes.LAST:\n sortItems();\n index = items.length - 1;\n newItem = items[index];\n break;\n\n case HoverActionTypes.SET_INDEX:\n if (typeof nextIndex !== \"number\") break;\n sortItems();\n index = nextIndex;\n newItem = items[index];\n break;\n\n case HoverActionTypes.INCREASE:\n sortItems();\n index = hoverIndex;\n if (index < 0) index = items.indexOf(item);\n index++;\n if (index >= items.length) index = 0;\n newItem = items[index];\n break;\n\n case HoverActionTypes.DECREASE:\n sortItems();\n index = hoverIndex;\n if (index < 0) index = items.indexOf(item);\n index--;\n if (index < 0) index = items.length - 1;\n newItem = items[index];\n break;\n\n default:\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(`[React-Menu] Unknown hover action type: ${actionType}`);\n }\n\n if (!newItem) index = -1;\n setHoverItem(newItem);\n mutableState.hoverIndex = index;\n },\n [menuRef, mutableState],\n );\n\n return { hoverItem, dispatch, updateItems };\n};\n","import { MutableRefObject } from \"react\";\nimport { useLayoutEffect } from \"./useIsomorphicLayoutEffect\";\n\nexport const useItemEffect = (\n isDisabled: boolean | undefined,\n menuItemRef: MutableRefObject<any> | undefined,\n updateItems: (item: any, isMounted?: boolean) => void,\n) => {\n useLayoutEffect(() => {\n if (!menuItemRef) return;\n if (process.env.NODE_ENV !== \"production\" && !updateItems) {\n throw new Error(\n `[React-Menu] This menu item or submenu should be rendered under a menu: ${menuItemRef.current.outerHTML}`,\n );\n }\n if (isDisabled) return;\n const item = menuItemRef.current;\n updateItems(item, true);\n return () => {\n updateItems(item);\n };\n }, [isDisabled, menuItemRef, updateItems]);\n};\n","import { FocusPosition } from \"../types\";\nimport { createContext } from \"react\";\n\ninterface MenuListItemContextType {\n isParentOpen?: boolean;\n isSubmenuOpen?: boolean;\n dispatch: (actionType: number, item: any, nextIndex: FocusPosition) => void;\n updateItems: (item: any, isMounted?: boolean) => void;\n setOpenSubmenuCount: (fn: (count: number) => number) => void;\n}\n\nexport const MenuListItemContext = createContext<MenuListItemContextType>({\n dispatch: () => {},\n updateItems: () => {},\n setOpenSubmenuCount: () => 0,\n});\n","import { createContext } from \"react\";\n\nexport const ItemSettingsContext = createContext<{ submenuCloseDelay: number; submenuOpenDelay: number }>({\n submenuOpenDelay: 0,\n submenuCloseDelay: 0,\n});\n","import { useRef, useContext, useEffect, FocusEvent, MutableRefObject } from \"react\";\nimport { HoverActionTypes } from \"../utils\";\nimport { useItemEffect } from \"./useItemEffect\";\nimport { MenuListItemContext } from \"../contexts/MenuListItemContext\";\nimport { ItemSettingsContext } from \"../contexts/ItemSettingsContext\";\n\n// This hook includes some common stateful logic in MenuItem and FocusableItem\nexport const useItemState = (\n menuItemRef: MutableRefObject<any> | undefined,\n focusRef: MutableRefObject<any> | undefined,\n isHovering?: boolean,\n isDisabled?: boolean,\n) => {\n const { submenuCloseDelay } = useContext(ItemSettingsContext);\n const { isParentOpen, isSubmenuOpen, dispatch, updateItems } = useContext(MenuListItemContext);\n const timeoutId = useRef<ReturnType<typeof setTimeout>>();\n\n const setHover = () => {\n !isHovering && !isDisabled && dispatch(HoverActionTypes.SET, menuItemRef?.current, 0);\n };\n\n const unsetHover = () => {\n !isDisabled && dispatch(HoverActionTypes.UNSET, menuItemRef?.current, 0);\n };\n\n const onBlur = (e: FocusEvent) => {\n // Focus has moved out of the entire item\n // It handles situation such as clicking on a sibling disabled menu item\n if (isHovering && !e.currentTarget.contains(e.relatedTarget)) unsetHover();\n };\n\n const onPointerMove = () => {\n if (isSubmenuOpen) {\n if (!timeoutId.current)\n timeoutId.current = setTimeout(() => {\n timeoutId.current = undefined;\n setHover();\n }, submenuCloseDelay);\n } else {\n setHover();\n }\n };\n\n const onPointerLeave = (_: PointerEvent, keepHover: boolean) => {\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n timeoutId.current = undefined;\n }\n\n !keepHover && unsetHover();\n };\n\n useItemEffect(isDisabled, menuItemRef, updateItems);\n useEffect(() => () => clearTimeout(timeoutId.current), []);\n useEffect(() => {\n // Don't set focus when parent menu is closed, otherwise focus will be lost\n // and onBlur event will be fired with relatedTarget setting as null.\n if (isHovering && isParentOpen) {\n focusRef?.current && focusRef.current.focus();\n }\n }, [focusRef, isHovering, isParentOpen]);\n\n return {\n setHover,\n onBlur,\n onPointerMove,\n onPointerLeave,\n };\n};\n","import { useRef, useEffect } from \"react\";\nimport { safeCall } from \"../utils\";\nimport { EventHandler, MenuChangeEvent } from \"../types\";\n\nexport const useMenuChange = (onMenuChange?: EventHandler<MenuChangeEvent>, isOpen?: boolean) => {\n const prevOpen = useRef(isOpen);\n\n useEffect(() => {\n if (onMenuChange && prevOpen.current !== isOpen) safeCall(onMenuChange, { open: !!isOpen });\n prevOpen.current = isOpen;\n }, [onMenuChange, isOpen]);\n};\n","import { useState, useRef, useCallback, useEffect } from 'react';\n\nvar PRE_ENTER = 0;\nvar ENTERING = 1;\nvar ENTERED = 2;\nvar PRE_EXIT = 3;\nvar EXITING = 4;\nvar EXITED = 5;\nvar UNMOUNTED = 6;\nvar STATES = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];\n\nvar startOrEnd = function startOrEnd(unmounted) {\n return unmounted ? UNMOUNTED : EXITED;\n};\n\nvar updateState = function updateState(state, setState, latestState, timeoutId, onChange) {\n clearTimeout(timeoutId.current);\n setState(state);\n latestState.current = state;\n onChange && onChange({\n state: STATES[state]\n });\n};\n\nvar useTransition = function useTransition(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$enter = _ref.enter,\n enter = _ref$enter === void 0 ? true : _ref$enter,\n _ref$exit = _ref.exit,\n exit = _ref$exit === void 0 ? true : _ref$exit,\n preEnter = _ref.preEnter,\n preExit = _ref.preExit,\n timeout = _ref.timeout,\n initialEntered = _ref.initialEntered,\n mountOnEnter = _ref.mountOnEnter,\n unmountOnExit = _ref.unmountOnExit,\n onChange = _ref.onChange;\n\n var _useState = useState(initialEntered ? ENTERED : startOrEnd(mountOnEnter)),\n state = _useState[0],\n setState = _useState[1];\n\n var latestState = useRef(state);\n var timeoutId = useRef();\n var enterTimeout, exitTimeout;\n\n if (typeof timeout === 'object') {\n enterTimeout = timeout.enter;\n exitTimeout = timeout.exit;\n } else {\n enterTimeout = exitTimeout = timeout;\n }\n\n var endTransition = useCallback(function () {\n var newState;\n\n switch (latestState.current) {\n case ENTERING:\n case PRE_ENTER:\n newState = ENTERED;\n break;\n\n case EXITING:\n case PRE_EXIT:\n newState = startOrEnd(unmountOnExit);\n break;\n }\n\n if (newState !== undefined) {\n updateState(newState, setState, latestState, timeoutId, onChange);\n }\n }, [onChange, unmountOnExit]);\n var toggle = useCallback(function (toEnter) {\n var transitState = function transitState(newState) {\n updateState(newState, setState, latestState, timeoutId, onChange);\n\n switch (newState) {\n case ENTERING:\n if (enterTimeout >= 0) timeoutId.current = setTimeout(endTransition, enterTimeout);\n break;\n\n case EXITING:\n if (exitTimeout >= 0) timeoutId.current = setTimeout(endTransition, exitTimeout);\n break;\n\n case PRE_ENTER:\n case PRE_EXIT:\n timeoutId.current = setTimeout(function () {\n return transitState(newState + 1);\n }, 0);\n break;\n }\n };\n\n var enterStage = latestState.current <= ENTERED;\n if (typeof toEnter !== 'boolean') toEnter = !enterStage;\n\n if (toEnter) {\n if (!enterStage) {\n transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);\n }\n } else {\n if (enterStage) {\n transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));\n }\n }\n }, [endTransition, onChange, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);\n useEffect(function () {\n return function () {\n return clearTimeout(timeoutId.current);\n };\n }, []);\n return [STATES[state], toggle, endTransition];\n};\n\nexport { useTransition as default, useTransition };\n","import { useTransition } from \"react-transition-state\";\nimport { MenuStateMap, getTransition } from \"../utils\";\nimport { MenuState, MenuStateOptions } from \"../types\";\n\n/**\n * A custom Hook which helps manage the states of `ControlledMenu`.\n */\nexport const useMenuState = (\n props?: MenuStateOptions,\n): [\n {\n /**\n * Menu state which should be forwarded to `ControlledMenu`.\n */\n state?: MenuState;\n /**\n * Stop transition animation. This function value should be forwarded to `ControlledMenu`.\n */\n endTransition: () => void;\n },\n\n /**\n * Open or close menu.\n *\n * - If no parameter is supplied, this function will toggle state between open and close phases.\n * - You can set a boolean parameter to explicitly switch into one of the two phases.\n */\n (open?: boolean) => void,\n] => {\n const { initialMounted, unmountOnClose, transition, transitionTimeout } = props ?? {\n transition: false,\n };\n const [state, toggleMenu, endTransition] = useTransition({\n mountOnEnter: !initialMounted,\n unmountOnExit: unmountOnClose,\n timeout: transitionTimeout ?? 500,\n enter: getTransition(transition, \"open\"),\n exit: getTransition(transition, \"close\"),\n });\n\n return [{ state: MenuStateMap[state], endTransition }, toggleMenu];\n};\n","import { useState } from \"react\";\nimport { useMenuState } from \"./useMenuState\";\nimport { ControlledMenuProps, FocusPosition, MenuStateOptions } from \"../types\";\n\nexport const useMenuStateAndFocus = (\n options: MenuStateOptions,\n): [any, (open?: boolean) => void, (position?: FocusPosition, alwaysUpdate?: boolean) => void] => {\n const [menuProps, toggleMenu] = useMenuState(options);\n const [menuItemFocus, setMenuItemFocus] = useState<ControlledMenuProps[\"menuItemFocus\"]>();\n\n const openMenu = (position?: FocusPosition, alwaysUpdate?: boolean) => {\n setMenuItemFocus({ position, alwaysUpdate });\n toggleMenu(true);\n };\n\n return [{ menuItemFocus, ...menuProps }, toggleMenu, openMenu];\n};\n","import { forwardRef, LegacyRef, ReactNode, useMemo } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuButtonClass } from \"../utils\";\nimport { BaseProps, MenuButtonModifiers } from \"../types\";\n\nexport interface MenuButtonProps extends BaseProps<MenuButtonModifiers> {\n disabled?: boolean;\n children?: ReactNode;\n\n // Seems to be an internal thing, wasn't in original code\n isOpen?: boolean;\n}\n\nexport const MenuButton = forwardRef(function MenuButton(\n { className, isOpen, disabled, children, ...restProps }: MenuButtonProps,\n ref: LegacyRef<HTMLButtonElement>,\n) {\n const modifiers = useMemo(() => ({ open: isOpen }), [isOpen]);\n\n return (\n <button\n aria-haspopup\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n type=\"button\"\n disabled={disabled}\n {...restProps}\n ref={ref}\n className={useBEM({ block: menuButtonClass, modifiers, className })}\n >\n {children}\n </button>\n );\n});\n","import { parsePadding } from \"../utils\";\nimport { MutableRefObject } from \"react\";\n\nexport const getPositionHelpers = (\n containerRef: MutableRefObject<HTMLElement | undefined>,\n menuRef: MutableRefObject<HTMLElement>,\n menuScroll: Window | Element,\n boundingBoxPadding: string | undefined,\n) => {\n const menuRect = menuRef.current.getBoundingClientRect();\n const thisWindow = containerRef.current?.ownerDocument.defaultView ?? window;\n const containerRect = (containerRef.current ?? thisWindow.document.body).getBoundingClientRect();\n\n const boundingRect =\n menuScroll === window || menuScroll === thisWindow\n ? {\n left: 0,\n top: 0,\n right: thisWindow.document.documentElement.clientWidth,\n bottom: thisWindow.innerHeight,\n }\n : (menuScroll as Element).getBoundingClientRect();\n const padding = parsePadding(boundingBoxPadding);\n\n // For left and top, overflows are negative value.\n // For right and bottom, overflows are positive value.\n const getLeftOverflow = (x: number) => x + containerRect.left - boundingRect.left - padding.left;\n const getRightOverflow = (x: number) => x + containerRect.left + menuRect.width - boundingRect.right + padding.right;\n const getTopOverflow = (y: number) => y + containerRect.top - boundingRect.top - padding.top;\n const getBottomOverflow = (y: number) =>\n y + containerRect.top + menuRect.height - boundingRect.bottom + padding.bottom;\n\n const confineHorizontally = (x: number) => {\n // If menu overflows to the left side, adjust x to have the menu contained within the viewport\n // and there is no need to check the right side;\n // if it doesn't overflow to the left, then check the right side\n let leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) {\n x -= leftOverflow;\n } else {\n const rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n x -= rightOverflow;\n // Check again to make sure menu doesn't overflow to the left\n // because it may go off-screen and cannot be scrolled into view.\n leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) x -= leftOverflow;\n }\n }\n\n return x;\n };\n\n const confineVertically = (y: number) => {\n // Similar logic to confineHorizontally above\n let topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n y -= topOverflow;\n } else {\n const bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n // Check again to make sure menu doesn't overflow to the bottom\n // because it may go off screen and cannot be scroll into view.\n topOverflow = getTopOverflow(y);\n if (topOverflow < 0) y -= topOverflow;\n }\n }\n\n return y;\n };\n\n return {\n menuRect,\n containerRect,\n getLeftOverflow,\n getRightOverflow,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n };\n};\n","import { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MenuDirection } from \"../types\";\n\nexport const positionContextMenu = ({\n positionHelpers,\n anchorPoint,\n}: {\n positionHelpers: ReturnType<typeof getPositionHelpers>;\n anchorPoint: { x: number; y: number };\n}): {\n x: number;\n y: number;\n computedDirection: MenuDirection;\n} => {\n const {\n menuRect,\n containerRect,\n getLeftOverflow,\n getRightOverflow,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n } = positionHelpers;\n\n let x, y;\n\n // position the menu with cursor pointing to its top-left corner\n x = anchorPoint.x - containerRect.left;\n y = anchorPoint.y - containerRect.top;\n\n // If menu overflows to the right of viewport,\n // try to reposition it on the left side of cursor.\n // If menu overflows to the left of viewport after repositioning,\n // choose a side which has less overflow\n // and adjust x to have it contained within the viewport.\n const rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n const adjustedX = x - menuRect.width;\n const leftOverflow = getLeftOverflow(adjustedX);\n if (leftOverflow >= 0 || -leftOverflow < rightOverflow) {\n x = adjustedX;\n }\n x = confineHorizontally(x);\n }\n\n // Similar logic to the left and right side above.\n let computedDirection: MenuDirection = \"bottom\";\n const bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n const adjustedY = y - menuRect.height;\n const topOverflow = getTopOverflow(adjustedY);\n if (topOverflow >= 0 || -topOverflow < bottomOverflow) {\n y = adjustedY;\n computedDirection = \"top\";\n }\n y = confineVertically(y);\n }\n\n return { x, y, computedDirection };\n};\n","import { MutableRefObject } from \"react\";\n\nexport const placeArrowVertical = (p: {\n arrowRef: MutableRefObject<HTMLElement | null>;\n menuY: number;\n anchorRect: DOMRect;\n containerRect: DOMRect;\n menuRect: DOMRect;\n}) => {\n let y = p.anchorRect.top - p.containerRect.top - p.menuY + p.anchorRect.height / 2;\n const offset = p.arrowRef.current ? p.arrowRef.current.offsetHeight * 1.25 : 0;\n y = Math.max(offset, y);\n y = Math.min(y, p.menuRect.height - offset);\n return y;\n};\n","import { placeArrowVertical } from \"./placeArrowVertical\";\nimport { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MutableRefObject } from \"react\";\nimport { MenuDirection } from \"../types\";\n\nexport interface placeLeftorRightParams {\n anchorRect: DOMRect;\n placeLeftorRightY: number;\n placeLeftX: number;\n placeRightX: number;\n arrowRef: MutableRefObject<HTMLElement | null>;\n arrow?: boolean;\n direction: MenuDirection;\n position: \"auto\" | \"anchor\" | \"initial\";\n}\n\nexport const placeLeftorRight = (\n props: ReturnType<typeof getPositionHelpers> & placeLeftorRightParams,\n): { arrowY: number | undefined; x: number; y: number; computedDirection: MenuDirection } => {\n const {\n anchorRect,\n containerRect,\n menuRect,\n placeLeftorRightY,\n placeLeftX,\n placeRightX,\n getLeftOverflow,\n getRightOverflow,\n confineHorizontally,\n confineVertically,\n arrowRef,\n arrow,\n direction,\n position,\n } = props;\n let computedDirection = direction;\n let y = placeLeftorRightY;\n if (position !== \"initial\") {\n y = confineVertically(y);\n if (position === \"anchor\") {\n // restrict menu to the edge of anchor element\n y = Math.min(y, anchorRect.bottom - containerRect.top);\n y = Math.max(y, anchorRect.top - containerRect.top - menuRect.height);\n }\n }\n\n let x, leftOverflow, rightOverflow;\n if (computedDirection === \"left\") {\n x = placeLeftX;\n\n if (position !== \"initial\") {\n // if menu overflows to the left,\n // try to reposition it to the right of the anchor.\n leftOverflow = getLeftOverflow(x);\n if (leftOverflow < 0) {\n // if menu overflows to the right after repositioning,\n // choose a side which has less overflow\n rightOverflow = getRightOverflow(placeRightX);\n if (rightOverflow <= 0 || -leftOverflow > rightOverflow) {\n x = placeRightX;\n computedDirection = \"right\";\n }\n }\n }\n } else {\n // Opposite logic to the 'left' direction above\n x = placeRightX;\n\n if (position !== \"initial\") {\n rightOverflow = getRightOverflow(x);\n if (rightOverflow > 0) {\n leftOverflow = getLeftOverflow(placeLeftX);\n if (leftOverflow >= 0 || -leftOverflow < rightOverflow) {\n x = placeLeftX;\n computedDirection = \"left\";\n }\n }\n }\n }\n\n if (position === \"auto\") x = confineHorizontally(x);\n const arrowY = arrow\n ? placeArrowVertical({\n menuY: y,\n arrowRef,\n anchorRect,\n containerRect,\n menuRect,\n })\n : undefined;\n return { arrowY, x, y, computedDirection };\n};\n","import { MutableRefObject } from \"react\";\n\nexport const placeArrowHorizontal = (p: {\n arrowRef: MutableRefObject<HTMLElement | null>;\n menuX: number;\n anchorRect: DOMRect;\n containerRect: DOMRect;\n menuRect: DOMRect;\n}) => {\n let x = p.anchorRect.left - p.containerRect.left - p.menuX + p.anchorRect.width / 2;\n const offset = p.arrowRef.current ? p.arrowRef.current.offsetWidth * 1.25 : 0;\n x = Math.max(offset, x);\n x = Math.min(x, p.menuRect.width - offset);\n return x;\n};\n","import { placeArrowHorizontal } from \"./placeArrowHorizontal\";\nimport { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MutableRefObject } from \"react\";\nimport { MenuDirection } from \"../types\";\n\nexport interface placeToporBottomParams {\n anchorRect: DOMRect;\n placeToporBottomX: number;\n placeTopY: number;\n placeBottomY: number;\n arrowRef: MutableRefObject<HTMLElement | null>;\n arrow?: boolean;\n direction: \"left\" | \"right\" | \"top\" | \"bottom\";\n position: \"auto\" | \"anchor\" | \"initial\";\n}\n\nexport const placeToporBottom = (\n props: ReturnType<typeof getPositionHelpers> & placeToporBottomParams,\n): { arrowX?: number | undefined; x: number; y: number; computedDirection: MenuDirection } => {\n const {\n anchorRect,\n containerRect,\n menuRect,\n placeToporBottomX,\n placeTopY,\n placeBottomY,\n getTopOverflow,\n getBottomOverflow,\n confineHorizontally,\n confineVertically,\n arrowRef,\n arrow,\n direction,\n position,\n } = props;\n // make sure invalid direction is treated as 'bottom'\n let computedDirection: MenuDirection = direction === \"top\" ? \"top\" : \"bottom\";\n let x = placeToporBottomX;\n if (position !== \"initial\") {\n x = confineHorizontally(x);\n if (position === \"anchor\") {\n // restrict menu to the edge of anchor element\n x = Math.min(x, anchorRect.right - containerRect.left);\n x = Math.max(x, anchorRect.left - containerRect.left - menuRect.width);\n }\n }\n\n let y, topOverflow, bottomOverflow;\n if (computedDirection === \"top\") {\n y = placeTopY;\n\n if (position !== \"initial\") {\n // if menu overflows to the top,\n // try to reposition it to the bottom of the anchor.\n topOverflow = getTopOverflow(y);\n if (topOverflow < 0) {\n // if menu overflows to the bottom after repositioning,\n // choose a side which has less overflow\n bottomOverflow = getBottomOverflow(placeBottomY);\n if (bottomOverflow <= 0 || -topOverflow > bottomOverflow) {\n y = placeBottomY;\n computedDirection = \"bottom\";\n }\n }\n }\n } else {\n // Opposite logic to the 'top' direction above\n y = placeBottomY;\n\n if (position !== \"initial\") {\n bottomOverflow = getBottomOverflow(y);\n if (bottomOverflow > 0) {\n topOverflow = getTopOverflow(placeTopY);\n if (topOverflow >= 0 || -topOverflow < bottomOverflow) {\n y = placeTopY;\n computedDirection = \"top\";\n }\n }\n }\n }\n\n if (position === \"auto\") y = confineVertically(y);\n const arrowX = arrow\n ? placeArrowHorizontal({\n menuX: x,\n arrowRef,\n anchorRect,\n containerRect,\n menuRect,\n })\n : undefined;\n return { arrowX, x, y, computedDirection };\n};\n","import { placeLeftorRight } from \"./placeLeftorRight\";\nimport { placeToporBottom } from \"./placeToporBottom\";\nimport { MutableRefObject } from \"react\";\nimport { getPositionHelpers } from \"./getPositionHelpers\";\nimport { MenuDirection } from \"../types\";\n\ninterface positionMenuProps {\n offsetX: number;\n offsetY: number;\n arrowRef: MutableRefObject<HTMLDivElement | null>;\n anchorRef: MutableRefObject<Element | null>;\n arrow?: boolean;\n direction: MenuDirection;\n position: \"auto\" | \"anchor\" | \"initial\";\n align: \"start\" | \"center\" | \"end\";\n positionHelpers: ReturnType<typeof getPositionHelpers>;\n}\n\nexport const positionMenu = (props: positionMenuProps) => {\n const { arrow, align, direction, offsetX, offsetY, position, anchorRef, arrowRef, positionHelpers } = props;\n const { menuRect, containerRect } = positionHelpers;\n\n let horizontalOffset = offsetX;\n let verticalOffset = offsetY;\n if (arrow && arrowRef.current) {\n if (direction === \"left\" || direction === \"right\") {\n horizontalOffset += arrowRef.current.offsetWidth;\n } else {\n verticalOffset += arrowRef.current.offsetHeight;\n }\n }\n\n const anchorRect = anchorRef.current\n ? anchorRef.current.getBoundingClientRect()\n : ({ left: 0, right: 0, top: 200, bottom: 200, width: 200, height: 200 } as DOMRect);\n const placeLeftX = anchorRect.left - containerRect.left - menuRect.width - horizontalOffset;\n const placeRightX = anchorRect.right - containerRect.left + horizontalOffset;\n const placeTopY = anchorRect.top - containerRect.top - menuRect.height - verticalOffset;\n const placeBottomY = anchorRect.bottom - containerRect.top + verticalOffset;\n\n let placeToporBottomX, placeLeftorRightY;\n if (align === \"end\") {\n placeToporBottomX = anchorRect.right - containerRect.left - menuRect.width;\n placeLeftorRightY = anchorRect.bottom - containerRect.top - menuRect.height;\n } else if (align === \"center\") {\n placeToporBottomX = anchorRect.left - containerRect.left - (menuRect.width - anchorRect.width) / 2;\n placeLeftorRightY = anchorRect.top - containerRect.top - (menuRect.height - anchorRect.height) / 2;\n } else {\n placeToporBottomX = anchorRect.left - containerRect.left;\n placeLeftorRightY = anchorRect.top - containerRect.top;\n }\n placeToporBottomX += horizontalOffset;\n placeLeftorRightY += verticalOffset;\n\n const options = {\n ...positionHelpers,\n anchorRect,\n placeLeftX,\n placeRightX,\n placeLeftorRightY,\n placeTopY,\n placeBottomY,\n placeToporBottomX,\n arrowRef,\n arrow,\n direction,\n position,\n };\n\n switch (direction) {\n case \"left\":\n case \"right\":\n return placeLeftorRight(options);\n\n case \"top\":\n case \"bottom\":\n default:\n return placeToporBottom(options);\n }\n};\n","import { createContext, MutableRefObject } from \"react\";\nimport { MenuDirection, MenuOverflow } from \"../types\";\n\nexport const MenuListContext = createContext<{\n overflow?: MenuOverflow;\n overflowAmt?: number;\n parentMenuRef?: MutableRefObject<any>;\n parentDir?: MenuDirection;\n reposSubmenu?: boolean;\n}>({});\n","import { createContext, MutableRefObject, RefObject } from \"react\";\nimport { ControlledMenuProps, MenuReposition, MenuViewScroll, RectElement, TransitionFieldType } from \"../types\";\n\ninterface SettingsContextType extends ControlledMenuProps {\n rootMenuRef?: MutableRefObject<any>;\n rootAnchorRef?: MutableRefObject<any>;\n scrollNodesRef: MutableRefObject<{ anchors?: Element[]; menu?: any }>;\n\n initialMounted?: boolean;\n unmountOnClose?: boolean;\n transition?: TransitionFieldType;\n transitionTimeout?: number;\n boundingBoxRef?: RefObject<Element | RectElement>;\n boundingBoxPadding?: string;\n reposition?: MenuReposition;\n viewScroll?: MenuViewScroll;\n}\n\n// FIXME hacking a default context in here is probably bad, but the context is mess\nexport const SettingsContext = createContext<SettingsContextType>({} as SettingsContextType);\n","import { useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useBEM, useCombinedRef, useItems, useLayoutEffect } from \"../hooks\";\nimport { getPositionHelpers, positionContextMenu, positionMenu } from \"../positionUtils\";\nimport {\n batchedUpdates,\n CloseReason,\n commonProps,\n floatEqual,\n FocusPositions,\n getScrollAncestor,\n getTransition,\n HoverActionTypes,\n isMenuOpen,\n Keys,\n menuArrowClass,\n menuClass,\n mergeProps,\n safeCall,\n} from \"../utils\";\nimport { ControlledMenuProps, MenuDirection } from \"../types\";\nimport { MenuListItemContext } from \"../contexts/MenuListItemContext\";\nimport { HoverItemContext } from \"../contexts/HoverItemContext\";\nimport { MenuListContext } from \"../contexts/MenuListContext\";\nimport { SettingsContext } from \"../contexts/SettingsContext\";\nimport { debounce } from \"lodash-es\";\n\nexport const MenuList = ({\n ariaLabel,\n menuClassName,\n menuStyle,\n arrowClassName,\n arrowStyle,\n anchorPoint,\n anchorRef,\n containerRef,\n externalRef,\n parentScrollingRef,\n arrow,\n align = \"start\",\n direction = \"bottom\",\n position = \"auto\",\n overflow = \"visible\",\n setDownOverflow,\n repositionFlag,\n captureFocus = true,\n state,\n endTransition,\n isDisabled,\n menuItemFocus,\n dontShrinkIfDirectionIsTop,\n offsetX = 0,\n offsetY = 0,\n children,\n onClose,\n ...restProps\n}: ControlledMenuProps) => {\n const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });\n const [arrowPosition, setArrowPosition] = useState({ x: 0, y: 0 });\n const [overflowData, setOverflowData] = useState<{ height: number; overflowAmt: number | undefined }>();\n const [expandedDirection, setExpandedDirection] = useState(direction);\n const [openSubmenuCount, setOpenSubmenuCount] = useState(0);\n const [reposSubmenu, forceReposSubmenu] = useReducer((c) => c + 1, 1);\n const {\n transition,\n boundingBoxRef,\n boundingBoxPadding,\n rootMenuRef,\n rootAnchorRef,\n scrollNodesRef,\n reposition,\n viewScroll,\n } = useContext(SettingsContext);\n const reposFlag = useContext(MenuListContext).reposSubmenu || repositionFlag;\n const menuRef = useRef<HTMLUListElement>({} as HTMLUListElement);\n const focusRef = useRef<HTMLDivElement>(null);\n const arrowRef = useRef<HTMLDivElement>(null);\n const prevOpen = useRef(false);\n const latestWindowSize = useRef({ width: 0, height: 0 });\n const latestMenuSize = useRef({ width: 0, height: 0 });\n const latestHandlePosition = useRef(() => {});\n const { hoverItem, dispatch, updateItems } = useItems(menuRef, focusRef);\n\n const isOpen = isMenuOpen(state);\n const openTransition = getTransition(transition, \"open\");\n const closeTransition = getTransition(transition, \"close\");\n const scrollNodes = scrollNodesRef.current;\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n const elementTarget = e.target instanceof HTMLElement ? (e.target as HTMLElement) : null;\n const isTextInputTarget =\n elementTarget &&\n (elementTarget.nodeName === \"TEXTAREA\" ||\n (elementTarget.nodeName === \"INPUT\" && elementTarget.getAttribute(\"type\") === \"text\"));\n switch (e.key) {\n case Keys.HOME:\n // Don't eat home/end events on inputs\n if (isTextInputTarget) return;\n dispatch(HoverActionTypes.FIRST, null, 0);\n break;\n\n case Keys.END:\n // Don't eat home/end events on inputs\n if (isTextInputTarget) return;\n dispatch(HoverActionTypes.LAST, null, 0);\n break;\n\n case Keys.UP:\n dispatch(HoverActionTypes.DECREASE, hoverItem, 0);\n break;\n\n case Keys.DOWN:\n dispatch(HoverActionTypes.INCREASE, hoverItem, 0);\n break;\n\n // prevent browser from scrolling the page when SPACE is pressed\n case Keys.SPACE:\n // Don't preventDefault on children of FocusableItem\n if (elementTarget && elementTarget.className.includes(menuClass)) {\n e.preventDefault();\n }\n return;\n\n default:\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n };\n\n const onAnimationEnd = () => {\n if (state === \"closing\") {\n setOverflowData(undefined); // reset overflowData after closing\n }\n\n endTransition && safeCall(endTransition);\n };\n\n const handlePosition = useCallback(\n (noOverflowCheck?: boolean) => {\n if (!containerRef?.current) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n '[React-Menu] Menu cannot be positioned properly as container ref is null. If you need to initialise `state` prop to \"open\" for ControlledMenu, please see this solution: https://codesandbox.io/s/initial-open-sp10wn',\n );\n }\n return;\n }\n\n if (!scrollNodes.menu) {\n scrollNodes.menu =\n (boundingBoxRef\n ? boundingBoxRef.current // user explicitly sets boundingBoxRef\n : getScrollAncestor(rootMenuRef?.current)) || window; // try to discover bounding box automatically\n }\n\n const positionHelpers = getPositionHelpers(containerRef, menuRef, scrollNodes.menu, boundingBoxPadding);\n const { menuRect } = positionHelpers;\n let results: { computedDirection: MenuDirection; arrowX?: number; arrowY?: number; x: number; y: number } = {\n computedDirection: \"bottom\",\n x: 0,\n y: 0,\n };\n if (anchorPoint) {\n results = positionContextMenu({ positionHelpers, anchorPoint });\n } else if (anchorRef) {\n results = positionMenu({\n arrow,\n align,\n direction,\n offsetX,\n offsetY,\n position,\n anchorRef,\n arrowRef,\n positionHelpers,\n });\n }\n let { y } = results;\n const { x, arrowX, arrowY, computedDirection } = results;\n let menuHeight = menuRect.height;\n\n if (!noOverflowCheck && overflow !== \"visible\") {\n const { getTopOverflow, getBottomOverflow } = positionHelpers;\n\n let height: number | undefined, overflowAmt: number | undefined;\n const prevHeight = latestMenuSize.current.height;\n const bottomOverflow = getBottomOverflow(y);\n // When bottomOverflow is 0, menu is on the bottom edge of viewport\n // This might be the result of a previous maxHeight set on the menu.\n // In this situation, we need to still apply a new maxHeight.\n // Same reason for the top side\n if (bottomOverflow > 0 || (floatEqual(bottomOverflow, 0) && floatEqual(menuHeight, prevHeight))) {\n height = menuHeight - bottomOverflow;\n overflowAmt = bottomOverflow;\n } else {\n const topOverflow = getTopOverflow(y);\n if (topOverflow < 0 || (floatEqual(topOverflow, 0) && floatEqual(menuHeight, prevHeight))) {\n height = menuHeight + topOverflow;\n overflowAmt = 0 - topOverflow; // avoid getting -0\n if (height >= 0) y -= topOverflow;\n }\n }\n\n if (height != null && height >= 0) {\n // To avoid triggering reposition in the next ResizeObserver callback\n menuHeight = height;\n setOverflowData({ height, overflowAmt });\n } else {\n setOverflowData(undefined);\n }\n }\n\n if (arrow) setArrowPosition({ x: arrowX ?? 0, y: arrowY ?? 0 });\n setMenuPosition({ x, y });\n setExpandedDirection(computedDirection);\n latestMenuSize.current = { width: menuRect.width, height: menuHeight };\n },\n [\n arrow,\n align,\n boundingBoxPadding,\n direction,\n offsetX,\n offsetY,\n position,\n overflow,\n anchorPoint,\n anchorRef,\n containerRef,\n boundingBoxRef,\n rootMenuRef,\n scrollNodes,\n ],\n );\n\n useLayoutEffect(() => {\n if (isOpen) {\n handlePosition();\n // Reposition submenu whenever deps(except isOpen) have changed\n if (prevOpen.current) forceReposSubmenu();\n }\n prevOpen.current = isOpen;\n latestHandlePosition.current = handlePosition;\n }, [isOpen, handlePosition, /* effect dep */ reposFlag]);\n\n useLayoutEffect(() => {\n if (overflowData && !setDownOverflow) menuRef.current.scrollTop = 0;\n }, [overflowData, setDownOverflow]);\n\n useLayoutEffect(() => updateItems, [updateItems]);\n\n useEffect(() => {\n let { menu: menuScroll } = scrollNodes;\n if (!isOpen || !menuScroll) return;\n\n menuScroll = menuScroll.addEventListener ? menuScroll : window;\n if (!scrollNodes.anchors) {\n scrollNodes.anchors = [];\n let anchorScroll = getScrollAncestor(rootAnchorRef && rootAnchorRef.current);\n while (anchorScroll && anchorScroll !== menuScroll) {\n scrollNodes.anchors.push(anchorScroll);\n anchorScroll = getScrollAncestor(anchorScroll);\n }\n }\n\n let scroll = viewScroll;\n if (scrollNodes.anchors.length && scroll === \"initial\") scroll = \"auto\";\n if (scroll === \"initial\") return;\n\n const handleScroll = () => {\n if (scroll === \"auto\") {\n batchedUpdates(() => handlePosition(true));\n } else {\n safeCall(onClose, { reason: CloseReason.SCROLL });\n }\n };\n\n const scrollObservers = scrollNodes.anchors.concat(viewScroll !== \"initial\" ? menuScroll : []);\n scrollObservers.forEach((o: any) => o.addEventListener(\"scroll\", handleScroll));\n return () => scrollObservers.forEach((o) => o.removeEventListener(\"scroll\", handleScroll));\n }, [rootAnchorRef, scrollNodes, isOpen, onClose, viewScroll, handlePosition]);\n\n const hasOverflow = !!overflowData && overflowData.overflowAmt != null && overflowData.overflowAmt > 0;\n useEffect(() => {\n if (hasOverflow || !isOpen || !parentScrollingRef) return;\n\n const handleScroll = () => batchedUpdates(handlePosition);\n const parentScroll = parentScrollingRef.current;\n parentScroll.addEventListener(\"scroll\", handleScroll);\n return () => parentScroll.removeEventListener(\"scroll\", handleScroll);\n }, [isOpen, hasOverflow, parentScrollingRef, handlePosition]);\n\n useEffect(() => {\n if (typeof ResizeObserver !== \"function\" || reposition === \"initial\") return;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { borderBoxSize, target } = entry;\n let width, height;\n if (borderBoxSize) {\n const { inlineSize, blockSize } = borderBoxSize[0] || borderBoxSize;\n width = inlineSize;\n height = blockSize;\n } else {\n const borderRect = target.getBoundingClientRect();\n width = borderRect.width;\n height = borderRect.height;\n }\n\n if (width === 0 || height === 0) return;\n if (floatEqual(width, latestMenuSize.current.width, 1) && floatEqual(height, latestMenuSize.current.height, 1))\n return;\n flushSync(() => {\n latestHandlePosition.current();\n forceReposSubmenu();\n });\n });\n\n const observeTarget = menuRef.current;\n resizeObserver.observe(observeTarget, { box: \"border-box\" });\n return () => resizeObserver.unobserve(observeTarget);\n }, [reposition]);\n\n // Matt added window resize observer\n useEffect(() => {\n if (typeof ResizeObserver !== \"function\" || reposition === \"initial\") return;\n\n const callback = debounce(() => {\n const { width, height } = menuRef.current.ownerDocument.body.getBoundingClientRect();\n if (width === 0 || height === 0) return;\n if (\n floatEqual(width, latestWindowSize.current.width, 1) &&\n floatEqual(height, latestWindowSize.current.height, 1)\n ) {\n return;\n }\n latestWindowSize.current = { width, height };\n flushSync(() => {\n latestHandlePosition.current();\n forceReposSubmenu();\n });\n }, 250);\n\n const resizeObserver = new ResizeObserver(callback);\n\n const observeTarget = menuRef.current.ownerDocument.body;\n resizeObserver.observe(observeTarget, { box: \"border-box\" });\n return () => {\n callback.cancel();\n resizeObserver.unobserve(observeTarget);\n };\n }, [reposition]);\n\n useEffect(() => {\n if (!isOpen) {\n dispatch(HoverActionTypes.RESET, undefined, 0);\n if (!closeTransition) setOverflowData(undefined);\n return () => {};\n }\n\n const { position, alwaysUpdate } = menuItemFocus || {};\n const setItemFocus = () => {\n if (position === FocusPositions.FIRST) {\n dispatch(HoverActionTypes.FIRST, undefined, 0);\n } else if (position === FocusPositions.LAST) {\n dispatch(HoverActionTypes.LAST, undefined, 0);\n } else if (typeof position === \"number\" && position >= -1) {\n dispatch(HoverActionTypes.SET_INDEX, undefined, position);\n }\n };\n\n if (alwaysUpdate) {\n setItemFocus();\n } else if (captureFocus) {\n // Use a timeout here because if set focus immediately, page might scroll unexpectedly.\n const id = setTimeout(\n () => {\n // If focus has already been set to a children element, don't set focus on menu or item\n if (!menuRef.current.contains(document.activeElement)) {\n // Handle popover portal focus\n const popupElement = focusRef.current?.nextSibling;\n if (popupElement instanceof Element) {\n const input = popupElement.querySelectorAll(\"input,textarea\")[0] as HTMLElement;\n if (input) {\n input.focus();\n // Text areas should start at end\n if (input instanceof HTMLTextAreaElement) {\n input.selectionStart = input.value.length;\n }\n } else {\n focusRef.current?.focus();\n }\n } else {\n focusRef.current?.focus();\n }\n setItemFocus();\n }\n },\n openTransition ? 170 : 100,\n );\n\n return () => clearTimeout(id);\n }\n return () => {};\n }, [isOpen, openTransition, closeTransition, captureFocus, menuItemFocus, dispatch]);\n\n const isSubmenuOpen = openSubmenuCount > 0;\n const itemContext = useMemo(\n () => ({\n isParentOpen: isOpen,\n isSubmenuOpen,\n setOpenSubmenuCount,\n dispatch,\n updateItems,\n }),\n [isOpen, isSubmenuOpen, dispatch, updateItems],\n );\n\n let maxHeight: number | undefined;\n let overflowAmt: number | undefined;\n if (overflowData) {\n setDownOverflow ? (overflowAmt = overflowData.overflowAmt) : (maxHeight = overflowData.height);\n }\n\n const listContext = useMemo(\n () => ({\n reposSubmenu,\n overflow,\n overflowAmt,\n parentMenuRef: menuRef,\n parentDir: expandedDirection,\n }),\n [reposSubmenu, overflow, overflowAmt, expandedDirection],\n );\n const overflowStyle = maxHeight != null && maxHeight >= 0 ? { maxHeight, overflow } : undefined;\n\n const modifiers = useMemo(\n () => ({\n state,\n dir: expandedDirection,\n }),\n [state, expandedDirection],\n );\n const arrowModifiers = useMemo(() => ({ dir: expandedDirection }), [expandedDirection]);\n const _arrowClass = useBEM({\n block: menuClass,\n element: menuArrowClass,\n modifiers: arrowModifiers,\n className: arrowClassName,\n });\n\n const minHeight = useRef(0);\n if (dontShrinkIfDirectionIsTop && menuRef.current?.getBoundingClientRect) {\n const h = menuRef.current?.getBoundingClientRect().height;\n if (minHeight.current < h) minHeight.current = h;\n }\n\n const dontShrinkOps = useMemo(\n () =>\n expandedDirection === \"top\" && dontShrinkIfDirectionIsTop\n ? {\n overflowY: isSubmenuOpen ? \"\" : \"auto\",\n minHeight: (isSubmenuOpen ? 0 : minHeight.current) + \"px\",\n }\n : undefined,\n [dontShrinkIfDirectionIsTop, expandedDirection, isSubmenuOpen],\n );\n\n return (\n <ul\n role=\"menu\"\n aria-label={ariaLabel}\n {...mergeProps({ onKeyDown, onAnimationEnd }, restProps)}\n {...commonProps(isDisabled)}\n ref={useCombinedRef(externalRef, menuRef)}\n className={useBEM({ block: menuClass, modifiers, className: menuClassName })}\n style={{\n ...menuStyle,\n ...overflowStyle,\n ...dontShrinkOps,\n margin: 0,\n display: state === \"closed\" ? \"none\" : undefined,\n position: \"absolute\",\n left: menuPosition.x,\n top: menuPosition.y,\n }}\n >\n <div ref={focusRef} tabIndex={-1} style={{ position: \"absolute\", left: 0, top: 0 }} />\n {arrow && (\n <div\n className={_arrowClass}\n style={{\n ...arrowStyle,\n position: \"absolute\",\n left: arrowPosition.x,\n top: arrowPosition.y,\n }}\n ref={arrowRef}\n />\n )}\n\n <MenuListContext.Provider value={listContext}>\n <MenuListItemContext.Provider value={itemContext}>\n <HoverItemContext.Provider value={hoverItem}>{children}</HoverItemContext.Provider>\n </MenuListItemContext.Provider>\n </MenuListContext.Provider>\n </ul>\n );\n};\n","import { isEmpty as _isEmpty } from \"lodash-es\";\n\n// Typed version of lodash !isEmpty\nexport const isNotEmpty = (obj: Set<any> | Map<any, any> | Record<any, any> | any[] | undefined): boolean =>\n !_isEmpty(obj);\n\nexport const wait = (timeoutMs: number) =>\n new Promise<(string | null)[]>((resolve) => {\n setTimeout(resolve, timeoutMs);\n });\n\nexport const isFloat = (value: string) => {\n const regexp = /^-?\\d+(\\.\\d+)?$/;\n return regexp.test(value);\n};\n\nexport const hasParentClass = function (className: string, child: Node) {\n let node: Node | null = child;\n while (node) {\n // When nodes are in portals they aren't type node anymore hence treating it as any here\n if ((node as any).classList && (node as any).classList.contains(className)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n};\n","import { createContext } from \"react\";\nimport { RMEvent } from \"../utils\";\n\nexport interface EventHandlersContextType {\n handleClose?: () => void;\n handleClick: (event: RMEvent, checked: boolean) => void;\n}\n\nexport const EventHandlersContext = createContext<EventHandlersContextType>({\n handleClick: () => {},\n});\n","import {\n forwardRef,\n useRef,\n useMemo,\n useCallback,\n useEffect,\n KeyboardEvent,\n FocusEvent,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { MenuList } from \"./MenuList\";\nimport { useBEM } from \"../hooks\";\nimport { menuContainerClass, mergeProps, safeCall, isMenuOpen, getTransition, CloseReason, Keys } from \"../utils\";\nimport { hasParentClass } from \"../../utils/util\";\nimport { ControlledMenuProps, PortalFieldType, RadioChangeEvent } from \"../types\";\nimport { ItemSettingsContext } from \"../contexts/ItemSettingsContext\";\nimport { SettingsContext } from \"../contexts/SettingsContext\";\nimport { EventHandlersContext, EventHandlersContextType } from \"../contexts/EventHandlersContext\";\n\nexport const ControlledMenuFr = (\n {\n \"aria-label\": ariaLabel,\n className,\n containerProps,\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n boundingBoxRef,\n boundingBoxPadding,\n reposition = \"auto\",\n submenuOpenDelay = 300,\n submenuCloseDelay = 150,\n skipOpen,\n viewScroll = \"initial\",\n portal,\n theming,\n onItemClick,\n onClose,\n saveButtonRef,\n closeMenuExclusionClassName,\n ...restProps\n }: ControlledMenuProps & { saveButtonRef?: MutableRefObject<HTMLButtonElement | null> },\n externalRef: ForwardedRef<HTMLUListElement>,\n) => {\n const containerRef = useRef<HTMLElement>();\n const scrollNodesRef = useRef<{ anchors?: HTMLDivElement[] }>({});\n const { anchorRef, state } = restProps;\n\n const settings = useMemo(\n () => ({\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n boundingBoxRef,\n boundingBoxPadding,\n rootMenuRef: containerRef,\n rootAnchorRef: anchorRef,\n scrollNodesRef,\n reposition,\n viewScroll,\n }),\n [\n initialMounted,\n unmountOnClose,\n transition,\n transitionTimeout,\n anchorRef,\n boundingBoxRef,\n boundingBoxPadding,\n reposition,\n viewScroll,\n ],\n );\n\n const isWithinMenu = useCallback(\n (target: EventTarget | null) =>\n hasParentClass(\"szh-menu--state-open\", target as Node) ||\n (closeMenuExclusionClassName && hasParentClass(closeMenuExclusionClassName, target as Node)),\n [closeMenuExclusionClassName],\n );\n\n const handleScreenEventForSave = useCallback(\n (ev: MouseEvent) => {\n if (!isWithinMenu(ev.target)) {\n ev.preventDefault();\n ev.stopPropagation();\n // Note: There's an issue in React17\n // the cell doesn't refresh during update if save is invoked from a native event\n // This doesn't happen in React18\n // To work around it, I invoke the save by clicking on a passed in invisible button ref\n if (saveButtonRef?.current) saveButtonRef.current.click();\n else safeCall(onClose, { reason: CloseReason.BLUR });\n\n // If a user clicks on the menu button when a menu is open, we need to close the menu.\n // However, a blur event will be fired prior to the click event on menu button,\n // which makes the menu first close and then open again.\n // If this happens, e.relatedTarget is incorrectly set to null instead of the button in Safari and Firefox,\n // and makes it difficult to determine whether onBlur is fired because of clicking on menu button.\n // This is a workaround approach which sets a flag to skip a following click event.\n if (skipOpen) {\n skipOpen.current = true;\n setTimeout(() => (skipOpen.current = false), 300);\n }\n }\n },\n [isWithinMenu, onClose, saveButtonRef, skipOpen],\n );\n\n const handleScreenEventForCancel = useCallback(\n (ev: MouseEvent) => {\n if (!isWithinMenu(ev.target)) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n },\n [isWithinMenu],\n );\n\n useEffect(() => {\n if (isMenuOpen(state)) {\n const thisDocument = anchorRef?.current ? anchorRef?.current.ownerDocument : document;\n thisDocument.addEventListener(\"mousedown\", handleScreenEventForSave, true);\n thisDocument.addEventListener(\"mouseup\", handleScreenEventForCancel, true);\n thisDocument.addEventListener(\"click\", handleScreenEventForCancel, true);\n thisDocument.addEventListener(\"dblclick\", handleScreenEventForCancel, true);\n return () => {\n thisDocument.removeEventListener(\"mousedown\", handleScreenEventForSave, true);\n thisDocument.removeEventListener(\"mouseup\", handleScreenEventForCancel, true);\n thisDocument.removeEventListener(\"click\", handleScreenEventForCancel, true);\n thisDocument.removeEventListener(\"dblclick\", handleScreenEventForCancel, true);\n };\n }\n return () => {};\n }, [handleScreenEventForSave, handleScreenEventForCancel, state, anchorRef]);\n\n const itemSettings = useMemo(\n () => ({\n submenuOpenDelay,\n submenuCloseDelay,\n }),\n [submenuOpenDelay, submenuCloseDelay],\n );\n\n const eventHandlers = useMemo(\n (): EventHandlersContextType => ({\n handleClick(event: RadioChangeEvent, isCheckOrRadio: boolean) {\n if (!event.stopPropagation) safeCall(onItemClick, event);\n\n let keepOpen = event.keepOpen;\n if (keepOpen === undefined) {\n // if event.keepOpen is undefined, the following default behaviour is used\n // According to WAI-ARIA Authoring Practices 1.1\n // Keep menu open when check or radio is invoked by SPACE key\n keepOpen = isCheckOrRadio && event.key === Keys.SPACE;\n }\n\n if (!keepOpen) {\n safeCall(onClose, {\n value: event.value,\n key: event.key,\n reason: CloseReason.CLICK,\n });\n }\n },\n\n handleClose(key?: string) {\n safeCall(onClose, { key, reason: CloseReason.CLICK });\n },\n }),\n [onItemClick, onClose],\n );\n\n const onKeyDown = ({ key }: KeyboardEvent) => {\n switch (key) {\n case Keys.ESC:\n safeCall(onClose, { key, reason: CloseReason.CANCEL });\n break;\n }\n };\n\n const onBlur = (e: FocusEvent) => {\n if (\n isMenuOpen(state) &&\n !e.currentTarget.contains(e.relatedTarget || document.activeElement) &&\n !isWithinMenu(e.relatedTarget)\n ) {\n safeCall(onClose, { reason: CloseReason.BLUR });\n\n // If a user clicks on the menu button when a menu is open, we need to close the menu.\n // However, a blur event will be fired prior to the click event on menu button,\n // which makes the menu first close and then open again.\n // If this happens, e.relatedTarget is incorrectly set to null instead of the button in Safari and Firefox,\n // and makes it difficult to determine whether onBlur is fired because of clicking on menu button.\n // This is a workaround approach which sets a flag to skip a following click event.\n if (skipOpen) {\n skipOpen.current = true;\n setTimeout(() => (skipOpen.current = false), 300);\n }\n }\n };\n\n const itemTransition = getTransition(transition, \"item\");\n const modifiers = useMemo(() => ({ theme: theming, itemTransition }), [theming, itemTransition]);\n\n const menuList = (\n <div\n {...mergeProps({ onKeyDown, onBlur }, containerProps)}\n className={useBEM({\n block: menuContainerClass,\n modifiers,\n className,\n })}\n style={{ ...containerProps?.style, position: \"relative\" }}\n ref={containerRef}\n >\n {state && (\n <SettingsContext.Provider value={settings}>\n <ItemSettingsContext.Provider value={itemSettings}>\n <EventHandlersContext.Provider value={eventHandlers}>\n <MenuList\n {...restProps}\n ariaLabel={ariaLabel || \"Menu\"}\n externalRef={externalRef}\n containerRef={containerRef}\n onClose={onClose}\n />\n </EventHandlersContext.Provider>\n </ItemSettingsContext.Provider>\n </SettingsContext.Provider>\n )}\n </div>\n );\n\n if (portal === true && anchorRef?.current != null) {\n portal = { target: anchorRef.current.ownerDocument.body } as PortalFieldType;\n }\n\n if (portal) {\n if (typeof portal === \"boolean\") {\n if (portal && typeof document !== \"undefined\") {\n return createPortal(menuList, document.body);\n }\n } else {\n return portal.target ? createPortal(menuList, portal.target) : portal.stablePosition ? null : menuList;\n }\n }\n return menuList;\n};\n\nexport const ControlledMenu = forwardRef(ControlledMenuFr);\n","import {\n cloneElement,\n Fragment,\n forwardRef,\n useRef,\n useCallback,\n useImperativeHandle,\n ReactElement,\n ForwardedRef,\n} from \"react\";\nimport { ControlledMenu } from \"./ControlledMenu\";\nimport { useMenuChange, useMenuStateAndFocus, useCombinedRef } from \"../hooks\";\nimport { getName, mergeProps, safeCall, isMenuOpen, Keys, FocusPositions } from \"../utils\";\nimport { MenuButtonModifiers, RenderProp, RootMenuProps, UncontrolledMenuProps } from \"../types\";\n\n//\n// Menu\n// ----------------------------------------------------------------------\nexport interface MenuProps extends RootMenuProps, UncontrolledMenuProps {\n /**\n * Can be a `MenuButton`, a `button` element, or a React component.\n * It also can be a render function that returns one.\n *\n * If a React component is provided, it needs to implement the following contracts:\n * - Accepts a `ref` prop that is forwarded to an element to which menu will be positioned.\n * The element should be able to receive focus.\n * - Accepts `onClick` and `onKeyDown` event props.\n */\n menuButton: RenderProp<MenuButtonModifiers, ReactElement>;\n}\n\nexport function MenuFr(\n { \"aria-label\": ariaLabel, menuButton, instanceRef, onMenuChange, ...restProps }: MenuProps,\n externalRef: ForwardedRef<ReactElement>,\n) {\n const [stateProps, toggleMenu, openMenu] = useMenuStateAndFocus(restProps);\n const isOpen = isMenuOpen(stateProps.state);\n const skipOpen = useRef(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleClose = useCallback(\n (e) => {\n toggleMenu(false);\n if (e.key) buttonRef.current && buttonRef.current.focus();\n },\n [toggleMenu],\n );\n\n const onClick = (e: MouseEvent) => {\n if (skipOpen.current) return;\n // Focus (hover) the first menu item when onClick event is trigger by keyboard\n openMenu(e.detail === 0 ? FocusPositions.FIRST : undefined);\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case Keys.UP:\n openMenu(FocusPositions.LAST);\n break;\n\n case Keys.DOWN:\n openMenu(FocusPositions.FIRST);\n break;\n\n default:\n return;\n }\n\n e.preventDefault();\n };\n\n // Too many mixed types here to figure out what to pick for button. Bad code.\n const button: any = safeCall(menuButton, { open: isOpen });\n if (!button || !button.type) throw new Error(\"Menu requires a menuButton prop.\");\n\n const buttonProps = {\n ref: useCombinedRef(button.ref, buttonRef),\n ...mergeProps({ onClick, onKeyDown }, button.props),\n isOpen: false,\n };\n if (getName(button.type) === \"MenuButton\") {\n buttonProps.isOpen = isOpen;\n }\n const renderButton = cloneElement(button, buttonProps);\n\n useMenuChange(onMenuChange, isOpen);\n\n useImperativeHandle(instanceRef, () => ({\n openMenu,\n closeMenu: () => toggleMenu(false),\n }));\n\n return (\n <Fragment>\n {renderButton}\n <ControlledMenu\n {...restProps}\n {...stateProps}\n aria-label={ariaLabel || (typeof button.props.children === \"string\" ? button.props.children : \"Menu\")}\n anchorRef={buttonRef}\n ref={externalRef}\n onClose={handleClose}\n skipOpen={skipOpen}\n />\n </Fragment>\n );\n}\nexport const Menu = forwardRef(MenuFr);\n","import {\n useRef,\n useContext,\n useEffect,\n useMemo,\n useImperativeHandle,\n CSSProperties,\n ReactNode,\n KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useBEM, useCombinedRef, useMenuChange, useMenuStateAndFocus, useItemEffect } from \"../hooks\";\nimport { MenuList } from \"./MenuList\";\nimport {\n mergeProps,\n batchedUpdates,\n commonProps,\n safeCall,\n menuClass,\n subMenuClass,\n menuItemClass,\n isMenuOpen,\n withHovering,\n Keys,\n HoverActionTypes,\n FocusPositions,\n} from \"../utils\";\nimport {\n BaseProps,\n ClassNameProp,\n Hoverable,\n MenuAlign,\n MenuArrowModifiers,\n MenuDirection,\n MenuModifiers,\n MenuOverflow,\n MenuPosition,\n RenderProp,\n UncontrolledMenuProps,\n} from \"../types\";\nimport { withHoveringResultProps } from \"../utils/withHovering\";\nimport { MenuListItemContext } from \"../contexts/MenuListItemContext\";\nimport { MenuListContext } from \"../contexts/MenuListContext\";\nimport { SettingsContext } from \"../contexts/SettingsContext\";\nimport { ItemSettingsContext } from \"../contexts/ItemSettingsContext\";\n\n//\n// SubMenu\n// ----------------------------------------------------------------------\nexport type SubMenuItemModifiers = Readonly<{\n /**\n * Indicates if the submenu is open.\n */\n open: boolean;\n /**\n * Indicates if the submenu item is being hovered and has focus.\n */\n hover: boolean;\n /**\n * Indicates if the submenu and item are disabled.\n */\n disabled: boolean;\n}>;\n\n/**\n * Common props for `Menu`, `SubMenu` and `ControlledMenu`\n */\ninterface BaseMenuProps extends Omit<BaseProps, \"style\"> {\n /**\n * Can be a string or a function which receives a modifier object and returns a CSS `class` string.\n */\n menuClassName?: ClassNameProp<MenuModifiers>;\n /**\n * This prop is forwarded to the `style` prop of menu DOM element.\n */\n menuStyle?: CSSProperties;\n /**\n * Can be a string or a function which receives a modifier object and returns a CSS `class` string.\n */\n arrowClassName?: ClassNameProp<MenuArrowModifiers>;\n /**\n * This prop is forwarded to the `style` prop of menu arrow DOM element.\n */\n arrowStyle?: CSSProperties;\n /**\n * Set `true` to display an arrow pointing to its anchor element.\n */\n arrow?: boolean;\n /**\n * Set the horizontal distance (in pixels) between menu and its anchor element.\n * The value can be negative.\n * @default 0\n */\n offsetX?: number;\n /**\n * Set the vertical distance (in pixels) between menu and its anchor element.\n * The value can be negative.\n * @default 0\n */\n offsetY?: number;\n /**\n * Set alignment of menu with anchor element.\n * @default 'start'\n */\n align?: MenuAlign;\n /**\n * Set direction in which menu expands against anchor element.\n * @default 'bottom'\n */\n direction?: MenuDirection;\n /**\n * Set the position of menu related to its anchor element:\n *\n * - 'auto' menu position is adjusted to have it contained within the viewport,\n * even if it will be detached from the anchor element.\n * This option allows to display menu in the viewport as much as possible.\n *\n * - 'anchor' menu position is adjusted to have it contained within the viewport,\n * but it will be kept attached to the edges of anchor element.\n *\n * - 'initial' menu always stays at its initial position.\n * @default 'auto'\n */\n position?: MenuPosition;\n /**\n * Make the menu list scrollable or hidden when there is not enough viewport space to\n * display all menu items. The prop is similar to the CSS `overflow` property.\n * @default 'visible'\n */\n overflow?: MenuOverflow;\n /**\n * Set computed overflow amount down to a child `MenuGroup`.\n * The `MenuGroup` should have `takeOverflow` prop set as `true` accordingly.\n */\n setDownOverflow?: boolean;\n children?: ReactNode;\n}\n\nexport interface SubMenuProps extends BaseMenuProps, Hoverable, UncontrolledMenuProps, withHoveringResultProps {\n /**\n * Properties of this object are spread to the submenu item DOM element.\n */\n itemProps?: BaseProps<SubMenuItemModifiers>;\n /**\n * The submenu `label` can be a `string` or JSX element, or a render function that returns one.\n */\n label?: RenderProp<SubMenuItemModifiers>;\n /**\n * - `undefined` submenu opens when the label item is hovered or clicked. This is the default behaviour.\n * - 'clickOnly' submenu opens when the label item is clicked.\n * - 'none' submenu doesn't open with mouse or keyboard events;\n * you can call the `openMenu` function on `instanceRef` to open submenu programmatically.\n */\n openTrigger?: \"none\" | \"clickOnly\";\n}\n\nexport const SubMenuFr = ({\n \"aria-label\": ariaLabel,\n className,\n disabled,\n direction,\n label,\n openTrigger,\n onMenuChange,\n isHovering,\n instanceRef,\n menuItemRef,\n itemProps = {},\n ...restProps\n}: SubMenuProps) => {\n const settings = useContext(SettingsContext);\n const { rootMenuRef } = settings;\n const { submenuOpenDelay, submenuCloseDelay } = useContext(ItemSettingsContext);\n const { parentMenuRef, parentDir, overflow: parentOverflow } = useContext(MenuListContext);\n const { isParentOpen, isSubmenuOpen, setOpenSubmenuCount, dispatch, updateItems } = useContext(MenuListItemContext);\n const isPortal = parentOverflow !== \"visible\";\n\n const [stateProps, toggleMenu, _openMenu] = useMenuStateAndFocus(settings);\n\n const { state } = stateProps;\n const isDisabled = !!disabled;\n const isOpen = isMenuOpen(state);\n const containerRef = useRef(null);\n const timeoutId = useRef<ReturnType<typeof setTimeout>>();\n\n const stopTimer = () => {\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n timeoutId.current = undefined;\n }\n };\n\n const openMenu = (...args: any[]) => {\n stopTimer();\n setHover();\n !isDisabled && _openMenu(...args);\n };\n\n const setHover = () => !isHovering && !isDisabled && dispatch(HoverActionTypes.SET, menuItemRef?.current, 0);\n\n const delayOpen = (delay: number) => {\n setHover();\n if (!openTrigger) timeoutId.current = setTimeout(() => batchedUpdates(openMenu), Math.max(delay, 0));\n };\n\n const handlePointerMove = () => {\n if (timeoutId.current || isOpen || isDisabled) return;\n\n if (isSubmenuOpen) {\n timeoutId.current = setTimeout(() => delayOpen(submenuOpenDelay - submenuCloseDelay), submenuCloseDelay);\n } else {\n delayOpen(submenuOpenDelay);\n }\n };\n\n const handlePointerLeave = () => {\n stopTimer();\n if (!isOpen) dispatch(HoverActionTypes.UNSET, menuItemRef?.current, 0);\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n let handled = false;\n\n switch (e.key) {\n // LEFT key is bubbled up from submenu items\n case Keys.LEFT:\n if (isOpen) {\n menuItemRef?.current && menuItemRef.current.focus();\n toggleMenu(false);\n handled = true;\n }\n break;\n\n // prevent browser from scrolling page to the right\n case Keys.RIGHT:\n if (!isOpen) handled = true;\n break;\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleItemKeyDown = (e: KeyboardEvent) => {\n if (!isHovering) return;\n\n switch (e.key) {\n case Keys.ENTER:\n case Keys.SPACE:\n case Keys.RIGHT:\n openTrigger !== \"none\" && openMenu(FocusPositions.FIRST);\n break;\n }\n };\n\n useItemEffect(isDisabled, menuItemRef, updateItems);\n useMenuChange(onMenuChange, isOpen);\n\n useEffect(() => () => clearTimeout(timeoutId.current), []);\n useEffect(() => {\n // Don't set focus when parent menu is closed, otherwise focus will be lost\n // and onBlur event will be fired with relatedTarget setting as null.\n if (isHovering && isParentOpen) {\n menuItemRef?.current && menuItemRef.current.focus();\n } else {\n toggleMenu(false);\n }\n }, [isHovering, isParentOpen, toggleMenu, menuItemRef]);\n\n useEffect(() => {\n setOpenSubmenuCount((count: number) => (isOpen ? count + 1 : Math.max(count - 1, 0)));\n }, [setOpenSubmenuCount, isOpen]);\n\n useImperativeHandle(instanceRef, () => ({\n openMenu: (...args) => {\n isParentOpen && openMenu(...args);\n },\n closeMenu: () => {\n if (isOpen) {\n menuItemRef?.current && menuItemRef.current.focus();\n toggleMenu(false);\n }\n },\n }));\n\n const modifiers = useMemo(\n () => ({\n open: isOpen,\n hover: isHovering,\n disabled: isDisabled,\n submenu: true,\n }),\n [isOpen, isHovering, isDisabled],\n );\n\n const { ref: externalItemRef, className: itemClassName, ...restItemProps } = itemProps;\n\n const mergedItemProps = mergeProps(\n {\n onPointerMove: handlePointerMove,\n onPointerLeave: handlePointerLeave,\n onKeyDown: handleItemKeyDown,\n onClick: () => openTrigger !== \"none\" && openMenu(),\n },\n restItemProps,\n );\n\n const getMenuList = () => {\n const menuList = (\n <MenuList\n {...restProps}\n {...stateProps}\n ariaLabel={ariaLabel || (typeof label === \"string\" ? label : \"Submenu\")}\n anchorRef={menuItemRef}\n containerRef={isPortal ? rootMenuRef : containerRef}\n direction={direction || (parentDir === \"right\" || parentDir === \"left\" ? parentDir : \"right\")}\n parentScrollingRef={isPortal && parentMenuRef}\n isDisabled={isDisabled}\n />\n );\n const container = rootMenuRef?.current;\n return isPortal && container ? createPortal(menuList, container) : menuList;\n };\n\n return (\n <li\n className={useBEM({ block: menuClass, element: subMenuClass, className })}\n style={{ position: \"relative\" }}\n role=\"presentation\"\n ref={containerRef}\n onKeyDown={handleKeyDown}\n >\n <div\n role=\"menuitem\"\n aria-haspopup\n aria-expanded={isOpen}\n {...mergedItemProps}\n {...commonProps(isDisabled, isHovering)}\n ref={useCombinedRef(externalItemRef, menuItemRef)}\n className={useBEM({\n block: menuClass,\n element: menuItemClass,\n modifiers,\n className: itemClassName,\n })}\n >\n {useMemo(() => safeCall(label, modifiers), [label, modifiers])}\n </div>\n\n {state && getMenuList()}\n </li>\n );\n};\n\nexport const SubMenu = withHovering(\"SubMenu\", SubMenuFr);\n","import { createContext } from \"react\";\nimport { EventHandler, RadioChangeEvent } from \"../types\";\n\nexport const RadioGroupContext = createContext<{\n value?: any;\n name?: string;\n onRadioChange?: EventHandler<RadioChangeEvent>;\n}>({});\n","import { Ref, useContext, useMemo } from \"react\";\nimport { useBEM, useItemState, useCombinedRef } from \"../hooks\";\nimport { mergeProps, commonProps, safeCall, menuClass, menuItemClass, withHovering, Keys, RMEvent } from \"../utils\";\nimport { BaseProps, ClickEvent, EventHandler, Hoverable, MenuItemTypeProp, RenderProp } from \"../types\";\nimport { withHoveringResultProps } from \"../utils/withHovering\";\nimport { EventHandlersContext } from \"../contexts/EventHandlersContext\";\nimport { RadioGroupContext } from \"../contexts/RadioGroupContext\";\n\n//\n// MenuItem\n// ----------------------------------------------------------------------\nexport type MenuItemModifiers = Readonly<{\n /**\n * 'radio' for radio item, 'checkbox' for checkbox item, or `undefined` for other items.\n */\n type?: MenuItemTypeProp;\n /**\n * Indicates if the menu item is disabled.\n */\n disabled: boolean;\n /**\n * Indicates if the menu item is being hovered and has focus.\n */\n hover: boolean;\n /**\n * Indicates if the menu item is checked when it's a radio or checkbox item.\n */\n checked: boolean;\n /**\n * Indicates if the menu item has a URL link.\n */\n anchor: boolean;\n}>;\n\nexport interface MenuItemProps extends Omit<BaseProps<MenuItemModifiers>, \"onClick\">, Hoverable {\n /**\n * Any value provided to this prop will be available in the event object of click events.\n *\n * It's useful for helping identify which menu item is clicked when you\n * listen on `onItemClick` event on root menu component.\n */\n value?: any;\n /**\n * If provided, menu item renders an HTML `<a>` element with this `href` attribute.\n */\n href?: string;\n rel?: string;\n target?: string;\n /**\n * Set this prop to make the item a checkbox or radio menu item.\n */\n type?: MenuItemTypeProp;\n /**\n * Set `true` if a checkbox menu item is checked.\n *\n * *Please note radio menu item doesn't use this prop.*\n */\n checked?: boolean;\n /**\n * Event fired when the menu item is clicked.\n */\n onClick?: EventHandler<ClickEvent>;\n /**\n * Any valid React node or a render function that returns one.\n */\n children?: RenderProp<MenuItemModifiers>;\n}\n\nconst MenuItemFr = ({\n className,\n value,\n href,\n type,\n checked,\n disabled,\n children,\n onClick,\n isHovering,\n menuItemRef,\n externalRef,\n ...restProps\n}: MenuItemProps & withHoveringResultProps) => {\n const isDisabled = !!disabled;\n const { setHover, ...restStateProps } = useItemState(menuItemRef, menuItemRef, isHovering, isDisabled);\n const eventHandlers = useContext(EventHandlersContext);\n const radioGroup = useContext(RadioGroupContext);\n const isRadio = type === \"radio\";\n const isCheckBox = type === \"checkbox\";\n const isAnchor = !!href && !isDisabled && !isRadio && !isCheckBox;\n const isChecked = isRadio ? radioGroup.value === value : isCheckBox ? !!checked : false;\n\n // handle click seems to be a combination of multiple event types, bad code.\n const handleClick = (e: any) => {\n if (isDisabled) {\n if (e.syntheticEvent) {\n e.syntheticEvent.stopPropagation();\n e.syntheticEvent.preventDefault();\n } else {\n e.stopPropagation();\n e.preventDefault();\n }\n return;\n }\n\n const event: RMEvent = {\n value,\n syntheticEvent: e,\n };\n if (e.key !== undefined) event.key = e.key;\n if (isCheckBox) event.checked = !isChecked;\n if (isRadio) event.name = radioGroup.name;\n safeCall(onClick, event);\n if (isRadio) safeCall(radioGroup.onRadioChange, event);\n eventHandlers.handleClick(event, isCheckBox || isRadio);\n };\n\n /**\n * Keyboard events are triggered on up, otherwise sub-components get spaces and enters typed in them\n */\n const handleKeyUp = (e: KeyboardEvent) => {\n if (!isHovering) return;\n\n switch (e.key) {\n case Keys.ENTER:\n case Keys.SPACE:\n if (isAnchor) {\n menuItemRef?.current && menuItemRef.current.click();\n } else {\n handleClick(e);\n }\n break;\n }\n };\n\n const modifiers = useMemo(\n () => ({\n type,\n disabled: isDisabled,\n hover: isHovering,\n checked: isChecked,\n anchor: isAnchor,\n }),\n [type, isDisabled, isHovering, isChecked, isAnchor],\n );\n\n const mergedProps = mergeProps(\n {\n ...restStateProps,\n onPointerDown: setHover,\n onKeyUp: handleKeyUp,\n onClick: handleClick,\n },\n restProps,\n );\n\n // Order of props overriding (same in all components):\n // 1. Preset props adhering to WAI-ARIA Authoring Practices.\n // 2. Merged outer and local props\n // 3. ref, className\n const menuItemProps = {\n role: isRadio ? \"menuitemradio\" : isCheckBox ? \"menuitemcheckbox\" : \"menuitem\",\n \"aria-checked\": isRadio || isCheckBox ? isChecked : undefined,\n ...mergedProps,\n ...commonProps(isDisabled, isHovering),\n ref: useCombinedRef(externalRef as Ref<any>, menuItemRef),\n className: useBEM({ block: menuClass, element: menuItemClass, modifiers, className }),\n children: useMemo(() => safeCall(children, modifiers), [children, modifiers]),\n };\n\n if (isAnchor) {\n return (\n <li role=\"presentation\">\n <a href={href} {...menuItemProps} />\n </li>\n );\n } else {\n return <li {...menuItemProps} />;\n }\n};\n\nexport const MenuItem = withHovering(\"MenuItem\", MenuItemFr);\n","import { LegacyRef, useContext, useMemo, useRef } from \"react\";\nimport { useBEM, useCombinedRef, useItemState } from \"../hooks\";\nimport { mergeProps, commonProps, safeCall, menuClass, menuItemClass, withHovering } from \"../utils\";\nimport { BaseProps } from \"../types\";\nimport { withHoveringResultProps } from \"../utils/withHovering\";\nimport { EventHandlersContext } from \"../contexts/EventHandlersContext\";\n\nexport interface FocusableItemProps extends BaseProps, withHoveringResultProps {\n disabled?: boolean;\n children: (ref: LegacyRef<any>) => JSX.Element;\n}\n\nexport const FocusableItemFr = ({\n className,\n disabled,\n children,\n isHovering,\n menuItemRef,\n externalRef,\n ...restProps\n}: FocusableItemProps) => {\n const isDisabled = !!disabled;\n const ref = useRef(null);\n const { setHover, onPointerLeave, ...restStateProps } = useItemState(menuItemRef, ref, isHovering, isDisabled);\n const { handleClose } = useContext(EventHandlersContext);\n\n const modifiers = useMemo(\n () => ({\n disabled: isDisabled,\n hover: isHovering,\n focusable: true,\n }),\n [isDisabled, isHovering],\n );\n\n const renderChildren = useMemo(\n () =>\n safeCall(children, {\n ...modifiers,\n ref,\n closeMenu: handleClose,\n }),\n [children, modifiers, handleClose],\n );\n\n const mergedProps = mergeProps(\n {\n ...restStateProps,\n onPointerLeave: (e: PointerEvent) => onPointerLeave(e, true),\n onFocus: setHover,\n },\n restProps,\n );\n\n return (\n <li\n role=\"menuitem\"\n {...mergedProps}\n {...commonProps(isDisabled)}\n ref={useCombinedRef(externalRef, menuItemRef)}\n className={useBEM({ block: menuClass, element: menuItemClass, modifiers, className })}\n >\n {renderChildren}\n </li>\n );\n};\n\nexport const FocusableItem = withHovering(\"FocusableItem\", FocusableItemFr);\n","import { memo, forwardRef, LegacyRef } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuClass, menuDividerClass } from \"../utils\";\nimport { BaseProps } from \"../types\";\n\nconst MenuDividerFr = ({ className, ...restProps }: BaseProps, externalRef: LegacyRef<HTMLLIElement>) => {\n return (\n <li\n role=\"separator\"\n {...restProps}\n ref={externalRef}\n className={useBEM({ block: menuClass, element: menuDividerClass, className })}\n />\n );\n};\n\nexport const MenuDivider = memo(forwardRef(MenuDividerFr));\n","import { memo, forwardRef, ForwardedRef } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuClass, menuHeaderClass } from \"../utils\";\nimport { BasePropsWithChildren } from \"../types\";\n\nexport const MenuHeaderFr = (\n { className, ...restProps }: BasePropsWithChildren,\n externalRef: ForwardedRef<HTMLLIElement>,\n) => {\n return (\n <li\n role=\"presentation\"\n {...restProps}\n ref={externalRef}\n className={useBEM({ block: menuClass, element: menuHeaderClass, className })}\n />\n );\n};\n\nexport const MenuHeader = memo(forwardRef(MenuHeaderFr));\n","import { ForwardedRef, forwardRef, ReactNode, useContext, useRef, useState } from \"react\";\nimport { useBEM, useLayoutEffect, useCombinedRef } from \"../hooks\";\nimport { menuClass, menuGroupClass } from \"../utils\";\nimport { BaseProps, MenuOverflow } from \"../types\";\nimport { MenuListContext } from \"../contexts/MenuListContext\";\n\nexport interface MenuGroupProps extends BaseProps {\n children?: ReactNode;\n /**\n * Set `true` to apply overflow of the parent menu to the group.\n * Only one `MenuGroup` in a menu should set this prop as `true`.\n */\n takeOverflow?: boolean;\n}\n\nexport const MenuGroupFr = (\n { className, style, takeOverflow, ...restProps }: MenuGroupProps,\n externalRef: ForwardedRef<HTMLDivElement>,\n) => {\n const ref = useRef<HTMLDivElement>(null);\n const [overflowStyle, setOverflowStyle] = useState<{ maxHeight?: number; overflow?: MenuOverflow }>();\n const { overflow, overflowAmt } = useContext(MenuListContext);\n\n useLayoutEffect(() => {\n let maxHeight;\n if (takeOverflow && overflowAmt != null && overflowAmt >= 0 && ref.current) {\n maxHeight = ref.current.getBoundingClientRect().height - overflowAmt;\n if (maxHeight < 0) maxHeight = 0;\n }\n setOverflowStyle(maxHeight != null && maxHeight >= 0 ? { maxHeight, overflow } : undefined);\n }, [takeOverflow, overflow, overflowAmt]);\n\n useLayoutEffect(() => {\n if (overflowStyle && ref.current) ref.current.scrollTop = 0;\n }, [overflowStyle]);\n\n return (\n <div\n {...restProps}\n ref={useCombinedRef(externalRef, ref)}\n className={useBEM({ block: menuClass, element: menuGroupClass, className })}\n style={{ ...style, ...overflowStyle }}\n />\n );\n};\n\nexport const MenuGroup = forwardRef(MenuGroupFr);\n","import { ForwardedRef, forwardRef, ReactNode, useMemo } from \"react\";\nimport { useBEM } from \"../hooks\";\nimport { menuClass, radioGroupClass } from \"../utils\";\nimport { BaseProps, EventHandler, RadioChangeEvent } from \"../types\";\nimport { RadioGroupContext } from \"../contexts/RadioGroupContext\";\n\n//\n// MenuRadioGroup\n// ----------------------------------------------------------------------\nexport interface MenuRadioGroupProps extends BaseProps {\n /**\n * Optionally set the radio group name.\n *\n * The name will be passed to the `onRadioChange` event.\n * It's useful for identifying radio groups if you attach the same event handler to multiple groups.\n */\n name?: string;\n /**\n * Set value of the radio group.\n *\n * The child menu item which has the same value (strict equality ===) as the\n * radio group is marked as checked.\n */\n value?: any;\n children?: ReactNode;\n /**\n * Event fired when a child menu item is clicked (selected).\n */\n onRadioChange?: EventHandler<RadioChangeEvent>;\n}\n\nexport const MenuRadioGroupFr = (\n { \"aria-label\": ariaLabel, className, name, value, onRadioChange, ...restProps }: MenuRadioGroupProps,\n externalRef: ForwardedRef<HTMLUListElement>,\n) => {\n const contextValue = useMemo(() => ({ name, value, onRadioChange }), [name, value, onRadioChange]);\n\n return (\n <RadioGroupContext.Provider value={contextValue}>\n <li role=\"presentation\">\n <ul\n role=\"group\"\n aria-label={ariaLabel || name || \"Radio group\"}\n {...restProps}\n ref={externalRef}\n className={useBEM({ block: menuClass, element: radioGroupClass, className })}\n />\n </li>\n </RadioGroupContext.Provider>\n );\n};\n\nexport const MenuRadioGroup = forwardRef(MenuRadioGroupFr);\n","import { createContext } from \"react\";\nimport { GridApi, RowNode } from \"ag-grid-community\";\nimport { GridBaseRow } from \"../components/Grid\";\n\nexport interface GridContextType {\n gridReady: () => boolean;\n setGridApi: (gridApi: GridApi | undefined) => void;\n setQuickFilter: (quickFilter: string) => void;\n editingCells: () => boolean;\n getSelectedRows: <T extends GridBaseRow>() => T[];\n getSelectedRowIds: () => number[];\n selectRowsDiff: (updateFn: () => Promise<any>) => Promise<void>;\n selectRowsWithFlashDiff: (updateFn: () => Promise<any>) => Promise<void>;\n selectRowsById: (rowIds?: number[]) => void;\n selectRowsByIdWithFlash: (rowIds?: number[]) => void;\n flashRows: (rowIds?: number[]) => void;\n flashRowsDiff: (updateFn: () => Promise<any>) => Promise<void>;\n ensureRowVisible: (id: number) => void;\n ensureSelectedRowIsVisible: () => void;\n sizeColumnsToFit: () => void;\n stopEditing: () => void;\n updatingCells: (\n props: { selectedRows: GridBaseRow[]; field?: string },\n fnUpdate: (selectedRows: any[]) => Promise<boolean>,\n setSaving?: (saving: boolean) => void,\n ) => Promise<boolean>;\n redrawRows: (rowNodes?: RowNode[]) => void;\n}\n\nexport const GridContext = createContext<GridContextType>({\n gridReady: () => {\n console.error(\"no context provider for gridReady\");\n return false;\n },\n setGridApi: () => {\n console.error(\"no context provider for setGridApi\");\n },\n setQuickFilter: () => {\n console.error(\"no context provider for setQuickFilter\");\n },\n selectRowsById: () => {\n console.error(\"no context provider for selectRows\");\n },\n getSelectedRows: <T extends unknown>(): T[] => {\n console.error(\"no context provider for getSelectedRows\");\n return [];\n },\n getSelectedRowIds: () => {\n console.error(\"no context provider for getSelectedRowIds\");\n return [];\n },\n selectRowsDiff: async () => {\n console.error(\"no context provider for selectRowsDiff\");\n },\n selectRowsByIdWithFlash: () => {\n console.error(\"no context provider for selectRowsWithFlash\");\n },\n selectRowsWithFlashDiff: async () => {\n console.error(\"no context provider for selectRowsWithFlashDiff\");\n },\n flashRows: () => {\n console.error(\"no context provider for flashRows\");\n },\n flashRowsDiff: async () => {\n console.error(\"no context provider for flashRows\");\n },\n ensureRowVisible: () => {\n console.error(\"no context provider for ensureRowVisible\");\n },\n ensureSelectedRowIsVisible: () => {\n console.error(\"no context provider for ensureSelectedRowIsVisible\");\n },\n sizeColumnsToFit: () => {\n console.error(\"no context provider for sizeColumnsToFit\");\n },\n editingCells: () => {\n console.error(\"no context provider for editingCells\");\n return false;\n },\n stopEditing: () => {\n console.error(\"no context provider for stopEditing\");\n },\n updatingCells: async () => {\n console.error(\"no context provider for modifyUpdating\");\n return false;\n },\n redrawRows: () => {\n console.error(\"no context provider for redrawRows\");\n },\n});\n","import { createContext } from \"react\";\n\nexport type GridUpdatingContextType = {\n checkUpdating: (fields: string | string[], id: number | string) => boolean;\n modifyUpdating: (field: string, ids: (number | string)[], fn: () => void | Promise<void>) => Promise<void>;\n};\n\nexport const GridUpdatingContext = createContext<GridUpdatingContextType>({\n checkUpdating: () => {\n console.error(\"Missing GridUpdatingContext\");\n return false;\n },\n modifyUpdating: async () => {\n console.error(\"Missing GridUpdatingContext\");\n },\n});\n","import { ReactElement, ReactNode, useContext, useRef } from \"react\";\nimport { GridApi, RowNode } from \"ag-grid-community\";\nimport { GridContext } from \"./GridContext\";\nimport { delay, difference, isEmpty, last, sortBy } from \"lodash-es\";\nimport { isNotEmpty } from \"../utils/util\";\nimport { GridUpdatingContext } from \"./GridUpdatingContext\";\nimport { GridBaseRow } from \"../components/Grid\";\n\ninterface GridContextProps {\n children: ReactNode;\n}\n\n/**\n * Context for AgGrid operations.\n * Make sure you wrap AgGrid in this.\n * Also, make sure the provider is created in a separate component, otherwise it won't be found.\n */\nexport const GridContextProvider = (props: GridContextProps): ReactElement => {\n const { modifyUpdating } = useContext(GridUpdatingContext);\n const gridApiRef = useRef<GridApi>();\n const idsBeforeUpdate = useRef<number[]>([]);\n\n /**\n * Has Grid api has been set?\n * Some ops in components may occur before onGridReady has been called,\n * and thus will need to check grid is ready before calling.\n */\n const gridReady = () => gridApiRef.current != null;\n\n /**\n * Set current ref to grid api.\n */\n const setGridApi = (_gridApi: GridApi | undefined) => {\n gridApiRef.current = _gridApi;\n };\n\n /**\n * Wraps things that require gridApi in common handling, for when gridApi not present.\n *\n * @param hasApiFn Execute when api is ready.\n * @param noApiFn Execute if api is not ready.\n */\n const gridApiOp = <T extends unknown, R extends unknown>(\n hasApiFn: (gridApi: GridApi) => T,\n noApiFn?: () => R,\n ): T | R => {\n if (!noApiFn) {\n noApiFn = (() => {}) as () => R;\n }\n const gridApi = gridApiRef.current;\n return gridApi ? hasApiFn(gridApi) : noApiFn();\n };\n\n /**\n * Set the quick filter value to grid.\n */\n const setQuickFilter = (quickFilter: string) => {\n gridApiOp((gridApi) => gridApi.setQuickFilter(quickFilter));\n };\n\n /**\n * Get all row id's in grid.\n */\n const _getAllRowIds = () => {\n const result: number[] = [];\n return gridApiOp(\n (gridApi) => {\n gridApi.forEachNode((node) => result.push(node.data.id));\n return result;\n },\n () => result,\n );\n };\n\n /**\n * Record all row id's before update so that we can select/flash the new rows after update.\n */\n const beforeUpdate = () => {\n idsBeforeUpdate.current = _getAllRowIds();\n };\n\n /**\n * Find new row ids\n * Uses beforeUpdate ids to find new nodes.\n */\n const _getNewNodes = (): RowNode[] => {\n return gridApiOp(\n (gridApi) =>\n difference(_getAllRowIds(), idsBeforeUpdate.current)\n .map((rowId) => gridApi.getRowNode(\"\" + rowId)) //\n .filter((r) => r) as RowNode[],\n () => [],\n );\n };\n\n /**\n * Get grid nodes via rowIds. If rowIds has no matching node the result may be smaller than expected.\n * This can happen if the grid has not re-rendered yet.\n *\n * @param rowIds Row ids to get from grid.\n */\n const _rowIdsToNodes = (rowIds: number[]): RowNode[] => {\n return gridApiOp(\n (gridApi) =>\n rowIds\n .map((rowId) => gridApi.getRowNode(\"\" + rowId)) //\n .filter((r) => r) as RowNode[],\n () => [] as RowNode[],\n );\n };\n\n /**\n * Internal method for selecting and flashing rows.\n *\n * @param rowIds RowIds to select and flash. If undefined a diff is done with beforeUpdate and current state to select\n * @param select Whether to select rows\n * @param flash Whether to flash rows\n * @param retryCount Table updates may not be present when this is called, so retry is needed.\n */\n const _selectRowsWithOptionalFlash = (\n rowIds: number[] | undefined,\n select: boolean,\n flash: boolean,\n retryCount = 5, // We retry for approximately 5x200ms=1s\n ) => {\n return gridApiOp((gridApi) => {\n const rowNodes = rowIds ? _rowIdsToNodes(rowIds) : _getNewNodes();\n const gridRowIdsNotUpdatedYet = rowIds && rowNodes.length !== rowIds.length; // rowIds are specified\n const gridRowIdsNotChangedYet = !rowIds && isEmpty(rowNodes); // rowIds are from beforeUpdate\n const gridHasNotUpdated = gridRowIdsNotUpdatedYet || gridRowIdsNotChangedYet;\n // After retry count expires we give-up and deselect all rows, then select any subset of rows that have updated\n if (gridHasNotUpdated && retryCount > 0) {\n delay(() => _selectRowsWithOptionalFlash(rowIds, select, flash, retryCount - 1), 250);\n return;\n }\n\n const rowsThatNeedSelecting = sortBy(\n rowNodes.filter((node) => !node.isSelected()),\n (node) => node.data.id,\n );\n const firstNode = rowsThatNeedSelecting[0];\n firstNode && gridApi.ensureNodeVisible(firstNode);\n if (select) {\n // Select rows that shouldn't be selected\n rowsThatNeedSelecting.forEach((node) => node.setSelected(true));\n // Unselect rows that shouldn't be selected\n gridApi.getSelectedNodes()?.forEach((node) => {\n if (node && !rowNodes.includes(node)) {\n node.setSelected(false);\n }\n });\n }\n if (flash) {\n delay(() => {\n try {\n gridApi.flashCells({ rowNodes });\n } catch {\n // ignore, flash cells sometimes throws errors as nodes have gone out of scope\n }\n }, 250);\n }\n });\n };\n\n const selectRowsById = (rowIds?: number[]) => _selectRowsWithOptionalFlash(rowIds, true, false);\n const selectRowsByIdWithFlash = (rowIds?: number[]) => _selectRowsWithOptionalFlash(rowIds, true, true);\n const flashRows = (rowIds?: number[]) => _selectRowsWithOptionalFlash(rowIds, false, true);\n\n const selectRowsDiff = async (fn: () => Promise<any>) => {\n beforeUpdate();\n await fn();\n _selectRowsWithOptionalFlash(undefined, true, false);\n };\n\n const selectRowsWithFlashDiff = async (fn: () => Promise<any>) => {\n beforeUpdate();\n await fn();\n _selectRowsWithOptionalFlash(undefined, true, true);\n };\n\n const flashRowsDiff = async (fn: () => Promise<any>) => {\n beforeUpdate();\n await fn();\n _selectRowsWithOptionalFlash(undefined, false, true);\n };\n\n const getSelectedRows = <T extends unknown>(): T[] => {\n return gridApiOp(\n (gridApi) => gridApi.getSelectedRows(),\n () => [],\n );\n };\n\n const getSelectedRowIds = (): number[] => getSelectedRows().map((row) => (row as any).id as number);\n\n const editingCells = (): boolean => {\n return gridApiOp(\n (gridApi) => isNotEmpty(gridApi.getEditingCells()),\n () => false,\n );\n };\n\n const ensureRowVisible = (id: number): void => {\n gridApiOp((gridApi) => {\n const node = gridApi.getRowNode(`${id}`);\n node && gridApi.ensureNodeVisible(node);\n });\n };\n\n /**\n * Scroll last selected row into view on grid sort change\n */\n const ensureSelectedRowIsVisible = (): void => {\n gridApiOp((gridApi) => {\n const selectedNodes = gridApi.getSelectedNodes();\n if (isEmpty(selectedNodes)) return;\n gridApi.ensureNodeVisible(last(selectedNodes));\n });\n };\n\n /**\n * Resize columns to fit container\n */\n const sizeColumnsToFit = (): void => {\n gridApiOp((gridApi) => {\n // Hide size columns to fit errors in tests\n document.body.clientWidth && gridApi.sizeColumnsToFit();\n });\n };\n\n const stopEditing = (): void => gridApiOp((gridApi) => gridApi.stopEditing());\n\n const updatingCells = async (\n props: { selectedRows: GridBaseRow[]; field?: string },\n fnUpdate: (selectedRows: any[]) => Promise<boolean>,\n setSaving?: (saving: boolean) => void,\n ): Promise<boolean> => {\n setSaving && setSaving(true);\n\n return await gridApiOp(async (gridApi) => {\n const selectedRows = props.selectedRows;\n\n let ok = false;\n await modifyUpdating(\n props.field ?? \"\",\n selectedRows.map((data) => data.id),\n async () => {\n // Need to refresh to get spinners to work on all rows\n gridApi.refreshCells({ rowNodes: props.selectedRows as RowNode[], force: true });\n ok = await fnUpdate(selectedRows);\n },\n );\n\n // async processes need to refresh their own rows\n gridApi.refreshCells({ rowNodes: selectedRows as RowNode[], force: true });\n\n if (ok) {\n const cell = gridApi.getFocusedCell();\n if (cell && gridApi.getFocusedCell() == null) {\n gridApi.setFocusedCell(cell.rowIndex, cell.column);\n }\n // This is needed to trigger postSortRowsHook\n gridApi.refreshClientSideRowModel();\n } else {\n // Don't set saving if ok as the form has already closed\n setSaving && setSaving(false);\n }\n return ok;\n });\n };\n\n const redrawRows = (rowNodes?: RowNode[]) => {\n gridApiOp((gridApi) => {\n gridApi.redrawRows(rowNodes ? { rowNodes } : undefined);\n });\n };\n\n return (\n <GridContext.Provider\n value={{\n gridReady,\n setGridApi,\n setQuickFilter,\n selectRowsById,\n selectRowsDiff,\n selectRowsByIdWithFlash,\n selectRowsWithFlashDiff,\n flashRows,\n flashRowsDiff,\n getSelectedRows,\n getSelectedRowIds,\n editingCells,\n ensureRowVisible,\n ensureSelectedRowIsVisible,\n sizeColumnsToFit,\n stopEditing,\n updatingCells,\n redrawRows,\n }}\n >\n {props.children}\n </GridContext.Provider>\n );\n};\n","import { ReactNode, useRef } from \"react\";\nimport { castArray, flatten, remove } from \"lodash-es\";\nimport { GridUpdatingContext } from \"./GridUpdatingContext\";\n\ninterface UpdatingContextProviderProps {\n children: ReactNode;\n}\n\nexport type GridUpdatingContextStatus = Record<string, (number | string)[] | undefined>;\n\ntype FieldName = string;\ntype IdList = (number | string)[];\ntype UpdatingBlock = Record<FieldName, IdList[]>;\n\nexport const GridUpdatingContextProvider = (props: UpdatingContextProviderProps) => {\n const updatingBlocks = useRef<UpdatingBlock>({});\n const updating = useRef<GridUpdatingContextStatus>({});\n\n const resetUpdating = () => {\n const mergedUpdatingBlocks: GridUpdatingContextStatus = {};\n for (const key in updatingBlocks.current) {\n mergedUpdatingBlocks[key] = flatten(updatingBlocks.current[key]);\n }\n updating.current = mergedUpdatingBlocks;\n };\n\n const modifyUpdating = async (field: string, ids: (number | string)[], fn: () => void | Promise<void>) => {\n const fieldUpdatingIds = updatingBlocks.current[field] ?? (updatingBlocks.current[field] = []);\n const idRef = [...ids];\n fieldUpdatingIds.push(idRef);\n resetUpdating();\n await fn();\n remove(fieldUpdatingIds, (idList) => idList === idRef);\n resetUpdating();\n };\n\n const checkUpdating = (fields: string | string[], id: number | string): boolean =>\n castArray(fields).some((f) => updating.current[f]?.includes(id));\n\n return (\n <GridUpdatingContext.Provider value={{ modifyUpdating, checkUpdating }}>\n {props.children}\n </GridUpdatingContext.Provider>\n );\n};\n","import { createContext, RefObject, useContext } from \"react\";\nimport { GridBaseRow } from \"../components/Grid\";\n\nexport interface PropsType {\n value: any;\n data: any;\n field: string;\n selectedRows: any[];\n updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;\n}\n\nexport interface GridPopoverContextType<RowType extends GridBaseRow> {\n anchorRef: RefObject<Element>;\n saving: boolean;\n setSaving: (saving: boolean) => void;\n field: keyof RowType;\n value: any;\n data: RowType;\n selectedRows: RowType[];\n updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;\n}\n\nexport const GridPopoverContext = createContext<GridPopoverContextType<any>>({\n anchorRef: { current: null },\n saving: false,\n setSaving: () => {},\n field: \"\",\n value: null,\n data: {} as GridBaseRow,\n selectedRows: [],\n updateValue: async () => false,\n});\n\nexport const useGridPopoverContext = <RowType extends GridBaseRow>() =>\n useContext<GridPopoverContextType<RowType>>(GridPopoverContext);\n","import { ReactNode, RefObject, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport { GridPopoverContext } from \"./GridPopoverContext\";\nimport { ICellEditorParams } from \"ag-grid-community\";\nimport { GridContext } from \"./GridContext\";\nimport { sortBy } from \"lodash-es\";\nimport { GridBaseRow } from \"../components/Grid\";\n\ninterface GridPopoverContextProps {\n props: ICellEditorParams;\n children: ReactNode;\n}\n\nexport const GridPopoverContextProvider = ({ props, children }: GridPopoverContextProps) => {\n const { getSelectedRows, updatingCells, stopEditing } = useContext(GridContext);\n const anchorRef = useRef<Element>(props.eGridCell);\n\n const [saving, setSaving] = useState(false);\n\n const { colDef } = props;\n const { cellEditorParams } = colDef;\n const multiEdit = cellEditorParams?.multiEdit ?? false;\n // Then item that is clicked on will always be first in the list\n const selectedRows = useMemo(\n () => (multiEdit ? sortBy(getSelectedRows(), (row) => row.id !== props.data.id) : [props.data as GridBaseRow]),\n [getSelectedRows, multiEdit, props.data],\n );\n const field = props.colDef?.field ?? \"\";\n\n const updateValue = useCallback(\n async (saveFn: (selectedRows: any[]) => Promise<boolean>): Promise<boolean> => {\n let result = false;\n if (!saving) {\n result = await updatingCells({ selectedRows, field }, saveFn, setSaving);\n if (result) stopEditing();\n }\n\n return result;\n },\n [field, saving, selectedRows, stopEditing, updatingCells],\n );\n\n return (\n <GridPopoverContext.Provider\n value={{\n anchorRef: anchorRef as any as RefObject<Element>,\n saving,\n setSaving,\n selectedRows,\n field,\n data: props.data,\n value: props.value,\n updateValue,\n }}\n >\n {children}\n </GridPopoverContext.Provider>\n );\n};\n","import { createContext } from \"react\";\n\nexport interface GridSubComponentContextType {\n value: any;\n data: any;\n setValue: (value: string) => void;\n setValid: (valid: boolean) => void;\n triggerSave: () => Promise<void>;\n}\n\nexport const GridSubComponentContext = createContext<GridSubComponentContextType>({\n value: \"GridSubComponentContext value no context\",\n data: {},\n setValue: () => {\n console.error(\"GridSubComponentContext setValue no context\");\n },\n setValid: () => {\n console.error(\"GridSubComponentContext setValid no context\");\n },\n triggerSave: async () => {\n console.error(\"GridSubComponentContext triggerSave no context\");\n },\n});\n","function toVal(mix) {\n\tvar k, y, str='';\n\tif (mix) {\n\t\tif (typeof mix === 'object') {\n\t\t\tif (Array.isArray(mix)) {\n\t\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\t\tif (mix[k] && (y = toVal(mix[k]))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (k in mix) {\n\t\t\t\t\tif (mix[k] && (y = toVal(k))) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof mix !== 'boolean' && !mix.call) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += mix;\n\t\t}\n\t}\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (x = toVal(arguments[i++])) {\n\t\t\tstr && (str += ' ');\n\t\t\tstr += x\n\t\t}\n\t}\n\treturn str;\n}\n","import { useCallback, useContext, useRef } from \"react\";\nimport { PostSortRowsParams } from \"ag-grid-community/dist/lib/entities/iCallbackParams\";\nimport { ColumnState } from \"ag-grid-community/dist/lib/columns/columnModel\";\nimport { isEmpty } from \"lodash-es\";\nimport { RowNode } from \"ag-grid-community\";\nimport { GridContext } from \"../contexts/GridContext\";\n\ninterface PostSortRowsHookProps {\n setStaleGrid: (stale: boolean) => void;\n}\n\n/**\n * Retains last sort order from via <AgGrid postRowSort>.\n * Then applies this sort until next sort column change.\n * Handles stale sort, when you edit a row but don't want to re-sort.\n */\nexport const usePostSortRowsHook = ({ setStaleGrid }: PostSortRowsHookProps) => {\n const { redrawRows } = useContext(GridContext);\n\n // On first run we need to init the first backed up sort order\n const initialised = useRef(false);\n\n // Used to detect sort order has changed since last run\n const lastSortOrderHash = useRef<string>(\"\");\n\n // Used to detect if sort order was the same, has the direction changed\n const previousRowSortIndexRef = useRef<Record<string, { index: number; hash: string } | undefined>>({});\n\n // stale sort is when there's a sort and user edits a row\n // this applies a class to the div wrapping the grid which in turn adds a * beside the sort arrow\n const sortWasStale = useRef(false);\n\n // Previous col sort is stored and reapplied if the sort direction changes on the same column and the sort was stale\n // As a sort on a stale row should just resort, not change sort direction\n const previousColSort = useRef<ColumnState[]>([]);\n\n const previousQuickFilter = useRef(\"\");\n\n return useCallback(\n ({ api, columnApi, nodes }: PostSortRowsParams) => {\n // Grid is destroyed\n if (!api || !columnApi) return;\n\n const previousRowSortIndex = previousRowSortIndexRef.current;\n\n const hashNode = (node: RowNode | undefined) => {\n return node ? JSON.stringify(node.data) : \"\";\n };\n\n const copyCurrentSortSettings = (): ColumnState[] =>\n columnApi.getColumnState().map((row) => ({ colId: row.colId, sort: row.sort, sortIndex: row.sortIndex }));\n\n const backupSortOrder = () => {\n for (const x in previousRowSortIndex) delete previousRowSortIndex[x];\n nodes.forEach((node, index) => (previousRowSortIndex[`${node.data.id}`] = { index, hash: hashNode(node) }));\n };\n\n // Check if column is the first sorted column. Note: column is preconfigured to sort its sortIndex is null not 1\n const isFirstSortColumn = (row: ColumnState) => row.sort && [0, null].includes(row.sortIndex ?? null);\n\n const isSameColumnAndDifferentSort = (col1: ColumnState | undefined, col2: ColumnState | undefined) =>\n col1 && col2 && col1.colId === col2.colId && col1.sort != col2.sort;\n\n const restorePreviousSortColumnState = () => columnApi.applyColumnState({ state: previousColSort.current });\n\n const sortNodesByPreviousSort = () => {\n nodes.sort(\n (a, b) =>\n (previousRowSortIndex[`${a.data.id}`]?.index ?? Number.MAX_SAFE_INTEGER) -\n (previousRowSortIndex[`${b.data.id}`]?.index ?? Number.MAX_SAFE_INTEGER),\n );\n };\n\n // On first load copy the current sort\n if (!initialised.current) {\n initialised.current = true;\n previousColSort.current = copyCurrentSortSettings();\n }\n\n const newSortOrder = JSON.stringify(copyCurrentSortSettings());\n let sortOrderChanged = newSortOrder != lastSortOrderHash.current;\n\n const quickFilter = (api as any).filterManager.quickFilter;\n if (previousQuickFilter.current != quickFilter) {\n previousQuickFilter.current = quickFilter;\n sortOrderChanged = true;\n }\n\n if (isEmpty(previousRowSortIndex)) {\n backupSortOrder();\n }\n\n if (sortOrderChanged) {\n const thisFirstCol = copyCurrentSortSettings().find(isFirstSortColumn);\n const previousFirstCol = previousColSort.current.find(isFirstSortColumn);\n\n // Change to sort can be: (in the context of stale sort do...)\n // - no sort to sorted (do nothing)\n // - asc to desc (resort as asc, and remove stale sort)\n // - desc to no sort (resort as desc, and remove stale sort)\n const wasSortChangedOnSameColumn =\n previousFirstCol && (!thisFirstCol || isSameColumnAndDifferentSort(previousFirstCol, thisFirstCol));\n\n // if sort was stale, and we're here, someone has clicked a stale sort order (^*) in the column header\n if (sortWasStale.current && wasSortChangedOnSameColumn) {\n // Sort was an existing priority 1 column\n // We want to re-sort with the old sort direction and clear stale sort\n sortWasStale.current = false;\n setStaleGrid(false);\n\n // trigger a recapture of sort order\n lastSortOrderHash.current = \"\";\n restorePreviousSortColumnState();\n } else {\n // Sort was on a different column so clear sort and sort like normal\n if (sortWasStale.current) {\n sortWasStale.current = false;\n setStaleGrid(false);\n }\n // Columns were sorted so retain the sort\n backupSortOrder();\n lastSortOrderHash.current = newSortOrder;\n }\n } else {\n let firstChangedNodeIndex = -1;\n let lastNewNode: RowNode | undefined = undefined;\n let changedRowCount = 0;\n let newRowCount = 0;\n let index = 0;\n for (const node of nodes) {\n const psr = previousRowSortIndex[`${node.data.id}`];\n if (psr) {\n if (psr.hash != hashNode(node)) {\n if (firstChangedNodeIndex === -1) firstChangedNodeIndex = index;\n changedRowCount++;\n }\n } else {\n lastNewNode = node;\n newRowCount++;\n }\n index++;\n }\n\n let wasStale = false;\n if (changedRowCount === 0 && newRowCount === 1) {\n // insert new row at end\n const newIndex = index - 1;\n previousRowSortIndex[`${lastNewNode?.data.id}`] = { index: newIndex, hash: hashNode(lastNewNode) };\n wasStale = true;\n } else if (changedRowCount === 2 && newRowCount === 0) {\n // This must be a swap rows\n backupSortOrder();\n wasStale = false;\n } else if (changedRowCount > 1 && newRowCount === 1) {\n // This must be a insert so, insert new row near the row that changed\n previousRowSortIndex[`${lastNewNode?.data.id}`] = {\n index: firstChangedNodeIndex + 0.5,\n hash: hashNode(lastNewNode),\n };\n wasStale = true;\n // For some reason AgGrid mis-positions the inserted row.\n lastNewNode && redrawRows();\n } else if (changedRowCount == 1 && newRowCount === 0) {\n // User edited one row so, do nothing, retain sort\n wasStale = true;\n } else if (changedRowCount !== 0 || newRowCount != 0) {\n // too many rows changed, resort\n backupSortOrder();\n }\n\n if (wasStale) {\n // Check if the sort order the aggrid passed matches our stale sort order\n const stillStale =\n Object.keys(previousRowSortIndex).length != nodes.length ||\n nodes.some((node, index) => previousRowSortIndex[`${node.data.id}`]?.index !== index);\n\n // If we haven't already processed a stale sort then...\n if (stillStale && !sortWasStale.current) {\n // backup sort state, so we can restore it when sort is clicked on a stale column\n previousColSort.current = copyCurrentSortSettings();\n sortWasStale.current = true;\n setStaleGrid(true);\n }\n }\n sortNodesByPreviousSort();\n }\n },\n [redrawRows, setStaleGrid],\n );\n};\n","import clsx from \"clsx\";\nimport { IHeaderParams } from \"ag-grid-community\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n/**\n * AgGrid's existing select header doesn't work the way we want.\n * If you have partial select then clicking the header checkbox will select all,\n * but we want to deselect all on partial select.\n */\nexport const GridHeaderSelect = ({ api }: IHeaderParams) => {\n // This is used to force an update on selection change\n const [updateCounter, setUpdateCounter] = useState(0);\n const selectedNodeCount = api.getSelectedRows().length;\n\n const clickHandler = useCallback(() => {\n setUpdateCounter(updateCounter + 1);\n }, [updateCounter]);\n\n useEffect(() => {\n api.addEventListener(\"selectionChanged\", clickHandler);\n return () => api.removeEventListener(\"selectionChanged\", clickHandler);\n }, [api, clickHandler]);\n\n const handleMultiSelect = () => {\n if (selectedNodeCount == 0) {\n api.selectAllFiltered();\n } else {\n api.deselectAll();\n }\n };\n\n const totalNodeCount = api.getModel().getRowCount();\n const partialSelect = selectedNodeCount != 0 && selectedNodeCount != totalNodeCount;\n const allSelected = selectedNodeCount != 0 && selectedNodeCount == totalNodeCount;\n\n return (\n <div\n className={clsx(\n \"ag-wrapper ag-input-wrapper ag-checkbox-input-wrapper\",\n partialSelect && \"ag-indeterminate\",\n allSelected && \"ag-checked\",\n )}\n onClick={handleMultiSelect}\n >\n <input\n type=\"checkbox\"\n className={\"ag-checkbox-input-wrapper\"}\n onChange={() => {\n /* do nothing */\n }}\n />\n </div>\n );\n};\n","import clsx from \"clsx\";\nimport { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { AgGridReact } from \"ag-grid-react\";\nimport { CellClickedEvent, ColDef } from \"ag-grid-community\";\nimport { CellEvent, GridReadyEvent, SelectionChangedEvent } from \"ag-grid-community/dist/lib/events\";\nimport { GridOptions } from \"ag-grid-community/dist/lib/entities/gridOptions\";\nimport { difference, last, xorBy } from \"lodash-es\";\nimport { GridContext } from \"../contexts/GridContext\";\nimport { usePostSortRowsHook } from \"./PostSortRowsHook\";\nimport { isNotEmpty } from \"../utils/util\";\nimport { GridHeaderSelect } from \"./gridHeader/GridHeaderSelect\";\nimport { GridUpdatingContext } from \"../contexts/GridUpdatingContext\";\n\nexport interface GridBaseRow {\n id: string | number;\n}\n\nexport interface GridProps {\n selectable?: boolean;\n dataTestId?: string;\n quickFilter?: boolean;\n quickFilterPlaceholder?: string;\n quickFilterValue?: string;\n domLayout?: GridOptions[\"domLayout\"];\n externalSelectedItems?: any[];\n setExternalSelectedItems?: (items: any[]) => void;\n defaultColDef?: GridOptions[\"defaultColDef\"];\n columnDefs: GridOptions[\"columnDefs\"];\n rowData: GridOptions[\"rowData\"];\n noRowsOverlayText?: string;\n postSortRows?: GridOptions[\"postSortRows\"];\n}\n\n/**\n * Wrapper for AgGrid to add commonly used functionality.\n */\nexport const Grid = (params: GridProps): JSX.Element => {\n const {\n gridReady,\n setGridApi,\n setQuickFilter,\n ensureRowVisible,\n selectRowsById,\n ensureSelectedRowIsVisible,\n sizeColumnsToFit,\n } = useContext(GridContext);\n const { checkUpdating } = useContext(GridUpdatingContext);\n\n const [internalQuickFilter, setInternalQuickFilter] = useState(\"\");\n const lastSelectedIds = useRef<number[]>([]);\n const [staleGrid, setStaleGrid] = useState(false);\n const postSortRows = usePostSortRowsHook({ setStaleGrid });\n\n /**\n * AgGrid checkbox select does not pass clicks within cell but not on the checkbox to checkbox.\n * This passes the event to the checkbox when you click anywhere in the cell.\n */\n const clickSelectorCheckboxWhenContainingCellClicked = useCallback(({ event }: CellClickedEvent) => {\n if (!event) return;\n const input = (event.target as Element).querySelector(\"input\");\n input?.dispatchEvent(event);\n }, []);\n\n /**\n * Ensure external selected items list is in sync with panel.\n */\n const synchroniseExternalStateToGridSelection = useCallback(\n ({ api }: SelectionChangedEvent) => {\n if (!params.externalSelectedItems || !params.setExternalSelectedItems) return;\n\n const selectedRows = api.getSelectedRows();\n // We don't want to update selected Items if it hasn't changed to prevent excess renders\n if (\n params.externalSelectedItems.length != selectedRows.length ||\n isNotEmpty(xorBy(selectedRows, params.externalSelectedItems, (row) => row.id))\n ) {\n params.setExternalSelectedItems([...selectedRows]);\n }\n },\n [params],\n );\n\n /**\n * Synchronise externally selected items to grid.\n * If new ids are selected scroll them into view.\n */\n const synchroniseExternallySelectedItemsToGrid = useCallback(() => {\n if (!gridReady()) return;\n if (!params.externalSelectedItems) return;\n\n const selectedIds = params.externalSelectedItems.map((row) => row.id) as number[];\n const lastNewId = last(difference(selectedIds, lastSelectedIds.current));\n if (lastNewId != null) ensureRowVisible(lastNewId);\n lastSelectedIds.current = selectedIds;\n selectRowsById(selectedIds);\n }, [params.externalSelectedItems, ensureRowVisible, gridReady, selectRowsById]);\n\n /**\n * Synchronise quick filter to grid\n */\n const updateQuickFilter = useCallback(() => {\n if (!gridReady()) return;\n if (params.quickFilter) {\n setQuickFilter(internalQuickFilter);\n return;\n }\n if (params.quickFilterValue == null) return;\n setQuickFilter(params.quickFilterValue);\n }, [gridReady, internalQuickFilter, params.quickFilter, params.quickFilterValue, setQuickFilter]);\n\n /**\n * Synchronise quick filter to grid\n */\n useEffect(() => {\n updateQuickFilter();\n }, [updateQuickFilter]);\n\n /**\n * Synchronise externally selected items to grid on externalSelectedItems change\n */\n useEffect(() => {\n synchroniseExternallySelectedItemsToGrid();\n }, [synchroniseExternallySelectedItemsToGrid]);\n\n const columnDefs = useMemo(\n (): GridOptions[\"columnDefs\"] =>\n params.selectable\n ? [\n {\n colId: \"selection\",\n editable: false,\n initialWidth: 35,\n minWidth: 35,\n maxWidth: 35,\n suppressSizeToFit: true,\n checkboxSelection: true,\n headerComponent: GridHeaderSelect,\n onCellClicked: clickSelectorCheckboxWhenContainingCellClicked,\n },\n ...(params.columnDefs as ColDef[]),\n ]\n : [...(params.columnDefs as ColDef[])],\n [clickSelectorCheckboxWhenContainingCellClicked, params.columnDefs, params.selectable],\n );\n\n const onGridReady = useCallback(\n (event: GridReadyEvent) => {\n setGridApi(event.api);\n synchroniseExternallySelectedItemsToGrid();\n updateQuickFilter();\n },\n [setGridApi, synchroniseExternallySelectedItemsToGrid, updateQuickFilter],\n );\n\n const noRowsOverlayComponent = useCallback(\n () => <span>{params.noRowsOverlayText ?? \"There are currently no rows\"}</span>,\n [params.noRowsOverlayText],\n );\n\n const refreshSelectedRows = useCallback((event: CellEvent): void => {\n // Force-refresh all selected rows to re-run class function, to update selection highlighting\n event.api.refreshCells({\n force: true,\n rowNodes: event.api.getSelectedNodes(),\n });\n }, []);\n\n const startCellEditing = useCallback(\n (event: CellEvent) => {\n if (!event.node.isSelected()) {\n event.node.setSelected(true, true);\n }\n // Cell already being edited, so don't re-edit until finished\n if (checkUpdating([event.colDef.field ?? \"\"], event.data.id)) {\n return;\n }\n if (event.rowIndex !== null) {\n event.api.startEditingCell({\n rowIndex: event.rowIndex,\n colKey: event.column.getColId(),\n });\n }\n },\n [checkUpdating],\n );\n\n const onCellDoubleClick = useCallback(\n (event: CellEvent) => {\n if (!event.colDef?.cellRendererParams?.singleClickEdit) {\n startCellEditing(event);\n }\n },\n [startCellEditing],\n );\n\n const onCellClicked = useCallback(\n (event: CellEvent) => {\n if (event.colDef?.cellRendererParams?.singleClickEdit) {\n startCellEditing(event);\n }\n },\n [startCellEditing],\n );\n\n const onCellKeyPress = useCallback(\n (e: CellEvent) => {\n if ((e.event as KeyboardEvent).key === \"Enter\") startCellEditing(e);\n },\n [startCellEditing],\n );\n\n const onCellEditingStopped = useCallback(\n (event: CellEvent) => {\n refreshSelectedRows(event);\n // The grid loses cell focus after editing\n const cell = event.api.getFocusedCell();\n cell && event.api.setFocusedCell(cell.rowIndex, cell.column);\n },\n [refreshSelectedRows],\n );\n\n // When rows added or removed then resize columns\n useEffect(() => {\n if (columnDefs?.length) {\n sizeColumnsToFit();\n }\n }, [columnDefs?.length, sizeColumnsToFit]);\n\n return (\n <div\n data-testid={params.dataTestId}\n className={clsx(\"Grid-container\", \"ag-theme-alpine\", staleGrid && \"Grid-sortIsStale\")}\n >\n {params.quickFilter && (\n <div className=\"Grid-quickFilter\">\n <input\n aria-label=\"Search\"\n className=\"lui-margin-top-xxs lui-margin-bottom-xxs Grid-quickFilterBox\"\n type=\"text\"\n placeholder={params.quickFilterPlaceholder ?? \"Search...\"}\n value={internalQuickFilter}\n onChange={(event): void => {\n setInternalQuickFilter(event.target.value);\n }}\n />\n </div>\n )}\n <AgGridReact\n getRowId={(params) => `${params.data.id}`}\n suppressRowClickSelection={true}\n rowSelection={\"multiple\"}\n suppressBrowserResizeObserver={true}\n colResizeDefault={\"shift\"}\n onFirstDataRendered={sizeColumnsToFit}\n onGridSizeChanged={sizeColumnsToFit}\n suppressClickEdit={true}\n onCellKeyPress={onCellKeyPress}\n onCellClicked={onCellClicked}\n onCellDoubleClicked={onCellDoubleClick}\n onCellEditingStarted={refreshSelectedRows}\n onCellEditingStopped={onCellEditingStopped}\n domLayout={params.domLayout}\n columnDefs={columnDefs}\n rowData={params.rowData}\n noRowsOverlayComponent={noRowsOverlayComponent}\n onGridReady={onGridReady}\n onSortChanged={ensureSelectedRowIsVisible}\n postSortRows={params.postSortRows ?? postSortRows}\n onSelectionChanged={synchroniseExternalStateToGridSelection}\n />\n </div>\n );\n};\n","import { CellClassFunc } from \"ag-grid-community\";\n\nexport const GenericMultiEditCellClass: CellClassFunc = (props): string => {\n const api = props.api;\n if (api == null) return \"\";\n\n const rowSelected = api\n .getSelectedNodes()\n .map((row) => row.id)\n .includes(props.node.id);\n\n return rowSelected && api.getEditingCells().some((cell) => cell.column.getColDef() === props.colDef)\n ? \"ag-selected-for-edit\"\n : \"\";\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./GridLoadableCell.scss\";\n\nimport { LuiMiniSpinner } from \"@linzjs/lui\";\nimport clsx from \"clsx\";\n\nexport const GridLoadableCell = (props: {\n isLoading: boolean;\n dataTestId?: string;\n children: JSX.Element | string;\n className?: string;\n}): JSX.Element => {\n if (props.isLoading) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n <LuiMiniSpinner size={22} divProps={{ role: \"status\", \"aria-label\": \"Loading\", style: { marginBottom: 4 } }} />\n </div>\n );\n }\n // only add test id into ONE of the columns in a grid. this way each row will have one unique id :)\n return (\n <div data-testid={props.dataTestId} className={clsx(\"GridLoadableCell-container\", props.className)}>\n {props.children}\n </div>\n );\n};\n","import { IconName } from \"@linzjs/lui/dist/components/LuiIcon/LuiIcon\";\nimport { LuiIcon } from \"@linzjs/lui\";\n\nexport const GridIcon = (props: { icon: IconName; title: string }): JSX.Element => (\n <LuiIcon\n name={props.icon}\n title={props.title}\n alt={props.title}\n size={\"md\"}\n className={`AgGridGenericCellRenderer-${props.icon}Icon`}\n />\n);\n","import \"../../styles/GridRenderGenericCell.scss\";\n\nimport { useContext } from \"react\";\nimport { GridUpdatingContext } from \"../../contexts/GridUpdatingContext\";\nimport { GridLoadableCell } from \"../GridLoadableCell\";\nimport { GridIcon } from \"../GridIcon\";\nimport { ColDef, ICellRendererParams } from \"ag-grid-community\";\nimport { ValueFormatterParams } from \"ag-grid-community/dist/lib/entities/colDef\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ColDefT } from \"../GridCell\";\n\nexport interface RowICellRendererParams<RowType extends GridBaseRow> extends ICellRendererParams {\n data: RowType;\n}\n\nexport interface GenericCellColDef<RowType extends GridBaseRow> extends ColDefT<RowType> {\n cellRendererParams?: GenericCellRendererParams<RowType>;\n}\n\nexport interface GenericCellRendererParams<RowType extends GridBaseRow> {\n singleClickEdit?: boolean;\n warning?: (props: RowICellRendererParams<RowType>) => string | boolean | null | undefined;\n info?: (props: RowICellRendererParams<RowType>) => string | boolean | null | undefined;\n}\n\nexport const GridRendererGenericCell = <RowType extends GridBaseRow>(props: ICellRendererParams): JSX.Element => {\n const { checkUpdating } = useContext(GridUpdatingContext);\n\n const colDef = props.colDef as ColDef;\n const cellRendererParams = colDef.cellRendererParams as GenericCellRendererParams<RowType> | undefined;\n const warningFn = cellRendererParams?.warning;\n const warningText = warningFn ? warningFn(props) : undefined;\n const infoFn = cellRendererParams?.info;\n const infoText = infoFn ? infoFn(props) : undefined;\n\n const defaultFormatter = (props: ValueFormatterParams): string => props.value;\n const formatter = colDef.valueFormatter ?? defaultFormatter;\n if (typeof formatter === \"string\") {\n console.error(\"valueFormatter must be a function\");\n return <span>valueFormatter must be a function</span>;\n }\n const formatted = formatter(props as ValueFormatterParams);\n\n return (\n <GridLoadableCell isLoading={checkUpdating(colDef.field ?? colDef.colId ?? \"\", props.data.id)}>\n <>\n {typeof warningText === \"string\" && <GridIcon icon={\"ic_warning\"} title={warningText} />}\n {typeof infoText === \"string\" && <GridIcon icon={\"ic_info\"} title={infoText} />}\n <span title={formatted}>{formatted}</span>\n </>\n </GridLoadableCell>\n );\n};\n","import { forwardRef, useContext } from \"react\";\nimport { GridBaseRow } from \"./Grid\";\nimport { GridUpdatingContext } from \"../contexts/GridUpdatingContext\";\nimport { GenericMultiEditCellClass } from \"./GenericCellClass\";\nimport {\n GenericCellColDef,\n GenericCellRendererParams,\n GridRendererGenericCell,\n} from \"./gridRender/GridRenderGenericCell\";\nimport { ColDef, ICellEditorParams, ICellRendererParams } from \"ag-grid-community\";\nimport { GridLoadableCell } from \"./GridLoadableCell\";\nimport { GridIcon } from \"./GridIcon\";\nimport { ValueFormatterParams } from \"ag-grid-community/dist/lib/entities/colDef\";\nimport { GridPopoverContextProvider } from \"../contexts/GridPopoverContextProvider\";\n\nexport interface GenericCellEditorProps<E> {\n multiEdit?: boolean;\n editor?: (editorProps: E) => JSX.Element;\n editorParams?: E;\n}\n\nexport const GridCellRenderer = (props: ICellRendererParams) => {\n const { checkUpdating } = useContext(GridUpdatingContext);\n const colDef = props.colDef as ColDef;\n\n const rendererParams = colDef.cellRendererParams as GenericCellRendererParams<any> | undefined;\n const warningFn = rendererParams?.warning;\n const warningText = warningFn ? warningFn(props) : undefined;\n const infoFn = rendererParams?.info;\n const infoText = infoFn ? infoFn(props) : undefined;\n\n return colDef?.cellRendererParams?.originalCellRenderer ? (\n <GridLoadableCell isLoading={checkUpdating(colDef.field ?? colDef.colId ?? \"\", props.data.id)}>\n <>\n {typeof warningText === \"string\" && <GridIcon icon={\"ic_warning\"} title={warningText} />}\n {typeof infoText === \"string\" && <GridIcon icon={\"ic_info\"} title={infoText} />}\n <colDef.cellRendererParams.originalCellRenderer {...props} />\n </>\n </GridLoadableCell>\n ) : (\n <GridRendererGenericCell {...props} />\n );\n};\n\n// This is so that typescript retains the row type to pass to the GridCells\nexport interface ColDefT<RowType extends GridBaseRow> extends ColDef {\n _?: RowType;\n editor?: (editorProps: any) => JSX.Element;\n}\n\n/*\n * All cells should use this\n */\nexport const GridCell = <RowType extends GridBaseRow, Props extends CellEditorCommon>(\n props: GenericCellColDef<RowType>,\n custom?: {\n multiEdit?: boolean;\n editor?: (editorProps: Props) => JSX.Element;\n editorParams?: Props;\n },\n): ColDefT<RowType> => {\n return {\n colId: props.field,\n sortable: !!(props?.field || props?.valueGetter),\n resizable: true,\n ...(custom?.editor && {\n cellClass: custom?.multiEdit ? GenericMultiEditCellClass : undefined,\n editable: props.editable ?? true,\n cellEditor: GenericCellEditorComponentWrapper(custom),\n }),\n suppressKeyboardEvent: (e) => {\n // It's important that aggrid doesn't trigger edit on enter\n // as the incorrect selected rows will be returned\n return e.event.key === \"Enter\";\n },\n ...(custom?.editorParams && {\n cellEditorParams: { ...custom.editorParams, multiEdit: custom.multiEdit },\n }),\n // Default value formatter, otherwise react freaks out on objects\n valueFormatter: (params: ValueFormatterParams) => {\n if (params.value == null) return \"-\";\n const types = [\"number\", \"boolean\", \"string\"];\n if (types.includes(typeof params.value)) return `${params.value}`;\n else return JSON.stringify(params.value);\n },\n ...props,\n cellRenderer: GridCellRenderer,\n cellRendererParams: {\n originalCellRenderer: props.cellRenderer,\n ...props.cellRendererParams,\n },\n };\n};\n\nexport interface CellEditorCommon {\n className?: string | undefined;\n}\n\nexport const GenericCellEditorComponentWrapper = (custom?: { editor?: (props: any) => JSX.Element }) => {\n return forwardRef(function GenericCellEditorComponentFr(cellEditorParams: ICellEditorParams, _) {\n return (\n <GridPopoverContextProvider props={cellEditorParams}>\n {<cellEditorParams.colDef.cellRenderer {...cellEditorParams} {...cellEditorParams.colDef.cellRendererParams} />}\n {custom?.editor && <custom.editor {...cellEditorParams} />}\n </GridPopoverContextProvider>\n );\n });\n};\n","import { LuiMiniSpinner } from \"@linzjs/lui\";\n\n/**\n * If loading is true this returns a loading spinner, otherwise it returns its children.\n */\nexport const ComponentLoadingWrapper = (props: {\n loading?: boolean;\n saving?: boolean;\n children: JSX.Element | undefined;\n className: string | undefined;\n}): JSX.Element => {\n return props.loading ? (\n <LuiMiniSpinner size={22} divProps={{ role: \"status\", [\"aria-label\"]: \"Loading\", style: { padding: 16 } }} />\n ) : (\n <div style={{ pointerEvents: props.saving ? \"none\" : \"inherit\" }} className={props.className}>\n {props.saving && (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n backgroundColor: \"rgba(64,64,64,0.1)\",\n zIndex: 1000,\n }}\n />\n )}\n {props.children}\n </div>\n );\n};\n","import { KeyboardEvent, KeyboardEventHandler, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { GridContext } from \"../contexts/GridContext\";\nimport { GridBaseRow } from \"./Grid\";\nimport { ControlledMenu } from \"../react-menu3\";\nimport { useGridPopoverContext } from \"../contexts/GridPopoverContext\";\nimport { MenuCloseEvent } from \"../react-menu3/types\";\n\nexport interface GridPopoverHookProps<RowType> {\n className: string | undefined;\n invalid?: () => Promise<boolean | string | null> | boolean | string | null;\n save?: (selectedRows: RowType[]) => Promise<boolean>;\n}\n\nexport const useGridPopoverHook = <RowType extends GridBaseRow>(props: GridPopoverHookProps<RowType>) => {\n const { stopEditing } = useContext(GridContext);\n const { anchorRef, saving, updateValue } = useGridPopoverContext<RowType>();\n const saveButtonRef = useRef<HTMLButtonElement>(null);\n const [isOpen, setOpen] = useState(false);\n\n useEffect(() => {\n setOpen(true);\n }, []);\n\n const triggerSave = useCallback(\n async (reason?: string) => {\n if (reason == \"cancel\") {\n stopEditing();\n return;\n }\n if (props.invalid && props.invalid()) {\n return;\n }\n\n if (!props.save) {\n stopEditing();\n } else if (props.save) {\n // forms that don't provide an invalid fn must wait until they have saved to close\n if (props.invalid) stopEditing();\n if (await updateValue(props.save)) {\n if (!props.invalid) stopEditing();\n }\n }\n },\n [props, stopEditing, updateValue],\n );\n\n const onlyInputKeyboardEventHandlers: {\n onKeyUp?: KeyboardEventHandler<HTMLElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLElement> | undefined;\n } = {\n onKeyUp: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n triggerSave().then();\n } else if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n onKeyDown: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n } else if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n !e.shiftKey && triggerSave().then();\n }\n },\n };\n const firstInputKeyboardEventHandlers: {\n onKeyUp?: KeyboardEventHandler<HTMLElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLElement> | undefined;\n } = {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n };\n\n const lastInputKeyboardEventHandlers: {\n onKeyUp?: KeyboardEventHandler<HTMLElement> | undefined;\n onKeyDown?: KeyboardEventHandler<HTMLElement> | undefined;\n } = {\n onKeyUp: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n triggerSave().then();\n } else if (e.key === \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n onKeyDown: (e: KeyboardEvent) => {\n const isTextArea = (e.currentTarget as any).type === \"textarea\";\n if (e.key === \"Enter\" && !isTextArea) {\n e.preventDefault();\n e.stopPropagation();\n } else if (e.key === \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n triggerSave().then();\n }\n },\n };\n\n const popoverWrapper = useCallback(\n (children: JSX.Element) => {\n return (\n <>\n {anchorRef.current && (\n <ControlledMenu\n state={isOpen ? \"open\" : \"closed\"}\n portal={true}\n unmountOnClose={true}\n anchorRef={anchorRef}\n saveButtonRef={saveButtonRef}\n menuClassName={\"step-ag-grid-react-menu\"}\n onClose={(event: MenuCloseEvent) => {\n // Prevent menu from closing when modals are invoked\n if (event.reason === \"blur\") return;\n triggerSave(event.reason).then();\n }}\n viewScroll={\"auto\"}\n dontShrinkIfDirectionIsTop={true}\n className={props.className}\n closeMenuExclusionClassName={\"ReactModal__Content\"}\n >\n {saving && ( // This is the overlay that prevents editing when the editor is saving\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n backgroundColor: \"rgba(64,64,64,0.1)\",\n zIndex: 1000,\n }}\n />\n )}\n {children}\n <button\n ref={saveButtonRef}\n onClick={() => {\n triggerSave().then();\n }}\n style={{ display: \"none\" }}\n />\n </ControlledMenu>\n )}\n </>\n );\n },\n [anchorRef, isOpen, props.className, saving, triggerSave],\n );\n\n return {\n popoverWrapper,\n triggerSave,\n onlyInputKeyboardEventHandlers,\n firstInputKeyboardEventHandlers,\n lastInputKeyboardEventHandlers,\n };\n};\n","import { useContext } from \"react\";\nimport { ColDef, ICellRendererParams } from \"ag-grid-community\";\nimport { GridUpdatingContext } from \"../../contexts/GridUpdatingContext\";\nimport { GridLoadableCell } from \"../GridLoadableCell\";\nimport { LuiIcon } from \"@linzjs/lui\";\nimport { Column } from \"ag-grid-community/dist/lib/entities/column\";\n\nexport const GridRenderPopoutMenuCell = (props: ICellRendererParams) => {\n const { checkUpdating } = useContext(GridUpdatingContext);\n const isLoading = checkUpdating(props.colDef?.field ?? \"\", props.data.id);\n const editable = props.colDef?.editable;\n const disabled = !(typeof editable === \"function\"\n ? editable({\n node: props.node,\n data: props.data,\n column: props.column as Column,\n colDef: props.colDef as ColDef,\n api: props.api,\n columnApi: props.columnApi,\n context: props.context,\n })\n : editable);\n\n return (\n <GridLoadableCell\n isLoading={isLoading}\n className={disabled ? `GridPopoutMenu-burgerDisabled` : `GridPopoutMenu-burger`}\n >\n <LuiIcon name={\"ic_more_vert\"} alt={\"More actions\"} size={\"md\"} />\n </GridLoadableCell>\n );\n};\n","'use strict';\n\n/* global setTimeout, clearTimeout */\n\nmodule.exports = function debounce(fn) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var lastCallAt = void 0;\n var deferred = void 0;\n var timer = void 0;\n var pendingArgs = [];\n return function debounced() {\n var currentWait = getWait(wait);\n var currentTime = new Date().getTime();\n\n var isCold = !lastCallAt || currentTime - lastCallAt > currentWait;\n\n lastCallAt = currentTime;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isCold && options.leading) {\n return options.accumulate ? Promise.resolve(fn.call(this, [args])).then(function (result) {\n return result[0];\n }) : Promise.resolve(fn.call.apply(fn, [this].concat(args)));\n }\n\n if (deferred) {\n clearTimeout(timer);\n } else {\n deferred = defer();\n }\n\n pendingArgs.push(args);\n timer = setTimeout(flush.bind(this), currentWait);\n\n if (options.accumulate) {\n var argsIndex = pendingArgs.length - 1;\n return deferred.promise.then(function (results) {\n return results[argsIndex];\n });\n }\n\n return deferred.promise;\n };\n\n function flush() {\n var thisDeferred = deferred;\n clearTimeout(timer);\n\n Promise.resolve(options.accumulate ? fn.call(this, pendingArgs) : fn.apply(this, pendingArgs[pendingArgs.length - 1])).then(thisDeferred.resolve, thisDeferred.reject);\n\n pendingArgs = [];\n deferred = null;\n }\n};\n\nfunction getWait(wait) {\n return typeof wait === 'function' ? wait() : wait;\n}\n\nfunction defer() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n//# sourceMappingURL=index.js.map","import \"../../styles/GridFormDropDown.scss\";\n\nimport { FocusableItem, MenuDivider, MenuHeader, MenuItem } from \"../../react-menu3\";\nimport { KeyboardEvent, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { GridContext } from \"../../contexts/GridContext\";\nimport { delay } from \"lodash-es\";\nimport debounce from \"debounce-promise\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\nimport { GridSubComponentContext } from \"contexts/GridSubComponentContext\";\nimport { ClickEvent, MenuInstance } from \"../../react-menu3/types\";\n\nexport interface GridPopoutEditDropDownSelectedItem<RowType, ValueType> {\n // Note the row that was clicked on will be first\n selectedRows: RowType[];\n value: ValueType;\n subComponentValue?: ValueType;\n}\n\ninterface FinalSelectOption<ValueType> {\n value: ValueType;\n label?: JSX.Element | string;\n disabled?: boolean | string;\n subComponent?: (props: any, ref: any) => any;\n}\n\nexport const MenuSeparatorString = \"_____MENU_SEPARATOR_____\";\nexport const MenuSeparator = Object.freeze({ value: MenuSeparatorString });\n\nexport const MenuHeaderString = \"_____MENU_HEADER_____\";\nexport const MenuHeaderItem = (title: string) => {\n return { label: title, value: MenuHeaderString };\n};\n\nexport type SelectOption<ValueType> = ValueType | FinalSelectOption<ValueType>;\n\nexport interface GridFormPopoutDropDownProps<RowType extends GridBaseRow, ValueType> extends CellEditorCommon {\n // This overrides CellEditorCommon to provide some common class options\n className?:\n | \"GridPopoverEditDropDown-containerSmall\"\n | \"GridPopoverEditDropDown-containerMedium\"\n | \"GridPopoverEditDropDown-containerLarge\"\n | \"GridPopoverEditDropDown-containerUnlimited\"\n | string\n | undefined;\n // local means the filter won't change if it's reloaded, reload means it does change\n filtered?: \"local\" | \"reload\";\n filterPlaceholder?: string;\n onSelectedItem?: (props: GridPopoutEditDropDownSelectedItem<RowType, ValueType>) => Promise<void>;\n onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<RowType, string>) => Promise<void>;\n options:\n | SelectOption<ValueType>[]\n | ((selectedRows: RowType[], filter?: string) => Promise<SelectOption<ValueType>[]> | SelectOption<ValueType>[]);\n optionsRequestCancel?: () => void;\n}\n\nconst fieldToString = (field: any) => {\n return typeof field == \"symbol\" ? field.toString() : `${field}`;\n};\n\nexport const GridFormDropDown = <RowType extends GridBaseRow, ValueType>(\n props: GridFormPopoutDropDownProps<RowType, ValueType>,\n) => {\n const { selectedRows, field, updateValue, data } = useGridPopoverContext<RowType>();\n const { stopEditing } = useContext(GridContext);\n\n // Save triggers during async action processing which triggers another selectItem(), this ref blocks that\n const hasSubmitted = useRef(false);\n const [filter, setFilter] = useState(\"\");\n const [filteredValues, setFilteredValues] = useState<any[]>([]);\n const optionsInitialising = useRef(false);\n const [options, setOptions] = useState<FinalSelectOption<ValueType>[] | null>(null);\n const subComponentIsValid = useRef(false);\n const [subSelectedValue, setSubSelectedValue] = useState<any>();\n const [selectedSubComponent, setSelectedSubComponent] = useState<FinalSelectOption<any> | null>(null);\n\n const selectItemHandler = useCallback(\n async (value: ValueType, subComponentValue?: ValueType): Promise<boolean> => {\n if (hasSubmitted.current || (subComponentValue !== undefined && !subComponentIsValid.current)) return false;\n hasSubmitted.current = true;\n\n return updateValue(async (selectedRows) => {\n const hasChanged = selectedRows.some((row) => row[field as keyof RowType] !== value);\n if (hasChanged) {\n if (props.onSelectedItem) {\n await props.onSelectedItem({ selectedRows, value, subComponentValue });\n } else {\n selectedRows.forEach((row) => (row[field as keyof RowType] = value));\n }\n }\n return true;\n });\n },\n [field, props, updateValue],\n );\n\n const selectFilterHandler = useCallback(\n async (value: string) =>\n updateValue(async (selectedRows) => {\n props.onSelectFilter && (await props.onSelectFilter({ selectedRows, value }));\n return true;\n }),\n [props, updateValue],\n );\n\n // Load up options list if it's async function\n useEffect(() => {\n if (options || optionsInitialising.current) return;\n optionsInitialising.current = true;\n let optionsConf = props.options ?? [];\n\n (async () => {\n if (typeof optionsConf == \"function\") {\n optionsConf = await optionsConf(selectedRows, filter);\n }\n\n const optionsList = optionsConf?.map((item) => {\n if (item == null || typeof item == \"string\" || typeof item == \"number\") {\n item = {\n value: item as unknown as ValueType,\n label: item,\n disabled: false,\n } as unknown as FinalSelectOption<ValueType>;\n }\n return item;\n }) as any as FinalSelectOption<ValueType>[];\n\n if (props.filtered) {\n // This is needed otherwise when filter input is rendered and sets autofocus\n // the mouse up of the double click edit triggers the cell to cancel editing\n delay(() => setOptions(optionsList), 100);\n } else {\n setOptions(optionsList);\n }\n optionsInitialising.current = false;\n })();\n }, [filter, options, props, selectedRows]);\n\n // Local filtering.\n useEffect(() => {\n if (props.filtered == \"local\") {\n if (options == null) return;\n setFilteredValues(\n options\n .map((option) => {\n if (option.label != null && typeof option.label !== \"string\") {\n console.error(\"Cannot filter non-string labels\", option);\n return undefined;\n }\n const str = (option.label as string) || \"\";\n return str.toLowerCase().indexOf(filter) === -1 ? option.value : undefined;\n })\n .filter((r) => r !== undefined),\n );\n }\n }, [props.filtered, filter, options]);\n\n const researchOnFilterChange = debounce(\n useCallback(() => {\n setOptions(null);\n }, []),\n 500,\n );\n\n const previousFilter = useRef<string>(filter);\n\n // Reload filtering.\n useEffect(() => {\n if (previousFilter.current != filter && props.filtered == \"reload\") {\n previousFilter.current = filter;\n props.optionsRequestCancel && props.optionsRequestCancel();\n researchOnFilterChange().then();\n }\n }, [filter, props, researchOnFilterChange]);\n\n const onFilterKeyDown = useCallback(\n async (e: KeyboardEvent) => {\n if (!options) return;\n if (e.key == \"Enter\" || e.key == \"Tab\") {\n const activeOptions = options.filter((option) => !filteredValues.includes(option.value));\n if (activeOptions.length == 1) {\n await selectItemHandler(activeOptions[0].value);\n stopEditing();\n } else if (props.onSelectFilter) {\n await selectFilterHandler(filter);\n stopEditing();\n } else {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n },\n [filteredValues, options, selectItemHandler, selectFilterHandler, stopEditing, filter, props],\n );\n\n const save = useCallback(async () => {\n // Handler for sub-selected value\n if (!selectedSubComponent) return true;\n if (selectedSubComponent.subComponent && !subComponentIsValid.current) return false;\n await selectItemHandler(selectedSubComponent.value as ValueType, subSelectedValue);\n return true;\n }, [selectItemHandler, selectedSubComponent, subSelectedValue]);\n\n const { popoverWrapper } = useGridPopoverHook({\n className: props.className,\n invalid: () => !!(selectedSubComponent && !subComponentIsValid.current),\n save,\n });\n return popoverWrapper(\n <>\n {props.filtered && (\n <div className={\"GridFormDropDown-filter\"}>\n <FocusableItem className={\"filter-item\"}>\n {({ ref }: any) => (\n <div style={{ display: \"flex\", width: \"100%\" }}>\n <input\n autoFocus\n className={\"free-text-input\"}\n style={{ border: \"0px\" }}\n ref={ref}\n type=\"text\"\n placeholder={props.filterPlaceholder ?? \"Placeholder\"}\n data-testid={\"filteredMenu-free-text-input\"}\n defaultValue={filter}\n onChange={(e) => setFilter(e.target.value.toLowerCase())}\n onKeyDown={(e) => onFilterKeyDown(e)}\n />\n </div>\n )}\n </FocusableItem>\n <MenuDivider key={`$$divider_filter`} />\n </div>\n )}\n <ComponentLoadingWrapper loading={!options} className={\"GridFormDropDown-options\"}>\n <>\n {options && options.length == filteredValues?.length && (\n <MenuItem key={`${fieldToString(field)}-empty`}>[Empty]</MenuItem>\n )}\n {options?.map((item: FinalSelectOption<ValueType | string>, index) =>\n item.value === MenuSeparatorString ? (\n <MenuDivider key={`$$divider_${index}`} />\n ) : item.value === MenuHeaderString ? (\n <MenuHeader key={`$$header_${index}`}>{item.label}</MenuHeader>\n ) : filteredValues.includes(item.value) ? null : (\n <div key={`menu-wrapper-${index}`}>\n <MenuItem\n key={`${fieldToString(field)}-${index}`}\n disabled={!!item.disabled}\n title={item.disabled && typeof item.disabled !== \"boolean\" ? item.disabled : \"\"}\n value={item.value}\n onClick={(e: ClickEvent) => {\n if (item.subComponent) {\n if (selectedSubComponent === item) {\n // toggle selection off\n setSelectedSubComponent(null);\n subComponentIsValid.current = true;\n } else {\n // toggle selection on\n setSelectedSubComponent(item);\n }\n e.keepOpen = true;\n } else {\n selectItemHandler(item.value as ValueType).then();\n }\n }}\n >\n {item.label ?? (item.value == null ? `<${item.value}>` : `${item.value}`)}\n {item.subComponent ? \"...\" : \"\"}\n </MenuItem>\n\n {item.subComponent && selectedSubComponent === item && (\n <FocusableItem className={\"LuiDeprecatedForms\"} key={`${item.label}_subcomponent`}>\n {(ref: MenuInstance) => (\n <GridSubComponentContext.Provider\n value={{\n data,\n value: subSelectedValue,\n setValue: (value: any) => {\n setSubSelectedValue(value);\n },\n setValid: (valid: boolean) => {\n subComponentIsValid.current = valid;\n },\n triggerSave: async () => {\n ref.closeMenu();\n },\n }}\n >\n {item.subComponent && (\n <item.subComponent key={`${fieldToString(field)}-${index}_subcomponent_inner`} />\n )}\n </GridSubComponentContext.Provider>\n )}\n </FocusableItem>\n )}\n </div>\n ),\n )}\n </>\n </ComponentLoadingWrapper>\n </>,\n );\n};\n","import \"../../styles/GridFormMultiSelect.scss\";\n\nimport { FocusableItem, MenuDivider, MenuItem } from \"../../react-menu3\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { delay, fromPairs, isEqual, omit, pick, toPairs } from \"lodash-es\";\nimport { LuiCheckboxInput } from \"@linzjs/lui\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { MenuSeparatorString } from \"./GridFormDropDown\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { ClickEvent } from \"../../react-menu3/types\";\nimport { GridSubComponentContext } from \"contexts/GridSubComponentContext\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\ninterface MultiFinalSelectOption<ValueType> {\n value: ValueType;\n label?: JSX.Element | string;\n subComponent?: (props: any) => JSX.Element;\n}\n\nexport type MultiSelectOption<ValueType> = ValueType | MultiFinalSelectOption<ValueType>;\n\nexport interface SelectedOptionResult<ValueType> extends MultiFinalSelectOption<ValueType> {\n subValue?: any;\n}\n\nexport interface GridFormMultiSelectProps<RowType extends GridBaseRow, ValueType> extends CellEditorCommon {\n className?:\n | \"GridMultiSelect-containerSmall\"\n | \"GridMultiSelect-containerMedium\"\n | \"GridMultiSelect-containerLarge\"\n | \"GridMultiSelect-containerUnlimited\"\n | string\n | undefined;\n filtered?: boolean;\n filterPlaceholder?: string;\n onSave?: (selectedRows: RowType[], selectedOptions: SelectedOptionResult<ValueType>[]) => Promise<boolean>;\n options:\n | MultiSelectOption<ValueType>[]\n | ((selectedRows: RowType[]) => Promise<MultiSelectOption<ValueType>[]> | MultiSelectOption<ValueType>[]);\n initialSelectedValues?: (selectedRows: RowType[]) => any[] | Record<string, null | any>;\n}\n\nexport const GridFormMultiSelect = <RowType extends GridBaseRow, ValueType>(\n props: GridFormMultiSelectProps<RowType, ValueType>,\n) => {\n const { selectedRows, data } = useGridPopoverContext<RowType>();\n\n const initialiseValues = useMemo(() => {\n const r = props.initialSelectedValues && props.initialSelectedValues(selectedRows);\n // convert array of strings to object<value,null>\n return Array.isArray(r) ? fromPairs(r.map((v) => [v, null])) : r;\n }, [props, selectedRows]);\n\n const subComponentIsValid = useRef<Record<string, boolean>>({});\n const [selectedValues, setSelectedValues] = useState<Record<string, null | any>>(() => initialiseValues ?? {});\n\n const [filter, setFilter] = useState(\"\");\n const [filteredValues, setFilteredValues] = useState<any[]>([]);\n const optionsInitialising = useRef(false);\n const [options, setOptions] = useState<MultiFinalSelectOption<ValueType>[]>();\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (props.onSave) {\n if (!options) {\n console.error(\"options not initialised\");\n return false;\n }\n\n const validations = pick(subComponentIsValid.current, Object.keys(selectedValues));\n const notValid = Object.values(validations).some((v) => !v);\n if (notValid) return false;\n\n const menuOptionSubValueResult = toPairs(selectedValues).map(([value, subValue]) => {\n const o = {\n ...options.find((o) => o.value == value),\n } as SelectedOptionResult<ValueType>;\n o.subValue = subValue;\n return o;\n });\n\n if (isEqual(initialiseValues, selectedValues)) {\n // No changes to save\n return true;\n }\n\n return await props.onSave(selectedRows, menuOptionSubValueResult);\n }\n return true;\n },\n [initialiseValues, options, props, selectedValues],\n );\n\n // Load up options list if it's async function\n useEffect(() => {\n if (options || optionsInitialising.current) return;\n optionsInitialising.current = true;\n let optionsConf = props.options ?? [];\n\n (async () => {\n if (typeof optionsConf == \"function\") {\n optionsConf = await optionsConf(selectedRows);\n }\n\n const optionsList = optionsConf?.map((item) => {\n if (item == null || typeof item === \"string\" || typeof item === \"number\") {\n item = { value: item as ValueType, label: item } as MultiFinalSelectOption<ValueType>;\n }\n return item;\n }) as any as MultiFinalSelectOption<ValueType>[];\n\n if (props.filtered) {\n // This is needed otherwise when filter input is rendered and sets autofocus\n // the mouse up of the double click edit triggers the cell to cancel editing\n delay(() => setOptions(optionsList), 100);\n } else {\n setOptions(optionsList);\n }\n optionsInitialising.current = false;\n })();\n }, [props.filtered, props.options, options, selectedRows]);\n\n useEffect(() => {\n if (!props.filtered || options == null) return;\n setFilteredValues(\n options\n .map((option) => {\n if (option.label != null && typeof option.label !== \"string\") {\n console.error(\"Cannot filter non-string labels\", option);\n return undefined;\n }\n const str = (option.label as string) || \"\";\n return str.toLowerCase().indexOf(filter.trim()) === -1 ? option.value : undefined;\n })\n .filter((r) => r !== undefined),\n );\n }, [props.filtered, filter, options]);\n\n const toggleValue = useCallback(\n (item: MultiFinalSelectOption<ValueType>) => {\n if (`${item.value}` in selectedValues) {\n setSelectedValues(omit(selectedValues, [`${item.value}`]));\n } else {\n setSelectedValues({ ...selectedValues, [`${item.value}`]: null });\n }\n },\n [selectedValues],\n );\n\n const { popoverWrapper, lastInputKeyboardEventHandlers, triggerSave } = useGridPopoverHook({\n className: props.className,\n save,\n });\n return popoverWrapper(\n <ComponentLoadingWrapper loading={!options} className={\"GridFormMultiSelect-container\"}>\n <>\n {options && props.filtered && (\n <>\n <FocusableItem className={\"filter-item\"} key={\"filter\"}>\n {({ ref }: any) => (\n <div style={{ display: \"flex\", width: \"100%\" }} className={\"GridFormMultiSelect-filter\"}>\n <input\n autoFocus\n className={\"free-text-input\"}\n style={{ border: \"0px\" }}\n ref={ref}\n type=\"text\"\n placeholder={props.filterPlaceholder ?? \"Placeholder\"}\n data-testid={\"filteredMenu-free-text-input\"}\n defaultValue={\"\"}\n onChange={(e) => setFilter(e.target.value.toLowerCase())}\n />\n </div>\n )}\n </FocusableItem>\n <MenuDivider key={`$$divider_filter`} />\n </>\n )}\n <div className={\"GridFormMultiSelect-options\"}>\n {options?.map((item, index) =>\n item.value === MenuSeparatorString ? (\n <MenuDivider key={`$$divider_${index}`} />\n ) : filteredValues.includes(item.value) ? null : (\n <div key={`${index}`}>\n <MenuItem\n onClick={(e: ClickEvent) => {\n e.keepOpen = true;\n toggleValue(item);\n }}\n {...lastInputKeyboardEventHandlers}\n >\n <LuiCheckboxInput\n isChecked={`${item.value}` in selectedValues}\n value={`${item.value}`}\n label={item.label ?? (item.value == null ? `<${item.value}>` : `${item.value}`)}\n inputProps={{\n onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n return false;\n },\n }}\n onChange={() => {\n /*Do nothing, change handled by menuItem*/\n }}\n />\n </MenuItem>\n\n {`${item.value}` in selectedValues && item.subComponent && (\n <FocusableItem className={\"LuiDeprecatedForms\"} key={`${item.value}_subcomponent`}>\n {(_: any) =>\n item.subComponent && (\n <GridSubComponentContext.Provider\n value={{\n data,\n value: selectedValues[`${item.value}`],\n setValue: (value: any) => {\n setSelectedValues({\n ...selectedValues,\n [`${item.value}`]: value,\n });\n },\n setValid: (valid: boolean) => {\n subComponentIsValid.current[`${item.value}`] = valid;\n },\n triggerSave,\n }}\n >\n <item.subComponent />\n </GridSubComponentContext.Provider>\n )\n }\n </FocusableItem>\n )}\n </div>\n ),\n )}\n </div>\n </>\n </ComponentLoadingWrapper>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormMultiSelect, GridFormMultiSelectProps } from \"../gridForm/GridFormMultiSelect\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoutEditMultiSelect = <RowType extends GridBaseRow, ValueType>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormMultiSelectProps<RowType, ValueType>>,\n): ColDefT<RowType> =>\n GridCell(colDef, {\n editor: GridFormMultiSelect,\n ...props,\n editorParams: {\n className: \"GridMultiSelect-containerMedium\",\n ...(props.editorParams as GridFormMultiSelectProps<RowType, ValueType>),\n },\n });\n","import { GridBaseRow } from \"../Grid\";\nimport { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { FocusableItem, MenuDivider, MenuItem } from \"../../react-menu3\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { GridSubComponentContext } from \"../../contexts/GridSubComponentContext\";\nimport { ClickEvent } from \"../../react-menu3/types\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\nexport interface GridFormPopoutMenuProps<RowType extends GridBaseRow> extends CellEditorCommon {\n options: (selectedRows: RowType[]) => Promise<MenuOption<RowType>[]>;\n defaultAction?: (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => Promise<void>;\n}\n\n/** Menu configuration types **/\nexport const PopoutMenuSeparator = Object.freeze({ __isMenuSeparator__: true });\n\ninterface MenuSeparatorType {\n __isMenuSeparator__: boolean;\n}\n\nexport interface SelectedMenuOptionResult<RowType extends GridBaseRow> extends MenuOption<RowType> {\n subValue: any;\n}\n\nexport interface MenuOption<RowType extends GridBaseRow> {\n label: JSX.Element | string | MenuSeparatorType;\n action?: (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => Promise<void>;\n disabled?: string | boolean;\n supportsMultiEdit: boolean;\n hidden?: boolean;\n subComponent?: (props: any) => JSX.Element;\n}\n\n/**\n * NOTE: If the popout menu doesn't appear on single click when also selecting row it's because\n * you need a useMemo around your columnDefs\n */\nexport const GridFormPopoverMenu = <RowType extends GridBaseRow>(props: GridFormPopoutMenuProps<RowType>) => {\n const { selectedRows, updateValue, data } = useGridPopoverContext<RowType>();\n\n const optionsInitialising = useRef(false);\n const [options, setOptions] = useState<MenuOption<RowType>[]>();\n\n // Save triggers during async action processing which triggers another action(), this ref blocks that\n const actionProcessing = useRef(false);\n const [subComponentSelected, setSubComponentSelected] = useState<MenuOption<RowType> | null>(null);\n const subComponentIsValid = useRef(false);\n const [subSelectedValue, setSubSelectedValue] = useState<any>();\n\n const defaultAction = useCallback(\n async (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => {\n if (props.defaultAction) await props.defaultAction(selectedRows, menuOption);\n else console.error(`No action specified for ${menuOption.label} menu options`);\n },\n [props],\n );\n\n // Load up options list if it's async function\n useEffect(() => {\n if (options || optionsInitialising.current) return;\n optionsInitialising.current = true;\n const optionsConf = props.options ?? [];\n\n (async () => {\n const newOptions = typeof optionsConf == \"function\" ? await optionsConf(selectedRows) : optionsConf;\n setOptions(newOptions);\n if (!props.defaultAction) {\n const anyOptionsAreMissingAction = newOptions.some((option) => !option.action);\n if (anyOptionsAreMissingAction) {\n console.error(\"There's no default action handler and some Menu options are missing an action handler\", {\n invalidMenuOptions: newOptions.filter((option) => !option.action),\n });\n }\n }\n optionsInitialising.current = false;\n })();\n }, [options, props.defaultAction, props.options, selectedRows]);\n\n const actionClick = useCallback(\n async (menuOption: MenuOption<RowType>) => {\n actionProcessing.current = true;\n return updateValue(async () => {\n const result = { ...menuOption, subValue: subSelectedValue };\n await (menuOption.action ?? defaultAction)(selectedRows, result);\n actionProcessing.current = false;\n return true;\n });\n },\n [defaultAction, selectedRows, subSelectedValue, updateValue],\n );\n\n const onMenuItemClick = useCallback(\n (e: ClickEvent, item: MenuOption<RowType>) => {\n if (item.subComponent) {\n subComponentIsValid.current = false;\n setSubSelectedValue(null);\n setSubComponentSelected(subComponentSelected === item ? null : item);\n e.keepOpen = true;\n } else {\n actionClick(item).then();\n e.keepOpen = true;\n }\n },\n [actionClick, subComponentSelected],\n );\n\n const selectedRowCount = selectedRows.length;\n\n const filteredOptions = options?.filter((menuOption) => {\n return menuOption.label === PopoutMenuSeparator || selectedRowCount === 1 || menuOption.supportsMultiEdit;\n });\n\n const save = useCallback(async () => {\n // if a subcomponent is open we assume that it's meant to be saved.\n if (!actionProcessing.current && subComponentSelected) {\n if (!subComponentIsValid.current) return false;\n await actionClick(subComponentSelected);\n return false;\n }\n // Otherwise assume it's a cancel, either way we close the menu\n return true;\n }, [actionClick, subComponentSelected]);\n\n const { popoverWrapper, triggerSave } = useGridPopoverHook({ className: props.className, save });\n\n return popoverWrapper(\n <ComponentLoadingWrapper loading={!filteredOptions} className={\"GridFormPopupMenu\"}>\n <>\n {options?.map((item, index) =>\n item.label === PopoutMenuSeparator ? (\n <MenuDivider key={`$$divider_${index}`} />\n ) : (\n !item.hidden && (\n <Fragment key={`${item.label}`}>\n <MenuItem\n key={`${item.label}`}\n onClick={(e: ClickEvent) => onMenuItemClick(e, item)}\n disabled={!!item.disabled || !filteredOptions?.includes(item)}\n title={item.disabled && typeof item.disabled !== \"boolean\" ? item.disabled : \"\"}\n >\n {item.label as JSX.Element | string}\n </MenuItem>\n {item.subComponent && subComponentSelected === item && (\n <FocusableItem className={\"LuiDeprecatedForms\"} key={`${item.label}_subcomponent`}>\n {(_: any) =>\n item.subComponent && (\n <GridSubComponentContext.Provider\n value={{\n data,\n value: subSelectedValue,\n setValue: (value: any) => {\n setSubSelectedValue(value);\n },\n setValid: (valid: boolean) => {\n subComponentIsValid.current = valid;\n },\n triggerSave,\n }}\n >\n <item.subComponent />\n </GridSubComponentContext.Provider>\n )\n }\n </FocusableItem>\n )}\n </Fragment>\n )\n ),\n )}\n </>\n </ComponentLoadingWrapper>,\n );\n};\n","import \"./GridPopoverMenu.scss\";\n\nimport { GenericMultiEditCellClass } from \"../GenericCellClass\";\nimport { GridBaseRow } from \"../Grid\";\nimport { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridFormPopoverMenu, GridFormPopoutMenuProps } from \"../gridForm/GridFormPopoverMenu\";\nimport { GridRenderPopoutMenuCell } from \"../gridRender/GridRenderPopoutMenuCell\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\n/**\n * Popout burger menu\n */\nexport const GridPopoverMenu = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n custom: GenericCellEditorProps<GridFormPopoutMenuProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell<RowType, GridFormPopoutMenuProps<RowType>>(\n {\n maxWidth: 40,\n editable: colDef.editable != null ? colDef.editable : true,\n cellStyle: { justifyContent: \"flex-end\" },\n cellRenderer: GridRenderPopoutMenuCell,\n cellClass: custom?.multiEdit ? GenericMultiEditCellClass : undefined,\n ...colDef,\n cellRendererParams: {\n // Menus open on single click, this parameter is picked up in Grid.tsx\n singleClickEdit: true,\n },\n },\n {\n editor: GridFormPopoverMenu,\n ...custom,\n },\n );\n","import { ValueFormatterParams } from \"ag-grid-community/dist/lib/entities/colDef\";\n\nexport const bearingValueFormatter = (params: ValueFormatterParams): string => {\n const value = typeof params.value == \"string\" ? parseFloat(params.value) : params.value;\n if (value == null) {\n return \"-\";\n }\n return convertDDToDMS(value, false, false);\n};\n\nexport const bearingCorrectionValueFormatter = (params: ValueFormatterParams): string => {\n const value = params.value;\n if (value == null) {\n return \"-\";\n }\n if (typeof value === \"string\") {\n return convertDDToDMS(bearingNumberParser(value), true, true);\n }\n return convertDDToDMS(value, true, true);\n};\n\nexport const bearingNumberParser = (value: string): number | null => {\n if (value === \"\") return null;\n return parseFloat(value);\n};\n\nconst validMaskForDmsBearing = /^((-)?\\d+)?(\\.([0-5](\\d([0-5](\\d(\\d+)?)?)?)?)?)?$/;\nexport const bearingStringValidator = (\n value: string,\n customValidate?: (value: number | null) => string | null,\n): string | null => {\n value = value.trim();\n if (value === \"\") return null;\n const match = value.match(validMaskForDmsBearing);\n if (!match) return \"Bearing must be a positive number in D.MMSSS format\";\n const decimalPart = match[4];\n if (decimalPart != null && decimalPart.length > 5) {\n return \"Bearing has a maximum of 5 decimal places\";\n }\n\n const bearing = parseFloat(value);\n return customValidate ? customValidate(bearing) : null;\n};\n\n// Decimal-ish degrees to Degrees Minutes Seconds converter\nexport const convertDDToDMS = (dd: number | null, showPositiveSymbol = true, addTrailingZeros = true): string => {\n if (dd == null) return \"–\";\n\n if (dd === 0) addTrailingZeros = false;\n\n // toFixed rounds parts up greater than 60, which has to be corrected below\n const [bearingWholeString, bearingDecimalString] = dd.toFixed(5).split(\".\");\n\n let bearingWhole = Math.abs(parseInt(bearingWholeString));\n let minNumeric = parseInt(bearingDecimalString?.substring(0, 2));\n let secNumeric = parseInt(bearingDecimalString?.substring(2, 4));\n\n // If the toFixed caused rounding beyond 60 minutes/seconds then apply the carry\n if (secNumeric >= 60) {\n minNumeric++;\n secNumeric -= 60;\n }\n if (minNumeric >= 60) {\n bearingWhole++;\n minNumeric -= 60;\n }\n if (bearingWhole >= 360) {\n bearingWhole -= 360;\n }\n\n const minString = minNumeric.toString().padStart(2, \"0\");\n const secString = secNumeric.toString().padStart(2, \"0\");\n const deciSecString = bearingDecimalString?.substring(4, 5);\n\n let dmsString = `${showPositiveSymbol && dd > 0 ? \"+\" : \"\"}${dd < 0 ? \"-\" : \"\"}${bearingWhole}°`;\n if (addTrailingZeros || deciSecString != \"0\") {\n dmsString += `\\xa0${minString}'\\xa0${secString}.${deciSecString}\"`; // \"\\xa0\" is here for non-breaking space\n } else if (secNumeric != 0) {\n dmsString += `\\xa0${minString}'\\xa0${secString}\"`;\n } else {\n dmsString += `\\xa0${minString}'`;\n }\n\n return dmsString;\n};\n","import \"./TextInputFormatted.scss\";\n\nimport { DetailedHTMLProps, InputHTMLAttributes } from \"react\";\n\nimport clsx from \"clsx\";\nimport { LuiIcon } from \"@linzjs/lui\";\nimport { omit } from \"lodash-es\";\n\nexport interface LuiTextInputProps extends DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> {\n // overrides value in base class to be string type only\n value: string;\n\n // Custom fields\n helpText?: string;\n error?: string | boolean | null;\n formatted?: string;\n}\n\nexport const TextInputFormatted = (props: LuiTextInputProps): JSX.Element => {\n return (\n <div className={clsx(\"LuiTextInput Grid-popoverContainer\", props.error && \"hasError\", props.className)}>\n <span className=\"LuiTextInput-inputWrapper\">\n {/* wrapper div used for error styling */}\n <input\n type={\"text\"}\n spellCheck={true}\n defaultValue={props.value}\n {...omit(props, [\"error\", \"value\", \"helpText\", \"formatted\", \"className\"])}\n className={\"LuiTextInput-input\"}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n props.onMouseEnter && props.onMouseEnter(e);\n }}\n />\n <span className={\"LuiTextInput-formatted\"}>{props.formatted}</span>\n </span>\n\n {props.error && (\n <span className=\"LuiTextInput-error\">\n <LuiIcon alt=\"error\" name=\"ic_error\" className=\"LuiTextInput-error-icon\" size=\"sm\" status=\"error\" />\n {props.error}\n </span>\n )}\n\n {props.helpText && !props.error && (\n <span\n style={{\n fontSize: \"0.7rem\",\n }}\n >\n {props.helpText}\n </span>\n )}\n </div>\n );\n};\n","import \"../../styles/GridFormEditBearing.scss\";\n\nimport { useCallback, useMemo, useState } from \"react\";\nimport { GridBaseRow } from \"../Grid\";\nimport { TextInputFormatted } from \"../../lui/TextInputFormatted\";\nimport { bearingNumberParser, bearingStringValidator, convertDDToDMS } from \"../../utils/bearing\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\nexport interface GridFormEditBearingProps<RowType extends GridBaseRow> extends CellEditorCommon {\n placeHolder?: string;\n range?: (value: number | null) => string | null;\n onSave?: (selectedRows: RowType[], value: number | null) => Promise<boolean>;\n}\n\nexport const GridFormEditBearing = <RowType extends GridBaseRow>(props: GridFormEditBearingProps<RowType>) => {\n const { field, value: initialValue } = useGridPopoverContext<RowType>();\n\n // This clears out any scientific precision\n const defaultValue = useMemo(\n () => (initialValue == null ? \"\" : parseFloat(parseFloat(initialValue).toFixed(10)).toString()),\n [initialValue],\n );\n\n const [value, setValue] = useState<string>(defaultValue);\n\n const invalid = useCallback(() => bearingStringValidator(value, props.range), [props.range, value]);\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n const parsedValue = bearingNumberParser(value);\n // Value didn't change so don't save just cancel\n if (parsedValue === bearingNumberParser(defaultValue)) {\n return true;\n }\n\n if (props.onSave) {\n return await props.onSave(selectedRows, parsedValue);\n } else {\n if (field == null) {\n console.error(\"field is not defined in ColDef\");\n } else {\n selectedRows.forEach((row) => {\n row[field] = parsedValue as any;\n });\n }\n }\n return true;\n },\n [defaultValue, field, props, value],\n );\n const { popoverWrapper, onlyInputKeyboardEventHandlers } = useGridPopoverHook({\n className: props.className,\n invalid,\n save,\n });\n\n return popoverWrapper(\n <div className={\"GridFormEditBearing-input Grid-popoverContainer\"}>\n <TextInputFormatted\n value={defaultValue}\n onChange={(e) => {\n setValue(e.target.value.trim());\n }}\n autoFocus={true}\n placeholder={props.placeHolder}\n {...onlyInputKeyboardEventHandlers}\n formatted={bearingStringValidator(value, props.range) ? \"?\" : convertDDToDMS(bearingNumberParser(value))}\n error={bearingStringValidator(value, props.range)}\n helpText={\"Press enter or tab to save\"}\n />\n </div>,\n );\n};\n","import { bearingCorrectionValueFormatter, bearingValueFormatter } from \"../../utils/bearing\";\nimport { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridFormEditBearing, GridFormEditBearingProps } from \"../gridForm/GridFormEditBearing\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverEditBearingLike = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormEditBearingProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell(\n {\n initialWidth: 65,\n maxWidth: 150,\n valueFormatter: bearingValueFormatter,\n ...colDef,\n },\n {\n editor: GridFormEditBearing,\n ...props,\n },\n );\n\nexport const GridPopoverEditBearing = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormEditBearingProps<RowType>>,\n): ColDefT<RowType> =>\n GridPopoverEditBearingLike(\n { valueFormatter: bearingValueFormatter, ...colDef },\n {\n multiEdit: !!props.multiEdit,\n editorParams: {\n placeHolder: \"Enter bearing correction\",\n range: (value: number | null) => {\n if (value === null) return \"Bearing correction is required\";\n if (value >= 360) return \"Bearing correction must be less than 360 degrees\";\n if (value < 0) return \"Bearing correction must not be negative\";\n return null;\n },\n ...props.editorParams,\n },\n },\n );\n\nexport const GridPopoverEditBearingCorrection = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormEditBearingProps<RowType>>,\n): ColDefT<RowType> =>\n GridPopoverEditBearingLike(\n { valueFormatter: bearingCorrectionValueFormatter, ...colDef },\n {\n multiEdit: !!props.multiEdit,\n editorParams: {\n placeHolder: \"Enter bearing correction\",\n range: (value: number | null) => {\n if (value === null) return \"Bearing is required\";\n if (value >= 360) return \"Bearing must be less than 360 degrees\";\n if (value <= -180) return \"Bearing must be greater then -180 degrees\";\n return null;\n },\n ...props.editorParams,\n },\n },\n );\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormDropDown, GridFormPopoutDropDownProps } from \"../gridForm/GridFormDropDown\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverEditDropDown = <RowType extends GridBaseRow, ValueType>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormPopoutDropDownProps<RowType, ValueType>>,\n): ColDefT<RowType> =>\n GridCell(colDef, {\n editor: GridFormDropDown,\n ...props,\n editorParams: {\n // Defaults to medium size container\n className: \"GridPopoverEditDropDown-containerMedium\",\n ...(props.editorParams as GridFormPopoutDropDownProps<RowType, ValueType>),\n },\n });\n","import clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport { ComponentLoadingWrapper } from \"../ComponentLoadingWrapper\";\nimport { GridBaseRow } from \"../Grid\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\n\nexport interface GridFormMessageProps<RowType extends GridBaseRow> extends CellEditorCommon {\n message: (selectedRows: RowType[]) => Promise<string | JSX.Element> | string | JSX.Element;\n}\n\nexport const GridFormMessage = <RowType extends GridBaseRow>(props: GridFormMessageProps<RowType>) => {\n const { selectedRows } = useGridPopoverContext<RowType>();\n\n const [message, setMessage] = useState<string | JSX.Element | null>(null);\n const { popoverWrapper } = useGridPopoverHook({ className: props.className });\n\n useEffect(() => {\n (async () => {\n setMessage(await props.message(selectedRows));\n })().then();\n }, [props, selectedRows]);\n\n return popoverWrapper(\n <ComponentLoadingWrapper loading={message === null} className={clsx(\"GridFormMessage-container\", props.className)}>\n <>{message}</>\n </ComponentLoadingWrapper>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridFormMessage, GridFormMessageProps } from \"../gridForm/GridFormMessage\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverMessage = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n props: GenericCellEditorProps<GridFormMessageProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell(\n {\n resizable: false,\n ...colDef,\n cellRendererParams: {\n singleClickEdit: true,\n ...colDef.cellRendererParams,\n },\n },\n {\n editor: GridFormMessage,\n ...props,\n },\n );\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { InputHTMLAttributes, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { LuiIcon } from \"@linzjs/lui\";\nimport { v4 as uuidVersion4 } from \"uuid\";\nimport { omit } from \"lodash-es\";\n\nexport const useGenerateOrDefaultId = (idFromProps?: string) => {\n const [id] = useState(idFromProps ? idFromProps : uuidVersion4());\n return id;\n};\n\nexport interface LuiTextAreaInputProps extends InputHTMLAttributes<HTMLTextAreaElement> {\n // overrides value in base class to be string type only\n value: string;\n\n // Custom fields\n label?: JSX.Element | string;\n mandatory?: boolean;\n helpText?: string;\n error?: string | boolean | null;\n}\n\nexport const TextAreaInput = (props: LuiTextAreaInputProps) => {\n const id = useGenerateOrDefaultId(props?.id);\n\n return (\n <div\n className={clsx(\n \"LuiTextAreaInput Grid-popoverContainer\",\n props.disabled ? \"isDisabled\" : \"\",\n props.error ? \"hasError\" : \"\",\n props.className,\n )}\n >\n <label htmlFor={id}>\n {props.mandatory != null && <span className=\"LuiTextAreaInput-mandatory\">*</span>}\n {props.label != null && <span className=\"LuiTextAreaInput-label\">{props.label}</span>}\n <div className=\"LuiTextAreaInput-wrapper\">\n {/* wrapper div used for error styling */}\n <textarea\n rows={5}\n {...omit(props, [\"error\", \"value\", \"helpText\", \"formatted\", \"className\"])}\n id={id}\n value={props.value ?? \"\"}\n spellCheck={true}\n onMouseEnter={(e) => {\n if (document.activeElement != e.currentTarget) {\n e.currentTarget.focus();\n e.currentTarget.selectionStart = e.currentTarget.value.length;\n }\n props.onMouseEnter && props.onMouseEnter(e);\n }}\n >\n {props.value}\n </textarea>\n </div>\n </label>\n\n {/* Error message */}\n {props.error && (\n <span className=\"LuiTextAreaInput-error\">\n <LuiIcon alt=\"error\" name=\"ic_error\" className=\"LuiTextAreaInput-error-icon\" size=\"sm\" status=\"error\" />\n {props.error}\n </span>\n )}\n\n {props.helpText && !props.error && (\n <span\n style={{\n fontSize: \"0.7rem\",\n }}\n >\n {props.helpText}\n </span>\n )}\n </div>\n );\n};\n","import { GridBaseRow } from \"../components/Grid\";\n\nexport interface TextInputValidatorProps<RowType extends GridBaseRow> {\n required?: boolean;\n maxLength?: number;\n validate?: (value: string, data: RowType) => string | null;\n}\n\nexport const TextInputValidator = <RowType extends GridBaseRow>(\n props: TextInputValidatorProps<RowType>,\n value: string | null,\n data: RowType,\n) => {\n if (value == null) return null;\n\n // This can happen because subcomponent is invoked without type safety\n if (typeof value !== \"string\") {\n console.error(\"Value is not a string\", value);\n }\n if (props.required && value.length === 0) {\n return `Some text is required`;\n }\n if (props.maxLength && value.length > props.maxLength) {\n return `Text must be no longer than ${props.maxLength} characters`;\n }\n if (props.validate) {\n return props.validate(value, data);\n }\n return null;\n};\n","import { useCallback, useState } from \"react\";\nimport { TextAreaInput } from \"../../lui/TextAreaInput\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { GridBaseRow } from \"../Grid\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\n\nexport interface GridFormTextAreaProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n width?: string | number;\n onSave?: (selectedRows: RowType[], value: string) => Promise<boolean>;\n helpText?: string;\n}\n\nexport const GridFormTextArea = <RowType extends GridBaseRow>(props: GridFormTextAreaProps<RowType>) => {\n const { field, value: initialVale, data } = useGridPopoverContext<RowType>();\n const [value, setValue] = useState(initialVale != null ? `${initialVale}` : \"\");\n\n const helpText = props.helpText ?? \"Press tab to save\";\n\n const invalid = useCallback(() => TextInputValidator(props, value, data), [props, value, data]);\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (initialVale === (value ?? \"\")) return true;\n\n if (props.onSave) {\n return await props.onSave(selectedRows, value);\n }\n\n if (field == null) {\n console.error(\"ColDef has no field set\");\n return false;\n }\n selectedRows.forEach((row) => {\n row[field] = value as any;\n });\n return true;\n },\n [initialVale, value, props, field],\n );\n const { popoverWrapper, onlyInputKeyboardEventHandlers } = useGridPopoverHook({\n className: props.className,\n invalid,\n save,\n });\n return popoverWrapper(\n <div style={{ display: \"flex\", flexDirection: \"row\", width: props.width ?? 240 }}>\n <TextAreaInput\n value={value}\n onChange={(e) => setValue(e.target.value)}\n error={invalid()}\n placeholder={props.placeholder}\n helpText={helpText}\n {...onlyInputKeyboardEventHandlers}\n />\n </div>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormTextArea, GridFormTextAreaProps } from \"../gridForm/GridFormTextArea\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverTextArea = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n params: GenericCellEditorProps<GridFormTextAreaProps<RowType>>,\n): ColDefT<RowType> => GridCell(colDef, { editor: GridFormTextArea, ...params });\n","import { useCallback, useContext, useMemo, useState } from \"react\";\nimport { TextInputFormatted } from \"../../lui/TextInputFormatted\";\nimport { useGridPopoverHook } from \"../GridPopoverHook\";\nimport { GridBaseRow } from \"../Grid\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { useGridPopoverContext } from \"../../contexts/GridPopoverContext\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\nimport { GridContext } from \"../../contexts/GridContext\";\n\nexport interface GridFormTextInputProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n units?: string;\n width?: string | number;\n onSave?: (selectedRows: RowType[], value: string) => Promise<boolean>;\n helpText?: string;\n}\n\nexport const GridFormTextInput = <RowType extends GridBaseRow>(props: GridFormTextInputProps<RowType>) => {\n const { stopEditing } = useContext(GridContext);\n const { field, value: initialVale, data } = useGridPopoverContext<RowType>();\n\n const helpText = props.helpText ?? \"Press enter or tab to save\";\n\n const initValue = useMemo(() => (initialVale == null ? \"\" : `${initialVale}`), [initialVale]);\n const [value, setValue] = useState(initValue);\n\n const invalid = useCallback(() => TextInputValidator<RowType>(props, value, data), [data, props, value]);\n\n const save = useCallback(\n async (selectedRows: RowType[]): Promise<boolean> => {\n if (invalid()) return false;\n stopEditing();\n const trimmedValue = value.trim();\n if (initValue === trimmedValue) return true;\n\n if (props.onSave) {\n return await props.onSave(selectedRows, trimmedValue);\n }\n\n if (field == null) {\n console.error(\"ColDef has no field set\");\n return false;\n }\n selectedRows.forEach((row) => {\n row[field] = trimmedValue as any;\n });\n return true;\n },\n [invalid, stopEditing, value, initValue, props, field],\n );\n const { popoverWrapper, onlyInputKeyboardEventHandlers } = useGridPopoverHook({\n className: props.className,\n invalid,\n save,\n });\n\n return popoverWrapper(\n <div style={{ display: \"flex\", flexDirection: \"row\", width: props.width ?? 240 }} className={\"FormTest\"}>\n <TextInputFormatted\n value={value}\n onChange={(e) => setValue(e.target.value)}\n error={invalid()}\n formatted={props.units}\n style={{ width: \"100%\" }}\n placeholder={props.placeholder}\n {...onlyInputKeyboardEventHandlers}\n helpText={helpText}\n />\n </div>,\n );\n};\n","import { ColDefT, GenericCellEditorProps, GridCell } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\nimport { GridFormTextInput, GridFormTextInputProps } from \"../gridForm/GridFormTextInput\";\nimport { GenericCellColDef } from \"../gridRender/GridRenderGenericCell\";\n\nexport const GridPopoverTextInput = <RowType extends GridBaseRow>(\n colDef: GenericCellColDef<RowType>,\n params: GenericCellEditorProps<GridFormTextInputProps<RowType>>,\n): ColDefT<RowType> =>\n GridCell(colDef, {\n editor: GridFormTextInput,\n ...params,\n });\n","import { useCallback, useContext, useEffect } from \"react\";\nimport { GridSubComponentContext } from \"../../contexts/GridSubComponentContext\";\nimport { TextInputFormatted } from \"../../lui/TextInputFormatted\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport { GridBaseRow } from \"../Grid\";\n\nexport interface GridFormSubComponentTextInputProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n width?: string | number;\n defaultValue: string;\n helpText?: string;\n}\n\nexport const GridFormSubComponentTextInput = <RowType extends GridBaseRow>(\n props: GridFormSubComponentTextInputProps<RowType>,\n): JSX.Element => {\n const { value, setValue, setValid, triggerSave, data } = useContext(GridSubComponentContext);\n\n const helpText = props.helpText ?? \"Press enter or tab to save\";\n\n // If is not initialised yet as it's just been created then set the default value\n useEffect(() => {\n if (value == null) setValue(props.defaultValue);\n }, [props.defaultValue, setValue, value]);\n\n const invalid = useCallback(() => TextInputValidator(props, value, data), [data, props, value]);\n\n useEffect(() => {\n setValid(value != null && invalid() == null);\n }, [setValid, invalid, value]);\n\n return (\n <TextInputFormatted\n value={value}\n error={invalid()}\n onChange={(e) => setValue(e.target.value)}\n helpText={helpText}\n autoFocus={true}\n onKeyDown={(e) => {\n if (e.key === \"Tab\" || e.key === \"Enter\") {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n onKeyUp={(e) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n !e.shiftKey && triggerSave().then();\n } else if (e.key === \"Enter\") {\n triggerSave().then();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n placeholder={props.placeholder}\n style={{\n width: \"100%\",\n }}\n />\n );\n};\n","import { useCallback, useContext, useEffect } from \"react\";\nimport { GridSubComponentContext } from \"../../contexts/GridSubComponentContext\";\nimport { CellEditorCommon } from \"../GridCell\";\nimport clsx from \"clsx\";\nimport { TextAreaInput } from \"../../lui/TextAreaInput\";\nimport { TextInputValidator, TextInputValidatorProps } from \"../../utils/textValidator\";\nimport { GridBaseRow } from \"../Grid\";\n\nexport interface GridSubComponentTextAreaProps<RowType extends GridBaseRow>\n extends TextInputValidatorProps<RowType>,\n CellEditorCommon {\n placeholder?: string;\n width?: string | number;\n defaultValue: string;\n className?: string;\n helpText?: string;\n}\n\nexport const GridFormSubComponentTextArea = <RowType extends GridBaseRow>(\n props: GridSubComponentTextAreaProps<RowType>,\n): JSX.Element => {\n const { value, data, setValue, setValid, triggerSave } = useContext(GridSubComponentContext);\n\n const helpText = props.helpText ?? \"Press tab to save\";\n\n // If is not initialised yet as it's just been created then set the default value\n useEffect(() => {\n if (value == null) setValue(props.defaultValue);\n }, [props.defaultValue, setValue, value]);\n\n const invalid = useCallback(() => TextInputValidator(props, value, data), [data, props, value]);\n\n useEffect(() => {\n setValid(value != null && invalid() == null);\n }, [setValid, invalid, value]);\n\n return (\n <div className={clsx(\"FreeTextInput LuiDeprecatedForms\", props.className)}>\n <TextAreaInput\n className={\"free-text-input\"}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n error={invalid()}\n helpText={helpText}\n autoFocus={true}\n placeholder={props.placeholder}\n onKeyDown={(e) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n onKeyUp={(e) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n !e.shiftKey && triggerSave().then();\n }\n }}\n />\n </div>\n );\n};\n","import { useEffect, useRef } from \"react\";\n\n/**\n * Track previous values of states.\n *\n * @param value Value to track.\n */\nexport const usePrevious = <T extends unknown>(value: T): T | undefined => {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n","import { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Cancels timeouts on scope being destroyed.\n *\n * This could almost be a debounce, but debounce tracks by function reference, this tracks by hook reference.\n * This could have been implemented using debounce if the callers function was wrapped in useCallback,\n * but there's no way to enforce that, so it would lead to bugs.\n */\nexport const useTimeoutHook = () => {\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n\n /**\n * Clear any pending timeouts.\n */\n const clearTimeouts = () => {\n if (timeout.current) {\n const tc = timeout.current;\n timeout.current = undefined;\n clearTimeout(tc);\n }\n };\n\n /**\n * Call this when your action has completed.\n */\n const invoke = useCallback((fn: () => void, waitTimeMs: number) => {\n clearTimeouts();\n timeout.current = setTimeout(fn, waitTimeMs);\n }, []);\n\n /**\n * Clear timeout on loss of scope.\n */\n useEffect(() => {\n return () => clearTimeouts();\n }, []);\n\n return invoke;\n};\n","import { useCallback, useRef, useState } from \"react\";\nimport { useTimeoutHook } from \"./timeoutHook\";\n\n/**\n * Defers state change up to a minimum time since last state change.\n */\nexport const useStateDeferred = <T extends unknown>(\n initialValue: T,\n): [T, (v: T) => void, (v: T, w: number) => void] => {\n const startTime = useRef<number>(0);\n const timeoutHook = useTimeoutHook();\n\n const [value, _setValue] = useState(initialValue);\n\n const setValue = useCallback((newValue: T) => {\n startTime.current = Date.now();\n _setValue(newValue);\n }, []);\n\n const setValueDeferred = useCallback(\n (newValue: T, minimumWaitTimeMs: number) => {\n const waitTimeMs = Math.max(minimumWaitTimeMs - (Date.now() - startTime.current), 0);\n timeoutHook(() => _setValue(newValue), waitTimeMs);\n },\n [timeoutHook],\n );\n\n return [value, setValue, setValueDeferred];\n};\n","import \"./ActionButton.scss\";\n\nimport clsx from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport { LuiButton, LuiIcon, LuiMiniSpinner } from \"@linzjs/lui\";\nimport { IconName } from \"@linzjs/lui/dist/components/LuiIcon/LuiIcon\";\nimport { usePrevious } from \"./reactUtils\";\nimport { useStateDeferred } from \"./stateDeferredHook\";\nimport { LuiButtonProps } from \"@linzjs/lui/dist/components/LuiButton/LuiButton\";\n\nexport interface ActionButtonProps {\n icon: IconName;\n name?: string;\n \"aria-label\"?: string;\n inProgressName?: string;\n title?: string;\n dataTestId?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"ns\";\n className?: string;\n onAction: () => Promise<void> | void;\n // Used for external code to get access to whether action is in progress\n externalSetInProgress?: () => void;\n level?: LuiButtonProps[\"level\"];\n}\n\n// Kept this less than one second, so I don't have issues with waitFor as it defaults to 1s\nconst minimumInProgressTimeMs = 950;\n\nexport const ActionButton = ({\n icon,\n name,\n inProgressName,\n dataTestId,\n className,\n title,\n onAction,\n externalSetInProgress,\n size = \"sm\",\n level = \"tertiary\",\n \"aria-label\": ariaLabel,\n}: ActionButtonProps): JSX.Element => {\n const [inProgress, setInProgress] = useState(false);\n const lastInProgress = usePrevious(inProgress ?? false);\n const [localInProgress, setLocalInProgress, setLocalInProgressDeferred] = useStateDeferred<boolean>(inProgress);\n\n useEffect(() => {\n if (inProgress == lastInProgress) return;\n inProgress ? setLocalInProgress(true) : setLocalInProgressDeferred(false, minimumInProgressTimeMs);\n }, [inProgress, lastInProgress, setLocalInProgress, setLocalInProgressDeferred]);\n\n return (\n <LuiButton\n data-testid={dataTestId}\n type={\"button\"}\n level={level}\n title={title ?? ariaLabel ?? name}\n aria-label={ariaLabel ?? name}\n className={clsx(\"lui-button-icon\", \"ActionButton\", className, localInProgress && \"ActionButton-inProgress\")}\n size={\"lg\"}\n style={name == null ? { padding: \"8px 5px\" } : {}}\n onClick={async () => {\n const promise = onAction();\n const isPromise = typeof promise !== \"undefined\";\n if (isPromise) {\n setInProgress(true);\n externalSetInProgress && setInProgress(true);\n if (isPromise) await promise;\n externalSetInProgress && setInProgress(false);\n setInProgress(false);\n }\n }}\n disabled={localInProgress}\n >\n {localInProgress ? (\n <LuiMiniSpinner\n size={16}\n divProps={{\n \"data-testid\": \"loading-spinner\",\n style: { margin: 0, paddingRight: 5, paddingLeft: 3, paddingBottom: 0, paddingTop: 0 },\n role: \"status\",\n \"aria-label\": \"Loading\",\n }}\n />\n ) : (\n <LuiIcon name={icon} alt={ariaLabel ?? name ?? \"\"} size={size} />\n )}\n <span className={\"ActionButton-minimalArea\"}>\n <span className={\"ActionButton-minimalAreaDisplay\"}>{(localInProgress ? inProgressName : name) ?? name}</span>\n {/* This makes sure the button expands to fill maximum length text at all times */}\n <span className={\"ActionButton-minimalAreaExpand\"}>{name}</span>\n </span>\n </LuiButton>\n );\n};\n"],"names":["_jsx","useLayoutEffect","_jsxs","_isEmpty","_Fragment","debounce","uuidVersion4"],"mappings":"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"}
|