@contentful/experiences-core 1.42.3-prerelease-20250701T0855-59fc0e2.0 → 1.42.4-prerelease-20250702T1207-37b3bfc.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.
@@ -124,5 +124,6 @@ declare enum PostMessageMethods {
124
124
  }
125
125
  declare const SUPPORTED_IMAGE_FORMATS: readonly ["jpg", "png", "webp", "gif", "avif"];
126
126
  declare const PATTERN_PROPERTY_DIVIDER = "-----";
127
+ declare const SIDELOADED_PREFIX = "sideloaded_";
127
128
 
128
- 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 };
129
+ 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, SIDELOADED_PREFIX, SUPPORTED_IMAGE_FORMATS, StudioCanvasMode, VISUAL_EDITOR_CONTAINER_ID, VISUAL_EDITOR_EVENTS };
package/dist/constants.js CHANGED
@@ -167,6 +167,7 @@ var PostMessageMethods;
167
167
  })(PostMessageMethods || (PostMessageMethods = {}));
168
168
  const SUPPORTED_IMAGE_FORMATS = ['jpg', 'png', 'webp', 'gif', 'avif'];
169
169
  const PATTERN_PROPERTY_DIVIDER = '-----';
170
+ const SIDELOADED_PREFIX = 'sideloaded_';
170
171
 
