@wordpress/block-library
Version:
Block library for the WordPress editor.
70 lines (68 loc) • 2.92 kB
JavaScript
var _interactivity = require("@wordpress/interactivity");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /**
* WordPress dependencies
*/
const isValidLink = ref => ref && ref instanceof window.HTMLAnchorElement && ref.href && (!ref.target || ref.target === '_self') && ref.origin === window.location.origin;
const isValidEvent = 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;
(0, _interactivity.store)('core/query', {
actions: {
navigate: (0, _interactivity.withSyncEvent)(function* (event) {
const ctx = (0, _interactivity.getContext)();
const {
ref
} = (0, _interactivity.getElement)();
const queryRef = ref.closest('.wp-block-query[data-wp-router-region]');
if (isValidLink(ref) && isValidEvent(event)) {
event.preventDefault();
const {
actions
} = yield Promise.resolve().then(() => _interopRequireWildcard(require('@wordpress/interactivity-router')));
yield actions.navigate(ref.href);
ctx.url = ref.href;
// Focus the first anchor of the Query block.
const firstAnchor = `.wp-block-post-template a[href]`;
queryRef.querySelector(firstAnchor)?.focus();
}
}),
*prefetch() {
const {
ref
} = (0, _interactivity.getElement)();
if (isValidLink(ref)) {
const {
actions
} = yield Promise.resolve().then(() => _interopRequireWildcard(require('@wordpress/interactivity-router')));
yield actions.prefetch(ref.href);
}
}
},
callbacks: {
*prefetch() {
const {
url
} = (0, _interactivity.getContext)();
const {
ref
} = (0, _interactivity.getElement)();
if (url && isValidLink(ref)) {
const {
actions
} = yield Promise.resolve().then(() => _interopRequireWildcard(require('@wordpress/interactivity-router')));
yield actions.prefetch(ref.href);
}
}
}
}, {
lock: true
});
//# sourceMappingURL=view.js.map
;