diff --git a/vitreum/headtags.js b/vitreum/headtags.js
index 5f4019ecf..b6d69f0de 100644
--- a/vitreum/headtags.js
+++ b/vitreum/headtags.js
@@ -1,91 +1,28 @@
import React, { useEffect } from 'react';
-//old vitreum file, still imported in some pages
-
-const injectTag = (tag, props, children)=>{
- const injectNode = document.createElement(tag);
- Object.entries(props).forEach(([key, val])=>injectNode[key] = val);
- if(children) injectNode.appendChild(document.createTextNode(children));
- document.getElementsByTagName('head')[0].appendChild(injectNode);
-};
-
-const obj2props = (obj)=>Object.entries(obj)
- .map(([k, v])=>`${k}="${v}"`)
+const obj2props = (obj) =>
+ Object.entries(obj)
+ .map(([k, v]) => `${k}="${v}"`)
.join(' ');
-const toStr = (chld)=>(Array.isArray(chld) ? chld.join('') : chld);
-const onServer = typeof window === 'undefined';
let NamedTags = {};
-let UnnamedTags = [];
-export const HeadComponents = {
- Title({ children }) {
- if(onServer) NamedTags.title = `
${toStr(children)}`;
- useEffect(()=>{
- document.title = toStr(children);
- }, [children]);
- return null;
- },
- Favicon({ type = 'image/png', href = '', rel = 'icon', id = 'favicon' }) {
- if(onServer) NamedTags.favicon = ``;
- useEffect(()=>{
- document.getElementById(id).href = href;
- }, [id, href]);
- return null;
- },
- Description({ children }) {
- if(onServer) NamedTags.description = ``;
- return null;
- },
- Noscript({ children }) {
- if(onServer) UnnamedTags.push(``);
- return null;
- },
- Script({ children = [], ...props }) {
- if(onServer) {
- UnnamedTags.push(
- children.length
- ? ``
- : ``,
- );
- }
- return null;
- },
+const HeadComponents = {
Meta(props) {
const tag = ``;
- props.property || props.name ? (NamedTags[props.property || props.name] = tag) : UnnamedTags.push(tag);
- useEffect(()=>{
+
+ props.property || props.name
+ ? (NamedTags[props.property || props.name] = tag)
+ : null;
+
+ useEffect(() => {
document
.getElementsByTagName('head')[0]
.insertAdjacentHTML('beforeend', Object.values(NamedTags).join('\n'));
}, [NamedTags]);
- return null;
- },
- Style({ children, type = 'text/css' }) {
- if(onServer) UnnamedTags.push(``);
+
return null;
},
};
-export const Inject = ({ tag, children, ...props })=>{
- useEffect(()=>{
- injectTag(tag, props, children);
- }, []);
- return null;
-};
-
-export const generate = ()=>Object.values(NamedTags).concat(UnnamedTags).join('\n');
-
-export const flush = ()=>{
- NamedTags = {};
- UnnamedTags = [];
-};
-
-export const Meta = HeadComponents.Meta;
-
-export default {
- Inject,
- ...HeadComponents,
- generate,
- flush,
-};
+export default HeadComponents;
\ No newline at end of file