import * as __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__ from "@wordpress/interactivity"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // EXPORTS __webpack_require__.d(__webpack_exports__, { o: () => (/* binding */ actions), w: () => (/* binding */ state) }); ;// CONCATENATED MODULE: external "@wordpress/interactivity" var x = (y) => { var x = {}; __webpack_require__.d(x, y); return x } var y = (x) => (() => (x)) const interactivity_namespaceObject = x({ ["getConfig"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getConfig), ["privateApis"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.privateApis), ["store"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.store) }); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity-router/build-module/index.js var _getConfig$navigation; /** * WordPress dependencies */ /** * Internal dependencies */ const { directivePrefix, getRegionRootFragment, initialVdom, toVdom, render, parseInitialData, populateInitialData, batch } = (0,interactivity_namespaceObject.privateApis)('I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WordPress.'); // Check if the navigation mode is full page or region based. const navigationMode = (_getConfig$navigation = (0,interactivity_namespaceObject.getConfig)('core/router').navigationMode) !== null && _getConfig$navigation !== void 0 ? _getConfig$navigation : 'regionBased'; // The cache of visited and prefetched pages, stylesheets and scripts. const pages = new Map(); const headElements = new Map(); // Helper to remove domain and hash from the URL. We are only interesting in // caching the path and the query. const getPagePath = url => { const u = new URL(url, window.location.href); return u.pathname + u.search; }; // Fetch a new page and convert it to a static virtual DOM. const fetchPage = async (url, { html }) => { try { if (!html) { const res = await window.fetch(url); if (res.status !== 200) { return false; } html = await res.text(); } const dom = new window.DOMParser().parseFromString(html, 'text/html'); return regionsToVdom(dom); } catch (e) { return false; } }; // Return an object with VDOM trees of those HTML regions marked with a // `router-region` directive. const regionsToVdom = async (dom, { vdom } = {}) => { const regions = { body: undefined }; let head; if (false) {} if (navigationMode === 'regionBased') { const attrName = `data-${directivePrefix}-router-region`; dom.querySelectorAll(`[${attrName}]`).forEach(region => { const id = region.getAttribute(attrName); regions[id] = vdom?.has(region) ? vdom.get(region) : toVdom(region); }); } const title = dom.querySelector('title')?.innerText; const initialData = parseInitialData(dom); return { regions, head, title, initialData }; }; // Render all interactive regions contained in the given page. const renderRegions = page => { batch(() => { if (false) {} if (navigationMode === 'regionBased') { populateInitialData(page.initialData); const attrName = `data-${directivePrefix}-router-region`; document.querySelectorAll(`[${attrName}]`).forEach(region => { const id = region.getAttribute(attrName); const fragment = getRegionRootFragment(region); render(page.regions[id], fragment); }); } if (page.title) { document.title = page.title; } }); }; /** * Load the given page forcing a full page reload. * * The function returns a promise that won't resolve, useful to prevent any * potential feedback indicating that the navigation has finished while the new * page is being loaded. * * @param href The page href. * @return Promise that never resolves. */ const forcePageReload = href => { window.location.assign(href); return new Promise(() => {}); }; // Listen to the back and forward buttons and restore the page if it's in the // cache. window.addEventListener('popstate', async () => { const pagePath = getPagePath(window.location.href); // Remove hash. const page = pages.has(pagePath) && (await pages.get(pagePath)); if (page) { renderRegions(page); // Update the URL in the state. state.url = window.location.href; } else { window.location.reload(); } }); // Initialize the router and cache the initial page using the initial vDOM. // Once this code is tested and more mature, the head should be updated for // region based navigation as well. if (false) {} pages.set(getPagePath(window.location.href), Promise.resolve(regionsToVdom(document, { vdom: initialVdom }))); // Check if the link is valid for client-side navigation. const isValidLink = ref => ref && ref instanceof window.HTMLAnchorElement && ref.href && (!ref.target || ref.target === '_self') && ref.origin === window.location.origin && !ref.pathname.startsWith('/wp-admin') && !ref.pathname.startsWith('/wp-login.php') && !ref.getAttribute('href').startsWith('#') && !new URL(ref.href).searchParams.has('_wpnonce'); // Check if the event is valid for client-side navigation. const isValidEvent = event => event && event.button === 0 && // Left clicks only. !event.metaKey && // Open in new tab (Mac). !event.ctrlKey && // Open in new tab (Windows). !event.altKey && // Download. !event.shiftKey && !event.defaultPrevented; // Variable to store the current navigation. let navigatingTo = ''; const { state, actions } = (0,interactivity_namespaceObject.store)('core/router', { state: { url: window.location.href, navigation: { hasStarted: false, hasFinished: false, texts: { loading: '', loaded: '' }, message: '' } }, actions: { /** * Navigates to the specified page. * * This function normalizes the passed href, fetchs the page HTML if * needed, and updates any interactive regions whose contents have * changed. It also creates a new entry in the browser session history. * * @param href The page href. * @param [options] Options object. * @param [options.force] If true, it forces re-fetching the URL. * @param [options.html] HTML string to be used instead of fetching the requested URL. * @param [options.replace] If true, it replaces the current entry in the browser session history. * @param [options.timeout] Time until the navigation is aborted, in milliseconds. Default is 10000. * @param [options.loadingAnimation] Whether an animation should be shown while navigating. Default to `true`. * @param [options.screenReaderAnnouncement] Whether a message for screen readers should be announced while navigating. Default to `true`. * * @return Promise that resolves once the navigation is completed or aborted. */ *navigate(href, options = {}) { const { clientNavigationDisabled } = (0,interactivity_namespaceObject.getConfig)(); if (clientNavigationDisabled) { yield forcePageReload(href); } const pagePath = getPagePath(href); const { navigation } = state; const { loadingAnimation = true, screenReaderAnnouncement = true, timeout = 10000 } = options; navigatingTo = href; actions.prefetch(pagePath, options); // Create a promise that resolves when the specified timeout ends. // The timeout value is 10 seconds by default. const timeoutPromise = new Promise(resolve => setTimeout(resolve, timeout)); // Don't update the navigation status immediately, wait 400 ms. const loadingTimeout = setTimeout(() => { if (navigatingTo !== href) { return; } if (loadingAnimation) { navigation.hasStarted = true; navigation.hasFinished = false; } if (screenReaderAnnouncement) { navigation.message = navigation.texts.loading; } }, 400); const page = yield Promise.race([pages.get(pagePath), timeoutPromise]); // Dismiss loading message if it hasn't been added yet. clearTimeout(loadingTimeout); // Once the page is fetched, the destination URL could have changed // (e.g., by clicking another link in the meantime). If so, bail // out, and let the newer execution to update the HTML. if (navigatingTo !== href) { return; } if (page && !page.initialData?.config?.['core/router']?.clientNavigationDisabled) { yield renderRegions(page); window.history[options.replace ? 'replaceState' : 'pushState']({}, '', href); // Update the URL in the state. state.url = href; // Update the navigation status once the the new page rendering // has been completed. if (loadingAnimation) { navigation.hasStarted = false; navigation.hasFinished = true; } if (screenReaderAnnouncement) { // Announce that the page has been loaded. If the message is the // same, we use a no-break space similar to the @wordpress/a11y // package: https://github.com/WordPress/gutenberg/blob/c395242b8e6ee20f8b06c199e4fc2920d7018af1/packages/a11y/src/filter-message.js#L20-L26 navigation.message = navigation.texts.loaded + (navigation.message === navigation.texts.loaded ? '\u00A0' : ''); } // Scroll to the anchor if exits in the link. const { hash } = new URL(href, window.location.href); if (hash) { document.querySelector(hash)?.scrollIntoView(); } } else { yield forcePageReload(href); } }, /** * Prefetchs the page with the passed URL. * * The function normalizes the URL and stores internally the fetch * promise, to avoid triggering a second fetch for an ongoing request. * * @param url The page URL. * @param [options] Options object. * @param [options.force] Force fetching the URL again. * @param [options.html] HTML string to be used instead of fetching the requested URL. */ prefetch(url, options = {}) { const { clientNavigationDisabled } = (0,interactivity_namespaceObject.getConfig)(); if (clientNavigationDisabled) { return; } const pagePath = getPagePath(url); if (options.force || !pages.has(pagePath)) { pages.set(pagePath, fetchPage(pagePath, { html: options.html })); } } } }); // Add click and prefetch to all links. if (false) {} var __webpack_exports__actions = __webpack_exports__.o; var __webpack_exports__state = __webpack_exports__.w; export { __webpack_exports__actions as actions, __webpack_exports__state as state };
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
development | Folder | 0755 |
|
|
script-modules | Folder | 0755 |
|
|
vendor | Folder | 0755 |
|
|
.htaccess | File | 420 B | 0644 |
|
a11y.js | File | 8.53 KB | 0644 |
|
a11y.min.js | File | 2.3 KB | 0644 |
|
annotations.js | File | 23 KB | 0644 |
|
annotations.min.js | File | 5.39 KB | 0644 |
|
api-fetch.js | File | 22.97 KB | 0644 |
|
api-fetch.min.js | File | 5.41 KB | 0644 |
|
autop.js | File | 15.61 KB | 0644 |
|
autop.min.js | File | 5.48 KB | 0644 |
|
blob.js | File | 4.51 KB | 0644 |
|
blob.min.js | File | 1.08 KB | 0644 |
|
block-directory.js | File | 80.13 KB | 0644 |
|
block-directory.min.js | File | 20.37 KB | 0644 |
|
block-editor.js | File | 2.53 MB | 0644 |
|
block-editor.min.js | File | 822.62 KB | 0644 |
|
block-library.js | File | 2.06 MB | 0644 |
|
block-library.min.js | File | 823.01 KB | 0644 |
|
block-serialization-default-parser.js | File | 14.87 KB | 0644 |
|
block-serialization-default-parser.min.js | File | 2.34 KB | 0644 |
|
blocks.js | File | 553.47 KB | 0644 |
|
blocks.min.js | File | 169.02 KB | 0644 |
|
commands.js | File | 179.91 KB | 0644 |
|
commands.min.js | File | 48.33 KB | 0644 |
|
components.js | File | 2.24 MB | 0644 |
|
components.min.js | File | 689.17 KB | 0644 |
|
compose.js | File | 198.51 KB | 0644 |
|
compose.min.js | File | 36.24 KB | 0644 |
|
core-commands.js | File | 25 KB | 0644 |
|
core-commands.min.js | File | 9.2 KB | 0644 |
|
core-data.js | File | 260.07 KB | 0644 |
|
core-data.min.js | File | 63.13 KB | 0644 |
|
customize-widgets.js | File | 97.16 KB | 0644 |
|
customize-widgets.min.js | File | 34.32 KB | 0644 |
|
data-controls.js | File | 7.14 KB | 0644 |
|
data-controls.min.js | File | 1.44 KB | 0644 |
|
data.js | File | 154.68 KB | 0644 |
|
data.min.js | File | 26.46 KB | 0644 |
|
date.js | File | 798.19 KB | 0644 |
|
date.min.js | File | 765.07 KB | 0644 |
|
deprecated.js | File | 4.63 KB | 0644 |
|
deprecated.min.js | File | 684 B | 0644 |
|
dom-ready.js | File | 2.41 KB | 0644 |
|
dom-ready.min.js | File | 457 B | 0644 |
|
dom.js | File | 61.52 KB | 0644 |
|
dom.min.js | File | 12.23 KB | 0644 |
|
edit-post.js | File | 123.61 KB | 0644 |
|
edit-post.min.js | File | 42.03 KB | 0644 |
|
edit-site.js | File | 1.53 MB | 0644 |
|
edit-site.min.js | File | 608.94 KB | 0644 |
|
edit-widgets.js | File | 175.48 KB | 0644 |
|
edit-widgets.min.js | File | 58 KB | 0644 |
|
editor.js | File | 1.01 MB | 0644 |
|
editor.min.js | File | 337.37 KB | 0644 |
|
element.js | File | 66.99 KB | 0644 |
|
element.min.js | File | 11.7 KB | 0644 |
|
escape-html.js | File | 5.9 KB | 0644 |
|
escape-html.min.js | File | 1000 B | 0644 |
|
fields.js | File | 71.98 KB | 0644 |
|
fields.min.js | File | 22.33 KB | 0644 |
|
format-library.js | File | 68.36 KB | 0644 |
|
format-library.min.js | File | 22.39 KB | 0644 |
|
hooks.js | File | 20.43 KB | 0644 |
|
hooks.min.js | File | 4.66 KB | 0644 |
|
html-entities.js | File | 3.62 KB | 0644 |
|
html-entities.min.js | File | 788 B | 0644 |
|
i18n.js | File | 48.74 KB | 0644 |
|
i18n.min.js | File | 8.93 KB | 0644 |
|
interactivity-router.asset.php | File | 84 B | 0644 |
|
interactivity-router.js | File | 11.7 KB | 0644 |
|
interactivity-router.min.asset.php | File | 84 B | 0644 |
|
interactivity-router.min.js | File | 2.96 KB | 0644 |
|
interactivity.js | File | 95.62 KB | 0644 |
|
interactivity.min.js | File | 35.83 KB | 0644 |
|
is-shallow-equal.js | File | 4.25 KB | 0644 |
|
is-shallow-equal.min.js | File | 1018 B | 0644 |
|
keyboard-shortcuts.js | File | 24.21 KB | 0644 |
|
keyboard-shortcuts.min.js | File | 2.95 KB | 0644 |
|
keycodes.js | File | 13.77 KB | 0644 |
|
keycodes.min.js | File | 2.58 KB | 0644 |
|
list-reusable-blocks.js | File | 31.49 KB | 0644 |
|
list-reusable-blocks.min.js | File | 4.8 KB | 0644 |
|
media-utils.js | File | 25.47 KB | 0644 |
|
media-utils.min.js | File | 8.05 KB | 0644 |
|
notices.js | File | 21.64 KB | 0644 |
|
notices.min.js | File | 2.02 KB | 0644 |
|
nux.js | File | 13.29 KB | 0644 |
|
nux.min.js | File | 3.43 KB | 0644 |
|
patterns.js | File | 63.02 KB | 0644 |
|
patterns.min.js | File | 20.89 KB | 0644 |
|
plugins.js | File | 17.72 KB | 0644 |
|
plugins.min.js | File | 4.05 KB | 0644 |
|
preferences-persistence.js | File | 29.58 KB | 0644 |
|
preferences-persistence.min.js | File | 5.49 KB | 0644 |
|
preferences.js | File | 25.71 KB | 0644 |
|
preferences.min.js | File | 6.92 KB | 0644 |
|
primitives.js | File | 6.73 KB | 0644 |
|
primitives.min.js | File | 1.62 KB | 0644 |
|
priority-queue.js | File | 13.91 KB | 0644 |
|
priority-queue.min.js | File | 3.3 KB | 0644 |
|
private-apis.js | File | 8.68 KB | 0644 |
|
private-apis.min.js | File | 2.74 KB | 0644 |
|
redux-routine.js | File | 23.42 KB | 0644 |
|
redux-routine.min.js | File | 8.69 KB | 0644 |
|
reusable-blocks.js | File | 20.39 KB | 0644 |
|
reusable-blocks.min.js | File | 5.97 KB | 0644 |
|
rich-text.js | File | 115.42 KB | 0644 |
|
rich-text.min.js | File | 29.11 KB | 0644 |
|
router.js | File | 26.29 KB | 0644 |
|
router.min.js | File | 4.29 KB | 0644 |
|
server-side-render.js | File | 14.61 KB | 0644 |
|
server-side-render.min.js | File | 4.28 KB | 0644 |
|
shortcode.js | File | 14.92 KB | 0644 |
|
shortcode.min.js | File | 2.83 KB | 0644 |
|
style-engine.js | File | 39.52 KB | 0644 |
|
style-engine.min.js | File | 5.91 KB | 0644 |
|
token-list.js | File | 5.91 KB | 0644 |
|
token-list.min.js | File | 1.24 KB | 0644 |
|
undo-manager.js | File | 8.22 KB | 0644 |
|
undo-manager.min.js | File | 1.64 KB | 0644 |
|
url.js | File | 34.24 KB | 0644 |
|
url.min.js | File | 8.18 KB | 0644 |
|
viewport.js | File | 10.45 KB | 0644 |
|
viewport.min.js | File | 1.82 KB | 0644 |
|
warning.js | File | 2.43 KB | 0644 |
|
warning.min.js | File | 311 B | 0644 |
|
widgets.js | File | 53.34 KB | 0644 |
|
widgets.min.js | File | 19.68 KB | 0644 |
|
wordcount.js | File | 14.63 KB | 0644 |
|
wordcount.min.js | File | 2.42 KB | 0644 |
|