{"version":3,"sources":["jsdelivr-header.js","/npm/@zendeskgarden/container-menu@1.0.5/dist/index.cjs.js"],"names":[],"mappings":"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","file":"/npm/@zendeskgarden/container-menu@1.0.5/dist/index.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@zendeskgarden/container-menu@1.0.5/dist/index.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Copyright Zendesk, Inc.\n *\n * Use of this source code is governed under the Apache License, Version 2.0\n * found at http://www.apache.org/licenses/LICENSE-2.0.\n */\n\n'use strict';\n\nvar React = require('react');\nvar containerSelection = require('@zendeskgarden/container-selection');\nvar containerUtilities = require('@zendeskgarden/container-utilities');\nvar PropTypes = require('prop-types');\n\nconst triggerLink = (element, view) => {\n  const event = new MouseEvent('click', {\n    bubbles: true,\n    cancelable: true,\n    view\n  });\n  element.dispatchEvent(event);\n};\nconst StateChangeTypes = {\n  FnInternalUpdate: 'fn:internalUpdate',\n  FnMenuTransitionFinish: 'fn:menuTransitionFinish',\n  TriggerClick: 'trigger:click',\n  TriggerKeyDownEnter: `trigger:keyDown:${containerUtilities.KEYS.ENTER}`,\n  TriggerKeyDownSpace: `trigger:keyDown:Space`,\n  TriggerKeyDownArrowDown: `trigger:keyDown:${containerUtilities.KEYS.DOWN}`,\n  TriggerKeyDownArrowUp: `trigger:keyDown:${containerUtilities.KEYS.UP}`,\n  MenuKeyDownEscape: `menu:keyDown:${containerUtilities.KEYS.ESCAPE}`,\n  MenuKeyDownTab: `menu:keyDown:${containerUtilities.KEYS.TAB}`,\n  MenuBlur: 'menu:blur',\n  MenuMouseLeave: 'menu:mouseLeave',\n  MenuItemClick: 'menuItem:click',\n  MenuItemClickPrevious: `menuItem:click:previous`,\n  MenuItemClickNext: `menuItem:click:next`,\n  MenuItemMouseMove: `menuItem:mouseMove`,\n  MenuItemKeyDown: 'menuItem:keyDown',\n  MenuItemKeyDownPrevious: `menuItem:keyDown:previous`,\n  MenuItemKeyDownNext: `menuItem:keyDown:next`,\n  MenuItemKeyDownEnter: `menuItem:keyDown:${containerUtilities.KEYS.ENTER}`,\n  MenuItemKeyDownSpace: `menuItem:keyDown:Space`,\n  MenuItemKeyDownArrowUp: `menuItem:keyDown:${containerUtilities.KEYS.UP}`,\n  MenuItemKeyDownArrowDown: `menuItem:keyDown:${containerUtilities.KEYS.DOWN}`,\n  MenuItemKeyDownHome: `menuItem:keyDown:${containerUtilities.KEYS.HOME}`,\n  MenuItemKeyDownEnd: `menuItem:keyDown:${containerUtilities.KEYS.END}`\n};\nconst isItemGroup = item => Object.hasOwn(item, 'items');\nconst isValidItem = item => !item.disabled && !item.separator && !isItemGroup(item);\nconst toMenuItemKeyDownType = type => `MenuItemKeyDown${type === containerUtilities.KEYS.SPACE ? 'Space' : type}`;\nconst getStateChanges = changes => {\n  let retVal = null;\n  for (const change in changes) {\n    if (changes[change] === undefined) continue;\n    retVal ||= {};\n    retVal[change] = changes[change];\n  }\n  return retVal;\n};\nconst stateReducer = (state, action) => {\n  let changes = null;\n  switch (action.type) {\n    case StateChangeTypes.MenuBlur:\n    case StateChangeTypes.MenuKeyDownEscape:\n    case StateChangeTypes.MenuKeyDownTab:\n    case StateChangeTypes.TriggerClick:\n    case StateChangeTypes.TriggerKeyDownEnter:\n    case StateChangeTypes.TriggerKeyDownSpace:\n    case StateChangeTypes.TriggerKeyDownArrowDown:\n    case StateChangeTypes.TriggerKeyDownArrowUp:\n      {\n        const {\n          focusOnOpen,\n          focusedValue,\n          isExpanded\n        } = action.payload;\n        const stateChanges = getStateChanges({\n          focusOnOpen,\n          focusedValue,\n          isExpanded\n        });\n        if (stateChanges) {\n          changes = {\n            ...state,\n            ...stateChanges\n          };\n        }\n        break;\n      }\n    case StateChangeTypes.MenuItemClick:\n    case StateChangeTypes.MenuItemClickNext:\n    case StateChangeTypes.MenuItemClickPrevious:\n    case StateChangeTypes.MenuItemKeyDownSpace:\n    case StateChangeTypes.MenuItemKeyDownEnter:\n      {\n        const {\n          selectedItems,\n          isExpanded,\n          nestedPathIds,\n          transitionType,\n          isTransitionNext,\n          isTransitionPrevious\n        } = action.payload;\n        const stateChanges = getStateChanges({\n          selectedItems,\n          isExpanded,\n          nestedPathIds,\n          transitionType,\n          isTransitionNext,\n          isTransitionPrevious\n        });\n        if (stateChanges) {\n          changes = {\n            ...state,\n            ...stateChanges\n          };\n        }\n        break;\n      }\n    case StateChangeTypes.MenuItemKeyDownArrowUp:\n    case StateChangeTypes.MenuItemKeyDownArrowDown:\n    case StateChangeTypes.MenuItemKeyDownNext:\n    case StateChangeTypes.MenuItemKeyDownPrevious:\n    case StateChangeTypes.MenuItemKeyDownHome:\n    case StateChangeTypes.MenuItemKeyDownEnd:\n    case StateChangeTypes.MenuItemKeyDown:\n    case StateChangeTypes.MenuItemMouseMove:\n      {\n        const {\n          focusedValue,\n          nestedPathIds,\n          transitionType,\n          isTransitionNext,\n          isTransitionPrevious\n        } = action.payload;\n        const stateChanges = getStateChanges({\n          focusedValue,\n          nestedPathIds,\n          transitionType,\n          isTransitionNext,\n          isTransitionPrevious\n        });\n        if (stateChanges) {\n          changes = {\n            ...state,\n            ...stateChanges\n          };\n        }\n        break;\n      }\n    case StateChangeTypes.FnMenuTransitionFinish:\n      {\n        const {\n          focusOnOpen,\n          focusedValue,\n          nestedPathIds,\n          valuesRef\n        } = action.payload;\n        const stateChanges = getStateChanges({\n          focusOnOpen,\n          focusedValue,\n          nestedPathIds,\n          valuesRef\n        });\n        if (stateChanges) {\n          changes = {\n            ...state,\n            ...stateChanges,\n            transitionType: null,\n            isTransitionNext: false,\n            isTransitionPrevious: false\n          };\n        }\n        break;\n      }\n    case StateChangeTypes.FnInternalUpdate:\n      {\n        const {\n          ...props\n        } = action.payload;\n        changes = {\n          ...state,\n          ...props\n        };\n        break;\n      }\n    default:\n      {\n        throw new Error('Error: unexpected menu action provided: ', action.type);\n      }\n  }\n  return changes || state;\n};\n\nconst useMenu = ({\n  items: rawItems,\n  idPrefix,\n  environment,\n  menuRef,\n  triggerRef,\n  rtl = false,\n  onChange = () => undefined,\n  isExpanded,\n  defaultExpanded = false,\n  restoreFocus = true,\n  selectedItems,\n  focusedValue,\n  defaultFocusedValue\n}) => {\n  const prefix = `${containerUtilities.useId(idPrefix)}-`;\n  const triggerId = `${prefix}menu-trigger`;\n  const isExpandedControlled = isExpanded !== undefined;\n  const isSelectedItemsControlled = selectedItems !== undefined;\n  const isFocusedValueControlled = focusedValue !== undefined;\n  const menuItems = React.useMemo(() => rawItems.reduce((items, item) => {\n    if (isItemGroup(item)) {\n      const nestedItems = item.items.filter(isValidItem);\n      items.push(...nestedItems);\n    } else if (isValidItem(item)) {\n      items.push(item);\n    }\n    return items;\n  }, []), [rawItems]);\n  const initialSelectedItems = React.useMemo(() => menuItems.filter(item => {\n    return !!((item.href || item.type === 'radio' || item.type === 'checkbox') && item.selected);\n  }), [menuItems]);\n  const values = React.useMemo(() => menuItems.map(item => item.value), [menuItems]);\n  const itemRefs = React.useMemo(() => values.reduce((acc, v) => {\n    acc[v] = React.createRef();\n    return acc;\n  }, {}), [values]);\n  const [menuVisible, setMenuVisible] = React.useState(false);\n  const [state, dispatch] = React.useReducer(stateReducer, {\n    focusedValue,\n    isExpanded: isExpanded || defaultExpanded,\n    selectedItems: initialSelectedItems,\n    valuesRef: values,\n    focusOnOpen: false,\n    isTransitionNext: false,\n    isTransitionPrevious: false,\n    transitionType: null,\n    nestedPathIds: []\n  });\n  const controlledIsExpanded = containerUtilities.getControlledValue(isExpanded, state.isExpanded);\n  const controlledSelectedItems = containerUtilities.getControlledValue(selectedItems, state.selectedItems);\n  const uncontrolledFocusedValue = state.focusedValue === null ? undefined : state.focusedValue;\n  const {\n    focusedValue: controlledFocusedValue,\n    getGroupProps,\n    getElementProps\n  } = containerSelection.useSelection({\n    values,\n    direction: 'vertical',\n    selectedValue: focusedValue || uncontrolledFocusedValue,\n    focusedValue: focusedValue || uncontrolledFocusedValue,\n    allowDefaultOnSelect: true\n  });\n  const returnFocusToTrigger = React.useCallback(skip => {\n    if (!skip && restoreFocus && triggerRef.current) {\n      triggerRef.current.focus();\n    }\n  }, [triggerRef, restoreFocus]);\n  const closeMenu = React.useCallback(changeType => {\n    dispatch({\n      type: changeType,\n      payload: {\n        ...(!isExpandedControlled && {\n          isExpanded: false\n        })\n      }\n    });\n    onChange({\n      type: changeType,\n      isExpanded: false\n    });\n  }, [onChange, isExpandedControlled]);\n  const isItemSelected = React.useCallback((value, type, name, href) => {\n    let isSelected;\n    if (type === 'checkbox') {\n      isSelected = !!controlledSelectedItems.find(item => item.value === value);\n    } else if (type === 'radio') {\n      const match = controlledSelectedItems.filter(item => item.name === name)[0];\n      isSelected = match?.value === value;\n    } else if (href) {\n      const match = controlledSelectedItems.filter(item => item.value === value)[0];\n      isSelected = match?.value === value;\n    }\n    return isSelected;\n  }, [controlledSelectedItems]);\n  const getNextFocusedValue = React.useCallback(({\n    value,\n    key,\n    isAlphanumericChar\n  }) => {\n    let nextFocusedValue = value;\n    if (isAlphanumericChar) {\n      const firstChars = menuItems.map(item => item.label ? item.label[0].toLowerCase() : String(item.value)[0].toLowerCase());\n      const index = firstChars.indexOf(key);\n      const item = menuItems[index];\n      if (item) {\n        nextFocusedValue = item.value;\n      }\n    } else {\n      const index = values.indexOf(value);\n      let nextIndex;\n      if (key === containerUtilities.KEYS.UP) {\n        nextIndex = (index === 0 ? values.length : index) - 1;\n      } else if (key === containerUtilities.KEYS.DOWN) {\n        nextIndex = (index === values.length - 1 ? -1 : index) + 1;\n      } else if (key === containerUtilities.KEYS.END) {\n        nextIndex = values.length - 1;\n      } else if (key === containerUtilities.KEYS.HOME) {\n        nextIndex = 0;\n      }\n      const item = menuItems[nextIndex];\n      nextFocusedValue = item.value;\n    }\n    return nextFocusedValue;\n  }, [menuItems, values]);\n  const getSelectedItems = React.useCallback(({\n    value,\n    type,\n    name,\n    label,\n    selected,\n    href\n  }) => {\n    if (href) return controlledSelectedItems;\n    if (!type) return null;\n    let changes = [...controlledSelectedItems];\n    const selectedItem = {\n      value,\n      type,\n      label,\n      ...(name && {\n        name\n      })\n    };\n    if (type === 'checkbox') {\n      if (selected) {\n        changes = changes.filter(item => item.value !== value);\n      } else {\n        changes.push(selectedItem);\n      }\n    } else if (type === 'radio') {\n      const index = changes.findIndex(item => item.name === name);\n      if (index > -1) {\n        changes.splice(index, 1);\n      }\n      changes.push(selectedItem);\n    }\n    return changes;\n  }, [controlledSelectedItems]);\n  const anchorItemError = ({\n    isNext,\n    isPrevious,\n    type,\n    value\n  }) => {\n    let invariantKey;\n    if (isNext) {\n      invariantKey = 'isNext';\n    } else if (isPrevious) {\n      invariantKey = 'isPrevious';\n    } else {\n      invariantKey = type;\n    }\n    const invariantType = {\n      isNext: 'isNext',\n      isPrevious: 'isPrevious',\n      radio: 'radio',\n      checkbox: 'checkbox'\n    }[invariantKey];\n    throw new Error(`Error: expected useMenu anchor item '${value}' to not use '${invariantType}'`);\n  };\n  const handleTriggerClick = React.useCallback(event => {\n    event.stopPropagation();\n    const changeType = StateChangeTypes.TriggerClick;\n    dispatch({\n      type: changeType,\n      payload: {\n        ...(!isFocusedValueControlled && {\n          focusedValue: null\n        }),\n        ...(!isExpandedControlled && {\n          isExpanded: !controlledIsExpanded\n        })\n      }\n    });\n    returnFocusToTrigger(!controlledIsExpanded);\n    onChange({\n      type: changeType,\n      focusedValue: null,\n      isExpanded: !controlledIsExpanded\n    });\n  }, [isFocusedValueControlled, isExpandedControlled, controlledIsExpanded, returnFocusToTrigger, onChange]);\n  const handleTriggerKeyDown = React.useCallback(event => {\n    const {\n      key\n    } = event;\n    const isArrowKey = [containerUtilities.KEYS.DOWN, containerUtilities.KEYS.UP].includes(key);\n    const isSelectKey = [containerUtilities.KEYS.ENTER, containerUtilities.KEYS.SPACE].includes(key);\n    let changeType;\n    let nextFocusedValue;\n    if (isArrowKey) {\n      changeType = StateChangeTypes[`TriggerKeyDown${key}`];\n      nextFocusedValue = containerUtilities.KEYS.UP === key ? values[values.length - 1] : values[0];\n    } else if (isSelectKey) {\n      changeType = StateChangeTypes[`TriggerKeyDown${key === containerUtilities.KEYS.SPACE ? 'Space' : key}`];\n      nextFocusedValue = values[0];\n    }\n    if (changeType) {\n      event.preventDefault();\n      dispatch({\n        type: changeType,\n        payload: {\n          focusOnOpen: true,\n          ...(!isFocusedValueControlled && {\n            focusedValue: defaultFocusedValue || nextFocusedValue\n          }),\n          ...(!isExpandedControlled && {\n            isExpanded: true\n          })\n        }\n      });\n      returnFocusToTrigger();\n      onChange({\n        type: changeType,\n        focusedValue: defaultFocusedValue || nextFocusedValue,\n        isExpanded: true\n      });\n    }\n  }, [values, isFocusedValueControlled, defaultFocusedValue, isExpandedControlled, returnFocusToTrigger, onChange]);\n  const handleMenuClick = React.useCallback(event => {\n    event.stopPropagation();\n  }, []);\n  const handleMenuKeyDown = React.useCallback(event => {\n    const {\n      key\n    } = event;\n    if ([containerUtilities.KEYS.ESCAPE, containerUtilities.KEYS.TAB].includes(key)) {\n      event.preventDefault();\n      event.stopPropagation();\n      const type = StateChangeTypes[key === containerUtilities.KEYS.ESCAPE ? 'MenuKeyDownEscape' : 'MenuKeyDownTab'];\n      returnFocusToTrigger();\n      closeMenu(type);\n    }\n  }, [closeMenu, returnFocusToTrigger]);\n  const handleBlur = React.useCallback(event => {\n    const win = environment || window;\n    const timeoutId = setTimeout(() => {\n      const activeElement = win.document.activeElement;\n      const isMenuOrTriggerFocused = menuRef.current?.contains(activeElement) || triggerRef.current?.contains(activeElement);\n      if (!isMenuOrTriggerFocused) {\n        const nextElementIsFocusable = !!event.relatedTarget  && event.relatedTarget?.nodeName !== '#document';\n        const shouldSkipFocusReturn = nextElementIsFocusable || !controlledIsExpanded && !nextElementIsFocusable;\n        returnFocusToTrigger(shouldSkipFocusReturn);\n        closeMenu(StateChangeTypes.MenuBlur);\n      }\n      return () => {\n        clearTimeout(timeoutId);\n      };\n    });\n  }, [closeMenu, controlledIsExpanded, environment, menuRef, returnFocusToTrigger, triggerRef]);\n  const handleMenuMouseLeave = React.useCallback(() => {\n    onChange({\n      type: StateChangeTypes.MenuMouseLeave\n    });\n  }, [onChange]);\n  const handleItemClick = React.useCallback((event, item) => {\n    let changeType = StateChangeTypes.MenuItemClick;\n    const {\n      isNext,\n      isPrevious,\n      href,\n      selected\n    } = item;\n    const isTransitionItem = isNext || isPrevious;\n    if (isNext) {\n      changeType = StateChangeTypes.MenuItemClickNext;\n    } else if (isPrevious) {\n      changeType = StateChangeTypes.MenuItemClickPrevious;\n    } else if (href && selected) {\n      event.preventDefault();\n    }\n    const nextSelection = getSelectedItems(item);\n    dispatch({\n      type: changeType,\n      payload: {\n        ...(isTransitionItem && {\n          ...(isNext && {\n            nestedPathIds: [...state.nestedPathIds, item.value]\n          }),\n          transitionType: changeType,\n          isTransitionNext: isNext,\n          isTransitionPrevious: isPrevious\n        }),\n        ...(!isExpandedControlled && !isTransitionItem && {\n          isExpanded: false\n        }),\n        ...(!isTransitionItem && {\n          nestedPathIds: []\n        }),\n        ...(!isSelectedItemsControlled && nextSelection && {\n          selectedItems: nextSelection\n        })\n      }\n    });\n    returnFocusToTrigger(isTransitionItem);\n    onChange({\n      type: changeType,\n      value: item.value,\n      ...(!isTransitionItem && {\n        isExpanded: false\n      }),\n      ...(nextSelection && {\n        selectedItems: nextSelection\n      })\n    });\n  }, [getSelectedItems, state.nestedPathIds, isExpandedControlled, isSelectedItemsControlled, returnFocusToTrigger, onChange]);\n  const handleItemKeyDown = React.useCallback((event, item) => {\n    const {\n      key\n    } = event;\n    const {\n      isNext,\n      isPrevious\n    } = item;\n    const isJumpKey = [containerUtilities.KEYS.HOME, containerUtilities.KEYS.END].includes(key);\n    const isSelectKey = [containerUtilities.KEYS.SPACE, containerUtilities.KEYS.ENTER].includes(key);\n    const isVerticalArrowKeys = [containerUtilities.KEYS.UP, containerUtilities.KEYS.DOWN].includes(key);\n    const isAlphanumericChar = key.length === 1 && /\\S/u.test(key);\n    const isTransitionItem = isNext || isPrevious;\n    let changeType;\n    let payload = {};\n    let changes = {};\n    if (isSelectKey) {\n      changeType = StateChangeTypes[toMenuItemKeyDownType(key)];\n      const nextSelection = getSelectedItems(item);\n      if (isNext) {\n        changeType = StateChangeTypes.MenuItemKeyDownNext;\n      } else if (isPrevious) {\n        changeType = StateChangeTypes.MenuItemKeyDownPrevious;\n      }\n      payload = {\n        ...(!isExpandedControlled && !isTransitionItem && {\n          isExpanded: false\n        }),\n        ...(!isTransitionItem && {\n          nestedPathIds: []\n        }),\n        ...(!isSelectedItemsControlled && nextSelection && {\n          selectedItems: nextSelection\n        })\n      };\n      changes = {\n        value: item.value,\n        ...(!isTransitionItem && {\n          isExpanded: false\n        }),\n        ...(nextSelection && {\n          selectedItems: nextSelection\n        })\n      };\n      event.preventDefault();\n      if (item.href) {\n        triggerLink(event.target, environment || window);\n      }\n      returnFocusToTrigger(isTransitionItem);\n    } else if (key === containerUtilities.KEYS.RIGHT) {\n      if (rtl && isPrevious) {\n        changeType = StateChangeTypes.MenuItemKeyDownPrevious;\n      }\n      if (!rtl && isNext) {\n        changeType = StateChangeTypes.MenuItemKeyDownNext;\n      }\n      if (changeType) {\n        event.preventDefault();\n        changes = {\n          value: item.value\n        };\n      }\n    } else if (key === containerUtilities.KEYS.LEFT) {\n      if (rtl && isNext) {\n        changeType = StateChangeTypes.MenuItemKeyDownNext;\n      }\n      if (!rtl && isPrevious) {\n        changeType = StateChangeTypes.MenuItemKeyDownPrevious;\n      }\n      if (changeType) {\n        event.preventDefault();\n        changes = {\n          value: item.value\n        };\n      }\n    } else if (isVerticalArrowKeys || isJumpKey || isAlphanumericChar) {\n      event.preventDefault();\n      changeType = isAlphanumericChar ? StateChangeTypes.MenuItemKeyDown : StateChangeTypes[toMenuItemKeyDownType(key)];\n      const nextFocusedValue = getNextFocusedValue({\n        value: item.value,\n        key,\n        isAlphanumericChar\n      });\n      payload = {\n        ...(!isFocusedValueControlled && {\n          focusedValue: nextFocusedValue\n        })\n      };\n      changes = {\n        focusedValue: nextFocusedValue\n      };\n    }\n    if (changeType) {\n      event.stopPropagation();\n      const transitionNext = changeType.includes('next');\n      const willTransition = changeType.includes('previous') || transitionNext;\n      payload = {\n        ...payload,\n        ...(willTransition && {\n          ...(isNext && {\n            nestedPathIds: [...state.nestedPathIds, item.value]\n          }),\n          transitionType: changeType,\n          isTransitionNext: isNext,\n          isTransitionPrevious: isPrevious\n        })\n      };\n      dispatch({\n        type: changeType,\n        payload\n      });\n      onChange({\n        type: changeType,\n        ...changes\n      });\n    }\n  }, [environment, getNextFocusedValue, getSelectedItems, isExpandedControlled, isFocusedValueControlled, isSelectedItemsControlled, onChange, returnFocusToTrigger, rtl, state.nestedPathIds]);\n  const handleItemMouseEnter = React.useCallback(value => {\n    const changeType = StateChangeTypes.MenuItemMouseMove;\n    dispatch({\n      type: changeType,\n      payload: {\n        ...(!isFocusedValueControlled && {\n          focusedValue: value\n        })\n      }\n    });\n    onChange({\n      type: changeType,\n      focusedValue: value\n    });\n  }, [isFocusedValueControlled, onChange]);\n  React.useEffect(() => {\n    setMenuVisible(controlledIsExpanded);\n  }, [controlledIsExpanded]);\n  React.useEffect(() => {\n    const win = environment || window;\n    if (controlledIsExpanded) {\n      win.document.addEventListener('keydown', handleMenuKeyDown, true);\n    } else if (!controlledIsExpanded) {\n      win.document.removeEventListener('keydown', handleMenuKeyDown, true);\n    }\n    return () => {\n      win.document.removeEventListener('keydown', handleMenuKeyDown, true);\n    };\n  }, [controlledIsExpanded, handleMenuKeyDown, environment]);\n  React.useEffect(() => {\n    if (state.focusOnOpen && menuVisible && controlledFocusedValue && controlledIsExpanded) {\n      let ref = itemRefs[controlledFocusedValue]?.current;\n      if (!ref) {\n        ref = itemRefs[values[0]].current;\n      }\n      if (ref) {\n        ref.focus();\n        dispatch({\n          type: StateChangeTypes.FnInternalUpdate,\n          payload: {\n            focusOnOpen: false\n          }\n        });\n      }\n    }\n  }, [values, menuVisible, itemRefs, controlledFocusedValue, state.focusOnOpen, controlledIsExpanded]);\n  React.useEffect(() => {\n    const valuesChanged = JSON.stringify(values) !== JSON.stringify(state.valuesRef);\n    if (valuesChanged && !state.isTransitionNext && !state.isTransitionPrevious) {\n      dispatch({\n        type: StateChangeTypes.FnInternalUpdate,\n        payload: {\n          valuesRef: values\n        }\n      });\n    }\n    if (valuesChanged && (state.isTransitionNext || state.isTransitionPrevious)) {\n      const nextFocusedValue = state.isTransitionNext ? values[0] : state.nestedPathIds.slice(-1)[0];\n      dispatch({\n        type: StateChangeTypes.FnMenuTransitionFinish,\n        payload: {\n          valuesRef: values,\n          focusOnOpen: true,\n          nestedPathIds: state.isTransitionNext ? state.nestedPathIds : state.nestedPathIds.slice(0, -1),\n          ...(!isFocusedValueControlled && {\n            focusedValue: nextFocusedValue\n          })\n        }\n      });\n      onChange({\n        type: StateChangeTypes.FnMenuTransitionFinish,\n        focusedValue: nextFocusedValue\n      });\n    }\n  }, [values, isFocusedValueControlled, state.valuesRef, state.transitionType, state.isTransitionNext, state.isTransitionPrevious, state.nestedPathIds, onChange]);\n  const getTriggerProps = React.useCallback(({\n    onBlur,\n    onClick,\n    onKeyDown,\n    type = 'button',\n    role = 'button',\n    disabled,\n    ...other\n  } = {}) => ({\n    ...other,\n    'data-garden-container-id': 'containers.menu.trigger',\n    'data-garden-container-version': '1.0.5',\n    ref: triggerRef,\n    id: triggerId,\n    'aria-expanded': controlledIsExpanded,\n    'aria-haspopup': true,\n    disabled,\n    tabIndex: disabled ? -1 : 0,\n    type: type === null ? undefined : type,\n    role: role === null ? undefined : role,\n    onBlur: containerUtilities.composeEventHandlers(onBlur, handleBlur),\n    onClick: containerUtilities.composeEventHandlers(onClick, handleTriggerClick),\n    onKeyDown: containerUtilities.composeEventHandlers(onKeyDown, handleTriggerKeyDown)\n  }), [controlledIsExpanded, handleBlur, handleTriggerClick, handleTriggerKeyDown, triggerId, triggerRef]);\n  const getMenuProps = React.useCallback(({\n    role = 'menu',\n    onBlur,\n    onClick,\n    onMouseLeave,\n    ...other\n  } = {}) => ({\n    ...other,\n    ...getGroupProps({\n      onMouseLeave: containerUtilities.composeEventHandlers(onMouseLeave, handleMenuMouseLeave)\n    }),\n    'data-garden-container-id': 'containers.menu',\n    'data-garden-container-version': '1.0.5',\n    'aria-labelledby': triggerId,\n    tabIndex: -1,\n    role: role === null ? undefined : role,\n    ref: menuRef,\n    onBlur: containerUtilities.composeEventHandlers(onBlur, handleBlur),\n    onClick: containerUtilities.composeEventHandlers(onClick, handleMenuClick)\n  }), [getGroupProps, handleBlur, handleMenuClick, handleMenuMouseLeave, menuRef, triggerId]);\n  const getSeparatorProps = React.useCallback(({\n    role = 'separator',\n    ...other\n  } = {}) => ({\n    ...other,\n    'data-garden-container-id': 'containers.menu.separator',\n    'data-garden-container-version': '1.0.5',\n    role: role === null ? undefined : role\n  }), []);\n  const getItemGroupProps = React.useCallback(({\n    role = 'group',\n    ...other\n  }) => ({\n    ...other,\n    'data-garden-container-id': 'containers.menu.item_group',\n    'data-garden-container-version': '1.0.5',\n    role: role === null ? undefined : role\n  }), []);\n  const getItemProps = React.useCallback(({\n    role = 'menuitem',\n    onClick,\n    onKeyDown,\n    onMouseEnter,\n    item,\n    ...other\n  }) => {\n    const {\n      disabled: itemDisabled,\n      type,\n      name,\n      value,\n      href,\n      isNext = false,\n      isPrevious = false,\n      label = value\n    } = item;\n    let itemRole = role;\n    const baseAttributes = {\n      'data-garden-container-id': 'containers.menu.item',\n      'data-garden-container-version': '1.0.5',\n      onClick,\n      onKeyDown,\n      onMouseEnter\n    };\n    if (href) {\n      if (isNext || isPrevious || type) {\n        anchorItemError(item);\n      }\n      return {\n        ...baseAttributes,\n        role: itemRole === null ? undefined : 'none',\n        ...other\n      };\n    }\n    if (type === 'radio') {\n      itemRole = 'menuitemradio';\n    } else if (type === 'checkbox') {\n      itemRole = 'menuitemcheckbox';\n    }\n    const selected = isItemSelected(value, type, name);\n    const elementProps = {\n      ...baseAttributes,\n      'aria-selected': undefined,\n      'aria-disabled': itemRole === 'none' ? undefined : itemDisabled,\n      'aria-checked': selected,\n      role: itemRole === null ? undefined : itemRole,\n      ...other\n    };\n    if (itemDisabled) {\n      return elementProps;\n    }\n    const itemProps = getElementProps({\n      value: value,\n      ...elementProps,\n      onClick: containerUtilities.composeEventHandlers(onClick, e => handleItemClick(e, {\n        ...item,\n        label,\n        selected,\n        isNext,\n        isPrevious\n      })),\n      onKeyDown: containerUtilities.composeEventHandlers(onKeyDown, e => handleItemKeyDown(e, {\n        ...item,\n        label,\n        selected,\n        isNext,\n        isPrevious\n      })),\n      onMouseEnter: containerUtilities.composeEventHandlers(onMouseEnter, () => handleItemMouseEnter(value))\n    });\n    if (itemProps.ref !== itemRefs[value]) {\n      itemRefs[value] = itemProps.ref;\n    }\n    return itemProps;\n  }, [itemRefs, isItemSelected, getElementProps, handleItemClick, handleItemKeyDown, handleItemMouseEnter]);\n  const getAnchorProps = React.useCallback(({\n    role = 'menuitem',\n    onClick,\n    onKeyDown,\n    onMouseEnter,\n    item,\n    ...other\n  }) => {\n    const {\n      disabled: itemDisabled,\n      value,\n      href,\n      external,\n      label = value\n    } = item;\n    if (!href) return undefined;\n    const elementProps = {\n      'data-garden-container-id': 'containers.menu.item.link',\n      'data-garden-container-version': '1.0.5',\n      'aria-disabled': itemDisabled,\n      'aria-selected': undefined,\n      role: role === null ? undefined : role,\n      onClick,\n      onKeyDown,\n      onMouseEnter,\n      ...other\n    };\n    const selected = isItemSelected(value, undefined, undefined, href);\n    if (!itemDisabled) {\n      elementProps.href = href;\n      if (external) {\n        elementProps.target = '_blank';\n        elementProps.rel = 'noopener noreferrer';\n      }\n      if (selected) {\n        elementProps['aria-current'] = 'page';\n      }\n    }\n    if (itemDisabled) {\n      return elementProps;\n    }\n    const itemProps = getElementProps({\n      value: value,\n      ...elementProps,\n      onClick: containerUtilities.composeEventHandlers(onClick, e => handleItemClick(e, {\n        ...item,\n        label,\n        selected\n      })),\n      onKeyDown: containerUtilities.composeEventHandlers(onKeyDown, e => handleItemKeyDown(e, {\n        ...item,\n        label,\n        selected\n      })),\n      onMouseEnter: containerUtilities.composeEventHandlers(onMouseEnter, () => handleItemMouseEnter(value))\n    });\n    if (itemProps.ref !== itemRefs[value]) {\n      itemRefs[value] = itemProps.ref;\n    }\n    return itemProps;\n  }, [itemRefs, isItemSelected, getElementProps, handleItemClick, handleItemKeyDown, handleItemMouseEnter]);\n  return React.useMemo(() => ({\n    getAnchorProps,\n    getItemGroupProps,\n    getItemProps,\n    getMenuProps,\n    getSeparatorProps,\n    getTriggerProps,\n    isExpanded: controlledIsExpanded,\n    selection: controlledSelectedItems,\n    focusedValue: controlledFocusedValue\n  }), [controlledFocusedValue, controlledIsExpanded, controlledSelectedItems, getAnchorProps, getItemGroupProps, getItemProps, getMenuProps, getSeparatorProps, getTriggerProps]);\n};\n\nconst MenuContainer = props => {\n  const {\n    children,\n    render = children,\n    ...options\n  } = props;\n  return React.createElement(React.Fragment, null, render(useMenu(options)));\n};\nMenuContainer.propTypes = {\n  children: PropTypes.func,\n  render: PropTypes.func,\n  items: PropTypes.arrayOf(PropTypes.any).isRequired,\n  triggerRef: PropTypes.any.isRequired,\n  menuRef: PropTypes.any.isRequired,\n  idPrefix: PropTypes.string,\n  environment: PropTypes.any,\n  onChange: PropTypes.func,\n  isExpanded: PropTypes.bool,\n  defaultExpanded: PropTypes.bool,\n  selectedItems: PropTypes.arrayOf(PropTypes.any),\n  focusedValue: PropTypes.oneOfType([PropTypes.string]),\n  defaultFocusedValue: PropTypes.oneOfType([PropTypes.string]),\n  restoreFocus: PropTypes.bool\n};\nMenuContainer.defaultProps = {\n  restoreFocus: true\n};\n\nexports.MenuContainer = MenuContainer;\nexports.useMenu = useMenu;\n"]}