antd
Version:
An enterprise-class UI design language and React components implementation
46 lines (45 loc) • 1.46 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _is = require("../../_util/is");
var _util = require("../util");
const DEFAULT_BORDER_WIDTH = [0, 0, 0, 0];
const normalizeValue = val => {
const size = Number.parseFloat(val);
return (0, _is.isNumber)(size) ? size : 0;
};
const useBorderSize = domNode => {
const [borderWidth, setBorderWidth] = _react.default.useState(DEFAULT_BORDER_WIDTH);
_react.default.useEffect(() => {
if (!domNode) {
setBorderWidth(prev => {
if ((0, _util.isSameBorderWidth)(prev, DEFAULT_BORDER_WIDTH)) {
return prev;
} else {
return DEFAULT_BORDER_WIDTH;
}
});
return;
}
const {
borderTopWidth,
borderRightWidth,
borderBottomWidth,
borderLeftWidth
} = getComputedStyle(domNode);
const nextBorderWidth = [normalizeValue(borderTopWidth), normalizeValue(borderRightWidth), normalizeValue(borderBottomWidth), normalizeValue(borderLeftWidth)];
setBorderWidth(prev => {
if ((0, _util.isSameBorderWidth)(prev, nextBorderWidth)) {
return prev;
} else {
return nextBorderWidth;
}
});
}, [domNode]);
return borderWidth;
};
var _default = exports.default = useBorderSize;