{"version":3,"file":"browser-DU_6d8f8.js","sources":["../../src/composables/browser.ts"],"sourcesContent":["import { onBeforeMount } from \"vue\"\n\n/**\n * initLinkTag injects a stylesheet link tag into the head\n * @param url link tag href attribute value\n * @returns Promise\n */\nexport const initLinkTag = (url: string) => {\n return new Promise((resolve, reject) => {\n const tag = document.createElement(\"link\")\n tag.rel = \"stylesheet\"\n tag.href = url\n tag.onload = () => {\n return resolve()\n }\n\n tag.onerror = () => {\n reject(new Error(`Failed to inject link tag with src ${url}`))\n }\n\n document.head.insertBefore(\n tag,\n document.head.childNodes[document.head.childNodes.length - 1].nextSibling\n )\n })\n}\n\n/**\n * initScriptTag injects a javascript script tag into the head\n * @param url script tag src attribute value\n * @returns Promise\n */\nexport const initScriptTag = (url: string) => {\n return new Promise((resolve, reject) => {\n const tag = document.createElement(\"script\")\n tag.type = \"text/javascript\"\n tag.src = url\n tag.async = true\n\n tag.onload = () => {\n return resolve()\n }\n\n tag.onerror = () => {\n reject(new Error(`Failed to inject script tag with src ${url}`))\n }\n\n document.head.insertBefore(\n tag,\n document.head.childNodes[document.head.childNodes.length - 1].nextSibling\n )\n })\n}\n\ninterface PageMeta {\n title: string\n meta: {\n name: string\n content: string\n }[]\n}\n\n/**\n * usePageMeta sets the domcument title and adds or updates meta tags\n * @param config PageMeta\n */\nexport const usePageMeta = (config: PageMeta) => {\n onBeforeMount(() => {\n const head = document.querySelector(\"head\")\n\n if (head === null) {\n return\n }\n\n if (config.title) {\n document.title = config.title\n }\n\n config.meta.forEach((meta) => {\n if (!meta.name || !meta.content) {\n return\n }\n\n const existing = document.querySelector(`meta[name=\"${meta.name}\"]`)\n if (existing) {\n existing.setAttribute(\"name\", meta.name)\n existing.setAttribute(\"content\", meta.content)\n return\n }\n\n const tag = document.createElement(\"meta\")\n tag.setAttribute(\"name\", meta.name)\n tag.setAttribute(\"content\", meta.content)\n head.appendChild(tag)\n })\n })\n}\n"],"names":["initLinkTag","url","resolve","reject","tag","initScriptTag"],"mappings":"AAOa,MAAAA,EAAeC,GACnB,IAAI,QAAc,CAACC,EAASC,IAAW,CACtC,MAAAC,EAAM,SAAS,cAAc,MAAM,EACzCA,EAAI,IAAM,aACVA,EAAI,KAAOH,EACXG,EAAI,OAAS,IACJF,EAAQ,EAGjBE,EAAI,QAAU,IAAM,CAClBD,EAAO,IAAI,MAAM,sCAAsCF,CAAG,EAAE,CAAC,CAC/D,EAEA,SAAS,KAAK,aACZG,EACA,SAAS,KAAK,WAAW,SAAS,KAAK,WAAW,OAAS,CAAC,EAAE,WAChE,CAAA,CACD,EAQUC,EAAiBJ,GACrB,IAAI,QAAc,CAACC,EAASC,IAAW,CACtC,MAAAC,EAAM,SAAS,cAAc,QAAQ,EAC3CA,EAAI,KAAO,kBACXA,EAAI,IAAMH,EACVG,EAAI,MAAQ,GAEZA,EAAI,OAAS,IACJF,EAAQ,EAGjBE,EAAI,QAAU,IAAM,CAClBD,EAAO,IAAI,MAAM,wCAAwCF,CAAG,EAAE,CAAC,CACjE,EAEA,SAAS,KAAK,aACZG,EACA,SAAS,KAAK,WAAW,SAAS,KAAK,WAAW,OAAS,CAAC,EAAE,WAChE,CAAA,CACD"}