@contentful/experiences-core 1.42.0-dev-20250625T1537-8a20b16.0 → 1.42.0-dev-20250627T1316-d74dad7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports.d.ts +1 -1
- package/dist/index.js +81 -80
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/package.json +3 -3
package/dist/exports.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ASSEMBLY_BLOCK_NODE_TYPE, ASSEMBLY_DEFAULT_CATEGORY, ASSEMBLY_NODE_TYPE, ASSEMBLY_NODE_TYPES, CF_STYLE_ATTRIBUTES, CONTENTFUL_COMPONENTS, CONTENTFUL_COMPONENT_CATEGORY, CONTENTFUL_DEFAULT_CATEGORY, DEFAULT_IMAGE_WIDTH, EMPTY_CONTAINER_HEIGHT, HYPERLINK_DEFAULT_PATTERN, INCOMING_EVENTS, INTERNAL_EVENTS, LATEST_SCHEMA_VERSION, OUTGOING_EVENTS, PATTERN_PROPERTY_DIVIDER, PostMessageMethods, SCROLL_STATES, SUPPORTED_IMAGE_FORMATS, StudioCanvasMode, VISUAL_EDITOR_CONTAINER_ID, VISUAL_EDITOR_EVENTS } from './constants.js';
|
|
2
2
|
export { AssembliesAddedPayload, AssembliesRegisteredPayload, BackgroundImageAlignmentOption, BackgroundImageOptions, BackgroundImageScalingOption, Binding, BindingMap, BindingMapByBlockId, BoundComponentPropertyTypes, CSSProperties, CanvasErrorPayload, CanvasReloadPayload, CanvasResizedPayload, CanvasScrollPayload, ComponentBinding, ComponentDefinition, ComponentDefinitionVariable, ComponentDefinitionVariableBase, ComponentDefinitionVariableTypeMap, ComponentDefinitionVariableValidation, ComponentDragCanceledPayload, ComponentDragEndedPayload, ComponentDragStartedPayload, ComponentDraggingChangedPayload, ComponentDroppedPayload, ComponentMoveEndedPayload, ComponentMoveStartedPayload, ComponentMovedPayload, ComponentRegistration, ComponentRegistrationOptions, ComponentSelectedPayload, ConnectedPayload, ContainerStyleVariableName, Coordinates, DataSourceEntryValueType, DesignTokensDefinition, DesignTokensPayload, DesignVariableMap, DesignVariableTypes, DragWrapperProps, Experience, ExperienceEntry, ExperienceFields, ExperienceTree, ExperienceTreeNode, ExperienceUpdatedPayload, HoverComponentPayload, HoveredElement, ImageLoadingOption, ImageObjectFitOption, ImageObjectPositionOption, ImageOptions, IncomingComponentDragCanceledPayload, IncomingComponentMoveEndedPayload, IncomingEvent, IncomingMessage, IncomingMouseMovePayload, InternalEvent, Link, ManagementEntity, MouseMovePayload, NewHoveredElementPayload, OptimizedBackgroundImageAsset, OptimizedImageAsset, OutgoingEvent, OutgoingMessage, OutsideCanvasClickPayload, RawCoordinates, RecursiveDesignTokenDefinition, RegisteredBreakpointsPayload, RegisteredComponentsPayload, RequestComponentTreeUpdatePayload, RequestEditorModePayload, RequestEntitiesMessage, RequestEntitiesPayload, RequestReadOnlyModePayload, RequestedEntitiesMessage, RequestedEntitiesPayload, ResolveDesignValueType, SDKFeaturesPayload, ScrollState, SelectComponentPayload, SendMessageParams, StyleProps, UpdateSelectedComponentCoordinatesPayload, UpdatedEntityPayload, ValidationOption, VariableFormats, WrapperTags } from './types.js';
|
|
3
|
-
export { BoundValue, Breakpoint, ComponentDefinitionPropertyType as ComponentDefinitionVariableType, ComponentPropertyValue, ComponentTreeNode, ComponentValue, DesignValue, ExperienceComponentSettings, ExperienceDataSource, ExperienceUnboundValues, NoValue,
|
|
3
|
+
export { BoundValue, Breakpoint, ComponentDefinitionPropertyType as ComponentDefinitionVariableType, ComponentPropertyValue, ComponentTreeNode, ComponentValue, DesignValue, ExperienceComponentSettings, ExperienceDataSource, ExperienceUnboundValues, NoValue, Parameter, ParameterDefinition, PrimitiveValue, SchemaVersions, UnboundValue, ValuesByBreakpoint, VariableMapping } from '@contentful/experiences-validators';
|
package/dist/index.js
CHANGED
|
@@ -950,11 +950,11 @@ const ComponentPropertyValueSchema = z.discriminatedUnion('type', [
|
|
|
950
950
|
]);
|
|
951
951
|
// TODO: finalize schema structure before release
|
|
952
952
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
953
|
-
const
|
|
953
|
+
const ParameterSchema = z.object({
|
|
954
954
|
type: z.literal('BoundValue'),
|
|
955
955
|
path: z.string(),
|
|
956
956
|
});
|
|
957
|
-
const
|
|
957
|
+
const ParametersSchema = z.record(propertyKeySchema, ParameterSchema);
|
|
958
958
|
const BreakpointSchema = z
|
|
959
959
|
.object({
|
|
960
960
|
id: propertyKeySchema,
|
|
@@ -971,7 +971,7 @@ const BaseComponentTreeNodeSchema = z.object({
|
|
|
971
971
|
displayName: z.string().optional(),
|
|
972
972
|
slotId: z.string().optional(),
|
|
973
973
|
variables: z.record(propertyKeySchema, ComponentPropertyValueSchema),
|
|
974
|
-
|
|
974
|
+
parameters: ParametersSchema.optional(),
|
|
975
975
|
});
|
|
976
976
|
const ComponentVariableSchema = z.object({
|
|
977
977
|
displayName: z.string().optional(),
|
|
@@ -1040,21 +1040,25 @@ const THUMBNAIL_IDS = [
|
|
|
1040
1040
|
// TODO: finalize schema structure before release
|
|
1041
1041
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
1042
1042
|
const VariableMappingSchema = z.object({
|
|
1043
|
-
|
|
1043
|
+
parameterId: propertyKeySchema,
|
|
1044
1044
|
type: z.literal('ContentTypeMapping'),
|
|
1045
1045
|
pathsByContentType: z.record(z.string(), z.object({ path: z.string() })),
|
|
1046
1046
|
});
|
|
1047
1047
|
// TODO: finalize schema structure before release
|
|
1048
1048
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
1049
|
-
const
|
|
1050
|
-
|
|
1051
|
-
.
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1049
|
+
const ParameterDefinitionSchema = z.object({
|
|
1050
|
+
defaultSource: z
|
|
1051
|
+
.strictObject({
|
|
1052
|
+
type: z.enum(['Entry']),
|
|
1053
|
+
contentTypeId: z.string(),
|
|
1054
|
+
link: z.strictObject({
|
|
1055
|
+
sys: z.strictObject({
|
|
1056
|
+
type: z.literal('Link'),
|
|
1057
|
+
id: z.string(),
|
|
1058
|
+
linkType: z.enum(['Entry']),
|
|
1059
|
+
}),
|
|
1056
1060
|
}),
|
|
1057
|
-
})
|
|
1061
|
+
})
|
|
1058
1062
|
.optional(),
|
|
1059
1063
|
contentTypes: z.record(z.string(), z.object({
|
|
1060
1064
|
sys: z.object({
|
|
@@ -1064,7 +1068,7 @@ const PatternPropertyDefinitionSchema = z.object({
|
|
|
1064
1068
|
}),
|
|
1065
1069
|
})),
|
|
1066
1070
|
});
|
|
1067
|
-
const
|
|
1071
|
+
const ParameterDefinitionsSchema = z.record(propertyKeySchema, ParameterDefinitionSchema);
|
|
1068
1072
|
const VariableMappingsSchema = z.record(propertyKeySchema, VariableMappingSchema);
|
|
1069
1073
|
const ComponentVariablesSchema = z.record(z.string().regex(/^[a-zA-Z0-9-_]{1,54}$/), // Here the key is <variableName>_<nanoidId> so we need to allow for a longer length
|
|
1070
1074
|
ComponentVariableSchema);
|
|
@@ -1073,7 +1077,7 @@ const ComponentSettingsSchema = z.object({
|
|
|
1073
1077
|
thumbnailId: z.enum(THUMBNAIL_IDS).optional(),
|
|
1074
1078
|
category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
|
|
1075
1079
|
variableMappings: VariableMappingsSchema.optional(),
|
|
1076
|
-
|
|
1080
|
+
parameterDefinitions: ParameterDefinitionsSchema.optional(),
|
|
1077
1081
|
});
|
|
1078
1082
|
z.object({
|
|
1079
1083
|
componentTree: localeWrapper(ComponentTreeSchema),
|
|
@@ -2101,55 +2105,6 @@ const getOptimizedBackgroundImageAsset = (file, widthStyle, quality = '100%', fo
|
|
|
2101
2105
|
}
|
|
2102
2106
|
};
|
|
2103
2107
|
|
|
2104
|
-
/**
|
|
2105
|
-
* Turns a condition like `<768px` or `>1024px` into a media query rule.
|
|
2106
|
-
* For example, `<768px` becomes `max-width:768px` and `>1024px` becomes `min-width:1024px`.
|
|
2107
|
-
*/
|
|
2108
|
-
const toMediaQueryRule = (condition) => {
|
|
2109
|
-
const [evaluation, pixelValue] = [condition[0], condition.substring(1)];
|
|
2110
|
-
const mediaQueryRule = evaluation === '<' ? 'max-width' : 'min-width';
|
|
2111
|
-
return `(${mediaQueryRule}:${pixelValue})`;
|
|
2112
|
-
};
|
|
2113
|
-
/**
|
|
2114
|
-
* Converts a map of class names to CSS strings into a single CSS string.
|
|
2115
|
-
*
|
|
2116
|
-
* @param cssByClassName map of class names to CSS strings containing all rules for each class
|
|
2117
|
-
* @returns joined string of all CSS class definitions
|
|
2118
|
-
*/
|
|
2119
|
-
const toCompoundCss = (cssByClassName) => {
|
|
2120
|
-
return Object.entries(cssByClassName).reduce((acc, [className, css]) => {
|
|
2121
|
-
if (css === '')
|
|
2122
|
-
return acc;
|
|
2123
|
-
return `${acc}.${className}{${css}}`;
|
|
2124
|
-
}, ``);
|
|
2125
|
-
};
|
|
2126
|
-
/**
|
|
2127
|
-
* Create a single CSS string containing all class definitions for a given media query.
|
|
2128
|
-
*
|
|
2129
|
-
* @param cssByClassName map of class names to CSS strings containing all rules for each class
|
|
2130
|
-
* @param condition e.g. "*", "<520px", ">520px"
|
|
2131
|
-
* @param nextCondition optional next condition to create a disjunct media query that doesn't affect the next breakpoint
|
|
2132
|
-
* @returns joined string of all CSS class definitions wrapped into media queries
|
|
2133
|
-
*/
|
|
2134
|
-
const toMediaQuery = ({ cssByClassName, condition, nextCondition, }) => {
|
|
2135
|
-
const compoundCss = toCompoundCss(cssByClassName);
|
|
2136
|
-
if (compoundCss === '') {
|
|
2137
|
-
return '';
|
|
2138
|
-
}
|
|
2139
|
-
const queryRule = toMediaQueryRule(condition);
|
|
2140
|
-
if (!nextCondition) {
|
|
2141
|
-
if (condition === '*') {
|
|
2142
|
-
return compoundCss;
|
|
2143
|
-
}
|
|
2144
|
-
return `@media${queryRule}{${compoundCss}}`;
|
|
2145
|
-
}
|
|
2146
|
-
const nextRule = toMediaQueryRule(nextCondition);
|
|
2147
|
-
if (condition === '*') {
|
|
2148
|
-
return `@media not ${nextRule}{${compoundCss}}`;
|
|
2149
|
-
}
|
|
2150
|
-
return `@media${queryRule} and (not ${nextRule}){${compoundCss}}`;
|
|
2151
|
-
};
|
|
2152
|
-
|
|
2153
2108
|
const detachExperienceStyles = (experience) => {
|
|
2154
2109
|
const experienceTreeRoot = experience.entityStore?.experienceEntryFields
|
|
2155
2110
|
?.componentTree;
|
|
@@ -2246,7 +2201,7 @@ const detachExperienceStyles = (experience) => {
|
|
|
2246
2201
|
const isAnyVisibilityValueHidden = Object.values(propsByBreakpoint).some((designProperties) => designProperties.cfVisibility === false);
|
|
2247
2202
|
// We always need an explicit value when using disjunct media queries
|
|
2248
2203
|
// Example: desktop uses "false" and tablet is undefined -> we need to set `display: none` for tablet as well.
|
|
2249
|
-
let previousVisibilityValue;
|
|
2204
|
+
let previousVisibilityValue = undefined;
|
|
2250
2205
|
/* [Data format] `propsByBreakpoint` is a map of "breakpointId > propertyName > plainValue":
|
|
2251
2206
|
* {
|
|
2252
2207
|
* desktop: {
|
|
@@ -2260,7 +2215,7 @@ const detachExperienceStyles = (experience) => {
|
|
|
2260
2215
|
const currentNodeClassNames = [];
|
|
2261
2216
|
// Chain IDs to avoid overwriting styles across multiple instances of the same pattern
|
|
2262
2217
|
// e.g. `{outerPatternNodeId}{innerPatternNodeId}-{currentNodeId}`
|
|
2263
|
-
// (!) Notice that the chain of patterns (before the dash) follows the format of prebinding/
|
|
2218
|
+
// (!) Notice that the chain of patterns (before the dash) follows the format of prebinding/ parameters
|
|
2264
2219
|
const currentNodeIdsChain = `${wrappingPatternNodeIds.join('')}-${currentNode.id}`;
|
|
2265
2220
|
// For each breakpoint, resolve design tokens, create the CSS and generate a unique className.
|
|
2266
2221
|
for (const breakpointId of breakpointIds) {
|
|
@@ -2357,7 +2312,7 @@ const detachExperienceStyles = (experience) => {
|
|
|
2357
2312
|
});
|
|
2358
2313
|
// once the whole tree was traversed, for each breakpoint, I aggregate the styles
|
|
2359
2314
|
// for each generated className into one css string
|
|
2360
|
-
|
|
2315
|
+
return Object.values(mediaQueryDataByBreakpoint).reduce((acc, { condition, cssByClassName, visibilityCssByClassName }, index) => {
|
|
2361
2316
|
const mediaQueryCss = toMediaQuery({ cssByClassName, condition });
|
|
2362
2317
|
// Handle visibility separately to use disjunct media queries ("if desktop but not tablet ...")
|
|
2363
2318
|
// Enables to hide on one breakpoint but render any unknown custom `display` value on another breakpoint.
|
|
@@ -2369,7 +2324,6 @@ const detachExperienceStyles = (experience) => {
|
|
|
2369
2324
|
});
|
|
2370
2325
|
return `${acc}${mediaQueryCss}${visibilityMediaQueryCss}`;
|
|
2371
2326
|
}, '');
|
|
2372
|
-
return stylesheet;
|
|
2373
2327
|
};
|
|
2374
2328
|
/**
|
|
2375
2329
|
* Rendering pattern nodes inside pattern entry by injecting default values from the top:
|
|
@@ -2378,7 +2332,7 @@ const detachExperienceStyles = (experience) => {
|
|
|
2378
2332
|
*/
|
|
2379
2333
|
const injectDefaultValuesForComponentValues = ({ patternNode, wrapperComponentSettings, }) => {
|
|
2380
2334
|
const propertyDefinitions = wrapperComponentSettings?.variableDefinitions;
|
|
2381
|
-
|
|
2335
|
+
return Object.entries(patternNode.variables).reduce((resolvedProperties, [propertyName, propertyValue]) => {
|
|
2382
2336
|
if (propertyValue.type === 'ComponentValue') {
|
|
2383
2337
|
const componentValueKey = propertyValue.key;
|
|
2384
2338
|
const componentDefaultValue = propertyDefinitions?.[componentValueKey].defaultValue;
|
|
@@ -2393,7 +2347,6 @@ const injectDefaultValuesForComponentValues = ({ patternNode, wrapperComponentSe
|
|
|
2393
2347
|
}
|
|
2394
2348
|
return resolvedProperties;
|
|
2395
2349
|
}, {});
|
|
2396
|
-
return resolvedProperties;
|
|
2397
2350
|
};
|
|
2398
2351
|
/**
|
|
2399
2352
|
* In case of nested patterns, we need to resolve the ComponentValue properties and overwrite them with the value
|
|
@@ -2407,17 +2360,16 @@ const resolveComponentVariablesOverwrites = ({ patternNode, wrapperComponentVari
|
|
|
2407
2360
|
// In case of rendering a pattern entry, there are no custom ComponentValues.
|
|
2408
2361
|
// So we pass down the default values from this pattern node down to each deeper pattern level.
|
|
2409
2362
|
if (!wrapperComponentVariablesOverwrites) {
|
|
2410
|
-
|
|
2363
|
+
return injectDefaultValuesForComponentValues({
|
|
2411
2364
|
patternNode,
|
|
2412
2365
|
wrapperComponentSettings,
|
|
2413
2366
|
});
|
|
2414
|
-
return nextComponentVariablesOverwrites;
|
|
2415
2367
|
}
|
|
2416
2368
|
// Rendering (nested) pattern node inside another pattern node (for both experience & pattern entry):
|
|
2417
2369
|
// The `wrapperComponentVariablesOverwrites` from the top-most pattern node is passed through to each child
|
|
2418
2370
|
// node (and nested pattern nodes). It replaces each ComponentValue in the subtree with either the overwrite
|
|
2419
2371
|
// or the default value.
|
|
2420
|
-
|
|
2372
|
+
return Object.entries(patternNode?.variables).reduce((resolvedValues, [propertyName, propertyValue]) => {
|
|
2421
2373
|
if (propertyValue.type === 'ComponentValue') {
|
|
2422
2374
|
// Copying the values from the parent node
|
|
2423
2375
|
const overwritingValue = wrapperComponentVariablesOverwrites?.[propertyValue.key];
|
|
@@ -2433,7 +2385,6 @@ const resolveComponentVariablesOverwrites = ({ patternNode, wrapperComponentVari
|
|
|
2433
2385
|
}
|
|
2434
2386
|
return resolvedValues;
|
|
2435
2387
|
}, {});
|
|
2436
|
-
return nextComponentVariablesOverwrites;
|
|
2437
2388
|
};
|
|
2438
2389
|
const isCfStyleAttribute = (variableName) => {
|
|
2439
2390
|
return CF_STYLE_ATTRIBUTES.includes(variableName);
|
|
@@ -2491,8 +2442,7 @@ const transformMedia$1 = (boundAsset, width, options) => {
|
|
|
2491
2442
|
const targetValue = targetWidthObject ? getTargetValueInPixels(targetWidthObject) : assetWidth;
|
|
2492
2443
|
if (targetValue < assetWidth)
|
|
2493
2444
|
width = `${targetValue}px`;
|
|
2494
|
-
|
|
2495
|
-
return value;
|
|
2445
|
+
return getOptimizedBackgroundImageAsset(asset.fields.file, width, options.quality, options.format);
|
|
2496
2446
|
}
|
|
2497
2447
|
catch (error) {
|
|
2498
2448
|
console.error('Error transforming image asset', error);
|
|
@@ -2713,6 +2663,55 @@ const flattenDesignTokenRegistry = (designTokenRegistry) => {
|
|
|
2713
2663
|
}, {});
|
|
2714
2664
|
};
|
|
2715
2665
|
|
|
2666
|
+
/**
|
|
2667
|
+
* Turns a condition like `<768px` or `>1024px` into a media query rule.
|
|
2668
|
+
* For example, `<768px` becomes `max-width:768px` and `>1024px` becomes `min-width:1024px`.
|
|
2669
|
+
*/
|
|
2670
|
+
const toMediaQueryRule = (condition) => {
|
|
2671
|
+
const [evaluation, pixelValue] = [condition[0], condition.substring(1)];
|
|
2672
|
+
const mediaQueryRule = evaluation === '<' ? 'max-width' : 'min-width';
|
|
2673
|
+
return `(${mediaQueryRule}:${pixelValue})`;
|
|
2674
|
+
};
|
|
2675
|
+
/**
|
|
2676
|
+
* Converts a map of class names to CSS strings into a single CSS string.
|
|
2677
|
+
*
|
|
2678
|
+
* @param cssByClassName map of class names to CSS strings containing all rules for each class
|
|
2679
|
+
* @returns joined string of all CSS class definitions
|
|
2680
|
+
*/
|
|
2681
|
+
const toCompoundCss = (cssByClassName) => {
|
|
2682
|
+
return Object.entries(cssByClassName).reduce((acc, [className, css]) => {
|
|
2683
|
+
if (css === '')
|
|
2684
|
+
return acc;
|
|
2685
|
+
return `${acc}.${className}{${css}}`;
|
|
2686
|
+
}, ``);
|
|
2687
|
+
};
|
|
2688
|
+
/**
|
|
2689
|
+
* Create a single CSS string containing all class definitions for a given media query.
|
|
2690
|
+
*
|
|
2691
|
+
* @param cssByClassName map of class names to CSS strings containing all rules for each class
|
|
2692
|
+
* @param condition e.g. "*", "<520px", ">520px"
|
|
2693
|
+
* @param nextCondition optional next condition to create a disjunct media query that doesn't affect the next breakpoint
|
|
2694
|
+
* @returns joined string of all CSS class definitions wrapped into media queries
|
|
2695
|
+
*/
|
|
2696
|
+
const toMediaQuery = ({ cssByClassName, condition, nextCondition, }) => {
|
|
2697
|
+
const compoundCss = toCompoundCss(cssByClassName);
|
|
2698
|
+
if (compoundCss === '') {
|
|
2699
|
+
return '';
|
|
2700
|
+
}
|
|
2701
|
+
const queryRule = toMediaQueryRule(condition);
|
|
2702
|
+
if (!nextCondition) {
|
|
2703
|
+
if (condition === '*') {
|
|
2704
|
+
return compoundCss;
|
|
2705
|
+
}
|
|
2706
|
+
return `@media${queryRule}{${compoundCss}}`;
|
|
2707
|
+
}
|
|
2708
|
+
const nextRule = toMediaQueryRule(nextCondition);
|
|
2709
|
+
if (condition === '*') {
|
|
2710
|
+
return `@media not ${nextRule}{${compoundCss}}`;
|
|
2711
|
+
}
|
|
2712
|
+
return `@media${queryRule} and (not ${nextRule}){${compoundCss}}`;
|
|
2713
|
+
};
|
|
2714
|
+
|
|
2716
2715
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2717
2716
|
function get(obj, path) {
|
|
2718
2717
|
if (!path.length) {
|
|
@@ -4157,10 +4156,12 @@ const attachPrebindingDefaultValueAsDataSource = (experienceEntry) => {
|
|
|
4157
4156
|
// Only supported for pattern entries since experience entries don't define pattern properties.
|
|
4158
4157
|
return;
|
|
4159
4158
|
}
|
|
4160
|
-
const patternDefs = experienceEntry.fields.componentSettings?.
|
|
4161
|
-
const defaultPrebinding = Object.values(patternDefs).find((def) => def.
|
|
4162
|
-
const
|
|
4163
|
-
|
|
4159
|
+
const patternDefs = experienceEntry.fields.componentSettings?.parameterDefinitions ?? {};
|
|
4160
|
+
const defaultPrebinding = Object.values(patternDefs).find((def) => def.defaultSource)?.defaultSource;
|
|
4161
|
+
const { link, type } = defaultPrebinding ?? {};
|
|
4162
|
+
if (!link || !type)
|
|
4163
|
+
return;
|
|
4164
|
+
const id = link.sys?.id;
|
|
4164
4165
|
if (!id)
|
|
4165
4166
|
return;
|
|
4166
4167
|
experienceEntry.fields.dataSource = {
|
|
@@ -4168,7 +4169,7 @@ const attachPrebindingDefaultValueAsDataSource = (experienceEntry) => {
|
|
|
4168
4169
|
[id]: {
|
|
4169
4170
|
sys: {
|
|
4170
4171
|
type: 'Link',
|
|
4171
|
-
linkType:
|
|
4172
|
+
linkType: type,
|
|
4172
4173
|
id,
|
|
4173
4174
|
},
|
|
4174
4175
|
},
|