@unhead/schema-org
Version:
Unhead Schema.org for Simple and Automated Google Rich Results
264 lines (259 loc) • 9.99 kB
JavaScript
import { U as UnheadSchemaOrg, a3 as normalizeSchemaOrgInput } from './shared/schema-org.Cp6bpwL2.mjs';
export { P as PluginSchemaOrg, S as SchemaOrgUnheadPlugin } from './shared/schema-org.Cp6bpwL2.mjs';
import { s as schemaAutoImports } from './shared/schema-org.CHbRCiep.mjs';
import { defineComponent, ref, computed, unref, h, isRef } from 'vue';
import { injectHead, useHead } from '@unhead/vue';
import 'unhead/plugins';
import 'unhead/utils';
import 'ufo';
const schemaOrgAutoImports = [
{
from: "@unhead/schema-org/vue",
imports: schemaAutoImports
}
];
const schemaOrgComponents = [
"SchemaOrgDebug",
"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"
};
}
}
}
};
}
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(/-./g, (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 = {};
const target = isRef(input) ? input.value : input;
target._resolver = resolver;
return input;
}
function defineAddress(input) {
return provideResolver(input, "address");
}
function defineAggregateOffer(input) {
return provideResolver(input, "aggregateOffer");
}
function defineAggregateRating(input) {
return provideResolver(input, "aggregateRating");
}
function defineArticle(input) {
return provideResolver(input, "article");
}
function defineBreadcrumb(input) {
return provideResolver(input, "breadcrumb");
}
function defineComment(input) {
return provideResolver(input, "comment");
}
function defineEvent(input) {
return provideResolver(input, "event");
}
function defineFoodEstablishment(input) {
return provideResolver(input, "foodEstablishment");
}
function defineVirtualLocation(input) {
return provideResolver(input, "virtualLocation");
}
function definePlace(input) {
return provideResolver(input, "place");
}
function defineHowTo(input) {
return provideResolver(input, "howTo");
}
function defineHowToStep(input) {
return provideResolver(input, "howToStep");
}
function defineImage(input) {
return provideResolver(input, "image");
}
function defineJobPosting(input) {
return provideResolver(input, "jobPosting");
}
function defineLocalBusiness(input) {
return provideResolver(input, "localBusiness");
}
function defineOffer(input) {
return provideResolver(input, "offer");
}
function defineOpeningHours(input) {
return provideResolver(input, "openingHours");
}
function defineOrganization(input) {
return provideResolver(input, "organization");
}
function definePerson(input) {
return provideResolver(input, "person");
}
function defineProduct(input) {
return provideResolver(input, "product");
}
function defineQuestion(input) {
return provideResolver(input, "question");
}
function defineRecipe(input) {
return provideResolver(input, "recipe");
}
function defineReview(input) {
return provideResolver(input, "review");
}
function defineVideo(input) {
return provideResolver(input, "video");
}
function defineWebPage(input) {
return provideResolver(input, "webPage");
}
function defineWebSite(input) {
return provideResolver(input, "webSite");
}
function defineBook(input) {
return provideResolver(input, "book");
}
function defineCourse(input) {
return provideResolver(input, "course");
}
function defineItemList(input) {
return provideResolver(input, "itemList");
}
function defineListItem(input) {
return provideResolver(input, "listItem");
}
function defineMovie(input) {
return provideResolver(input, "movie");
}
function defineSearchAction(input) {
return provideResolver(input, "searchAction");
}
function defineReadAction(input) {
return provideResolver(input, "readAction");
}
function defineSoftwareApp(input) {
return provideResolver(input, "softwareApp");
}
function defineBookEdition(input) {
return provideResolver(input, "bookEdition");
}
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, defineAddress, defineAggregateOffer, defineAggregateRating, defineArticle, defineBook, defineBookEdition, defineBreadcrumb, defineComment, defineCourse, defineEvent, defineFoodEstablishment, defineHowTo, defineHowToStep, defineImage, defineItemList, defineJobPosting, defineListItem, defineLocalBusiness, defineMovie, defineOffer, defineOpeningHours, defineOrganization, definePerson, definePlace, defineProduct, defineQuestion, defineReadAction, defineRecipe, defineReview, defineSchemaOrgComponent, defineSearchAction, defineSoftwareApp, defineVideo, defineVirtualLocation, defineWebPage, defineWebSite, schemaOrgAutoImports, schemaOrgComponents, useSchemaOrg };