171
- 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 };
172
+ 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, SIDELOADED_PREFIX, SUPPORTED_IMAGE_FORMATS, StudioCanvasMode, VISUAL_EDITOR_CONTAINER_ID, VISUAL_EDITOR_EVENTS };
172
173
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const SCROLL_STATES = {\n Start: 'scrollStart',\n IsScrolling: 'isScrolling',\n End: 'scrollEnd',\n} as const;\n\nexport const OUTGOING_EVENTS = {\n Connected: 'connected',\n DesignTokens: 'registerDesignTokens',\n RegisteredBreakpoints: 'registeredBreakpoints',\n MouseMove: 'mouseMove',\n NewHoveredElement: 'newHoveredElement',\n ComponentSelected: 'componentSelected',\n RegisteredComponents: 'registeredComponents',\n RequestComponentTreeUpdate: 'requestComponentTreeUpdate',\n ComponentDragCanceled: 'componentDragCanceled',\n ComponentDropped: 'componentDropped',\n ComponentMoved: 'componentMoved',\n CanvasReload: 'canvasReload',\n UpdateSelectedComponentCoordinates: 'updateSelectedComponentCoordinates',\n CanvasScroll: 'canvasScrolling',\n CanvasError: 'canvasError',\n ComponentMoveStarted: 'componentMoveStarted',\n ComponentMoveEnded: 'componentMoveEnded',\n OutsideCanvasClick: 'outsideCanvasClick',\n SDKFeatures: 'sdkFeatures',\n RequestEntities: 'REQUEST_ENTITIES',\n} as const;\n\nexport const INCOMING_EVENTS = {\n RequestEditorMode: 'requestEditorMode',\n RequestReadOnlyMode: 'requestReadOnlyMode',\n ExperienceUpdated: 'componentTreeUpdated',\n ComponentDraggingChanged: 'componentDraggingChanged',\n ComponentDragCanceled: 'componentDragCanceled',\n ComponentDragStarted: 'componentDragStarted',\n ComponentDragEnded: 'componentDragEnded',\n ComponentMoveEnded: 'componentMoveEnded',\n CanvasResized: 'canvasResized',\n SelectComponent: 'selectComponent',\n HoverComponent: 'hoverComponent',\n UpdatedEntity: 'updatedEntity',\n AssembliesAdded: 'assembliesAdded',\n AssembliesRegistered: 'assembliesRegistered',\n MouseMove: 'mouseMove',\n RequestedEntities: 'REQUESTED_ENTITIES',\n} as const;\n\nexport const INTERNAL_EVENTS = {\n ComponentsRegistered: 'cfComponentsRegistered',\n VisualEditorInitialize: 'cfVisualEditorInitialize',\n} as const;\n\nexport const VISUAL_EDITOR_EVENTS = {\n Ready: 'cfVisualEditorReady',\n};\n\n/**\n * These modes are ONLY intended to be internally used within the context of\n * editing an experience inside of Contentful Studio. i.e. these modes\n * intentionally do not include preview/delivery modes.\n */\nexport enum StudioCanvasMode {\n READ_ONLY = 'readOnlyMode',\n EDITOR = 'editorMode',\n NONE = 'none',\n}\n\nexport const VISUAL_EDITOR_CONTAINER_ID = 'cf-visual-editor';\nexport const CONTENTFUL_COMPONENT_CATEGORY = 'contentful-component';\nexport const CONTENTFUL_DEFAULT_CATEGORY = 'Contentful';\n\nexport const CONTENTFUL_COMPONENTS = {\n section: {\n id: 'contentful-section',\n name: 'Section',\n },\n container: {\n id: 'contentful-container',\n name: 'Container',\n },\n columns: {\n id: 'contentful-columns',\n name: 'Columns',\n },\n singleColumn: {\n id: 'contentful-single-column',\n name: 'Column',\n },\n button: {\n id: 'contentful-button',\n name: 'Button',\n },\n heading: {\n id: 'contentful-heading',\n name: 'Heading',\n },\n image: {\n id: 'contentful-image',\n name: 'Image',\n },\n richText: {\n id: 'contentful-richText',\n name: 'Rich Text',\n },\n text: {\n id: 'contentful-text',\n name: 'Text',\n },\n divider: {\n id: 'contentful-divider',\n name: 'Divider',\n },\n carousel: {\n id: 'contentful-carousel',\n name: 'Carousel',\n },\n} as const;\n\nexport const ASSEMBLY_NODE_TYPE = 'assembly';\nexport const ASSEMBLY_DEFAULT_CATEGORY = 'Assemblies';\nexport const ASSEMBLY_BLOCK_NODE_TYPE = 'assemblyBlock';\nexport const ASSEMBLY_NODE_TYPES = [ASSEMBLY_NODE_TYPE, ASSEMBLY_BLOCK_NODE_TYPE];\nexport const LATEST_SCHEMA_VERSION = '2023-09-28';\nexport const CF_STYLE_ATTRIBUTES = [\n 'cfVisibility',\n 'cfHorizontalAlignment',\n 'cfVerticalAlignment',\n 'cfMargin',\n 'cfPadding',\n 'cfBackgroundColor',\n 'cfWidth',\n 'cfMaxWidth',\n 'cfHeight',\n 'cfImageAsset',\n 'cfImageOptions',\n 'cfBackgroundImageUrl',\n 'cfBackgroundImageOptions',\n 'cfFlexDirection',\n 'cfFlexWrap',\n 'cfFlexReverse',\n 'cfBorder',\n 'cfBorderRadius',\n 'cfGap',\n 'cfColumnSpan',\n 'cfColumnSpanLock',\n 'cfColumns',\n 'cfFontSize',\n 'cfFontWeight',\n 'cfLineHeight',\n 'cfLetterSpacing',\n 'cfTextColor',\n 'cfTextAlign',\n 'cfTextTransform',\n 'cfTextBold',\n 'cfTextItalic',\n 'cfTextUnderline',\n // For backwards compatibility\n // we need to keep those in this constant array\n // so that omit() in <VisualEditorBlock> and <CompositionBlock>\n // can filter them out and not pass as props\n 'cfBackgroundImageScaling',\n 'cfBackgroundImageAlignment',\n 'cfBackgroundImageAlignmentVertical',\n 'cfBackgroundImageAlignmentHorizontal',\n];\n\nexport const EMPTY_CONTAINER_HEIGHT = '80px';\n\nexport const HYPERLINK_DEFAULT_PATTERN = `/{locale}/{entry.fields.slug}/`;\n\nexport const DEFAULT_IMAGE_WIDTH = '500px';\n\nexport enum PostMessageMethods {\n REQUEST_ENTITIES = 'REQUEST_ENTITIES',\n REQUESTED_ENTITIES = 'REQUESTED_ENTITIES',\n}\n\nexport const SUPPORTED_IMAGE_FORMATS = ['jpg', 'png', 'webp', 'gif', 'avif'] as const;\n\nexport const PATTERN_PROPERTY_DIVIDER = '-----';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const SCROLL_STATES = {\n Start: 'scrollStart',\n IsScrolling: 'isScrolling',\n End: 'scrollEnd',\n} as const;\n\nexport const OUTGOING_EVENTS = {\n Connected: 'connected',\n DesignTokens: 'registerDesignTokens',\n RegisteredBreakpoints: 'registeredBreakpoints',\n MouseMove: 'mouseMove',\n NewHoveredElement: 'newHoveredElement',\n ComponentSelected: 'componentSelected',\n RegisteredComponents: 'registeredComponents',\n RequestComponentTreeUpdate: 'requestComponentTreeUpdate',\n ComponentDragCanceled: 'componentDragCanceled',\n ComponentDropped: 'componentDropped',\n ComponentMoved: 'componentMoved',\n CanvasReload: 'canvasReload',\n UpdateSelectedComponentCoordinates: 'updateSelectedComponentCoordinates',\n CanvasScroll: 'canvasScrolling',\n CanvasError: 'canvasError',\n ComponentMoveStarted: 'componentMoveStarted',\n ComponentMoveEnded: 'componentMoveEnded',\n OutsideCanvasClick: 'outsideCanvasClick',\n SDKFeatures: 'sdkFeatures',\n RequestEntities: 'REQUEST_ENTITIES',\n} as const;\n\nexport const INCOMING_EVENTS = {\n RequestEditorMode: 'requestEditorMode',\n RequestReadOnlyMode: 'requestReadOnlyMode',\n ExperienceUpdated: 'componentTreeUpdated',\n ComponentDraggingChanged: 'componentDraggingChanged',\n ComponentDragCanceled: 'componentDragCanceled',\n ComponentDragStarted: 'componentDragStarted',\n ComponentDragEnded: 'componentDragEnded',\n ComponentMoveEnded: 'componentMoveEnded',\n CanvasResized: 'canvasResized',\n SelectComponent: 'selectComponent',\n HoverComponent: 'hoverComponent',\n UpdatedEntity: 'updatedEntity',\n AssembliesAdded: 'assembliesAdded',\n AssembliesRegistered: 'assembliesRegistered',\n MouseMove: 'mouseMove',\n RequestedEntities: 'REQUESTED_ENTITIES',\n} as const;\n\nexport const INTERNAL_EVENTS = {\n ComponentsRegistered: 'cfComponentsRegistered',\n VisualEditorInitialize: 'cfVisualEditorInitialize',\n} as const;\n\nexport const VISUAL_EDITOR_EVENTS = {\n Ready: 'cfVisualEditorReady',\n};\n\n/**\n * These modes are ONLY intended to be internally used within the context of\n * editing an experience inside of Contentful Studio. i.e. these modes\n * intentionally do not include preview/delivery modes.\n */\nexport enum StudioCanvasMode {\n READ_ONLY = 'readOnlyMode',\n EDITOR = 'editorMode',\n NONE = 'none',\n}\n\nexport const VISUAL_EDITOR_CONTAINER_ID = 'cf-visual-editor';\nexport const CONTENTFUL_COMPONENT_CATEGORY = 'contentful-component';\nexport const CONTENTFUL_DEFAULT_CATEGORY = 'Contentful';\n\nexport const CONTENTFUL_COMPONENTS = {\n section: {\n id: 'contentful-section',\n name: 'Section',\n },\n container: {\n id: 'contentful-container',\n name: 'Container',\n },\n columns: {\n id: 'contentful-columns',\n name: 'Columns',\n },\n singleColumn: {\n id: 'contentful-single-column',\n name: 'Column',\n },\n button: {\n id: 'contentful-button',\n name: 'Button',\n },\n heading: {\n id: 'contentful-heading',\n name: 'Heading',\n },\n image: {\n id: 'contentful-image',\n name: 'Image',\n },\n richText: {\n id: 'contentful-richText',\n name: 'Rich Text',\n },\n text: {\n id: 'contentful-text',\n name: 'Text',\n },\n divider: {\n id: 'contentful-divider',\n name: 'Divider',\n },\n carousel: {\n id: 'contentful-carousel',\n name: 'Carousel',\n },\n} as const;\n\nexport const ASSEMBLY_NODE_TYPE = 'assembly';\nexport const ASSEMBLY_DEFAULT_CATEGORY = 'Assemblies';\nexport const ASSEMBLY_BLOCK_NODE_TYPE = 'assemblyBlock';\nexport const ASSEMBLY_NODE_TYPES = [ASSEMBLY_NODE_TYPE, ASSEMBLY_BLOCK_NODE_TYPE];\nexport const LATEST_SCHEMA_VERSION = '2023-09-28';\nexport const CF_STYLE_ATTRIBUTES = [\n 'cfVisibility',\n 'cfHorizontalAlignment',\n 'cfVerticalAlignment',\n 'cfMargin',\n 'cfPadding',\n 'cfBackgroundColor',\n 'cfWidth',\n 'cfMaxWidth',\n 'cfHeight',\n 'cfImageAsset',\n 'cfImageOptions',\n 'cfBackgroundImageUrl',\n 'cfBackgroundImageOptions',\n 'cfFlexDirection',\n 'cfFlexWrap',\n 'cfFlexReverse',\n 'cfBorder',\n 'cfBorderRadius',\n 'cfGap',\n 'cfColumnSpan',\n 'cfColumnSpanLock',\n 'cfColumns',\n 'cfFontSize',\n 'cfFontWeight',\n 'cfLineHeight',\n 'cfLetterSpacing',\n 'cfTextColor',\n 'cfTextAlign',\n 'cfTextTransform',\n 'cfTextBold',\n 'cfTextItalic',\n 'cfTextUnderline',\n // For backwards compatibility\n // we need to keep those in this constant array\n // so that omit() in <VisualEditorBlock> and <CompositionBlock>\n // can filter them out and not pass as props\n 'cfBackgroundImageScaling',\n 'cfBackgroundImageAlignment',\n 'cfBackgroundImageAlignmentVertical',\n 'cfBackgroundImageAlignmentHorizontal',\n];\n\nexport const EMPTY_CONTAINER_HEIGHT = '80px';\n\nexport const HYPERLINK_DEFAULT_PATTERN = `/{locale}/{entry.fields.slug}/`;\n\nexport const DEFAULT_IMAGE_WIDTH = '500px';\n\nexport enum PostMessageMethods {\n REQUEST_ENTITIES = 'REQUEST_ENTITIES',\n REQUESTED_ENTITIES = 'REQUESTED_ENTITIES',\n}\n\nexport const SUPPORTED_IMAGE_FORMATS = ['jpg', 'png', 'webp', 'gif', 'avif'] as const;\n\nexport const PATTERN_PROPERTY_DIVIDER = '-----';\n\nexport const SIDELOADED_PREFIX = 'sideloaded_';\n"],"names":[],"mappings":"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"}
@@ -14,9 +14,39 @@ declare class EntityStore extends EntityStoreBase {
14
14
  private _experienceEntryId;
15
15
  private _unboundValues;
16
16
  private _usedComponentsWithDeepReferences;
17
+ private _hoistedParameterDefinitions;
18
+ private _hoistedVariableMappings;
17
19
  constructor(json: string);
18
20
  constructor({ experienceEntry, entities, locale }: EntityStoreArgs);
21
+ private static calculateHoistedParameterDefinitions;
22
+ private static calculateHoistedVariableMappings;
19
23
  getCurrentLocale(): string;
24
+ get hoistedVariableMappings(): Record<string, {
25
+ type: "ContentTypeMapping";
26
+ parameterId: string;
27
+ pathsByContentType: Record<string, {
28
+ path: string;
29
+ }>;
30
+ }>;
31
+ get hoistedParameterDefinitions(): Record<string, {
32
+ contentTypes: string[];
33
+ defaultSource?: {
34
+ type: "Entry";
35
+ contentTypeId: string;
36
+ link: {
37
+ sys: {
38
+ type: "Link";
39
+ id: string;
40
+ linkType: "Entry";
41
+ };
42
+ };
43
+ } | undefined;
44
+ passToNodes?: {
45
+ parameterId: string;
46
+ nodeId: string;
47
+ prebindingId: string;
48
+ }[] | undefined;
49
+ }>;
20
50
  get experienceEntryFields(): ExperienceFields | undefined;
21
51
  get experienceEntryId(): string | undefined;
22
52
  get schemaVersion(): "2023-09-28" | undefined;
package/dist/exports.d.ts CHANGED
@@ -1,3 +1,3 @@
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';
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, SIDELOADED_PREFIX, 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
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/exports.js CHANGED
@@ -1,2 +1,2 @@
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';
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, SIDELOADED_PREFIX, SUPPORTED_IMAGE_FORMATS, StudioCanvasMode, VISUAL_EDITOR_CONTAINER_ID, VISUAL_EDITOR_EVENTS } from './constants.js';
2
2
  //# sourceMappingURL=exports.js.map
package/dist/index.js CHANGED
@@ -131,6 +131,7 @@ var PostMessageMethods;
131
131
  PostMessageMethods["REQUESTED_ENTITIES"] = "REQUESTED_ENTITIES";
132
132
  })(PostMessageMethods || (PostMessageMethods = {}));
