@sanity/personalization-plugin

3.0.53.0.6
dist/_chunks-es/fieldExperiments.js
+dist/_chunks-es/fieldExperiments.jsNew file
+498
Index: package/dist/_chunks-es/fieldExperiments.js
===================================================================
--- package/dist/_chunks-es/fieldExperiments.js
+++ package/dist/_chunks-es/fieldExperiments.js
@@ -0,0 +1,498 @@
+import { defineDocumentFieldAction, defineField, definePlugin, defineType, getPublishedId, isDocumentSchemaType, isImage, isObjectInputProps, isReference, set, unset, useClient, useDocumentOperation, useFormValue, useWorkspace } from "sanity";
+import { c } from "react/compiler-runtime";
+import { Button, Card, Inline, Select, Stack, Text } from "@sanity/ui";
+import { uuid } from "@sanity/uuid";
+import { createContext, useContext, useEffect, useState } from "react";
+import equal from "fast-deep-equal";
+import { suspend } from "suspend-react";
+import { jsx, jsxs } from "react/jsx-runtime";
+import { CloseIcon } from "@sanity/icons/Close";
+import { GiSoapExperiment } from "react-icons/gi";
+const CONFIG_DEFAULT = {
+	fields: [],
+	apiVersion: "2024-11-07",
+	experimentNameOverride: "experiment",
+	variantNameOverride: "variant",
+	variantId: "variantId",
+	variantArrayName: "variants",
+	experimentId: "experimentId"
+}, ExperimentContext = createContext({
+	...CONFIG_DEFAULT,
+	experiments: []
+});
+function useExperimentContext() {
+	return useContext(ExperimentContext);
+}
+function ExperimentProvider(props) {
+	let $ = c(14), { experimentFieldPluginConfig } = props, t0;
+	$[0] === experimentFieldPluginConfig.apiVersion ? t0 = $[1] : (t0 = { apiVersion: experimentFieldPluginConfig.apiVersion }, $[0] = experimentFieldPluginConfig.apiVersion, $[1] = t0);
+	let client = useClient(t0), workspace = useWorkspace(), t1;
+	$[2] !== client || $[3] !== experimentFieldPluginConfig || $[4] !== workspace ? (t1 = Array.isArray(experimentFieldPluginConfig.experiments) ? experimentFieldPluginConfig.experiments : suspend(async () => typeof experimentFieldPluginConfig.experiments == "function" ? experimentFieldPluginConfig.experiments(client) : experimentFieldPluginConfig.experiments, [workspace], { equal }), $[2] = client, $[3] = experimentFieldPluginConfig, $[4] = workspace, $[5] = t1) : t1 = $[5];
+	let experiments = t1, t2;
+	$[6] !== experimentFieldPluginConfig || $[7] !== experiments ? (t2 = {
+		...experimentFieldPluginConfig,
+		experiments
+	}, $[6] = experimentFieldPluginConfig, $[7] = experiments, $[8] = t2) : t2 = $[8];
+	let context = t2, t3;
+	$[9] === props ? t3 = $[10] : (t3 = props.renderDefault(props), $[9] = props, $[10] = t3);
+	let t4;
+	return $[11] !== context || $[12] !== t3 ? (t4 = /* @__PURE__ */ jsx(ExperimentContext.Provider, {
+		value: context,
+		children: t3
+	}), $[11] = context, $[12] = t3, $[13] = t4) : t4 = $[13], t4;
+}
+const ArrayInput = (props) => {
+	let $ = c(35), experimentId, onItemAppend, t0, t1, variantId, variantName;
+	if ($[0] !== props) {
+		let fieldPath = props.path.slice(0, -1);
+		({onItemAppend, variantName, variantId, experimentId} = props), t0 = useFormValue, t1 = [...fieldPath, experimentId], $[0] = props, $[1] = experimentId, $[2] = onItemAppend, $[3] = t0, $[4] = t1, $[5] = variantId, $[6] = variantName;
+	} else experimentId = $[1], onItemAppend = $[2], t0 = $[3], t1 = $[4], variantId = $[5], variantName = $[6];
+	let experimentValue = t0(t1), { experiments } = useExperimentContext(), t2;
+	$[7] !== experimentId || $[8] !== experimentValue || $[9] !== onItemAppend || $[10] !== variantId || $[11] !== variantName ? (t2 = async (variant) => {
+		let item = {
+			_key: uuid(),
+			[variantId]: variant.id,
+			[experimentId]: experimentValue,
+			_type: variantName
+		};
+		onItemAppend(item);
+	}, $[7] = experimentId, $[8] = experimentValue, $[9] = onItemAppend, $[10] = variantId, $[11] = variantName, $[12] = t2) : t2 = $[12];
+	let handleClick = t2, T0, T1, t3, t4, t5, t6;
+	if ($[13] !== experimentValue || $[14] !== experiments || $[15] !== handleClick || $[16] !== props || $[17] !== variantId) {
+		let filteredVariants = experiments.find((option) => option.id === experimentValue)?.variants || [], usedVariants = (props.value || [])?.map((variant_0) => variant_0[variantId]);
+		T1 = Stack, t5 = 3, $[24] === props ? t6 = $[25] : (t6 = props.renderDefault({
+			...props,
+			arrayFunctions: _temp$2
+		}), $[24] = props, $[25] = t6), T0 = Inline, t3 = 1, t4 = filteredVariants.map((variant_1) => /* @__PURE__ */ jsx(Button, {
+			text: `Add ${variant_1.label}`,
+			mode: "ghost",
+			disabled: usedVariants?.includes(variant_1.id),
+			onClick: () => handleClick(variant_1)
+		}, `${experimentValue}-${variant_1.id}`)), $[13] = experimentValue, $[14] = experiments, $[15] = handleClick, $[16] = props, $[17] = variantId, $[18] = T0, $[19] = T1, $[20] = t3, $[21] = t4, $[22] = t5, $[23] = t6;
+	} else T0 = $[18], T1 = $[19], t3 = $[20], t4 = $[21], t5 = $[22], t6 = $[23];
+	let t7;
+	$[26] !== T0 || $[27] !== t3 || $[28] !== t4 ? (t7 = /* @__PURE__ */ jsx(T0, {
+		gap: t3,
+		children: t4
+	}), $[26] = T0, $[27] = t3, $[28] = t4, $[29] = t7) : t7 = $[29];
+	let t8;
+	return $[30] !== T1 || $[31] !== t5 || $[32] !== t6 || $[33] !== t7 ? (t8 = /* @__PURE__ */ jsxs(T1, {
+		gap: t5,
+		children: [t6, t7]
+	}), $[30] = T1, $[31] = t5, $[32] = t6, $[33] = t7, $[34] = t8) : t8 = $[34], t8;
+};
+function _temp$2() {
+	return null;
+}
+const useAddExperimentAction = (props) => {
+	let $ = c(6), { onChange, active, experimentNameOverride } = props, t0;
+	$[0] !== active || $[1] !== onChange ? (t0 = () => {
+		onChange([set(!active, ["active"])]);
+	}, $[0] = active, $[1] = onChange, $[2] = t0) : t0 = $[2];
+	let handleAddAction = t0, t1 = `Add ${experimentNameOverride}`, t2;
+	return $[3] !== handleAddAction || $[4] !== t1 ? (t2 = {
+		title: t1,
+		type: "action",
+		icon: GiSoapExperiment,
+		onAction: handleAddAction,
+		renderAsButton: !0
+	}, $[3] = handleAddAction, $[4] = t1, $[5] = t2) : t2 = $[5], t2;
+}, useRemoveExperimentAction = (props) => {
+	let $ = c(8), { onChange, active, experimentId, experimentNameOverride, variantNameOverride } = props, t0;
+	$[0] !== active || $[1] !== experimentId || $[2] !== onChange || $[3] !== variantNameOverride ? (t0 = () => {
+		let activeId = ["active"], experiment = [experimentId], variants = [`${variantNameOverride}s`];
+		onChange([
+			set(!active, activeId),
+			unset(experiment),
+			unset(variants)
+		]);
+	}, $[0] = active, $[1] = experimentId, $[2] = onChange, $[3] = variantNameOverride, $[4] = t0) : t0 = $[4];
+	let handleClearAction = t0, t1 = `Remove ${experimentNameOverride}`, t2;
+	return $[5] !== handleClearAction || $[6] !== t1 ? (t2 = {
+		title: t1,
+		type: "action",
+		icon: CloseIcon,
+		onAction: handleClearAction,
+		renderAsButton: !0
+	}, $[5] = handleClearAction, $[6] = t1, $[7] = t2) : t2 = $[7], t2;
+}, createActions = ({ onChange, inputId, active, experimentNameOverride, experimentId, variantNameOverride }) => {
+	let removeAction = defineDocumentFieldAction({
+		name: `Remove ${experimentNameOverride}`,
+		useAction: (props) => useRemoveExperimentAction({
+			...props,
+			active: !0,
+			onChange,
+			inputId,
+			experimentNameOverride,
+			experimentId,
+			variantNameOverride
+		})
+	}), addAction = defineDocumentFieldAction({
+		name: `Add ${experimentNameOverride}`,
+		useAction: (props) => useAddExperimentAction({
+			...props,
+			active: !1,
+			onChange,
+			inputId,
+			experimentNameOverride,
+			experimentId
+		})
+	});
+	return active ? removeAction : addAction;
+}, ExperimentField = (props) => {
+	let $ = c(20), { onChange } = props.inputProps, { inputId, experimentNameOverride, experimentId, variantNameOverride } = props, active = props.value?.active, t0;
+	$[0] !== active || $[1] !== experimentId || $[2] !== experimentNameOverride || $[3] !== inputId || $[4] !== onChange || $[5] !== variantNameOverride ? (t0 = {
+		onChange,
+		inputId,
+		active,
+		experimentNameOverride,
+		experimentId,
+		variantNameOverride
+	}, $[0] = active, $[1] = experimentId, $[2] = experimentNameOverride, $[3] = inputId, $[4] = onChange, $[5] = variantNameOverride, $[6] = t0) : t0 = $[6];
+	let actionProps = t0, t1;
+	$[7] === props.actions ? t1 = $[8] : (t1 = props.actions || [], $[7] = props.actions, $[8] = t1);
+	let oldActions = t1, t2;
+	$[9] === actionProps ? t2 = $[10] : (t2 = createActions(actionProps), $[9] = actionProps, $[10] = t2);
+	let t3;
+	$[11] !== oldActions || $[12] !== t2 ? (t3 = [t2, ...oldActions], $[11] = oldActions, $[12] = t2, $[13] = t3) : t3 = $[13];
+	let memoizedActions = t3, t4;
+	$[14] !== memoizedActions || $[15] !== props ? (t4 = {
+		...props,
+		actions: memoizedActions
+	}, $[14] = memoizedActions, $[15] = props, $[16] = t4) : t4 = $[16];
+	let withActionProps = t4, t5;
+	return $[17] !== props.renderDefault || $[18] !== withActionProps ? (t5 = props.renderDefault(withActionProps), $[17] = props.renderDefault, $[18] = withActionProps, $[19] = t5) : t5 = $[19], t5;
+}, Select$1 = (props) => {
+	let $ = c(12), { value, onChange, elementProps, listOptions, handleChange } = props, t0;
+	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = [
+		3,
+		3,
+		4
+	], $[0] = t0) : t0 = $[0];
+	let t1 = value || "", t2;
+	$[1] !== handleChange || $[2] !== onChange ? (t2 = (event) => handleChange(event, onChange), $[1] = handleChange, $[2] = onChange, $[3] = t2) : t2 = $[3];
+	let t3;
+	$[4] === Symbol.for("react.memo_cache_sentinel") ? (t3 = /* @__PURE__ */ jsx("option", {
+		value: "",
+		children: "Select an option..."
+	}), $[4] = t3) : t3 = $[4];
+	let t4;
+	$[5] === listOptions ? t4 = $[6] : (t4 = listOptions.map(_temp$1), $[5] = listOptions, $[6] = t4);
+	let t5;
+	return $[7] !== elementProps || $[8] !== t1 || $[9] !== t2 || $[10] !== t4 ? (t5 = /* @__PURE__ */ jsxs(Select, {
+		...elementProps,
+		fontSize: 2,
+		padding: 3,
+		gap: t0,
+		value: t1,
+		onChange: t2,
+		children: [t3, t4]
+	}), $[7] = elementProps, $[8] = t1, $[9] = t2, $[10] = t4, $[11] = t5) : t5 = $[11], t5;
+};
+function _temp$1(t0) {
+	let { value: optionValue, title } = t0;
+	return /* @__PURE__ */ jsx("option", {
+		value: optionValue,
+		children: title
+	}, optionValue);
+}
+const formatlistOptions = (experiments) => experiments.map((experiment) => ({
+	title: experiment.label,
+	value: experiment.id
+})), ExperimentInput = (props) => {
+	let $ = c(20), { experiments } = useExperimentContext(), t0;
+	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = ["_id"], $[0] = t0) : t0 = $[0];
+	let id = useFormValue(t0), t1;
+	$[1] !== props.path || $[2] !== props.variantNameOverride ? (t1 = [...props.path.slice(0, -1), `${props.variantNameOverride}s`], $[1] = props.path, $[2] = props.variantNameOverride, $[3] = t1) : t1 = $[3];
+	let additionalChangePath = t1, subValues = useFormValue(additionalChangePath), t2;
+	$[4] === id ? t2 = $[5] : (t2 = getPublishedId(id), $[4] = id, $[5] = t2);
+	let { patch } = useDocumentOperation(t2, props.schemaType.name), t3;
+	$[6] !== additionalChangePath || $[7] !== patch || $[8] !== subValues ? (t3 = (event, onChange) => {
+		let inputValue = event.currentTarget.value;
+		if (onChange(inputValue ? set(inputValue) : unset()), subValues) {
+			let patchEvent = { unset: [additionalChangePath.join(".")] };
+			patch.execute([patchEvent]);
+		}
+	}, $[6] = additionalChangePath, $[7] = patch, $[8] = subValues, $[9] = t3) : t3 = $[9];
+	let handleChange = t3;
+	if (!experiments.length) {
+		let t4;
+		$[10] === Symbol.for("react.memo_cache_sentinel") ? (t4 = [
+			3,
+			3,
+			4
+		], $[10] = t4) : t4 = $[10];
+		let t5;
+		$[11] === Symbol.for("react.memo_cache_sentinel") ? (t5 = [
+			2,
+			2,
+			3
+		], $[11] = t5) : t5 = $[11];
+		let t6;
+		return $[12] === props.experimentNameOverride ? t6 = $[13] : (t6 = /* @__PURE__ */ jsx(Card, {
+			padding: t4,
+			radius: 2,
+			shadow: 1,
+			tone: "caution",
+			children: /* @__PURE__ */ jsxs(Text, {
+				align: "center",
+				size: t5,
+				children: [
+					"There are no defined ",
+					props.experimentNameOverride,
+					"s"
+				]
+			})
+		}), $[12] = props.experimentNameOverride, $[13] = t6), t6;
+	}
+	let t4;
+	$[14] === experiments ? t4 = $[15] : (t4 = formatlistOptions(experiments), $[14] = experiments, $[15] = t4);
+	let t5;
+	return $[16] !== handleChange || $[17] !== props || $[18] !== t4 ? (t5 = /* @__PURE__ */ jsx(Select$1, {
+		...props,
+		listOptions: t4,
+		handleChange
+	}), $[16] = handleChange, $[17] = props, $[18] = t4, $[19] = t5) : t5 = $[19], t5;
+}, ExperimentItem = (props) => {
+	let { active } = props.value;
+	return active || props.inputProps.onChange(set(!0, ["active"])), props.renderDefault(props);
+}, VariantInput = (props) => {
+	let $ = c(13), t0, t1;
+	if ($[0] !== props.path) {
+		let experimentPath = props.path.slice(0, -2);
+		t0 = useFormValue, t1 = [...experimentPath, "default"], $[0] = props.path, $[1] = t0, $[2] = t1;
+	} else t0 = $[1], t1 = $[2];
+	let defaultValue = t0(t1), t2;
+	$[3] !== defaultValue || $[4] !== props ? (t2 = () => {
+		props.onChange(set(defaultValue, ["value"]));
+	}, $[3] = defaultValue, $[4] = props, $[5] = t2) : t2 = $[5];
+	let handleClick = t2, t3;
+	$[6] === props ? t3 = $[7] : (t3 = props.renderDefault(props), $[6] = props, $[7] = t3);
+	let t4;
+	$[8] === handleClick ? t4 = $[9] : (t4 = /* @__PURE__ */ jsx(Inline, {
+		gap: 1,
+		children: /* @__PURE__ */ jsx(Button, {
+			text: "Copy default",
+			mode: "ghost",
+			onClick: () => handleClick()
+		})
+	}), $[8] = handleClick, $[9] = t4);
+	let t5;
+	return $[10] !== t3 || $[11] !== t4 ? (t5 = /* @__PURE__ */ jsxs(Stack, {
+		gap: 3,
+		children: [t3, t4]
+	}), $[10] = t3, $[11] = t4, $[12] = t5) : t5 = $[12], t5;
+}, VariantPreview = (props) => {
+	let $ = c(25), [subtitle, setSubtitle] = useState(void 0), [title, setTitle] = useState(void 0), [media, setMedia] = useState(void 0), t0;
+	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = { apiVersion: "2025-01-01" }, $[0] = t0) : t0 = $[0];
+	let client = useClient(t0), { experiments } = useExperimentContext(), { experiment, variant, value } = props, selectedExperiment, t1;
+	if ($[1] !== experiment || $[2] !== experiments || $[3] !== variant) {
+		let t2;
+		$[6] === experiment ? t2 = $[7] : (t2 = (experimentItem) => experimentItem.id === experiment, $[6] = experiment, $[7] = t2), selectedExperiment = experiments.find(t2), t1 = selectedExperiment?.variants.find((variantItem) => variantItem.id === variant), $[1] = experiment, $[2] = experiments, $[3] = variant, $[4] = selectedExperiment, $[5] = t1;
+	} else selectedExperiment = $[4], t1 = $[5];
+	let selectedVariant = t1, t2;
+	$[8] !== client || $[9] !== props.schemaType || $[10] !== selectedExperiment?.label || $[11] !== selectedVariant?.label || $[12] !== value ? (t2 = () => {
+		(async () => {
+			if (setTitle(`${selectedExperiment?.label} - ${selectedVariant?.label}`), typeof value == "string") return setSubtitle(value);
+			if (isReference(value)) {
+				let doc = await client.getDocument(value._ref), referenceType = (props.schemaType.fields.find(_temp)?.type).to.find((field_0) => field_0.type?.name === doc?._type), selectFields = {}, previewFields = referenceType?.preview?.select || {};
+				Object.keys(previewFields).forEach((key) => {
+					let valueKey = referenceType?.preview?.select?.[key];
+					selectFields[key] = valueKey && doc ? valueKey?.split(".").reduce(_temp2, doc) : void 0;
+				});
+				let previewContent = referenceType?.preview?.prepare?.(selectFields);
+				return setMedia(previewContent?.media || selectFields.media), setSubtitle(previewContent?.title || selectFields.title);
+			}
+			return isImage(value) && setMedia(value), "";
+		})();
+	}, $[8] = client, $[9] = props.schemaType, $[10] = selectedExperiment?.label, $[11] = selectedVariant?.label, $[12] = value, $[13] = t2) : t2 = $[13];
+	let t3 = selectedExperiment?.label, t4 = selectedVariant?.label, t5;
+	$[14] !== client || $[15] !== props.schemaType || $[16] !== t3 || $[17] !== t4 || $[18] !== value ? (t5 = [
+		value,
+		client,
+		t3,
+		t4,
+		props.schemaType
+	], $[14] = client, $[15] = props.schemaType, $[16] = t3, $[17] = t4, $[18] = value, $[19] = t5) : t5 = $[19], useEffect(t2, t5);
+	let t6;
+	if ($[20] !== media || $[21] !== props || $[22] !== subtitle || $[23] !== title) {
+		let previewProps = {
+			...props,
+			title,
+			subtitle,
+			media
+		};
+		t6 = props.renderDefault(previewProps), $[20] = media, $[21] = props, $[22] = subtitle, $[23] = title, $[24] = t6;
+	} else t6 = $[24];
+	return t6;
+};
+function _temp(field) {
+	return field.name === "value";
+}
+function _temp2(acc, index) {
+	return acc[index];
+}
+/**
+* Flattens a document's schema type into a flat array of fields and includes their path
+*/
+function flattenSchemaType(schemaType) {
+	return isDocumentSchemaType(schemaType) ? extractInnerFields(schemaType.fields, [], 5) : (console.error("Schema type is not a document"), []);
+}
+function extractInnerFields(fields, path, maxDepth) {
+	if (path.length >= maxDepth) return [];
+	let result = [];
+	for (let field of fields) if (result.push({
+		path: [...path, field.name],
+		...field
+	}), field.type.jsonType === "object") result.push(...extractInnerFields(field.type.fields, [...path, field.name], maxDepth));
+	else if (field.type.jsonType === "array") {
+		let arrayTypes = field.type.of || [];
+		for (let arrayType of arrayTypes) "fields" in arrayType && result.push(...extractInnerFields(arrayType.fields, [...path, field.name], maxDepth));
+	}
+	return result;
+}
+const createExperimentType = ({ field, experimentNameOverride, variantNameOverride, variantId, variantArrayName, experimentId }) => {
+	let typeName = typeof field == "string" ? field : field.name, usedName = String(typeName[0]).toUpperCase() + typeName.slice(1), variantName = `${variantNameOverride}${usedName}`;
+	return defineType({
+		name: `${experimentNameOverride}${usedName}`,
+		type: "object",
+		components: {
+			field: (props) => /* @__PURE__ */ jsx(ExperimentField, {
+				...props,
+				experimentId,
+				experimentNameOverride,
+				variantNameOverride
+			}),
+			item: ExperimentItem
+		},
+		fields: [
+			typeof field == "string" ? defineField({
+				name: "default",
+				type: field
+			}) : {
+				...field,
+				name: "default"
+			},
+			defineField({
+				name: "active",
+				type: "boolean",
+				hidden: !0,
+				initialValue: !1
+			}),
+			defineField({
+				name: experimentId,
+				type: "string",
+				components: { input: (props) => /* @__PURE__ */ jsx(ExperimentInput, {
+					...props,
+					experimentNameOverride,
+					variantNameOverride
+				}) },
+				hidden: ({ parent }) => !parent?.active
+			}),
+			defineField({
+				name: variantArrayName,
+				type: "array",
+				hidden: ({ parent }) => !parent?.[experimentId],
+				components: { input: (props) => /* @__PURE__ */ jsx(ArrayInput, {
+					...props,
+					variantName,
+					variantId,
+					experimentId
+				}) },
+				of: [defineField({
+					name: variantName,
+					type: variantName
+				})]
+			})
+		],
+		preview: {
+			select: {
+				base: "default",
+				experiment: experimentId
+			},
+			prepare: ({ base, experiment }) => {
+				let title = base?.title || base?.name || typeof base == "string" ? base : "", experimentTitle = experiment ? `Experiment: ${experiment}` : "", media = base?.image || base?.photo || base?.media || "";
+				return {
+					title: title || experimentTitle,
+					subtitle: title ? experimentTitle : "",
+					media
+				};
+			}
+		}
+	});
+}, createVariantType = ({ field, variantNameOverride, variantId, experimentId }) => {
+	let typeName = typeof field == "string" ? field : field.name, usedName = String(typeName[0]).toUpperCase() + typeName.slice(1);
+	return defineType({
+		name: `${variantNameOverride}${usedName}`,
+		title: `${variantNameOverride} array ${usedName}`,
+		type: "object",
+		components: {
+			preview: VariantPreview,
+			input: VariantInput
+		},
+		fields: [
+			{
+				type: "string",
+				name: variantId,
+				readOnly: !0
+			},
+			{
+				type: "string",
+				name: experimentId,
+				hidden: !0
+			},
+			typeof field == "string" ? defineField({
+				name: "value",
+				type: field
+			}) : {
+				...field,
+				name: "value"
+			}
+		],
+		preview: { select: {
+			variant: variantId,
+			experiment: experimentId,
+			value: "value"
+		} }
+	});
+}, fieldSchema = ({ fields, experimentNameOverride, variantNameOverride, variantId, variantArrayName, experimentId }) => [...fields.map((field) => createVariantType({
+	field,
+	variantNameOverride,
+	variantId,
+	experimentId
+})), ...fields.map((field) => createExperimentType({
+	field,
+	experimentNameOverride,
+	variantNameOverride,
+	variantId,
+	variantArrayName,
+	experimentId
+}))], fieldLevelExperiments = definePlugin((config) => {
+	let pluginConfig = {
+		...CONFIG_DEFAULT,
+		...config
+	}, { fields, experimentNameOverride, variantNameOverride } = pluginConfig, experimentId = `${experimentNameOverride}Id`, variantArrayName = `${variantNameOverride}s`, variantId = `${variantNameOverride}Id`;
+	return {
+		name: "sanity-personalistaion-plugin-field-level-experiments",
+		schema: { types: fieldSchema({
+			fields,
+			experimentNameOverride,
+			variantNameOverride,
+			variantId,
+			variantArrayName,
+			experimentId
+		}) },
+		form: { components: { input: (props) => !(props.id === "root" && isObjectInputProps(props)) || !flattenSchemaType(props.schemaType).some((field) => field.type.name.startsWith(experimentNameOverride) || field.name.startsWith(experimentNameOverride)) ? props.renderDefault(props) : ExperimentProvider({
+			...props,
+			experimentFieldPluginConfig: {
+				...pluginConfig,
+				variantId,
+				variantArrayName,
+				experimentId
+			}
+		}) } }
+	};
+});
+export { flattenSchemaType as n, fieldLevelExperiments as t };
+
+//# sourceMappingURL=fieldExperiments.js.map
\ No newline at end of file