UNPKG

@studiohyperdrive/ngx-cookies

Version:
1 lines 59.9 kB
{"version":3,"file":"studiohyperdrive-ngx-cookies.mjs","sources":["../tmp-esm2022/lib/services/cookie/cookie.service.js","../tmp-esm2022/lib/tokens/has-cookies-fallback/has-cookies-fallback.js","../tmp-esm2022/lib/directives/has-cookie/has-cookie.directive.js","../tmp-esm2022/lib/abstracts/cookie-fallback/cookie-fallback.component.js","../tmp-esm2022/index.js","../tmp-esm2022/studiohyperdrive-ngx-cookies.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport * as CookieConsent from 'vanilla-cookieconsent';\nimport { NgxWindowService } from '@studiohyperdrive/ngx-core';\nimport { BehaviorSubject, Subject, combineLatest, distinctUntilChanged, map, startWith, } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * A service that implements the CookieConsent from https://cookieconsent.orestbida.com and provides the necessary Observables to handle this setup.\n */\nexport class NgxCookieService {\n constructor() {\n this.windowsService = inject(NgxWindowService);\n /**\n * Subject to hold the onFirstConsent event\n */\n this.firstCookiesConsentedSubject = new Subject();\n /**\n * Subject to hold the onConsent event\n */\n this.cookiesConsentedSubject = new Subject();\n /**\n * Subject to hold the consentChanged event\n */\n this.cookiesConsentChangedSubject = new Subject();\n /**\n * Subject to hold the modalVisible event\n */\n this.modalVisibleSubject = new BehaviorSubject(false);\n /**\n * Subject to hold the cookiesChanged event\n */\n this.cookiesChangedSubject = new Subject();\n /**\n * An event triggered only the very first time that the user expresses their choice of consent\n */\n this.firstCookiesConsented$ = this.firstCookiesConsentedSubject.asObservable();\n /**\n * An event triggering the choice of consent on every page load.\n */\n this.cookiesConsented$ = this.cookiesConsentedSubject.asObservable();\n /**\n * An event triggered when the user modifies their preferences and only if consent has already been provided.\n */\n this.cookiesConsentChanged$ = this.cookiesConsentChangedSubject.asObservable();\n /**\n * Whether the cookies modal is currently visible\n */\n this.modalVisible$ = this.modalVisibleSubject.asObservable();\n /**\n * Emits every time the set cookies have been changed\n */\n this.cookiesChanged$ = this.cookiesChangedSubject.asObservable();\n }\n /**\n * Sets up the CookieConsent.\n *\n * For more information of on this configuration, check the documentation\n * https://cookieconsent.orestbida.com/essential/getting-started.html\n *\n * @param categories - The categories of cookies\n * @param language - The language settings of the cookies\n * @param configuration - An optional set configuration settings\n */\n setupCookiesHandler(categories, language, configuration) {\n // Iben: If we're not in the browser, we early exit, so server-side rendering can be enabled\n if (!this.windowsService.isBrowser()) {\n return;\n }\n // Iben: If no categories were provided, we early exit and throw an error, as the cookie preference cannot be shown without.\n if (!categories || Object.keys(categories).length === 0) {\n console.error('NgxCookies: No categories were provided for the cookie handler. At least one category is required.');\n return;\n }\n // Iben: Setup the onFirstConsent listener\n const onFirstConsent = (event) => {\n this.firstCookiesConsentedSubject.next(event);\n };\n onFirstConsent.bind(this);\n // Iben: Setup the onConsent listener\n const onConsent = (event) => {\n this.cookiesConsentedSubject.next(event);\n };\n onConsent.bind(this);\n // Iben: Setup the onChange listener\n const onChange = (event) => {\n this.cookiesConsentChangedSubject.next(event);\n };\n onChange.bind(this);\n // Iben: Setup the onModalShow listener\n const onModalShow = () => {\n this.modalVisibleSubject.next(true);\n };\n onModalShow.bind(this);\n // Iben: Setup the onModalHide listener\n const onModalHide = () => {\n this.modalVisibleSubject.next(false);\n };\n onModalHide.bind(this);\n // Iben: Run the CookieConsent handler\n CookieConsent.run({\n ...(configuration || {}),\n onFirstConsent,\n onConsent,\n onChange,\n onModalHide,\n onModalShow,\n categories,\n language,\n });\n }\n /**\n * Whether a certain category of cookies was accepted\n *\n * @param name - The name of the category\n */\n hasAcceptedCategory(name) {\n // Iben: Return every time the cookie consent has changed\n return combineLatest([\n this.cookiesConsented$.pipe(startWith(undefined)),\n this.cookiesConsentChanged$.pipe(startWith(undefined)),\n ]).pipe(map(() => {\n // Iben: Check if the category was accepted\n return CookieConsent.acceptedCategory(name);\n }));\n }\n /**\n * Accept a category of cookies\n *\n * @param name - The name of the categories\n */\n acceptCategory(name) {\n CookieConsent.acceptCategory(name);\n }\n /**\n * Whether a certain service within a category was accepted\n *\n * @param category - The name of the category\n * @param name - The name of the service\n */\n hasAcceptedService(category, name) {\n // Iben: Return every time the cookie consent has changed\n return combineLatest([\n this.cookiesConsented$.pipe(startWith(undefined)),\n this.cookiesConsentChanged$.pipe(startWith(undefined)),\n ]).pipe(map(() => {\n // Iben: Check if the service within the provided category was accepted\n return CookieConsent.acceptedService(name, category);\n }));\n }\n /**\n * Accept a category of cookies\n *\n * @param category - The name of the category\n * @param name - The name of the service\n */\n acceptService(category, name) {\n CookieConsent.acceptService(name, category);\n }\n /**\n * Show the cookie modal\n */\n showModal() {\n CookieConsent.show(true);\n }\n /**\n * Get a cookie\n *\n * @param cookie - Name of the cookie\n */\n getCookie(cookie) {\n return (CookieConsent.getCookie('data') || {})[cookie];\n }\n /**\n * Get a cookie as an observable\n *\n * @param cookie - Name of the cookie\n */\n getCookieObservable(cookie) {\n // Iben: Return every time the set cookies are changed\n return this.cookiesChanged$.pipe(startWith(CookieConsent.getCookie('data') || {}), \n // Iben: Get the cookie value\n map(() => {\n return this.getCookie(cookie);\n }), \n // Iben: As the cookiesChanged event emits every time all cookies are rest, we check if the cookie value was really changed\n distinctUntilChanged());\n }\n /**\n * Set a cookie\n *\n * @param cookie - The cookie we wish to set\n */\n setCookie(cookie) {\n // Iben: Set the cookie\n const isSet = CookieConsent.setCookieData({\n value: { [cookie.name]: cookie.value },\n mode: 'update',\n });\n // Iben: If the cookie was not set, we return\n if (!isSet) {\n return;\n }\n // Iben: Update the subject so we can notify listeners\n this.cookiesChangedSubject.next(CookieConsent.getCookie('data'));\n }\n /**\n * Remove a cookie\n *\n * @param cookie - The cookie we wish to remove\n */\n removeCookie(cookie) {\n // Iben: Get the current cookies\n const currentCookies = CookieConsent.getCookie('data') || {};\n // Iben: Remove the cookie from the currently set cookies\n const { [cookie]: _removedValue, ...value } = currentCookies;\n // Iben: Remove the cookie from the cookies holder\n const isSet = CookieConsent.setCookieData({ value, mode: 'overwrite' });\n // Iben: If the cookie was not set, we return\n if (!isSet) {\n return;\n }\n // Iben: Update the subject so we can notify listeners\n this.cookiesChangedSubject.next(CookieConsent.getCookie('data'));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxCookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxCookieService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxCookieService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29va2llcy9zcmMvbGliL3NlcnZpY2VzL2Nvb2tpZS9jb29raWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFDTixlQUFlLEVBRWYsT0FBTyxFQUNQLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsR0FDVCxNQUFNLE1BQU0sQ0FBQzs7QUFVZDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFa0IsbUJBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRDs7V0FFRztRQUNjLGlDQUE0QixHQUE0QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXZGOztXQUVHO1FBQ2MsNEJBQXVCLEdBQTRCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbEY7O1dBRUc7UUFDYyxpQ0FBNEIsR0FBbUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUU5Rjs7V0FFRztRQUNjLHdCQUFtQixHQUE2QixJQUFJLGVBQWUsQ0FDbkYsS0FBSyxDQUNMLENBQUM7UUFFRjs7V0FFRztRQUNjLDBCQUFxQixHQUFpQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXJGOztXQUVHO1FBQ2EsMkJBQXNCLEdBQ3JDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVsRDs7V0FFRztRQUNhLHNCQUFpQixHQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0M7O1dBRUc7UUFDYSwy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QUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs4R0F4UVcsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgQ29va2llQ29uc2VudCBmcm9tICd2YW5pbGxhLWNvb2tpZWNvbnNlbnQnO1xuaW1wb3J0IHsgTmd4V2luZG93U2VydmljZSB9IGZyb20gJ0BzdHVkaW9oeXBlcmRyaXZlL25neC1jb3JlJztcblxuaW1wb3J0IHtcblx0QmVoYXZpb3JTdWJqZWN0LFxuXHRPYnNlcnZhYmxlLFxuXHRTdWJqZWN0LFxuXHRjb21iaW5lTGF0ZXN0LFxuXHRkaXN0aW5jdFVudGlsQ2hhbmdlZCxcblx0bWFwLFxuXHRzdGFydFdpdGgsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcblx0Tmd4Q29va2llQ2F0ZWdvcmllcyxcblx0Tmd4Q29va2llQ2hhbmdlZEV2ZW50LFxuXHROZ3hDb29raWVDb25maWd1cmF0aW9uLFxuXHROZ3hDb29raWVFdmVudCxcblx0Tmd4Q29va2llTGFuZ3VhZ2VDb25maWd1cmF0aW9uLFxuXHROZ3hDb29raWVWYWx1ZSxcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIEEgc2VydmljZSB0aGF0IGltcGxlbWVudHMgdGhlIENvb2tpZUNvbnNlbnQgZnJvbSBodHRwczovL2Nvb2tpZWNvbnNlbnQub3Jlc3RiaWRhLmNvbSBhbmQgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBPYnNlcnZhYmxlcyB0byBoYW5kbGUgdGhpcyBzZXR1cC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ3hDb29raWVTZXJ2aWNlIHtcblx0cHJpdmF0ZSByZWFkb25seSB3aW5kb3dzU2VydmljZSA9IGluamVjdChOZ3hXaW5kb3dTZXJ2aWNlKTtcblxuXHQvKipcblx0ICogU3ViamVjdCB0byBob2xkIHRoZSBvbkZpcnN0Q29uc2VudCBldmVudFxuXHQgKi9cblx0cHJpdmF0ZSByZWFkb25seSBmaXJzdENvb2tpZXNDb25zZW50ZWRTdWJqZWN0OiBTdWJqZWN0PE5neENvb2tpZUV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XG5cblx0LyoqXG5cdCAqIFN1YmplY3QgdG8gaG9sZCB0aGUgb25Db25zZW50IGV2ZW50XG5cdCAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IGNvb2tpZXNDb25zZW50ZWRTdWJqZWN0OiBTdWJqZWN0PE5neENvb2tpZUV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XG5cblx0LyoqXG5cdCAqIFN1YmplY3QgdG8gaG9sZCB0aGUgY29uc2VudENoYW5nZWQgZXZlbnRcblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgY29va2llc0NvbnNlbnRDaGFuZ2VkU3ViamVjdDogU3ViamVjdDxOZ3hDb29raWVDaGFuZ2VkRXZlbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuXHQvKipcblx0ICogU3ViamVjdCB0byBob2xkIHRoZSBtb2RhbFZpc2libGUgZXZlbnRcblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgbW9kYWxWaXNpYmxlU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcblx0XHRmYWxzZVxuXHQpO1xuXG5cdC8qKlxuXHQgKiBTdWJqZWN0IHRvIGhvbGQgdGhlIGNvb2tpZXNDaGFuZ2VkIGV2ZW50XG5cdCAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IGNvb2tpZXNDaGFuZ2VkU3ViamVjdDogU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IG5ldyBTdWJqZWN0KCk7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCBvbmx5IHRoZSB2ZXJ5IGZpcnN0IHRpbWUgdGhhdCB0aGUgdXNlciBleHByZXNzZXMgdGhlaXIgY2hvaWNlIG9mIGNvbnNlbnRcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBmaXJzdENvb2tpZXNDb25zZW50ZWQkOiBPYnNlcnZhYmxlPE5neENvb2tpZUV2ZW50PiA9XG5cdFx0dGhpcy5maXJzdENvb2tpZXNDb25zZW50ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyaW5nIHRoZSBjaG9pY2Ugb2YgY29uc2VudCBvbiBldmVyeSBwYWdlIGxvYWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgY29va2llc0NvbnNlbnRlZCQ6IE9ic2VydmFibGU8Tmd4Q29va2llRXZlbnQ+ID1cblx0XHR0aGlzLmNvb2tpZXNDb25zZW50ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGVpciBwcmVmZXJlbmNlcyBhbmQgb25seSBpZiBjb25zZW50IGhhcyBhbHJlYWR5IGJlZW4gcHJvdmlkZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgY29va2llc0NvbnNlbnRDaGFuZ2VkJDogT2JzZXJ2YWJsZTxOZ3hDb29raWVDaGFuZ2VkRXZlbnQ+ID1cblx0XHR0aGlzLmNvb2tpZXNDb25zZW50Q2hhbmdlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgdGhlIGNvb2tpZXMgbW9kYWwgaXMgY3VycmVudGx5IHZpc2libGVcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBtb2RhbFZpc2libGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5tb2RhbFZpc2libGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBldmVyeSB0aW1lIHRoZSBzZXQgY29va2llcyBoYXZlIGJlZW4gY2hhbmdlZFxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGNvb2tpZXNDaGFuZ2VkJDogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG5cdFx0dGhpcy5jb29raWVzQ2hhbmdlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblx0LyoqXG5cdCAqIFNldHMgdXAgdGhlIENvb2tpZUNvbnNlbnQuXG5cdCAqXG5cdCAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9mIG9uIHRoaXMgY29uZmlndXJhdGlvbiwgY2hlY2sgdGhlIGRvY3VtZW50YXRpb25cblx0ICogaHR0cHM6Ly9jb29raWVjb25zZW50Lm9yZXN0YmlkYS5jb20vZXNzZW50aWFsL2dldHRpbmctc3RhcnRlZC5odG1sXG5cdCAqXG5cdCAqIEBwYXJhbSBjYXRlZ29yaWVzIC0gVGhlIGNhdGVnb3JpZXMgb2YgY29va2llc1xuXHQgKiBAcGFyYW0gbGFuZ3VhZ2UgLSBUaGUgbGFuZ3VhZ2Ugc2V0dGluZ3Mgb2YgdGhlIGNvb2tpZXNcblx0ICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gLSBBbiBvcHRpb25hbCBzZXQgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuXHQgKi9cblx0cHVibGljIHNldHVwQ29va2llc0hhbmRsZXIoXG5cdFx0Y2F0ZWdvcmllczogTmd4Q29va2llQ2F0ZWdvcmllcyxcblx0XHRsYW5ndWFnZTogTmd4Q29va2llTGFuZ3VhZ2VDb25maWd1cmF0aW9uLFxuXHRcdGNvbmZpZ3VyYXRpb24/OiBOZ3hDb29raWVDb25maWd1cmF0aW9uXG5cdCk6IHZvaWQge1xuXHRcdC8vIEliZW46IElmIHdlJ3JlIG5vdCBpbiB0aGUgYnJvd3Nlciwgd2UgZWFybHkgZXhpdCwgc28gc2VydmVyLXNpZGUgcmVuZGVyaW5nIGNhbiBiZSBlbmFibGVkXG5cdFx0aWYgKCF0aGlzLndpbmRvd3NTZXJ2aWNlLmlzQnJvd3NlcigpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogSWYgbm8gY2F0ZWdvcmllcyB3ZXJlIHByb3ZpZGVkLCB3ZSBlYXJseSBleGl0IGFuZCB0aHJvdyBhbiBlcnJvciwgYXMgdGhlIGNvb2tpZSBwcmVmZXJlbmNlIGNhbm5vdCBiZSBzaG93biB3aXRob3V0LlxuXHRcdGlmICghY2F0ZWdvcmllcyB8fCBPYmplY3Qua2V5cyhjYXRlZ29yaWVzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdCdOZ3hDb29raWVzOiBObyBjYXRlZ29yaWVzIHdlcmUgcHJvdmlkZWQgZm9yIHRoZSBjb29raWUgaGFuZGxlci4gQXQgbGVhc3Qgb25lIGNhdGVnb3J5IGlzIHJlcXVpcmVkLidcblx0XHRcdCk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBTZXR1cCB0aGUgb25GaXJzdENvbnNlbnQgbGlzdGVuZXJcblx0XHRjb25zdCBvbkZpcnN0Q29uc2VudCA9IChldmVudCkgPT4ge1xuXHRcdFx0dGhpcy5maXJzdENvb2tpZXNDb25zZW50ZWRTdWJqZWN0Lm5leHQoZXZlbnQpO1xuXHRcdH07XG5cdFx0b25GaXJzdENvbnNlbnQuYmluZCh0aGlzKTtcblxuXHRcdC8vIEliZW46IFNldHVwIHRoZSBvbkNvbnNlbnQgbGlzdGVuZXJcblx0XHRjb25zdCBvbkNvbnNlbnQgPSAoZXZlbnQpID0+IHtcblx0XHRcdHRoaXMuY29va2llc0NvbnNlbnRlZFN1YmplY3QubmV4dChldmVudCk7XG5cdFx0fTtcblx0XHRvbkNvbnNlbnQuYmluZCh0aGlzKTtcblxuXHRcdC8vIEliZW46IFNldHVwIHRoZSBvbkNoYW5nZSBsaXN0ZW5lclxuXHRcdGNvbnN0IG9uQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG5cdFx0XHR0aGlzLmNvb2tpZXNDb25zZW50Q2hhbmdlZFN1YmplY3QubmV4dChldmVudCk7XG5cdFx0fTtcblx0XHRvbkNoYW5nZS5iaW5kKHRoaXMpO1xuXG5cdFx0Ly8gSWJlbjogU2V0dXAgdGhlIG9uTW9kYWxTaG93IGxpc3RlbmVyXG5cdFx0Y29uc3Qgb25Nb2RhbFNob3cgPSAoKSA9PiB7XG5cdFx0XHR0aGlzLm1vZGFsVmlzaWJsZVN1YmplY3QubmV4dCh0cnVlKTtcblx0XHR9O1xuXHRcdG9uTW9kYWxTaG93LmJpbmQodGhpcyk7XG5cblx0XHQvLyBJYmVuOiBTZXR1cCB0aGUgb25Nb2RhbEhpZGUgbGlzdGVuZXJcblx0XHRjb25zdCBvbk1vZGFsSGlkZSA9ICgpID0+IHtcblx0XHRcdHRoaXMubW9kYWxWaXNpYmxlU3ViamVjdC5uZXh0KGZhbHNlKTtcblx0XHR9O1xuXHRcdG9uTW9kYWxIaWRlLmJpbmQodGhpcyk7XG5cblx0XHQvLyBJYmVuOiBSdW4gdGhlIENvb2tpZUNvbnNlbnQgaGFuZGxlclxuXHRcdENvb2tpZUNvbnNlbnQucnVuKHtcblx0XHRcdC4uLihjb25maWd1cmF0aW9uIHx8IHt9KSxcblx0XHRcdG9uRmlyc3RDb25zZW50LFxuXHRcdFx0b25Db25zZW50LFxuXHRcdFx0b25DaGFuZ2UsXG5cdFx0XHRvbk1vZGFsSGlkZSxcblx0XHRcdG9uTW9kYWxTaG93LFxuXHRcdFx0Y2F0ZWdvcmllcyxcblx0XHRcdGxhbmd1YWdlLFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgYSBjZXJ0YWluIGNhdGVnb3J5IG9mIGNvb2tpZXMgd2FzIGFjY2VwdGVkXG5cdCAqXG5cdCAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNhdGVnb3J5XG5cdCAqL1xuXHRwdWJsaWMgaGFzQWNjZXB0ZWRDYXRlZ29yeShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblx0XHQvLyBJYmVuOiBSZXR1cm4gZXZlcnkgdGltZSB0aGUgY29va2llIGNvbnNlbnQgaGFzIGNoYW5nZWRcblx0XHRyZXR1cm4gY29tYmluZUxhdGVzdChbXG5cdFx0XHR0aGlzLmNvb2tpZXNDb25zZW50ZWQkLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpLFxuXHRcdFx0dGhpcy5jb29raWVzQ29uc2VudENoYW5nZWQkLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpLFxuXHRcdF0pLnBpcGUoXG5cdFx0XHRtYXAoKCkgPT4ge1xuXHRcdFx0XHQvLyBJYmVuOiBDaGVjayBpZiB0aGUgY2F0ZWdvcnkgd2FzIGFjY2VwdGVkXG5cdFx0XHRcdHJldHVybiBDb29raWVDb25zZW50LmFjY2VwdGVkQ2F0ZWdvcnkobmFtZSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQWNjZXB0IGEgY2F0ZWdvcnkgb2YgY29va2llc1xuXHQgKlxuXHQgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXRlZ29yaWVzXG5cdCAqL1xuXHRwdWJsaWMgYWNjZXB0Q2F0ZWdvcnkobmFtZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Q29va2llQ29uc2VudC5hY2NlcHRDYXRlZ29yeShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIGEgY2VydGFpbiBzZXJ2aWNlIHdpdGhpbiBhIGNhdGVnb3J5IHdhcyBhY2NlcHRlZFxuXHQgKlxuXHQgKiBAcGFyYW0gY2F0ZWdvcnkgLSBUaGUgbmFtZSBvZiB0aGUgY2F0ZWdvcnlcblx0ICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZVxuXHQgKi9cblx0cHVibGljIGhhc0FjY2VwdGVkU2VydmljZShjYXRlZ29yeTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblx0XHQvLyBJYmVuOiBSZXR1cm4gZXZlcnkgdGltZSB0aGUgY29va2llIGNvbnNlbnQgaGFzIGNoYW5nZWRcblx0XHRyZXR1cm4gY29tYmluZUxhdGVzdChbXG5cdFx0XHR0aGlzLmNvb2tpZXNDb25zZW50ZWQkLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpLFxuXHRcdFx0dGhpcy5jb29raWVzQ29uc2VudENoYW5nZWQkLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpLFxuXHRcdF0pLnBpcGUoXG5cdFx0XHRtYXAoKCkgPT4ge1xuXHRcdFx0XHQvLyBJYmVuOiBDaGVjayBpZiB0aGUgc2VydmljZSB3aXRoaW4gdGhlIHByb3ZpZGVkIGNhdGVnb3J5IHdhcyBhY2NlcHRlZFxuXHRcdFx0XHRyZXR1cm4gQ29va2llQ29uc2VudC5hY2NlcHRlZFNlcnZpY2UobmFtZSwgY2F0ZWdvcnkpO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VwdCBhIGNhdGVnb3J5IG9mIGNvb2tpZXNcblx0ICpcblx0ICogQHBhcmFtIGNhdGVnb3J5IC0gVGhlIG5hbWUgb2YgdGhlIGNhdGVnb3J5XG5cdCAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2Vcblx0ICovXG5cdHB1YmxpYyBhY2NlcHRTZXJ2aWNlKGNhdGVnb3J5OiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdENvb2tpZUNvbnNlbnQuYWNjZXB0U2VydmljZShuYW1lLCBjYXRlZ29yeSk7XG5cdH1cblxuXHQvKipcblx0ICogU2hvdyB0aGUgY29va2llIG1vZGFsXG5cdCAqL1xuXHRwdWJsaWMgc2hvd01vZGFsKCk6IHZvaWQge1xuXHRcdENvb2tpZUNvbnNlbnQuc2hvdyh0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSBjb29raWVcblx0ICpcblx0ICogQHBhcmFtIGNvb2tpZSAtIE5hbWUgb2YgdGhlIGNvb2tpZVxuXHQgKi9cblx0cHVibGljIGdldENvb2tpZTxEYXRhVHlwZSA9IGFueT4oY29va2llOiBzdHJpbmcpOiBEYXRhVHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIChDb29raWVDb25zZW50LmdldENvb2tpZSgnZGF0YScpIHx8IHt9KVtjb29raWVdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIGNvb2tpZSBhcyBhbiBvYnNlcnZhYmxlXG5cdCAqXG5cdCAqIEBwYXJhbSBjb29raWUgLSBOYW1lIG9mIHRoZSBjb29raWVcblx0ICovXG5cdHB1YmxpYyBnZXRDb29raWVPYnNlcnZhYmxlPERhdGFUeXBlID0gYW55Pihjb29raWU6IHN0cmluZyk6IE9ic2VydmFibGU8RGF0YVR5cGUgfCB1bmRlZmluZWQ+IHtcblx0XHQvLyBJYmVuOiBSZXR1cm4gZXZlcnkgdGltZSB0aGUgc2V0IGNvb2tpZXMgYXJlIGNoYW5nZWRcblx0XHRyZXR1cm4gdGhpcy5jb29raWVzQ2hhbmdlZCQucGlwZShcblx0XHRcdHN0YXJ0V2l0aChDb29raWVDb25zZW50LmdldENvb2tpZSgnZGF0YScpIHx8IHt9KSxcblx0XHRcdC8vIEliZW46IEdldCB0aGUgY29va2llIHZhbHVlXG5cdFx0XHRtYXAoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRDb29raWU8RGF0YVR5cGU+KGNvb2tpZSk7XG5cdFx0XHR9KSxcblx0XHRcdC8vIEliZW46IEFzIHRoZSBjb29raWVzQ2hhbmdlZCBldmVudCBlbWl0cyBldmVyeSB0aW1lIGFsbCBjb29raWVzIGFyZSByZXN0LCB3ZSBjaGVjayBpZiB0aGUgY29va2llIHZhbHVlIHdhcyByZWFsbHkgY2hhbmdlZFxuXHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IGEgY29va2llXG5cdCAqXG5cdCAqIEBwYXJhbSBjb29raWUgLSBUaGUgY29va2llIHdlIHdpc2ggdG8gc2V0XG5cdCAqL1xuXHRwdWJsaWMgc2V0Q29va2llKGNvb2tpZTogTmd4Q29va2llVmFsdWUpOiB2b2lkIHtcblx0XHQvLyBJYmVuOiBTZXQgdGhlIGNvb2tpZVxuXHRcdGNvbnN0IGlzU2V0ID0gQ29va2llQ29uc2VudC5zZXRDb29raWVEYXRhKHtcblx0XHRcdHZhbHVlOiB7IFtjb29raWUubmFtZV06IGNvb2tpZS52YWx1ZSB9LFxuXHRcdFx0bW9kZTogJ3VwZGF0ZScsXG5cdFx0fSk7XG5cblx0XHQvLyBJYmVuOiBJZiB0aGUgY29va2llIHdhcyBub3Qgc2V0LCB3ZSByZXR1cm5cblx0XHRpZiAoIWlzU2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogVXBkYXRlIHRoZSBzdWJqZWN0IHNvIHdlIGNhbiBub3RpZnkgbGlzdGVuZXJzXG5cdFx0dGhpcy5jb29raWVzQ2hhbmdlZFN1YmplY3QubmV4dChDb29raWVDb25zZW50LmdldENvb2tpZSgnZGF0YScpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgYSBjb29raWVcblx0ICpcblx0ICogQHBhcmFtIGNvb2tpZSAtIFRoZSBjb29raWUgd2Ugd2lzaCB0byByZW1vdmVcblx0ICovXG5cdHB1YmxpYyByZW1vdmVDb29raWUoY29va2llOiBzdHJpbmcpOiB2b2lkIHtcblx0XHQvLyBJYmVuOiBHZXQgdGhlIGN1cnJlbnQgY29va2llc1xuXHRcdGNvbnN0IGN1cnJlbnRDb29raWVzID0gQ29va2llQ29uc2VudC5nZXRDb29raWUoJ2RhdGEnKSB8fCB7fTtcblxuXHRcdC8vIEliZW46IFJlbW92ZSB0aGUgY29va2llIGZyb20gdGhlIGN1cnJlbnRseSBzZXQgY29va2llc1xuXHRcdGNvbnN0IHsgW2Nvb2tpZV06IF9yZW1vdmVkVmFsdWUsIC4uLnZhbHVlIH0gPSBjdXJyZW50Q29va2llcztcblxuXHRcdC8vIEliZW46IFJlbW92ZSB0aGUgY29va2llIGZyb20gdGhlIGNvb2tpZXMgaG9sZGVyXG5cdFx0Y29uc3QgaXNTZXQgPSBDb29raWVDb25zZW50LnNldENvb2tpZURhdGEoeyB2YWx1ZSwgbW9kZTogJ292ZXJ3cml0ZScgfSk7XG5cblx0XHQvLyBJYmVuOiBJZiB0aGUgY29va2llIHdhcyBub3Qgc2V0LCB3ZSByZXR1cm5cblx0XHRpZiAoIWlzU2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogVXBkYXRlIHRoZSBzdWJqZWN0IHNvIHdlIGNhbiBub3RpZnkgbGlzdGVuZXJzXG5cdFx0dGhpcy5jb29raWVzQ2hhbmdlZFN1YmplY3QubmV4dChDb29raWVDb25zZW50LmdldENvb2tpZSgnZGF0YScpKTtcblx0fVxufVxuIl19","import { InjectionToken } from '@angular/core';\n/** A token to provide a fallback component that needs to be rendered when a specific (set of) cookie(s) was not accepted. */\nexport const NgxCookiesFallbackComponentToken = new InjectionToken('NgxCookiesFallbackComponent');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWNvb2tpZXMtZmFsbGJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29va2llcy9zcmMvbGliL3Rva2Vucy9oYXMtY29va2llcy1mYWxsYmFjay9oYXMtY29va2llcy1mYWxsYmFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBSXJELDZIQUE2SDtBQUM3SCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FFaEUsNkJBQTZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5neENvb2tpZXNGYWxsQmFja0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5cbi8qKiBBIHRva2VuIHRvIHByb3ZpZGUgYSBmYWxsYmFjayBjb21wb25lbnQgdGhhdCBuZWVkcyB0byBiZSByZW5kZXJlZCB3aGVuIGEgc3BlY2lmaWMgKHNldCBvZikgY29va2llKHMpIHdhcyBub3QgYWNjZXB0ZWQuICovXG5leHBvcnQgY29uc3QgTmd4Q29va2llc0ZhbGxiYWNrQ29tcG9uZW50VG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48XG5cdFR5cGU8Tmd4Q29va2llc0ZhbGxCYWNrQ29tcG9uZW50PlxuPignTmd4Q29va2llc0ZhbGxiYWNrQ29tcG9uZW50Jyk7XG4iXX0=","import { ChangeDetectorRef, Directive, Input, TemplateRef, ViewContainerRef, inject, } from '@angular/core';\nimport { Subject, tap, takeUntil, combineLatest, map } from 'rxjs';\nimport { flatten } from 'lodash';\nimport { NgxCookieService } from '../../services';\nimport { NgxCookiesFallbackComponentToken } from '../../tokens';\nimport * as i0 from \"@angular/core\";\n/**\n * A structural directive that provides a way to render UI elements based on whether a (set of) cookie(s) have been accepted by the user.\n */\nexport class NgxHasCookieDirective {\n /**\n * A cookie or list of cookies the item should have\n */\n set hasCookie(cookie) {\n this.cookies = Array.isArray(cookie) ? cookie : [cookie];\n this.updateView();\n }\n /**\n * The else template in case the cookie is not accepted\n */\n set hasCookieElse(ngTemplate) {\n this.elseTemplateRef = ngTemplate;\n this.updateView();\n }\n constructor() {\n this.viewContainer = inject(ViewContainerRef);\n this.ngxCookieService = inject(NgxCookieService);\n this.cdRef = inject(ChangeDetectorRef);\n this.component = inject(NgxCookiesFallbackComponentToken, { optional: true });\n /**\n * The needed templateRefs\n */\n this.thenTemplateRef = null;\n this.elseTemplateRef = null;\n /**\n * The list of cookies we need to check\n */\n this.cookies = [];\n const templateRef = inject(TemplateRef);\n this.thenTemplateRef = templateRef;\n }\n ngOnDestroy() {\n this.dispose();\n }\n /**\n * Updates the view and hides/renders the template as needed\n */\n updateView() {\n // Iben: Dispose the current subscription\n this.dispose();\n // Iben: Create a new onDestroyed handler\n this.destroyed$ = new Subject();\n // Iben: Render the views based on the correct state\n combineLatest(\n // Iben Check for each cookie if it is accepted\n this.cookies.map((cookie) => {\n // Iben: If no specific services were provided, we can just check the category\n if (!cookie.services) {\n return this.ngxCookieService.hasAcceptedCategory(cookie.category);\n }\n // Iben: If specific services were provided, we can just check each individual category\n return combineLatest(cookie.services.map((service) => {\n return this.ngxCookieService.hasAcceptedService(cookie.category, service);\n }));\n }))\n .pipe(map((hasCookies) => {\n return flatten(hasCookies).every((hasCookie) => hasCookie);\n }), tap((hasCookie) => {\n // Iben: Clear the current view\n this.viewContainer.clear();\n // Iben: If there already is a component, destroy it so it can update correctly\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = undefined;\n }\n // Iben: Render the correct templates\n hasCookie ? this.renderThenTemplate() : this.renderElseTemplate();\n // Iben: Detect the changes so that the view gets updated\n this.cdRef.detectChanges();\n }), takeUntil(this.destroyed$))\n .subscribe();\n }\n /**\n * Dispose the current subscription\n */\n dispose() {\n if (this.destroyed$) {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n }\n /**\n * Render the template on which the directive is set\n */\n renderThenTemplate() {\n // Iben: If a thenTemplateRef is provided, render the template\n if (this.thenTemplateRef) {\n this.viewContainer.createEmbeddedView(this.thenTemplateRef);\n }\n }\n /**\n * Render the fallbackTemplate or fallBackComponent\n */\n renderElseTemplate() {\n // Iben: If a custom template ref was provided, render the template and early exit\n if (this.elseTemplateRef) {\n this.viewContainer.createEmbeddedView(this.elseTemplateRef);\n return;\n }\n // Iben: If a component was provided as a fallback, we render that\n if (this.component) {\n // Iben: Render the provided component\n this.componentRef = this.viewContainer.createComponent(this.component);\n // Iben: Set the cookies of the component\n this.componentRef.setInput('cookies', this.cookies);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxHasCookieDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.2.4\", type: NgxHasCookieDirective, isStandalone: true, selector: \"[hasCookie]\", inputs: { hasCookie: \"hasCookie\", hasCookieElse: \"hasCookieElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxHasCookieDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[hasCookie]',\n standalone: true,\n }]\n }], ctorParameters: () => [], propDecorators: { hasCookie: [{\n type: Input\n }], hasCookieElse: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWNvb2tpZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29va2llcy9zcmMvbGliL2RpcmVjdGl2ZXMvaGFzLWNvb2tpZS9oYXMtY29va2llLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04saUJBQWlCLEVBRWpCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUVYLGdCQUFnQixFQUVoQixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRWhFOztHQUVHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQStCakM7O09BRUc7SUFDSCxJQUFvQixTQUFTLENBQUMsTUFBK0Q7UUFDNUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQW9CLGFBQWEsQ0FBQyxVQUE0QjtRQUM3RCxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEO1FBOUNRLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEMs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Q0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3pCLGtGQUFrRjtRQUNsRixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUU1RCxPQUFPO1FBQ1IsQ0FBQztRQUVELGtFQUFrRTtRQUNsRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FDckQsSUFBSSxDQUFDLFNBQVMsQ0FDZCxDQUFDO1lBRUYseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNGLENBQUM7OEdBdEpXLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDaEI7d0RBbUNvQixTQUFTO3NCQUE1QixLQUFLO2dCQVFjLGFBQWE7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50UmVmLFxuXHREaXJlY3RpdmUsXG5cdElucHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0VHlwZSxcblx0Vmlld0NvbnRhaW5lclJlZixcblx0T25EZXN0cm95LFxuXHRpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFwLCB0YWtlVW50aWwsIGNvbWJpbmVMYXRlc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IE5neEhhc0Nvb2tpZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBOZ3hDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgTmd4Q29va2llc0ZhbGxCYWNrQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RzJztcbmltcG9ydCB7IE5neENvb2tpZXNGYWxsYmFja0NvbXBvbmVudFRva2VuIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcblxuLyoqXG4gKiBBIHN0cnVjdHVyYWwgZGlyZWN0aXZlIHRoYXQgcHJvdmlkZXMgYSB3YXkgdG8gcmVuZGVyIFVJIGVsZW1lbnRzIGJhc2VkIG9uIHdoZXRoZXIgYSAoc2V0IG9mKSBjb29raWUocykgaGF2ZSBiZWVuIGFjY2VwdGVkIGJ5IHRoZSB1c2VyLlxuICovXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbaGFzQ29va2llXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5neEhhc0Nvb2tpZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cdHByaXZhdGUgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblx0cHJpdmF0ZSByZWFkb25seSBuZ3hDb29raWVTZXJ2aWNlID0gaW5qZWN0KE5neENvb2tpZVNlcnZpY2UpO1xuXHRwcml2YXRlIHJlYWRvbmx5IGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblx0cHJpdmF0ZSByZWFkb25seSBjb21wb25lbnQgPSBpbmplY3Q8VHlwZTxOZ3hDb29raWVzRmFsbEJhY2tDb21wb25lbnQ+Pihcblx0XHROZ3hDb29raWVzRmFsbGJhY2tDb21wb25lbnRUb2tlbixcblx0XHR7IG9wdGlvbmFsOiB0cnVlIH1cblx0KTtcblxuXHQvL1RPRE86IEliZW46IFJlcGxhY2UgdGhpcyB3aXRoIHRoZSBPbkRlc3Ryb3lDb21wb25lbnQgZmxvdyBvbmNlIHdlIGhhdmUgYSBzaGFyZWQgbGliXG5cdC8qKlxuXHQgKiBUaGUgZGVzdHJveWVkIHN0YXRlIG9mIHRoZSBkaXJlY3RpdmVcblx0ICovXG5cdHByaXZhdGUgZGVzdHJveWVkJDogU3ViamVjdDx2b2lkPjtcblxuXHQvKipcblx0ICogVGhlIG5lZWRlZCB0ZW1wbGF0ZVJlZnNcblx0ICovXG5cdHByaXZhdGUgdGhlblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgZWxzZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSByZWYgb2YgdGhlIGNvbXBvbmVudCB3ZSB3aXNoIHRvIHJlbmRlciBhcyBhIGZhbGxiYWNrXG5cdCAqL1xuXHRwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE5neENvb2tpZXNGYWxsQmFja0NvbXBvbmVudD47XG5cblx0LyoqXG5cdCAqIFRoZSBsaXN0IG9mIGNvb2tpZXMgd2UgbmVlZCB0byBjaGVja1xuXHQgKi9cblx0cHJpdmF0ZSBjb29raWVzOiBOZ3hIYXNDb29raWVDb25maWd1cmF0aW9uW10gPSBbXTtcblxuXHQvKipcblx0ICogQSBjb29raWUgb3IgbGlzdCBvZiBjb29raWVzIHRoZSBpdGVtIHNob3VsZCBoYXZlXG5cdCAqL1xuXHRASW5wdXQoKSBwdWJsaWMgc2V0IGhhc0Nvb2tpZShjb29raWU6IE5neEhhc0Nvb2tpZUNvbmZpZ3VyYXRpb24gfCBOZ3hIYXNDb29raWVDb25maWd1cmF0aW9uW10pIHtcblx0XHR0aGlzLmNvb2tpZXMgPSBBcnJheS5pc0FycmF5KGNvb2tpZSkgPyBjb29raWUgOiBbY29va2llXTtcblx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZWxzZSB0ZW1wbGF0ZSBpbiBjYXNlIHRoZSBjb29raWUgaXMgbm90IGFjY2VwdGVkXG5cdCAqL1xuXHRASW5wdXQoKSBwdWJsaWMgc2V0IGhhc0Nvb2tpZUVsc2UobmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuXHRcdHRoaXMuZWxzZVRlbXBsYXRlUmVmID0gbmdUZW1wbGF0ZTtcblx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPGFueT4+KFRlbXBsYXRlUmVmKTtcblxuXHRcdHRoaXMudGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG5cdH1cblxuXHRwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5kaXNwb3NlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdmlldyBhbmQgaGlkZXMvcmVuZGVycyB0aGUgdGVtcGxhdGUgYXMgbmVlZGVkXG5cdCAqL1xuXHRwcml2YXRlIHVwZGF0ZVZpZXcoKTogdm9pZCB7XG5cdFx0Ly8gSWJlbjogRGlzcG9zZSB0aGUgY3VycmVudCBzdWJzY3JpcHRpb25cblx0XHR0aGlzLmRpc3Bvc2UoKTtcblxuXHRcdC8vIEliZW46IENyZWF0ZSBhIG5ldyBvbkRlc3Ryb3llZCBoYW5kbGVyXG5cdFx0dGhpcy5kZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuXHRcdC8vIEliZW46IFJlbmRlciB0aGUgdmlld3MgYmFzZWQgb24gdGhlIGNvcnJlY3Qgc3RhdGVcblx0XHRjb21iaW5lTGF0ZXN0KFxuXHRcdFx0Ly8gSWJlbiBDaGVjayBmb3IgZWFjaCBjb29raWUgaWYgaXQgaXMgYWNjZXB0ZWRcblx0XHRcdHRoaXMuY29va2llcy5tYXAoKGNvb2tpZSkgPT4ge1xuXHRcdFx0XHQvLyBJYmVuOiBJZiBubyBzcGVjaWZpYyBzZXJ2aWNlcyB3ZXJlIHByb3ZpZGVkLCB3ZSBjYW4ganVzdCBjaGVjayB0aGUgY2F0ZWdvcnlcblx0XHRcdFx0aWYgKCFjb29raWUuc2VydmljZXMpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5uZ3hDb29raWVTZXJ2aWNlLmhhc0FjY2VwdGVkQ2F0ZWdvcnkoY29va2llLmNhdGVnb3J5KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEliZW46IElmIHNwZWNpZmljIHNlcnZpY2VzIHdlcmUgcHJvdmlkZWQsIHdlIGNhbiBqdXN0IGNoZWNrIGVhY2ggaW5kaXZpZHVhbCBjYXRlZ29yeVxuXHRcdFx0XHRyZXR1cm4gY29tYmluZUxhdGVzdChcblx0XHRcdFx0XHRjb29raWUuc2VydmljZXMubWFwKChzZXJ2aWNlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5uZ3hDb29raWVTZXJ2aWNlLmhhc0FjY2VwdGVkU2VydmljZShjb29raWUuY2F0ZWdvcnksIHNlcnZpY2UpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdClcblx0XHRcdC5waXBlKFxuXHRcdFx0XHRtYXAoKGhhc0Nvb2tpZXMpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZmxhdHRlbihoYXNDb29raWVzKS5ldmVyeSgoaGFzQ29va2llKSA9PiBoYXNDb29raWUpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFwKChoYXNDb29raWUpID0+IHtcblx0XHRcdFx0XHQvLyBJYmVuOiBDbGVhciB0aGUgY3VycmVudCB2aWV3XG5cdFx0XHRcdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cblx0XHRcdFx0XHQvLyBJYmVuOiBJZiB0aGVyZSBhbHJlYWR5IGlzIGEgY29tcG9uZW50LCBkZXN0cm95IGl0IHNvIGl0IGNhbiB1cGRhdGUgY29ycmVjdGx5XG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBJYmVuOiBSZW5kZXIgdGhlIGNvcnJlY3QgdGVtcGxhdGVzXG5cdFx0XHRcdFx0aGFzQ29va2llID8gdGhpcy5yZW5kZXJUaGVuVGVtcGxhdGUoKSA6IHRoaXMucmVuZGVyRWxzZVRlbXBsYXRlKCk7XG5cblx0XHRcdFx0XHQvLyBJYmVuOiBEZXRlY3QgdGhlIGNoYW5nZXMgc28gdGhhdCB0aGUgdmlldyBnZXRzIHVwZGF0ZWRcblx0XHRcdFx0XHR0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcG9zZSB0aGUgY3VycmVudCBzdWJzY3JpcHRpb25cblx0ICovXG5cdHByaXZhdGUgZGlzcG9zZSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5kZXN0cm95ZWQkKSB7XG5cdFx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdFx0dGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlciB0aGUgdGVtcGxhdGUgb24gd2hpY2ggdGhlIGRpcmVjdGl2ZSBpcyBzZXRcblx0ICovXG5cdHByaXZhdGUgcmVuZGVyVGhlblRlbXBsYXRlKCk6IHZvaWQge1xuXHRcdC8vIEliZW46IElmIGEgdGhlblRlbXBsYXRlUmVmIGlzIHByb3ZpZGVkLCByZW5kZXIgdGhlIHRlbXBsYXRlXG5cdFx0aWYgKHRoaXMudGhlblRlbXBsYXRlUmVmKSB7XG5cdFx0XHR0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGhlblRlbXBsYXRlUmVmKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVuZGVyIHRoZSBmYWxsYmFja1RlbXBsYXRlIG9yIGZhbGxCYWNrQ29tcG9uZW50XG5cdCAqL1xuXHRwcml2YXRlIHJlbmRlckVsc2VUZW1wbGF0ZSgpOiB2b2lkIHtcblx0XHQvLyBJYmVuOiBJZiBhIGN1c3RvbSB0ZW1wbGF0ZSByZWYgd2FzIHByb3ZpZGVkLCByZW5kZXIgdGhlIHRlbXBsYXRlIGFuZCBlYXJseSBleGl0XG5cdFx0aWYgKHRoaXMuZWxzZVRlbXBsYXRlUmVmKSB7XG5cdFx0XHR0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuZWxzZVRlbXBsYXRlUmVmKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEliZW46IElmIGEgY29tcG9uZW50IHdhcyBwcm92aWRlZCBhcyBhIGZhbGxiYWNrLCB3ZSByZW5kZXIgdGhhdFxuXHRcdGlmICh0aGlzLmNvbXBvbmVudCkge1xuXHRcdFx0Ly8gSWJlbjogUmVuZGVyIHRoZSBwcm92aWRlZCBjb21wb25lbnRcblx0XHRcdHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxOZ3hDb29raWVzRmFsbEJhY2tDb21wb25lbnQ+KFxuXHRcdFx0XHR0aGlzLmNvbXBvbmVudFxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gSWJlbjogU2V0IHRoZSBjb29raWVzIG9mIHRoZSBjb21wb25lbnRcblx0XHRcdHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdjb29raWVzJywgdGhpcy5jb29raWVzKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==","import { Directive, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n *An abstract component that can optionally be used as a fallback to content that depends on accepted cookies\n */\nexport class NgxCookiesFallBackComponent {\n constructor() {\n /**\n * The cookies that were required to show the original content\n */\n this.cookies = [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxCookiesFallBackComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.2.4\", type: NgxCookiesFallBackComponent, isStandalone: true, inputs: { cookies: \"cookies\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxCookiesFallBackComponent, decorators: [{\n type: Directive\n }], propDecorators: { cookies: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWZhbGxiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb29raWVzL3NyYy9saWIvYWJzdHJhY3RzL2Nvb2tpZS1mYWxsYmFjay9jb29raWUtZmFsbGJhY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRDs7R0FFRztBQUVILE1BQU0sT0FBZ0IsMkJBQTJCO0lBRGpEO1FBRUM7O1dBRUc7UUFDTSxZQUFPLEdBQWdDLEVBQUUsQ0FBQztLQUNuRDs4R0FMcUIsMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRGhELFNBQVM7OEJBS0EsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4SGFzQ29va2llQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKkFuIGFic3RyYWN0IGNvbXBvbmVudCB0aGF0IGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgYXMgYSBmYWxsYmFjayB0byBjb250ZW50IHRoYXQgZGVwZW5kcyBvbiBhY2NlcHRlZCBjb29raWVzXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5neENvb2tpZXNGYWxsQmFja0NvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBUaGUgY29va2llcyB0aGF0IHdlcmUgcmVxdWlyZWQgdG8gc2hvdyB0aGUgb3JpZ2luYWwgY29udGVudFxuXHQgKi9cblx0QElucHV0KCkgY29va2llczogTmd4SGFzQ29va2llQ29uZmlndXJhdGlvbltdID0gW107XG59XG4iXX0=","/*\n * Public API Surface of ngx-cookies\n */\nexport { NgxCookieService } from './lib/services';\nexport { NgxHasCookieDirective } from './lib/directives';\nexport { NgxCookiesFallBackComponent } from './lib/abstracts';\nexport { NgxCookiesFallbackComponentToken } from './lib/tokens';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29va2llcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1jb29raWVzXG4gKi9cbmV4cG9ydCB7IE5neENvb2tpZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgeyBOZ3hIYXNDb29raWVEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCB7IE5neENvb2tpZXNGYWxsQmFja0NvbXBvbmVudCB9IGZyb20gJy4vbGliL2Fic3RyYWN0cyc7XG5leHBvcnQgeyBOZ3hDb29raWVzRmFsbGJhY2tDb21wb25lbnRUb2tlbiB9IGZyb20gJy4vbGliL3Rva2Vucyc7XG5leHBvcnQge1xuXHROZ3hDb29raWVDb25maWd1cmF0aW9uLFxuXHROZ3hDb29raWVDYXRlZ29yaWVzLFxuXHROZ3hDb29raWVMYW5ndWFnZUNvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4vbGliL3R5cGVzJztcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1ZGlvaHlwZXJkcml2ZS1uZ3gtY29va2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb29raWVzL3NyYy9zdHVkaW9oeXBlcmRyaXZlLW5neC1jb29raWVzLnRzIl0sIm5hbWVz