[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/dist/script-modules/interactivity-router/ -> index.js (source)

   1  // packages/interactivity-router/build-module/index.js
   2  import { store, privateApis, getConfig } from "@wordpress/interactivity";
   3  
   4  // packages/interactivity-router/build-module/assets/scs.js
   5  function shortestCommonSupersequence(X, Y, isEqual = (a, b) => a === b) {
   6    const m = X.length;
   7    const n = Y.length;
   8    const dp = Array.from(
   9      { length: m + 1 },
  10      () => Array(n + 1).fill(null)
  11    );
  12    for (let i = 0; i <= m; i++) {
  13      dp[i][0] = X.slice(0, i);
  14    }
  15    for (let j = 0; j <= n; j++) {
  16      dp[0][j] = Y.slice(0, j);
  17    }
  18    for (let i = 1; i <= m; i++) {
  19      for (let j = 1; j <= n; j++) {
  20        if (isEqual(X[i - 1], Y[j - 1])) {
  21          dp[i][j] = dp[i - 1][j - 1].concat(X[i - 1]);
  22        } else {
  23          const option1 = dp[i - 1][j].concat(X[i - 1]);
  24          const option2 = dp[i][j - 1].concat(Y[j - 1]);
  25          dp[i][j] = option1.length <= option2.length ? option1 : option2;
  26        }
  27      }
  28    }
  29    return dp[m][n];
  30  }
  31  
  32  // packages/interactivity-router/build-module/assets/styles.js
  33  var areNodesEqual = (a, b) => a.isEqualNode(b);
  34  var normalizeMedia = (element) => {
  35    element = element.cloneNode(true);
  36    const media = element.media;
  37    const { originalMedia } = element.dataset;
  38    if (media === "preload") {
  39      element.media = originalMedia || "all";
  40      element.removeAttribute("data-original-media");
  41    } else if (!element.media) {
  42      element.media = "all";
  43    }
  44    return element;
  45  };
  46  function updateStylesWithSCS(X, Y, parent = window.document.head) {
  47    if (X.length === 0) {
  48      return Y.map((element) => {
  49        const promise = prepareStylePromise(element);
  50        parent.appendChild(element);
  51        return promise;
  52      });
  53    }
  54    const xNormalized = X.map(normalizeMedia);
  55    const yNormalized = Y.map(normalizeMedia);
  56    const scs = shortestCommonSupersequence(
  57      xNormalized,
  58      yNormalized,
  59      areNodesEqual
  60    );
  61    const xLength = X.length;
  62    const yLength = Y.length;
  63    const promises = [];
  64    let last = X[xLength - 1];
  65    let xIndex = 0;
  66    let yIndex = 0;
  67    for (const scsElement of scs) {
  68      const xElement = X[xIndex];
  69      const yElement = Y[yIndex];
  70      const xNormEl = xNormalized[xIndex];
  71      const yNormEl = yNormalized[yIndex];
  72      if (xIndex < xLength && areNodesEqual(xNormEl, scsElement)) {
  73        if (yIndex < yLength && areNodesEqual(yNormEl, scsElement)) {
  74          promises.push(prepareStylePromise(xElement));
  75          yIndex++;
  76        }
  77        xIndex++;
  78      } else {
  79        promises.push(prepareStylePromise(yElement));
  80        if (xIndex < xLength) {
  81          xElement.before(yElement);
  82        } else {
  83          last.after(yElement);
  84          last = yElement;
  85        }
  86        yIndex++;
  87      }
  88    }
  89    return promises;
  90  }
  91  var stylePromiseCache = /* @__PURE__ */ new WeakMap();
  92  var prepareStylePromise = (element) => {
  93    if (stylePromiseCache.has(element)) {
  94      return stylePromiseCache.get(element);
  95    }
  96    if (window.document.contains(element) && element.media !== "preload") {
  97      const promise2 = Promise.resolve(element);
  98      stylePromiseCache.set(element, promise2);
  99      return promise2;
 100    }
 101    if (element.hasAttribute("media") && element.media !== "all") {
 102      element.dataset.originalMedia = element.media;
 103    }
 104    element.media = "preload";
 105    if (element instanceof HTMLStyleElement) {
 106      const promise2 = Promise.resolve(element);
 107      stylePromiseCache.set(element, promise2);
 108      return promise2;
 109    }
 110    const promise = new Promise((resolve2, reject) => {
 111      element.addEventListener("load", () => resolve2(element));
 112      element.addEventListener("error", (event) => {
 113        const { href } = event.target;
 114        reject(
 115          Error(
 116            `The style sheet with the following URL failed to load: $href}`
 117          )
 118        );
 119      });
 120    });
 121    stylePromiseCache.set(element, promise);
 122    return promise;
 123  };
 124  var styleSheetCache = /* @__PURE__ */ new Map();
 125  var preloadStyles = (doc, url) => {
 126    if (!styleSheetCache.has(url)) {
 127      const currentStyleElements = Array.from(
 128        window.document.querySelectorAll(
 129          "style,link[rel=stylesheet]"
 130        )
 131      );
 132      const newStyleElements = Array.from(
 133        doc.querySelectorAll("style,link[rel=stylesheet]")
 134      );
 135      const stylePromises = updateStylesWithSCS(
 136        currentStyleElements,
 137        newStyleElements
 138      );
 139      styleSheetCache.set(url, stylePromises);
 140    }
 141    return styleSheetCache.get(url);
 142  };
 143  var applyStyles = (styles) => {
 144    window.document.querySelectorAll("style,link[rel=stylesheet]").forEach((el) => {
 145      if (el.sheet) {
 146        if (styles.includes(el)) {
 147          if (el.sheet.media.mediaText === "preload") {
 148            const { originalMedia = "all" } = el.dataset;
 149            el.sheet.media.mediaText = originalMedia;
 150          }
 151          el.sheet.disabled = false;
 152        } else {
 153          el.sheet.disabled = true;
 154        }
 155      }
 156    });
 157  };
 158  
 159  // packages/interactivity-router/build-module/assets/dynamic-importmap/resolver.js
 160  var backslashRegEx = /\\/g;
 161  function isURL(url) {
 162    if (url.indexOf(":") === -1) {
 163      return false;
 164    }
 165    try {
 166      new URL(url);
 167      return true;
 168    } catch (_) {
 169      return false;
 170    }
 171  }
 172  function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
 173    const hIdx = parentUrl.indexOf("#"), qIdx = parentUrl.indexOf("?");
 174    if (hIdx + qIdx > -2) {
 175      parentUrl = parentUrl.slice(
 176        0,
 177        // eslint-disable-next-line no-nested-ternary
 178        hIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx
 179      );
 180    }
 181    if (relUrl.indexOf("\\") !== -1) {
 182      relUrl = relUrl.replace(backslashRegEx, "/");
 183    }
 184    if (relUrl[0] === "/" && relUrl[1] === "/") {
 185      return parentUrl.slice(0, parentUrl.indexOf(":") + 1) + relUrl;
 186    } else if (relUrl[0] === "." && (relUrl[1] === "/" || relUrl[1] === "." && (relUrl[2] === "/" || relUrl.length === 2 && (relUrl += "/")) || relUrl.length === 1 && (relUrl += "/")) || relUrl[0] === "/") {
 187      const parentProtocol = parentUrl.slice(
 188        0,
 189        parentUrl.indexOf(":") + 1
 190      );
 191      let pathname;
 192      if (parentUrl[parentProtocol.length + 1] === "/") {
 193        if (parentProtocol !== "file:") {
 194          pathname = parentUrl.slice(parentProtocol.length + 2);
 195          pathname = pathname.slice(pathname.indexOf("/") + 1);
 196        } else {
 197          pathname = parentUrl.slice(8);
 198        }
 199      } else {
 200        pathname = parentUrl.slice(
 201          parentProtocol.length + (parentUrl[parentProtocol.length] === "/")
 202        );
 203      }
 204      if (relUrl[0] === "/") {
 205        return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
 206      }
 207      const segmented = pathname.slice(0, pathname.lastIndexOf("/") + 1) + relUrl;
 208      const output = [];
 209      let segmentIndex = -1;
 210      for (let i = 0; i < segmented.length; i++) {
 211        if (segmentIndex !== -1) {
 212          if (segmented[i] === "/") {
 213            output.push(segmented.slice(segmentIndex, i + 1));
 214            segmentIndex = -1;
 215          }
 216          continue;
 217        } else if (segmented[i] === ".") {
 218          if (segmented[i + 1] === "." && (segmented[i + 2] === "/" || i + 2 === segmented.length)) {
 219            output.pop();
 220            i += 2;
 221            continue;
 222          } else if (segmented[i + 1] === "/" || i + 1 === segmented.length) {
 223            i += 1;
 224            continue;
 225          }
 226        }
 227        while (segmented[i] === "/") {
 228          i++;
 229        }
 230        segmentIndex = i;
 231      }
 232      if (segmentIndex !== -1) {
 233        output.push(segmented.slice(segmentIndex));
 234      }
 235      return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join("");
 236    }
 237  }
 238  function resolveUrl(relUrl, parentUrl) {
 239    return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (isURL(relUrl) ? relUrl : resolveIfNotPlainOrUrl("./" + relUrl, parentUrl));
 240  }
 241  function getMatch(path, matchObj) {
 242    if (matchObj[path]) {
 243      return path;
 244    }
 245    let sepIndex = path.length;
 246    do {
 247      const segment = path.slice(0, sepIndex + 1);
 248      if (segment in matchObj) {
 249        return segment;
 250      }
 251    } while ((sepIndex = path.lastIndexOf("/", sepIndex - 1)) !== -1);
 252  }
 253  function applyPackages(id, packages) {
 254    const pkgName = getMatch(id, packages);
 255    if (pkgName) {
 256      const pkg = packages[pkgName];
 257      if (pkg === null) {
 258        return;
 259      }
 260      return pkg + id.slice(pkgName.length);
 261    }
 262  }
 263  function resolveImportMap(importMap2, resolvedOrPlain, parentUrl) {
 264    let scopeUrl = parentUrl && getMatch(parentUrl, importMap2.scopes);
 265    while (scopeUrl) {
 266      const packageResolution = applyPackages(
 267        resolvedOrPlain,
 268        importMap2.scopes[scopeUrl]
 269      );
 270      if (packageResolution) {
 271        return packageResolution;
 272      }
 273      scopeUrl = getMatch(
 274        scopeUrl.slice(0, scopeUrl.lastIndexOf("/")),
 275        importMap2.scopes
 276      );
 277    }
 278    return applyPackages(resolvedOrPlain, importMap2.imports) || resolvedOrPlain.indexOf(":") !== -1 && resolvedOrPlain;
 279  }
 280  function resolveAndComposePackages(packages, outPackages, baseUrl22, parentMap) {
 281    for (const p in packages) {
 282      const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl22) || p;
 283      const target = packages[p];
 284      if (typeof target !== "string") {
 285        continue;
 286      }
 287      const mapped = resolveImportMap(
 288        parentMap,
 289        resolveIfNotPlainOrUrl(target, baseUrl22) || target,
 290        baseUrl22
 291      );
 292      if (mapped) {
 293        outPackages[resolvedLhs] = mapped;
 294        continue;
 295      }
 296    }
 297  }
 298  function resolveAndComposeImportMap(json, baseUrl22, parentMap) {
 299    const outMap = {
 300      imports: Object.assign({}, parentMap.imports),
 301      scopes: Object.assign({}, parentMap.scopes)
 302    };
 303    if (json.imports) {
 304      resolveAndComposePackages(
 305        json.imports,
 306        outMap.imports,
 307        baseUrl22,
 308        parentMap
 309      );
 310    }
 311    if (json.scopes) {
 312      for (const s in json.scopes) {
 313        const resolvedScope = resolveUrl(s, baseUrl22);
 314        resolveAndComposePackages(
 315          json.scopes[s],
 316          outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}),
 317          baseUrl22,
 318          parentMap
 319        );
 320      }
 321    }
 322    return outMap;
 323  }
 324  var importMap = { imports: {}, scopes: {} };
 325  var baseUrl = document.baseURI;
 326  var pageBaseUrl = baseUrl;
 327  function addImportMap(importMapIn) {
 328    importMap = resolveAndComposeImportMap(
 329      importMapIn,
 330      pageBaseUrl,
 331      importMap
 332    );
 333  }
 334  function resolve(id, parentUrl) {
 335    const urlResolved = resolveIfNotPlainOrUrl(id, parentUrl);
 336    return resolveImportMap(importMap, urlResolved || id, parentUrl) || id;
 337  }
 338  
 339  // node_modules/es-module-lexer/dist/lexer.js
 340  var ImportType;
 341  !(function(A2) {
 342    A2[A2.Static = 1] = "Static", A2[A2.Dynamic = 2] = "Dynamic", A2[A2.ImportMeta = 3] = "ImportMeta", A2[A2.StaticSourcePhase = 4] = "StaticSourcePhase", A2[A2.DynamicSourcePhase = 5] = "DynamicSourcePhase";
 343  })(ImportType || (ImportType = {}));
 344  var A = 1 === new Uint8Array(new Uint16Array([1]).buffer)[0];
 345  function parse(E2, g = "@") {
 346    if (!C) return init.then((() => parse(E2)));
 347    const I = E2.length + 1, w = (C.__heap_base.value || C.__heap_base) + 4 * I - C.memory.buffer.byteLength;
 348    w > 0 && C.memory.grow(Math.ceil(w / 65536));
 349    const K = C.sa(I - 1);
 350    if ((A ? B : Q)(E2, new Uint16Array(C.memory.buffer, K, I)), !C.parse()) throw Object.assign(new Error(`Parse error $g}:$E2.slice(0, C.e()).split("\n").length}:$C.e() - E2.lastIndexOf("\n", C.e() - 1)}`), { idx: C.e() });
 351    const D = [], o = [];
 352    for (; C.ri(); ) {
 353      const A2 = C.is(), Q2 = C.ie(), B2 = C.it(), g2 = C.ai(), I2 = C.id(), w2 = C.ss(), K2 = C.se();
 354      let o2;
 355      C.ip() && (o2 = k(E2.slice(-1 === I2 ? A2 - 1 : A2, -1 === I2 ? Q2 + 1 : Q2))), D.push({ n: o2, t: B2, s: A2, e: Q2, ss: w2, se: K2, d: I2, a: g2 });
 356    }
 357    for (; C.re(); ) {
 358      const A2 = C.es(), Q2 = C.ee(), B2 = C.els(), g2 = C.ele(), I2 = E2.slice(A2, Q2), w2 = I2[0], K2 = B2 < 0 ? void 0 : E2.slice(B2, g2), D2 = K2 ? K2[0] : "";
 359      o.push({ s: A2, e: Q2, ls: B2, le: g2, n: '"' === w2 || "'" === w2 ? k(I2) : I2, ln: '"' === D2 || "'" === D2 ? k(K2) : K2 });
 360    }
 361    function k(A2) {
 362      try {
 363        return (0, eval)(A2);
 364      } catch (A3) {
 365      }
 366    }
 367    return [D, o, !!C.f(), !!C.ms()];
 368  }
 369  function Q(A2, Q2) {
 370    const B2 = A2.length;
 371    let C2 = 0;
 372    for (; C2 < B2; ) {
 373      const B3 = A2.charCodeAt(C2);
 374      Q2[C2++] = (255 & B3) << 8 | B3 >>> 8;
 375    }
 376  }
 377  function B(A2, Q2) {
 378    const B2 = A2.length;
 379    let C2 = 0;
 380    for (; C2 < B2; ) Q2[C2] = A2.charCodeAt(C2++);
 381  }
 382  var C;
 383  var init = WebAssembly.compile((E = "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", "undefined" != typeof Buffer ? Buffer.from(E, "base64") : Uint8Array.from(atob(E), ((A2) => A2.charCodeAt(0))))).then(WebAssembly.instantiate).then((({ exports: A2 }) => {
 384    C = A2;
 385  }));
 386  var E;
 387  
 388  // packages/interactivity-router/build-module/assets/dynamic-importmap/fetch.js
 389  var fetching = (url, parent) => {
 390    return ` fetching $url}$parent ? ` from $parent}` : ""}`;
 391  };
 392  var jsContentType = /^(text|application)\/(x-)?javascript(;|$)/;
 393  async function fetchModule(url, fetchOpts, parent) {
 394    let res;
 395    try {
 396      res = await fetch(url, fetchOpts);
 397    } catch (e) {
 398      throw Error(`Network error$fetching(url, parent)}.`);
 399    }
 400    if (!res.ok) {
 401      throw Error(`Error $res.status}$fetching(url, parent)}.`);
 402    }
 403    const contentType = res.headers.get("content-type");
 404    if (!jsContentType.test(contentType)) {
 405      throw Error(
 406        `Bad Content-Type "$contentType}"$fetching(url, parent)}.`
 407      );
 408    }
 409    return { responseUrl: res.url, source: await res.text() };
 410  }
 411  
 412  // packages/interactivity-router/build-module/assets/dynamic-importmap/loader.js
 413  var initPromise = init;
 414  var initialImportMapElement = window.document.querySelector(
 415    "script#wp-importmap[type=importmap]"
 416  );
 417  var initialImportMap = initialImportMapElement ? JSON.parse(initialImportMapElement.text) : { imports: {}, scopes: {} };
 418  var skip = (id) => Object.keys(initialImportMap.imports).includes(id);
 419  var fetchCache = {};
 420  var registry = {};
 421  Object.keys(initialImportMap.imports).forEach((id) => {
 422    registry[id] = {
 423      blobUrl: id
 424    };
 425  });
 426  async function loadAll(load, seen) {
 427    if (load.blobUrl || seen[load.url]) {
 428      return;
 429    }
 430    seen[load.url] = 1;
 431    await load.linkPromise;
 432    await Promise.all(load.deps.map((dep) => loadAll(dep, seen)));
 433  }
 434  function urlJsString(url) {
 435    return `'$url.replace(/'/g, "\\'")}'`;
 436  }
 437  var createBlob = (source, type = "text/javascript") => URL.createObjectURL(new Blob([source], { type }));
 438  function resolveDeps(load, seen) {
 439    if (load.blobUrl || !seen[load.url]) {
 440      return;
 441    }
 442    seen[load.url] = 0;
 443    for (const dep of load.deps) {
 444      resolveDeps(dep, seen);
 445    }
 446    const [imports, exports] = load.analysis;
 447    const source = load.source;
 448    let resolvedSource = "";
 449    if (!imports.length) {
 450      resolvedSource += source;
 451    } else {
 452      let pushStringTo = function(originalIndex) {
 453        while (dynamicImportEndStack.length && dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) {
 454          const dynamicImportEnd = dynamicImportEndStack.pop();
 455          resolvedSource += `$source.slice(
 456            lastIndex,
 457            dynamicImportEnd
 458          )}, $urlJsString(load.responseUrl)}`;
 459          lastIndex = dynamicImportEnd;
 460        }
 461        resolvedSource += source.slice(lastIndex, originalIndex);
 462        lastIndex = originalIndex;
 463      };
 464      let lastIndex = 0;
 465      let depIndex = 0;
 466      const dynamicImportEndStack = [];
 467      for (const {
 468        s: start,
 469        ss: statementStart,
 470        se: statementEnd,
 471        d: dynamicImportIndex
 472      } of imports) {
 473        if (dynamicImportIndex === -1) {
 474          const depLoad = load.deps[depIndex++];
 475          let blobUrl = depLoad.blobUrl;
 476          const cycleShell = !blobUrl;
 477          if (cycleShell) {
 478            if (!(blobUrl = depLoad.shellUrl)) {
 479              blobUrl = depLoad.shellUrl = createBlob(
 480                `export function u$_(m){$depLoad.analysis[1].map(({ s, e }, i) => {
 481                  const q = depLoad.source[s] === '"' || depLoad.source[s] === "'";
 482                  return `e$_$i}=m$q ? `[` : "."}$depLoad.source.slice(s, e)}$q ? `]` : ""}`;
 483                }).join(",")}}$depLoad.analysis[1].length ? `let $depLoad.analysis[1].map((_, i) => `e$_$i}`).join(",")};` : ""}export {$depLoad.analysis[1].map(
 484                  ({ s, e }, i) => `e$_$i} as $depLoad.source.slice(
 485                    s,
 486                    e
 487                  )}`
 488                ).join(",")}}
 489  //# sourceURL=${depLoad.responseUrl}?cycle`
 490              );
 491            }
 492          }
 493          pushStringTo(start - 1);
 494          resolvedSource += `/*${source.slice(
 495            start - 1,
 496            statementEnd
 497          )}*/$urlJsString(blobUrl)}`;
 498          if (!cycleShell && depLoad.shellUrl) {
 499            resolvedSource += `;import*as m$_$depIndex} from'$depLoad.blobUrl}';import{u$_ as u$_$depIndex}}from'$depLoad.shellUrl}';u$_$depIndex}(m$_$depIndex})`;
 500            depLoad.shellUrl = void 0;
 501          }
 502          lastIndex = statementEnd;
 503        } else if (dynamicImportIndex === -2) {
 504          throw Error("The import.meta property is not supported.");
 505        } else {
 506          pushStringTo(statementStart);
 507          resolvedSource += `wpInteractivityRouterImport(`;
 508          dynamicImportEndStack.push(statementEnd - 1);
 509          lastIndex = start;
 510        }
 511      }
 512      if (load.shellUrl) {
 513        resolvedSource += `
 514  ;import{u$_}from'$load.shellUrl}';try{u$_({$exports.filter((e) => e.ln).map(({ s, e, ln }) => `$source.slice(s, e)}:$ln}`).join(",")}})}catch(_){};
 515  `;
 516      }
 517      pushStringTo(source.length);
 518    }
 519    let hasSourceURL = false;
 520    resolvedSource = resolvedSource.replace(
 521      sourceMapURLRegEx,
 522      (match, isMapping, url) => {
 523        hasSourceURL = !isMapping;
 524        return match.replace(
 525          url,
 526          () => new URL(url, load.responseUrl).toString()
 527        );
 528      }
 529    );
 530    if (!hasSourceURL) {
 531      resolvedSource += "\n//# sourceURL=" + load.responseUrl;
 532    }
 533    load.blobUrl = createBlob(resolvedSource);
 534    load.source = void 0;
 535  }
 536  var sourceMapURLRegEx = /\n\/\/# source(Mapping)?URL=([^\n]+)\s*((;|\/\/[^#][^\n]*)\s*)*$/;
 537  function getOrCreateLoad(url, fetchOpts, parent) {
 538    let load = registry[url];
 539    if (load) {
 540      return load;
 541    }
 542    load = { url };
 543    if (registry[url]) {
 544      let i = 0;
 545      while (registry[load.url + ++i]) {
 546      }
 547      load.url += i;
 548    }
 549    registry[load.url] = load;
 550    load.fetchPromise = (async () => {
 551      let source;
 552      ({ responseUrl: load.responseUrl, source } = await (fetchCache[url] || fetchModule(url, fetchOpts, parent)));
 553      try {
 554        load.analysis = parse(source, load.url);
 555      } catch (e) {
 556        console.error(e);
 557        load.analysis = [[], [], false, false];
 558      }
 559      load.source = source;
 560      return load;
 561    })();
 562    load.linkPromise = load.fetchPromise.then(async () => {
 563      let childFetchOpts = fetchOpts;
 564      load.deps = (await Promise.all(
 565        load.analysis[0].map(async ({ n, d }) => {
 566          if (d !== -1 || !n) {
 567            return void 0;
 568          }
 569          const responseUrl = resolve(
 570            n,
 571            load.responseUrl || load.url
 572          );
 573          if (skip && skip(responseUrl)) {
 574            return { blobUrl: responseUrl };
 575          }
 576          if (childFetchOpts.integrity) {
 577            childFetchOpts = {
 578              ...childFetchOpts,
 579              integrity: void 0
 580            };
 581          }
 582          return getOrCreateLoad(
 583            responseUrl,
 584            childFetchOpts,
 585            load.responseUrl
 586          ).fetchPromise;
 587        })
 588      )).filter((l) => l);
 589    });
 590    return load;
 591  }
 592  var dynamicImport = (u) => import(
 593    /* webpackIgnore: true */
 594    u
 595  );
 596  async function preloadModule(url, fetchOpts) {
 597    await initPromise;
 598    const load = getOrCreateLoad(url, fetchOpts, null);
 599    const seen = {};
 600    await loadAll(load, seen);
 601    resolveDeps(load, seen);
 602    await Promise.resolve();
 603    return load;
 604  }
 605  async function importPreloadedModule(load) {
 606    const module = await dynamicImport(load.blobUrl);
 607    if (load.shellUrl) {
 608      (await dynamicImport(load.shellUrl)).u$_(module);
 609    }
 610    return module;
 611  }
 612  async function topLevelLoad(url, fetchOpts) {
 613    const load = await preloadModule(url, fetchOpts);
 614    return importPreloadedModule(load);
 615  }
 616  
 617  // packages/interactivity-router/build-module/assets/dynamic-importmap/index.js
 618  var baseUrl2 = document.baseURI;
 619  var pageBaseUrl2 = baseUrl2;
 620  Object.defineProperty(self, "wpInteractivityRouterImport", {
 621    value: importShim,
 622    writable: false,
 623    enumerable: false,
 624    configurable: false
 625  });
 626  async function importShim(id) {
 627    await initPromise;
 628    return topLevelLoad(resolve(id, pageBaseUrl2), {
 629      credentials: "same-origin"
 630    });
 631  }
 632  async function preloadWithMap(id, importMapIn) {
 633    addImportMap(importMapIn);
 634    await initPromise;
 635    return preloadModule(resolve(id, pageBaseUrl2), {
 636      credentials: "same-origin"
 637    });
 638  }
 639  
 640  // packages/interactivity-router/build-module/assets/script-modules.js
 641  var resolvedScriptModules = /* @__PURE__ */ new Set();
 642  var markScriptModuleAsResolved = (url) => {
 643    resolvedScriptModules.add(url);
 644  };
 645  var preloadScriptModules = (doc) => {
 646    const importMapElement = doc.querySelector(
 647      "script#wp-importmap[type=importmap]"
 648    );
 649    const importMap2 = importMapElement ? JSON.parse(importMapElement.text) : { imports: {}, scopes: {} };
 650    for (const key in initialImportMap.imports) {
 651      delete importMap2.imports[key];
 652    }
 653    const moduleUrls = [
 654      ...doc.querySelectorAll(
 655        "script[type=module][src][data-wp-router-options]"
 656      )
 657    ].filter((script) => {
 658      try {
 659        const parsed = JSON.parse(
 660          script.getAttribute("data-wp-router-options")
 661        );
 662        return parsed?.loadOnClientNavigation === true;
 663      } catch {
 664        return false;
 665      }
 666    }).map((script) => script.src);
 667    return moduleUrls.filter((url) => !resolvedScriptModules.has(url)).map((url) => preloadWithMap(url, importMap2));
 668  };
 669  var importScriptModules = (modules) => Promise.all(modules.map((m) => importPreloadedModule(m)));
 670  
 671  // packages/interactivity-router/build-module/index.js
 672  var {
 673    getRegionRootFragment,
 674    initialVdom,
 675    toVdom,
 676    render,
 677    parseServerData,
 678    populateServerData,
 679    batch,
 680    routerRegions,
 681    cloneElement,
 682    navigationSignal
 683  } = privateApis(
 684    "I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WordPress."
 685  );
 686  var regionAttr = `data-wp-router-region`;
 687  var interactiveAttr = `data-wp-interactive`;
 688  var regionsSelector = `[$interactiveAttr}][$regionAttr}], [$interactiveAttr}] [$interactiveAttr}][$regionAttr}]`;
 689  var pages = /* @__PURE__ */ new Map();
 690  var getPagePath = (url) => {
 691    const u = new URL(url, window.location.href);
 692    return u.pathname + u.search;
 693  };
 694  var parseRegionAttribute = (region) => {
 695    const value = region.getAttribute(regionAttr);
 696    try {
 697      const { id, attachTo } = JSON.parse(value);
 698      return { id, attachTo };
 699    } catch (e) {
 700      return { id: value };
 701    }
 702  };
 703  var cloneRouterRegionContent = (vdom) => {
 704    if (!vdom) {
 705      return vdom;
 706    }
 707    const allPriorityLevels = vdom.props.priorityLevels;
 708    const routerRegionLevel = allPriorityLevels.findIndex(
 709      (level) => level.includes("router-region")
 710    );
 711    const priorityLevels = routerRegionLevel !== -1 ? allPriorityLevels.slice(routerRegionLevel + 1) : allPriorityLevels;
 712    return priorityLevels.length > 0 ? cloneElement(vdom, {
 713      ...vdom.props,
 714      priorityLevels
 715    }) : vdom.props.element;
 716  };
 717  var regionsToAttachByParent = /* @__PURE__ */ new WeakMap();
 718  var rootFragmentsByParent = /* @__PURE__ */ new WeakMap();
 719  var fetchPage = async (url, { html }) => {
 720    try {
 721      if (!html) {
 722        const res = await window.fetch(url);
 723        if (res.status !== 200) {
 724          return false;
 725        }
 726        html = await res.text();
 727      }
 728      const dom = new window.DOMParser().parseFromString(html, "text/html");
 729      return await preparePage(url, dom);
 730    } catch (e) {
 731      return false;
 732    }
 733  };
 734  var preparePage = async (url, dom, { vdom } = {}) => {
 735    dom.querySelectorAll("noscript").forEach((el) => el.remove());
 736    const regions = {};
 737    const regionsToAttach = {};
 738    dom.querySelectorAll(regionsSelector).forEach((region) => {
 739      const { id, attachTo } = parseRegionAttribute(region);
 740      if (region.parentElement.closest(`[$regionAttr}]`)) {
 741        regions[id] = void 0;
 742      } else {
 743        regions[id] = vdom?.has(region) ? vdom.get(region) : toVdom(region);
 744      }
 745      if (attachTo) {
 746        regionsToAttach[id] = attachTo;
 747      }
 748    });
 749    const title = dom.querySelector("title")?.innerText;
 750    const initialData = parseServerData(dom);
 751    const [styles, scriptModules] = await Promise.all([
 752      Promise.all(preloadStyles(dom, url)),
 753      Promise.all(preloadScriptModules(dom))
 754    ]);
 755    return {
 756      regions,
 757      regionsToAttach,
 758      styles,
 759      scriptModules,
 760      title,
 761      initialData,
 762      url
 763    };
 764  };
 765  var renderPage = (page) => {
 766    applyStyles(page.styles);
 767    const regionsToAttach = { ...page.regionsToAttach };
 768    batch(() => {
 769      populateServerData(page.initialData);
 770      navigationSignal.value += 1;
 771      routerRegions.forEach((signal) => {
 772        signal.value = null;
 773      });
 774      const parentsToUpdate = /* @__PURE__ */ new Set();
 775      for (const id in regionsToAttach) {
 776        const parent = document.querySelector(regionsToAttach[id]);
 777        if (!regionsToAttachByParent.has(parent)) {
 778          regionsToAttachByParent.set(parent, []);
 779        }
 780        const regions = regionsToAttachByParent.get(parent);
 781        if (!regions.includes(id)) {
 782          regions.push(id);
 783          parentsToUpdate.add(parent);
 784        }
 785      }
 786      for (const id in page.regions) {
 787        if (routerRegions.has(id)) {
 788          routerRegions.get(id).value = cloneRouterRegionContent(
 789            page.regions[id]
 790          );
 791        }
 792      }
 793      parentsToUpdate.forEach((parent) => {
 794        const ids = regionsToAttachByParent.get(parent);
 795        const vdoms = ids.map((id) => page.regions[id]);
 796        if (!rootFragmentsByParent.has(parent)) {
 797          const regions = vdoms.map(({ props, type }) => {
 798            const elementType = typeof type === "function" ? props.type : type;
 799            const region = document.createElement(elementType);
 800            parent.appendChild(region);
 801            return region;
 802          });
 803          rootFragmentsByParent.set(
 804            parent,
 805            getRegionRootFragment(regions)
 806          );
 807        }
 808        const fragment = rootFragmentsByParent.get(parent);
 809        render(vdoms, fragment);
 810      });
 811    });
 812    if (page.title) {
 813      document.title = page.title;
 814    }
 815  };
 816  var forcePageReload = (href) => {
 817    window.location.assign(href);
 818    return new Promise(() => {
 819    });
 820  };
 821  window.addEventListener("popstate", async () => {
 822    const pagePath = getPagePath(window.location.href);
 823    const page = pages.has(pagePath) && await pages.get(pagePath);
 824    if (page) {
 825      batch(() => {
 826        state.url = window.location.href;
 827        renderPage(page);
 828      });
 829    } else {
 830      window.location.reload();
 831    }
 832  });
 833  window.document.querySelectorAll("script[type=module][src]").forEach(({ src }) => markScriptModuleAsResolved(src));
 834  pages.set(
 835    getPagePath(window.location.href),
 836    Promise.resolve(
 837      preparePage(getPagePath(window.location.href), document, {
 838        vdom: initialVdom
 839      })
 840    )
 841  );
 842  var navigatingTo = "";
 843  var hasLoadedNavigationTextsData = false;
 844  var navigationTexts = {
 845    loading: "Loading page, please wait.",
 846    loaded: "Page Loaded."
 847  };
 848  var { state, actions } = store("core/router", {
 849    state: {
 850      url: window.location.href,
 851      navigation: {
 852        hasStarted: false,
 853        hasFinished: false
 854      }
 855    },
 856    actions: {
 857      /**
 858       * Navigates to the specified page.
 859       *
 860       * This function normalizes the passed href, fetches the page HTML if
 861       * needed, and updates any interactive regions whose contents have
 862       * changed. It also creates a new entry in the browser session history.
 863       *
 864       * @param href                               The page href.
 865       * @param [options]                          Options object.
 866       * @param [options.force]                    If true, it forces re-fetching the URL.
 867       * @param [options.html]                     HTML string to be used instead of fetching the requested URL.
 868       * @param [options.replace]                  If true, it replaces the current entry in the browser session history.
 869       * @param [options.timeout]                  Time until the navigation is aborted, in milliseconds. Default is 10000.
 870       * @param [options.loadingAnimation]         Whether an animation should be shown while navigating. Default to `true`.
 871       * @param [options.screenReaderAnnouncement] Whether a message for screen readers should be announced while navigating. Default to `true`.
 872       *
 873       * @return  Promise that resolves once the navigation is completed or aborted.
 874       */
 875      *navigate(href, options = {}) {
 876        const { clientNavigationDisabled } = getConfig();
 877        if (clientNavigationDisabled) {
 878          yield forcePageReload(href);
 879        }
 880        const pagePath = getPagePath(href);
 881        const { navigation } = state;
 882        const {
 883          loadingAnimation = true,
 884          screenReaderAnnouncement = true,
 885          timeout = 1e4
 886        } = options;
 887        navigatingTo = href;
 888        actions.prefetch(pagePath, options);
 889        const timeoutPromise = new Promise(
 890          (resolve2) => setTimeout(resolve2, timeout)
 891        );
 892        const loadingTimeout = setTimeout(() => {
 893          if (navigatingTo !== href) {
 894            return;
 895          }
 896          if (loadingAnimation) {
 897            navigation.hasStarted = true;
 898            navigation.hasFinished = false;
 899          }
 900          if (screenReaderAnnouncement) {
 901            a11ySpeak("loading");
 902          }
 903        }, 400);
 904        const page = yield Promise.race([
 905          pages.get(pagePath),
 906          timeoutPromise
 907        ]);
 908        clearTimeout(loadingTimeout);
 909        if (navigatingTo !== href) {
 910          return;
 911        }
 912        if (page && !page.initialData?.config?.["core/router"]?.clientNavigationDisabled) {
 913          yield importScriptModules(page.scriptModules);
 914          batch(() => {
 915            state.url = href;
 916            if (loadingAnimation) {
 917              navigation.hasStarted = false;
 918              navigation.hasFinished = true;
 919            }
 920            renderPage(page);
 921          });
 922          window.history[options.replace ? "replaceState" : "pushState"]({}, "", href);
 923          if (screenReaderAnnouncement) {
 924            a11ySpeak("loaded");
 925          }
 926          const { hash } = new URL(href, window.location.href);
 927          if (hash) {
 928            document.querySelector(hash)?.scrollIntoView();
 929          }
 930        } else {
 931          yield forcePageReload(href);
 932        }
 933      },
 934      /**
 935       * Prefetches the page with the passed URL.
 936       *
 937       * The function normalizes the URL and stores internally the fetch
 938       * promise, to avoid triggering a second fetch for an ongoing request.
 939       *
 940       * @param url             The page URL.
 941       * @param [options]       Options object.
 942       * @param [options.force] Force fetching the URL again.
 943       * @param [options.html]  HTML string to be used instead of fetching the requested URL.
 944       *
 945       * @return  Promise that resolves once the page has been fetched.
 946       */
 947      *prefetch(url, options = {}) {
 948        const { clientNavigationDisabled } = getConfig();
 949        if (clientNavigationDisabled) {
 950          return;
 951        }
 952        const pagePath = getPagePath(url);
 953        if (options.force || !pages.has(pagePath)) {
 954          pages.set(
 955            pagePath,
 956            fetchPage(pagePath, { html: options.html })
 957          );
 958        }
 959        yield pages.get(pagePath);
 960      }
 961    }
 962  });
 963  function a11ySpeak(messageKey) {
 964    if (!hasLoadedNavigationTextsData) {
 965      hasLoadedNavigationTextsData = true;
 966      const content = document.getElementById(
 967        "wp-script-module-data-@wordpress/interactivity-router"
 968      )?.textContent;
 969      if (content) {
 970        try {
 971          const parsed = JSON.parse(content);
 972          if (typeof parsed?.i18n?.loading === "string") {
 973            navigationTexts.loading = parsed.i18n.loading;
 974          }
 975          if (typeof parsed?.i18n?.loaded === "string") {
 976            navigationTexts.loaded = parsed.i18n.loaded;
 977          }
 978        } catch {
 979        }
 980      } else {
 981        if (state.navigation.texts?.loading) {
 982          navigationTexts.loading = state.navigation.texts.loading;
 983        }
 984        if (state.navigation.texts?.loaded) {
 985          navigationTexts.loaded = state.navigation.texts.loaded;
 986        }
 987      }
 988    }
 989    const message = navigationTexts[messageKey];
 990    import("@wordpress/a11y").then(
 991      ({ speak }) => speak(message),
 992      // Ignore failures to load the a11y module.
 993      () => {
 994      }
 995    );
 996  }
 997  export {
 998    actions,
 999    state
1000  };


Generated : Wed Apr 22 08:20:11 2026 Cross-referenced by PHPXref