{
  "schemaVersion": "1.0.0",
  "readme": "",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "sp-menu-divider.js",
      "declarations": [],
      "exports": [
        {
          "kind": "custom-element-definition",
          "name": "sp-menu-divider",
          "declaration": {
            "name": "MenuDivider",
            "module": "/src/MenuDivider.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "sp-menu-group.js",
      "declarations": [],
      "exports": [
        {
          "kind": "custom-element-definition",
          "name": "sp-menu-group",
          "declaration": {
            "name": "MenuGroup",
            "module": "/src/MenuGroup.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "sp-menu-item.js",
      "declarations": [],
      "exports": [
        {
          "kind": "custom-element-definition",
          "name": "sp-menu-item",
          "declaration": {
            "name": "MenuItem",
            "module": "/src/MenuItem.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "sp-menu.js",
      "declarations": [],
      "exports": [
        {
          "kind": "custom-element-definition",
          "name": "sp-menu",
          "declaration": {
            "name": "Menu",
            "module": "/src/Menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/Menu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Spectrum Menu Component",
          "name": "Menu",
          "slots": [
            {
              "description": "menu items to be listed in the menu",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "shadowRootOptions",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ ...SpectrumElement.shadowRootOptions, delegatesFocus: true, }"
            },
            {
              "kind": "field",
              "name": "isSubmenu",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "asMenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Menu"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "_mobileViewRoot",
              "type": {
                "text": "Menu | null"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "rovingTabindexController",
              "type": {
                "text": "RovingTabindexController<MenuItem> | undefined"
              },
              "privacy": "protected"
            },
            {
              "kind": "field",
              "name": "touchStartY",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "iPad scroll detection properties\n\nThis feature prevents menu item selection during iPad scrolling to avoid\naccidental selections when users are trying to scroll through a long menu.\n\nHow it works:\n1. On touchstart: Record initial Y position and timestamp\n2. On touchmove: Calculate vertical movement and time elapsed\n3. If movement > threshold AND time < threshold: Mark as scrolling\n4. On touchend: Reset scrolling state after a delay\n5. During selection: Prevent selection if scrolling is detected\n\nThis prevents the common iPad issue where users accidentally select menu\nitems while trying to scroll through the menu content.\n\nThreshold Values:\n- Movement threshold: 10px (consistent with Card component click vs. drag detection)\n- Time threshold: 300ms (consistent with longpress duration across the design system)\n- Reset delay: 100ms (allows final touch events to be processed)\n\nThese values are carefully chosen to balance preventing accidental triggers\nwhile allowing intentional scroll gestures. They represent a common UX pattern\nin mobile interfaces and are consistent with other components in the design system."
            },
            {
              "kind": "field",
              "name": "touchStartTime",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "default": "undefined"
            },
            {
              "kind": "field",
              "name": "isCurrentlyScrolling",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "scrollThreshold",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "10",
              "description": "Minimum vertical movement (in pixels) required to trigger scrolling detection.\n\nThis threshold is consistent with other components in the design system:\n- Card component uses 10px for click vs. drag detection\n- Menu component uses 10px for scroll vs. selection detection\n\nThe 10px threshold is carefully chosen to:\n- Allow for natural finger tremor and accidental touches\n- Distinguish between intentional scroll gestures and taps\n- Provide consistent behavior across the platform"
            },
            {
              "kind": "field",
              "name": "scrollTimeThreshold",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "300",
              "description": "Maximum time (in milliseconds) for a movement to be considered scrolling.\n\nThis threshold is consistent with other timing values in the design system:\n- Longpress duration: 300ms (ActionButton, LongpressController)\n- Scroll detection: 300ms (Menu component)\n\nQuick movements within this timeframe are likely intentional scrolls,\nwhile slower movements are more likely taps or selections."
            },
            {
              "kind": "field",
              "name": "isScrolling",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "description": "Public getter for scrolling state\nReturns true if the component is currently in a scrolling state"
            },
            {
              "kind": "field",
              "name": "currentMobileSubmenu",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "public",
              "description": "Returns the MenuItem whose submenu is currently displayed at the\ntop of the mobile drill-down stack, or `undefined` when no submenu\nis open.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "openMobileSubmenu",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  },
                  "description": "The MenuItem whose submenu should be opened."
                }
              ],
              "description": "Opens a mobile submenu by projecting its content into this menu's\nlight DOM, pushing it onto the submenu stack, triggering the\nslide-in animation, and focusing the back button."
            },
            {
              "kind": "method",
              "name": "closeMobileSubmenu",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Closes the topmost mobile submenu by restoring it to its original\nparent MenuItem, popping it from the stack, and either re-focusing\nthe previous submenu's back button or returning focus to the\ntriggering MenuItem when no deeper level remains."
            },
            {
              "kind": "method",
              "name": "_focusProjectedSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  },
                  "description": "The MenuItem whose projected submenu should receive focus."
                }
              ],
              "description": "Focuses the mobile back button inside the given item's projected\nsubmenu. Explicitly resets `tabIndex` and `focused` on every other\nchild of the submenu so only the back row is in the tab order\nafter the drill-down opens. We avoid delegating to the projected\nsubmenu's `RovingTabindexController` here because the back button\nis appended dynamically via `render()` and may not yet be in the\ncontroller's element cache when this runs, which would cause\nfocus to fall back to the first nested item instead."
            },
            {
              "kind": "method",
              "name": "_focusMobileBackRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Focuses the mobile back button of the currently visible projected\nsubmenu. Used when the user presses ArrowUp from the first nested\nitem so focus moves to the back row instead of wrapping. Manages\n`tabIndex`/`focused` explicitly to keep the back row as the only\ntabbable element in the projected submenu."
            },
            {
              "kind": "method",
              "name": "_focusFirstItemInCurrentNestedSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Focuses the first focusable item inside the currently visible\nprojected submenu, skipping the back row. Used when the user\npresses ArrowDown from the back row. Manages `tabIndex`/`focused`\nexplicitly so only the focused item is in the tab order."
            },
            {
              "kind": "field",
              "name": "handleMobileDrilldownKeydownCapture",
              "privacy": "private",
              "description": "Capture-phase keydown handler that overrides the default\n`RovingTabindexController` wrap behavior at the mobile drill-down\nboundary:\n  - ArrowUp on the first nested item moves focus to the back row.\n  - ArrowDown on the back row moves focus to the first nested item.\n\nRuns in the capture phase so it preempts the projected submenu's\ncontroller, which handles arrow keys in the bubble phase."
            },
            {
              "kind": "method",
              "name": "_triggerMobileTransition",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "'forward' | 'back'"
                  },
                  "description": "`'forward'` slides content in from the right,\n`'back'` slides content in from the left."
                }
              ],
              "description": "Triggers a CSS slide animation on the mobile submenu wrapper.\nWaits for the current Lit update cycle, then sets the\n`mobile-transition` attribute so the keyframe animation plays."
            },
            {
              "kind": "field",
              "name": "_handleAnimationEnd",
              "privacy": "private",
              "description": "Cleans up the `mobile-transition` attribute once the CSS slide\nanimation finishes, preventing the animation from replaying on\nsubsequent layout changes. Bound declaratively via `@animationend`\non the wrapper, so it only fires for that element."
            },
            {
              "kind": "method",
              "name": "resetMobileSubmenus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Restores every projected submenu back to its original parent and\nclears the submenu stack. Called during `disconnectedCallback` or\nwhen the menu overlay closes to ensure a clean state."
            },
            {
              "kind": "method",
              "name": "_projectMobileSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "description": "Moves the submenu element from its MenuItem parent into this Menu's\nlight DOM with a `mobile-submenu` slot, so it projects through the\nnamed slot in the shadow DOM. Any previously visible projected submenu\nis moved to a non-rendered slot to avoid both showing at once."
            },
            {
              "kind": "method",
              "name": "_restoreMobileSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "description": "Restores the submenu element back to its original MenuItem parent\nand resets the slot attribute."
            },
            {
              "kind": "field",
              "name": "handleMobileBackClick",
              "privacy": "private",
              "description": "Handles click on the mobile back button. Stops the event from\nreaching parent menus and closes the current mobile submenu."
            },
            {
              "kind": "field",
              "name": "_mobileBackContainers",
              "privacy": "private",
              "default": "new Map<HTMLElement, HTMLElement>()",
              "description": "Maps each projected submenu element to its Lit render container so\nthat back button elements can be individually cleaned up when a\nsubmenu is restored, without affecting other levels in the stack."
            },
            {
              "kind": "method",
              "name": "_renderMobileBackElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "submenuEl",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Declaratively renders the mobile back button and divider into the\nprojected submenu element using Lit's `render()`, so the back button\nlives inside the same `<sp-menu>` and participates in its\n`RovingTabindexController` for keyboard navigation. Re-renders\nwhenever `dir` or `mobileBackLabel` change so the icon orientation\nand label stay in sync."
            },
            {
              "kind": "method",
              "name": "_refreshMobileBackElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Re-render any open mobile back containers so changes to\n`mobileBackLabel` (and other reactive values consumed by the\nback-button template) propagate without needing to close\nand re-open the drill-down."
            },
            {
              "kind": "method",
              "name": "_removeMobileBackElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "submenuEl",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Removes the mobile back button render container from the given\nprojected submenu element."
            },
            {
              "kind": "method",
              "name": "_restoreSubmenuChildState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "submenu",
                  "type": {
                    "text": "Menu"
                  },
                  "description": "The submenu whose child state needs restoring."
                },
                {
                  "name": "savedChildItems",
                  "type": {
                    "text": "Set<MenuItem>"
                  },
                  "description": "The set of MenuItem children captured\nbefore the DOM move."
                }
              ],
              "description": "Re-adds saved child items to the submenu's `childItemSet` and\ninvalidates cached references after DOM re-parenting, so the\n`RovingTabindexController` picks up the correct set of focusable\nchildren."
            },
            {
              "kind": "field",
              "name": "_mobileSubmenuOriginalParents",
              "privacy": "private",
              "default": "new Map<HTMLElement, HTMLElement>()",
              "description": "Maps each projected submenu element to its original parent so the\nelement can be moved back when the submenu is closed."
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "label of the menu",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "ignore",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether menu should be ignored by roving tabindex controller",
              "attribute": "ignore",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "mobileView",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Enables mobile submenu navigation where tapping a submenu item replaces\nthe current menu content with the submenu's children (drill-down) instead\nof opening a flyout overlay.",
              "attribute": "mobile-view",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "mobileBackLabel",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "'Back'",
              "description": "Label for the mobile back button, used for localization.",
              "attribute": "mobile-back-label"
            },
            {
              "kind": "field",
              "name": "_mobileSubmenuStack",
              "type": {
                "text": "MenuItem[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "selects",
              "type": {
                "text": "undefined | 'inherit' | 'single' | 'multiple'"
              },
              "privacy": "public",
              "description": "how the menu allows selection of its items:\n- `undefined` (default): no selection is allowed\n- `\"inherit\"`: the selection behavior is managed from an ancestor\n- `\"single\"`: only one item can be selected at a time\n - `\"multiple\"`: multiple items can be selected",
              "attribute": "selects",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "value of the selected item(s)",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "valueSeparator",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "','",
              "attribute": "value-separator"
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "string[]"
              },
              "privacy": "public",
              "description": "selected items values as string"
            },
            {
              "kind": "field",
              "name": "_selected",
              "privacy": "protected",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "selectedItems",
              "privacy": "public",
              "default": "[]",
              "description": "array of selected menu items"
            },
            {
              "kind": "field",
              "name": "menuSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "public"
            },
            {
              "kind": "field",
              "name": "childItemSet",
              "privacy": "private",
              "default": "new Set<MenuItem>()"
            },
            {
              "kind": "field",
              "name": "focusedItemIndex",
              "type": {
                "text": "number"
              },
              "privacy": "public",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "focusInItemIndex",
              "type": {
                "text": "number"
              },
              "privacy": "public",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "shouldSupportDragAndSelect",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Whether to support the pointerdown-drag-pointerup selection strategy.\nDefaults to false to prevent click/touch events from being captured\nbehind the menu tray in mobile environments (since the menu closes\nimmediately on pointerup)."
            },
            {
              "kind": "field",
              "name": "focusInItem",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "controlsRovingTabindex",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "selectedItemsMap",
              "privacy": "private",
              "default": "new Map<MenuItem, boolean>()"
            },
            {
              "kind": "field",
              "name": "childItems",
              "type": {
                "text": "MenuItem[]"
              },
              "privacy": "public",
              "description": "child items managed by menu",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "cachedChildItems",
              "type": {
                "text": "MenuItem[] | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateCachedMenuItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "MenuItem[]"
                }
              }
            },
            {
              "kind": "field",
              "name": "childRole",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "Hide this getter from web-component-analyzer until\nhttps://github.com/runem/web-component-analyzer/issues/131\nhas been addressed.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "ownRole",
              "type": {
                "text": "string"
              },
              "privacy": "protected",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "resolvedSelects",
              "type": {
                "text": "SelectsType | undefined"
              },
              "privacy": "private",
              "description": "menuitem role based on selection type"
            },
            {
              "kind": "field",
              "name": "resolvedRole",
              "type": {
                "text": "RoleType | undefined"
              },
              "privacy": "private",
              "description": "menu role based on selection type"
            },
            {
              "kind": "method",
              "name": "onFocusableItemAddedOrUpdated",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MenuItemAddedOrUpdatedEvent"
                  }
                }
              ],
              "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the CAPTURE phase the first\nMenu based element that the event encounters will manage the focus state of the\ndispatching `<sp-menu-item>` element."
            },
            {
              "kind": "method",
              "name": "onSelectableItemAddedOrUpdated",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MenuItemAddedOrUpdatedEvent"
                  }
                }
              ],
              "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the BUBBLE phase the first\nMenu based element that the event encounters that does not inherit selection will\nmanage the selection state of the dispatching `<sp-menu-item>` element."
            },
            {
              "kind": "method",
              "name": "addChildItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "removeChildItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focusOnFirstSelectedItem",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "{ preventScroll }",
                  "default": "{}",
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "for picker elements, will set focus on first selected item"
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "{ preventScroll }",
                  "default": "{}",
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTouchStart",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  },
                  "description": "The TouchEvent from the touchstart event"
                }
              ],
              "description": "Handles touchstart events for iPad scroll detection.\n\nRecords the initial touch position and timestamp to establish a baseline\nfor detecting scroll gestures. Only processes single-touch events to\navoid interference with multi-touch gestures."
            },
            {
              "kind": "method",
              "name": "handleTouchMove",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  },
                  "description": "The TouchEvent from the touchmove event"
                }
              ],
              "description": "Handles touchmove events for iPad scroll detection.\n\nCalculates the vertical movement distance and time elapsed since touchstart.\nIf the movement exceeds the threshold (10px) and happens within the time\nthreshold (300ms), it marks the interaction as scrolling. This helps\ndistinguish between intentional scroll gestures and accidental touches."
            },
            {
              "kind": "method",
              "name": "handleTouchEnd",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Handles touchend events for iPad scroll detection.\n\nResets the scrolling state after a short delay (100ms) to allow for\nany final touch events to be processed. This delay prevents immediate\nstate changes that could interfere with the selection logic.\n\nThe 100ms delay is consistent with the design system's approach to\ntouch event handling and ensures that any final touch events or\ngesture recognition can complete before the scrolling state is reset."
            },
            {
              "kind": "field",
              "name": "pointerUpTarget",
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "method",
              "name": "handleFocusout",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePointerup",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePointerBasedSelection",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "descendentOverlays",
              "privacy": "private",
              "default": "new Map<Overlay, Overlay>()"
            },
            {
              "kind": "method",
              "name": "handleDescendentOverlayOpened",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDescendentOverlayClosed",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleSubmenuClosed",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "getNeighboringFocusableElement",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "MenuItem"
                }
              },
              "parameters": [
                {
                  "name": "menuItem",
                  "optional": true,
                  "type": {
                    "text": "MenuItem"
                  }
                },
                {
                  "name": "before",
                  "default": "false",
                  "description": "return the item before; default is false",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "given a menu item, returns the next focusable menu item before or after it;\nif no menu item is provided, returns the first focusable menu item"
            },
            {
              "kind": "field",
              "name": "handleSubmenuOpened",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "selectOrToggleItem",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "targetItem",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "navigateBetweenRelatedMenus",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MenuItemKeydownEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeydown",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "_hasUpdatedSelectedItemIndex",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "prepareToCleanUp",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "on focus, removes focus from focus styling item, and updates the selected item index"
            },
            {
              "kind": "method",
              "name": "updateSelectedItemIndex",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "_willUpdateItems",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_updateFocus",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleItemsChanged",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "updateCache",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "updateItemFocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "closeDescendentOverlays",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleSlotchange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "{\n    target,\n  }",
                  "type": {
                    "text": "Event & { target: HTMLSlotElement }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderMenuItemSlot",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              }
            },
            {
              "kind": "method",
              "name": "selectsChanged",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "isFocusableElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "childItemsUpdated",
              "type": {
                "text": "Promise<unknown[]>"
              },
              "privacy": "protected"
            },
            {
              "kind": "field",
              "name": "cacheUpdated",
              "privacy": "protected"
            },
            {
              "kind": "field",
              "name": "resolveCacheUpdated",
              "privacy": "protected"
            },
            {
              "kind": "method",
              "name": "getUpdateComplete",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<boolean>"
                }
              }
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Announces that the `value` of the element has changed"
            },
            {
              "name": "close",
              "type": {
                "text": "Event"
              }
            }
          ],
          "attributes": [
            {
              "description": "how the menu allows selection of its items:\n- `undefined` (default): no selection is allowed\n- `\"inherit\"`: the selection behavior is managed from an ancestor\n- `\"single\"`: only one item can be selected at a time\n - `\"multiple\"`: multiple items can be selected",
              "name": "selects",
              "type": {
                "text": "undefined | 'inherit' | 'single' | 'multiple'"
              },
              "fieldName": "selects"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "label of the menu",
              "fieldName": "label"
            },
            {
              "name": "ignore",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether menu should be ignored by roving tabindex controller",
              "fieldName": "ignore"
            },
            {
              "name": "mobile-view",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables mobile submenu navigation where tapping a submenu item replaces\nthe current menu content with the submenu's children (drill-down) instead\nof opening a flyout overlay.",
              "fieldName": "mobileView"
            },
            {
              "name": "mobile-back-label",
              "type": {
                "text": "string"
              },
              "default": "'Back'",
              "description": "Label for the mobile back button, used for localization.",
              "fieldName": "mobileBackLabel"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "value of the selected item(s)",
              "fieldName": "value"
            },
            {
              "name": "value-separator",
              "type": {
                "text": "string"
              },
              "default": "','",
              "fieldName": "valueSeparator"
            }
          ],
          "mixins": [
            {
              "name": "SizedMixin",
              "package": "@spectrum-web-components/base"
            }
          ],
          "superclass": {
            "name": "SpectrumElement",
            "package": "@spectrum-web-components/base"
          },
          "tagName": "sp-menu",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "Menu",
          "declaration": {
            "name": "Menu",
            "module": "src/Menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/MenuDivider.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "MenuDivider",
          "members": [],
          "mixins": [
            {
              "name": "SizedMixin",
              "package": "@spectrum-web-components/base"
            }
          ],
          "superclass": {
            "name": "SpectrumElement",
            "package": "@spectrum-web-components/base"
          },
          "tagName": "sp-menu-divider",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "MenuDivider",
          "declaration": {
            "name": "MenuDivider",
            "module": "src/MenuDivider.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/MenuGroup.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "MenuGroup",
          "slots": [
            {
              "description": "headline of the menu group",
              "name": "header"
            },
            {
              "description": "menu items to be listed in the group",
              "name": "",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "headerId",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "headerElements",
              "type": {
                "text": "NodeListOf<HTMLElement>"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "headerElement",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "ownRole",
              "type": {
                "text": "string"
              },
              "privacy": "protected",
              "readonly": true,
              "description": "a menu group must have the role `group`\nand should never function as a menu",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "controlsRovingTabindex",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "readonly": true,
              "description": "only a menu controls roving tabindex;\ngroups should defer navigation to parent menu",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "updateLabel",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "shadowRootOptions",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ ...SpectrumElement.shadowRootOptions, delegatesFocus: true, }",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "isSubmenu",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "asMenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Menu"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_mobileViewRoot",
              "type": {
                "text": "Menu | null"
              },
              "privacy": "private",
              "readonly": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "rovingTabindexController",
              "type": {
                "text": "RovingTabindexController<MenuItem> | undefined"
              },
              "privacy": "protected",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "touchStartY",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "iPad scroll detection properties\n\nThis feature prevents menu item selection during iPad scrolling to avoid\naccidental selections when users are trying to scroll through a long menu.\n\nHow it works:\n1. On touchstart: Record initial Y position and timestamp\n2. On touchmove: Calculate vertical movement and time elapsed\n3. If movement > threshold AND time < threshold: Mark as scrolling\n4. On touchend: Reset scrolling state after a delay\n5. During selection: Prevent selection if scrolling is detected\n\nThis prevents the common iPad issue where users accidentally select menu\nitems while trying to scroll through the menu content.\n\nThreshold Values:\n- Movement threshold: 10px (consistent with Card component click vs. drag detection)\n- Time threshold: 300ms (consistent with longpress duration across the design system)\n- Reset delay: 100ms (allows final touch events to be processed)\n\nThese values are carefully chosen to balance preventing accidental triggers\nwhile allowing intentional scroll gestures. They represent a common UX pattern\nin mobile interfaces and are consistent with other components in the design system.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "touchStartTime",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "isCurrentlyScrolling",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "scrollThreshold",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "10",
              "description": "Minimum vertical movement (in pixels) required to trigger scrolling detection.\n\nThis threshold is consistent with other components in the design system:\n- Card component uses 10px for click vs. drag detection\n- Menu component uses 10px for scroll vs. selection detection\n\nThe 10px threshold is carefully chosen to:\n- Allow for natural finger tremor and accidental touches\n- Distinguish between intentional scroll gestures and taps\n- Provide consistent behavior across the platform",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "scrollTimeThreshold",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "300",
              "description": "Maximum time (in milliseconds) for a movement to be considered scrolling.\n\nThis threshold is consistent with other timing values in the design system:\n- Longpress duration: 300ms (ActionButton, LongpressController)\n- Scroll detection: 300ms (Menu component)\n\nQuick movements within this timeframe are likely intentional scrolls,\nwhile slower movements are more likely taps or selections.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "isScrolling",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "description": "Public getter for scrolling state\nReturns true if the component is currently in a scrolling state",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "currentMobileSubmenu",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "public",
              "description": "Returns the MenuItem whose submenu is currently displayed at the\ntop of the mobile drill-down stack, or `undefined` when no submenu\nis open.",
              "readonly": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "openMobileSubmenu",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  },
                  "description": "The MenuItem whose submenu should be opened."
                }
              ],
              "description": "Opens a mobile submenu by projecting its content into this menu's\nlight DOM, pushing it onto the submenu stack, triggering the\nslide-in animation, and focusing the back button.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "closeMobileSubmenu",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Closes the topmost mobile submenu by restoring it to its original\nparent MenuItem, popping it from the stack, and either re-focusing\nthe previous submenu's back button or returning focus to the\ntriggering MenuItem when no deeper level remains.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_focusProjectedSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  },
                  "description": "The MenuItem whose projected submenu should receive focus."
                }
              ],
              "description": "Focuses the mobile back button inside the given item's projected\nsubmenu. Explicitly resets `tabIndex` and `focused` on every other\nchild of the submenu so only the back row is in the tab order\nafter the drill-down opens. We avoid delegating to the projected\nsubmenu's `RovingTabindexController` here because the back button\nis appended dynamically via `render()` and may not yet be in the\ncontroller's element cache when this runs, which would cause\nfocus to fall back to the first nested item instead.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_focusMobileBackRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Focuses the mobile back button of the currently visible projected\nsubmenu. Used when the user presses ArrowUp from the first nested\nitem so focus moves to the back row instead of wrapping. Manages\n`tabIndex`/`focused` explicitly to keep the back row as the only\ntabbable element in the projected submenu.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_focusFirstItemInCurrentNestedSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Focuses the first focusable item inside the currently visible\nprojected submenu, skipping the back row. Used when the user\npresses ArrowDown from the back row. Manages `tabIndex`/`focused`\nexplicitly so only the focused item is in the tab order.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "handleMobileDrilldownKeydownCapture",
              "privacy": "private",
              "description": "Capture-phase keydown handler that overrides the default\n`RovingTabindexController` wrap behavior at the mobile drill-down\nboundary:\n  - ArrowUp on the first nested item moves focus to the back row.\n  - ArrowDown on the back row moves focus to the first nested item.\n\nRuns in the capture phase so it preempts the projected submenu's\ncontroller, which handles arrow keys in the bubble phase.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_triggerMobileTransition",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "'forward' | 'back'"
                  },
                  "description": "`'forward'` slides content in from the right,\n`'back'` slides content in from the left."
                }
              ],
              "description": "Triggers a CSS slide animation on the mobile submenu wrapper.\nWaits for the current Lit update cycle, then sets the\n`mobile-transition` attribute so the keyframe animation plays.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_handleAnimationEnd",
              "privacy": "private",
              "description": "Cleans up the `mobile-transition` attribute once the CSS slide\nanimation finishes, preventing the animation from replaying on\nsubsequent layout changes. Bound declaratively via `@animationend`\non the wrapper, so it only fires for that element.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "resetMobileSubmenus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Restores every projected submenu back to its original parent and\nclears the submenu stack. Called during `disconnectedCallback` or\nwhen the menu overlay closes to ensure a clean state.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_projectMobileSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "description": "Moves the submenu element from its MenuItem parent into this Menu's\nlight DOM with a `mobile-submenu` slot, so it projects through the\nnamed slot in the shadow DOM. Any previously visible projected submenu\nis moved to a non-rendered slot to avoid both showing at once.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_restoreMobileSubmenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "description": "Restores the submenu element back to its original MenuItem parent\nand resets the slot attribute.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "handleMobileBackClick",
              "privacy": "private",
              "description": "Handles click on the mobile back button. Stops the event from\nreaching parent menus and closes the current mobile submenu.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_mobileBackContainers",
              "privacy": "private",
              "default": "new Map<HTMLElement, HTMLElement>()",
              "description": "Maps each projected submenu element to its Lit render container so\nthat back button elements can be individually cleaned up when a\nsubmenu is restored, without affecting other levels in the stack.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_renderMobileBackElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "submenuEl",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Declaratively renders the mobile back button and divider into the\nprojected submenu element using Lit's `render()`, so the back button\nlives inside the same `<sp-menu>` and participates in its\n`RovingTabindexController` for keyboard navigation. Re-renders\nwhenever `dir` or `mobileBackLabel` change so the icon orientation\nand label stay in sync.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_refreshMobileBackElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Re-render any open mobile back containers so changes to\n`mobileBackLabel` (and other reactive values consumed by the\nback-button template) propagate without needing to close\nand re-open the drill-down.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_removeMobileBackElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "submenuEl",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Removes the mobile back button render container from the given\nprojected submenu element.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "_restoreSubmenuChildState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "submenu",
                  "type": {
                    "text": "Menu"
                  },
                  "description": "The submenu whose child state needs restoring."
                },
                {
                  "name": "savedChildItems",
                  "type": {
                    "text": "Set<MenuItem>"
                  },
                  "description": "The set of MenuItem children captured\nbefore the DOM move."
                }
              ],
              "description": "Re-adds saved child items to the submenu's `childItemSet` and\ninvalidates cached references after DOM re-parenting, so the\n`RovingTabindexController` picks up the correct set of focusable\nchildren.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_mobileSubmenuOriginalParents",
              "privacy": "private",
              "default": "new Map<HTMLElement, HTMLElement>()",
              "description": "Maps each projected submenu element to its original parent so the\nelement can be moved back when the submenu is closed.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "label of the menu",
              "attribute": "label",
              "reflects": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "ignore",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether menu should be ignored by roving tabindex controller",
              "attribute": "ignore",
              "reflects": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "mobileView",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Enables mobile submenu navigation where tapping a submenu item replaces\nthe current menu content with the submenu's children (drill-down) instead\nof opening a flyout overlay.",
              "attribute": "mobile-view",
              "reflects": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "mobileBackLabel",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "'Back'",
              "description": "Label for the mobile back button, used for localization.",
              "attribute": "mobile-back-label",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_mobileSubmenuStack",
              "type": {
                "text": "MenuItem[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "selects",
              "type": {
                "text": "undefined | 'inherit' | 'single' | 'multiple'"
              },
              "privacy": "public",
              "description": "how the menu allows selection of its items:\n- `undefined` (default): no selection is allowed\n- `\"inherit\"`: the selection behavior is managed from an ancestor\n- `\"single\"`: only one item can be selected at a time\n - `\"multiple\"`: multiple items can be selected",
              "attribute": "selects",
              "reflects": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "value of the selected item(s)",
              "attribute": "value",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "valueSeparator",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "','",
              "attribute": "value-separator",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "string[]"
              },
              "privacy": "public",
              "description": "selected items values as string",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_selected",
              "privacy": "protected",
              "default": "[]",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "selectedItems",
              "privacy": "public",
              "default": "[]",
              "description": "array of selected menu items",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "menuSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "public",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "childItemSet",
              "privacy": "private",
              "default": "new Set<MenuItem>()",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "focusedItemIndex",
              "type": {
                "text": "number"
              },
              "privacy": "public",
              "default": "0",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "focusInItemIndex",
              "type": {
                "text": "number"
              },
              "privacy": "public",
              "default": "0",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "shouldSupportDragAndSelect",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Whether to support the pointerdown-drag-pointerup selection strategy.\nDefaults to false to prevent click/touch events from being captured\nbehind the menu tray in mobile environments (since the menu closes\nimmediately on pointerup).",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "focusInItem",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "public",
              "readonly": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "selectedItemsMap",
              "privacy": "private",
              "default": "new Map<MenuItem, boolean>()",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "childItems",
              "type": {
                "text": "MenuItem[]"
              },
              "privacy": "public",
              "description": "child items managed by menu",
              "readonly": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "cachedChildItems",
              "type": {
                "text": "MenuItem[] | undefined"
              },
              "privacy": "private",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "updateCachedMenuItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "MenuItem[]"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "childRole",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "Hide this getter from web-component-analyzer until\nhttps://github.com/runem/web-component-analyzer/issues/131\nhas been addressed.",
              "readonly": true,
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "resolvedSelects",
              "type": {
                "text": "SelectsType | undefined"
              },
              "privacy": "private",
              "description": "menuitem role based on selection type",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "resolvedRole",
              "type": {
                "text": "RoleType | undefined"
              },
              "privacy": "private",
              "description": "menu role based on selection type",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "onFocusableItemAddedOrUpdated",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MenuItemAddedOrUpdatedEvent"
                  }
                }
              ],
              "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the CAPTURE phase the first\nMenu based element that the event encounters will manage the focus state of the\ndispatching `<sp-menu-item>` element.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "onSelectableItemAddedOrUpdated",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MenuItemAddedOrUpdatedEvent"
                  }
                }
              ],
              "description": "When a descendant `<sp-menu-item>` element is added or updated it will dispatch\nthis event to announce its presence in the DOM. During the BUBBLE phase the first\nMenu based element that the event encounters that does not inherit selection will\nmanage the selection state of the dispatching `<sp-menu-item>` element.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "addChildItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "removeChildItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "focusOnFirstSelectedItem",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "{ preventScroll }",
                  "default": "{}",
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "for picker elements, will set focus on first selected item",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "{ preventScroll }",
                  "default": "{}",
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleTouchStart",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  },
                  "description": "The TouchEvent from the touchstart event"
                }
              ],
              "description": "Handles touchstart events for iPad scroll detection.\n\nRecords the initial touch position and timestamp to establish a baseline\nfor detecting scroll gestures. Only processes single-touch events to\navoid interference with multi-touch gestures.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleTouchMove",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  },
                  "description": "The TouchEvent from the touchmove event"
                }
              ],
              "description": "Handles touchmove events for iPad scroll detection.\n\nCalculates the vertical movement distance and time elapsed since touchstart.\nIf the movement exceeds the threshold (10px) and happens within the time\nthreshold (300ms), it marks the interaction as scrolling. This helps\ndistinguish between intentional scroll gestures and accidental touches.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleTouchEnd",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Handles touchend events for iPad scroll detection.\n\nResets the scrolling state after a short delay (100ms) to allow for\nany final touch events to be processed. This delay prevents immediate\nstate changes that could interfere with the selection logic.\n\nThe 100ms delay is consistent with the design system's approach to\ntouch event handling and ensures that any final touch events or\ngesture recognition can complete before the scrolling state is reset.",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "pointerUpTarget",
              "privacy": "private",
              "default": "null",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleFocusout",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handlePointerup",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handlePointerBasedSelection",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "descendentOverlays",
              "privacy": "private",
              "default": "new Map<Overlay, Overlay>()",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleDescendentOverlayOpened",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleDescendentOverlayClosed",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmenuClosed",
              "privacy": "public",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "getNeighboringFocusableElement",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "MenuItem"
                }
              },
              "parameters": [
                {
                  "name": "menuItem",
                  "optional": true,
                  "type": {
                    "text": "MenuItem"
                  }
                },
                {
                  "name": "before",
                  "default": "false",
                  "description": "return the item before; default is false",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "given a menu item, returns the next focusable menu item before or after it;\nif no menu item is provided, returns the first focusable menu item",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmenuOpened",
              "privacy": "public",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "selectOrToggleItem",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "targetItem",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "navigateBetweenRelatedMenus",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MenuItemKeydownEvent"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleKeydown",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_hasUpdatedSelectedItemIndex",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "prepareToCleanUp",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "on focus, removes focus from focus styling item, and updates the selected item index",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "updateSelectedItemIndex",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_willUpdateItems",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "_updateFocus",
              "type": {
                "text": "MenuItem | undefined"
              },
              "privacy": "private",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleItemsChanged",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "updateCache",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "updateItemFocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "closeDescendentOverlays",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "handleSlotchange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "{\n    target,\n  }",
                  "type": {
                    "text": "Event & { target: HTMLSlotElement }"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "renderMenuItemSlot",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "selectsChanged",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "isFocusableElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "childItemsUpdated",
              "type": {
                "text": "Promise<unknown[]>"
              },
              "privacy": "protected",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "cacheUpdated",
              "privacy": "protected",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "field",
              "name": "resolveCacheUpdated",
              "privacy": "protected",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            },
            {
              "kind": "method",
              "name": "getUpdateComplete",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<boolean>"
                }
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.js"
              }
            }
          ],
          "superclass": {
            "name": "Menu",
            "module": "/src/Menu.js"
          },
          "tagName": "sp-menu-group",
          "customElement": true,
          "attributes": [
            {
              "description": "how the menu allows selection of its items:\n- `undefined` (default): no selection is allowed\n- `\"inherit\"`: the selection behavior is managed from an ancestor\n- `\"single\"`: only one item can be selected at a time\n - `\"multiple\"`: multiple items can be selected",
              "name": "selects",
              "type": {
                "text": "undefined | 'inherit' | 'single' | 'multiple'"
              },
              "fieldName": "selects",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "label of the menu",
              "fieldName": "label",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "ignore",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether menu should be ignored by roving tabindex controller",
              "fieldName": "ignore",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "mobile-view",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables mobile submenu navigation where tapping a submenu item replaces\nthe current menu content with the submenu's children (drill-down) instead\nof opening a flyout overlay.",
              "fieldName": "mobileView",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "mobile-back-label",
              "type": {
                "text": "string"
              },
              "default": "'Back'",
              "description": "Label for the mobile back button, used for localization.",
              "fieldName": "mobileBackLabel",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "value of the selected item(s)",
              "fieldName": "value",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "value-separator",
              "type": {
                "text": "string"
              },
              "default": "','",
              "fieldName": "valueSeparator",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Announces that the `value` of the element has changed",
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            },
            {
              "name": "close",
              "type": {
                "text": "Event"
              },
              "inheritedFrom": {
                "name": "Menu",
                "module": "src/Menu.ts"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "MenuGroup",
          "declaration": {
            "name": "MenuGroup",
            "module": "src/MenuGroup.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "src/MenuItem.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Fires when a menu item is added or updated so that a parent menu can track it.",
          "name": "MenuItemAddedOrUpdatedEvent",
          "members": [
            {
              "kind": "method",
              "name": "clear",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "MenuItem"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "menuCascade",
              "default": "new WeakMap<HTMLElement, MenuCascadeItem>()"
            },
            {
              "kind": "field",
              "name": "item",
              "type": {
                "text": "MenuItem"
              },
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_item",
              "type": {
                "text": "MenuItem"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "currentAncestorWithSelects",
              "type": {
                "text": "Menu | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/MenuItem.ts"
          }
        },
        {
          "kind": "class",
          "description": "Fires to forward keyboard event information to parent menu.",
          "name": "MenuItemKeydownEvent",
          "members": [
            {
              "kind": "field",
              "name": "root",
              "type": {
                "text": "MenuItem | undefined"
              },
              "default": "this.getRootNode()"
            },
            {
              "kind": "field",
              "name": "_event",
              "type": {
                "text": "KeyboardEvent | undefined"
              },
              "privacy": "private",
              "default": "event"
            },
            {
              "kind": "field",
              "name": "altKey",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "code",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "ctrlKey",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isComposing",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "key",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "location",
              "type": {
                "text": "number"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "metaKey",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "repeat",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "shiftKey",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "nativeEvent",
              "type": {
                "text": "KeyboardEvent | undefined"
              },
              "privacy": "public",
              "description": "Original `KeyboardEvent` that triggered this forwarded event,\nexposed so listeners on the parent menu can call\n`preventDefault()`/`stopPropagation()` on the underlying event.",
              "readonly": true
            }
          ],
          "superclass": {
            "name": "KeyboardEvent",
            "module": "src/MenuItem.ts"
          }
        },
        {
          "kind": "class",
          "description": "",
          "name": "MenuItem",
          "slots": [
            {
              "description": "text content to display within the Menu Item",
              "name": ""
            },
            {
              "description": "description to be placed below the label of the Menu Item",
              "name": "description"
            },
            {
              "description": "icon element to be placed at the start of the Menu Item",
              "name": "icon"
            },
            {
              "description": "content placed at the end of the Menu Item like values, keyboard shortcuts, etc.",
              "name": "value"
            },
            {
              "description": "content placed in a submenu",
              "name": "submenu"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "abortControllerSubmenu",
              "type": {
                "text": "AbortController"
              }
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether the menu item is active or has an active descendant",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "dependencyManager",
              "privacy": "private",
              "default": "new DependencyManagerController(this)"
            },
            {
              "kind": "field",
              "name": "focused",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether the menu item has keyboard focus",
              "attribute": "focused",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether the menu item is selected",
              "attribute": "selected",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "description": "value of the menu item which is used for selection",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "itemText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasSubmenu",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether the menu item has a submenu",
              "attribute": "has-submenu",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "contentSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "iconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "noWrap",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether menu item text content should not wrap",
              "attribute": "no-wrap",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "anchorElement",
              "type": {
                "text": "HTMLAnchorElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "overlayElement",
              "type": {
                "text": "Overlay"
              },
              "privacy": "public"
            },
            {
              "kind": "field",
              "name": "focusElement",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "public",
              "description": "the focusable element of the menu item",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasIcon",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "itemChildren",
              "type": {
                "text": "MenuItemChildren"
              },
              "privacy": "public",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_itemChildren",
              "type": {
                "text": "MenuItemChildren | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "whether submenu is open",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_openedViaKeyboard",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "whether menu item's submenu is opened via keyboard"
            },
            {
              "kind": "field",
              "name": "_closedViaPointer",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "whether menu item's submenu is closed via pointer leave"
            },
            {
              "kind": "field",
              "name": "_activePointerId",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "description": "Touch interaction state for submenu toggling"
            },
            {
              "kind": "field",
              "name": "_touchHandledViaPointerup",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_touchAbortController",
              "type": {
                "text": "AbortController | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClickCapture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void | boolean"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleSlottableRequest",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "proxyFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "shouldProxyClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "breakItemChildrenCache",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "isMobileView",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_mobileRootMenu",
              "type": {
                "text": "Menu | null"
              },
              "privacy": "private",
              "description": "Returns the root sp-menu with mobile-view, traversing up from\neither the focusRoot or the DOM tree.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderSubmenu",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              }
            },
            {
              "kind": "method",
              "name": "manageSubmenu",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event & { target: HTMLSlotElement }"
                  }
                }
              ],
              "description": "Determines if item has a submenu and updates the `aria-haspopup` attribute.\nSkips clearing state when the submenu is temporarily projected to the\nparent Menu's mobile-submenu slot."
            },
            {
              "kind": "method",
              "name": "handlePointerdown",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleTouchSubmenuToggle",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleTouchCleanup",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getActiveElementSafely",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleMouseover",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isInputElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Determines if an element is an input field that should retain focus.\nUses multiple detection strategies to identify input elements generically."
            },
            {
              "kind": "method",
              "name": "isNativeInputElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Checks if an element is a native HTML input element."
            },
            {
              "kind": "method",
              "name": "isSpectrumInputComponent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Checks if an element is a Spectrum Web Component with input behavior.\nUses ARIA roles and component patterns for generic detection."
            },
            {
              "kind": "field",
              "name": "handleKeydown",
              "description": "forward key info from keydown event to parent menu"
            },
            {
              "kind": "method",
              "name": "closeOverlaysForRoot",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSubmenuClick",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSubmenuFocus",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "handleBeforetoggle",
              "privacy": "protected"
            },
            {
              "kind": "method",
              "name": "handlePointerenter",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "leaveTimeout",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "privacy": "protected"
            },
            {
              "kind": "field",
              "name": "recentlyLeftChild",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "handlePointerleave",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSubmenuChange",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "When there is a `change` event in the submenu for this item\nthen we \"click\" this item to cascade the selection up the\nmenu tree allowing all submenus between the initial selection\nand the root of the tree to have their selection changes and\nbe closed."
            },
            {
              "kind": "method",
              "name": "handleSubmenuPointerenter",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleSubmenuPointerleave",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleSubmenuOpen",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "cleanup",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "openOverlay",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "shouldFocus",
                  "default": "false",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateAriaSelected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "setRole",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "role",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "_parentElement",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "willDispatchUpdate",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "triggerUpdate",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "dispatchUpdate",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "menuData",
              "type": {
                "text": "{\n    focusRoot?: Menu;\n    parentMenu?: Menu;\n    selectionRoot?: Menu;\n    cleanupSteps: ((item: MenuItem) => void)[];\n  }"
              },
              "privacy": "public",
              "default": "{ // menu that controls ArrowUp/ArrowDown navigation focusRoot: undefined, parentMenu: undefined, // menu or menu group that controls selection selectionRoot: undefined, cleanupSteps: [], }"
            }
          ],
          "events": [
            {
              "name": "focus",
              "type": {
                "text": "FocusEvent"
              }
            },
            {
              "name": "blur",
              "type": {
                "text": "FocusEvent"
              }
            },
            {
              "type": {
                "text": "MenuItemAddedOrUpdatedEvent"
              }
            },
            {
              "description": "announces the item has been added so a parent menu can take ownerships",
              "name": "sp-menu-item-added"
            }
          ],
          "attributes": [
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether the menu item is active or has an active descendant",
              "fieldName": "active"
            },
            {
              "name": "focused",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether the menu item has keyboard focus",
              "fieldName": "focused"
            },
            {
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether the menu item is selected",
              "fieldName": "selected"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "value of the menu item which is used for selection",
              "fieldName": "value"
            },
            {
              "name": "has-submenu",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether the menu item has a submenu",
              "fieldName": "hasSubmenu"
            },
            {
              "name": "no-wrap",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether menu item text content should not wrap",
              "fieldName": "noWrap"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "whether submenu is open",
              "fieldName": "open"
            }
          ],
          "mixins": [
            {
              "name": "LikeAnchor",
              "package": "@spectrum-web-components/shared/src/like-anchor.js"
            },
            {
              "name": "ObserveSlotText",
              "package": "@spectrum-web-components/shared"
            },
            {
              "name": "ObserveSlotPresence",
              "package": "@spectrum-web-components/shared"
            }
          ],
          "superclass": {
            "name": "Focusable",
            "package": "@spectrum-web-components/shared/src/focusable.js"
          },
          "tagName": "sp-menu-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "MenuItemAddedOrUpdatedEvent",
          "declaration": {
            "name": "MenuItemAddedOrUpdatedEvent",
            "module": "src/MenuItem.js"
          }
        },
        {
          "kind": "js",
          "name": "MenuItemKeydownEvent",
          "declaration": {
            "name": "MenuItemKeydownEvent",
            "module": "src/MenuItem.js"
          }
        },
        {
          "kind": "js",
          "name": "MenuItem",
          "declaration": {
            "name": "MenuItem",
            "module": "src/MenuItem.js"
          }
        }
      ]
    }
  ]
}
