zuljaman-banner-components 1.0.24 → 1.0.26
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/components/BannerRenderer/BannerRenderer.js +2 -2
- package/dist/components/BannerRenderer/components/CopyElement.d.ts +1 -0
- package/dist/components/BannerRenderer/components/CopyElement.d.ts.map +1 -1
- package/dist/components/BannerRenderer/components/CopyElement.js +7 -5
- package/dist/components/BannerRenderer/components/VisualGuides.js +1 -1
- package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAnchorEdgeLocking.d.ts +3 -1
- package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAnchorEdgeLocking.d.ts.map +1 -1
- package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAnchorEdgeLocking.js +1 -1
- package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAutoPositioningMain.d.ts +2 -0
- package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAutoPositioningMain.d.ts.map +1 -1
- package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAutoPositioningMain.js +4 -0
- package/dist/components/BannerVisor.js +2 -2
- package/package.json +1 -1
|
@@ -74,9 +74,9 @@ const BannerRenderer = ({ bannerStyle, copies = [], bannerSubstyle = 1, logoUrl,
|
|
|
74
74
|
copies,
|
|
75
75
|
sizeMultiplier,
|
|
76
76
|
});
|
|
77
|
-
// Config key for auto-resetting hooks when style/substyle changes
|
|
77
|
+
// Config key for auto-resetting hooks when style/substyle/postType changes
|
|
78
78
|
// This allows hooks to self-reset without requiring consumer to use key prop
|
|
79
|
-
const configKey = `${bannerStyle}-${bannerSubstyle}`;
|
|
79
|
+
const configKey = `${bannerStyle}-${bannerSubstyle}-${postType}`;
|
|
80
80
|
// Get autoPositioningConfig early (needed for useLineDrawing to initialize completedLines)
|
|
81
81
|
const autoPositioningConfigForLines = (0, react_1.useMemo)(() => {
|
|
82
82
|
let baseConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyElement.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerRenderer/components/CopyElement.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAE/B,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IAGrB,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"CopyElement.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerRenderer/components/CopyElement.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const shared_1 = require("../../shared");
|
|
|
15
15
|
const defaults_1 = require("../../../constants/defaults");
|
|
16
16
|
const utils_1 = require("../utils");
|
|
17
17
|
const CopyElementComponent = ({ copy, copyIndex, copies, config, styleConfig, yMultiplier, autoOffsets, sizeMultiplier, fontFamily, draggableMode, creationMode, linkingModeActive, selectedElement, completedLines, drawingFrom, copyRefs, bannerContainerRef, onCopyPositionChange, onCopyRotationChange, onCopyWidthChange, setSelectedElement, setIsDragging, setLiveDragPosition, setAlignmentLines, setProximityLines, handleToggleAutoPositioning, handleCompleteLineTo, handleRotationSnap, handlePositionSnap, calculateAlignments, calculateProximityLines, detectProximityLines, }) => {
|
|
18
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
18
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
19
19
|
// Use styleSlot to determine config (0 = first copy, 1 = second copy, etc.)
|
|
20
20
|
// Fallback to copyIndex for creation mode
|
|
21
21
|
const styleSlot = copy.styleSlot !== undefined ? copy.styleSlot : copyIndex;
|
|
@@ -55,7 +55,9 @@ const CopyElementComponent = ({ copy, copyIndex, copies, config, styleConfig, yM
|
|
|
55
55
|
const configWidth = copyConfig === null || copyConfig === void 0 ? void 0 : copyConfig.width;
|
|
56
56
|
const autoOffset = autoOffsets[styleSlot] || 0;
|
|
57
57
|
// Get the font size multiplier from copy config (used for both font size and padding scaling)
|
|
58
|
-
|
|
58
|
+
// Priority: copy.fontSize > config.fontSizes[styleSlot] > 1.0
|
|
59
|
+
const configFontSize = (_g = (_f = config.fontSizes) === null || _f === void 0 ? void 0 : _f[styleSlot]) !== null && _g !== void 0 ? _g : 1.0;
|
|
60
|
+
const copyFontSizeMultiplier = (_h = copy.fontSize) !== null && _h !== void 0 ? _h : configFontSize;
|
|
59
61
|
// Calculate font size
|
|
60
62
|
// copy.fontSize is now an absolute multiplier, not relative to config
|
|
61
63
|
// Config fontSize values only set the initial copy.fontSize value
|
|
@@ -63,7 +65,7 @@ const CopyElementComponent = ({ copy, copyIndex, copies, config, styleConfig, yM
|
|
|
63
65
|
// Get alignment - always prioritize copy's own align property
|
|
64
66
|
const effectiveAlign = copy.align || (isStyled && copyConfig ? copyConfig.alignment : 'center');
|
|
65
67
|
// Get font weight - use copy's fontWeight, then config default, then fallback
|
|
66
|
-
const effectiveFontWeight = copy.fontWeight || (isStyled ? (((
|
|
68
|
+
const effectiveFontWeight = copy.fontWeight || (isStyled ? (((_j = styleConfig.copyFontWeights) === null || _j === void 0 ? void 0 : _j[styleSlot]) || 'normal') : 'normal');
|
|
67
69
|
// Get font family - prioritize copy's own fontFamily, then global override, then style config
|
|
68
70
|
const effectiveCopyFontFamily = copy.fontFamily || fontFamily || styleConfig.fontFamily;
|
|
69
71
|
// Get color properties - prioritize copy's own properties, then substyle config, then defaults
|
|
@@ -112,7 +114,7 @@ const CopyElementComponent = ({ copy, copyIndex, copies, config, styleConfig, yM
|
|
|
112
114
|
}, children: textElement })) : textElement;
|
|
113
115
|
// Calculate final position: config position + auto-offset + user adjustment
|
|
114
116
|
const baseX = isStyled ? configX : 0;
|
|
115
|
-
const baseY = isStyled ? (configY
|
|
117
|
+
const baseY = isStyled ? ((configY + autoOffset) * yMultiplier) : 0;
|
|
116
118
|
// DYNAMIC: Consistent 'copy-N' format for all styleSlots
|
|
117
119
|
const elementId = `copy-${styleSlot}`;
|
|
118
120
|
// Plan v30: Check if this element is a TARGET in the chain
|
|
@@ -133,7 +135,7 @@ const CopyElementComponent = ({ copy, copyIndex, copies, config, styleConfig, yM
|
|
|
133
135
|
const finalX = baseX + (copy.translateX || 0);
|
|
134
136
|
const finalY = baseY + effectiveTranslateY;
|
|
135
137
|
const finalWidth = copy.width || configWidth;
|
|
136
|
-
const finalRotation = (
|
|
138
|
+
const finalRotation = (_k = copy.rotation) !== null && _k !== void 0 ? _k : (isStyled ? ((_l = copyConfig === null || copyConfig === void 0 ? void 0 : copyConfig.rotation) !== null && _l !== void 0 ? _l : 0) : 0);
|
|
137
139
|
// DEBUG: Log positioning only when final position changes (not on every render)
|
|
138
140
|
react_1.default.useEffect(() => {
|
|
139
141
|
console.log(`📍 Copy[${styleSlot}] position changed:`, {
|
|
@@ -69,7 +69,7 @@ const VisualGuides = ({ draggableMode, isDragging, selectedElement, alignmentLin
|
|
|
69
69
|
const configY = (_e = copyConfig === null || copyConfig === void 0 ? void 0 : copyConfig.y) !== null && _e !== void 0 ? _e : 0;
|
|
70
70
|
const autoOffset = autoOffsets[styleSlot] || 0;
|
|
71
71
|
const baseX = isStyled ? configX : 0;
|
|
72
|
-
const baseY = isStyled ? (configY
|
|
72
|
+
const baseY = isStyled ? ((configY + autoOffset) * yMultiplier) : 0;
|
|
73
73
|
const finalX = baseX + (selectedCopy.translateX || 0);
|
|
74
74
|
const finalY = baseY + (selectedCopy.translateY || 0);
|
|
75
75
|
// Use live drag position if available, otherwise use final position
|
|
@@ -58,6 +58,8 @@ export interface UseAnchorEdgeLockingParams {
|
|
|
58
58
|
setTargetHeights: React.Dispatch<React.SetStateAction<Record<string, number>>>;
|
|
59
59
|
/** Ref to track if initial positioning has been done */
|
|
60
60
|
initialPositioningDoneRef: React.MutableRefObject<boolean>;
|
|
61
|
+
/** Ref to force initial positioning after configKey change (bypasses copiesHaveSavedPositions check) */
|
|
62
|
+
forceInitialPositioningRef: React.MutableRefObject<boolean>;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* Hook that manages anchor edge locking and initial positioning.
|
|
@@ -67,5 +69,5 @@ export interface UseAnchorEdgeLockingParams {
|
|
|
67
69
|
* - Track target element heights
|
|
68
70
|
* - Apply initial positioning in testing mode
|
|
69
71
|
*/
|
|
70
|
-
export declare function useAnchorEdgeLocking({ activeLinks, copies, sizeMultiplier, creationMode, logoRef, copyRefs, bannerContainerRef, derivedAutoConfig, config, onCopyPositionChange, anchorEdgeConfig, setAnchorEdgeConfig, targetHeights, setTargetHeights, initialPositioningDoneRef, }: UseAnchorEdgeLockingParams): void;
|
|
72
|
+
export declare function useAnchorEdgeLocking({ activeLinks, copies, sizeMultiplier, creationMode, logoRef, copyRefs, bannerContainerRef, derivedAutoConfig, config, onCopyPositionChange, anchorEdgeConfig, setAnchorEdgeConfig, targetHeights, setTargetHeights, initialPositioningDoneRef, forceInitialPositioningRef, }: UseAnchorEdgeLockingParams): void;
|
|
71
73
|
//# sourceMappingURL=useAnchorEdgeLocking.d.ts.map
|
package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAnchorEdgeLocking.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnchorEdgeLocking.d.ts","sourceRoot":"","sources":["../../../../../src/components/BannerRenderer/hooks/useAutoPositioning/useAnchorEdgeLocking.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAQjG;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mCAAmC;IACnC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,YAAY,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAChD,kCAAkC;IAClC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,wCAAwC;IACxC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D,6CAA6C;IAC7C,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACrD,6BAA6B;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,uCAAuC;IACvC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,8CAA8C;IAC9C,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,2CAA2C;IAC3C,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAClF,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gCAAgC;IAChC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/E,wDAAwD;IACxD,yBAAyB,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useAnchorEdgeLocking.d.ts","sourceRoot":"","sources":["../../../../../src/components/BannerRenderer/hooks/useAutoPositioning/useAnchorEdgeLocking.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAQjG;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mCAAmC;IACnC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,YAAY,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAChD,kCAAkC;IAClC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,wCAAwC;IACxC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D,6CAA6C;IAC7C,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACrD,6BAA6B;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,uCAAuC;IACvC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,8CAA8C;IAC9C,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,2CAA2C;IAC3C,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAClF,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gCAAgC;IAChC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/E,wDAAwD;IACxD,yBAAyB,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3D,wGAAwG;IACxG,0BAA0B,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,MAAM,EACN,cAAc,EACd,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,GAC3B,EAAE,0BAA0B,GAAG,IAAI,CAuJnC"}
|
|
@@ -18,7 +18,7 @@ const positioningUtils_1 = require("../../../styles/utils/positioningUtils");
|
|
|
18
18
|
* - Track target element heights
|
|
19
19
|
* - Apply initial positioning in testing mode
|
|
20
20
|
*/
|
|
21
|
-
function useAnchorEdgeLocking({ activeLinks, copies, sizeMultiplier, creationMode, logoRef, copyRefs, bannerContainerRef, derivedAutoConfig, config, onCopyPositionChange, anchorEdgeConfig, setAnchorEdgeConfig, targetHeights, setTargetHeights, initialPositioningDoneRef, }) {
|
|
21
|
+
function useAnchorEdgeLocking({ activeLinks, copies, sizeMultiplier, creationMode, logoRef, copyRefs, bannerContainerRef, derivedAutoConfig, config, onCopyPositionChange, anchorEdgeConfig, setAnchorEdgeConfig, targetHeights, setTargetHeights, initialPositioningDoneRef, forceInitialPositioningRef, }) {
|
|
22
22
|
// Capture anchor edge config and target heights when there are active links
|
|
23
23
|
// Works in both creationMode (completedLines) and testing mode (derivedAutoConfig.links)
|
|
24
24
|
(0, react_1.useEffect)(() => {
|
|
@@ -58,6 +58,8 @@ export interface UseAutoPositioningReturn {
|
|
|
58
58
|
derivedAutoConfig: AutoPositioningConfig | undefined;
|
|
59
59
|
debugPositions: () => GeneratedAutoPositioningConfig | null;
|
|
60
60
|
applyAutoPositioningConfig: () => void;
|
|
61
|
+
/** Ref to force initial positioning after configKey change (bypasses copiesHaveSavedPositions check) */
|
|
62
|
+
forceInitialPositioningRef: React.MutableRefObject<boolean>;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* Main hook that orchestrates auto-positioning functionality.
|
package/dist/components/BannerRenderer/hooks/useAutoPositioning/useAutoPositioningMain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoPositioningMain.d.ts","sourceRoot":"","sources":["../../../../../src/components/BannerRenderer/hooks/useAutoPositioning/useAutoPositioningMain.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useAutoPositioningMain.d.ts","sourceRoot":"","sources":["../../../../../src/components/BannerRenderer/hooks/useAutoPositioning/useAutoPositioningMain.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,8 @@ function useAutoPositioning({ logoRef, copyRefs, bannerContainerRef, copies, siz
|
|
|
64
64
|
const prevCompletedLinesRef = (0, react_1.useRef)(new Map());
|
|
65
65
|
const prevElementsInChainsRef = (0, react_1.useRef)(new Set());
|
|
66
66
|
const initialPositioningDoneRef = (0, react_1.useRef)(false);
|
|
67
|
+
// Flag to force initial positioning after configKey change (bypasses copiesHaveSavedPositions check)
|
|
68
|
+
const forceInitialPositioningRef = (0, react_1.useRef)(false);
|
|
67
69
|
// Flag to indicate configKey reset is in progress (prevents CHAIN-POS from resetting positions)
|
|
68
70
|
const configKeyResetInProgressRef = (0, react_1.useRef)(false);
|
|
69
71
|
// ============================================
|
|
@@ -277,6 +279,7 @@ function useAutoPositioning({ logoRef, copyRefs, bannerContainerRef, copies, siz
|
|
|
277
279
|
targetHeights,
|
|
278
280
|
setTargetHeights,
|
|
279
281
|
initialPositioningDoneRef,
|
|
282
|
+
forceInitialPositioningRef,
|
|
280
283
|
});
|
|
281
284
|
// Height compensation for anchor and targets
|
|
282
285
|
(0, useHeightCompensation_1.useHeightCompensation)({
|
|
@@ -328,5 +331,6 @@ function useAutoPositioning({ logoRef, copyRefs, bannerContainerRef, copies, siz
|
|
|
328
331
|
derivedAutoConfig,
|
|
329
332
|
debugPositions,
|
|
330
333
|
applyAutoPositioningConfig,
|
|
334
|
+
forceInitialPositioningRef,
|
|
331
335
|
};
|
|
332
336
|
}
|
|
@@ -42,7 +42,7 @@ const BannerVisor = ({ backgroundImageUrl, copies, copy1, copy2, bannerStyle = 1
|
|
|
42
42
|
const legacyCopies = [];
|
|
43
43
|
if (copy1) {
|
|
44
44
|
legacyCopies.push({
|
|
45
|
-
id:
|
|
45
|
+
id: 'legacy-copy1',
|
|
46
46
|
styleSlot: 0, // Legacy copy1 gets styleSlot 0
|
|
47
47
|
text: copy1,
|
|
48
48
|
fontSize: effectiveCopy1FontSize,
|
|
@@ -56,7 +56,7 @@ const BannerVisor = ({ backgroundImageUrl, copies, copy1, copy2, bannerStyle = 1
|
|
|
56
56
|
}
|
|
57
57
|
if (copy2) {
|
|
58
58
|
legacyCopies.push({
|
|
59
|
-
id:
|
|
59
|
+
id: 'legacy-copy2',
|
|
60
60
|
styleSlot: 1, // Legacy copy2 gets styleSlot 1
|
|
61
61
|
text: copy2,
|
|
62
62
|
fontSize: effectiveCopy2FontSize,
|