{"version":3,"file":"banner.pro.js","mappings":"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","sources":["webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/chunk loaded","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/webpack-config@0.2.12/emptyModule.js","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/api@0.5.3/webserver/http-verb.ts","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/getManagerDependingVariables.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/decision/getServiceSelection.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/apply.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/optIn.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/optInOutManager.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/optOut.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/deleteCookiesLocally.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/apply/manager.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/decision/getDefaultDecision.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/decision/getUserDecision.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/applyInteractive.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/bannerPredecisionShow.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/bannerPredecisionShowInteractive.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/optIn.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/optInAll.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/optOut.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/events/optOutAll.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/idx.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/isGdprScanner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/ready.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/regExpPatternFromWildcardName.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/pregQuote.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/supportsCookies.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/waitObject.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/dom/applyDynamicsToHtml.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/dom/htmlAttributes.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/dom/putHtmlCodeToDom.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/events/initiatorExecution.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/events/optInContentBlocker.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/events/optInContentBlockerAll.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/utils/dispatchResizeEvent.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/utils/htmlDecode.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/utils/isHost.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/utils/isUrl.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/headless-content-unblocker@0.6.3/utils/parents.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/asciiSpinner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/closeIcon.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/plainAntdIconAsSvg.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/checkbox.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/groups/checkbox.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/groups/cookieProperty.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/groups/cookieProperty.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/groups/cookiePropertyList.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/groups/cookie.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/groups/cookie.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/portal.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/tooltip.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/contexts/banner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/contexts/blocker.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/footer/link.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/footer/link.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/footer/poweredByLink.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/utils/jsxJoin.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/common/useCommonFooterLink.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/common/useCommonTeachings.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/useBannerOrBlocker.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/useLegalLinks.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/usePlainCss.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/index.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/body/teaching.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/body/teachingSeparator.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/groups/linkMore.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/common/header/headline.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/scale.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/others/getSsrPoweredByLink.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/types/commonContext.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/utils/hexToRgb.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/resolve-none-computed-style@1.1.16/matchingSelector.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/web-html-element-interaction-recorder@0.2.4/recorder/records.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/web-html-element-interaction-recorder@0.2.4/utils/commonStringPrefix.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/web-html-element-interaction-recorder@0.2.4/utils/calcFullSelector.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/web-html-element-interaction-recorder@0.2.4/recorder/recorder.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/obfuscatePath.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/commonUrlBuilder.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/nonceDeprecationPool.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/corruptRestApi.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/parseResult.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/commonRequest.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/factory/ajax/routeHttpVerbEnum.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/utils@1.13.1/helpers.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/supportsCookies.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/isCrawler.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/promiseTimeout.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/dynamicRequest.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/utils/isDoNotTrack.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/isDoNotTrack.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/userConsent.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/wp-api/consentDynamicPredecision.get.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/others/isHiddenDueLegal.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerAnimation.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerActionLinks.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerStateContextCallbacks.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/useResettableAnimation.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/utils/calculateRgba.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/animateCss.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/useRenderedHeightsAsCssVars.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerButtonCallbacks.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/header/closeIcon.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/header/header.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/header/container.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/header/header.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/header/logo.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/groups/sectionTitle.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/groups/title.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/groups/description.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/common/linkMore.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/groups/cookie.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/groups/group.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/groups/group.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/groups/list.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/groups/groups.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/groups/dottedGroup.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/dottedGroupItem.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/dottedGroupBullet.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/groups/dottedGroupList.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/dottedGroups.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/description.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/body/historySelect.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/historySelectOption.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/historySelect.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/buttons/common.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/buttons/acceptEssentials.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/buttons/acceptIndividual.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/buttons/save.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/buttons/acceptAll.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/body/button.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/utils/isIE.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/body/buttonList.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/body/body.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/leftSide.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/rightSide.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/container.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/body/body.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/footer/footer.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/footer/container.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/footer/footer.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/body/content.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/content/content.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/header/separator.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/footer/separator.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/body/animatedContent.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/content/inner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/components/banner/banner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/useRestrictScrollWhenVisible.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerHistory.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/overlay/alignment.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/inlineStyles/banner/overlay/overlay.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/wp-api/consent.get.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/components/websiteBanner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/hooks/useTcf.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerToggleOverlay.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/hooks/useBannerPreDecisionGateway.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/utils/isCustomize.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/isCrawler.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/isPreventPreDecision.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/hasPageClass.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/predecision/gateway.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/react-cookie-banner@0.3.6/hooks/banner/useBannerConsentListener.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/others/comp/listenPresetOptIn.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/wp-api/consentClear.delete.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/api/consentSync.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/api/consent.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/api/consentAll.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/api/unblock.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/api/wrapFn.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/banner.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/tcf/cmpApi.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/utils/ensureBodyElement.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/decision/printConsentUuidsToHTMLElement.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/others/deleteCookiesServer.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/internal/cookie-consent-web-client@0.3.7/api/createApi.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/components/bannerProductionNotice.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/wp-api/consent.post.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/others/applyConsentForwarding.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/others/applyConsent.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/utils/getCmpVersion.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/others/getCookieConsentManager.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/utils/getOptionsFromWindow.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/src/utils/getOtherOptionsFromWindow.tsx","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/bootstrap","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/compat get default export","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/define property getters","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/global","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/hasOwnProperty shorthand","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/make namespace object","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/publicPath","webpack://devowl-local-files/real-cookie-banner/banner-pro/webpack/runtime/jsonp chunk loading","webpack://devowl-local-files/real-cookie-banner/banner-pro/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 = /*#__PURE__*/function (ERouteHttpVerb) {\n ERouteHttpVerb[\"GET\"] = \"GET\";\n ERouteHttpVerb[\"POST\"] = \"POST\";\n ERouteHttpVerb[\"PUT\"] = \"PUT\";\n ERouteHttpVerb[\"PATCH\"] = \"PATCH\";\n ERouteHttpVerb[\"DELETE\"] = \"DELETE\";\n return ERouteHttpVerb;\n}(ERouteHttpVerb || {});\nexport { ERouteHttpVerb };","export const LABEL_GTM = \"Google Tag Manager\";\nexport const LABEL_MTM = \"Matomo Tag Manager\";\nfunction getManagerDependingVariables(setCookiesViaManager, presetId) {\n let useGlobalObjectName;\n let getDataLayer;\n let serviceIsManager = false;\n let managerLabel = \"\";\n let expectedManagerPresetId;\n if (setCookiesViaManager && setCookiesViaManager !== \"none\") {\n const isGtm = setCookiesViaManager === \"googleTagManager\";\n const isMtm = setCookiesViaManager === \"matomoTagManager\";\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 if (isGtm || isMtm) {\n getDataLayer = () => {\n window[useGlobalObjectName] = window[useGlobalObjectName] || [];\n return window[useGlobalObjectName];\n };\n }\n if (expectedManagerPresetId && presetId === expectedManagerPresetId) {\n serviceIsManager = true;\n }\n }\n return {\n getDataLayer,\n serviceIsManager,\n managerLabel,\n expectedManagerPresetId\n };\n}\nexport { getManagerDependingVariables };","import { getUserDecision } from \".\";\nimport { getManagerDependingVariables } from \"../apply\";\n/**\n * Read the selected groups + services depending on the passed type.\n */\nfunction getServiceSelection(_ref) {\n let {\n decisionCookieName,\n tagManager,\n groups,\n essentialGroupSlug,\n type\n } = _ref;\n let selectedGroups;\n const isManagerActive = tagManager && tagManager !== \"none\";\n const [essentialGroupObj] = groups.filter(_ref2 => {\n let {\n slug\n } = _ref2;\n return slug === essentialGroupSlug;\n });\n const consentEssentials = {\n [essentialGroupObj.id]: essentialGroupObj.items.map(_ref3 => {\n let {\n id\n } = _ref3;\n return id;\n })\n };\n\n // Read current consent\n if (type === \"consent\") {\n const decision = getUserDecision(decisionCookieName);\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 if (type === \"essentials\") {\n selectedGroups = consentEssentials;\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 const isOptIn = type === \"all\" || selectedGroups[group.id]?.indexOf(service.id) > -1;\n const useTagManager = getManagerDependingVariables(tagManager, service.presetId);\n await callback(group, service, isOptIn, useTagManager);\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/**\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 */\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 }));\n\n // Wait all events are initialized\n await ready();\n\n // Do opt-in\n const {\n dataLayerPromise,\n isManagerOptOut,\n services,\n ready: applyOptInReady\n } = await applyOptIn(options);\n\n // Wait for manager's dataLayer loaded (can also be none) and do manager's events\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 }));\n\n // Do opt-out\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}\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 * 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;\n\n // Handle managers like GTM and MTM\n let isManagerOptOut = false;\n let dataLayerPromise = Promise.resolve(undefined);\n const waitPromises = [];\n\n // Handle opt-ins sequentially\n await iterateServices(async (group, service, isOptIn, _ref) => {\n let {\n getDataLayer,\n serviceIsManager\n } = _ref;\n const {\n codeDynamics,\n codeOptIn,\n executeCodeOptInWhenNoTagManagerConsentIsGiven\n } = service;\n const isManager = isManagerActive && serviceIsManager;\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 if (!isOnlyWhenNoConsentToManager && !isSkipOptIn) {\n waitPromises.push(putHtmlCodeToDom(codeOptIn, codeDynamics));\n }\n\n // If this is a manager, wait for the object to be loaded\n /* onlypro:start */\n if (isManager) {\n dataLayerPromise = waitObject(getDataLayer);\n }\n /* onlypro:end */\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\n return {\n isManagerOptOut,\n dataLayerPromise,\n services: allOptInServices,\n ready: Promise.all(waitPromises)\n };\n}\nexport { applyOptIn };","import { putHtmlCodeToDom } from \"@devowl-wp/headless-content-unblocker\";\nimport { getServiceSelection } from \"../decision\";\n\n/**\n * Opt-in and opt-out to a set of services for a given data manager like GTM / MTM.\n */\nasync function applyOptInOutManager(options, dataLayer, isManagerOptOut) {\n const waitPromises = [];\n\n /* onlypro:start */\n const {\n isManagerActive,\n iterateServices\n } = getServiceSelection(options);\n\n // When there is a manager, let's push all opt-in and opt-out events (parallel)\n if (dataLayer) {\n // Calculate variables for data layer\n const realCookieBannerConsents = {};\n const realCookieBannerOptInEvents = {};\n const realCookieBannerOptOutEvents = {};\n await iterateServices((group, service, isOptIn, _ref) => {\n let {\n serviceIsManager\n } = _ref;\n if (!serviceIsManager) {\n const {\n tagManagerOptInEventName,\n tagManagerOptOutEventName,\n uniqueName\n } = service;\n if (tagManagerOptInEventName) {\n realCookieBannerOptInEvents[tagManagerOptInEventName] = isOptIn;\n }\n if (tagManagerOptOutEventName) {\n realCookieBannerOptOutEvents[tagManagerOptOutEventName] = !isOptIn;\n }\n if (uniqueName) {\n realCookieBannerConsents[uniqueName] = isOptIn;\n }\n }\n });\n Object.assign(realCookieBannerConsents, realCookieBannerOptInEvents);\n Object.assign(realCookieBannerConsents, realCookieBannerOptOutEvents);\n dataLayer.push({\n realCookieBannerConsents,\n realCookieBannerOptInEvents,\n realCookieBannerOptOutEvents\n });\n\n // Opt-in events\n iterateServices((group, _ref2, isOptIn, _ref3) => {\n let {\n tagManagerOptInEventName: event\n } = _ref2;\n let {\n serviceIsManager\n } = _ref3;\n if (isOptIn && event && !serviceIsManager) {\n dataLayer.push({\n event\n });\n }\n });\n\n // Wait x seconds and apply opt-out events (should we add this to `waitPromises`?! I do not think so)\n setTimeout(() => iterateServices((group, _ref4, isOptIn, _ref5) => {\n let {\n tagManagerOptOutEventName: event\n } = _ref4;\n let {\n serviceIsManager\n } = _ref5;\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, _ref6, isOptIn) => {\n let {\n codeDynamics,\n codeOptIn,\n executeCodeOptInWhenNoTagManagerConsentIsGiven\n } = _ref6;\n if (isOptIn && executeCodeOptInWhenNoTagManagerConsentIsGiven) {\n waitPromises.push(putHtmlCodeToDom(codeOptIn, codeDynamics));\n }\n });\n }\n /* onlypro:false */\n\n return {\n ready: Promise.all(waitPromises)\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/**\n * Opt-in to a set of services for a given data manager like GTM / MTM.\n */\nasync function applyOptOut(options, isManagerOptOut) {\n const allOptOutServices = [];\n const {\n isManagerActive,\n iterateServices\n } = getServiceSelection(options);\n const waitPromises = [];\n\n // Handle opt-outs sequentially\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 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 if (isOnlyWhenNoConsentToManager && isManagerOptOut || !isOnlyWhenNoConsentToManager) {\n waitPromises.push(putHtmlCodeToDom(codeOptOut, codeDynamics));\n }\n if (deleteTechnicalDefinitionsAfterOptOut && !isEmbeddingOnlyExternalResources) {\n deleteCookiesLocally(technicalDefinitions, codeDynamics);\n\n // Mark deletable server-side services\n if (technicalDefinitions.some(_ref => {\n let {\n type\n } = _ref;\n return type === \"http\";\n })) {\n deleteHttpCookies.push(id);\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}\nexport { applyOptOut };","import Cookie from \"js-cookie\";\nimport { applyDynamicsToHtml } from \"@devowl-wp/headless-content-unblocker\";\nimport { regExpPatternFromWildcardName } from \"../utils\";\n\n/**\n * Delete cookies on client side (currently only `localStorage` and `sessionStorage`).\n */\nfunction deleteCookiesLocally(technicalDefinitions, dynamics) {\n for (const {\n type,\n name\n } of technicalDefinitions) {\n // Create valid Regxp pattern\n const wildcardString = applyDynamicsToHtml(name, dynamics);\n\n // Never delete the wildcard `*` as this could lead to side effects, e.g. `wordpress_test_cookie`\n if (wildcardString === \"*\") {\n continue;\n }\n const pattern = new RegExp(regExpPatternFromWildcardName(wildcardString), \"g\");\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 break;\n }\n case \"local\":\n case \"session\":\n {\n try {\n const useStorage = type === \"local\" ? window.localStorage : window.sessionStorage;\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) {\n // Silence is golden. A `QuotaExceededError` can be thrown but we ignore it, because we remove the item\n }\n\n // Try as long (but max 100 times) until deleted\n let tries = 0;\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 break;\n }\n default:\n break;\n }\n }\n}\nexport { deleteCookiesLocally };","import { apply } from \".\";\nimport { getDefaultDecision, getUserDecision } from \"..\";\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 applyCookies(options) {\n return apply({\n ...options,\n ...this.options\n });\n }\n getUserDecision() {\n return getUserDecision(this.getOption(\"decisionCookieName\"));\n }\n getDefaultDecision() {\n let respectLegitimateInterests = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n return getDefaultDecision(this.options, respectLegitimateInterests);\n }\n getOption(name) {\n return this.options[name];\n }\n getOptions() {\n return this.options;\n }\n}\nexport { CookieConsentManager };","/**\n * Get the default decision and respect essential group and legitimate interests.\n */\nfunction getDefaultDecision(_ref) {\n let {\n groups,\n essentialGroupSlug\n } = _ref;\n let respectLegitimateInterests = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const [essentialGroupObj] = groups.filter(_ref2 => {\n let {\n slug\n } = _ref2;\n return slug === essentialGroupSlug;\n });\n\n // We need always use the current essential group\n const result = {\n [essentialGroupObj.id]: essentialGroupObj.items.map(_ref3 => {\n let {\n id\n } = _ref3;\n return id;\n })\n };\n if (respectLegitimateInterests) {\n for (const group of groups) {\n if (group === essentialGroupObj) {\n continue;\n }\n const ids = group.items.filter(_ref4 => {\n let {\n legalBasis\n } = _ref4;\n return legalBasis === \"legitimate-interest\";\n }).map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n if (ids.length) {\n result[group.id] = ids;\n }\n }\n }\n return result;\n}\nexport { getDefaultDecision };","import { supportsCookies } from \"../utils\";\nimport Cookie from \"js-cookie\";\n/**\n * Regexp to validate and parse the cookie value with named capture groups.\n *\n * @see https://regex101.com/r/6UXL8j/1\n */\nconst COOKIE_VALUE_REGEXP = /^(?\\d+)?:?(?(?:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}[,]?)+):(?[a-f0-9]{32}):(?.*)$/;\nconst cookieValueValidateCache = {};\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 if (!cookieValue) {\n const [supportsCookiesPrefix] = cookieName.split(\"-\");\n if (!supportsCookies(supportsCookiesPrefix ? `${supportsCookiesPrefix}-test` : undefined)) {\n // Use our `window` object instead of cookie value\n return window.rcbDisabledCookieComp || false;\n }\n return false;\n }\n\n // Save regexp- and validation time\n if (cookieValueValidateCache[cookieValue]) {\n return cookieValueValidateCache[cookieValue];\n }\n const match = cookieValue.match(COOKIE_VALUE_REGEXP);\n if (!match) {\n return false;\n }\n const {\n groups\n } = match;\n const previousUuids = groups.uuids.split(\",\");\n const uuid = previousUuids.shift();\n const result = {\n uuid,\n previousUuids,\n created: groups.createdAt ? new Date(+groups.createdAt * 1000) : undefined,\n revision: groups.revisionHash,\n consent: JSON.parse(groups.decisionJson)\n };\n cookieValueValidateCache[cookieValue] = result;\n return result;\n}\nexport { getUserDecision };","/**\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/**\n * TypeScript port of https://github.com/facebook/idx/blob/bbd936928263a261b6feffd237e1e9ed93764fac/packages/idx/src/idx.js#L14-L57.\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 if (PATTERN_NULL.test(errorString)) {\n return null;\n } else if (PATTERN_UNDEFINED.test(errorString)) {\n return undefined;\n }\n }\n throw error;\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 if (userAgent) {\n if (/(cookiebot|2gdpr)\\.com/i.test(userAgent)) {\n return true;\n }\n if (/cmpcrawler(reject)?cookie=/i.test(cookie)) {\n return true;\n }\n }\n return false;\n}\nexport { isGdprScanner };","const helperCreateResolvablePromise = () => {\n let resolve;\n const promise = new Promise(r => resolve = r);\n return [false, promise, resolve];\n};\nconst memorizedReadyStatePromises = {\n loading: helperCreateResolvablePromise(),\n complete: helperCreateResolvablePromise(),\n interactive: helperCreateResolvablePromise()\n};\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 */\nconst memorizeReadyState = () => {\n const {\n readyState\n } = document;\n const [reached,, resolve] = memorizedReadyStatePromises[readyState];\n if (!reached) {\n memorizedReadyStatePromises[readyState][0] = true;\n resolve();\n\n // Edge case: Already `complete`, but `interactive` was never fulfilled\n const [interactiveReached,, interactiveResolve] = memorizedReadyStatePromises.interactive;\n if (readyState === \"complete\" && !interactiveReached) {\n memorizedReadyStatePromises.interactive[0] = true;\n interactiveResolve();\n }\n }\n};\n\n/**\n * Listen to multiple events. Why? See same reason as in `memorizedReadyStatePromises()`.\n */\nconst LISTEN_TO_EVENTS = [\"readystatechange\", \"rocket-readystatechange\", \"DOMContentLoaded\", \"rocket-DOMContentLoaded\", \"rocket-allScriptsLoaded\"];\n\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 */\nconst ready = function (fn) {\n let state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"complete\";\n return new Promise(resolve => {\n let executed = false;\n const cb = () => {\n memorizeReadyState();\n if (\n // Only execute once\n executed ||\n // Ready-state not yet reached\n !memorizedReadyStatePromises[state][0]) {\n return;\n }\n executed = true;\n fn?.();\n\n // 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 setTimeout(resolve, 0);\n };\n cb();\n for (const event of LISTEN_TO_EVENTS) {\n document.addEventListener(event, cb);\n }\n memorizedReadyStatePromises[state][1].then(cb);\n });\n};\nexport { ready, LISTEN_TO_EVENTS };","import { pregQuote } from \".\";\n\n/**\n * Create regular expression pattern from a string like `my_test*` and replace asterisks\n * with `(.*)`.\n */\nfunction regExpPatternFromWildcardName(name) {\n const tmp = name.replace(/\\*/g, \"PLEACE_REPLACE_ME_AGAIN\");\n return `^${pregQuote(tmp).replace(/PLEACE_REPLACE_ME_AGAIN/g, \"(.*)\")}$`;\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(`[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\${delimiter || \"\"}-]`, \"g\"), \"\\\\$&\");\n}\nexport { pregQuote };","import Cookies from \"js-cookie\";\nimport { isGdprScanner } from \".\";\nlet memoizeSupported = undefined;\n\n/**\n * Check if the current environment supports cookies.\n *\n * @see https://git.io/JcXiP\n * @returns\n */\nfunction supportsCookies() {\n let cookieName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"test\";\n if (typeof memoizeSupported === \"boolean\") {\n return memoizeSupported;\n }\n\n // Special case: for GDPR scanners we consider automatically that the browser\n // supports settings cookies.\n if (isGdprScanner()) {\n return true;\n }\n try {\n const opts = {\n sameSite: \"Lax\"\n };\n Cookies.set(cookieName, \"1\", opts);\n const result = document.cookie.indexOf(`${cookieName}=`) !== -1;\n Cookies.remove(cookieName, opts);\n memoizeSupported = result;\n return result;\n } catch (e) {\n return false;\n }\n}\nexport { supportsCookies };","/**\n * Wait for a given object which is calculated through a callback.\n */\nasync function waitObject(getObject) {\n let delayNextCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n let maxTries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let i = 0;\n while (!getObject()) {\n if (maxTries > 0 && i >= maxTries) {\n return undefined;\n }\n await new Promise(r => setTimeout(r, delayNextCheck));\n i++;\n }\n return getObject();\n}\nexport { waitObject };","const DYNAMICS_VARIABLE_REGEXP = /{{([A-Za-z0-9_]+)}}/gm;\n\n/**\n * Takes any string and replaces `{{myVariable}}` with the value of the passed `dynamics` map.\n */\nfunction applyDynamicsToHtml(src, dynamics) {\n return src.replace(DYNAMICS_VARIABLE_REGEXP, (fullMatch, variableName) => Object.prototype.hasOwnProperty.call(dynamics, variableName) ? dynamics[variableName] : fullMatch);\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\";\n\n// TODO: cookie -> required?\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_DELEGATE_CLICK = \"consent-delegate-click\";\nexport const HTML_ATTRIBUTE_JQUERY_HIJACK_EACH = \"consent-jquery-hijack-each\";\nexport const HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE = \"consent-click-dispatch-resize\";","import postscribe from \"postscribe\";\nimport { applyDynamicsToHtml } from \".\";\nimport { htmlDecode } from \"../utils\";\n\n/**\n * We do not modify `window.onload` directly, you need to use this variable name.\n */\nconst WINDOW_ONLOAD_UNBLOCK_REPLACEMENT = \"rcbInitiatorOnload\";\n\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\nfunction putHtmlCodeToDom(html, dynamics) {\n let referenceNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 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;\n\n // Probably skip this token? (do not use `disabled` tag as it should still be written to DOM)\n if (booleanAttrs?.[\"skip-write\"]) {\n return false;\n }\n\n // Allow `window.onload` event\n if (content) {\n token.content = content.replace(/window\\.onload\\s+=/g, `window.${WINDOW_ONLOAD_UNBLOCK_REPLACEMENT} =`);\n }\n\n // Automatically unescape html entities in all attributes (https://github.com/krux/postscribe/issues/346#issuecomment-310227387)\n for (const attr in attrs) {\n attrs[attr] = htmlDecode(attrs[attr]);\n\n // Allow to skip complete HTML tag when it already got loaded by unique ID (e.g. Google Tag Manager gtag.js)\n if (attr === \"unique-write-name\" && document.querySelector(`[unique-write-name=\"${attrs[attr]}\"]`)) {\n return false;\n }\n }\n\n // Scripts\n if (src) {\n token.src = htmlDecode(src);\n }\n\n // Styles\n if (href) {\n token.href = htmlDecode(href);\n }\n return token;\n }\n });\n } else {\n resolve();\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/**\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 */\nfunction dispatchResizeEvent() {\n let delayOrFromElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let delay;\n if (typeof delayOrFromElement === \"number\") {\n delay = delayOrFromElement;\n } else if (delayOrFromElement?.hasAttribute(HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE)) {\n delay = +delayOrFromElement.getAttribute(HTML_ATTRIBUTE_CLICK_DISPATCH_RESIZE);\n } else {\n return;\n }\n setTimeout(() => {\n try {\n window.dispatchEvent(new Event(\"resize\"));\n } catch (e) {\n // You are running in IE, it's a UI bug, we can skip...\n }\n }, delay);\n}\nexport { dispatchResizeEvent };","import { isUrl, isHost } from \".\";\n\n/**\n * Decode HTML entities in a given string.\n *\n * @see https://stackoverflow.com/a/34064434/5506547\n */\nfunction htmlDecode(input) {\n const inputIsUrl = isUrl(input) && !isHost(input);\n if (inputIsUrl) {\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(\"a\")?.href;\n } else {\n // Keep XSS protection intact\n const doc = new DOMParser().parseFromString(input, \"text/html\");\n return doc.documentElement.textContent;\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}\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}\nexport { isUrl };","import { matchingSelector } from \"@devowl-wp/resolve-none-computed-style\";\n\n/**\n * Port of `jQuery.parents()`.\n *\n * @param selector Use `undefined` to get all parents\n */\nfunction parents(element, selector) {\n let limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n const elements = [];\n let elem = element.parentElement;\n while (elem !== null) {\n if (selector === undefined || elem.nodeType === Node.ELEMENT_NODE && matchingSelector(elem, selector)) {\n elements.push(elem);\n }\n elem = elem.parentElement;\n if (limit !== 0 && elements.length >= limit) {\n break;\n }\n }\n return elements;\n}\nexport { parents };","import { useState, useEffect } from \"react\";\nconst AsciiSpinner = _ref => {\n let {\n ms = 100,\n chars = [\"◷\", \"◶\", \"◵\", \"◴\"]\n } = _ref;\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};\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/**\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 */\nconst CloseIcon = _ref => {\n let {\n width,\n color,\n tooltipText,\n framed,\n renderInContainer,\n tooltipAlways,\n onClick,\n thickness = 1\n } = _ref;\n const idCloseIconNotPortaled = useMemo(() => `react-close-icon-${(counter++).toString(36)}`, []);\n const idCloseIconPortaled = useMemo(() => `react-close-icon-${(counter++).toString(36)}`, []);\n\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 const idCloseIconPlaceholder = useMemo(() => `react-close-icon-${(counter++).toString(36)}`, []);\n const ref = useRef();\n const rect = useRect(ref);\n usePlainCss(`#${idCloseIconPlaceholder}, #${idCloseIconNotPortaled} {\n position: absolute;\n top: 50%;\n right: 0;\n margin-top: calc(${width}px / 2 * -1);\n display: block;\n width: ${width}px;\n height: ${width}px; \n pointer-events: none;\n}\n\n#${idCloseIconNotPortaled} {\n position: absolute !important;\n}\n\n#${idCloseIconNotPortaled}, #${idCloseIconPortaled} {\n cursor: pointer;\n pointer-events: all;\n ${framed ? \"outline: rgb(255, 94, 94) solid 5px;\" : \"\"}\n}\n\n#${idCloseIconPortaled} {\n position: fixed !important;\n ${rect ? `top: ${rect.y}px;left: ${rect.x}px;display:block;` : \"display:none;\"}\n width: ${width}px;\n height: ${width}px;\n z-index: 99;\n}\n#${idCloseIconPortaled}:after, #${idCloseIconNotPortaled}:after {\n width: auto !important;\n white-space: nowrap !important;\n}\n#${idCloseIconPortaled}>span:before, #${idCloseIconPortaled}>span:after,\n#${idCloseIconNotPortaled}>span:before, #${idCloseIconNotPortaled}>span:after {\n position: absolute;\n top: 50%;\n left: 50%;\n width: ${thickness}px;\n height: ${width}px;\n background-color: ${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#${idCloseIconPortaled}>span:after,\n#${idCloseIconNotPortaled}>span:after {\n transform: rotate(-45deg) translate(-50%, -50%);\n}\n#${idCloseIconPortaled}>span:hover:before, #${idCloseIconPortaled}>span:hover:after,\n#${idCloseIconNotPortaled}>span:hover:before, #${idCloseIconNotPortaled}>span:hover:after {\n opacity: 1;\n width: ${thickness + 1}px;\n}`);\n return renderInContainer ? h(Fragment, null, h(\"div\", {\n id: idCloseIconPlaceholder,\n ref: ref\n }), 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\", {\n ref: ref\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/**\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 */\nconst PlainAntdIconAsSvg = _ref => {\n let {\n icon,\n ...rest\n } = _ref;\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};\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\";\nconst CommonCheckbox = _ref => {\n let {\n hideCheckbox,\n isPartial,\n isChecked,\n isDisabled,\n fontSize,\n onClick,\n children,\n after,\n ...rest\n } = _ref;\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};\nexport { CommonCheckbox };","import { scaleMobile } from \"../..\";\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(_ref, visible, checked, disabled, fontSize) {\n let {\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 } = _ref;\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: `${useCheckboxBorderWidth}px solid ${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}\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\";\nconst CookieProperty = _ref => {\n let {\n label,\n value,\n children,\n printValueAs\n } = _ref;\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 if (printValueAs === \"boolean\") {\n useValue = useValue ? yes : no;\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};\nexport { CookieProperty };","import { scaleMobile } from \"../..\";\nfunction commonInlineStyleGroupsCookieProperty(_ref) {\n let {\n group: {\n groupBorderWidth,\n groupBorderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n // only used for banner\n pageRequestUuid4\n } = _ref;\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 ${groupBorderColor}` : undefined,\n paddingLeft: 15\n }\n };\n}\nexport { commonInlineStyleGroupsCookieProperty };","import { Fragment } from \"react\";\nimport { CookieProperty } from \".\";\nimport { useBannerOrBlocker } from \"../../../hooks\";\nimport { applyDynamicsToHtml } from \"@devowl-wp/headless-content-unblocker\";\nconst CookiePropertyList = _ref => {\n let {\n cookie: {\n purpose,\n provider,\n providerPrivacyPolicyUrl,\n providerLegalNoticeUrl,\n legalBasis,\n ePrivacyUSA,\n isEmbeddingOnlyExternalResources,\n technicalDefinitions,\n codeDynamics\n },\n isEssentialGroup\n } = _ref;\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 }), !!providerLegalNoticeUrl && h(CookieProperty, {\n label: i18n.providerLegalNoticeUrl,\n value: providerLegalNoticeUrl\n }), !!ePrivacyUSAEnabled && h(CookieProperty, {\n label: i18n.ePrivacyUSA,\n value: ePrivacyUSA,\n printValueAs: \"boolean\"\n }), !isEmbeddingOnlyExternalResources && technicalDefinitions.map(_ref2 => {\n let {\n type,\n name,\n host,\n duration,\n durationUnit,\n isSessionDuration,\n purpose\n } = _ref2;\n return 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\" : `${duration} ${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}\nexport { CookiePropertyList, getCookieTypeLocalizationMap };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBannerOrBlocker } from \"../../../hooks\";\nimport { commonInlineStyleGroupsCookie } from \"../../..\";\nimport { CommonCheckbox } from \"../..\";\nimport { CookiePropertyList } from \".\";\nconst Cookie = _ref => {\n let {\n cookie,\n checked,\n disabled,\n onToggleCheck,\n propertyListProps = {}\n } = _ref;\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};\nexport { Cookie };","function commonInlineStyleGroupsCookie(_ref) {\n let {\n customCss: {\n antiAdBlocker\n }\n } = _ref;\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-cookie`,\n style: {\n marginTop: 10\n }\n };\n}\nexport { commonInlineStyleGroupsCookie };","import { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\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 */\nconst Portal = _ref => {\n let {\n children,\n className,\n tag = \"div\",\n renderInContainer\n } = _ref;\n const [renderIn] = useState(() => {\n const el = document.createElement(tag);\n className && el.classList.add(className);\n return el;\n });\n\n // Append container to `body`\n useEffect(() => {\n document.body.appendChild(renderIn);\n return () => {\n document.body.removeChild(renderIn);\n };\n }, []);\n return /*#__PURE__*/createPortal(children, renderInContainer || renderIn);\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/**\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\nconst Tooltip = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\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--${position} hint--${size} ${color ? `hint--${color}` : \"\"} ${always ? `hint--always` : \"\"} ${rounded ? `hint--rounded` : \"\"} ${noAnimate ? `hint--no-animate` : \"\"} ${bounce ? `hint--bounce` : \"\"} ${className || \"\"}`\n }, rest), children);\n});\nexport { Tooltip };","import { createContext, useContext } from \"react\";\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}\nBannerContextFactory.context = void 0;\nfunction useBanner() {\n return useContext(BannerContextFactory.Context());\n}\nexport { BannerContextFactory, useBanner };","import { createContext, useContext } from \"react\";\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}\nBlockerContextFactory.context = void 0;\nfunction useBlocker() {\n return useContext(BlockerContextFactory.Context());\n}\nexport { BlockerContextFactory, useBlocker };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useState } from \"react\";\nimport { commonInlineStyleFooterLink, useBannerOrBlocker } from \"../../..\";\nconst FooterLink = _ref => {\n let {\n children,\n ...anchorRest\n } = _ref;\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};\nexport { FooterLink };","import { scaleMobile } from \"../../scale\";\nfunction commonInlineStyleFooterLink(_ref) {\n let {\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 } = _ref;\n let isHover = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 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}\nexport { commonInlineStyleFooterLink };","import { FooterLink } from \".\";\nimport { Tooltip } from \"../..\";\nconst FooterPoweredByLink = _ref => {\n let {\n poweredLink,\n affiliate\n } = _ref;\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};\nexport { FooterPoweredByLink };","import { Fragment } from \"react\";\n\n/**\n * Join together a set of JSX elements with a separator.\n *\n * @see https://stackoverflow.com/q/33577448/5506547\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,\n // Wrap the separator in a fragment to avoid `missing key` issues\n h(Fragment, {\n key: i\n }, separator), curr] : [curr], []);\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\";\nfunction useCommonFooterLinks() {\n let {\n onClose,\n putPoweredByLinkInRow,\n row1\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\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 = [\n // Row 1\n [onClose && h(FooterLink, {\n href: \"#\",\n onClick: onClose,\n key: \"close\",\n \"interaction-player-skip\": \"1\"\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),\n // 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 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}\nexport { useCommonFooterLinks };","import { useBannerOrBlocker, useLegalLinks } from \"..\";\nfunction joinWithAndSeparator(arr, andSeparator) {\n if (arr.length > 1) {\n arr.splice(arr.length - 1, 0, \"{{andSeparator}}\");\n }\n return arr.join(\", \").replace(/,\\s+{{andSeparator}},\\s+/g, andSeparator);\n}\n\n/**\n * @see https://gist.github.com/unruthless/413930\n * @see https://stackoverflow.com/a/23630325/5506547\n */\nconst supWithLineHeightFix = '';\nfunction useCommonTeachings() {\n let {\n disableDataProcessingInUnsafeCountries,\n disableAgeNotice,\n disableListServicesNotice\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\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 designVersion,\n i18n: {\n andSeparator,\n tcf: tcfBannerI18n\n },\n keepVariablesInTexts\n } = useBannerOrBlocker();\n const {\n linkPrivacyPolicy\n } = useLegalLinks();\n\n // Description text (combination of configured text and Consent Forwarding)\n let consentForwardingExternalHostsFinalText = \"\";\n if (consentForwardingExternalHosts && !keepVariablesInTexts) {\n consentForwardingExternalHostsFinalText = consentForwardingExternalHostsText.replace(/{{websites}}/g, consentForwardingExternalHosts.join(\", \"));\n }\n let useDescription = [blocker ? [blocker.description, designVersion > 2 ? description : false].filter(Boolean).join(\"\\n\\n\") : individualPrivacyOpen ? individualDescription : description, consentForwardingExternalHostsFinalText].filter(Boolean).join(\" \");\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 }\n\n // Teaching: Data processing in unsafe countries (formerly USA ePrivacy)\n const servicesProcessingUnsafeCountries = groups.map(_ref => {\n let {\n items\n } = _ref;\n return items.filter(_ref2 => {\n let {\n ePrivacyUSA\n } = _ref2;\n return ePrivacyUSA;\n });\n }).flat();\n const tcfVendorsProcessingUnsafeCountries = process.env.IS_TCF && tcf ? Object.values(tcf.gvl.vendors).filter(vendor => vendor.additionalInformation?.internationalTransfers || tcf.original.vendorConfigurations[vendor.id].ePrivacyUSA === 1) : [];\n let useDataProcessingInUnsafeCountries = !disableDataProcessingInUnsafeCountries && (servicesProcessingUnsafeCountries.length > 0 || tcfVendorsProcessingUnsafeCountries.length > 0) && isEPrivacyUSA ? ePrivacyUSA : \"\";\n\n // Teaching: Age notice\n const useAgeNotice = isAgeNotice && !disableAgeNotice ? ageNoticeBanner : \"\";\n\n // Teaching: List services notice\n let useListServicesNotice = \"\";\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(_ref3 => {\n let {\n slug\n } = _ref3;\n return slug !== essentialGroup;\n });\n const flattenSeparator = \"~;~\";\n const listServicesNames = joinWithAndSeparator(nonEssentialGroups.map((_ref4, groupIdx) => {\n let {\n items\n } = _ref4;\n return items.map(_ref5 => {\n let {\n name,\n ePrivacyUSA\n } = _ref5;\n return `${name}${supWithLineHeightFix}${[hasBothPlaceholders ? groupIdx + 1 : \"\", useDataProcessingInUnsafeCountries && ePrivacyUSA ? \"U\" : \"\"].filter(Boolean).join(\",\")}`;\n }).join(flattenSeparator);\n }).join(flattenSeparator).split(flattenSeparator), andSeparator);\n if (listServicesNames) {\n const listServiceGroupsNames = joinWithAndSeparator(nonEssentialGroups.map((_ref6, groupIdx) => {\n let {\n name\n } = _ref6;\n return `${name}${supWithLineHeightFix}${hasBothPlaceholders ? groupIdx + 1 : \"\"}`;\n }), andSeparator);\n useListServicesNotice = `${listServicesNotice}${tcf && !individualPrivacyOpen ? ` ${tcfBannerI18n.listOfServicesAppendix}` : \"\"}`;\n if (!keepVariablesInTexts) {\n // Place service list into the text\n useListServicesNotice = useListServicesNotice.replace(/{{services}}/gi, listServicesNames)\n // Place service group list into the text\n .replace(/{{serviceGroups}}/gi, listServiceGroupsNames);\n }\n if (useDataProcessingInUnsafeCountries) {\n useDataProcessingInUnsafeCountries += `${supWithLineHeightFix}U`;\n }\n }\n }\n return {\n description: useDescription,\n teachings: [useDataProcessingInUnsafeCountries, useAgeNotice, useListServicesNotice].filter(Boolean)\n };\n}\nexport { useCommonTeachings };","import { useBanner, useBlocker } from \"../contexts\";\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();\n\n // Check for a common context property in an available context as it is never `undefined`\n return banner.groups ? banner : blocker;\n}\nexport { useBannerOrBlocker };","import { useBannerOrBlocker } from \".\";\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] || `${pageByIdUrl}=${privacyPolicy}` : undefined;\n let linkImprint = imprint > 0 ? pageIdToPermalink[imprint] || `${pageByIdUrl}=${imprint}` : undefined;\n if (privacyPolicyIsExternalUrl) {\n linkPrivacyPolicy = privacyPolicyExternalUrl;\n }\n if (imprintIsExternalUrl) {\n linkImprint = imprintExternalUrl;\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}\nexport { useLegalLinks };","import { useMemo, useLayoutEffect } from \"react\";\nlet counter = 0;\n\n/**\n * Dynamically creates a style-tag in your head with a given plain CSS string.\n */\nfunction usePlainCss(css, uniqueId, keep) {\n const id = useMemo(() => `react-use-plain-css-${uniqueId || (counter++).toString(36)}`, []);\n useLayoutEffect(() => {\n let element = document.getElementById(id);\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 element.innerHTML = css;\n return () => {\n if (!keep) {\n element.parentNode?.removeChild(element);\n }\n };\n }, [css, keep]);\n return id;\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\";\nfunction commonInlineStyleBodyTeaching(_ref, isSingle) {\n let {\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 } = _ref;\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-teachings`,\n style: {\n marginTop: 7,\n marginBottom: isSingle ? 7 : 0,\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}\nexport { commonInlineStyleBodyTeaching };","function commonInlineStyleBodyTeachingsSeparator(_ref) {\n let {\n layout: {\n borderRadius\n },\n bodyDesign: {\n teachingsSeparatorActive,\n teachingsSeparatorWidth,\n teachingsSeparatorHeight,\n teachingsSeparatorColor\n },\n customCss: {\n antiAdBlocker\n }\n } = _ref;\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}\nexport { commonInlineStyleBodyTeachingsSeparator };","function commonGroupsInlineStyleLinkMore(_ref, isHover) {\n let {\n design: {\n linkTextDecoration\n },\n group: {\n linkColor,\n linkHoverColor\n },\n customCss: {\n antiAdBlocker\n }\n } = _ref;\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-group-more`,\n style: {\n color: isHover ? linkHoverColor : linkColor,\n textDecoration: linkTextDecoration\n }\n };\n}\nexport { commonGroupsInlineStyleLinkMore };","import { scaleMobile } from \"../..\";\nfunction commonInlineStyleHeaderHeadline(_ref, hasCloseIcon) {\n let {\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 } = _ref;\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}\nexport { commonInlineStyleHeaderHeadline };","import { BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER } from \"..\";\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/**\n * Calculate the new value for an inline style value and respect the scaling options.\n */\nfunction scaleMobile(_ref, useWidthOfThisContainerId, original, replaceWith) {\n let {\n enabled,\n scalePercent,\n scalePercentVertical\n } = _ref;\n let additionalVerticalScaling = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n if (process.env.PLUGIN_CTX === \"pro\") {\n /* onlypro:start */\n const useScalePercentVertical = +scalePercent + +scalePercentVertical;\n const {\n innerWidth\n } = window;\n const width = useWidthOfThisContainerId ? document.getElementById(useWidthOfThisContainerId)?.clientWidth || innerWidth : innerWidth;\n const doChange = enabled && width <= BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER;\n if (doChange) {\n if (replaceWith === undefined) {\n // MobX observable compatibility\n const useOriginal = typeof original.toJS === \"function\" ? original.toJS() : original;\n\n // Calculate new sizes depending on type\n if (typeof useOriginal === \"number\" && useOriginal > 0) {\n return calculateNewVal(useOriginal, additionalVerticalScaling ? useScalePercentVertical : scalePercent);\n }\n\n // Arrays (e.g. padding)\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 return original;\n }\n return replaceWith;\n }\n /* onlypro:end */\n }\n\n return original;\n}\nexport { scaleMobile };","import { matchingSelector } from \"@devowl-wp/resolve-none-computed-style\";\nwindow.rcbPoweredByCacheOuterHTML = \"\";\n\n/**\n * Get the server-side-rendered powered by link.\n */\nfunction getSsrPoweredByLink(id) {\n const originalPoweredLink = document.getElementById(id);\n const poweredLink = document.createElement(\"div\");\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 return poweredLink.children[0];\n}\nexport { getSsrPoweredByLink };","const CONTEXT_LATEST_DESIGN_VERSION = 3;\n\n/**\n * This is the consent which got given after clicking on a button. Currently, it holds\n * only a list of accepted groups and services inside the groups.\n */\n\nexport { CONTEXT_LATEST_DESIGN_VERSION };","/**\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}\nexport { hexToRgb };","function matchingSelector(element, selector) {\n if (!element || element.nodeType !== 1 || !element.parentElement) {\n return false;\n }\n return element.matches(selector);\n}\nexport { matchingSelector };","import { commonStringPrefix } from \"../utils\";\n\n/**\n * Milliseconds to cut off scroll area to a new record. E.g. user scrolls down,\n * pauses 2 seconds and scrolls again.\n */\nconst SCROLL_THRESHOLD_NEW_RECORD_MS = 50;\nconst RESIZE_THRESHOLD_NEW_RECORD_MS = 400;\nconst RECORD_ITEM_TYPE_START = 1;\nconst RECORD_ITEM_TYPE_SCROLL = 2;\nconst RECORD_ITEM_TYPE_CLICK = 3;\nconst RECORD_ITEM_TYPE_RESIZE = 4;\nconst RECORD_ITEM_TYPE_PAUSE = 9;\nconst RECORD_ITEM_TYPE_CUSTOM = 10;\n\n/**\n * Due to serialization and data economy we hold as array instead of object with key names to\n * not blow up the memory and network transfer.\n *\n * Record:\n *\n * ```\n * [Start, Current time in milliseconds, Milliseconds to previous record]\n * [Pause, Current time in milliseconds, Milliseconds to previous record]\n * [Scroll, Current time in milliseconds, Milliseconds to previous record, Selector Index, Scroll top in px]\n * [Click, Current time in milliseconds, Milliseconds to previous record, Selector Index]\n * [Resize, Current time in milliseconds, Milliseconds to previous record, Viewport width, Viewport height]\n * [Custom, Current time in milliseconds, Milliseconds to previous record, Type identifier, JSON encoded string]\n * ```\n *\n * Replay:\n *\n * ```\n * [Start, Milliseconds to previous record]\n * [Pause, Milliseconds to previous record]\n * [Scroll, Milliseconds to previous record, Selector Index, Scroll top in px]\n * [Click, Milliseconds to previous record, Selector Index]\n * [Resize, Milliseconds to previous record, Viewport width, Viewport height]\n * [Custom, Milliseconds to previous record, Type identifier, JS object]\n * ```\n */\n\n/**\n * Use for `RECORD_ITEM_TYPE_CUSTOM` to allow strings in interactions.\n */\nconst CUSTOM_UNICODE_MARKER = `<äßæ>`;\n\n/**\n * Records represents all interactions but without any DOM state / element and\n * is fully serializable.\n */\nclass Records {\n constructor() {\n this.items = [];\n this.selectors = [];\n } // Silence is golden.\n\n /**\n * Get the record items garbage collected and ready for transfer via e.g. network\n * and to make it replayable.\n */\n createReplay() {\n this.garbageCollect();\n const {\n items\n } = this;\n const replayItems = [];\n\n // Remove all timestamps as no longer needed\n for (let i = 0; i < items.length; i++) {\n const [type,, ...rest] = items[i];\n replayItems.push([type, ...rest]);\n }\n\n // To save bandwidth find common string in selectors\n const commonPrefix = commonStringPrefix(this.selectors);\n const result = {\n v: 1,\n selectorsPrefix: commonPrefix,\n selectors: this.selectors.map(selector => selector.substr(commonPrefix.length)),\n items: replayItems.map(item => item.map(v => typeof v === \"number\" ? v : `${CUSTOM_UNICODE_MARKER}${JSON.stringify(v)}${CUSTOM_UNICODE_MARKER}`).join(\",\")).join(\" \")\n };\n this.items = [];\n this.selectors = [];\n return result;\n }\n\n /**\n * Add custom interaction to the records. The custom interaction is the only interaction which allows\n * you to add mixed (not only numbers) data.\n */\n addCustom(type, data) {\n this.items.push([RECORD_ITEM_TYPE_CUSTOM, new Date().getTime(), this.calculateMillisecondsToPrevious(), type, data]);\n }\n toggle(state) {\n this.items.push([state ? RECORD_ITEM_TYPE_START : RECORD_ITEM_TYPE_PAUSE, new Date().getTime(), this.calculateMillisecondsToPrevious()]);\n }\n addClick(selector) {\n this.items.push([RECORD_ITEM_TYPE_CLICK, new Date().getTime(), this.calculateMillisecondsToPrevious(), this.ensureSelector(selector)]);\n this.garbageCollect();\n }\n addScroll(selector, scrollTop) {\n const selectorIdx = this.ensureSelector(selector);\n const calculated = this.calculateMillisecondsToPrevious((_ref, secondLast) => {\n let [typePrevious,,, selectorIdxPrevious, scrollTopPrevious] = _ref;\n const previousIsSame = typePrevious === RECORD_ITEM_TYPE_SCROLL && selectorIdxPrevious === selectorIdx;\n if (!previousIsSame) {\n return false;\n } else if (!secondLast) {\n return SCROLL_THRESHOLD_NEW_RECORD_MS;\n }\n const [typeSecondLast,,, selectorIdxSecondLast, scrollTopSecondLast] = secondLast;\n if (typeSecondLast === RECORD_ITEM_TYPE_SCROLL && selectorIdxPrevious === selectorIdxSecondLast) {\n // It is definitely the same scroll container, check if direction is the same\n const directionPrevious = scrollTop > scrollTopPrevious;\n const directionSecondLast = scrollTopPrevious > scrollTopSecondLast;\n return directionPrevious === directionSecondLast ? SCROLL_THRESHOLD_NEW_RECORD_MS : false;\n }\n return false;\n }, item => item[4] = scrollTop);\n if (calculated > -1) {\n this.items.push([RECORD_ITEM_TYPE_SCROLL, new Date().getTime(), calculated, selectorIdx, scrollTop]);\n }\n this.garbageCollect();\n }\n addResize(width, height) {\n const calculated = this.calculateMillisecondsToPrevious(_ref2 => {\n let [typePrevious,,, widthPrevious, heightPrevious] = _ref2;\n return typePrevious === RECORD_ITEM_TYPE_RESIZE ? widthPrevious === width && heightPrevious === height ? true : RESIZE_THRESHOLD_NEW_RECORD_MS : false;\n }, item => {\n item[3] = width;\n item[4] = height;\n });\n if (calculated > -1) {\n this.items.push([RECORD_ITEM_TYPE_RESIZE, new Date().getTime(), calculated, width, height]);\n }\n this.garbageCollect();\n }\n ensureSelector(selector) {\n const {\n selectors\n } = this;\n const idx = selectors.indexOf(selector);\n return idx === -1 ? selectors.push(selector) - 1 : idx;\n }\n\n /**\n * Calculate the milliseconds to the previous recorded interaction.\n *\n * Returns `-1` when the previous one was modified instead of a new record was created.\n */\n calculateMillisecondsToPrevious(considerReplaceWhen, replaceData) {\n const {\n items\n } = this;\n if (items.length === 0) {\n return 0;\n }\n const lastItem = items[items.length - 1];\n const secondLast = items[items.length - 2];\n const [, previousCurrentTime] = lastItem;\n const delay = new Date().getTime() - previousCurrentTime;\n const expectedDelay = considerReplaceWhen?.(lastItem, secondLast);\n if (expectedDelay && (typeof expectedDelay === \"number\" ? delay < expectedDelay : true)) {\n lastItem[1] += delay;\n replaceData(lastItem);\n return -1;\n }\n return delay;\n }\n\n /**\n * Remove unnecessary data which is no longer needed to calculate new items.\n */\n garbageCollect() {\n const {\n items\n } = this;\n\n // Remove all timestamps as no longer processed\n for (let i = 0; i < items.length; i++) {\n if (i < items.length - 2) {\n items[i][1] = 0;\n }\n }\n }\n}\nexport { Records, CUSTOM_UNICODE_MARKER, RECORD_ITEM_TYPE_START, RECORD_ITEM_TYPE_SCROLL, RECORD_ITEM_TYPE_CLICK, RECORD_ITEM_TYPE_PAUSE, RECORD_ITEM_TYPE_CUSTOM, RECORD_ITEM_TYPE_RESIZE };","/**\n * @see https://stackoverflow.com/a/68703218/5506547\n */\nfunction commonStringPrefix(words) {\n if (!words[0] || words.length == 1) return words[0] || \"\";\n let i = 0;\n while (words[0][i] && words.every(w => w[i] === words[0][i])) i++;\n return words[0].substr(0, i);\n}\nexport { commonStringPrefix };","/**\n * Setting this attribute allows to short circuit instead of going upwards all parents. This is useful\n * if you use React's `createPortal`.\n */\nconst HTML_ATTRIBUTE_UNIQUE_IDENTIFIER = \"interaction-player-uqid\";\n\n/**\n * If set allows you to skip this element for a next-sibling element interaction.\n * That means a `div:nth-child(3)` click would result in `div:nth-child(2)`.\n */\nconst HTML_ATTRIBUTE_PLAYER_SKIP = \"interaction-player-skip\";\nconst calcFullSelector = function (elm) {\n let until = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;\n if (elm === until || !elm?.parentElement) {\n return false;\n }\n const names = [];\n while (elm !== until && elm) {\n const uqid = elm.getAttribute(HTML_ATTRIBUTE_UNIQUE_IDENTIFIER);\n if (uqid) {\n names.unshift(`[${HTML_ATTRIBUTE_UNIQUE_IDENTIFIER}=\"${uqid}\"]`);\n break;\n }\n let c = 1;\n let e = elm;\n for (; e.previousElementSibling; e = e.previousElementSibling, c++);\n\n // Got this item accidentally captured through a click event? For example pointer events and bubbling\n if (elm.tagName === \"HTML\") {\n return false;\n }\n names.unshift(`${elm.tagName}:nth-child(${c})`);\n elm = elm.parentElement;\n if (elm === until) {\n break;\n }\n }\n return names.join(\">\").toLowerCase();\n};\nconst resolveFullSelector = (element, selector) => {\n if (selector.indexOf(HTML_ATTRIBUTE_UNIQUE_IDENTIFIER) > -1) {\n return document.querySelector(selector);\n }\n const selectorParts = selector.split(\">\");\n for (const selectorPart of selectorParts) {\n if (element) {\n const previousElement = element;\n element = element.querySelector(`:scope >${selectorPart}`);\n\n // Does it have a element which should be skipped previously?\n while (element?.hasAttribute(HTML_ATTRIBUTE_PLAYER_SKIP)) {\n element = previousElement.querySelector(`:scope >${selectorPart.replace(/nth-child\\((\\d+)\\)$/, (m, idx) => `nth-child(${+idx + 1})`)}`);\n }\n } else {\n return undefined;\n }\n }\n return element;\n};\nexport { calcFullSelector, resolveFullSelector, HTML_ATTRIBUTE_UNIQUE_IDENTIFIER, HTML_ATTRIBUTE_PLAYER_SKIP };","import { Records } from \".\";\nimport { calcFullSelector } from \"../utils\";\nclass Recorder {\n constructor(element) {\n this.element = void 0;\n this.records = void 0;\n this.interactionScroll = e => {\n const target = e.target;\n const selector = calcFullSelector(target, this.element);\n if (selector) {\n this.records.addScroll(selector, target.scrollTop);\n }\n };\n this.interactionClick = e => {\n const target = e.target;\n const selector = calcFullSelector(target, this.element);\n if (selector) {\n this.records.addClick(selector);\n }\n };\n this.interactionResize = () => {\n const {\n innerWidth,\n innerHeight\n } = window;\n this.records.addResize(innerWidth, innerHeight);\n };\n this.element = element;\n this.records = new Records();\n }\n restart() {\n this.records = new Records();\n this.toggle(true);\n }\n createReplay() {\n this.toggle(false);\n return this.records.createReplay();\n }\n toggle(state) {\n const {\n element: {\n addEventListener,\n removeEventListener\n },\n records\n } = this;\n records.toggle(state);\n if (state) {\n this.interactionResize();\n addEventListener(\"scroll\", this.interactionScroll, true);\n addEventListener(\"click\", this.interactionClick, true);\n addEventListener(\"touch\", this.interactionClick, true);\n addEventListener(\"resize\", this.interactionResize, true);\n } else {\n removeEventListener(\"scroll\", this.interactionScroll, true);\n removeEventListener(\"click\", this.interactionClick, true);\n removeEventListener(\"touch\", this.interactionClick, true);\n removeEventListener(\"resize\", this.interactionResize, true);\n }\n }\n getRecords() {\n return this.records;\n }\n}\nexport { Recorder };","const BASE32_TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nconst OFFSET_EVERY_X_CHARACTER = 4;\nfunction obfuscatePath(offset, str) {\n let mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"keep-last-part\";\n let j = 0;\n const offsetBase64 = window.btoa(offset).toLowerCase();\n const result = str.split(\"/\").map((part, i, arr) => {\n // Keep the last part of the full path to make it more \"debuggable\" in network tab of DevTools\n if (mode === \"keep-last-part\" && i === arr.length - 1) {\n return part;\n }\n\n // Use base32-encoded string as this allows us to send the path as all-lowercase\n const newPart = base32Encode(part\n // Chunk part into x letters, so the random offset gets appended after each x character\n .match(new RegExp(`.{1,${OFFSET_EVERY_X_CHARACTER}}`, \"g\")).map(letters => {\n if (letters.length < OFFSET_EVERY_X_CHARACTER) {\n return letters;\n }\n j = j >= offset.length ? 0 : j;\n const newLetters = [letters.split(\"\").map(letter => {\n const letterInOffsetBase64 = offsetBase64.indexOf(letter);\n return letterInOffsetBase64 > -1 ? `/${letterInOffsetBase64}/` : letter;\n }).join(\"\"), offset[j]];\n j++;\n return newLetters;\n }).flat().join(\"\"))\n // Remove all `=` characters by masking the last character with the count of such characters\n .replace(/([=]+)?$/, m => {\n return `${m.length}`;\n }).toLowerCase();\n return newPart;\n });\n\n // The first integer in the path-part determines the mode\n result.splice(result.length - 1, 0, `${mode === \"full\" ? 1 : 0}${offset.toString()}`);\n return result.join(\"/\");\n}\nfunction base32Encode(str) {\n const base64 = window.btoa(str);\n let base32 = \"\";\n let bits = 0;\n let value = 0;\n for (let i = 0; i < base64.length; i++) {\n value = value << 8 | base64.charCodeAt(i);\n bits += 8;\n while (bits >= 5) {\n base32 += BASE32_TABLE[value >>> bits - 5 & 0x1f];\n bits -= 5;\n }\n }\n if (bits > 0) {\n base32 += BASE32_TABLE[value << 5 - bits & 0x1f];\n }\n return base32;\n}\nexport { obfuscatePath };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\nimport { trailingslashit, untrailingslashit } from \"../../helpers\";\nimport { obfuscatePath } from \"../..\";\nimport deepMerge from \"deepmerge\";\nimport qs from \"querystringify\";\nimport Cookie from \"js-cookie\";\nimport sha1 from \"sha-1\";\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/**\n * Build an URL for a specific scheme.\n *\n * @param param0\n */\nfunction commonUrlBuilder(_ref) {\n let {\n location,\n params = {},\n nonce = true,\n options,\n cookieValueAsParam\n } = _ref;\n const {\n obfuscatePath: doObfuscatePath\n } = location;\n const {\n href\n } = window.location;\n const {\n restPathObfuscateOffset\n } = options;\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\n // Find dynamic parameters from URL bindings (like /user/:id)\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 = {};\n\n // Find undeclared body params (which are not bind above) and add it to GET query\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 }\n\n // Calculate invalidator for cookie values\n if (cookieValueAsParam) {\n getParams._httpCookieInvalidate = sha1(JSON.stringify(cookieValueAsParam.map(Cookie.get)));\n }\n\n // Find parameters from passed location\n const {\n search: pathSearch,\n pathname: fixedPathName\n } = new URL(location.path, href);\n if (pathSearch) {\n const parsed = qs.parse(pathSearch);\n for (const pathSearchEntry in parsed) {\n getParams[pathSearchEntry] = parsed[pathSearchEntry];\n }\n path = fixedPathName;\n }\n\n // Force protocol from parent location\n apiUrl.protocol = window.location.protocol;\n\n // Set path depending on permalink settings\n const usePermalinkPath = trailingslashit(permalinkPath); // => `/wp-json`\n let useAfterPermalinkPath = untrailingslashit(location.namespace || options.restNamespace) + path; // => `/real-cookie-banner/v1/consent`\n\n if (restPathObfuscateOffset && doObfuscatePath) {\n useAfterPermalinkPath = obfuscatePath(restPathObfuscateOffset, useAfterPermalinkPath, doObfuscatePath);\n }\n const usePath = `${usePermalinkPath}${useAfterPermalinkPath}`;\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 }\n\n // Append WordPress REST nonce\n if (nonce && options.restNonce) {\n query._wpnonce = options.restNonce;\n }\n\n // Determine if non-GET verbs should always use `POST`\n applyQueryString(apiUrl, query);\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 }\n\n // Build final search\n applyQueryString(apiUrl, [options.restQuery, getParams], true);\n return apiUrl.toString();\n}\nexport { commonUrlBuilder, applyQueryString, qs };","const pool = {};\nconst recreateFetchPool = {};\n\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 =\n // Reuse already sent request\n recreateFetchPool[nonce] || new Promise(\n // 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 if (recreateFetch.ok) {\n const newNonce = await recreateFetch.text();\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 }\n\n // Wait until all nonces are refreshed\n await Promise.all(Object.values(recreateFetchPool));\n let returnNonce = nonce;\n while (pool[returnNonce]) {\n returnNonce = pool[returnNonce];\n if (pool[returnNonce] === nonce) {\n break;\n }\n }\n return Promise.resolve(returnNonce);\n }\n}\nexport { nonceDeprecationPool };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\nconst NOTICE_ID = \"notice-corrupt-rest-api\";\nconst NOTICE_ATTRIBUTE_NAMESPACE = \"data-namespace\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nasync function addToNotice(namespace) {\n let onlyWhen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : async () => {};\n const notice = document.getElementById(NOTICE_ID);\n\n // 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 if (notice && window.navigator.onLine) {\n // Already shown as \"defect\"?\n if (notice.querySelector(`li[${NOTICE_ATTRIBUTE_NAMESPACE}=\"${namespace}\"]`)) {\n return;\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 = `${namespace}`;\n notice.childNodes[1].appendChild(li);\n notice.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\"\n });\n }\n }\n}\nasync function removeCorruptRestApi(namespace) {\n const notice = document.getElementById(NOTICE_ID);\n if (notice) {\n const namespaceLine = notice.querySelector(`li[${NOTICE_ATTRIBUTE_NAMESPACE}=\"${namespace}\"]`);\n namespaceLine?.remove();\n\n // Hide if necessary\n if (!notice.childNodes[1].childNodes.length) {\n notice.style.display = \"none\";\n\n // Reset complete log\n const textarea = notice.querySelector(\"textarea\");\n if (textarea) {\n textarea.value = \"\";\n }\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 */\nfunction addCorruptRestApi(_ref, addNamespaceImmediate) {\n let {\n method\n } = _ref;\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}\nfunction addCorruptRestApiLog(_ref2) {\n let {\n route,\n method,\n ms,\n response\n } = _ref2;\n const textarea = document.querySelector(`#${NOTICE_ID} textarea`);\n if (textarea) {\n const currentValue = textarea.value.split(\"\\n\").slice(0, 9);\n currentValue.unshift(`[${new Date().toLocaleTimeString()}] [${method || \"GET\"}] [${ms}ms] ${route}; ${response?.substr(0, 999)}`);\n textarea.value = currentValue.join(\"\\n\");\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 */\nfunction handleCorruptRestApi(resolve) {\n // Initially set\n window.detectCorruptRestApiFailed = window.detectCorruptRestApiFailed || 0;\n\n // Hide false-positives of previous failed REST requests which occurred due to page switch and bfcache (see CU-33tce0y)\n window.addEventListener(\"pageshow\", _ref3 => {\n let {\n persisted\n } = _ref3;\n const notice = document.getElementById(NOTICE_ID);\n if (notice && persisted && window.detectCorruptRestApiFailed === 0) {\n notice.style.display = \"none\";\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 let checkTimeout;\n const fnThrottled = () => {\n clearTimeout(checkTimeout);\n checkTimeout = setTimeout(fnCheck, 1000);\n };\n fnThrottled();\n window.addEventListener(NOTICE_ID, fnThrottled);\n}\n\n/**\n * @deprecated For backwards-compatibility.\n */\nconst handleCorrupRestApi = handleCorruptRestApi;\nexport { addCorruptRestApi, addCorruptRestApiLog, removeCorruptRestApi, handleCorruptRestApi, handleCorrupRestApi };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\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 const cloneForFallback = result.clone();\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();\n\n // Respect empty responses for given verbs (DELETE, PUT)\n if (body === \"\" && [ERouteHttpVerb.DELETE, ERouteHttpVerb.PUT].indexOf(method) > -1) {\n return undefined;\n }\n console.warn(`The response of ${url} contains unexpected JSON, try to resolve the JSON line by line...`, {\n body\n });\n let lastError;\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 throw lastError;\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\";\n\n// 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(_ref) {\n let {\n location,\n options,\n request: routeRequest,\n params,\n settings = {},\n cookieValueAsParam,\n multipart = false,\n sendRestNonce = true\n } = _ref;\n const namespace = location.namespace || options.restNamespace;\n const url = commonUrlBuilder({\n location,\n params,\n nonce: false,\n options,\n cookieValueAsParam\n });\n\n // Use global parameter (see https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/)\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 }\n\n // Request with GET/HEAD method cannot have body\n const apiUrl = new URL(url, window.location.href);\n const allowBody = [\"HEAD\", \"GET\"].indexOf(settings.method) === -1;\n if (!allowBody && routeRequest) {\n applyQueryString(apiUrl, [routeRequest], true);\n }\n const apiUrlBuilt = apiUrl.toString();\n\n // Determine body\n let body;\n if (allowBody) {\n if (multipart) {\n // Let's create a multipart request...\n body = jsonFormData(routeRequest, typeof multipart === \"boolean\" ? {} : multipart);\n\n // Check if one of the form data is a blob and if not, revert back to JSON\n const hasBlob = Array.from(body.values()).filter(v => v instanceof File).length > 0;\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 }\n\n // Do the request\n const restNonce = await nonceDeprecationPool(options.restNonce);\n const hasRestNonce = typeof restNonce !== \"undefined\";\n const init = deepMerge.all([settings, {\n headers: {\n ...(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;\n\n // 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 let pageUnload = false;\n const pageUnloadListener = () => {\n pageUnload = true;\n };\n window.addEventListener(\"pagehide\", pageUnloadListener);\n window.addEventListener(\"beforeunload\", pageUnloadListener);\n const start = new Date().getTime();\n let ms;\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 if (!pageUnload) {\n addCorruptRestApiLog({\n method: location.method,\n route: apiUrl.pathname,\n ms,\n response: `${e}`\n });\n addCorruptRestApi(settings, namespace);\n }\n console.error(e);\n throw e;\n } finally {\n window.removeEventListener(\"pagehide\", pageUnloadListener);\n window.removeEventListener(\"beforeunload\", pageUnloadListener);\n }\n\n // `window.fetch` does not throw an error if the server response an error code.\n if (!result.ok) {\n let responseJSON = undefined;\n let replay = false;\n try {\n responseJSON = await parseResult(apiUrlBuilt, result, location.method);\n\n // wordpress.com private site compatibility\n /* istanbul ignore if */\n if (responseJSON.code === \"private_site\" && result.status === 403 && hasRestNonce && !sendRestNonce) {\n replay = true;\n }\n\n // Refresh nonce automatically\n /* istanbul ignore if */\n if (responseJSON.code === \"rest_cookie_invalid_nonce\" && hasRestNonce) {\n const {\n restRecreateNonceEndpoint\n } = options;\n try {\n await nonceDeprecationPool(restNonce, restRecreateNonceEndpoint);\n replay = true;\n } catch (e) {\n // Silence is golden.\n }\n }\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 const retryAfter = result.headers.get(\"retry-after\");\n if (retryAfter.match(/^\\d+$/)) {\n replay = +retryAfter * 1000;\n }\n } catch (e) {\n // Silence is golden.\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 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 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 return parseResult(apiUrlBuilt, result, location.method);\n}\nexport { commonRequest };","import { ERouteHttpVerb } from \"@devowl-wp/api\";\n\n/**\n * Use\n *\n * ```ts\n * import { ERouteHttpVerb } from \"@devowl-wp/api\";\n * ```\n *\n * instead!\n *\n * @deprecated For backwards-compatibility.\n */\nconst RouteHttpVerb = ERouteHttpVerb;\nexport { RouteHttpVerb };","const untrailingslashit = str => str.endsWith(\"/\") || str.endsWith(\"\\\\\") ? untrailingslashit(str.slice(0, -1)) : str;\nconst trailingslashit = str => `${untrailingslashit(str)}/`;\n\n// Allows to make an interface extension and make some properties optional (https://git.io/JeK6J)\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 `${options.publicUrl}${options.chunkFolder}/`;\n};\nexport { untrailingslashit, trailingslashit, getWebpackPublicPath };","import { supportsCookies } from \"../utils\";\n\n/**\n * Does the current browser support cookies?\n */\nconst preDecisionGatewaySupportsCookies = async _ref => {\n let {\n supportsCookiesName\n } = _ref;\n return supportsCookies(supportsCookiesName) ? false : \"essentials\";\n};\nexport { preDecisionGatewaySupportsCookies };","import isbot from \"isbot\";\nimport { isGdprScanner } from \".\";\n\n/**\n * Is the current browser a spider / crawler?\n */\nfunction isCrawler() {\n const {\n userAgent\n } = navigator;\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 return isbot(userAgent);\n }\n return false;\n}\nexport { isCrawler };","/**\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}\nexport { promiseTimeout };","import { getUserDecision } from \"../decision\";\nimport { isCrawler, promiseTimeout } from \"../utils\";\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 = function (request) {\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10000;\n let active = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return async _ref => {\n let {\n decisionCookieName,\n revisionHash\n } = _ref;\n if (isCrawler() || !active) {\n // Ignore unnecessary requests\n return false;\n }\n\n // Check if revision has changed, and probably access our dynamic predecision again\n const decision = getUserDecision(decisionCookieName);\n if (decision) {\n const {\n revision\n } = decision;\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 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 * 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 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) {\n // Silence is golden.\n }\n return false;\n}\nexport { isDoNotTrack };","import { getUserDecision } from \"../decision\";\nimport { isDoNotTrack } from \"../utils\";\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 = function () {\n let active = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n return async _ref => {\n let {\n decisionCookieName,\n groups,\n essentialGroupSlug\n } = _ref;\n const [essentialGroupObj] = groups.filter(_ref2 => {\n let {\n slug\n } = _ref2;\n return slug === essentialGroupSlug;\n });\n if (getUserDecision(decisionCookieName) !== false || !active) {\n return false;\n }\n\n // As soon we have a legitimate interest, we need to show the cookie banner\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 return isDoNotTrack() ? \"dnt\" : false;\n };\n};\nexport { preDecisionGatewayIsDoNotTrack };","import { getUserDecision } from \"../decision\";\n\n/**\n * Has the user already consent to the latest requested revision (hash)?\n */\nconst preDecisionGatewayUserConsent = async _ref => {\n let {\n decisionCookieName,\n revisionHash\n } = _ref;\n const decision = getUserDecision(decisionCookieName);\n if (decision === false) {\n return false;\n }\n const {\n revision\n } = decision;\n return revisionHash === revision ? \"consent\" : false;\n};\nexport { preDecisionGatewayUserConsent };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentDynamicPredecisionGet = {\n path: \"/consent/dynamic-predecision\",\n method: RouteHttpVerb.POST,\n obfuscatePath: \"keep-last-part\"\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}\nexport { isHiddenDueLegal };","import { useCallback, useMemo } from \"react\";\nimport { BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER } from \"../..\";\n\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 */\nfunction useBannerAnimation() {\n const clientWidth = useMemo(() => window.innerWidth, []);\n const isMobile = clientWidth < BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER;\n\n // 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 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(_ref => {\n let {\n animationIn,\n animationInOnlyMobile,\n animationOut,\n animationOutOnlyMobile\n } = _ref;\n let useAnimationIn = animationInOnlyMobile ? isMobile ? animationIn : \"none\" : animationIn;\n let useAnimationOut = animationOutOnlyMobile ? isMobile ? animationOut : \"none\" : animationOut;\n if (isMobileFirefox) {\n useAnimationIn = \"none\";\n useAnimationOut = \"none\";\n }\n return {\n useAnimationIn,\n useAnimationOut\n };\n }, []);\n}\nexport { useBannerAnimation };","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/**\n * Listen to anchor links and execute the banner action:\n *\n * ```\n * #consent-change\n * #consent-history\n * #consent-revoke\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 switch (type) {\n case \"change\":\n openBanner(e);\n break;\n case \"history\":\n openHistory(e);\n break;\n case \"revoke\":\n revokeConsent(successMessage, e);\n break;\n default:\n break;\n }\n };\n const eventListenerDocumentClick = e => {\n if (!openBanner) {\n // `useBannerActions` is not yet initialized.\n return;\n }\n\n // Check if one of the parents has a valid hash link\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 });\n\n // @deprecated Old behavior with simple links like `#change`\n if (matchingSelector(element, \".rcb-sc-link\")) {\n handleType(element.getAttribute(\"href\").slice(1), element.getAttribute(\"data-success-message\"), e);\n }\n };\n const eventListenerHashChange = () => {\n const {\n hash\n } = window.location;\n if (hash.startsWith(\"#consent-\")) {\n handleType(hash.substring(9), undefined, undefined);\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\n/**\n * With `useBannerActionLinks` we also listen to `hashchange` and show the cookie banner accordingly,\n * e.g. when a script opens the cookie banner via `window.location.hash = \"#consent-change\"`.\n * When the user closes the dialog again, the `#consent-change` stays and the cookie banner cannot be\n * opened again.\n */\nfunction resetConsentChangeHash() {\n if (window.location.hash.startsWith(\"#consent-\")) {\n window.location.hash = \"\";\n }\n}\nexport { useBannerActionLinks, resetConsentChangeHash };","import { prepareTcfString, resetConsentChangeHash } from \"../..\";\nimport { createTcfModel } from \"@devowl-wp/cookie-consent-web-client\";\nconst cancelEvent = e => {\n if (!e) {\n return;\n }\n e.preventDefault();\n\n // Some themes (e.g. AKEA) do have listeners on each link separately and do a custom redirect\n e.stopPropagation();\n};\nfunction useBannerStateContextCallbacks(_ref) {\n let {\n toggleOverlay,\n recorder,\n isTcf,\n defaultConsent,\n applyConsent\n } = _ref;\n const toggleWithActiveAction = (setContextValue, type) => setContextValue(state => {\n return {\n ...state,\n activeAction: type,\n individualPrivacyOpen: true,\n refreshSiteAfterSave: type === \"change\" ? 2000 : false,\n ...toggleOverlay(state, true)\n };\n });\n return {\n openHistory: function (setContextValue) {\n toggleWithActiveAction(setContextValue, \"history\");\n cancelEvent(arguments.length <= 1 ? undefined : arguments[1]);\n },\n openBanner: function (setContextValue) {\n toggleWithActiveAction(setContextValue, \"change\");\n cancelEvent(arguments.length <= 1 ? undefined : arguments[1]);\n },\n onSave: function (setContextValue) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const [markAsDoNotTrack, buttonClicked] = args;\n setContextValue(state => {\n // TCF compatibility: persist TCF string\n let tcfString;\n if (process.env.IS_TCF === \"1\" && isTcf && state.tcf?.model) {\n tcfString = prepareTcfString(state.tcf.model, buttonClicked);\n }\n const appliedConsent = applyConsent({\n consent: state.consent,\n markAsDoNotTrack,\n buttonClicked,\n tcfString,\n recorderJsonString: recorder ? JSON.stringify(recorder.createReplay()) : undefined,\n uiView: state.activeAction === \"change\" ? \"change\" : state.activeAction !== \"revoke\" ? \"initial\" : undefined\n });\n if (state.refreshSiteAfterSave) {\n appliedConsent.then(() => {\n resetConsentChangeHash();\n\n // Fix iOS / Safari bug when we want to reload the page after a POST request\n setTimeout(() => window.location.reload(), state.refreshSiteAfterSave || /* BC */2000);\n });\n\n // When refreshing the site, do not show any out animation\n return state;\n } else {\n return {\n ...state,\n ...toggleOverlay(state, false)\n };\n }\n });\n },\n revokeConsent: function (setContextValue) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const [successMessage, e] = args;\n setContextValue(state => {\n // Do not rely on current state of `groups` because it can be altered through history change\n const buttonClicked = \"shortcode_revoke\";\n let tcfString;\n if (process.env.IS_TCF === \"1\" && isTcf && state.tcf?.model) {\n tcfString = prepareTcfString(state.tcf.model, buttonClicked);\n }\n applyConsent({\n consent: defaultConsent,\n buttonClicked,\n tcfString\n }).then(() => {\n successMessage && alert(successMessage);\n resetConsentChangeHash();\n\n // 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 setTimeout(() => window.location.reload(), 2000);\n });\n\n // Do not change anything\n return state;\n });\n cancelEvent(e);\n },\n updateTcfFilterBy: function (setContextValue) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n const [newFilter] = args;\n setContextValue(state => ({\n ...state,\n tcfFilterBy: newFilter\n }));\n },\n updateIndividualPrivacyOpen: function (setContextValue) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n const [opened] = args;\n setContextValue(state => ({\n ...state,\n individualPrivacyOpen: opened\n }));\n },\n updateGroupChecked: function (setContextValue) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n const [id, checked] = args;\n setContextValue(state => {\n const newConsent = JSON.parse(JSON.stringify(state.consent));\n if (checked) {\n newConsent.groups[id] = state.groups.filter(group => group.id === id)[0].items.map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n });\n } else {\n delete newConsent.groups[id];\n }\n return {\n ...state,\n consent: newConsent,\n didGroupFirstChange: true\n };\n });\n },\n updateCookieChecked: function (setContextValue) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n const [groupId, id, checked] = args;\n setContextValue(state => {\n const newConsent = JSON.parse(JSON.stringify(state.consent));\n\n // Initially create \"selected\" cookies\n if (!newConsent.groups[groupId]) {\n newConsent.groups[groupId] = [];\n }\n const cookieIds = newConsent.groups[groupId];\n const indexOf = cookieIds.indexOf(id);\n if (checked && indexOf === -1) {\n cookieIds.push(id);\n } else if (!checked && indexOf > -1) {\n cookieIds.splice(indexOf, 1);\n }\n\n // Delete group entirely when no cookies selected\n if (!cookieIds.length) {\n delete newConsent.groups[groupId];\n }\n return {\n ...state,\n consent: newConsent\n };\n });\n },\n onClose: setContextValue => {\n setContextValue(state => {\n return {\n ...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: function (setContextValue) {\n for (var _len7 = arguments.length, args = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\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 if (process.env.IS_TCF === \"1\" && tcf) {\n Object.assign(additionalChanges, {\n tcf: \"gvl\" in tcf ? tcf : createTcfModel(tcf)\n });\n }\n return {\n ...state,\n groups,\n consent: {\n ...state.consent,\n groups: consentGroups\n },\n ...additionalChanges\n };\n });\n }\n };\n}\nexport { useBannerStateContextCallbacks };","import { useEffect, useState } from \"react\";\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);\n\n // Reset animation, save it temporary so when changing it, it needs to be to \"none\" and then the needed one\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 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 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}\nexport { useResettableAnimation };","import { hexToRgb } from \".\";\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(${r}, ${g}, ${b}, ${alpha / 100})`;\n}\nexport { calculateRgba };","import { useState, useEffect } from \"react\";\nfunction getAnimationRelatedState(_ref) {\n let {\n isVisible,\n animationIn,\n animationOut,\n animationInDuration,\n animationOutDuration,\n animationInDelay,\n animationOutDelay\n } = _ref;\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/**\n * Ported from https://www.npmjs.com/package/react-animated-css due to high bundle size.\n */\nconst AnimatedCss = _ref2 => {\n let {\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 } = _ref2;\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__${animation} ${className}`;\n const backwardStyle = !animation ? {\n opacity: isVisible ? 1 : 0,\n transition: `opacity ${delay}ms`\n } : {};\n return h(\"div\", {\n className: classes,\n style: {\n animationDelay: `${delay}ms`,\n animationDuration: `${duration}ms`,\n pointerEvents: isVisible ? \"all\" : \"none\",\n ...style,\n ...backwardStyle\n }\n }, children);\n};\nexport { AnimatedCss };","import { useEffect } from \"react\";\nimport { useBanner } from \"../contexts\";\nimport { usePlainCss } from \".\";\n\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 */\nfunction useRenderedHeightsAsCssVars(element, name) {\n const {\n pageRequestUuid4\n } = useBanner();\n\n // We do directly modify the inline CSS as we do not want to trigger a rerender for the complete banner content\n const cssId = usePlainCss(\"\", `useRenderedHeightsAsCssVars-${name}`);\n const cssElement = document.getElementById(cssId);\n useEffect(() => {\n let previousHeight = 0;\n const recalculate = () => {\n const currentHeight = element.getBoundingClientRect().height;\n if (previousHeight !== currentHeight) {\n previousHeight = currentHeight;\n cssElement.innerHTML = `#${pageRequestUuid4}{--rendered-height-${name}: ${Math.floor(currentHeight)}px;--rendered-height-raw-${name}: ${currentHeight}px}`;\n }\n };\n if (!element) {\n return () => {\n // Silence is golden.\n };\n }\n\n // Support animations\n const animateContainer = document.querySelector(`#${pageRequestUuid4} div[class*=\"animate__\"]`);\n animateContainer.addEventListener(\"animationend\", recalculate);\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}\nexport { useRenderedHeightsAsCssVars };","import { useBanner } from \"../..\";\nimport { useCallback } from \"react\";\n\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 */\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 * This includes the complete \"Essential\" group + legal basis = legitimate interests.\n */\n acceptEssentials: useCallback(function () {\n let isCloseIcon = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n groups.forEach(_ref => {\n let {\n slug,\n id,\n items\n } = _ref;\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 {\n ...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}\nexport { useBannerButtonCallbacks };","import { useBanner, useBannerButtonCallbacks, scaleMobile, CloseIcon, BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER } from \"../../..\";\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?.clientWidth < BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER,\n framed: buttonClicked === buttonClickedCloseIcon,\n renderInContainer: container,\n onClick: closeIcon\n });\n};\nexport { BannerCloseIcon };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBanner, bannerHeaderInlineStyleContainer, bannerHeaderInlineStyle, bannerHeaderInlineStyleLogo, commonInlineStyleHeaderHeadline, BannerCloseIcon } from \"../../..\";\nimport { forwardRef } from \"react\";\n\n// eslint-disable-next-line react/display-name\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;\n\n // Calculate logo\n const useRetina = logoRetina && !logo?.endsWith(\".svg\") && window.devicePixelRatio > 1;\n const useLogo = useRetina ? logoRetina : logo;\n\n // Calculate headline\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 \"../..\";\nfunction bannerHeaderInlineStyleContainer(_ref) {\n let {\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 } = _ref;\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 => `${p}px`).join(\" \"),\n background: inheritBg ? restDesign.bg : bg,\n borderRadius: useType === \"dialog\" ? `${dialogBorderRadius}px ${dialogBorderRadius}px 0 0` : undefined,\n position: \"sticky\",\n zIndex: 9,\n top: 0\n };\n if (useType === \"dialog\" && useBorderWidth > 0) {\n style.borderTop = `${useBorderWidth}px solid ${borderColor}`;\n style.borderLeft = style.borderTop;\n style.borderRight = style.borderTop;\n }\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-header-container`,\n style\n };\n}\nexport { bannerHeaderInlineStyleContainer };","import { scaleMobile } from \"../..\";\nfunction bannerHeaderInlineStyle(_ref) {\n let {\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 } = _ref;\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}\nexport { bannerHeaderInlineStyle };","import { scaleMobile } from \"../..\";\nfunction bannerHeaderInlineStyleLogo(_ref, isRetina) {\n let {\n headerDesign: {\n logoMaxHeight,\n logoMargin,\n logoFitDim,\n logoRetinaFitDim\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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: {\n ...dimStyle,\n margin: scaleMobile(mobile, pageRequestUuid4, logoMargin).map(m => `${m}px`).join(\" \")\n //[logoPosition === \"left\" ? \"marginRight\" : \"marginLeft\"]: logoPosition === \"above\" ? undefined : 15,\n //marginBottom: logoPosition === \"above\" ? 5 : undefined\n }\n };\n}\n\nexport { bannerHeaderInlineStyleLogo };","import { useBanner, bannerGroupsInlineStyleTitle, bannerGroupsInlineStyleDescription } from \"../../..\";\nconst BannerGroupSectionTitle = _ref => {\n let {\n title,\n children\n } = _ref;\n const banner = useBanner();\n return h(\"div\", bannerGroupsInlineStyleTitle(banner), title, children && h(\"div\", bannerGroupsInlineStyleDescription(banner), children));\n};\nexport { BannerGroupSectionTitle };","import { scaleMobile } from \"../..\";\nfunction bannerGroupsInlineStyleTitle(_ref) {\n let {\n group: {\n headlineFontSize,\n headlineFontColor,\n headlineFontWeight\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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}\nexport { bannerGroupsInlineStyleTitle };","import { scaleMobile } from \"../..\";\nfunction bannerGroupsInlineStyleDescription(_ref) {\n let {\n design: {\n fontWeight\n },\n group: {\n descriptionFontColor,\n descriptionFontSize\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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}\nexport { bannerGroupsInlineStyleDescription };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { Fragment, useState } from \"react\";\nimport { commonGroupsInlineStyleLinkMore } from \"../../inlineStyles\";\nimport { useBannerOrBlocker } from \"../../hooks\";\nconst CommonLinkMore = _ref => {\n let {\n onToggle,\n children,\n showMore,\n hideMore,\n ...rest\n } = _ref;\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?.(newOpen);\n e.preventDefault();\n },\n onMouseEnter: () => setIsHover(true),\n onMouseLeave: () => setIsHover(false)\n }, rest), isOpen ? hideMore : showMore), isOpen && children);\n};\nexport { CommonLinkMore };","import { useCallback } from \"react\";\nimport { useBanner, Cookie } from \"../../..\";\nconst BannerCookie = _ref => {\n let {\n group,\n cookie\n } = _ref;\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?.[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};\nexport { BannerCookie };","import { useCallback } from \"react\";\nimport { CommonCheckbox, CommonLinkMore, useBanner, bannerGroupsInlineStyleGroup, BannerGroupSectionTitle, BannerCookie } from \"../../..\";\nconst BannerGroup = _ref => {\n let {\n group\n } = _ref;\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(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }).sort()) !== JSON.stringify(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};\nexport { BannerGroup };","import { scaleMobile } from \"../..\";\nfunction bannerGroupsInlineStyleGroup(_ref) {\n let {\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 } = _ref;\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 ? `${useGroupBorderWidth}px solid ${groupBorderColor}` : undefined,\n padding: scaleMobile(mobile, pageRequestUuid4, groupPadding).map(p => `${p}px`).join(\" \"),\n borderRadius: +groupBorderRadius,\n textAlign: \"left\"\n }\n };\n}\nexport { bannerGroupsInlineStyleGroup };","import { scaleMobile, useBanner, bannerGroupsInlineStyle, BannerGroup } from \"../../..\";\nimport { Fragment } from \"react\";\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(_ref => {\n let {\n items\n } = _ref;\n return items.length;\n });\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};\nexport { BannerGroupList };","function bannerGroupsInlineStyle(_ref) {\n let {\n customCss: {\n antiAdBlocker\n }\n } = _ref;\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-groups`,\n style: {\n marginTop: 10,\n clear: \"both\"\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 \"../..\";\nconst BannerDottedGroup = _ref => {\n let {\n group: {\n id,\n slug,\n name\n }\n } = _ref;\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};\nexport { BannerDottedGroup };","import { scaleMobile } from \"../../scale\";\nfunction bannerInlineStyleBodyDottedGroupItem(_ref) {\n let {\n design: {\n fontSize\n },\n bodyDesign: {\n dottedGroupsInheritFontSize,\n dottedGroupsFontSize\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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}\nexport { bannerInlineStyleBodyDottedGroupItem };","function bannerInlineStyleBodyDottedGroupBullet(_ref) {\n let {\n bodyDesign: {\n dottedGroupsBulletColor\n }\n } = _ref;\n return {\n className: undefined,\n style: {\n color: dottedGroupsBulletColor\n }\n };\n}\nexport { bannerInlineStyleBodyDottedGroupBullet };","import { BannerDottedGroup } from \".\";\nimport { useBanner, bannerInlineStyleBodyDottedGroups } from \"../../..\";\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(_ref => {\n let {\n items\n } = _ref;\n return !!items.length;\n }).map(group => h(BannerDottedGroup, {\n key: group.id,\n group: group\n }))) : null;\n};\nexport { BannerDottedGroupList };","function bannerInlineStyleBodyDottedGroups(_ref) {\n let {\n customCss: {\n antiAdBlocker\n }\n } = _ref;\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-dotted-groups`,\n style: {\n marginTop: 10,\n lineBreak: \"anywhere\",\n lineHeight: 2\n }\n };\n}\nexport { bannerInlineStyleBodyDottedGroups };","import { scaleMobile } from \"../../scale\";\nfunction bannerInlineStyleBodyDescription(_ref) {\n let {\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 } = _ref;\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}\nexport { bannerInlineStyleBodyDescription };","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;\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(() => history?.filter(_ref => {\n let {\n id\n } = _ref;\n return id === selectedId;\n })?.[0], [selectedId]);\n\n // Reset select after exit history dialog\n useEffect(() => {\n if (!activeAction) {\n setSelectedId(SELECT_NONE);\n } else if (activeAction === \"history\" && history?.length) {\n setSelectedId(history[0].id);\n }\n }, [activeAction, history]);\n\n // History can only contain my data, so we can pick the first entry for the history\n const uuid = selectedHistoryItem?.uuid;\n const optionStyle = bannerInlineStyleHistorySelectOption(banner);\n return h(Fragment, null, historyLabel, \"\\xA0\", h(\"select\", _extends({}, bannerInlineStyleHistorySelect(banner), {\n disabled: !history?.length,\n value: selectedId,\n onChange: e => {\n const value = +e.target.value;\n history.forEach(_ref2 => {\n let {\n id,\n decision,\n groups,\n tcf\n } = _ref2;\n if (id === value) {\n setSelectedId(id);\n selectHistoryEntry(groups, decision, tcf);\n }\n });\n }\n }), history?.length > 0 ? history.map(_ref3 => {\n let {\n id,\n isDoNotTrack,\n isUnblock,\n isForwarded,\n created\n } = _ref3;\n return 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)\" : \"\");\n }) : 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};\nexport { BannerHistorySelect };","function bannerInlineStyleHistorySelectOption(_ref) {\n let {\n design: {\n bg\n }\n } = _ref;\n return {\n className: undefined,\n style: {\n background: bg\n }\n };\n}\nexport { bannerInlineStyleHistorySelectOption };","import { calculateRgba } from \"../../../utils\";\nimport { scaleMobile } from \"../../scale\";\nfunction bannerInlineStyleHistorySelect(_ref) {\n let {\n design: {\n fontSize,\n fontColor\n },\n bodyDesign: {\n descriptionInheritFontSize,\n descriptionFontSize\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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 ${calculateRgba(fontColor, 50)}`\n }\n };\n}\nexport { bannerInlineStyleHistorySelect };","import { scaleMobile } from \"../../scale\";\nfunction bannerButtonsInlineStyleCommon(_ref, mobile, isHover, framed, isTwoButtonRowLayout) {\n let {\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 } = _ref;\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 ${marginRight}px ${scaleMobile(mobile, pageRequestUuid4, 10, undefined, true)}px ${marginLeft}px`,\n border: type === \"button\" && useBorderWidth > 0 ? `${useBorderWidth}px solid ${isHover ? hoverBorderColor : borderColor}` : undefined,\n padding: scaleMobile(mobile, pageRequestUuid4, padding, undefined, type !== \"button\").map(p => `${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% - ${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-${name}`,\n style\n };\n}\nexport { bannerButtonsInlineStyleCommon };","import { bannerButtonsInlineStyleCommon } from \".\";\nfunction bannerButtonsInlineStyleAcceptEssentials(_ref, isHover, framed, order, isTwoButtonRowLayout) {\n let {\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 } = _ref;\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}\nexport { bannerButtonsInlineStyleAcceptEssentials };","import { bannerButtonsInlineStyleCommon } from \".\";\nfunction bannerButtonsInlineStyleAcceptIndividual(_ref, isHover, framed, order, isTwoButtonRowLayout) {\n let {\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 } = _ref;\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}\nexport { bannerButtonsInlineStyleAcceptIndividual };","import { bannerButtonsInlineStyleCommon } from \"./\";\nfunction bannerButtonsInlineStyleSave(_ref, isHover, framed, order, isTwoButtonRowLayout) {\n let {\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 } = _ref;\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}\nexport { bannerButtonsInlineStyleSave };","import { bannerButtonsInlineStyleCommon } from \".\";\nfunction bannerButtonsInlineStyleAcceptAll(_ref, isHover, framed, order, isTwoButtonRowLayout) {\n let {\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 } = _ref;\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}\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 \"../../../..\";\nconst BannerButton = _ref => {\n let {\n inlineStyle,\n type,\n onClick,\n children,\n framed,\n busyOnClick,\n order\n } = _ref;\n if (type === \"hide\") {\n return null;\n }\n const [isBusy, setIsBusy] = useState(false);\n const handleOnClick = useCallback(() => {\n if (!isBusy) {\n busyOnClick && setIsBusy(true);\n 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 case \"acceptIndividual\":\n return bannerButtonsInlineStyleAcceptIndividual;\n case \"save\":\n return bannerButtonsInlineStyleSave;\n default:\n return bannerButtonsInlineStyleAcceptAll;\n }\n }, [inlineStyle]);\n\n // Also create a spacing `height:10` container because `marginBottom` causes issues with `position:sticky`\n return h(\"div\", _extends({}, type === \"button\" ? interactionAttr : {}, useStyleFn(banner, isHover, framed, order,\n // 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};\nexport { BannerButton };","function isIE() {\n return /MSIE (\\d+\\.\\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf(\"Trident/\") > -1;\n}\nexport { isIE };","import { Fragment, useMemo } from \"react\";\nimport { useBanner, useBannerButtonCallbacks, BannerButton } from \"../../..\";\nimport { CONTEXT_LATEST_DESIGN_VERSION } from \"../../../types\";\nconst BannerButtonList = () => {\n const banner = useBanner();\n const {\n isConsentRecord,\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 designVersion = CONTEXT_LATEST_DESIGN_VERSION\n } = banner;\n const useAcceptEssentialsUseAcceptAll = acceptEssentialsUseAcceptAll && acceptAll === acceptEssentials;\n const useSaveButtonUseAcceptAll = saveButtonUseAcceptAll && acceptAll === saveButtonType;\n\n // Calculate order of the buttons depending on a string like `all,essential,save,individual`\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 }, {});\n\n // If one-row layout is enabled, reverse the first two orders so the first button gets moved to the right\n if (acceptAllOneRowLayout) {\n buttonToOrder[orderToButton[0]] = 1;\n buttonToOrder[orderToButton[1]] = 0;\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();\n\n // We expect a reload of the page for the \"change\" action (keeps also dialog open)\n const busyOnClick = activeAction === \"change\" && !isConsentRecord;\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\" || designVersion > 2) && 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};\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\";\nconst BannerBody = _ref => {\n let {\n leftSideContainerRef,\n rightSideContainerRef\n } = _ref;\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 individualTexts: {\n postamble\n }\n } = banner;\n const {\n description,\n teachings\n } = useCommonTeachings();\n\n // Make the content responsive\n const leftSideId = `bnnr-body-leftSide-${pageRequestUuid4}`;\n const rightSideId = `bnnr-body-rightSide-${pageRequestUuid4}`;\n const contentId = `cntnt-${pageRequestUuid4}`;\n usePlainCss(` #${leftSideId} img {\n max-width: 100%;\n height: auto;\n}\n\n${document.getElementById(pageRequestUuid4)?.clientWidth > BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER ? \"\" : `#${leftSideId} {\n float: initial !important;\n width: auto !important;\n padding-right: initial !important;\n ${scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"banner\" && !individualPrivacyOpen ? \"padding-bottom: 10px !important;\" : individualPrivacyOpen ? \"padding-top: 10px !important;\" : \"\"}\n }\n\n #${contentId} {\n min-height: calc(var(--rendered-height-header) + var(--rendered-height-footer) + var(--rendered-height-rightSideContainer) + 60px);\n }\n \n #${rightSideId} {\n float: initial !important;\n width: auto !important;\n max-width: initial !important;\n margin: initial !important;\n ${individualPrivacyOpen ? \"padding-bottom: 5px !important;\" : \"padding-top: 10px !important;\"}\n position: sticky;\n }`}`);\n\n // Calculate the body content depending on TCF availability and if second view got opened\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, !!postamble && individualPrivacyOpen && h(\"div\", bannerInlineStyleBodyDescription(banner), teachingsSeparatorActive && h(\"div\", null, h(\"span\", commonInlineStyleBodyTeachingsSeparator(banner))), h(\"span\", _extends({}, commonInlineStyleBodyTeaching(banner, true), {\n dangerouslySetInnerHTML: {\n __html: postamble\n }\n }))));\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};\nexport { BannerBody };","import { scaleMobile } from \"../../scale\";\nconst BUTTONS_WIDTH = 300;\nfunction bannerInlineStylesLeftSide(_ref) {\n let {\n layout: {\n type\n },\n bodyDesign: {\n padding\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n individualPrivacyOpen,\n activeAction,\n pageRequestUuid4\n } = _ref;\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% - ${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}\nexport { BUTTONS_WIDTH, bannerInlineStylesLeftSide };","import { hexToRgb } from \"../../../utils\";\nimport { scaleMobile } from \"../../scale\";\nimport { BUTTONS_WIDTH } from \"./leftSide\";\nfunction bannerInlineStylesRightSide(_ref) {\n let {\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 } = _ref;\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) + ${scaleMobile(mobile, pageRequestUuid4, headerDesign.borderWidth)}px)` : `calc(var(--rendered-height-footer) + ${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(${r}, ${g}, ${b}, 0.3)`\n };\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-tb-right`,\n style\n };\n}\nexport { bannerInlineStylesRightSide };","import { scaleMobile } from \"../../scale\";\nfunction bannerInlineStyleBodyContainer(_ref) {\n let {\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 } = _ref;\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) => `${[0, 2].indexOf(i) > -1 ? 0 : p}px`).join(\" \"),\n lineHeight: 1.4\n };\n if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\" && useBorderWidth > 0) {\n style.borderLeft = `${useBorderWidth}px solid ${borderColor}`;\n style.borderRight = style.borderLeft;\n }\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-body-container`,\n style\n };\n}\nexport { bannerInlineStyleBodyContainer };","import { scaleMobile } from \"../../scale\";\nfunction bannerInlineStyleBody(_ref) {\n let {\n layout: {\n type,\n bannerMaxWidth\n },\n individualLayout,\n customCss: {\n antiAdBlocker\n },\n mobile,\n individualPrivacyOpen,\n pageRequestUuid4\n } = _ref;\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}\nexport { bannerInlineStyleBody };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { forwardRef, useCallback } from \"react\";\nimport { useBanner, bannerFooterInlineStyle, bannerFooterInlineStyleContainer, FooterLink, useCommonFooterLinks } from \"../../..\";\n\n// eslint-disable-next-line react/display-name\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\";\nfunction bannerFooterInlineStyleContainer(_ref) {\n let {\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 } = _ref;\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 => `${p}px`).join(\" \"),\n background: inheritBg ? design.bg : bg,\n borderRadius: useType === \"dialog\" ? `0 0 ${dialogBorderRadius}px ${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 if (useType === \"dialog\" && useBorderWidth > 0) {\n style.borderBottom = `${useBorderWidth}px solid ${design.borderColor}`;\n style.borderLeft = style.borderBottom;\n style.borderRight = style.borderBottom;\n }\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-footer-container`,\n style\n };\n}\nexport { bannerFooterInlineStyleContainer };","import { scaleMobile } from \"../../scale\";\nfunction bannerFooterInlineStyle(_ref) {\n let {\n layout: {\n type,\n bannerMaxWidth\n },\n individualLayout,\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4,\n individualPrivacyOpen\n } = _ref;\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}\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\";\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-${pageRequestUuid4}`;\n const id = `cntnt-${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 if (mobile.hideHeader && !activeAction && !individualPrivacyOpen && (useAcceptEssentials === \"hide\" ? !showCloseIcon : true)) {\n showHeader = scaleMobile(mobile, pageRequestUuid4, showHeader, false);\n }\n\n // Enable box shadow effect for the scrolling behavior\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 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 useLayoutEffect(() => {\n if (currentRef) {\n currentRef.addEventListener(\"scroll\", updateShowScrollBoxShadow);\n return () => currentRef.removeEventListener(\"scroll\", updateShowScrollBoxShadow);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return () => {};\n }, [currentRef, updateShowScrollBoxShadow]);\n usePlainCss(showScrollBoxShadow ? `#${rightSideId} {box-shadow:var(--boxShadowShowScroll);}` : \"\");\n\n // Create custom scrollbar when a border radius is active (https://css-tricks.com/the-current-state-of-styling-scrollbars/)\n usePlainCss(navigator.platform === \"Win32\" && type === \"dialog\" && dialogBorderRadius > 0 ? [`#${id}{overflow:overlay!important;}`, `#${id}::-webkit-scrollbar{width:11px;}`, `#${id}{scrollbar-width:thin;scrollbar-color:${teachingsFontColor} transparent;}`, `#${id}::-webkit-scrollbar-track{background:transparent;}`, `#${id}::-webkit-scrollbar-thumb{background-color:${teachingsFontColor};border-radius:${dialogBorderRadius}px;border:3px solid ${bg};}`, `#${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};\nexport { BannerContent };","import { scaleMobile } from \"../../scale\";\nfunction bannerContentInlineStyle(_ref) {\n let {\n layout: {\n type\n },\n customCss: {\n antiAdBlocker\n },\n decision: {\n showCloseIcon\n },\n activeAction,\n individualPrivacyOpen,\n mobile,\n pageRequestUuid4\n } = _ref;\n const innerHeight = document.getElementById(pageRequestUuid4)?.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}\nexport { bannerContentInlineStyle };","import { scaleMobile } from \"../..\";\nfunction bannerHeaderInlineStyleSeparator(_ref) {\n let {\n layout: {\n type\n },\n design,\n headerDesign: {\n borderWidth,\n borderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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 if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\" && useDesignBorderWidth > 0) {\n style.borderLeft = `${useDesignBorderWidth}px solid ${design.borderColor}`;\n style.borderRight = style.borderLeft;\n }\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-header-separator`,\n style\n };\n}\nexport { bannerHeaderInlineStyleSeparator };","import { scaleMobile } from \"../../scale\";\nfunction bannerFooterInlineStyleSeparator(_ref) {\n let {\n layout: {\n type\n },\n design,\n footerDesign: {\n borderWidth,\n borderColor\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\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 if (scaleMobile(mobile, pageRequestUuid4, type, \"banner\") === \"dialog\" && useBorderWidth > 0) {\n style.borderLeft = `${useBorderWidth}px solid ${design.borderColor}`;\n style.borderRight = style.borderLeft;\n }\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-footer-separator`,\n style\n };\n}\nexport { bannerFooterInlineStyleSeparator };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { bannerContentInlineStyleInner, useBanner, useBannerAnimation, useResettableAnimation } from \"../../..\";\nimport { AnimatedCss } from \"../..\";\nimport { BannerContent } from \".\";\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};\nexport { BannerAnimatedContent };","import { calculateRgba } from \"../../../utils\";\nimport { scaleMobile } from \"../../scale\";\nfunction bannerContentInlineStyleInner(_ref) {\n let {\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 } = _ref;\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 ? `${boxShadowOffsetX}px ${boxShadowOffsetY}px ${boxShadowBlurRadius}px ${boxShadowSpreadRadius}px ${calculateRgba(boxShadowColor, boxShadowColorAlpha)}` : undefined,\n [useType === \"banner\" ? bannerPosition === \"top\" ? \"borderBottom\" : \"borderTop\" : \"border\"]: useType === \"banner\" ? useBorderWidth > 0 ? `${useBorderWidth}px solid ${borderColor}` : undefined : undefined\n };\n if (useType === \"dialog\" && dialogPosition !== \"middleCenter\") {\n style.margin = dialogMargin.map(i => `${i}px`).join(\" \");\n }\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-inner`,\n style\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 \"../..\";\nconst RECORD_ITEM_TYPE_CUSTOM_CONSENT_GROUPS = 0;\nconst Banner = () => {\n const banner = useBanner();\n const {\n recorder,\n customCss: {\n antiAdBlocker,\n css\n },\n visible,\n animationVisible,\n activeAction,\n skipOverlay,\n gotHiddenDueLegal,\n pageRequestUuid4,\n individualPrivacyOpen,\n consent\n } = banner;\n const hiddenDueLegal = isHiddenDueLegal(banner);\n const show = visible && !hiddenDueLegal || !!activeAction;\n usePlainCss(antiAdBlocker ? css : \"\");\n usePlainCss(\n // `-webkit-text-size-adjust:100%;`: https://stackoverflow.com/a/2711132/5506547\n `#${pageRequestUuid4}, #${pageRequestUuid4} * {box-sizing: border-box;backface-visibility:initial;text-transform:initial;-webkit-text-size-adjust:100%;}`);\n useRestrictScrollWhenVisible(show);\n\n // Listen to window resizes and resize the content automatically\n const [, setInvalidate] = useState(0);\n const updateSize = () => setInvalidate(+new Date());\n useLayoutEffect(() => {\n window.addEventListener(\"resize\", updateSize);\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n useLayoutEffect(() => {\n dispatchResizeEvent(1000);\n }, [animationVisible, individualPrivacyOpen]);\n\n // When changes to the legal settings are done, make the banner visible or hide\n gotHiddenDueLegal && useEffect(() => {\n gotHiddenDueLegal(hiddenDueLegal);\n }, [hiddenDueLegal]);\n useBannerHistory();\n useBannerActionLinks();\n\n // Automatically restart recorder when banner got visible again (e.g. cookie banner on first website\n // visit and then \"Change privacy settings\" link / dialog).\n useEffect(() => {\n if (show && animationVisible && recorder) {\n recorder.restart();\n }\n }, [show, animationVisible, recorder]);\n useEffect(() => {\n if (recorder) {\n recorder.getRecords().addCustom(RECORD_ITEM_TYPE_CUSTOM_CONSENT_GROUPS, consent.groups);\n }\n }, [recorder, consent]);\n if (!show) {\n return null;\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};\nexport { Banner, RECORD_ITEM_TYPE_CUSTOM_CONSENT_GROUPS };","import { useEffect } from \"react\";\nimport { useBanner } from \"..\";\n\n/**\n * Do not allow scrolling when this banner is visible and add a blur effect if enabled.\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;\n\n // Save first state\n if (dataset.rcbPreviousOverflow === undefined) {\n dataset.rcbPreviousOverflow = style.overflow;\n }\n style.overflow = showOverlay ? \"hidden\" : dataset.rcbPreviousOverflow;\n document.body.parentElement.style.overflow = style.overflow;\n }, [showOverlay]);\n}\nexport { useRestrictScrollWhenVisible };","import { useEffect, useState } from \"react\";\nimport { useBanner } from \"../../..\";\nfunction useBannerHistory() {\n const banner = useBanner();\n const {\n consent,\n groups,\n tcf,\n activeAction,\n selectHistoryEntry,\n fetchHistory\n } = banner;\n\n // Save the current consent and group settings to restore\n const [originalConsent, setOriginalConsent] = useState({\n consent,\n groups,\n tcf\n });\n\n // Listen to consent changes and save it as original consent (only when non-history)\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();\n\n // Initially select first item\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 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?.(groups, consentGroups, tcf);\n }\n }, [activeAction]);\n}\nexport { useBannerHistory };","import { scaleMobile } from \"../..\";\nfunction bannerOverlayInlineStyleAlignment(_ref) {\n let {\n layout: {\n type,\n dialogPosition\n },\n customCss: {\n antiAdBlocker\n },\n mobile,\n pageRequestUuid4\n } = _ref;\n const style = {\n display: \"flex\",\n width: \"100%\",\n height: \"100%\"\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 return {\n className: `wp-exclude-emoji ${antiAdBlocker === \"y\" ? \"\" : `rcb-align`}`,\n style\n };\n}\nexport { bannerOverlayInlineStyleAlignment };","import { scaleMobile } from \"../..\";\nimport { calculateRgba } from \"../../..\";\n\n/**\n * This method needs to be ported to Banner.php#wp_footer, too!\n */\nfunction bannerOverlayInlineStyle(_ref) {\n let {\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 } = _ref;\n let backdropFilter = \"none\";\n if (process.env.PLUGIN_CTX === \"pro\") {\n /* onlypro:start */\n if (overlay) {\n backdropFilter = `blur(${overlayBlur}px)`;\n }\n /* onlypro:end */\n }\n\n return {\n className: antiAdBlocker === \"y\" ? undefined : `rcb-bann3r rcb-bann3r-${scaleMobile(mobile, pageRequestUuid4, type, \"banner\")} ${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}\nexport { bannerOverlayInlineStyle };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentGet = {\n path: \"/consent\",\n method: RouteHttpVerb.GET,\n obfuscatePath: \"keep-last-part\"\n};","import { useMemo } from \"react\";\nimport { useState } from \"react\";\nimport { getOptionsFromWindow, getOtherOptionsFromWindow } from \"../utils\";\nimport { useBannerPreDecisionGateway, useTcf } from \"../hooks\";\nimport { applyConsent, getCookieConsentManager } from \"../others\";\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 \".\";\nimport { Recorder } from \"@devowl-wp/web-html-element-interaction-recorder\";\n\n/**\n * Simply connects a context store to the banner itself. On the website itself\n * it should not rely\n */\nconst WebsiteBanner = _ref => {\n let {\n poweredLink\n } = _ref;\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 bannerDesignVersion,\n bannerI18n,\n isPro,\n isLicensed,\n isDevLicense,\n affiliate,\n isCurrentlyInTranslationEditorPreview,\n pageByIdUrl\n } = getOtherOptionsFromWindow();\n const userDecision = getUserDecision(userConsentCookieName);\n\n // TCF compatibility\n const tcfObject = useTcf(isTcf, tcf, tcfMetadata);\n\n // Server-side rendered overlay handler\n const overlay = document.getElementById(pageRequestUuid4);\n const recorder = useMemo(() => new Recorder(overlay), []);\n const {\n toggleOverlay\n } = useBannerToggleOverlay(overlay);\n const {\n openHistory,\n openBanner,\n revokeConsent,\n updateTcfFilterBy,\n updateIndividualPrivacyOpen,\n updateGroupChecked,\n updateCookieChecked,\n onSave,\n onClose,\n selectHistoryEntry\n } = useBannerStateContextCallbacks({\n toggleOverlay,\n recorder,\n isTcf,\n defaultConsent: {\n groups: getCookieConsentManager().getDefaultDecision(true)\n },\n applyConsent\n });\n\n // Context values preparation\n const [contextValue, setContextValue] = useState({\n recorder,\n layout: {\n ...layout\n },\n decision: {\n ...decision\n },\n legal: {\n ...legal\n },\n design: {\n ...design\n },\n headerDesign: {\n ...headerDesign\n },\n bodyDesign: {\n ...bodyDesign\n },\n footerDesign: {\n ...footerDesign\n },\n texts: {\n ...texts\n },\n individualLayout: {\n ...individualLayout\n },\n saveButton: {\n ...saveButton\n },\n group: {\n ...group\n },\n individualTexts: {\n ...individualTexts\n },\n customCss: {\n ...customCss\n },\n mobile: {\n ...mobile\n },\n productionNotice: h(BannerProductionNotice, {\n isPro: isPro,\n isLicensed: isLicensed,\n isDevLicense: isDevLicense,\n i18n: bannerI18n\n }),\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 designVersion: bannerDesignVersion,\n i18n: bannerI18n,\n keepVariablesInTexts: isCurrentlyInTranslationEditorPreview,\n affiliate,\n consent: {\n groups: {\n ...(userDecision === false ? {} : userDecision.consent),\n // Always override essential cookies\n ...getCookieConsentManager().getDefaultDecision(userDecision === false)\n }\n },\n didGroupFirstChange: false,\n fetchHistory: async () => {\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n restPathObfuscateOffset\n } = getOptionsFromWindow();\n const history = await commonRequest({\n location: locationRestConsentGet,\n options: {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n restPathObfuscateOffset\n },\n cookieValueAsParam: [userConsentCookieName],\n sendRestNonce: false\n });\n setContextValue(state => {\n return {\n ...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 onSave: (markAsDoNotTrack, buttonClicked) => onSave(setContextValue, markAsDoNotTrack, buttonClicked),\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};\nexport { WebsiteBanner };","import { useMemo } from \"react\";\nimport { prepareTcfString } from \"@devowl-wp/react-cookie-banner\";\nimport { applyTcfModelMetadata, applyRestrictivePurposes, createTcfModel, createTcfModelFromCookie } from \"@devowl-wp/cookie-consent-web-client\";\nimport { getCookieConsentManager } from \"../others\";\n\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 */\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\"));\n\n // First, try to resolve from user consent (cookie value)\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 applyTcfModelMetadata(model, tcfMeta, manager);\n applyRestrictivePurposes(model, tcf.vendorConfigurations);\n if (!restored) {\n prepareTcfString(model, \"initial\");\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}\nexport { useTcf };","import { useCallback } from \"react\";\nimport { useBannerAnimation, resetConsentChangeHash } from \"../..\";\n\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 */\nfunction useBannerToggleOverlay(overlay) {\n const useBannerAnimationCallback = useBannerAnimation();\n const toggleOverlay = useCallback((_ref, show) => {\n let {\n layout\n } = _ref;\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 const useDuration = show ? useAnimationIn === \"none\" ? defaultIfNoAnimation : animationInDuration : useAnimationOut === \"none\" ? defaultIfNoAnimation : animationOutDuration;\n\n // Toggle SSR-rendered overlay\n useDuration > 0 && (overlay.style.transition = `background ${useDuration}ms`);\n overlay.style.background = \"transparent\";\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 resetConsentChangeHash();\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}\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/**\n * Do some decision gateways like DNT, Bot / Crawler and Decision and depending\n * on that, show the Banner initially.\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 const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n restPathObfuscateOffset,\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 restPathObfuscateOffset\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 {\n ...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}\nexport { useBannerPreDecisionGateway };","import { getOtherOptionsFromWindow } from \"./getOtherOptionsFromWindow\";\n\n/**\n * Checks if the current page is customize page.\n */\nfunction isCustomize() {\n return !!getOtherOptionsFromWindow().customizeIdsBanner;\n}\nexport { isCustomize };","import { getUserDecision } from \"../decision\";\nimport { isCrawler } from \"../utils\";\n\n/**\n * Is the current request from a spider / crawler?\n */\nconst preDecisionGatewayIsCrawler = resultIfBot => async _ref => {\n let {\n decisionCookieName\n } = _ref;\n if (getUserDecision(decisionCookieName) !== false || !resultIfBot) {\n return false;\n }\n return isCrawler() ? resultIfBot : false;\n};\nexport { preDecisionGatewayIsCrawler };","import { getUserDecision } from \"../decision\";\nimport { isCrawler } from \"../utils\";\n\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 */\nconst preDecisionGatewayIsPreventPreDecision = preventPreDecision => async _ref => {\n let {\n decisionCookieName\n } = _ref;\n const userDecision = getUserDecision(decisionCookieName);\n return preventPreDecision && userDecision === false ? isCrawler() ?\n // For crawlers we need to explicitly allow services on all pages\n \"all\" : \"consent\" : false;\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};\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\";\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 for (const gateway of gateways) {\n const result = await gateway(useOptions, ...args);\n if (result !== false) {\n show = false;\n const applyWithOptions = type => apply({\n type,\n ...useOptions\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 break;\n }\n }\n if (show) {\n onShowCookieBanner();\n document.dispatchEvent(new CustomEvent(BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT));\n\n // Wait all events are initialized\n await ready();\n document.dispatchEvent(new CustomEvent(BANNER_PRE_DECISION_SHOW_EVENT, {\n detail: {}\n }));\n }\n}\nexport { preDecisionGateway };","import { getUserDecision, OPT_IN_ALL_EVENT } from \"@devowl-wp/cookie-consent-web-client\";\nimport { useEffect } from \"react\";\nfunction useBannerConsentListener(setContextValue, userConsentCookieName) {\n useEffect(() => {\n const listener = () => {\n const consent = getUserDecision(userConsentCookieName);\n consent && setContextValue(state => ({\n ...state,\n consent: {\n groups: consent.consent\n }\n }));\n };\n document.addEventListener(OPT_IN_ALL_EVENT, listener);\n return () => {\n document.removeEventListener(OPT_IN_ALL_EVENT, listener);\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/**\n * Some presets have custom opt-in coding, e. g. Amazon Widgets.\n */\nfunction listenPresetOptIn() {\n document.addEventListener(OPT_IN_EVENT, async _ref => {\n let {\n detail: {\n service: {\n presetId,\n codeOptIn,\n codeDynamics\n }\n }\n } = _ref;\n switch (presetId) {\n case \"amazon-associates-widget\":\n {\n const {\n amznAssoWidgetHtmlId\n } = codeDynamics || {};\n if (amznAssoWidgetHtmlId) {\n const element = document.getElementById(amznAssoWidgetHtmlId);\n if (element) {\n const slotNum = amazonWidgetsSlotNum;\n amazonWidgetsSlotNum++;\n putHtmlCodeToDom(codeOptIn, codeDynamics, element);\n\n // Amazon Widgets is using `document.write`, we need to manually move the ad container...\n const adContainer = await waitObject(() => document.querySelector(`[id^=\"amzn_assoc_ad_div_\"][id$=\"${slotNum}\"]`), 500, 50);\n if (adContainer) {\n element.appendChild(adContainer);\n }\n }\n }\n break;\n }\n case \"google-maps\":\n {\n document.addEventListener(OPT_IN_CONTENT_BLOCKER, async _ref2 => {\n let {\n detail: {\n element\n }\n } = _ref2;\n const {\n et_pb_map_init,\n jQuery\n } = window;\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 default:\n break;\n }\n });\n}\nexport { listenPresetOptIn };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentClearDelete = {\n path: \"/consent/clear\",\n method: RouteHttpVerb.DELETE,\n obfuscatePath: \"keep-last-part\"\n};","import { regExpPatternFromWildcardName } from \"..\";\n\n/**\n * Synchronously check if a consent is given. See `window.consentApi.consent` for more documentation.\n */\nfunction consentSync(manager, typeOrIdOrUniqueName, 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(_ref => {\n let {\n items\n } = _ref;\n return items;\n }).flat();\n for (const row of allCookies) {\n if (typeof typeOrIdOrUniqueName === \"number\") {\n if (row.id === typeOrIdOrUniqueName) {\n found.push({\n cookie: row,\n relevance: 10\n });\n }\n } else if (typeof typeOrIdOrUniqueName === \"string\" && typeof name === \"undefined\" && typeof host === \"undefined\") {\n if (row.uniqueName === typeOrIdOrUniqueName) {\n found.push({\n cookie: row,\n relevance: 10\n });\n }\n } else {\n const {\n technicalDefinitions\n } = row;\n if (technicalDefinitions?.length) {\n // Check if technical information matches\n for (const td of technicalDefinitions) {\n const regexp = regExpPatternFromWildcardName(td.name);\n if (td.type === typeOrIdOrUniqueName && (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 const already = manager.getUserDecision();\n if (found.length) {\n const relevantCookie = found.sort((_ref2, _ref3) => {\n let {\n relevance: a\n } = _ref2;\n let {\n relevance: b\n } = _ref3;\n return a - b;\n })[0].cookie;\n\n // Check if consent is already given\n if (already && revisionHash === already.revision) {\n const consentCookieIds = Object.values(already.consent).flat();\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}\nexport { consentSync };","import { OPT_IN_EVENT, OPT_OUT_EVENT } from \"..\";\nimport { consentSync } from \".\";\n\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 * **Since 3.4.14**: You can also check for consent by service unique name:\n *\n * ```js\n * window.consentApi.consent(\"google-analytics-ua\")\n * ```\n */\nfunction consent() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise((resolve, reject) => {\n const {\n cookie: foundCookie,\n consentGiven,\n cookieOptIn\n } = consentSync(...args);\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 _ref => {\n let {\n detail: {\n service\n }\n } = _ref;\n if (service === foundCookie) {\n resolve();\n }\n });\n\n // Wait for opt out\n document.addEventListener(OPT_OUT_EVENT, async _ref2 => {\n let {\n detail: {\n service\n }\n } = _ref2;\n if (service === foundCookie) {\n reject();\n }\n });\n }\n } else {\n resolve();\n }\n });\n}\nexport { consent };","import { consent } from \".\";\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}\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 * `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) {\n let ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document.createElement(\"div\");\n return new Promise(resolve => {\n // Find matching blocker\n let found;\n const isPseudoRef = !ref.parentElement;\n loop1: for (const row of blocker) {\n const {\n rules\n } = row;\n // Check if host matches\n for (const rule of rules) {\n const regexp = regExpPatternFromWildcardName(rule);\n if (url.match(new RegExp(regexp, \"s\"))) {\n found = row;\n break loop1;\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 });\n\n // Append blocking element to HTML DOM if not already exists\n if (isPseudoRef) {\n document.body.appendChild(ref);\n }\n } else {\n resolve();\n }\n });\n}\nexport { unblock };","import { LISTEN_TO_EVENTS } from \"../utils\";\nimport { INITIATOR_EXECUTION } from \"@devowl-wp/headless-content-unblocker\";\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) {\n let settings = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n const {\n failedSyncReturnValue,\n skipRetry\n } = settings;\n\n // Extract original function(s)\n const overwrittenFns = [];\n const retryWrap = [];\n const useFns = Array.isArray(fn) ? fn : [fn];\n for (const passedFn of useFns) {\n const overwrite = !!passedFn?.key;\n\n // When the function should be overwritten directly in an object, resolve the object which should be addressed\n let objectResolved;\n let original;\n if (typeof passedFn === \"function\") {\n original = passedFn;\n } else if (passedFn.key) {\n if (passedFn.overwritten) {\n continue;\n }\n if (typeof passedFn.object === \"function\") {\n objectResolved = passedFn.object();\n } else {\n objectResolved = passedFn.object;\n }\n if (objectResolved) {\n original = objectResolved[passedFn.key];\n }\n }\n if (typeof original === \"function\") {\n const originalFunctionBody = original.toString();\n const overwriteFn = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const callOriginal = () => original.apply(this, args);\n\n // Detect which function should be used to check for execution\n let checkResult = true;\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 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 };\n\n // Do overwrite, finally\n if (overwrite && typeof passedFn === \"object\") {\n objectResolved[passedFn.key] = overwriteFn;\n passedFn.overwritten = true;\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 overwrittenFns.push(undefined);\n }\n }\n\n // Retry to overwrite failed functions if there are still pending scripts\n if (retryWrap.length && !skipRetry) {\n const retry = () => {\n wrapFn(apis, blocker, manager, retryWrap, checkExecution, {\n ...settings,\n skipRetry: true\n });\n };\n for (const event of LISTEN_TO_EVENTS) {\n if (document.readyState === \"complete\" && [\"DOMContentLoaded\", \"readystatechange\"].indexOf(event) > -1) {\n continue;\n }\n document.addEventListener(event, retry);\n }\n\n // Listen to immediate \"unblock\" initiators from the content blocker\n document.addEventListener(INITIATOR_EXECUTION, retry);\n }\n return Array.isArray(fn) ? overwrittenFns : overwrittenFns?.[0];\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 */\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(`${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 _ref => {\n let {\n detail: {\n deleteHttpCookies\n }\n } = _ref;\n // Handle cookie deletion which needs to be done server-side (e. g. HTTP cookies)\n deleteHttpCookies.length && setTimeout(() => deleteCookiesServer(deleteHttpCookies), 0);\n });\n if (element) {\n render(h(WebsiteBanner, {\n poweredLink: poweredLink\n }), element);\n }\n}, \"interactive\");\n\n// Expose public API\nconst {\n wrapFn\n} = createApi(getCookieConsentManager(), blocker);\n\n// Wrap some functions\nconst fnGetWindow = () => window;\nwrapFn({\n object: () => idx(window, window => window.mkdf.modules.destinationMaps.mkdfGoogleMaps),\n key: \"getDirectoryItemsAddresses\"\n}, \"functionBody\");\nwrapFn([\n// [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/**\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 */\nfunction tcfCmpApi() {\n const other = getOtherOptionsFromWindow();\n const {\n isTcf\n } = other;\n if (process.env.IS_TCF === \"1\" && isTcf) {\n const {\n tcf,\n tcfMetadata\n } = other;\n const {\n scope\n } = tcfMetadata;\n\n // Create instance only once\n if (!cmpApiInstance) {\n cmpApiInstance = new CmpApi(+process.env.TCF_CMP_ID,\n // 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\");\n\n // Dispatch events to vendors can listen to it\n setTimeout(() => tcfCmpApiDispatcher(tcf, tcfMetadata, cmpApiInstance, getCookieConsentManager().getOption(\"tcfCookieName\")), 0);\n }\n return cmpApiInstance;\n } else {\n return undefined;\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 if (parentElement !== body) {\n body.appendChild(element);\n }\n return element;\n}\nexport { ensureBodyElement };","import { CookieConsentManager } from \"../apply\";\nimport { BANNER_PRE_DECISION_SHOW_EVENT, OPT_IN_ALL_EVENT } from \"../events\";\nimport { getUserDecision } from \".\";\n\n/**\n * Listen to opt-in so we can safely print the UUID of the current consent to HTML elements.\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}\nexport { printConsentUuidsToHTMLElement };","import { commonRequest } from \"@devowl-wp/utils\";\nimport { getOptionsFromWindow } from \"../utils\";\nimport { locationRestConsentClearDelete } from \"../wp-api\";\n\n/**\n * Delete cookies on server side (currently only `http`).\n */\nfunction deleteCookiesServer(cookies) {\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n restPathObfuscateOffset\n } = getOptionsFromWindow();\n commonRequest({\n location: locationRestConsentClearDelete,\n options: {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n restPathObfuscateOffset\n },\n sendRestNonce: false,\n params: {\n cookies: cookies.join(\",\")\n }\n });\n}\nexport { deleteCookiesServer };","import { consent, consentAll, consentSync, unblock, wrapFn } from \".\";\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 = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return consent(manager, ...args);\n };\n const apiConsentAll = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return consentAll(manager, ...args);\n };\n const apiConsentSync = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return consentSync(manager, ...args);\n };\n const apiConsentUnblock = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return unblock(blocker, ...args);\n };\n const wrapApis = {\n consent: apiConsent,\n consentAll: apiConsentAll,\n consentSync: apiConsentSync,\n unblock: apiConsentUnblock\n };\n const apiWrapFn = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return wrapFn(wrapApis, blocker, manager, ...args);\n };\n const api = {\n ...wrapApis,\n wrapFn: apiWrapFn\n };\n window.consentApi = api;\n\n // Dispatch event so e.g. stubs can react to it and forward functions\n window.dispatchEvent(new CustomEvent(\"consentApi\"));\n return api;\n}\nexport { createApi };","import { Fragment } from \"react\";\nconst BannerProductionNotice = _ref => {\n let {\n isPro,\n isLicensed,\n isDevLicense,\n i18n: {\n noLicense,\n devLicense,\n devLicenseLearnMore,\n devLicenseLink\n }\n } = _ref;\n if (!isPro) {\n return null;\n }\n const style = {\n fontSize: 13,\n color: \"#c95252\",\n fontWeight: \"bold\",\n order: 9\n };\n let useText = \"\";\n if (isDevLicense) {\n useText = devLicense;\n } else if (!isLicensed) {\n useText = noLicense;\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};\nexport { BannerProductionNotice };","import { RouteHttpVerb } from \"@devowl-wp/utils\";\nexport const locationRestConsentPost = {\n path: \"/consent\",\n method: RouteHttpVerb.POST,\n obfuscatePath: \"keep-last-part\"\n};","import { getOtherOptionsFromWindow } from \"../utils\";\n\n/**\n * Apply Consent Forwarding, it set's cross domain cookies via CORS requests.\n *\n * @see https://javascript.info/fetch-crossorigin\n */\nfunction applyConsentForwarding(_ref) {\n let {\n endpoints,\n data\n } = _ref;\n const {\n isPro\n } = getOtherOptionsFromWindow();\n if (isPro) {\n /* onlypro:start */\n const promises = [];\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 return Promise.all(promises);\n /* onlypro:start */\n } else {\n return Promise.reject();\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 * Save consent to the backend and apply cookies on running session.\n */\nconst applyConsent = async _ref => {\n let {\n consent,\n markAsDoNotTrack = false,\n buttonClicked,\n blocker = 0,\n blockerThumbnail,\n tcfString,\n recorderJsonString,\n uiView\n } = _ref;\n const {\n clientWidth,\n clientHeight\n } = document.documentElement;\n const {\n restNamespace,\n restRoot,\n restQuery,\n restNonce,\n restPathObfuscateOffset\n } = getOptionsFromWindow();\n\n // Use `commonRequest` cause on frontend we do not have `wp.i18n` available\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 restPathObfuscateOffset\n },\n sendRestNonce: false,\n request: {\n ...consent,\n markAsDoNotTrack,\n buttonClicked,\n viewPortWidth: clientWidth,\n viewPortHeight: clientHeight,\n blocker,\n blockerThumbnail,\n tcfString,\n recorderJsonString,\n uiView\n },\n params: {\n _wp_http_referer: window.location.href\n }\n });\n\n // Does the browser support cookies? Save the decision locally in `window` so `getUserDecision` can fallback\n window.rcbDisabledCookieComp = {\n uuid,\n previousUuids: [],\n revision: cookie_revision,\n consent: decision_in_cookie\n };\n await Promise.all([\n // Apply consent forwarding and wait for all requests\n forward && applyConsentForwarding(forward), getCookieConsentManager().applyCookies({\n type: \"consent\"\n })].filter(Boolean));\n};\nexport { applyConsent };","import { getOptionsFromWindow } from \"./getOptionsFromWindow\";\n\n/**\n * Get the version of Real Cookie Banner as integer.\n */\nfunction getCmpVersion(type) {\n const split = getOptionsFromWindow().version.split(\".\");\n return +(type === \"major\" ? split[0] : split.map(i => +i < 10 ? `0${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\";\nfunction getCookieConsentManager() {\n const {\n userConsentCookieName,\n revisionHash,\n setCookiesViaManager,\n groups,\n essentialGroup\n } = getOtherOptionsFromWindow();\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: `${userConsentCookieName}-tcf`\n });\n }\n return window.rcbConsentManager;\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}\nexport { getOptionsFromWindow };","import { getOptionsFromWindow } from \"./getOptionsFromWindow\";\n\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 */\nfunction getOtherOptionsFromWindow() {\n return getOptionsFromWindow().others;\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__(3054)))\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","_ref","selectedGroups","decisionCookieName","tagManager","groups","essentialGroupSlug","type","isManagerActive","essentialGroupObj","filter","_ref2","slug","consentEssentials","id","items","map","_ref3","decision","getUserDecision","consent","console","warn","iterateServices","async","callback","group","service","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","uniqueName","Object","assign","event","setTimeout","_ref4","_ref5","_ref6","applyOptInOutManager","optInAllReady","deleteHttpCookies","allOptOutServices","optOutReady","codeOptOut","deleteTechnicalDefinitionsAfterOptOut","isEmbeddingOnlyExternalResources","technicalDefinitions","executeCodeOptOutWhenNoTagManagerConsentIsGiven","dynamics","name","wildcardString","applyDynamicsToHtml","pattern","RegExp","regExpPatternFromWildcardName","key","keys","test","useStorage","localStorage","sessionStorage","itemName","setItem","e","tries","getItem","removeItem","deleteCookiesLocally","some","applyOptOut","CookieConsentManager","constructor","this","applyCookies","getOption","getDefaultDecision","respectLegitimateInterests","arguments","length","result","ids","legalBasis","getOptions","COOKIE_VALUE_REGEXP","cookieValueValidateCache","cookieName","cookieValue","supportsCookiesPrefix","split","rcbDisabledCookieComp","match","previousUuids","uuids","uuid","shift","created","createdAt","Date","revision","revisionHash","JSON","parse","decisionJson","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","memorizeReadyState","readyState","reached","interactiveReached","interactiveResolve","LISTEN_TO_EVENTS","fn","state","executed","cb","addEventListener","then","str","replace","memoizeSupported","supportsCookies","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_DELEGATE_CLICK","HTML_ATTRIBUTE_JQUERY_HIJACK_EACH","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","delay","delayOrFromElement","hasAttribute","getAttribute","Event","htmlDecode","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","visible","checked","disabled","layout","borderRadius","headlineFontSize","checkboxBg","checkboxBorderWidth","checkboxBorderColor","checkboxActiveBg","checkboxActiveBorderColor","checkboxActiveColor","customCss","antiAdBlocker","mobile","pageRequestUuid4","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","providerLegalNoticeUrl","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","separator","filtered","Boolean","reduce","acc","curr","useCommonFooterLinks","onClose","putPoweredByLinkInRow","row1","close","poweredByLink","linkTarget","linkPrivacyPolicy","linkImprint","useLegalLinks","targetAttributes","rows","render","row","joinWithAndSeparator","arr","andSeparator","splice","join","supWithLineHeightFix","useCommonTeachings","disableDataProcessingInUnsafeCountries","disableAgeNotice","disableListServicesNotice","blocker","isEPrivacyUSA","ageNotice","isAgeNotice","listServicesNotice","isListServicesNotice","texts","ageNoticeBanner","consentForwardingExternalHosts","consentForwardingExternalHostsText","tcf","individualPrivacyOpen","individualTexts","individualDescription","essentialGroup","designVersion","tcfBannerI18n","keepVariablesInTexts","consentForwardingExternalHostsFinalText","useDescription","servicesProcessingUnsafeCountries","flat","tcfVendorsProcessingUnsafeCountries","values","gvl","vendors","vendor","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","parentNode","BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER","commonInlineStyleBodyTeaching","isSingle","bodyDesign","teachingsInheritTextAlign","teachingsTextAlign","teachingsInheritFontSize","teachingsFontSize","teachingsInheritFontColor","teachingsFontColor","textAlign","commonInlineStyleBodyTeachingsSeparator","teachingsSeparatorActive","teachingsSeparatorWidth","teachingsSeparatorHeight","teachingsSeparatorColor","maxWidth","commonGroupsInlineStyleLinkMore","linkColor","linkHoverColor","commonInlineStyleHeaderHeadline","hasCloseIcon","headerDesign","fontWeight","paddingRight","calculateNewVal","val","scalePercent","newVal","scaleMobile","useWidthOfThisContainerId","replaceWith","enabled","scalePercentVertical","additionalVerticalScaling","useScalePercentVertical","innerWidth","clientWidth","useOriginal","toJS","Array","isArray","v","getSsrPoweredByLink","originalPoweredLink","rcbPoweredByCacheOuterHTML","outerHTML","CONTEXT_LATEST_DESIGN_VERSION","hexToRgb","hex","exec","parseInt","g","b","matchingSelector","matches","Records","selectors","createReplay","garbageCollect","replayItems","commonPrefix","words","every","w","substr","commonStringPrefix","selectorsPrefix","item","stringify","addCustom","data","getTime","calculateMillisecondsToPrevious","toggle","addClick","ensureSelector","addScroll","scrollTop","selectorIdx","calculated","secondLast","typePrevious","selectorIdxPrevious","scrollTopPrevious","typeSecondLast","selectorIdxSecondLast","scrollTopSecondLast","addResize","widthPrevious","heightPrevious","considerReplaceWhen","replaceData","lastItem","previousCurrentTime","expectedDelay","HTML_ATTRIBUTE_UNIQUE_IDENTIFIER","calcFullSelector","elm","until","names","uqid","unshift","previousElementSibling","tagName","Recorder","records","interactionScroll","interactionClick","interactionResize","innerHeight","restart","removeEventListener","getRecords","BASE32_TABLE","base32Encode","base64","btoa","base32","bits","charCodeAt","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","slice","toLocaleTimeString","parseResult","status","cloneForFallback","clone","json","lastError","line","startsWith","commonRequest","location","request","routeRequest","params","settings","cookieValueAsParam","multipart","sendRestNonce","restNamespace","obfuscatePath","doObfuscatePath","restPathObfuscateOffset","apiUrl","URL","restRoot","permalinkPath","rest_route","pathname","foundParams","path","getParams","checkParam","_httpCookieInvalidate","pathSearch","fixedPathName","parsed","pathSearchEntry","protocol","usePermalinkPath","useAfterPermalinkPath","offset","mode","j","offsetBase64","part","letters","newLetters","letter","letterInOffsetBase64","m","usePath","restNonce","_wpnonce","s","_method","restQuery","commonUrlBuilder","allowBody","apiUrlBuilt","from","File","hasRestNonce","init","headers","Accept","pageUnload","pageUnloadListener","start","remove","removeCorruptRestApi","responseJSON","replay","code","retryAfter","get","replayData","resultAny","RouteHttpVerb","untrailingslashit","endsWith","trailingslashit","getWebpackPublicPath","toUpperCase","publicUrl","chunkFolder","preDecisionGatewaySupportsCookies","supportsCookiesName","isCrawler","isbot","promiseTimeout","promise","preDecisionGatewayDynamicRequest","timeout","active","predecision","isDoNotTrack","doNotTrack","msDoNotTrack","external","msTrackingProtectionEnabled","preDecisionGatewayIsDoNotTrack","preDecisionGatewayUserConsent","locationRestConsentDynamicPredecisionGet","isHiddenDueLegal","imprintHide","privacyPolicyHide","pageId","useBannerAnimation","isMobile","isMobileFirefox","term","animationIn","animationInOnlyMobile","animationOut","animationOutOnlyMobile","useAnimationIn","useAnimationOut","HREF_MATCHER","resetConsentChangeHash","hash","cancelEvent","preventDefault","stopPropagation","useResettableAnimation","animation","setJ","stateAnimation","setStateAnimation","stateAnimationReset","setStateAnimationReset","stateDuration","setStateDuration","stateDurationReset","setStateDurationReset","calculateRgba","alpha","getAnimationRelatedState","isVisible","animationInDuration","animationOutDuration","animationInDelay","animationOutDelay","AnimatedCss","animateOnMount","setAnimationRelatedState","animationDelay","animationDuration","pointerEvents","transition","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","isRetina","logoMaxHeight","logoMargin","logoFitDim","logoRetinaFitDim","useFitDim","bannerHeaderInlineStyleLogo","BannerGroupSectionTitle","headlineFontColor","headlineFontWeight","bannerGroupsInlineStyleTitle","descriptionFontColor","bannerGroupsInlineStyleDescription","CommonLinkMore","onToggle","showMore","hideMore","isOpen","setIsOpen","newOpen","BannerCookie","handleCheckbox","BannerGroup","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","bannerInlineStyleBodyDescription","descriptionInheritFontSize","descriptionTextAlign","BannerHistorySelect","selectedId","setSelectedId","history","selectHistoryEntry","historyLabel","historySelectNone","selectedHistoryItem","optionStyle","bannerInlineStyleHistorySelectOption","borderBottom","bannerInlineStyleHistorySelect","onChange","isUnblock","isForwarded","toLocaleString","lang","bannerButtonsInlineStyleCommon","isTwoButtonRowLayout","order","hoverBg","hoverBorderColor","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","isConsentRecord","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","postamble","leftSideId","rightSideId","contentId","stackOrGroups","leftSide","usePadding","float","paddingTop","paddingBottom","bannerInlineStylesLeftSide","teaching","rightSide","dialogMaxWidth","inheritDialogMaxWidth","flexWrap","bannerInlineStylesRightSide","bannerInlineStyleBodyContainer","bannerInlineStyleBody","BannerFooter","handleClose","links","renderLinks","useCommonFooterLink","bottom","bannerFooterInlineStyleContainer","bannerFooterInlineStyle","BannerContent","current","currentRef","showHeader","hideHeader","showScrollBoxShadow","setShowScrollBoxShadow","updateShowScrollBoxShadow","clientHeight","scrollHeight","offsetHeight","hasScrollbar","scrolledToBottom","ceil","platform","headerRef","footerRef","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","recorder","skipOverlay","gotHiddenDueLegal","hiddenDueLegal","show","overlay","showOverlay","dataset","rcbPreviousOverflow","useRestrictScrollWhenVisible","setInvalidate","updateSize","fetchHistory","originalConsent","setOriginalConsent","consentGroups","useBannerHistory","openBanner","openHistory","revokeConsent","handleType","successMessage","eventListenerDocumentClick","concat","parent","eventListenerHashChange","substring","useBannerActionLinks","bannerOverlayInlineStyleAlignment","overlayBg","overlayBgAlpha","overlayBlur","backdropFilter","left","right","bannerOverlayInlineStyle","locationRestConsentGet","WebsiteBanner","customizeValuesBanner","tcfMetadata","userConsentCookieName","bannerDesignVersion","bannerI18n","isPro","isLicensed","isDevLicense","isCurrentlyInTranslationEditorPreview","getOtherOptionsFromWindow","userDecision","tcfObject","tcfMeta","useTcf","toggleOverlay","useBannerAnimationCallback","useDuration","trim","useBannerToggleOverlay","updateTcfFilterBy","defaultConsent","applyConsent","toggleWithActiveAction","setContextValue","refreshSiteAfterSave","_len","args","_key","markAsDoNotTrack","appliedConsent","tcfString","recorderJsonString","uiView","reload","_len2","_key2","alert","_len3","_key3","newFilter","tcfFilterBy","_len4","_key4","opened","_len5","_key5","newConsent","_len6","_key6","groupId","cookieIds","_len7","_key7","additionalChanges","useBannerStateContextCallbacks","getCookieConsentManager","contextValue","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","typeOrIdOrUniqueName","found","allCookies","relevance","td","regexp","already","relevantCookie","a","consentGiven","cookieOptIn","foundCookie","consentAll","unblock","isPseudoRef","loop1","rules","rule","wrapFn","apis","checkExecution","failedSyncReturnValue","skipRetry","overwrittenFns","retryWrap","useFns","passedFn","overwrite","objectResolved","overwritten","object","originalFunctionBody","overwriteFn","callOriginal","checkResult","that","apiFn","forwardArgs","retry","amznAssoWidgetHtmlId","slotNum","adContainer","et_pb_map_init","jQuery","google","other","tcfCmpApi","ensureBodyElement","querySelectorAll","allUuids","printConsentUuidsToHTMLElement","cookies","deleteCookiesServer","wrapApis","api","consentApi","createApi","fnGetWindow","mkdf","modules","destinationMaps","mkdfGoogleMaps","BannerProductionNotice","noLicense","devLicense","devLicenseLearnMore","devLicenseLink","useText","locationRestConsentPost","applyConsentForwarding","endpoints","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","n","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":""}