@times-components/ts-components 1.104.1-alpha.67 → 1.104.1-alpha.75

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.
Files changed (22) hide show
  1. package/dist/components/social-embed/BlockedEmbedMessage.d.ts +1 -2
  2. package/dist/components/social-embed/BlockedEmbedMessage.js +53 -3
  3. package/dist/components/social-embed/SocialMediaEmbed.d.ts +5 -0
  4. package/dist/components/social-embed/SocialMediaEmbed.js +13 -23
  5. package/dist/components/social-embed/__tests__/BlockedEmbedMessage.test.d.ts +1 -0
  6. package/dist/components/social-embed/__tests__/BlockedEmbedMessage.test.js +96 -0
  7. package/dist/components/social-embed/helpers/__tests__/enableCookies.test.d.ts +1 -0
  8. package/dist/components/social-embed/helpers/__tests__/enableCookies.test.js +57 -0
  9. package/dist/components/social-embed/helpers/__tests__/getVendorTitle.test.d.ts +1 -0
  10. package/dist/components/social-embed/helpers/__tests__/getVendorTitle.test.js +25 -0
  11. package/dist/components/social-embed/helpers/__tests__/vendorConsent.test.js +29 -33
  12. package/dist/components/social-embed/helpers/vendorConsent.d.ts +1 -1
  13. package/dist/components/social-embed/helpers/vendorConsent.js +6 -4
  14. package/package.json +3 -3
  15. package/rnw.js +1 -1
  16. package/src/components/social-embed/BlockedEmbedMessage.tsx +72 -3
  17. package/src/components/social-embed/SocialMediaEmbed.tsx +55 -61
  18. package/src/components/social-embed/__tests__/BlockedEmbedMessage.test.tsx +146 -0
  19. package/src/components/social-embed/helpers/__tests__/enableCookies.test.ts +90 -0
  20. package/src/components/social-embed/helpers/__tests__/getVendorTitle.test.ts +29 -0
  21. package/src/components/social-embed/helpers/__tests__/vendorConsent.test.ts +29 -44
  22. package/src/components/social-embed/helpers/vendorConsent.ts +7 -6
@@ -1,8 +1,7 @@
1
1
  import { FC, Dispatch, SetStateAction } from 'react';
2
2
  import { VendorName } from './types';
