UNPKG

rc-trigger

Version:

base abstract trigger component for react

71 lines (53 loc) 2 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var React = _interopRequireWildcard(require("react")); var _default = function _default(stretch) { var _React$useState = React.useState({ width: 0, height: 0 }), _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2), targetSize = _React$useState2[0], setTargetSize = _React$useState2[1]; function measureStretch(element) { var tgtWidth = element.offsetWidth, tgtHeight = element.offsetHeight; var _element$getBoundingC = element.getBoundingClientRect(), width = _element$getBoundingC.width, height = _element$getBoundingC.height; // Rect is more accurate than offset, use if near if (Math.abs(tgtWidth - width) < 1 && Math.abs(tgtHeight - height) < 1) { tgtWidth = width; tgtHeight = height; } setTargetSize({ width: tgtWidth, height: tgtHeight }); } // Merge stretch style var style = React.useMemo(function () { var sizeStyle = {}; if (stretch) { var width = targetSize.width, height = targetSize.height; // Stretch with target if (stretch.indexOf('height') !== -1 && height) { sizeStyle.height = height; } else if (stretch.indexOf('minHeight') !== -1 && height) { sizeStyle.minHeight = height; } if (stretch.indexOf('width') !== -1 && width) { sizeStyle.width = width; } else if (stretch.indexOf('minWidth') !== -1 && width) { sizeStyle.minWidth = width; } } return sizeStyle; }, [stretch, targetSize]); return [style, measureStretch]; }; exports.default = _default;