vike-metadata-vue
Version:
A hook to manage metadata for your Vike + Vue app.
2 lines • 10 kB
JavaScript
import{useConfig as R}from"vike-vue/useConfig";import{h as p}from"vue";function g(e){if(!e)return;let t="";return typeof e?.email<"u"&&(e.email?t+="email=yes,":t+="email=no,"),typeof e?.telephone<"u"&&(e.telephone?t+="telephone=yes,":t+="telephone=no,"),typeof e?.address<"u"&&(e.address?t+="address=yes,":t+="address=no,"),typeof e?.url<"u"&&(e.url?t+="url=yes,":t+="url=no,"),typeof e?.date<"u"&&(e.date?t+="date=yes":t+="date=no"),t}function l(e){if(!e)return null;if(typeof e=="string")return e;let t=[];return(e?.follow!==void 0||e?.nofollow!==void 0)&&(e.follow===!0||e.nofollow===!1?t.push("follow"):t.push("nofollow")),(e?.index!==void 0||e?.noindex!==void 0)&&(e.index===!0||e.noindex===!1?t.push("index"):t.push("noindex")),e?.indexifembedded===!0&&t.push("indexifembedded"),e?.["max-image-preview"]!==void 0&&t.push(`max-image-preview:${e["max-image-preview"]}`),e?.["max-snippet"]!==void 0&&t.push(`max-snippet:${e["max-snippet"]}`),e?.["max-video-preview"]!==void 0&&t.push(`max-video-preview:${e["max-video-preview"]}`),e?.noarchive===!0&&t.push("noarchive"),e?.nocache===!0&&t.push("nocache"),e?.noimageindex===!0&&t.push("noimageindex"),e?.nositelinkssearchbox===!0&&t.push("nositelinkssearchbox"),e?.nosnippet===!0&&t.push("nosnippet"),e?.notranslate===!0&&t.push("notranslate"),e?.unavailable_after!==void 0&&t.push(`unavailable_after: ${e.unavailable_after}`),t.join(", ")}function y(e){if(!e)return null;let t=[];return e.width!==void 0&&t.push(`width=${e.width}`),e.height!==void 0&&t.push(`height=${e.height}`),e.initialScale!==void 0&&t.push(`initial-scale=${e.initialScale}`),e.interactiveWidget!==void 0&&t.push(`interactive-widget=${e.interactiveWidget}`),e.maximumScale!==void 0&&t.push(`maximum-scale=${e.maximumScale}`),e.minimumScale!==void 0&&t.push(`minimum-scale=${e.minimumScale}`),e.userScalable!==void 0&&(e.userScalable===!0&&t.push("user-scalable=yes"),t.push("user-scalable=no")),e.viewportFit!==void 0&&t.push(`viewport-fit=${e.viewportFit}`),t.join(", ")}function h(e){return typeof e=="string"?e:e.join(",")}function f(e,t){let o=document.querySelector(`meta[name="${e}"]`);o||(o=document.createElement("meta"),o.setAttribute("name",e),document.head.appendChild(o)),o.setAttribute("content",t)}function m(e,t){let o=document.querySelector(`meta[property="${e}"]`);o||(o=document.createElement("meta"),o.setAttribute("property",e),document.head.appendChild(o)),o.setAttribute("content",t)}function b(e,t){let o=R(),a={title:e.title??t.title,description:e.description??t.description,generator:e.generator??t.generator,applicationName:e.applicationName??t.applicationName,referrer:e.referrer??t.referrer,keywords:e.keywords??t.keywords,authors:e.authors??t.authors,creator:e.creator??t.creator,publisher:e.publisher??t.publisher,formatDetection:e.formatDetection??t.formatDetection,openGraph:{title:e.openGraph?.title??e.title??t.title,description:e.openGraph?.description??e.description??t.description,url:e.openGraph?.url??t?.openGraph?.url,siteName:e.openGraph?.siteName??t?.openGraph?.siteName,images:e.openGraph?.images??t?.openGraph?.images,videos:e.openGraph?.videos??t?.openGraph?.videos,audio:e.openGraph?.audio??t?.openGraph?.audio,locale:e.openGraph?.locale??t?.openGraph?.locale,type:e.openGraph?.type??t?.openGraph?.type},robots:e.robots??t.robots,manifest:e.manifest??t.manifest,twitter:{creator:e.twitter?.creator??t?.twitter?.creator,creatorId:e.twitter?.creatorId??t?.twitter?.creatorId,description:e.twitter?.description??e.description??t.description,images:e.twitter?.images??t?.twitter?.images,site:e.twitter?.site??t?.twitter?.site,siteId:e.twitter?.siteId??t?.twitter?.siteId,title:e.twitter?.title??e.title??t.title,card:e.twitter?.card??t?.twitter?.card,players:e.twitter?.players??t?.twitter?.players,app:e?.twitter?.app??t?.twitter?.app},viewport:e.viewport??t.viewport,verification:e.verification??t.verification,other:e.other??t.other,otherJSX:e.otherJSX??t.otherJSX},u=[s("generator",a.generator),s("application-name",a.applicationName),s("referrer",a.referrer),s("keywords",a?.keywords?.length?h(a.keywords):null),d(a?.authors,c=>[s("author",c.name),c.url?p("link",{rel:"author",href:c.url?.toString()}):null]),s("creator",a?.creator),s("publisher",a?.publisher),s("format-detection",a?.formatDetection?g(a.formatDetection):null),U(a?.openGraph),s("robots",a?.robots?l(a.robots):null),s("googlebot",a?.robots?.googleBot?l(a?.robots?.googleBot):null),a?.manifest?p("link",{rel:"manifest",href:a.manifest?.toString()}):null,V(a.twitter),B(a.viewport),w(a?.verification),w(a?.other),a.otherJSX?.()];o({title:a.title,description:a.description,Head:u}),typeof window>"u"||(a.openGraph.title&&m("og:title",a.openGraph.title),a.description&&f("description",a.description),a.openGraph.description&&m("og:description",a.openGraph.description),a.twitter.title&&f("twitter:title",a.twitter.title),a.twitter.description&&f("twitter:description",a.twitter.description),a.keywords?.length&&f("keywords",h(a.keywords)))}function Q(e){return t=>b(t,e)}var x={};function $(e){x=e}var G=e=>b(e,x);G.setGlobalDefaults=$;function s(e,t){return t?p("meta",{name:e,content:t}):null}function i(e,t){return t?p("meta",{property:e,content:t}):null}function d(e,t){return e?Array.isArray(e)?e.map(t):t(e,0):null}function U(e){if(!e)return null;function t(r){return r.type!=="article"?null:[d(r.authors,n=>i("article:author",n)),i("article:expiration_time",r.expirationTime),i("article:modified_time",r.modifiedTime),i("article:published_time",r.publishedTime),i("article:section",r.section),d(r.tags,n=>i("article:tag",n))]}function o(r){return r.type!=="book"?null:[d(r.authors,n=>i("article:author",n)),i("book:isbn",r.isbn),i("book:release_date",r.releaseDate),d(r.tags,n=>i("article:tag",n))]}function a(r){return r.type!=="profile"?null:[i("profile:first_name",r.firstName),i("profile:last_name",r.lastName),i("profile:username",r.username),i("profile:gender",r.gender)]}function u(r){return r.type!=="music.song"?null:[d(r.albums,n=>typeof n=="string"||n instanceof URL?i("music:album",n):[i("music:album:disc",n?.disc),i("music:album:track",n?.track),i("music:album",n?.url)]),i("music:duration",r.duration),d(r.musicians,n=>i("music:musician",n))]}function c(r){return r.type!=="music.album"?null:[d(r.musicians,n=>i("music:musician",n)),i("music:release_date",r.releaseDate),d(r.songs,n=>typeof n=="string"||n instanceof URL?i("music:song",n):[i("music:song:disc",n?.disc),i("music:song:track",n?.track),i("music:song",n?.url)])]}function M(r){return r.type!=="music.playlist"?null:[d(r.creators,n=>i("music:creator",n)),d(r.songs,n=>typeof n=="string"||n instanceof URL?i("music:song",n):[i("music:song:disc",n?.disc),i("music:song:track",n?.track),i("music:song",n?.url)])]}function P(r){return r.type!=="music.radio_station"?null:d(r.creators,n=>i("music:creator",n))}function S(r){return r.type!=="video.movie"?null:[d(r.actors,n=>typeof n=="string"||n instanceof URL?i("video:actor",n):[i("video:actor:role",n?.role),i("video:actor",n?.url)]),d(r.directors,n=>i("video:director",n)),i("video:duration",r.duration),i("video:release_date",r.releaseDate),d(r.tags,n=>i("video.tag",n)),d(r.writers,n=>i("video:writer",n))]}function k(r){return r.type!=="video.episode"?null:[d(r.actors,n=>typeof n=="string"||n instanceof URL?i("video:actor",n):[i("video:actor:role",n?.role),i("video:actor",n?.url)]),d(r.directors,n=>i("video:director",n)),i("video:duration",r.duration),i("video:release_date",r.releaseDate),i("video:series",r.series),d(r.tags,n=>i("video.tag",n)),d(r.writers,n=>i("video:writer",n))]}return[d(e?.alternateLocale,r=>i("og:locale:alternate",r)),d(e?.audio,r=>typeof r=="string"||r instanceof URL?i("og:audio",r?.toString()):[i("og:audio",r?.url),i("og:audio:type",r?.type)]),i("og:country-name",e?.countryName),i("og:determiner",e?.determiner),d(e?.emails,r=>i("og:email",r)),d(e?.faxNumbers,r=>i("og:fax_number",r)),d(e?.images,r=>typeof r=="string"||r instanceof URL?i("og:image",r?.toString()):[i("og:image",r?.url),i("og:image:secure_url",r?.secureUrl),i("og:image:width",r?.width),i("og:image:height",r?.height),i("og:image:alt",r?.alt)]),i("og:locale",e?.locale),d(e?.phoneNumbers,r=>i("og:phone_number",r)),i("og:site_name",e?.siteName),i("og:ttl",e?.ttl),i("og:url",e?.url),d(e?.videos,r=>typeof r=="string"||r instanceof URL?i("og:video",r?.toString()):[i("og:video",r?.url),i("og:video:secure_url",r?.secureUrl),i("og:video:type",r?.type),i("og:video:width",r?.width),i("og:video:height",r?.height)]),i("og:type",e?.type),t(e),o(e),a(e),u(e),c(e),M(e),P(e),S(e),k(e)]}function V(e){if(!e)return null;function t(o){return o?[s("twitter:app:id:googleplay",o?.id?.googleplay),s("twitter:app:url:googleplay",o?.url?.googleplay),s("twitter:app:id:iphone",o?.id?.iphone),s("twitter:app:url:iphone",o?.url?.iphone),s("twitter:app:id:ipad",o?.id?.ipad),s("twitter:app:url:ipad",o?.url?.ipad),s("twitter:app:name:googleplay",o?.id?.googleplay?o?.name:void 0),s("twitter:app:name:iphone",o?.id?.iphone?o?.name:void 0),s("twitter:app:name:ipad",o?.id?.ipad?o?.name:void 0)]:null}return[s("twitter:creator",e.creator),s("twitter:creator:id",e.creatorId),s("twitter:description",e.description),s("twitter:site",e.site),s("twitter:site:id",e.siteId),s("twitter:title",e.title),s("twitter:card",e.card),d(e?.images,o=>typeof o=="string"||o instanceof URL?s("twitter:image",o?.toString()):[s("twitter:image",o.url?.toString()),s("twitter:image:alt",o.alt)]),d(e?.players,o=>[s("twitter:player",o.playerUrl),s("twitter:player:width",o.width),s("twitter:player:height",o.height),s("twitter:player:stream",o.streamUrl)]),t(e?.app)]}function B(e){return e?[s("color-scheme",e.colorScheme),d(e.themeColor,t=>typeof t=="string"?s("theme-color",t):t.media?p("meta",{name:"theme-color",media:t.media,content:t.color}):p("meta",{name:"theme-color",content:t.color})),s("viewport",y(e))]:null}function w(e){return e?Object.entries(e).map(([t,o])=>Array.isArray(o)?d(o,a=>s(t,a)):s(t,o)):null}export{Q as initUseMetadata,G as useMetadata};
//# sourceMappingURL=index.js.map