{"version":3,"file":"blocker.pro.js","mappings":"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","sources":["webpack:///../../frontend-packages/headless-content-unblocker/src/dom/hijackJqueryFn.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/hijackJQueryEach.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/memorizeJQueryEvent.tsx","webpack:///./src/public/ts/others/comp/hijackElementorOnInit.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/hooks/useWaitElementInViewport.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/utils/waitElementInViewport.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/hero.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/hero/audio/waveFromText.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/buttons.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/hero/video/svgPlayButton.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/content.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/header.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/header/header.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/body.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/blocker.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/body/button.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/body/body.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/groups.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/inlineStyles/blocker/footer.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/footer/footer.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/textContainer.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/heroContainer.tsx","webpack:///../../frontend-packages/react-cookie-banner/src/components/blocker/blocker.tsx","webpack:///./src/public/ts/components/websiteBlocker.tsx","webpack:///./src/public/ts/others/applyContentBlocker/adjustConsent.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/checker/transaction.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/checker/decideToUnblock.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/putStyleInlineToDom.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/transformInlineStyleRules.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/calculateScore.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/priorityByRule.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/iterateRules.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/resolveScorePool.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/iterateStylesheets.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/calculateInlineScore.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/sortScores.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/visual/probablyResetParentContainer.tsx","webpack:///../../frontend-packages/resolve-none-computed-style/src/index.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/isElementInViewport.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/visual/findVisualParent.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/utils/previousVisibleElement.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/visual/findPreviousVisibleDuplicate.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/visual/createVisual.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/visual/createVisualContainer.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/visual/detectLastClicked.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/dispatchInitiatorExecution.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/jQueryReady.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/jQueryEvent.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/nativeEventListener.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/windowOnload.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/waitSynchronousScripts.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/ensureScriptWrapper.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/transformToOriginalAttribute.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/putScriptInlineToDom.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/delegateClick.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/watcher.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/checker/findAndUnblock.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/checker/findBlockedNodes.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/loadVideoSource.tsx","webpack:///./src/public/ts/others/comp/elementorVideoApi.tsx","webpack:///./src/public/ts/blocker.tsx","webpack:///./src/public/ts/others/applyContentBlocker/listenOptIn.tsx","webpack:///./src/public/ts/others/comp/customTriggers.tsx","webpack:///./src/public/ts/others/comp/ratioClassPlainCss.tsx","webpack:///../../frontend-packages/headless-content-unblocker/src/dom/initiators/memorizeNativeEvent.tsx"],"sourcesContent":["// import $ from \"jquery\"; // not always available\nimport { HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE, OPT_IN_CONTENT_BLOCKER_ALL } from \"..\";\nconst ALREADY_OVERWRITTEN_PROPERTY = \"listenOptInJqueryFnForContentBlockerNow\";\nconst BLOCKED_ELEMENT_SELECTOR = `[${HTML_ATTRIBUTE_BLOCKER_ID}]:not([${HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE}])`;\n\n/**\n * Modify a jQuery function to wait for consent if a content blocker is within the\n * given selector.\n */\nfunction hijackJqueryFn(fns) {\n  const $ = window.jQuery;\n  if (!$?.fn) {\n    return;\n  }\n  const jQueryFns = $.fn;\n  for (const fn of fns) {\n    const originalFunction = jQueryFns[fn];\n    if (!originalFunction) {\n      continue;\n    }\n\n    // Already overwritten?\n    const alreadyOverwritten = jQueryFns[ALREADY_OVERWRITTEN_PROPERTY] = jQueryFns[ALREADY_OVERWRITTEN_PROPERTY] || [];\n    if (alreadyOverwritten.indexOf(fn) > -1) {\n      continue;\n    }\n    alreadyOverwritten.push(fn);\n\n    // Memorize the static properties (e.g. `jQuery.fn.{fn}.defaults` (https://github.com/marioestrada/jQuery-gMap/blob/33b2771a5789b7531eb56878cfa3e4a0c30a8c43/jquery.gmap.js#L250))\n    const staticProps = Object.getOwnPropertyDescriptors(originalFunction);\n    delete staticProps.length;\n    delete staticProps.name;\n    delete staticProps.prototype;\n    jQueryFns[fn] = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      if (this.length) {\n        const notBlockedElements = [];\n        for (const element of this.get()) {\n          const blockedElements = Array.prototype.slice.call(element.querySelectorAll(BLOCKED_ELEMENT_SELECTOR));\n\n          // Also respect own element (element can also be `document` which does not have a `matches` function)\n          if (element.matches?.(BLOCKED_ELEMENT_SELECTOR)) {\n            blockedElements.push(element);\n          }\n\n          // Call original function immediate if no content blocker found\n          if (blockedElements.length) {\n            // Wait for all unblocked content\n            // TODO: should we also create chunks per `consent-id`?\n            Promise.all(blockedElements.map(node => new Promise(resolve => node.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, resolve)))).then(() => originalFunction.apply($(element), args));\n          } else {\n            notBlockedElements.push(element);\n          }\n        }\n        return originalFunction.apply(jQuery(notBlockedElements), args);\n      } else {\n        // There is no jQuery object passed to the jQuery function. But we need to call the\n        // original function anyway as some properties of e.g. `$.fn.prettyPhoto` can be\n        // lazy loaded and expect a \"first\" call\n        return originalFunction.apply($(this), args);\n      }\n    };\n\n    // Apply memorized static properties\n    Object.defineProperties(jQueryFns[fn], staticProps);\n  }\n}\nexport { hijackJqueryFn };","// import $ from \"jquery\"; // not always available\nimport { HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_JQUERY_HIJACK_EACH, OPT_IN_CONTENT_BLOCKER_ALL } from \"..\";\nconst ALREADY_OVERWRITTEN_PROPERTY = \"hijackQueryEach\";\n\n/**\n * Allows to delay `.each` calls on jQuery elements.\n *\n * Example when `div[block-me]` is blocked:\n *\n * ```html\n * <div block-me=\"1\" class=\"my-test\">blocked</div>\n * <div class=\"my-test\">not blocked</div>\n * <script>\n * jQuery(() => {\n *  jQuery(\".my-test\").each((index, element) => {\n *    console.log(index, jQuery(element).html());\n *  });\n * });\n * </script>\n * ```\n *\n * @see https://api.jquery.com/each/\n */\nfunction hijackJqueryEach(selectors) {\n  const $ = window.jQuery;\n  if (!$?.each || $[ALREADY_OVERWRITTEN_PROPERTY]) {\n    return;\n  }\n  $[ALREADY_OVERWRITTEN_PROPERTY] = true;\n  const originalFunction = $.each;\n  $.each = (array, callback) => originalFunction.apply($, [array, function (index, element) {\n    if (element instanceof HTMLElement && element.hasAttribute(HTML_ATTRIBUTE_COOKIE_IDS) && (element.hasAttribute(HTML_ATTRIBUTE_JQUERY_HIJACK_EACH) || element.matches(selectors.join(\",\")))) {\n      // Wait for consent and afterwards, execute the command\n      element.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, () => callback.apply(this, [index, element]));\n      return undefined;\n    }\n    return callback.apply(this, [index, element]);\n  }]);\n}\nexport { hijackJqueryEach };","const MEMORIZE_JQUERY_EVENT_PROPERTY = \"rcbJQueryEventListenerMemorize\";\n\n/**\n * We listen to the passed event and once that event got triggered, all event registrations\n * afterwards are automatically executed, too. This does not need another trigger again.\n *\n * You need to call this function as early as possible to catch all triggers.\n */\nfunction memorizeJQueryEvent(doc, element, eventName) {\n  const memorizeProp = `${MEMORIZE_JQUERY_EVENT_PROPERTY}_${eventName}`;\n  const {\n    jQuery\n  } = doc.defaultView || doc.parentWindow;\n  if (!jQuery) {\n    return;\n  }\n  const {\n    event,\n    Event\n  } = jQuery;\n  if (!event || !Event || event[memorizeProp]) {\n    return;\n  }\n\n  // TODO: shouldn't this be memorized to the element itself?\n  Object.assign(event, {\n    [memorizeProp]: new Promise(resolve => jQuery(element).on(eventName, function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return resolve(args);\n    }))\n  });\n}\nexport { memorizeJQueryEvent, MEMORIZE_JQUERY_EVENT_PROPERTY };","import { idx } from \"@devowl-wp/cookie-consent-web-client\";\nimport { OPT_IN_CONTENT_BLOCKER_ALL, OPT_IN_CONTENT_BLOCKER, HTML_ATTRIBUTE_COOKIE_IDS } from \"@devowl-wp/headless-content-unblocker\";\nconst MEMORIZE_ELEMENTOR_HANDLER_PROPERTY = \"rcb-overwritten\";\nfunction overwrite(prototype, _ref) {\n  let {\n    delay,\n    optIn,\n    optInAll\n  } = _ref;\n  const {\n    onInit,\n    [MEMORIZE_ELEMENTOR_HANDLER_PROPERTY]: already\n  } = prototype;\n  if (already) {\n    return;\n  }\n  prototype[MEMORIZE_ELEMENTOR_HANDLER_PROPERTY] = true;\n\n  // `onInit` is called for each element, even it is blocked\n  prototype.onInit = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    const $element = this.$element;\n    const element = $element.get(0);\n    if ($element.attr(HTML_ATTRIBUTE_COOKIE_IDS)) {\n      $element.attr(MEMORIZE_ELEMENTOR_HANDLER_PROPERTY, \"1\");\n      element.addEventListener(OPT_IN_CONTENT_BLOCKER, _ref2 => {\n        let {\n          detail\n        } = _ref2;\n        optIn?.($element, detail, this);\n      });\n      element.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, _ref3 => {\n        let {\n          detail\n        } = _ref3;\n        optInAll?.($element, detail, this);\n        setTimeout(() => onInit.apply(this, args), delay || 0);\n      });\n    } else {\n      return onInit.apply(this, args);\n    }\n  };\n}\n\n/**\n * Overwrite Elementor modules and wait until consent is given for blocked module.\n * Passed `handlers` can be widget names like `video.default` or class names `VideoPlaylistHandler`\n * for dynamic modules.\n */\nfunction hijackElementorOnInit(handlers) {\n  const {\n    wrapFn\n  } = window.consentApi;\n  wrapFn({\n    // See https://github.com/elementor/elementor/blob/2ee675caf03908f8c66e16298e923a24b206df54/assets/dev/js/frontend/frontend.js#L319-L322\n    object: () => idx(window, window => window.elementorFrontend),\n    key: \"initModules\"\n  }, _ref4 => {\n    let {\n      objectResolved\n    } = _ref4;\n    wrapFn({\n      object: objectResolved.elementsHandler,\n      key: \"addHandler\"\n    }, _ref5 => {\n      let {\n        args: [handlerClass]\n      } = _ref5;\n      for (const handler of handlers) {\n        if (handlerClass.name === handler.className) {\n          overwrite(handlerClass.prototype, handler);\n        }\n      }\n      return true;\n    });\n    return true;\n  });\n}\nexport { hijackElementorOnInit, MEMORIZE_ELEMENTOR_HANDLER_PROPERTY };","import { useEffect, useState } from \"react\";\nimport { waitElementInViewport } from \"../utils\";\nfunction useWaitElementInViewport(ref) {\n  const [inViewport, setInViewport] = useState(false);\n  useEffect(() => {\n    if (ref.current) {\n      waitElementInViewport(ref.current).then(() => {\n        setInViewport(true);\n      });\n    }\n  }, []);\n  return inViewport;\n}\nexport { useWaitElementInViewport };","/**\n * Attention: Never use this with `async/await` as it blocks the thread!\n */\nfunction waitElementInViewport(container) {\n  return new Promise(resolve => {\n    if (window.IntersectionObserver) {\n      new IntersectionObserver((entries, observer) => {\n        entries.forEach(_ref => {\n          let {\n            isIntersecting\n          } = _ref;\n          if (isIntersecting) {\n            resolve();\n            observer.disconnect();\n          }\n        });\n      }).observe(container);\n    } else {\n      resolve();\n    }\n  });\n}\nexport { waitElementInViewport };","import { BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER, hexToRgb } from \"../../..\";\nconst ZINDEX = 999999999;\nclass BlockerHeroInlineStyles {\n  static aspectRatioWrapper(_ref) {\n    let {\n      blocker: {\n        visualContentType,\n        visualThumbnail: {\n          width,\n          height,\n          forceRatio\n        },\n        isVisualDarkMode\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref;\n    const style = {\n      paddingTop: forceRatio ? `${forceRatio}%` : `${height / width * 100}%`,\n      position: \"relative\"\n    };\n    if (visualContentType === \"audio-player\") {\n      delete style.paddingTop;\n      Object.assign(style, {\n        height: 100,\n        paddingTop: 0,\n        background: `linear-gradient(315deg, ${isVisualDarkMode ? \"#2f3237 1%, #5e5e5e 100%\" : \"hsla(0, 0%, 89%, 1) 1%, hsla(0, 0%, 97%, 1) 100%\"})`\n      });\n    }\n    return {\n      className: `wp-exclude-emoji ${antiAdBlocker === \"y\" ? \"\" : `rcb-hero-wrapper`}`,\n      style\n    };\n  }\n  static aspectRatioBackgroundWrapper(_ref2) {\n    let {\n      customCss: {\n        antiAdBlocker\n      },\n      blocker: {\n        visualContentType\n      }\n    } = _ref2;\n    const style = {\n      width: \"100%\",\n      position: \"absolute\",\n      inset: 0\n    };\n    if (visualContentType === \"audio-player\") {\n      Object.assign(style, {\n        width: 100,\n        overflow: \"hidden\"\n      });\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-hero-bg-wrapper`,\n      style\n    };\n  }\n  static aspectRatioBackground(_ref3) {\n    let {\n      customCss: {\n        antiAdBlocker\n      },\n      blocker: {\n        visualBlur,\n        visualThumbnail: {\n          url\n        }\n      }\n    } = _ref3;\n    const style = {\n      background: `url('${url}') no-repeat center center`,\n      backgroundSize: \"cover\",\n      width: \"100%\",\n      position: \"absolute\",\n      inset: 0,\n      filter: visualBlur > 0 ? `blur(${visualBlur}px)` : undefined\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-hero-bg`,\n      style\n    };\n  }\n  static aspectRatioContainer(_ref4) {\n    let {\n      blocker: {\n        visualContentType,\n        visualThumbnail: {\n          hide,\n          titleType = \"top\"\n        }\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref4;\n    const style = {\n      position: \"absolute\",\n      top: 0,\n      left: 0,\n      width: \"100%\",\n      height: \"100%\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      background: hide?.indexOf(\"overlay\") > -1 ? undefined : \"rgb(0 0 0 / 38%)\",\n      boxShadow: hide?.indexOf(\"title\") > -1 || titleType === \"center\" ? undefined : \"inset 0 115px 60px -60px rgb(0 0 0 / 77%)\"\n    };\n    if ([\"audio-player\"].indexOf(visualContentType) > -1) {\n      delete style.boxShadow;\n      delete style.background;\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-hero-container`,\n      style\n    };\n  }\n  static aspectRatioWholeClickable(_ref5) {\n    let {\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref5;\n    const style = {\n      position: \"absolute\",\n      top: 0,\n      left: 0,\n      width: \"100%\",\n      height: \"100%\",\n      zIndex: 9\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-hero-whole-clickable`,\n      style\n    };\n  }\n  static playButtonWrapper(_ref6, isHover) {\n    let {\n      blocker: {\n        presetId,\n        visualContentType,\n        isVisualDarkMode\n      },\n      bodyDesign: {\n        acceptAllBg\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref6;\n    const isVimeo = presetId === \"vimeo\" && visualContentType === \"video-player\";\n    const {\n      r,\n      g,\n      b\n    } = hexToRgb(acceptAllBg);\n    const style = {\n      cursor: \"pointer\",\n      background: isVimeo ? `rgb(0 0 0 / 70%)` : `rgb(${r} ${g} ${b})`,\n      padding: \"15px 30px\",\n      borderRadius: 5,\n      zIndex: 9\n    };\n    if (visualContentType === \"audio-player\") {\n      Object.assign(style, {\n        position: \"absolute\",\n        left: 120,\n        top: 49,\n        padding: \"10px 10px 10px 13px\",\n        borderRadius: 99\n      });\n      if (isVisualDarkMode) {\n        Object.assign(style, {\n          background: \"#111213\"\n        });\n      }\n    }\n    if (isHover) {\n      Object.assign(style, {\n        background: isHover ? `rgb(26 183 234 / 100%)` : \"\"\n      });\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-hero-play-wrapper`,\n      style\n    };\n  }\n  static playButton(_ref7, isHover) {\n    let {\n      blocker: {\n        visualContentType\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref7;\n    const scalingFactor = visualContentType === \"audio-player\" ? 0.2 : 0.3;\n    const style = {\n      border: 0,\n      background: \"transparent\",\n      boxSizing: \"border-box\",\n      width: 0,\n      height: 60 * scalingFactor,\n      borderColor: `transparent transparent transparent rgb(255 255 255 / ${isHover ? 100 : 94}%)`,\n      transition: \"100ms all ease\",\n      cursor: \"pointer\",\n      borderStyle: \"solid\",\n      borderWidth: `${40 * scalingFactor}px 0 ${40 * scalingFactor}px ${60 * scalingFactor}px`\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-hero-play`,\n      style\n    };\n  }\n  static title(_ref8) {\n    let {\n      blocker: {\n        presetId,\n        visualContentType,\n        isVisualDarkMode,\n        visualThumbnail: {\n          titleType = \"top\"\n        }\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref8;\n    const style = {\n      position: \"absolute\",\n      padding: \"5px 10px\",\n      overflow: \"hidden\",\n      maxWidth: \"calc(100% - 140px)\",\n      textOverflow: \"ellipsis\",\n      whiteSpace: \"nowrap\",\n      color: \"white\",\n      textShadow: \"1px 1px 1px black\",\n      fontSize: 15,\n      top: 10,\n      left: 10\n    };\n    if (presetId === \"vimeo\" && visualContentType === \"video-player\" && titleType === \"top\") {\n      Object.assign(style, {\n        top: 20,\n        left: 20,\n        background: \"#00000059\",\n        fontWeight: \"bold\",\n        color: \"rgb(0, 173, 239)\",\n        textShadow: undefined\n      });\n    } else if (visualContentType === \"audio-player\") {\n      Object.assign(style, {\n        left: 110,\n        color: isVisualDarkMode ? \"white\" : \"black\",\n        textShadow: `1px 1px 1px ${isVisualDarkMode ? \"black\" : \"white\"}`\n      });\n    } else if (titleType === \"center\") {\n      Object.assign(style, {\n        position: undefined,\n        background: \"#0000007d\",\n        overflow: undefined,\n        textOverflow: undefined,\n        whiteSpace: undefined,\n        textAlign: \"center\",\n        marginBottom: 15\n      });\n    }\n    return {\n      className: `wp-exclude-emoji ${antiAdBlocker === \"y\" ? \"\" : `rcb-hero-title`}`,\n      style\n    };\n  }\n  static defaultBlockerContainer(_ref9, isVisible, rect) {\n    let {\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref9;\n    const paddingLeftRight = window.innerWidth < BANNER_SCALING_WHEN_WINDOW_WIDTH_LOWER ? 5 : 30;\n    const style = {\n      position: \"absolute\",\n      padding: `20px ${paddingLeftRight}px`,\n      zIndex: ZINDEX,\n      opacity: isVisible ? 1 : 0,\n      pointerEvents: isVisible ? \"all\" : \"none\",\n      display: \"flex\",\n      transition: `opacity 300ms`\n    };\n\n    // Calculate position inside our Portal relative to the entire document\n    // See also https://stackoverflow.com/a/36520974/5506547\n    if (rect) {\n      const {\n        top,\n        left,\n        width\n      } = rect;\n      const {\n        scrollY,\n        scrollX\n      } = window;\n      Object.assign(style, {\n        top: top + scrollY,\n        left: left + scrollX,\n        width: width - paddingLeftRight * 2\n      });\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-db-container`,\n      style\n    };\n  }\n  static defaultBlockerOverlay(_ref10, isVisible) {\n    let {\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref10;\n    const style = {\n      position: \"fixed\",\n      top: 0,\n      left: 0,\n      right: 0,\n      bottom: 0,\n      zIndex: ZINDEX,\n      background: \"#000000cf\",\n      opacity: isVisible ? 1 : 0,\n      pointerEvents: isVisible ? \"all\" : \"none\",\n      transition: `opacity 300ms`\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-db-overlay`,\n      style\n    };\n  }\n}\nexport { BlockerHeroInlineStyles };","import { useMemo } from \"react\";\nimport { useBlocker } from \"../../../../contexts\";\nconst BlockerHeroAudioWaveFromText = _ref => {\n  let {\n    text\n  } = _ref;\n  const {\n    blocker: {\n      isVisualDarkMode\n    },\n    bodyDesign: {\n      acceptAllBg\n    }\n  } = useBlocker();\n  const waveIntegers = useMemo(() => {\n    let numbers = [];\n    text.split(\"\").forEach(c => c.charCodeAt(0).toString().split(\"\").map(Number).forEach(n => numbers.push(n)));\n\n    // Remove zeros and treat as 1\n    numbers = numbers.map(number => number === 0 ? 1 : number);\n\n    // Remove duplicates\n    numbers = numbers.map((number, i) => i > 0 ? numbers[i - 1] === number ? false : number : number).filter(Boolean);\n\n    // Correct the wave to be more nicer by removing absolute opposites\n    numbers = numbers.map((number, i) => {\n      if (i === 0 || i === numbers.length - 1) {\n        return number;\n      }\n      if (Math.abs(numbers[i - 1] - number) >= 4 && Math.abs(numbers[i + 1] - number)) {\n        return false;\n      }\n      return number;\n    }).filter(Boolean);\n\n    // Make sure to hold a lot of items to fill the line\n    for (let i = 0; i < 100; i++) {\n      if (numbers.length > 500) {\n        break;\n      }\n      numbers = [...numbers, ...numbers];\n    }\n    return numbers;\n  }, [text]);\n  return h(\"div\", {\n    style: {\n      display: \"flex\",\n      flexDirection: \"row\",\n      alignItems: \"center\",\n      position: \"absolute\",\n      left: 170,\n      top: 44,\n      right: 20,\n      height: 46,\n      overflow: \"hidden\"\n    }\n  }, waveIntegers.map((int, index) => h(\"div\", {\n    key: index,\n    style: {\n      height: `${int * 10}%`,\n      background: isVisualDarkMode ? \"white\" : acceptAllBg,\n      paddingLeft: 2,\n      marginLeft: index === 0 ? 0 : 2\n    }\n  })));\n};\nexport { BlockerHeroAudioWaveFromText };","class BlockerButtonsInlineStyles {\n  static save(_ref, isHover, framed) {\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        acceptAllHoverBg,\n        acceptAllHoverFontColor,\n        acceptAllHoverBorderColor\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref;\n    return this.common({\n      name: \"accept-all\",\n      type: acceptAll,\n      borderRadius,\n      bg: acceptAllBg,\n      hoverBg: acceptAllHoverBg,\n      fontSize: acceptAllFontSize,\n      textAlign: acceptAllTextAlign,\n      fontColor: acceptAllFontColor,\n      hoverFontColor: acceptAllHoverFontColor,\n      borderWidth: acceptAllBorderWidth,\n      borderColor: acceptAllBorderColor,\n      hoverBorderColor: acceptAllHoverBorderColor,\n      padding: acceptAllPadding,\n      antiAdBlocker\n    }, isHover, framed);\n  }\n  static showInfo(_ref2, isHover, framed) {\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        acceptIndividualHoverBg,\n        acceptIndividualHoverFontColor,\n        acceptIndividualHoverBorderColor\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref2;\n    return this.common({\n      name: \"accept-individual\",\n      type: acceptIndividual,\n      borderRadius,\n      bg: acceptIndividualBg,\n      hoverBg: acceptIndividualHoverBg,\n      fontSize: acceptIndividualFontSize,\n      textAlign: acceptIndividualTextAlign,\n      fontColor: acceptIndividualFontColor,\n      hoverFontColor: acceptIndividualHoverFontColor,\n      borderWidth: acceptIndividualBorderWidth,\n      borderColor: acceptIndividualBorderColor,\n      hoverBorderColor: acceptIndividualHoverBorderColor,\n      padding: acceptIndividualPadding,\n      antiAdBlocker\n    }, isHover, framed);\n  }\n  static hero(_ref3, isHover, framed) {\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        acceptAllHoverBg,\n        acceptAllHoverFontColor,\n        acceptAllHoverBorderColor\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref3;\n    return this.common({\n      name: \"accept-all\",\n      type: acceptAll,\n      borderRadius,\n      bg: acceptAllBg,\n      hoverBg: acceptAllHoverBg,\n      fontSize: acceptAllFontSize,\n      textAlign: acceptAllTextAlign,\n      fontColor: acceptAllFontColor,\n      hoverFontColor: acceptAllHoverFontColor,\n      borderWidth: acceptAllBorderWidth,\n      borderColor: acceptAllBorderColor,\n      hoverBorderColor: acceptAllHoverBorderColor,\n      padding: acceptAllPadding,\n      boxShadow: \"rgb(0 0 0 / 15%) 0px 0px 100px 30px, rgb(0 0 0 / 40%) 0px 2px 5px 1px\",\n      zIndex: 9,\n      antiAdBlocker\n    }, isHover, framed);\n  }\n  static common(_ref4, isHover, framed) {\n    let {\n      name,\n      type,\n      borderRadius,\n      bg,\n      hoverBg,\n      fontSize,\n      textAlign,\n      fontColor,\n      hoverFontColor,\n      borderWidth,\n      borderColor,\n      hoverBorderColor,\n      padding,\n      boxShadow,\n      zIndex,\n      antiAdBlocker\n    } = _ref4;\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: +fontSize,\n      textAlign,\n      color: isHover ? hoverFontColor : fontColor,\n      transition: \"background-color 250ms, color 250ms, border-color 250ms\",\n      marginBottom: 10,\n      border: type === \"button\" && borderWidth > 0 ? `${borderWidth}px solid ${isHover ? hoverBorderColor : borderColor}` : undefined,\n      padding: padding.map(p => `${p}px`).join(\" \"),\n      overflow: \"hidden\",\n      outline: framed ? \"rgb(255, 94, 94) solid 5px\" : undefined,\n      boxShadow,\n      zIndex\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-btn-${name}`,\n      style\n    };\n  }\n}\nexport { BlockerButtonsInlineStyles };","import _extends from \"@babel/runtime/helpers/extends\";\nconst BlockerHeroVideoSvgPlayButton = _ref => {\n  let {\n    svgProps,\n    fill\n  } = _ref;\n  return h(\"svg\", _extends({\n    width: 68,\n    height: 48,\n    version: \"1.1\",\n    enableBackground: \"new 0 0 595.3 420.2\",\n    viewBox: \"0 0 595.3 420.2\"\n  }, svgProps, {\n    style: {\n      cursor: \"pointer\",\n      zIndex: 9\n    }\n  }), h(\"path\", {\n    d: \"m582.3 67.8c-6.8-25.6-17.8-47.4-43.4-54.2-46.5-12.5-241.3-13.6-241.3-13.6s-194.7 1.1-241.2 13.6c-25.6 6.8-36.5 28.5-43.4 54.2-12.5 46.4-13 142.3-13 142.3s.5 95.9 13 142.3c6.8 25.6 17.8 47.4 43.4 54.2 46.5 12.4 241.2 13.6 241.2 13.6s194.8-1.1 241.2-13.6c25.6-6.8 36.6-28.5 43.4-54.2 12.4-46.5 13-142.3 13-142.3s-.4-95.9-12.9-142.3z\",\n    fill: fill\n  }), h(\"path\", {\n    d: \"m401.8 210.1-173.3-96.3v192.6\",\n    fill: \"#fff\"\n  }));\n};\nexport { BlockerHeroVideoSvgPlayButton };","class BlockerContentInlineStyles {\n  static inner(_ref) {\n    let {\n      layout: {\n        type,\n        dialogBorderRadius\n      },\n      design: {\n        borderWidth,\n        borderColor,\n        textAlign,\n        fontColor,\n        fontInheritFamily,\n        fontFamily\n      },\n      customCss: {\n        antiAdBlocker\n      },\n      blocker: {\n        visualType\n      }\n    } = _ref;\n    const hasBg = visualType === \"wrapped\";\n    const style = {\n      textAlign,\n      fontFamily: fontInheritFamily ? undefined : fontFamily,\n      color: fontColor,\n      // margin: \"10px 0\",\n      borderRadius: type === \"dialog\" ? +dialogBorderRadius : undefined,\n      border: type === \"banner\" ? borderWidth > 0 ? `${borderWidth}px solid ${borderColor}` : undefined : undefined,\n      position: \"relative\",\n      padding: hasBg ? \"30px 50px\" : undefined,\n      overflow: hasBg ? \"hidden\" : undefined\n    };\n    return {\n      className: `wp-exclude-emoji ${antiAdBlocker === \"y\" ? \"\" : `rcb-inner`}`,\n      style\n    };\n  }\n  static innerBackground(_ref2) {\n    let {\n      customCss: {\n        antiAdBlocker\n      },\n      blocker: {\n        visualType,\n        visualThumbnail,\n        visualBlur\n      }\n    } = _ref2;\n    const hasBg = visualType === \"wrapped\";\n    const style = {\n      position: \"absolute\",\n      top: 0,\n      left: 0,\n      right: 0,\n      bottom: 0,\n      display: hasBg ? \"block\" : \"none\",\n      filter: visualBlur > 0 ? `blur(${visualBlur}px)` : undefined\n    };\n    if (hasBg) {\n      style.background = `url('${visualThumbnail.url}') no-repeat center center`;\n      style.backgroundSize = \"cover\";\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? \"\" : `rcb-inner-bg`,\n      style\n    };\n  }\n  static content(_ref3) {\n    let {\n      blocker: {\n        visualType\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref3;\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-content`,\n      style: {\n        boxShadow: visualType === \"wrapped\" ? \"rgb(0 0 0 / 35%) 0px 0px 0px 7px, #0000004d 0px 0px 100px 30px\" : undefined,\n        position: \"relative\"\n      }\n    };\n  }\n}\nexport { BlockerContentInlineStyles };","class BlockerHeaderInlineStyles {\n  static headerContainer(_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    } = _ref;\n    const style = {\n      padding: padding.map(p => `${p}px`).join(\" \"),\n      background: inheritBg ? restDesign.bg : bg,\n      borderRadius: type === \"dialog\" ? `${dialogBorderRadius}px ${dialogBorderRadius}px 0 0` : undefined\n    };\n    if (type === \"dialog\" && borderWidth > 0) {\n      style.borderTop = `${borderWidth}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  }\n  static header(_ref2) {\n    let {\n      design: {\n        textAlign\n      },\n      headerDesign: {\n        inheritTextAlign,\n        ...restHeaderDesign\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref2;\n    const useTextAlign = inheritTextAlign ? textAlign : restHeaderDesign.textAlign;\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-header`,\n      style: {\n        margin: \"auto\",\n        display: \"flex\",\n        justifyContent: useTextAlign === \"center\" ? \"center\" : useTextAlign === \"right\" ? \"flex-end\" : undefined,\n        alignItems: \"center\",\n        position: \"relative\"\n      }\n    };\n  }\n  static headerSeparator(_ref3) {\n    let {\n      layout: {\n        type\n      },\n      design,\n      headerDesign: {\n        borderWidth,\n        borderColor\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref3;\n    const style = {\n      height: +borderWidth,\n      background: borderColor\n    };\n    if (type === \"dialog\" && design.borderWidth > 0) {\n      style.borderLeft = `${design.borderWidth}px solid ${design.borderColor}`;\n      style.borderRight = style.borderLeft;\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-header-separator`,\n      style\n    };\n  }\n}\nexport { BlockerHeaderInlineStyles };","import { commonInlineStyleHeaderHeadline, useBlocker, BlockerHeaderInlineStyles } from \"../../..\";\nconst BlockerHeader = _ref => {\n  let {\n    closeIcon\n  } = _ref;\n  const blocker = useBlocker();\n  const {\n    blocker: {\n      name\n    },\n    texts: {\n      blockerHeadline\n    }\n  } = blocker;\n  return h(\"div\", BlockerHeaderInlineStyles.headerContainer(blocker), h(\"div\", BlockerHeaderInlineStyles.header(blocker), h(\"div\", commonInlineStyleHeaderHeadline(blocker, !!closeIcon), blockerHeadline.replace(/{{name}}/gi, name)), closeIcon));\n};\nexport { BlockerHeader };","import { CONTEXT_LATEST_DESIGN_VERSION } from \"../../types\";\nclass BlockerBodyInlineStyles {\n  static bodyContainer(_ref) {\n    let {\n      layout: {\n        type,\n        dialogBorderRadius\n      },\n      design: {\n        bg,\n        borderWidth,\n        borderColor\n      },\n      bodyDesign: {\n        padding\n      },\n      customCss: {\n        antiAdBlocker\n      },\n      designVersion = CONTEXT_LATEST_DESIGN_VERSION\n    } = _ref;\n    const showFooter = designVersion === 1;\n    const style = {\n      background: bg,\n      padding: padding.map(p => `${p}px`).join(\" \"),\n      borderRadius: !showFooter && type === \"dialog\" ? `0 0 ${dialogBorderRadius}px ${dialogBorderRadius}px` : undefined,\n      lineHeight: 1.4,\n      overflow: \"auto\" // See https://stackoverflow.com/a/27829422/5506547\n    };\n\n    if (type === \"dialog\" && borderWidth > 0) {\n      style.borderLeft = `${borderWidth}px solid ${borderColor}`;\n      style.borderRight = style.borderLeft;\n      if (!showFooter) {\n        style.borderBottom = style.borderLeft;\n      }\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-body-container`,\n      style\n    };\n  }\n  static body(_ref2) {\n    let {\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref2;\n    const style = {\n      margin: \"auto\"\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-body`,\n      style\n    };\n  }\n  static description(_ref3) {\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    } = _ref3;\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-description`,\n      style: {\n        marginBottom: 10,\n        fontSize: descriptionInheritFontSize ? +fontSize : +descriptionFontSize,\n        textAlign: descriptionTextAlign\n      }\n    };\n  }\n}\nexport { BlockerBodyInlineStyles };","class BlockerInlineStyles {\n  static topSide(_ref) {\n    let {\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref;\n    const style = {\n      marginBottom: 15\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-tb-top`,\n      style\n    };\n  }\n  static bottomSide(_ref2) {\n    let {\n      design: {\n        bg\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref2;\n    const style = {\n      background: bg\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-tb-bottom`,\n      style\n    };\n  }\n}\nexport { BlockerInlineStyles };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useCallback, useState } from \"react\";\nimport { useBlocker, AsciiSpinner, BlockerButtonsInlineStyles } from \"../../..\";\nconst BlockerButton = _ref => {\n  let {\n    inlineStyle,\n    type,\n    onClick,\n    children,\n    framed,\n    busyOnClick\n  } = _ref;\n  if (type === \"hide\") {\n    return null;\n  }\n  const [isBusy, setIsBusy] = useState(false);\n  const handleOnClick = useCallback(e => {\n    if (!isBusy) {\n      busyOnClick && setIsBusy(true);\n      onClick?.(e);\n    }\n  }, [onClick, isBusy, busyOnClick]);\n  const [isHover, setIsHover] = useState(false);\n  const banner = useBlocker();\n  const interactionAttr = {\n    onClick: handleOnClick,\n    onMouseEnter: () => setIsHover(true),\n    onMouseLeave: () => setIsHover(false)\n  };\n  return h(\"div\", _extends({}, type === \"button\" ? interactionAttr : {}, BlockerButtonsInlineStyles[inlineStyle](banner, isHover, framed)), h(\"span\", type === \"link\" ? {\n    ...interactionAttr,\n    style: {\n      cursor: \"pointer\"\n    }\n  } : {}, isBusy ? h(AsciiSpinner, null) : children));\n};\nexport { BlockerButton };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useState, useMemo } from \"react\";\nimport { commonInlineStyleBodyTeaching, commonInlineStyleBodyTeachingsSeparator, Cookie, useBlocker, useCommonTeachings, BlockerInlineStyles, BlockerBodyInlineStyles, BlockerGroupsInlineStyles, BlockerButton } from \"../../..\";\nconst BlockerBody = () => {\n  const blocker = useBlocker();\n  const [areCookiesVisible, setCookiesVisible] = useState(false);\n  const {\n    bodyDesign: {\n      teachingsSeparatorActive\n    },\n    decision: {\n      acceptAll,\n      acceptIndividual\n    },\n    texts: {\n      blockerLoadButton,\n      blockerLinkShowMissing,\n      blockerAcceptInfo\n    },\n    blocker: {\n      services\n    },\n    consent,\n    groups,\n    onUnblock,\n    productionNotice,\n    isConsentRecord,\n    i18n: {\n      close\n    }\n  } = blocker;\n\n  // Calculate missing cookies\n  const missing = useMemo(() => {\n    const missing = [];\n    const allConsentCookies = [];\n    for (const cookies of Object.values(consent.groups)) {\n      allConsentCookies.push(...cookies);\n    }\n    for (const {\n      items\n    } of groups) {\n      for (const cookie of items) {\n        // Cookie is needed for this blocker? Yes, check if already consent...\n        if (services.indexOf(cookie.id) > -1 && allConsentCookies.indexOf(cookie.id) === -1) {\n          missing.push(cookie);\n        }\n      }\n    }\n    return missing;\n  }, [groups, services, consent]);\n  const {\n    description,\n    teachings\n  } = useCommonTeachings({\n    // Only enable USA notice when the blocked service is USA-relevant\n    disableDataProcessingInUnsafeCountries: missing.map(_ref => {\n      let {\n        ePrivacyUSA\n      } = _ref;\n      return ePrivacyUSA;\n    }).filter(Boolean).length === 0,\n    // Not needed in blocker, as there is already a link with \"Show all services which I need to consent to\"\n    disableListServicesNotice: true\n  });\n  return h(\"div\", BlockerBodyInlineStyles.bodyContainer(blocker), h(\"div\", BlockerBodyInlineStyles.body(blocker), h(\"div\", BlockerInlineStyles.topSide(blocker), h(\"div\", BlockerBodyInlineStyles.description(blocker), h(\"span\", {\n    dangerouslySetInnerHTML: {\n      __html: description.replace(/\\n/gm, \"<br />\")\n    }\n  }), !!description && teachingsSeparatorActive && h(\"div\", null, h(\"span\", commonInlineStyleBodyTeachingsSeparator(blocker))), teachings.map(teaching => h(\"span\", _extends({\n    key: teaching\n  }, commonInlineStyleBodyTeaching(blocker), {\n    dangerouslySetInnerHTML: {\n      __html: teaching\n    }\n  }))), h(\"span\", _extends({}, commonInlineStyleBodyTeaching(blocker), {\n    dangerouslySetInnerHTML: {\n      __html: blockerAcceptInfo\n    }\n  }))), h(BlockerButton, {\n    type: acceptIndividual === \"hide\" ? \"link\" : acceptIndividual,\n    inlineStyle: \"showInfo\",\n    onClick: () => setCookiesVisible(!areCookiesVisible)\n  }, areCookiesVisible ? close : blockerLinkShowMissing), areCookiesVisible && h(\"div\", BlockerGroupsInlineStyles.cookieScroll(blocker), missing.map(cookie => h(Cookie, {\n    key: cookie.id,\n    cookie: cookie,\n    checked: true,\n    disabled: true\n  })))), h(\"div\", BlockerInlineStyles.bottomSide(blocker), h(BlockerButton, {\n    type: acceptAll === \"hide\" ? \"button\" : acceptAll,\n    inlineStyle: \"save\",\n    onClick: e => onUnblock(e),\n    busyOnClick: !isConsentRecord\n  }, blockerLoadButton), productionNotice)));\n};\nexport { BlockerBody };","class BlockerGroupsInlineStyles {\n  static cookieScroll(_ref) {\n    let {\n      design: {\n        fontSize\n      },\n      bodyDesign: {\n        descriptionInheritFontSize,\n        descriptionFontSize\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref;\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-cookie-scroll`,\n      style: {\n        fontSize: descriptionInheritFontSize ? +fontSize : +descriptionFontSize,\n        textAlign: \"left\",\n        marginBottom: 10,\n        maxHeight: 400,\n        overflowY: \"scroll\",\n        paddingRight: 10\n      }\n    };\n  }\n}\nexport { BlockerGroupsInlineStyles };","class BlockerFooterInlineStyles {\n  static footerContainer(_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      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref;\n    const style = {\n      padding: padding.map(p => `${p}px`).join(\" \"),\n      background: inheritBg ? design.bg : bg,\n      borderRadius: type === \"dialog\" ? `0 0 ${dialogBorderRadius}px ${dialogBorderRadius}px` : undefined,\n      fontSize: +fontSize,\n      color: fontColor,\n      textAlign: inheritTextAlign ? design.textAlign : textAlign\n    };\n    if (type === \"dialog\" && design.borderWidth > 0) {\n      style.borderBottom = `${design.borderWidth}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  }\n  static footer(_ref2) {\n    let {\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref2;\n    const style = {\n      margin: \"auto\",\n      lineHeight: 1.8\n    };\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-footer`,\n      style\n    };\n  }\n  static footerSeparator(_ref3) {\n    let {\n      layout: {\n        type\n      },\n      design,\n      footerDesign: {\n        borderWidth,\n        borderColor\n      },\n      customCss: {\n        antiAdBlocker\n      }\n    } = _ref3;\n    const style = {\n      height: +borderWidth,\n      background: borderColor\n    };\n    if (type === \"dialog\" && design.borderWidth > 0) {\n      style.borderLeft = `${design.borderWidth}px solid ${design.borderColor}`;\n      style.borderRight = style.borderLeft;\n    }\n    return {\n      className: antiAdBlocker === \"y\" ? undefined : `rcb-footer-separator`,\n      style\n    };\n  }\n}\nexport { BlockerFooterInlineStyles };","import { useBlocker, useCommonFooterLinks, BlockerFooterInlineStyles } from \"../../..\";\nconst BlockerFooter = () => {\n  const blocker = useBlocker();\n  const {\n    rows: links,\n    render: renderLinks\n  } = useCommonFooterLinks({\n    putPoweredByLinkInRow: 1\n  });\n  return h(\"div\", BlockerFooterInlineStyles.footerContainer(blocker), h(\"div\", BlockerFooterInlineStyles.footer(blocker), renderLinks(links)));\n};\nexport { BlockerFooter };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useBlocker, BlockerContentInlineStyles, BlockerHeaderInlineStyles, BlockerFooterInlineStyles, BlockerHeader, BlockerFooter, BlockerBody, useWaitElementInViewport } from \"../../..\";\nimport { useRef, Fragment } from \"react\";\nimport { CONTEXT_LATEST_DESIGN_VERSION } from \"../../types\";\nconst BlockerTextContainer = _ref => {\n  let {\n    closeIcon\n  } = _ref;\n  const blocker = useBlocker();\n  const {\n    designVersion = CONTEXT_LATEST_DESIGN_VERSION,\n    paintMode\n  } = blocker;\n  const ref = useRef();\n\n  // Lazy load background image\n  const isBackgroundVisible = paintMode === \"instantInViewport\" || useWaitElementInViewport(ref);\n  return h(\"div\", _extends({}, BlockerContentInlineStyles.inner(blocker), {\n    ref: ref\n  }), isBackgroundVisible && h(\"div\", BlockerContentInlineStyles.innerBackground(blocker)), h(\"div\", BlockerContentInlineStyles.content(blocker), h(BlockerHeader, {\n    closeIcon: closeIcon\n  }), h(\"div\", BlockerHeaderInlineStyles.headerSeparator(blocker)), h(BlockerBody, null), designVersion === 1 && h(Fragment, null, h(\"div\", BlockerFooterInlineStyles.footerSeparator(blocker)), h(BlockerFooter, null))));\n};\nexport { BlockerTextContainer };","import _extends from \"@babel/runtime/helpers/extends\";\nimport { useCallback, useRef, useState, Fragment } from \"react\";\nimport { useRect } from \"@reach/rect\";\nimport { useBlocker, useWaitElementInViewport, Portal, CloseIcon, BlockerButtonsInlineStyles, BlockerHeroInlineStyles, BlockerTextContainer, BlockerHeroAudioWaveFromText, BlockerHeroVideoSvgPlayButton } from \"../../..\";\nconst BlockerHeroContainer = () => {\n  const blocker = useBlocker();\n  const {\n    headerDesign: {\n      fontSize,\n      fontColor\n    },\n    texts: {\n      blockerHeadline\n    },\n    blocker: {\n      presetId,\n      name,\n      visualHeroButtonText,\n      visualContentType,\n      visualThumbnail\n    },\n    paintMode,\n    i18n: {\n      close\n    }\n  } = blocker;\n  const ref = useRef();\n  const rect = useRect(ref);\n  const [isBtnHover, setBtnHover] = useState(false);\n  const [isHover, setIsHover] = useState(false);\n  const [isDefaultBlockerVisible, setIsDefaultBlockerVisible] = useState(false);\n  const {\n    hide\n  } = visualThumbnail;\n  const title = visualThumbnail.title || name;\n  const audioWaveText = `${visualThumbnail.title}ThiS iS jUst ANother TEXT TO reACh minIMum length` || blockerHeadline.replace(/{{name}}/gi, name);\n\n  // Lazy load background image\n  const isBackgroundVisible = paintMode === \"instantInViewport\" || useWaitElementInViewport(ref);\n\n  // Automatically close on outside click\n  const overlayRef = useRef();\n  const defaultBlockerContainerRef = useRef();\n  const handleOutsideClick = useCallback(e => {\n    if (isDefaultBlockerVisible && [overlayRef.current, defaultBlockerContainerRef.current].indexOf(e.target) > -1) {\n      setIsDefaultBlockerVisible(false);\n    }\n  }, [isDefaultBlockerVisible, overlayRef.current, defaultBlockerContainerRef.current]);\n  const hideTitle = hide?.indexOf(\"title\") > -1;\n  const showPlayButton = [\"video-player\", \"audio-player\"].indexOf(visualContentType) > -1;\n  const btnAttributes = {\n    onMouseEnter: () => setBtnHover(true),\n    onMouseLeave: () => setBtnHover(false),\n    onClick: e => {\n      if (e) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n      setIsDefaultBlockerVisible(true);\n    }\n  };\n  return h(\"div\", _extends({}, BlockerHeroInlineStyles.aspectRatioWrapper(blocker), {\n    ref: ref\n  }), isBackgroundVisible && h(\"div\", BlockerHeroInlineStyles.aspectRatioBackgroundWrapper(blocker), h(\"div\", BlockerHeroInlineStyles.aspectRatioBackground(blocker))), h(\"div\", _extends({}, BlockerHeroInlineStyles.aspectRatioWholeClickable(blocker), {\n    onMouseEnter: () => setIsHover(true),\n    onMouseLeave: () => setIsHover(false),\n    onClick: () => setIsDefaultBlockerVisible(true)\n  })), h(\"div\", BlockerHeroInlineStyles.aspectRatioContainer(blocker), !hideTitle && h(\"div\", _extends({}, BlockerHeroInlineStyles.title(blocker), {\n    title: title\n  }), title), visualContentType === \"audio-player\" && h(BlockerHeroAudioWaveFromText, {\n    text: audioWaveText\n  }), visualHeroButtonText && [\"audio-player\", \"video-player\"].indexOf(visualContentType) === -1 ? h(\"div\", _extends({}, BlockerButtonsInlineStyles.hero(blocker, isBtnHover, false), btnAttributes), \"\\xA0\\xA0\", visualHeroButtonText, \"\\xA0\\xA0\") : showPlayButton && (presetId === \"youtube\" && visualContentType === \"video-player\" ? h(BlockerHeroVideoSvgPlayButton, {\n    svgProps: btnAttributes,\n    fill: isBtnHover || isHover ? \"#ff0808\" : `rgb(0 0 0 / 70%)`\n  }) : h(\"div\", _extends({}, BlockerHeroInlineStyles.playButtonWrapper(blocker, isBtnHover), btnAttributes), h(\"div\", BlockerHeroInlineStyles.playButton(blocker, isBtnHover)))), h(Portal, {\n    renderInContainer: document.body\n  }, h(Fragment, null, h(\"div\", _extends({}, BlockerHeroInlineStyles.defaultBlockerOverlay(blocker, isDefaultBlockerVisible), {\n    ref: overlayRef,\n    onClick: handleOutsideClick\n  })), h(\"div\", _extends({}, BlockerHeroInlineStyles.defaultBlockerContainer(blocker, isDefaultBlockerVisible, rect), {\n    ref: defaultBlockerContainerRef,\n    onClick: handleOutsideClick\n    // eslint-disable-next-line react/no-unknown-property\n    ,\n    \"interaction-player-uqid\": isDefaultBlockerVisible ? \"blocker\" : undefined\n  }), h(BlockerTextContainer, {\n    closeIcon: h(CloseIcon, {\n      tooltipText: close,\n      width: fontSize,\n      color: fontColor,\n      thickness: 2,\n      onClick: () => setIsDefaultBlockerVisible(false)\n    })\n  }))))));\n};\nexport { BlockerHeroContainer };","import { BlockerTextContainer, BlockerHeroContainer, useBlocker } from \"../..\";\nimport { useEffect } from \"react\";\nconst Blocker = () => {\n  const blocker = useBlocker();\n  const {\n    recorder,\n    blocker: {\n      visualType,\n      visualThumbnail\n    }\n  } = blocker;\n\n  // Automatically start recorder if one exists\n  useEffect(() => {\n    if (recorder) {\n      recorder.restart();\n      return () => {\n        recorder.toggle(false);\n      };\n    }\n    return () => {\n      // Silence is golden.\n    };\n  }, []);\n  if (process.env.PLUGIN_CTX === \"pro\") {\n    /* onlypro:start */\n    return visualType === \"hero\" && visualThumbnail ? h(BlockerHeroContainer, null) : h(BlockerTextContainer, null);\n    /* onlypro:end */\n  } else {\n    return h(BlockerTextContainer, null);\n  }\n};\nexport { Blocker };","import { useMemo } from \"react\";\nimport { useState } from \"react\";\nimport { getOtherOptionsFromWindow } from \"../utils\";\nimport { adjustConsentComingFromContentBlocker } from \"../others\";\nimport { HTML_ATTRIBUTE_COOKIE_IDS } from \"@devowl-wp/headless-content-unblocker\";\nimport { getUserDecision } from \"@devowl-wp/cookie-consent-web-client\";\nimport { usePlainCss, BlockerContextFactory, Blocker } from \"@devowl-wp/react-cookie-banner\";\nimport { Recorder } from \"@devowl-wp/web-html-element-interaction-recorder\";\nimport { BannerProductionNotice } from \".\";\n\n/**\n * Simply connects a context store to the blocker itself. On the website itself\n * it should not rely\n */\nconst WebsiteBlocker = _ref => {\n  let {\n    container,\n    poweredLink,\n    blocker,\n    paintMode,\n    setVisualAsLastClickedVisual\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    },\n    pageIdToPermalink,\n    consentForwardingExternalHosts,\n    isTcf,\n    isEPrivacyUSA,\n    isAgeNotice,\n    isListServicesNotice,\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  const recorder = useMemo(() => new Recorder(container), []);\n\n  // Calculate a border color for the complete box as the standard box does not have one configured\n  const overwriteDesign = {\n    borderWidth: design.borderWidth || 1,\n    borderColor: design.borderWidth === 0 ? headerDesign.borderWidth > 0 ? headerDesign.borderColor : footerDesign.borderWidth > 0 ? footerDesign.borderColor : design.fontColor : design.borderColor\n  };\n\n  // Context values preparation\n  const [contextValue] = useState({\n    recorder,\n    layout: {\n      ...layout\n    },\n    decision: {\n      ...decision\n    },\n    legal: {\n      ...legal\n    },\n    design: {\n      ...design,\n      ...overwriteDesign\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    productionNotice: h(BannerProductionNotice, {\n      isPro: isPro,\n      isLicensed: isLicensed,\n      isDevLicense: isDevLicense,\n      i18n: bannerI18n\n    }),\n    pageIdToPermalink,\n    consentForwardingExternalHosts,\n    paintMode,\n    pageByIdUrl,\n    groups,\n    poweredLink,\n    isTcf,\n    ePrivacyUSA: isEPrivacyUSA,\n    ageNotice: isAgeNotice,\n    listServicesNotice: isListServicesNotice,\n    blocker,\n    designVersion: bannerDesignVersion,\n    i18n: bannerI18n,\n    keepVariablesInTexts: isCurrentlyInTranslationEditorPreview,\n    affiliate,\n    consent: {\n      groups: {\n        ...(userDecision === false ? {} : userDecision.consent)\n      }\n    },\n    onUnblock: event => {\n      adjustConsentComingFromContentBlocker(blocker, JSON.stringify(recorder.createReplay()));\n      setVisualAsLastClickedVisual(event);\n    }\n  });\n  usePlainCss([`.elementor-background-overlay ~ [${HTML_ATTRIBUTE_COOKIE_IDS}] { z-index: 99; }`].join(\"\"));\n  const BlockerContext = BlockerContextFactory.Context();\n  return h(BlockerContext.Provider, {\n    value: contextValue\n  }, h(Blocker, null));\n};\nexport { WebsiteBlocker };","import { getOtherOptionsFromWindow } from \"../../utils\";\nimport { applyConsent } from \"../applyConsent\";\nimport { createTcfModelFromCookie, getUserDecision } from \"@devowl-wp/cookie-consent-web-client\";\nimport { getCookieConsentManager } from \"..\";\n/**\n * When a content blocker needs to be unblocked (user click), then\n * we need to get the current consent, and add the newly consent cookies.\n */\nasync function adjustConsentComingFromContentBlocker(blocker, recorderJsonString) {\n  // Get all available groups + current decision\n  const {\n    essentialGroup,\n    groups,\n    isTcf,\n    tcf,\n    tcfMetadata,\n    userConsentCookieName\n  } = getOtherOptionsFromWindow();\n  const {\n    id: blockerId,\n    services,\n    visualThumbnail\n  } = blocker;\n  const currentDecision = getUserDecision(userConsentCookieName);\n  const [essentialGroupObj] = groups.filter(_ref => {\n    let {\n      slug\n    } = _ref;\n    return slug === essentialGroup;\n  });\n\n  // Prepare new consent\n  const newConsent = currentDecision === false ? {\n    // The website owner uses a banner without overlay and content gets unblocked\n    // We need to make sure, that also essential cookies got accepted\n    groups: {\n      [essentialGroupObj.id]: essentialGroupObj.items.map(_ref2 => {\n        let {\n          id\n        } = _ref2;\n        return id;\n      })\n    }\n  } : {\n    groups: currentDecision.consent\n  };\n  for (const {\n    id: groupId,\n    items\n  } of groups) {\n    for (const {\n      id: cookieId\n    } of items) {\n      if (services.indexOf(cookieId) > -1) {\n        // Avoid duplicates\n        if (newConsent.groups[groupId]?.indexOf(cookieId) > -1) {\n          continue;\n        }\n        newConsent.groups[groupId] = newConsent.groups[groupId] || [];\n        newConsent.groups[groupId].push(cookieId);\n      }\n    }\n  }\n\n  // Keep TCF string as it is not touched for a content blocker\n  let tcfString;\n  if (process.env.IS_TCF === \"1\" && isTcf) {\n    tcfString = createTcfModelFromCookie(tcf, tcfMetadata, getCookieConsentManager().getOption(\"tcfCookieName\"))?.tcfString;\n  }\n  await applyConsent({\n    consent: newConsent,\n    buttonClicked: \"unblock\",\n    blocker: blockerId,\n    blockerThumbnail: visualThumbnail?.embedId ? `${visualThumbnail.embedId}-${visualThumbnail.fileMd5}` : undefined,\n    tcfString,\n    recorderJsonString,\n    uiView: \"initial\"\n  });\n}\nexport { adjustConsentComingFromContentBlocker };","let currentlyInTransaction = false;\nfunction setCurrentlyInTransaction(state) {\n  currentlyInTransaction = state;\n}\n\n/**\n * Check if the current page is currently unblocking content.\n */\nfunction isCurrentlyInTransaction() {\n  return currentlyInTransaction;\n}\nexport { setCurrentlyInTransaction, isCurrentlyInTransaction };","/**\n * Given by criteria, IDs and content blocker ID decide if the consent is given.\n */\nfunction decideToUnblock(by, requiredIds, blockerId, checker) {\n  const required = typeof requiredIds === \"string\" ? requiredIds.split(\",\").map(Number) : requiredIds;\n  return checker(by, required, blockerId);\n}\nexport { decideToUnblock };","import { HTML_ATTRIBUTE_INLINE_STYLE, HTML_TAG_CONSENT_SCRIPT } from \".\";\n\n/**\n * Put an prepared inline style (tag containing a `consent-inline-style` attribute) to the DOM.\n */\nasync function putStyleInlineToDom(node) {\n  // Get the inline style itself\n  const inlineStyle = node.getAttribute(HTML_ATTRIBUTE_INLINE_STYLE);\n  node.removeAttribute(HTML_ATTRIBUTE_INLINE_STYLE);\n\n  // Transform the tag to the `style`\n  // We need to make such a hacky way because regex does not work and `outerHTML` has also some issues...\n  let inlineStyleHtml = node.outerHTML.substr(HTML_TAG_CONSENT_SCRIPT.length + 1);\n  inlineStyleHtml = inlineStyleHtml.substr(0, inlineStyleHtml.length - HTML_TAG_CONSENT_SCRIPT.length - 3);\n  inlineStyleHtml = inlineStyleHtml.replace(new RegExp(`type=\"application/consent\"`), \"\");\n  inlineStyleHtml = `<style ${HTML_ATTRIBUTE_INLINE_STYLE}=\"1\" ${inlineStyleHtml}${inlineStyle}</style>`; // add inline attribute so `applyStyleRules` can check one more time for blocked URLs\n\n  node.parentElement.replaceChild(new DOMParser().parseFromString(inlineStyleHtml, \"text/html\").querySelector(\"style\"), node);\n}\nexport { putStyleInlineToDom };","import { putStyleInlineToDom, HTML_ATTRIBUTE_INLINE_STYLE, HTML_TAG_CONSENT_SCRIPT, HTML_ATTRIBUTE_COOKIE_IDS } from \".\";\nimport { decideToUnblock, htmlDecode } from \"..\";\n\n/**\n * Find consent URLs and check for consent and return new style string.\n *\n * @see https://regex101.com/r/9FJWnR/1\n * @param style\n * @param checker\n */\nfunction transformInlineStyle(style, checker) {\n  let noConsentCount = 0;\n  const newStyle = style.replace(/(url\\s*\\([\"'\\s]*)([^\"]+dummy\\.(?:png|css))\\?consent-required=([0-9,]+)&consent-by=(\\w+)&consent-id=(\\d+)&consent-original-url=([^-]+)-/gm, (m, urlPrefix, maskedUrl, requiredString, by, blockerId, base64EncodedUrl) => {\n    const {\n      consent\n    } = decideToUnblock(by, requiredString, +blockerId, checker);\n    if (!consent) {\n      noConsentCount++;\n    }\n    return consent ? `${urlPrefix}${htmlDecode(atob(base64EncodedUrl))}` : m;\n  });\n  return [newStyle, noConsentCount];\n}\n\n/**\n * Get all blocked rules within a inline CSS style and check, if they can be enabled by a consent.\n */\nfunction transformInlineStyleRules(checker) {\n  let nodes;\n\n  // First: Iterate all `style`'s\n  nodes = Array.prototype.slice.call(document.querySelectorAll(`[${HTML_ATTRIBUTE_INLINE_STYLE}]`));\n  for (const node of nodes) {\n    // Get the inline style (can be inside attribute when it should be placed to DOM the first time)\n    const isFirstTransition = node.tagName.toLowerCase() === HTML_TAG_CONSENT_SCRIPT;\n    const innerHTML = isFirstTransition ? node.getAttribute(HTML_ATTRIBUTE_INLINE_STYLE) : node.innerHTML;\n    const [newInnerHTML, noConsentCount] = transformInlineStyle(innerHTML, checker);\n\n    // Put pack to DOM\n    if (isFirstTransition) {\n      node.setAttribute(HTML_ATTRIBUTE_INLINE_STYLE, newInnerHTML);\n      putStyleInlineToDom(node);\n    } else {\n      if (node.innerHTML !== newInnerHTML) {\n        node.innerHTML = newInnerHTML;\n      }\n      if (noConsentCount === 0) {\n        node.removeAttribute(HTML_ATTRIBUTE_INLINE_STYLE);\n      }\n    }\n  }\n\n  // Second: All elements with `style=` attribute\n  nodes = Array.prototype.slice.call(document.querySelectorAll(`[style*=\"${HTML_ATTRIBUTE_COOKIE_IDS}\"]`));\n  for (const node of nodes) {\n    node.setAttribute(\"style\", transformInlineStyle(node.getAttribute(\"style\"), checker)[0]);\n  }\n}\nexport { transformInlineStyleRules };","import { calculate } from \"specificity\";\nimport { priorityByRule } from \".\";\nfunction calculateScore(rule, stackSize, property) {\n  const score = +calculate(rule.selectorText)[0].specificity.replace(/,/g, \"\");\n  const specificity = stackSize + score * 10 + priorityByRule(rule, property);\n  return {\n    selector: rule.selectorText,\n    specificity\n  };\n}\nexport { calculateScore };","function priorityByRule(rule, property) {\n  return rule.style?.getPropertyPriority(property) === \"important\" ? 100000 : 0;\n}\nexport { priorityByRule };","import { calculateScore } from \".\";\nimport { matchingSelector } from \".\";\nfunction iterateRules(rules, element, scoresPool, property) {\n  for (const ruleIdx in rules) {\n    const rule = rules[ruleIdx];\n    if (!(rule instanceof CSSStyleRule)) {\n      continue;\n    }\n    try {\n      if (matchingSelector(element, rule.selectorText)) {\n        const style = rule.style[property];\n        if (style !== undefined && style !== \"\") {\n          scoresPool.push({\n            ...calculateScore(rule, scoresPool.length, property),\n            style\n          });\n        }\n      }\n    } catch (e) {\n      // Silence is golden.\n    }\n  }\n}\nexport { iterateRules };","import { calculateInlineScore, iterateStylesheets, sortScores } from \".\";\nfunction resolveScorePool(element, property) {\n  const scores = [];\n\n  // Iterate all our stylesheets\n  iterateStylesheets(element, scores, property);\n\n  // Calculate by inline style\n  const inline = calculateInlineScore(element, property);\n  inline && scores.push(inline);\n\n  // Prepare result\n  if (!scores.length) {\n    return undefined;\n  }\n\n  // Sort scores\n  sortScores(scores);\n  return scores;\n}\nexport { resolveScorePool };","import { iterateRules } from \".\";\nfunction iterateStylesheets(element, scores, property) {\n  const {\n    styleSheets\n  } = document;\n  for (const styleSheetIdx in styleSheets) {\n    const styleSheet = styleSheets[styleSheetIdx];\n    let rules;\n    try {\n      rules = styleSheet.cssRules || styleSheet.rules;\n    } catch (e) {\n      // Rules could not be read, e.g. CORS policy (https://stackoverflow.com/a/49994161/5506547)\n      continue;\n    }\n    if (!rules) {\n      continue;\n    }\n    iterateRules(rules, element, scores, property);\n  }\n}\nexport { iterateStylesheets };","function calculateInlineScore(element, property) {\n  const inline = element.style[property];\n  return inline ? {\n    selector: \"! undefined !\",\n    specificity: 10000 + (new String(inline).match(/\\s!important/gi) ? 100000 : 0),\n    style: inline\n  } : undefined;\n}\nexport { calculateInlineScore };","function sortScores(scores) {\n  scores.sort((a, b) => {\n    if (a.specificity > b.specificity) {\n      return -1;\n    }\n    if (a.specificity < b.specificity) {\n      return 1;\n    }\n    return 0;\n  });\n}\nexport { sortScores };","import { resolveNoneComputedStyle } from \"@devowl-wp/resolve-none-computed-style\";\nimport { HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN, HTML_ATTRIBUTE_RESET_PARENT, HTML_ATTRIBUTE_RESET_PARENT_VALUE, HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER } from \"..\";\nimport { parents } from \"../utils\";\n\n// TODO: make configurable\nconst KNOWN_RATIO_CLASSES = [\n// General\n\"-aspect-ratio\",\n// Gutenberg\n\"wp-block-embed__wrapper\",\n// Cornerstone\n\"x-frame-inner\",\n// Fusion\n\"fusion-video\",\n// Oxygen\n\"video-wrapper\",\n// Breakdance\n\"ee-video-container\"];\nconst RESET_STYLE_IMPORTANT = {\n  \"max-height\": \"initial\",\n  height: \"auto\",\n  padding: 0,\n  \"aspect-ratio\": \"initial\",\n  \"box-sizing\": \"border-box\"\n};\nconst RESET_STYLE = {\n  width: \"100%\"\n};\nconst MEMORIZE_OLD_STYLE = \"consent-cb-memo-style\";\n\n/**\n * Example: Vimeo responsive video.\n *\n * ```html\n * <div style=\"padding:56.25% 0 0 0;position:relative;\">\n *  <iframe style=\"position:absolute;top:0;left:0;width:100%;height:100%;\"></iframe>\n * </div>\n * ```\n *\n * Example 2: Oxygen responsive video wrapper\n *\n * ```html\n * <div style=\"aspect-ratio:16/9\">\n *  <iframe></iframe>\n * </div>\n * ```\n */\nfunction isPotentialVisualWithinResponsiveContainer(node) {\n  const {\n    parentElement\n  } = node;\n  if (!parentElement) {\n    return false;\n  }\n  const parentComputedStyle = getComputedStyle(parentElement);\n  if (/\\d+\\s*\\/\\s*\\d+/g.test(parentComputedStyle[\"aspectRatio\"])) {\n    return true;\n  }\n  const {\n    position: nodePosition\n  } = getComputedStyle(node);\n  const {\n    position: parentPosition\n  } = parentComputedStyle;\n  const {\n    clientWidth,\n    clientHeight\n  } = parentElement;\n  const calculatedRatio = clientHeight / clientWidth * 100;\n  return nodePosition === \"absolute\" && parentPosition === \"relative\" && (parentElement.style.paddingTop.indexOf(\"%\") > -1 || calculatedRatio >= 56 && calculatedRatio <= 57) || parents(node, undefined, 1).filter(isKnownRatioClass).length > 0;\n}\nfunction isKnownRatioClass(element) {\n  return KNOWN_RATIO_CLASSES.filter(c => element.className.indexOf(c) > -1).length > 0;\n}\n\n/**\n * Modify parent element with some styles, e. g. Elementor puts some padding into it.\n * We need to enforce the style via inline-style because some themes use `!important` in their\n * classes, too.\n *\n * @param state If `true`, the reset-style will be forced and vice-versa\n */\nfunction probablyResetParentContainerForVisual(contentBlocker, state) {\n  const {\n    parentElement\n  } = contentBlocker;\n  const iterateParents = parents(contentBlocker, undefined, 3); // Go max three levels upwards\n\n  for (const parent of iterateParents) {\n    // Calculate if this HTML element is a ratio container and can be reset\n    if (!parent.hasAttribute(HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER)) {\n      const isFirstItemWithinResponsiveContainer = parent === parentElement && isPotentialVisualWithinResponsiveContainer(contentBlocker);\n      const isRatioContainer = isFirstItemWithinResponsiveContainer || isKnownRatioClass(parent) || [0, \"0%\", \"0px\"].indexOf(resolveNoneComputedStyle(parent, \"height\")) > -1;\n      parent.setAttribute(HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER, isRatioContainer ? \"1\" : \"0\");\n    }\n    if (state && parent.getAttribute(HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER) === \"1\") {\n      // Check the `display:none!important` style\n      const previouslyStrictHidden = parent.hasAttribute(HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN);\n      let style = parent.getAttribute(\"style\") || \"\";\n      parent.removeAttribute(HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN);\n      if (!previouslyStrictHidden) {\n        style = style.replace(/display:\\s*none\\s*!important;/, \"\");\n      }\n\n      // Apply our new styles with memorization\n      parent.setAttribute(HTML_ATTRIBUTE_RESET_PARENT, HTML_ATTRIBUTE_RESET_PARENT_VALUE);\n      parent.setAttribute(MEMORIZE_OLD_STYLE, style);\n      for (const property in RESET_STYLE_IMPORTANT) {\n        parent.style.setProperty(property, RESET_STYLE_IMPORTANT[property], \"important\");\n      }\n      for (const property in RESET_STYLE) {\n        parent.style.setProperty(property, RESET_STYLE[property]);\n      }\n\n      // Special use case: Positioning\n      if (window.getComputedStyle(parent).position === \"absolute\") {\n        parent.style.setProperty(\"position\", \"static\", \"important\");\n      }\n    } else if (!state && parent.hasAttribute(HTML_ATTRIBUTE_RESET_PARENT)) {\n      parent.setAttribute(\"style\", parent.getAttribute(MEMORIZE_OLD_STYLE) || \"\");\n      parent.removeAttribute(MEMORIZE_OLD_STYLE);\n      parent.removeAttribute(HTML_ATTRIBUTE_RESET_PARENT);\n    }\n  }\n}\nexport { isPotentialVisualWithinResponsiveContainer, probablyResetParentContainerForVisual };","import { resolveScorePool } from \"./resolveScorePool\";\nfunction resolveNoneComputedStyle(element, property) {\n  const scores = resolveScorePool(element, property);\n  return scores?.[0].style;\n}\nexport * from \"./calculateInlineScore\";\nexport * from \"./calculateScore\";\nexport * from \"./iterateRules\";\nexport * from \"./iterateStylesheets\";\nexport * from \"./matchingSelector\";\nexport * from \"./priorityByRule\";\nexport * from \"./sortScores\";\nexport * from \"./resolveScorePool\";\nexport { resolveNoneComputedStyle };","/**\n * @see https://stackoverflow.com/a/7557433/5506547\n */\nfunction isElementInViewport(el) {\n  let partial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  const {\n    top,\n    left,\n    bottom,\n    right,\n    height,\n    width\n  } = el.getBoundingClientRect();\n  const {\n    innerWidth,\n    innerHeight\n  } = window;\n  if (partial) {\n    const vertInView = top <= innerHeight && top + height >= 0;\n    const horInView = left <= innerWidth && left + width >= 0;\n    return vertInView && horInView;\n  } else {\n    const {\n      clientHeight,\n      clientWidth\n    } = document.documentElement;\n    return top >= 0 && left >= 0 && bottom <= (innerHeight || clientHeight) && right <= (innerWidth || clientWidth);\n  }\n}\nexport { isElementInViewport };","import { matchingSelector } from \"@devowl-wp/resolve-none-computed-style\";\nimport { HTML_ATTRIBUTE_VISUAL_PARENT } from \"..\";\nconst CHILDREN_SELECTOR_PREFIX = \"children:\";\n\n/**\n * Find element where the visual content blocker should be placed relative to the blocked element.\n */\nfunction findVisualParent(node) {\n  let setVisualParentIfClassOfParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (!node.parentElement) {\n    return [node, \"none\"];\n  }\n\n  // Find visual parent attribute\n  const forceVisualParent = [\"a\"].indexOf(node.parentElement.tagName.toLowerCase()) > -1; // for links always use the parent\n  let useVisualParent = forceVisualParent;\n  if (node.hasAttribute(HTML_ATTRIBUTE_VISUAL_PARENT)) {\n    useVisualParent = node.getAttribute(HTML_ATTRIBUTE_VISUAL_PARENT);\n  } else {\n    const {\n      className\n    } = node.parentElement;\n    for (const def in setVisualParentIfClassOfParent) {\n      if (className.indexOf(def) > -1) {\n        useVisualParent = setVisualParentIfClassOfParent[def];\n        break;\n      }\n    }\n  }\n  if (useVisualParent) {\n    if (useVisualParent === true || useVisualParent === \"true\") {\n      // Usual behavior, just take the parent\n      return [node.parentElement, \"parent\"];\n    } else if (!isNaN(+useVisualParent)) {\n      // The attribute is a number, let's go up x parents\n      let parent = node;\n      for (let i = 0; i < +useVisualParent; i++) {\n        if (!parent.parentElement) {\n          return [parent, \"parentZ\"]; // Fallback to last found parent\n        }\n\n        parent = parent.parentElement;\n      }\n      return [parent, \"parentZ\"];\n    } else if (typeof useVisualParent === \"string\") {\n      if (useVisualParent.startsWith(CHILDREN_SELECTOR_PREFIX)) {\n        return [node.querySelector(useVisualParent.substr(CHILDREN_SELECTOR_PREFIX.length)), \"childrenSelector\"];\n      } else {\n        // The attribute is a query selector\n        for (let elem = node; elem; elem = elem.parentElement) {\n          if (matchingSelector(elem, useVisualParent)) {\n            return [elem, \"parentSelector\"];\n          }\n        }\n      }\n    }\n  }\n  return [node, \"none\"];\n}\nexport { findVisualParent };","/**\n * Get previous HTML element which is visible.\n *\n * @see https://stackoverflow.com/a/31207879/5506547\n * @see https://stackoverflow.com/a/21696585/5506547\n */\nfunction getPreviousVisibleElement(node, rateAsVisible) {\n  function prevAll(element) {\n    const result = [];\n    while (element = element.previousElementSibling) result.push(element);\n    return result;\n  }\n  const previousVisible = prevAll(node).filter(e => {\n    if (e.offsetParent) {\n      // It is safely visible\n      return true;\n    }\n\n    // Allow to override rating\n    return rateAsVisible ? rateAsVisible(e) : false;\n  });\n  return previousVisible.length ? previousVisible[0] : undefined;\n}\nexport { getPreviousVisibleElement };","import { getPreviousVisibleElement } from \"../utils\";\nimport { HTML_ATTRIBUTE_THUMBNAIL, HTML_ATTRIBUTE_BLOCKER_CONNECTED, HTML_ATTRIBUTE_BLOCKER_ID } from \"..\";\nfunction isHtmlNodeContentBlocker(node) {\n  return node.hasAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED);\n}\nfunction mapIgnoreInvisibleAndUsePreviousVisible(element) {\n  return element.offsetParent ? element : getPreviousVisibleElement(element, isHtmlNodeContentBlocker);\n}\n\n/**\n * Find a duplicate before a given node to avoid duplicate content blockers for the same content.\n */\nfunction findPreviousVisibleDuplicate(createBefore, node, blockerId) {\n  const {\n    previousElementSibling\n  } = createBefore;\n  const visualThumbnail = node.getAttribute(HTML_ATTRIBUTE_THUMBNAIL);\n  const firstParentPreviousElementSibling = createBefore.parentElement?.previousElementSibling;\n  const secondParentPreviousElementSibling = createBefore.parentElement?.parentElement?.previousElementSibling;\n  const possibleDuplicates = [getPreviousVisibleElement(createBefore, isHtmlNodeContentBlocker), previousElementSibling, previousElementSibling?.lastElementChild,\n  // 1st parent up\n  firstParentPreviousElementSibling, firstParentPreviousElementSibling?.lastElementChild,\n  // 2nd parent up\n  secondParentPreviousElementSibling, secondParentPreviousElementSibling?.lastElementChild, secondParentPreviousElementSibling?.lastElementChild?.lastElementChild].filter(Boolean)\n  // Get previous visible element if the last child element is not visible\n  .map(mapIgnoreInvisibleAndUsePreviousVisible).filter(Boolean);\n  for (const possibleDuplicate of possibleDuplicates) {\n    if (+possibleDuplicate.getAttribute(HTML_ATTRIBUTE_BLOCKER_ID) === blockerId && possibleDuplicate.hasAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED)) {\n      const connected = +possibleDuplicate.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED);\n\n      // If the blocked node has a visual thumbnail, check if the blocked content of\n      // the possible duplicate has not the same visual thumbnail. Otherwise, use it\n      // as duplicate.\n      const blockedContentOfPossibleDuplicate = document.querySelector(`[${HTML_ATTRIBUTE_BLOCKER_CONNECTED}=\"${connected}\"]:not(.rcb-content-blocker)`);\n      if (visualThumbnail && blockedContentOfPossibleDuplicate?.hasAttribute(HTML_ATTRIBUTE_THUMBNAIL) && blockedContentOfPossibleDuplicate.getAttribute(HTML_ATTRIBUTE_THUMBNAIL) !== visualThumbnail) {\n        return false;\n      }\n      return possibleDuplicate;\n    }\n  }\n  return false;\n}\nexport { findPreviousVisibleDuplicate };","import { parents, isElementInViewport, HTML_ATTRIBUTE_BLOCKER_CONNECTED, HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN, HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED, HTML_ATTRIBUTE_VISUAL_PAINT_MODE, HTML_ATTRIBUTE_VISUAL_FORCE } from \"..\";\nimport { probablyResetParentContainerForVisual, isPotentialVisualWithinResponsiveContainer, findVisualParent, findPreviousVisibleDuplicate, createVisualContainer } from \".\";\n\n/**\n * Save the identifier for the last clicked content blocker so we can\n * dispatch in our event if it is the clicked one. This is useful e.g.\n * to delegate the click event further and start a video.\n */\nlet lastClickedConnectedCounter = undefined;\nlet connectedCounterPreserve = 0;\n\n/**\n * Create visual content blocker for a given node.\n *\n * Returns `undefined` when the container cannot be created.\n */\nfunction createVisual(_ref) {\n  let {\n    node,\n    blocker,\n    setVisualParentIfClassOfParent,\n    dependantVisibilityContainers,\n    mount\n  } = _ref;\n  // Short circuit: We do not know a blocker for this; do nothing\n  if (!blocker) {\n    return undefined;\n  }\n\n  // Apply a unique identifier for this node\n  if (!node.hasAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED)) {\n    node.setAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED, connectedCounterPreserve.toString());\n    connectedCounterPreserve++;\n  }\n  const connectedCounter = +node.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED);\n  const {\n    parentElement\n  } = node;\n  const {\n    shouldForceToShowVisual: shouldForceToShowVisualBlocker = false,\n    isVisual,\n    id: blockerId\n  } = blocker;\n  const shouldForceToShowVisual = shouldForceToShowVisualBlocker || node.hasAttribute(HTML_ATTRIBUTE_VISUAL_FORCE);\n  let position = \"initial\";\n  try {\n    const computedStyle = window.getComputedStyle(node);\n    position = computedStyle.position;\n  } catch (e) {\n    // Silence is golden.\n  }\n\n  // Visual content blockers are only allowed for \"real\" content\n  const isPositioned = [\"fixed\", \"absolute\", \"sticky\"].indexOf(position) > -1;\n  const isNotInContent = [document.body, document.head, document.querySelector(\"html\")].indexOf(parentElement) > -1;\n  const isAlreadyConnected = node.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED);\n  const [createBefore, visualParentMode] = findVisualParent(node, setVisualParentIfClassOfParent || {});\n  // const isInlineScriptOrStyle = createBefore.hasAttribute(HTML_ATTRIBUTE_INLINE) || createBefore.hasAttribute(HTML_ATTRIBUTE_INLINE_STYLE);\n  const isVisible = !!createBefore.offsetParent;\n\n  // Always hide elements (again) if no visual blocker is possible (get) and memorize\n  // the \"!important\" state so we can correctly reset it in `probablyResetParentContainerForVisual`\n  const fnStrictHide = reason => {\n    if ([\"script\", \"link\"].indexOf(node?.tagName.toLowerCase()) === -1) {\n      if (reason === \"qualified\" && visualParentMode === \"childrenSelector\") {\n        return;\n      }\n      const {\n        style\n      } = node;\n      if (style.getPropertyValue(\"display\") === \"none\" && style.getPropertyPriority(\"display\") === \"important\") {\n        node.setAttribute(HTML_ATTRIBUTE_WAS_PREVIOUSLY_STRICT_HIDDEN, \"1\");\n      } else {\n        style.setProperty(\"display\", \"none\", \"important\");\n      }\n    }\n  };\n  if (isNotInContent || isPositioned && !isPotentialVisualWithinResponsiveContainer(node) && !shouldForceToShowVisual || !isVisual || isAlreadyConnected || !isVisible && !shouldForceToShowVisual) {\n    // Check if this content blocker is inside a known container for which we need to wait first its visibility\n    if (!isVisible && dependantVisibilityContainers) {\n      const dependantContainers = parents(node, dependantVisibilityContainers.join(\",\"));\n      if (dependantContainers.length > 0 && !dependantContainers[0].offsetParent) {\n        // Wait for visibility, do nothing with this node...\n        return undefined;\n      }\n    }\n    fnStrictHide(\"qualified\");\n    return undefined;\n  }\n\n  // Avoid duplicate visual blockers and connect them\n  const foundDuplicate = findPreviousVisibleDuplicate(createBefore, node, blockerId);\n  if (foundDuplicate) {\n    node.setAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED, foundDuplicate.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED));\n    probablyResetParentContainerForVisual(createBefore, true);\n    fnStrictHide(\"duplicate\");\n    return undefined;\n  }\n  const {\n    container,\n    thumbnail\n  } = createVisualContainer(node, createBefore, visualParentMode);\n  const mountVisualContainer = paintMode => {\n    container.setAttribute(HTML_ATTRIBUTE_VISUAL_PAINT_MODE, paintMode);\n    mount({\n      container,\n      blocker,\n      connectedCounter,\n      onClick: event => {\n        // Stop above propagation so click event handlers do not handle this as a click on the\n        // mainly blocked element (example: Video inside another container which delegates click event).\n        event?.stopPropagation();\n        setLastClickedConnectedCounter(connectedCounter);\n      },\n      blockedNode: node,\n      thumbnail,\n      paintMode\n    });\n    probablyResetParentContainerForVisual(createBefore, true);\n  };\n\n  // Lazy load the visual container (not depending on view port but do not overload the main thread with idle timing)\n  if (isElementInViewport(container, true)) {\n    mountVisualContainer(\"instantInViewport\");\n  } else if (\n  // If the previous one was in viewport, consider the next one as \"instant\" as it could lead\n  // to unexpected behavior (e.g. ratio class is used and container is in viewport at the bottom screen\n  // but isn't technically due to vertical alignment to bottom).\n  document.querySelector(`.rcb-content-blocker[${HTML_ATTRIBUTE_BLOCKER_CONNECTED}=\"${connectedCounter - 1}\"][${HTML_ATTRIBUTE_VISUAL_PAINT_MODE}]`)?.getAttribute(HTML_ATTRIBUTE_VISUAL_PAINT_MODE) === \"instantInViewport\") {\n    mountVisualContainer(\"instant\");\n  } else if (window.requestIdleCallback) {\n    window.requestIdleCallback(() => mountVisualContainer(\"idleCallback\"));\n  } else {\n    setTimeout(() => mountVisualContainer(\"instant\"));\n  }\n  return container;\n}\nfunction getLastClickedConnectedCounter() {\n  return lastClickedConnectedCounter;\n}\nfunction setLastClickedConnectedCounter(connectedCounter) {\n  lastClickedConnectedCounter = connectedCounter;\n}\nexport { createVisual, getLastClickedConnectedCounter, setLastClickedConnectedCounter };","import { HTML_ATTRIBUTE_BLOCKER_CONNECTED, HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED, HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_BY, HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_THUMBNAIL, HTML_ATTRIBUTE_VISUAL_PARENT_HIDE } from \"..\";\n/**\n * Create visual content blocker container for a given node.\n */\nfunction createVisualContainer(node, createBefore, visualParentMode) {\n  const container = document.createElement(\"div\");\n  const {\n    style\n  } = container;\n  const connectedCounter = node.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED_PRESERVED);\n\n  // Connect blocker with blocked node\n  container.setAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED, connectedCounter);\n  container.className = \"rcb-content-blocker\";\n  style.setProperty(\"max-height\", \"initial\");\n  style.setProperty(\"pointer-events\", \"all\");\n  style.setProperty(\"flex-grow\", \"1\");\n  style.setProperty(\"position\", \"initial\", \"important\");\n  node.setAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED, connectedCounter);\n  createBefore.parentNode.insertBefore(container, createBefore);\n\n  // Copy consent attributes so they are found via `findBlockedNodes`, too\n  [HTML_ATTRIBUTE_BY, HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_COOKIE_IDS].forEach(a => {\n    if (node.hasAttribute(a)) {\n      container.setAttribute(a, node.getAttribute(a));\n    }\n  });\n\n  // Connect a children selector with the content blocker above\n  if (visualParentMode === \"childrenSelector\") {\n    createBefore.setAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED, connectedCounter);\n  }\n\n  // Find configured visual thumbnail\n  let thumbnail;\n  if (node.hasAttribute(HTML_ATTRIBUTE_THUMBNAIL)) {\n    thumbnail = JSON.parse(node.getAttribute(HTML_ATTRIBUTE_THUMBNAIL));\n  } else {\n    const nestedThumbnailNode = node.querySelectorAll(`[${HTML_ATTRIBUTE_THUMBNAIL}`);\n    if (nestedThumbnailNode.length > 0) {\n      thumbnail = JSON.parse(nestedThumbnailNode[0].getAttribute(HTML_ATTRIBUTE_THUMBNAIL));\n    }\n  }\n\n  // Hide our element and render content blocker\n  (visualParentMode === \"childrenSelector\" || node.hasAttribute(HTML_ATTRIBUTE_VISUAL_PARENT_HIDE) ? createBefore : node).style.setProperty(\"display\", \"none\", \"important\");\n  return {\n    container,\n    thumbnail\n  };\n}\nexport { createVisualContainer };","import { getLastClickedConnectedCounter } from \".\";\nimport { HTML_ATTRIBUTE_BLOCKER_CONNECTED, HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_BY, HTML_ATTRIBUTE_GOT_CLICKED, HTML_ATTRIBUTE_GOT_CLICKED_VALUE, HTML_ATTRIBUTE_GOT_CLICKED_VALUE_DO_NOT_USE_IN_NESTED, parents } from \"..\";\n\n/**\n * Detect if a given unblocked node is the last clicked element so we can delegate the click\n * event to the unblocking mechanism. This allows us e.g. autoplay for YouTube.\n */\nfunction detectLastClicked(node) {\n  const connectedBlocker = node.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED);\n  const consentId = node.getAttribute(HTML_ATTRIBUTE_BLOCKER_ID);\n  const consentBy = node.getAttribute(HTML_ATTRIBUTE_BY);\n  const lastClicked = getLastClickedConnectedCounter();\n  let isLastClicked = `${lastClicked}` === connectedBlocker;\n  if (isLastClicked) {\n    node.setAttribute(HTML_ATTRIBUTE_GOT_CLICKED, HTML_ATTRIBUTE_GOT_CLICKED_VALUE);\n  } else {\n    // Check if there is a parent unblocked element which got clicked and we can\n    // use it as our \"click\"-indicator. This allows us to delegate click elements to\n    // the first unblocked, nested element.\n    const [parentGotClicked] = parents(node, `[${HTML_ATTRIBUTE_GOT_CLICKED}=\"${HTML_ATTRIBUTE_GOT_CLICKED_VALUE}\"][${HTML_ATTRIBUTE_BLOCKER_ID}=\"${consentId}\"][${HTML_ATTRIBUTE_BY}=\"${consentBy}\"]`);\n    if (parentGotClicked) {\n      parentGotClicked.setAttribute(HTML_ATTRIBUTE_GOT_CLICKED, HTML_ATTRIBUTE_GOT_CLICKED_VALUE_DO_NOT_USE_IN_NESTED);\n      isLastClicked = true;\n    }\n  }\n  return isLastClicked;\n}\nexport { detectLastClicked };","import { INITIATOR_EXECUTION } from \"../../events\";\nconst dispatchInitiatorExecution = detail => {\n  document.dispatchEvent(new CustomEvent(INITIATOR_EXECUTION, {\n    detail: {\n      position: 0,\n      ...detail\n    }\n  }));\n  return () => document.dispatchEvent(new CustomEvent(INITIATOR_EXECUTION, {\n    detail: {\n      position: 1,\n      ...detail\n    }\n  }));\n};\nexport { dispatchInitiatorExecution };","import { isCurrentlyInTransaction, OPT_IN_CONTENT_BLOCKER_ALL } from \"../..\";\nimport { dispatchInitiatorExecution } from \".\";\nlet overwritten = false;\n\n/**\n * Overwrite `jQuery(fn)` as they can not be triggered by our script blocker.\n *\n * @see https://api.jquery.com/ready/\n */\nfunction applyJQueryReadyInitiator(doc) {\n  // Only overwrite once\n  if (overwritten) {\n    return;\n  }\n  const {\n    jQuery\n  } = doc.defaultView || doc.parentWindow;\n  if (!jQuery) {\n    return;\n  }\n  const originalFn = jQuery.fn.ready;\n  jQuery.fn.ready = function (fn) {\n    if (fn) {\n      // Redirect to own thread to avoid variable order lacks (e. g. Uncode Gmaps Integration, Contact Form 7\n      const executeHandle = () => setTimeout(() => {\n        const afterExecution = dispatchInitiatorExecution({\n          type: \"jQueryReady\",\n          fn\n        });\n        fn(jQuery);\n        afterExecution();\n      }, 0);\n      if (isCurrentlyInTransaction()) {\n        // Standard behavior: jQuery.ready() got called with the unblocked script\n        let executed = false;\n        document.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, () => {\n          // IE does not support the `once` option\n          if (executed) {\n            return;\n          }\n          executed = true;\n          executeHandle();\n        });\n      } else {\n        // Edge case: jQuery.ready() got called multiple times and nested\n        // Example:\n        // <script>\n        // console.log(\"gravatar.com/avatar\");\n        // jQuery(function() {\n        //   console.log(\"unblocked\");\n        //   jQuery(function() {\n        //     console.log(\"unblocked 2\");\n        //   });\n        // });\n        // </script>\n        executeHandle();\n      }\n    }\n    return originalFn.apply(this, [() => {\n      // Silence is golden.\n    }]);\n  };\n  overwritten = true;\n}\nexport { applyJQueryReadyInitiator };","import { isCurrentlyInTransaction, OPT_IN_CONTENT_BLOCKER_ALL } from \"../..\";\nimport { MEMORIZE_NATIVE_EVENT_PROPERTY, MEMORIZE_JQUERY_EVENT_PROPERTY, dispatchInitiatorExecution } from \".\";\nconst OVERWRITE_PROPERTY = \"rcbJQueryEventListener\";\n\n/**\n * Overwrite `jQuery(selector).on` and `jQuery.event.add` for special events\n * like `elementor/frontend/init`.\n */\nfunction applyJQueryEventInitiator(doc, element, eventName) {\n  let {\n    onBeforeExecute\n  } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n    onBeforeExecute: undefined\n  };\n  const overwriteProp = `${OVERWRITE_PROPERTY}_${eventName}`;\n  const memorizeProp = `${MEMORIZE_JQUERY_EVENT_PROPERTY}_${eventName}`;\n  const memorizeNativeProp = `${MEMORIZE_NATIVE_EVENT_PROPERTY}_${eventName}`;\n  const {\n    jQuery\n  } = doc.defaultView || doc.parentWindow;\n  if (!jQuery) {\n    return;\n  }\n  const {\n    event,\n    Event\n  } = jQuery;\n  if (!event || !Event || event[overwriteProp]) {\n    return;\n  }\n  const {\n    add\n  } = event;\n  Object.assign(event, {\n    [overwriteProp]: true,\n    add: function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      // https://git.io/JsXSb\n      const [elem, types, handler, data, selector] = args;\n      const useTypes = Array.isArray(types) ? types : typeof types === \"string\" ? types.split(\" \") : types;\n      const memorizeExecutionPromise = event[memorizeProp] || elem[memorizeNativeProp]?.then(() => []);\n      const inTransaction = isCurrentlyInTransaction();\n\n      // Redirect to own thread to avoid variable order lacks (e. g. Uncode Gmaps Integration, Contact Form 7)\n      const executeHandle = function () {\n        let [, ...eventParameters] = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n        return setTimeout(() => {\n          const afterExecution = dispatchInitiatorExecution({\n            type: \"jQueryEvent\",\n            elem,\n            types,\n            handler,\n            data,\n            selector\n          });\n          onBeforeExecute?.(inTransaction);\n          handler?.(new Event(), ...eventParameters);\n          afterExecution();\n        }, 0);\n      };\n      if (types && elem === element) {\n        for (const type of useTypes) {\n          const isRequestedEventName = type === eventName;\n          if (isRequestedEventName && inTransaction) {\n            let executed = false;\n            document.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, () => {\n              // IE does not support the `once` option\n              if (executed) {\n                return;\n              }\n              executed = true;\n              if (memorizeExecutionPromise) {\n                memorizeExecutionPromise.then(executeHandle);\n              } else {\n                executeHandle();\n              }\n            });\n          } else if (isRequestedEventName && memorizeExecutionPromise) {\n            memorizeExecutionPromise.then(executeHandle);\n          } else {\n            add.apply(this, [elem, type, handler, data, selector]);\n          }\n        }\n      } else {\n        add.apply(this, args);\n      }\n    }\n  });\n}\nexport { applyJQueryEventInitiator };","import { OPT_IN_CONTENT_BLOCKER_ALL, isCurrentlyInTransaction } from \"../..\";\nimport { MEMORIZE_NATIVE_EVENT_PROPERTY, dispatchInitiatorExecution } from \".\";\nconst OVERWRITE_PROPERTY = \"rcbNativeEventListener\";\n\n/**\n * Overwrite `window.addEventListener('load')` as they can not be triggered by our script blocker.\n * This can also be used for other known events.\n */\nfunction applyNativeEventListenerInitiator(element, eventName) {\n  let {\n    onBeforeExecute\n  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    onBeforeExecute: undefined\n  };\n  const overwriteProp = `${OVERWRITE_PROPERTY}_${eventName}`;\n  const memorizeProp = `${MEMORIZE_NATIVE_EVENT_PROPERTY}_${eventName}`;\n\n  // Only overwrite once\n  if (element[overwriteProp]) {\n    return;\n  }\n  const {\n    addEventListener\n  } = element;\n  Object.assign(element, {\n    [overwriteProp]: true,\n    addEventListener: function (type) {\n      for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        rest[_key - 1] = arguments[_key];\n      }\n      if (type === eventName) {\n        // Redirect to own thread to avoid variable order lacks (e. g. Uncode Gmaps Integration, Contact Form 7\n        const executeHandle = () => setTimeout(() => {\n          const afterExecution = dispatchInitiatorExecution({\n            type: \"nativeEvent\",\n            eventName\n          });\n          onBeforeExecute?.();\n          rest[0]?.(new Event(eventName, {\n            bubbles: true,\n            cancelable: true\n          }));\n          afterExecution();\n        }, 0);\n        if (isCurrentlyInTransaction()) {\n          const memorizeExecutionPromise = element[memorizeProp];\n          let executed = false;\n          document.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, () => {\n            // IE does not support the `once` option\n            if (executed) {\n              return;\n            }\n            executed = true;\n            if (memorizeExecutionPromise) {\n              memorizeExecutionPromise.then(executeHandle);\n            } else {\n              executeHandle();\n            }\n          });\n        } else {\n          executeHandle();\n        }\n      } else {\n        addEventListener.apply(this, [type, ...rest]);\n      }\n    }\n  });\n}\nexport { applyNativeEventListenerInitiator };","import { WINDOW_ONLOAD_UNBLOCK_REPLACEMENT } from \"..\";\nlet overwritten = false;\n\n/**\n * Overwrite `window.rcbInitiatorOnload =` assignemnts so they get immediatly executed.\n * At the time of consent the window is definitely loaded.\n */\nfunction applyWindowOnloadInitiator(doc) {\n  // Only overwrite once\n  if (overwritten) {\n    return;\n  }\n  const w = doc.defaultView || doc.parentWindow;\n  try {\n    Object.defineProperty(w, WINDOW_ONLOAD_UNBLOCK_REPLACEMENT, {\n      set: function (newValue) {\n        if (typeof newValue === \"function\") {\n          newValue();\n        }\n      },\n      enumerable: true,\n      configurable: true\n    });\n  } catch (e) {\n    // Silence is golden\n  }\n  overwritten = true;\n}\nexport { applyWindowOnloadInitiator };","import { HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_INLINE } from \".\";\nconst SCRIPTS_SELECTOR = `script[src]:not([async]):not([defer]):not([${HTML_ATTRIBUTE_BLOCKER_ID}]):not([${HTML_ATTRIBUTE_INLINE}])`;\n\n/**\n * Create this instance at the time before adding content or scripts to your DOM,\n * and call the `.wait` function after adding content or scripts to your DOM.\n */\nclass WaitSynchronousScripts {\n  constructor() {\n    this.scriptsBefore = void 0;\n    this.scriptsBefore = Array.prototype.slice.call(document.querySelectorAll(SCRIPTS_SELECTOR));\n  }\n\n  /**\n   * Returns the diff of scripts as Promises and are resolved when script is loaded.\n   */\n  diff() {\n    const scriptsAfter = Array.prototype.slice.call(document.querySelectorAll(SCRIPTS_SELECTOR));\n    const scriptsDiff = scriptsAfter.filter(a => this.scriptsBefore.indexOf(a) === -1);\n    const promises = scriptsDiff.map(script => new Promise(resolve => {\n      // Check if the script is already loaded or in browser queue (https://stackoverflow.com/a/67184038/5506547)\n      const performanceEntries = performance.getEntriesByType(\"resource\").filter(_ref => {\n        let {\n          name\n        } = _ref;\n        return name === script.src;\n      }); // `getEntriesByName` is not available in all browsers\n\n      if (performanceEntries.length > 0) {\n        resolve();\n      }\n      script.addEventListener(\"load\", () => {\n        resolve();\n      });\n      script.addEventListener(\"error\", () => {\n        // At the moment, we just ignore errors\n        resolve();\n      });\n    }));\n    return promises;\n  }\n}\nexport { WaitSynchronousScripts };","import { putHtmlCodeToDom, HTML_ATTRIBUTE_TRANSFORM_WRAPPER, HTML_ATTRIBUTE_TRANSFORM_WRAPPER_VALUE } from \".\";\n\n/**\n * We do need to create a `span` for postscribe cause the <script> tag can not be used in this case.\n *\n * @param html The `script` tag HTML (can be inline or with `src`)\n */\nfunction ensureScriptWrapper(html, node) {\n  // Check if there is already a wrapper known\n  const previousElementSibling = node.previousElementSibling;\n\n  // Got the element already be moved by another script? So we just ignore as this\n  // is currently an edge-case (e.g. Podigee Podcast Player).\n  if (!node.parentElement) {\n    return Promise.resolve();\n  }\n  let referenceNode;\n  if (previousElementSibling?.hasAttribute(HTML_ATTRIBUTE_TRANSFORM_WRAPPER)) {\n    referenceNode = previousElementSibling;\n  } else {\n    referenceNode = document.createElement(\"div\"); // we need to have a `block`ing element\n    referenceNode.setAttribute(HTML_ATTRIBUTE_TRANSFORM_WRAPPER, HTML_ATTRIBUTE_TRANSFORM_WRAPPER_VALUE);\n    node.parentElement.replaceChild(referenceNode, node);\n  }\n  return putHtmlCodeToDom(html, {}, referenceNode);\n}\nexport { ensureScriptWrapper };","import { ensureScriptWrapper, HTML_ATTRIBUTE_CAPTURE_PREFIX, HTML_ATTRIBUTE_CAPTURE_CLICK_PREFIX, HTML_ATTRIBUTE_CAPTURE_SUFFIX, HTML_ATTRIBUTE_BLOCKER_CONNECTED } from \".\";\nimport { OPT_IN_CONTENT_BLOCKER_ALL } from \"../events\";\nimport { dispatchResizeEvent } from \"../utils\";\nimport { findVisualParent } from \"../visual\";\nlet tagTransformationCounter = 0;\nconst HTML_TAG_TRANSFORMATION_COUNTER = \"consent-tag-transformation-counter\";\n\n/**\n * Transform e. g. `consent-original-href` to `href` of a given node.\n */\nfunction transformToOriginalAttribute(_ref) {\n  let {\n    node,\n    allowClickOverrides,\n    onlyModifyAttributes,\n    setVisualParentIfClassOfParent,\n    overwriteAttributeValue\n  } = _ref;\n  return new Promise(resolve => {\n    let performedClick = false;\n\n    // Scripts need to be handled differently cause we want to use `postscribe` and should not be attached\n    // to the DOM -> not be executed\n    const tagName = node.tagName.toLowerCase();\n    const isScript = tagName === \"script\";\n    let workWithNode = isScript && !onlyModifyAttributes ? node.cloneNode(true) : node;\n\n    // Do the transformation from \"blocked\" state to \"unblocked\"\n    for (const attribute of workWithNode.getAttributeNames()) {\n      if (attribute.startsWith(HTML_ATTRIBUTE_CAPTURE_PREFIX) && attribute.endsWith(HTML_ATTRIBUTE_CAPTURE_SUFFIX)) {\n        let originalAttribute = attribute.substr(HTML_ATTRIBUTE_CAPTURE_PREFIX.length + 1);\n        originalAttribute = originalAttribute.slice(0, (HTML_ATTRIBUTE_CAPTURE_SUFFIX.length + 1) * -1);\n\n        // Check if `allowClickOverride` is given and then the `consent-click-original` attribute may be used, if given\n        const overwriteClickAttribute = `${HTML_ATTRIBUTE_CAPTURE_CLICK_PREFIX}-${originalAttribute}-${HTML_ATTRIBUTE_CAPTURE_SUFFIX}`;\n        const hasOverwriteClickAttribute = workWithNode.hasAttribute(overwriteClickAttribute) && allowClickOverrides;\n        let value = workWithNode.getAttribute(hasOverwriteClickAttribute ? overwriteClickAttribute : attribute);\n        if (hasOverwriteClickAttribute) {\n          performedClick = true;\n        }\n        if (overwriteAttributeValue) {\n          value = overwriteAttributeValue(value, originalAttribute);\n        }\n\n        // Finally, set the valid values\n        workWithNode.setAttribute(originalAttribute, value);\n        workWithNode.removeAttribute(attribute);\n        workWithNode.removeAttribute(overwriteClickAttribute);\n\n        // Automatically delegate a `click` event\n        if (allowClickOverrides && [\"a\"].indexOf(tagName) > -1 && ([\"onclick\"].indexOf(originalAttribute.toLowerCase()) > -1 || workWithNode.getAttribute(\"href\")?.startsWith(\"#\"))) {\n          workWithNode.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, async _ref2 => {\n            let {\n              detail: {\n                unblockedNodes\n              }\n            } = _ref2;\n            return unblockedNodes.forEach(() => {\n              workWithNode.click();\n              dispatchResizeEvent(workWithNode);\n            });\n          });\n        }\n      }\n    }\n\n    // Are there any non-transformed clicked attributes? E.g. only add an attribute when it got clicked (without original attribute)\n    for (const attribute of workWithNode.getAttributeNames()) {\n      if (attribute.startsWith(HTML_ATTRIBUTE_CAPTURE_CLICK_PREFIX) && attribute.endsWith(HTML_ATTRIBUTE_CAPTURE_SUFFIX)) {\n        const value = workWithNode.getAttribute(attribute);\n        let originalAttribute = attribute.substr(HTML_ATTRIBUTE_CAPTURE_CLICK_PREFIX.length + 1);\n        originalAttribute = originalAttribute.slice(0, (HTML_ATTRIBUTE_CAPTURE_SUFFIX.length + 1) * -1);\n\n        // Finally, set the valid values\n        if (allowClickOverrides) {\n          workWithNode.setAttribute(originalAttribute, value);\n          performedClick = true;\n        }\n        workWithNode.removeAttribute(attribute);\n      }\n    }\n    const result = {\n      performedClick,\n      workWithNode: node\n    };\n    if (onlyModifyAttributes) {\n      result.performedClick = false;\n      resolve(result);\n      return;\n    }\n\n    // Allow transition of custom element tags (web components).\n    // See also https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example)\n    if (tagName.startsWith(\"consent-\") && customElements) {\n      const originalTag = tagName.substring(8);\n      workWithNode.outerHTML = workWithNode.outerHTML.replace(/^<consent-[^\\s]+/m, `<${originalTag} ${HTML_TAG_TRANSFORMATION_COUNTER}=\"${tagTransformationCounter}\"`).replace(/<\\/consent-[^\\s]+>$/m, `</${originalTag}>`);\n      workWithNode = document.querySelector(`[${HTML_TAG_TRANSFORMATION_COUNTER}=\"${tagTransformationCounter}\"]`);\n      tagTransformationCounter++;\n      result.workWithNode = workWithNode;\n    }\n    workWithNode.style.removeProperty(\"display\");\n\n    // Also make the parent visual visible again\n    const [visualParent] = findVisualParent(node, setVisualParentIfClassOfParent || {});\n    if (visualParent !== node || visualParent?.hasAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED)) {\n      visualParent.style.removeProperty(\"display\");\n    }\n    if (!isScript) {\n      resolve(result);\n    } else {\n      const {\n        outerHTML\n      } = workWithNode;\n      ensureScriptWrapper(outerHTML, node).then(() => resolve(result));\n    }\n  });\n}\nexport { transformToOriginalAttribute };","import { putHtmlCodeToDom, ensureScriptWrapper, HTML_ATTRIBUTE_INLINE, HTML_TAG_CONSENT_SCRIPT, HTML_ATTRIBUTE_CAPTURE_PREFIX, HTML_ATTRIBUTE_CAPTURE_SUFFIX } from \".\";\n\n/**\n * Put an prepared inline script (tag containing a `consent-inline` attribute) to the DOM.\n */\nfunction putScriptInlineToDom(node) {\n  const isInHead = node.parentElement === document.head;\n\n  // Get the inline script itself\n  const inlineScript = node.getAttribute(HTML_ATTRIBUTE_INLINE);\n  node.removeAttribute(HTML_ATTRIBUTE_INLINE);\n\n  // Sometimes, the inline scripts writes new content via `document.write` and we need to make this visible\n  node.style.removeProperty(\"display\");\n\n  // Transform the tag to the `script`\n  // We need to make such a hacky way because regex does not work and `outerHTML` has also some issues...\n  let inlineScriptHtml = node.outerHTML.substr(HTML_TAG_CONSENT_SCRIPT.length + 1);\n  inlineScriptHtml = inlineScriptHtml.substr(0, inlineScriptHtml.length - HTML_TAG_CONSENT_SCRIPT.length - 3);\n  inlineScriptHtml = inlineScriptHtml.replace(new RegExp(`type=\"application/consent\"`), \"\");\n  inlineScriptHtml = inlineScriptHtml.replace(new RegExp(`${HTML_ATTRIBUTE_CAPTURE_PREFIX}-type-${HTML_ATTRIBUTE_CAPTURE_SUFFIX}=\"([^\"]+)\"`), `type=\"$1\"`);\n  inlineScriptHtml = `<script${inlineScriptHtml}${inlineScript}</script>`;\n  return isInHead ? putHtmlCodeToDom(inlineScriptHtml, {}) : ensureScriptWrapper(inlineScriptHtml, node);\n}\nexport { putScriptInlineToDom };","import { HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_DELEGATE_CLICK } from \".\";\nimport { OPT_IN_CONTENT_BLOCKER_ALL } from \"..\";\nimport { dispatchResizeEvent } from \"../utils\";\n/**\n * Listen to clicked content blockers and automatically delegate the click\n * event to the underlying element. This is especially useful for overlays of videos\n * so the user does not need to click twice.\n */\nfunction delegateClick(element, _ref) {\n  let {\n    same,\n    nextSibling,\n    parentNextSibling\n  } = _ref;\n  // Save found result\n  let delegateClick;\n  let hide;\n  const delegateClickAttribute = element.getAttribute(HTML_ATTRIBUTE_DELEGATE_CLICK);\n  const nextElementSibling = element.nextElementSibling;\n  const parentElement = element.parentElement;\n  const parentElementNextSibling = parentElement?.nextElementSibling;\n  loop1: for (const [node, delegateClickElements] of [[\n  // Same element (= the blocked element)\n  element, [...(same || []), ...(delegateClickAttribute ? [JSON.parse(delegateClickAttribute)] : [])]], [\n  // Next sibling element to the blocked content\n  nextElementSibling, nextSibling], [\n  // Next sibling element of parent of the blocked content\n  parentElementNextSibling, parentNextSibling]]) {\n    if (node && delegateClickElements) {\n      for (const delegateClickElement of delegateClickElements) {\n        const selector = typeof delegateClickElement === \"string\" ? delegateClickElement : delegateClickElement.selector;\n        if (typeof delegateClickElement !== \"string\") {\n          hide = delegateClickElement.hide || false;\n        }\n        if (\n        // Special case: force self element to be delegated (useful in conjunction with `delegateClick()` selector syntax function)\n        selector === \"self\" ||\n        // Usual selector match\n        node.matches(selector)) {\n          delegateClick = node;\n          break loop1;\n        }\n\n        // Check for children selector\n        const childrenSelected = node.querySelector(selector);\n        if (childrenSelected) {\n          delegateClick = childrenSelected;\n          break loop1;\n        }\n      }\n    }\n  }\n\n  // We delegate the click to an element, let's check if it is also blocked and listen to unblock\n  if (delegateClick) {\n    const fn = () => setTimeout(() => {\n      delegateClick.click();\n      if (hide) {\n        delegateClick.style.setProperty(\"display\", \"none\", \"important\");\n      }\n      dispatchResizeEvent(element);\n    }, /* Let's delay so we can start after `manipulateDom#customTriggers()` */100);\n    if (delegateClick.hasAttribute(HTML_ATTRIBUTE_COOKIE_IDS)) {\n      delegateClick.addEventListener(OPT_IN_CONTENT_BLOCKER_ALL, fn, {\n        once: true\n      });\n    } else {\n      fn();\n    }\n  }\n  return delegateClick;\n}\nexport { delegateClick };","import { findAndUnblock } from \".\";\n\n/**\n * Use this class as main entry for your unblocking mechanism.\n *\n * **Attention:** Please make sure you start the watcher at time where the `document.readyState`\n * is not already `complete`. Why? At this time, we can make sure that our `jQuery.fn.ready` and\n * other initiators works as expected.\n */\nclass UnblockWatcher {\n  constructor(options) {\n    this.interval = void 0;\n    this.startTimeout = void 0;\n    this.options = void 0;\n    this.options = options;\n  }\n  unblockNow() {\n    return findAndUnblock(this.options);\n  }\n  start() {\n    let mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"unblock\";\n    this.setMode(mode);\n    clearTimeout(this.startTimeout);\n    this.startTimeout = setTimeout(() => {\n      this.unblockNow();\n      clearInterval(this.interval);\n      this.interval = setInterval(this.unblockNow.bind(this), 1000);\n    }, 0);\n  }\n  stop() {\n    clearInterval(this.interval);\n  }\n  setMode(mode) {\n    this.options.mode = mode;\n  }\n}\nexport { UnblockWatcher };","import { detectLastClicked, WaitSynchronousScripts, setCurrentlyInTransaction, createVisual, probablyResetParentContainerForVisual, putScriptInlineToDom, findBlockedNodes, transformInlineStyleRules, transformToOriginalAttribute, HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_BLOCKER_CONNECTED, HTML_ATTRIBUTE_INLINE, HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE, HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER, OPT_IN_CONTENT_BLOCKER_ALL, applyJQueryReadyInitiator, applyJQueryEventInitiator, applyNativeEventListenerInitiator, applyWindowOnloadInitiator, setLastClickedConnectedCounter, OPT_IN_CONTENT_BLOCKER, loadVideoSource, delegateClick, dispatchResizeEvent, isElementInViewport } from \"..\";\n/**\n * Refresh the DOM content depending on acceptance. It covers the following things:\n *\n * - Get all available blocked content\n * - Unblock blocked content depending on acceptance\n * - All other blocked content gets a visual content-blocker (if possible)\n */\nasync function findAndUnblock(_ref) {\n  let {\n    checker,\n    visual,\n    overwriteAttributeValue,\n    transactionClosed,\n    priorityUnblocked,\n    customInitiators,\n    delegateClick: delegateClickSelectors,\n    mode\n  } = _ref;\n  setCurrentlyInTransaction(true);\n  const nodes = findBlockedNodes(checker);\n  transformInlineStyleRules(checker);\n\n  // A collection of all unblocked content for this \"transaction\"; so we can keep track a batch\n  // of unblocked items to keep dependencies intact (e.g. Custom script is blocked and needs Google Maps\n  // API do be available).\n  const unblockedNodes = [];\n  let foundAnyLastClicked;\n  const unmount = element => {\n    visual?.unmount?.(element);\n    probablyResetParentContainerForVisual(element, false);\n    element.remove();\n  };\n\n  // In some cases, through custom event triggers and unblocked scripts, HTML elements could be \"recreated\" in our DOM\n  // without our changes to mark the DOM node as \"complete\". Lets find those nodes and mark them correctly.\n  document.querySelectorAll(`[${HTML_ATTRIBUTE_BLOCKER_ID}]:not(.rcb-content-blocker):not([${HTML_ATTRIBUTE_COOKIE_IDS}]):not([${HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE}])`).forEach(n => n.setAttribute(HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE, \"1\"));\n\n  // Reset all calculated and memorized results of ratio container as the CSS styles could be changed again (`probablyResetParentContainerForVisual`)\n  document.querySelectorAll(`[${HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER}]`).forEach(n => n.removeAttribute(HTML_ATTRIBUTE_RESET_PARENT_IS_RATIO_CONTAINER));\n  let previousPriority;\n  for (const row of nodes) {\n    const {\n      consent,\n      node,\n      isVisualCb,\n      blocker,\n      priority\n    } = row;\n    if (consent) {\n      if (mode !== \"unblock\") {\n        if (visual && isVisualCb) {\n          visual.busy?.(node);\n          continue;\n        }\n        continue;\n      }\n\n      // Got this node already be handled by another call?\n      if (!node.hasAttribute(HTML_ATTRIBUTE_COOKIE_IDS)) {\n        continue;\n      } else if (isVisualCb) {\n        unmount(node);\n        continue;\n      }\n\n      // Allows to execute custom code when a given priority got completed\n      if (previousPriority !== undefined && previousPriority !== priority) {\n        priorityUnblocked?.(unblockedNodes, previousPriority);\n      }\n      previousPriority = priority;\n\n      // Immediate deactivate nodes for future unblocks\n      node.removeAttribute(HTML_ATTRIBUTE_COOKIE_IDS);\n      const connectedBlocker = node.getAttribute(HTML_ATTRIBUTE_BLOCKER_CONNECTED);\n      const isLastClicked = detectLastClicked(node);\n      if (isLastClicked) {\n        foundAnyLastClicked = row;\n      }\n\n      // Remove visual content blocker if not yet removed through above method\n      if (connectedBlocker) {\n        const contentBlockers = Array.prototype.slice.call(document.querySelectorAll(`.rcb-content-blocker[consent-blocker-connected=\"${connectedBlocker}\"]`));\n        for (const contentBlocker of contentBlockers) {\n          unmount(contentBlocker);\n        }\n\n        // Also reset parent containers stylings for nodes which not successfully created\n        // a visual content blocker (e.g. duplicate exists)\n        probablyResetParentContainerForVisual(node, false);\n      }\n\n      // Overwrite global listeners so they get immediate executed\n      const {\n        ownerDocument\n      } = node;\n      const {\n        defaultView\n      } = ownerDocument;\n      applyJQueryReadyInitiator(ownerDocument);\n      applyJQueryEventInitiator(ownerDocument, defaultView, \"load\"); // $(window).load()\n      applyJQueryEventInitiator(ownerDocument, ownerDocument, \"ready\"); // $(document).on(\"ready\")\n      applyNativeEventListenerInitiator(defaultView, \"load\");\n      applyNativeEventListenerInitiator(ownerDocument, \"DOMContentLoaded\");\n      applyNativeEventListenerInitiator(defaultView, \"DOMContentLoaded\");\n      applyWindowOnloadInitiator(ownerDocument);\n      customInitiators?.(ownerDocument, defaultView);\n      const waitSynchronousScripts = new WaitSynchronousScripts();\n\n      // Activate node\n      const hasInlineAttribute = node.hasAttribute(HTML_ATTRIBUTE_INLINE);\n      const {\n        performedClick,\n        workWithNode\n      } = await transformToOriginalAttribute({\n        node,\n        allowClickOverrides: hasInlineAttribute ? false : isLastClicked,\n        onlyModifyAttributes: hasInlineAttribute,\n        setVisualParentIfClassOfParent: visual?.setVisualParentIfClassOfParent,\n        overwriteAttributeValue\n      });\n      if (hasInlineAttribute) {\n        await putScriptInlineToDom(node);\n      } else if (performedClick) {\n        // Avoid auto replays between the same transaction\n        setLastClickedConnectedCounter(undefined);\n      }\n      await Promise.all(waitSynchronousScripts.diff());\n\n      // Allow to detach and attach again to DOM so e.g. `MutationObservers` can handle the DOM as expected\n      if (workWithNode.getAttribute(\"consent-redom\")) {\n        const {\n          parentElement\n        } = workWithNode;\n        if (parentElement) {\n          const idx = [...parentElement.children].indexOf(workWithNode);\n          parentElement.removeChild(workWithNode);\n          insertChildAtIndex(parentElement, workWithNode, idx);\n        }\n      }\n      workWithNode.dispatchEvent(new CustomEvent(OPT_IN_CONTENT_BLOCKER, {\n        detail: {\n          blocker,\n          gotClicked: isLastClicked\n        }\n      }));\n      document.dispatchEvent(new CustomEvent(OPT_IN_CONTENT_BLOCKER, {\n        detail: {\n          blocker,\n          element: workWithNode,\n          gotClicked: isLastClicked\n        }\n      }));\n      if (isLastClicked && delegateClickSelectors && delegateClick(workWithNode, delegateClickSelectors)) {\n        setLastClickedConnectedCounter(undefined);\n      }\n      unblockedNodes.push({\n        ...row,\n        node: workWithNode\n      });\n    } else if (visual && !isVisualCb) {\n      createVisual({\n        node,\n        blocker: blocker,\n        ...visual\n      });\n    }\n  }\n\n  // This transaction is \"complete\"\n  if (unblockedNodes.length) {\n    // Definitely reset now our last clicked counter to avoid double auto plays\n    if (foundAnyLastClicked) {\n      setLastClickedConnectedCounter(undefined);\n    }\n\n    // Do this before the events below to keep the initiators intact (e.g. jQuery.fn.ready)\n    setCurrentlyInTransaction(false);\n    document.dispatchEvent(new CustomEvent(OPT_IN_CONTENT_BLOCKER_ALL, {\n      detail: {\n        unblockedNodes\n      }\n    }));\n    unblockedNodes.forEach(_ref2 => {\n      let {\n        node\n      } = _ref2;\n      node.setAttribute(HTML_ATTRIBUTE_UNBLOCKED_TRANSACTION_COMPLETE, \"1\");\n      node.dispatchEvent(new CustomEvent(OPT_IN_CONTENT_BLOCKER_ALL, {\n        detail: {\n          unblockedNodes\n        }\n      }));\n    });\n\n    // The initiators (e.g. jQuery.ready) are all loaded in a new \"thread\" with a `setTimeout`,\n    // but we need to make sure this event is dispatched afterwards.\n    setTimeout(() => {\n      transactionClosed?.(unblockedNodes);\n      loadVideoSource(unblockedNodes);\n      dispatchResizeEvent();\n\n      // Scroll to unblocked, clicked element automatically\n      if (foundAnyLastClicked && !isElementInViewport(foundAnyLastClicked.node)) {\n        foundAnyLastClicked.node.scrollIntoView({\n          behavior: \"smooth\"\n        });\n      }\n    }, 0);\n  } else {\n    setCurrentlyInTransaction(false);\n  }\n}\nfunction insertChildAtIndex(container, child, index) {\n  if (index >= container.children.length) {\n    container.appendChild(child);\n  } else {\n    container.insertBefore(child, container.children[index]);\n  }\n}\nexport { findAndUnblock };","import { HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_BLOCKER_ID, HTML_ATTRIBUTE_BY, HTML_TAG_CONSENT_SCRIPT } from \"../dom\";\nimport { decideToUnblock } from \".\";\nconst FIND_BLOCKED_NODES_PRIORITY_SCRIPT = 10;\nconst FIND_BLOCKED_NODES_PRIORITY_NON_SCRIPT = 0;\n\n/**\n * Read all HTML elements and check, if they can be enabled by a consent.\n */\nfunction findBlockedNodes(checker) {\n  const result = [];\n  const nodes = Array.prototype.slice.call(document.querySelectorAll(`[${HTML_ATTRIBUTE_COOKIE_IDS}]`));\n  for (const node of nodes) {\n    const {\n      blocker,\n      consent\n    } = decideToUnblock(node.getAttribute(HTML_ATTRIBUTE_BY), node.getAttribute(HTML_ATTRIBUTE_COOKIE_IDS), +node.getAttribute(HTML_ATTRIBUTE_BLOCKER_ID), checker);\n    const isVisualCb = node.className.indexOf(\"rcb-content-blocker\") > -1;\n    result.push({\n      node,\n      consent,\n      isVisualCb,\n      blocker,\n      priority: node.tagName.toLowerCase() === HTML_TAG_CONSENT_SCRIPT ? FIND_BLOCKED_NODES_PRIORITY_SCRIPT : FIND_BLOCKED_NODES_PRIORITY_NON_SCRIPT\n    });\n  }\n\n  // Sort blockable nodes by priority, e.g. always execute scripts at the end\n  result.sort((_ref, _ref2) => {\n    let {\n      priority: a\n    } = _ref;\n    let {\n      priority: b\n    } = _ref2;\n    return a - b;\n  });\n  return result;\n}\nexport { findBlockedNodes, FIND_BLOCKED_NODES_PRIORITY_NON_SCRIPT, FIND_BLOCKED_NODES_PRIORITY_SCRIPT };","/**\n * For a list of unblocked nodes, check if it are a list of `<source`s and load the parent `<video`.\n *\n * @see https://stackoverflow.com/a/18454389/5506547\n */\nfunction loadVideoSource(unblockedNodes) {\n  const foundVideos = unblockedNodes.filter(_ref => {\n    let {\n      node: {\n        nodeName,\n        parentElement\n      }\n    } = _ref;\n    return nodeName === \"SOURCE\" && parentElement.nodeName === \"VIDEO\";\n  }).map(_ref2 => {\n    let {\n      node: {\n        parentElement\n      }\n    } = _ref2;\n    return parentElement;\n  });\n\n  // Unique it to avoid multiple load's\n  foundVideos.filter((value, index) => foundVideos.indexOf(value) === index).forEach(video => video.load());\n}\nexport { loadVideoSource };","import { idx } from \"@devowl-wp/cookie-consent-web-client\";\nconst APIS = [\"youtube\", \"vimeo\"];\n\n/**\n * Overwrite the video API of elementor to make it GDPR compliant.\n *\n * @see https://github.com/elementor/elementor/pull/12567\n */\nfunction overwriteElementorVideoApi() {\n  const {\n    wrapFn,\n    unblock\n  } = window.consentApi;\n  wrapFn({\n    // See https://github.com/elementor/elementor/blob/2ee675caf03908f8c66e16298e923a24b206df54/assets/dev/js/frontend/frontend.js#L180-L183\n    object: () => idx(window, window => window.elementorFrontend),\n    key: \"initOnReadyComponents\"\n  }, _ref => {\n    let {\n      callOriginal,\n      objectResolved\n    } = _ref;\n    // Overwrite onDocumentLoaded to wait for our overwriting mechanism to avoid background videos be loaded before overwriting\n    // See https://github.com/elementor/elementor/blob/2ee675caf03908f8c66e16298e923a24b206df54/assets/dev/js/frontend/frontend.js#L208\n    let promiseOverwrittenResolve;\n    const promiseOverwritten = new Promise(resolve => {\n      promiseOverwrittenResolve = resolve;\n    });\n    wrapFn({\n      object: objectResolved,\n      key: \"onDocumentLoaded\"\n    }, promiseOverwritten);\n\n    // Call original function to feed `elementorFrontend` with `.utils`\n    callOriginal();\n\n    // Overwrite the API functions\n    wrapFn(\n    // See https://github.com/elementor/elementor/tree/2cd3d50d8d87edde9cd3c820f5a0f8b1f2c4f24f/assets/dev/js/frontend/utils/video-api\n    APIS.map(api => ({\n      object: objectResolved.utils[api],\n      key: \"insertAPI\"\n    })), _ref2 => {\n      let {\n        objectResolved,\n        that\n      } = _ref2;\n      that.setSettings(\"isInserted\", true);\n      return unblock(objectResolved.getApiURL());\n    });\n    promiseOverwrittenResolve();\n\n    // We do no longer need to execute the function as we already called it with `callOriginal`\n    return false;\n  });\n}\nexport { overwriteElementorVideoApi };","/* 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 loaded on all pages.\n */\n\nimport { ready } from \"@devowl-wp/cookie-consent-web-client\";\nimport { memorizeJQueryEvent, hijackJqueryFn, hijackJqueryEach, memorizeNativeEvent } from \"@devowl-wp/headless-content-unblocker\";\nimport { overwriteElementorVideoApi, hijackElementorOnInit, listenOptInForContentBlocker } from \"./others\";\nconst hijackJqueryFns = [\"fitVids\", \"mediaelementplayer\", \"prettyPhoto\", \"gMap\", \"wVideo\", \"wMaps\", \"wMapsWithPreload\", \"WLmaps\", \"WLmapsWithPreload\", \"aviaVideoApi\", \"magnificPopup\"];\nconst hijackQueryEach = [\n// https://www.famethemes.com/themes/onepress/\n\".onepress-map\",\n// HivePress\n'div[data-component=\"map\"]',\n// Sober theme\n\".sober-map\"];\nlistenOptInForContentBlocker();\nhijackJqueryFn(hijackJqueryFns);\nhijackJqueryEach(hijackQueryEach);\noverwriteElementorVideoApi();\nhijackElementorOnInit([{\n  className: \"Video\",\n  optIn: ($element, _ref) => {\n    let {\n      gotClicked\n    } = _ref;\n    if (gotClicked) {\n      const settings = $element.data(\"settings\");\n      settings.autoplay = true;\n      $element.data(\"settings\", settings);\n    }\n  }\n}, {\n  className: \"VideoPlaylistHandler\",\n  // Delay execution to avoid layout trashing (tab content does not get full height for embedded video)\n  delay: 1000\n}]);\nready(() => {\n  // jQuery fn cannot be ready yet, let's wait for DOM ready\n  hijackJqueryFn(hijackJqueryFns);\n  hijackJqueryEach(hijackQueryEach);\n  memorizeNativeEvent(window, \"elementor/frontend/init\");\n  memorizeJQueryEvent(document, document, \"tve-dash.load\"); // Thrive Leads\n  memorizeJQueryEvent(document, document, \"mylisting/single:tab-switched\"); // My Listing theme\n  memorizeJQueryEvent(document, document, \"hivepress:init\"); // HivePress\n}, \"interactive\");","import { applyContentBlockRatioCssPlainCss, customUnblockTriggers, getCookieConsentManager } from \"..\";\nimport { getOtherOptionsFromWindow } from \"../../utils\";\nimport { render, unmountComponentAtNode } from \"react-dom\";\nimport { WebsiteBlocker } from \"../../components\";\nimport { applyJQueryEventInitiator, UnblockWatcher } from \"@devowl-wp/headless-content-unblocker\";\nimport { createTcfModelFromCookie, getUserDecision, APPLY_INTERACTIVE_EVENT, OPT_IN_ALL_EVENT, BANNER_PRE_DECISION_SHOW_EVENT, BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT, transformTcfSrc } from \"@devowl-wp/cookie-consent-web-client\";\nimport { getSsrPoweredByLink } from \"@devowl-wp/react-cookie-banner\";\n\n/**\n * Listen to opt-in of all cookies so we can enable the blocked content or\n * create an visual content blocker. It also listens if no / or invalid consent is given.\n */\nfunction listenOptInForContentBlocker() {\n  let acceptedCookies = [];\n  const {\n    setVisualParentIfClassOfParent,\n    multilingualSkipHTMLForTag,\n    dependantVisibilityContainers,\n    blocker: allBlocker,\n    tcf,\n    tcfMetadata,\n    userConsentCookieName,\n    pageRequestUuid4\n  } = getOtherOptionsFromWindow();\n  const watcher = new UnblockWatcher({\n    checker: (by, requiredIds, blockerId) => {\n      const blocker = allBlocker.filter(_ref => {\n        let {\n          id\n        } = _ref;\n        return id === blockerId;\n      })?.[0];\n      let consent = true;\n      if (by === \"services\") {\n        consent = requiredIds.map(requiredId => {\n          for (const {\n            service: {\n              id\n            }\n          } of acceptedCookies) {\n            if (id === requiredId) {\n              return true;\n            }\n          }\n          return false;\n        }).indexOf(false) === -1;\n      }\n      if (process.env.IS_TCF === \"1\" && by === \"tcfVendors\") {\n        const tcfData = createTcfModelFromCookie(tcf, tcfMetadata, getCookieConsentManager().getOption(\"tcfCookieName\"));\n        if (!tcfData) {\n          // No consent given yet, fallback to our decision (e.g. Country Bypass and GDPR does not apply for TCF)\n          const decision = getUserDecision(userConsentCookieName);\n          consent = decision && getOtherOptionsFromWindow().revisionHash === decision.revision;\n        } else {\n          const {\n            model\n          } = tcfData;\n\n          // Map vendor IDs to \"has consent\" and detect if all have consent\n          consent = requiredIds.map(vendorId => model.vendorConsents.has(vendorId) || model.vendorLegitimateInterests.has(vendorId)).indexOf(false) === -1;\n        }\n      }\n      return {\n        consent,\n        blocker\n      };\n    },\n    overwriteAttributeValue: (value, originalAttribute) => {\n      if (process.env.IS_TCF === \"1\" && originalAttribute === \"src\") {\n        const current = createTcfModelFromCookie(tcf, tcfMetadata, getCookieConsentManager().getOption(\"tcfCookieName\"));\n        return transformTcfSrc(value, current?.tcfStringForVendors, current?.gvl);\n      }\n      return value;\n    },\n    transactionClosed: unblockedNodes => {\n      customUnblockTriggers(unblockedNodes);\n    },\n    visual: {\n      setVisualParentIfClassOfParent,\n      dependantVisibilityContainers,\n      unmount: contentBlocker => {\n        unmountComponentAtNode(contentBlocker);\n      },\n      busy: contentBlocker => {\n        contentBlocker.style.pointerEvents = \"none\";\n        contentBlocker.style.opacity = \"0.4\";\n      },\n      mount: _ref2 => {\n        let {\n          container,\n          blocker,\n          onClick,\n          thumbnail,\n          paintMode\n        } = _ref2;\n        // Do not translate this content blocker with an output buffer plugin like TranslatePress or Weglot\n        if (multilingualSkipHTMLForTag) {\n          container.setAttribute(multilingualSkipHTMLForTag, \"1\");\n        }\n        const blockerDef = {\n          ...blocker,\n          visualThumbnail: thumbnail || blocker.visualThumbnail\n        };\n        container.classList.add(\"wp-exclude-emoji\");\n        render(h(WebsiteBlocker, {\n          container: container,\n          poweredLink: getSsrPoweredByLink(`${pageRequestUuid4}-powered-by`),\n          blocker: blockerDef,\n          paintMode: paintMode,\n          setVisualAsLastClickedVisual: onClick\n        }), container);\n      }\n    },\n    customInitiators: (ownerDocument, defaultView) => {\n      // [Plugin comp]: TODO: extract to configuration\n      applyJQueryEventInitiator(ownerDocument, defaultView, \"elementor/frontend/init\");\n      applyJQueryEventInitiator(ownerDocument, defaultView, \"tcb_after_dom_ready\"); // Thrive Architect\n      applyJQueryEventInitiator(ownerDocument, ownerDocument, \"mylisting/single:tab-switched\");\n      applyJQueryEventInitiator(ownerDocument, ownerDocument, \"hivepress:init\"); // HivePress\n      applyJQueryEventInitiator(ownerDocument, ownerDocument, \"tve-dash.load\", {\n        // Mark requests as already sent as blocked modules in Thrive never gets loaded again\n        onBeforeExecute: () => {\n          const {\n            TVE_Dash\n          } = window;\n          TVE_Dash.ajax_sent = true;\n        }\n      }); // Thrive Leads\n    },\n\n    delegateClick: {\n      same: [\n      // Ultimate Video (WP Bakery Page Builder)\n      \".ultv-video__play\",\n      // Elementor\n      \".elementor-custom-embed-image-overlay\",\n      // Themify\n      \".tb_video_overlay\",\n      // Premium Addons for Elementor\n      \".premium-video-box-container\",\n      // https://themeforest.net/item/norebro-creative-multipurpose-wordpress-theme/20834703\n      \".norebro-video-module-sc\",\n      // WP Video Lightbox\n      'a[rel=\"wp-video-lightbox\"]',\n      // WP YouTube Lyte\n      '[id^=\"lyte_\"]',\n      // https://github.com/paulirish/lite-youtube-embed\n      \"lite-youtube\",\n      // https://github.com/luwes/lite-vimeo-embed\n      \"lite-vimeo\",\n      // https://avada.theme-fusion.com/design-elements/lightbox-element/\n      \".awb-lightbox\",\n      // Impreza (WP Bakery Page Builder)\n      \".w-video-h\",\n      // https://themenectar.com/salient/\n      \".nectar_video_lightbox\"],\n      nextSibling: [\n      // JetElements for Element\n      \".jet-video__overlay\",\n      // Elementor\n      \".elementor-custom-embed-image-overlay\",\n      // BeaverBuilder PowerPack Videos\n      \".pp-video-image-overlay\",\n      // Oxygen\n      \".ou-video-image-overlay\"],\n      parentNextSibling: [\n      // Divi Page Builder\n      {\n        selector: \".et_pb_video_overlay\",\n        hide: true\n      }]\n    }\n  });\n  document.addEventListener(APPLY_INTERACTIVE_EVENT, _ref3 => {\n    let {\n      detail: {\n        services\n      }\n    } = _ref3;\n    // Ready to mark visuals as \"loading\" as known accepted cookies are known\n    acceptedCookies = services;\n    watcher.start(\"busy\");\n  });\n  document.addEventListener(BANNER_PRE_DECISION_SHOW_INTERACTIVE_EVENT, () => {\n    // Ready to mount visuals as cookie banner is visible\n    watcher.start(\"skip\");\n  });\n  document.addEventListener(OPT_IN_ALL_EVENT, _ref4 => {\n    let {\n      detail: {\n        services\n      }\n    } = _ref4;\n    acceptedCookies = services;\n    watcher.start();\n  });\n  document.addEventListener(BANNER_PRE_DECISION_SHOW_EVENT, () => {\n    acceptedCookies = [];\n    watcher.start();\n  });\n  applyContentBlockRatioCssPlainCss();\n}\nexport { listenOptInForContentBlocker };","import { MEMORIZE_ELEMENTOR_HANDLER_PROPERTY } from \".\";\n\n/**\n * A content got unblocked, let's run custom triggers on them, for example\n * the Elementor ready hook.\n */\nfunction customUnblockTriggers(nodes) {\n  const {\n    elementorFrontend,\n    TCB_Front,\n    jQuery,\n    showGoogleMap,\n    et_pb_init_modules,\n    et_calculate_fullscreen_section_size,\n    tdYoutubePlayers,\n    tdVimeoPlayers,\n    FWP,\n    avadaLightBoxInitializeLightbox,\n    WPO_LazyLoad,\n    mapsMarkerPro,\n    theme,\n    em_maps_load\n  } = window;\n  let foundWpgb = false;\n\n  // https://www.mapsmarker.com/\n  if (mapsMarkerPro) {\n    Object.keys(mapsMarkerPro).forEach(k => mapsMarkerPro[k].main());\n  }\n\n  // https://ovatheme.com/\n  theme?.initGoogleMap?.();\n\n  // https://wordpress.org/plugins/events-manager/\n  em_maps_load?.();\n  for (const {\n    node\n  } of nodes) {\n    const {\n      className,\n      id\n    } = node;\n\n    // Elementor https://git.io/JsXoh\n    if (!node.hasAttribute(MEMORIZE_ELEMENTOR_HANDLER_PROPERTY)) {\n      // wait for all hook initializers for the ready callback\n      setTimeout(() => elementorFrontend?.elementsHandler.runReadyTrigger(node), 0);\n    }\n\n    // WP Grid Builder\n    if (id.startsWith(\"wpgb-\") || className.startsWith(\"wpgb-\")) {\n      foundWpgb = true;\n    }\n\n    // Thrive Visual Editor\n    if (TCB_Front && jQuery && className.indexOf(\"tcb-yt-bg\") > -1) {\n      const $node = jQuery(node);\n      if ($node.is(\":visible\")) {\n        TCB_Front.playBackgroundYoutube($node);\n      }\n    }\n  }\n\n  // Thrive Architect\n  TCB_Front?.handleIframes(TCB_Front.$body, true);\n\n  // https://avada.theme-fusion.com/design-elements/lightbox-element/\n  avadaLightBoxInitializeLightbox?.();\n\n  // FacetWP\n  if (FWP) {\n    FWP.loaded = false;\n    FWP.refresh();\n  }\n\n  // WP Optimize lazyloading\n  WPO_LazyLoad?.update();\n\n  // https://qodeinteractive.com/wordpress-theme/bridge-creative-multi-purpose-wordpress-theme/\n  showGoogleMap?.();\n\n  // jQuery plugins\n  if (jQuery) {\n    // https://github.com/ressio/lazy-load-xt\n    jQuery(window).lazyLoadXT?.();\n\n    // https://www.checkoutwc.com/documentation/how-to-enable-address-autocomplete/\n    jQuery(document.body).trigger(\"cfw_load_google_autocomplete\");\n  }\n\n  // Divi modules (e.g. Contact Forms and Newsletter signups)\n  if (et_pb_init_modules) {\n    // We need to reset the resize event listener as it results in an \"resize\" loop:\n    // https://wordpress.org/support/topic/ultimatemember-profile-picture-upload-flickering/page/2/#post-15471580\n    jQuery(window).off(\"resize\", et_calculate_fullscreen_section_size);\n    et_pb_init_modules();\n  }\n\n  // tagDiv Composer\n  tdYoutubePlayers?.init();\n  tdVimeoPlayers?.init();\n\n  // WP Grid Builder (the custom event triggers an AJAX request, so do this only if we unblock a WPGB element)\n  try {\n    foundWpgb && window.dispatchEvent(new CustomEvent(\"wpgb.loaded\"));\n  } catch (e) {\n    // Silence is golden.\n  }\n}\nexport { customUnblockTriggers };","import { HTML_ATTRIBUTE_BLOCKER_CONNECTED, HTML_ATTRIBUTE_COOKIE_IDS, HTML_ATTRIBUTE_RESET_PARENT, HTML_ATTRIBUTE_RESET_PARENT_VALUE } from \"@devowl-wp/headless-content-unblocker\";\n\n/**\n * In some cases it is necessary to reset some styles which are not resettable through\n * the `style` attribute. E.g. pseudo-classes like `::before` and `::after`.\n */\nfunction applyContentBlockRatioCssPlainCss() {\n  const element = document.createElement(\"style\");\n  element.style.type = \"text/css\";\n  document.getElementsByTagName(\"head\")[0].appendChild(element);\n  const selectorResetParentAttribute = `${HTML_ATTRIBUTE_RESET_PARENT}=\"${HTML_ATTRIBUTE_RESET_PARENT_VALUE}\"`;\n  const selectorVisibleContentBlocker = `[${HTML_ATTRIBUTE_BLOCKER_CONNECTED}][${HTML_ATTRIBUTE_COOKIE_IDS}]`;\n  const selectorContentBlocker = \".rcb-content-blocker\";\n  const rules = [\n  // Completely deactivate ::before pseudo element\n  ...[\n  // Thrive Architect\n  `.thrv_wrapper[${selectorResetParentAttribute}]`].map(s => `${s}::before{display:none!important;}`),\n  // Completely hide element\n  ...[\n  // JetElements for Elementor\n  `.jet-video[${selectorResetParentAttribute}]>.jet-video__overlay`,\n  // Divi Page Builder\n  `.et_pb_video[${selectorResetParentAttribute}]>.et_pb_video_overlay`,\n  // legacy\n  `${selectorContentBlocker}+div+.et_pb_video_overlay`,\n  // Ultimate Video (WP Bakery Page Builder)\n  `${selectorContentBlocker}+.ultv-video`,\n  // Ultimate Addons for Elementor\n  `${selectorContentBlocker}+.elementor-widget-container`,\n  // Astra Theme (Gutenberg Block)\n  `.wp-block-embed__wrapper[${selectorResetParentAttribute}]>.ast-oembed-container`,\n  // WP Grid Builder\n  `${selectorContentBlocker}+.wpgb-facet`,\n  // tagDiv Composer\n  `${selectorContentBlocker}+.td_wrapper_video_playlist`,\n  // WP YouTube Lyte\n  `${selectorContentBlocker}+div[class^=\"lyte-\"]`,\n  // Elementor video image overlay\n  `.elementor-fit-aspect-ratio[${selectorResetParentAttribute}]>.elementor-custom-embed-image-overlay`,\n  // WP Bakery Salient theme\n  `${selectorContentBlocker}+.vc_column-inner`,\n  // Bold Page Builder\n  `${selectorContentBlocker}+.bt_bb_google_maps`,\n  // Oxygen\n  `.ou-aspect-ratio[${selectorResetParentAttribute}]>.ou-video-image-overlay`].map(s => `${s}{display:none!important;}`),\n  // Completely disable padding-top\n  ...[\n  // Gutenberg\n  `.wp-block-embed__wrapper[${selectorResetParentAttribute}]::before`,\n  // WP Bakery\n  `.wpb_video_widget[${selectorResetParentAttribute}] .wpb_video_wrapper`].map(s => `${s}{padding-top:0!important;}`),\n  // Other rules: If you add a similar one, please merge to an array!\n  // Thrive Architect\n  `.tve_responsive_video_container[${selectorResetParentAttribute}]{padding-bottom:0!important;}`,\n  // Fusion\n  `.fusion-video[${selectorResetParentAttribute}]>div{max-height:none!important;}`,\n  // Reset absolute positioning\n  ...[\n  // X Pro\n  `.x-frame-inner[${selectorResetParentAttribute}]>div.x-video`,\n  // Avia Builder\n  `.avia-video[${selectorResetParentAttribute}] .avia-iframe-wrap`].map(s => `${s}{position:initial!important;}`),\n  // Completely disable background\n  ...[\n  // JetElements for Elementor\n  `.jet-video[${selectorResetParentAttribute}]`].map(s => `${s}{background:none!important;}`),\n  // Completely disable border radius for content blocker within a container which can not be handled correctly\n  ...[\n  // Thrive Architect\n  `.tve_responsive_video_container[${selectorResetParentAttribute}]`].map(s => `${s} .rcb-content-blocker > div > div > div {border-radius:0!important;}`),\n  // Completely grow the content blocker in a flex box container\n  ...[\n  // Elementor\n  `.elementor-widget-wrap>${selectorVisibleContentBlocker}`].map(s => `${s}{flex-grow:1;width:100%;}`)];\n  element.innerHTML = rules.join(\"\");\n}\nexport { applyContentBlockRatioCssPlainCss, HTML_ATTRIBUTE_RESET_PARENT, HTML_ATTRIBUTE_RESET_PARENT_VALUE };","const MEMORIZE_NATIVE_EVENT_PROPERTY = \"rcbNativeEventListenerMemorize\";\n\n/**\n * We listen to the passed event and once that event got triggered, all event registrations\n * afterwards are automatically executed, too. This does not need another trigger again.\n *\n * You need to call this function as early as possible to catch all triggers.\n */\nfunction memorizeNativeEvent(element, eventName) {\n  const memorizeProp = `${MEMORIZE_NATIVE_EVENT_PROPERTY}_${eventName}`;\n  Object.assign(element, {\n    [memorizeProp]: new Promise(resolve => element.addEventListener(eventName, resolve))\n  });\n}\nexport { memorizeNativeEvent, MEMORIZE_NATIVE_EVENT_PROPERTY };"],"names":["ALREADY_OVERWRITTEN_PROPERTY","BLOCKED_ELEMENT_SELECTOR","hijackJqueryFn","fns","$","window","jQuery","fn","jQueryFns","originalFunction","alreadyOverwritten","indexOf","push","staticProps","Object","getOwnPropertyDescriptors","length","name","prototype","_len","arguments","args","Array","_key","this","notBlockedElements","element","get","blockedElements","slice","call","querySelectorAll","matches","Promise","all","map","node","resolve","addEventListener","then","apply","defineProperties","hijackJqueryEach","selectors","each","array","callback","index","HTMLElement","hasAttribute","join","memorizeJQueryEvent","doc","eventName","memorizeProp","defaultView","parentWindow","event","Event","assign","on","MEMORIZE_ELEMENTOR_HANDLER_PROPERTY","overwrite","_ref","delay","optIn","optInAll","onInit","already","$element","attr","_ref2","detail","_ref3","setTimeout","useWaitElementInViewport","ref","inViewport","setInViewport","container","current","IntersectionObserver","entries","observer","forEach","isIntersecting","disconnect","observe","ZINDEX","BlockerHeroInlineStyles","static","blocker","visualContentType","visualThumbnail","width","height","forceRatio","isVisualDarkMode","customCss","antiAdBlocker","style","paddingTop","position","background","className","inset","overflow","undefined","visualBlur","url","backgroundSize","filter","_ref4","hide","titleType","top","left","display","flexDirection","alignItems","justifyContent","boxShadow","_ref5","zIndex","_ref6","isHover","presetId","bodyDesign","acceptAllBg","isVimeo","r","g","b","hexToRgb","cursor","padding","borderRadius","_ref7","scalingFactor","border","boxSizing","borderColor","transition","borderStyle","borderWidth","_ref8","maxWidth","textOverflow","whiteSpace","color","textShadow","fontSize","fontWeight","textAlign","marginBottom","_ref9","isVisible","rect","paddingLeftRight","innerWidth","opacity","pointerEvents","scrollY","scrollX","_ref10","right","bottom","BlockerHeroAudioWaveFromText","text","waveIntegers","numbers","split","c","charCodeAt","toString","Number","n","number","i","Boolean","Math","abs","h","int","key","paddingLeft","marginLeft","BlockerButtonsInlineStyles","framed","decision","acceptAll","layout","acceptAllFontSize","acceptAllTextAlign","acceptAllBorderColor","acceptAllPadding","acceptAllBorderWidth","acceptAllFontColor","acceptAllHoverBg","acceptAllHoverFontColor","acceptAllHoverBorderColor","common","type","bg","hoverBg","fontColor","hoverFontColor","hoverBorderColor","acceptIndividual","acceptIndividualFontSize","acceptIndividualBg","acceptIndividualTextAlign","acceptIndividualBorderColor","acceptIndividualPadding","acceptIndividualBorderWidth","acceptIndividualFontColor","acceptIndividualHoverBg","acceptIndividualHoverFontColor","acceptIndividualHoverBorderColor","textDecoration","backgroundColor","p","outline","BlockerHeroVideoSvgPlayButton","svgProps","fill","version","enableBackground","viewBox","d","BlockerContentInlineStyles","dialogBorderRadius","design","fontInheritFamily","fontFamily","visualType","hasBg","BlockerHeaderInlineStyles","restDesign","headerDesign","inheritBg","borderTop","borderLeft","borderRight","inheritTextAlign","restHeaderDesign","useTextAlign","margin","BlockerHeader","closeIcon","texts","blockerHeadline","headerContainer","header","replace","BlockerBodyInlineStyles","designVersion","showFooter","lineHeight","borderBottom","descriptionInheritFontSize","descriptionFontSize","individualLayout","descriptionTextAlign","BlockerInlineStyles","BlockerButton","inlineStyle","onClick","children","busyOnClick","isBusy","setIsBusy","handleOnClick","e","setIsHover","banner","interactionAttr","onMouseEnter","onMouseLeave","BlockerBody","areCookiesVisible","setCookiesVisible","teachingsSeparatorActive","blockerLoadButton","blockerLinkShowMissing","blockerAcceptInfo","services","consent","groups","onUnblock","productionNotice","isConsentRecord","i18n","close","missing","allConsentCookies","cookies","values","items","cookie","id","description","teachings","useCommonTeachings","disableDataProcessingInUnsafeCountries","ePrivacyUSA","disableListServicesNotice","bodyContainer","body","topSide","dangerouslySetInnerHTML","__html","teaching","maxHeight","overflowY","paddingRight","cookieScroll","checked","disabled","bottomSide","BlockerFooterInlineStyles","footerDesign","BlockerFooter","rows","links","render","renderLinks","useCommonFooterLink","putPoweredByLinkInRow","footerContainer","footer","BlockerTextContainer","paintMode","isBackgroundVisible","inner","innerBackground","content","headerSeparator","footerSeparator","BlockerHeroContainer","visualHeroButtonText","isBtnHover","setBtnHover","isDefaultBlockerVisible","setIsDefaultBlockerVisible","title","audioWaveText","overlayRef","defaultBlockerContainerRef","handleOutsideClick","target","hideTitle","showPlayButton","btnAttributes","preventDefault","stopPropagation","aspectRatioWrapper","aspectRatioBackgroundWrapper","aspectRatioBackground","aspectRatioWholeClickable","aspectRatioContainer","hero","playButtonWrapper","playButton","renderInContainer","document","defaultBlockerOverlay","defaultBlockerContainer","tooltipText","thickness","Blocker","recorder","restart","toggle","WebsiteBlocker","poweredLink","setVisualAsLastClickedVisual","customizeValuesBanner","legal","saveButton","group","individualTexts","pageIdToPermalink","consentForwardingExternalHosts","isTcf","isEPrivacyUSA","isAgeNotice","isListServicesNotice","userConsentCookieName","bannerDesignVersion","bannerI18n","isPro","isLicensed","isDevLicense","affiliate","isCurrentlyInTranslationEditorPreview","pageByIdUrl","getOtherOptionsFromWindow","userDecision","getUserDecision","overwriteDesign","contextValue","ageNotice","listServicesNotice","keepVariablesInTexts","async","recorderJsonString","essentialGroup","tcf","tcfMetadata","blockerId","currentDecision","essentialGroupObj","slug","newConsent","groupId","cookieId","applyConsent","buttonClicked","blockerThumbnail","embedId","fileMd5","tcfString","uiView","adjustConsentComingFromContentBlocker","JSON","stringify","createReplay","usePlainCss","BlockerContext","Provider","value","currentlyInTransaction","setCurrentlyInTransaction","state","isCurrentlyInTransaction","decideToUnblock","by","requiredIds","checker","putStyleInlineToDom","getAttribute","removeAttribute","inlineStyleHtml","outerHTML","substr","RegExp","parentElement","replaceChild","DOMParser","parseFromString","querySelector","transformInlineStyle","noConsentCount","m","urlPrefix","maskedUrl","requiredString","base64EncodedUrl","htmlDecode","atob","calculateScore","rule","stackSize","property","specificity","selectorText","getPropertyPriority","priorityByRule","selector","iterateRules","rules","scoresPool","ruleIdx","CSSStyleRule","matchingSelector","resolveScorePool","scores","styleSheets","styleSheetIdx","styleSheet","cssRules","iterateStylesheets","inline","String","match","calculateInlineScore","sort","a","sortScores","KNOWN_RATIO_CLASSES","RESET_STYLE_IMPORTANT","RESET_STYLE","MEMORIZE_OLD_STYLE","isPotentialVisualWithinResponsiveContainer","parentComputedStyle","getComputedStyle","test","nodePosition","parentPosition","clientWidth","clientHeight","calculatedRatio","parents","isKnownRatioClass","probablyResetParentContainerForVisual","contentBlocker","iterateParents","parent","isRatioContainer","setAttribute","previouslyStrictHidden","setProperty","isElementInViewport","el","partial","getBoundingClientRect","innerHeight","horInView","documentElement","CHILDREN_SELECTOR_PREFIX","findVisualParent","setVisualParentIfClassOfParent","forceVisualParent","tagName","toLowerCase","useVisualParent","def","isNaN","startsWith","elem","getPreviousVisibleElement","rateAsVisible","previousVisible","result","previousElementSibling","prevAll","offsetParent","isHtmlNodeContentBlocker","mapIgnoreInvisibleAndUsePreviousVisible","lastClickedConnectedCounter","connectedCounterPreserve","createVisual","dependantVisibilityContainers","mount","connectedCounter","shouldForceToShowVisual","shouldForceToShowVisualBlocker","isVisual","isPositioned","isNotInContent","head","isAlreadyConnected","createBefore","visualParentMode","fnStrictHide","reason","getPropertyValue","dependantContainers","foundDuplicate","firstParentPreviousElementSibling","secondParentPreviousElementSibling","possibleDuplicates","lastElementChild","possibleDuplicate","connected","blockedContentOfPossibleDuplicate","findPreviousVisibleDuplicate","thumbnail","createElement","parentNode","insertBefore","parse","nestedThumbnailNode","createVisualContainer","mountVisualContainer","setLastClickedConnectedCounter","blockedNode","requestIdleCallback","detectLastClicked","connectedBlocker","consentId","consentBy","isLastClicked","parentGotClicked","dispatchInitiatorExecution","dispatchEvent","CustomEvent","overwritten","applyJQueryReadyInitiator","originalFn","ready","executeHandle","afterExecution","executed","OVERWRITE_PROPERTY","applyJQueryEventInitiator","onBeforeExecute","overwriteProp","memorizeNativeProp","add","types","handler","data","useTypes","isArray","memorizeExecutionPromise","inTransaction","eventParameters","isRequestedEventName","applyNativeEventListenerInitiator","rest","bubbles","cancelable","applyWindowOnloadInitiator","w","defineProperty","set","newValue","enumerable","configurable","SCRIPTS_SELECTOR","WaitSynchronousScripts","constructor","scriptsBefore","diff","script","performance","getEntriesByType","src","ensureScriptWrapper","html","referenceNode","putHtmlCodeToDom","tagTransformationCounter","transformToOriginalAttribute","allowClickOverrides","onlyModifyAttributes","overwriteAttributeValue","performedClick","isScript","workWithNode","cloneNode","attribute","getAttributeNames","endsWith","originalAttribute","overwriteClickAttribute","hasOverwriteClickAttribute","unblockedNodes","click","dispatchResizeEvent","customElements","originalTag","substring","removeProperty","visualParent","putScriptInlineToDom","isInHead","inlineScript","inlineScriptHtml","delegateClick","same","nextSibling","parentNextSibling","delegateClickAttribute","nextElementSibling","parentElementNextSibling","loop1","delegateClickElements","delegateClickElement","childrenSelected","once","UnblockWatcher","options","interval","startTimeout","unblockNow","visual","transactionClosed","priorityUnblocked","customInitiators","delegateClickSelectors","mode","nodes","isVisualCb","priority","findBlockedNodes","isFirstTransition","innerHTML","newInnerHTML","transformInlineStyleRules","foundAnyLastClicked","unmount","remove","previousPriority","row","busy","contentBlockers","ownerDocument","waitSynchronousScripts","hasInlineAttribute","idx","removeChild","child","appendChild","gotClicked","foundVideos","nodeName","video","load","loadVideoSource","scrollIntoView","behavior","findAndUnblock","start","setMode","clearTimeout","clearInterval","setInterval","bind","stop","APIS","hijackJqueryFns","hijackQueryEach","acceptedCookies","multilingualSkipHTMLForTag","allBlocker","pageRequestUuid4","watcher","requiredId","service","elementorFrontend","TCB_Front","showGoogleMap","et_pb_init_modules","et_calculate_fullscreen_section_size","tdYoutubePlayers","tdVimeoPlayers","FWP","avadaLightBoxInitializeLightbox","WPO_LazyLoad","mapsMarkerPro","theme","em_maps_load","foundWpgb","keys","k","main","initGoogleMap","elementsHandler","runReadyTrigger","$node","is","playBackgroundYoutube","handleIframes","$body","loaded","refresh","update","lazyLoadXT","trigger","off","init","customUnblockTriggers","blockerDef","classList","getSsrPoweredByLink","TVE_Dash","ajax_sent","getElementsByTagName","selectorResetParentAttribute","selectorVisibleContentBlocker","s","applyContentBlockRatioCssPlainCss","listenOptInForContentBlocker","wrapFn","unblock","consentApi","object","promiseOverwrittenResolve","callOriginal","objectResolved","promiseOverwritten","api","utils","that","setSettings","getApiURL","overwriteElementorVideoApi","handlers","handlerClass","hijackElementorOnInit","settings","autoplay","memorizeNativeEvent"],"sourceRoot":""}