{"version":3,"file":"interactivity-router/index.min.js","mappings":"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","sources":["webpack://wp/webpack/runtime/async module","webpack://wp/./packages/interactivity-router/build-module/@wordpress/interactivity-router/src/head.ts","webpack://wp/./packages/interactivity-router/build-module/@wordpress/interactivity-router/src/index.ts","webpack://wp/external import \"@wordpress/a11y\"","webpack://wp/external module \"@wordpress/interactivity\"","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","/**\n * The cache of prefetched stylesheets and scripts.\n */\nexport const headElements = new Map<\n\tstring,\n\t{ tag: HTMLElement; text?: string }\n>();\n\n/**\n * Helper to update only the necessary tags in the head.\n *\n * @async\n * @param newHead The head elements of the new page.\n */\nexport const updateHead = async ( newHead: HTMLHeadElement[] ) => {\n\t// Helper to get the tag id store in the cache.\n\tconst getTagId = ( tag: Element ) => tag.id || tag.outerHTML;\n\n\t// Map incoming head tags by their content.\n\tconst newHeadMap = new Map< string, Element >();\n\tfor ( const child of newHead ) {\n\t\tnewHeadMap.set( getTagId( child ), child );\n\t}\n\n\tconst toRemove: Element[] = [];\n\n\t// Detect nodes that should be added or removed.\n\tfor ( const child of document.head.children ) {\n\t\tconst id = getTagId( child );\n\t\t// Always remove styles and links as they might change.\n\t\tif ( child.nodeName === 'LINK' || child.nodeName === 'STYLE' ) {\n\t\t\ttoRemove.push( child );\n\t\t} else if ( newHeadMap.has( id ) ) {\n\t\t\tnewHeadMap.delete( id );\n\t\t} else if ( child.nodeName !== 'SCRIPT' && child.nodeName !== 'META' ) {\n\t\t\ttoRemove.push( child );\n\t\t}\n\t}\n\n\tawait Promise.all(\n\t\t[ ...headElements.entries() ]\n\t\t\t.filter( ( [ , { tag } ] ) => tag.nodeName === 'SCRIPT' )\n\t\t\t.map( async ( [ url ] ) => {\n\t\t\t\tawait import( /* webpackIgnore: true */ url );\n\t\t\t} )\n\t);\n\n\t// Prepare new assets.\n\tconst toAppend = [ ...newHeadMap.values() ];\n\n\t// Apply the changes.\n\ttoRemove.forEach( ( n ) => n.remove() );\n\tdocument.head.append( ...toAppend );\n};\n\n/**\n * Fetches and processes head assets (stylesheets and scripts) from a specified document.\n *\n * @async\n * @param doc The document from which to fetch head assets. It should support standard DOM querying methods.\n *\n * @return Returns an array of HTML elements representing the head assets.\n */\nexport const fetchHeadAssets = async (\n\tdoc: Document\n): Promise< HTMLElement[] > => {\n\tconst headTags = [];\n\n\t// We only want to fetch module scripts because regular scripts (without\n\t// `async` or `defer` attributes) can depend on the execution of other scripts.\n\t// Scripts found in the head are blocking and must be executed in order.\n\tconst scripts = doc.querySelectorAll< HTMLScriptElement >(\n\t\t'script[type=\"module\"][src]'\n\t);\n\n\tscripts.forEach( ( script ) => {\n\t\tconst src = script.getAttribute( 'src' );\n\t\tif ( ! headElements.has( src ) ) {\n\t\t\t// add the elements to prefetch the module scripts\n\t\t\tconst link = doc.createElement( 'link' );\n\t\t\tlink.rel = 'modulepreload';\n\t\t\tlink.href = src;\n\t\t\tdocument.head.append( link );\n\t\t\theadElements.set( src, { tag: script } );\n\t\t}\n\t} );\n\n\tconst stylesheets = doc.querySelectorAll< HTMLLinkElement >(\n\t\t'link[rel=stylesheet]'\n\t);\n\n\tawait Promise.all(\n\t\tArray.from( stylesheets ).map( async ( tag ) => {\n\t\t\tconst href = tag.getAttribute( 'href' );\n\t\t\tif ( ! href ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! headElements.has( href ) ) {\n\t\t\t\ttry {\n\t\t\t\t\tconst response = await fetch( href );\n\t\t\t\t\tconst text = await response.text();\n\t\t\t\t\theadElements.set( href, {\n\t\t\t\t\t\ttag,\n\t\t\t\t\t\ttext,\n\t\t\t\t\t} );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error( e );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst headElement = headElements.get( href );\n\t\t\tconst styleElement = doc.createElement( 'style' );\n\t\t\tstyleElement.textContent = headElement.text;\n\n\t\t\theadTags.push( styleElement );\n\t\t} )\n\t);\n\n\treturn [\n\t\tdoc.querySelector( 'title' ),\n\t\t...doc.querySelectorAll( 'style' ),\n\t\t...headTags,\n\t];\n};\n","/**\n * WordPress dependencies\n */\nimport { store, privateApis, getConfig } from '@wordpress/interactivity';\n\n/**\n * Internal dependencies\n */\nimport { fetchHeadAssets, updateHead, headElements } from './head';\n\nconst {\n\tdirectivePrefix,\n\tgetRegionRootFragment,\n\tinitialVdom,\n\ttoVdom,\n\trender,\n\tparseServerData,\n\tpopulateServerData,\n\tbatch,\n} = privateApis(\n\t'I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WordPress.'\n);\n\ninterface NavigateOptions {\n\tforce?: boolean;\n\thtml?: string;\n\treplace?: boolean;\n\ttimeout?: number;\n\tloadingAnimation?: boolean;\n\tscreenReaderAnnouncement?: boolean;\n}\n\ninterface PrefetchOptions {\n\tforce?: boolean;\n\thtml?: string;\n}\n\ninterface VdomParams {\n\tvdom?: typeof initialVdom;\n}\n\ninterface Page {\n\tregions: Record< string, any >;\n\thead: HTMLHeadElement[];\n\ttitle: string;\n\tinitialData: any;\n}\n\ntype RegionsToVdom = ( dom: Document, params?: VdomParams ) => Promise< Page >;\n\n// Check if the navigation mode is full page or region based.\nconst navigationMode: 'regionBased' | 'fullPage' =\n\tgetConfig( 'core/router' ).navigationMode ?? 'regionBased';\n\n// The cache of visited and prefetched pages, stylesheets and scripts.\nconst pages = new Map< string, Promise< Page | false > >();\n\n// Helper to remove domain and hash from the URL. We are only interesting in\n// caching the path and the query.\nconst getPagePath = ( url: string ) => {\n\tconst u = new URL( url, window.location.href );\n\treturn u.pathname + u.search;\n};\n\n// Fetch a new page and convert it to a static virtual DOM.\nconst fetchPage = async ( url: string, { html }: { html: string } ) => {\n\ttry {\n\t\tif ( ! html ) {\n\t\t\tconst res = await window.fetch( url );\n\t\t\tif ( res.status !== 200 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\thtml = await res.text();\n\t\t}\n\t\tconst dom = new window.DOMParser().parseFromString( html, 'text/html' );\n\t\treturn regionsToVdom( dom );\n\t} catch ( e ) {\n\t\treturn false;\n\t}\n};\n\n// Return an object with VDOM trees of those HTML regions marked with a\n// `router-region` directive.\nconst regionsToVdom: RegionsToVdom = async ( dom, { vdom } = {} ) => {\n\tconst regions = { body: undefined };\n\tlet head: HTMLElement[];\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\tif ( navigationMode === 'fullPage' ) {\n\t\t\thead = await fetchHeadAssets( dom );\n\t\t\tregions.body = vdom\n\t\t\t\t? vdom.get( document.body )\n\t\t\t\t: toVdom( dom.body );\n\t\t}\n\t}\n\tif ( navigationMode === 'regionBased' ) {\n\t\tconst attrName = `data-${ directivePrefix }-router-region`;\n\t\tdom.querySelectorAll( `[${ attrName }]` ).forEach( ( region ) => {\n\t\t\tconst id = region.getAttribute( attrName );\n\t\t\tregions[ id ] = vdom?.has( region )\n\t\t\t\t? vdom.get( region )\n\t\t\t\t: toVdom( region );\n\t\t} );\n\t}\n\tconst title = dom.querySelector( 'title' )?.innerText;\n\tconst initialData = parseServerData( dom );\n\treturn { regions, head, title, initialData };\n};\n\n// Render all interactive regions contained in the given page.\nconst renderRegions = async ( page: Page ) => {\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\tif ( navigationMode === 'fullPage' ) {\n\t\t\t// Once this code is tested and more mature, the head should be updated for region based navigation as well.\n\t\t\tawait updateHead( page.head );\n\t\t\tconst fragment = getRegionRootFragment( document.body );\n\t\t\tbatch( () => {\n\t\t\t\tpopulateServerData( page.initialData );\n\t\t\t\trender( page.regions.body, fragment );\n\t\t\t} );\n\t\t}\n\t}\n\tif ( navigationMode === 'regionBased' ) {\n\t\tconst attrName = `data-${ directivePrefix }-router-region`;\n\t\tbatch( () => {\n\t\t\tpopulateServerData( page.initialData );\n\t\t\tdocument\n\t\t\t\t.querySelectorAll( `[${ attrName }]` )\n\t\t\t\t.forEach( ( region ) => {\n\t\t\t\t\tconst id = region.getAttribute( attrName );\n\t\t\t\t\tconst fragment = getRegionRootFragment( region );\n\t\t\t\t\trender( page.regions[ id ], fragment );\n\t\t\t\t} );\n\t\t} );\n\t}\n\tif ( page.title ) {\n\t\tdocument.title = page.title;\n\t}\n};\n\n/**\n * Load the given page forcing a full page reload.\n *\n * The function returns a promise that won't resolve, useful to prevent any\n * potential feedback indicating that the navigation has finished while the new\n * page is being loaded.\n *\n * @param href The page href.\n * @return Promise that never resolves.\n */\nconst forcePageReload = ( href: string ) => {\n\twindow.location.assign( href );\n\treturn new Promise( () => {} );\n};\n\n// Listen to the back and forward buttons and restore the page if it's in the\n// cache.\nwindow.addEventListener( 'popstate', async () => {\n\tconst pagePath = getPagePath( window.location.href ); // Remove hash.\n\tconst page = pages.has( pagePath ) && ( await pages.get( pagePath ) );\n\tif ( page ) {\n\t\tawait renderRegions( page );\n\t\t// Update the URL in the state.\n\t\tstate.url = window.location.href;\n\t} else {\n\t\twindow.location.reload();\n\t}\n} );\n\n// Initialize the router and cache the initial page using the initial vDOM.\n// Once this code is tested and more mature, the head should be updated for\n// region based navigation as well.\nif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\tif ( navigationMode === 'fullPage' ) {\n\t\t// Cache the scripts. Has to be called before fetching the assets.\n\t\t[].map.call(\n\t\t\tdocument.querySelectorAll( 'script[type=\"module\"][src]' ),\n\t\t\t( script ) => {\n\t\t\t\theadElements.set( script.getAttribute( 'src' ), {\n\t\t\t\t\ttag: script,\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\t\tawait fetchHeadAssets( document );\n\t}\n}\npages.set(\n\tgetPagePath( window.location.href ),\n\tPromise.resolve( regionsToVdom( document, { vdom: initialVdom } ) )\n);\n\n// Check if the link is valid for client-side navigation.\nconst isValidLink = ( ref: HTMLAnchorElement ) =>\n\tref &&\n\tref instanceof window.HTMLAnchorElement &&\n\tref.href &&\n\t( ! ref.target || ref.target === '_self' ) &&\n\tref.origin === window.location.origin &&\n\t! ref.pathname.startsWith( '/wp-admin' ) &&\n\t! ref.pathname.startsWith( '/wp-login.php' ) &&\n\t! ref.getAttribute( 'href' ).startsWith( '#' ) &&\n\t! new URL( ref.href ).searchParams.has( '_wpnonce' );\n\n// Check if the event is valid for client-side navigation.\nconst isValidEvent = ( event: MouseEvent ) =>\n\tevent &&\n\tevent.button === 0 && // Left clicks only.\n\t! event.metaKey && // Open in new tab (Mac).\n\t! event.ctrlKey && // Open in new tab (Windows).\n\t! event.altKey && // Download.\n\t! event.shiftKey &&\n\t! event.defaultPrevented;\n\n// Variable to store the current navigation.\nlet navigatingTo = '';\n\nlet hasLoadedNavigationTextsData = false;\nconst navigationTexts = {\n\tloading: 'Loading page, please wait.',\n\tloaded: 'Page Loaded.',\n};\n\ninterface Store {\n\tstate: {\n\t\turl: string;\n\t\tnavigation: {\n\t\t\thasStarted: boolean;\n\t\t\thasFinished: boolean;\n\t\t};\n\t};\n\tactions: {\n\t\tnavigate: ( href: string, options?: NavigateOptions ) => void;\n\t\tprefetch: ( url: string, options?: PrefetchOptions ) => void;\n\t};\n}\n\nexport const { state, actions } = store< Store >( 'core/router', {\n\tstate: {\n\t\turl: window.location.href,\n\t\tnavigation: {\n\t\t\thasStarted: false,\n\t\t\thasFinished: false,\n\t\t},\n\t},\n\tactions: {\n\t\t/**\n\t\t * Navigates to the specified page.\n\t\t *\n\t\t * This function normalizes the passed href, fetches the page HTML if\n\t\t * needed, and updates any interactive regions whose contents have\n\t\t * changed. It also creates a new entry in the browser session history.\n\t\t *\n\t\t * @param href The page href.\n\t\t * @param [options] Options object.\n\t\t * @param [options.force] If true, it forces re-fetching the URL.\n\t\t * @param [options.html] HTML string to be used instead of fetching the requested URL.\n\t\t * @param [options.replace] If true, it replaces the current entry in the browser session history.\n\t\t * @param [options.timeout] Time until the navigation is aborted, in milliseconds. Default is 10000.\n\t\t * @param [options.loadingAnimation] Whether an animation should be shown while navigating. Default to `true`.\n\t\t * @param [options.screenReaderAnnouncement] Whether a message for screen readers should be announced while navigating. Default to `true`.\n\t\t *\n\t\t * @return Promise that resolves once the navigation is completed or aborted.\n\t\t */\n\t\t*navigate( href: string, options: NavigateOptions = {} ) {\n\t\t\tconst { clientNavigationDisabled } = getConfig();\n\t\t\tif ( clientNavigationDisabled ) {\n\t\t\t\tyield forcePageReload( href );\n\t\t\t}\n\n\t\t\tconst pagePath = getPagePath( href );\n\t\t\tconst { navigation } = state;\n\t\t\tconst {\n\t\t\t\tloadingAnimation = true,\n\t\t\t\tscreenReaderAnnouncement = true,\n\t\t\t\ttimeout = 10000,\n\t\t\t} = options;\n\n\t\t\tnavigatingTo = href;\n\t\t\tactions.prefetch( pagePath, options );\n\n\t\t\t// Create a promise that resolves when the specified timeout ends.\n\t\t\t// The timeout value is 10 seconds by default.\n\t\t\tconst timeoutPromise = new Promise< void >( ( resolve ) =>\n\t\t\t\tsetTimeout( resolve, timeout )\n\t\t\t);\n\n\t\t\t// Don't update the navigation status immediately, wait 400 ms.\n\t\t\tconst loadingTimeout = setTimeout( () => {\n\t\t\t\tif ( navigatingTo !== href ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( loadingAnimation ) {\n\t\t\t\t\tnavigation.hasStarted = true;\n\t\t\t\t\tnavigation.hasFinished = false;\n\t\t\t\t}\n\t\t\t\tif ( screenReaderAnnouncement ) {\n\t\t\t\t\ta11ySpeak( 'loading' );\n\t\t\t\t}\n\t\t\t}, 400 );\n\n\t\t\tconst page = yield Promise.race( [\n\t\t\t\tpages.get( pagePath ),\n\t\t\t\ttimeoutPromise,\n\t\t\t] );\n\n\t\t\t// Dismiss loading message if it hasn't been added yet.\n\t\t\tclearTimeout( loadingTimeout );\n\n\t\t\t// Once the page is fetched, the destination URL could have changed\n\t\t\t// (e.g., by clicking another link in the meantime). If so, bail\n\t\t\t// out, and let the newer execution to update the HTML.\n\t\t\tif ( navigatingTo !== href ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tpage &&\n\t\t\t\t! page.initialData?.config?.[ 'core/router' ]\n\t\t\t\t\t?.clientNavigationDisabled\n\t\t\t) {\n\t\t\t\tyield renderRegions( page );\n\t\t\t\twindow.history[\n\t\t\t\t\toptions.replace ? 'replaceState' : 'pushState'\n\t\t\t\t]( {}, '', href );\n\n\t\t\t\t// Update the URL in the state.\n\t\t\t\tstate.url = href;\n\n\t\t\t\t// Update the navigation status once the the new page rendering\n\t\t\t\t// has been completed.\n\t\t\t\tif ( loadingAnimation ) {\n\t\t\t\t\tnavigation.hasStarted = false;\n\t\t\t\t\tnavigation.hasFinished = true;\n\t\t\t\t}\n\n\t\t\t\tif ( screenReaderAnnouncement ) {\n\t\t\t\t\ta11ySpeak( 'loaded' );\n\t\t\t\t}\n\n\t\t\t\t// Scroll to the anchor if exits in the link.\n\t\t\t\tconst { hash } = new URL( href, window.location.href );\n\t\t\t\tif ( hash ) {\n\t\t\t\t\tdocument.querySelector( hash )?.scrollIntoView();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tyield forcePageReload( href );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Prefetches the page with the passed URL.\n\t\t *\n\t\t * The function normalizes the URL and stores internally the fetch\n\t\t * promise, to avoid triggering a second fetch for an ongoing request.\n\t\t *\n\t\t * @param url The page URL.\n\t\t * @param [options] Options object.\n\t\t * @param [options.force] Force fetching the URL again.\n\t\t * @param [options.html] HTML string to be used instead of fetching the requested URL.\n\t\t */\n\t\tprefetch( url: string, options: PrefetchOptions = {} ) {\n\t\t\tconst { clientNavigationDisabled } = getConfig();\n\t\t\tif ( clientNavigationDisabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst pagePath = getPagePath( url );\n\t\t\tif ( options.force || ! pages.has( pagePath ) ) {\n\t\t\t\tpages.set(\n\t\t\t\t\tpagePath,\n\t\t\t\t\tfetchPage( pagePath, { html: options.html } )\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t},\n} );\n\n/**\n * Announces a message to screen readers.\n *\n * This is a wrapper around the `@wordpress/a11y` package's `speak` function. It handles importing\n * the package on demand and should be used instead of calling `ally.speak` direacly.\n *\n * @param messageKey The message to be announced by assistive technologies.\n */\nfunction a11ySpeak( messageKey: keyof typeof navigationTexts ) {\n\tif ( ! hasLoadedNavigationTextsData ) {\n\t\thasLoadedNavigationTextsData = true;\n\t\tconst content = document.getElementById(\n\t\t\t'wp-script-module-data-@wordpress/interactivity-router'\n\t\t)?.textContent;\n\t\tif ( content ) {\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse( content );\n\t\t\t\tif ( typeof parsed?.i18n?.loading === 'string' ) {\n\t\t\t\t\tnavigationTexts.loading = parsed.i18n.loading;\n\t\t\t\t}\n\t\t\t\tif ( typeof parsed?.i18n?.loaded === 'string' ) {\n\t\t\t\t\tnavigationTexts.loaded = parsed.i18n.loaded;\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t} else {\n\t\t\t// Fallback to localized strings from Interactivity API state.\n\t\t\t// @todo This block is for Core < 6.7.0. Remove when support is dropped.\n\n\t\t\t// @ts-expect-error\n\t\t\tif ( state.navigation.texts?.loading ) {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnavigationTexts.loading = state.navigation.texts.loading;\n\t\t\t}\n\t\t\t// @ts-expect-error\n\t\t\tif ( state.navigation.texts?.loaded ) {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnavigationTexts.loaded = state.navigation.texts.loaded;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst message = navigationTexts[ messageKey ];\n\n\timport( '@wordpress/a11y' ).then(\n\t\t( { speak } ) => speak( message ),\n\t\t// Ignore failures to load the a11y module.\n\t\t() => {}\n\t);\n}\n\n// Add click and prefetch to all links.\nif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\tif ( navigationMode === 'fullPage' ) {\n\t\t// Navigate on click.\n\t\tdocument.addEventListener(\n\t\t\t'click',\n\t\t\tfunction ( event ) {\n\t\t\t\tconst ref = ( event.target as Element ).closest( 'a' );\n\t\t\t\tif ( isValidLink( ref ) && isValidEvent( event ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tactions.navigate( ref.href );\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue\n\t\t);\n\t\t// Prefetch on hover.\n\t\tdocument.addEventListener(\n\t\t\t'mouseenter',\n\t\t\tfunction ( event ) {\n\t\t\t\tif ( ( event.target as Element )?.nodeName === 'A' ) {\n\t\t\t\t\tconst ref = ( event.target as Element ).closest( 'a' );\n\t\t\t\t\tif ( isValidLink( ref ) && isValidEvent( event ) ) {\n\t\t\t\t\t\tactions.prefetch( ref.href );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue\n\t\t);\n\t}\n}\n","module.exports = import(\"@wordpress/a11y\");;","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nmodule.exports = x({ [\"getConfig\"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getConfig), [\"privateApis\"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.privateApis), [\"store\"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.store) });","// 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 getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(873);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","headElements","Map","updateHead","async","getTagId","tag","id","outerHTML","newHeadMap","child","newHead","set","toRemove","document","head","children","nodeName","push","has","delete","Promise","all","entries","filter","map","url","import","toAppend","values","forEach","n","remove","append","fetchHeadAssets","headTags","doc","querySelectorAll","script","src","getAttribute","link","createElement","rel","href","stylesheets","Array","from","response","fetch","text","e","console","error","headElement","get","styleElement","textContent","querySelector","directivePrefix","getRegionRootFragment","initialVdom","toVdom","render","parseServerData","populateServerData","batch","privateApis","navigationMode","_getConfig$navigation","getConfig","pages","getPagePath","u","URL","window","location","pathname","search","fetchPage","html","res","status","dom","DOMParser","parseFromString","regionsToVdom","vdom","regions","body","undefined","attrName","region","title","innerText","initialData","renderRegions","page","fragment","forcePageReload","assign","addEventListener","pagePath","state","reload","call","resolve","isValidLink","ref","HTMLAnchorElement","target","origin","startsWith","searchParams","isValidEvent","event","button","metaKey","ctrlKey","altKey","shiftKey","defaultPrevented","navigatingTo","hasLoadedNavigationTextsData","navigationTexts","loading","loaded","actions","store","navigation","hasStarted","hasFinished","navigate","options","clientNavigationDisabled","loadingAnimation","screenReaderAnnouncement","timeout","prefetch","timeoutPromise","setTimeout","loadingTimeout","a11ySpeak","race","clearTimeout","config","history","replace","hash","scrollIntoView","force","messageKey","content","getElementById","parsed","JSON","parse","i18n","texts","message","then","speak","closest","preventDefault","module","exports","y","x","__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__","__webpack_require__","d","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","Symbol","queue","fn","r","a","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","promise","rej","deps","dep","obj","ret","wrapDeps","getResult","fnQueue","q","add","err","definition","key","o","Object","defineProperty","enumerable","prop","prototype","hasOwnProperty","__webpack_exports__"],"sourceRoot":""}