3
- declare type BlockedEmbedMessageProps = {
3
+ export declare type BlockedEmbedMessageProps = {
4
4
  vendorName: VendorName;
5
5
  setIsSocialEmbedAllowed: Dispatch<SetStateAction<boolean>>;
6
6
  };
7
7
  export declare const BlockedEmbedMessage: FC<BlockedEmbedMessageProps>;
8
- export {};
@@ -7,9 +7,59 @@ import { openPrivacyModal } from './helpers/privacyModal';
7
7
  import { socialMediaVendors } from './helpers/socialMediaVendors';
8
8
  import { modalType } from './constants';
9
9
  export const BlockedEmbedMessage = ({ vendorName, setIsSocialEmbedAllowed }) => {
10
+ // Allow cookies once - custom hook
10
11
  const allowCookiesOnce = () => {
11
- enableCookies(vendorName);
12
- setIsSocialEmbedAllowed(true);
12
+ const vendorId = socialMediaVendors[vendorName].id;
13
+ const CONSENT_GRANTED_KEY = `consentGranted_${vendorId}`;
14
+ // Check if consent has already been granted for this vendor
15
+ const consentAlreadyGranted = sessionStorage.getItem(CONSENT_GRANTED_KEY) === 'true';
16
+ if (consentAlreadyGranted) {
17
+ setIsSocialEmbedAllowed(true);
18
+ }
19
+ if (!window.__tcfapi) {
20
+ // tslint:disable-next-line:no-console
21
+ console.error('TCF API is not available!');
22
+ setIsSocialEmbedAllowed(false);
23
+ return;
24
+ }
25
+ // Use __tcfapi to check and request consent if now previously granted
26
+ window.__tcfapi('getCustomVendorConsents', 2, (data, success) => {
27
+ if (success && data && data.grants && data.grants[vendorId]) {
28
+ const vendorConsent = data.grants[vendorId].vendorGrant;
29
+ if (vendorConsent) {
30
+ // Store consent status to avoid future prompts during the session
31
+ sessionStorage.setItem(CONSENT_GRANTED_KEY, 'true');
32
+ setIsSocialEmbedAllowed(true);
33
+ }
34
+ else {
35
+ if (!window.__tcfapi) {
36
+ // tslint:disable-next-line:no-console
37
+ console.error('TCF API is not available!');
38
+ setIsSocialEmbedAllowed(false);
39
+ return;
40
+ }
41
+ // Request consent via postCustomConsent
42
+ window.__tcfapi('postCustomConsent', 2, (postConsentData, postSuccess) => {
43
+ if (postSuccess) {
44
+ sessionStorage.setItem(CONSENT_GRANTED_KEY, 'true');
45
+ // tslint:disable-next-line:no-console
46
+ console.log('postConsentData', postConsentData);
47
+ setIsSocialEmbedAllowed(true);
48
+ }
49
+ else {
50
+ // tslint:disable-next-line:no-console
51
+ console.error(`Failed to obtain consent for vendor: ${vendorId}`);
52
+ setIsSocialEmbedAllowed(false);
53
+ }
54
+ }, [vendorId], Object.keys(data.grants[vendorId].purposeGrants), []);
55
+ }
56
+ }
57
+ else {
58
+ // tslint:disable-next-line:no-console
59
+ console.error(`Consent data for vendor ${vendorId} not available or request failed.`);
60
+ setIsSocialEmbedAllowed(false);
61
+ }
62
+ });
13
63
  };
14
64
  const handlePrivacyManagerClick = (e) => {
15
65
  e.preventDefault();
@@ -29,4 +79,4 @@ export const BlockedEmbedMessage = ({ vendorName, setIsSocialEmbedAllowed }) =>
29
79
  React.createElement(EnableButton, { onClick: () => enableCookies(vendorName) }, "Enable cookies"),
30
80
  React.createElement(AllowButton, { onClick: () => allowCookiesOnce() }, "Allow cookies once")));
31
81
  };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tlZEVtYmVkTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9CbG9ja2VkRW1iZWRNZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQW1ELE1BQU0sT0FBTyxDQUFDO0FBQ3hFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPeEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlDLENBQUMsRUFDaEUsVUFBVSxFQUNWLHVCQUF1QixFQUN4QixFQUFFLEVBQUU7SUFDSCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtRQUM1QixhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRUYsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQWdDLEVBQUUsRUFBRTtRQUNyRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkIsZ0JBQWdCLENBQ2QsU0FBUyxDQUFDLElBQUksRUFDZCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FDbEQsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FDTCxvQkFBQyxhQUFhO1FBQ1osb0JBQUMsTUFBTTtZQUNMLG9CQUFDLG1CQUFtQjtnQkFDbEIsb0JBQUMsUUFBUSxPQUFHLENBQ1E7WUFDdEIsb0JBQUMsS0FBSztnQkFDSCxjQUFjLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDO21DQUN6QyxDQUNEO1FBQ1Qsb0JBQUMsU0FBUzs7WUFFMkMsR0FBRztZQUN0RCxvQkFBQyxrQkFBa0IsSUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLE9BQU8sRUFBRSx5QkFBeUIsdUJBRTFDLENBQ1g7UUFDWixvQkFBQyxZQUFZLElBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMscUJBRXZDO1FBQ2Ysb0JBQUMsV0FBVyxJQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSx5QkFFaEMsQ0FDQSxDQUNqQixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tlZEVtYmVkTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9CbG9ja2VkRW1iZWRNZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQW1ELE1BQU0sT0FBTyxDQUFDO0FBQ3hFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPeEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlDLENBQUMsRUFDaEUsVUFBVSxFQUNWLHVCQUF1QixFQUN4QixFQUFFLEVBQUU7SUFDSCxtQ0FBbUM7SUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLFFBQVEsRUFBRSxDQUFDO1FBRXpELDREQUE0RDtRQUM1RCxNQUFNLHFCQUFxQixHQUN6QixjQUFjLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssTUFBTSxDQUFDO1FBRXpELElBQUkscUJBQXFCLEVBQUU7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
@@ -3,6 +3,11 @@ import { TcData, VendorName } from './types';
3
3
  declare global {
4
4
  interface Window {
5
5
  __tcfapi?: (command: string, version: number, callback: (data: TcData, success: boolean) => void, listenerId?: number) => void;
6
+ twttr?: {
7
+ widgets: {
8
+ load: (element?: HTMLElement) => void;
9
+ };
10
+ };
6
11
  }
7
12
  }
