<?php use Anowave\Ec\Helper\Constants; ?> <?php if ($block->getHelper()->supportCookieDirective()):?> <?php echo $block->getChildHtml('ec_cookie_content') ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">

		AEC.CookieConsent.setReflect(consent => 
		{
			consent.updateConsent(() => 
			{
				document.dispatchEvent(new CustomEvent('ec.consent.update', 
				{
					detail: {}
				}));
			});
			
			document.addEventListener("DOMContentLoaded", () => 
			{
				consent.setWidget(<?php  echo json_encode
				(
					[
						'asses' 			=> $block->getAsses(),
						'acquire'			=> $block->getHelper()->getCookieAcquire(),
						'options'	 		=> $block->getHelper()->getCookieWidgetOptions(),
						'scheme'			=> $block->getHelper()->getConsentScheme(),
						'nonce' 			=> $block->generateNonce(),
						'endpoints' 		=> 
						[ 
							'type' 			=> 'json', 
							'cookie' 		=> $block->getUrl('datalayer/index/cookie'), 
							'cookieContent' => $block->getUrl('datalayer/index/cookieContent'), 
							'cookieConsent' => $block->getUrl('datalayer/index/cookieConsent') 
						]
					]	
				)
				?>).getConsentDialog(dataLayer).finish();
			});
		}, <?php echo json_encode($block->getHelper()->getCookieBlockingStrategy()) ?>,[]);</script><?php else: ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">

		(endpoints => 
		{
			let engines = 
			{
				0: () => {},
				1: () => {},
				2: () => 
				{
					window.addEventListener('anowave.CookiebotOnSet', event => 
					{
						AEC.Request.post(endpoints.cookie, event?.detail?.params , response => 
						{
							return true;
						});
					});

					window.addEventListener('CookiebotOnDecline', event => 
					{
						const grant = [];

						const params = {
							decline: true
						}

						window.dispatchEvent(new CustomEvent("anowave.CookiebotOnSet", { 
							detail: { params }
						}));
					});

					window.addEventListener('CookiebotOnAccept', event => 
					{
						const grant = [];

						if (true === Cookiebot?.consent?.necessary)
						{
							grant.push('cookieConsentGranted');
						}

						if (true === Cookiebot?.consent?.marketing)
						{
							grant.push('cookieConsentMarketingGranted');
						}

						if (true === Cookiebot?.consent?.preferences)
						{
							grant.push('cookieConsentUserdata');
							grant.push('cookieConsentPersonalization');
							grant.push('cookieConsentPreferencesGranted');
						}

						if (true === Cookiebot?.consent?.statistics)
						{
							grant.push('cookieConsentAnalyticsGranted');
						}

						const params = {
							cookie: grant
						}

						if (!grant.length)
						{
							params['decline'] = true;
						}

						window.dispatchEvent(new CustomEvent("anowave.CookiebotOnSet", { 
							detail: { params }
						}));

						return true;
					});
				},
				3: () => {},
				4: () => 
				{
					(() =>  
					{
						let wait = 0, interval = 100;

						let otc = () => 
						{
							return 'undefined' !== typeof window.OneTrust;
						};

						window.ot = setInterval(end => 
						{
							wait += interval;

							if (wait > end)
							{
								if (window.ot)
								{
									clearInterval(window.ot);
								}
							}

							if (otc())
							{
								window.dispatchEvent(new CustomEvent("onetrust_loaded", 
								{
									detail: 
									{
										groups: window.OptanonActiveGroups
									}
								}));

								clearInterval(window.ot);
								
								let uuid = AEC.Cookie.get('cookieUuid');

								let map = <?php echo json_encode($block->getHelper()->getCookieDirectiveOnetrustMap()) ?>;

								OneTrust.OnConsentChanged(() => 
								{
									let groups = window.OptanonActiveGroups.split(',').filter(String);

									let grant = [], consent = {};

									groups.forEach(group => 
									{
										if (map.hasOwnProperty(group))
										{
											map[group].forEach(signal => 
											{
												consent[signal] = true;
											});
										}
									});
									
									Object.keys(consent).forEach(key => 
									{
										grant.push(key);
									});

									let params = 
									{
										cookie: grant
									};

									if (!grant.length)
									{
										params['decline'] = true;
									}

									AEC.Request.post(endpoints.cookie, params , response => 
									{
										return true;
									});

									return true;
								});
							}
						},
						interval);
						
					})(2000);
				},
				5: () => 
				{
					let grant = [];

					grant.push(<?php echo json_encode(Constants::COOKIE_CONSENT_GRANTED_EVENT) ?>);

					let uuid = AEC.Cookie.get('cookieUuid');

					if (!uuid)
					{
						AEC.Request.post(endpoints.cookie, { cookie: grant }, response => 
						{
							return true;
						});
					}
					return true;
				},
				6: () => 
				{
					return true;
				}
			};

			engines[AEC.Const.COOKIE_DIRECTIVE_ENGINE].apply(this,[]);

		})(<?php  echo json_encode
		(
			[ 
				'type' 			=> 'json', 
				'cookie' 		=> $block->getUrl('datalayer/index/cookie'), 
				'cookieContent' => $block->getUrl('datalayer/index/cookieContent'), 
				'cookieConsent' => $block->getUrl('datalayer/index/cookieConsent') 
			]
		)
		?>);</script><?php endif ?>