UNPKG

@wordpress/components

Version:
82 lines (64 loc) 1.99 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _lodash = require("lodash"); var _compose = require("@wordpress/compose"); /** * External dependencies */ /** * WordPress dependencies */ var _default = mapNodeToProps => (0, _compose.createHigherOrderComponent)(WrappedComponent => { return class extends _element.Component { constructor() { super(...arguments); this.nodeRef = this.props.node; this.state = { fallbackStyles: undefined, grabStylesCompleted: false }; this.bindRef = this.bindRef.bind(this); } bindRef(node) { if (!node) { return; } this.nodeRef = node; } componentDidMount() { this.grabFallbackStyles(); } componentDidUpdate() { this.grabFallbackStyles(); } grabFallbackStyles() { const { grabStylesCompleted, fallbackStyles } = this.state; if (this.nodeRef && !grabStylesCompleted) { const newFallbackStyles = mapNodeToProps(this.nodeRef, this.props); if (!(0, _lodash.isEqual)(newFallbackStyles, fallbackStyles)) { this.setState({ fallbackStyles: newFallbackStyles, grabStylesCompleted: !!(0, _lodash.every)(newFallbackStyles) }); } } } render() { const wrappedComponent = (0, _element.createElement)(WrappedComponent, (0, _extends2.default)({}, this.props, this.state.fallbackStyles)); return this.props.node ? wrappedComponent : (0, _element.createElement)("div", { ref: this.bindRef }, " ", wrappedComponent, " "); } }; }, 'withFallbackStyles'); exports.default = _default; //# sourceMappingURL=index.js.map