8
13
  export declare type SocialMediaEmbedProps = {
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
2
2
  import { BlockedEmbedMessage } from './BlockedEmbedMessage';
3
3
  import { checkVendorConsent } from './helpers/vendorConsent';
4
4
  import { eventStatus } from './constants';
5
- export const SocialMediaEmbed = ({ vendorName, url }) => {
5
+ export const SocialMediaEmbed = ({ id, url, vendorName }) => {
6
6
  const [isSocialEmbedAllowed, setIsSocialEmbedAllowed] = useState(false);
7
7
  const [data, setData] = useState(null);
8
8
  useEffect(() => {
@@ -14,18 +14,23 @@ export const SocialMediaEmbed = ({ vendorName, url }) => {
14
14
  eventStatus: tcData.eventStatus,
15
15
  listenerId: tcData.listenerId
16
16
  });
17
- checkVendorConsent(vendorName, setIsSocialEmbedAllowed);
17
+ setIsSocialEmbedAllowed(checkVendorConsent(vendorName));
18
18
  }
19
- if (success && tcData.eventStatus === eventStatus.userActionComplete) {
19
+ if (success &&
20
+ tcData.eventStatus === eventStatus.userActionComplete) {
20
21
  setData({
21
22
  cmpStatus: tcData.cmpStatus,
22
23
  eventStatus: tcData.eventStatus,
23
24
  listenerId: tcData.listenerId
24
25
  });
25
- checkVendorConsent(vendorName, setIsSocialEmbedAllowed);
26
+ setIsSocialEmbedAllowed(checkVendorConsent(vendorName));
26
27
  }
27
28
  });
28
29
  }
30
+ // Trigger Twitter embed load when isSocialEmbedAllowed switches to true
31
+ if (isSocialEmbedAllowed && window.twttr && window.twttr.widgets) {
32
+ window.twttr.widgets.load();
33
+ }
29
34
  return () => {
30
35
  if (window.__tcfapi && data && data.listenerId) {
31
36
  window.__tcfapi('removeEventListener', 2, success => {
@@ -36,24 +41,9 @@ export const SocialMediaEmbed = ({ vendorName, url }) => {
36
41
  }, data.listenerId);
37
42
  }
38
43
  };
39
- }, []);
40
- useEffect(() => {
41
- let socialEmbedContainer = document.getElementsByClassName('social-embed')[0];
42
- if (socialEmbedContainer) {
43
- let script = document.createElement('script');
44
- script.type = 'text/javascript';
45
- script.async = true;
46
- script.src = 'https://platform.twitter.com/widgets.js';
47
- let link = document.createElement('a');
48
- link.href = `${url}?ref_src=twsrc%5Etfw`;
49
- socialEmbedContainer.appendChild(script);
50
- socialEmbedContainer.appendChild(link);
51
- }
52
44
  }, [isSocialEmbedAllowed]);
53
- // tslint:disable-next-line:no-console
54
- console.log('tcData', data);
55
- // tslint:disable-next-line:no-console
56
- console.log('isSocialEmbedAllowed', isSocialEmbedAllowed);
57
- return isSocialEmbedAllowed ? (React.createElement("blockquote", { className: "social-embed" })) : (React.createElement(BlockedEmbedMessage, { vendorName: vendorName, setIsSocialEmbedAllowed: setIsSocialEmbedAllowed }));
45
+ return isSocialEmbedAllowed ? (React.createElement("div", { id: id },
46
+ React.createElement("blockquote", { className: "twitter-tweet" },
47
+ React.createElement("a", { href: url })))) : (React.createElement(BlockedEmbedMessage, { vendorName: vendorName, setIsSocialEmbedAllowed: setIsSocialEmbedAllowed }));
58
48
  };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29jaWFsTWVkaWFFbWJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9Tb2NpYWxNZWRpYUVtYmVkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFNLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXFCMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQThCLENBQUMsRUFDMUQsVUFBVSxFQUNWLEdBQUcsRUFDSixFQUFFLEVBQUU7SUFDSCxNQUFNLENBQUMsb0JBQW9CLEVBQUUsdUJBQXVCLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXRELFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQ3pELElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLFFBQVEsRUFBRTtvQkFDMUQsT0FBTyxDQUFDO3dCQUNOLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUzt3QkFDM0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO3dCQUMvQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7cUJBQzlCLENBQUMsQ0FBQztvQkFFSCxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsa0JBQWtCLEVBQUU7b0JBQ3BFLE9BQU8sQ0FBQzt3QkFDTixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7d0JBQzNCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzt3QkFDL0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO3FCQUM5QixDQUFDLENBQUM7b0JBRUgsa0JBQWtCLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7aUJBQ3pEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUM5QyxNQUFNLENBQUMsUUFBUSxDQUNiLHFCQUFxQixFQUNyQixDQUFDLEVBQ0QsT0FBTyxDQUFDLEVBQUU7b0JBQ1IsSUFBSSxPQUFPLEVBQUU7d0JBQ1gsc0NBQXNDO3dCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUN0QjtnQkFDSCxDQUFDLEVBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsU0FBUyxDQUNQLEdBQUcsRUFBRTtRQUNILElBQUksb0JBQW9CLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUN4RCxjQUFjLENBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksb0JBQW9CLEVBQUU7WUFDeEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLEdBQUcseUNBQXlDLENBQUM7WUFFdkQsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQztZQUV6QyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQyxFQUNELENBQUMsb0JBQW9CLENBQUMsQ0FDdkIsQ0FBQztJQUVGLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRTFELE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQzVCLG9DQUFZLFNBQVMsRUFBQyxjQUFjLEdBQUcsQ0FDeEMsQ0FBQyxDQUFDLENBQUMsQ0FDRixvQkFBQyxtQkFBbUIsSUFDbEIsVUFBVSxFQUFFLFVBQVUsRUFDdEIsdUJBQXVCLEVBQUUsdUJBQXVCLEdBQ2hELENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29jaWFsTWVkaWFFbWJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9Tb2NpYWxNZWRpYUVtYmVkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFNLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQTBCMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQThCLENBQUMsRUFDMUQsRUFBRSxFQUNGLEdBQUcsRUFDSCxVQUFVLEVBQ1gsRUFBRSxFQUFFO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixFQUFFLHVCQUF1QixDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUV0RCxTQUFTLENBQ1AsR0FBRyxFQUFFO1FBQ0gsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUN6RCxJQUFJLE9BQU8sSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxRQUFRLEVBQUU7b0JBQzFELE9BQU8sQ0FBQzt3QkFDTixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7d0JBQzNCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzt3QkFDL0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO3FCQUM5QixDQUFDLENBQUM7b0JBRUgsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsSUFDRSxPQUFPO29CQUNQLE1BQU0sQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLGtCQUFrQixFQUNyRDtvQkFDQSxPQUFPLENBQUM7d0JBQ04sU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO3dCQUMzQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7d0JBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtxQkFDOUIsQ0FBQyxDQUFDO29CQUVILHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELHdFQUF3RTtRQUN4RSxJQUFJLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDaEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDN0I7UUFFRCxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDOUMsTUFBTSxDQUFDLFFBQVEsQ0FDYixxQkFBcUIsRUFDckIsQ0FBQyxFQUNELE9BQU8sQ0FBQyxFQUFFO29CQUNSLElBQUksT0FBTyxFQUFFO3dCQUNYLHNDQUFzQzt3QkFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDdEI7Z0JBQ0gsQ0FBQyxFQUNELElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQztJQUNKLENBQUMsRUFDRCxDQUFDLG9CQUFvQixDQUFDLENBQ3ZCLENBQUM7SUFFRixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUM1Qiw2QkFBSyxFQUFFLEVBQUUsRUFBRTtRQUNULG9DQUFZLFNBQVMsRUFBQyxlQUFlO1lBQ25DLDJCQUFHLElBQUksRUFBRSxHQUFHLEdBQUksQ0FDTCxDQUNULENBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FDRixvQkFBQyxtQkFBbUIsSUFDbEIsVUFBVSxFQUFFLFVBQVUsRUFDdEIsdUJBQXVCLEVBQUUsdUJBQXVCLEdBQ2hELENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -0,0 +1,96 @@
