@contentful/experiences-visual-editor-react 1.42.0-beta.0 → 1.42.0-dev-20250617T0920-3f313ab.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 +45 -18
- package/dist/index.js.map +1 -1
- package/dist/renderApp.js +45 -18
- package/dist/renderApp.js.map +1 -1
- package/package.json +4 -4
package/dist/renderApp.js
CHANGED
|
@@ -37,8 +37,8 @@ function styleInject(css, ref) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
var css_248z$
|
|
41
|
-
styleInject(css_248z$
|
|
40
|
+
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";
|
|
41
|
+
styleInject(css_248z$b);
|
|
42
42
|
|
|
43
43
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
44
44
|
|
|
@@ -43342,11 +43342,11 @@ const ComponentPropertyValueSchema$1 = z.discriminatedUnion('type', [
|
|
|
43342
43342
|
]);
|
|
43343
43343
|
// TODO: finalize schema structure before release
|
|
43344
43344
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
43345
|
-
const
|
|
43345
|
+
const PatternPropertySchema$1 = z.object({
|
|
43346
43346
|
type: z.literal('BoundValue'),
|
|
43347
43347
|
path: z.string(),
|
|
43348
43348
|
});
|
|
43349
|
-
const
|
|
43349
|
+
const PatternPropertiesSchema$1 = z.record(propertyKeySchema$1, PatternPropertySchema$1);
|
|
43350
43350
|
const BreakpointSchema$1 = z
|
|
43351
43351
|
.object({
|
|
43352
43352
|
id: propertyKeySchema$1,
|
|
@@ -43363,7 +43363,7 @@ const BaseComponentTreeNodeSchema$1 = z.object({
|
|
|
43363
43363
|
displayName: z.string().optional(),
|
|
43364
43364
|
slotId: z.string().optional(),
|
|
43365
43365
|
variables: z.record(propertyKeySchema$1, ComponentPropertyValueSchema$1),
|
|
43366
|
-
|
|
43366
|
+
patternProperties: PatternPropertiesSchema$1.optional(),
|
|
43367
43367
|
});
|
|
43368
43368
|
const ComponentVariableSchema$1 = z.object({
|
|
43369
43369
|
displayName: z.string().optional(),
|
|
@@ -43432,13 +43432,13 @@ const THUMBNAIL_IDS$1 = [
|
|
|
43432
43432
|
// TODO: finalize schema structure before release
|
|
43433
43433
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
43434
43434
|
const VariableMappingSchema$1 = z.object({
|
|
43435
|
-
|
|
43435
|
+
patternPropertyDefinitionId: propertyKeySchema$1,
|
|
43436
43436
|
type: z.literal('ContentTypeMapping'),
|
|
43437
43437
|
pathsByContentType: z.record(z.string(), z.object({ path: z.string() })),
|
|
43438
43438
|
});
|
|
43439
43439
|
// TODO: finalize schema structure before release
|
|
43440
43440
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
43441
|
-
const
|
|
43441
|
+
const PatternPropertyDefinitionSchema$1 = z.object({
|
|
43442
43442
|
defaultValue: z
|
|
43443
43443
|
.record(z.string(), z.object({
|
|
43444
43444
|
sys: z.object({
|
|
@@ -43456,7 +43456,7 @@ const ParameterDefinitionSchema$1 = z.object({
|
|
|
43456
43456
|
}),
|
|
43457
43457
|
})),
|
|
43458
43458
|
});
|
|
43459
|
-
const
|
|
43459
|
+
const PatternPropertyDefinitionsSchema$1 = z.record(propertyKeySchema$1, PatternPropertyDefinitionSchema$1);
|
|
43460
43460
|
const VariableMappingsSchema$1 = z.record(propertyKeySchema$1, VariableMappingSchema$1);
|
|
43461
43461
|
const ComponentVariablesSchema$1 = 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
|
|
43462
43462
|
ComponentVariableSchema$1);
|
|
@@ -43465,7 +43465,7 @@ const ComponentSettingsSchema$1 = z.object({
|
|
|
43465
43465
|
thumbnailId: z.enum(THUMBNAIL_IDS$1).optional(),
|
|
43466
43466
|
category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
|
|
43467
43467
|
variableMappings: VariableMappingsSchema$1.optional(),
|
|
43468
|
-
|
|
43468
|
+
patternPropertyDefinitions: PatternPropertyDefinitionsSchema$1.optional(),
|
|
43469
43469
|
});
|
|
43470
43470
|
z.object({
|
|
43471
43471
|
componentTree: localeWrapper$1(ComponentTreeSchema$1),
|
|
@@ -56850,9 +56850,9 @@ const cloneDeepAsPOJO = (obj) => {
|
|
|
56850
56850
|
return JSON.parse(JSON.stringify(obj));
|
|
56851
56851
|
};
|
|
56852
56852
|
|
|
56853
|
-
var css_248z$
|
|
56853
|
+
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";
|
|
56854
56854
|
var styles$3 = {"hitbox":"render-module_hitbox__l4ysJ","hitboxLower":"render-module_hitboxLower__tgsA1","canvasBottomSpacer":"render-module_canvasBottomSpacer__JuxVh","container":"render-module_container__-C3d7"};
|
|
56855
|
-
styleInject(css_248z$
|
|
56855
|
+
styleInject(css_248z$a);
|
|
56856
56856
|
|
|
56857
56857
|
// TODO: In order to support integrations without React, we should extract this heavy logic into simple
|
|
56858
56858
|
// functions that we can reuse in other frameworks.
|
|
@@ -58245,6 +58245,9 @@ function getSchemaWithNodeType(nodeType) {
|
|
|
58245
58245
|
|
|
58246
58246
|
} (dist));
|
|
58247
58247
|
|
|
58248
|
+
var css_248z$8 = "/* Initially added with PR #253 for each component, this is now a global setting\n * It is recommended on MDN to use this as a default for layouting.\n*/\n* {\n box-sizing: border-box;\n}\n";
|
|
58249
|
+
styleInject(css_248z$8);
|
|
58250
|
+
|
|
58248
58251
|
/**
|
|
58249
58252
|
* These modes are ONLY intended to be internally used within the context of
|
|
58250
58253
|
* editing an experience inside of Contentful Studio. i.e. these modes
|
|
@@ -58262,6 +58265,21 @@ var PostMessageMethods$1;
|
|
|
58262
58265
|
PostMessageMethods["REQUESTED_ENTITIES"] = "REQUESTED_ENTITIES";
|
|
58263
58266
|
})(PostMessageMethods$1 || (PostMessageMethods$1 = {}));
|
|
58264
58267
|
|
|
58268
|
+
var css_248z$7 = "/* If the label is empty, still render the normal height by adding this pseudo element */\n.cf-button:empty::before {\n content: '';\n display: inline-block;\n}\n";
|
|
58269
|
+
styleInject(css_248z$7);
|
|
58270
|
+
|
|
58271
|
+
var css_248z$6 = ".cf-heading {\n white-space: pre-line;\n}\n";
|
|
58272
|
+
styleInject(css_248z$6);
|
|
58273
|
+
|
|
58274
|
+
var css_248z$5 = ".cf-richtext {\n white-space: pre-line;\n}\n\n.cf-richtext > *:first-child {\n margin-top: 0;\n}\n\n.cf-richtext > *:last-child {\n margin-bottom: 0;\n}\n";
|
|
58275
|
+
styleInject(css_248z$5);
|
|
58276
|
+
|
|
58277
|
+
var css_248z$4 = ".cf-text {\n white-space: pre-line;\n}\n\n.cf-text-link .cf-text {\n margin: 0;\n}\n";
|
|
58278
|
+
styleInject(css_248z$4);
|
|
58279
|
+
|
|
58280
|
+
var css_248z$3 = "@import url(https://fonts.googleapis.com/css2?family=Archivo:ital,wght@0,400;0,500;0,600;1,400;1,600&display=swap);\n\n:root {\n /* All sizing comments based of 16px base body font size */\n\n /* color */\n --cf-color-white: #fff;\n --cf-color-black: #000;\n --cf-color-gray100: #f7f9fa;\n --cf-color-gray400: #aec1cc;\n --cf-color-gray400-rgb: 174, 193, 204;\n\n /* spacing */\n --cf-spacing-0: 0rem; /* 0px */\n --cf-spacing-1: 0.125rem; /* 2px */\n --cf-spacing-2: 0.25rem; /* 4px */\n --cf-spacing-3: 0.375rem; /* 6px */\n --cf-spacing-4: 0.5rem; /* 8px */\n --cf-spacing-5: 0.625rem; /* 10px */\n --cf-spacing-6: 0.75rem; /* 12px */\n --cf-spacing-7: 0.875rem; /* 14px */\n --cf-spacing-8: 1rem; /* 16px */\n --cf-spacing-9: 1.25rem; /* 20px */\n --cf-spacing-10: 1.5rem; /* 24px */\n --cf-spacing-11: 1.75rem; /* 28px */\n --cf-spacing-12: 2rem; /* 32px */\n --cf-spacing-13: 2.25rem; /* 36px */\n\n /* font-size */\n --cf-text-xs: 0.75rem; /* 12px */\n --cf-text-sm: 0.875rem; /* 14px */\n --cf-text-base: 1rem; /* 16px */\n --cf-text-lg: 1.125rem; /* 18px */\n --cf-text-xl: 1.25rem; /* 20px */\n --cf-text-2xl: 1.5rem; /* 24px */\n --cf-text-3xl: 2rem; /* 32px */\n --cf-text-4xl: 2.75rem; /* 44px */\n\n /* font-weight */\n --cf-font-light: 300;\n --cf-font-normal: 400;\n --cf-font-medium: 500;\n --cf-font-semibold: 600;\n --cf-font-bold: 700;\n --cf-font-extra-bold: 800;\n --cf-font-black: 900;\n\n /* border-radius */\n --cf-border-radius-none: 0px; /* none */\n --cf-border-radius-sm: 0.125rem; /* 2px */\n --cf-border-radius: 0.25rem; /* 4px */\n --cf-border-radius-md: 0.375rem; /* 6px */\n --cf-border-radius-lg: 0.5rem; /* 8px */\n --cf-border-radius-xl: 0.75rem; /* 12px */\n --cf-border-radius-2xl: 1rem; /* 16px */\n --cf-border-radius-3xl: 1.5rem; /* 24px */\n --cf-border-radius-full: 9999px; /* full */\n\n /* font-family */\n --cf-font-family-sans: Archivo, Helvetica, Arial, sans-serif;\n --cf-font-family-serif: Georgia, Cambria, Times New Roman, Times, serif;\n\n /* max widths */\n --cf-max-width-full: 100%;\n\n /* component specific colors */\n --cf-button-bg: var(--cf-color-black);\n --cf-button-color: var(--cf-color-white);\n --cf-text-color: var(--cf-color-black);\n}\n\ndiv.cf-placeholder-wrapper {\n /* Required for the absolute positioned icon to render in the center */\n position: relative;\n}\n\nimg.cf-placeholder-image {\n background-color: var(--cf-color-gray100);\n outline-offset: -2px;\n outline: 2px solid rgba(var(--cf-color-gray400-rgb), 0.5);\n width: 100%;\n height: 100%;\n}\n\nsvg.cf-placeholder-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: var(--cf-text-3xl);\n width: var(--cf-text-3xl);\n max-height: 100%;\n max-width: 100%;\n}\n\nsvg.cf-placeholder-icon path {\n fill: var(--cf-color-gray400);\n}\n";
|
|
58281
|
+
styleInject(css_248z$3);
|
|
58282
|
+
|
|
58265
58283
|
/**
|
|
58266
58284
|
* These modes are ONLY intended to be internally used within the context of
|
|
58267
58285
|
* editing an experience inside of Contentful Studio. i.e. these modes
|
|
@@ -58474,11 +58492,11 @@ const ComponentPropertyValueSchema = z.discriminatedUnion('type', [
|
|
|
58474
58492
|
]);
|
|
58475
58493
|
// TODO: finalize schema structure before release
|
|
58476
58494
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
58477
|
-
const
|
|
58495
|
+
const PatternPropertySchema = z.object({
|
|
58478
58496
|
type: z.literal('BoundValue'),
|
|
58479
58497
|
path: z.string(),
|
|
58480
58498
|
});
|
|
58481
|
-
const
|
|
58499
|
+
const PatternPropertiesSchema = z.record(propertyKeySchema, PatternPropertySchema);
|
|
58482
58500
|
const BreakpointSchema = z
|
|
58483
58501
|
.object({
|
|
58484
58502
|
id: propertyKeySchema,
|
|
@@ -58495,7 +58513,7 @@ const BaseComponentTreeNodeSchema = z.object({
|
|
|
58495
58513
|
displayName: z.string().optional(),
|
|
58496
58514
|
slotId: z.string().optional(),
|
|
58497
58515
|
variables: z.record(propertyKeySchema, ComponentPropertyValueSchema),
|
|
58498
|
-
|
|
58516
|
+
patternProperties: PatternPropertiesSchema.optional(),
|
|
58499
58517
|
});
|
|
58500
58518
|
const ComponentVariableSchema = z.object({
|
|
58501
58519
|
displayName: z.string().optional(),
|
|
@@ -58564,13 +58582,13 @@ const THUMBNAIL_IDS = [
|
|
|
58564
58582
|
// TODO: finalize schema structure before release
|
|
58565
58583
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
58566
58584
|
const VariableMappingSchema = z.object({
|
|
58567
|
-
|
|
58585
|
+
patternPropertyDefinitionId: propertyKeySchema,
|
|
58568
58586
|
type: z.literal('ContentTypeMapping'),
|
|
58569
58587
|
pathsByContentType: z.record(z.string(), z.object({ path: z.string() })),
|
|
58570
58588
|
});
|
|
58571
58589
|
// TODO: finalize schema structure before release
|
|
58572
58590
|
// https://contentful.atlassian.net/browse/LUMOS-523
|
|
58573
|
-
const
|
|
58591
|
+
const PatternPropertyDefinitionSchema = z.object({
|
|
58574
58592
|
defaultValue: z
|
|
58575
58593
|
.record(z.string(), z.object({
|
|
58576
58594
|
sys: z.object({
|
|
@@ -58588,7 +58606,7 @@ const ParameterDefinitionSchema = z.object({
|
|
|
58588
58606
|
}),
|
|
58589
58607
|
})),
|
|
58590
58608
|
});
|
|
58591
|
-
const
|
|
58609
|
+
const PatternPropertyDefinitionsSchema = z.record(propertyKeySchema, PatternPropertyDefinitionSchema);
|
|
58592
58610
|
const VariableMappingsSchema = z.record(propertyKeySchema, VariableMappingSchema);
|
|
58593
58611
|
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
|
|
58594
58612
|
ComponentVariableSchema);
|
|
@@ -58597,7 +58615,7 @@ const ComponentSettingsSchema = z.object({
|
|
|
58597
58615
|
thumbnailId: z.enum(THUMBNAIL_IDS).optional(),
|
|
58598
58616
|
category: z.string().max(50, 'Category must contain at most 50 characters').optional(),
|
|
58599
58617
|
variableMappings: VariableMappingsSchema.optional(),
|
|
58600
|
-
|
|
58618
|
+
patternPropertyDefinitions: PatternPropertyDefinitionsSchema.optional(),
|
|
58601
58619
|
});
|
|
58602
58620
|
z.object({
|
|
58603
58621
|
componentTree: localeWrapper(ComponentTreeSchema),
|
|
@@ -58808,6 +58826,9 @@ var VisualEditorMode;
|
|
|
58808
58826
|
VisualEditorMode["InjectScript"] = "injectScript";
|
|
58809
58827
|
})(VisualEditorMode || (VisualEditorMode = {}));
|
|
58810
58828
|
|
|
58829
|
+
var css_248z$2$1 = ".contentful-container {\n position: relative;\n display: flex;\n pointer-events: all;\n}\n\n.contentful-container::-webkit-scrollbar {\n display: none; /* Safari and Chrome */\n}\n\n.cf-single-column-wrapper {\n position: relative;\n}\n\n.cf-container-wrapper {\n position: relative;\n width: 100%;\n}\n\n.contentful-container:after {\n content: '';\n display: block;\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-x: clip;\n font-family: var(--exp-builder-font-stack-primary);\n font-size: 12px;\n color: var(--exp-builder-gray400);\n z-index: 1;\n}\n\n.contentful-section-label:after {\n content: 'Section';\n}\n\n.contentful-container-label:after {\n content: 'Container';\n}\n\n/* used by ContentfulSectionAsHyperlink.tsx */\n\n.contentful-container-link,\n.contentful-container-link:active,\n.contentful-container-link:visited,\n.contentful-container-link:hover,\n.contentful-container-link:read-write,\n.contentful-container-link:focus-visible {\n color: inherit;\n text-decoration: unset;\n outline: unset;\n}\n";
|
|
58830
|
+
styleInject(css_248z$2$1);
|
|
58831
|
+
|
|
58811
58832
|
const Flex = reactExports.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) => {
|
|
58812
58833
|
return (React$1.createElement("div", { id: id, ref: ref, style: {
|
|
58813
58834
|
display: 'flex',
|
|
@@ -58830,6 +58851,12 @@ const Flex = reactExports.forwardRef(({ id, children, onMouseEnter, onMouseUp, o
|
|
|
58830
58851
|
});
|
|
58831
58852
|
Flex.displayName = 'Flex';
|
|
58832
58853
|
|
|
58854
|
+
var css_248z$1$1 = ".cf-divider {\n display: contents;\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.cf-divider hr {\n border: none;\n}\n\n/* For the editor mode add this 10px tolerance to make it easier picking up the divider component.\n * Using the DND zone as precondition makes sure that we don't render this pseudo element in delivery. */\n\n[data-ctfl-zone-id='root'] .cf-divider::before {\n content: \"\";\n position: absolute;\n top: -5px;\n left: -5px;\n bottom: -5px;\n right: -5px;\n pointer-events: all;\n}\n";
|
|
58855
|
+
styleInject(css_248z$1$1);
|
|
58856
|
+
|
|
58857
|
+
var css_248z$9 = ".cf-columns {\n display: flex;\n gap: 24px;\n grid-template-columns: repeat(12, 1fr);\n flex-direction: column;\n min-height: 0; /* NEW */\n min-width: 0; /* NEW; needed for Firefox */\n}\n\n@media (min-width: 768px) {\n .cf-columns {\n display: grid;\n }\n}\n\n.cf-single-column-wrapper {\n position: relative;\n display: flex;\n}\n\n.cf-single-column {\n pointer-events: all;\n}\n\n.cf-single-column-wrapper:after {\n content: '';\n display: block;\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-x: clip;\n font-family: var(--exp-builder-font-stack-primary);\n font-size: 12px;\n color: var(--exp-builder-gray400);\n z-index: 1;\n}\n\n.cf-single-column-label:after {\n content: 'Column';\n}\n";
|
|
58858
|
+
styleInject(css_248z$9);
|
|
58859
|
+
|
|
58833
58860
|
const ColumnWrapper = reactExports.forwardRef((props, ref) => {
|
|
58834
58861
|
return (React$1.createElement("div", { ref: ref, ...props, style: {
|
|
58835
58862
|
...(props.style || {}),
|