@uiw/react-head
Version:
React components will manage your changes to the document head
44 lines (43 loc) • 1.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.HeadElement = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _reactDom = require("react-dom");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["as"];
var HeadElement = exports.HeadElement = function HeadElement(props) {
var _props$as = props.as,
Com = _props$as === void 0 ? 'link' : _props$as,
other = (0, _objectWithoutProperties2["default"])(props, _excluded);
var reset = other;
var comp = /*#__PURE__*/(0, _jsxRuntime.jsx)(Com, (0, _objectSpread2["default"])({
"data-head": true
}, reset));
(0, _react.useMemo)(function () {
var name = props.name;
var selector = '';
if (props.as && /(base|title)/.test(props.as)) {
selector = "".concat(props.as, ":not([data-head])");
}
if (props.as === 'meta' && name) {
selector = "meta[name=\"".concat(name, "\"]:not([data-head])");
}
if (props.as === 'meta' && props.charSet) {
selector = "meta[charset]:not([data-head])";
}
if (props.as === 'link' && props.rel == 'icon') {
selector = "link[rel=\"icon\"]:not([data-head])";
}
if (selector) {
var dom = document.querySelector(selector);
dom === null || dom === void 0 || dom.remove();
}
}, []);
return /*#__PURE__*/(0, _reactDom.createPortal)(comp, document.head);
};