@capillarytech/creatives-library 8.0.138 → 8.0.139-alpha.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/package.json
CHANGED
|
@@ -61,6 +61,22 @@ const CAROUSEL_INITIAL_DATA = {
|
|
|
61
61
|
// Maximum number of carousel cards allowed
|
|
62
62
|
const MAX_CAROUSEL_ALLOWED = 10;
|
|
63
63
|
|
|
64
|
+
// Helper function to find selected deep link with fallback to base URL
|
|
65
|
+
const findSelectedDeepLink = (links, value) => {
|
|
66
|
+
if (!links || !value) return undefined;
|
|
67
|
+
|
|
68
|
+
// Try to find exact match first
|
|
69
|
+
let selectedDeepLink = links.find((link) => link?.value === value);
|
|
70
|
+
|
|
71
|
+
// If no exact match and value contains query parameters, try base URL match
|
|
72
|
+
if (!selectedDeepLink && value?.includes('?')) {
|
|
73
|
+
const baseDeepLinkValue = value.split('?')[0];
|
|
74
|
+
selectedDeepLink = links.find((link) => link?.value === baseDeepLinkValue);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return selectedDeepLink;
|
|
78
|
+
};
|
|
79
|
+
|
|
64
80
|
const MediaUploaders = ({
|
|
65
81
|
mediaType,
|
|
66
82
|
activeTab,
|
|
@@ -616,12 +632,7 @@ const MediaUploaders = ({
|
|
|
616
632
|
</CapRow>
|
|
617
633
|
)}
|
|
618
634
|
{button?.linkType === DEEP_LINK && button?.deepLinkValue && button?.actionOnClick && (() => {
|
|
619
|
-
|
|
620
|
-
let selectedDeepLink = deepLink?.find((link) => link?.value === button?.deepLinkValue);
|
|
621
|
-
if (!selectedDeepLink && button?.deepLinkValue && button?.deepLinkValue.includes('?')) {
|
|
622
|
-
const baseDeepLinkValue = button?.deepLinkValue.split('?')[0];
|
|
623
|
-
selectedDeepLink = deepLink?.find((link) => link?.value === baseDeepLinkValue);
|
|
624
|
-
}
|
|
635
|
+
const selectedDeepLink = findSelectedDeepLink(deepLink, button?.deepLinkValue);
|
|
625
636
|
const deepLinkKeysFromSelection = selectedDeepLink?.keys;
|
|
626
637
|
let deepLinkKeysFromSelectionArray = [];
|
|
627
638
|
if (Array.isArray(deepLinkKeysFromSelection)) {
|
|
@@ -638,12 +649,7 @@ const MediaUploaders = ({
|
|
|
638
649
|
</CapHeading>
|
|
639
650
|
<CapLabel type="label2" className="deep-link-keys-value">
|
|
640
651
|
{(() => {
|
|
641
|
-
|
|
642
|
-
let selectedDeepLink = deepLink?.find((link) => link?.value === button?.deepLinkValue);
|
|
643
|
-
if (!selectedDeepLink && button?.deepLinkValue && button?.deepLinkValue.includes('?')) {
|
|
644
|
-
const baseDeepLinkValue = button?.deepLinkValue.split('?')[0];
|
|
645
|
-
selectedDeepLink = deepLink?.find((link) => link?.value === baseDeepLinkValue);
|
|
646
|
-
}
|
|
652
|
+
const selectedDeepLink = findSelectedDeepLink(deepLink, button?.deepLinkValue);
|
|
647
653
|
const deepLinkKeysFromSelection = selectedDeepLink?.keys;
|
|
648
654
|
let deepLinkKeysArray = [];
|
|
649
655
|
if (Array.isArray(button?.deepLinkKeys)) {
|
|
@@ -671,12 +677,7 @@ const MediaUploaders = ({
|
|
|
671
677
|
onChange={(e) => handleCarouselDeepLinkKeysChange(cardIndex, e.target.value)}
|
|
672
678
|
placeholder={formatMessage(messages.deepLinkKeysPlaceholder, {
|
|
673
679
|
key: (() => {
|
|
674
|
-
|
|
675
|
-
let selectedDeepLink = deepLink?.find((link) => link?.value === button?.deepLinkValue);
|
|
676
|
-
if (!selectedDeepLink && button?.deepLinkValue && button?.deepLinkValue.includes('?')) {
|
|
677
|
-
const baseDeepLinkValue = button?.deepLinkValue.split('?')[0];
|
|
678
|
-
selectedDeepLink = deepLink?.find((link) => link?.value === baseDeepLinkValue);
|
|
679
|
-
}
|
|
680
|
+
const selectedDeepLink = findSelectedDeepLink(deepLink, button?.deepLinkValue);
|
|
680
681
|
const deepLinkKeysFromSelection = selectedDeepLink?.keys;
|
|
681
682
|
let deepLinkKeysFromSelectionArray = [];
|
|
682
683
|
if (Array.isArray(deepLinkKeysFromSelection)) {
|
|
@@ -93,6 +93,27 @@ import messages from "./messages";
|
|
|
93
93
|
import { EXTERNAL_URL } from "../CreativesContainer/constants";
|
|
94
94
|
import createMobilePushPayloadWithIntl from "../../utils/createMobilePushPayload";
|
|
95
95
|
|
|
96
|
+
// Helper function to extract deep link keys from URL where value equals key
|
|
97
|
+
const extractDeepLinkKeys = (deepLinkValue) => {
|
|
98
|
+
try {
|
|
99
|
+
if (deepLinkValue && deepLinkValue.includes('?')) {
|
|
100
|
+
const queryString = deepLinkValue.split('?')[1];
|
|
101
|
+
const searchParams = new URLSearchParams(queryString);
|
|
102
|
+
const extractedKeys = [];
|
|
103
|
+
searchParams.forEach((value, key) => {
|
|
104
|
+
if (value === key) { // Only extract keys where value equals key
|
|
105
|
+
extractedKeys.push(key);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return extractedKeys.length > 0 ? extractedKeys : [];
|
|
109
|
+
}
|
|
110
|
+
return [];
|
|
111
|
+
} catch (error) {
|
|
112
|
+
console.error("[MobilePushNew] Error extracting deep link keys from CTA button:", error);
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
96
117
|
const MobilePushNew = ({
|
|
97
118
|
isFullMode,
|
|
98
119
|
intl,
|
|
@@ -636,24 +657,9 @@ const MobilePushNew = ({
|
|
|
636
657
|
// Use deep link keys from the button if available, otherwise try to extract from URL
|
|
637
658
|
let deepLinkKeys = button?.deepLinkKeys || [];
|
|
638
659
|
if (!deepLinkKeys.length && button?.type === DEEP_LINK && button?.actionLink) {
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
if (deepLinkValue && deepLinkValue.includes('?')) {
|
|
643
|
-
const queryString = deepLinkValue.split('?')[1];
|
|
644
|
-
const searchParams = new URLSearchParams(queryString);
|
|
645
|
-
const extractedKeys = [];
|
|
646
|
-
searchParams.forEach((value, key) => {
|
|
647
|
-
if (value === key) { // Only extract keys where value equals key
|
|
648
|
-
extractedKeys.push(key);
|
|
649
|
-
}
|
|
650
|
-
});
|
|
651
|
-
if (extractedKeys?.length > 0) {
|
|
652
|
-
deepLinkKeys = extractedKeys;
|
|
653
|
-
}
|
|
654
|
-
}
|
|
655
|
-
} catch (error) {
|
|
656
|
-
console.error("[MobilePushNew] Error extracting deep link keys from CTA button:", error);
|
|
660
|
+
const extractedKeys = extractDeepLinkKeys(button?.actionLink);
|
|
661
|
+
if (extractedKeys?.length > 0) {
|
|
662
|
+
deepLinkKeys = extractedKeys;
|
|
657
663
|
}
|
|
658
664
|
}
|
|
659
665
|
|
|
@@ -968,24 +974,9 @@ const MobilePushNew = ({
|
|
|
968
974
|
// Use deep link keys from the button if available, otherwise try to extract from URL
|
|
969
975
|
let deepLinkKeys = button?.deepLinkKeys || [];
|
|
970
976
|
if (!deepLinkKeys?.length && button?.type === DEEP_LINK && button?.actionLink) {
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
if (deepLinkValue && deepLinkValue.includes('?')) {
|
|
975
|
-
const queryString = deepLinkValue.split('?')[1];
|
|
976
|
-
const searchParams = new URLSearchParams(queryString);
|
|
977
|
-
const extractedKeys = [];
|
|
978
|
-
searchParams.forEach((value, key) => {
|
|
979
|
-
if (value === key) { // Only extract keys where value equals key
|
|
980
|
-
extractedKeys.push(key);
|
|
981
|
-
}
|
|
982
|
-
});
|
|
983
|
-
if (extractedKeys?.length > 0) {
|
|
984
|
-
deepLinkKeys = extractedKeys;
|
|
985
|
-
}
|
|
986
|
-
}
|
|
987
|
-
} catch (error) {
|
|
988
|
-
console.error("[MobilePushNew] Error extracting deep link keys from CTA button:", error);
|
|
977
|
+
const extractedKeys = extractDeepLinkKeys(button?.actionLink);
|
|
978
|
+
if (extractedKeys?.length > 0) {
|
|
979
|
+
deepLinkKeys = extractedKeys;
|
|
989
980
|
}
|
|
990
981
|
}
|
|
991
982
|
|
|
@@ -1264,24 +1255,9 @@ const MobilePushNew = ({
|
|
|
1264
1255
|
// Use deep link keys from the button if available, otherwise try to extract from URL
|
|
1265
1256
|
let deepLinkKeys = button?.deepLinkKeys || [];
|
|
1266
1257
|
if (!deepLinkKeys.length && button?.type === DEEP_LINK && button?.actionLink) {
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
if (deepLinkValue && deepLinkValue.includes('?')) {
|
|
1271
|
-
const queryString = deepLinkValue.split('?')[1];
|
|
1272
|
-
const searchParams = new URLSearchParams(queryString);
|
|
1273
|
-
const extractedKeys = [];
|
|
1274
|
-
searchParams.forEach((value, key) => {
|
|
1275
|
-
if (value === key) { // Only extract keys where value equals key
|
|
1276
|
-
extractedKeys.push(key);
|
|
1277
|
-
}
|
|
1278
|
-
});
|
|
1279
|
-
if (extractedKeys?.length > 0) {
|
|
1280
|
-
deepLinkKeys = extractedKeys;
|
|
1281
|
-
}
|
|
1282
|
-
}
|
|
1283
|
-
} catch (error) {
|
|
1284
|
-
console.error("[MobilePushNew] Error extracting deep link keys from CTA button:", error);
|
|
1258
|
+
const extractedKeys = extractDeepLinkKeys(button?.actionLink);
|
|
1259
|
+
if (extractedKeys?.length > 0) {
|
|
1260
|
+
deepLinkKeys = extractedKeys;
|
|
1285
1261
|
}
|
|
1286
1262
|
}
|
|
1287
1263
|
|
|
@@ -1596,24 +1572,9 @@ const MobilePushNew = ({
|
|
|
1596
1572
|
// Use deep link keys from the button if available, otherwise try to extract from URL
|
|
1597
1573
|
let deepLinkKeys = button?.deepLinkKeys || [];
|
|
1598
1574
|
if (!deepLinkKeys?.length && button?.type === DEEP_LINK && button?.actionLink) {
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
if (deepLinkValue && deepLinkValue.includes('?')) {
|
|
1603
|
-
const queryString = deepLinkValue.split('?')[1];
|
|
1604
|
-
const searchParams = new URLSearchParams(queryString);
|
|
1605
|
-
const extractedKeys = [];
|
|
1606
|
-
searchParams.forEach((value, key) => {
|
|
1607
|
-
if (value === key) { // Only extract keys where value equals key
|
|
1608
|
-
extractedKeys.push(key);
|
|
1609
|
-
}
|
|
1610
|
-
});
|
|
1611
|
-
if (extractedKeys?.length > 0) {
|
|
1612
|
-
deepLinkKeys = extractedKeys;
|
|
1613
|
-
}
|
|
1614
|
-
}
|
|
1615
|
-
} catch (error) {
|
|
1616
|
-
console.error("[MobilePushNew] Error extracting deep link keys from CTA button:", error);
|
|
1575
|
+
const extractedKeys = extractDeepLinkKeys(button?.actionLink);
|
|
1576
|
+
if (extractedKeys?.length > 0) {
|
|
1577
|
+
deepLinkKeys = extractedKeys;
|
|
1617
1578
|
}
|
|
1618
1579
|
}
|
|
1619
1580
|
|
|
@@ -1300,7 +1300,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1300
1300
|
)}
|
|
1301
1301
|
{style === VIDEO && (
|
|
1302
1302
|
<div className="video-preview">
|
|
1303
|
-
<video>
|
|
1303
|
+
<video aria-label="Template video preview" controls={false} tabIndex="0">
|
|
1304
1304
|
<source src={url} type="video/mp4" />
|
|
1305
1305
|
</video>
|
|
1306
1306
|
<div className="icon-position">
|