@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
42 lines (41 loc) • 1.39 kB
JavaScript
import { sentenceCase } from "../lib/changeCase.js";
import { createFaker } from "../lib/createFaker.js";
import { link as link$1 } from "../model/link.js";
import { contentRelationship } from "./contentRelationship.js";
import { linkToMedia } from "./linkToMedia.js";
import * as prismic from "@prismicio/client";
//#region src/value/link.ts
const link = (config) => {
const faker = config.faker || createFaker(config.seed);
const type = config.type || faker.randomElement([
prismic.LinkType.Web,
prismic.LinkType.Document,
prismic.LinkType.Media
]);
if (config.state === "empty") return { link_type: type };
else switch (type) {
case prismic.LinkType.Document: return contentRelationship({
faker,
state: config.state,
linkableDocuments: config.linkableDocuments
});
case prismic.LinkType.Media: return linkToMedia({
faker,
state: config.state,
withText: config.withText
});
case prismic.LinkType.Web:
default: {
const model = config.model || link$1({ faker });
return {
link_type: prismic.LinkType.Web,
url: faker.url(),
target: config.withTargetBlank ?? (model.config?.allowTargetBlank && faker.boolean()) ? "_blank" : void 0,
...config.withText ?? (model.config?.allowText && faker.boolean()) ? { text: sentenceCase(faker.words(2)) } : {}
};
}
}
};
//#endregion
export { link };
//# sourceMappingURL=link.js.map