UNPKG

@wordpress/element

Version:
100 lines (98 loc) 3.26 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/element/src/find-dom-node.ts var find_dom_node_exports = {}; __export(find_dom_node_exports, { default: () => findDOMNode }); module.exports = __toCommonJS(find_dom_node_exports); var import_deprecated = __toESM(require("@wordpress/deprecated")); var internalsKey = "_reactInternals"; var HostComponent = 5; var HostText = 6; function findCurrentFiber(fiber) { if (!fiber.alternate) { return fiber; } let node = fiber; while (node.return) { node = node.return; } if (node.stateNode.current === node) { return fiber; } return fiber.alternate; } function findHostFiber(fiber) { const current = findCurrentFiber(fiber); if (!current) { return null; } return findHostFiberImpl(current); } function findHostFiberImpl(fiber) { if (fiber.tag === HostComponent || fiber.tag === HostText) { return fiber; } let child = fiber.child; while (child) { const hostFiber = findHostFiberImpl(child); if (hostFiber) { return hostFiber; } child = child.sibling; } return null; } function findDOMNode(instance) { (0, import_deprecated.default)("wp.element.findDOMNode", { since: "7.1", alternative: "DOM refs", link: "https://react.dev/reference/react-dom/findDOMNode" }); if (instance === null || instance === void 0) { return null; } if (instance.nodeType !== void 0) { return instance; } const fiber = instance[internalsKey]; if (fiber === void 0) { if (typeof instance.render === "function") { throw new Error("Unable to find node on an unmounted component."); } const keys = Object.keys(instance).join(","); throw new Error( `Argument appears to not be a ReactComponent. Keys: ${keys}` ); } const hostFiber = findHostFiber(fiber); return hostFiber?.stateNode ?? null; } //# sourceMappingURL=find-dom-node.cjs.map