{"version":3,"file":"./build/block-library/blocks/navigation/view-interactivity.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-interactivity.js"],"sourcesContent":["const __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\nconst openMenu = ( store, menuOpenedOn ) => {\n\tconst { context, ref, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuOpenedOn ] = true;\n\tcontext.core.navigation.previousFocus = ref;\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: '';\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\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 } = store;\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\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\t\t\t\t\tif (\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( 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","openMenu","store","menuOpenedOn","context","ref","selectors","core","navigation","menuOpenedBy","previousFocus","type","document","documentElement","classList","add","closeMenu","menuClosedOn","isMenuOpen","modal","contains","activeElement","focus","remove","wpStore","effects","initMenu","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","Object","values","filter","Boolean","actions","openMenuOnHover","overlayOpenedBy","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","click","handleMenuKeydown","event","key","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"sourceRoot":""}