UNPKG

@uiw/react-head

Version:

React components will manage your changes to the document head

37 lines 1.24 kB
import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; var _excluded = ["as"]; import React, { useMemo } from 'react'; import { createPortal } from 'react-dom'; import { jsx as _jsx } from "react/jsx-runtime"; export var HeadElement = props => { var { as: Com = 'link' } = props, other = _objectWithoutPropertiesLoose(props, _excluded); var reset = other; var comp = /*#__PURE__*/_jsx(Com, _extends({ "data-head": true }, reset)); useMemo(() => { var name = props.name; var selector = ''; if (props.as && /(base|title)/.test(props.as)) { selector = props.as + ":not([data-head])"; } if (props.as === 'meta' && name) { selector = "meta[name=\"" + 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.remove(); } }, []); return /*#__PURE__*/createPortal(comp, document.head); };