{"version":3,"file":"banner.pro.js","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///../../dev-packages/webpack-config/src/emptyModule.js","webpack:///../../api-packages/api/src/webserver/http-verb.ts","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/getManagerDependingVariables.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/decision/getServiceSelection.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/apply.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/optIn.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/optInOutManager.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/optOut.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/deleteCookiesLocally.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/apply/manager.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/decision/getDefaultDecision.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/decision/getUserDecision.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/explode.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/applyInteractive.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/bannerPredecisionShow.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/bannerPredecisionShowInteractive.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/optIn.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/optInAll.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/optOut.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/events/optOutAll.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/idx.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/isGdprScanner.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/ready.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/regExpPatternFromWildcardName.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/pregQuote.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/supportsCookies.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/waitObject.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/applyDynamicsToHtml.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/htmlAttributes.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/putHtmlCodeToDom.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/events/initiatorExecution.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/events/optInContentBlocker.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/events/optInContentBlockerAll.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/dispatchResizeEvent.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/htmlDecode.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/isHost.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/isUrl.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/parents.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/asciiSpinner.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/closeIcon.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/plainAntdIconAsSvg.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/checkbox.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/groups/checkbox.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/groups/cookieProperty.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/groups/cookieProperty.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/groups/cookiePropertyList.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/groups/cookie.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/groups/cookie.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/portal.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/tooltip.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/contexts/banner.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/contexts/blocker.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/footer/link.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/footer/link.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/footer/poweredByLink.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/utils/jsxJoin.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/common/useCommonFooterLink.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/common/useCommonTeachings.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/useBannerOrBlocker.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/useLegalLinks.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/usePlainCss.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/index.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/body/teaching.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/body/teachingSeparator.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/groups/linkMore.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/common/header/headline.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/scale.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/others/getSsrPoweredByLink.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/utils/hexToRgb.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/matchingSelector.tsx","webpack:///../../wordpress-packages/utils/lib/factory/ajax/commonUrlBuilder.tsx","webpack:///../../wordpress-packages/utils/lib/factory/ajax/nonceDeprecationPool.tsx","webpack:///../../wordpress-packages/utils/lib/factory/ajax/corruptRestApi.tsx","webpack:///../../wordpress-packages/utils/lib/factory/ajax/parseResult.tsx","webpack:///../../wordpress-packages/utils/lib/factory/ajax/commonRequest.tsx","webpack:///../../wordpress-packages/utils/lib/factory/ajax/routeHttpVerbEnum.tsx","webpack:///../../wordpress-packages/utils/lib/helpers.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/supportsCookies.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/isCrawler.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/dynamicRequest.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/promiseTimeout.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/isDoNotTrack.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/utils/isDoNotTrack.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/userConsent.tsx","webpack:///./src/public/ts/wp-api/consentDynamicPredecision.get.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/others/isHiddenDueLegal.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerAnimation.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerStateContextCallbacks.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerActionLinks.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/useResettableAnimation.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/utils/calculateRgba.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/animateCss.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/useRenderedHeightsAsCssVars.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerButtonCallbacks.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/header/closeIcon.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/header/header.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/header/container.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/header/header.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/header/logo.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/groups/sectionTitle.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/groups/title.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/groups/description.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/common/linkMore.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/groups/cookie.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/groups/group.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/groups/group.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/groups/list.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/groups/groups.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/groups/dottedGroup.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/dottedGroupItem.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/dottedGroupBullet.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/groups/dottedGroupList.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/dottedGroups.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/body/historySelect.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/historySelectOption.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/historySelect.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/buttons/common.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/buttons/acceptEssentials.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/buttons/acceptIndividual.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/buttons/save.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/buttons/acceptAll.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/body/button.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/utils/isIE.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/body/buttonList.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/body/body.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/leftSide.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/description.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/rightSide.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/container.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/body/body.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/footer/footer.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/footer/container.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/footer/footer.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/body/content.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/content/content.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/header/separator.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/footer/separator.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/body/animatedContent.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/content/inner.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/banner/banner.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/useRestrictScrollWhenVisible.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerHistory.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/overlay/alignment.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/banner/overlay/overlay.tsx","webpack:///./src/public/ts/wp-api/consent.get.tsx","webpack:///./src/public/ts/components/websiteBanner.tsx","webpack:///./src/public/ts/hooks/useTcf.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerToggleOverlay.tsx","webpack:///./src/public/ts/hooks/useBannerPreDecisionGateway.tsx","webpack:///./src/public/ts/utils/isCustomize.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/isCrawler.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/isPreventPreDecision.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/hasPageClass.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/predecision/gateway.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/banner/useBannerConsentListener.tsx","webpack:///./src/public/ts/others/comp/listenPresetOptIn.tsx","webpack:///./src/public/ts/wp-api/consentClear.delete.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/api/consentSync.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/api/consent.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/api/wrapFn.tsx","webpack:///./src/public/ts/banner.tsx","webpack:///./src/public/ts/tcf/cmpApi.tsx","webpack:///./src/public/ts/utils/ensureBodyElement.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/decision/printConsentUuidsToHTMLElement.tsx","webpack:///./src/public/ts/others/deleteCookiesServer.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/api/createApi.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/api/consentAll.tsx","webpack:///../../frontend-packages/cookie-consent-web-client/src/api/unblock.tsx","webpack:///./src/public/ts/components/bannerProductionNotice.tsx","webpack:///./src/public/ts/wp-api/consent.post.tsx","webpack:///./src/public/ts/others/applyConsentForwarding.tsx","webpack:///./src/public/ts/others/applyConsent.tsx","webpack:///./src/public/ts/utils/getCmpVersion.tsx","webpack:///./src/public/ts/others/getCookieConsentManager.tsx","webpack:///./src/public/ts/utils/getOptionsFromWindow.tsx","webpack:///./src/public/ts/utils/getOtherOptionsFromWindow.tsx","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","module.exports = {};\n","var ERouteHttpVerb;\n\n(function (ERouteHttpVerb) {\n ERouteHttpVerb[\"GET\"] = \"GET\";\n ERouteHttpVerb[\"POST\"] = \"POST\";\n ERouteHttpVerb[\"PUT\"] = \"PUT\";\n ERouteHttpVerb[\"PATCH\"] = \"PATCH\";\n ERouteHttpVerb[\"DELETE\"] = \"DELETE\";\n})(ERouteHttpVerb || (ERouteHttpVerb = {}));\n\nexport { ERouteHttpVerb };","export const LABEL_GTM = \"Google Tag Manager\";\nexport const LABEL_MTM = \"Matomo Tag Manager\";\n\nfunction getManagerDependingVariables(setCookiesViaManager, presetId) {\n let useGlobalObjectName;\n let getDataLayer;\n let serviceIsManager = false;\n let managerLabel = \"\";\n let expectedManagerPresetId;\n\n if (setCookiesViaManager && setCookiesViaManager !== \"none\") {\n const isGtm = setCookiesViaManager === \"googleTagManager\";\n const isMtm = setCookiesViaManager === \"matomoTagManager\";\n\n if (isGtm) {\n expectedManagerPresetId = \"gtm\";\n useGlobalObjectName = \"dataLayer\";\n managerLabel = LABEL_GTM;\n } else if (isMtm) {\n expectedManagerPresetId = \"mtm\";\n useGlobalObjectName = \"_mtm\";\n managerLabel = LABEL_MTM;\n }\n\n if (isGtm || isMtm) {\n getDataLayer = () => {\n window[useGlobalObjectName] = window[useGlobalObjectName] || [];\n return window[useGlobalObjectName];\n };\n }\n\n if (expectedManagerPresetId && presetId === expectedManagerPresetId) {\n serviceIsManager = true;\n }\n }\n\n return {\n getDataLayer,\n serviceIsManager,\n managerLabel,\n expectedManagerPresetId\n };\n}\n\nexport { getManagerDependingVariables };","import { getUserDecision } from \".\";\nimport { getManagerDependingVariables } from \"../apply\";\n\n/**\n * Read the selected groups + services depending on the passed type.\n */\nfunction getServiceSelection({\n decisionCookieName,\n tagManager,\n groups,\n essentialGroupSlug,\n type\n}) {\n let selectedGroups;\n const isManagerActive = tagManager && tagManager !== \"none\";\n const [essentialGroupObj] = groups.filter(({\n slug\n }) => slug === essentialGroupSlug);\n const consentEssentials = {\n [essentialGroupObj.id]: essentialGroupObj.items.map(({\n id\n }) => id)\n }; // Read current consent\n\n if (type === \"consent\") {\n const decision = getUserDecision(decisionCookieName);\n\n if (decision !== false) {\n selectedGroups = decision.consent;\n } else {\n console.warn(\"Something went wrong while reading the cookie, fallback to essentials only...\");\n selectedGroups = consentEssentials;\n }\n }\n\n if (type === \"essentials\") {\n selectedGroups = consentEssentials;\n }\n\n return {\n isManagerActive,\n selectedGroups,\n iterateServices: async function (callback) {\n for (const group of groups) {\n for (const service of group.items) {\n var _selectedGroups$group;\n\n const isOptIn = type === \"all\" || ((_selectedGroups$group = selectedGroups[group.id]) === null || _selectedGroups$group === void 0 ? void 0 : _selectedGroups$group.indexOf(service.id)) > -1;\n const useTagManager = getManagerDependingVariables(tagManager, service.presetId);\n await callback(group, service, isOptIn, useTagManager);\n }\n }\n }\n };\n}\n\nexport { getServiceSelection };","import { applyOptIn, applyOptInOutManager, applyOptOut } from \".\";\nimport { getServiceSelection } from \"../decision\";\nimport { OPT_IN_ALL_EVENT, OPT_OUT_ALL_EVENT, APPLY_INTERACTIVE_EVENT } from \"../events\";\nimport { ready } from \"../utils\";\n/**\n * Apply services on frontend. Depending on some other mechanism you can differ\n * between the following \"decision\" types:\n *\n * - `all`: All services are applied (e. g. bots)\n * - `consent`: All services from the current consent (read from cookie)\n *\n * The services are sent in the following way:\n *\n * 1. Apply opt-in scripts (sequentially)\n * 2. If GTM / MTM is active, wait for the data layer\n * a) Push all opt-in events (parallel)\n * b) Wait x seconds to avoid side effects\n * c) Push all opt-out events (parallel)\n * 3. Apply opt-in scripts (sequentially)\n *\n * @param type\n * @see https://www.simoahava.com/analytics/notify-page-google-tag-manager-loaded/\n * @see https://support.google.com/tagmanager/answer/7679219\n * @see https://developer.matomo.org/guides/tagmanager/datalayer\n */\n\nasync function apply(options) {\n const applyBeforeInteractiveServices = [];\n getServiceSelection(options).iterateServices((group, service, isOptIn) => {\n if (isOptIn) {\n applyBeforeInteractiveServices.push({\n group,\n service\n });\n }\n });\n document.dispatchEvent(new CustomEvent(APPLY_INTERACTIVE_EVENT, {\n detail: {\n services: applyBeforeInteractiveServices\n }\n })); // Wait all events are initialized\n\n await ready(); // Do opt-in\n\n const {\n dataLayerPromise,\n isManagerOptOut,\n services,\n ready: applyOptInReady\n } = await applyOptIn(options); // Wait for manager's dataLayer loaded (can also be none) and do manager's events\n\n const {\n ready: applyOptInOutManagerReady\n } = await applyOptInOutManager(options, await dataLayerPromise, isManagerOptOut);\n const optInAllReady = Promise.all([applyOptInReady, applyOptInOutManagerReady]);\n document.dispatchEvent(new CustomEvent(OPT_IN_ALL_EVENT, {\n detail: {\n services,\n ready: optInAllReady\n }\n })); // Do opt-out\n\n const {\n deleteHttpCookies,\n services: allOptOutServices,\n ready: optOutReady\n } = await applyOptOut(options, isManagerOptOut);\n document.dispatchEvent(new CustomEvent(OPT_OUT_ALL_EVENT, {\n detail: {\n services: allOptOutServices,\n deleteHttpCookies,\n ready: Promise.all([optInAllReady, optOutReady])\n }\n }));\n}\n\nexport { apply };","import { putHtmlCodeToDom } from \"@devowl-wp/headless-content-unblocker\";\nimport { getServiceSelection } from \"../decision\";\nimport { OPT_IN_EVENT } from \"../events\";\nimport { waitObject } from \"../utils\";\n\n/**\n * Opt-in to a set of services.\n */\nasync function applyOptIn(options) {\n const allOptInServices = [];\n const {\n isManagerActive,\n iterateServices\n } = getServiceSelection(options);\n const {\n skipOptIn\n } = options; // Handle managers like GTM and MTM\n\n let isManagerOptOut = false;\n let dataLayerPromise = Promise.resolve(undefined);\n const waitPromises = []; // Handle opt-ins sequentially\n\n await iterateServices(async (group, service, isOptIn, {\n getDataLayer,\n serviceIsManager\n }) => {\n const {\n codeDynamics,\n codeOptIn,\n executeCodeOptInWhenNoTagManagerConsentIsGiven\n } = service;\n const isManager = isManagerActive && serviceIsManager;\n\n if (isOptIn) {\n // Check if the script should explicitly only be loaded if no consent is given to the manager\n const isOnlyWhenNoConsentToManager = isManagerActive && executeCodeOptInWhenNoTagManagerConsentIsGiven;\n const isSkipOptIn = typeof skipOptIn === \"function\" ? skipOptIn(service) : false;\n\n if (!isOnlyWhenNoConsentToManager && !isSkipOptIn) {\n waitPromises.push(putHtmlCodeToDom(codeOptIn, codeDynamics));\n } // If this is a manager, wait for the object to be loaded\n\n /* onlypro:start */\n\n\n if (isManager) {\n dataLayerPromise = waitObject(getDataLayer);\n }\n /* onlypro:end */\n\n\n const summary = {\n group,\n service\n };\n document.dispatchEvent(new CustomEvent(OPT_IN_EVENT, {\n detail: summary\n }));\n allOptInServices.push(summary);\n } else if (isManager) {\n /* onlypro:start */\n // It is a manager but opt-out\n isManagerOptOut = true;\n /* onlypro:end */\n }\n });\n return {\n isManagerOptOut,\n dataLayerPromise,\n services: allOptInServices,\n ready: Promise.all(waitPromises)\n };\n}\n\nexport { applyOptIn };","import { putHtmlCodeToDom } from \"@devowl-wp/headless-content-unblocker\";\nimport { getServiceSelection } from \"../decision\";\n/**\n * Opt-in and opt-out to a set of services for a given data manager like GTM / MTM.\n */\n\nasync function applyOptInOutManager(options, dataLayer, isManagerOptOut) {\n const waitPromises = [];\n /* onlypro:start */\n\n const {\n isManagerActive,\n iterateServices\n } = getServiceSelection(options); // When there is a manager, let's push all opt-in and opt-out events (parallel)\n\n if (dataLayer) {\n // Calculate variables for data layer\n const realCookieBannerConsents = {};\n const realCookieBannerOptInEvents = {};\n const realCookieBannerOptOutEvents = {};\n await iterateServices((group, service, isOptIn, {\n serviceIsManager\n }) => {\n if (!serviceIsManager) {\n const {\n tagManagerOptInEventName,\n tagManagerOptOutEventName,\n consentForwardingUniqueName\n } = service;\n\n if (tagManagerOptInEventName) {\n realCookieBannerOptInEvents[tagManagerOptInEventName] = isOptIn;\n }\n\n if (tagManagerOptOutEventName) {\n realCookieBannerOptOutEvents[tagManagerOptOutEventName] = !isOptIn;\n }\n\n if (consentForwardingUniqueName) {\n realCookieBannerConsents[consentForwardingUniqueName] = isOptIn;\n }\n }\n });\n Object.assign(realCookieBannerConsents, realCookieBannerOptInEvents);\n Object.assign(realCookieBannerConsents, realCookieBannerOptOutEvents);\n dataLayer.push({\n realCookieBannerConsents,\n realCookieBannerOptInEvents,\n realCookieBannerOptOutEvents\n }); // Opt-in events\n\n iterateServices((group, {\n tagManagerOptInEventName: event\n }, isOptIn, {\n serviceIsManager\n }) => {\n if (isOptIn && event && !serviceIsManager) {\n dataLayer.push({\n event\n });\n }\n }); // Wait x seconds and apply opt-out events (should we add this to `waitPromises`?! I do not think so)\n\n setTimeout(() => iterateServices((group, {\n tagManagerOptOutEventName: event\n }, isOptIn, {\n serviceIsManager\n }) => {\n if (!isOptIn && event && !serviceIsManager) {\n dataLayer.push({\n event\n });\n }\n }), 1000);\n } else if (isManagerActive && isManagerOptOut) {\n // The manager got opt out, let's execute scripts that are explicitly only for this case (sequentially)\n await iterateServices(async (group, {\n codeDynamics,\n codeOptIn,\n executeCodeOptInWhenNoTagManagerConsentIsGiven\n }, isOptIn) => {\n if (isOptIn && executeCodeOptInWhenNoTagManagerConsentIsGiven) {\n waitPromises.push(putHtmlCodeToDom(codeOptIn, codeDynamics));\n }\n });\n }\n /* onlypro:false */\n\n\n return {\n ready: Promise.all(waitPromises)\n };\n}\n\nexport { applyOptInOutManager };","import { putHtmlCodeToDom } from \"@devowl-wp/headless-content-unblocker\";\nimport { getServiceSelection } from \"../decision\";\nimport { OPT_OUT_EVENT } from \"../events\";\nimport { deleteCookiesLocally } from \".\";\n/**\n * Opt-in to a set of services for a given data manager like GTM / MTM.\n */\n\nasync function applyOptOut(options, isManagerOptOut) {\n const allOptOutServices = [];\n const {\n isManagerActive,\n iterateServices\n } = getServiceSelection(options);\n const waitPromises = []; // Handle opt-outs sequentially\n\n const deleteHttpCookies = [];\n await iterateServices(async (group, service, isOptIn) => {\n const {\n id,\n codeDynamics,\n codeOptOut,\n deleteTechnicalDefinitionsAfterOptOut,\n isEmbeddingOnlyExternalResources,\n technicalDefinitions,\n executeCodeOptOutWhenNoTagManagerConsentIsGiven\n } = service;\n\n if (!isOptIn) {\n // Check if the script should explicitly only be loaded if no consent is given to the manager\n const isOnlyWhenNoConsentToManager = isManagerActive && executeCodeOptOutWhenNoTagManagerConsentIsGiven;\n\n if (isOnlyWhenNoConsentToManager && isManagerOptOut || !isOnlyWhenNoConsentToManager) {\n waitPromises.push(putHtmlCodeToDom(codeOptOut, codeDynamics));\n }\n\n if (deleteTechnicalDefinitionsAfterOptOut && !isEmbeddingOnlyExternalResources) {\n deleteCookiesLocally(technicalDefinitions, codeDynamics); // Mark deletable server-side services\n\n if (technicalDefinitions.some(({\n type\n }) => type === \"http\")) {\n deleteHttpCookies.push(id);\n }\n }\n\n const summary = {\n group,\n service\n };\n document.dispatchEvent(new CustomEvent(OPT_OUT_EVENT, {\n detail: summary\n }));\n allOptOutServices.push(summary);\n }\n });\n return {\n services: allOptOutServices,\n ready: Promise.all(waitPromises),\n deleteHttpCookies\n };\n}\n\nexport { applyOptOut };","import Cookie from \"js-cookie\";\nimport { applyDynamicsToHtml } from \"@devowl-wp/headless-content-unblocker\";\nimport { regExpPatternFromWildcardName } from \"../utils\";\n/**\n * Delete cookies on client side (currently only `localStorage` and `sessionStorage`).\n */\n\nfunction deleteCookiesLocally(technicalDefinitions, dynamics) {\n for (const {\n type,\n name\n } of technicalDefinitions) {\n // Create valid Regxp pattern\n const pattern = new RegExp(regExpPatternFromWildcardName(applyDynamicsToHtml(name, dynamics)), \"g\");\n\n switch (type) {\n case \"http\":\n {\n for (const key of Object.keys(Cookie.get())) {\n if (pattern.test(key)) {\n Cookie.remove(key);\n }\n }\n\n break;\n }\n\n case \"local\":\n case \"session\":\n {\n try {\n const useStorage = type === \"local\" ? window.localStorage : window.sessionStorage;\n\n if (useStorage) {\n for (const itemName of Object.keys(useStorage)) {\n if (pattern.test(itemName)) {\n try {\n // Fallback to `null` because `removeItem` can have issues on some browsers\n useStorage.setItem(itemName, null);\n } catch (e) {// Silence is golden. A `QuotaExceededError` can be thrown but we ignore it, because we remove the item\n } // Try as long (but max 100 times) until deleted\n\n\n let tries = 0;\n\n while (useStorage.getItem(itemName) && tries < 100) {\n tries++;\n useStorage.removeItem(itemName);\n }\n }\n }\n }\n } catch (e) {\n // Browser does not support localStorage, let's do nothing...\n continue;\n }\n\n break;\n }\n\n default:\n break;\n }\n }\n}\n\nexport { deleteCookiesLocally };","import { apply } from \".\";\nimport { getDefaultDecision, getUserDecision } from \"..\";\n\n/**\n * Main class to manage cookie consents within your application.\n */\nclass CookieConsentManager {\n constructor(options) {\n this.options = void 0;\n this.options = options;\n }\n\n applyCookies(options) {\n return apply({ ...options,\n ...this.options\n });\n }\n\n getUserDecision() {\n return getUserDecision(this.getOption(\"decisionCookieName\"));\n }\n\n getDefaultDecision(respectLegitimateInterests = true) {\n return getDefaultDecision(this.options, respectLegitimateInterests);\n }\n\n getOption(name) {\n return this.options[name];\n }\n\n getOptions() {\n return this.options;\n }\n\n}\n\nexport { CookieConsentManager };","/**\n * Get the default decision and respect essential group and legitimate interests.\n */\nfunction getDefaultDecision({\n groups,\n essentialGroupSlug\n}, respectLegitimateInterests = true) {\n const [essentialGroupObj] = groups.filter(({\n slug\n }) => slug === essentialGroupSlug); // We need always use the current essential group\n\n const result = {\n [essentialGroupObj.id]: essentialGroupObj.items.map(({\n id\n }) => id)\n };\n\n if (respectLegitimateInterests) {\n for (const group of groups) {\n if (group === essentialGroupObj) {\n continue;\n }\n\n const ids = group.items.filter(({\n legalBasis\n }) => legalBasis === \"legitimate-interest\").map(({\n id\n }) => id);\n\n if (ids.length) {\n result[group.id] = ids;\n }\n }\n }\n\n return result;\n}\n\nexport { getDefaultDecision };","import { explode, supportsCookies } from \"../utils\";\nimport Cookie from \"js-cookie\";\n\n/**\n * Get current user decision from the cookie value in a minimal form.\n */\nfunction getUserDecision(cookieName) {\n const cookieValue = Cookie.get(cookieName);\n\n if (!cookieValue) {\n const supportsCookiesPrefix = cookieName.split(\"-\")[0];\n\n if (!supportsCookies(supportsCookiesPrefix ? \"\".concat(supportsCookiesPrefix, \"-test\") : undefined)) {\n // Use our `window` object instead of cookie value\n return window.rcbDisabledCookieComp || false;\n }\n\n return false;\n } // Validate cookie length\n\n\n const split = explode(cookieValue, \":\", 3);\n\n if (split.length !== 3) {\n return false;\n }\n\n const [uuidString, revision] = split;\n const uuids = uuidString.split(\",\");\n const uuid = uuids.shift();\n const consent = JSON.parse(split[2]);\n return {\n uuid,\n previousUuids: uuids,\n revision,\n consent\n };\n}\n\nexport { getUserDecision };","/**\n * A PHP's port of `explode`. `.split` is not similar because it does not join\n * remaining string.\n */\nfunction explode(string, separator, n) {\n const split = string.split(separator);\n if (split.length <= n) return split;\n const out = split.slice(0, n - 1);\n out.push(split.slice(n - 1).join(separator));\n return out;\n}\n\nexport { explode };","/**\n * This event is fired when the user has consent and services are executed (but in `document.readyState === \"interactive\"` state).\n *\n * For non-interactive state use the `opt-in` and `opt-out` events.\n */\nexport const APPLY_INTERACTIVE_EVENT = \"RCB/Apply/Interactive\";","/**\n * This event is fired when the user has no consent or invalid consent\n * and the banner gets visible.\n */\nexport const BANNER_PRE_DECISION_SHOW_EVENT = \"RCB/Banner/Show\";","/**\n * This event is fired when the user has no consent or invalid consent\n * and the banner gets visible (but in `document.readyState === \"interactive\"` state).\n */\nexport const BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT = \"RCB/Banner/Show/Interactive\";","export const OPT_IN_EVENT = \"RCB/OptIn\";","export const OPT_IN_ALL_EVENT = \"RCB/OptIn/All\";","export const OPT_OUT_EVENT = \"RCB/OptOut\";","export const OPT_OUT_ALL_EVENT = \"RCB/OptOut/All\";","const PATTERN_NULL = /^null | null$|^[^(]* null /i;\nconst PATTERN_UNDEFINED = /^undefined | undefined$|^[^(]* undefined /i;\n/**\n * TypeScript port of https://github.com/facebook/idx/blob/bbd936928263a261b6feffd237e1e9ed93764fac/packages/idx/src/idx.js#L14-L57.\n */\n\nfunction idx(input, accessor) {\n try {\n return accessor(input);\n } catch (error) {\n if (error instanceof TypeError) {\n const errorString = error.toString();\n\n if (PATTERN_NULL.test(errorString)) {\n return null;\n } else if (PATTERN_UNDEFINED.test(errorString)) {\n return undefined;\n }\n }\n\n throw error;\n }\n}\n\nexport { idx };","/**\n * Is the current browser a GDPR scanner?\n *\n * @see https://regex101.com/r/H8RW1y/1\n * @see https://regex101.com/r/WYFXVU/1\n */\nfunction isGdprScanner() {\n const {\n userAgent\n } = navigator;\n const {\n cookie\n } = document;\n\n if (userAgent) {\n if (/(cookiebot|2gdpr)\\.com/i.test(userAgent)) {\n return true;\n }\n\n if (/cmpcrawler(reject)?cookie=/i.test(cookie)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport { isGdprScanner };","const helperCreateResolvablePromise = () => {\n let resolve;\n const promise = new Promise(r => resolve = r);\n return [false, promise, resolve];\n};\n\nconst memorizedReadyStatePromises = {\n loading: helperCreateResolvablePromise(),\n complete: helperCreateResolvablePromise(),\n interactive: helperCreateResolvablePromise()\n};\n/**\n * Instead of checking within our events itself at the time of the event, we memorize the state of resolved and reached\n * ready-states. Why? Some WordPress plugins are modifying the JavaScript execution waterfall (e.g. Delay JS in WP Rocket).\n *\n * @see https://github.com/wp-media/wp-rocket/search?q=readystatechange&type=issues\n * @see https://app.clickup.com/t/2v12m07\n */\n\nconst memorizeReadyState = () => {\n const {\n readyState\n } = document;\n const [reached,, resolve] = memorizedReadyStatePromises[readyState];\n\n if (!reached) {\n memorizedReadyStatePromises[readyState][0] = true;\n resolve(); // Edge case: Already `complete`, but `interactive` was never fulfilled\n\n const [interactiveReached,, interactiveResolve] = memorizedReadyStatePromises.interactive;\n\n if (readyState === \"complete\" && !interactiveReached) {\n memorizedReadyStatePromises.interactive[0] = true;\n interactiveResolve();\n }\n }\n};\n/**\n * Listen to multiple events. Why? See same reason as in `memorizedReadyStatePromises()`.\n */\n\n\nconst LISTEN_TO_EVENTS = [\"readystatechange\", \"rocket-readystatechange\", \"DOMContentLoaded\", \"rocket-DOMContentLoaded\", \"rocket-allScriptsLoaded\"];\n/**\n * Wait DOM is ready depending on a state.\n *\n * - `interactive`: Defer scripts are executing, but DOM is ready\n * - `complete`: All scripts including deferred ones are executed and DOM is ready\n *\n * @see https://stackoverflow.com/a/65430734/5506547\n * @see https://stackoverflow.com/a/51980980/5506547\n */\n\nconst ready = (fn, state = \"complete\") => {\n return new Promise(resolve => {\n let executed = false;\n\n const cb = () => {\n memorizeReadyState();\n\n if ( // Only execute once\n executed || // Ready-state not yet reached\n !memorizedReadyStatePromises[state][0]) {\n return;\n }\n\n executed = true;\n fn === null || fn === void 0 ? void 0 : fn(); // We need to make this promise non-blocking. E.g. on Safari this\n // could lead to issues as the `readystatechange` event listener\n // can be nested (once `interactive`, then waiting `complete`)\n // Imagine, you are using an `await ready` within a `ready(fn)` statement.\n\n setTimeout(resolve, 0);\n };\n\n cb();\n\n for (const event of LISTEN_TO_EVENTS) {\n document.addEventListener(event, cb);\n }\n\n memorizedReadyStatePromises[state][1].then(cb);\n });\n};\n\nexport { ready, LISTEN_TO_EVENTS };","import { pregQuote } from \".\";\n/**\n * Create regular expression pattern from a string like `my_test*` and replace asterisks\n * with `(.*)`.\n */\n\nfunction regExpPatternFromWildcardName(name) {\n const tmp = name.replace(/\\*/g, \"PLEACE_REPLACE_ME_AGAIN\");\n return \"^\".concat(pregQuote(tmp).replace(/PLEACE_REPLACE_ME_AGAIN/g, \"(.*)\"), \"$\");\n}\n\nexport { regExpPatternFromWildcardName };","/**\n * Port of `preg_quote`.\n *\n * @see https://github.com/kvz/locutus/blob/3f14dc5d142f5dcbdf36b4271c21a850a4a259da/src/php/pcre/preg_quote.js#L1\n */\nfunction pregQuote(str, delimiter) {\n // discuss at: https://locutus.io/php/preg_quote/\n // original by: booeyOH\n // improved by: Ates Goral (https://magnetiq.com)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)\n // example 1: preg_quote(\"$40\")\n // returns 1: '\\\\$40'\n // example 2: preg_quote(\"*RRRING* Hello?\")\n // returns 2: '\\\\*RRRING\\\\* Hello\\\\?'\n // example 3: preg_quote(\"\\\\.+*?[^]$(){}=!<>|:\")\n // returns 3: '\\\\\\\\\\\\.\\\\+\\\\*\\\\?\\\\[\\\\^\\\\]\\\\$\\\\(\\\\)\\\\{\\\\}\\\\=\\\\!\\\\<\\\\>\\\\|\\\\:'\n return str.replace(new RegExp(\"[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\\".concat(delimiter || \"\", \"-]\"), \"g\"), \"\\\\$&\");\n}\n\nexport { pregQuote };","import Cookies from \"js-cookie\";\nimport { isGdprScanner } from \".\";\nlet memoizeSupported = undefined;\n/**\n * Check if the current environment supports cookies.\n *\n * @see https://git.io/JcXiP\n * @returns\n */\n\nfunction supportsCookies(cookieName = \"test\") {\n if (typeof memoizeSupported === \"boolean\") {\n return memoizeSupported;\n } // Special case: for GDPR scanners we consider automatically that the browser\n // supports settings cookies.\n\n\n if (isGdprScanner()) {\n return true;\n }\n\n try {\n const opts = {\n sameSite: \"Lax\"\n };\n Cookies.set(cookieName, \"1\", opts);\n const result = document.cookie.indexOf(\"\".concat(cookieName, \"=\")) !== -1;\n Cookies.remove(cookieName, opts);\n memoizeSupported = result;\n return result;\n } catch (e) {\n return false;\n }\n}\n\nexport { supportsCookies };","/**\n * Wait for a given object which is calculated through a callback.\n */\nasync function waitObject(getObject, delayNextCheck = 500, maxTries = 0) {\n let i = 0;\n\n while (!getObject()) {\n if (maxTries > 0 && i >= maxTries) {\n return undefined;\n }\n\n await new Promise(r => setTimeout(r, delayNextCheck));\n i++;\n }\n\n return getObject();\n}\n\nexport { waitObject };","const DYNAMICS_VARIABLE_REGEXP = /{{([A-Za-z0-9_]+)}}/gm;\n/**\n * Takes any string and replaces `{{myVariable}}` with the value of the passed `dynamics` map.\n */\n\nfunction applyDynamicsToHtml(src, dynamics) {\n return src.replace(DYNAMICS_VARIABLE_REGEXP, (fullMatch, variableName) => Object.prototype.hasOwnProperty.call(dynamics, variableName) ? dynamics[variableName] : fullMatch);\n}\n\nexport { applyDynamicsToHtml, DYNAMICS_VARIABLE_REGEXP };","// Also ported to `view/Blocker.php`\nexport const HTML_ATTRIBUTE_CAPTURE_PREFIX = \"consent-original\";\nexport const HTML_ATTRIBUTE_CAPTURE_CLICK_PREFIX = \"consent-click-original\";\nexport const HTML_ATTRIBUTE_CAPTURE_SUFFIX = \"_\";\nexport const HTML_ATTRIBUTE_BY = \"consent-by\"; // TODO: cookie -> required?\n\nexport const HTML_ATTRIBUTE_COOKIE_IDS = \"consent-required\";\nexport const HTML_ATTRIBUTE_VISUAL_PARENT = \"consent-visual-use-parent\";\nexport const HTML_ATTRIBUTE_VISUAL_FORCE = \"consent-visual-force\";\nexport const HTML_ATTRIBUTE_VISUAL_PAINT_MODE = \"consent-visual-paint-mode\";\nexport const HTML_ATTRIBUTE_VISUAL_PARENT_HIDE = \"consent-visual-use-parent-hide\";\nexport const HTML_ATTRIBUTE_INLINE = \"consent-inline\";\nexport const HTML_ATTRIBUTE_INLINE_STYLE = \"consent-inline-style\";\nexport const HTML_ATTRIBUTE_BLOCKER_ID = \"consent-id\";\nexport const HTML_TAG_CONSENT_SCRIPT = \"script\";\nexport const HTML_ATTRIBUTE_BLOCKER_CONNECTED = \"consent-blocker-connected\";\nexport const HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED = \"consent-blocker-connected-pres\";\nexport const HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE = \"consent-transaction-complete\";\nexport const HTML_ATTRIBUTE_TRANSFORM_WRAPPER = \"consent-transform-wrapper\";\nexport const HTML_ATTRIBUTE_TRANSFORM_WRAPPER_VALUE = \"1\";\nexport const HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN = \"consent-strict-hidden\";\nexport const HTML_ATTRIBUTE_RESET_PARENT = \"consent-cb-reset-parent\";\nexport const HTML_ATTRIBUTE_RESET_PARENT_VALUE = \"1\";\nexport const HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER = \"consent-cb-reset-parent-is-ratio\";\nexport const HTML_ATTRIBUTE_GOT_CLICKED = \"consent-got-clicked\";\nexport const HTML_ATTRIBUTE_GOT_CLICKED_VALUE = \"1\";\nexport const HTML_ATTRIBUTE_GOT_CLICKED_VALUE_DO_NOT_USE_IN_NESTED = \"2\";\nexport const HTML_ATTRIBUTE_THUMBNAIL = \"consent-thumbnail\";\nexport const HTML_ATTRIBUTE_THUMBNAIL_SUGGESTION = \"consent-thumbnail-suggestion\";\nexport const HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE = \"consent-click-dispatch-resize\";","import postscribe from \"postscribe\";\nimport { applyDynamicsToHtml } from \".\";\nimport { htmlDecode } from \"../utils\";\n/**\n * We do not modify `window.onload` directly, you need to use this variable name.\n */\n\nconst WINDOW_ONLOAD_UNBLOCK_REPLACEMENT = \"rcbInitiatorOnload\";\n/**\n * Put HTML code to the current DOM. `script` tags gets automatically\n * executed instead of pushing to DOM.\n *\n * @see https://github.com/krux/postscribe\n * @see https://stackoverflow.com/a/49724894/5506547\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\nfunction putHtmlCodeToDom(html, dynamics, referenceNode = document.body) {\n return new Promise(resolve => {\n if (html) {\n postscribe(referenceNode, applyDynamicsToHtml(html, dynamics), {\n done: resolve,\n error: e => {\n // We do ignore all errors as we handle like the usual browser\n // E.g. a script blocked by an ad-blocker should not break the execution\n // for upcoming scripts.\n console.error(e);\n },\n beforeWriteToken: token => {\n const {\n attrs,\n booleanAttrs,\n src,\n href,\n content\n } = token; // Probably skip this token? (do not use `disabled` tag as it should still be written to DOM)\n\n if (booleanAttrs !== null && booleanAttrs !== void 0 && booleanAttrs[\"skip-write\"]) {\n return false;\n } // Allow `window.onload` event\n\n\n if (content) {\n token.content = content.replace(/window\\.onload\\s+=/g, \"window.\".concat(WINDOW_ONLOAD_UNBLOCK_REPLACEMENT, \" =\"));\n } // Automatically unescape html entities in all attributes (https://github.com/krux/postscribe/issues/346#issuecomment-310227387)\n\n\n for (const attr in attrs) {\n attrs[attr] = htmlDecode(attrs[attr]); // Allow to skip complete HTML tag when it already got loaded by unique ID (e.g. Google Tag Manager gtag.js)\n\n if (attr === \"unique-write-name\" && document.querySelector(\"[unique-write-name=\\\"\".concat(attrs[attr], \"\\\"]\"))) {\n return false;\n }\n } // Scripts\n\n\n if (src) {\n token.src = htmlDecode(src);\n } // Styles\n\n\n if (href) {\n token.href = htmlDecode(href);\n }\n\n return token;\n }\n });\n } else {\n resolve();\n }\n });\n}\n\nexport { WINDOW_ONLOAD_UNBLOCK_REPLACEMENT, putHtmlCodeToDom };","/**\n * A custom initiator got executed.\n */\nexport const INITIATOR_EXECUTION = \"RCB/Initiator/Execution\";","/**\n * A content - which was blocked - got unblocked.\n */\nexport const OPT_IN_CONTENT_BLOCKER = \"RCB/OptIn/ContentBlocker\";","/**\n * A content - which was blocked - got unblocked. This event is **not** dispatched\n * for each unblocked content in a \"transaction\", instead it is dispatched\n * when the transaction is complete (all content got unblocked and loaded).\n */\nexport const OPT_IN_CONTENT_BLOCKER_ALL = \"RCB/OptIn/ContentBlocker/All\";","import { HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE } from \"../dom\";\n/**\n * In some cases, the complete layout can be changed and calculations are based on containers width.\n * Imagine: Google Fonts get added and the navigation bar has a button with a calculated width (e.g. BeTheme).\n * Another example: The instagram feed is not loaded / adjusted (masonry), so we need to trigger a resize\n * event manually\n *\n * @param delay\n */\n\nfunction dispatchResizeEvent(delayOrFromElement = 0) {\n let delay;\n\n if (typeof delayOrFromElement === \"number\") {\n delay = delayOrFromElement;\n } else if (delayOrFromElement !== null && delayOrFromElement !== void 0 && delayOrFromElement.hasAttribute(HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE)) {\n delay = +delayOrFromElement.getAttribute(HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE);\n } else {\n return;\n }\n\n setTimeout(() => {\n try {\n window.dispatchEvent(new Event(\"resize\"));\n } catch (e) {// You are running in IE, it's a UI bug, we can skip...\n }\n }, delay);\n}\n\nexport { dispatchResizeEvent };","import { isUrl, isHost } from \".\";\n/**\n * Decode HTML entities in a given string.\n *\n * @see https://stackoverflow.com/a/34064434/5506547\n */\n\nfunction htmlDecode(input) {\n const inputIsUrl = isUrl(input) && !isHost(input);\n\n if (inputIsUrl) {\n var _doc$querySelector;\n\n // URLs needs to be handled a bit different as e.g. `?regionid` gets parsed to `'ionid=`\n const doc = new DOMParser().parseFromString(\"\"), \"text/html\");\n return (_doc$querySelector = doc.querySelector(\"a\")) === null || _doc$querySelector === void 0 ? void 0 : _doc$querySelector.href;\n } else {\n // Keep XSS protection intact\n const doc = new DOMParser().parseFromString(input, \"text/html\");\n return doc.documentElement.textContent;\n }\n}\n\nexport { htmlDecode };","/**\n * Is a passed host string valid?\n *\n * @param url\n * @see https://stackoverflow.com/a/106223/5506547\n */\nfunction isHost(url) {\n return /^\\.?(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/gm.test(url);\n}\n\nexport { isHost };","/**\n * Check if a given string is an URL.\n *\n * @see https://www.w3resource.com/javascript-exercises/javascript-regexp-exercise-9.php\n */\nfunction isUrl(url) {\n const pattern = /^(?:(?:https?|ftp):\\/\\/)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/\\S*)?$/;\n return !!pattern.test(url);\n}\n\nexport { isUrl };","import { matchingSelector } from \"@devowl-wp/resolve-none-computed-style\";\n/**\n * Port of `jQuery.parents()`.\n *\n * @param selector Use `undefined` to get all parents\n */\n\nfunction parents(element, selector, limit = 0) {\n const elements = [];\n let elem = element.parentElement;\n\n while (elem !== null) {\n if (selector === undefined || elem.nodeType === Node.ELEMENT_NODE && matchingSelector(elem, selector)) {\n elements.push(elem);\n }\n\n elem = elem.parentElement;\n\n if (limit !== 0 && elements.length >= limit) {\n break;\n }\n }\n\n return elements;\n}\n\nexport { parents };","import { useState, useEffect } from \"react\";\n\nconst AsciiSpinner = ({\n ms = 100,\n chars = [\"◷\", \"◶\", \"◵\", \"◴\"]\n}) => {\n const [i, setI] = useState(1);\n useEffect(() => {\n const interval = setInterval(() => {\n setI(i + 1);\n }, ms);\n return () => clearInterval(interval);\n }, [i]);\n return h(\"span\", {\n dangerouslySetInnerHTML: {\n __html: chars[i % 4]\n }\n });\n};\n\nexport { AsciiSpinner };","import { useMemo, useRef, Fragment } from \"react\";\nimport { useRect } from \"@reach/rect\";\nimport { usePlainCss } from \"../hooks\";\nimport { Portal, Tooltip } from \".\";\nlet counter = 0;\n/**\n * A portaled close icon creates a close icon rendered to a given container. This allows\n * you to put the close icon on the top right corner of an `overflow:hidden` container and\n * the tooltip gets rendered correctly.\n */\n\nconst CloseIcon = ({\n width,\n color,\n tooltipText,\n framed,\n renderInContainer,\n tooltipAlways,\n onClick,\n thickness = 1\n}) => {\n const idCloseIconNotPortaled = useMemo(() => \"react-close-icon-\".concat((counter++).toString(36)), []);\n const idCloseIconPortaled = useMemo(() => \"react-close-icon-\".concat((counter++).toString(36)), []);\n /**\n * Why two containers for a simple close icon? I need to explain something technical here.\n * Our complete banner/dialog is tainted with `overflow:hidden` due to flickering effects\n * with animate.css etc. We will now create an invisible element with the placeholder,\n * we will then read its positioning (rect) and generate the visible close icon based on this position.\n */\n\n const idCloseIconPlaceholder = useMemo(() => \"react-close-icon-\".concat((counter++).toString(36)), []);\n const ref = useRef();\n const rect = useRect(ref);\n usePlainCss(\"#\".concat(idCloseIconPlaceholder, \", #\").concat(idCloseIconNotPortaled, \" {\\n position: absolute;\\n top: 50%;\\n right: 0;\\n margin-top: calc(\").concat(width, \"px / 2 * -1);\\n display: block;\\n width: \").concat(width, \"px;\\n height: \").concat(width, \"px; \\n pointer-events: none;\\n}\\n\\n#\").concat(idCloseIconNotPortaled, \" {\\n position: absolute !important;\\n}\\n\\n#\").concat(idCloseIconNotPortaled, \", #\").concat(idCloseIconPortaled, \" {\\n cursor: pointer;\\n pointer-events: all;\\n \").concat(framed ? \"outline: rgb(255, 94, 94) solid 5px;\" : \"\", \"\\n}\\n\\n#\").concat(idCloseIconPortaled, \" {\\n position: fixed !important;\\n \").concat(rect ? \"top: \".concat(rect.y, \"px;left: \").concat(rect.x, \"px;display:block;\") : \"display:none;\", \"\\n width: \").concat(width, \"px;\\n height: \").concat(width, \"px;\\n z-index: 99;\\n}\\n#\").concat(idCloseIconPortaled, \":after, #\").concat(idCloseIconNotPortaled, \":after {\\n width: auto !important;\\n white-space: nowrap !important;\\n}\\n#\").concat(idCloseIconPortaled, \">span:before, #\").concat(idCloseIconPortaled, \">span:after,\\n#\").concat(idCloseIconNotPortaled, \">span:before, #\").concat(idCloseIconNotPortaled, \">span:after {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: \").concat(thickness, \"px;\\n height: \").concat(width, \"px;\\n background-color: \").concat(color, \";\\n transform: rotate(45deg) translate(-50%, -50%);\\n transform-origin: top left;\\n transition: all 420ms;\\n content: '';\\n opacity: 0.5;\\n pointer-events: none;\\n}\\n#\").concat(idCloseIconPortaled, \">span:after,\\n#\").concat(idCloseIconNotPortaled, \">span:after {\\n transform: rotate(-45deg) translate(-50%, -50%);\\n}\\n#\").concat(idCloseIconPortaled, \">span:hover:before, #\").concat(idCloseIconPortaled, \">span:hover:after,\\n#\").concat(idCloseIconNotPortaled, \">span:hover:before, #\").concat(idCloseIconNotPortaled, \">span:hover:after {\\n opacity: 1;\\n width: \").concat(thickness + 1, \"px;\\n}\"));\n return renderInContainer ? h(Fragment, null, h(\"div\", {\n id: idCloseIconPlaceholder,\n ref: ref\n }), (rect === null || rect === void 0 ? void 0 : rect.y) > 0 && h(Portal, {\n renderInContainer: renderInContainer\n }, h(Tooltip, {\n title: tooltipText,\n id: idCloseIconPortaled,\n onClick: onClick,\n position: rect.y > 50 ? \"top-left\" : \"left\",\n always: tooltipAlways\n }, h(\"span\", null)))) : h(Tooltip, {\n title: tooltipText,\n id: idCloseIconNotPortaled,\n onClick: onClick,\n position: \"top-left\",\n always: tooltipAlways\n }, h(\"span\", null));\n};\n\nexport { CloseIcon };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useMemo } from \"react\";\nimport { renderIconDefinitionToSVGElement } from \"@ant-design/icons-svg/es/helpers\";\n/**\n * Inject a plain SVG icon from `@ant-design/icons-svg`. This reduces the bundle size.\n * You can determine yourself to use `@ant-design/icons` or this helper component. For example,\n * this component is preferred for website bundles where website size matters.\n *\n * @see https://app.clickup.com/t/60pz5t\n */\n\nconst PlainAntdIconAsSvg = ({\n icon,\n ...rest\n}) => {\n const svgString = useMemo(() => renderIconDefinitionToSVGElement(icon, {\n extraSVGAttrs: {\n style: \"width:auto;height:100%;\",\n fill: \"currentColor\"\n }\n }), [icon]);\n return h(\"div\", _extends({}, rest, {\n dangerouslySetInnerHTML: {\n __html: svgString\n }\n }));\n};\n\nexport { PlainAntdIconAsSvg };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { Fragment, useLayoutEffect, useState } from \"react\";\nimport { commonInlineStyleGroupsCheckbox } from \"../../inlineStyles\";\nimport { PlainAntdIconAsSvg } from \"../..\";\nimport { CheckOutlined, MinusOutlined } from \"@ant-design/icons-svg\";\nimport { useBannerOrBlocker } from \"../../hooks\";\n\nconst CommonCheckbox = ({\n hideCheckbox,\n isPartial,\n isChecked,\n isDisabled,\n fontSize,\n onClick,\n children,\n after,\n ...rest\n}) => {\n const CheckboxIcon = isPartial ? MinusOutlined : CheckOutlined;\n const bannerOrBlocker = useBannerOrBlocker();\n const [isRendered, setIsRendered] = useState(false);\n useLayoutEffect(() => {\n setIsRendered(true);\n }, []);\n return h(Fragment, null, !hideCheckbox && h(PlainAntdIconAsSvg, _extends({\n icon: CheckboxIcon,\n onClick: onClick\n }, commonInlineStyleGroupsCheckbox(bannerOrBlocker, isRendered, isChecked, isDisabled, fontSize), rest)), children && h(\"span\", {\n style: {\n verticalAlign: \"middle\",\n cursor: \"pointer\"\n }\n }, h(\"span\", {\n onClick: onClick\n }, children), after));\n};\n\nexport { CommonCheckbox };","import { scaleMobile } from \"../..\";\n\n/**\n * Use `visible` together with `useLayoutEffect` to avoid flickering.\n * This is needed because the SVG icons of ant are a bit flickering.\n */\nfunction commonInlineStyleGroupsCheckbox({\n layout: {\n borderRadius\n },\n group: {\n headlineFontSize,\n checkboxBg,\n checkboxBorderWidth,\n checkboxBorderColor,\n checkboxActiveBg,\n checkboxActiveBorderColor,\n checkboxActiveColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}, visible, checked, disabled, fontSize) {\n let useFontSize = fontSize || headlineFontSize;\n useFontSize = pageRequestUuid4 ? scaleMobile(mobile, pageRequestUuid4, useFontSize) : useFontSize;\n const useCheckboxBorderWidth = pageRequestUuid4 ? scaleMobile(mobile, pageRequestUuid4, +checkboxBorderWidth) : +checkboxBorderWidth;\n const height = +useFontSize + useCheckboxBorderWidth * 2 + 6;\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-checkbox\",\n style: {\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : undefined,\n color: checked ? checkboxActiveColor : checkboxBg,\n display: visible ? \"inline-block\" : \"none\",\n background: checked ? checkboxActiveBg : checkboxBg,\n border: \"\".concat(useCheckboxBorderWidth, \"px solid \").concat(checked ? checkboxActiveBorderColor : checkboxBorderColor),\n padding: 3,\n height,\n width: height,\n marginRight: 10,\n borderRadius: +borderRadius,\n verticalAlign: \"middle\",\n lineHeight: 0,\n boxSizing: \"border-box\"\n }\n };\n}\n\nexport { commonInlineStyleGroupsCheckbox };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { isUrl } from \"@devowl-wp/headless-content-unblocker\";\nimport { useBannerOrBlocker } from \"../../../hooks\";\nimport { commonGroupsInlineStyleLinkMore, commonInlineStyleGroupsCookieProperty } from \"../../../inlineStyles\";\n\nconst CookieProperty = ({\n label,\n value,\n children,\n printValueAs\n}) => {\n const banner = useBannerOrBlocker();\n const {\n i18n: {\n yes,\n no\n }\n } = banner;\n const isValueUrl = typeof value === \"string\" && isUrl(value);\n let useValue = isValueUrl ? h(\"a\", {\n href: value,\n style: {\n wordBreak: \"break-all\",\n ...commonGroupsInlineStyleLinkMore(banner, false).style\n },\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, value) : typeof value === \"string\" ? h(\"span\", {\n dangerouslySetInnerHTML: {\n __html: value\n }\n }) : value;\n\n if (printValueAs === \"boolean\") {\n useValue = useValue ? yes : no;\n }\n\n return h(\"div\", _extends({\n key: label\n }, commonInlineStyleGroupsCookieProperty(banner)), label && h(\"strong\", null, label, \":\\xA0\"), useValue, !!children && h(\"div\", null, children));\n};\n\nexport { CookieProperty };","import { scaleMobile } from \"../..\";\n\nfunction commonInlineStyleGroupsCookieProperty({\n group: {\n groupBorderWidth,\n groupBorderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n // only used for banner\n pageRequestUuid4\n}) {\n const useGroupBorderWidth = pageRequestUuid4 ? scaleMobile(mobile, pageRequestUuid4, groupBorderWidth) : groupBorderWidth;\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-cookie-prop\",\n style: {\n borderLeft: useGroupBorderWidth > 0 ? \"1px solid \".concat(groupBorderColor) : undefined,\n paddingLeft: 15\n }\n };\n}\n\nexport { commonInlineStyleGroupsCookieProperty };","import { Fragment } from \"react\";\nimport { CookieProperty } from \".\";\nimport { useBannerOrBlocker } from \"../../../hooks\";\nimport { applyDynamicsToHtml } from \"@devowl-wp/headless-content-unblocker\";\n\nconst CookiePropertyList = ({\n cookie: {\n purpose,\n provider,\n providerPrivacyPolicyUrl,\n legalBasis,\n ePrivacyUSA,\n isEmbeddingOnlyExternalResources,\n technicalDefinitions,\n codeDynamics\n },\n isEssentialGroup\n}) => {\n const {\n i18n,\n ePrivacyUSA: ePrivacyUSAEnabled\n } = useBannerOrBlocker();\n const types = getCookieTypeLocalizationMap();\n return h(Fragment, null, !!purpose && h(CookieProperty, {\n label: i18n.purpose,\n value: purpose\n }), h(CookieProperty, {\n label: i18n.legalBasis,\n value: legalBasis === \"legal-requirement\" ? i18n.legalRequirement : legalBasis === \"legitimate-interest\" || isEssentialGroup ? i18n.legitimateInterest : i18n.consent\n }), h(CookieProperty, {\n label: i18n.provider,\n value: provider\n }), !!providerPrivacyPolicyUrl && h(CookieProperty, {\n label: i18n.providerPrivacyPolicyUrl,\n value: providerPrivacyPolicyUrl\n }), !!ePrivacyUSAEnabled && h(CookieProperty, {\n label: i18n.ePrivacyUSA,\n value: ePrivacyUSA,\n printValueAs: \"boolean\"\n }), !isEmbeddingOnlyExternalResources && technicalDefinitions.map(({\n type,\n name,\n host,\n duration,\n durationUnit,\n isSessionDuration,\n purpose\n }) => h(CookieProperty, {\n key: name,\n label: i18n.technicalCookieDefinition,\n value: h(\"span\", {\n style: {\n fontFamily: \"monospace\"\n }\n }, applyDynamicsToHtml(name, codeDynamics))\n }, h(CookieProperty, {\n label: i18n.type,\n value: types[type].name\n }), !!purpose && h(CookieProperty, {\n label: i18n.purpose,\n value: purpose\n }), !!host && h(CookieProperty, {\n label: i18n.host,\n value: h(\"span\", {\n style: {\n fontFamily: \"monospace\"\n }\n }, host)\n }), h(CookieProperty, {\n label: i18n.duration,\n value: [\"local\", \"indexedDb\", \"flash\"].indexOf(type) > -1 ? i18n.noExpiration : isSessionDuration || type === \"session\" ? \"Session\" : \"\".concat(duration, \" \").concat(i18n.durationUnit[durationUnit])\n }))));\n};\n\nfunction getCookieTypeLocalizationMap() {\n return {\n http: {\n name: \"HTTP Cookie\",\n abbr: \"HTTP\",\n backgroundColor: \"black\"\n },\n local: {\n name: \"Local Storage\",\n abbr: \"Local\",\n backgroundColor: \"#b3983c\"\n },\n session: {\n name: \"Session Storage\",\n abbr: \"Session\",\n backgroundColor: \"#3c99b3\"\n },\n flash: {\n name: \"Flash Local Shared Object\",\n abbr: \"Flash\",\n backgroundColor: \"#b33c3c\"\n },\n indexedDb: {\n name: \"IndexedDB\",\n abbr: \"I-DB\",\n backgroundColor: \"#4ab33c\"\n }\n };\n}\n\nexport { CookiePropertyList, getCookieTypeLocalizationMap };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBannerOrBlocker } from \"../../../hooks\";\nimport { commonInlineStyleGroupsCookie } from \"../../..\";\nimport { CommonCheckbox } from \"../..\";\nimport { CookiePropertyList } from \".\";\n\nconst Cookie = ({\n cookie,\n checked,\n disabled,\n onToggleCheck,\n propertyListProps = {}\n}) => {\n const {\n name\n } = cookie;\n const bannerOrBlocker = useBannerOrBlocker();\n const {\n group: {\n descriptionFontSize\n }\n } = bannerOrBlocker;\n return h(\"div\", commonInlineStyleGroupsCookie(bannerOrBlocker), h(\"div\", {\n style: {\n marginBottom: 10\n }\n }, h(CommonCheckbox, {\n isChecked: checked,\n isDisabled: disabled,\n fontSize: descriptionFontSize,\n onClick: onToggleCheck\n }, h(\"strong\", null, name))), h(CookiePropertyList, _extends({\n cookie: cookie\n }, propertyListProps)));\n};\n\nexport { Cookie };","function commonInlineStyleGroupsCookie({\n customCss: {\n antiAdBlocker\n }\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-cookie\",\n style: {\n marginTop: 10\n }\n };\n}\n\nexport { commonInlineStyleGroupsCookie };","import { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n/**\n * Portals provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component.\n *\n * @see https://reactjs.org/docs/portals.html\n */\n\nconst Portal = ({\n children,\n className,\n tag = \"div\",\n renderInContainer\n}) => {\n const [renderIn] = useState(() => {\n const el = document.createElement(tag);\n className && el.classList.add(className);\n return el;\n }); // Append container to `body`\n\n useEffect(() => {\n document.body.appendChild(renderIn);\n return () => {\n document.body.removeChild(renderIn);\n };\n }, []);\n return /*#__PURE__*/createPortal(children, renderInContainer || renderIn);\n};\n\nexport { Portal };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { forwardRef } from \"react\";\nimport hintCss from \"hint.css/hint.min.css?inline-raw\";\nimport { usePlainCss } from \"../hooks\";\n/**\n * This is a very basic `hint.css` implementation for a tooltip.\n *\n * @see https://kushagra.dev/lab/hint/\n */\n// eslint-disable-next-line react/display-name\n\nconst Tooltip = /*#__PURE__*/forwardRef(({\n children,\n className,\n title,\n position = \"top\",\n color,\n size = \"large\",\n always,\n rounded,\n noAnimate,\n bounce,\n ...rest\n}, ref) => {\n usePlainCss(hintCss, \"hint-css\", true);\n return h(\"div\", _extends({\n style: {\n position: \"relative\",\n display: \"inline\"\n },\n ref: ref,\n \"aria-label\": title,\n className: \"hint--\".concat(position, \" hint--\").concat(size, \" \").concat(color ? \"hint--\".concat(color) : \"\", \" \").concat(always ? \"hint--always\" : \"\", \" \").concat(rounded ? \"hint--rounded\" : \"\", \" \").concat(noAnimate ? \"hint--no-animate\" : \"\", \" \").concat(bounce ? \"hint--bounce\" : \"\", \" \").concat(className || \"\")\n }, rest), children);\n});\nexport { Tooltip };","import { createContext, useContext } from \"react\";\n\n/**\n * Create a side-effect-free context provider.\n */\nclass BannerContextFactory {\n static Context() {\n return this.context = this.context || /*#__PURE__*/createContext({});\n }\n\n}\n\nBannerContextFactory.context = void 0;\n\nfunction useBanner() {\n return useContext(BannerContextFactory.Context());\n}\n\nexport { BannerContextFactory, useBanner };","import { createContext, useContext } from \"react\";\n\n/**\n * Create a side-effect-free context provider.\n */\nclass BlockerContextFactory {\n static Context() {\n return this.context = this.context || /*#__PURE__*/createContext({});\n }\n\n}\n\nBlockerContextFactory.context = void 0;\n\nfunction useBlocker() {\n return useContext(BlockerContextFactory.Context());\n}\n\nexport { BlockerContextFactory, useBlocker };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useState } from \"react\";\nimport { commonInlineStyleFooterLink, useBannerOrBlocker } from \"../../..\";\n\nconst FooterLink = ({\n children,\n ...anchorRest\n}) => {\n const bannerOrBlocker = useBannerOrBlocker();\n const [isHover, setIsHover] = useState(false);\n return h(\"a\", _extends({\n onMouseEnter: () => setIsHover(true),\n onMouseLeave: () => setIsHover(false)\n }, commonInlineStyleFooterLink(bannerOrBlocker, isHover), anchorRest), children);\n};\n\nexport { FooterLink };","import { scaleMobile } from \"../../scale\";\n\nfunction commonInlineStyleFooterLink({\n footerDesign: {\n fontSize,\n fontColor,\n hoverFontColor,\n fontInheritFamily,\n fontFamily\n },\n design: {\n linkTextDecoration\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n // only used for banner\n pageRequestUuid4\n}, isHover = false) {\n const style = {\n textDecoration: linkTextDecoration,\n fontSize: pageRequestUuid4 ? scaleMobile(mobile, pageRequestUuid4, +fontSize) : +fontSize,\n color: isHover ? hoverFontColor : fontColor,\n fontFamily: fontInheritFamily ? undefined : fontFamily,\n padding: \"0 5px\"\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-footer-link\",\n style\n };\n}\n\nexport { commonInlineStyleFooterLink };","import { FooterLink } from \".\";\nimport { Tooltip } from \"../..\";\n\nconst FooterPoweredByLink = ({\n poweredLink,\n affiliate\n}) => {\n return h(FooterLink, {\n href: affiliate ? affiliate.link : poweredLink.href,\n target: poweredLink.target,\n key: \"powered-by\"\n }, h(\"span\", {\n dangerouslySetInnerHTML: {\n __html: poweredLink.innerHTML\n }\n }), affiliate && h(Tooltip, {\n title: affiliate.description,\n position: \"top-left\"\n }, \" \", affiliate.labelBehind));\n};\n\nexport { FooterPoweredByLink };","import { Fragment } from \"react\";\n/**\n * Join together a set of JSX elements with a separator.\n *\n * @see https://stackoverflow.com/q/33577448/5506547\n */\n\nfunction jsxJoin(components, separator) {\n // Just to be sure, remove falsy values so we can add conditionals to the components array\n const filtered = components.filter(Boolean);\n return filtered.length === 0 ? null : filtered.reduce((acc, curr, i) => acc.length ? [...acc, // Wrap the separator in a fragment to avoid `missing key` issues\n h(Fragment, {\n key: i\n }, separator), curr] : [curr], []);\n}\n\nexport { jsxJoin };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useCallback, Fragment } from \"react\";\nimport { useBannerOrBlocker, useLegalLinks } from \"..\";\nimport { FooterLink, FooterPoweredByLink } from \"../../components\";\nimport { jsxJoin } from \"../../utils\";\n\nfunction useCommonFooterLinks({\n onClose,\n putPoweredByLinkInRow,\n row1\n} = {}) {\n const {\n i18n: {\n close\n },\n footerDesign: {\n poweredByLink,\n linkTarget\n },\n poweredLink,\n affiliate\n } = useBannerOrBlocker();\n const {\n linkPrivacyPolicy,\n linkImprint\n } = useLegalLinks();\n const targetAttributes = linkTarget === \"_blank\" ? {\n target: \"_blank\",\n rel: \"noopener\"\n } : {};\n const rows = [// Row 1\n [onClose && h(FooterLink, {\n href: \"#\",\n onClick: onClose,\n key: \"close\"\n }, h(\"strong\", null, close)), ...(row1 || []), linkPrivacyPolicy && h(FooterLink, _extends({\n href: linkPrivacyPolicy.url\n }, targetAttributes, {\n key: \"privacyPolicy\"\n }), linkPrivacyPolicy.label), linkImprint && h(FooterLink, _extends({\n href: linkImprint.url\n }, targetAttributes, {\n key: \"imprint\"\n }), linkImprint.label)].filter(Boolean), // Row 2\n [] // Nothing yet\n ];\n\n if (!!poweredLink && poweredByLink) {\n rows[putPoweredByLinkInRow || 0].push(h(FooterPoweredByLink, {\n key: \"poweredBy\",\n poweredLink: poweredLink,\n affiliate: affiliate\n }));\n }\n\n const render = useCallback(rows => jsxJoin(rows.map(row => row.length ? h(Fragment, {\n key: row[0].key\n }, jsxJoin(row, h(Fragment, null, \" \\u2022 \"))) : null), h(\"br\", null)), []);\n return {\n rows,\n render\n };\n}\n\nexport { useCommonFooterLinks };","import { useBannerOrBlocker, useLegalLinks } from \"..\";\n\nfunction joinWithAndSeparator(arr, andSeparator) {\n if (arr.length > 1) {\n arr.splice(arr.length - 1, 0, \"{{andSeparator}}\");\n }\n\n return arr.join(\", \").replace(/,\\s+{{andSeparator}},\\s+/g, andSeparator);\n}\n/**\n * @see https://gist.github.com/unruthless/413930\n * @see https://stackoverflow.com/a/23630325/5506547\n */\n\n\nconst supWithLineHeightFix = '';\n\nfunction useCommonTeachings({\n disableDataProcessingInUnsafeCountries,\n disableAgeNotice,\n disableListServicesNotice\n} = {}) {\n const {\n blocker,\n groups,\n ePrivacyUSA: isEPrivacyUSA,\n ageNotice: isAgeNotice,\n listServicesNotice: isListServicesNotice,\n texts: {\n description,\n ePrivacyUSA,\n ageNoticeBanner,\n listServicesNotice,\n consentForwardingExternalHosts: consentForwardingExternalHostsText\n },\n tcf,\n consentForwardingExternalHosts,\n individualPrivacyOpen,\n individualTexts: {\n description: individualDescription\n },\n essentialGroup,\n i18n: {\n andSeparator,\n tcf: tcfBannerI18n\n },\n keepVariablesInTexts\n } = useBannerOrBlocker();\n const {\n linkPrivacyPolicy\n } = useLegalLinks(); // Description text (combination of configured text and Consent Forwarding)\n\n let consentForwardingExternalHostsFinalText = \"\";\n\n if (consentForwardingExternalHosts && !keepVariablesInTexts) {\n consentForwardingExternalHostsFinalText = consentForwardingExternalHostsText.replace(/{{websites}}/g, consentForwardingExternalHosts.join(\", \"));\n }\n\n let useDescription = [blocker ? blocker.description : individualPrivacyOpen ? individualDescription : description, consentForwardingExternalHostsFinalText].filter(Boolean).join(\" \");\n\n if (!keepVariablesInTexts) {\n // Place policy link into the text https://regex101.com/r/ayeFVy/1\n useDescription = useDescription.replace(/{{privacyPolicy}}(.*){{\\/privacyPolicy}}/gi, linkPrivacyPolicy ? \"$1\") : \"$1\");\n } // Teaching: Data processing in unsafe countries (formerly USA ePrivacy)\n\n\n const servicesProcessingUnsafeCountries = groups.map(({\n items\n }) => items.filter(({\n ePrivacyUSA\n }) => ePrivacyUSA)).flat();\n const tcfVendorsProcessingUnsafeCountries = process.env.IS_TCF && tcf ? Object.values(tcf.gvl.vendors).filter(vendor => {\n var _additionalInformatio;\n\n return ((_additionalInformatio = vendor.additionalInformation) === null || _additionalInformatio === void 0 ? void 0 : _additionalInformatio.internationalTransfers) || tcf.original.vendorConfigurations[vendor.id].ePrivacyUSA === 1;\n }) : [];\n let useDataProcessingInUnsafeCountries = !disableDataProcessingInUnsafeCountries && (servicesProcessingUnsafeCountries.length > 0 || tcfVendorsProcessingUnsafeCountries.length > 0) && isEPrivacyUSA ? ePrivacyUSA : \"\"; // Teaching: Age notice\n\n const useAgeNotice = isAgeNotice && !disableAgeNotice ? ageNoticeBanner : \"\"; // Teaching: List services notice\n\n let useListServicesNotice = \"\";\n\n if (isListServicesNotice && !disableListServicesNotice) {\n const listServicesNoticeLower = listServicesNotice.toLowerCase();\n const hasBothPlaceholders = listServicesNoticeLower.indexOf(\"{{services}}\") > -1 && listServicesNoticeLower.indexOf(\"{{servicegroups}}\") > -1;\n const nonEssentialGroups = groups.filter(({\n slug\n }) => slug !== essentialGroup);\n const flattenSeparator = \"~;~\";\n const listServicesNames = joinWithAndSeparator(nonEssentialGroups.map(({\n items\n }, groupIdx) => items.map(({\n name,\n ePrivacyUSA\n }) => \"\".concat(name).concat(supWithLineHeightFix).concat([hasBothPlaceholders ? groupIdx + 1 : \"\", useDataProcessingInUnsafeCountries && ePrivacyUSA ? \"U\" : \"\"].filter(Boolean).join(\",\"), \"\")).join(flattenSeparator)).join(flattenSeparator).split(flattenSeparator), andSeparator);\n\n if (listServicesNames) {\n const listServiceGroupsNames = joinWithAndSeparator(nonEssentialGroups.map(({\n name\n }, groupIdx) => \"\".concat(name).concat(supWithLineHeightFix).concat(hasBothPlaceholders ? groupIdx + 1 : \"\", \"\")), andSeparator);\n useListServicesNotice = \"\".concat(listServicesNotice, \"\").concat(tcf && !individualPrivacyOpen ? \" \".concat(tcfBannerI18n.listOfServicesAppendix, \"\") : \"\");\n\n if (!keepVariablesInTexts) {\n // Place service list into the text\n useListServicesNotice = useListServicesNotice.replace(/{{services}}/gi, listServicesNames) // Place service group list into the text\n .replace(/{{serviceGroups}}/gi, listServiceGroupsNames);\n }\n\n if (useDataProcessingInUnsafeCountries) {\n useDataProcessingInUnsafeCountries += \"\".concat(supWithLineHeightFix, \"U\");\n }\n }\n }\n\n return {\n description: useDescription,\n teachings: [useDataProcessingInUnsafeCountries, useAgeNotice, useListServicesNotice].filter(Boolean)\n };\n}\n\nexport { useCommonTeachings };","import { useBanner, useBlocker } from \"../contexts\";\n\n/**\n * Use one of the available banner or blocker contexts as union typed.\n */\nfunction useBannerOrBlocker() {\n const banner = useBanner();\n const blocker = useBlocker(); // Check for a common context property in an available context as it is never `undefined`\n\n return banner.groups ? banner : blocker;\n}\n\nexport { useBannerOrBlocker };","import { useBannerOrBlocker } from \".\";\n\nfunction useLegalLinks() {\n const {\n legal: {\n privacyPolicy,\n privacyPolicyExternalUrl,\n privacyPolicyIsExternalUrl,\n privacyPolicyLabel,\n imprint,\n imprintExternalUrl,\n imprintIsExternalUrl,\n imprintLabel\n },\n pageByIdUrl\n } = useBannerOrBlocker();\n const pageIdToPermalink = useBannerOrBlocker().pageIdToPermalink || {};\n let linkPrivacyPolicy = privacyPolicy > 0 ? pageIdToPermalink[privacyPolicy] || \"\".concat(pageByIdUrl, \"=\").concat(privacyPolicy) : undefined;\n let linkImprint = imprint > 0 ? pageIdToPermalink[imprint] || \"\".concat(pageByIdUrl, \"=\").concat(imprint) : undefined;\n\n if (privacyPolicyIsExternalUrl) {\n linkPrivacyPolicy = privacyPolicyExternalUrl;\n }\n\n if (imprintIsExternalUrl) {\n linkImprint = imprintExternalUrl;\n }\n\n return {\n linkPrivacyPolicy: privacyPolicyLabel && linkPrivacyPolicy ? {\n url: linkPrivacyPolicy,\n label: privacyPolicyLabel\n } : false,\n linkImprint: imprintLabel && linkImprint ? {\n url: linkImprint,\n label: imprintLabel\n } : false\n };\n}\n\nexport { useLegalLinks };","import { useMemo, useLayoutEffect } from \"react\";\nlet counter = 0;\n/**\n * Dynamically creates a style-tag in your head with a given plain CSS string.\n */\n\nfunction usePlainCss(css, uniqueId, keep) {\n const id = useMemo(() => \"react-use-plain-css-\".concat(uniqueId || (counter++).toString(36)), []);\n useLayoutEffect(() => {\n let element = document.getElementById(id);\n\n if (!element) {\n element = document.createElement(\"style\");\n element.style.type = \"text/css\";\n element.id = id;\n document.getElementsByTagName(\"head\")[0].appendChild(element);\n }\n\n element.innerHTML = css;\n return () => {\n if (!keep) {\n var _element$parentNode;\n\n (_element$parentNode = element.parentNode) === null || _element$parentNode === void 0 ? void 0 : _element$parentNode.removeChild(element);\n }\n };\n }, [css, keep]);\n return id;\n}\n\nexport { usePlainCss };","export const BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER = 700;\nexport * from \"./types\";\nexport * from \"./contexts\";\nexport * from \"./hooks\";\nexport * from \"./inlineStyles\";\nexport * from \"./utils\";\nexport * from \"./components\";\nexport * from \"./others\";","import { scaleMobile } from \"../../scale\";\n\nfunction commonInlineStyleBodyTeaching({\n bodyDesign: {\n teachingsInheritTextAlign,\n teachingsTextAlign,\n teachingsInheritFontSize,\n teachingsFontSize,\n teachingsInheritFontColor,\n teachingsFontColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n // only given for banner\n pageRequestUuid4\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-teachings\",\n style: {\n marginTop: 7,\n display: \"inline-block\",\n textAlign: teachingsInheritTextAlign ? undefined : teachingsTextAlign,\n fontSize: teachingsInheritFontSize ? undefined : pageRequestUuid4 ? scaleMobile(mobile, pageRequestUuid4, +teachingsFontSize) : +teachingsFontSize,\n color: teachingsInheritFontColor ? undefined : teachingsFontColor\n }\n };\n}\n\nexport { commonInlineStyleBodyTeaching };","function commonInlineStyleBodyTeachingsSeparator({\n layout: {\n borderRadius\n },\n bodyDesign: {\n teachingsSeparatorActive,\n teachingsSeparatorWidth,\n teachingsSeparatorHeight,\n teachingsSeparatorColor\n },\n customCss: {\n antiAdBlocker\n }\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-teachings-separator\",\n style: {\n marginTop: 7,\n display: \"inline-block\",\n maxWidth: \"100%\",\n borderRadius: +borderRadius,\n width: +teachingsSeparatorWidth,\n height: teachingsSeparatorActive ? +teachingsSeparatorHeight : 0,\n background: teachingsSeparatorColor\n }\n };\n}\n\nexport { commonInlineStyleBodyTeachingsSeparator };","function commonGroupsInlineStyleLinkMore({\n design: {\n linkTextDecoration\n },\n group: {\n linkColor,\n linkHoverColor\n },\n customCss: {\n antiAdBlocker\n }\n}, isHover) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-group-more\",\n style: {\n color: isHover ? linkHoverColor : linkColor,\n textDecoration: linkTextDecoration\n }\n };\n}\n\nexport { commonGroupsInlineStyleLinkMore };","import { scaleMobile } from \"../..\";\n\nfunction commonInlineStyleHeaderHeadline({\n headerDesign: {\n fontSize,\n fontColor,\n fontInheritFamily,\n fontFamily,\n fontWeight\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n // only used for banner\n pageRequestUuid4\n}, hasCloseIcon) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-headline\",\n style: {\n color: fontColor,\n lineHeight: 1.8,\n fontSize: pageRequestUuid4 ? scaleMobile(mobile, pageRequestUuid4, +fontSize) : +fontSize,\n fontFamily: fontInheritFamily ? undefined : fontFamily,\n fontWeight,\n paddingRight: hasCloseIcon ? 20 : undefined\n }\n };\n}\n\nexport { commonInlineStyleHeaderHeadline };","import { BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER } from \"..\";\n\nconst calculateNewVal = (val, scalePercent) => {\n let newVal = val;\n newVal = val / 100 * scalePercent;\n newVal = newVal < 1 ? 1 : newVal;\n return newVal;\n};\n/**\n * Calculate the new value for an inline style value and respect the scaling options.\n */\n\n\nfunction scaleMobile({\n enabled,\n scalePercent,\n scalePercentVertical\n}, useWidthOfThisContainerId, original, replaceWith, additionalVerticalScaling = false) {\n if (process.env.PLUGIN_CTX === \"pro\") {\n var _document$getElementB;\n\n /* onlypro:start */\n const useScalePercentVertical = +scalePercent + +scalePercentVertical;\n const {\n innerWidth\n } = window;\n const width = useWidthOfThisContainerId ? ((_document$getElementB = document.getElementById(useWidthOfThisContainerId)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.clientWidth) || innerWidth : innerWidth;\n const doChange = enabled && width <= BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER;\n\n if (doChange) {\n if (replaceWith === undefined) {\n // MobX observable compatibility\n const useOriginal = typeof original.toJS === \"function\" ? original.toJS() : original; // Calculate new sizes depending on type\n\n if (typeof useOriginal === \"number\" && useOriginal > 0) {\n return calculateNewVal(useOriginal, additionalVerticalScaling ? useScalePercentVertical : scalePercent);\n } // Arrays (e.g. padding)\n\n\n if (Array.isArray(useOriginal) && useOriginal.map(v => typeof v === \"number\" && v > 0).filter(Boolean).length === useOriginal.length) {\n return useOriginal.map((v, i) => calculateNewVal(v, [0, 2].indexOf(i) > -1 && additionalVerticalScaling ? useScalePercentVertical : scalePercent));\n }\n\n return original;\n }\n\n return replaceWith;\n }\n /* onlypro:end */\n\n }\n\n return original;\n}\n\nexport { scaleMobile };","import { matchingSelector } from \"@devowl-wp/resolve-none-computed-style\";\nwindow.rcbPoweredByCacheOuterHTML = \"\";\n/**\n * Get the server-side-rendered powered by link.\n */\n\nfunction getSsrPoweredByLink(id) {\n const originalPoweredLink = document.getElementById(id);\n const poweredLink = document.createElement(\"div\");\n\n if (window.rcbPoweredByCacheOuterHTML) {\n // We have cached the link as we remove it from the DOM\n poweredLink.innerHTML = window.rcbPoweredByCacheOuterHTML;\n } else if (matchingSelector(originalPoweredLink, \"a\") && originalPoweredLink.innerHTML.toLowerCase().indexOf(\"Real Cookie Banner\")) {\n window.rcbPoweredByCacheOuterHTML = originalPoweredLink.outerHTML;\n poweredLink.innerHTML = window.rcbPoweredByCacheOuterHTML;\n originalPoweredLink.parentNode.removeChild(originalPoweredLink);\n }\n\n return poweredLink.children[0];\n}\n\nexport { getSsrPoweredByLink };","/**\n * @see https://stackoverflow.com/a/5624139/5506547\n * @param hex\n */\nfunction hexToRgb(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport { hexToRgb };","function matchingSelector(element, selector) {\n if (!element || element.nodeType !== 1 || !element.parentElement) {\n return false;\n }\n\n return element.matches(selector);\n}\n\nexport { matchingSelector };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\nimport { trailingslashit, untrailingslashit } from \"../../helpers\";\nimport deepMerge from \"deepmerge\";\nimport qs from \"querystringify\";\nimport Cookie from \"js-cookie\";\nimport sha1 from \"sha-1\";\n\nfunction applyQueryString(url, query, merge) {\n url.search = qs.stringify(merge ? deepMerge.all([qs.parse(url.search), ...query]) : query, true);\n return url;\n}\n/**\n * Build an URL for a specific scheme.\n *\n * @param param0\n */\n\n\nfunction commonUrlBuilder({\n location,\n params = {},\n nonce = true,\n options,\n cookieValueAsParam\n}) {\n const {\n href\n } = window.location;\n const apiUrl = new URL(options.restRoot, href);\n const query = qs.parse(apiUrl.search);\n const permalinkPath = query.rest_route || apiUrl.pathname; // Determine path from permalink settings\n // Find dynamic parameters from URL bindings (like /user/:id)\n\n const foundParams = [];\n let path = location.path.replace(/:([A-Za-z0-9-_]+)/g, (match, group) => {\n foundParams.push(group);\n return params[group];\n });\n const getParams = {}; // Find undeclared body params (which are not bind above) and add it to GET query\n\n for (const checkParam of Object.keys(params)) {\n if (foundParams.indexOf(checkParam) === -1) {\n getParams[checkParam] = params[checkParam]; // We do not need `encodeURIComponent` as it is supported by `querystringify` already\n }\n } // Calculate invalidator for cookie values\n\n\n if (cookieValueAsParam) {\n getParams._httpCookieInvalidate = sha1(JSON.stringify(cookieValueAsParam.map(Cookie.get)));\n } // Find parameters from passed location\n\n\n const {\n search: pathSearch,\n pathname: fixedPathName\n } = new URL(location.path, href);\n\n if (pathSearch) {\n const parsed = qs.parse(pathSearch);\n\n for (const pathSearchEntry in parsed) {\n getParams[pathSearchEntry] = parsed[pathSearchEntry];\n }\n\n path = fixedPathName;\n } // Force protocol from parent location\n\n\n apiUrl.protocol = window.location.protocol; // Set path depending on permalink settings\n\n const usePath = trailingslashit(permalinkPath) + untrailingslashit(location.namespace || options.restNamespace) + path;\n\n if (query.rest_route) {\n query.rest_route = usePath; // eslint-disable-line @typescript-eslint/naming-convention\n } else {\n apiUrl.pathname = usePath; // Set path\n } // Append WordPress REST nonce\n\n\n if (nonce && options.restNonce) {\n query._wpnonce = options.restNonce;\n } // Determine if non-GET verbs should always use `POST`\n\n\n applyQueryString(apiUrl, query);\n\n if ([\"wp-json/\", \"rest_route=\"].filter(s => apiUrl.toString().indexOf(s) > -1).length > 0 && location.method && location.method !== ERouteHttpVerb.GET) {\n applyQueryString(apiUrl, [{\n _method: location.method\n }], true);\n } // Build final search\n\n\n applyQueryString(apiUrl, [options.restQuery, getParams], true);\n return apiUrl.toString();\n}\n\nexport { commonUrlBuilder, applyQueryString, qs };","const pool = {};\nconst recreateFetchPool = {};\n/**\n * A REST nonce in WordPress is only valid for 12 hours (can be configured). However, if it gets\n * invalid, the REST endpoints return a `403` error which signals us, we should recreate the nonce.\n * To avoid multiple recreations, we memorize the newly created nonce in a pool.\n */\n\nasync function nonceDeprecationPool(nonce, restRecreateNonceEndpoint) {\n if (typeof restRecreateNonceEndpoint !== \"undefined\") {\n const resultPromise = // Reuse already sent request\n recreateFetchPool[nonce] || new Promise( // eslint-disable-next-line no-async-promise-executor\n async (resolve, reject) => {\n try {\n const recreateFetch = await window.fetch(restRecreateNonceEndpoint, {\n method: \"POST\"\n });\n\n if (recreateFetch.ok) {\n const newNonce = await recreateFetch.text();\n\n if (nonce === newNonce) {\n reject();\n } else {\n pool[nonce] = newNonce;\n resolve(newNonce);\n }\n } else {\n reject();\n }\n } catch (e) {\n reject();\n }\n });\n recreateFetchPool[nonce] = resultPromise;\n return resultPromise;\n } else {\n if (typeof nonce === \"undefined\") {\n return undefined;\n } // Wait until all nonces are refreshed\n\n\n await Promise.all(Object.values(recreateFetchPool));\n let returnNonce = nonce;\n\n while (pool[returnNonce]) {\n returnNonce = pool[returnNonce];\n\n if (pool[returnNonce] === nonce) {\n break;\n }\n }\n\n return Promise.resolve(returnNonce);\n }\n}\n\nexport { nonceDeprecationPool };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\nconst NOTICE_ID = \"notice-corrupt-rest-api\";\nconst NOTICE_ATTRIBUTE_NAMESPACE = \"data-namespace\"; // eslint-disable-next-line @typescript-eslint/no-empty-function\n\nasync function addToNotice(namespace, onlyWhen = async () => {}) {\n const notice = document.getElementById(NOTICE_ID); // Only in backend and when a corrupt REST API detected\n // Completely ignore the offline state of the browser as this could happen when the\n // PC was in energy-save mode and started again\n\n if (notice && window.navigator.onLine) {\n // Already shown as \"defect\"?\n if (notice.querySelector(\"li[\".concat(NOTICE_ATTRIBUTE_NAMESPACE, \"=\\\"\").concat(namespace, \"\\\"]\"))) {\n return;\n }\n\n try {\n await onlyWhen();\n } catch (e) {\n notice.style.display = \"block\";\n const li = document.createElement(\"li\");\n li.setAttribute(NOTICE_ATTRIBUTE_NAMESPACE, namespace);\n li.innerHTML = \"\".concat(namespace, \"\");\n notice.childNodes[1].appendChild(li);\n notice.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\"\n });\n }\n }\n}\n\nasync function removeCorruptRestApi(namespace) {\n const notice = document.getElementById(NOTICE_ID);\n\n if (notice) {\n const namespaceLine = notice.querySelector(\"li[\".concat(NOTICE_ATTRIBUTE_NAMESPACE, \"=\\\"\").concat(namespace, \"\\\"]\"));\n namespaceLine === null || namespaceLine === void 0 ? void 0 : namespaceLine.remove(); // Hide if necessary\n\n if (!notice.childNodes[1].childNodes.length) {\n notice.style.display = \"none\"; // Reset complete log\n\n const textarea = notice.querySelector(\"textarea\");\n\n if (textarea) {\n textarea.value = \"\";\n }\n }\n }\n}\n/**\n * Set a request as failing so the endpoint is probably corrupt (see `corruptRestApi.tsx`)\n *\n * Please consider the following:\n *\n * > The fetch() function will automatically throw an error for network errors but not for HTTP errors such as 4xx or 5xx responses.\n *\n * @see https://jasonwatmore.com/post/2021/10/09/fetch-error-handling-for-failed-http-responses-and-network-errors\n */\n\n\nfunction addCorruptRestApi({\n method\n}, addNamespaceImmediate) {\n if (method === ERouteHttpVerb.GET) {\n if (addNamespaceImmediate) {\n addToNotice(addNamespaceImmediate, () => {\n throw new Error();\n });\n } else {\n window.detectCorruptRestApiFailed = (window.detectCorruptRestApiFailed || 0) + 1;\n window.dispatchEvent(new CustomEvent(NOTICE_ID));\n }\n }\n}\n\nfunction addCorruptRestApiLog({\n route,\n method,\n ms,\n response\n}) {\n const textarea = document.querySelector(\"#\".concat(NOTICE_ID, \" textarea\"));\n\n if (textarea) {\n const currentValue = textarea.value.split(\"\\n\").slice(0, 9);\n currentValue.unshift(\"[\".concat(new Date().toLocaleTimeString(), \"] [\").concat(method || \"GET\", \"] [\").concat(ms, \"ms] \").concat(route, \"; \").concat(response === null || response === void 0 ? void 0 : response.substr(0, 999)));\n textarea.value = currentValue.join(\"\\n\");\n }\n}\n/**\n * Register a new endpoint which needs to resolve to a valid JSON result. In this way we\n * can detect a corrupt REST API namespace e. g. it is blocked through a security plugin.\n *\n * This function needs to be called in `document.readyState < completed`!\n */\n\n\nfunction handleCorruptRestApi(resolve) {\n // Initially set\n window.detectCorruptRestApiFailed = window.detectCorruptRestApiFailed || 0; // Hide false-positives of previous failed REST requests which occurred due to page switch and bfcache (see CU-33tce0y)\n\n window.addEventListener(\"pageshow\", ({\n persisted\n }) => {\n const notice = document.getElementById(NOTICE_ID);\n\n if (notice && persisted && window.detectCorruptRestApiFailed === 0) {\n notice.style.display = \"none\";\n }\n });\n\n const fnCheck = async () => {\n // Only in backend and when a corrupt REST API detected\n if (window.detectCorruptRestApiFailed > 0) {\n for (const namespace of Object.keys(resolve)) {\n addToNotice(namespace, resolve[namespace]);\n }\n }\n };\n\n let checkTimeout;\n\n const fnThrottled = () => {\n clearTimeout(checkTimeout);\n checkTimeout = setTimeout(fnCheck, 1000);\n };\n\n fnThrottled();\n window.addEventListener(NOTICE_ID, fnThrottled);\n}\n/**\n * @deprecated For backwards-compatibility.\n */\n\n\nconst handleCorrupRestApi = handleCorruptRestApi;\nexport { addCorruptRestApi, addCorruptRestApiLog, removeCorruptRestApi, handleCorruptRestApi, handleCorrupRestApi };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\n\n/**\n * Get the result of the `Response`. It also handles multiline responses, e. g.\n * a PHP `Notice:` message is output through a conflicting plugin:\n *\n * If you are using a verb like `DELETE` or `PUT` the response may be empty and this\n * function will return `undefined`.\n *\n * @see https://developer.mozilla.org/de/docs/Web/HTTP/Methods/DELETE\n */\nasync function parseResult(url, result, method) {\n // A `204 No content` response has no body, so we do not need to parse anything\n if (result.status === 204) {\n return {};\n }\n\n const cloneForFallback = result.clone();\n\n try {\n return await result.json();\n } catch (e) {\n // Something went wrong, try each line as result of a JSON string\n const body = await cloneForFallback.text(); // Respect empty responses for given verbs (DELETE, PUT)\n\n if (body === \"\" && [ERouteHttpVerb.DELETE, ERouteHttpVerb.PUT].indexOf(method) > -1) {\n return undefined;\n }\n\n console.warn(\"The response of \".concat(url, \" contains unexpected JSON, try to resolve the JSON line by line...\"), {\n body\n });\n let lastError;\n\n for (const line of body.split(\"\\n\")) {\n if (line.startsWith(\"[\") || line.startsWith(\"{\")) {\n try {\n return JSON.parse(line);\n } catch (e) {\n lastError = e;\n }\n }\n }\n\n throw lastError;\n }\n}\n\nexport { parseResult };","import { parseResult, nonceDeprecationPool, applyQueryString, commonUrlBuilder, addCorruptRestApi, addCorruptRestApiLog, removeCorruptRestApi } from \".\";\nimport deepMerge from \"deepmerge\";\nimport jsonFormData from \"json-form-data\";\nimport { ERouteHttpVerb } from \"@devowl-wp/api\";\nconst CONTENT_TYPE_JSON = \"application/json;charset=utf-8\"; // Fix: Return type of exported function has or is using name 'FormatOptions'\n// from external module \"/home/mg/vscode-workspace/devowl-wp/node_modules/@types/json-form-data/index\" but cannot be named.\n// type MultiPartOptions = Parameters[1];\n\n/**\n * Build and execute a specific REST query.\n *\n * @see urlBuilder\n * @returns Result of REST API\n * @throws\n */\nasync function commonRequest({\n location,\n options,\n request: routeRequest,\n params,\n settings = {},\n cookieValueAsParam,\n multipart = false,\n sendRestNonce = true\n}) {\n const namespace = location.namespace || options.restNamespace;\n const url = commonUrlBuilder({\n location,\n params,\n nonce: false,\n options,\n cookieValueAsParam\n }); // Use global parameter (see https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/)\n\n if ([\"wp-json/\", \"rest_route=\"].filter(s => url.indexOf(s) > -1).length > 0 && location.method && location.method !== ERouteHttpVerb.GET) {\n settings.method = ERouteHttpVerb.POST;\n } else {\n settings.method = location.method || ERouteHttpVerb.GET;\n } // Request with GET/HEAD method cannot have body\n\n\n const apiUrl = new URL(url, window.location.href);\n const allowBody = [\"HEAD\", \"GET\"].indexOf(settings.method) === -1;\n\n if (!allowBody && routeRequest) {\n applyQueryString(apiUrl, [routeRequest], true);\n }\n\n const apiUrlBuilt = apiUrl.toString(); // Determine body\n\n let body;\n\n if (allowBody) {\n if (multipart) {\n // Let's create a multipart request...\n body = jsonFormData(routeRequest, typeof multipart === \"boolean\" ? {} : multipart); // Check if one of the form data is a blob and if not, revert back to JSON\n\n const hasBlob = Array.from(body.values()).filter(v => v instanceof File).length > 0;\n\n if (!hasBlob) {\n body = JSON.stringify(routeRequest);\n }\n } else {\n // It is a usual JSON request, we do not need to send a multipart request\n body = JSON.stringify(routeRequest);\n }\n } // Do the request\n\n\n const restNonce = await nonceDeprecationPool(options.restNonce);\n const hasRestNonce = typeof restNonce !== \"undefined\";\n const init = deepMerge.all([settings, {\n headers: { ...(typeof body === \"string\" ? {\n \"Content-Type\": CONTENT_TYPE_JSON\n } : {}),\n ...(hasRestNonce && sendRestNonce ? {\n \"X-WP-Nonce\": restNonce\n } : {}),\n Accept: \"application/json, */*;q=0.1\"\n }\n }]);\n init.body = body; // Do not make body merge-able\n\n let result; // Detect page hide of browser which can lead to cancelled requests which throw an error.\n // In this case, we should not show the notice (see CU-33tce0y).\n\n let pageUnload = false;\n\n const pageUnloadListener = () => {\n pageUnload = true;\n };\n\n window.addEventListener(\"pagehide\", pageUnloadListener);\n window.addEventListener(\"beforeunload\", pageUnloadListener);\n const start = new Date().getTime();\n let ms;\n\n try {\n result = await window.fetch(apiUrlBuilt, init);\n ms = new Date().getTime() - start;\n removeCorruptRestApi(namespace);\n } catch (e) {\n // window.fetch does not throw by default, so there must be an error with the network or Ad-blocker\n ms = new Date().getTime() - start;\n\n if (!pageUnload) {\n addCorruptRestApiLog({\n method: location.method,\n route: apiUrl.pathname,\n ms,\n response: \"\".concat(e)\n });\n addCorruptRestApi(settings, namespace);\n }\n\n console.error(e);\n throw e;\n } finally {\n window.removeEventListener(\"pagehide\", pageUnloadListener);\n window.removeEventListener(\"beforeunload\", pageUnloadListener);\n } // `window.fetch` does not throw an error if the server response an error code.\n\n\n if (!result.ok) {\n let responseJSON = undefined;\n let replay = false;\n\n try {\n responseJSON = await parseResult(apiUrlBuilt, result, location.method); // wordpress.com private site compatibility\n\n /* istanbul ignore if */\n\n if (responseJSON.code === \"private_site\" && result.status === 403 && hasRestNonce && !sendRestNonce) {\n replay = true;\n } // Refresh nonce automatically\n\n /* istanbul ignore if */\n\n\n if (responseJSON.code === \"rest_cookie_invalid_nonce\" && hasRestNonce) {\n const {\n restRecreateNonceEndpoint\n } = options;\n\n try {\n await nonceDeprecationPool(restNonce, restRecreateNonceEndpoint);\n replay = true;\n } catch (e) {// Silence is golden.\n }\n } // Support retry-after header (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After)\n // Currently, only `` value is respected, not a Date yet\n\n\n const retryAfter = result.headers.get(\"retry-after\");\n\n if (retryAfter.match(/^\\d+$/)) {\n replay = +retryAfter * 1000;\n }\n } catch (e) {// Silence is golden.\n }\n\n if (replay) {\n const replayData = {\n location,\n options,\n multipart,\n params,\n request: routeRequest,\n sendRestNonce: true,\n settings\n };\n\n if (typeof replay === \"number\") {\n return new Promise(resolve => setTimeout(() => commonRequest(replayData).then(resolve), replay));\n } else {\n return await commonRequest(replayData);\n }\n }\n\n addCorruptRestApiLog({\n method: location.method,\n route: apiUrl.pathname,\n ms,\n response: JSON.stringify(responseJSON)\n });\n addCorruptRestApi(settings);\n const resultAny = result;\n resultAny.responseJSON = responseJSON;\n throw resultAny;\n }\n\n return parseResult(apiUrlBuilt, result, location.method);\n}\n\nexport { commonRequest };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\n/**\n * Use\n *\n * ```ts\n * import { ERouteHttpVerb } from \"@devowl-wp/api\";\n * ```\n *\n * instead!\n *\n * @deprecated For backwards-compatibility.\n */\n\nconst RouteHttpVerb = ERouteHttpVerb;\nexport { RouteHttpVerb };","const untrailingslashit = str => str.endsWith(\"/\") || str.endsWith(\"\\\\\") ? untrailingslashit(str.slice(0, -1)) : str;\n\nconst trailingslashit = str => \"\".concat(untrailingslashit(str), \"/\"); // Allows to make an interface extension and make some properties optional (https://git.io/JeK6J)\n\n\n/**\n * You need to manually put the following code snippet in each of your entry points to enable\n * \"on the fly\" public path for chunks:\n *\n * ```\n * __webpack_public_path__ = getWebpackPublicPath(process.env.slug);\n * ```\n *\n * @see https://webpack.js.org/guides/public-path/#on-the-fly\n */\nconst getWebpackPublicPath = slug => {\n const options = window[slug.replace(/-([a-z])/g, g => g[1].toUpperCase())];\n return \"\".concat(options.publicUrl).concat(options.chunkFolder, \"/\");\n};\n\nexport { untrailingslashit, trailingslashit, getWebpackPublicPath };","import { supportsCookies } from \"../utils\";\n/**\n * Does the current browser support cookies?\n */\n\nconst preDecisionGatewaySupportsCookies = async ({\n supportsCookiesName\n}) => {\n return supportsCookies(supportsCookiesName) ? false : \"essentials\";\n};\n\nexport { preDecisionGatewaySupportsCookies };","import isbot from \"isbot\";\nimport { isGdprScanner } from \".\";\n/**\n * Is the current browser a spider / crawler?\n */\n\nfunction isCrawler() {\n const {\n userAgent\n } = navigator;\n\n if (userAgent) {\n // Lighthouse / Google PageSpeed isn't currently a bot (https://git.io/J3r5z)\n if (/chrome-lighthouse/i.test(userAgent) || isGdprScanner()) {\n return false;\n }\n\n return isbot(userAgent);\n }\n\n return false;\n}\n\nexport { isCrawler };","import { getUserDecision } from \"../decision\";\nimport { isCrawler, promiseTimeout } from \"../utils\";\n\n/**\n * Dynamically allow to get a predecision with a extra request to an external API.\n * If your server does not respond within a given timeout or with an error, it automatically\n * continues with the predecisions. Otherwise, the predecision of the response is used.\n */\nconst preDecisionGatewayDynamicRequest = (request, timeout = 10000, active = true) => async ({\n decisionCookieName,\n revisionHash\n}) => {\n if (isCrawler() || !active) {\n // Ignore unnecessary requests\n return false;\n } // Check if revision has changed, and probably access our dynamic predecision again\n\n\n const decision = getUserDecision(decisionCookieName);\n\n if (decision) {\n const {\n revision\n } = decision;\n\n if (revisionHash === revision) {\n // Still the same revision, so we can simply accept our consent as it is still the predecision we had previously\n return \"consent\";\n }\n }\n\n try {\n const {\n predecision\n } = await promiseTimeout(request(), timeout);\n return predecision;\n } catch (e) {\n return false;\n }\n};\n\nexport { preDecisionGatewayDynamicRequest };","/**\n * Let a `Promise` be rejected after a given amount of time.\n */\nfunction promiseTimeout(promise, ms) {\n return new Promise((resolve, reject) => {\n promise.then(resolve, reject);\n const e = new Error(\"Timed out\");\n setTimeout(reject, ms, e);\n });\n}\n\nexport { promiseTimeout };","import { getUserDecision } from \"../decision\";\nimport { isDoNotTrack } from \"../utils\";\n\n/**\n * When the user has \"Do not track\" enabled and is allowed to use, let's automatically\n * save the dialog without any action.\n */\nconst preDecisionGatewayIsDoNotTrack = (active = true) => async ({\n decisionCookieName,\n groups,\n essentialGroupSlug\n}) => {\n const [essentialGroupObj] = groups.filter(({\n slug\n }) => slug === essentialGroupSlug);\n\n if (getUserDecision(decisionCookieName) !== false || !active) {\n return false;\n } // As soon we have a legitimate interest, we need to show the cookie banner\n\n\n for (const group of groups) {\n if (group !== essentialGroupObj) {\n for (const {\n legalBasis\n } of group.items) {\n if (legalBasis === \"legitimate-interest\") {\n return false;\n }\n }\n }\n }\n\n return isDoNotTrack() ? \"dnt\" : false;\n};\n\nexport { preDecisionGatewayIsDoNotTrack };","/**\n * Checks if the given browser is requesting \"Do Not Track\" header.\n *\n * @see https://dev.to/corbindavenport/how-to-correctly-check-for-do-not-track-with-javascript-135d\n */\nfunction isDoNotTrack() {\n try {\n const w = window;\n\n if (w.doNotTrack || w.navigator.doNotTrack || w.navigator.msDoNotTrack || \"msTrackingProtectionEnabled\" in w.external) {\n // The browser supports Do Not Track!\n if (w.doNotTrack == \"1\" || w.navigator.doNotTrack == \"yes\" || w.navigator.doNotTrack == \"1\" || w.navigator.msDoNotTrack == \"1\" || w.external.msTrackingProtectionEnabled()) {\n return true;\n }\n }\n } catch (e) {// Silence is golden.\n }\n\n return false;\n}\n\nexport { isDoNotTrack };","import { getUserDecision } from \"../decision\";\n/**\n * Has the user already consent to the latest requested revision (hash)?\n */\n\nconst preDecisionGatewayUserConsent = async ({\n decisionCookieName,\n revisionHash\n}) => {\n const decision = getUserDecision(decisionCookieName);\n\n if (decision === false) {\n return false;\n }\n\n const {\n revision\n } = decision;\n return revisionHash === revision ? \"consent\" : false;\n};\n\nexport { preDecisionGatewayUserConsent };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentDynamicPredecisionGet = {\n path: \"/consent/dynamic-predecision\",\n method: RouteHttpVerb.POST\n};","/**\n * Checks if the given banner is not visible due to legal settings.\n */\nfunction isHiddenDueLegal(banner) {\n const {\n legal: {\n imprint,\n imprintHide,\n imprintIsExternalUrl,\n privacyPolicy,\n privacyPolicyHide,\n privacyPolicyIsExternalUrl\n },\n pageId\n } = banner;\n return [imprintHide && !imprintIsExternalUrl && +imprint, privacyPolicyHide && !privacyPolicyIsExternalUrl && +privacyPolicy].filter(Boolean).indexOf(pageId) > -1;\n}\n\nexport { isHiddenDueLegal };","import { useCallback, useMemo } from \"react\";\nimport { BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER } from \"../..\";\n/**\n * Depending on the current screen, calculate the animation to use.\n *\n * Currently, we do not support animations on resize as we cannot calculate the\n * width of the overlay container as it does not exist on first render cycle of React.\n *\n * Drawback if animation only on mobile is enabled: if the window is first a mobile,\n * and the window gets resize it will reuse the animation on desktop again\n */\n\nfunction useBannerAnimation() {\n const clientWidth = useMemo(() => window.innerWidth, []);\n const isMobile = clientWidth < BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER; // Check if it is mobile Firefox, as it does not support `position:sticky;bottom:0;` and animations.\n // Effect: The buttons and footer are not visible.\n\n const isMobileFirefox = useMemo(() => {\n const userAgent = window.navigator.userAgent.toLowerCase();\n return [\"firefox\", \"gecko\", \"mobile\", \"android\"].map(term => userAgent.indexOf(term) > -1).filter(Boolean).length === 4;\n }, []);\n return useCallback(({\n animationIn,\n animationInOnlyMobile,\n animationOut,\n animationOutOnlyMobile\n }) => {\n let useAnimationIn = animationInOnlyMobile ? isMobile ? animationIn : \"none\" : animationIn;\n let useAnimationOut = animationOutOnlyMobile ? isMobile ? animationOut : \"none\" : animationOut;\n\n if (isMobileFirefox) {\n useAnimationIn = \"none\";\n useAnimationOut = \"none\";\n }\n\n return {\n useAnimationIn,\n useAnimationOut\n };\n }, []);\n}\n\nexport { useBannerAnimation };","import { createTcfModel } from \"@devowl-wp/cookie-consent-web-client\";\n\nconst cancelEvent = e => {\n if (!e) {\n return;\n }\n\n e.preventDefault(); // Some themes (e.g. AKEA) do have listeners on each link separately and do a custom redirect\n\n e.stopPropagation();\n};\n\nfunction useBannerStateContextCallbacks({\n toggleOverlay,\n revokeConsent\n}) {\n const toggleWithActiveAction = (setContextValue, type) => setContextValue(state => {\n return { ...state,\n activeAction: type,\n individualPrivacyOpen: true,\n refreshSiteAfterSave: type === \"change\" ? 2000 : false,\n ...toggleOverlay(state, true)\n };\n });\n\n return {\n openHistory: (setContextValue, ...args) => {\n toggleWithActiveAction(setContextValue, \"history\");\n cancelEvent(args[0]);\n },\n openBanner: (setContextValue, ...args) => {\n toggleWithActiveAction(setContextValue, \"change\");\n cancelEvent(args[0]);\n },\n revokeConsent: (setContextValue, ...args) => {\n const [successMessage, e] = args;\n setContextValue(state => {\n revokeConsent(state).then(() => {\n successMessage && alert(successMessage); // Always reload (always wait 2s to ensure opt-out scripts are exeucted)\n // Fix iOS / Safari bug when we want to reload the page after a POST request\n\n setTimeout(() => window.location.reload(), 2000);\n }); // Do not change anything\n\n return state;\n });\n cancelEvent(e);\n },\n updateTcfFilterBy: (setContextValue, ...args) => {\n const [newFilter] = args;\n setContextValue(state => ({ ...state,\n tcfFilterBy: newFilter\n }));\n },\n updateIndividualPrivacyOpen: (setContextValue, ...args) => {\n const [opened] = args;\n setContextValue(state => ({ ...state,\n individualPrivacyOpen: opened\n }));\n },\n updateGroupChecked: (setContextValue, ...args) => {\n const [id, checked] = args;\n setContextValue(state => {\n const newConsent = JSON.parse(JSON.stringify(state.consent));\n\n if (checked) {\n newConsent.groups[id] = state.groups.filter(group => group.id === id)[0].items.map(({\n id\n }) => id);\n } else {\n delete newConsent.groups[id];\n }\n\n return { ...state,\n consent: newConsent,\n didGroupFirstChange: true\n };\n });\n },\n updateCookieChecked: (setContextValue, ...args) => {\n const [groupId, id, checked] = args;\n setContextValue(state => {\n const newConsent = JSON.parse(JSON.stringify(state.consent)); // Initially create \"selected\" cookies\n\n if (!newConsent.groups[groupId]) {\n newConsent.groups[groupId] = [];\n }\n\n const cookieIds = newConsent.groups[groupId];\n const indexOf = cookieIds.indexOf(id);\n\n if (checked && indexOf === -1) {\n cookieIds.push(id);\n } else if (!checked && indexOf > -1) {\n cookieIds.splice(indexOf, 1);\n } // Delete group entirely when no cookies selected\n\n\n if (!cookieIds.length) {\n delete newConsent.groups[groupId];\n }\n\n return { ...state,\n consent: newConsent\n };\n });\n },\n onClose: setContextValue => {\n setContextValue(state => {\n return { ...state,\n ...toggleOverlay(state, false),\n // This should be set always by you again as it is one-time\n refreshSiteAfterSave: false\n };\n });\n },\n selectHistoryEntry: (setContextValue, ...args) => {\n const [groups, consentGroups, tcf] = args;\n setContextValue(state => {\n const additionalChanges = {\n // In case we previously used non-TCF functionality, do not show the TCF banner\n isTcf: !!tcf,\n tcf: null\n };\n\n if (process.env.IS_TCF === \"1\" && tcf) {\n Object.assign(additionalChanges, {\n tcf: \"gvl\" in tcf ? tcf : createTcfModel(tcf)\n });\n }\n\n return { ...state,\n groups,\n consent: { ...state.consent,\n groups: consentGroups\n },\n ...additionalChanges\n };\n });\n }\n };\n}\n\nexport { useBannerStateContextCallbacks };","import { useEffect } from \"react\";\nimport { parents } from \"@devowl-wp/headless-content-unblocker\";\nimport { matchingSelector } from \"@devowl-wp/resolve-none-computed-style\";\nimport { useBanner } from \"../..\";\nconst HREF_MATCHER = '[href^=\"#consent-\"]';\n/**\n * Listen to anchor links and execute the banner action:\n *\n * ```\n * #consent-change\n * #consent-history\n * #consent-revoke\n * ```\n */\n\nfunction useBannerActionLinks() {\n const {\n openBanner,\n openHistory,\n revokeConsent\n } = useBanner();\n useEffect(() => {\n const handleType = (type, successMessage, e) => {\n if (!openBanner) {\n // `useBannerActions` is not yet initialized.\n return;\n }\n\n switch (type) {\n case \"change\":\n openBanner(e);\n break;\n\n case \"history\":\n openHistory(e);\n break;\n\n case \"revoke\":\n revokeConsent(successMessage, e);\n break;\n\n default:\n break;\n }\n };\n\n const eventListenerDocumentClick = e => {\n if (!openBanner) {\n // `useBannerActions` is not yet initialized.\n return;\n } // Check if one of the parents has a valid hash link\n\n\n const element = e.target;\n parents(element, HREF_MATCHER).concat(matchingSelector(element, HREF_MATCHER) ? [element] : []).forEach(parent => {\n handleType(parent.getAttribute(\"href\").slice(9), parent.getAttribute(\"data-success-message\"), e);\n }); // @deprecated Old behavior with simple links like `#change`\n\n if (matchingSelector(element, \".rcb-sc-link\")) {\n handleType(element.getAttribute(\"href\").slice(1), element.getAttribute(\"data-success-message\"), e);\n }\n };\n\n const eventListenerHashChange = () => {\n const {\n hash\n } = window.location;\n\n if (hash.startsWith(\"#consent-\")) {\n handleType(hash.substring(9), undefined, undefined);\n }\n };\n\n window.addEventListener(\"hashchange\", eventListenerHashChange);\n document.addEventListener(\"click\", eventListenerDocumentClick, true);\n return () => {\n window.removeEventListener(\"hashchange\", eventListenerHashChange);\n document.removeEventListener(\"click\", eventListenerDocumentClick, true);\n };\n }, [openBanner, openHistory, revokeConsent]);\n}\n\nexport { useBannerActionLinks };","import { useEffect, useState } from \"react\";\n\nfunction useResettableAnimation(animation, duration) {\n const [i, setI] = useState(0);\n const [j, setJ] = useState(0);\n const [stateAnimation, setStateAnimation] = useState(animation);\n const [stateAnimationReset, setStateAnimationReset] = useState(undefined);\n const [stateDuration, setStateDuration] = useState(duration);\n const [stateDurationReset, setStateDurationReset] = useState(undefined); // Reset animation, save it temporary so when changing it, it needs to be to \"none\" and then the needed one\n\n useEffect(() => {\n // Avoid first rendering as the first is animated at mount-time\n if (i > 0) {\n if (animation === \"none\") {\n setStateAnimation(animation);\n } else {\n setStateAnimation(\"none\");\n setStateAnimationReset(animation);\n }\n }\n\n setI(i + 1);\n }, [animation]);\n useEffect(() => {\n // Avoid first rendering as the first is animated at mount-time\n if (j > 0) {\n if (duration === 0) {\n setStateDuration(duration);\n } else {\n setStateDuration(0);\n setStateDurationReset(duration);\n setStateAnimation(\"none\");\n setStateAnimationReset(animation);\n }\n }\n\n setJ(j + 1);\n }, [duration]);\n useEffect(() => {\n if (stateAnimationReset !== undefined) {\n setStateAnimation(stateAnimationReset);\n setStateAnimationReset(undefined);\n }\n }, [stateAnimationReset]);\n useEffect(() => {\n if (stateDurationReset !== undefined) {\n setStateDuration(stateDurationReset);\n setStateDurationReset(undefined);\n }\n }, [stateDurationReset]);\n return [stateAnimation, stateDuration];\n}\n\nexport { useResettableAnimation };","import { hexToRgb } from \".\";\n\n/**\n * @param hex\n * @param alpha 0 - 100\n */\nfunction calculateRgba(hex, alpha) {\n const {\n r,\n g,\n b\n } = hexToRgb(hex);\n return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(alpha / 100, \")\");\n}\n\nexport { calculateRgba };","import { useState, useEffect } from \"react\";\n\nfunction getAnimationRelatedState({\n isVisible,\n animationIn,\n animationOut,\n animationInDuration,\n animationOutDuration,\n animationInDelay,\n animationOutDelay\n}) {\n return isVisible ? {\n animation: animationIn,\n duration: animationInDuration,\n delay: animationInDelay\n } : {\n animation: animationOut,\n duration: animationOutDuration,\n delay: animationOutDelay\n };\n}\n/**\n * Ported from https://www.npmjs.com/package/react-animated-css due to high bundle size.\n */\n\n\nconst AnimatedCss = ({\n animateOnMount = true,\n isVisible = true,\n animationIn = \"fadeIn\",\n animationOut = \"fadeOut\",\n animationInDelay = 0,\n animationOutDelay = 0,\n animationInDuration = 1000,\n animationOutDuration = 1000,\n className = \"\",\n style = {},\n children\n}) => {\n const [{\n animation,\n duration,\n delay\n }, setAnimationRelatedState] = useState(animateOnMount ? getAnimationRelatedState({\n isVisible,\n animationIn,\n animationOut,\n animationInDelay,\n animationOutDelay,\n animationInDuration,\n animationOutDuration\n }) : {\n animation: \"\",\n delay: undefined,\n duration: 0\n });\n useEffect(() => {\n setAnimationRelatedState(getAnimationRelatedState({\n isVisible,\n animationIn,\n animationOut,\n animationInDelay,\n animationOutDelay,\n animationInDuration,\n animationOutDuration\n }));\n }, [isVisible, animationIn, animationOut, animationInDelay, animationOutDelay, animationInDuration, animationOutDuration]);\n const classes = \"animate__animated animate__\".concat(animation, \" \").concat(className);\n const backwardStyle = !animation ? {\n opacity: isVisible ? 1 : 0,\n transition: \"opacity \".concat(delay, \"ms\")\n } : {};\n return h(\"div\", {\n className: classes,\n style: {\n animationDelay: \"\".concat(delay, \"ms\"),\n animationDuration: \"\".concat(duration, \"ms\"),\n pointerEvents: isVisible ? \"all\" : \"none\",\n ...style,\n ...backwardStyle\n }\n }, children);\n};\n\nexport { AnimatedCss };","import { useEffect } from \"react\";\nimport { useBanner } from \"../contexts\";\nimport { usePlainCss } from \".\";\n/**\n * Pass an HTML refs and we will provide a root stylesheet with the height dimensions and variables\n * with the calculated height. This is needed as we need to do some positioning of header and footer.\n */\n\nfunction useRenderedHeightsAsCssVars(element, name) {\n const {\n pageRequestUuid4\n } = useBanner(); // We do directly modify the inline CSS as we do not want to trigger a rerender for the complete banner content\n\n const cssId = usePlainCss(\"\", \"useRenderedHeightsAsCssVars-\".concat(name));\n const cssElement = document.getElementById(cssId);\n useEffect(() => {\n let previousHeight = 0;\n\n const recalculate = () => {\n const currentHeight = element.getBoundingClientRect().height;\n\n if (previousHeight !== currentHeight) {\n previousHeight = currentHeight;\n cssElement.innerHTML = \"#\".concat(pageRequestUuid4, \"{--rendered-height-\").concat(name, \": \").concat(Math.floor(currentHeight), \"px;--rendered-height-raw-\").concat(name, \": \").concat(currentHeight, \"px}\");\n }\n };\n\n if (!element) {\n return () => {// Silence is golden.\n };\n } // Support animations\n\n\n const animateContainer = document.querySelector(\"#\".concat(pageRequestUuid4, \" div[class*=\\\"animate__\\\"]\"));\n animateContainer.addEventListener(\"animationend\", recalculate);\n\n if (window.ResizeObserver) {\n const ro = new ResizeObserver(recalculate);\n ro.observe(element);\n return () => {\n ro.disconnect();\n animateContainer.removeEventListener(\"animationend\", recalculate);\n };\n } else {\n const interval = setInterval(recalculate, 150);\n return () => {\n clearInterval(interval);\n animateContainer.removeEventListener(\"animationend\", recalculate);\n };\n }\n }, [element, name]);\n}\n\nexport { useRenderedHeightsAsCssVars };","import { useBanner } from \"../..\";\nimport { useCallback } from \"react\";\n/**\n * Provide callbacks for all the available button types in our cookie banner:\n *\n * - Accept all\n * - Continue without consent (accept essentials)\n * - Save custom choices (no changes to the current selected groups and services)\n * - Change individual privacy preferences\n */\n\nfunction useBannerButtonCallbacks() {\n const {\n individualPrivacyOpen,\n onSave,\n updateGroupChecked,\n updateCookieChecked,\n groups,\n essentialGroup,\n updateIndividualPrivacyOpen,\n activeAction,\n onClose\n } = useBanner();\n const buttonClickedAll = individualPrivacyOpen ? \"ind_all\" : \"main_all\";\n const buttonClickedEssentials = individualPrivacyOpen ? \"ind_essential\" : \"main_essential\";\n const buttonClickedCloseIcon = individualPrivacyOpen ? \"ind_close_icon\" : \"main_close_icon\";\n const buttonClickedCustom = individualPrivacyOpen ? \"ind_custom\" : \"main_custom\";\n const result = {\n buttonClickedAll,\n buttonClickedEssentials,\n buttonClickedCloseIcon,\n buttonClickedCustom,\n acceptAll: useCallback(() => {\n groups.forEach(g => updateGroupChecked(g.id, true));\n onSave(false, buttonClickedAll);\n }, [buttonClickedAll]),\n\n /**\n * This includes the complete \"Essential\" group + legal basis = legitimate interests.\n */\n acceptEssentials: useCallback((isCloseIcon = false) => {\n groups.forEach(({\n slug,\n id,\n items\n }) => {\n if (slug === essentialGroup) {\n updateGroupChecked(id, true);\n } else {\n for (const {\n legalBasis,\n id: cookieId\n } of items) {\n updateCookieChecked(id, cookieId, legalBasis === \"legitimate-interest\");\n }\n }\n });\n onSave(false, isCloseIcon ? buttonClickedCloseIcon : buttonClickedEssentials);\n }, [buttonClickedEssentials]),\n acceptIndividual: useCallback(() => onSave(false, buttonClickedCustom), [buttonClickedCustom]),\n openIndividualPrivacy: useCallback(() => {\n updateIndividualPrivacyOpen(true);\n }, [updateIndividualPrivacyOpen])\n };\n return { ...result,\n closeIcon: useCallback(() => {\n if (!activeAction) {\n // If we do not have yet a consent and it shows the banner for the first time,\n // the close icon is equivalent to \"Continue without consent\"\n result.acceptEssentials(true);\n } else {\n onClose();\n }\n }, [activeAction, onClose, result.acceptEssentials])\n };\n}\n\nexport { useBannerButtonCallbacks };","import { useBanner, useBannerButtonCallbacks, scaleMobile, CloseIcon, BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER } from \"../../..\";\n\nconst BannerCloseIcon = () => {\n const {\n headerDesign: {\n fontSize,\n fontColor\n },\n texts: {\n acceptEssentials\n },\n mobile,\n activeAction,\n pageRequestUuid4,\n i18n: {\n close,\n closeWithoutSaving\n },\n buttonClicked = \"\"\n } = useBanner();\n const {\n buttonClickedCloseIcon,\n closeIcon\n } = useBannerButtonCallbacks();\n const container = document.getElementById(pageRequestUuid4);\n return h(CloseIcon, {\n width: scaleMobile(mobile, pageRequestUuid4, fontSize),\n color: fontColor,\n tooltipText: activeAction ? activeAction === \"change\" ? closeWithoutSaving : close : acceptEssentials,\n tooltipAlways: (container === null || container === void 0 ? void 0 : container.clientWidth) < BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER,\n framed: buttonClicked === buttonClickedCloseIcon,\n renderInContainer: container,\n onClick: closeIcon\n });\n};\n\nexport { BannerCloseIcon };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBanner, bannerHeaderInlineStyleContainer, bannerHeaderInlineStyle, bannerHeaderInlineStyleLogo, commonInlineStyleHeaderHeadline, BannerCloseIcon } from \"../../..\";\nimport { forwardRef } from \"react\"; // eslint-disable-next-line react/display-name\n\nconst BannerHeader = /*#__PURE__*/forwardRef((_, ref) => {\n const banner = useBanner();\n const {\n headerDesign: {\n logo,\n logoRetina,\n logoAlt\n },\n decision: {\n showCloseIcon\n },\n texts: {\n headline\n },\n activeAction,\n individualPrivacyOpen,\n individualTexts,\n i18n: {\n headerTitlePrivacyPolicyHistory\n }\n } = banner; // Calculate logo\n\n const useRetina = logoRetina && !(logo !== null && logo !== void 0 && logo.endsWith(\".svg\")) && window.devicePixelRatio > 1;\n const useLogo = useRetina ? logoRetina : logo; // Calculate headline\n\n const useHeadline = individualPrivacyOpen ? activeAction === \"history\" ? headerTitlePrivacyPolicyHistory : individualTexts.headline : headline;\n return h(\"div\", _extends({\n ref: ref\n }, bannerHeaderInlineStyleContainer(banner)), h(\"div\", bannerHeaderInlineStyle(banner), !!useLogo && h(\"img\", _extends({\n alt: logoAlt || \"\",\n src: useLogo\n }, bannerHeaderInlineStyleLogo(banner, useRetina))), !!useHeadline && h(\"div\", commonInlineStyleHeaderHeadline(banner, false), useHeadline), (!!showCloseIcon || !!activeAction) && h(BannerCloseIcon, null)));\n});\nexport { BannerHeader };","import { scaleMobile } from \"../..\";\n\nfunction bannerHeaderInlineStyleContainer({\n layout: {\n type,\n dialogBorderRadius\n },\n design: {\n borderWidth,\n borderColor,\n ...restDesign\n },\n headerDesign: {\n inheritBg,\n bg,\n padding\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const useType = scaleMobile(mobile, pageRequestUuid4, type, \"banner\");\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, borderWidth);\n const style = {\n padding: scaleMobile(mobile, pageRequestUuid4, padding, undefined, true).map(p => \"\".concat(p, \"px\")).join(\" \"),\n background: inheritBg ? restDesign.bg : bg,\n borderRadius: useType === \"dialog\" ? \"\".concat(dialogBorderRadius, \"px \").concat(dialogBorderRadius, \"px 0 0\") : undefined,\n position: \"sticky\",\n zIndex: 9,\n top: 0\n };\n\n if (useType === \"dialog\" && useBorderWidth > 0) {\n style.borderTop = \"\".concat(useBorderWidth, \"px solid \").concat(borderColor);\n style.borderLeft = style.borderTop;\n style.borderRight = style.borderTop;\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-header-container\",\n style\n };\n}\n\nexport { bannerHeaderInlineStyleContainer };","import { scaleMobile } from \"../..\";\n\nfunction bannerHeaderInlineStyle({\n layout: {\n type,\n bannerMaxWidth\n },\n design: {\n textAlign\n },\n headerDesign: {\n inheritTextAlign,\n logo,\n logoPosition,\n ...restHeaderDesign\n },\n texts: {\n headline\n },\n individualLayout,\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4,\n individualPrivacyOpen\n}) {\n const useTextAlign = inheritTextAlign ? textAlign : restHeaderDesign.textAlign;\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-header\",\n style: {\n transition: \"width 500ms, max-width 500ms\",\n maxWidth: scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"banner\" ? +(individualPrivacyOpen && !individualLayout.inheritBannerMaxWidth ? individualLayout.bannerMaxWidth : bannerMaxWidth) : undefined,\n margin: \"auto\",\n display: \"flex\",\n justifyContent: useTextAlign === \"center\" ? \"center\" : useTextAlign === \"right\" ? \"flex-end\" : undefined,\n textAlign: useTextAlign,\n alignItems: \"center\",\n position: \"relative\",\n flexDirection: logo && headline ? logoPosition === \"left\" ? \"row\" : logoPosition === \"right\" ? \"row-reverse\" : \"column\" : undefined\n }\n };\n}\n\nexport { bannerHeaderInlineStyle };","import { scaleMobile } from \"../..\";\n\nfunction bannerHeaderInlineStyleLogo({\n headerDesign: {\n logoMaxHeight,\n logoMargin,\n logoFitDim,\n logoRetinaFitDim\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}, isRetina) {\n const useFitDim = isRetina ? logoRetinaFitDim : logoFitDim;\n const dimStyle = useFitDim ? {\n width: useFitDim[0],\n height: useFitDim[1]\n } : {\n width: \"auto\",\n height: scaleMobile(mobile, pageRequestUuid4, +logoMaxHeight)\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-logo\",\n style: { ...dimStyle,\n margin: scaleMobile(mobile, pageRequestUuid4, logoMargin).map(m => \"\".concat(m, \"px\")).join(\" \") //[logoPosition === \"left\" ? \"marginRight\" : \"marginLeft\"]: logoPosition === \"above\" ? undefined : 15,\n //marginBottom: logoPosition === \"above\" ? 5 : undefined\n\n }\n };\n}\n\nexport { bannerHeaderInlineStyleLogo };","import { useBanner, bannerGroupsInlineStyleTitle, bannerGroupsInlineStyleDescription } from \"../../..\";\n\nconst BannerGroupSectionTitle = ({\n title,\n children\n}) => {\n const banner = useBanner();\n return h(\"div\", bannerGroupsInlineStyleTitle(banner), title, children && h(\"div\", bannerGroupsInlineStyleDescription(banner), children));\n};\n\nexport { BannerGroupSectionTitle };","import { scaleMobile } from \"../..\";\n\nfunction bannerGroupsInlineStyleTitle({\n group: {\n headlineFontSize,\n headlineFontColor,\n headlineFontWeight\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-group\",\n style: {\n color: headlineFontColor,\n fontSize: scaleMobile(mobile, pageRequestUuid4, headlineFontSize),\n fontWeight: headlineFontWeight,\n textAlign: \"left\"\n }\n };\n}\n\nexport { bannerGroupsInlineStyleTitle };","import { scaleMobile } from \"../..\";\n\nfunction bannerGroupsInlineStyleDescription({\n design: {\n fontWeight\n },\n group: {\n descriptionFontColor,\n descriptionFontSize\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-group-description\",\n style: {\n color: descriptionFontColor,\n fontSize: scaleMobile(mobile, pageRequestUuid4, +descriptionFontSize),\n fontWeight,\n marginTop: 5\n }\n };\n}\n\nexport { bannerGroupsInlineStyleDescription };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { Fragment, useState } from \"react\";\nimport { commonGroupsInlineStyleLinkMore } from \"../../inlineStyles\";\nimport { useBannerOrBlocker } from \"../../hooks\";\n\nconst CommonLinkMore = ({\n onToggle,\n children,\n showMore,\n hideMore,\n ...rest\n}) => {\n const bannerOrBlocker = useBannerOrBlocker();\n const [isHover, setIsHover] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n return h(Fragment, null, \"\\xA0\\xA0\\u2022\\xA0\\xA0\", h(\"a\", _extends({\n href: \"#\"\n }, commonGroupsInlineStyleLinkMore(bannerOrBlocker, isHover), {\n onClick: e => {\n const newOpen = !isOpen;\n setIsOpen(newOpen);\n onToggle === null || onToggle === void 0 ? void 0 : onToggle(newOpen);\n e.preventDefault();\n },\n onMouseEnter: () => setIsHover(true),\n onMouseLeave: () => setIsHover(false)\n }, rest), isOpen ? hideMore : showMore), isOpen && children);\n};\n\nexport { CommonLinkMore };","import { useCallback } from \"react\";\nimport { useBanner, Cookie } from \"../../..\";\n\nconst BannerCookie = ({\n group,\n cookie\n}) => {\n var _consent$groups;\n\n const {\n id\n } = cookie;\n const banner = useBanner();\n const {\n consent,\n activeAction,\n essentialGroup\n } = banner;\n const isEssentialGroup = essentialGroup === group.slug;\n const isDisabled = isEssentialGroup || activeAction === \"history\";\n const isChecked = isEssentialGroup || (((_consent$groups = consent.groups) === null || _consent$groups === void 0 ? void 0 : _consent$groups[group.id]) || []).some(c => c === id);\n const handleCheckbox = useCallback(() => !isDisabled && banner.updateCookieChecked(group.id, id, !isChecked), [isDisabled, banner, group, id, isChecked]);\n return h(Cookie, {\n cookie: cookie,\n propertyListProps: {\n isEssentialGroup\n },\n checked: isChecked,\n disabled: isDisabled,\n onToggleCheck: handleCheckbox\n });\n};\n\nexport { BannerCookie };","import { useCallback } from \"react\";\nimport { CommonCheckbox, CommonLinkMore, useBanner, bannerGroupsInlineStyleGroup, BannerGroupSectionTitle, BannerCookie } from \"../../..\";\n\nconst BannerGroup = ({\n group\n}) => {\n var _consent$groups$id;\n\n const banner = useBanner();\n const {\n id,\n slug,\n name,\n description,\n items\n } = group;\n const {\n previewCheckboxActiveState,\n consent,\n activeAction,\n essentialGroup,\n individualTexts: {\n showMore,\n hideMore\n }\n } = banner;\n const isEssentialGroup = essentialGroup === slug;\n const isDisabled = isEssentialGroup || activeAction === \"history\";\n const isChecked = previewCheckboxActiveState || isEssentialGroup || !!consent.groups[id];\n const isPartial = !isEssentialGroup && JSON.stringify(items.map(({\n id\n }) => id).sort()) !== JSON.stringify(((_consent$groups$id = consent.groups[id]) === null || _consent$groups$id === void 0 ? void 0 : _consent$groups$id.sort()) || []);\n const handleCheckbox = useCallback(() => !isDisabled && banner.updateGroupChecked(id, !isChecked), [isDisabled, banner, id, isChecked]);\n return h(\"div\", bannerGroupsInlineStyleGroup(banner), h(BannerGroupSectionTitle, {\n title: h(CommonCheckbox, {\n onClick: handleCheckbox,\n isPartial: isPartial,\n isChecked: isChecked,\n isDisabled: isDisabled\n }, name, \" (\", items.length, \")\")\n }, description, !!items && h(CommonLinkMore, {\n showMore: showMore,\n hideMore: hideMore\n }, items.map(cookie => h(BannerCookie, {\n key: cookie.id,\n group: group,\n cookie: cookie\n })))));\n};\n\nexport { BannerGroup };","import { scaleMobile } from \"../..\";\n\nfunction bannerGroupsInlineStyleGroup({\n group: {\n groupBg,\n groupBorderRadius,\n groupBorderColor,\n groupPadding,\n groupBorderWidth,\n groupInheritBg\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const useGroupBorderWidth = scaleMobile(mobile, pageRequestUuid4, groupBorderWidth);\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-group\",\n style: {\n background: groupInheritBg ? undefined : groupBg,\n border: useGroupBorderWidth > 0 ? \"\".concat(useGroupBorderWidth, \"px solid \").concat(groupBorderColor) : undefined,\n padding: scaleMobile(mobile, pageRequestUuid4, groupPadding).map(p => \"\".concat(p, \"px\")).join(\" \"),\n borderRadius: +groupBorderRadius,\n textAlign: \"left\"\n }\n };\n}\n\nexport { bannerGroupsInlineStyleGroup };","import { scaleMobile, useBanner, bannerGroupsInlineStyle, BannerGroup } from \"../../..\";\nimport { Fragment } from \"react\";\n\nconst BannerGroupList = () => {\n const banner = useBanner();\n const {\n groups,\n group: {\n groupSpacing\n },\n mobile,\n pageRequestUuid4\n } = banner;\n const useGroups = groups.filter(({\n items\n }) => items.length);\n return h(\"div\", bannerGroupsInlineStyle(banner), useGroups.map((group, index) => h(Fragment, {\n key: group.id\n }, h(BannerGroup, {\n key: group.id,\n group: group\n }), index !== useGroups.length - 1 && h(\"div\", {\n style: {\n height: scaleMobile(mobile, pageRequestUuid4, +groupSpacing)\n }\n }))));\n};\n\nexport { BannerGroupList };","function bannerGroupsInlineStyle({\n customCss: {\n antiAdBlocker\n }\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-groups\",\n style: {\n marginTop: 10,\n clear: \"both\"\n }\n };\n}\n\nexport { bannerGroupsInlineStyle };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { Fragment, useCallback } from \"react\";\nimport { useBanner } from \"../../../contexts\";\nimport { bannerInlineStyleBodyDottedGroupItem, bannerInlineStyleBodyDottedGroupBullet } from \"../../../inlineStyles\";\nimport { CommonCheckbox } from \"../..\";\n\nconst BannerDottedGroup = ({\n group: {\n id,\n slug,\n name\n }\n}) => {\n const banner = useBanner();\n const {\n decision: {\n groupsFirstView\n },\n design: {\n fontSize\n },\n consent,\n essentialGroup\n } = banner;\n const isPro = process.env.PLUGIN_CTX === \"pro\";\n const isEssentialGroup = essentialGroup === slug;\n const isChecked = isEssentialGroup || !!consent.groups[id];\n const handleCheckbox = useCallback(() => isPro && groupsFirstView && !isEssentialGroup && banner.updateGroupChecked(id, !isChecked), [isPro, isEssentialGroup, banner, id, isChecked, groupsFirstView]);\n return h(\"span\", _extends({\n key: name\n }, bannerInlineStyleBodyDottedGroupItem(banner)), h(\"span\", null, isPro && groupsFirstView ? h(CommonCheckbox, {\n onClick: handleCheckbox,\n isChecked: isChecked,\n isDisabled: isEssentialGroup,\n fontSize: fontSize\n }) : h(Fragment, null, h(\"strong\", bannerInlineStyleBodyDottedGroupBullet(banner), \"\\u25CF\"), \"\\xA0\"), h(\"span\", {\n style: {\n verticalAlign: \"middle\",\n cursor: groupsFirstView ? \"pointer\" : undefined\n },\n onClick: handleCheckbox\n }, name)));\n};\n\nexport { BannerDottedGroup };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerInlineStyleBodyDottedGroupItem({\n design: {\n fontSize\n },\n bodyDesign: {\n dottedGroupsInheritFontSize,\n dottedGroupsFontSize\n },\n mobile,\n pageRequestUuid4\n}) {\n return {\n className: undefined,\n style: {\n paddingRight: 10,\n fontSize: scaleMobile(mobile, pageRequestUuid4, dottedGroupsInheritFontSize ? +fontSize : +dottedGroupsFontSize),\n whiteSpace: \"nowrap\",\n display: \"inline-block\"\n }\n };\n}\n\nexport { bannerInlineStyleBodyDottedGroupItem };","function bannerInlineStyleBodyDottedGroupBullet({\n bodyDesign: {\n dottedGroupsBulletColor\n }\n}) {\n return {\n className: undefined,\n style: {\n color: dottedGroupsBulletColor\n }\n };\n}\n\nexport { bannerInlineStyleBodyDottedGroupBullet };","import { BannerDottedGroup } from \".\";\nimport { useBanner, bannerInlineStyleBodyDottedGroups } from \"../../..\";\n\nconst BannerDottedGroupList = () => {\n const banner = useBanner();\n const {\n groups,\n decision: {\n showGroups\n }\n } = banner;\n return showGroups ? h(\"div\", bannerInlineStyleBodyDottedGroups(banner), groups.filter(({\n items\n }) => !!items.length).map(group => h(BannerDottedGroup, {\n key: group.id,\n group: group\n }))) : null;\n};\n\nexport { BannerDottedGroupList };","function bannerInlineStyleBodyDottedGroups({\n customCss: {\n antiAdBlocker\n }\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-dotted-groups\",\n style: {\n marginTop: 10,\n lineBreak: \"anywhere\",\n lineHeight: 2\n }\n };\n}\n\nexport { bannerInlineStyleBodyDottedGroups };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBanner, bannerInlineStyleHistorySelect, bannerInlineStyleHistorySelectOption } from \"../../..\";\nimport { useMemo } from \"react\";\nimport { Fragment, useState, useEffect } from \"react\";\nconst SELECT_NONE = -1;\n\nconst BannerHistorySelect = () => {\n const banner = useBanner();\n const [selectedId, setSelectedId] = useState(SELECT_NONE);\n const {\n activeAction,\n history,\n selectHistoryEntry,\n i18n: {\n historyLabel,\n historySelectNone\n }\n } = banner;\n const selectedHistoryItem = useMemo(() => {\n var _history$filter;\n\n return history === null || history === void 0 ? void 0 : (_history$filter = history.filter(({\n id\n }) => id === selectedId)) === null || _history$filter === void 0 ? void 0 : _history$filter[0];\n }, [selectedId]); // Reset select after exit history dialog\n\n useEffect(() => {\n if (!activeAction) {\n setSelectedId(SELECT_NONE);\n } else if (activeAction === \"history\" && history !== null && history !== void 0 && history.length) {\n setSelectedId(history[0].id);\n }\n }, [activeAction, history]); // History can only contain my data, so we can pick the first entry for the history\n\n const uuid = selectedHistoryItem === null || selectedHistoryItem === void 0 ? void 0 : selectedHistoryItem.uuid;\n const optionStyle = bannerInlineStyleHistorySelectOption(banner);\n return h(Fragment, null, historyLabel, \"\\xA0\", h(\"select\", _extends({}, bannerInlineStyleHistorySelect(banner), {\n disabled: !(history !== null && history !== void 0 && history.length),\n value: selectedId,\n onChange: e => {\n const value = +e.target.value;\n history.forEach(({\n id,\n decision,\n groups,\n tcf\n }) => {\n if (id === value) {\n setSelectedId(id);\n selectHistoryEntry(groups, decision, tcf);\n }\n });\n }\n }), (history === null || history === void 0 ? void 0 : history.length) > 0 ? history.map(({\n id,\n isDoNotTrack,\n isUnblock,\n isForwarded,\n created\n }) => h(\"option\", _extends({\n key: id,\n value: id\n }, optionStyle), new Date(created).toLocaleString(document.documentElement.lang), isDoNotTrack ? \" (Do Not Track)\" : \"\", isUnblock ? \" (Content Blocker)\" : \"\", isForwarded ? \" (Consent Forwarding)\" : \"\")) : h(\"option\", _extends({\n value: SELECT_NONE\n }, optionStyle), historySelectNone)), !!uuid && h(\"div\", {\n style: {\n opacity: 0.5,\n marginTop: 5\n }\n }, \"UUID: \", uuid));\n};\n\nexport { BannerHistorySelect };","function bannerInlineStyleHistorySelectOption({\n design: {\n bg\n }\n}) {\n return {\n className: undefined,\n style: {\n background: bg\n }\n };\n}\n\nexport { bannerInlineStyleHistorySelectOption };","import { calculateRgba } from \"../../../utils\";\nimport { scaleMobile } from \"../../scale\";\n\nfunction bannerInlineStyleHistorySelect({\n design: {\n fontSize,\n fontColor\n },\n bodyDesign: {\n descriptionInheritFontSize,\n descriptionFontSize\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-history-select\",\n style: {\n fontSize: scaleMobile(mobile, pageRequestUuid4, descriptionInheritFontSize ? +fontSize : +descriptionFontSize),\n background: \"transparent\",\n border: 0,\n color: fontColor,\n borderBottom: \"1px solid \".concat(calculateRgba(fontColor, 50))\n }\n };\n}\n\nexport { bannerInlineStyleHistorySelect };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerButtonsInlineStyleCommon({\n name,\n order,\n type,\n borderRadius,\n bg,\n hoverBg,\n fontSize,\n textAlign,\n fontColor,\n fontWeight,\n hoverFontColor,\n borderWidth,\n borderColor,\n hoverBorderColor,\n padding,\n antiAdBlocker,\n pageRequestUuid4\n}, mobile, isHover, framed, isTwoButtonRowLayout) {\n const fullWidth = !isTwoButtonRowLayout || order > 1;\n const marginLeft = isTwoButtonRowLayout && order === 1 ? 5 : 0;\n const marginRight = isTwoButtonRowLayout && order === 0 ? 5 : 0;\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, +borderWidth);\n const style = {\n textDecoration: type === \"link\" ? \"underline\" : \"none\",\n borderRadius: +borderRadius,\n cursor: type === \"button\" ? \"pointer\" : undefined,\n backgroundColor: type === \"button\" ? isHover ? hoverBg : bg : undefined,\n fontSize: scaleMobile(mobile, pageRequestUuid4, +fontSize),\n fontWeight,\n color: isHover ? hoverFontColor : fontColor,\n transition: \"background-color 250ms, color 250ms, border-color 250ms\",\n margin: \"0 \".concat(marginRight, \"px \").concat(scaleMobile(mobile, pageRequestUuid4, 10, undefined, true), \"px \").concat(marginLeft, \"px\"),\n border: type === \"button\" && useBorderWidth > 0 ? \"\".concat(useBorderWidth, \"px solid \").concat(isHover ? hoverBorderColor : borderColor) : undefined,\n padding: scaleMobile(mobile, pageRequestUuid4, padding, undefined, type !== \"button\").map(p => \"\".concat(p, \"px\")).join(\" \"),\n overflow: \"hidden\",\n outline: framed ? \"rgb(255, 94, 94) solid 5px\" : undefined,\n flex: fullWidth ? \"1 1 100%\" : \"0 0 calc(50% - \".concat(marginLeft + marginRight, \"px)\"),\n display: \"flex\",\n alignItems: \"center\",\n // text-align is not supported within a `display: flex`\n justifyContent: textAlign === \"right\" ? \"flex-end\" : textAlign === \"center\" ? \"center\" : \"left\",\n textAlign,\n order\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-btn-\".concat(name),\n style\n };\n}\n\nexport { bannerButtonsInlineStyleCommon };","import { bannerButtonsInlineStyleCommon } from \".\";\n\nfunction bannerButtonsInlineStyleAcceptEssentials({\n isTcf,\n decision: {\n acceptEssentials\n },\n layout: {\n borderRadius\n },\n bodyDesign: {\n acceptEssentialsFontSize,\n acceptEssentialsBg,\n acceptEssentialsTextAlign,\n acceptEssentialsBorderColor,\n acceptEssentialsPadding,\n acceptEssentialsBorderWidth,\n acceptEssentialsFontColor,\n acceptEssentialsFontWeight,\n acceptEssentialsHoverBg,\n acceptEssentialsHoverFontColor,\n acceptEssentialsHoverBorderColor,\n // For two-button row layout use all dimensional properties from \"Accept all\"\n // For TCF use font size and font weight from \"Accept all\"\n acceptAllFontWeight,\n acceptAllFontSize,\n acceptAllPadding\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}, isHover, framed, order, isTwoButtonRowLayout) {\n return bannerButtonsInlineStyleCommon({\n name: \"accept-essentials\",\n order,\n type: acceptEssentials,\n borderRadius,\n bg: acceptEssentialsBg,\n hoverBg: acceptEssentialsHoverBg,\n fontSize: isTwoButtonRowLayout || isTcf ? acceptAllFontSize : acceptEssentialsFontSize,\n textAlign: acceptEssentialsTextAlign,\n fontColor: acceptEssentialsFontColor,\n fontWeight: isTcf ? acceptAllFontWeight : acceptEssentialsFontWeight,\n hoverFontColor: acceptEssentialsHoverFontColor,\n borderWidth: acceptEssentialsBorderWidth,\n borderColor: acceptEssentialsBorderColor,\n hoverBorderColor: acceptEssentialsHoverBorderColor,\n padding: isTwoButtonRowLayout ? acceptAllPadding : acceptEssentialsPadding,\n antiAdBlocker,\n pageRequestUuid4\n }, mobile, isHover, framed, isTwoButtonRowLayout);\n}\n\nexport { bannerButtonsInlineStyleAcceptEssentials };","import { bannerButtonsInlineStyleCommon } from \".\";\n\nfunction bannerButtonsInlineStyleAcceptIndividual({\n decision: {\n acceptIndividual\n },\n layout: {\n borderRadius\n },\n bodyDesign: {\n acceptIndividualFontSize,\n acceptIndividualBg,\n acceptIndividualTextAlign,\n acceptIndividualBorderColor,\n acceptIndividualPadding,\n acceptIndividualBorderWidth,\n acceptIndividualFontColor,\n acceptIndividualFontWeight,\n acceptIndividualHoverBg,\n acceptIndividualHoverFontColor,\n acceptIndividualHoverBorderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}, isHover, framed, order, isTwoButtonRowLayout) {\n return bannerButtonsInlineStyleCommon({\n name: \"accept-individual\",\n order,\n type: acceptIndividual,\n borderRadius,\n bg: acceptIndividualBg,\n hoverBg: acceptIndividualHoverBg,\n fontSize: acceptIndividualFontSize,\n textAlign: acceptIndividualTextAlign,\n fontColor: acceptIndividualFontColor,\n fontWeight: acceptIndividualFontWeight,\n hoverFontColor: acceptIndividualHoverFontColor,\n borderWidth: acceptIndividualBorderWidth,\n borderColor: acceptIndividualBorderColor,\n hoverBorderColor: acceptIndividualHoverBorderColor,\n padding: acceptIndividualPadding,\n antiAdBlocker,\n pageRequestUuid4\n }, mobile, isHover, framed, isTwoButtonRowLayout);\n}\n\nexport { bannerButtonsInlineStyleAcceptIndividual };","import { bannerButtonsInlineStyleCommon } from \"./\";\n\nfunction bannerButtonsInlineStyleSave({\n isTcf,\n layout: {\n borderRadius\n },\n bodyDesign: {\n // For TCF use font size and font weight from \"Accept all\"\n acceptAllFontWeight,\n acceptAllFontSize\n },\n saveButton: {\n type,\n fontSize,\n bg,\n textAlign,\n borderColor,\n padding,\n borderWidth,\n fontColor,\n fontWeight,\n hoverBg,\n hoverFontColor,\n hoverBorderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}, isHover, framed, order, isTwoButtonRowLayout) {\n return bannerButtonsInlineStyleCommon({\n name: \"accept-individual-save\",\n order,\n type,\n borderRadius,\n bg,\n hoverBg,\n fontSize: isTcf ? acceptAllFontSize : fontSize,\n textAlign,\n fontColor,\n fontWeight: isTcf ? acceptAllFontWeight : fontWeight,\n hoverFontColor,\n borderWidth: borderWidth,\n borderColor,\n hoverBorderColor,\n padding,\n antiAdBlocker,\n pageRequestUuid4\n }, mobile, isHover, framed, isTwoButtonRowLayout);\n}\n\nexport { bannerButtonsInlineStyleSave };","import { bannerButtonsInlineStyleCommon } from \".\";\n\nfunction bannerButtonsInlineStyleAcceptAll({\n decision: {\n acceptAll\n },\n layout: {\n borderRadius\n },\n bodyDesign: {\n acceptAllFontSize,\n acceptAllBg,\n acceptAllTextAlign,\n acceptAllBorderColor,\n acceptAllPadding,\n acceptAllBorderWidth,\n acceptAllFontColor,\n acceptAllFontWeight,\n acceptAllHoverBg,\n acceptAllHoverFontColor,\n acceptAllHoverBorderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}, isHover, framed, order, isTwoButtonRowLayout) {\n return bannerButtonsInlineStyleCommon({\n name: \"accept-all\",\n order,\n type: acceptAll,\n borderRadius,\n bg: acceptAllBg,\n hoverBg: acceptAllHoverBg,\n fontSize: acceptAllFontSize,\n textAlign: acceptAllTextAlign,\n fontColor: acceptAllFontColor,\n fontWeight: acceptAllFontWeight,\n hoverFontColor: acceptAllHoverFontColor,\n borderWidth: acceptAllBorderWidth,\n borderColor: acceptAllBorderColor,\n hoverBorderColor: acceptAllHoverBorderColor,\n padding: acceptAllPadding,\n antiAdBlocker,\n pageRequestUuid4\n }, mobile, isHover, framed, isTwoButtonRowLayout);\n}\n\nexport { bannerButtonsInlineStyleAcceptAll };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useCallback } from \"react\";\nimport { useState, useMemo } from \"react\";\nimport { isIE, AsciiSpinner, useBanner, bannerButtonsInlineStyleAcceptAll, bannerButtonsInlineStyleAcceptEssentials, bannerButtonsInlineStyleAcceptIndividual, bannerButtonsInlineStyleSave } from \"../../../..\";\n\nconst BannerButton = ({\n inlineStyle,\n type,\n onClick,\n children,\n framed,\n busyOnClick,\n order\n}) => {\n if (type === \"hide\") {\n return null;\n }\n\n const [isBusy, setIsBusy] = useState(false);\n const handleOnClick = useCallback(() => {\n if (!isBusy) {\n busyOnClick && setIsBusy(true);\n onClick === null || onClick === void 0 ? void 0 : onClick();\n }\n }, [onClick, isBusy, busyOnClick]);\n const [isHover, setIsHover] = useState(false);\n const banner = useBanner();\n const {\n individualPrivacyOpen,\n decision: {\n acceptAll,\n acceptEssentials\n },\n bodyDesign: {\n acceptAllOneRowLayout,\n acceptEssentialsUseAcceptAll\n }\n } = banner;\n const useAcceptEssentials = acceptEssentialsUseAcceptAll && acceptAll === acceptEssentials ? acceptAll : acceptEssentials;\n const interactionAttr = {\n onClick: handleOnClick,\n onMouseEnter: () => setIsHover(true),\n onMouseLeave: () => setIsHover(false),\n style: {\n cursor: \"pointer\"\n }\n };\n const useStyleFn = useMemo(() => {\n switch (inlineStyle) {\n case \"acceptEssentials\":\n return bannerButtonsInlineStyleAcceptEssentials;\n\n case \"acceptIndividual\":\n return bannerButtonsInlineStyleAcceptIndividual;\n\n case \"save\":\n return bannerButtonsInlineStyleSave;\n\n default:\n return bannerButtonsInlineStyleAcceptAll;\n }\n }, [inlineStyle]); // Also create a spacing `height:10` container because `marginBottom` causes issues with `position:sticky`\n\n return h(\"div\", _extends({}, type === \"button\" ? interactionAttr : {}, useStyleFn(banner, isHover, framed, order, // IE does not support flex with calc()\n isIE() || acceptAll === \"hide\" || useAcceptEssentials === \"hide\" || individualPrivacyOpen || order > 1 ? false : acceptAllOneRowLayout)), h(\"span\", type === \"link\" ? interactionAttr : {}, isBusy ? h(AsciiSpinner, null) : children));\n};\n\nexport { BannerButton };","function isIE() {\n return /MSIE (\\d+\\.\\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf(\"Trident/\") > -1;\n}\n\nexport { isIE };","import { Fragment, useMemo } from \"react\";\nimport { useBanner, useBannerButtonCallbacks, BannerButton } from \"../../..\";\n\nconst BannerButtonList = () => {\n const banner = useBanner();\n const {\n activeAction,\n bodyDesign: {\n acceptEssentialsUseAcceptAll,\n acceptAllOneRowLayout\n },\n decision: {\n showGroups,\n groupsFirstView,\n saveButton,\n acceptAll,\n acceptEssentials,\n acceptIndividual,\n buttonOrder: buttonOrderString\n },\n texts: {\n acceptAll: acceptAllText,\n acceptEssentials: acceptEssentialsText,\n acceptIndividual: acceptIndividualText\n },\n saveButton: {\n type: saveButtonType,\n useAcceptAll: saveButtonUseAcceptAll\n },\n individualTexts: {\n save\n },\n individualPrivacyOpen,\n didGroupFirstChange,\n productionNotice,\n buttonClicked = \"\"\n } = banner;\n const useAcceptEssentialsUseAcceptAll = acceptEssentialsUseAcceptAll && acceptAll === acceptEssentials;\n const useSaveButtonUseAcceptAll = saveButtonUseAcceptAll && acceptAll === saveButtonType; // Calculate order of the buttons depending on a string like `all,essential,save,individual`\n\n const {\n all: buttonOrderAll,\n essential: buttonOrderEssential,\n individual: buttonOrderIndividual,\n save: buttonOrderSave\n } = useMemo(() => {\n const buttonOrder = buttonOrderString.split(\",\");\n const buttonToOrder = buttonOrder.reduce((previous, curr) => {\n previous[curr] = buttonOrder.indexOf(curr);\n return previous;\n }, {});\n const orderToButton = buttonOrder.reduce((previous, curr) => {\n previous[buttonOrder.indexOf(curr)] = curr;\n return previous;\n }, {}); // If one-row layout is enabled, reverse the first two orders so the first button gets moved to the right\n\n if (acceptAllOneRowLayout) {\n buttonToOrder[orderToButton[0]] = 1;\n buttonToOrder[orderToButton[1]] = 0;\n }\n\n return buttonToOrder;\n }, [buttonOrderString, acceptAllOneRowLayout]);\n const isPro = process.env.PLUGIN_CTX === \"pro\";\n const {\n buttonClickedAll,\n buttonClickedEssentials,\n buttonClickedCustom,\n acceptAll: handleAll,\n acceptEssentials: handleEssentials,\n acceptIndividual: handleIndividual,\n openIndividualPrivacy\n } = useBannerButtonCallbacks(); // We expect a reload of the page for the \"change\" action (keeps also dialog open)\n\n const busyOnClick = activeAction === \"change\";\n const groupsFirstViewEnabled = showGroups && groupsFirstView;\n return h(Fragment, null, !individualPrivacyOpen && isPro && groupsFirstViewEnabled && saveButton === \"afterChangeAll\" && didGroupFirstChange ? h(BannerButton, {\n onClick: handleIndividual,\n type: acceptAll,\n inlineStyle: \"acceptAll\",\n framed: buttonClicked === buttonClickedCustom,\n busyOnClick: busyOnClick,\n order: buttonOrderAll\n }, save) : h(BannerButton, {\n onClick: handleAll,\n type: acceptAll,\n inlineStyle: \"acceptAll\",\n framed: buttonClicked === buttonClickedAll,\n busyOnClick: busyOnClick,\n order: buttonOrderAll\n }, acceptAllText), activeAction !== \"change\" && h(BannerButton, {\n onClick: handleEssentials,\n type: useAcceptEssentialsUseAcceptAll ? acceptAll : acceptEssentials,\n inlineStyle: useAcceptEssentialsUseAcceptAll ? \"acceptAll\" : \"acceptEssentials\",\n framed: buttonClicked === buttonClickedEssentials,\n busyOnClick: busyOnClick,\n order: buttonOrderEssential\n }, acceptEssentialsText), (individualPrivacyOpen || isPro && groupsFirstViewEnabled && (saveButton === \"always\" || saveButton === \"afterChange\" && didGroupFirstChange)) && h(BannerButton, {\n onClick: handleIndividual,\n type: useSaveButtonUseAcceptAll ? acceptAll : saveButtonType,\n inlineStyle: useSaveButtonUseAcceptAll ? \"acceptAll\" : \"save\",\n framed: buttonClicked === buttonClickedCustom,\n busyOnClick: busyOnClick,\n order: buttonOrderSave\n }, save), !individualPrivacyOpen && h(BannerButton, {\n type: acceptIndividual,\n onClick: openIndividualPrivacy,\n inlineStyle: \"acceptIndividual\",\n framed: buttonClicked.startsWith(\"ind_\"),\n busyOnClick: busyOnClick,\n order: buttonOrderIndividual\n }, acceptIndividualText), productionNotice);\n};\n\nexport { BannerButtonList };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBanner, BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER, usePlainCss, scaleMobile, bannerInlineStylesRightSide, bannerInlineStylesLeftSide, bannerInlineStyleBody, bannerInlineStyleBodyContainer, bannerInlineStyleBodyDescription, commonInlineStyleBodyTeaching, commonInlineStyleBodyTeachingsSeparator, BannerDottedGroupList, BannerTcfStackList, BannerGroupList, BannerTcfGroupList, BannerButtonList, BannerHistorySelect, useCommonTeachings } from \"../../..\";\nimport { useMemo, Fragment } from \"react\";\n\nconst BannerBody = ({\n leftSideContainerRef,\n rightSideContainerRef\n}) => {\n var _document$getElementB;\n\n const banner = useBanner();\n const {\n layout: {\n type\n },\n mobile,\n bodyDesign: {\n teachingsSeparatorActive\n },\n tcf,\n individualPrivacyOpen,\n activeAction,\n pageRequestUuid4\n } = banner;\n const {\n description,\n teachings\n } = useCommonTeachings(); // Make the content responsive\n\n const leftSideId = \"bnnr-body-leftSide-\".concat(pageRequestUuid4);\n const rightSideId = \"bnnr-body-rightSide-\".concat(pageRequestUuid4);\n const contentId = \"cntnt-\".concat(pageRequestUuid4);\n usePlainCss(\" #\".concat(leftSideId, \" img {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n\").concat(((_document$getElementB = document.getElementById(pageRequestUuid4)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.clientWidth) > BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER ? \"\" : \"#\".concat(leftSideId, \" {\\n float: initial !important;\\n width: auto !important;\\n padding-right: initial !important;\\n \").concat(scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"banner\" && !individualPrivacyOpen ? \"padding-bottom: 10px !important;\" : individualPrivacyOpen ? \"padding-top: 10px !important;\" : \"\", \"\\n }\\n\\n #\").concat(contentId, \" {\\n min-height: calc(var(--rendered-height-header) + var(--rendered-height-footer) + var(--rendered-height-rightSideContainer) + 60px);\\n }\\n \\n #\").concat(rightSideId, \" {\\n float: initial !important;\\n width: auto !important;\\n max-width: initial !important;\\n margin: initial !important;\\n \").concat(individualPrivacyOpen ? \"padding-bottom: 5px !important;\" : \"padding-top: 10px !important;\", \"\\n position: sticky;\\n }\"))); // Calculate the body content depending on TCF availability and if second view got opened\n\n const stackOrGroups = useMemo(() => {\n if (process.env.IS_TCF === \"1\" && tcf) {\n return individualPrivacyOpen ? h(BannerTcfGroupList, null) : h(BannerTcfStackList, null);\n } else {\n return individualPrivacyOpen ? h(BannerGroupList, null) : h(BannerDottedGroupList, null);\n }\n }, [individualPrivacyOpen, tcf]);\n const leftSide = h(\"div\", _extends({\n ref: leftSideContainerRef,\n key: \"leftSide\",\n id: leftSideId\n }, bannerInlineStylesLeftSide(banner)), h(\"div\", bannerInlineStyleBodyDescription(banner), activeAction === \"history\" ? h(BannerHistorySelect, null) : h(Fragment, null, h(\"span\", {\n dangerouslySetInnerHTML: {\n __html: description\n }\n }), teachings.length > 0 && h(Fragment, null, teachingsSeparatorActive && h(\"div\", null, h(\"span\", commonInlineStyleBodyTeachingsSeparator(banner))), teachings.map(teaching => h(\"span\", _extends({\n key: teaching\n }, commonInlineStyleBodyTeaching(banner), {\n dangerouslySetInnerHTML: {\n __html: teaching\n }\n })))))), stackOrGroups);\n const rightSide = activeAction === \"history\" ? h(\"div\", {\n ref: rightSideContainerRef\n }) : h(\"div\", _extends({\n ref: rightSideContainerRef,\n key: \"rightSide\",\n id: rightSideId\n }, bannerInlineStylesRightSide(banner)), h(BannerButtonList, null));\n return h(\"div\", bannerInlineStyleBodyContainer(banner), h(\"div\", bannerInlineStyleBody(banner), individualPrivacyOpen ? [rightSide, leftSide] : [leftSide, rightSide], h(\"div\", {\n style: {\n clear: \"both\"\n }\n })));\n};\n\nexport { BannerBody };","import { scaleMobile } from \"../../scale\";\nconst BUTTONS_WIDTH = 300;\n\nfunction bannerInlineStylesLeftSide({\n layout: {\n type\n },\n bodyDesign: {\n padding\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n individualPrivacyOpen,\n activeAction,\n pageRequestUuid4\n}) {\n const useType = scaleMobile(mobile, pageRequestUuid4, type, \"banner\");\n const usePadding = scaleMobile(mobile, pageRequestUuid4, padding);\n const style = {\n float: useType === \"banner\" && activeAction !== \"history\" ? \"left\" : undefined,\n width: useType === \"banner\" && activeAction !== \"history\" ? \"calc(100% - \".concat(BUTTONS_WIDTH, \"px)\") : undefined,\n paddingRight: useType === \"banner\" ? 20 : undefined,\n paddingTop: +usePadding[0],\n paddingBottom: useType === \"banner\" || individualPrivacyOpen ? +usePadding[2] : 0\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-tb-left\",\n style\n };\n}\n\nexport { BUTTONS_WIDTH, bannerInlineStylesLeftSide };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerInlineStyleBodyDescription({\n design: {\n fontSize\n },\n bodyDesign: {\n descriptionInheritFontSize,\n descriptionFontSize\n },\n individualLayout: {\n descriptionTextAlign\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n individualPrivacyOpen,\n pageRequestUuid4\n}) {\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-description\",\n style: {\n lineHeight: 1.5,\n fontSize: scaleMobile(mobile, pageRequestUuid4, descriptionInheritFontSize ? +fontSize : +descriptionFontSize),\n textAlign: individualPrivacyOpen ? descriptionTextAlign : undefined\n }\n };\n}\n\nexport { bannerInlineStyleBodyDescription };","import { hexToRgb } from \"../../../utils\";\nimport { scaleMobile } from \"../../scale\";\nimport { BUTTONS_WIDTH } from \"./leftSide\";\n\nfunction bannerInlineStylesRightSide({\n layout: {\n type,\n dialogMaxWidth\n },\n design: {\n borderWidth,\n bg,\n fontColor\n },\n headerDesign,\n footerDesign,\n bodyDesign: {\n padding\n },\n individualLayout: {\n inheritDialogMaxWidth\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n individualPrivacyOpen,\n pageRequestUuid4\n}) {\n const useType = scaleMobile(mobile, pageRequestUuid4, type, \"banner\");\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, borderWidth);\n const usePadding = scaleMobile(mobile, pageRequestUuid4, padding, undefined, true);\n const {\n r,\n g,\n b\n } = hexToRgb(fontColor);\n const width = useType === \"dialog\" ? +dialogMaxWidth - usePadding[1] - usePadding[3] - useBorderWidth * 2 : BUTTONS_WIDTH;\n const style = {\n background: bg,\n paddingTop: useType === \"banner\" || individualPrivacyOpen ? +usePadding[0] : 10,\n paddingBottom: !individualPrivacyOpen ? +usePadding[2] : 10,\n float: useType === \"banner\" || individualPrivacyOpen ? \"right\" : undefined,\n maxWidth: width,\n width,\n margin: useType === \"dialog\" && individualPrivacyOpen && !inheritDialogMaxWidth ? \"0 0 10px 10px\" : undefined,\n // position: individualPrivacyOpen ? \"sticky\" : undefined, This is done by `body.tsx#usePlainCss`\n position: individualPrivacyOpen ? undefined : \"sticky\",\n [individualPrivacyOpen ? \"top\" : \"bottom\"]: individualPrivacyOpen ? \"calc(var(--rendered-height-header) + \".concat(scaleMobile(mobile, pageRequestUuid4, headerDesign.borderWidth), \"px)\") : \"calc(var(--rendered-height-footer) + \".concat(scaleMobile(mobile, pageRequestUuid4, footerDesign.borderWidth), \"px)\"),\n zIndex: 1,\n // Avoid overlapping the Checkbox Icon\n display: \"flex\",\n flexWrap: \"wrap\",\n transition: \"box-shadow ease-in-out .1s\",\n [\"--boxShadowShowScroll\"]: \"0 -15px 15px -15px rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", 0.3)\")\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-tb-right\",\n style\n };\n}\n\nexport { bannerInlineStylesRightSide };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerInlineStyleBodyContainer({\n layout: {\n type\n },\n design: {\n bg,\n borderWidth,\n borderColor\n },\n bodyDesign: {\n padding\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, borderWidth);\n const style = {\n background: bg,\n // Top / Bottom padding is applied in leftSide and rightSide containers\n padding: scaleMobile(mobile, pageRequestUuid4, padding).map((p, i) => \"\".concat([0, 2].indexOf(i) > -1 ? 0 : p, \"px\")).join(\" \"),\n lineHeight: 1.4\n };\n\n if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\" && useBorderWidth > 0) {\n style.borderLeft = \"\".concat(useBorderWidth, \"px solid \").concat(borderColor);\n style.borderRight = style.borderLeft;\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-body-container\",\n style\n };\n}\n\nexport { bannerInlineStyleBodyContainer };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerInlineStyleBody({\n layout: {\n type,\n bannerMaxWidth\n },\n individualLayout,\n customCss: {\n antiAdBlocker\n },\n mobile,\n individualPrivacyOpen,\n pageRequestUuid4\n}) {\n const style = {\n transition: \"width 500ms, max-width 500ms\",\n maxWidth: scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"banner\" ? +(individualPrivacyOpen && !individualLayout.inheritBannerMaxWidth ? individualLayout.bannerMaxWidth : bannerMaxWidth) : undefined,\n margin: \"auto\"\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-body\",\n style\n };\n}\n\nexport { bannerInlineStyleBody };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { forwardRef, useCallback } from \"react\";\nimport { useBanner, bannerFooterInlineStyle, bannerFooterInlineStyleContainer, FooterLink, useCommonFooterLinks } from \"../../..\"; // eslint-disable-next-line react/display-name\n\nconst BannerFooter = /*#__PURE__*/forwardRef((_, ref) => {\n const banner = useBanner();\n const {\n isTcf,\n layout: {\n type\n },\n individualPrivacyOpen,\n updateIndividualPrivacyOpen,\n onClose,\n i18n: {\n tcf\n },\n isConsentRecord\n } = banner;\n const handleTcfVendorList = process.env.IS_TCF === \"1\" && isTcf ? useCallback(e => {\n updateIndividualPrivacyOpen(true);\n e.preventDefault();\n }, [updateIndividualPrivacyOpen]) : undefined;\n const handleClose = useCallback(e => {\n onClose();\n e.preventDefault();\n }, [onClose]);\n const {\n rows: links,\n render: renderLinks\n } = useCommonFooterLinks({\n onClose: isConsentRecord ? handleClose : undefined,\n putPoweredByLinkInRow: type === \"banner\" ? 0 : 1,\n row1: [process.env.IS_TCF === \"1\" && isTcf && !individualPrivacyOpen && h(FooterLink, {\n href: \"#\",\n onClick: handleTcfVendorList,\n key: \"vendorList\"\n }, tcf.vendorList)]\n });\n return h(\"div\", _extends({\n ref: ref\n }, bannerFooterInlineStyleContainer(banner)), h(\"div\", bannerFooterInlineStyle(banner), renderLinks(links)));\n});\nexport { BannerFooter };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerFooterInlineStyleContainer({\n layout: {\n type,\n dialogBorderRadius\n },\n design,\n footerDesign: {\n inheritBg,\n bg,\n inheritTextAlign,\n textAlign,\n padding,\n fontSize,\n fontColor,\n fontWeight\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const useType = scaleMobile(mobile, pageRequestUuid4, type, \"banner\");\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, design.borderWidth);\n const style = {\n padding: scaleMobile(mobile, pageRequestUuid4, padding, undefined, true).map(p => \"\".concat(p, \"px\")).join(\" \"),\n background: inheritBg ? design.bg : bg,\n borderRadius: useType === \"dialog\" ? \"0 0 \".concat(dialogBorderRadius, \"px \").concat(dialogBorderRadius, \"px\") : undefined,\n fontSize: scaleMobile(mobile, pageRequestUuid4, +fontSize),\n fontWeight,\n color: fontColor,\n textAlign: inheritTextAlign ? design.textAlign : textAlign,\n position: \"sticky\",\n bottom: 0,\n zIndex: 1\n };\n\n if (useType === \"dialog\" && useBorderWidth > 0) {\n style.borderBottom = \"\".concat(useBorderWidth, \"px solid \").concat(design.borderColor);\n style.borderLeft = style.borderBottom;\n style.borderRight = style.borderBottom;\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-footer-container\",\n style\n };\n}\n\nexport { bannerFooterInlineStyleContainer };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerFooterInlineStyle({\n layout: {\n type,\n bannerMaxWidth\n },\n individualLayout,\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4,\n individualPrivacyOpen\n}) {\n const style = {\n transition: \"width 500ms, max-width 500ms\",\n maxWidth: scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"banner\" ? +(individualPrivacyOpen && !individualLayout.inheritBannerMaxWidth ? individualLayout.bannerMaxWidth : bannerMaxWidth) : undefined,\n margin: \"auto\",\n lineHeight: 1.8\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-footer\",\n style\n };\n}\n\nexport { bannerFooterInlineStyle };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { scaleMobile, useBanner, usePlainCss, useRenderedHeightsAsCssVars, bannerContentInlineStyle, bannerFooterInlineStyleSeparator, bannerHeaderInlineStyleSeparator, BannerHeader, BannerFooter, BannerBody } from \"../../..\";\nimport { Fragment, useState, useRef, useLayoutEffect, useCallback } from \"react\";\n\nconst BannerContent = () => {\n const banner = useBanner();\n const {\n layout: {\n type,\n dialogBorderRadius\n },\n decision: {\n acceptAll,\n acceptEssentials,\n showCloseIcon\n },\n mobile,\n individualPrivacyOpen,\n design: {\n bg\n },\n bodyDesign: {\n teachingsFontColor,\n acceptEssentialsUseAcceptAll\n },\n activeAction,\n pageRequestUuid4\n } = banner;\n const rightSideId = \"bnnr-body-rightSide-\".concat(pageRequestUuid4);\n const id = \"cntnt-\".concat(pageRequestUuid4);\n const ref = useRef();\n const {\n current: currentRef\n } = ref;\n const useAcceptEssentials = acceptEssentialsUseAcceptAll && acceptAll === acceptEssentials ? acceptAll : acceptEssentials;\n let showHeader = true;\n\n if (mobile.hideHeader && !activeAction && !individualPrivacyOpen && (useAcceptEssentials === \"hide\" ? !showCloseIcon : true)) {\n showHeader = scaleMobile(mobile, pageRequestUuid4, showHeader, false);\n } // Enable box shadow effect for the scrolling behavior\n\n\n const [showScrollBoxShadow, setShowScrollBoxShadow] = useState(false);\n const updateShowScrollBoxShadow = useCallback(() => {\n if (currentRef) {\n const {\n clientHeight,\n scrollHeight,\n scrollTop,\n offsetHeight\n } = currentRef;\n const hasScrollbar = clientHeight < scrollHeight;\n const scrolledToBottom = Math.ceil(scrollTop + offsetHeight) >= scrollHeight;\n const result = hasScrollbar && !scrolledToBottom && !individualPrivacyOpen;\n\n if (showScrollBoxShadow !== result) {\n setShowScrollBoxShadow(result);\n }\n }\n }, [currentRef, individualPrivacyOpen, showScrollBoxShadow]);\n updateShowScrollBoxShadow(); // The function gets called for each resize in `Banner` component\n\n useLayoutEffect(() => {\n if (currentRef) {\n currentRef.addEventListener(\"scroll\", updateShowScrollBoxShadow);\n return () => currentRef.removeEventListener(\"scroll\", updateShowScrollBoxShadow);\n } // eslint-disable-next-line @typescript-eslint/no-empty-function\n\n\n return () => {};\n }, [currentRef, updateShowScrollBoxShadow]);\n usePlainCss(showScrollBoxShadow ? \"#\".concat(rightSideId, \" {box-shadow:var(--boxShadowShowScroll);}\") : \"\"); // Create custom scrollbar when a border radius is active (https://css-tricks.com/the-current-state-of-styling-scrollbars/)\n\n usePlainCss(navigator.platform === \"Win32\" && type === \"dialog\" && dialogBorderRadius > 0 ? [\"#\".concat(id, \"{overflow:overlay!important;}\"), \"#\".concat(id, \"::-webkit-scrollbar{width:11px;}\"), \"#\".concat(id, \"{scrollbar-width:thin;scrollbar-color:\").concat(teachingsFontColor, \" transparent;}\"), \"#\".concat(id, \"::-webkit-scrollbar-track{background:transparent;}\"), \"#\".concat(id, \"::-webkit-scrollbar-thumb{background-color:\").concat(teachingsFontColor, \";border-radius:\").concat(dialogBorderRadius, \"px;border:3px solid \").concat(bg, \";}\"), \"#\".concat(id, \">div{border-top-right-radius:0!important;border-bottom-right-radius:0!important;}\")].join(\"\\n\") : \"\");\n const headerRef = useRef();\n const footerRef = useRef();\n const rightSideContainerRef = useRef();\n useRenderedHeightsAsCssVars(headerRef.current, \"header\");\n useRenderedHeightsAsCssVars(footerRef.current, \"footer\");\n useRenderedHeightsAsCssVars(rightSideContainerRef.current, \"rightSideContainer\");\n return h(\"div\", _extends({}, bannerContentInlineStyle(banner), {\n ref: ref,\n id: id\n }), showHeader && h(Fragment, null, h(BannerHeader, {\n ref: headerRef\n }), h(\"div\", bannerHeaderInlineStyleSeparator(banner))), h(BannerBody, {\n rightSideContainerRef: rightSideContainerRef\n }), h(\"div\", bannerFooterInlineStyleSeparator(banner)), h(BannerFooter, {\n ref: footerRef\n }));\n};\n\nexport { BannerContent };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerContentInlineStyle({\n layout: {\n type\n },\n customCss: {\n antiAdBlocker\n },\n decision: {\n showCloseIcon\n },\n activeAction,\n individualPrivacyOpen,\n mobile,\n pageRequestUuid4\n}) {\n var _document$getElementB;\n\n const innerHeight = ((_document$getElementB = document.getElementById(pageRequestUuid4)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.clientHeight) || window.innerHeight;\n const mobileMaxHeight = +mobile.maxHeight;\n const useMobileMaxHeight = mobileMaxHeight > innerHeight ? innerHeight : mobileMaxHeight;\n const closeIconDistance = showCloseIcon || activeAction ? 51 : 0;\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-content\",\n style: {\n position: \"relative\",\n maxHeight: scaleMobile(mobile, pageRequestUuid4, innerHeight - (type === \"banner\" ? 0 : 20) - closeIconDistance, individualPrivacyOpen ? innerHeight - closeIconDistance : useMobileMaxHeight - closeIconDistance),\n overflow: \"auto\"\n }\n };\n}\n\nexport { bannerContentInlineStyle };","import { scaleMobile } from \"../..\";\n\nfunction bannerHeaderInlineStyleSeparator({\n layout: {\n type\n },\n design,\n headerDesign: {\n borderWidth,\n borderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const useDesignBorderWidth = scaleMobile(mobile, pageRequestUuid4, design.borderWidth);\n const style = {\n height: scaleMobile(mobile, pageRequestUuid4, +borderWidth),\n background: borderColor,\n position: \"sticky\",\n top: \"var(--rendered-height-header)\",\n zIndex: 9\n };\n\n if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\" && useDesignBorderWidth > 0) {\n style.borderLeft = \"\".concat(useDesignBorderWidth, \"px solid \").concat(design.borderColor);\n style.borderRight = style.borderLeft;\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-header-separator\",\n style\n };\n}\n\nexport { bannerHeaderInlineStyleSeparator };","import { scaleMobile } from \"../../scale\";\n\nfunction bannerFooterInlineStyleSeparator({\n layout: {\n type\n },\n design,\n footerDesign: {\n borderWidth,\n borderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, design.borderWidth);\n const style = {\n height: scaleMobile(mobile, pageRequestUuid4, +borderWidth),\n background: borderColor,\n position: \"sticky\",\n bottom: \"var(--rendered-height-footer)\"\n };\n\n if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\" && useBorderWidth > 0) {\n style.borderLeft = \"\".concat(useBorderWidth, \"px solid \").concat(design.borderColor);\n style.borderRight = style.borderLeft;\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-footer-separator\",\n style\n };\n}\n\nexport { bannerFooterInlineStyleSeparator };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { bannerContentInlineStyleInner, useBanner, useBannerAnimation, useResettableAnimation } from \"../../..\";\nimport { AnimatedCss } from \"../..\";\nimport { BannerContent } from \".\";\n\nconst BannerAnimatedContent = () => {\n const banner = useBanner();\n const {\n layout: {\n animationInDuration,\n animationOutDuration\n },\n animationVisible\n } = banner;\n const {\n useAnimationIn,\n useAnimationOut\n } = useBannerAnimation()(banner.layout);\n const [stateAnimationIn, stateAnimationInDuration] = useResettableAnimation(useAnimationIn, animationInDuration);\n const [stateAnimationOut, stateAnimationOutDuration] = useResettableAnimation(useAnimationOut === \"none\" ? \"fadeOut\" : useAnimationOut, useAnimationOut === \"none\" ? 0 : animationOutDuration);\n return h(AnimatedCss, _extends({\n animationIn: stateAnimationIn,\n animationInDuration: stateAnimationInDuration,\n animationOut: stateAnimationOut,\n animationOutDuration: stateAnimationOutDuration,\n isVisible: animationVisible\n }, bannerContentInlineStyleInner(banner)), h(BannerContent, null));\n};\n\nexport { BannerAnimatedContent };","import { calculateRgba } from \"../../../utils\";\nimport { scaleMobile } from \"../../scale\";\n\nfunction bannerContentInlineStyleInner({\n layout: {\n type,\n dialogMaxWidth,\n dialogPosition,\n dialogMargin,\n bannerPosition,\n dialogBorderRadius\n },\n design: {\n borderWidth,\n borderColor,\n textAlign,\n fontColor,\n fontInheritFamily,\n fontFamily,\n fontWeight,\n boxShadowEnabled,\n boxShadowOffsetX,\n boxShadowOffsetY,\n boxShadowBlurRadius,\n boxShadowSpreadRadius,\n boxShadowColor,\n boxShadowColorAlpha\n },\n individualLayout,\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4,\n individualPrivacyOpen\n}) {\n const {\n alignment: mobileAlignment\n } = mobile;\n const useType = scaleMobile(mobile, pageRequestUuid4, type, \"banner\");\n const useBorderWidth = scaleMobile(mobile, pageRequestUuid4, borderWidth);\n const width = useType === \"dialog\" ? +(individualPrivacyOpen && !individualLayout.inheritDialogMaxWidth ? individualLayout.dialogMaxWidth : dialogMaxWidth) : \"100%\";\n const style = {\n pointerEvents: \"all\",\n transition: \"width 500ms, max-width 500ms\",\n maxWidth: width,\n textAlign,\n width,\n overflow: \"hidden\",\n alignSelf: scaleMobile(mobile, pageRequestUuid4, useType === \"banner\" ? bannerPosition === \"top\" ? \"flex-start\" : \"flex-end\" : undefined, mobileAlignment === \"bottom\" ? \"flex-end\" : mobileAlignment === \"top\" ? \"flex-start\" : \"center\"),\n fontFamily: fontInheritFamily ? undefined : fontFamily,\n fontWeight,\n color: fontColor,\n margin: useType === \"dialog\" ? 10 : undefined,\n borderRadius: useType === \"dialog\" ? +dialogBorderRadius : undefined,\n boxShadow: boxShadowEnabled ? \"\".concat(boxShadowOffsetX, \"px \").concat(boxShadowOffsetY, \"px \").concat(boxShadowBlurRadius, \"px \").concat(boxShadowSpreadRadius, \"px \").concat(calculateRgba(boxShadowColor, boxShadowColorAlpha)) : undefined,\n [useType === \"banner\" ? bannerPosition === \"top\" ? \"borderBottom\" : \"borderTop\" : \"border\"]: useType === \"banner\" ? useBorderWidth > 0 ? \"\".concat(useBorderWidth, \"px solid \").concat(borderColor) : undefined : undefined\n };\n\n if (useType === \"dialog\" && dialogPosition !== \"middleCenter\") {\n style.margin = dialogMargin.map(i => \"\".concat(i, \"px\")).join(\" \");\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-inner\",\n style\n };\n}\n\nexport { bannerContentInlineStyleInner };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useState, useLayoutEffect, useEffect } from \"react\";\nimport { dispatchResizeEvent } from \"@devowl-wp/headless-content-unblocker\";\nimport { useBanner, useBannerActionLinks, useBannerHistory, usePlainCss, useRestrictScrollWhenVisible, bannerOverlayInlineStyle, bannerOverlayInlineStyleAlignment, BannerAnimatedContent, isHiddenDueLegal } from \"../..\";\n\nconst Banner = () => {\n const banner = useBanner();\n const {\n customCss: {\n antiAdBlocker,\n css\n },\n visible,\n animationVisible,\n activeAction,\n skipOverlay,\n gotHiddenDueLegal,\n pageRequestUuid4,\n individualPrivacyOpen\n } = banner;\n const hiddenDueLegal = isHiddenDueLegal(banner);\n const show = visible && !hiddenDueLegal || !!activeAction;\n usePlainCss(antiAdBlocker ? css : \"\");\n usePlainCss( // `-webkit-text-size-adjust:100%;`: https://stackoverflow.com/a/2711132/5506547\n \"#\".concat(pageRequestUuid4, \", #\").concat(pageRequestUuid4, \" * {box-sizing: border-box;backface-visibility:initial;text-transform:initial;-webkit-text-size-adjust:100%;}\"));\n useRestrictScrollWhenVisible(show); // Listen to window resizes and resize the content automatically\n\n const [, setInvalidate] = useState(0);\n\n const updateSize = () => setInvalidate(+new Date());\n\n useLayoutEffect(() => {\n window.addEventListener(\"resize\", updateSize);\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n useLayoutEffect(() => {\n dispatchResizeEvent(1000);\n }, [animationVisible, individualPrivacyOpen]); // When changes to the legal settings are done, make the banner visible or hide\n\n gotHiddenDueLegal && useEffect(() => {\n gotHiddenDueLegal(hiddenDueLegal);\n }, [hiddenDueLegal]);\n useBannerHistory();\n useBannerActionLinks();\n\n if (!show) {\n return null;\n }\n\n const content = h(\"div\", bannerOverlayInlineStyleAlignment(banner), h(BannerAnimatedContent, null));\n return skipOverlay ? content : h(\"div\", _extends({\n id: pageRequestUuid4\n }, bannerOverlayInlineStyle(banner)), content);\n};\n\nexport { Banner };","import { useEffect } from \"react\";\nimport { useBanner } from \"..\";\n/**\n * Do not allow scrolling when this banner is visible and add a blur effect if enabled.\n */\n\nfunction useRestrictScrollWhenVisible(show) {\n const banner = useBanner();\n const {\n layout: {\n overlay\n },\n animationVisible\n } = banner;\n const showOverlay = show && overlay && animationVisible;\n return useEffect(() => {\n const {\n dataset,\n style\n } = document.body; // Save first state\n\n if (dataset.rcbPreviousOverflow === undefined) {\n dataset.rcbPreviousOverflow = style.overflow;\n }\n\n style.overflow = showOverlay ? \"hidden\" : dataset.rcbPreviousOverflow;\n document.body.parentElement.style.overflow = style.overflow;\n }, [showOverlay]);\n}\n\nexport { useRestrictScrollWhenVisible };","import { useEffect, useState } from \"react\";\nimport { useBanner } from \"../../..\";\n\nfunction useBannerHistory() {\n const banner = useBanner();\n const {\n consent,\n groups,\n tcf,\n activeAction,\n selectHistoryEntry,\n fetchHistory\n } = banner; // Save the current consent and group settings to restore\n\n const [originalConsent, setOriginalConsent] = useState({\n consent,\n groups,\n tcf\n }); // Listen to consent changes and save it as original consent (only when non-history)\n\n useEffect(() => {\n if (!activeAction) {\n setOriginalConsent({\n consent,\n groups,\n tcf\n });\n }\n }, [consent, groups, tcf, activeAction]);\n useEffect(() => {\n async function fetch() {\n const result = await fetchHistory(); // Initially select first item\n\n if (result.length) {\n const [{\n groups,\n decision,\n tcf\n }] = result;\n selectHistoryEntry(groups, decision, tcf);\n } else {\n selectHistoryEntry([], []);\n }\n }\n\n if (activeAction === \"history\") {\n // Save state of original consent\n setOriginalConsent({\n consent,\n groups,\n tcf\n });\n fetch();\n } else {\n // If we close the history, restore the original state\n const {\n groups,\n consent: {\n groups: consentGroups\n },\n tcf\n } = originalConsent;\n selectHistoryEntry === null || selectHistoryEntry === void 0 ? void 0 : selectHistoryEntry(groups, consentGroups, tcf);\n }\n }, [activeAction]);\n}\n\nexport { useBannerHistory };","import { scaleMobile } from \"../..\";\n\nfunction bannerOverlayInlineStyleAlignment({\n layout: {\n type,\n dialogPosition\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n const style = {\n display: \"flex\",\n width: \"100%\",\n height: \"100%\"\n };\n\n if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\") {\n style.alignItems = dialogPosition.startsWith(\"top\") ? \"flex-start\" : dialogPosition.startsWith(\"bottom\") ? \"flex-end\" : \"center\";\n style.justifyContent = dialogPosition.endsWith(\"Center\") ? \"center\" : dialogPosition.endsWith(\"Left\") ? \"flex-start\" : \"flex-end\";\n }\n\n return {\n className: \"wp-exclude-emoji \".concat(antiAdBlocker === \"y\" ? \"\" : \"rcb-align\"),\n style\n };\n}\n\nexport { bannerOverlayInlineStyleAlignment };","import { scaleMobile } from \"../..\";\nimport { calculateRgba } from \"../../..\";\n/**\n * This method needs to be ported to Banner.php#wp_footer, too!\n */\n\nfunction bannerOverlayInlineStyle({\n layout: {\n type,\n overlay,\n overlayBg,\n overlayBgAlpha,\n overlayBlur\n },\n design: {\n fontSize\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n}) {\n let backdropFilter = \"none\";\n\n if (process.env.PLUGIN_CTX === \"pro\") {\n /* onlypro:start */\n if (overlay) {\n backdropFilter = \"blur(\".concat(overlayBlur, \"px)\");\n }\n /* onlypro:end */\n\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : \"rcb-bann3r rcb-bann3r-\".concat(scaleMobile(mobile, pageRequestUuid4, type, \"banner\"), \" \").concat(overlay ? \"\" : \"overlay-deactivated\"),\n style: {\n background: overlay ? calculateRgba(overlayBg, overlayBgAlpha) : \"none\",\n backdropFilter,\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 999999,\n pointerEvents: overlay ? \"all\" : \"none\",\n fontSize: scaleMobile(mobile, pageRequestUuid4, +fontSize),\n filter: \"none\",\n maxHeight: \"100vh\"\n }\n };\n}\n\nexport { bannerOverlayInlineStyle };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentGet = {\n path: \"/consent\",\n method: RouteHttpVerb.GET\n};","import { useState } from \"react\";\nimport { getOptionsFromWindow, getOtherOptionsFromWindow } from \"../utils\";\nimport { useBannerPreDecisionGateway, useTcf } from \"../hooks\";\nimport { applyConsent, getCookieConsentManager } from \"../others\";\nimport { prepareTcfString } from \"../tcf\";\nimport { getUserDecision } from \"@devowl-wp/cookie-consent-web-client\";\nimport { useBannerConsentListener } from \"@devowl-wp/react-cookie-banner\";\nimport { BannerContextFactory, useBannerToggleOverlay, Banner, useBannerStateContextCallbacks } from \"@devowl-wp/react-cookie-banner\";\nimport { locationRestConsentGet } from \"../wp-api\";\nimport { commonRequest } from \"@devowl-wp/utils\";\nimport { BannerProductionNotice } from \".\";\n/**\n * Simply connects a context store to the banner itself. On the website itself\n * it should not rely\n */\n\nconst WebsiteBanner = ({\n poweredLink\n}) => {\n const {\n customizeValuesBanner: {\n layout,\n decision,\n legal,\n design,\n headerDesign,\n bodyDesign,\n footerDesign,\n texts,\n individualLayout,\n saveButton,\n group,\n individualTexts,\n customCss,\n mobile\n },\n pageId,\n pageRequestUuid4,\n pageIdToPermalink,\n consentForwardingExternalHosts,\n essentialGroup,\n isTcf,\n isEPrivacyUSA,\n isAgeNotice,\n isListServicesNotice,\n tcf,\n tcfMetadata,\n groups,\n userConsentCookieName,\n bannerI18n,\n affiliate,\n isCurrentlyInTranslationEditorPreview,\n pageByIdUrl\n } = getOtherOptionsFromWindow();\n const userDecision = getUserDecision(userConsentCookieName); // TCF compatibility\n\n const tcfObject = useTcf(isTcf, tcf, tcfMetadata); // Server-side rendered overlay handler\n\n const {\n toggleOverlay\n } = useBannerToggleOverlay(document.getElementById(pageRequestUuid4));\n const {\n openHistory,\n openBanner,\n revokeConsent,\n updateTcfFilterBy,\n updateIndividualPrivacyOpen,\n updateGroupChecked,\n updateCookieChecked,\n onClose,\n selectHistoryEntry\n } = useBannerStateContextCallbacks({\n toggleOverlay,\n revokeConsent: ({\n tcf\n }) => {\n // Do not rely on current state of `groups` because it can be altered through history change\n const buttonClicked = \"shortcode_revoke\"; // TCF compatibility: revoke TCF string\n\n let tcfString;\n\n if (process.env.IS_TCF === \"1\" && tcf !== null && tcf !== void 0 && tcf.model) {\n tcfString = prepareTcfString(tcf.model, buttonClicked);\n }\n\n return applyConsent({\n consent: {\n groups: getCookieConsentManager().getDefaultDecision(true)\n },\n buttonClicked,\n tcfString\n });\n }\n }); // Context values preparation\n\n const [contextValue, setContextValue] = useState({\n layout: { ...layout\n },\n decision: { ...decision\n },\n legal: { ...legal\n },\n design: { ...design\n },\n headerDesign: { ...headerDesign\n },\n bodyDesign: { ...bodyDesign\n },\n footerDesign: { ...footerDesign\n },\n texts: { ...texts\n },\n individualLayout: { ...individualLayout\n },\n saveButton: { ...saveButton\n },\n group: { ...group\n },\n individualTexts: { ...individualTexts\n },\n customCss: { ...customCss\n },\n mobile: { ...mobile\n },\n productionNotice: h(BannerProductionNotice, null),\n pageRequestUuid4,\n pageIdToPermalink,\n pageByIdUrl,\n consentForwardingExternalHosts,\n pageId,\n isTcf,\n ePrivacyUSA: isEPrivacyUSA,\n ageNotice: isAgeNotice,\n listServicesNotice: isListServicesNotice,\n tcf: tcfObject,\n tcfFilterBy: \"legInt\",\n groups,\n essentialGroup,\n poweredLink,\n visible: false,\n animationVisible: true,\n skipOverlay: true,\n previewCheckboxActiveState: false,\n individualPrivacyOpen: false,\n i18n: bannerI18n,\n keepVariablesInTexts: isCurrentlyInTranslationEditorPreview,\n affiliate,\n consent: {\n groups: { ...(userDecision === false ? {} : userDecision.consent),\n // Always override essential cookies\n ...getCookieConsentManager().getDefaultDecision(userDecision === false)\n }\n },\n didGroupFirstChange: false,\n onSave: (markAsDoNotTrack, buttonClicked) => {\n setContextValue(state => {\n var _state$tcf;\n\n // TCF compatibility: persist TCF string\n let tcfString;\n\n if (process.env.IS_TCF === \"1\" && isTcf && (_state$tcf = state.tcf) !== null && _state$tcf !== void 0 && _state$tcf.model) {\n tcfString = prepareTcfString(state.tcf.model, buttonClicked);\n }\n\n const appliedConsent = applyConsent({\n consent: state.consent,\n markAsDoNotTrack,\n buttonClicked,\n tcfString\n });\n\n if (state.refreshSiteAfterSave) {\n appliedConsent.then(() => // Fix iOS / Safari bug when we want to reload the page after a POST request\n setTimeout(() => window.location.reload(), state.refreshSiteAfterSave ||\n /* BC */\n 2000)); // When refreshing the site, do not show any out animation\n\n return state;\n } else {\n return { ...state,\n ...toggleOverlay(state, false)\n };\n }\n });\n },\n fetchHistory: async () => {\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n } = getOptionsFromWindow();\n const history = await commonRequest({\n location: locationRestConsentGet,\n options: {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n },\n cookieValueAsParam: [userConsentCookieName],\n sendRestNonce: false\n });\n setContextValue(state => {\n return { ...state,\n history\n };\n });\n return history;\n },\n // Predefined callbacks\n updateTcfFilterBy: newFilter => updateTcfFilterBy(setContextValue, newFilter),\n updateIndividualPrivacyOpen: opened => updateIndividualPrivacyOpen(setContextValue, opened),\n updateGroupChecked: (id, checked) => updateGroupChecked(setContextValue, id, checked),\n updateCookieChecked: (groupId, id, checked) => updateCookieChecked(setContextValue, groupId, id, checked),\n onClose: () => onClose(setContextValue),\n selectHistoryEntry: (groups, consentGroups, tcf) => selectHistoryEntry(setContextValue, groups, consentGroups, tcf),\n openHistory: e => openHistory(setContextValue, e),\n openBanner: e => openBanner(setContextValue, e),\n revokeConsent: (successMessage, e) => revokeConsent(setContextValue, successMessage, e)\n });\n useBannerPreDecisionGateway(contextValue, setContextValue, toggleOverlay);\n useBannerConsentListener(setContextValue, userConsentCookieName);\n const BannerContext = BannerContextFactory.Context();\n return h(BannerContext.Provider, {\n value: contextValue\n }, h(Banner, null));\n};\n\nexport { WebsiteBanner };","import { useMemo } from \"react\";\nimport { prepareTcfString } from \"../tcf\";\nimport { applyTcfModelMetadata, applyRestrictivePurposes, createTcfModel, createTcfModelFromCookie } from \"@devowl-wp/cookie-consent-web-client\";\nimport { getCookieConsentManager } from \"../others\";\n/**\n * Merges the localized `tcf` and `tcfMetadata` together so it can be\n * used inside our `BannerContextProps` and returns a valid `GVL` instance.\n */\n\nfunction useTcf(active, tcf, tcfMeta) {\n return useMemo(() => {\n if (process.env.IS_TCF === \"1\" && active && Object.values(tcf.vendors).length > 0) {\n let gvl;\n let model;\n const manager = getCookieConsentManager();\n const restored = createTcfModelFromCookie(tcf, tcfMeta, manager.getOption(\"tcfCookieName\")); // First, try to resolve from user consent (cookie value)\n\n if (restored) {\n gvl = restored.gvl;\n model = restored.model;\n } else {\n // No consent given, let's create an empty model\n const newTcf = createTcfModel({\n tcf,\n tcfMeta,\n tcfString: \"\"\n });\n gvl = newTcf.gvl;\n model = newTcf.model;\n }\n\n applyTcfModelMetadata(model, tcfMeta, manager);\n applyRestrictivePurposes(model, tcf.vendorConfigurations);\n\n if (!restored) {\n prepareTcfString(model, \"initial\");\n }\n\n return {\n gvl,\n model,\n original: tcf,\n metadata: tcfMeta\n };\n } else {\n return undefined;\n }\n }, [active, tcf, tcfMeta]);\n}\n\nexport { useTcf };","import { useCallback } from \"react\";\nimport { useBannerAnimation } from \"../..\";\n/**\n * Provides a callback which can be used to update the state of the banner context and manipulate\n * the `visible` and `animationVisible` property correctly.\n */\n\nfunction useBannerToggleOverlay(overlay) {\n const useBannerAnimationCallback = useBannerAnimation();\n const toggleOverlay = useCallback(({\n layout\n }, show) => {\n const {\n animationInDuration,\n animationOutDuration\n } = layout;\n const {\n useAnimationIn,\n useAnimationOut\n } = useBannerAnimationCallback(layout);\n const defaultIfNoAnimation = 0; // Avoid \"hard\" overlay\n\n const useDuration = show ? useAnimationIn === \"none\" ? defaultIfNoAnimation : animationInDuration : useAnimationOut === \"none\" ? defaultIfNoAnimation : animationOutDuration; // Toggle SSR-rendered overlay\n\n useDuration > 0 && (overlay.style.transition = \"background \".concat(useDuration, \"ms\"));\n overlay.style.background = \"transparent\";\n\n if (show) {\n // We need a small delay to avoid flickering of animation out effect in customizer\n setTimeout(() => {\n overlay.style.display = \"block\";\n }, 0);\n setTimeout(() => {\n const bg = overlay.getAttribute(\"data-bg\");\n overlay.style.background = bg ? bg.split(\":\")[1].trim().replace(\";\", \"\") : \"transparent\";\n }, 100);\n } else {\n setTimeout(() => {\n overlay.style.display = \"none\";\n }, useDuration);\n }\n\n const animationVisible = {\n animationVisible: show\n };\n return show ? {\n visible: true,\n ...animationVisible\n } : animationVisible;\n }, [useBannerAnimationCallback]);\n return {\n overlay,\n toggleOverlay\n };\n}\n\nexport { useBannerToggleOverlay };","import { useEffect } from \"react\";\nimport { getOptionsFromWindow, isCustomize } from \"../utils\";\nimport { getCookieConsentManager } from \"../others\";\nimport { preDecisionGateway } from \"@devowl-wp/cookie-consent-web-client\";\nimport { preDecisionGatewayDynamicRequest, preDecisionGatewayHasPageClass, preDecisionGatewayIsCrawler, preDecisionGatewayIsPreventPreDecision, preDecisionGatewaySupportsCookies, preDecisionGatewayUserConsent, preDecisionGatewayIsDoNotTrack } from \"@devowl-wp/cookie-consent-web-client\";\nimport { commonRequest } from \"@devowl-wp/utils\";\nimport { locationRestConsentDynamicPredecisionGet } from \"../wp-api\";\nimport { isHiddenDueLegal } from \"@devowl-wp/react-cookie-banner\";\n/**\n * Do some decision gateways like DNT, Bot / Crawler and Decision and depending\n * on that, show the Banner initially.\n */\n\nfunction useBannerPreDecisionGateway(banner, setContextValue, toggleOverlay) {\n useEffect(() => {\n // Only run this predecision mechanism once and when not in customize\n if (isCustomize()) {\n return;\n }\n\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n others: {\n isAcceptAllForBots,\n isPreventPreDecision,\n hasDynamicPreDecisions,\n isRespectDoNotTrack\n }\n } = getOptionsFromWindow();\n const {\n onSave\n } = banner;\n preDecisionGateway(getCookieConsentManager(), {\n gateways: [preDecisionGatewaySupportsCookies, preDecisionGatewayHasPageClass([\"login-action-\"]), preDecisionGatewayDynamicRequest(() => {\n const {\n clientWidth,\n clientHeight\n } = document.documentElement;\n return commonRequest({\n location: locationRestConsentDynamicPredecisionGet,\n options: {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n },\n sendRestNonce: false,\n request: {\n viewPortWidth: clientWidth,\n viewPortHeight: clientHeight\n },\n params: {\n _wp_http_referer: window.location.href\n }\n });\n }, 10000, hasDynamicPreDecisions), async (_, banner) => isHiddenDueLegal(banner) ? \"consent\" : false, preDecisionGatewayIsPreventPreDecision(isPreventPreDecision), preDecisionGatewayIsCrawler(isAcceptAllForBots ? \"all\" : false), preDecisionGatewayIsDoNotTrack(isRespectDoNotTrack), preDecisionGatewayUserConsent],\n args: [banner],\n onIsDoNotTrack: () => {\n onSave(true, \"none\");\n },\n onShowCookieBanner: () => setContextValue(state => {\n return { ...state,\n // Always revert back to \"Essentials\" only consent when cookie needs to be consented\n consent: {\n groups: getCookieConsentManager().getDefaultDecision()\n },\n ...toggleOverlay(state, true)\n };\n })\n });\n }, []);\n}\n\nexport { useBannerPreDecisionGateway };","import { getOtherOptionsFromWindow } from \"./getOtherOptionsFromWindow\";\n/**\n * Checks if the current page is customize page.\n */\n\nfunction isCustomize() {\n return !!getOtherOptionsFromWindow().customizeIdsBanner;\n}\n\nexport { isCustomize };","import { getUserDecision } from \"../decision\";\nimport { isCrawler } from \"../utils\";\n/**\n * Is the current request from a spider / crawler?\n */\n\nconst preDecisionGatewayIsCrawler = resultIfBot => async ({\n decisionCookieName\n}) => {\n if (getUserDecision(decisionCookieName) !== false || !resultIfBot) {\n return false;\n }\n\n return isCrawler() ? resultIfBot : false;\n};\n\nexport { preDecisionGatewayIsCrawler };","import { getUserDecision } from \"../decision\";\nimport { isCrawler } from \"../utils\";\n/**\n * Prevent any predecision and user decision and force to reuse existing consent or all for crawlers.\n * This could be e.g. be configured by a dynamic hook or on server-side via a localized variable.\n */\n\nconst preDecisionGatewayIsPreventPreDecision = preventPreDecision => async ({\n decisionCookieName\n}) => {\n const userDecision = getUserDecision(decisionCookieName);\n return preventPreDecision && userDecision === false ? isCrawler() ? // For crawlers we need to explicitly allow services on all pages\n \"all\" : \"consent\" : false;\n};\n\nexport { preDecisionGatewayIsPreventPreDecision };","/**\n * Do not show cookie banner for a certain page, e.g. the login page.\n */\nconst preDecisionGatewayHasPageClass = classNames => async () => {\n const {\n className\n } = document.body;\n return classNames.filter(c => className.indexOf(c) > -1).length > 0 ? \"consent\" : false;\n};\n\nexport { preDecisionGatewayHasPageClass };","import { CookieConsentManager } from \"../apply\";\nimport { apply } from \"../apply\";\nimport { BANNER_PRE_DECISION_SHOW_EVENT, BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT } from \"../events\";\nimport { ready } from \"../utils\";\n\nasync function preDecisionGateway(options, handler) {\n let show = true;\n const useOptions = options instanceof CookieConsentManager ? options.getOptions() : options;\n const {\n gateways,\n args,\n onIsDoNotTrack,\n onShowCookieBanner\n } = handler;\n\n for (const gateway of gateways) {\n const result = await gateway(useOptions, ...args);\n\n if (result !== false) {\n show = false;\n\n const applyWithOptions = type => apply({\n type,\n ...useOptions\n });\n\n if (result === \"all\") {\n applyWithOptions(\"all\");\n } else if (result === \"essentials\") {\n applyWithOptions(\"essentials\");\n } else if (result === \"dnt\") {\n onIsDoNotTrack(() => applyWithOptions(\"essentials\"));\n } else if (result === \"consent\") {\n // Apply services for the current user decision\n applyWithOptions(\"consent\");\n }\n\n break;\n }\n }\n\n if (show) {\n onShowCookieBanner();\n document.dispatchEvent(new CustomEvent(BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT)); // Wait all events are initialized\n\n await ready();\n document.dispatchEvent(new CustomEvent(BANNER_PRE_DECISION_SHOW_EVENT, {\n detail: {}\n }));\n }\n}\n\nexport { preDecisionGateway };","import { getUserDecision, OPT_IN_ALL_EVENT } from \"@devowl-wp/cookie-consent-web-client\";\nimport { useEffect } from \"react\";\n\nfunction useBannerConsentListener(setContextValue, userConsentCookieName) {\n useEffect(() => {\n const listener = () => {\n const consent = getUserDecision(userConsentCookieName);\n consent && setContextValue(state => ({ ...state,\n consent: {\n groups: consent.consent\n }\n }));\n };\n\n document.addEventListener(OPT_IN_ALL_EVENT, listener);\n return () => {\n document.removeEventListener(OPT_IN_ALL_EVENT, listener);\n };\n }, []);\n}\n\nexport { useBannerConsentListener };","import { putHtmlCodeToDom, OPT_IN_CONTENT_BLOCKER } from \"@devowl-wp/headless-content-unblocker\";\nimport { OPT_IN_EVENT, waitObject } from \"@devowl-wp/cookie-consent-web-client\";\nlet amazonWidgetsSlotNum = 0;\n/**\n * Some presets have custom opt-in coding, e. g. Amazon Widgets.\n */\n\nfunction listenPresetOptIn() {\n document.addEventListener(OPT_IN_EVENT, async ({\n detail: {\n service: {\n presetId,\n codeOptIn,\n codeDynamics\n }\n }\n }) => {\n switch (presetId) {\n case \"amazon-associates-widget\":\n {\n const {\n amznAssoWidgetHtmlId\n } = codeDynamics || {};\n\n if (amznAssoWidgetHtmlId) {\n const element = document.getElementById(amznAssoWidgetHtmlId);\n\n if (element) {\n const slotNum = amazonWidgetsSlotNum;\n amazonWidgetsSlotNum++;\n putHtmlCodeToDom(codeOptIn, codeDynamics, element); // Amazon Widgets is using `document.write`, we need to manually move the ad container...\n\n const adContainer = await waitObject(() => document.querySelector(\"[id^=\\\"amzn_assoc_ad_div_\\\"][id$=\\\"\".concat(slotNum, \"\\\"]\")), 500, 50);\n\n if (adContainer) {\n element.appendChild(adContainer);\n }\n }\n }\n\n break;\n }\n\n case \"google-maps\":\n {\n document.addEventListener(OPT_IN_CONTENT_BLOCKER, async ({\n detail: {\n element\n }\n }) => {\n const {\n et_pb_map_init,\n jQuery\n } = window;\n\n if (jQuery && element.matches(\".et_pb_map\") && et_pb_map_init) {\n await waitObject(() => window.google);\n et_pb_map_init(jQuery(element).parent());\n }\n });\n break;\n }\n\n default:\n break;\n }\n });\n}\n\nexport { listenPresetOptIn };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentClearDelete = {\n path: \"/consent/clear\",\n method: RouteHttpVerb.DELETE\n};","import { regExpPatternFromWildcardName } from \"..\";\n/**\n * Synchronously check if a consent is given. See `window.consentApi.consent` for more documentation.\n */\n\nfunction consentSync(manager, typeOrId, name,\n/**\n * This can also be `*` to allow all hosts.\n */\nhost) {\n // Find matching cookie\n const found = [];\n const {\n groups,\n revisionHash\n } = manager.getOptions();\n const allCookies = groups.map(({\n items\n }) => items).flat();\n\n for (const row of allCookies) {\n if (typeof typeOrId === \"number\") {\n if (row.id === typeOrId) {\n found.push({\n cookie: row,\n relevance: 10\n });\n }\n } else {\n const {\n technicalDefinitions\n } = row;\n\n if (technicalDefinitions !== null && technicalDefinitions !== void 0 && technicalDefinitions.length) {\n // Check if technical information matches\n for (const td of technicalDefinitions) {\n const regexp = regExpPatternFromWildcardName(td.name);\n\n if (td.type === typeOrId && (td.name === name || name.match(regexp)) && (td.host === host || host === \"*\")) {\n found.push({\n cookie: row,\n // Create a priority by \"relevance\" inside the technical definitions\n // This is the case if e.g. another Cookie consumes the same technical cookie\n // Example: Vimeo uses Facebook Pixel, too\n relevance: technicalDefinitions.length + technicalDefinitions.indexOf(td) + 1\n });\n break;\n }\n }\n }\n }\n }\n\n const already = manager.getUserDecision();\n\n if (found.length) {\n const relevantCookie = found.sort(({\n relevance: a\n }, {\n relevance: b\n }) => a - b)[0].cookie; // Check if consent is already given\n\n if (already && revisionHash === already.revision) {\n const consentCookieIds = Object.values(already.consent).flat();\n\n if (consentCookieIds.indexOf(relevantCookie.id) > -1) {\n return {\n cookie: relevantCookie,\n consentGiven: true,\n cookieOptIn: true\n };\n } else {\n return {\n cookie: relevantCookie,\n consentGiven: true,\n cookieOptIn: false\n };\n }\n } else {\n return {\n cookie: relevantCookie,\n consentGiven: false,\n cookieOptIn: false\n };\n }\n } else {\n return {\n cookie: null,\n consentGiven: !!already,\n cookieOptIn: true\n };\n }\n}\n\nexport { consentSync };","import { OPT_IN_EVENT, OPT_OUT_EVENT } from \"..\";\nimport { consentSync } from \".\";\n/**\n * `window.consentApi.consent`: Check if a given technical information (e.g. HTTP Cookie, LocalStorage, ...) has a consent:\n *\n * - When a technical information exists in defined cookies, the Promise is only resolved after given consent\n * - When no technical information exists, the Promise is immediate resolved\n *\n * Example (ES5):\n * ```js\n * (window.consentApi && window.consentApi.consent(\"http\", \"_twitter_sess\", \".twitter.com\") || Promise.resolve()).then(function() {\n * console.log(\"Consent for Twitter embed given, do something...!\");\n * });\n * ```\n *\n * Example (ES6, Babel, TS):\n * ```js\n * (window.consentApi?.consent(\"http\", \"_twitter_sess\", \".twitter.com\") || Promise.resolve()).then(() => {\n * console.log(\"Consent for Twitter embed given, do something...!\");\n * });\n * ```\n *\n * **Since 2.3.0**: You can also check for consent by cookie ID (ID in `wp_posts`, post id):\n *\n * ```js\n * window.consentApi.consent(15)\n * ```\n */\n\nfunction consent(...args) {\n return new Promise((resolve, reject) => {\n const {\n cookie: foundCookie,\n consentGiven,\n cookieOptIn\n } = consentSync(...args);\n\n if (foundCookie) {\n if (consentGiven) {\n if (cookieOptIn) {\n resolve();\n } else {\n reject();\n }\n } else {\n // Wait for consent\n document.addEventListener(OPT_IN_EVENT, async ({\n detail: {\n service\n }\n }) => {\n if (service === foundCookie) {\n resolve();\n }\n }); // Wait for opt out\n\n document.addEventListener(OPT_OUT_EVENT, async ({\n detail: {\n service\n }\n }) => {\n if (service === foundCookie) {\n reject();\n }\n });\n }\n } else {\n resolve();\n }\n });\n}\n\nexport { consent };","import { LISTEN_TO_EVENTS } from \"../utils\";\nimport { INITIATOR_EXECUTION } from \"@devowl-wp/headless-content-unblocker\";\n\n/**\n * Wrap any function into a consent-awaiting function. This allows you to e.g. overwrite every function\n * a WordPress theme or plugin is exposing to `window` object.\n *\n * ### Learn usage by example\n *\n * A plugin exposes the following function which loads a Google Map to `window`:\n *\n * ```html\n * \n * ```\n *\n * We can now override this method with the help of `idx` and delay of the `console.log` until consent for\n * Google Maps is given:\n *\n * ```ts\n * wrapFn(\n * {\n * object: idx(window, (window) => window.mynested.another),\n * key: \"loadGoogleMaps\"\n * },\n * [\"unblock\", \"https://google.com/maps\"]\n * );\n * ```\n *\n * The example above can also be used in the following way to check for blocker rules for the given function body:\n *\n * ```ts\n * wrapFn(\n * {\n * object: idx(window, (window) => window.mynested.another),\n * key: \"loadGoogleMaps\"\n * },\n * \"functionBody\"\n * );\n * ```\n *\n * The above examples determine the consent by a defined Content Blocker. But you can also wait for consent by a defined\n * service with the help of the `consent` API to check for a technical definition (HTTP Cookie, LocalStorage, ...):\n *\n * ```ts\n * wrapFn(\n * {\n * object: idx(window, (window) => window.mynested.another),\n * key: \"loadGoogleMaps\"\n * },\n * [\"consent\", \"http\", \"__SECURE\", \"*\"]\n * );\n * ```\n *\n * And for the advanced usages, you can simply return your own `boolean` or `Promise` by passing your custom checker:\n *\n * ```ts\n * wrapFn(\n * {\n * object: idx(window, (window) => window.mynested.another),\n * key: \"loadGoogleMaps\"\n * },\n * () => {\n * return new Promise((resolve) => {\n * // [...]\n * });\n * }\n * );\n * ```\n *\n * If you are invoking `wrapFn` at the very beginning of your HTML and you do not know, when the function which should\n * be overwritten is available, you can pass a function to `object` so it gets retried to overwrite on `interactive`\n * and `complete` state:\n *\n * ```ts\n * wrapFn(\n * {\n * object: () => idx(window, (window) => window.mynested.another),\n * key: \"loadGoogleMaps\"\n * },\n * () => {\n * return new Promise((resolve) => {\n * // [...]\n * });\n * }\n * );\n * ```\n *\n * @param fn The function(s) we want to override. If you pass a function you need to implement the overriding for the\n * original function yourself. Otherwise you can pass an object defining the object itself and the appropriate\n * key which holds the function so it gets overwritten automatically.\n * @param checkExecution Allows you to define a function which needs to return a `boolean` which allows synced execution.\n * If the return is a `Promise` it will return the `Promise` immediately, when the `Promise` gets resolved the\n * original function gets invoked.\n * @return Function which calls original function when consent is given (depending on `checkExecution`) or `undefined`\n * if an undefined function was passed as argument.\n */\nfunction wrapFn(apis, blocker, manager, fn, checkExecution, settings = {}) {\n const {\n failedSyncReturnValue,\n skipRetry\n } = settings; // Extract original function(s)\n\n const overwrittenFns = [];\n const retryWrap = [];\n const useFns = Array.isArray(fn) ? fn : [fn];\n\n for (const passedFn of useFns) {\n const overwrite = !!(passedFn !== null && passedFn !== void 0 && passedFn.key); // When the function should be overwritten directly in an object, resolve the object which should be addressed\n\n let objectResolved;\n let original;\n\n if (typeof passedFn === \"function\") {\n original = passedFn;\n } else if (passedFn.key) {\n if (passedFn.overwritten) {\n continue;\n }\n\n if (typeof passedFn.object === \"function\") {\n objectResolved = passedFn.object();\n } else {\n objectResolved = passedFn.object;\n }\n\n if (objectResolved) {\n original = objectResolved[passedFn.key];\n }\n }\n\n if (typeof original === \"function\") {\n const originalFunctionBody = original.toString();\n\n const overwriteFn = function (...args) {\n const callOriginal = () => original.apply(this, args); // Detect which function should be used to check for execution\n\n\n let checkResult = true;\n\n if (typeof checkExecution === \"function\") {\n checkResult = checkExecution({\n original,\n callOriginal,\n blocker,\n manager,\n objectResolved,\n that: this,\n args\n });\n } else if (checkExecution instanceof Promise) {\n checkResult = checkExecution;\n } else if (checkExecution === \"functionBody\") {\n checkResult = apis.unblock(originalFunctionBody);\n } else if (Array.isArray(checkExecution)) {\n const [apiFn, ...forwardArgs] = checkExecution;\n checkResult = apis[apiFn](...forwardArgs);\n }\n\n if (checkResult === false) {\n // Function is not allowed to be called and check was sync-based, return a value\n return failedSyncReturnValue;\n } else if (checkResult instanceof Promise) {\n // Function is not yet sure bot be called, lets wait for the promise\n return checkResult.then(callOriginal);\n } else {\n // Function is allowed to be called, return original value\n return callOriginal();\n }\n }; // Do overwrite, finally\n\n\n if (overwrite && typeof passedFn === \"object\") {\n objectResolved[passedFn.key] = overwriteFn;\n passedFn.overwritten = true;\n }\n\n overwrittenFns.push(overwriteFn);\n } else {\n // When this function should be overwritten, add to the list of retry-ables\n if (overwrite && typeof passedFn === \"object\") {\n retryWrap.push(passedFn);\n }\n\n overwrittenFns.push(undefined);\n }\n } // Retry to overwrite failed functions if there are still pending scripts\n\n\n if (retryWrap.length && !skipRetry) {\n const retry = () => {\n wrapFn(apis, blocker, manager, retryWrap, checkExecution, { ...settings,\n skipRetry: true\n });\n };\n\n for (const event of LISTEN_TO_EVENTS) {\n if (document.readyState === \"complete\" && [\"DOMContentLoaded\", \"readystatechange\"].indexOf(event) > -1) {\n continue;\n }\n\n document.addEventListener(event, retry);\n } // Listen to immediate \"unblock\" initiators from the content blocker\n\n\n document.addEventListener(INITIATOR_EXECUTION, retry);\n }\n\n return Array.isArray(fn) ? overwrittenFns : overwrittenFns === null || overwrittenFns === void 0 ? void 0 : overwrittenFns[0];\n}\n\nexport { wrapFn };","/* istanbul ignore file: we do not need to care about the entry point file as errors are detected through integration tests (E2E) */\n\n/**\n * Entrypoint for plain website. This file is only loaded if the visitor needs to accept cookies.\n */\nimport { render } from \"react-dom\";\nimport { WebsiteBanner } from \"./components\";\nimport { getOtherOptionsFromWindow, ensureBodyElement } from \"./utils\";\nimport { listenPresetOptIn, deleteCookiesServer, getCookieConsentManager } from \"./others\";\nimport { tcfCmpApi } from \"./tcf\";\nimport { getWebpackPublicPath } from \"@devowl-wp/utils\";\nimport { idx } from \"@devowl-wp/cookie-consent-web-client\";\nimport { OPT_OUT_ALL_EVENT, ready, printConsentUuidsToHTMLElement, createApi } from \"@devowl-wp/cookie-consent-web-client\";\nimport { getSsrPoweredByLink } from \"@devowl-wp/react-cookie-banner\";\n__webpack_public_path__ = getWebpackPublicPath(process.env.slug);\nconst {\n blocker,\n pageRequestUuid4\n} = getOtherOptionsFromWindow();\nlistenPresetOptIn();\ntcfCmpApi();\nready(() => {\n const poweredLink = getSsrPoweredByLink(\"\".concat(pageRequestUuid4, \"-powered-by\"));\n const element = ensureBodyElement(document.getElementById(pageRequestUuid4));\n printConsentUuidsToHTMLElement(\".rcb-consent-history-uuids\", getCookieConsentManager());\n document.addEventListener(OPT_OUT_ALL_EVENT, async ({\n detail: {\n deleteHttpCookies\n }\n }) => {\n // Handle cookie deletion which needs to be done server-side (e. g. HTTP cookies)\n deleteHttpCookies.length && setTimeout(() => deleteCookiesServer(deleteHttpCookies), 0);\n });\n\n if (element) {\n render(h(WebsiteBanner, {\n poweredLink: poweredLink\n }), element);\n }\n}, \"interactive\"); // Expose public API\n\nconst {\n wrapFn\n} = createApi(getCookieConsentManager(), blocker); // Wrap some functions\n\nconst fnGetWindow = () => window;\n\nwrapFn({\n object: () => idx(window, window => window.mkdf.modules.destinationMaps.mkdfGoogleMaps),\n key: \"getDirectoryItemsAddresses\"\n}, \"functionBody\");\nwrapFn([// [Plugin Comp] https://wordpress.org/plugins/bold-page-builder/\n{\n object: fnGetWindow,\n key: \"bt_bb_gmap_init_new\"\n}, {\n object: fnGetWindow,\n key: \"bt_bb_gmap_init_static_new\"\n}], [\"unblock\", \"google.com/maps\"]);","import { tcfCmpApiDispatcher } from \"@devowl-wp/cookie-consent-web-client\";\nimport { CmpApi } from \"@iabtcf/cmpapi\";\nimport { getCookieConsentManager } from \"../others\";\nimport { getCmpVersion, getOtherOptionsFromWindow } from \"../utils\";\nlet cmpApiInstance;\n/**\n * Initialize a CMP API once for this page request. If TCF is not available, it will\n * return `undefined`.\n *\n * @see https://www.npmjs.com/package/@iabtcf/cmpapi\n */\n\nfunction tcfCmpApi() {\n const other = getOtherOptionsFromWindow();\n const {\n isTcf\n } = other;\n\n if (process.env.IS_TCF === \"1\" && isTcf) {\n const {\n tcf,\n tcfMetadata\n } = other;\n const {\n scope\n } = tcfMetadata; // Create instance only once\n\n if (!cmpApiInstance) {\n cmpApiInstance = new CmpApi(+process.env.TCF_CMP_ID, // Currently, only two bits (https://git.io/JmuD0) can be saved to the cmpVersion, so we can only save the major version\n getCmpVersion(\"major\"), scope === \"service-specific\"); // Dispatch events to vendors can listen to it\n\n setTimeout(() => tcfCmpApiDispatcher(tcf, tcfMetadata, cmpApiInstance, getCookieConsentManager().getOption(\"tcfCookieName\")), 0);\n }\n\n return cmpApiInstance;\n } else {\n return undefined;\n }\n}\n\nexport { tcfCmpApi };","/**\n * Ensure the given HTML is a child of `body`. If not, it automatically gets moved.\n */\nfunction ensureBodyElement(element) {\n const {\n body\n } = document;\n const {\n parentElement\n } = element;\n\n if (parentElement !== body) {\n body.appendChild(element);\n }\n\n return element;\n}\n\nexport { ensureBodyElement };","import { CookieConsentManager } from \"../apply\";\nimport { BANNER_PRE_DECISION_SHOW_EVENT, OPT_IN_ALL_EVENT } from \"../events\";\nimport { getUserDecision } from \".\";\n/**\n * Listen to opt-in so we can safely print the UUID of the current consent to HTML elements.\n */\n\nfunction printConsentUuidsToHTMLElement(selector, decisionCookieName) {\n const elements = Array.prototype.slice.call(document.querySelectorAll(selector));\n document.addEventListener(BANNER_PRE_DECISION_SHOW_EVENT, () => {\n elements.forEach(element => element.innerHTML = element.getAttribute(\"data-fallback\"));\n });\n document.addEventListener(OPT_IN_ALL_EVENT, () => {\n const consent = getUserDecision(decisionCookieName instanceof CookieConsentManager ? decisionCookieName.getOption(\"decisionCookieName\") : decisionCookieName);\n const allUuids = consent ? [consent.uuid, ...consent.previousUuids] : [];\n elements.forEach(element => element.innerHTML = allUuids.length > 0 ? allUuids.join(\", \") : element.getAttribute(\"data-fallback\"));\n });\n}\n\nexport { printConsentUuidsToHTMLElement };","import { commonRequest } from \"@devowl-wp/utils\";\nimport { getOptionsFromWindow } from \"../utils\";\nimport { locationRestConsentClearDelete } from \"../wp-api\";\n/**\n * Delete cookies on server side (currently only `http`).\n */\n\nfunction deleteCookiesServer(cookies) {\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n } = getOptionsFromWindow();\n return commonRequest({\n location: locationRestConsentClearDelete,\n options: {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n },\n sendRestNonce: false,\n params: {\n cookies: cookies.join(\",\")\n }\n });\n}\n\nexport { deleteCookiesServer };","import { consent, consentAll, consentSync, unblock, wrapFn } from \".\";\n\n/**\n * Create the API functions and make them available through `window.consentApi`.\n *\n * There is also a [stub](https://shorturl.at/bcgyz) implementation:\n *\n * ```js\n * ((a,b)=>{a[b]||(a[b]={},[\"consentSync\"].forEach(c=>a[b][c]=()=>({cookie:null,consentGiven:!1,cookieOptIn:!0})),[\"consent\",\"consentAll\",\"unblock\"].forEach(c=>a[b][c]=(...d)=>new Promise(e=>a.addEventListener(b,()=>{a[b][c](...d).then(e)},{once:!0}))))})(window,\"consentApi\");\n * ```\n */\nfunction createApi(manager, blocker) {\n const apiConsent = (...args) => consent(manager, ...args);\n\n const apiConsentAll = (...args) => consentAll(manager, ...args);\n\n const apiConsentSync = (...args) => consentSync(manager, ...args);\n\n const apiConsentUnblock = (...args) => unblock(blocker, ...args);\n\n const wrapApis = {\n consent: apiConsent,\n consentAll: apiConsentAll,\n consentSync: apiConsentSync,\n unblock: apiConsentUnblock\n };\n\n const apiWrapFn = (...args) => wrapFn(wrapApis, blocker, manager, ...args);\n\n const api = { ...wrapApis,\n wrapFn: apiWrapFn\n };\n window.consentApi = api; // Dispatch event so e.g. stubs can react to it and forward functions\n\n window.dispatchEvent(new CustomEvent(\"consentApi\"));\n return api;\n}\n\nexport { createApi };","import { consent } from \".\";\n\n/**\n * `window.consentApi.consentAll`: Check if a set of given technical information (e.g. HTTP Cookie, LocalStorage, ...)\n * have a consent. This is similar to `window.consentApi.consent` but for multiple cookies.\n */\nfunction consentAll(options, technicalDefinitions) {\n return Promise.all(technicalDefinitions.map(args => consent(options, ...args)));\n}\n\nexport { consentAll };","import { HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_BY, OPT_IN_CONTENT_BLOCKER_ALL } from \"@devowl-wp/headless-content-unblocker\";\nimport { regExpPatternFromWildcardName } from \"..\";\n\n/**\n * `window.consentApi.unblock`: Check if a given URL / string is blocked by a Content Blocker:\n *\n * - When a Content Blocker exists, the Promise is only resolved after given consent\n * - When no Content Blocker exists, the Promise is immediate resolved\n *\n * Example (ES5):\n * ```js\n * (window.consentApi && window.consentApi.unblock(\"player.vimeo.com\") || Promise.resolve()).then(function() {\n * console.log(\"Consent for Vimeo given, unlock content...!\");\n * });\n * ```\n *\n * Example (ES6, Babel, TS):\n * ```js\n * (window.consentApi?.unblock(\"player.vimeo.com\") || Promise.resolve()).then(() => {\n * console.log(\"Consent for Vimeo given, unlock content...!\");\n * });\n * ```\n *\n * @param url\n * @param ref Create a visual content blocker to a given HTML element\n */\nfunction unblock(blocker, url, ref = document.createElement(\"div\")) {\n return new Promise(resolve => {\n // Find matching blocker\n let found;\n const isPseudoRef = !ref.parentElement;\n\n loop1: for (const row of blocker) {\n const {\n rules\n } = row; // Check if host matches\n\n for (const rule of rules) {\n const regexp = regExpPatternFromWildcardName(rule);\n\n if (url.match(new RegExp(regexp, \"s\"))) {\n found = row;\n break loop1;\n }\n }\n }\n\n if (found) {\n // Add attributes to DOM element so it can be consumed by `manipulateDom`\n ref.setAttribute(HTML_ATTRIBUTE_BY, \"services\");\n ref.setAttribute(HTML_ATTRIBUTE_COOKIE_IDS, found.services.join(\",\"));\n ref.setAttribute(HTML_ATTRIBUTE_BLOCKER_ID, found.id.toString());\n ref.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, () => {\n isPseudoRef && ref.remove();\n resolve();\n }); // Append blocking element to HTML DOM if not already exists\n\n if (isPseudoRef) {\n document.body.appendChild(ref);\n }\n } else {\n resolve();\n }\n });\n}\n\nexport { unblock };","import { Fragment } from \"react\";\nimport { getOtherOptionsFromWindow } from \"../utils\";\n\nconst BannerProductionNotice = () => {\n const {\n isPro,\n isLicensed,\n isDevLicense,\n bannerI18n: {\n noLicense,\n devLicense,\n devLicenseLearnMore,\n devLicenseLink\n }\n } = getOtherOptionsFromWindow();\n\n if (!isPro) {\n return null;\n }\n\n const style = {\n fontSize: 13,\n color: \"#c95252\",\n fontWeight: \"bold\",\n order: 9\n };\n let useText = \"\";\n\n if (isDevLicense) {\n useText = devLicense;\n } else if (!isLicensed) {\n useText = noLicense;\n }\n\n return useText ? h(\"div\", {\n style: style\n }, useText, isDevLicense && h(Fragment, null, \" (\", h(\"a\", {\n href: devLicenseLink,\n rel: \"noreferrer\",\n target: \"_blank\",\n style: style\n }, devLicenseLearnMore), \")\")) : null;\n};\n\nexport { BannerProductionNotice };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentPost = {\n path: \"/consent\",\n method: RouteHttpVerb.POST\n};","import { getOtherOptionsFromWindow } from \"../utils\";\n/**\n * Apply Consent Forwarding, it set's cross domain cookies via CORS requests.\n *\n * @see https://javascript.info/fetch-crossorigin\n */\n\nfunction applyConsentForwarding({\n endpoints,\n data\n}) {\n const {\n isPro\n } = getOtherOptionsFromWindow();\n\n if (isPro) {\n /* onlypro:start */\n const promises = [];\n\n for (const endpoint of endpoints) {\n promises.push(window.fetch(endpoint, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json;charset=utf-8\"\n },\n body: JSON.stringify(data)\n }));\n }\n\n return Promise.all(promises);\n /* onlypro:start */\n } else {\n return Promise.reject();\n }\n}\n\nexport { applyConsentForwarding };","import { locationRestConsentPost } from \"../wp-api\";\nimport { getOptionsFromWindow } from \"../utils\";\nimport { applyConsentForwarding, getCookieConsentManager } from \".\";\nimport { commonRequest } from \"@devowl-wp/utils\";\n\n/**\n * Save consent to the backend and apply cookies on running session.\n */\nasync function applyConsent({\n consent,\n markAsDoNotTrack = false,\n buttonClicked,\n blocker = 0,\n blockerThumbnail,\n tcfString\n}) {\n const {\n clientWidth,\n clientHeight\n } = document.documentElement;\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n } = getOptionsFromWindow(); // Use `commonRequest` cause on frontend we do not have `wp.i18n` available\n\n const {\n forward,\n uuid,\n cookie_revision,\n decision_in_cookie\n } = await commonRequest({\n location: locationRestConsentPost,\n options: {\n restNamespace,\n restRoot,\n restQuery,\n restNonce\n },\n sendRestNonce: false,\n request: { ...consent,\n markAsDoNotTrack,\n buttonClicked,\n viewPortWidth: clientWidth,\n viewPortHeight: clientHeight,\n blocker,\n blockerThumbnail,\n tcfString\n },\n params: {\n _wp_http_referer: window.location.href\n }\n }); // Does the browser support cookies? Save the decision locally in `window` so `getUserDecision` can fallback\n\n window.rcbDisabledCookieComp = {\n uuid,\n previousUuids: [],\n revision: cookie_revision,\n consent: decision_in_cookie\n };\n await Promise.all([// Apply consent forwarding and wait for all requests\n forward && applyConsentForwarding(forward), getCookieConsentManager().applyCookies({\n type: \"consent\"\n })].filter(Boolean));\n}\n\nexport { applyConsent };","import { getOptionsFromWindow } from \"./getOptionsFromWindow\";\n/**\n * Get the version of Real Cookie Banner as integer.\n */\n\nfunction getCmpVersion(type) {\n const split = getOptionsFromWindow().version.split(\".\");\n return +(type === \"major\" ? split[0] : split.map(i => +i < 10 ? \"0\".concat(i) : i).join(\"\")); // 1.11.1 => 1011000; 2.5.0 => 2005001;\n}\n\nexport { getCmpVersion };","import { CookieConsentManager } from \"@devowl-wp/cookie-consent-web-client\";\nimport { getCmpVersion, getOtherOptionsFromWindow } from \"../utils\";\n\nfunction getCookieConsentManager() {\n const {\n userConsentCookieName,\n revisionHash,\n setCookiesViaManager,\n groups,\n essentialGroup\n } = getOtherOptionsFromWindow();\n\n if (!window.rcbConsentManager) {\n window.rcbConsentManager = new CookieConsentManager({\n decisionCookieName: userConsentCookieName,\n essentialGroupSlug: essentialGroup,\n groups,\n revisionHash,\n supportsCookiesName: \"real_cookie_banner-test\",\n tagManager: setCookiesViaManager,\n skipOptIn: function (cookie) {\n const {\n presetId\n } = cookie;\n return [\"amazon-associates-widget\"].indexOf(presetId) > -1;\n },\n cmpId: process.env.TCF_CMP_ID,\n cmpVersion: getCmpVersion(\"major\"),\n tcfCookieName: \"\".concat(userConsentCookieName, \"-tcf\")\n });\n }\n\n return window.rcbConsentManager;\n}\n\nexport { getCookieConsentManager };","/**\n * Use this if you do not have the Mobx store available in your JavaScript asset.\n * E. g. the `banner.js` does not rely on the mobx store and should access the\n * localized options via `window.realCookieBanner` directly.\n */\nfunction getOptionsFromWindow() {\n return window[process.env.slug.replace(/-([a-z])/g, g => g[1].toUpperCase())];\n}\n\nexport { getOptionsFromWindow };","import { getOptionsFromWindow } from \"./getOptionsFromWindow\";\n/**\n * Use this if you do not have the Mobx store available in your JavaScript asset.\n * E. g. the `banner.js` does not rely on the mobx store and should access the\n * localized options via `window.realCookieBanner.others` directly.\n */\n\nfunction getOtherOptionsFromWindow() {\n return getOptionsFromWindow().others;\n}\n\nexport { getOtherOptionsFromWindow };","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t392: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkrealCookieBanner_\"] = self[\"webpackChunkrealCookieBanner_\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [568], () => (__webpack_require__(1307)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","module","exports","ERouteHttpVerb","getManagerDependingVariables","setCookiesViaManager","presetId","useGlobalObjectName","getDataLayer","expectedManagerPresetId","serviceIsManager","managerLabel","isGtm","isMtm","window","getServiceSelection","decisionCookieName","tagManager","groups","essentialGroupSlug","type","selectedGroups","isManagerActive","essentialGroupObj","filter","slug","consentEssentials","id","items","map","decision","getUserDecision","consent","console","warn","iterateServices","async","callback","group","service","_selectedGroups$group","isOptIn","indexOf","useTagManager","apply","options","applyBeforeInteractiveServices","push","document","dispatchEvent","CustomEvent","detail","services","ready","dataLayerPromise","isManagerOptOut","applyOptInReady","allOptInServices","skipOptIn","Promise","resolve","undefined","waitPromises","codeDynamics","codeOptIn","executeCodeOptInWhenNoTagManagerConsentIsGiven","isManager","isOnlyWhenNoConsentToManager","isSkipOptIn","putHtmlCodeToDom","waitObject","summary","all","applyOptIn","applyOptInOutManagerReady","dataLayer","realCookieBannerConsents","realCookieBannerOptInEvents","realCookieBannerOptOutEvents","tagManagerOptInEventName","tagManagerOptOutEventName","consentForwardingUniqueName","Object","assign","event","setTimeout","applyOptInOutManager","optInAllReady","deleteHttpCookies","allOptOutServices","optOutReady","codeOptOut","deleteTechnicalDefinitionsAfterOptOut","isEmbeddingOnlyExternalResources","technicalDefinitions","executeCodeOptOutWhenNoTagManagerConsentIsGiven","dynamics","name","pattern","RegExp","regExpPatternFromWildcardName","applyDynamicsToHtml","key","keys","test","useStorage","localStorage","sessionStorage","itemName","setItem","e","tries","getItem","removeItem","deleteCookiesLocally","some","applyOptOut","CookieConsentManager","constructor","this","applyCookies","getOption","getDefaultDecision","respectLegitimateInterests","result","ids","legalBasis","length","getOptions","cookieName","cookieValue","supportsCookiesPrefix","split","supportsCookies","concat","rcbDisabledCookieComp","string","separator","n","out","slice","join","explode","uuidString","revision","uuids","uuid","shift","previousUuids","JSON","parse","APPLY_INTERACTIVE_EVENT","BANNER_PRE_DECISION_SHOW_EVENT","BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT","OPT_IN_EVENT","OPT_IN_ALL_EVENT","OPT_OUT_EVENT","OPT_OUT_ALL_EVENT","PATTERN_NULL","PATTERN_UNDEFINED","idx","input","accessor","error","TypeError","errorString","toString","isGdprScanner","userAgent","navigator","cookie","helperCreateResolvablePromise","r","memorizedReadyStatePromises","loading","complete","interactive","LISTEN_TO_EVENTS","fn","state","executed","cb","readyState","reached","interactiveReached","interactiveResolve","memorizeReadyState","addEventListener","then","tmp","replace","str","memoizeSupported","opts","sameSite","getObject","delayNextCheck","maxTries","i","DYNAMICS_VARIABLE_REGEXP","src","fullMatch","variableName","prototype","hasOwnProperty","call","HTML_ATTRIBUTE_CAPTURE_PREFIX","HTML_ATTRIBUTE_CAPTURE_CLICK_PREFIX","HTML_ATTRIBUTE_CAPTURE_SUFFIX","HTML_ATTRIBUTE_BY","HTML_ATTRIBUTE_COOKIE_IDS","HTML_ATTRIBUTE_VISUAL_PARENT","HTML_ATTRIBUTE_VISUAL_FORCE","HTML_ATTRIBUTE_VISUAL_PAINT_MODE","HTML_ATTRIBUTE_VISUAL_PARENT_HIDE","HTML_ATTRIBUTE_INLINE","HTML_ATTRIBUTE_INLINE_STYLE","HTML_ATTRIBUTE_BLOCKER_ID","HTML_TAG_CONSENT_SCRIPT","HTML_ATTRIBUTE_BLOCKER_CONNECTED","HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED","HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE","HTML_ATTRIBUTE_TRANSFORM_WRAPPER","HTML_ATTRIBUTE_TRANSFORM_WRAPPER_VALUE","HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN","HTML_ATTRIBUTE_RESET_PARENT","HTML_ATTRIBUTE_RESET_PARENT_VALUE","HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER","HTML_ATTRIBUTE_GOT_CLICKED","HTML_ATTRIBUTE_GOT_CLICKED_VALUE","HTML_ATTRIBUTE_GOT_CLICKED_VALUE_DO_NOT_USE_IN_NESTED","HTML_ATTRIBUTE_THUMBNAIL","HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE","WINDOW_ONLOAD_UNBLOCK_REPLACEMENT","html","referenceNode","body","done","beforeWriteToken","token","attrs","booleanAttrs","href","content","attr","querySelector","INITIATOR_EXECUTION","OPT_IN_CONTENT_BLOCKER","OPT_IN_CONTENT_BLOCKER_ALL","dispatchResizeEvent","delayOrFromElement","delay","hasAttribute","getAttribute","Event","htmlDecode","_doc$querySelector","isUrl","DOMParser","parseFromString","documentElement","textContent","url","parents","element","selector","limit","elements","elem","parentElement","nodeType","Node","ELEMENT_NODE","AsciiSpinner","ms","chars","setI","interval","setInterval","clearInterval","h","dangerouslySetInnerHTML","__html","counter","CloseIcon","width","color","tooltipText","framed","renderInContainer","tooltipAlways","onClick","thickness","idCloseIconNotPortaled","idCloseIconPortaled","idCloseIconPlaceholder","ref","rect","y","x","title","position","always","PlainAntdIconAsSvg","icon","rest","svgString","extraSVGAttrs","style","fill","CommonCheckbox","hideCheckbox","isPartial","isChecked","isDisabled","fontSize","children","after","CheckboxIcon","MinusOutlined","CheckOutlined","bannerOrBlocker","useBannerOrBlocker","isRendered","setIsRendered","layout","borderRadius","headlineFontSize","checkboxBg","checkboxBorderWidth","checkboxBorderColor","checkboxActiveBg","checkboxActiveBorderColor","checkboxActiveColor","customCss","antiAdBlocker","mobile","pageRequestUuid4","visible","checked","disabled","useFontSize","scale","useCheckboxBorderWidth","height","className","cursor","opacity","display","background","border","padding","marginRight","verticalAlign","lineHeight","boxSizing","commonInlineStyleGroupsCheckbox","CookieProperty","label","value","printValueAs","banner","i18n","yes","no","useValue","wordBreak","c","target","rel","groupBorderWidth","groupBorderColor","borderLeft","paddingLeft","commonInlineStyleGroupsCookieProperty","CookiePropertyList","purpose","provider","providerPrivacyPolicyUrl","ePrivacyUSA","isEssentialGroup","ePrivacyUSAEnabled","types","http","abbr","backgroundColor","local","session","flash","indexedDb","legalRequirement","legitimateInterest","host","duration","durationUnit","isSessionDuration","technicalCookieDefinition","fontFamily","noExpiration","Cookie","onToggleCheck","propertyListProps","descriptionFontSize","marginTop","commonInlineStyleGroupsCookie","marginBottom","Portal","tag","renderIn","el","createElement","classList","add","appendChild","removeChild","Tooltip","size","rounded","noAnimate","bounce","usePlainCss","BannerContextFactory","static","context","useBanner","Context","BlockerContextFactory","useBlocker","FooterLink","anchorRest","isHover","setIsHover","onMouseEnter","onMouseLeave","footerDesign","fontColor","hoverFontColor","fontInheritFamily","design","linkTextDecoration","textDecoration","commonInlineStyleFooterLink","FooterPoweredByLink","poweredLink","affiliate","link","innerHTML","description","labelBehind","jsxJoin","components","filtered","Boolean","reduce","acc","curr","useCommonFooterLinks","onClose","putPoweredByLinkInRow","row1","close","poweredByLink","linkTarget","linkPrivacyPolicy","linkImprint","useLegalLinks","targetAttributes","rows","render","row","joinWithAndSeparator","arr","andSeparator","splice","supWithLineHeightFix","useCommonTeachings","disableDataProcessingInUnsafeCountries","disableAgeNotice","disableListServicesNotice","blocker","isEPrivacyUSA","ageNotice","isAgeNotice","listServicesNotice","isListServicesNotice","texts","ageNoticeBanner","consentForwardingExternalHosts","consentForwardingExternalHostsText","tcf","individualPrivacyOpen","individualTexts","individualDescription","essentialGroup","tcfBannerI18n","keepVariablesInTexts","consentForwardingExternalHostsFinalText","useDescription","servicesProcessingUnsafeCountries","flat","tcfVendorsProcessingUnsafeCountries","values","gvl","vendors","vendor","_additionalInformatio","additionalInformation","internationalTransfers","original","vendorConfigurations","useDataProcessingInUnsafeCountries","useAgeNotice","useListServicesNotice","listServicesNoticeLower","toLowerCase","hasBothPlaceholders","nonEssentialGroups","flattenSeparator","listServicesNames","groupIdx","listServiceGroupsNames","listOfServicesAppendix","teachings","legal","privacyPolicy","privacyPolicyExternalUrl","privacyPolicyIsExternalUrl","privacyPolicyLabel","imprint","imprintExternalUrl","imprintIsExternalUrl","imprintLabel","pageByIdUrl","pageIdToPermalink","css","uniqueId","keep","getElementById","getElementsByTagName","_element$parentNode","parentNode","BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER","commonInlineStyleBodyTeaching","bodyDesign","teachingsInheritTextAlign","teachingsTextAlign","teachingsInheritFontSize","teachingsFontSize","teachingsInheritFontColor","teachingsFontColor","textAlign","commonInlineStyleBodyTeachingsSeparator","teachingsSeparatorActive","teachingsSeparatorWidth","teachingsSeparatorHeight","teachingsSeparatorColor","maxWidth","commonGroupsInlineStyleLinkMore","linkColor","linkHoverColor","commonInlineStyleHeaderHeadline","headerDesign","fontWeight","hasCloseIcon","paddingRight","calculateNewVal","val","scalePercent","newVal","scaleMobile","enabled","scalePercentVertical","useWidthOfThisContainerId","replaceWith","additionalVerticalScaling","_document$getElementB","useScalePercentVertical","innerWidth","clientWidth","useOriginal","toJS","Array","isArray","v","getSsrPoweredByLink","originalPoweredLink","rcbPoweredByCacheOuterHTML","outerHTML","hexToRgb","hex","exec","parseInt","g","b","matchingSelector","matches","applyQueryString","query","merge","search","pool","recreateFetchPool","nonceDeprecationPool","nonce","restRecreateNonceEndpoint","resultPromise","reject","recreateFetch","fetch","method","ok","newNonce","text","returnNonce","NOTICE_ID","NOTICE_ATTRIBUTE_NAMESPACE","addCorruptRestApi","addNamespaceImmediate","namespace","onlyWhen","notice","onLine","li","setAttribute","childNodes","scrollIntoView","behavior","block","inline","addToNotice","Error","detectCorruptRestApiFailed","addCorruptRestApiLog","route","response","textarea","currentValue","unshift","Date","toLocaleTimeString","substr","parseResult","status","cloneForFallback","clone","json","lastError","line","startsWith","commonRequest","location","request","routeRequest","params","settings","cookieValueAsParam","multipart","sendRestNonce","restNamespace","apiUrl","URL","restRoot","permalinkPath","rest_route","pathname","foundParams","path","match","getParams","checkParam","_httpCookieInvalidate","stringify","pathSearch","fixedPathName","parsed","pathSearchEntry","protocol","usePath","restNonce","_wpnonce","s","_method","restQuery","commonUrlBuilder","allowBody","apiUrlBuilt","from","File","hasRestNonce","init","headers","Accept","pageUnload","pageUnloadListener","start","getTime","namespaceLine","remove","removeCorruptRestApi","removeEventListener","responseJSON","replay","code","retryAfter","get","replayData","resultAny","RouteHttpVerb","untrailingslashit","endsWith","trailingslashit","getWebpackPublicPath","toUpperCase","publicUrl","chunkFolder","preDecisionGatewaySupportsCookies","supportsCookiesName","isCrawler","preDecisionGatewayDynamicRequest","timeout","active","revisionHash","predecision","promise","preDecisionGatewayIsDoNotTrack","w","doNotTrack","msDoNotTrack","external","msTrackingProtectionEnabled","isDoNotTrack","preDecisionGatewayUserConsent","locationRestConsentDynamicPredecisionGet","isHiddenDueLegal","imprintHide","privacyPolicyHide","pageId","useBannerAnimation","isMobile","isMobileFirefox","term","animationIn","animationInOnlyMobile","animationOut","animationOutOnlyMobile","useAnimationIn","useAnimationOut","cancelEvent","preventDefault","stopPropagation","HREF_MATCHER","useResettableAnimation","animation","j","setJ","stateAnimation","setStateAnimation","stateAnimationReset","setStateAnimationReset","stateDuration","setStateDuration","stateDurationReset","setStateDurationReset","calculateRgba","alpha","getAnimationRelatedState","isVisible","animationInDuration","animationOutDuration","animationInDelay","animationOutDelay","AnimatedCss","animateOnMount","setAnimationRelatedState","classes","backwardStyle","transition","animationDelay","animationDuration","pointerEvents","useRenderedHeightsAsCssVars","cssId","cssElement","previousHeight","recalculate","currentHeight","getBoundingClientRect","Math","floor","animateContainer","ResizeObserver","ro","observe","disconnect","useBannerButtonCallbacks","onSave","updateGroupChecked","updateCookieChecked","updateIndividualPrivacyOpen","activeAction","buttonClickedAll","buttonClickedEssentials","buttonClickedCloseIcon","buttonClickedCustom","acceptAll","forEach","acceptEssentials","isCloseIcon","cookieId","acceptIndividual","openIndividualPrivacy","closeIcon","BannerCloseIcon","closeWithoutSaving","buttonClicked","container","BannerHeader","_","logo","logoRetina","logoAlt","showCloseIcon","headline","headerTitlePrivacyPolicyHistory","useRetina","devicePixelRatio","useLogo","useHeadline","dialogBorderRadius","borderWidth","borderColor","restDesign","inheritBg","bg","useType","useBorderWidth","p","zIndex","top","borderTop","borderRight","bannerHeaderInlineStyleContainer","bannerMaxWidth","inheritTextAlign","logoPosition","restHeaderDesign","individualLayout","useTextAlign","inheritBannerMaxWidth","margin","justifyContent","alignItems","flexDirection","bannerHeaderInlineStyle","alt","logoMaxHeight","logoMargin","logoFitDim","logoRetinaFitDim","isRetina","useFitDim","m","bannerHeaderInlineStyleLogo","BannerGroupSectionTitle","headlineFontColor","headlineFontWeight","bannerGroupsInlineStyleTitle","descriptionFontColor","bannerGroupsInlineStyleDescription","CommonLinkMore","onToggle","showMore","hideMore","isOpen","setIsOpen","newOpen","BannerCookie","_consent$groups","handleCheckbox","BannerGroup","_consent$groups$id","previewCheckboxActiveState","sort","groupBg","groupBorderRadius","groupPadding","groupInheritBg","useGroupBorderWidth","bannerGroupsInlineStyleGroup","BannerGroupList","groupSpacing","useGroups","clear","bannerGroupsInlineStyle","index","BannerDottedGroup","groupsFirstView","dottedGroupsInheritFontSize","dottedGroupsFontSize","whiteSpace","bannerInlineStyleBodyDottedGroupItem","dottedGroupsBulletColor","bannerInlineStyleBodyDottedGroupBullet","BannerDottedGroupList","showGroups","lineBreak","bannerInlineStyleBodyDottedGroups","BannerHistorySelect","selectedId","setSelectedId","history","selectHistoryEntry","historyLabel","historySelectNone","selectedHistoryItem","_history$filter","optionStyle","bannerInlineStyleHistorySelectOption","descriptionInheritFontSize","borderBottom","bannerInlineStyleHistorySelect","onChange","isUnblock","isForwarded","created","toLocaleString","lang","bannerButtonsInlineStyleCommon","order","hoverBg","hoverBorderColor","isTwoButtonRowLayout","fullWidth","marginLeft","overflow","outline","flex","bannerButtonsInlineStyleAcceptEssentials","isTcf","acceptEssentialsFontSize","acceptEssentialsBg","acceptEssentialsTextAlign","acceptEssentialsBorderColor","acceptEssentialsPadding","acceptEssentialsBorderWidth","acceptEssentialsFontColor","acceptEssentialsFontWeight","acceptEssentialsHoverBg","acceptEssentialsHoverFontColor","acceptEssentialsHoverBorderColor","acceptAllFontWeight","acceptAllFontSize","acceptAllPadding","bannerButtonsInlineStyleAcceptIndividual","acceptIndividualFontSize","acceptIndividualBg","acceptIndividualTextAlign","acceptIndividualBorderColor","acceptIndividualPadding","acceptIndividualBorderWidth","acceptIndividualFontColor","acceptIndividualFontWeight","acceptIndividualHoverBg","acceptIndividualHoverFontColor","acceptIndividualHoverBorderColor","bannerButtonsInlineStyleSave","saveButton","bannerButtonsInlineStyleAcceptAll","acceptAllBg","acceptAllTextAlign","acceptAllBorderColor","acceptAllBorderWidth","acceptAllFontColor","acceptAllHoverBg","acceptAllHoverFontColor","acceptAllHoverBorderColor","BannerButton","inlineStyle","busyOnClick","isBusy","setIsBusy","handleOnClick","acceptAllOneRowLayout","acceptEssentialsUseAcceptAll","useAcceptEssentials","interactionAttr","useStyleFn","BannerButtonList","buttonOrder","buttonOrderString","acceptAllText","acceptEssentialsText","acceptIndividualText","saveButtonType","useAcceptAll","saveButtonUseAcceptAll","save","didGroupFirstChange","productionNotice","useAcceptEssentialsUseAcceptAll","useSaveButtonUseAcceptAll","buttonOrderAll","essential","buttonOrderEssential","individual","buttonOrderIndividual","buttonOrderSave","buttonToOrder","previous","orderToButton","handleAll","handleEssentials","handleIndividual","groupsFirstViewEnabled","BannerBody","leftSideContainerRef","rightSideContainerRef","leftSideId","rightSideId","contentId","stackOrGroups","leftSide","usePadding","float","paddingTop","paddingBottom","bannerInlineStylesLeftSide","descriptionTextAlign","bannerInlineStyleBodyDescription","teaching","rightSide","dialogMaxWidth","inheritDialogMaxWidth","flexWrap","bannerInlineStylesRightSide","bannerInlineStyleBodyContainer","bannerInlineStyleBody","BannerFooter","isConsentRecord","handleClose","links","renderLinks","useCommonFooterLink","bottom","bannerFooterInlineStyleContainer","bannerFooterInlineStyle","BannerContent","current","currentRef","showHeader","hideHeader","showScrollBoxShadow","setShowScrollBoxShadow","updateShowScrollBoxShadow","clientHeight","scrollHeight","scrollTop","offsetHeight","hasScrollbar","scrolledToBottom","ceil","platform","headerRef","footerRef","innerHeight","mobileMaxHeight","maxHeight","useMobileMaxHeight","closeIconDistance","bannerContentInlineStyle","useDesignBorderWidth","bannerHeaderInlineStyleSeparator","bannerFooterInlineStyleSeparator","BannerAnimatedContent","animationVisible","stateAnimationIn","stateAnimationInDuration","stateAnimationOut","stateAnimationOutDuration","dialogPosition","dialogMargin","bannerPosition","boxShadowEnabled","boxShadowOffsetX","boxShadowOffsetY","boxShadowBlurRadius","boxShadowSpreadRadius","boxShadowColor","boxShadowColorAlpha","alignment","mobileAlignment","alignSelf","boxShadow","bannerContentInlineStyleInner","Banner","skipOverlay","gotHiddenDueLegal","hiddenDueLegal","show","overlay","showOverlay","dataset","rcbPreviousOverflow","useRestrictScrollWhenVisible","setInvalidate","updateSize","fetchHistory","originalConsent","setOriginalConsent","consentGroups","useBannerHistory","openBanner","openHistory","revokeConsent","handleType","successMessage","eventListenerDocumentClick","parent","eventListenerHashChange","hash","substring","useBannerActionLinks","bannerOverlayInlineStyleAlignment","overlayBg","overlayBgAlpha","overlayBlur","backdropFilter","left","right","bannerOverlayInlineStyle","locationRestConsentGet","WebsiteBanner","customizeValuesBanner","tcfMetadata","userConsentCookieName","bannerI18n","isCurrentlyInTranslationEditorPreview","getOtherOptionsFromWindow","userDecision","tcfObject","tcfMeta","useTcf","toggleOverlay","useBannerAnimationCallback","useDuration","trim","useBannerToggleOverlay","updateTcfFilterBy","toggleWithActiveAction","setContextValue","refreshSiteAfterSave","args","alert","reload","newFilter","tcfFilterBy","opened","newConsent","groupId","cookieIds","additionalChanges","useBannerStateContextCallbacks","applyConsent","getCookieConsentManager","tcfString","contextValue","markAsDoNotTrack","appliedConsent","getOptionsFromWindow","customizeIdsBanner","others","isAcceptAllForBots","isPreventPreDecision","hasDynamicPreDecisions","isRespectDoNotTrack","resultIfBot","preventPreDecision","classNames","handler","useOptions","gateways","onIsDoNotTrack","onShowCookieBanner","gateway","applyWithOptions","preDecisionGateway","viewPortWidth","viewPortHeight","_wp_http_referer","useBannerPreDecisionGateway","listener","useBannerConsentListener","BannerContext","Provider","amazonWidgetsSlotNum","locationRestConsentClearDelete","consentSync","manager","typeOrId","found","allCookies","relevance","td","regexp","already","relevantCookie","a","consentGiven","cookieOptIn","foundCookie","wrapFn","apis","checkExecution","failedSyncReturnValue","skipRetry","overwrittenFns","retryWrap","useFns","passedFn","overwrite","objectResolved","overwritten","object","originalFunctionBody","overwriteFn","callOriginal","checkResult","that","unblock","apiFn","forwardArgs","retry","amznAssoWidgetHtmlId","slotNum","adContainer","et_pb_map_init","jQuery","google","other","tcfCmpApi","ensureBodyElement","querySelectorAll","allUuids","printConsentUuidsToHTMLElement","cookies","deleteCookiesServer","wrapApis","consentAll","isPseudoRef","loop1","rules","rule","api","consentApi","createApi","fnGetWindow","mkdf","modules","destinationMaps","mkdfGoogleMaps","BannerProductionNotice","isPro","isLicensed","isDevLicense","noLicense","devLicense","devLicenseLearnMore","devLicenseLink","useText","locationRestConsentPost","applyConsentForwarding","endpoints","data","promises","endpoint","credentials","blockerThumbnail","forward","cookie_revision","decision_in_cookie","getCmpVersion","version","rcbConsentManager","cmpId","cmpVersion","tcfCookieName","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","d","definition","o","defineProperty","enumerable","globalThis","Function","obj","prop","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}