133
133
  const SUPPORTED_IMAGE_FORMATS = ['jpg', 'png', 'webp', 'gif', 'avif'];
134
+ const SIDELOADED_PREFIX = 'sideloaded_';
134
135
 
135
136
  const structureComponentIds = new Set([
136
137
  CONTENTFUL_COMPONENTS.section.id,
@@ -1065,13 +1066,7 @@ const ParameterDefinitionSchema = z.object({
1065
1066
  }),
1066
1067
  })
1067
1068
  .optional(),
1068
- contentTypes: z.record(z.string(), z.object({
1069
- sys: z.object({
1070
- type: z.literal('Link'),
1071
- id: z.string(),
1072
- linkType: z.enum(['ContentType']),
1073
- }),
1074
- })),
1069
+ contentTypes: z.array(z.string()),
1075
1070
  passToNodes: z.array(PassToNodeSchema).optional(),
1076
1071
  });
1077
1072
  const ParameterDefinitionsSchema = z.record(propertyKeySchema, ParameterDefinitionSchema);
@@ -1091,7 +1086,7 @@ const ComponentSettingsSchema = z
1091
1086
  variableDefinitions: ComponentVariablesSchema,
1092
1087
  thumbnailId: z.enum(THUMBNAIL_IDS).optional(),
1093
1088
  category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
