{"version":3,"file":"dropdown-menu-block/view.js","mappings":"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","sources":["webpack://ncmaz-fse-core/external module \"@wordpress/interactivity\"","webpack://ncmaz-fse-core/webpack/bootstrap","webpack://ncmaz-fse-core/webpack/runtime/make namespace object","webpack://ncmaz-fse-core/./src/dropdown-menu-block/view.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { store, getContext, getElement } from \"@wordpress/interactivity\";\n\ntype TOpenBy = \"click\" | \"focus\";\n\ninterface TContext {\n\tmenuOpenedBy: {\n\t\tclick: boolean;\n\t\tfocus: boolean;\n\t};\n\tpreviousFocus: HTMLElement | null;\n\tdropdownMenu: HTMLElement | null;\n}\n\ninterface TState {\n\tisMenuOpen: boolean;\n}\n\nconst { state, actions } = store(\"ncmfse/dropdown-menu\", {\n\tstate: {\n\t\tget isMenuOpen() {\n\t\t\tconst context = getContext();\n\t\t\t// The menu is opened if either `click` or `focus` is true.\n\t\t\treturn Object.values(context.menuOpenedBy).filter(Boolean).length > 0;\n\t\t},\n\t} as TState,\n\tactions: {\n\t\ttoggleMenuOnClick() {\n\t\t\tconst context = getContext();\n\t\t\tconst { ref } = getElement();\n\n\t\t\t// Safari won't send focus to the clicked element, so we need to manually place it: https://bugs.webkit.org/show_bug.cgi?id=22261\n\t\t\tif (window.document.activeElement !== ref) {\n\t\t\t\tref?.focus();\n\t\t\t}\n\n\t\t\tif (context.menuOpenedBy.click || context.menuOpenedBy.focus) {\n\t\t\t\tactions.closeMenu(\"click\");\n\t\t\t\tactions.closeMenu(\"focus\");\n\t\t\t} else {\n\t\t\t\tcontext.previousFocus = ref;\n\t\t\t\tactions.openMenu(\"click\");\n\t\t\t}\n\t\t},\n\t\tcloseMenuOnClick() {\n\t\t\tactions.closeMenu(\"click\");\n\t\t\tactions.closeMenu(\"focus\");\n\t\t},\n\t\thandleMenuKeydown(event: KeyboardEvent) {\n\t\t\tconst context = getContext();\n\t\t\tif (context.menuOpenedBy.click) {\n\t\t\t\t// If Escape close the menu.\n\t\t\t\tif (event?.key === \"Escape\") {\n\t\t\t\t\tactions.closeMenu(\"click\");\n\t\t\t\t\tactions.closeMenu(\"focus\");\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\topenMenuOnFocus() {\n\t\t\tactions.openMenu(\"focus\");\n\t\t},\n\n\t\thandleMenuFocusout(event: FocusEvent) {\n\t\t\tconst context = getContext();\n\t\t\tconst menuContainer = context.dropdownMenu;\n\t\t\t// If focus is outside menu, and in the document, close menu\n\t\t\t// event.target === The element losing focus\n\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t// When focusout is outside the document,\n\t\t\t// `window.document.activeElement` doesn't change.\n\n\t\t\t// The event.relatedTarget is null when something outside the navigation menu is clicked. This is only necessary for Safari.\n\t\t\t// TODO: There is still an issue in Safari where clicking on the menu link closes the menu. We don't want this. The toggleMenuOnClick callback should handle this.\n\t\t\tif (\n\t\t\t\tevent.relatedTarget === null ||\n\t\t\t\t// @ts-ignore\n\t\t\t\t(!menuContainer?.contains(event.relatedTarget) &&\n\t\t\t\t\tevent.target !== window.document.activeElement)\n\t\t\t) {\n\t\t\t\tactions.closeMenu(\"click\");\n\t\t\t\tactions.closeMenu(\"focus\");\n\t\t\t}\n\t\t},\n\t\topenMenu(menuOpenedOn = \"click\" as TOpenBy) {\n\t\t\tconst context = getContext();\n\t\t\tcontext.menuOpenedBy[menuOpenedOn] = true;\n\t\t},\n\t\tcloseMenu(menuClosedOn = \"click\" as TOpenBy) {\n\t\t\tconst context = getContext();\n\t\t\tcontext.menuOpenedBy[menuClosedOn] = false;\n\n\t\t\t// Reset the menu reference and button focus when closed.\n\t\t\tif (!state.isMenuOpen) {\n\t\t\t\tif (context.dropdownMenu?.contains(window.document.activeElement)) {\n\t\t\t\t\tcontext.previousFocus?.focus();\n\t\t\t\t}\n\t\t\t\tcontext.previousFocus = null;\n\t\t\t\tcontext.dropdownMenu = null;\n\t\t\t}\n\t\t},\n\t},\n\tcallbacks: {\n\t\tonWatchMenu() {\n\t\t\tconst context = getContext();\n\t\t\tconst { ref } = getElement();\n\t\t\t// Set the menu reference when initialized.\n\t\t\tif (state.isMenuOpen) {\n\t\t\t\tcontext.dropdownMenu = ref;\n\t\t\t}\n\t\t},\n\t},\n});\n"],"names":["store","getContext","getElement","state","actions","isMenuOpen","context","Object","values","menuOpenedBy","filter","Boolean","length","toggleMenuOnClick","ref","window","document","activeElement","focus","click","closeMenu","previousFocus","openMenu","closeMenuOnClick","handleMenuKeydown","event","key","openMenuOnFocus","handleMenuFocusout","menuContainer","dropdownMenu","relatedTarget","contains","target","menuOpenedOn","menuClosedOn","callbacks","onWatchMenu"],"sourceRoot":""}