{"version":3,"file":"./build/block-library/blocks/navigation/view.min.js","mappings":"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","sources":["webpack://wp/external window [\"wp\",\"interactivity\"]","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/view.js"],"sourcesContent":["var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"interactivity\"];","/**\n * WordPress dependencies\n */\nimport { store as wpStore } from '@wordpress/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n\t'select:not([disabled]):not([aria-hidden])',\n\t'textarea:not([disabled]):not([aria-hidden])',\n\t'button:not([disabled]):not([aria-hidden])',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\n// This is a fix for Safari in iOS/iPadOS. Without it, Safari doesn't focus out\n// when the user taps in the body. It can be removed once we add an overlay to\n// capture the clicks, instead of relying on the focusout event.\ndocument.addEventListener( 'click', () => {} );\n\nconst openMenu = ( store, menuOpenedOn ) => {\n\tconst { context, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuOpenedOn ] = true;\n\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t// Add a `has-modal-open` class to the root.\n\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t}\n};\n\nconst closeMenu = ( store, menuClosedOn ) => {\n\tconst { context, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuClosedOn ] = false;\n\t// Check if the menu is still open or not.\n\tif ( ! selectors.core.navigation.isMenuOpen( store ) ) {\n\t\tif (\n\t\t\tcontext.core.navigation.modal?.contains(\n\t\t\t\twindow.document.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tcontext.core.navigation.previousFocus?.focus();\n\t\t}\n\t\tcontext.core.navigation.modal = null;\n\t\tcontext.core.navigation.previousFocus = null;\n\t\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-modal-open' );\n\t\t}\n\t}\n};\n\nwpStore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( store ) => {\n\t\t\t\t\tconst { context, selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\t\tcontext.core.navigation.modal = ref;\n\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ 0 ];\n\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocusFirstElement: ( store ) => {\n\t\t\t\t\tconst { selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tref.querySelector(\n\t\t\t\t\t\t\t'.wp-block-navigation-item > *:first-child'\n\t\t\t\t\t\t).focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tselectors: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\troleAttribute: ( store ) => {\n\t\t\t\t\tconst { context, selectors } = store;\n\t\t\t\t\treturn context.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\tselectors.core.navigation.isMenuOpen( store )\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: null;\n\t\t\t\t},\n\t\t\t\tariaModal: ( store ) => {\n\t\t\t\t\tconst { context, selectors } = store;\n\t\t\t\t\treturn context.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\tselectors.core.navigation.isMenuOpen( store )\n\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t: null;\n\t\t\t\t},\n\t\t\t\tariaLabel: ( store ) => {\n\t\t\t\t\tconst { context, selectors } = store;\n\t\t\t\t\treturn context.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\tselectors.core.navigation.isMenuOpen( store )\n\t\t\t\t\t\t? context.core.navigation.ariaLabel\n\t\t\t\t\t\t: null;\n\t\t\t\t},\n\t\t\t\tisMenuOpen: ( { context } ) =>\n\t\t\t\t\t// The menu is opened if either `click`, `hover` or `focus` is true.\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t\t]\n\t\t\t\t\t).filter( Boolean ).length > 0,\n\t\t\t\tmenuOpenedBy: ( { context } ) =>\n\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenuOnHover( store ) {\n\t\t\t\t\tconst { navigation } = store.context.core;\n\t\t\t\t\tif (\n\t\t\t\t\t\tnavigation.type === 'submenu' &&\n\t\t\t\t\t\t// Only open on hover if the overlay is closed.\n\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\tnavigation.overlayOpenedBy || {}\n\t\t\t\t\t\t).filter( Boolean ).length === 0\n\t\t\t\t\t)\n\t\t\t\t\t\topenMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnHover( store ) {\n\t\t\t\t\tcloseMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\topenMenuOnClick( store ) {\n\t\t\t\t\tconst { context, ref } = store;\n\t\t\t\t\tcontext.core.navigation.previousFocus = ref;\n\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnClick( store ) {\n\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\topenMenuOnFocus( store ) {\n\t\t\t\t\topenMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\ttoggleMenuOnClick: ( store ) => {\n\t\t\t\t\tconst { selectors, context, ref } = store;\n\t\t\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\t\t\tif ( window.document.activeElement !== ref ) ref.focus();\n\t\t\t\t\tconst menuOpenedBy =\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store );\n\t\t\t\t\tif ( menuOpenedBy.click || menuOpenedBy.focus ) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.core.navigation.previousFocus = ref;\n\t\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( store ) => {\n\t\t\t\t\tconst { context, selectors, event } = store;\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store ).click\n\t\t\t\t\t) {\n\t\t\t\t\t\t// If Escape close the menu.\n\t\t\t\t\t\tif ( event?.key === 'Escape' ) {\n\t\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trap focus if it is an overlay (main menu).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\t\tevent.key === 'Tab'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// If shift + tab it change the direction.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation\n\t\t\t\t\t\t\t\t\t\t.firstFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement.focus();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuFocusout: ( store ) => {\n\t\t\t\t\tconst { context, event } = store;\n\t\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t\t// event.target === The element losing focus\n\t\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t\t// `window.document.activeElement` doesn't change.\n\n\t\t\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\t\tif (\n\t\t\t\t\t\tevent.relatedTarget === null ||\n\t\t\t\t\t\t( ! context.core.navigation.modal?.contains(\n\t\t\t\t\t\t\tevent.relatedTarget\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\tevent.target !== window.document.activeElement )\n\t\t\t\t\t) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"],"names":["window","focusableSelectors","document","addEventListener","openMenu","store","menuOpenedOn","context","selectors","core","navigation","menuOpenedBy","type","documentElement","classList","add","closeMenu","menuClosedOn","isMenuOpen","modal","contains","activeElement","previousFocus","focus","remove","wpStore","effects","initMenu","ref","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","ariaModal","ariaLabel","Object","values","filter","Boolean","actions","openMenuOnHover","overlayOpenedBy","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","click","handleMenuKeydown","event","key","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"sourceRoot":""}