@sanity/personalization-plugin
3.0.53.0.6
dist/fieldExperiments.js−
dist/fieldExperiments.jsDeleted−498
Index: package/dist/fieldExperiments.js
===================================================================
--- package/dist/fieldExperiments.js
+++ package/dist/fieldExperiments.js
@@ -1,498 +0,0 @@
-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