1
+ import React from 'react';
2
+ import { render, screen, fireEvent } from '@testing-library/react';
3
+ import { BlockedEmbedMessage } from '../BlockedEmbedMessage';
4
+ import { enableCookies } from '../helpers/enableCookies';
5
+ jest.mock('../helpers/enableCookies', () => ({
6
+ enableCookies: jest.fn()
7
+ }));
8
+ jest.mock('../helpers/privacyModal', () => ({
9
+ openPrivacyModal: jest.fn()
10
+ }));
11
+ jest.mock('../helpers/socialMediaVendors', () => ({
12
+ socialMediaVendors: {
13
+ twitter: { id: 'twitterId' }
14
+ }
15
+ }));
16
+ describe('BlockedEmbedMessage', () => {
17
+ const mockSetIsSocialEmbedAllowed = jest.fn();
18
+ const defaultProps = {
19
+ vendorName: 'twitter',
20
+ setIsSocialEmbedAllowed: mockSetIsSocialEmbedAllowed
21
+ };
22
+ beforeEach(() => {
23
+ jest.clearAllMocks();
24
+ window.__tcfapi = jest.fn();
25
+ sessionStorage.clear();
26
+ });
27
+ it('should call enableCookies when "Enable cookies" button is clicked', () => {
28
+ render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
29
+ fireEvent.click(screen.getByRole('button', { name: /Enable cookies/i }));
30
+ expect(enableCookies).toHaveBeenCalledWith('twitter');
31
+ });
32
+ it('should call allowCookiesOnce when "Allow cookies once" button is clicked', () => {
33
+ render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
34
+ fireEvent.click(screen.getByRole('button', { name: /Allow cookies once/i }));
35
+ expect(window.__tcfapi).toHaveBeenCalledWith('getCustomVendorConsents', 2, expect.any(Function));
36
+ });
37
+ it('should set consentGranted in session storage and allow embed if consent is granted', () => {
38
+ window.__tcfapi = jest.fn((command, version, callback) => {
39
+ // tslint:disable-next-line:no-console
40
+ console.log('version', version);
41
+ if (command === 'getCustomVendorConsents') {
42
+ callback({
43
+ grants: {
44
+ twitterId: { vendorGrant: true, purposeGrants: { 1: true } }
45
+ }
46
+ }, true);
47
+ }
48
+ });
49
+ render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
50
+ fireEvent.click(screen.getByRole('button', { name: /Allow cookies once/i }));
51
+ expect(sessionStorage.getItem('consentGranted_twitterId')).toBe('true');
52
+ expect(mockSetIsSocialEmbedAllowed).toHaveBeenCalledWith(true);
53
+ });
54
+ it('should handle missing consent data gracefully and not allow embed', () => {
55
+ window.__tcfapi = jest.fn((command, version, callback) => {
56
+ // tslint:disable-next-line:no-console
57
+ console.log('command, version', command, version);
58
+ callback(null, false); // Simulate unsuccessful consent request
59
+ });
60
+ render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
61
+ fireEvent.click(screen.getByRole('button', { name: /Allow cookies once/i }));
62
+ expect(sessionStorage.getItem('consentGranted_twitterId')).toBeNull();
63
+ expect(mockSetIsSocialEmbedAllowed).toHaveBeenCalledWith(false);
64
+ });
65
+ it('should handle postCustomConsent and allow embed if consent is successfully granted', () => {
66
+ window.__tcfapi = jest.fn((command, version, callback) => {
67
+ // tslint:disable-next-line:no-console
68
+ console.log('version', version);
69
+ if (command === 'getCustomVendorConsents') {
70
+ callback({
71
+ grants: {
72
+ twitterId: { vendorGrant: false, purposeGrants: { 1: true } }
73
+ }
74
+ }, true);
75
+ }
76
+ if (command === 'postCustomConsent') {
77
+ callback({}, true);
78
+ }
79
+ });
80
+ render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
81
+ fireEvent.click(screen.getByRole('button', { name: /Allow cookies once/i }));
82
+ expect(sessionStorage.getItem('consentGranted_twitterId')).toBe('true');
83
+ expect(mockSetIsSocialEmbedAllowed).toHaveBeenCalledWith(true);
84
+ });
85
+ it('should log an error if __tcfapi is not available and not allow embed', () => {
86
+ // tslint:disable-next-line:no-console
87
+ console.error = jest.fn();
88
+ delete window.__tcfapi;
89
+ render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
90
+ fireEvent.click(screen.getByRole('button', { name: /Allow cookies once/i }));
91
+ // tslint:disable-next-line:no-console
92
+ expect(console.error).toHaveBeenCalledWith('TCF API is not available!');
93
+ expect(mockSetIsSocialEmbedAllowed).toHaveBeenCalledWith(false);
94
+ });
95
+ });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tlZEVtYmVkTWVzc2FnZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL19fdGVzdHNfXy9CbG9ja2VkRW1iZWRNZXNzYWdlLnRlc3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUN6QixDQUFDLENBQUMsQ0FBQztBQUVKLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQzVCLENBQUMsQ0FBQyxDQUFDO0FBRUosSUFBSSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELGtCQUFrQixFQUFFO1FBQ2xCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUU7S0FDN0I7Q0FDRixDQUFDLENBQUMsQ0FBQztBQUVKLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFFOUMsTUFBTSxZQUFZLEdBQTZCO1FBQzdDLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLHVCQUF1QixFQUFFLDJCQUEyQjtLQUNyRCxDQUFD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
@@ -0,0 +1,57 @@
1
+ import { enableCookies } from '../enableCookies';
2
+ jest.mock('../socialMediaVendors', () => ({
3
+ socialMediaVendors: {
4
+ facebook: { id: 'facebookId' },
5
+ twitter: { id: 'twitterId' }
6
+ }
7
+ }));
8
+ describe('enableCookies', () => {
9
+ const mockVendorId = 'facebookId';
10
+ beforeEach(() => {
11
+ jest.clearAllMocks();
12
+ window.__tcfapi = jest.fn();
13
+ });
14
+ it('should call __tcfapi with "getCustomVendorConsents" for the vendor', () => {
15
+ window.__tcfapi = jest.fn((command, version, callback) => {
16
+ // tslint:disable-next-line:no-console
17
+ console.log('command, version', command, version);
18
+ callback({
19
+ grants: { [mockVendorId]: { purposeGrants: { 1: true } } }
20
+ }, true);
21
+ });
22
+ enableCookies('facebook');
23
+ expect(window.__tcfapi).toHaveBeenCalledWith('getCustomVendorConsents', 2, expect.any(Function));
24
+ });
25
+ it('should call postCustomConsent if consent data and grants are available', () => {
26
+ const purposeGrants = { 1: true };
27
+ window.__tcfapi = jest.fn((command, version, callback) => {
28
+ // tslint:disable-next-line:no-console
29
+ console.log('command, version', command, version);
30
+ if (command === 'getCustomVendorConsents') {
31
+ callback({
32
+ grants: { [mockVendorId]: { purposeGrants } }
33
+ }, true);
34
+ }
35
+ });
36
+ enableCookies('facebook');
37
+ expect(window.__tcfapi).toHaveBeenCalledWith('postCustomConsent', 2, expect.any(Function), [mockVendorId], Object.keys(purposeGrants), []);
38
+ });
39
+ it('should log an error if vendor consent data is not available', () => {
40
+ // tslint:disable-next-line:no-console
41
+ console.error = jest.fn();
42
+ window.__tcfapi = jest.fn((command, version, callback) => {
43
+ // tslint:disable-next-line:no-console
44
+ console.log('command, version', command, version);
45
+ callback(null, false); // Simulate unsuccessful __tcfapi call
46
+ });
47
+ enableCookies('facebook');
48
+ // tslint:disable-next-line:no-console
49
+ expect(console.error).toHaveBeenCalledWith('facebook vendor consent not available:', null);
50
+ });
51
+ it('should not call __tcfapi if __tcfapi is not defined', () => {
52
+ delete window.__tcfapi;
53
+ enableCookies('facebook');
54
+ expect(window.__tcfapi).toBeUndefined();
55
+ });
56
+ });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5hYmxlQ29va2llcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2hlbHBlcnMvX190ZXN0c19fL2VuYWJsZUNvb2tpZXMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLGtCQUFrQixFQUFFO1FBQ2xCLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUU7UUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtLQUM3QjtDQUNGLENBQUMsQ0FBQyxDQUFDO0FBRUosUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDN0IsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsR0FBRyxFQUFFO1FBQzNFLE1BQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDaEUsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELFFBQVEsQ0FDTjtnQkFDRSxNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFF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
@@ -0,0 +1,25 @@
1
+ import { getVendorTitle } from '../getVendorTitle';
2
+ describe('getVendorTitle', () => {
3
+ const mockSocialMediaVendors = {
4
+ facebook: { id: 'FacebookID' },
5
+ instagram: { id: 'InstagramID' }
6
+ };
7
+ it('should return "X (Twitter)" if the title is "twitter"', () => {
8
+ const result = getVendorTitle('twitter', mockSocialMediaVendors);
9
+ expect(result).toBe('X (Twitter)');
10
+ });
11
+ it('should return the id from socialMediaVendors if the title exists', () => {
12
+ const result = getVendorTitle('facebook', mockSocialMediaVendors);
13
+ expect(result).toBe('FacebookID');
14
+ });
15
+ it('should return the title if it does not exist in socialMediaVendors', () => {
16
+ const result = getVendorTitle('linkedin', mockSocialMediaVendors);
17
+ expect(result).toBe('linkedin');
18
+ });
19
+ it('should return the title if socialMediaVendors has no id for the given title', () => {
20
+ const mockVendorsWithoutId = { pinterest: {} };
21
+ const result = getVendorTitle('pinterest', mockVendorsWithoutId);
22
+ expect(result).toBe('pinterest');
23
+ });
24
+ });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0VmVuZG9yVGl0bGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9oZWxwZXJzL19fdGVzdHNfXy9nZXRWZW5kb3JUaXRsZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLE1BQU0sc0JBQXNCLEdBQUc7UUFDN0IsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRTtRQUM5QixTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFO0tBQ2pDLENBQUM7SUFFRixFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1FBQy9ELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUNqRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtRQUMxRSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxHQUFHLEVBQUU7UUFDNUUsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkVBQTZFLEVBQUUsR0FBRyxFQUFFO1FBQ3JGLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -1,53 +1,49 @@
1
1
  import { checkVendorConsent } from '../vendorConsent';
