UNPKG

@unhead/schema-org

Version:

Unhead Schema.org for Simple and Automated Google Rich Results

303 lines (298 loc) 12.7 kB
import { aQ as schemaAutoImports, U as UnheadSchemaOrg, ax as normalizeSchemaOrgInput, h as addressResolver, i as aggregateOfferResolver, j as aggregateRatingResolver, k as articleResolver, n as breadcrumbResolver, o as commentResolver, ah as eventResolver, ai as foodEstablishmentResolver, aZ as virtualLocationResolver, aC as placeResolver, aj as howToResolver, al as howToStepResolver, am as imageResolver, ao as jobPostingResolver, aq as localBusinessResolver, ay as offerResolver, az as openingHoursResolver, aA as organizationResolver, aB as personResolver, aG as productResolver, aH as questionResolver, aK as recipeResolver, aP as reviewResolver, aY as videoResolver, a_ as webPageResolver, a$ as webSiteResolver, m as bookResolver, p as courseResolver, an as itemListResolver, ap as listItemResolver, as as movieResolver, aR as searchActionResolver, aJ as readActionResolver, aT as softwareAppResolver, l as bookEditionResolver, r as datasetResolver, aw as musicRecordingResolver, at as musicAlbumResolver, au as musicGroupResolver, av as musicPlaylistResolver, aF as podcastSeriesResolver, aD as podcastEpisodeResolver, aE as podcastSeasonResolver, aW as tvSeriesResolver, aV as tvSeasonResolver, aU as tvEpisodeResolver, aS as serviceResolver } from './shared/schema-org.DYFTMLZ0.mjs'; import { defineComponent, ref, computed, unref, h, toValue } from 'vue'; import { injectHead, useHead } from '@unhead/vue'; import 'ufo'; import 'unhead/plugins'; import 'unhead/utils'; const schemaOrgAutoImports = [ { from: "@unhead/schema-org/vue", imports: schemaAutoImports } ]; const schemaOrgComponents = [ "SchemaOrgArticle", "SchemaOrgBreadcrumb", "SchemaOrgComment", "SchemaOrgEvent", "SchemaOrgFoodEstablishment", "SchemaOrgHowTo", "SchemaOrgImage", "SchemaOrgJobPosting", "SchemaOrgLocalBusiness", "SchemaOrgOrganization", "SchemaOrgPerson", "SchemaOrgProduct", "SchemaOrgQuestion", "SchemaOrgRecipe", "SchemaOrgReview", "SchemaOrgVideo", "SchemaOrgWebPage", "SchemaOrgWebSite", "SchemaOrgMovie", "SchemaOrgCourse", "SchemaOrgItemList", "SchemaOrgBook", "SchemaOrgSoftwareApp" ]; function SchemaOrgResolver(options = {}) { const { prefix = "" } = options; return { type: "component", resolve: (name) => { if (name.startsWith(prefix)) { const componentName = name.substring(prefix.length); if (schemaOrgComponents.includes(componentName)) { return { name: componentName, from: "@unhead/schema-org/vue" }; } } } }; } const KEBAB_RE = /-./g; function shallowVNodesToText(nodes) { let text = ""; for (const node of nodes) { if (typeof node.children === "string") text += node.children.trim(); } return text; } function fixKey(s) { let key = s.replace(KEBAB_RE, (x) => x[1].toUpperCase()); if (key === "type" || key === "id") key = `@${key}`; return key; } function ignoreKey(s) { if (s.startsWith("aria-") || s.startsWith("data-")) return false; return s === "class" || s === "style"; } function defineSchemaOrgComponent(name, defineFn) { return defineComponent({ name, props: { as: String }, setup(props, { slots, attrs }) { const node = ref(null); const nodePartial = computed(() => { const val = {}; Object.entries(unref(attrs)).forEach(([key, value]) => { if (!ignoreKey(key)) { val[fixKey(key)] = unref(value); } }); if (!node.value) { for (const [key, slot] of Object.entries(slots)) { if (!slot || key === "default") continue; val[fixKey(key)] = shallowVNodesToText(slot(props)); } } return val; }); if (defineFn) { useSchemaOrg(defineFn(unref(nodePartial))); } return () => { const data = unref(nodePartial); if (!slots.default) return null; const childSlots = []; if (slots.default) childSlots.push(slots.default(data)); return h(props.as || "div", {}, childSlots); }; } }); } const SchemaOrgArticle = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgArticle", defineArticle); const SchemaOrgBreadcrumb = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgBreadcrumb", defineBreadcrumb); const SchemaOrgComment = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgComment", defineComment); const SchemaOrgEvent = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgEvent", defineEvent); const SchemaOrgFoodEstablishment = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgFoodEstablishment", defineFoodEstablishment); const SchemaOrgHowTo = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgHowTo", defineHowTo); const SchemaOrgImage = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgImage", defineImage); const SchemaOrgJobPosting = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgJobPosting", defineJobPosting); const SchemaOrgLocalBusiness = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgLocalBusiness", defineLocalBusiness); const SchemaOrgOrganization = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgOrganization", defineOrganization); const SchemaOrgPerson = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgPerson", definePerson); const SchemaOrgProduct = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgProduct", defineProduct); const SchemaOrgQuestion = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgQuestion", defineQuestion); const SchemaOrgRecipe = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgRecipe", defineRecipe); const SchemaOrgReview = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgReview", defineReview); const SchemaOrgVideo = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgVideo", defineVideo); const SchemaOrgWebPage = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgWebPage", defineWebPage); const SchemaOrgWebSite = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgWebSite", defineWebSite); const SchemaOrgMovie = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgMovie", defineMovie); const SchemaOrgCourse = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgCourse", defineCourse); const SchemaOrgItemList = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgItemList", defineItemList); const SchemaOrgBook = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgBook", defineBook); const SchemaOrgSoftwareApp = /* @__PURE__ */ defineSchemaOrgComponent("SchemaOrgSoftwareApp", defineSoftwareApp); function provideResolver(input, resolver) { if (!input) input = {}; if (input && typeof input === "object" && "__v_isRef" in input) { const inner = toValue(input); if (inner && typeof inner === "object") { inner._resolver = resolver; } return input; } return { ...input, _resolver: resolver }; } function defineAddress(input) { return provideResolver(input, addressResolver); } function defineAggregateOffer(input) { return provideResolver(input, aggregateOfferResolver); } function defineAggregateRating(input) { return provideResolver(input, aggregateRatingResolver); } function defineArticle(input) { return provideResolver(input, articleResolver); } function defineBreadcrumb(input) { return provideResolver(input, breadcrumbResolver); } function defineComment(input) { return provideResolver(input, commentResolver); } function defineEvent(input) { return provideResolver(input, eventResolver); } function defineFoodEstablishment(input) { return provideResolver(input, foodEstablishmentResolver); } function defineVirtualLocation(input) { return provideResolver(input, virtualLocationResolver); } function definePlace(input) { return provideResolver(input, placeResolver); } function defineHowTo(input) { return provideResolver(input, howToResolver); } function defineHowToStep(input) { return provideResolver(input, howToStepResolver); } function defineImage(input) { return provideResolver(input, imageResolver); } function defineJobPosting(input) { return provideResolver(input, jobPostingResolver); } function defineLocalBusiness(input) { return provideResolver(input, localBusinessResolver); } function defineOffer(input) { return provideResolver(input, offerResolver); } function defineOpeningHours(input) { return provideResolver(input, openingHoursResolver); } function defineOrganization(input) { return provideResolver(input, organizationResolver); } function definePerson(input) { return provideResolver(input, personResolver); } function defineProduct(input) { return provideResolver(input, productResolver); } function defineQuestion(input) { return provideResolver(input, questionResolver); } function defineRecipe(input) { return provideResolver(input, recipeResolver); } function defineReview(input) { return provideResolver(input, reviewResolver); } function defineVideo(input) { return provideResolver(input, videoResolver); } function defineWebPage(input) { return provideResolver(input, webPageResolver); } function defineWebSite(input) { return provideResolver(input, webSiteResolver); } function defineBook(input) { return provideResolver(input, bookResolver); } function defineCourse(input) { return provideResolver(input, courseResolver); } function defineItemList(input) { return provideResolver(input, itemListResolver); } function defineListItem(input) { return provideResolver(input, listItemResolver); } function defineMovie(input) { return provideResolver(input, movieResolver); } function defineSearchAction(input) { return provideResolver(input, searchActionResolver); } function defineReadAction(input) { return provideResolver(input, readActionResolver); } function defineSoftwareApp(input) { return provideResolver(input, softwareAppResolver); } function defineBookEdition(input) { return provideResolver(input, bookEditionResolver); } function defineDataset(input) { return provideResolver(input, datasetResolver); } function defineMusicRecording(input) { return provideResolver(input, musicRecordingResolver); } function defineMusicAlbum(input) { return provideResolver(input, musicAlbumResolver); } function defineMusicGroup(input) { return provideResolver(input, musicGroupResolver); } function defineMusicPlaylist(input) { return provideResolver(input, musicPlaylistResolver); } function definePodcastSeries(input) { return provideResolver(input, podcastSeriesResolver); } function definePodcastEpisode(input) { return provideResolver(input, podcastEpisodeResolver); } function definePodcastSeason(input) { return provideResolver(input, podcastSeasonResolver); } function defineTVSeries(input) { return provideResolver(input, tvSeriesResolver); } function defineTVSeason(input) { return provideResolver(input, tvSeasonResolver); } function defineTVEpisode(input) { return provideResolver(input, tvEpisodeResolver); } function defineService(input) { return provideResolver(input, serviceResolver); } function useSchemaOrg(input = [], options = {}) { const unhead = options.head || injectHead(); unhead.use(UnheadSchemaOrg()); const entry = useHead(normalizeSchemaOrgInput(input), options); const corePatch = entry.patch; entry.patch = (input2) => corePatch(normalizeSchemaOrgInput(input2)); return entry; } export { SchemaOrgArticle, SchemaOrgBook, SchemaOrgBreadcrumb, SchemaOrgComment, SchemaOrgCourse, SchemaOrgEvent, SchemaOrgFoodEstablishment, SchemaOrgHowTo, SchemaOrgImage, SchemaOrgItemList, SchemaOrgJobPosting, SchemaOrgLocalBusiness, SchemaOrgMovie, SchemaOrgOrganization, SchemaOrgPerson, SchemaOrgProduct, SchemaOrgQuestion, SchemaOrgRecipe, SchemaOrgResolver, SchemaOrgReview, SchemaOrgSoftwareApp, SchemaOrgVideo, SchemaOrgWebPage, SchemaOrgWebSite, UnheadSchemaOrg, defineAddress, defineAggregateOffer, defineAggregateRating, defineArticle, defineBook, defineBookEdition, defineBreadcrumb, defineComment, defineCourse, defineDataset, defineEvent, defineFoodEstablishment, defineHowTo, defineHowToStep, defineImage, defineItemList, defineJobPosting, defineListItem, defineLocalBusiness, defineMovie, defineMusicAlbum, defineMusicGroup, defineMusicPlaylist, defineMusicRecording, defineOffer, defineOpeningHours, defineOrganization, definePerson, definePlace, definePodcastEpisode, definePodcastSeason, definePodcastSeries, defineProduct, defineQuestion, defineReadAction, defineRecipe, defineReview, defineSchemaOrgComponent, defineSearchAction, defineService, defineSoftwareApp, defineTVEpisode, defineTVSeason, defineTVSeries, defineVideo, defineVirtualLocation, defineWebPage, defineWebSite, schemaOrgAutoImports, schemaOrgComponents, useSchemaOrg };