UNPKG

@wordpress/interactivity

Version:

Package that provides a standard and simple way to handle the frontend interactivity of Gutenberg blocks.

35 lines (34 loc) 1.12 kB
// packages/interactivity/src/proxies/registry.ts var objToProxy = /* @__PURE__ */ new WeakMap(); var proxyToObj = /* @__PURE__ */ new WeakMap(); var proxyToNs = /* @__PURE__ */ new WeakMap(); var supported = /* @__PURE__ */ new Set([Object, Array]); var createProxy = (namespace, obj, handlers) => { if (!shouldProxy(obj)) { throw Error("This object cannot be proxified."); } if (!objToProxy.has(obj)) { const proxy = new Proxy(obj, handlers); objToProxy.set(obj, proxy); proxyToObj.set(proxy, obj); proxyToNs.set(proxy, namespace); } return objToProxy.get(obj); }; var getProxyFromObject = (obj) => objToProxy.get(obj); var getNamespaceFromProxy = (proxy) => proxyToNs.get(proxy); var shouldProxy = (candidate) => { if (typeof candidate !== "object" || candidate === null) { return false; } return !proxyToNs.has(candidate) && supported.has(candidate.constructor); }; var getObjectFromProxy = (proxy) => proxyToObj.get(proxy); export { createProxy, getNamespaceFromProxy, getObjectFromProxy, getProxyFromObject, shouldProxy }; //# sourceMappingURL=registry.mjs.map