@contentful/experiences-visual-editor-react 2.0.0-dev-20250704T1052-fad2ef4.0 → 2.0.0-prerelease-20250703T1150-c529c88.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$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);
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);
17
17
 
18
18
  const INCOMING_EVENTS$1 = {
19
19
  RequestEditorMode: 'requestEditorMode',
@@ -828,7 +828,13 @@ const ParameterDefinitionSchema$1 = z.object({
828
828
  }),
829
829
  })
830
830
  .optional(),
831
- contentTypes: z.array(z.string()),
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
+ })),
832
838
  passToNodes: z.array(PassToNodeSchema$1).optional(),
833
839
  });
834
840
  const ParameterDefinitionsSchema$1 = z.record(propertyKeySchema$1, ParameterDefinitionSchema$1);
@@ -848,7 +854,7 @@ const ComponentSettingsSchema$1 = z
848
854
  variableDefinitions: ComponentVariablesSchema$1,
849
855
  thumbnailId: z.enum(THUMBNAIL_IDS$1).optional(),
850
856
  category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
851
- prebindingDefinitions: z.array(PrebindingDefinitionSchema$1).length(1).optional(),
857
+ prebindingDefinitions: z.array(PrebindingDefinitionSchema$1).max(1).optional(),
852
858
  })
853
859
  .strict();
854
860
  z.object({
@@ -1093,10 +1099,7 @@ propertyName, resolveDesignTokens = true) => {
1093
1099
  };
1094
1100
  /** Overwrites the default value breakpoint by breakpoint. If a breakpoint
1095
1101
  * is not overwritten, it will fall back to the default. */
1096
- function mergeDesignValuesByBreakpoint(defaultValue, overwriteValue) {
1097
- if (!defaultValue || !overwriteValue) {
1098
- return defaultValue ?? overwriteValue;
1099
- }
1102
+ const mergeDesignValuesByBreakpoint = (defaultValue, overwriteValue) => {
1100
1103
  const mergedValuesByBreakpoint = { ...defaultValue.valuesByBreakpoint };
1101
1104
  for (const [breakpointId, value] of Object.entries(overwriteValue.valuesByBreakpoint)) {
1102
1105
  if (!isValidBreakpointValue(value)) {
@@ -1108,7 +1111,7 @@ function mergeDesignValuesByBreakpoint(defaultValue, overwriteValue) {
1108
1111
  type: 'DesignValue',
1109
1112
  valuesByBreakpoint: mergedValuesByBreakpoint,
1110
1113
  };
1111
- }
1114
+ };
1112
1115
 
1113
1116
  const CF_DEBUG_KEY$1 = 'cf_debug';
1114
1117
  /**
@@ -3283,9 +3286,9 @@ const cloneDeepAsPOJO = (obj) => {
3283
3286
  return JSON.parse(JSON.stringify(obj));
3284
3287
  };
3285
3288
 
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";
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";
3287
3290
  var styles$3 = {"hitbox":"render-module_hitbox__l4ysJ","hitboxLower":"render-module_hitboxLower__tgsA1","canvasBottomSpacer":"render-module_canvasBottomSpacer__JuxVh","container":"render-module_container__-C3d7"};
3288
- styleInject(css_248z$a);
3291
+ styleInject(css_248z$3);
3289
3292
 
3290
3293
  // TODO: In order to support integrations without React, we should extract this heavy logic into simple
3291
3294
  // functions that we can reuse in other frameworks.
@@ -3452,9 +3455,6 @@ const useEditorStore = create((set, get) => ({
3452
3455
  },
3453
3456
  }));
3454
3457
 
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,21 +3472,6 @@ 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
-
3490
3475
  /**
3491
3476
  * These modes are ONLY intended to be internally used within the context of
3492
3477
  * editing an experience inside of Contentful Studio. i.e. these modes
@@ -3814,7 +3799,13 @@ const ParameterDefinitionSchema = z.object({
3814
3799
  }),
3815
3800
  })
3816
3801
  .optional(),
3817
- contentTypes: z.array(z.string()),
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
+ })),
3818
3809
  passToNodes: z.array(PassToNodeSchema).optional(),
3819
3810
  });
3820
3811
  const ParameterDefinitionsSchema = z.record(propertyKeySchema, ParameterDefinitionSchema);
@@ -3834,7 +3825,7 @@ const ComponentSettingsSchema = z
3834
3825
  variableDefinitions: ComponentVariablesSchema,
3835
3826
  thumbnailId: z.enum(THUMBNAIL_IDS).optional(),
3836
3827
  category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
3837
- prebindingDefinitions: z.array(PrebindingDefinitionSchema).length(1).optional(),
3828
+ prebindingDefinitions: z.array(PrebindingDefinitionSchema).max(1).optional(),
3838
3829
  })
3839
3830
  .strict();
3840
3831
  z.object({
@@ -4459,9 +4450,6 @@ var VisualEditorMode;
4459
4450
  VisualEditorMode["InjectScript"] = "injectScript";
4460
4451
  })(VisualEditorMode || (VisualEditorMode = {}));
4461
4452
 
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
-
4465
4453
  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) => {
4466
4454
  return (React.createElement("div", { id: id, ref: ref, style: {
4467
4455
  display: 'flex',
@@ -4484,12 +4472,6 @@ const Flex = forwardRef(({ id, children, onMouseEnter, onMouseUp, onMouseLeave,
4484
4472
  });
4485
4473
  Flex.displayName = 'Flex';
4486
4474
 
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
-
4493
4475
  const ColumnWrapper = forwardRef((props, ref) => {
4494
4476
  return (React.createElement("div", { ref: ref, ...props, style: {
4495
4477
  ...(props.style || {}),
@@ -5284,7 +5266,7 @@ const maybeMergePatternDefaultDesignValues = ({ variableName, variableMapping, n
5284
5266
  parentPatternNode = findNodeById(parentPatternNode.data.pattern?.nodeId);
5285
5267
  }
5286
5268
  const mergedDesignValue = mergeDesignValuesByBreakpoint(exposedDefaultValue, variableMapping);
5287
- return mergedDesignValue?.valuesByBreakpoint;
5269
+ return mergedDesignValue.valuesByBreakpoint;
5288
5270
  }
5289
5271
  return variableMapping.valuesByBreakpoint;
5290
5272
  };