"use client"; import { renderElement } from "../../utils/use-render.js"; import { MenuTriggerChildContextProvider, useMenuContext, useOptionalMenuItemSettingContext, useSubMenuContext } from "./context.js"; import { useSafeId } from "../../utils/use-safe-id.js"; import { MenuItemSettingProvider } from "./menu-item-setting-provider.js"; import { isMenuNavigationKey } from "@videojs/core/dom"; import { forwardRef, useCallback, useEffect, useMemo, useRef } from "react"; import { supportsAnchorPositioning } from "@videojs/utils/dom"; import { jsx } from "react/jsx-runtime"; //#region src/ui/menu/menu-trigger.tsx function toUIKeyboardEvent(event) { return { get defaultPrevented() { return event.defaultPrevented; }, key: event.key, shiftKey: event.shiftKey, ctrlKey: event.ctrlKey, altKey: event.altKey, metaKey: event.metaKey, target: event.target instanceof Node ? event.target : event.currentTarget, currentTarget: event.currentTarget, preventDefault: () => event.preventDefault(), stopPropagation: () => event.stopPropagation() }; } function preventMenuKeyDefault(event) { const keyboardEvent = toUIKeyboardEvent(event); if (event.key !== "Escape" && isMenuNavigationKey(keyboardEvent) && !event.defaultPrevented) event.preventDefault(); } /** * Button that toggles the menu visibility. At root level renders a `