{"version":3,"file":"./blocks/navigation/interactivity.min.js","mappings":"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","sources":["webpack://wp/./packages/block-library/src/navigation/interactivity.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { store } from '../utils/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'area[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'iframe',\n\t'object',\n\t'embed',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\nconst openMenu = ( { context, ref }, menuOpenedOn ) => {\n\tcontext.core.navigation.isMenuOpen[ menuOpenedOn ] = true;\n\tcontext.core.navigation.previousFocus = ref;\n\tif ( context.core.navigation.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 = ( { context, selectors }, menuClosedOn ) => {\n\tcontext.core.navigation.isMenuOpen[ menuClosedOn ] = false;\n\t// Check if the menu is still open or not.\n\tif ( ! selectors.core.navigation.isMenuOpen( { context } ) ) {\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.overlay ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-modal-open' );\n\t\t}\n\t}\n};\n\nstore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( { context, selectors, ref } ) => {\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( { context } ) ) {\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: ( { context, selectors, ref } ) => {\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( { context } ) ) {\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: ( { context, selectors } ) =>\n\t\t\t\t\tcontext.core.navigation.overlay &&\n\t\t\t\t\tselectors.core.navigation.isMenuOpen( { context } )\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: '',\n\t\t\t\tisMenuOpen: ( { context } ) =>\n\t\t\t\t\t// The menu is opened if either `click` or `hover` is true.\n\t\t\t\t\tObject.values( context.core.navigation.isMenuOpen ).filter(\n\t\t\t\t\t\tBoolean\n\t\t\t\t\t).length > 0,\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenuOnHover( args ) {\n\t\t\t\t\topenMenu( args, 'hover' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnHover( args ) {\n\t\t\t\t\tcloseMenu( args, 'hover' );\n\t\t\t\t},\n\t\t\t\topenMenuOnClick( args ) {\n\t\t\t\t\topenMenu( args, 'click' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnClick( args ) {\n\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t},\n\t\t\t\ttoggleMenuOnClick: ( args ) => {\n\t\t\t\t\tconst { context } = args;\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen.click ) {\n\t\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenMenu( args, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( args ) => {\n\t\t\t\t\tconst { context, event } = args;\n\t\t\t\t\tif ( context.core.navigation.isMenuOpen.click ) {\n\t\t\t\t\t\t// If Escape close the menu\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent?.key === 'Escape' ||\n\t\t\t\t\t\t\tevent?.keyCode === 27\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcloseMenu( args, 'click' );\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.overlay &&\n\t\t\t\t\t\t\t( event.key === 'Tab' || event.keyCode === 9 )\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: ( args ) => {\n\t\t\t\t\tconst { context, event } = args;\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\t\t\t\t\tif (\n\t\t\t\t\t\tcontext.core.navigation.isMenuOpen.click &&\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\tevent.target !== window.document.activeElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tcloseMenu( args, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"],"names":["focusableSelectors","openMenu","context","ref","menuOpenedOn","core","navigation","isMenuOpen","previousFocus","overlay","document","documentElement","classList","add","closeMenu","selectors","menuClosedOn","modal","contains","window","activeElement","focus","remove","store","effects","initMenu","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","Object","values","filter","Boolean","actions","openMenuOnHover","args","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","toggleMenuOnClick","click","handleMenuKeydown","event","key","keyCode","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"sourceRoot":""}