@contentful/experiences-visual-editor-react 2.0.0-prerelease-20250703T1150-c529c88.0 → 2.0.0-prerelease-20250704T1125-6c39a4b.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/index.js CHANGED
@@ -12,8 +12,8 @@ import { v4 } from 'uuid';
12
12
  import { createPortal } from 'react-dom';
13
13
  import classNames from 'classnames';
14
14
 
15
- var css_248z$4 = "html,\nbody {\n margin: 0;\n padding: 0;\n}\n\n/*\n * All of these variables are tokens from Forma-36 and should not be adjusted as these\n * are global variables that may affect multiple places.\n * As our customers may use other design libraries, we try to avoid overlapping global\n * variables by always using the prefix `--exp-builder-` inside this SDK.\n */\n\n:root {\n /* Color tokens from Forma 36: https://f36.contentful.com/tokens/color-system */\n --exp-builder-blue100: #e8f5ff;\n --exp-builder-blue200: #ceecff;\n --exp-builder-blue300: #98cbff;\n --exp-builder-blue400: #40a0ff;\n --exp-builder-blue500: #036fe3;\n --exp-builder-blue600: #0059c8;\n --exp-builder-blue700: #0041ab;\n --exp-builder-blue800: #003298;\n --exp-builder-blue900: #002a8e;\n --exp-builder-gray100: #f7f9fa;\n --exp-builder-gray200: #e7ebee;\n --exp-builder-gray300: #cfd9e0;\n --exp-builder-gray400: #aec1cc;\n --exp-builder-gray500: #67728a;\n --exp-builder-gray600: #5a657c;\n --exp-builder-gray700: #414d63;\n --exp-builder-gray800: #1b273a;\n --exp-builder-gray900: #111b2b;\n --exp-builder-purple600: #6c3ecf;\n --exp-builder-red200: #ffe0e0;\n --exp-builder-red800: #7f0010;\n --exp-builder-color-white: #ffffff;\n --exp-builder-glow-primary: 0px 0px 0px 3px #e8f5ff;\n\n /* RGB colors for applying opacity */\n --exp-builder-blue100-rgb: 232, 245, 255;\n --exp-builder-blue300-rgb: 152, 203, 255;\n\n /* Spacing tokens from Forma 36: https://f36.contentful.com/tokens/spacing */\n --exp-builder-spacing-s: 0.75rem;\n --exp-builder-spacing-2xs: 0.25rem;\n\n /* Typography tokens from Forma 36: https://f36.contentful.com/tokens/typography */\n --exp-builder-font-size-l: 1rem;\n --exp-builder-font-size-m: 0.875rem;\n --exp-builder-font-stack-primary: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n --exp-builder-line-height-condensed: 1.25;\n}\n";
16
- styleInject(css_248z$4);
15
+ var css_248z$b = "html,\nbody {\n margin: 0;\n padding: 0;\n}\n\n/*\n * All of these variables are tokens from Forma-36 and should not be adjusted as these\n * are global variables that may affect multiple places.\n * As our customers may use other design libraries, we try to avoid overlapping global\n * variables by always using the prefix `--exp-builder-` inside this SDK.\n */\n\n:root {\n /* Color tokens from Forma 36: https://f36.contentful.com/tokens/color-system */\n --exp-builder-blue100: #e8f5ff;\n --exp-builder-blue200: #ceecff;\n --exp-builder-blue300: #98cbff;\n --exp-builder-blue400: #40a0ff;\n --exp-builder-blue500: #036fe3;\n --exp-builder-blue600: #0059c8;\n --exp-builder-blue700: #0041ab;\n --exp-builder-blue800: #003298;\n --exp-builder-blue900: #002a8e;\n --exp-builder-gray100: #f7f9fa;\n --exp-builder-gray200: #e7ebee;\n --exp-builder-gray300: #cfd9e0;\n --exp-builder-gray400: #aec1cc;\n --exp-builder-gray500: #67728a;\n --exp-builder-gray600: #5a657c;\n --exp-builder-gray700: #414d63;\n --exp-builder-gray800: #1b273a;\n --exp-builder-gray900: #111b2b;\n --exp-builder-purple600: #6c3ecf;\n --exp-builder-red200: #ffe0e0;\n --exp-builder-red800: #7f0010;\n --exp-builder-color-white: #ffffff;\n --exp-builder-glow-primary: 0px 0px 0px 3px #e8f5ff;\n\n /* RGB colors for applying opacity */\n --exp-builder-blue100-rgb: 232, 245, 255;\n --exp-builder-blue300-rgb: 152, 203, 255;\n\n /* Spacing tokens from Forma 36: https://f36.contentful.com/tokens/spacing */\n --exp-builder-spacing-s: 0.75rem;\n --exp-builder-spacing-2xs: 0.25rem;\n\n /* Typography tokens from Forma 36: https://f36.contentful.com/tokens/typography */\n --exp-builder-font-size-l: 1rem;\n --exp-builder-font-size-m: 0.875rem;\n --exp-builder-font-stack-primary: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n --exp-builder-line-height-condensed: 1.25;\n}\n";
16
+ styleInject(css_248z$b);
17
17
 
