| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 { 2 "version": 3, 3 "sources": ["../../../packages/interactivity-router/src/index.ts", "../../../packages/interactivity-router/src/assets/scs.ts", "../../../packages/interactivity-router/src/assets/styles.ts", "../../../packages/interactivity-router/src/assets/dynamic-importmap/resolver.ts", "../../../node_modules/es-module-lexer/dist/lexer.js", "../../../packages/interactivity-router/src/assets/dynamic-importmap/fetch.ts", "../../../packages/interactivity-router/src/assets/dynamic-importmap/loader.ts", "../../../packages/interactivity-router/src/assets/dynamic-importmap/index.ts", "../../../packages/interactivity-router/src/assets/script-modules.ts"], 4 "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store, privateApis, getConfig } from '@wordpress/interactivity';\n\n/**\n * Internal dependencies\n */\nimport { preloadStyles, applyStyles, type StyleElement } from './assets/styles';\nimport {\n\tpreloadScriptModules,\n\timportScriptModules,\n\tmarkScriptModuleAsResolved,\n\ttype ScriptModuleLoad,\n} from './assets/script-modules';\n\nconst {\n\tgetRegionRootFragment,\n\tinitialVdom,\n\ttoVdom,\n\trender,\n\tparseServerData,\n\tpopulateServerData,\n\tbatch,\n\trouterRegions,\n\tcloneElement,\n\tnavigationSignal,\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\nconst regionAttr = `data-wp-router-region`;\nconst interactiveAttr = `data-wp-interactive`;\nconst regionsSelector = `[${ interactiveAttr }][${ regionAttr }], [${ interactiveAttr }] [${ interactiveAttr }][${ regionAttr }]`;\n\nexport interface NavigateOptions {\n\tforce?: boolean;\n\thtml?: string;\n\treplace?: boolean;\n\ttimeout?: number;\n\tloadingAnimation?: boolean;\n\tscreenReaderAnnouncement?: boolean;\n}\n\nexport interface PrefetchOptions {\n\tforce?: boolean;\n\thtml?: string;\n}\n\ninterface VdomParams {\n\tvdom?: typeof initialVdom;\n}\n\ninterface Page {\n\turl: string;\n\tregions: Record< string, any >;\n\tregionsToAttach: Record< string, string >;\n\tstyles: StyleElement[];\n\tscriptModules: ScriptModuleLoad[];\n\ttitle: string;\n\tinitialData: any;\n}\n\ntype PreparePage = (\n\turl: string,\n\tdom: Document,\n\tparams?: VdomParams\n) => Promise< Page >;\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/**\n * Parses the given region's directive.\n *\n * @param region Region element.\n * @return Data contained in the region directive value.\n */\nconst parseRegionAttribute = ( region: Element ) => {\n\tconst value = region.getAttribute( regionAttr );\n\ttry {\n\t\tconst { id, attachTo } = JSON.parse( value );\n\t\treturn { id, attachTo };\n\t} catch ( e ) {\n\t\treturn { id: value };\n\t}\n};\n\n/**\n * Clones the content of the router region vDOM passed as argument.\n *\n * The function creates a new VNode instance removing all priority levels up to\n * the one containing the router-region directive, which should have evaluated\n * in advance.\n *\n * @param vdom A router region's VNode.\n * @return The VNode for the passed router region's content.\n */\nconst cloneRouterRegionContent = ( vdom: any ) => {\n\tif ( ! vdom ) {\n\t\treturn vdom;\n\t}\n\tconst allPriorityLevels: string[][] = vdom.props.priorityLevels;\n\tconst routerRegionLevel = allPriorityLevels.findIndex( ( level ) =>\n\t\tlevel.includes( 'router-region' )\n\t);\n\tconst priorityLevels =\n\t\trouterRegionLevel !== -1\n\t\t\t? allPriorityLevels.slice( routerRegionLevel + 1 )\n\t\t\t: allPriorityLevels;\n\n\treturn priorityLevels.length > 0\n\t\t? cloneElement( vdom, {\n\t\t\t\t...vdom.props,\n\t\t\t\tpriorityLevels,\n\t\t } )\n\t\t: vdom.props.element;\n};\n\n/**\n * IDs of router regions with an `attachTo` property pointing to the same parent\n * element.\n */\nconst regionsToAttachByParent = new WeakMap< Element, string[] >();\n\n/**\n * Map of root fragments by parent element, used to render router regions with\n * the `attachTo` property. Those elements with the same parent are rendered\n * together in the corresponding root fragment.\n */\nconst rootFragmentsByParent = new WeakMap< Element, any >();\n\n/**\n * Fetches and prepares a page from a given URL.\n *\n * @param url The URL of the page to fetch.\n * @param options Options for the fetch operation.\n * @param options.html Optional HTML content. If provided, the function will use\n * this instead of fetching from the URL.\n * @return A Promise that resolves to the prepared page, or false if\n * there was an error during fetching or preparation.\n */\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 await preparePage( url, dom );\n\t} catch ( e ) {\n\t\treturn false;\n\t}\n};\n\n/**\n * Processes a DOM document to extract router regions and related resources.\n *\n * This function analyzes the provided DOM document and creates a virtual DOM\n * representation of all HTML regions marked with a `router-region` directive.\n * It also extracts and preloads associated styles and scripts to prepare for\n * rendering the page.\n *\n * @param url The URL associated with the page, used for asset\n * loading and caching.\n * @param dom The DOM document to process.\n * @param vdomParams Optional parameters for virtual DOM processing.\n * @param vdomParams.vdom An optional existing virtual DOM cache to check for\n * regions. If a region exists in this cache, it will be\n * reused instead of creating a new vDOM representation.\n * @return A Promise that resolves to a {@link Page} object\n * containing the virtual DOM for all router regions,\n * preloaded styles and scripts, page title, and initial\n * server-rendered data.\n */\nconst preparePage: PreparePage = async ( url, dom, { vdom } = {} ) => {\n\t// Remove all noscript elements as they're irrelevant when request is served via router.\n\t// This prevents browsers from extracting styles from noscript tags.\n\tdom.querySelectorAll( 'noscript' ).forEach( ( el ) => el.remove() );\n\n\tconst regions = {};\n\tconst regionsToAttach = {};\n\tdom.querySelectorAll( regionsSelector ).forEach( ( region ) => {\n\t\tconst { id, attachTo } = parseRegionAttribute( region );\n\n\t\tif ( region.parentElement.closest( `[${ regionAttr }]` ) ) {\n\t\t\tregions[ id ] = undefined;\n\t\t} else {\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\n\t\tif ( attachTo ) {\n\t\t\tregionsToAttach[ id ] = attachTo;\n\t\t}\n\t} );\n\n\tconst title = dom.querySelector( 'title' )?.innerText;\n\tconst initialData = parseServerData( dom );\n\n\t// Wait for styles and modules to be ready.\n\tconst [ styles, scriptModules ] = await Promise.all( [\n\t\tPromise.all( preloadStyles( dom, url ) ),\n\t\tPromise.all( preloadScriptModules( dom ) ),\n\t] );\n\n\treturn {\n\t\tregions,\n\t\tregionsToAttach,\n\t\tstyles,\n\t\tscriptModules,\n\t\ttitle,\n\t\tinitialData,\n\t\turl,\n\t};\n};\n\n/**\n * Renders a page by applying styles, populating server data, rendering regions,\n * and updating the document title.\n *\n * @param page The {@link Page} object to render.\n */\nconst renderPage = ( page: Page ) => {\n\tapplyStyles( page.styles );\n\n\t// Clone regionsToAttach.\n\tconst regionsToAttach = { ...page.regionsToAttach };\n\n\tbatch( () => {\n\t\t// Updates the server data.\n\t\tpopulateServerData( page.initialData );\n\n\t\t// Triggers navigation invalidations (`getServerState` and\n\t\t// `getServerContext`).\n\t\tnavigationSignal.value += 1;\n\n\t\t// Resets all router regions before setting the actual values.\n\t\t( routerRegions as Map< string, any > ).forEach( ( signal ) => {\n\t\t\tsignal.value = null;\n\t\t} );\n\n\t\t// Inits regions with attachTo that don't exist yet.\n\t\tconst parentsToUpdate = new Set< Element >();\n\t\tfor ( const id in regionsToAttach ) {\n\t\t\tconst parent = document.querySelector( regionsToAttach[ id ] );\n\t\t\tif ( ! regionsToAttachByParent.has( parent ) ) {\n\t\t\t\tregionsToAttachByParent.set( parent, [] );\n\t\t\t}\n\t\t\tconst regions = regionsToAttachByParent.get( parent );\n\t\t\tif ( ! regions.includes( id ) ) {\n\t\t\t\tregions.push( id );\n\t\t\t\tparentsToUpdate.add( parent );\n\t\t\t}\n\t\t}\n\n\t\t// Updates all existing regions.\n\t\tfor ( const id in page.regions ) {\n\t\t\tif ( routerRegions.has( id ) ) {\n\t\t\t\trouterRegions.get( id ).value = cloneRouterRegionContent(\n\t\t\t\t\tpage.regions[ id ]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Renders regions attached to the same parent in the same fragment.\n\t\tparentsToUpdate.forEach( ( parent ) => {\n\t\t\tconst ids = regionsToAttachByParent.get( parent );\n\t\t\tconst vdoms = ids.map( ( id ) => page.regions[ id ] );\n\n\t\t\tif ( ! rootFragmentsByParent.has( parent ) ) {\n\t\t\t\tconst regions = vdoms.map( ( { props, type } ) => {\n\t\t\t\t\tconst elementType =\n\t\t\t\t\t\ttypeof type === 'function' ? props.type : type;\n\n\t\t\t\t\t// Creates an element with the obtained type where the\n\t\t\t\t\t// region will be rendered. The type should match the one of\n\t\t\t\t\t// the root vnode.\n\t\t\t\t\tconst region = document.createElement( elementType );\n\t\t\t\t\tparent.appendChild( region );\n\t\t\t\t\treturn region;\n\t\t\t\t} );\n\t\t\t\trootFragmentsByParent.set(\n\t\t\t\t\tparent,\n\t\t\t\t\tgetRegionRootFragment( regions )\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst fragment = rootFragmentsByParent.get( parent );\n\t\t\trender( vdoms, fragment );\n\t\t} );\n\t} );\n\n\tif ( page.title ) {\n\t\tdocument.title = page.title;\n\t}\n};\n\n/**\n * Loads 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\tbatch( () => {\n\t\t\tstate.url = window.location.href;\n\t\t\trenderPage( page );\n\t\t} );\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.\nwindow.document\n\t.querySelectorAll< HTMLScriptElement >( 'script[type=module][src]' )\n\t.forEach( ( { src } ) => markScriptModuleAsResolved( src ) );\npages.set(\n\tgetPagePath( window.location.href ),\n\tPromise.resolve(\n\t\tpreparePage( getPagePath( window.location.href ), document, {\n\t\t\tvdom: initialVdom,\n\t\t} )\n\t)\n);\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: (\n\t\t\thref: string,\n\t\t\toptions?: NavigateOptions\n\t\t) => Promise< void >;\n\t\tprefetch: ( url: string, options?: PrefetchOptions ) => Promise< 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// Creates 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// Doesn'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// Dismisses 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 importScriptModules( page.scriptModules );\n\n\t\t\t\tbatch( () => {\n\t\t\t\t\t// Updates the URL in the state.\n\t\t\t\t\tstate.url = href;\n\n\t\t\t\t\t// Updates the navigation status once the the new page rendering\n\t\t\t\t\t// has been completed.\n\t\t\t\t\tif ( loadingAnimation ) {\n\t\t\t\t\t\tnavigation.hasStarted = false;\n\t\t\t\t\t\tnavigation.hasFinished = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Renders the new page.\n\t\t\t\t\trenderPage( page );\n\t\t\t\t} );\n\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\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\t * @return Promise that resolves once the page has been fetched.\n\t\t */\n\t\t*prefetch( 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\n\t\t\tyield pages.get( pagePath );\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 `a11y.speak` directly.\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 * Calculates the Shortest Common Supersequence (SCS) of two sequences.\n *\n * A supersequence is a sequence that contains both input sequences as subsequences.\n * The shortest common supersequence is the shortest possible such sequence.\n *\n * This implementation uses dynamic programming with a time complexity of O(mn)\n * and space complexity of O(mn), where m and n are the lengths of sequences X and Y.\n *\n * @example\n * ```ts\n * const seq1 = [1, 3, 5];\n * const seq2 = [2, 3, 4];\n * const scs = shortestCommonSupersequence(seq1, seq2); // [1, 2, 3, 4, 5]\n * ```\n *\n * @param X The first sequence.\n * @param Y The second sequence.\n * @param isEqual Optional equality function to compare elements.\n * Defaults to strict equality (===).\n * @return The shortest common supersequence of X and Y.\n */\nexport function shortestCommonSupersequence< E = unknown >(\n\tX: E[],\n\tY: E[],\n\tisEqual = ( a: E, b: E ) => a === b\n) {\n\tconst m = X.length;\n\tconst n = Y.length;\n\n\t// Create a 2D dp table where dp[i][j] is the SCS for X[0..i-1] and Y[0..j-1].\n\tconst dp: E[][][] = Array.from( { length: m + 1 }, () =>\n\t\tArray( n + 1 ).fill( null )\n\t);\n\n\t// Base cases: one of the sequences is empty.\n\tfor ( let i = 0; i <= m; i++ ) {\n\t\tdp[ i ][ 0 ] = X.slice( 0, i );\n\t}\n\tfor ( let j = 0; j <= n; j++ ) {\n\t\tdp[ 0 ][ j ] = Y.slice( 0, j );\n\t}\n\n\t// Fill in the dp table.\n\tfor ( let i = 1; i <= m; i++ ) {\n\t\tfor ( let j = 1; j <= n; j++ ) {\n\t\t\tif ( isEqual( X[ i - 1 ], Y[ j - 1 ] ) ) {\n\t\t\t\t// When X[i-1] equals Y[j-1], use the reference from X.\n\t\t\t\tdp[ i ][ j ] = dp[ i - 1 ][ j - 1 ].concat( X[ i - 1 ] );\n\t\t\t} else {\n\t\t\t\t// Choose the shorter option between appending X[i-1] or Y[j-1].\n\t\t\t\tconst option1 = dp[ i - 1 ][ j ].concat( X[ i - 1 ] );\n\t\t\t\tconst option2 = dp[ i ][ j - 1 ].concat( Y[ j - 1 ] );\n\t\t\t\tdp[ i ][ j ] =\n\t\t\t\t\toption1.length <= option2.length ? option1 : option2;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dp[ m ][ n ];\n}\n", "/**\n * Internal dependencies\n */\nimport { shortestCommonSupersequence } from './scs';\n\nexport type StyleElement = HTMLLinkElement | HTMLStyleElement;\n\n/**\n * Compares the passed style or link elements to check if they can be\n * considered equal.\n *\n * @param a `<style>` or `<link>` element.\n * @param b `<style>` or `<link>` element.\n * @return Whether they are considered equal.\n */\nconst areNodesEqual = ( a: StyleElement, b: StyleElement ): boolean =>\n\ta.isEqualNode( b );\n\n/**\n * Normalizes the passed style or link element, reverting the changes\n * made by {@link prepareStylePromise|`prepareStylePromise`} to the\n * `data-original-media` and `media`.\n *\n * @example\n * The following elements should be normalized to the same element:\n * ```html\n * <link rel=\"stylesheet\" src=\"./assets/styles.css\">\n * <link rel=\"stylesheet\" src=\"./assets/styles.css\" media=\"all\">\n * <link rel=\"stylesheet\" src=\"./assets/styles.css\" media=\"preload\">\n * <link rel=\"stylesheet\" src=\"./assets/styles.css\" media=\"preload\" data-original-media=\"all\">\n * ```\n *\n * @param element `<style>` or `<link>` element.\n * @return Normalized node.\n */\nexport const normalizeMedia = ( element: StyleElement ): StyleElement => {\n\telement = element.cloneNode( true ) as StyleElement;\n\tconst media = element.media;\n\tconst { originalMedia } = element.dataset;\n\n\tif ( media === 'preload' ) {\n\t\telement.media = originalMedia || 'all';\n\t\telement.removeAttribute( 'data-original-media' );\n\t} else if ( ! element.media ) {\n\t\telement.media = 'all';\n\t}\n\treturn element;\n};\n\n/**\n * Adds the minimum style elements from Y around those in X using a\n * shortest common supersequence algorithm, returning a list of\n * promises for all the elements in Y.\n *\n * If X is empty, it appends all elements in Y to the passed parent\n * element or to `document.head` instead.\n *\n * The returned promises resolve once the corresponding style element\n * is loaded and ready. Those elements that are also in X return a\n * cached promise.\n *\n * The algorithm ensures that the final style elements present in the\n * document (or the passed `parent` element) are in the correct order\n * and they are included in either X or Y.\n *\n * @param X Base list of style elements.\n * @param Y List of style elements.\n * @param parent Optional parent element to append to the new style elements.\n * @return List of promises that resolve once the elements in Y are ready.\n */\nexport function updateStylesWithSCS(\n\tX: StyleElement[],\n\tY: StyleElement[],\n\tparent: Element = window.document.head\n) {\n\tif ( X.length === 0 ) {\n\t\treturn Y.map( ( element ) => {\n\t\t\tconst promise = prepareStylePromise( element );\n\t\t\tparent.appendChild( element );\n\t\t\treturn promise;\n\t\t} );\n\t}\n\n\t// Create normalized arrays for comparison.\n\tconst xNormalized = X.map( normalizeMedia );\n\tconst yNormalized = Y.map( normalizeMedia );\n\n\t// The `scs` array contains normalized elements.\n\tconst scs = shortestCommonSupersequence(\n\t\txNormalized,\n\t\tyNormalized,\n\t\tareNodesEqual\n\t);\n\tconst xLength = X.length;\n\tconst yLength = Y.length;\n\tconst promises = [];\n\tlet last = X[ xLength - 1 ];\n\tlet xIndex = 0;\n\tlet yIndex = 0;\n\n\tfor ( const scsElement of scs ) {\n\t\t// Actual elements that will end up in the DOM.\n\t\tconst xElement = X[ xIndex ];\n\t\tconst yElement = Y[ yIndex ];\n\t\t// Normalized elements for comparison.\n\t\tconst xNormEl = xNormalized[ xIndex ];\n\t\tconst yNormEl = yNormalized[ yIndex ];\n\t\tif ( xIndex < xLength && areNodesEqual( xNormEl, scsElement ) ) {\n\t\t\tif ( yIndex < yLength && areNodesEqual( yNormEl, scsElement ) ) {\n\t\t\t\tpromises.push( prepareStylePromise( xElement ) );\n\t\t\t\tyIndex++;\n\t\t\t}\n\t\t\txIndex++;\n\t\t} else {\n\t\t\tpromises.push( prepareStylePromise( yElement ) );\n\t\t\tif ( xIndex < xLength ) {\n\t\t\t\txElement.before( yElement );\n\t\t\t} else {\n\t\t\t\tlast.after( yElement );\n\t\t\t\tlast = yElement;\n\t\t\t}\n\t\t\tyIndex++;\n\t\t}\n\t}\n\n\treturn promises;\n}\n\n/**\n * Cache of promises per style elements.\n *\n * Each style element has their own associated `Promise` that resolves\n * once the element has been loaded and is ready.\n */\nconst stylePromiseCache = new WeakMap<\n\tStyleElement,\n\tPromise< StyleElement >\n>();\n\n/**\n * Prepares and returns the corresponding `Promise` for the passed style\n * element.\n *\n * It returns the cached promise if it exists. Otherwise, constructs\n * a `Promise` that resolves once the element has finished loading.\n *\n * For those elements that are not in the DOM yet, this function\n * injects a `media=\"preload\"` attribute to the passed element so the\n * style is loaded without applying any styles to the document.\n *\n * @param element Style element.\n * @return The associated `Promise` to the passed element.\n */\nconst prepareStylePromise = (\n\telement: StyleElement\n): Promise< StyleElement > => {\n\tif ( stylePromiseCache.has( element ) ) {\n\t\treturn stylePromiseCache.get( element );\n\t}\n\n\t// When the element exists in the main document and its media attribute\n\t// is not \"preload\", that means the element comes from the initial page.\n\t// The `media` attribute doesn't need to be handled in this case.\n\tif ( window.document.contains( element ) && element.media !== 'preload' ) {\n\t\tconst promise = Promise.resolve( element );\n\t\tstylePromiseCache.set( element, promise );\n\t\treturn promise;\n\t}\n\n\tif ( element.hasAttribute( 'media' ) && element.media !== 'all' ) {\n\t\telement.dataset.originalMedia = element.media;\n\t}\n\n\telement.media = 'preload';\n\n\tif ( element instanceof HTMLStyleElement ) {\n\t\tconst promise = Promise.resolve( element );\n\t\tstylePromiseCache.set( element, promise );\n\t\treturn promise;\n\t}\n\n\tconst promise = new Promise< HTMLLinkElement >( ( resolve, reject ) => {\n\t\telement.addEventListener( 'load', () => resolve( element ) );\n\t\telement.addEventListener( 'error', ( event ) => {\n\t\t\tconst { href } = event.target as HTMLLinkElement;\n\t\t\treject(\n\t\t\t\tError(\n\t\t\t\t\t`The style sheet with the following URL failed to load: ${ href }`\n\t\t\t\t)\n\t\t\t);\n\t\t} );\n\t} );\n\n\tstylePromiseCache.set( element, promise );\n\treturn promise;\n};\n\n/**\n * Cache of style promise lists per URL.\n *\n * It contains the list of style elements associated to the page with the\n * passed URL. The original order is preserved to respect the CSS cascade.\n *\n * Each included promise resolves when the associated style element is ready.\n */\nconst styleSheetCache = new Map< string, Promise< StyleElement >[] >();\n\n/**\n * Prepares all style elements contained in the passed document.\n *\n * This function calls {@link updateStylesWithSCS|`updateStylesWithSCS`}\n * to insert only the minimum amount of style elements into the DOM, so\n * those present in the passed document end up in the DOM while the order\n * is respected.\n *\n * New appended style elements contain a `media=preload` attribute to\n * make them effectively disabled until they are applied with the\n * {@link applyStyles|`applyStyles`} function.\n *\n * @param doc Document instance.\n * @param url URL for the passed document.\n * @return A list of promises for each style element in the passed document.\n */\nexport const preloadStyles = (\n\tdoc: Document,\n\turl: string\n): Promise< StyleElement >[] => {\n\tif ( ! styleSheetCache.has( url ) ) {\n\t\tconst currentStyleElements = Array.from(\n\t\t\twindow.document.querySelectorAll< StyleElement >(\n\t\t\t\t'style,link[rel=stylesheet]'\n\t\t\t)\n\t\t);\n\t\tconst newStyleElements = Array.from(\n\t\t\tdoc.querySelectorAll< StyleElement >( 'style,link[rel=stylesheet]' )\n\t\t);\n\n\t\t// Set styles in order.\n\t\tconst stylePromises = updateStylesWithSCS(\n\t\t\tcurrentStyleElements,\n\t\t\tnewStyleElements\n\t\t);\n\n\t\tstyleSheetCache.set( url, stylePromises );\n\t}\n\treturn styleSheetCache.get( url );\n};\n\n/**\n * Traverses all style elements in the DOM, enabling only those included\n * in the passed list and disabling the others.\n *\n * If the style element has the `data-original-media` attribute, the\n * original `media` value is restored.\n *\n * @param styles List of style elements to apply.\n */\nexport const applyStyles = ( styles: StyleElement[] ) => {\n\twindow.document\n\t\t.querySelectorAll( 'style,link[rel=stylesheet]' )\n\t\t.forEach( ( el: HTMLLinkElement | HTMLStyleElement ) => {\n\t\t\tif ( el.sheet ) {\n\t\t\t\tif ( styles.includes( el ) ) {\n\t\t\t\t\t// Only update mediaText when necessary.\n\t\t\t\t\tif ( el.sheet.media.mediaText === 'preload' ) {\n\t\t\t\t\t\tconst { originalMedia = 'all' } = el.dataset;\n\t\t\t\t\t\tel.sheet.media.mediaText = originalMedia;\n\t\t\t\t\t}\n\t\t\t\t\tel.sheet.disabled = false;\n\t\t\t\t} else {\n\t\t\t\t\tel.sheet.disabled = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n};\n", "/**\n * This code is derived from the following projects:\n *\n * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)\n * 2. es-module-shims (https://github.com/guybedford/es-module-shims)\n *\n * The original implementation was created by Guy Bedford in es-module-shims,\n * then adapted by Mark Keller in dynamic-importmap, and further modified\n * for use in this project.\n *\n * Both projects are licensed under the MIT license.\n *\n * MIT License: https://opensource.org/licenses/MIT\n */\n\nconst backslashRegEx = /\\\\/g;\n\nfunction isURL( url: string ) {\n\tif ( url.indexOf( ':' ) === -1 ) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tnew URL( url );\n\t\treturn true;\n\t} catch ( _ ) {\n\t\treturn false;\n\t}\n}\n\nfunction resolveIfNotPlainOrUrl( relUrl, parentUrl ) {\n\tconst hIdx = parentUrl.indexOf( '#' ),\n\t\tqIdx = parentUrl.indexOf( '?' );\n\tif ( hIdx + qIdx > -2 ) {\n\t\tparentUrl = parentUrl.slice(\n\t\t\t0,\n\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\thIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx\n\t\t);\n\t}\n\tif ( relUrl.indexOf( '\\\\' ) !== -1 ) {\n\t\trelUrl = relUrl.replace( backslashRegEx, '/' );\n\t}\n\t// protocol-relative\n\tif ( relUrl[ 0 ] === '/' && relUrl[ 1 ] === '/' ) {\n\t\treturn parentUrl.slice( 0, parentUrl.indexOf( ':' ) + 1 ) + relUrl;\n\t}\n\t// relative-url\n\telse if (\n\t\t( relUrl[ 0 ] === '.' &&\n\t\t\t( relUrl[ 1 ] === '/' ||\n\t\t\t\t( relUrl[ 1 ] === '.' &&\n\t\t\t\t\t( relUrl[ 2 ] === '/' ||\n\t\t\t\t\t\t( relUrl.length === 2 && ( relUrl += '/' ) ) ) ) ||\n\t\t\t\t( relUrl.length === 1 && ( relUrl += '/' ) ) ) ) ||\n\t\trelUrl[ 0 ] === '/'\n\t) {\n\t\tconst parentProtocol = parentUrl.slice(\n\t\t\t0,\n\t\t\tparentUrl.indexOf( ':' ) + 1\n\t\t);\n\t\t// Disabled, but these cases will give inconsistent results for deep backtracking\n\t\t//if (parentUrl[parentProtocol.length] !== '/')\n\t\t// throw new Error('Cannot resolve');\n\t\t// read pathname from parent URL\n\t\t// pathname taken to be part after leading \"/\"\n\t\tlet pathname;\n\t\tif ( parentUrl[ parentProtocol.length + 1 ] === '/' ) {\n\t\t\t// resolving to a :// so we need to read out the auth and host\n\t\t\tif ( parentProtocol !== 'file:' ) {\n\t\t\t\tpathname = parentUrl.slice( parentProtocol.length + 2 );\n\t\t\t\tpathname = pathname.slice( pathname.indexOf( '/' ) + 1 );\n\t\t\t} else {\n\t\t\t\tpathname = parentUrl.slice( 8 );\n\t\t\t}\n\t\t} else {\n\t\t\t// resolving to :/ so pathname is the /... part\n\t\t\tpathname = parentUrl.slice(\n\t\t\t\tparentProtocol.length +\n\t\t\t\t\t( parentUrl[ parentProtocol.length ] === '/' )\n\t\t\t);\n\t\t}\n\n\t\tif ( relUrl[ 0 ] === '/' ) {\n\t\t\treturn (\n\t\t\t\tparentUrl.slice( 0, parentUrl.length - pathname.length - 1 ) +\n\t\t\t\trelUrl\n\t\t\t);\n\t\t}\n\n\t\t// join together and split for removal of .. and . segments\n\t\t// looping the string instead of anything fancy for perf reasons\n\t\t// '../../../../../z' resolved to 'x/y' is just 'z'\n\t\tconst segmented =\n\t\t\tpathname.slice( 0, pathname.lastIndexOf( '/' ) + 1 ) + relUrl;\n\n\t\tconst output = [];\n\t\tlet segmentIndex = -1;\n\t\tfor ( let i = 0; i < segmented.length; i++ ) {\n\t\t\t// busy reading a segment - only terminate on '/'\n\t\t\tif ( segmentIndex !== -1 ) {\n\t\t\t\tif ( segmented[ i ] === '/' ) {\n\t\t\t\t\toutput.push( segmented.slice( segmentIndex, i + 1 ) );\n\t\t\t\t\tsegmentIndex = -1;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// new segment - check if it is relative\n\t\t\telse if ( segmented[ i ] === '.' ) {\n\t\t\t\t// ../ segment\n\t\t\t\tif (\n\t\t\t\t\tsegmented[ i + 1 ] === '.' &&\n\t\t\t\t\t( segmented[ i + 2 ] === '/' || i + 2 === segmented.length )\n\t\t\t\t) {\n\t\t\t\t\toutput.pop();\n\t\t\t\t\ti += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// ./ segment\n\t\t\t\telse if (\n\t\t\t\t\tsegmented[ i + 1 ] === '/' ||\n\t\t\t\t\ti + 1 === segmented.length\n\t\t\t\t) {\n\t\t\t\t\ti += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// it is the start of a new segment\n\t\t\twhile ( segmented[ i ] === '/' ) {\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tsegmentIndex = i;\n\t\t}\n\t\t// finish reading out the last segment\n\t\tif ( segmentIndex !== -1 ) {\n\t\t\toutput.push( segmented.slice( segmentIndex ) );\n\t\t}\n\t\treturn (\n\t\t\tparentUrl.slice( 0, parentUrl.length - pathname.length ) +\n\t\t\toutput.join( '' )\n\t\t);\n\t}\n}\n\nfunction resolveUrl( relUrl, parentUrl ) {\n\treturn (\n\t\tresolveIfNotPlainOrUrl( relUrl, parentUrl ) ||\n\t\t( isURL( relUrl )\n\t\t\t? relUrl\n\t\t\t: resolveIfNotPlainOrUrl( './' + relUrl, parentUrl ) )\n\t);\n}\n\nfunction getMatch( path, matchObj ) {\n\tif ( matchObj[ path ] ) {\n\t\treturn path;\n\t}\n\tlet sepIndex = path.length;\n\tdo {\n\t\tconst segment = path.slice( 0, sepIndex + 1 );\n\t\tif ( segment in matchObj ) {\n\t\t\treturn segment;\n\t\t}\n\t} while ( ( sepIndex = path.lastIndexOf( '/', sepIndex - 1 ) ) !== -1 );\n}\n\nfunction applyPackages( id, packages ) {\n\tconst pkgName = getMatch( id, packages );\n\tif ( pkgName ) {\n\t\tconst pkg = packages[ pkgName ];\n\t\tif ( pkg === null ) {\n\t\t\treturn;\n\t\t}\n\t\treturn pkg + id.slice( pkgName.length );\n\t}\n}\n\nfunction resolveImportMap( importMap, resolvedOrPlain, parentUrl ) {\n\tlet scopeUrl = parentUrl && getMatch( parentUrl, importMap.scopes );\n\twhile ( scopeUrl ) {\n\t\tconst packageResolution = applyPackages(\n\t\t\tresolvedOrPlain,\n\t\t\timportMap.scopes[ scopeUrl ]\n\t\t);\n\t\tif ( packageResolution ) {\n\t\t\treturn packageResolution;\n\t\t}\n\t\tscopeUrl = getMatch(\n\t\t\tscopeUrl.slice( 0, scopeUrl.lastIndexOf( '/' ) ),\n\t\t\timportMap.scopes\n\t\t);\n\t}\n\treturn (\n\t\tapplyPackages( resolvedOrPlain, importMap.imports ) ||\n\t\t( resolvedOrPlain.indexOf( ':' ) !== -1 && resolvedOrPlain )\n\t);\n}\n\nfunction resolveAndComposePackages(\n\tpackages,\n\toutPackages,\n\tbaseUrl,\n\tparentMap\n) {\n\tfor ( const p in packages ) {\n\t\tconst resolvedLhs = resolveIfNotPlainOrUrl( p, baseUrl ) || p;\n\t\tconst target = packages[ p ];\n\t\tif ( typeof target !== 'string' ) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst mapped = resolveImportMap(\n\t\t\tparentMap,\n\t\t\tresolveIfNotPlainOrUrl( target, baseUrl ) || target,\n\t\t\tbaseUrl\n\t\t);\n\t\tif ( mapped ) {\n\t\t\toutPackages[ resolvedLhs ] = mapped;\n\t\t\tcontinue;\n\t\t}\n\t\t// console.warn(\n\t\t// \t`Mapping \"${ p }\" -> \"${ packages[ p ] }\" does not resolve`\n\t\t// );\n\t}\n}\n\nfunction resolveAndComposeImportMap( json, baseUrl, parentMap ) {\n\tconst outMap = {\n\t\timports: Object.assign( {}, parentMap.imports ),\n\t\tscopes: Object.assign( {}, parentMap.scopes ),\n\t};\n\n\tif ( json.imports ) {\n\t\tresolveAndComposePackages(\n\t\t\tjson.imports,\n\t\t\toutMap.imports,\n\t\t\tbaseUrl,\n\t\t\tparentMap\n\t\t);\n\t}\n\n\tif ( json.scopes ) {\n\t\tfor ( const s in json.scopes ) {\n\t\t\tconst resolvedScope = resolveUrl( s, baseUrl );\n\t\t\tresolveAndComposePackages(\n\t\t\t\tjson.scopes[ s ],\n\t\t\t\toutMap.scopes[ resolvedScope ] ||\n\t\t\t\t\t( outMap.scopes[ resolvedScope ] = {} ),\n\t\t\t\tbaseUrl,\n\t\t\t\tparentMap\n\t\t\t);\n\t\t}\n\t}\n\n\treturn outMap;\n}\n\nlet importMap = { imports: {}, scopes: {} };\n\n// TODO: check if this baseURI should change per document, and so\n// it need to be passed as a parameter to methods like `resolve`.\nconst baseUrl = document.baseURI;\nconst pageBaseUrl = baseUrl;\n\n/**\n * Extends the internal dynamic import map with the passed one.\n *\n * @param importMapIn Import map.\n * @param importMapIn.imports Imports declaration.\n * @param importMapIn.scopes Scopes declaration.\n */\nexport function addImportMap( importMapIn: {\n\timports?: Record< string, string >;\n\tscopes?: Record< string, any >;\n} ) {\n\timportMap = resolveAndComposeImportMap(\n\t\timportMapIn,\n\t\tpageBaseUrl,\n\t\timportMap\n\t);\n}\n\n/**\n * Resolves the URL of the passed module ID against the current internal\n * dynamic import map.\n *\n * @param id Module ID.\n * @param parentUrl Parent URL, in case the module ID is relative.\n * @return Resolved module URL.\n */\nexport function resolve( id: string, parentUrl: string ): string {\n\tconst urlResolved = resolveIfNotPlainOrUrl( id, parentUrl );\n\treturn resolveImportMap( importMap, urlResolved || id, parentUrl ) || id;\n}\n", "/* es-module-lexer 1.5.4 */\nexport var ImportType;!function(A){A[A.Static=1]=\"Static\",A[A.Dynamic=2]=\"Dynamic\",A[A.ImportMeta=3]=\"ImportMeta\",A[A.StaticSourcePhase=4]=\"StaticSourcePhase\",A[A.DynamicSourcePhase=5]=\"DynamicSourcePhase\"}(ImportType||(ImportType={}));const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(E,g=\"@\"){if(!C)return init.then((()=>parse(E)));const I=E.length+1,w=(C.__heap_base.value||C.__heap_base)+4*I-C.memory.buffer.byteLength;w>0&&C.memory.grow(Math.ceil(w/65536));const K=C.sa(I-1);if((A?B:Q)(E,new Uint16Array(C.memory.buffer,K,I)),!C.parse())throw Object.assign(new Error(`Parse error $g}:$E.slice(0,C.e()).split(\"\\n\").length}:$C.e()-E.lastIndexOf(\"\\n\",C.e()-1)}`),{idx:C.e()});const D=[],o=[];for(;C.ri();){const A=C.is(),Q=C.ie(),B=C.it(),g=C.ai(),I=C.id(),w=C.ss(),K=C.se();let o;C.ip()&&(o=k(E.slice(-1===I?A-1:A,-1===I?Q+1:Q))),D.push({n:o,t:B,s:A,e:Q,ss:w,se:K,d:I,a:g})}for(;C.re();){const A=C.es(),Q=C.ee(),B=C.els(),g=C.ele(),I=E.slice(A,Q),w=I[0],K=B<0?void 0:E.slice(B,g),D=K?K[0]:\"\";o.push({s:A,e:Q,ls:B,le:g,n:'\"'===w||\"'\"===w?k(I):I,ln:'\"'===D||\"'\"===D?k(K):K})}function k(A){try{return(0,eval)(A)}catch(A){}}return[D,o,!!C.f(),!!C.ms()]}function Q(A,Q){const B=A.length;let C=0;for(;C<B;){const B=A.charCodeAt(C);Q[C++]=(255&B)<<8|B>>>8}}function B(A,Q){const B=A.length;let C=0;for(;C<B;)Q[C]=A.charCodeAt(C++)}let C;export const init=WebAssembly.compile((E=\"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\",\"undefined\"!=typeof Buffer?Buffer.from(E,\"base64\"):Uint8Array.from(atob(E),(A=>A.charCodeAt(0))))).then(WebAssembly.instantiate).then((({exports:A})=>{C=A}));var E;", "/**\n * This code is derived from the following projects:\n *\n * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)\n * 2. es-module-shims (https://github.com/guybedford/es-module-shims)\n *\n * The original implementation was created by Guy Bedford in es-module-shims,\n * then adapted by Mark Keller in dynamic-importmap, and further modified\n * for use in this project.\n *\n * Both projects are licensed under the MIT license.\n *\n * MIT License: https://opensource.org/licenses/MIT\n */\n\n/**\n * Internal dependencies\n */\nimport { type ModuleLoad } from './loader';\n\nconst fetching = ( url: string, parent?: string ) => {\n\treturn ` fetching ${ url }${ parent ? ` from ${ parent }` : '' }`;\n};\n\nconst jsContentType = /^(text|application)\\/(x-)?javascript(;|$)/;\n\n/**\n * Fetches the passed module URL and return the corresponding `ModuleLoad`\n * instance. If the passed URL does not point to a JS file, the function\n * throws and error.\n *\n * @param url Module URL.\n * @param fetchOpts Fetch init options.\n * @param parent Parent module URL referencing this URL (if any).\n * @return Promise with a `ModuleLoad` instance.\n */\nexport async function fetchModule(\n\turl: string,\n\tfetchOpts: RequestInit,\n\tparent: string\n): Promise< ModuleLoad > {\n\tlet res: Response;\n\ttry {\n\t\tres = await fetch( url, fetchOpts );\n\t} catch ( e ) {\n\t\tthrow Error( `Network error${ fetching( url, parent ) }.` );\n\t}\n\tif ( ! res.ok ) {\n\t\tthrow Error( `Error ${ res.status }${ fetching( url, parent ) }.` );\n\t}\n\tconst contentType = res.headers.get( 'content-type' );\n\tif ( ! jsContentType.test( contentType ) ) {\n\t\tthrow Error(\n\t\t\t`Bad Content-Type \"${ contentType }\"${ fetching( url, parent ) }.`\n\t\t);\n\t}\n\treturn { responseUrl: res.url, source: await res.text() };\n}\n", "/**\n * This code is derived from the following projects:\n *\n * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)\n * 2. es-module-shims (https://github.com/guybedford/es-module-shims)\n *\n * The original implementation was created by Guy Bedford in es-module-shims,\n * then adapted by Mark Keller in dynamic-importmap, and further modified\n * for use in this project.\n *\n * Both projects are licensed under the MIT license.\n *\n * MIT License: https://opensource.org/licenses/MIT\n */\n\n/**\n * External dependencies\n */\nimport * as lexer from 'es-module-lexer';\n\n/**\n * Internal dependencies\n */\nimport { fetchModule } from './fetch';\nimport { resolve } from './resolver';\n\nexport interface ModuleLoad {\n\turl?: string; // original URL\n\tresponseUrl?: string; // response url\n\tfetchPromise?: Promise< ModuleLoad >; // fetch promise\n\tsource?: string; // source code\n\tlinkPromise?: Promise< void >; // link-promise (dependency fetch)\n\tanalysis?: ReturnType< typeof lexer.parse >; // analysis ([ imports, exports, ... ])\n\tdeps?: ModuleLoad[]; // deps\n\tblobUrl?: string; // blobUrl\n\tshellUrl?: string; // shellUrl for circular references\n}\n\nexport const initPromise = lexer.init;\n\n/**\n * Script element containing the initial page's import map.\n */\nconst initialImportMapElement =\n\twindow.document.querySelector< HTMLScriptElement >(\n\t\t'script#wp-importmap[type=importmap]'\n\t);\n\n/**\n * Data from the initial page's import map.\n *\n * Pages containing any of the imports present on the original page\n * in their import maps should ignore them, as those imports would\n * be handled natively.\n */\nexport const initialImportMap = initialImportMapElement\n\t? JSON.parse( initialImportMapElement.text )\n\t: { imports: {}, scopes: {} };\n\nconst skip = ( id ) => Object.keys( initialImportMap.imports ).includes( id );\n\nconst fetchCache: Record< string, Promise< ModuleLoad > > = {};\nexport const registry = {};\n\n// Init registry with importamp content.\nObject.keys( initialImportMap.imports ).forEach( ( id ) => {\n\tregistry[ id ] = {\n\t\tblobUrl: id,\n\t};\n} );\n\nasync function loadAll( load: ModuleLoad, seen: Record< string, any > ) {\n\tif ( load.blobUrl || seen[ load.url ] ) {\n\t\treturn;\n\t}\n\tseen[ load.url ] = 1;\n\tawait load.linkPromise;\n\tawait Promise.all( load.deps.map( ( dep ) => loadAll( dep, seen ) ) );\n}\n\nfunction urlJsString( url: string ) {\n\treturn `'${ url.replace( /'/g, \"\\\\'\" ) }'`;\n}\n\nconst createBlob = ( source: string, type = 'text/javascript' ) =>\n\tURL.createObjectURL( new Blob( [ source ], { type } ) );\n\nfunction resolveDeps( load: ModuleLoad, seen: Record< string, any > ) {\n\tif ( load.blobUrl || ! seen[ load.url ] ) {\n\t\treturn;\n\t}\n\tseen[ load.url ] = 0;\n\n\tfor ( const dep of load.deps ) {\n\t\tresolveDeps( dep, seen );\n\t}\n\n\tconst [ imports, exports ] = load.analysis;\n\tconst source = load.source;\n\n\tlet resolvedSource = '';\n\n\tif ( ! imports.length ) {\n\t\tresolvedSource += source;\n\t} else {\n\t\tlet lastIndex = 0;\n\t\tlet depIndex = 0;\n\t\tconst dynamicImportEndStack = [];\n\n\t\tfunction pushStringTo( originalIndex: number ) {\n\t\t\twhile (\n\t\t\t\tdynamicImportEndStack.length &&\n\t\t\t\tdynamicImportEndStack[ dynamicImportEndStack.length - 1 ] <\n\t\t\t\t\toriginalIndex\n\t\t\t) {\n\t\t\t\tconst dynamicImportEnd = dynamicImportEndStack.pop();\n\t\t\t\tresolvedSource += `${ source.slice(\n\t\t\t\t\tlastIndex,\n\t\t\t\t\tdynamicImportEnd\n\t\t\t\t) }, ${ urlJsString( load.responseUrl ) }`;\n\t\t\t\tlastIndex = dynamicImportEnd;\n\t\t\t}\n\t\t\tresolvedSource += source.slice( lastIndex, originalIndex );\n\t\t\tlastIndex = originalIndex;\n\t\t}\n\n\t\tfor ( const {\n\t\t\ts: start,\n\t\t\tss: statementStart,\n\t\t\tse: statementEnd,\n\t\t\td: dynamicImportIndex,\n\t\t} of imports ) {\n\t\t\t// static import\n\t\t\tif ( dynamicImportIndex === -1 ) {\n\t\t\t\tconst depLoad = load.deps[ depIndex++ ];\n\t\t\t\tlet blobUrl = depLoad.blobUrl;\n\t\t\t\tconst cycleShell = ! blobUrl;\n\t\t\t\tif ( cycleShell ) {\n\t\t\t\t\t// Circular shell creation\n\t\t\t\t\tif ( ! ( blobUrl = depLoad.shellUrl ) ) {\n\t\t\t\t\t\tblobUrl = depLoad.shellUrl = createBlob(\n\t\t\t\t\t\t\t`export function u$_(m){${ depLoad.analysis[ 1 ]\n\t\t\t\t\t\t\t\t.map( ( { s, e }, i ) => {\n\t\t\t\t\t\t\t\t\tconst q =\n\t\t\t\t\t\t\t\t\t\tdepLoad.source[ s ] === '\"' ||\n\t\t\t\t\t\t\t\t\t\tdepLoad.source[ s ] === \"'\";\n\t\t\t\t\t\t\t\t\treturn `e$_${ i }=m${\n\t\t\t\t\t\t\t\t\t\tq ? `[` : '.'\n\t\t\t\t\t\t\t\t\t}${ depLoad.source.slice( s, e ) }${\n\t\t\t\t\t\t\t\t\t\tq ? `]` : ''\n\t\t\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.join( ',' ) }}${\n\t\t\t\t\t\t\t\tdepLoad.analysis[ 1 ].length\n\t\t\t\t\t\t\t\t\t? `let ${ depLoad.analysis[ 1 ]\n\t\t\t\t\t\t\t\t\t\t\t.map( ( _, i ) => `e$_${ i }` )\n\t\t\t\t\t\t\t\t\t\t\t.join( ',' ) };`\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t}export {${ depLoad.analysis[ 1 ]\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( { s, e }, i ) =>\n\t\t\t\t\t\t\t\t\t\t`e$_${ i } as ${ depLoad.source.slice(\n\t\t\t\t\t\t\t\t\t\t\ts,\n\t\t\t\t\t\t\t\t\t\t\te\n\t\t\t\t\t\t\t\t\t\t) }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' ) }}\\n//# sourceURL=${\n\t\t\t\t\t\t\t\tdepLoad.responseUrl\n\t\t\t\t\t\t\t}?cycle`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpushStringTo( start - 1 );\n\t\t\t\tresolvedSource += `/*${ source.slice(\n\t\t\t\t\tstart - 1,\n\t\t\t\t\tstatementEnd\n\t\t\t\t) }*/${ urlJsString( blobUrl ) }`;\n\n\t\t\t\t// circular shell execution\n\t\t\t\tif ( ! cycleShell && depLoad.shellUrl ) {\n\t\t\t\t\tresolvedSource += `;import*as m$_${ depIndex } from'${ depLoad.blobUrl }';import{u$_ as u$_${ depIndex }}from'${ depLoad.shellUrl }';u$_${ depIndex }(m$_${ depIndex })`;\n\t\t\t\t\tdepLoad.shellUrl = undefined;\n\t\t\t\t}\n\t\t\t\tlastIndex = statementEnd;\n\t\t\t}\n\t\t\t// import.meta\n\t\t\telse if ( dynamicImportIndex === -2 ) {\n\t\t\t\tthrow Error( 'The import.meta property is not supported.' );\n\t\t\t}\n\t\t\t// dynamic import\n\t\t\telse {\n\t\t\t\tpushStringTo( statementStart );\n\t\t\t\tresolvedSource += `wpInteractivityRouterImport(`;\n\t\t\t\tdynamicImportEndStack.push( statementEnd - 1 );\n\t\t\t\tlastIndex = start;\n\t\t\t}\n\t\t}\n\n\t\t// progressive cycle binding updates\n\t\tif ( load.shellUrl ) {\n\t\t\tresolvedSource += `\\n;import{u$_}from'${\n\t\t\t\tload.shellUrl\n\t\t\t}';try{u$_({${ exports\n\t\t\t\t.filter( ( e ) => e.ln )\n\t\t\t\t.map( ( { s, e, ln } ) => `${ source.slice( s, e ) }:${ ln }` )\n\t\t\t\t.join( ',' ) }})}catch(_){};\\n`;\n\t\t}\n\n\t\tpushStringTo( source.length );\n\t}\n\n\t// ensure we have a proper sourceURL\n\tlet hasSourceURL = false;\n\tresolvedSource = resolvedSource.replace(\n\t\tsourceMapURLRegEx,\n\t\t( match, isMapping, url ) => {\n\t\t\thasSourceURL = ! isMapping;\n\t\t\treturn match.replace( url, () =>\n\t\t\t\tnew URL( url, load.responseUrl ).toString()\n\t\t\t);\n\t\t}\n\t);\n\tif ( ! hasSourceURL ) {\n\t\tresolvedSource += '\\n//# sourceURL=' + load.responseUrl;\n\t}\n\n\tload.blobUrl = createBlob( resolvedSource );\n\tload.source = undefined; // free memory\n}\n\nconst sourceMapURLRegEx =\n\t/\\n\\/\\/# source(Mapping)?URL=([^\\n]+)\\s*((;|\\/\\/[^#][^\\n]*)\\s*)*$/;\n\nfunction getOrCreateLoad(\n\turl: string,\n\tfetchOpts: RequestInit,\n\tparent: string\n): ModuleLoad {\n\tlet load: ModuleLoad = registry[ url ];\n\tif ( load ) {\n\t\treturn load;\n\t}\n\n\tload = { url };\n\n\tif ( registry[ url ] ) {\n\t\t// If there's a naming conflict, keep incrementing until unique\n\t\tlet i = 0;\n\t\twhile ( registry[ load.url + ++i ] ) {\n\t\t\t/* no-op */\n\t\t}\n\t\tload.url += i;\n\t}\n\tregistry[ load.url ] = load;\n\n\tload.fetchPromise = ( async () => {\n\t\tlet source;\n\t\t( { responseUrl: load.responseUrl, source: source } =\n\t\t\tawait ( fetchCache[ url ] ||\n\t\t\t\tfetchModule( url, fetchOpts, parent ) ) );\n\t\ttry {\n\t\t\tload.analysis = lexer.parse( source, load.url );\n\t\t} catch ( e ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( e );\n\t\t\tload.analysis = [ [], [], false, false ];\n\t\t}\n\t\tload.source = source;\n\t\treturn load;\n\t} )();\n\n\tload.linkPromise = load.fetchPromise.then( async () => {\n\t\tlet childFetchOpts = fetchOpts;\n\t\tload.deps = (\n\t\t\tawait Promise.all(\n\t\t\t\tload.analysis[ 0 ].map( async ( { n, d } ) => {\n\t\t\t\t\tif ( d !== -1 || ! n ) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tconst responseUrl = resolve(\n\t\t\t\t\t\tn,\n\t\t\t\t\t\tload.responseUrl || load.url\n\t\t\t\t\t);\n\t\t\t\t\tif ( skip && skip( responseUrl ) ) {\n\t\t\t\t\t\treturn { blobUrl: responseUrl } as ModuleLoad;\n\t\t\t\t\t}\n\t\t\t\t\t// remove integrity for child fetches\n\t\t\t\t\tif ( childFetchOpts.integrity ) {\n\t\t\t\t\t\tchildFetchOpts = {\n\t\t\t\t\t\t\t...childFetchOpts,\n\t\t\t\t\t\t\tintegrity: undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn getOrCreateLoad(\n\t\t\t\t\t\tresponseUrl,\n\t\t\t\t\t\tchildFetchOpts,\n\t\t\t\t\t\tload.responseUrl\n\t\t\t\t\t).fetchPromise;\n\t\t\t\t} )\n\t\t\t)\n\t\t).filter( ( l ) => l );\n\t} );\n\n\treturn load;\n}\n\nconst dynamicImport = ( u: string ) => import( /* webpackIgnore: true */ u );\n\n/**\n * Resolves the passed module URL and fetches the corresponding module\n * and their dependencies, returning a `ModuleLoad` object once all\n * of them have been fetched.\n *\n * @param url Module URL.\n * @param fetchOpts Fetch options.\n * @return A promise with a `ModuleLoad` instance.\n */\nexport async function preloadModule(\n\turl: string,\n\tfetchOpts?: RequestInit\n): Promise< ModuleLoad > {\n\tawait initPromise;\n\tconst load = getOrCreateLoad( url, fetchOpts, null );\n\tconst seen = {};\n\tawait loadAll( load, seen );\n\tresolveDeps( load, seen );\n\t// microtask scheduling \u2013 can help ensure Blob is fully ready\n\tawait Promise.resolve();\n\treturn load;\n}\n\n/**\n * Imports the module represented by the passed `ModuleLoad` instance.\n *\n * @param load The `ModuleLoad` instance representing the module.\n * @return A promise with the imported module.\n */\nexport async function importPreloadedModule< Module = unknown >(\n\tload: ModuleLoad\n): Promise< Module > {\n\tconst module = await dynamicImport( load.blobUrl );\n\t// if the preloaded module ended up with a shell (circular refs), finalize it\n\tif ( load.shellUrl ) {\n\t\t( await dynamicImport( load.shellUrl ) ).u$_( module );\n\t}\n\treturn module;\n}\n\n/**\n * Imports the module represented by the passed module URL.\n *\n * The module URL and all its dependencies are resolved using the\n * current status of the internal dynamic import map.\n *\n * @param url Module URL.\n * @param fetchOpts Fetch options.\n * @return A promise with the imported module.\n */\nexport async function topLevelLoad< Module = unknown >(\n\turl: string,\n\tfetchOpts?: RequestInit\n): Promise< Module > {\n\tconst load = await preloadModule( url, fetchOpts );\n\treturn importPreloadedModule< Module >( load );\n}\n", "/**\n * This code is derived from the following projects:\n *\n * 1. dynamic-importmap (https://github.com/keller-mark/dynamic-importmap)\n * 2. es-module-shims (https://github.com/guybedford/es-module-shims)\n *\n * The original implementation was created by Guy Bedford in es-module-shims,\n * then adapted by Mark Keller in dynamic-importmap, and further modified\n * for use in this project.\n *\n * Both projects are licensed under the MIT license.\n *\n * MIT License: https://opensource.org/licenses/MIT\n */\n\n/**\n * Internal dependencies\n */\nimport { addImportMap, resolve } from './resolver';\nimport { initPromise, topLevelLoad, preloadModule } from './loader';\n\ntype ImportMap = {\n\timports?: Record< string, string >;\n\tscopes?: Record< string, Record< string, string > >;\n};\n\n// TODO: check if this baseURI should change per document, and so\n// it need to be passed as a parameter to methods like `importWithMap`\n// and `preloadWithMap`.\nconst baseUrl = document.baseURI;\nconst pageBaseUrl = baseUrl;\n\nObject.defineProperty( self, 'wpInteractivityRouterImport', {\n\tvalue: importShim,\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: false,\n} );\n\nasync function importShim< Module = unknown >( id: string ) {\n\tawait initPromise;\n\treturn topLevelLoad< Module >( resolve( id, pageBaseUrl ), {\n\t\tcredentials: 'same-origin',\n\t} );\n}\n\n/**\n * Imports the module with the passed ID.\n *\n * The module is resolved against the internal dynamic import map,\n * extended with the passed import map.\n *\n * @param id Module ID.\n * @param importMapIn Import map.\n * @return Resolved module.\n */\nexport async function importWithMap< Module = unknown >(\n\tid: string,\n\timportMapIn: ImportMap\n) {\n\taddImportMap( importMapIn );\n\treturn importShim< Module >( id );\n}\n\n/**\n * Preloads the module with the passed ID along with its dependencies.\n *\n * The module is resolved against the internal dynamic import map,\n * extended with the passed import map.\n *\n * @param id Module ID.\n * @param importMapIn Import map.\n * @return Resolved `ModuleLoad` instance.\n */\nexport async function preloadWithMap( id: string, importMapIn: ImportMap ) {\n\taddImportMap( importMapIn );\n\tawait initPromise;\n\treturn preloadModule( resolve( id, pageBaseUrl ), {\n\t\tcredentials: 'same-origin',\n\t} );\n}\n\nexport {\n\tinitialImportMap,\n\timportPreloadedModule,\n\ttype ModuleLoad,\n} from './loader';\n", "/**\n * Internal dependencies\n */\nimport {\n\tinitialImportMap,\n\timportPreloadedModule,\n\tpreloadWithMap,\n\ttype ModuleLoad,\n} from './dynamic-importmap';\n\n/**\n * IDs of modules that should be resolved by the browser rather than\n * processed internally.\n */\nconst resolvedScriptModules = new Set< string >();\n\n/**\n * Marks the specified module as natively resolved.\n * @param url Script module URL.\n */\nexport const markScriptModuleAsResolved = ( url: string ) => {\n\tresolvedScriptModules.add( url );\n};\n\n/**\n * Resolves and fetches modules present in the passed document, using the\n * document's import map to resolve them.\n *\n * @param doc Document containing the modules to preload.\n * @return Array of promises that resolve to a `ScriptModuleLoad` instance.\n */\nexport const preloadScriptModules = ( doc: Document ) => {\n\t// Extract the import map from the document.\n\tconst importMapElement = doc.querySelector< HTMLScriptElement >(\n\t\t'script#wp-importmap[type=importmap]'\n\t);\n\tconst importMap = importMapElement\n\t\t? JSON.parse( importMapElement.text )\n\t\t: { imports: {}, scopes: {} };\n\n\t// Remove imports also in the initial page's import map.\n\t// Those should be handled natively.\n\tfor ( const key in initialImportMap.imports ) {\n\t\tdelete importMap.imports[ key ];\n\t}\n\n\t// Get the URL of all modules contained in the document.\n\tconst moduleUrls = [\n\t\t...doc.querySelectorAll< HTMLScriptElement >(\n\t\t\t'script[type=module][src][data-wp-router-options]'\n\t\t),\n\t]\n\t\t.filter( ( script ) => {\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(\n\t\t\t\t\tscript.getAttribute( 'data-wp-router-options' )\n\t\t\t\t);\n\t\t\t\treturn parsed?.loadOnClientNavigation === true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} )\n\t\t.map( ( script ) => script.src );\n\n\t// Resolve and fetch those not resolved natively.\n\treturn moduleUrls\n\t\t.filter( ( url ) => ! resolvedScriptModules.has( url ) )\n\t\t.map( ( url ) => preloadWithMap( url, importMap ) );\n};\n\n/**\n * Imports modules respresented by the passed `ScriptModuleLoad` instances.\n *\n * @param modules Array of `MoudleLoad` instances.\n * @return Promise that resolves once all modules are imported.\n */\nexport const importScriptModules = ( modules: ScriptModuleLoad[] ) =>\n\tPromise.all( modules.map( ( m ) => importPreloadedModule( m ) ) );\n\nexport type ScriptModuleLoad = ModuleLoad;\n"], 5 "mappings": "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", 6 "names": ["promise", "resolve", "importMap", "baseUrl", "A", "E", "Q", "B", "g", "I", "w", "K", "o", "D", "C", "baseUrl", "pageBaseUrl", "pageBaseUrl", "importMap", "resolve"] 7 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Wed May 6 08:20:15 2026 | Cross-referenced by PHPXref |