import type * as prismic from "@prismicio/client" import { createFaker } from "../lib/createFaker" import * as modelGen from "../model" import type { MockValueConfig, ModelValue } from "../types" import { sharedSliceVariation, type MockSharedSliceVariationValueConfig, } from "./sharedSliceVariation" export type MockSharedSliceValueConfig< Model extends prismic.SharedSliceModel = prismic.SharedSliceModel, > = Pick< MockSharedSliceVariationValueConfig, "itemsCount" | "primaryFieldConfigs" | "itemsFieldConfigs" > & MockValueConfig export const sharedSlice = ( config: MockSharedSliceValueConfig, ): ModelValue => { const faker = config.faker || createFaker(config.seed) const model = config.model || modelGen.sharedSlice({ faker }) const variationModel = faker.randomElement(model.variations) return sharedSliceVariation({ faker, model: variationModel, itemsCount: config.itemsCount, type: model.id, primaryFieldConfigs: config.primaryFieldConfigs, itemsFieldConfigs: config.itemsFieldConfigs, }) as ModelValue }