UNPKG

@wordpress/core-data

Version:
113 lines (111 loc) 4.79 kB
"use strict"; 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