@lomray/react-head-manager 2.1.1 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/index.js +1 -1
- package/server/index.js.map +1 -1
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"html-react-parser";import e from"react";import r from"react-dom/server";import a from"../manager.js";class o{static inject(o,s){const m=o.match(/<head[^/].+?>?(?<meta>.+)<\/head>/s),
|
|
1
|
+
import t from"html-react-parser";import e from"react";import r from"react-dom/server";import a from"../manager.js";class o{static inject(o,s){const m=o.match(/<head[^/].+?>?(?<meta>.+)<\/head>/s),i=o.match(/<html[^>]*?>/s),d=o.match(/<body[^>]*?>/s),n=t(m?.groups?.meta.trim()??""),c=t(i?.[0]?`${i?.[0].trim()}</html>`:""),p=t(d?.[0]?`${d?.[0].trim()}</body>`:"");s.pushTags(c,a.rootContainerId,!1),s.pushTags(p,a.rootContainerId,!1),s.pushTags(n,a.rootContainerId,!1);const{meta:l,html:h,body:g}=s.getTags(),u=r.renderToString([...l.values()].map((({element:t})=>t))),[T]=r.renderToStaticMarkup(e.createElement("div",s.getRootTagProps(h))).replace(/^<div/,"<html").split("</div>"),[v]=r.renderToStaticMarkup(e.createElement("div",s.getRootTagProps(g))).replace(/^<div/,"<body").split("</div>");return o.replace(/<head[^/].+?>?(?<meta>.+)<\/head>/s,`<head>${u}</head>`).replace(/<html[^>]*?>/s,T).replace(/<body[^>]*?>/s,v)}static getState(t){const{html:e,body:r,containers:a}=t.getTags();return{html:[...e.entries()],body:[...r.entries()],containers:[...a]}}}export{o as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/server/index.ts"],"sourcesContent":["// noinspection HtmlRequiredTitleElement\n\nimport htmlParser from 'html-react-parser';\nimport type { ReactElement } from 'react';\nimport React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport Manager from '../manager';\n\ninterface IMetaManagerState {\n html: [string, Record<string, any>][];\n body: [string, Record<string, any>][];\n containers: string[];\n}\n\n/**\n * Helpers for server side\n */\nclass ServerManager {\n /**\n * Parse existing head tags from html and merge with tags received at the render stage (from manager)\n *\n * @return new html with actual meta tags\n */\n public static inject(htmlStr: string, manager: Manager): string {\n const matchedMetaHtml = htmlStr.match(/<head[^/].+?>?(?<meta>.+)<\\/head>/s);\n const matchedHtmlAttr = htmlStr.match(/<html[^>]*?>/s);\n const matchedBodyAttr = htmlStr.match(/<body[^>]*?>/s);\n const rootTags = htmlParser(matchedMetaHtml?.groups?.meta.trim() ?? '');\n const htmlTag = htmlParser(matchedHtmlAttr?.[0] ? `${matchedHtmlAttr?.[0].trim()}</html>` : '');\n const bodyTag = htmlParser(matchedBodyAttr?.[0] ? `${matchedBodyAttr?.[0].trim()}</body>` : '');\n\n // add root html props\n manager.pushTags(htmlTag, Manager.rootContainerId, false);\n // add root body props\n manager.pushTags(bodyTag, Manager.rootContainerId, false);\n // add root meta tags to manager\n manager.pushTags(rootTags, Manager.rootContainerId, false);\n\n const { meta, html, body } = manager.getTags();\n const htmlMeta = ReactDOMServer.renderToString(\n [...meta.values()].map(({ element }) => element) as unknown as ReactElement,\n );\n const [htmlTagWithProps] = ReactDOMServer.
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/server/index.ts"],"sourcesContent":["// noinspection HtmlRequiredTitleElement\n\nimport htmlParser from 'html-react-parser';\nimport type { ReactElement } from 'react';\nimport React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport Manager from '../manager';\n\ninterface IMetaManagerState {\n html: [string, Record<string, any>][];\n body: [string, Record<string, any>][];\n containers: string[];\n}\n\n/**\n * Helpers for server side\n */\nclass ServerManager {\n /**\n * Parse existing head tags from html and merge with tags received at the render stage (from manager)\n *\n * @return new html with actual meta tags\n */\n public static inject(htmlStr: string, manager: Manager): string {\n const matchedMetaHtml = htmlStr.match(/<head[^/].+?>?(?<meta>.+)<\\/head>/s);\n const matchedHtmlAttr = htmlStr.match(/<html[^>]*?>/s);\n const matchedBodyAttr = htmlStr.match(/<body[^>]*?>/s);\n const rootTags = htmlParser(matchedMetaHtml?.groups?.meta.trim() ?? '');\n const htmlTag = htmlParser(matchedHtmlAttr?.[0] ? `${matchedHtmlAttr?.[0].trim()}</html>` : '');\n const bodyTag = htmlParser(matchedBodyAttr?.[0] ? `${matchedBodyAttr?.[0].trim()}</body>` : '');\n\n // add root html props\n manager.pushTags(htmlTag, Manager.rootContainerId, false);\n // add root body props\n manager.pushTags(bodyTag, Manager.rootContainerId, false);\n // add root meta tags to manager\n manager.pushTags(rootTags, Manager.rootContainerId, false);\n\n const { meta, html, body } = manager.getTags();\n const htmlMeta = ReactDOMServer.renderToString(\n [...meta.values()].map(({ element }) => element) as unknown as ReactElement,\n );\n // Render a neutral element so React 19 does not insert document structure.\n const [htmlTagWithProps] = ReactDOMServer.renderToStaticMarkup(\n React.createElement('div', manager.getRootTagProps(html)),\n )\n .replace(/^<div/, '<html')\n .split('</div>');\n const [bodyTagWithProps] = ReactDOMServer.renderToStaticMarkup(\n React.createElement('div', manager.getRootTagProps(body)),\n )\n .replace(/^<div/, '<body')\n .split('</div>');\n\n return htmlStr\n .replace(/<head[^/].+?>?(?<meta>.+)<\\/head>/s, `<head>${htmlMeta}</head>`)\n .replace(/<html[^>]*?>/s, htmlTagWithProps)\n .replace(/<body[^>]*?>/s, bodyTagWithProps);\n }\n\n /**\n * Get meta manager state to pass on client\n */\n public static getState(manager: Manager): IMetaManagerState {\n const { html, body, containers } = manager.getTags();\n\n return {\n html: [...html.entries()],\n body: [...body.entries()],\n containers: [...containers],\n };\n }\n}\n\nexport default ServerManager;\n"],"names":["ServerManager","static","htmlStr","manager","matchedMetaHtml","match","matchedHtmlAttr","matchedBodyAttr","rootTags","htmlParser","groups","meta","trim","htmlTag","bodyTag","pushTags","Manager","rootContainerId","html","body","getTags","htmlMeta","ReactDOMServer","renderToString","values","map","element","htmlTagWithProps","renderToStaticMarkup","React","createElement","getRootTagProps","replace","split","bodyTagWithProps","containers","entries"],"mappings":"mHAiBA,MAAMA,EAMGC,cAAcC,EAAiBC,GACpC,MAAMC,EAAkBF,EAAQG,MAAM,sCAChCC,EAAkBJ,EAAQG,MAAM,iBAChCE,EAAkBL,EAAQG,MAAM,iBAChCG,EAAWC,EAAWL,GAAiBM,QAAQC,KAAKC,QAAU,IAC9DC,EAAUJ,EAAWH,IAAkB,GAAK,GAAGA,IAAkB,GAAGM,gBAAkB,IACtFE,EAAUL,EAAWF,IAAkB,GAAK,GAAGA,IAAkB,GAAGK,gBAAkB,IAG5FT,EAAQY,SAASF,EAASG,EAAQC,iBAAiB,GAEnDd,EAAQY,SAASD,EAASE,EAAQC,iBAAiB,GAEnDd,EAAQY,SAASP,EAAUQ,EAAQC,iBAAiB,GAEpD,MAAMN,KAAEA,EAAIO,KAAEA,EAAIC,KAAEA,GAAShB,EAAQiB,UAC/BC,EAAWC,EAAeC,eAC9B,IAAIZ,EAAKa,UAAUC,KAAI,EAAGC,aAAcA,MAGnCC,GAAoBL,EAAeM,qBACxCC,EAAMC,cAAc,MAAO3B,EAAQ4B,gBAAgBb,KAElDc,QAAQ,QAAS,SACjBC,MAAM,WACFC,GAAoBZ,EAAeM,qBACxCC,EAAMC,cAAc,MAAO3B,EAAQ4B,gBAAgBZ,KAElDa,QAAQ,QAAS,SACjBC,MAAM,UAET,OAAO/B,EACJ8B,QAAQ,qCAAsC,SAASX,YACvDW,QAAQ,gBAAiBL,GACzBK,QAAQ,gBAAiBE,EAC7B,CAKMjC,gBAAgBE,GACrB,MAAMe,KAAEA,EAAIC,KAAEA,EAAIgB,WAAEA,GAAehC,EAAQiB,UAE3C,MAAO,CACLF,KAAM,IAAIA,EAAKkB,WACfjB,KAAM,IAAIA,EAAKiB,WACfD,WAAY,IAAIA,GAEnB"}
|