{"mappings":"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","sources":["packages/@adobe/react-spectrum/src/menu/MenuItem.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport ChevronLeft from '@spectrum-icons/workflow/ChevronLeft';\nimport ChevronRight from '@spectrum-icons/workflow/ChevronRight';\nimport {classNames} from '../utils/classNames';\nimport {ClearSlots, SlotProvider} from '../utils/Slots';\nimport {DOMAttributes, Node} from '@react-types/shared';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport {Grid} from '../layout/Grid';\nimport InfoOutline from '@spectrum-icons/workflow/InfoOutline';\n// @ts-ignore\nimport intlMessages from '../../intl/menu/*.json';\nimport {mergeRefs} from 'react-aria/mergeRefs';\nimport React, {JSX, useMemo, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {Text} from '../text/Text';\nimport {TreeState} from 'react-stately/useTreeState';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useMenuContext, useSubmenuTriggerContext} from './context';\nimport {useMenuItem} from 'react-aria/useMenu';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useSlotId} from 'react-aria/private/utils/useId';\n\ninterface MenuItemProps<T> {\n  item: Node<T>;\n  state: TreeState<T>;\n  isVirtualized?: boolean;\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>): JSX.Element {\n  let {item, state, isVirtualized} = props;\n  let {closeOnSelect} = useMenuContext();\n  let {rendered, key} = item;\n\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/menu');\n  let {direction} = useLocale();\n\n  let submenuTriggerContext = useSubmenuTriggerContext();\n  let {triggerRef, ...submenuTriggerProps} = submenuTriggerContext || {};\n  let isSubmenuTrigger = !!submenuTriggerContext;\n  let isUnavailable;\n  let ElementType: React.ElementType = item.props.href ? 'a' : 'div';\n\n  if (isSubmenuTrigger) {\n    isUnavailable = submenuTriggerContext!.isUnavailable;\n  }\n\n  let isDisabled = state.disabledKeys.has(key);\n  let isContextualHelpTrigger = isSubmenuTrigger && isUnavailable !== undefined;\n  let isSelectable =\n    (isContextualHelpTrigger ? !isUnavailable : !isSubmenuTrigger) &&\n    state.selectionManager.selectionMode !== 'none';\n  let isSelected = isSelectable && state.selectionManager.isSelected(key);\n  let itemref = useRef<any>(null);\n  let ref = useObjectRef(useMemo(() => mergeRefs(itemref, triggerRef), [itemref, triggerRef]));\n  let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps} = useMenuItem(\n    {\n      isSelected,\n      isDisabled,\n      'aria-label': item['aria-label'],\n      key,\n      closeOnSelect,\n      isVirtualized,\n      ...submenuTriggerProps\n    },\n    state,\n    ref\n  );\n  let endId = useSlotId();\n  let endProps: DOMAttributes = {};\n  if (endId) {\n    endProps.id = endId;\n    menuItemProps['aria-describedby'] = [menuItemProps['aria-describedby'], endId]\n      .filter(Boolean)\n      .join(' ');\n  }\n\n  let contents = typeof rendered === 'string' ? <Text>{rendered}</Text> : rendered;\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <ElementType\n        {...menuItemProps}\n        ref={ref}\n        className={classNames(styles, 'spectrum-Menu-item', {\n          'is-disabled': isDisabled,\n          'is-selected': isSelected,\n          'is-selectable': isSelectable,\n          'is-open': submenuTriggerProps.isOpen\n        })}>\n        <Grid UNSAFE_className={classNames(styles, 'spectrum-Menu-itemGrid')}>\n          <ClearSlots>\n            <SlotProvider\n              slots={{\n                text: {UNSAFE_className: styles['spectrum-Menu-itemLabel'], ...labelProps},\n                end: {UNSAFE_className: styles['spectrum-Menu-end'], ...endProps},\n                icon: {UNSAFE_className: styles['spectrum-Menu-icon'], size: 'S'},\n                description: {\n                  UNSAFE_className: styles['spectrum-Menu-description'],\n                  ...descriptionProps\n                },\n                keyboard: {\n                  UNSAFE_className: styles['spectrum-Menu-keyboard'],\n                  ...keyboardShortcutProps\n                },\n                chevron: {UNSAFE_className: styles['spectrum-Menu-chevron'], size: 'S'}\n              }}>\n              {contents}\n              {isSelected && (\n                <CheckmarkMedium\n                  slot=\"checkmark\"\n                  UNSAFE_className={classNames(styles, 'spectrum-Menu-checkmark')}\n                />\n              )}\n              {isUnavailable && (\n                <InfoOutline\n                  slot=\"end\"\n                  size=\"XS\"\n                  alignSelf=\"center\"\n                  aria-label={stringFormatter.format('unavailable')}\n                />\n              )}\n              {isUnavailable == null &&\n                isSubmenuTrigger &&\n                (direction === 'rtl' ? (\n                  <ChevronLeft slot=\"chevron\" />\n                ) : (\n                  <ChevronRight slot=\"chevron\" />\n                ))}\n            </SlotProvider>\n          </ClearSlots>\n        </Grid>\n      </ElementType>\n    </FocusRing>\n  );\n}\n"],"names":[],"version":3,"file":"MenuItem.mjs.map"}