1094
- prebindingDefinitions: z.array(PrebindingDefinitionSchema).max(1).optional(),
1089
+ prebindingDefinitions: z.array(PrebindingDefinitionSchema).length(1).optional(),
1095
1090
  })
1096
1091
  .strict();
1097
1092
  z.object({
@@ -3248,8 +3243,8 @@ const sendMessage = (eventType, data) => {
3248
3243
  */
3249
3244
  class EntityStoreBase {
3250
3245
  constructor({ entities, locale }) {
3251
- this.entryMap = new Map();
3252
- this.assetMap = new Map();
3246
+ /* serialized */ this.entryMap = new Map();
3247
+ /* serialized */ this.assetMap = new Map();
3253
3248
  this.locale = locale;
3254
3249
  for (const entity of entities) {
3255
3250
  this.addEntity(entity);
@@ -3666,9 +3661,11 @@ class EntityStore extends EntityStoreBase {
3666
3661
  ],
3667
3662
  locale: serializedAttributes.locale,
3668
3663
  });
3669
- this._experienceEntryFields = serializedAttributes._experienceEntryFields;
3670
- this._experienceEntryId = serializedAttributes._experienceEntryId;
3671
- this._unboundValues = serializedAttributes._unboundValues;
3664
+ this._hoistedParameterDefinitions = {};
3665
+ this._hoistedVariableMappings = {};
3666
+ this._experienceEntryFields = serializedAttributes._experienceEntryFields; // non-broken deserialization always should result in valid ExperienceFields
3667
+ this._experienceEntryId = serializedAttributes._experienceEntryId; // // non-broken deserialization always should result in valid experienceEntryId
3668
+ this._unboundValues = serializedAttributes._unboundValues; // non-broken deserialization always should result in valid unboundValues
3672
3669
  }
3673
3670
  else {
3674
3671
  const { experienceEntry, entities, locale } = options;
@@ -3676,18 +3673,101 @@ class EntityStore extends EntityStoreBase {
3676
3673
  throw new Error('Provided entry is not an experience entry');
3677
3674
  }
3678
3675
  super({ entities, locale });
3676
+ this._hoistedParameterDefinitions = {};
3677
+ this._hoistedVariableMappings = {};
3679
3678
  this._experienceEntryFields = experienceEntry.fields;
3680
3679
  this._experienceEntryId = experienceEntry.sys.id;
3681
3680
  this._unboundValues = experienceEntry.fields.unboundValues;
3682
3681
  }
3682
+ // DERIVE ENTITY STORE INSTANCE VARIBLES
3683
+ // Register prebindings
3684
+ {
3685
+ const usedComponentLinks = this._experienceEntryFields.usedComponents ?? [];
3686
+ const usedComponents = usedComponentLinks
3687
+ .map((component) => (isLink(component) ? this.getEntityFromLink(component) : component))
3688
+ .filter((component) => component !== undefined);
3689
+ this._hoistedParameterDefinitions = EntityStore.calculateHoistedParameterDefinitions(this._experienceEntryFields, usedComponents);
3690
+ this._hoistedVariableMappings = EntityStore.calculateHoistedVariableMappings(this._experienceEntryFields, usedComponents);
3691
+ }
3692
+ // Register deep references
3683
3693
  this._usedComponentsWithDeepReferences = resolveDeepUsedComponents({
3684
3694
  experienceEntryFields: this._experienceEntryFields,
3685
3695
  parentComponents: new Set([this._experienceEntryId]),
3686
3696
  });
3687
3697
  }
3698
+ static calculateHoistedParameterDefinitions(parentEntryFields, usedComponents) {
3699
+ let hoistedDefinitions = {};
3700
+ // --------------------
3701
+ // Hoist prebinding for the L1 parent pattern aka `pA`
3702
+ // --------------------
3703
+ hoistedDefinitions = Object.assign(hoistedDefinitions, parentEntryFields.componentSettings?.prebindingDefinitions?.[0].parameterDefinitions || {});
3704
+ // --------------------
3705
+ // Hoist prebinding for the L2 nested patterns, patterns aka`pB`
3706
+ // --------------------
3707
+ usedComponents.forEach((patternEntryLevel2) => {
3708
+ hoistedDefinitions = {
3709
+ ...hoistedDefinitions,
3710
+ ...patternEntryLevel2.fields.componentSettings?.prebindingDefinitions?.[0]
3711
+ .parameterDefinitions,
3712
+ };
3713
+ });
3714
+ // --------------------
3715
+ // Hoist prebinding for L3 nested patterns, patterns aka `pC`
3716
+ // --------------------
3717
+ const usedComponentsLevel3 = usedComponents.flatMap((patternEntryLevel2) => {
3718
+ const usedComponents = patternEntryLevel2.fields.usedComponents || [];
3719
+ const filteredUsedComponents = usedComponents.filter((component) => component !== undefined && isExperienceEntry(component));
3720
+ return filteredUsedComponents;
3721
+ });
3722
+ usedComponentsLevel3.forEach((patternEntryLevel3) => {
3723
+ hoistedDefinitions = {
3724
+ ...hoistedDefinitions,
3725
+ ...patternEntryLevel3.fields.componentSettings?.prebindingDefinitions?.[0]
3726
+ .parameterDefinitions,
3727
+ };
3728
+ });
3729
+ return hoistedDefinitions;
3730
+ }
3731
+ static calculateHoistedVariableMappings(parentEntryFields, usedComponents) {
3732
+ let hoistedMappings = {};
3733
+ // --------------------
3734
+ // Hoist prebinding for the L1 parent pattern aka `pA`
3735
+ // --------------------
3736
+ hoistedMappings = Object.assign(hoistedMappings, parentEntryFields.componentSettings?.prebindingDefinitions?.[0].variableMappings || {});
3737
+ // --------------------
3738
+ // Hoist prebinding for the L2 nested patterns, patterns aka`pB`
3739
+ // --------------------
3740
+ usedComponents.forEach((patternEntryLevel2) => {
3741
+ hoistedMappings = {
3742
+ ...hoistedMappings,
3743
+ ...patternEntryLevel2.fields.componentSettings?.prebindingDefinitions?.[0].variableMappings,
3744
+ };
3745
+ });
3746
+ // --------------------
3747
+ // Hoist prebinding for L3 nested patterns, patterns aka `pC`
3748
+ // --------------------
3749
+ const usedComponentsLevel3 = usedComponents.flatMap((patternEntryLevel2) => {
3750
+ const usedComponents = patternEntryLevel2.fields.usedComponents || [];
3751
+ const filteredUsedComponents = usedComponents.filter((component) => component !== undefined && isExperienceEntry(component));
3752
+ return filteredUsedComponents;
3753
+ });
3754
+ usedComponentsLevel3.forEach((patternEntryLevel3) => {
3755
+ hoistedMappings = {
3756
+ ...hoistedMappings,
3757
+ ...patternEntryLevel3.fields.componentSettings?.prebindingDefinitions?.[0].variableMappings,
3758
+ };
3759
+ });
3760
+ return hoistedMappings;
3761
+ }
3688
3762
  getCurrentLocale() {
3689
3763
  return this.locale;
3690
3764
  }
3765
+ get hoistedVariableMappings() {
3766
+ return this._hoistedVariableMappings;
3767
+ }
3768
+ get hoistedParameterDefinitions() {
3769
+ return this._hoistedParameterDefinitions;
3770
+ }
3691
3771
  get experienceEntryFields() {
3692
3772
  return this._experienceEntryFields;
3693
3773
  }
@@ -4165,30 +4245,84 @@ const removeSelfReferencingDataSource = (experienceEntry) => {
4165
4245
  * This ensures that any default values defined in pattern property definitions are included
4166
4246
  * in the dataSource, so that linked entities can be fetched and resolved correctly.
4167
4247
  * Without this, defaults may be omitted, resulting in unresolved references during binding.
4248
+ *
4249
+ * @returns The number of sideloaded default values, or false if the entry is not a pattern.
4168
4250
  */
4169
- const attachPrebindingDefaultValueAsDataSource = (experienceEntry) => {
4170
- if (!checkIsAssemblyEntry(experienceEntry)) {
4171
- // Only supported for pattern entries since experience entries don't define pattern properties.
4172
- return;
4173
- }
4174
- const patternDefs = experienceEntry.fields.componentSettings?.prebindingDefinitions?.[0].parameterDefinitions ?? {};
4175
- const defaultPrebinding = Object.values(patternDefs).find((def) => def.defaultSource)?.defaultSource;
4176
- const { link, type } = defaultPrebinding ?? {};
4177
- if (!link || !type)
4178
- return;
4179
- const id = link.sys?.id;
4180
- if (!id)
4181
- return;
4182
- experienceEntry.fields.dataSource = {
4183
- ...experienceEntry.fields.dataSource,
4184
- [id]: {
4185
- sys: {
4186
- type: 'Link',
4187
- linkType: type,
4188
- id,
4251
+ const sideloadPrebindingDefaultValues = (patternEntry) => {
4252
+ let sideloadedCount = 0;
4253
+ const addDefaultValueToDataSource = (_definitionId, definition) => {
4254
+ if (!definition.defaultSource) {
4255
+ // prebinding preset doesn't have default value, which is perfectly fine
4256
+ return;
4257
+ }
4258
+ const { contentTypeId, link, type, // At the time of writing, it means that defaultSource is a link to a Contentful Entry, but in the future it could be a link to third party resource or smth.
4259
+ // this .type enumeration will not have the same meaning as `Link#sys#linkType`.
4260
+ } = definition.defaultSource;
4261
+ if (!isLink(link)) {
4262
+ // default value is not a link, maybe due to a bug
4263
+ return;
4264
+ }
4265
+ if (!type || !contentTypeId) {
4266
+ // broken data structure, unlikely to happen, only due to a bug
4267
+ return;
4268
+ }
4269
+ // Throw in the link to the default-entry into the dataSource, this way
4270
+ // we rely on the mechanism of fetchReferencedEntities() to "sideload" them.
4271
+ // Keep in mind that dataSource will be available as EntityStore.dataSource
4272
+ // and now will contain also key for `sideloaded_uuid` entry.
4273
+ // When "sideloading" entries into the entityStore, we must ensure that
4274
+ // there's corresponding entry in the dataSource, because all bound variables
4275
+ // are resolved, via path that is indirectly referencing the dataSource,
4276
+ // eg. { type: 'BoundValue', path: '/sideloaded_uuid/fields/title' }
4277
+ patternEntry.fields.dataSource = {
4278
+ ...patternEntry.fields.dataSource,
4279
+ [`${SIDELOADED_PREFIX}${link.sys.id}`]: {
4280
+ // to highlight that this is a sideloaded entry, we prefix it
4281
+ sys: {
4282
+ type: 'Link',
4283
+ linkType: link.sys.linkType,
4284
+ id: link.sys.id,
4285
+ },
4189
4286
  },
4190
- },
4287
+ };
4288
+ sideloadedCount++;
4191
4289
  };
4290
+ if (!checkIsAssemblyEntry(patternEntry)) {
4291
+ // Only supported for pattern entries since experience entries don't define pattern properties.
4292
+ return false;
4293
+ }
4294
+ // --------------------
4295
+ // Sideload prebinding values for the L1 parent pattern aka `pA`
4296
+ // --------------------
4297
+ const definitions = patternEntry.fields.componentSettings?.prebindingDefinitions?.[0].parameterDefinitions ?? {};
4298
+ Object.entries(definitions).forEach(([id, definition]) => {
4299
+ addDefaultValueToDataSource(id, definition);
4300
+ });
4301
+ // --------------------
4302
+ // Sideload all default values for the L2 nested patterns, patterns aka`pB`
4303
+ // --------------------
4304
+ const nestedPatternEntriesLevel2 = (patternEntry.fields.usedComponents || []).filter((component) => component !== undefined && checkIsAssemblyEntry(component));
4305
+ nestedPatternEntriesLevel2.forEach((patternEntry) => {
4306
+ const parameterDefinitions = patternEntry.fields.componentSettings?.prebindingDefinitions?.[0].parameterDefinitions ?? {};
4307
+ Object.entries(parameterDefinitions).forEach(([id, definition]) => {
4308
+ addDefaultValueToDataSource(id, definition);
4309
+ });
4310
+ });
4311
+ // --------------------
4312
+ // Sideload all default values for the L3 nested patterns, patterns aka `pC`
4313
+ // --------------------
4314
+ const nestedPatternEntriesLevel3 = nestedPatternEntriesLevel2.flatMap((patternEntryLevel2) => {
4315
+ const usedComponents = patternEntryLevel2.fields.usedComponents || [];
4316
+ const filteredUsedComponents = usedComponents.filter((component) => component !== undefined && checkIsAssemblyEntry(component));
4317
+ return filteredUsedComponents;
4318
+ });
4319
+ nestedPatternEntriesLevel3.forEach((patternEntry) => {
4320
+ const parameterDefinitions = patternEntry.fields.componentSettings?.prebindingDefinitions?.[0].parameterDefinitions ?? {};
4321
+ Object.entries(parameterDefinitions).forEach(([id, definition]) => {
4322
+ addDefaultValueToDataSource(id, definition);
4323
+ });
4324
+ });
4325
+ return sideloadedCount;
4192
4326
  };
4193
4327
 
4194
4328
  const errorMessagesWhileFetching$1 = {
@@ -4226,7 +4360,7 @@ async function fetchBySlug({ client, experienceTypeId, slug, localeCode, isEdito
4226
4360
  }
4227
4361
  removeCircularPatternReferences(experienceEntry);
4228
4362
  removeSelfReferencingDataSource(experienceEntry);
4229
- attachPrebindingDefaultValueAsDataSource(experienceEntry);
4363
+ sideloadPrebindingDefaultValues(experienceEntry);
4230
4364
  try {
4231
4365
  const { entries, assets } = await fetchReferencedEntities({
4232
4366
  client,
@@ -4285,7 +4419,7 @@ async function fetchById({ client, experienceTypeId, id, localeCode, isEditorMod
4285
4419
  }
4286
4420
  removeCircularPatternReferences(experienceEntry);
4287
4421
  removeSelfReferencingDataSource(experienceEntry);
4288
- attachPrebindingDefaultValueAsDataSource(experienceEntry);
4422
+ sideloadPrebindingDefaultValues(experienceEntry);
4289
4423
  try {
4290
4424
  const { entries, assets } = await fetchReferencedEntities({
4291
4425
  client,