18
18
  const INCOMING_EVENTS$1 = {
19
19
  RequestEditorMode: 'requestEditorMode',
@@ -828,13 +828,7 @@ const ParameterDefinitionSchema$1 = z.object({
828
828
  }),
829
829
  })
830
830
  .optional(),
831
- contentTypes: z.record(z.string(), z.object({
832
- sys: z.object({
833
- type: z.literal('Link'),
834
- id: z.string(),
835
- linkType: z.enum(['ContentType']),
836
- }),
837
- })),
831
+ contentTypes: z.array(z.string()),
838
832
  passToNodes: z.array(PassToNodeSchema$1).optional(),
839
833
  });
840
834
  const ParameterDefinitionsSchema$1 = z.record(propertyKeySchema$1, ParameterDefinitionSchema$1);
@@ -854,7 +848,7 @@ const ComponentSettingsSchema$1 = z
854
848
  variableDefinitions: ComponentVariablesSchema$1,
855
849
  thumbnailId: z.enum(THUMBNAIL_IDS$1).optional(),
856
850
  category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
857
- prebindingDefinitions: z.array(PrebindingDefinitionSchema$1).max(1).optional(),
851
+ prebindingDefinitions: z.array(PrebindingDefinitionSchema$1).length(1).optional(),
858
852
  })
859
853
  .strict();
