first commit
This commit is contained in:
375
wp-includes/js/dist/hooks.js
vendored
Normal file
375
wp-includes/js/dist/hooks.js
vendored
Normal file
@@ -0,0 +1,375 @@
|
||||
"use strict";
|
||||
var wp;
|
||||
(wp ||= {}).hooks = (() => {
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
|
||||
// packages/hooks/build-module/index.mjs
|
||||
var index_exports = {};
|
||||
__export(index_exports, {
|
||||
actions: () => actions,
|
||||
addAction: () => addAction,
|
||||
addFilter: () => addFilter,
|
||||
applyFilters: () => applyFilters,
|
||||
applyFiltersAsync: () => applyFiltersAsync,
|
||||
createHooks: () => createHooks_default,
|
||||
currentAction: () => currentAction,
|
||||
currentFilter: () => currentFilter,
|
||||
defaultHooks: () => defaultHooks,
|
||||
didAction: () => didAction,
|
||||
didFilter: () => didFilter,
|
||||
doAction: () => doAction,
|
||||
doActionAsync: () => doActionAsync,
|
||||
doingAction: () => doingAction,
|
||||
doingFilter: () => doingFilter,
|
||||
filters: () => filters,
|
||||
hasAction: () => hasAction,
|
||||
hasFilter: () => hasFilter,
|
||||
removeAction: () => removeAction,
|
||||
removeAllActions: () => removeAllActions,
|
||||
removeAllFilters: () => removeAllFilters,
|
||||
removeFilter: () => removeFilter
|
||||
});
|
||||
|
||||
// packages/hooks/build-module/validateNamespace.mjs
|
||||
function validateNamespace(namespace) {
|
||||
if ("string" !== typeof namespace || "" === namespace) {
|
||||
console.error("The namespace must be a non-empty string.");
|
||||
return false;
|
||||
}
|
||||
if (!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(namespace)) {
|
||||
console.error(
|
||||
"The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."
|
||||
);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
var validateNamespace_default = validateNamespace;
|
||||
|
||||
// packages/hooks/build-module/validateHookName.mjs
|
||||
function validateHookName(hookName) {
|
||||
if ("string" !== typeof hookName || "" === hookName) {
|
||||
console.error("The hook name must be a non-empty string.");
|
||||
return false;
|
||||
}
|
||||
if (/^__/.test(hookName)) {
|
||||
console.error("The hook name cannot begin with `__`.");
|
||||
return false;
|
||||
}
|
||||
if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) {
|
||||
console.error(
|
||||
"The hook name can only contain numbers, letters, dashes, periods and underscores."
|
||||
);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
var validateHookName_default = validateHookName;
|
||||
|
||||
// packages/hooks/build-module/createAddHook.mjs
|
||||
function createAddHook(hooks, storeKey) {
|
||||
return function addHook(hookName, namespace, callback, priority = 10) {
|
||||
const hooksStore = hooks[storeKey];
|
||||
if (!validateHookName_default(hookName)) {
|
||||
return;
|
||||
}
|
||||
if (!validateNamespace_default(namespace)) {
|
||||
return;
|
||||
}
|
||||
if ("function" !== typeof callback) {
|
||||
console.error("The hook callback must be a function.");
|
||||
return;
|
||||
}
|
||||
if ("number" !== typeof priority) {
|
||||
console.error(
|
||||
"If specified, the hook priority must be a number."
|
||||
);
|
||||
return;
|
||||
}
|
||||
const handler = { callback, priority, namespace };
|
||||
if (hooksStore[hookName]) {
|
||||
const handlers = hooksStore[hookName].handlers;
|
||||
let i;
|
||||
for (i = handlers.length; i > 0; i--) {
|
||||
if (priority >= handlers[i - 1].priority) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i === handlers.length) {
|
||||
handlers[i] = handler;
|
||||
} else {
|
||||
handlers.splice(i, 0, handler);
|
||||
}
|
||||
hooksStore.__current.forEach((hookInfo) => {
|
||||
if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {
|
||||
hookInfo.currentIndex++;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
hooksStore[hookName] = {
|
||||
handlers: [handler],
|
||||
runs: 0
|
||||
};
|
||||
}
|
||||
if (hookName !== "hookAdded") {
|
||||
hooks.doAction(
|
||||
"hookAdded",
|
||||
hookName,
|
||||
namespace,
|
||||
callback,
|
||||
priority
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
var createAddHook_default = createAddHook;
|
||||
|
||||
// packages/hooks/build-module/createRemoveHook.mjs
|
||||
function createRemoveHook(hooks, storeKey, removeAll = false) {
|
||||
return function removeHook(hookName, namespace) {
|
||||
const hooksStore = hooks[storeKey];
|
||||
if (!validateHookName_default(hookName)) {
|
||||
return;
|
||||
}
|
||||
if (!removeAll && !validateNamespace_default(namespace)) {
|
||||
return;
|
||||
}
|
||||
if (!hooksStore[hookName]) {
|
||||
return 0;
|
||||
}
|
||||
let handlersRemoved = 0;
|
||||
if (removeAll) {
|
||||
handlersRemoved = hooksStore[hookName].handlers.length;
|
||||
hooksStore[hookName] = {
|
||||
runs: hooksStore[hookName].runs,
|
||||
handlers: []
|
||||
};
|
||||
} else {
|
||||
const handlers = hooksStore[hookName].handlers;
|
||||
for (let i = handlers.length - 1; i >= 0; i--) {
|
||||
if (handlers[i].namespace === namespace) {
|
||||
handlers.splice(i, 1);
|
||||
handlersRemoved++;
|
||||
hooksStore.__current.forEach((hookInfo) => {
|
||||
if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {
|
||||
hookInfo.currentIndex--;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hookName !== "hookRemoved") {
|
||||
hooks.doAction("hookRemoved", hookName, namespace);
|
||||
}
|
||||
return handlersRemoved;
|
||||
};
|
||||
}
|
||||
var createRemoveHook_default = createRemoveHook;
|
||||
|
||||
// packages/hooks/build-module/createHasHook.mjs
|
||||
function createHasHook(hooks, storeKey) {
|
||||
return function hasHook(hookName, namespace) {
|
||||
const hooksStore = hooks[storeKey];
|
||||
if ("undefined" !== typeof namespace) {
|
||||
return hookName in hooksStore && hooksStore[hookName].handlers.some(
|
||||
(hook) => hook.namespace === namespace
|
||||
);
|
||||
}
|
||||
return hookName in hooksStore;
|
||||
};
|
||||
}
|
||||
var createHasHook_default = createHasHook;
|
||||
|
||||
// packages/hooks/build-module/createRunHook.mjs
|
||||
function createRunHook(hooks, storeKey, returnFirstArg, async) {
|
||||
return function runHook(hookName, ...args) {
|
||||
const hooksStore = hooks[storeKey];
|
||||
if (!hooksStore[hookName]) {
|
||||
hooksStore[hookName] = {
|
||||
handlers: [],
|
||||
runs: 0
|
||||
};
|
||||
}
|
||||
hooksStore[hookName].runs++;
|
||||
const handlers = hooksStore[hookName].handlers;
|
||||
if (true) {
|
||||
if ("hookAdded" !== hookName && hooksStore.all) {
|
||||
handlers.push(...hooksStore.all.handlers);
|
||||
}
|
||||
}
|
||||
if (!handlers || !handlers.length) {
|
||||
return returnFirstArg ? args[0] : void 0;
|
||||
}
|
||||
const hookInfo = {
|
||||
name: hookName,
|
||||
currentIndex: 0
|
||||
};
|
||||
async function asyncRunner() {
|
||||
try {
|
||||
hooksStore.__current.add(hookInfo);
|
||||
let result = returnFirstArg ? args[0] : void 0;
|
||||
while (hookInfo.currentIndex < handlers.length) {
|
||||
const handler = handlers[hookInfo.currentIndex];
|
||||
result = await handler.callback.apply(null, args);
|
||||
if (returnFirstArg) {
|
||||
args[0] = result;
|
||||
}
|
||||
hookInfo.currentIndex++;
|
||||
}
|
||||
return returnFirstArg ? result : void 0;
|
||||
} finally {
|
||||
hooksStore.__current.delete(hookInfo);
|
||||
}
|
||||
}
|
||||
function syncRunner() {
|
||||
try {
|
||||
hooksStore.__current.add(hookInfo);
|
||||
let result = returnFirstArg ? args[0] : void 0;
|
||||
while (hookInfo.currentIndex < handlers.length) {
|
||||
const handler = handlers[hookInfo.currentIndex];
|
||||
result = handler.callback.apply(null, args);
|
||||
if (returnFirstArg) {
|
||||
args[0] = result;
|
||||
}
|
||||
hookInfo.currentIndex++;
|
||||
}
|
||||
return returnFirstArg ? result : void 0;
|
||||
} finally {
|
||||
hooksStore.__current.delete(hookInfo);
|
||||
}
|
||||
}
|
||||
return (async ? asyncRunner : syncRunner)();
|
||||
};
|
||||
}
|
||||
var createRunHook_default = createRunHook;
|
||||
|
||||
// packages/hooks/build-module/createCurrentHook.mjs
|
||||
function createCurrentHook(hooks, storeKey) {
|
||||
return function currentHook() {
|
||||
const hooksStore = hooks[storeKey];
|
||||
const currentArray = Array.from(hooksStore.__current);
|
||||
return currentArray.at(-1)?.name ?? null;
|
||||
};
|
||||
}
|
||||
var createCurrentHook_default = createCurrentHook;
|
||||
|
||||
// packages/hooks/build-module/createDoingHook.mjs
|
||||
function createDoingHook(hooks, storeKey) {
|
||||
return function doingHook(hookName) {
|
||||
const hooksStore = hooks[storeKey];
|
||||
if ("undefined" === typeof hookName) {
|
||||
return hooksStore.__current.size > 0;
|
||||
}
|
||||
return Array.from(hooksStore.__current).some(
|
||||
(hook) => hook.name === hookName
|
||||
);
|
||||
};
|
||||
}
|
||||
var createDoingHook_default = createDoingHook;
|
||||
|
||||
// packages/hooks/build-module/createDidHook.mjs
|
||||
function createDidHook(hooks, storeKey) {
|
||||
return function didHook(hookName) {
|
||||
const hooksStore = hooks[storeKey];
|
||||
if (!validateHookName_default(hookName)) {
|
||||
return;
|
||||
}
|
||||
return hooksStore[hookName] && hooksStore[hookName].runs ? hooksStore[hookName].runs : 0;
|
||||
};
|
||||
}
|
||||
var createDidHook_default = createDidHook;
|
||||
|
||||
// packages/hooks/build-module/createHooks.mjs
|
||||
var _Hooks = class {
|
||||
actions;
|
||||
filters;
|
||||
addAction;
|
||||
addFilter;
|
||||
removeAction;
|
||||
removeFilter;
|
||||
hasAction;
|
||||
hasFilter;
|
||||
removeAllActions;
|
||||
removeAllFilters;
|
||||
doAction;
|
||||
doActionAsync;
|
||||
applyFilters;
|
||||
applyFiltersAsync;
|
||||
currentAction;
|
||||
currentFilter;
|
||||
doingAction;
|
||||
doingFilter;
|
||||
didAction;
|
||||
didFilter;
|
||||
constructor() {
|
||||
this.actions = /* @__PURE__ */ Object.create(null);
|
||||
this.actions.__current = /* @__PURE__ */ new Set();
|
||||
this.filters = /* @__PURE__ */ Object.create(null);
|
||||
this.filters.__current = /* @__PURE__ */ new Set();
|
||||
this.addAction = createAddHook_default(this, "actions");
|
||||
this.addFilter = createAddHook_default(this, "filters");
|
||||
this.removeAction = createRemoveHook_default(this, "actions");
|
||||
this.removeFilter = createRemoveHook_default(this, "filters");
|
||||
this.hasAction = createHasHook_default(this, "actions");
|
||||
this.hasFilter = createHasHook_default(this, "filters");
|
||||
this.removeAllActions = createRemoveHook_default(this, "actions", true);
|
||||
this.removeAllFilters = createRemoveHook_default(this, "filters", true);
|
||||
this.doAction = createRunHook_default(this, "actions", false, false);
|
||||
this.doActionAsync = createRunHook_default(this, "actions", false, true);
|
||||
this.applyFilters = createRunHook_default(this, "filters", true, false);
|
||||
this.applyFiltersAsync = createRunHook_default(this, "filters", true, true);
|
||||
this.currentAction = createCurrentHook_default(this, "actions");
|
||||
this.currentFilter = createCurrentHook_default(this, "filters");
|
||||
this.doingAction = createDoingHook_default(this, "actions");
|
||||
this.doingFilter = createDoingHook_default(this, "filters");
|
||||
this.didAction = createDidHook_default(this, "actions");
|
||||
this.didFilter = createDidHook_default(this, "filters");
|
||||
}
|
||||
};
|
||||
function createHooks() {
|
||||
return new _Hooks();
|
||||
}
|
||||
var createHooks_default = createHooks;
|
||||
|
||||
// packages/hooks/build-module/index.mjs
|
||||
var defaultHooks = createHooks_default();
|
||||
var {
|
||||
addAction,
|
||||
addFilter,
|
||||
removeAction,
|
||||
removeFilter,
|
||||
hasAction,
|
||||
hasFilter,
|
||||
removeAllActions,
|
||||
removeAllFilters,
|
||||
doAction,
|
||||
doActionAsync,
|
||||
applyFilters,
|
||||
applyFiltersAsync,
|
||||
currentAction,
|
||||
currentFilter,
|
||||
doingAction,
|
||||
doingFilter,
|
||||
didAction,
|
||||
didFilter,
|
||||
actions,
|
||||
filters
|
||||
} = defaultHooks;
|
||||
return __toCommonJS(index_exports);
|
||||
})();
|
||||
Reference in New Issue
Block a user