{"version":3,"file":"somosus-ngx-cookie-consent.mjs","sources":["../../../projects/ngx-cookie-consent/src/lib/services/ngx-cookie/ngx-cookie.service.ts","../../../projects/ngx-cookie-consent/src/lib/config/ngx-cookie-consent-config.service.ts","../../../projects/ngx-cookie-consent/src/lib/services/ngx-cookie-manager/ngx-cookie-manager.service.ts","../../../projects/ngx-cookie-consent/src/lib/directives/if-consent/if-consent.directive.ts","../../../projects/ngx-cookie-consent/src/lib/languages/en.language.ts","../../../projects/ngx-cookie-consent/src/lib/languages/de.language.ts","../../../projects/ngx-cookie-consent/src/lib/languages/it.language.ts","../../../projects/ngx-cookie-consent/src/lib/languages/pt-br.language.ts","../../../projects/ngx-cookie-consent/src/lib/languages/index.ts","../../../projects/ngx-cookie-consent/src/lib/services/ngx-language/ngx-language.service.ts","../../../projects/ngx-cookie-consent/src/lib/services/ngx-cookie-consent/ngx-cookie-consent.service.ts","../../../projects/ngx-cookie-consent/src/lib/ngx-cookie-consent.component.ts","../../../projects/ngx-cookie-consent/src/lib/ngx-cookie-consent.component.html","../../../projects/ngx-cookie-consent/src/lib/ngx-cookie-consent.module.ts","../../../projects/ngx-cookie-consent/src/public-api.ts","../../../projects/ngx-cookie-consent/src/somosus-ngx-cookie-consent.ts"],"sourcesContent":["import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxCookieService {\n\n  private readonly documentIsAccessible: boolean;\n\n  constructor(\n    @Inject(DOCUMENT) private document: any,\n    @Inject(PLATFORM_ID) private platformId: InjectionToken<Object>,\n  ) {\n    this.documentIsAccessible = isPlatformBrowser(this.platformId);\n  }\n\n  /**\n     * @param name Cookie name\n     */\n   check(name: string): boolean {\n      if (!this.documentIsAccessible) {\n          return false;\n      }\n\n      name = encodeURIComponent(name);\n      const regExp = this.getCookieRegExp(name);\n\n      return regExp.test(this.document.cookie);\n  }\n\n  /**\n   * @param name Cookie name\n   */\n  get(name: string): string|boolean|undefined {\n      if (this.documentIsAccessible && this.check(name)) {\n          name = encodeURIComponent(name);\n\n          const regExp: RegExp = this.getCookieRegExp(name);\n          const result: RegExpExecArray|null = regExp.exec(this.document.cookie);\n\n          if (result === null) {\n              return false;\n          }\n\n          const returnValue = decodeURIComponent(result[1]);\n\n          if (returnValue.toLowerCase() === 'true') {\n              return true;\n          }\n\n          if (returnValue.toLowerCase() === 'false') {\n              return false;\n          }\n\n          return decodeURIComponent(result[1]);\n      }\n\n      return undefined;\n  }\n\n  set(name: string, value: string|boolean, expiringDays: number = 1, path: string = '/'): void {\n      if (!this.documentIsAccessible) {\n          return;\n      }\n\n      let cookieString: string = encodeURIComponent( name ) + '=' + encodeURIComponent( value ) + ';';\n\n      const dateExpires: Date = new Date( new Date().getTime() + expiringDays * 86400000);\n      cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n      cookieString += 'path=' + path + ';';\n      cookieString += 'SameSite=None; Secure;';\n\n      this.document.cookie = cookieString;\n  }\n\n  delete(name: string, path: string = '/'): void {\n      if (!this.documentIsAccessible) {\n          return;\n      }\n\n      let cookieString: string = encodeURIComponent( name ) + '=;';\n\n      cookieString += 'expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n      cookieString += 'path=' + path + ';';\n      cookieString += 'SameSite=None; Secure;';\n\n      this.document.cookie = cookieString;\n  }\n\n  /**\n   * @param name Cookie name\n   */\n  private getCookieRegExp(name: string): RegExp {\n      return new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { CookieItem } from './cookie-item.interface';\nimport { TranslatedText } from './translated-text.type';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class NgxCookieConsentConfigService {\n    privacyPolicyUrl?: string | TranslatedText = '#';\n    imprintUrl?: string | TranslatedText = '#';\n    defaultLanguage?: string = 'en';\n    availableLanguages?: string[] = ['en', 'de', 'it', 'ptbr'];\n    showLanguageSwitcher?: boolean = true;\n    showBadgeOpener?: boolean = true;\n    openerPosition?: 'left-top' | 'right-top' | 'left-bottom' | 'right-bottom' =\n        'left-bottom';\n    customClass?: string = '';\n    cookiePrefix?: string = 'cookieconsent_';\n    cookieExpiryDays?: number = 365;\n    showCookieDetails?: boolean = false;\n    showFunctionalCookies?: boolean = true;\n    functionalCookies?: CookieItem[] = [];\n    showMarketingCookies?: boolean = true;\n    marketingCookies?: CookieItem[] = [];\n    showEssentialCookies?: boolean = true;\n    essentialCookies?: CookieItem[] = [];\n    showOtherTools?: boolean = true;\n    otherTools?: CookieItem[] = [];\n    excludeRoutes?: string[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NgxCookieService } from '../ngx-cookie/ngx-cookie.service';\nimport { NgxCookieConsentConfigService } from '../../config/ngx-cookie-consent-config.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxCookieManagerService {\n    cookieUpdated$ = new Subject<{name: string, state: boolean}>();\n\n    constructor(\n        private cookieService: NgxCookieService,\n        private cookieConsentConfig: NgxCookieConsentConfigService,\n    ) { }\n\n    private getConfig(key: string): any {\n        return (this.cookieConsentConfig as any)[key];\n    }\n\n    private getPrefixedCookieName(name: string): string {\n        return this.getConfig('cookiePrefix') + name;\n    }\n\n    getCookie(cookieName: string): boolean {\n        return this.cookieService.get(this.getPrefixedCookieName(cookieName)) === true;\n    }\n}\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { NgxCookieManagerService } from '../../services/ngx-cookie-manager/ngx-cookie-manager.service';\nimport { filter } from 'rxjs';\n\n@Directive({\n  selector: '[ngxIfConsent]'\n})\nexport class IfConsentDirective implements OnInit, OnDestroy {\n    private cookieName!: string;\n    private subscription: any;\n\n    private show = false;\n    @Input() set ngxIfConsent(name: string) {\n        this.cookieName = name;\n        this.initSubscription();\n    }\n\n    constructor(\n        private cookieManager: NgxCookieManagerService,\n        private templateRef: TemplateRef<unknown>,\n        private vcr: ViewContainerRef\n    ) {}\n\n    ngOnInit(): void {\n        this.loadSavedValue();\n    }\n\n    ngOnDestroy(): void {\n        this.removeSubscription();\n    }\n\n    private displayTemplate() {\n        this.vcr.clear();\n        if (this.show) {\n            this.vcr.createEmbeddedView(this.templateRef);\n        }\n    }\n\n    private initSubscription() {\n        this.subscription = this.cookieManager.cookieUpdated$.pipe(\n            filter((cookie) => cookie.name === this.cookieName)\n        ).subscribe((cookie) => {\n            this.show = cookie.state;\n            this.displayTemplate();\n        });\n    }\n\n\n    private removeSubscription() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n    private loadSavedValue() {\n        this.show = this.cookieManager.getCookie(this.cookieName);\n        this.displayTemplate();\n    }\n}\n","export const lang_en: { [key: string]: string } = {\n    language: 'English',\n    title: 'We value your privacy',\n    text: 'We and our partners use technologies such as cookies or targeting and process personal data such as IP address or browser information to personalise the ads we display. These technologies may access your device and help us show you more relevant ads and improve your website experience. We also use these technologies to measure results or better target our website content. Because we value your privacy, we hereby ask for your consent to use the following technologies.',\n    right_bottom: 'You can change/revoke this at any time later by clicking on the Settings button in the bottom right corner of the page.',\n    left_bottom: 'You can change/revoke this at any time later by clicking on the Settings button in the bottom left corner of the page.',\n    right_top: 'You can change/revoke this at any time later by clicking on the Settings button in the top right corner of the page.',\n    left_top: 'You can change/revoke this at any time later by clicking on the Settings button in the top left corner of the page.',\n    privacy_text: 'Privacy Policy',\n    imprint_text: 'Imprint',\n    privacy_settings_text: 'Privacy Settings',\n    privacy_settings_title: 'Privacy Settings',\n    privacy_settings_title_text: 'This tool helps you to select and deactivate various cookies, trackers and analysis tools used on this website.',\n    functional_title: \"Functional\",\n    functional_description: 'These cookies enable us to analyze website usage so that we can measure and improve its performance.',\n    marketing_title: \"Marketing\",\n    marketing_description: 'Marketing cookies are usually used to show you advertisements that meet your interests. When you visit another website, your browser\\'s cookie is recognized and selected ads are displayed to you based on the information stored in this cookie (art. 6 par. 1 p. 1 a) GDPR).',\n    essential_title: \"Essential\",\n    essential_description: 'These cookies are required for the basic functions of the website.',\n    other_title: \"Other\",\n    other_description: 'Within our organization we use other tools for data processing. These are also listed here for informational purposes. However, data is collected only after a certain interaction, for example, when you agree on a demo. If you wish to object to data processing by these processors, please contact us.',\n    save_text: 'Save',\n    accept_text: 'Accept and close',\n    decline_text: 'Deny',\n    choose_language_text: 'Choose language',\n    back_text: 'Back',\n    cookie_name: 'Name',\n    cookie_description: 'Description',\n    cookie_duration: 'Duration',\n};\n","export const lang_de: { [key: string]: string } = {\n    language: 'Deutsch',\n    title: 'Wir schätzen Ihre Privatsphäre',\n    text: 'Wir und unsere Partner verwenden Technologien wie Cookies oder Targeting und verarbeiten personenbezogene Daten wie IP-Adresse oder Browserinformationen, um die angezeigte Werbung zu personalisieren. Diese Technologien können auf Ihr Gerät zugreifen und helfen uns, Ihnen relevantere Anzeigen zu zeigen und Ihre Webseitenerfahrung zu verbessern. Wir nutzen diese Technologien zudem, um Ergebnisse zu messen oder unsere Website-Inhalte besser auszurichten. Da wir Ihre Privatsphäre schätzen, bitten wir Sie hiermit um Ihre Einwilligung, die folgenden Technologien zu verwenden.',\n    right_bottom: 'Sie können diese jederzeit später ändern/widerrufen, indem Sie auf die Schaltfläche Einstellungen in der rechten unteren Ecke der Seite klicken.',\n    left_bottom: 'Sie können diese jederzeit später ändern/widerrufen, indem Sie auf die Schaltfläche Einstellungen in der linken unteren Ecke der Seite klicken.',\n    right_top: 'Sie können diese jederzeit später ändern/widerrufen, indem Sie auf die Schaltfläche Einstellungen in der rechten oberen Ecke der Seite klicken.',\n    left_top: 'Sie können diese jederzeit später ändern/widerrufen, indem Sie auf die Schaltfläche Einstellungen in der linken oberen Ecke der Seite klicken.',\n    privacy_text: 'Datenschutzbestimmungen',\n    imprint_text: 'Impressum',\n    privacy_settings_text: 'Datenschutzeinstellungen',\n    privacy_settings_title: 'Datenschutz​einstellungen',\n    privacy_settings_title_text: 'Mit diesem Tool können Sie verschiedene Cookies, Tracker und Analysetools, die auf dieser Website verwendet werden, auswählen und deaktivieren.',\n    functional_title: 'Funktional',\n    functional_description: 'Diese Cookies ermöglichen es uns, die Nutzung der Website zu analysieren, so dass wir ihre Leistung messen und verbessern können.',\n    marketing_title: 'Marketing',\n    marketing_description: 'Marketing-Cookies werden in der Regel verwendet, um Ihnen Werbung zu zeigen, die Ihren Interessen entspricht. Wenn Sie eine andere Website besuchen, wird das Cookie Ihres Browsers erkannt, und Ihnen wird auf der Grundlage der in diesem Cookie gespeicherten Informationen ausgewählte Werbung angezeigt (Art. 6 Abs. 1 S. 1 a) DSGVO).',\n    essential_title: 'Erforderlich',\n    essential_description: 'Diese Cookies sind für die Grundfunktionen der Website erforderlich.',\n    other_title: 'Andere',\n    other_description: 'Innerhalb unserer Organisation verwenden wir andere Tools für die Datenverarbeitung. Diese sind hier ebenfalls zu Informationszwecken aufgeführt. Die Daten werden jedoch erst nach einer bestimmten Interaktion erhoben, zum Beispiel wenn Sie einer Demo zustimmen. Wenn Sie der Datenverarbeitung durch diese Verarbeiter widersprechen möchten, wenden Sie sich bitte an uns.',\n    save_text: 'Speichern',\n    accept_text: 'Akzeptieren und schliessen',\n    decline_text: 'Ablehnen',\n    choose_language_text: 'Sprache wählen',\n    back_text: 'Zurück',\n    cookie_name: 'Name',\n    cookie_description: 'Beschreibung',\n    cookie_duration: 'Dauer',\n};\n","export const lang_it: { [key: string]: string } = {\n    language: 'Italiano',\n    title: 'Teniamo alla vostra privacy',\n    text: 'Noi e i nostri partner utilizziamo tecnologie come i cookie o il targeting ed elaboriamo dati personali come l\\'indirizzo IP o le informazioni sul browser per personalizzare gli annunci che visualizziamo. Queste tecnologie possono accedere al vostro dispositivo e aiutarci a mostrarvi annunci più pertinenti e a migliorare la vostra esperienza sul sito web. Utilizziamo queste tecnologie anche per misurare i risultati o per indirizzare meglio i contenuti del nostro sito web. Poiché teniamo alla vostra privacy, con la presente chiediamo il vostro consenso all\\'utilizzo delle seguenti tecnologie.',\n    right_bottom: 'È possibile modificare/revocare tale consenso in qualsiasi momento facendo clic sul pulsante Impostazioni nell\\'angolo in basso a destra della pagina.',\n    left_bottom: 'È possibile modificare/revocare tale consenso in qualsiasi momento facendo clic sul pulsante Impostazioni nell\\'angolo in basso a sinistra della pagina.',\n    right_top: 'È possibile modificare/revocare tale consenso in qualsiasi momento facendo clic sul pulsante Impostazioni nell\\'angolo in alto a destra della pagina.',\n    left_top: 'È possibile modificare/revocare tale consenso in qualsiasi momento facendo clic sul pulsante Impostazioni nell\\'angolo in alto a sinistra della pagina.',\n    privacy_text: 'Politica sulla privacy',\n    imprint_text: 'Imprint',\n    privacy_settings_text: 'Impostazioni sulla privacy',\n    privacy_settings_title: 'Impostazioni sulla privacy',\n    privacy_settings_title_text: 'Questo menu vi aiuta a selezionare e disattivare i vari cookie, tracker e strumenti di analisi utilizzati su questo sito web.',\n    functional_title: \"Funzionali\",\n    functional_description: 'Questi cookie ci consentono di analizzare l\\'utilizzo del sito web per poterne misurare e migliorare le prestazioni.',\n    marketing_title: \"Marketing\",\n    marketing_description: 'I cookie di marketing sono solitamente utilizzati per mostrarvi pubblicità che rispondono ai vostri interessi. Quando visitate un altro sito web, il cookie del vostro browser viene riconosciuto e vi vengono mostrati annunci selezionati in base alle informazioni memorizzate in questo cookie (art. 6 par. 1 p. 1 a) GDPR).',\n    essential_title: \"Essenziali\",\n    essential_description: 'Questi cookie sono necessari per le funzioni di base del sito web.',\n    other_title: \"Altri\",\n    other_description: 'All\\'interno della nostra organizzazione utilizziamo altri strumenti per l\\'elaborazione dei dati. Anche questi sono elencati qui a scopo informativo. Tuttavia, i dati vengono raccolti solo dopo una determinata interazione, ad esempio quando si richiede una demo. Se desiderate opporvi al trattamento dei dati da parte di questi elaboratori, contattateci.',\n    save_text: 'Salva',\n    accept_text: 'Accetta e chiudi',\n    decline_text: 'Rifiuta',\n    choose_language_text: 'Seleziona una lingua',\n    back_text: 'Indietro',\n    cookie_name: 'Nome',\n    cookie_description: 'Descrizione',\n    cookie_duration: 'Durata',\n};\n","export const lang_ptbr: { [key: string]: string } = {\n    language: 'Português',\n    title: 'Nós valorizamos sua privacidade',\n    text: 'Nós e nossos parceiros usamos tecnologias como cookies ou direcionamento e processamos dados pessoais como endereço IP ou informações do navegador para personalizar os anúncios que exibimos. Essas tecnologias podem acessar seu dispositivo e nos ajudar a mostrar anúncios mais relevantes e melhorar sua experiência no site. Também usamos essas tecnologias para medir resultados ou direcionar melhor o conteúdo do nosso site. Como valorizamos sua privacidade, pedimos seu consentimento para usar as seguintes tecnologias.',\n    right_bottom:\n        'Você pode alterar/revogar isso a qualquer momento clicando no botão Configurações no canto inferior direito da página.',\n    left_bottom:\n        'Você pode alterar/revogar isso a qualquer momento clicando no botão Configurações no canto inferior esquerdo da página.',\n    right_top:\n        'Você pode alterar/revogar isso a qualquer momento clicando no botão Configurações no canto superior direito da página.',\n    left_top:\n        'Você pode alterar/revogar isso a qualquer momento clicando no botão Configurações no canto superior esquerdo da página.',\n    privacy_text: 'Política de Privacidade',\n    imprint_text: 'Dados da Empresa',\n    privacy_settings_text: 'Configuração de Privacidade',\n    privacy_settings_title: 'Configuração de Privacidade',\n    privacy_settings_title_text:\n        'Esta ferramenta ajuda você a selecionar e desativar vários cookies, rastreadores e ferramentas de análise usadas neste site.',\n    functional_title: 'Funcional',\n    functional_description:\n        'Esses cookies nos permitem analisar o uso do site para que possamos medir e melhorar seu desempenho.',\n    marketing_title: 'Marketing',\n    marketing_description:\n        'Os cookies de marketing geralmente são usados para mostrar anúncios que atendem aos seus interesses. Quando você visita outro site, o cookie do seu navegador é reconhecido e os anúncios selecionados são exibidos para você com base nas informações armazenadas neste cookie (art. 6 par. 1 p. 1 a) GDPR).',\n    essential_title: 'Essencial',\n    essential_description:\n        'Esses cookies são necessários para as funções básicas do site.',\n    other_title: 'Outros',\n    other_description:\n        'Dentro de nossa organização, usamos outras ferramentas para processamento de dados. Estes também estão listados aqui para fins informativos. No entanto, os dados são coletados somente após uma determinada interação, por exemplo, quando você concorda com uma demonstração. Se você deseja se opor ao processamento de dados por esses processadores, entre em contato conosco.',\n    save_text: 'Salvar',\n    accept_text: 'Aceitar e fechar',\n    decline_text: 'Recusar',\n    choose_language_text: 'Selecionar linguagem',\n    back_text: 'Voltar',\n    cookie_name: 'Nome',\n    cookie_description: 'Descrição',\n    cookie_duration: 'Duração',\n};\n","// export all available languages\nexport { lang_en } from './en.language';\nexport { lang_de } from './de.language';\nexport { lang_it } from './it.language';\nexport { lang_ptbr } from './pt-br.language';\n","import { Injectable } from '@angular/core';\nimport * as languages from './../../languages';\nimport { NgxCookieConsentConfigService } from '../../config/ngx-cookie-consent-config.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NgxLanguageService {\n    translationKey = 'lang_en';\n    translations: any;\n\n    constructor(private config: NgxCookieConsentConfigService) {\n        this.translationKey = 'lang_' + this.config.defaultLanguage;\n        this.translations = languages;\n    }\n\n\n    getTranslation(key: string, translationLang?: string): string {\n        const sanitizedKey = key.replace('-', '_');\n\n        if (translationLang) {\n            return this.translations[`lang_${translationLang}`][sanitizedKey] || '';\n        }\n\n        return this.translations[this.translationKey][sanitizedKey] || '';\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { NgxCookieConsentConfigService } from '../../config/ngx-cookie-consent-config.service';\nimport { NgxCookieService } from '../ngx-cookie/ngx-cookie.service';\nimport { NgxLanguageService } from '../ngx-language/ngx-language.service';\nimport { NgxCookieManagerService } from '../ngx-cookie-manager/ngx-cookie-manager.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NgxCookieConsentService {\n    activeLang = 'en';\n\n    constructor(\n        private cookieManagerService: NgxCookieManagerService,\n        private cookieService: NgxCookieService,\n        private cookieConsentConfig: NgxCookieConsentConfigService,\n        private languageService: NgxLanguageService\n    ) {\n        this.activeLang = this.getConfig('defaultLanguage');\n    }\n\n    getTranslation(key: string, translationLang?: string): string {\n        const lang = translationLang || this.activeLang;\n        return this.languageService.getTranslation(key, lang);\n    }\n\n    getConfig(key: string): any {\n        return (this.cookieConsentConfig as any)[key];\n    }\n\n    getPrefixedCookieName(name: string): string {\n        return this.getConfig('cookiePrefix') + name;\n    }\n\n    getCookieFields(): {functional: {key: string, selected: boolean}[], marketing: {key: string, selected: boolean}[]} {\n        const functionalCookies = this.getCookiesByCategory('functionalCookies');\n        const marketingCookies = this.getCookiesByCategory('marketingCookies');\n\n        return {functional: functionalCookies, marketing: marketingCookies};\n    }\n\n    setLanguage(lang: string): void {\n        this.activeLang = lang;\n        this.setConfig('defaultLanguage', lang);\n    }\n\n    setConfig(key: string, value: string): void {\n        (this.cookieConsentConfig as any)[key] = value;\n    }\n\n    setCookieConsentStatus(status: boolean): void {\n        this.cookieService.set(this.getPrefixedCookieName('status'), status, this.getConfig('cookieExpiryDays'));\n        this.cookieManagerService.cookieUpdated$.next({\n            name: 'status',\n            state: status\n        });\n    }\n\n    setCookieConsentStatusForCookie(name: string, status: boolean): void {\n        this.cookieManagerService.cookieUpdated$.next({\n            name,\n            state: status\n        });\n\n        if (!status) {\n            return this.cookieService.delete(this.getPrefixedCookieName(name));\n        }\n\n        this.cookieService.set(this.getPrefixedCookieName(name), status, this.getConfig('cookieExpiryDays'));\n    }\n\n    shouldDisplayCookieConsent(): boolean {\n        return !this.cookieService.get(this.getPrefixedCookieName('status'));\n    }\n\n    acceptAllCookies(): void {\n        const cookies = [\n            ...this.getConfig('functionalCookies').map((cookie: any) => cookie.key),\n            ...this.getConfig('marketingCookies').map((cookie: any) => cookie.key),\n        ];\n\n        cookies.forEach((cookie: string) => {\n            this.setCookieConsentStatusForCookie(cookie, true);\n        });\n\n        this.setCookieConsentStatus(true);\n    }\n\n    denyAllCookies(): void {\n        const cookies = [\n            ...this.getConfig('functionalCookies').map((cookie: any) => cookie.key),\n            ...this.getConfig('marketingCookies').map((cookie: any) => cookie.key),\n        ];\n\n        cookies.forEach((cookie: string) => {\n            this.setCookieConsentStatusForCookie(cookie, false);\n        });\n\n        this.setCookieConsentStatus(true);\n    }\n\n    saveSomeCookies(cookies: { functional: any, marketing: any } ): void {\n        Object.keys(cookies.functional).forEach((cookie: any) => {\n            this.setCookieConsentStatusForCookie(cookie, cookies.functional[cookie]);\n        });\n\n        Object.keys(cookies.marketing).forEach((cookie: any) => {\n            this.setCookieConsentStatusForCookie(cookie, cookies.marketing[cookie]);\n        });\n\n        this.setCookieConsentStatus(true);\n    }\n\n    private getCookiesByCategory(category: string): {key: string, selected: boolean}[] {\n        return this.getConfig(category).map((cookie: any) => {\n            const cookieKey = cookie.key;\n            const cookieState = this.cookieService.get(this.getPrefixedCookieName(cookie.key)) === true;\n\n            return {\n                key: cookieKey,\n                selected: cookieState\n            };\n        });\n    }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgxCookieConsentService } from './services/ngx-cookie-consent/ngx-cookie-consent.service';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { TranslatedText } from './config/translated-text.type';\n\n@Component({\n    selector: 'ngx-cookie-consent',\n    templateUrl: './ngx-cookie-consent.component.html',\n    styleUrls: ['./ngx-cookie-consent.component.scss'],\n})\nexport class NgxCookieConsentComponent implements OnInit {\n    cookieConsentVisible = false;\n    showSettingsDialog = false;\n    dropDownOpen = false;\n    functionalCookiesClosed = true;\n    marketingCookiesClosed = true;\n    essentialCookiesClosed = true;\n    otherToolsClosed = true;\n    cookieForm: FormGroup;\n    private cookieFields: {\n        functional: { key: string; selected: boolean }[];\n        marketing: { key: string; selected: boolean }[];\n    };\n\n    constructor(\n        private router: Router,\n        private consentService: NgxCookieConsentService,\n        private formBuilder: FormBuilder\n    ) {\n        this.cookieFields = this.consentService.getCookieFields();\n        this.cookieForm = this.buildForm();\n    }\n\n    get activeLang(): string {\n        return this.consentService.getConfig('defaultLanguage');\n    }\n\n    get privacyPolicyUrl(): string | TranslatedText {\n        return this.consentService.getConfig('privacyPolicyUrl');\n    }\n\n    get imprintUrl(): string | TranslatedText {\n        return this.consentService.getConfig('imprintUrl');\n    }\n\n    get availableLanguages(): string[] {\n        return this.consentService.getConfig('availableLanguages');\n    }\n\n    get functionalCookiesAllSelected(): boolean {\n        const arr = Object.values(this.cookieForm.get('functional')?.value);\n\n        if (arr.length === 0) {\n            return false;\n        }\n\n        return arr.every((value) => value === true);\n    }\n\n    get marketingCookiesAllSelected(): boolean {\n        const arr = Object.values(this.cookieForm.get('marketing')?.value);\n\n        if (arr.length === 0) {\n            return false;\n        }\n\n        return arr.every((value) => value === true);\n    }\n\n    getTranslatedValue(obj: string | TranslatedText): string {\n        return (\n            (obj as TranslatedText)[this.activeLang] ||\n            (obj as TranslatedText)['default'] ||\n            (obj as string)\n        );\n    }\n\n    translate(key: string, translationLang?: string): string {\n        return this.consentService.getTranslation(key, translationLang);\n    }\n\n    config(key: string) {\n        return this.consentService.getConfig(key);\n    }\n\n    switchLanguage(lang: string) {\n        this.dropDownOpen = false;\n        this.consentService.setLanguage(lang);\n    }\n\n    toggle($event: any, category: string) {\n        const fields: any = this.consentService.getCookieFields();\n        const cookies = fields[category];\n        cookies.forEach((field: any) => {\n            this.cookieForm\n                .get(category)\n                ?.get(field.key)\n                ?.setValue($event.currentTarget.checked);\n        });\n    }\n\n    back() {\n        this.showSettingsDialog = false;\n        this.resetDropdowns();\n        this.resetForm();\n    }\n\n    denyAllCookies() {\n        this.resetModal();\n        this.consentService.denyAllCookies();\n        this.resetForm();\n    }\n\n    acceptAllCookies() {\n        this.resetModal();\n        this.consentService.acceptAllCookies();\n        this.resetForm();\n    }\n\n    saveSomeCookies() {\n        this.consentService.saveSomeCookies(this.cookieForm.value);\n        this.resetModal();\n    }\n\n    private buildForm(): FormGroup {\n        return this.formBuilder.group({\n            functional: this.buildCookieFields(this.cookieFields.functional),\n            marketing: this.buildCookieFields(this.cookieFields.marketing),\n        });\n    }\n\n    private buildCookieFields(fields: { key: string; selected: boolean }[]) {\n        const group: any = {};\n        fields.forEach((field) => {\n            group[field.key] = this.formBuilder.control(field.selected);\n        });\n\n        return this.formBuilder.group(group);\n    }\n\n    private resetForm() {\n        const fields: any = this.consentService.getCookieFields();\n        const categoryKeys = Object.keys(fields);\n        categoryKeys.forEach((categoryKey) => {\n            const category = fields[categoryKey];\n            category.forEach((field: any) => {\n                this.cookieForm\n                    .get(categoryKey)\n                    ?.get(field.key)\n                    ?.setValue(field.selected);\n            });\n        });\n    }\n\n    private resetDropdowns() {\n        this.functionalCookiesClosed = true;\n        this.marketingCookiesClosed = true;\n        this.essentialCookiesClosed = true;\n        this.otherToolsClosed = true;\n    }\n\n    private resetModal() {\n        this.cookieConsentVisible = false;\n        this.showSettingsDialog = false;\n        this.resetDropdowns();\n    }\n\n    ngOnInit(): void {\n        this.router.events\n            .pipe(filter((event) => event instanceof NavigationEnd))\n            .subscribe({\n                next: (event: any) => {\n                    const excludedRoutes =\n                        this.consentService.getConfig('excludeRoutes');\n                    const realPath = event.urlAfterRedirects.split('?')[0];\n\n                    if (excludedRoutes.includes(realPath)) {\n                        this.cookieConsentVisible = false;\n                    } else {\n                        this.cookieConsentVisible =\n                            this.consentService.shouldDisplayCookieConsent();\n                    }\n                },\n            });\n    }\n\n    closeDropDown($event: Event) {\n        const eventTarget = $event.target as HTMLElement;\n        const parentTarget = eventTarget.parentElement as HTMLElement;\n\n        if (\n            eventTarget.classList.contains('language-chooser') ||\n            parentTarget.classList.contains('language-chooser')\n        ) {\n            return;\n        }\n\n        this.dropDownOpen = false;\n    }\n}\n","<div\n    class=\"ngx-cc\"\n    *ngIf=\"cookieConsentVisible\"\n    (click)=\"closeDropDown($event)\"\n>\n    <div class=\"ngx-cc__wrapper\">\n        <div class=\"ngx-cc__modal\" *ngIf=\"!showSettingsDialog\">\n            <div\n                class=\"ngx-cc__modal_language-switcher\"\n                *ngIf=\"config('showLanguageSwitcher')\"\n            >\n                <div class=\"language-switcher\">\n                    <div class=\"flex flex-end\">\n                        <div\n                            class=\"language-chooser\"\n                            title=\"{{ translate('choose_language_text') }}\"\n                            (click)=\"dropDownOpen = !dropDownOpen\"\n                        >\n                            <i class=\"icon icon--language\"></i>\n                        </div>\n                    </div>\n                    <div\n                        class=\"dropdown\"\n                        [ngClass]=\"{ 'dropdown--active': dropDownOpen }\"\n                    >\n                        <div\n                            class=\"dropdown__item\"\n                            *ngFor=\"let lang of availableLanguages\"\n                            [ngClass]=\"{\n                                'dropdown__item--active': activeLang === lang\n                            }\"\n                        >\n                            <div\n                                class=\"dropdown__item_text\"\n                                (click)=\"switchLanguage(lang)\"\n                            >\n                                <i class=\"flag-icon flag-{{ lang }}\"></i>\n                                {{ translate(\"language\", lang) }}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"ngx-cc__modal__header\">\n                <h1 class=\"text--center\">{{ translate(\"title\") }}</h1>\n            </div>\n            <div class=\"ngx-cc__modal__body\">\n                <p>\n                    {{ translate(\"text\") }}\n                    {{ translate(config(\"openerPosition\")) }}\n                </p>\n                <div>\n                    <ul class=\"ngx-cc__cookie-controls\">\n                        <li>\n                            <a\n                                [href]=\"getTranslatedValue(privacyPolicyUrl)\"\n                                target=\"_blank\"\n                                >{{ translate(\"privacy_text\") }}</a\n                            >\n                        </li>\n                        <li>\n                            <a\n                                [href]=\"getTranslatedValue(imprintUrl)\"\n                                target=\"_blank\"\n                                >{{ translate(\"imprint_text\") }}</a\n                            >\n                        </li>\n                        <li>\n                            <span\n                                class=\"text--link\"\n                                (click)=\"showSettingsDialog = true\"\n                                >{{ translate(\"privacy_settings_text\") }}</span\n                            >\n                        </li>\n                    </ul>\n                </div>\n            </div>\n            <div class=\"ngx-cc__modal__footer text--center\">\n                <div class=\"ngx-cc__modal__controls\">\n                    <button\n                        class=\"secondary text--uppercase cc-deny\"\n                        (click)=\"denyAllCookies()\"\n                    >\n                        {{ translate(\"decline_text\") }}\n                    </button>\n                    <button\n                        class=\"text--uppercase cc-accept-all\"\n                        (click)=\"acceptAllCookies()\"\n                    >\n                        {{ translate(\"accept_text\") }}\n                    </button>\n                </div>\n            </div>\n        </div>\n        <div class=\"ngx-cc__modal\" *ngIf=\"showSettingsDialog\">\n            <div class=\"ngx-cc__modal_back\">\n                <div class=\"flex flex-start\">\n                    <div\n                        class=\"back-button\"\n                        title=\"{{ translate('back_text') }}\"\n                        (click)=\"back()\"\n                    >\n                        <svg\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                            shape-rendering=\"geometricPrecision\"\n                            text-rendering=\"geometricPrecision\"\n                            image-rendering=\"optimizeQuality\"\n                            fill-rule=\"evenodd\"\n                            clip-rule=\"evenodd\"\n                            viewBox=\"0 0 512 512\"\n                        >\n                            <path\n                                fill-rule=\"nonzero\"\n                                d=\"M512 256c0 70.68-28.66 134.7-74.98 181.02C390.7 483.34 326.68 512 256 512c-70.69 0-134.7-28.66-181.02-74.98C28.66 390.7 0 326.69 0 256c0-70.69 28.66-134.7 74.98-181.02C121.3 28.66 185.31 0 256 0c70.68 0 134.7 28.66 181.02 74.98C483.34 121.3 512 185.31 512 256zM280.33 146.96 171.3 256l109.03 109.04 40.52-40.51-68.51-68.52 68.52-68.52-40.53-40.53zm130.66 264.03c39.66-39.66 64.2-94.47 64.2-154.99 0-60.53-24.54-115.33-64.2-154.99-39.66-39.66-94.47-64.2-154.99-64.2-60.53 0-115.33 24.54-154.99 64.2-39.66 39.66-64.2 94.46-64.2 154.99 0 60.53 24.54 115.33 64.2 154.99 39.66 39.66 94.46 64.2 154.99 64.2 60.52 0 115.33-24.54 154.99-64.2z\"\n                            />\n                        </svg>\n                    </div>\n                </div>\n            </div>\n            <div class=\"ngx-cc__modal__header\">\n                <h1 class=\"text--center\">\n                    {{ translate(\"privacy_settings_title\") }}\n                </h1>\n            </div>\n            <div class=\"ngx-cc__modal__body\">\n                <p>{{ translate(\"privacy_settings_title_text\") }}</p>\n                <div>\n                    <ul class=\"ngx-cc__cookie-controls\">\n                        <li>\n                            <a\n                                [href]=\"getTranslatedValue(privacyPolicyUrl)\"\n                                target=\"_blank\"\n                                >{{ translate(\"privacy_text\") }}</a\n                            >\n                        </li>\n                        <li>\n                            <a\n                                [href]=\"getTranslatedValue(imprintUrl)\"\n                                target=\"_blank\"\n                                >{{ translate(\"imprint_text\") }}</a\n                            >\n                        </li>\n                    </ul>\n                </div>\n            </div>\n            <div class=\"ngx-cc__consent_purposes\">\n                <div\n                    class=\"block\"\n                    [ngClass]=\"{ 'block--closed': functionalCookiesClosed }\"\n                    *ngIf=\"config('showFunctionalCookies')\"\n                >\n                    <div class=\"block__header\">\n                        <div class=\"block__title\">\n                            <h4>{{ translate(\"functional_title\") }}</h4>\n                            <span>{{\n                                translate(\"functional_description\")\n                            }}</span>\n                        </div>\n                        <div class=\"block__item__controls\">\n                            <div class=\"checkbox checkbox--apple\">\n                                <input\n                                    type=\"checkbox\"\n                                    id=\"functional_cookies\"\n                                    name=\"functional_cookies\"\n                                    value=\"1\"\n                                    [checked]=\"functionalCookiesAllSelected\"\n                                    (change)=\"toggle($event, 'functional')\"\n                                />\n                                <label for=\"functional_cookies\"></label>\n                            </div>\n                        </div>\n                        <div class=\"block__opener\">\n                            <i\n                                class=\"icon icon--small icon--arrow-down\"\n                                [ngClass]=\"{\n                                    'icon--arrow-down': functionalCookiesClosed,\n                                    'icon--arrow-up': !functionalCookiesClosed\n                                }\"\n                                (click)=\"\n                                    functionalCookiesClosed =\n                                        !functionalCookiesClosed\n                                \"\n                                *ngIf=\"config('functionalCookies').length > 0\"\n                            ></i>\n                        </div>\n                    </div>\n                    <div class=\"block__items\" [formGroup]=\"cookieForm\">\n                        <div\n                            class=\"block__item\"\n                            *ngFor=\"\n                                let functional of config('functionalCookies')\n                            \"\n                        >\n                            <div class=\"block__item__body\">\n                                <div class=\"block__item__title\">\n                                    <h5>\n                                        {{\n                                            getTranslatedValue(functional.name)\n                                        }}\n                                    </h5>\n                                    <div class=\"text--tiny\">\n                                        {{\n                                            getTranslatedValue(\n                                                functional.description\n                                            )\n                                        }}\n                                    </div>\n                                    <a\n                                        class=\"text--link text--link--tiny\"\n                                        href=\"{{\n                                            getTranslatedValue(\n                                                functional.privacyPolicyUrl\n                                            )\n                                        }}\"\n                                        target=\"_blank\"\n                                        >{{\n                                            getTranslatedValue(\n                                                functional.privacyPolicyUrl\n                                            )\n                                        }}</a\n                                    >\n                                </div>\n                                <div\n                                    class=\"block__item__controls\"\n                                    formGroupName=\"functional\"\n                                >\n                                    <div\n                                        class=\"checkbox checkbox--apple checkbox--tiny\"\n                                    >\n                                        <input\n                                            type=\"checkbox\"\n                                            id=\"{{ functional.key }}\"\n                                            formControlName=\"{{\n                                                functional.key\n                                            }}\"\n                                            value=\"1\"\n                                        />\n                                        <label\n                                            for=\"{{ functional.key }}\"\n                                        ></label>\n                                    </div>\n                                </div>\n                            </div>\n                            <div\n                                class=\"block__item__details\"\n                                *ngIf=\"\n                                    config('showCookieDetails') &&\n                                    functional?.cookies.length > 0\n                                \"\n                            >\n                                <div\n                                    class=\"detail__item\"\n                                    *ngFor=\"\n                                        let functionalCookie of functional.cookies\n                                    \"\n                                >\n                                    <div>\n                                        {{ translate(\"cookie_name\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                functionalCookie.name\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_description\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                functionalCookie.description\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_duration\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                functionalCookie.duration\n                                            )\n                                        }}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div\n                    class=\"block\"\n                    [ngClass]=\"{ 'block--closed': marketingCookiesClosed }\"\n                    *ngIf=\"config('showMarketingCookies')\"\n                >\n                    <div class=\"block__header\">\n                        <div class=\"block__title\">\n                            <h4>{{ translate(\"marketing_title\") }}</h4>\n                            <span>{{\n                                translate(\"marketing_description\")\n                            }}</span>\n                        </div>\n                        <div class=\"block__item__controls\">\n                            <div class=\"checkbox checkbox--apple\">\n                                <input\n                                    type=\"checkbox\"\n                                    id=\"marketing_cookies\"\n                                    name=\"marketing_cookies\"\n                                    value=\"1\"\n                                    [checked]=\"marketingCookiesAllSelected\"\n                                    (change)=\"toggle($event, 'marketing')\"\n                                />\n                                <label for=\"marketing_cookies\"></label>\n                            </div>\n                        </div>\n                        <div class=\"block__opener\">\n                            <i\n                                class=\"icon icon--small icon--arrow-down\"\n                                [ngClass]=\"{\n                                    'icon--arrow-down': marketingCookiesClosed,\n                                    'icon--arrow-up': !marketingCookiesClosed\n                                }\"\n                                (click)=\"\n                                    marketingCookiesClosed =\n                                        !marketingCookiesClosed\n                                \"\n                                *ngIf=\"config('marketingCookies').length > 0\"\n                            ></i>\n                        </div>\n                    </div>\n                    <div class=\"block__items\" [formGroup]=\"cookieForm\">\n                        <div\n                            class=\"block__item\"\n                            *ngFor=\"let marketing of config('marketingCookies')\"\n                        >\n                            <div class=\"block__item__body\">\n                                <div class=\"block__item__title\">\n                                    <h5>\n                                        {{ getTranslatedValue(marketing.name) }}\n                                    </h5>\n                                    <div class=\"text--tiny\">\n                                        {{\n                                            getTranslatedValue(\n                                                marketing.description\n                                            )\n                                        }}\n                                    </div>\n                                    <a\n                                        class=\"text--link text--link--tiny\"\n                                        href=\"{{\n                                            getTranslatedValue(\n                                                marketing.privacyPolicyUrl\n                                            )\n                                        }}\"\n                                        target=\"_blank\"\n                                        >{{\n                                            getTranslatedValue(\n                                                marketing.privacyPolicyUrl\n                                            )\n                                        }}</a\n                                    >\n                                </div>\n                                <div\n                                    class=\"block__item__controls\"\n                                    formGroupName=\"marketing\"\n                                >\n                                    <div\n                                        class=\"checkbox checkbox--apple checkbox--tiny\"\n                                    >\n                                        <input\n                                            type=\"checkbox\"\n                                            id=\"{{ marketing.key }}\"\n                                            formControlName=\"{{\n                                                marketing.key\n                                            }}\"\n                                            value=\"1\"\n                                        />\n                                        <label\n                                            for=\"{{ marketing.key }}\"\n                                        ></label>\n                                    </div>\n                                </div>\n                            </div>\n                            <div\n                                class=\"block__item__details\"\n                                *ngIf=\"\n                                    config('showCookieDetails') &&\n                                    marketing?.cookies.length > 0\n                                \"\n                            >\n                                <div\n                                    class=\"detail__item\"\n                                    *ngFor=\"\n                                        let marketingCookie of marketing.cookies\n                                    \"\n                                >\n                                    <div>\n                                        {{ translate(\"cookie_name\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                marketingCookie.name\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_description\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                marketingCookie.description\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_duration\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                marketingCookie.duration\n                                            )\n                                        }}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div\n                    class=\"block\"\n                    [ngClass]=\"{ 'block--closed': essentialCookiesClosed }\"\n                    *ngIf=\"config('showEssentialCookies')\"\n                >\n                    <div class=\"block__header\">\n                        <div class=\"block__title\">\n                            <h4>{{ translate(\"essential_title\") }}</h4>\n                            <span>{{\n                                translate(\"essential_description\")\n                            }}</span>\n                        </div>\n                        <div class=\"block__item__controls\">\n                            <div class=\"checkbox checkbox--apple\">\n                                <input\n                                    type=\"checkbox\"\n                                    id=\"essential_cookies\"\n                                    name=\"essential_cookies\"\n                                    value=\"1\"\n                                    checked\n                                    disabled\n                                />\n                                <label for=\"essential_cookies\"></label>\n                            </div>\n                        </div>\n                        <div class=\"block__opener\">\n                            <i\n                                class=\"icon icon--small icon--arrow-down\"\n                                [ngClass]=\"{\n                                    'icon--arrow-down': essentialCookiesClosed,\n                                    'icon--arrow-up': !essentialCookiesClosed\n                                }\"\n                                (click)=\"\n                                    essentialCookiesClosed =\n                                        !essentialCookiesClosed\n                                \"\n                                *ngIf=\"config('essentialCookies').length > 0\"\n                            ></i>\n                        </div>\n                    </div>\n                    <div class=\"block__items\">\n                        <div\n                            class=\"block__item\"\n                            *ngFor=\"let essential of config('essentialCookies')\"\n                        >\n                            <div class=\"block__item__body\">\n                                <div class=\"block__item__title\">\n                                    <h5>\n                                        {{ getTranslatedValue(essential.name) }}\n                                    </h5>\n                                    <div class=\"text--tiny\">\n                                        {{\n                                            getTranslatedValue(\n                                                essential.description\n                                            )\n                                        }}\n                                    </div>\n                                    <a\n                                        class=\"text--link text--link--tiny\"\n                                        href=\"{{\n                                            getTranslatedValue(\n                                                essential.privacyPolicyUrl\n                                            )\n                                        }}\"\n                                        target=\"_blank\"\n                                        >{{\n                                            getTranslatedValue(\n                                                essential.privacyPolicyUrl\n                                            )\n                                        }}</a\n                                    >\n                                </div>\n                                <div class=\"block__item__controls\">\n                                    <div\n                                        class=\"checkbox checkbox--apple checkbox--tiny\"\n                                    >\n                                        <input\n                                            type=\"checkbox\"\n                                            id=\"{{ essential.key }}\"\n                                            name=\"{{ essential.key }}\"\n                                            value=\"1\"\n                                            checked\n                                            disabled\n                                        />\n                                        <label\n                                            for=\"{{ essential.key }}\"\n                                        ></label>\n                                    </div>\n                                </div>\n                            </div>\n                            <div\n                                class=\"block__item__details\"\n                                *ngIf=\"\n                                    config('showCookieDetails') &&\n                                    essential?.cookies.length > 0\n                                \"\n                            >\n                                <div\n                                    class=\"detail__item\"\n                                    *ngFor=\"\n                                        let essentialCookie of essential.cookies\n                                    \"\n                                >\n                                    <div>\n                                        {{ translate(\"cookie_name\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                essentialCookie.name\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_description\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                essentialCookie.description\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_duration\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                essentialCookie.duration\n                                            )\n                                        }}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div\n                    class=\"block\"\n                    [ngClass]=\"{ 'block--closed': otherToolsClosed }\"\n                    *ngIf=\"config('showOtherTools')\"\n                >\n                    <div class=\"block__header\">\n                        <div class=\"block__title\">\n                            <h4>{{ translate(\"other_title\") }}</h4>\n                            <span>{{ translate(\"other_description\") }}</span>\n                        </div>\n                        <div class=\"block__item__controls\">\n                            <div class=\"checkbox checkbox--apple\">\n                                <input\n                                    type=\"checkbox\"\n                                    id=\"other_cookies\"\n                                    name=\"other_cookies\"\n                                    value=\"1\"\n                                    checked\n                                    disabled\n                                />\n                                <label for=\"other_cookies\"></label>\n                            </div>\n                        </div>\n                        <div class=\"block__opener\">\n                            <i\n                                class=\"icon icon--small icon--arrow-down\"\n                                [ngClass]=\"{\n                                    'icon--arrow-down': otherToolsClosed,\n                                    'icon--arrow-up': !otherToolsClosed\n                                }\"\n                                (click)=\"otherToolsClosed = !otherToolsClosed\"\n                                *ngIf=\"config('otherTools').length > 0\"\n                            ></i>\n                        </div>\n                    </div>\n                    <div class=\"block__items\">\n                        <div\n                            class=\"block__item\"\n                            *ngFor=\"let other of config('otherTools')\"\n                        >\n                            <div class=\"block__item__body\">\n                                <div class=\"block__item__title\">\n                                    <h5>\n                                        {{ getTranslatedValue(other.name) }}\n                                    </h5>\n                                    <div class=\"text--tiny\">\n                                        {{\n                                            getTranslatedValue(\n                                                other.description\n                                            )\n                                        }}\n                                    </div>\n                                    <a\n                                        class=\"text--link text--link--tiny\"\n                                        href=\"{{\n                                            getTranslatedValue(\n                                                other.privacyPolicyUrl\n                                            )\n                                        }}\"\n                                        target=\"_blank\"\n                                        >{{\n                                            getTranslatedValue(\n                                                other.privacyPolicyUrl\n                                            )\n                                        }}</a\n                                    >\n                                </div>\n                                <div class=\"block__item__controls\">\n                                    <div\n                                        class=\"checkbox checkbox--apple checkbox--tiny\"\n                                    >\n                                        <input\n                                            type=\"checkbox\"\n                                            id=\"{{ other.key }}\"\n                                            name=\"{{ other.key }}\"\n                                            value=\"1\"\n                                            checked\n                                            disabled\n                                        />\n                                        <label for=\"{{ other.key }}\"></label>\n                                    </div>\n                                </div>\n                            </div>\n                            <div\n                                class=\"block__item__details\"\n                                *ngIf=\"\n                                    config('showCookieDetails') &&\n                                    other?.cookies.length > 0\n                                \"\n                            >\n                                <div\n                                    class=\"detail__item\"\n                                    *ngFor=\"let otherCookie of other.cookies\"\n                                >\n                                    <div>\n                                        {{ translate(\"cookie_name\") }}:\n                                        {{\n                                            getTranslatedValue(otherCookie.name)\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_description\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                otherCookie.description\n                                            )\n                                        }}\n                                    </div>\n                                    <div>\n                                        {{ translate(\"cookie_duration\") }}:\n                                        {{\n                                            getTranslatedValue(\n                                                otherCookie.duration\n                                            )\n                                        }}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"ngx-cc__modal__footer text--center\">\n                <div class=\"ngx-cc__modal__controls\">\n                    <button\n                        class=\"secondary text--uppercase cc-accept-some\"\n                        (click)=\"saveSomeCookies()\"\n                    >\n                        {{ translate(\"save_text\") }}\n                    </button>\n                    <button\n                        class=\"text--uppercase cc-deny\"\n                        (click)=\"denyAllCookies()\"\n                    >\n                        {{ translate(\"decline_text\") }}\n                    </button>\n                    <button\n                        class=\"text--uppercase cc-accept-all\"\n                        (click)=\"acceptAllCookies()\"\n                    >\n                        {{ translate(\"accept_text\") }}\n                    </button>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div\n    class=\"ngx-cc__opener\"\n    [ngClass]=\"['ngx-cc__opener-' + config('openerPosition')]\"\n    *ngIf=\"!cookieConsentVisible && config('showBadgeOpener')\"\n    (click)=\"cookieConsentVisible = true\"\n>\n    <svg\n        id=\"Layer_1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        x=\"0px\"\n        y=\"0px\"\n        viewBox=\"0 0 120.23 122.88\"\n        style=\"enable-background: new 0 0 120.23 122.88\"\n        xml:space=\"preserve\"\n    >\n        <style type=\"text/css\">\n            .st0 {\n                fill-rule: evenodd;\n                clip-rule: evenodd;\n                fill: #ffffff;\n            }\n        </style>\n        <g>\n            <path\n                class=\"st0\"\n                d=\"M98.18,0c3.3,0,5.98,2.68,5.98,5.98c0,3.3-2.68,5.98-5.98,5.98c-3.3,0-5.98-2.68-5.98-5.98 C92.21,2.68,94.88,0,98.18,0L98.18,0z M99.78,52.08c5.16,7.7,11.69,10.06,20.17,4.85c0.28,2.9,0.35,5.86,0.2,8.86 c-1.67,33.16-29.9,58.69-63.06,57.02C23.94,121.13-1.59,92.9,0.08,59.75C1.74,26.59,30.95,0.78,64.1,2.45 c-2.94,9.2-0.45,17.37,7.03,20.15C64.35,44.38,79.49,58.63,99.78,52.08L99.78,52.08z M30.03,47.79c4.97,0,8.99,4.03,8.99,8.99 s-4.03,8.99-8.99,8.99c-4.97,0-8.99-4.03-8.99-8.99S25.07,47.79,30.03,47.79L30.03,47.79z M58.35,59.25c2.86,0,5.18,2.32,5.18,5.18 c0,2.86-2.32,5.18-5.18,5.18c-2.86,0-5.18-2.32-5.18-5.18C53.16,61.57,55.48,59.25,58.35,59.25L58.35,59.25z M35.87,80.59 c3.49,0,6.32,2.83,6.32,6.32c0,3.49-2.83,6.32-6.32,6.32c-3.49,0-6.32-2.83-6.32-6.32C29.55,83.41,32.38,80.59,35.87,80.59 L35.87,80.59z M49.49,32.23c2.74,0,4.95,2.22,4.95,4.95c0,2.74-2.22,4.95-4.95,4.95c-2.74,0-4.95-2.22-4.95-4.95 C44.54,34.45,46.76,32.23,49.49,32.23L49.49,32.23z M76.39,82.8c4.59,0,8.3,3.72,8.3,8.3c0,4.59-3.72,8.3-8.3,8.3 c-4.59,0-8.3-3.72-8.3-8.3C68.09,86.52,71.81,82.8,76.39,82.8L76.39,82.8z M93.87,23.1c3.08,0,5.58,2.5,5.58,5.58 c0,3.08-2.5,5.58-5.58,5.58s-5.58-2.5-5.58-5.58C88.29,25.6,90.79,23.1,93.87,23.1L93.87,23.1z\"\n            />\n        </g>\n    </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxCookieConsentConfigService } from './config/ngx-cookie-consent-config.service';\nimport { NgxCookieConsentComponent } from './ngx-cookie-consent.component';\nimport { NgxCookieConsentService } from './services/ngx-cookie-consent/ngx-cookie-consent.service';\nimport { NgxCookieService } from './services/ngx-cookie/ngx-cookie.service';\nimport { NgxLanguageService } from './services/ngx-language/ngx-language.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgxCookieManagerService } from './services/ngx-cookie-manager/ngx-cookie-manager.service';\nimport { IfConsentDirective } from './directives/if-consent/if-consent.directive';\n\n@NgModule({\n    declarations: [\n        NgxCookieConsentComponent,\n        IfConsentDirective,\n    ],\n    imports: [\n        CommonModule,\n        RouterModule,\n        FormsModule,\n        ReactiveFormsModule,\n    ],\n    exports: [\n        NgxCookieConsentComponent,\n        IfConsentDirective,\n    ]\n})\nexport class NgxCookieConsentModule {\n    static forRoot(config: NgxCookieConsentConfigService = {}): ModuleWithProviders<NgxCookieConsentModule> {\n        return {\n            ngModule: NgxCookieConsentModule,\n            providers: [\n                {\n                    provide: NgxCookieConsentConfigService,\n                    useFactory: () => {\n                        const defaultConfig = new NgxCookieConsentConfigService();\n                        return Object.assign(defaultConfig, config);\n                    }\n                },\n                NgxCookieConsentService,\n                NgxCookieService,\n                NgxLanguageService,\n                NgxCookieManagerService,\n            ]\n        };\n    }\n}\n","/*\n * Public API Surface of ngx-cookie-consent\n */\nexport * from './lib/config/cookie-detail.interface';\nexport * from './lib/config/cookie-item.interface';\nexport * from './lib/services/ngx-cookie-manager/ngx-cookie-manager.service';\nexport * from './lib/directives/if-consent/if-consent.directive';\nexport * from './lib/ngx-cookie-consent.component';\nexport * from './lib/ngx-cookie-consent.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxCookieService","i2.NgxCookieConsentConfigService","i1.NgxCookieManagerService","i1.NgxCookieConsentConfigService","i2.NgxCookieService","i3.NgxCookieConsentConfigService","i4.NgxLanguageService","i2.NgxCookieConsentService"],"mappings":"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"}