@unhead/schema-org
Version:
Unhead Schema.org for Simple and Automated Google Rich Results
303 lines (298 loc) • 12.7 kB
JavaScript
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 };