860
854
  z.object({
@@ -1099,7 +1093,10 @@ propertyName, resolveDesignTokens = true) => {
1099
1093
  };
1100
1094
  /** Overwrites the default value breakpoint by breakpoint. If a breakpoint
1101
1095
  * is not overwritten, it will fall back to the default. */
1102
- const mergeDesignValuesByBreakpoint = (defaultValue, overwriteValue) => {
1096
+ function mergeDesignValuesByBreakpoint(defaultValue, overwriteValue) {
1097
+ if (!defaultValue || !overwriteValue) {
1098
+ return defaultValue ?? overwriteValue;
1099
+ }
1103
1100
  const mergedValuesByBreakpoint = { ...defaultValue.valuesByBreakpoint };
1104
1101
  for (const [breakpointId, value] of Object.entries(overwriteValue.valuesByBreakpoint)) {
1105
1102
  if (!isValidBreakpointValue(value)) {
@@ -1111,7 +1108,7 @@ const mergeDesignValuesByBreakpoint = (defaultValue, overwriteValue) => {
1111
1108
  type: 'DesignValue',
1112
1109
  valuesByBreakpoint: mergedValuesByBreakpoint,
1113
1110
  };
1114
- };
1111
+ }
1115
1112
 
1116
1113
  const CF_DEBUG_KEY$1 = 'cf_debug';
1117
1114
  /**
@@ -3286,9 +3283,9 @@ const cloneDeepAsPOJO = (obj) => {
3286
3283
  return JSON.parse(JSON.stringify(obj));
3287
3284
  };
3288
3285
 
3289
- var css_248z$3 = ".render-module_hitbox__l4ysJ {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 10px;\n z-index: 1000000;\n}\n\n.render-module_hitboxLower__tgsA1 {\n position: absolute;\n bottom: -20px;\n left: 0;\n width: 100%;\n height: 20px;\n z-index: 1000000;\n}\n\n.render-module_canvasBottomSpacer__JuxVh {\n position: absolute;\n width: 100%;\n height: 50px;\n}\n\n.render-module_container__-C3d7 {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n\nbody {\n margin: 0;\n}\n\nhtml {\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n scrollbar-width: none; /* Firefox */\n}\n\nhtml::-webkit-scrollbar {\n display: none;\n}\n";
3286
+ var css_248z$a = ".render-module_hitbox__l4ysJ {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 10px;\n z-index: 1000000;\n}\n\n.render-module_hitboxLower__tgsA1 {\n position: absolute;\n bottom: -20px;\n left: 0;\n width: 100%;\n height: 20px;\n z-index: 1000000;\n}\n\n.render-module_canvasBottomSpacer__JuxVh {\n position: absolute;\n width: 100%;\n height: 50px;\n}\n\n.render-module_container__-C3d7 {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n\nbody {\n margin: 0;\n}\n\nhtml {\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n scrollbar-width: none; /* Firefox */\n}\n\nhtml::-webkit-scrollbar {\n display: none;\n}\n";
3290
3287
  var styles$3 = {"hitbox":"render-module_hitbox__l4ysJ","hitboxLower":"render-module_hitboxLower__tgsA1","canvasBottomSpacer":"render-module_canvasBottomSpacer__JuxVh","container":"render-module_container__-C3d7"};
3291
- styleInject(css_248z$3);
3288
+ styleInject(css_248z$a);
3292
3289
 
3293
3290
  // TODO: In order to support integrations without React, we should extract this heavy logic into simple
3294
3291
  // functions that we can reuse in other frameworks.
@@ -3455,6 +3452,9 @@ const useEditorStore = create((set, get) => ({
3455
3452
  },
3456
3453
  }));
3457
3454
 
3455
+ var css_248z$8 = "@import url(https://fonts.googleapis.com/css2?family=Archivo:ital,wght@0,400;0,500;0,600;1,400;1,600&display=swap);:root{--cf-color-white:#fff;--cf-color-black:#000;--cf-color-gray100:#f7f9fa;--cf-color-gray400:#aec1cc;--cf-color-gray400-rgb:174,193,204;--cf-spacing-0:0rem;--cf-spacing-1:0.125rem;--cf-spacing-2:0.25rem;--cf-spacing-3:0.375rem;--cf-spacing-4:0.5rem;--cf-spacing-5:0.625rem;--cf-spacing-6:0.75rem;--cf-spacing-7:0.875rem;--cf-spacing-8:1rem;--cf-spacing-9:1.25rem;--cf-spacing-10:1.5rem;--cf-spacing-11:1.75rem;--cf-spacing-12:2rem;--cf-spacing-13:2.25rem;--cf-text-xs:0.75rem;--cf-text-sm:0.875rem;--cf-text-base:1rem;--cf-text-lg:1.125rem;--cf-text-xl:1.25rem;--cf-text-2xl:1.5rem;--cf-text-3xl:2rem;--cf-text-4xl:2.75rem;--cf-font-light:300;--cf-font-normal:400;--cf-font-medium:500;--cf-font-semibold:600;--cf-font-bold:700;--cf-font-extra-bold:800;--cf-font-black:900;--cf-border-radius-none:0px;--cf-border-radius-sm:0.125rem;--cf-border-radius:0.25rem;--cf-border-radius-md:0.375rem;--cf-border-radius-lg:0.5rem;--cf-border-radius-xl:0.75rem;--cf-border-radius-2xl:1rem;--cf-border-radius-3xl:1.5rem;--cf-border-radius-full:9999px;--cf-font-family-sans:Archivo,Helvetica,Arial,sans-serif;--cf-font-family-serif:Georgia,Cambria,Times New Roman,Times,serif;--cf-max-width-full:100%;--cf-button-bg:var(--cf-color-black);--cf-button-color:var(--cf-color-white);--cf-text-color:var(--cf-color-black)}*{box-sizing:border-box}";
3456
+ styleInject(css_248z$8);
3457
+
3458
3458
  /**
3459
3459
  * These modes are ONLY intended to be internally used within the context of
3460
3460
  * editing an experience inside of Contentful Studio. i.e. these modes
@@ -3472,6 +3472,21 @@ var PostMessageMethods$1;
3472
3472
  PostMessageMethods["REQUESTED_ENTITIES"] = "REQUESTED_ENTITIES";
3473
3473
  })(PostMessageMethods$1 || (PostMessageMethods$1 = {}));
3474
3474
 
3475
+ var css_248z$7 = ".cf-button:empty:before{content:\"\";display:inline-block}";
3476
+ styleInject(css_248z$7);
3477
+
3478
+ var css_248z$6 = ".cf-heading{white-space:pre-line}";
3479
+ styleInject(css_248z$6);
3480
+
3481
+ var css_248z$5 = ".cf-richtext{white-space:pre-line}.cf-richtext>:first-child{margin-top:0}.cf-richtext>:last-child{margin-bottom:0}";
3482
+ styleInject(css_248z$5);
3483
+
3484
+ var css_248z$4 = ".cf-text{white-space:pre-line}.cf-text-link .cf-text{margin:0}";
3485
+ styleInject(css_248z$4);
3486
+
3487
+ var css_248z$3 = "div.cf-placeholder-wrapper{position:relative}img.cf-placeholder-image{background-color:var(--cf-color-gray100);height:100%;outline:2px solid rgba(var(--cf-color-gray400-rgb),.5);outline-offset:-2px;width:100%}svg.cf-placeholder-icon{height:var(--cf-text-3xl);left:50%;max-height:100%;max-width:100%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--cf-text-3xl)}svg.cf-placeholder-icon path{fill:var(--cf-color-gray400)}";
3488
+ styleInject(css_248z$3);
3489
+
3475
3490
  /**
3476
3491
  * These modes are ONLY intended to be internally used within the context of
3477
3492
  * editing an experience inside of Contentful Studio. i.e. these modes
@@ -3799,13 +3814,7 @@ const ParameterDefinitionSchema = z.object({
3799
3814
  }),
3800
3815
  })
3801
3816
  .optional(),
3802
- contentTypes: z.record(z.string(), z.object({
3803
- sys: z.object({
3804
- type: z.literal('Link'),
3805
- id: z.string(),
3806
- linkType: z.enum(['ContentType']),
3807
- }),
3808
- })),
3817
+ contentTypes: z.array(z.string()),
3809
3818
  passToNodes: z.array(PassToNodeSchema).optional(),
3810
3819
  });
3811
3820
  const ParameterDefinitionsSchema = z.record(propertyKeySchema, ParameterDefinitionSchema);
@@ -3825,7 +3834,7 @@ const ComponentSettingsSchema = z
3825
3834
  variableDefinitions: ComponentVariablesSchema,
3826
3835
  thumbnailId: z.enum(THUMBNAIL_IDS).optional(),
3827
3836
  category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
3828
- prebindingDefinitions: z.array(PrebindingDefinitionSchema).max(1).optional(),
3837
+ prebindingDefinitions: z.array(PrebindingDefinitionSchema).length(1).optional(),
3829
3838
  })
3830
3839
  .strict();
3831
3840
  z.object({
@@ -4450,6 +4459,9 @@ var VisualEditorMode;
4450
4459
  VisualEditorMode["InjectScript"] = "injectScript";
4451
4460
  })(VisualEditorMode || (VisualEditorMode = {}));
4452
4461
 
4462
+ var css_248z$2$1 = ".contentful-container{display:flex;pointer-events:all;position:relative}.contentful-container::-webkit-scrollbar{display:none}.cf-single-column-wrapper{position:relative}.cf-container-wrapper{position:relative;width:100%}.contentful-container:after{align-items:center;bottom:0;color:var(--exp-builder-gray400);content:\"\";display:block;display:flex;font-family:var(--exp-builder-font-stack-primary);font-size:12px;justify-content:center;left:0;overflow-x:clip;pointer-events:none;position:absolute;right:0;top:0;z-index:1}.contentful-section-label:after{content:\"Section\"}.contentful-container-label:after{content:\"Container\"}.contentful-container-link,.contentful-container-link:active,.contentful-container-link:focus-visible,.contentful-container-link:hover,.contentful-container-link:read-write,.contentful-container-link:visited{color:inherit;outline:unset;text-decoration:unset}";
4463
+ styleInject(css_248z$2$1);
4464
+
4453
4465
  const Flex = forwardRef(({ id, children, onMouseEnter, onMouseUp, onMouseLeave, onMouseDown, onClick, flex, flexBasis, flexShrink, flexDirection, gap, justifyContent, justifyItems, justifySelf, alignItems, alignSelf, alignContent, order, flexWrap, flexGrow, className, cssStyles, ...props }, ref) => {
4454
4466
  return (React.createElement("div", { id: id, ref: ref, style: {
4455
4467
  display: 'flex',
@@ -4472,6 +4484,12 @@ const Flex = forwardRef(({ id, children, onMouseEnter, onMouseUp, onMouseLeave,
4472
4484
  });
4473
4485
  Flex.displayName = 'Flex';
4474
4486
 
4487
+ var css_248z$1$1 = ".cf-divider{display:contents;height:100%;position:relative;width:100%}.cf-divider hr{border:none}[data-ctfl-zone-id=root] .cf-divider:before{bottom:-5px;content:\"\";left:-5px;pointer-events:all;position:absolute;right:-5px;top:-5px}";
4488
+ styleInject(css_248z$1$1);
4489
+
4490
+ var css_248z$9 = ".cf-columns{display:flex;flex-direction:column;gap:24px;grid-template-columns:repeat(12,1fr);min-height:0;min-width:0}@media (min-width:768px){.cf-columns{display:grid}}.cf-single-column-wrapper{display:flex;position:relative}.cf-single-column{pointer-events:all}.cf-single-column-wrapper:after{align-items:center;bottom:0;color:var(--exp-builder-gray400);content:\"\";display:block;display:flex;font-family:var(--exp-builder-font-stack-primary);font-size:12px;justify-content:center;left:0;overflow-x:clip;pointer-events:none;position:absolute;right:0;top:0;z-index:1}.cf-single-column-label:after{content:\"Column\"}";
4491
+ styleInject(css_248z$9);
4492
+
4475
4493
  const ColumnWrapper = forwardRef((props, ref) => {
4476
4494
  return (React.createElement("div", { ref: ref, ...props, style: {
4477
4495
  ...(props.style || {}),
@@ -5266,7 +5284,7 @@ const maybeMergePatternDefaultDesignValues = ({ variableName, variableMapping, n
5266
5284
  parentPatternNode = findNodeById(parentPatternNode.data.pattern?.nodeId);
5267
5285
  }
5268
5286
  const mergedDesignValue = mergeDesignValuesByBreakpoint(exposedDefaultValue, variableMapping);
5269
- return mergedDesignValue.valuesByBreakpoint;
5287
+ return mergedDesignValue?.valuesByBreakpoint;
5270
5288
  }
5271
5289
  return variableMapping.valuesByBreakpoint;
5272
5290
  };