{"version":3,"file":"index-BIi6MCew.js","sources":["../../../../../node_modules/.pnpm/@solidjs+meta@0.29.3_solid-js@1.8.15/node_modules/@solidjs/meta/dist/index.jsx"],"sourcesContent":["import { createContext, createRenderEffect, createUniqueId, onCleanup, sharedConfig, useContext } from \"solid-js\";\nimport { isServer, spread, escape, useAssets, ssr } from \"solid-js/web\";\nexport const MetaContext = createContext();\nconst cascadingTags = [\"title\", \"meta\"];\n// https://html.spec.whatwg.org/multipage/semantics.html#the-title-element\nconst titleTagProperties = [];\nconst metaTagProperties = \n// https://html.spec.whatwg.org/multipage/semantics.html#the-meta-element\n[\"name\", \"http-equiv\", \"content\", \"charset\", \"media\"]\n // additional properties\n .concat([\"property\"]);\nconst getTagKey = (tag, properties) => {\n // pick allowed properties and sort them\n const tagProps = Object.fromEntries(Object.entries(tag.props)\n .filter(([k]) => properties.includes(k))\n .sort());\n // treat `property` as `name` for meta tags\n if (Object.hasOwn(tagProps, \"name\") || Object.hasOwn(tagProps, \"property\")) {\n tagProps.name = tagProps.name || tagProps.property;\n delete tagProps.property;\n }\n // concat tag name and properties as unique key for this tag\n return tag.tag + JSON.stringify(tagProps);\n};\nfunction initClientProvider() {\n if (!sharedConfig.context) {\n const ssrTags = document.head.querySelectorAll(`[data-sm]`);\n // `forEach` on `NodeList` is not supported in Googlebot, so use a workaround\n Array.prototype.forEach.call(ssrTags, (ssrTag) => ssrTag.parentNode.removeChild(ssrTag));\n }\n const cascadedTagInstances = new Map();\n // TODO: use one element for all tags of the same type, just swap out\n // where the props get applied\n function getElement(tag) {\n if (tag.ref) {\n return tag.ref;\n }\n let el = document.querySelector(`[data-sm=\"${tag.id}\"]`);\n if (el) {\n if (el.tagName.toLowerCase() !== tag.tag) {\n if (el.parentNode) {\n // remove the old tag\n el.parentNode.removeChild(el);\n }\n // add the new tag\n el = document.createElement(tag.tag);\n }\n // use the old tag\n el.removeAttribute(\"data-sm\");\n }\n else {\n // create a new tag\n el = document.createElement(tag.tag);\n }\n return el;\n }\n return {\n addTag(tag) {\n if (cascadingTags.indexOf(tag.tag) !== -1) {\n const properties = tag.tag === \"title\" ? titleTagProperties : metaTagProperties;\n const tagKey = getTagKey(tag, properties);\n // only cascading tags need to be kept as singletons\n if (!cascadedTagInstances.has(tagKey)) {\n cascadedTagInstances.set(tagKey, []);\n }\n let instances = cascadedTagInstances.get(tagKey);\n let index = instances.length;\n instances = [...instances, tag];\n // track indices synchronously\n cascadedTagInstances.set(tagKey, instances);\n let element = getElement(tag);\n tag.ref = element;\n spread(element, tag.props);\n let lastVisited = null;\n for (var i = index - 1; i >= 0; i--) {\n if (instances[i] != null) {\n lastVisited = instances[i];\n break;\n }\n }\n if (element.parentNode != document.head) {\n document.head.appendChild(element);\n }\n if (lastVisited && lastVisited.ref) {\n document.head.removeChild(lastVisited.ref);\n }\n return index;\n }\n let element = getElement(tag);\n tag.ref = element;\n spread(element, tag.props);\n if (element.parentNode != document.head) {\n document.head.appendChild(element);\n }\n return -1;\n },\n removeTag(tag, index) {\n const properties = tag.tag === \"title\" ? titleTagProperties : metaTagProperties;\n const tagKey = getTagKey(tag, properties);\n if (tag.ref) {\n const t = cascadedTagInstances.get(tagKey);\n if (t) {\n if (tag.ref.parentNode) {\n tag.ref.parentNode.removeChild(tag.ref);\n for (let i = index - 1; i >= 0; i--) {\n if (t[i] != null) {\n document.head.appendChild(t[i].ref);\n }\n }\n }\n t[index] = null;\n cascadedTagInstances.set(tagKey, t);\n }\n else {\n if (tag.ref.parentNode) {\n tag.ref.parentNode.removeChild(tag.ref);\n }\n }\n }\n }\n };\n}\nfunction initServerProvider() {\n const tags = [];\n useAssets(() => ssr(renderTags(tags)));\n return {\n addTag(tagDesc) {\n // tweak only cascading tags\n if (cascadingTags.indexOf(tagDesc.tag) !== -1) {\n const properties = tagDesc.tag === \"title\" ? titleTagProperties : metaTagProperties;\n const tagDescKey = getTagKey(tagDesc, properties);\n const index = tags.findIndex(prev => prev.tag === tagDesc.tag && getTagKey(prev, properties) === tagDescKey);\n if (index !== -1) {\n tags.splice(index, 1);\n }\n }\n tags.push(tagDesc);\n return tags.length;\n },\n removeTag(tag, index) { }\n };\n}\nexport const MetaProvider = props => {\n const actions = !isServer\n ? initClientProvider()\n : initServerProvider();\n return {props.children};\n};\nconst MetaTag = (tag, props, setting) => {\n useHead({\n tag,\n props,\n setting,\n id: createUniqueId(),\n get name() {\n return props.name || props.property;\n }\n });\n return null;\n};\nexport function useHead(tagDesc) {\n const c = useContext(MetaContext);\n if (!c)\n throw new Error(\" should be in the tree\");\n createRenderEffect(() => {\n const index = c.addTag(tagDesc);\n onCleanup(() => c.removeTag(tagDesc, index));\n });\n}\nfunction renderTags(tags) {\n return tags\n .map(tag => {\n const keys = Object.keys(tag.props);\n const props = keys\n .map(k => k === \"children\"\n ? \"\"\n : ` ${k}=\"${\n // @ts-expect-error\n escape(tag.props[k], true)}\"`)\n .join(\"\");\n const children = tag.props.children;\n if (tag.setting?.close) {\n return `<${tag.tag} data-sm=\"${tag.id}\"${props}>${\n // @ts-expect-error\n tag.setting?.escape ? escape(children) : children || \"\"}`;\n }\n return `<${tag.tag} data-sm=\"${tag.id}\"${props}/>`;\n })\n .join(\"\");\n}\nexport const Title = props => MetaTag(\"title\", props, { escape: true, close: true });\nexport const Style = props => MetaTag(\"style\", props, { close: true });\nexport const Meta = props => MetaTag(\"meta\", props);\nexport const Link = props => MetaTag(\"link\", props);\nexport const Base = props => MetaTag(\"base\", props);\nexport const Stylesheet = props => ;\n"],"names":["MetaContext","createContext","cascadingTags","titleTagProperties","metaTagProperties","concat","getTagKey","tag","properties","tagProps","Object","fromEntries","entries","props","filter","k","includes","sort","hasOwn","name","property","JSON","stringify","initClientProvider","sharedConfig","context","ssrTags","document","head","querySelectorAll","prototype","forEach","call","ssrTag","parentNode","removeChild","cascadedTagInstances","Map","getElement","ref","el","querySelector","id","tagName","toLowerCase","createElement","removeAttribute","addTag","indexOf","tagKey","has","set","instances","get","index","length","element","lastVisited","i","appendChild","removeTag","t","MetaProvider","actions","_$createComponent","Provider","value","children","MetaTag","setting","useHead","createUniqueId","tagDesc","c","useContext","Error","createRenderEffect","onCleanup","Title","escape","close"],"mappings":"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","x_google_ignoreList":[0]}