@wordpress/core-data
Version:
Access to and manipulation of core WordPress entities.
113 lines (111 loc) • 4.79 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// packages/core-data/src/hooks/use-resource-permissions.ts
var use_resource_permissions_exports = {};
__export(use_resource_permissions_exports, {
__experimentalUseResourcePermissions: () => __experimentalUseResourcePermissions,
default: () => use_resource_permissions_default
});
module.exports = __toCommonJS(use_resource_permissions_exports);
var import_deprecated = __toESM(require("@wordpress/deprecated"));
var import_warning = __toESM(require("@wordpress/warning"));
var import__ = require("../");
var import_constants = require("./constants");
var import_use_query_select = __toESM(require("./use-query-select"));
function useResourcePermissions(resource, id) {
const isEntity = typeof resource === "object";
const resourceAsString = isEntity ? JSON.stringify(resource) : resource;
if (isEntity && typeof id !== "undefined") {
(0, import_warning.default)(
`When 'resource' is an entity object, passing 'id' as a separate argument isn't supported.`
);
}
return (0, import_use_query_select.default)(
(resolve) => {
const hasId = isEntity ? !!resource.id : !!id;
const { canUser } = resolve(import__.store);
const create = canUser(
"create",
isEntity ? { kind: resource.kind, name: resource.name } : resource
);
if (!hasId) {
const read2 = canUser("read", resource);
const isResolving2 = create.isResolving || read2.isResolving;
const hasResolved2 = create.hasResolved && read2.hasResolved;
let status2 = import_constants.Status.Idle;
if (isResolving2) {
status2 = import_constants.Status.Resolving;
} else if (hasResolved2) {
status2 = import_constants.Status.Success;
}
return {
status: status2,
isResolving: isResolving2,
hasResolved: hasResolved2,
canCreate: create.hasResolved && create.data,
canRead: read2.hasResolved && read2.data
};
}
const read = canUser("read", resource, id);
const update = canUser("update", resource, id);
const _delete = canUser("delete", resource, id);
const isResolving = read.isResolving || create.isResolving || update.isResolving || _delete.isResolving;
const hasResolved = read.hasResolved && create.hasResolved && update.hasResolved && _delete.hasResolved;
let status = import_constants.Status.Idle;
if (isResolving) {
status = import_constants.Status.Resolving;
} else if (hasResolved) {
status = import_constants.Status.Success;
}
return {
status,
isResolving,
hasResolved,
canRead: hasResolved && read.data,
canCreate: hasResolved && create.data,
canUpdate: hasResolved && update.data,
canDelete: hasResolved && _delete.data
};
},
[resourceAsString, id]
);
}
var use_resource_permissions_default = useResourcePermissions;
function __experimentalUseResourcePermissions(resource, id) {
(0, import_deprecated.default)(`wp.data.__experimentalUseResourcePermissions`, {
alternative: "wp.data.useResourcePermissions",
since: "6.1"
});
return useResourcePermissions(resource, id);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
__experimentalUseResourcePermissions
});
//# sourceMappingURL=use-resource-permissions.js.map