@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