@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
52 lines (51 loc) • 1.61 kB
JavaScript
import * as prismic from "@prismicio/client";
import { sentenceCase } from "../lib/changeCase.js";
import { createFaker } from "../lib/createFaker.js";
import { contentRelationship } from "./contentRelationship.js";
import { linkToMedia } from "./linkToMedia.js";
import { link as link$1 } from "../model/link.js";
const link = (config) => {
var _a, _b;
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 ?? (((_a = model.config) == null ? void 0 : _a.allowTargetBlank) && faker.boolean()) ? "_blank" : void 0,
...config.withText ?? (((_b = model.config) == null ? void 0 : _b.allowText) && faker.boolean()) ? { text: sentenceCase(faker.words(2)) } : {}
};
}
}
}
};
export {
link
};
//# sourceMappingURL=link.js.map