2
2
  describe('checkVendorConsent', () => {
3
- let setIsSocialEmbedAllowed;
3
+ const mockVendorName = 'twitter';
4
4
  beforeEach(() => {
5
- setIsSocialEmbedAllowed = jest.fn();
6
- });
7
- afterEach(() => {
8
- jest.resetAllMocks();
5
+ // Reset the __tcfapi mock before each test
6
+ delete window.__tcfapi;
9
7
  });
10
- it('calls setIsSocialEmbedAllowed with true if vendor consent is found', () => {
11
- const mockVendorName = 'twitter';
12
- // Mock window.__tcfapi function
8
+ it('returns true if the vendor has given consent', () => {
9
+ // Mock __tcfapi to simulate vendor consent
13
10
  window.__tcfapi = jest.fn((command, version, callback) => {
14
11
  // tslint:disable-next-line:no-console
15
- console.log('command, version', command, version);
16
- callback({ consentedVendors: [{ name: 'twitter' }] }, true // success
17
- );
12
+ console.log(version);
13
+ if (command === 'getCustomVendorConsents') {
14
+ callback({ consentedVendors: [{ name: mockVendorName }] }, true);
15
+ }
18
16
  });
19
- checkVendorConsent(mockVendorName, setIsSocialEmbedAllowed);
20
- expect(setIsSocialEmbedAllowed).toHaveBeenCalledWith(true);
21
- expect(window.__tcfapi).toHaveBeenCalledWith('getCustomVendorConsents', 2, expect.any(Function));
17
+ const result = checkVendorConsent(mockVendorName);
18
+ expect(result).toBe(true);
22
19
  });
23
- it('calls setIsSocialEmbedAllowed with false if vendor consent is not found', () => {
24
- const mockVendorName = 'twitter';
20
+ it('returns false if the vendor has not given consent', () => {
21
+ // Mock __tcfapi to simulate no consent given by vendor
25
22
  window.__tcfapi = jest.fn((command, version, callback) => {
26
23
  // tslint:disable-next-line:no-console
27
- console.log('command, version', command, version);
28
- callback({ consentedVendors: [{ name: 'Other Vendor' }] }, true);
24
+ console.log(version);
25
+ if (command === 'getCustomVendorConsents') {
26
+ callback({ consentedVendors: [{ name: 'otherVendor' }] }, true);
27
+ }
29
28
  });
30
- checkVendorConsent(mockVendorName, setIsSocialEmbedAllowed);
31
- expect(setIsSocialEmbedAllowed).toHaveBeenCalledWith(false);
29
+ const result = checkVendorConsent(mockVendorName);
30
+ expect(result).toBe(false);
31
+ });
32
+ it('returns false if __tcfapi is not available', () => {
33
+ const result = checkVendorConsent(mockVendorName);
34
+ expect(result).toBe(false);
32
35
  });
33
- it('logs an error message if fetching consent data fails', () => {
36
+ it('logs an error and returns false on callback failure', () => {
34
37
  const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
35
- const mockVendorName = 'twitter';
36
38
  window.__tcfapi = jest.fn((command, version, callback) => {
37
39
  // tslint:disable-next-line:no-console
38
- console.log('command, version', command, version);
39
- callback(null, false); // indicate failure
40
+ console.log(command, version);
41
+ callback(null, false);
40
42
  });
41
- checkVendorConsent(mockVendorName, setIsSocialEmbedAllowed);
42
- expect(setIsSocialEmbedAllowed).not.toHaveBeenCalled();
43
+ const result = checkVendorConsent(mockVendorName);
43
44
  expect(consoleSpy).toHaveBeenCalledWith(`Error fetching consent data or ${mockVendorName} embed not allowed`);
45
+ expect(result).toBe(false);
44
46
  consoleSpy.mockRestore();
45
47
  });
46
- it('does nothing if window.__tcfapi is undefined', () => {
47
- delete window.__tcfapi;
48
- const mockVendorName = 'twitter';
49
- checkVendorConsent(mockVendorName, setIsSocialEmbedAllowed);
50
- expect(setIsSocialEmbedAllowed).not.toHaveBeenCalled();
51
- });
52
48
  });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yQ29uc2VudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2hlbHBlcnMvX190ZXN0c19fL3ZlbmRvckNvbnNlbnQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd0RCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLElBQUksdUJBQWtDLENBQUM7SUFFdkMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLHVCQUF1QixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsR0FBRyxFQUFFO1FBQzVFLE1BQU0sY0FBYyxHQUFlLFNBQVMsQ0FBQztRQUM3QyxnQ0FBZ0M7UUFDL0IsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNoRSxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUNOLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQzNDLElBQUksQ0FBQyxVQUFVO2FBQ2hCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILGtCQUFrQixDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBRTVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBRSxNQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQ25ELHlCQUF5QixFQUN6QixDQUFDLEVBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FDckIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlFQUF5RSxFQUFFLEdBQUcsRUFBRTtRQUNqRixNQUFNLGNBQWMsR0FBZSxTQUFTLENBQUM7UUFDNUMsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNoRSxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUU1RCxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxHQUFHLEVBQUU7UUFDOUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuRSxNQUFNLGNBQWMsR0FBZSxTQUFTLENBQUM7UUFDNUMsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNoRSxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILGtCQUFrQixDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBRTVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxvQkFBb0IsQ0FDckMsa0NBQWtDLGNBQWMsb0JBQW9CLENBQ3JFLENBQUM7UUFFRixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE9BQVEsTUFBYyxDQUFDLFFBQVEsQ0FBQztRQUNoQyxNQUFNLGNBQWMsR0FBZSxTQUFTLENBQUM7UUFFN0Msa0JBQWtCLENBQUMsY0FBYyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFNUQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yQ29uc2VudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2hlbHBlcnMvX190ZXN0c19fL3ZlbmRvckNvbnNlbnQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd0RCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLE1BQU0sY0FBYyxHQUFlLFNBQVMsQ0FBQztJQUU3QyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsMkNBQTJDO1FBQzNDLE9BQVEsTUFBYyxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsMkNBQTJDO1FBQzFDLE1BQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDaEUsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckIsSUFBSSxPQUFPLEtBQUsseUJBQXlCLEVBQUU7Z0JBQ3pDLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2xFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtRQUMzRCx1REFBdUQ7UUFDdEQsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNoRSxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixJQUFJLE9BQU8sS0FBSyx5QkFBeUIsRUFBRTtnQkFDekMsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1FBQzdELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFbEUsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNoRSxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxvQkFBb0IsQ0FDckMsa0NBQWtDLGNBQWMsb0JBQW9CLENBQ3JFLENBQUM7UUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNCLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
@@ -1,2 +1,2 @@
1
1
  import { VendorName } from '../types';
2
- export declare const checkVendorConsent: (vendorName: VendorName, setIsSocialEmbedAllowed: (isSocialVendorAllowed: boolean) => void) => void;
2
+ export declare const checkVendorConsent: (vendorName: VendorName) => boolean;
@@ -1,15 +1,17 @@
1
- export const checkVendorConsent = (vendorName, setIsSocialEmbedAllowed) => {
1
+ export const checkVendorConsent = (vendorName) => {
2
+ let isSocialVendorAllowed = false;
2
3
  if (window.__tcfapi) {
3
4
  window.__tcfapi('getCustomVendorConsents', 2, (data, success) => {
4
5
  if (success && data && data.consentedVendors) {
5
- const isSocialVendorAllowed = data.consentedVendors.some((vendor) => vendor.name.toLowerCase() === vendorName.toLowerCase());
6
- setIsSocialEmbedAllowed(isSocialVendorAllowed);
6
+ isSocialVendorAllowed = data.consentedVendors.some((vendor) => vendor.name.toLowerCase() === vendorName.toLowerCase());
7
7
  }
8
8
  else {
9
9
  // tslint:disable-next-line:no-console
10
10
  console.log(`Error fetching consent data or ${vendorName} embed not allowed`);
11
+ isSocialVendorAllowed = false;
11
12
  }
12
13
  });
13
14
  }
15
+ return isSocialVendorAllowed;
14
16
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yQ29uc2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9oZWxwZXJzL3ZlbmRvckNvbnNlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsVUFBc0IsRUFDdEIsdUJBQWlFLEVBQ2pFLEVBQUU7SUFDRixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FDYix5QkFBeUIsRUFDekIsQ0FBQyxFQUNELENBQUMsSUFBUyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtZQUM5QixJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUM1QyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3RELENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUN6RCxDQUFDO2dCQUNGLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0wsc0NBQXNDO2dCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUNULGtDQUFrQyxVQUFVLG9CQUFvQixDQUNqRSxDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQ0YsQ0FBQztLQUNIO0FBQ0gsQ0FBQyxDQUFDIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yQ29uc2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9oZWxwZXJzL3ZlbmRvckNvbnNlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFzQixFQUFXLEVBQUU7SUFDcEUsSUFBSSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFbEMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQ2IseUJBQXlCLEVBQ3pCLENBQUMsRUFDRCxDQUFDLElBQVMsRUFBRSxPQUFnQixFQUFFLEVBQUU7WUFDOUIsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDNUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDaEQsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQ3pELENBQUM7YUFDSDtpQkFBTTtnQkFDTCxzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQ1Qsa0NBQWtDLFVBQVUsb0JBQW9CLENBQ2pFLENBQUM7Z0JBQ0YscUJBQXFCLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1FBQ0gsQ0FBQyxDQUNGLENBQUM7S0FDSDtJQUVELE9BQU8scUJBQXFCLENBQUM7QUFDL0IsQ0FBQyxDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@times-components/ts-components",
3
- "version": "1.104.1-alpha.67+c64f7d2e48",
3
+ "version": "1.104.1-alpha.75+6fadc8fc15",
4
4
  "description": "Reuseable Typescript React Components ",
5
5
  "main": "dist/index.js",
6
6
  "dev": "dist/index.js",
@@ -57,7 +57,7 @@
57
57
  "@times-components/link": "^3.17.34",
58
58
  "@times-components/provider": "^1.41.4",
59
59
  "@times-components/provider-queries": "^2.23.3",
60
- "@times-components/related-articles": "^6.17.89-alpha.67+c64f7d2e48",
60
+ "@times-components/related-articles": "^6.17.89-alpha.75+6fadc8fc15",
61
61
  "@times-components/ts-slices": "^1.9.23",
62
62
  "@times-components/ts-styleguide": "^1.50.34",
63
63
  "@times-components/utils": "^6.26.0",
@@ -117,5 +117,5 @@
117
117
  "@testing-library/jest-dom/extend-expect"
118
118
  ]
119
119
  },
120
- "gitHead": "c64f7d2e48315d59982ff5249921f090750924b2"
120
+ "gitHead": "6fadc8fc152b22f9dc006070a6ff739af06db192"
121
121
  }