UNPKG

@uiw/react-head

Version:

React components will manage your changes to the document head

44 lines (43 loc) 1.8 kB
"use strict"; 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); };