@uiw/react-head
Version:
React components will manage your changes to the document head
37 lines • 1.24 kB
JavaScript
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);
};