{"version":3,"file":"studiohyperdrive-ngx-utils.mjs","sources":["../tmp-esm2022/lib/directives/focus-click/focus-click.directive.js","../tmp-esm2022/lib/directives/index.js","../tmp-esm2022/lib/injects/query-params/query-params.inject.js","../tmp-esm2022/lib/services/broadcast-channel/broadcast-channel.service.js","../tmp-esm2022/lib/services/subscription-service/subscription.service.js","../tmp-esm2022/lib/services/storage-service/storage.service.js","../tmp-esm2022/lib/services/media-query/mediaquery.service.js","../tmp-esm2022/lib/pipes/array-contains-one/array-contains-one.pipe.js","../tmp-esm2022/lib/pipes/btw/btw.pipe.js","../tmp-esm2022/lib/pipes/clean-array/clean-array.pipe.js","../tmp-esm2022/lib/pipes/entries/entries.pipe.js","../tmp-esm2022/lib/pipes/has-observers/has-observers.pipe.js","../tmp-esm2022/lib/pipes/has-own-property/has-own-property.pipe.js","../tmp-esm2022/lib/pipes/has-values/has-values.pipe.js","../tmp-esm2022/lib/pipes/highlight/ngx-highlight.pipe.js","../tmp-esm2022/lib/pipes/iban/iban.pipe.js","../tmp-esm2022/lib/pipes/is-not-empty/is-not-empty.pipe.js","../tmp-esm2022/lib/pipes/join/join.pipe.js","../tmp-esm2022/lib/pipes/limit-to/limit-to.pipe.js","../tmp-esm2022/lib/pipes/log/log.pipe.js","../tmp-esm2022/lib/pipes/merge-arrays/merge-arrays.pipe.js","../tmp-esm2022/lib/tokens/replace-elements.token.js","../tmp-esm2022/lib/pipes/replace-elements/replace-elements.pipe.js","../tmp-esm2022/lib/pipes/safe-html/safe-html.pipe.js","../tmp-esm2022/lib/pipes/strip-html/strip-html.pipe.js","../tmp-esm2022/lib/pipes/to-array/to-array.pipe.js","../tmp-esm2022/lib/pipes/transform/transform.pipe.js","../tmp-esm2022/lib/pipes/truncate-text/truncate-text.pipe.js","../tmp-esm2022/lib/pipes/unique-by/uniq-by.pipe.js","../tmp-esm2022/lib/pipes/with-router-links/with-router-links.config.js","../tmp-esm2022/lib/pipes/with-router-links/with-router-links.pipe.js","../tmp-esm2022/lib/pipes/index.js","../tmp-esm2022/lib/abstracts/query-param-form-sync/query-param-form-sync.component.abstract.js","../tmp-esm2022/lib/providers/replace-elements/replace-elements.provider.js","../tmp-esm2022/lib/utils/simple-changes/simple-changes.util.js","../tmp-esm2022/public-api.js","../tmp-esm2022/studiohyperdrive-ngx-utils.js"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class FocusClickDirective {\n    constructor() {\n        // Allow the button to ignore click events when set to true\n        this.disabled = false;\n        // Allow the function passed by the host to be executed\n        // when the emit() method gets called\n        /**\n         * This directive replaces the default `click` directive and allows the user to execute\n         * the `click` event by clicking the mouse **and**  by using the `enter` key on focus.\n         *\n         * A tabindex of `0` gets added to the host.\n         *\n         * @memberof FocusClickDirective\n         */\n        this.focusClick = new EventEmitter();\n        // Make every tag that uses this directive by default tabbable\n        this.tabIndex = 0;\n    }\n    // Add eventhandler to the click event\n    isClicked(event) {\n        if (!this.disabled) {\n            this.focusClick.emit(event);\n        }\n    }\n    // Add eventhandler to keydown event When enter is pressed and the event\n    // isn't blocked, execute the click function of the host\n    isEntered() {\n        if (!this.disabled) {\n            this.focusClick.emit();\n        }\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: FocusClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.2.4\", type: FocusClickDirective, isStandalone: true, selector: \"[focusClick]\", inputs: { disabled: \"disabled\" }, outputs: { focusClick: \"focusClick\" }, host: { listeners: { \"click\": \"isClicked($event)\", \"keydown.enter\": \"isEntered()\" }, properties: { \"attr.tabindex\": \"this.tabIndex\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: FocusClickDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[focusClick]',\n                    standalone: true,\n                }]\n        }], propDecorators: { disabled: [{\n                type: Input\n            }], focusClick: [{\n                type: Output\n            }], tabIndex: [{\n                type: HostBinding,\n                args: ['attr.tabindex']\n            }], isClicked: [{\n                type: HostListener,\n                args: ['click', ['$event']]\n            }], isEntered: [{\n                type: HostListener,\n                args: ['keydown.enter']\n            }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtY2xpY2suZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy1jbGljay9mb2N1cy1jbGljay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1sRyxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS0MsMkRBQTJEO1FBQzNDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUMsdURBQXVEO1FBQ3ZELHFDQUFxQztRQUNyQzs7Ozs7OztXQU9HO1FBQ3VCLGVBQVUsR0FDbkMsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFbEMsOERBQThEO1FBQ2YsYUFBUSxHQUFXLENBQUMsQ0FBQztLQWtCcEU7SUFoQkEsc0NBQXNDO0lBRTlCLFNBQVMsQ0FBQyxLQUFZO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNGLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsd0RBQXdEO0lBRWhELFNBQVM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDRixDQUFDOzhHQW5DVyxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzhCQUdnQixRQUFRO3NCQUF2QixLQUFLO2dCQVlvQixVQUFVO3NCQUFuQyxNQUFNO2dCQUl3QyxRQUFRO3NCQUF0RCxXQUFXO3VCQUFDLGVBQWU7Z0JBSXBCLFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVV6QixTQUFTO3NCQURoQixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbZm9jdXNDbGlja10nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c0NsaWNrRGlyZWN0aXZlIHtcblx0Ly8gQWxsb3cgdGhlIGJ1dHRvbiB0byBpZ25vcmUgY2xpY2sgZXZlbnRzIHdoZW4gc2V0IHRvIHRydWVcblx0QElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cblx0Ly8gQWxsb3cgdGhlIGZ1bmN0aW9uIHBhc3NlZCBieSB0aGUgaG9zdCB0byBiZSBleGVjdXRlZFxuXHQvLyB3aGVuIHRoZSBlbWl0KCkgbWV0aG9kIGdldHMgY2FsbGVkXG5cdC8qKlxuXHQgKiBUaGlzIGRpcmVjdGl2ZSByZXBsYWNlcyB0aGUgZGVmYXVsdCBgY2xpY2tgIGRpcmVjdGl2ZSBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGV4ZWN1dGVcblx0ICogdGhlIGBjbGlja2AgZXZlbnQgYnkgY2xpY2tpbmcgdGhlIG1vdXNlICoqYW5kKiogIGJ5IHVzaW5nIHRoZSBgZW50ZXJgIGtleSBvbiBmb2N1cy5cblx0ICpcblx0ICogQSB0YWJpbmRleCBvZiBgMGAgZ2V0cyBhZGRlZCB0byB0aGUgaG9zdC5cblx0ICpcblx0ICogQG1lbWJlcm9mIEZvY3VzQ2xpY2tEaXJlY3RpdmVcblx0ICovXG5cdEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgZm9jdXNDbGljazogRXZlbnRFbWl0dGVyPHZvaWQgfCBFdmVudD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8dm9pZCB8IEV2ZW50PigpO1xuXG5cdC8vIE1ha2UgZXZlcnkgdGFnIHRoYXQgdXNlcyB0aGlzIGRpcmVjdGl2ZSBieSBkZWZhdWx0IHRhYmJhYmxlXG5cdEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHByaXZhdGUgcmVhZG9ubHkgdGFiSW5kZXg6IG51bWJlciA9IDA7XG5cblx0Ly8gQWRkIGV2ZW50aGFuZGxlciB0byB0aGUgY2xpY2sgZXZlbnRcblx0QEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuXHRwcml2YXRlIGlzQ2xpY2tlZChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuZGlzYWJsZWQpIHtcblx0XHRcdHRoaXMuZm9jdXNDbGljay5lbWl0KGV2ZW50KTtcblx0XHR9XG5cdH1cblxuXHQvLyBBZGQgZXZlbnRoYW5kbGVyIHRvIGtleWRvd24gZXZlbnQgV2hlbiBlbnRlciBpcyBwcmVzc2VkIGFuZCB0aGUgZXZlbnRcblx0Ly8gaXNuJ3QgYmxvY2tlZCwgZXhlY3V0ZSB0aGUgY2xpY2sgZnVuY3Rpb24gb2YgdGhlIGhvc3Rcblx0QEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicpXG5cdHByaXZhdGUgaXNFbnRlcmVkKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5kaXNhYmxlZCkge1xuXHRcdFx0dGhpcy5mb2N1c0NsaWNrLmVtaXQoKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==","import { FocusClickDirective } from './focus-click/focus-click.directive';\nexport const Directives = [FocusClickDirective];\nexport { FocusClickDirective } from './focus-click/focus-click.directive';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9kaXJlY3RpdmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0NsaWNrRGlyZWN0aXZlIH0gZnJvbSAnLi9mb2N1cy1jbGljay9mb2N1cy1jbGljay5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgRGlyZWN0aXZlcyA9IFtGb2N1c0NsaWNrRGlyZWN0aXZlXTtcblxuZXhwb3J0IHsgRm9jdXNDbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXMtY2xpY2svZm9jdXMtY2xpY2suZGlyZWN0aXZlJztcbiJdfQ==","import { inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nexport const getQueryParams = () => {\n    return inject(ActivatedRoute).queryParams;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW1zLmluamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2luamVjdHMvcXVlcnktcGFyYW1zL3F1ZXJ5LXBhcmFtcy5pbmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQXFDLEVBQUU7SUFDcEUsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBb0MsQ0FBQztBQUNwRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IGdldFF1ZXJ5UGFyYW1zID0gPFBhcmFtVHlwZT4oKTogT2JzZXJ2YWJsZTxQYXJhbVR5cGU+ID0+IHtcblx0cmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucXVlcnlQYXJhbXMgYXMgT2JzZXJ2YWJsZTxQYXJhbVR5cGU+O1xufTtcbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { EMPTY, fromEvent } from 'rxjs';\nimport { NgxWindowService } from '@studiohyperdrive/ngx-core';\nimport * as i0 from \"@angular/core\";\n/**\n * A service that wraps the BroadCastChannel API and provides an Observable based implementation to the channel messages.\n *\n * For more information:\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\n */\nexport class NgxBroadcastChannelService {\n    constructor() {\n        this.windowService = inject(NgxWindowService);\n        /**\n         * A record holding all the broadcast channels\n         */\n        this.broadcastChannel = {};\n    }\n    /**\n     * initChannel\n     *\n     * The initChannel method initializes a new BroadcastChannel instance.\n     *\n     * @param args{ConstructorParameters<typeof BroadcastChannel>} - The arguments to pass to the BroadcastChannel constructor.\n     */\n    initChannel(...args) {\n        // Iben: Only run when in browser\n        this.windowService.runInBrowser(() => {\n            const [channelName] = args;\n            if (!channelName) {\n                console.error('NgxUtils: There was an attempt to initialize a BroadcastChannel without providing a name.');\n                return;\n            }\n            if (!this.broadcastChannel[channelName]) {\n                this.broadcastChannel[channelName] = new BroadcastChannel(...args);\n            }\n        });\n    }\n    /**\n     * closeChannel\n     *\n     * The closeChannel method closes a selected BroadcastChannel instance.\n     *\n     * @param channelName{string} - The name of the Broadcast Channel.\n     */\n    closeChannel(channelName) {\n        if (!channelName || !this.broadcastChannel[channelName]) {\n            return;\n        }\n        this.broadcastChannel[channelName].close();\n        delete this.broadcastChannel[channelName];\n    }\n    /**\n     * postMessage\n     *\n     * The postMessage method sends a message to a selected BroadcastChannel instance.\n     *\n     * @param channelName{string} - The name of the Broadcast Channel.\n     * @param message{any} - The payload to send through the channel.\n     */\n    postMessage(channelName, message) {\n        if (!channelName || !this.broadcastChannel[channelName]) {\n            console.error('NgxUtils: There was an attempt to post a message to a channel without providing a name or the selected channel does not exist. The included message was:', message);\n            return;\n        }\n        this.broadcastChannel[channelName].postMessage(message);\n    }\n    /**\n     * selectChannelMessages\n     *\n     * The selectChannelMessages method subscribes to the `message` (bc.onmessage) event of a selected BroadcastChannel instance.\n     *\n     * @param channelName{string} - The name of the Broadcast Channel.\n     * @returns Observable<MessageEvent> - The message event of the channel wrapped in an observable.\n     */\n    selectChannelMessages(channelName) {\n        if (!channelName || !this.broadcastChannel[channelName]) {\n            console.error(\"NgxUtils: There was an attempt to select a BroadcastChannel's messages without providing a name or the selected channel does not exist.\");\n            return EMPTY;\n        }\n        return fromEvent(this.broadcastChannel[channelName], 'message');\n    }\n    /**\n     * selectChannelMessageErrors\n     *\n     * The selectChannelMessageErrors method subscribes to the `messageerror` (bc.onmessageerror) event of a selected BroadcastChannel instance.\n     *\n     * @param channelName{string} - The name of the Broadcast Channel.\n     * @returns Observable<MessageEvent> - The messageerror event of the channel wrapped in an observable.\n     */\n    selectChannelMessageErrors(channelName) {\n        if (!channelName || !this.broadcastChannel[channelName]) {\n            console.error(\"NgxUtils: There was an attempt to select a BroadcastChannel's message errors without providing a name or the selected channel does not exist.\");\n            return EMPTY;\n        }\n        return fromEvent(this.broadcastChannel[channelName], 'messageerror');\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxBroadcastChannelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxBroadcastChannelService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxBroadcastChannelService, decorators: [{\n            type: Injectable,\n            args: [{\n                    providedIn: 'root',\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0LWNoYW5uZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3NlcnZpY2VzL2Jyb2FkY2FzdC1jaGFubmVsL2Jyb2FkY2FzdC1jaGFubmVsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRTlEOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUh2QztRQUlrQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFEOztXQUVHO1FBQ0sscUJBQWdCLEdBQXFDLEVBQUUsQ0FBQztLQStHaEU7SUE3R0E7Ozs7OztPQU1HO0lBQ0ksV0FBVyxDQUFDLEdBQUcsSUFBb0Q7UUFDekUsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBRTNCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEtBQUssQ0FDWiwyRkFBMkYsQ0FDM0YsQ0FBQztnQkFFRixPQUFPO1lBQ1IsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWSxDQUFDLFdBQW1CO1FBQ3RDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxPQUFPO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBb0IsV0FBbUIsRUFBRSxPQUFvQjtRQUM5RSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxDQUFDLEtBQUssQ0FDWiwwSkFBMEosRUFDMUosT0FBTyxDQUNQLENBQUM7WUFFRixPQUFPO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxxQkFBcUIsQ0FDM0IsV0FBbUI7UUFFbkIsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sQ0FBQyxLQUFLLENBQ1oseUlBQXlJLENBQ3pJLENBQUM7WUFFRixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBNEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksMEJBQTBCLENBQ2hDLFdBQW1CO1FBRW5CLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxPQUFPLENBQUMsS0FBSyxDQUNaLCtJQUErSSxDQUMvSSxDQUFDO1lBRUYsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUNsQyxjQUFjLENBQ2QsQ0FBQztJQUNILENBQUM7OEdBcEhXLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRjFCLE1BQU07OzJGQUVOLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5neFdpbmRvd1NlcnZpY2UgfSBmcm9tICdAc3R1ZGlvaHlwZXJkcml2ZS9uZ3gtY29yZSc7XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRoYXQgd3JhcHMgdGhlIEJyb2FkQ2FzdENoYW5uZWwgQVBJIGFuZCBwcm92aWRlcyBhbiBPYnNlcnZhYmxlIGJhc2VkIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjaGFubmVsIG1lc3NhZ2VzLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Jyb2FkY2FzdENoYW5uZWxcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5neEJyb2FkY2FzdENoYW5uZWxTZXJ2aWNlIHtcblx0cHJpdmF0ZSByZWFkb25seSB3aW5kb3dTZXJ2aWNlID0gaW5qZWN0KE5neFdpbmRvd1NlcnZpY2UpO1xuXG5cdC8qKlxuXHQgKiBBIHJlY29yZCBob2xkaW5nIGFsbCB0aGUgYnJvYWRjYXN0IGNoYW5uZWxzXG5cdCAqL1xuXHRwcml2YXRlIGJyb2FkY2FzdENoYW5uZWw6IFJlY29yZDxzdHJpbmcsIEJyb2FkY2FzdENoYW5uZWw+ID0ge307XG5cblx0LyoqXG5cdCAqIGluaXRDaGFubmVsXG5cdCAqXG5cdCAqIFRoZSBpbml0Q2hhbm5lbCBtZXRob2QgaW5pdGlhbGl6ZXMgYSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIGFyZ3N7Q29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBCcm9hZGNhc3RDaGFubmVsPn0gLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIEJyb2FkY2FzdENoYW5uZWwgY29uc3RydWN0b3IuXG5cdCAqL1xuXHRwdWJsaWMgaW5pdENoYW5uZWwoLi4uYXJnczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBCcm9hZGNhc3RDaGFubmVsPik6IHZvaWQge1xuXHRcdC8vIEliZW46IE9ubHkgcnVuIHdoZW4gaW4gYnJvd3NlclxuXHRcdHRoaXMud2luZG93U2VydmljZS5ydW5JbkJyb3dzZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2NoYW5uZWxOYW1lXSA9IGFyZ3M7XG5cblx0XHRcdGlmICghY2hhbm5lbE5hbWUpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0XHQnTmd4VXRpbHM6IFRoZXJlIHdhcyBhbiBhdHRlbXB0IHRvIGluaXRpYWxpemUgYSBCcm9hZGNhc3RDaGFubmVsIHdpdGhvdXQgcHJvdmlkaW5nIGEgbmFtZS4nXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXRoaXMuYnJvYWRjYXN0Q2hhbm5lbFtjaGFubmVsTmFtZV0pIHtcblx0XHRcdFx0dGhpcy5icm9hZGNhc3RDaGFubmVsW2NoYW5uZWxOYW1lXSA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKC4uLmFyZ3MpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIGNsb3NlQ2hhbm5lbFxuXHQgKlxuXHQgKiBUaGUgY2xvc2VDaGFubmVsIG1ldGhvZCBjbG9zZXMgYSBzZWxlY3RlZCBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0gY2hhbm5lbE5hbWV7c3RyaW5nfSAtIFRoZSBuYW1lIG9mIHRoZSBCcm9hZGNhc3QgQ2hhbm5lbC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZUNoYW5uZWwoY2hhbm5lbE5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICghY2hhbm5lbE5hbWUgfHwgIXRoaXMuYnJvYWRjYXN0Q2hhbm5lbFtjaGFubmVsTmFtZV0pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmJyb2FkY2FzdENoYW5uZWxbY2hhbm5lbE5hbWVdLmNsb3NlKCk7XG5cdFx0ZGVsZXRlIHRoaXMuYnJvYWRjYXN0Q2hhbm5lbFtjaGFubmVsTmFtZV07XG5cdH1cblxuXHQvKipcblx0ICogcG9zdE1lc3NhZ2Vcblx0ICpcblx0ICogVGhlIHBvc3RNZXNzYWdlIG1ldGhvZCBzZW5kcyBhIG1lc3NhZ2UgdG8gYSBzZWxlY3RlZCBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0gY2hhbm5lbE5hbWV7c3RyaW5nfSAtIFRoZSBuYW1lIG9mIHRoZSBCcm9hZGNhc3QgQ2hhbm5lbC5cblx0ICogQHBhcmFtIG1lc3NhZ2V7YW55fSAtIFRoZSBwYXlsb2FkIHRvIHNlbmQgdGhyb3VnaCB0aGUgY2hhbm5lbC5cblx0ICovXG5cdHB1YmxpYyBwb3N0TWVzc2FnZTxNZXNzYWdlVHlwZSA9IGFueT4oY2hhbm5lbE5hbWU6IHN0cmluZywgbWVzc2FnZTogTWVzc2FnZVR5cGUpOiB2b2lkIHtcblx0XHRpZiAoIWNoYW5uZWxOYW1lIHx8ICF0aGlzLmJyb2FkY2FzdENoYW5uZWxbY2hhbm5lbE5hbWVdKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XHQnTmd4VXRpbHM6IFRoZXJlIHdhcyBhbiBhdHRlbXB0IHRvIHBvc3QgYSBtZXNzYWdlIHRvIGEgY2hhbm5lbCB3aXRob3V0IHByb3ZpZGluZyBhIG5hbWUgb3IgdGhlIHNlbGVjdGVkIGNoYW5uZWwgZG9lcyBub3QgZXhpc3QuIFRoZSBpbmNsdWRlZCBtZXNzYWdlIHdhczonLFxuXHRcdFx0XHRtZXNzYWdlXG5cdFx0XHQpO1xuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5icm9hZGNhc3RDaGFubmVsW2NoYW5uZWxOYW1lXS5wb3N0TWVzc2FnZShtZXNzYWdlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBzZWxlY3RDaGFubmVsTWVzc2FnZXNcblx0ICpcblx0ICogVGhlIHNlbGVjdENoYW5uZWxNZXNzYWdlcyBtZXRob2Qgc3Vic2NyaWJlcyB0byB0aGUgYG1lc3NhZ2VgIChiYy5vbm1lc3NhZ2UpIGV2ZW50IG9mIGEgc2VsZWN0ZWQgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIGNoYW5uZWxOYW1le3N0cmluZ30gLSBUaGUgbmFtZSBvZiB0aGUgQnJvYWRjYXN0IENoYW5uZWwuXG5cdCAqIEByZXR1cm5zIE9ic2VydmFibGU8TWVzc2FnZUV2ZW50PiAtIFRoZSBtZXNzYWdlIGV2ZW50IG9mIHRoZSBjaGFubmVsIHdyYXBwZWQgaW4gYW4gb2JzZXJ2YWJsZS5cblx0ICovXG5cdHB1YmxpYyBzZWxlY3RDaGFubmVsTWVzc2FnZXM8TWVzc2FnZVR5cGUgPSBhbnk+KFxuXHRcdGNoYW5uZWxOYW1lOiBzdHJpbmdcblx0KTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ8TWVzc2FnZVR5cGU+PiB7XG5cdFx0aWYgKCFjaGFubmVsTmFtZSB8fCAhdGhpcy5icm9hZGNhc3RDaGFubmVsW2NoYW5uZWxOYW1lXSkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0XCJOZ3hVdGlsczogVGhlcmUgd2FzIGFuIGF0dGVtcHQgdG8gc2VsZWN0IGEgQnJvYWRjYXN0Q2hhbm5lbCdzIG1lc3NhZ2VzIHdpdGhvdXQgcHJvdmlkaW5nIGEgbmFtZSBvciB0aGUgc2VsZWN0ZWQgY2hhbm5lbCBkb2VzIG5vdCBleGlzdC5cIlxuXHRcdFx0KTtcblxuXHRcdFx0cmV0dXJuIEVNUFRZO1xuXHRcdH1cblxuXHRcdHJldHVybiBmcm9tRXZlbnQ8TWVzc2FnZUV2ZW50PE1lc3NhZ2VUeXBlPj4odGhpcy5icm9hZGNhc3RDaGFubmVsW2NoYW5uZWxOYW1lXSwgJ21lc3NhZ2UnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBzZWxlY3RDaGFubmVsTWVzc2FnZUVycm9yc1xuXHQgKlxuXHQgKiBUaGUgc2VsZWN0Q2hhbm5lbE1lc3NhZ2VFcnJvcnMgbWV0aG9kIHN1YnNjcmliZXMgdG8gdGhlIGBtZXNzYWdlZXJyb3JgIChiYy5vbm1lc3NhZ2VlcnJvcikgZXZlbnQgb2YgYSBzZWxlY3RlZCBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0gY2hhbm5lbE5hbWV7c3RyaW5nfSAtIFRoZSBuYW1lIG9mIHRoZSBCcm9hZGNhc3QgQ2hhbm5lbC5cblx0ICogQHJldHVybnMgT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ+IC0gVGhlIG1lc3NhZ2VlcnJvciBldmVudCBvZiB0aGUgY2hhbm5lbCB3cmFwcGVkIGluIGFuIG9ic2VydmFibGUuXG5cdCAqL1xuXHRwdWJsaWMgc2VsZWN0Q2hhbm5lbE1lc3NhZ2VFcnJvcnM8TWVzc2FnZVR5cGUgPSBhbnk+KFxuXHRcdGNoYW5uZWxOYW1lOiBzdHJpbmdcblx0KTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ8TWVzc2FnZVR5cGU+PiB7XG5cdFx0aWYgKCFjaGFubmVsTmFtZSB8fCAhdGhpcy5icm9hZGNhc3RDaGFubmVsW2NoYW5uZWxOYW1lXSkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0XCJOZ3hVdGlsczogVGhlcmUgd2FzIGFuIGF0dGVtcHQgdG8gc2VsZWN0IGEgQnJvYWRjYXN0Q2hhbm5lbCdzIG1lc3NhZ2UgZXJyb3JzIHdpdGhvdXQgcHJvdmlkaW5nIGEgbmFtZSBvciB0aGUgc2VsZWN0ZWQgY2hhbm5lbCBkb2VzIG5vdCBleGlzdC5cIlxuXHRcdFx0KTtcblxuXHRcdFx0cmV0dXJuIEVNUFRZO1xuXHRcdH1cblxuXHRcdHJldHVybiBmcm9tRXZlbnQ8TWVzc2FnZUV2ZW50PE1lc3NhZ2VUeXBlPj4oXG5cdFx0XHR0aGlzLmJyb2FkY2FzdENoYW5uZWxbY2hhbm5lbE5hbWVdLFxuXHRcdFx0J21lc3NhZ2VlcnJvcidcblx0XHQpO1xuXHR9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class SubscriptionService {\n    constructor() {\n        this.destroyed$ = new Subject();\n    }\n    ngOnDestroy() {\n        this.destroyed$.next(true);\n        this.destroyed$.complete();\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: SubscriptionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: SubscriptionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: SubscriptionService, decorators: [{\n            type: Injectable\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9zZXJ2aWNlcy9zdWJzY3JpcHRpb24tc2VydmljZS9zdWJzY3JpcHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFUSxlQUFVLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7S0FNN0Q7SUFKTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0FOVyxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cdHB1YmxpYyBkZXN0cm95ZWQkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuXHRwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG5cdFx0dGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG5cdH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, NEVER, Subject } from 'rxjs';\nimport { NgxWindowService } from '@studiohyperdrive/ngx-core';\nimport * as i0 from \"@angular/core\";\n/**\n * A service that provides a SSR-proof Observable based approach to the session- and localStorage.\n */\nexport class NgxStorageService {\n    constructor() {\n        this.windowService = inject(NgxWindowService);\n        /**\n         * A record to hold the properties in the sessionStorage\n         */\n        this.sessionStorageRecord = {};\n        /**\n         * A record to hold the properties in the localStorage\n         */\n        this.localStorageRecord = {};\n        /**\n         * A subject to hold the events of the storage\n         */\n        this.storageEventSubject = new Subject();\n        /**\n         * An observable that emits whenever the session- or the localStorage was updated\n         */\n        this.storageEvents$ = this.storageEventSubject.asObservable();\n        const windowService = this.windowService;\n        // Iben: Get the initial values of the session and the local storage\n        windowService.runInBrowser(() => {\n            this.setupStorage(sessionStorage, this.sessionStorageRecord);\n            this.setupStorage(localStorage, this.localStorageRecord);\n        });\n    }\n    /**\n     * A localStorage implementation using observables\n     */\n    get localStorage() {\n        return {\n            getItem: (key) => this.getItem(key, localStorage),\n            getItemObservable: (key) => this.getItemObservable(key, this.localStorageRecord),\n            removeItem: (key) => this.removeItem(key, localStorage, this.localStorageRecord, 'local'),\n            setItem: (key, item) => this.setItem(key, item, localStorage, this.localStorageRecord, 'local'),\n            clear: () => this.clearStorage(localStorage, this.localStorageRecord, 'local'),\n        };\n    }\n    /**\n     * A sessionStorage implementation using observables\n     */\n    get sessionStorage() {\n        return {\n            getItem: (key) => this.getItem(key, sessionStorage),\n            getItemObservable: (key) => this.getItemObservable(key, this.sessionStorageRecord),\n            removeItem: (key) => this.removeItem(key, sessionStorage, this.sessionStorageRecord, 'session'),\n            setItem: (key, item) => this.setItem(key, item, sessionStorage, this.sessionStorageRecord, 'session'),\n            clear: () => this.clearStorage(sessionStorage, this.sessionStorageRecord, 'session'),\n        };\n    }\n    getItem(key, storage) {\n        return this.parseValue(storage.getItem(key));\n    }\n    /**\n     * Returns an observable version of the storage value\n     *\n     * @param key - The key of the storage value\n     * @param record  - The storage record\n     */\n    getItemObservable(key, record) {\n        // Iben: Return NEVER when not in browser\n        if (!this.windowService.isBrowser()) {\n            return NEVER;\n        }\n        // Iben: If the subject already exists, we return the observable\n        if (record[key]) {\n            return record[key].asObservable();\n        }\n        // Iben: If no subject exits, we create a new one\n        record[key] = new BehaviorSubject(undefined);\n        // Iben: Return the observable\n        return this.getItemObservable(key, record);\n    }\n    /**\n     * Sets an item in the storage\n     *\n     * @param key - The key of the item\n     * @param item - The item in the storage\n     * @param storage - The storage in which we want to save the item\n     * @param record - The corresponding storage record\n     */\n    setItem(key, item, storage, record, type) {\n        // Iben: Early exit when we're in the browser\n        if (!this.windowService.isBrowser()) {\n            return undefined;\n        }\n        // Iben: Check if there's already a subject for this item. If not, we create one\n        let subject = record[key];\n        if (!subject) {\n            subject = new BehaviorSubject(undefined);\n            storage[key] = subject;\n        }\n        // Iben: Store the current value of the subject\n        const oldValue = subject.getValue();\n        // Iben: Set the item in the storage\n        storage.setItem(key, typeof item === 'string' ? item : JSON.stringify(item));\n        // Iben: Update the subject in the record\n        subject.next(item);\n        // Iben: Create the storage event\n        const event = {\n            key,\n            newValue: item,\n            oldValue,\n            storage: type,\n            type: 'set',\n        };\n        // Iben: Emit the storage event\n        this.storageEventSubject.next(event);\n        // Iben: Return the storage event\n        return event;\n    }\n    /**\n     * Remove an item from the storage and emit a remove event\n     *\n     * @param  key - The key of the item\n     * @param storage - The storage we wish to remove the item from\n     * @param record - The record with the subject\n     * @param type - The type of storage\n     */\n    removeItem(key, storage, record, type) {\n        // Iben: Early exit when we're not in the browser\n        if (!this.windowService.isBrowser()) {\n            return undefined;\n        }\n        // Iben: Get the old item\n        const oldValue = this.parseValue(storage.getItem(key));\n        // Iben: Remove the item from the storage\n        storage.removeItem(key);\n        // Iben Update the subject if it exists\n        record[key]?.next(undefined);\n        // Iben: Create the event and return and emit it\n        const event = {\n            oldValue,\n            storage: type,\n            key,\n            type: 'remove',\n        };\n        this.storageEventSubject.next(event);\n        return event;\n    }\n    /**\n     * Clears the storage, completes all subjects and emits a clear event\n     *\n     * @param storage - The storage we wish to clear\n     * @param record - The record with the subjects\n     * @param type - The type of storage\n     */\n    clearStorage(storage, record, type) {\n        // Iben: Early exit when we're not in the browser\n        if (!this.windowService.isBrowser()) {\n            return undefined;\n        }\n        // Iben: Clear the storage\n        storage.clear();\n        // Iben: Clear the record and complete all subjects\n        Object.entries(record).forEach(([key, subject]) => {\n            subject.next(undefined);\n            subject.complete();\n            record[key] = undefined;\n        });\n        // Iben: Create and emit event\n        const event = {\n            type: 'clear',\n            storage: type,\n        };\n        this.storageEventSubject.next(event);\n        return event;\n    }\n    /**\n     * Grabs the existing storage and updates the record\n     *\n     * @private\n     * @param {Storage} storage - The current state of the storage\n     * @param {NgxStorageRecord} record\n     * @memberof NgxStorageService\n     */\n    setupStorage(storage, record) {\n        Object.entries(storage).forEach(([key, value]) => {\n            record[key] = new BehaviorSubject(this.parseValue(value));\n        });\n    }\n    /**\n     * Parses a string value from the storage to an actual value\n     *\n     * @param value - The provided string value\n     */\n    parseValue(value) {\n        // Iben: If the value does not exist, return the value\n        if (!value) {\n            return value;\n        }\n        // Iben: If the value is either true or false, return a boolean version of the value\n        if (value === 'true' || value === 'false') {\n            return value === 'true';\n        }\n        // Iben: If the value is a number, return the parsed number\n        if (value.match(/^[0-9]*[,.]{0,1}[0-9]*$/)) {\n            return Number(value);\n        }\n        // Iben: If the value is an object, return the parsed object\n        if (value.match(/{(.*:.*[,]{0,1})*}/)) {\n            return JSON.parse(value);\n        }\n        // Iben: Return the string value as is\n        return value;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxStorageService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvc2VydmljZXMvc3RvcmFnZS1zZXJ2aWNlL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBVzlEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQXNCN0I7UUFyQmlCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFDYyx5QkFBb0IsR0FBcUIsRUFBRSxDQUFDO1FBQzdEOztXQUVHO1FBQ2MsdUJBQWtCLEdBQXFCLEVBQUUsQ0FBQztRQUMzRDs7V0FFRztRQUNjLHdCQUFtQixHQUE2QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRS9FOztXQUVHO1FBQ2EsbUJBQWMsR0FDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFekMsb0VBQW9FO1FBQ3BFLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxZQUFZO1FB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OzJGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE5FVkVSLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3hXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnQHN0dWRpb2h5cGVyZHJpdmUvbmd4LWNvcmUnO1xuaW1wb3J0IHtcblx0Tmd4U3RvcmFnZSxcblx0Tmd4U3RvcmFnZUNsZWFyRXZlbnQsXG5cdE5neFN0b3JhZ2VFdmVudCxcblx0Tmd4U3RvcmFnZVJlY29yZCxcblx0Tmd4U3RvcmFnZVJlbW92ZUV2ZW50LFxuXHROZ3hTdG9yYWdlU2V0RXZlbnQsXG5cdE5neFN0b3JhZ2VUeXBlLFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgYSBTU1ItcHJvb2YgT2JzZXJ2YWJsZSBiYXNlZCBhcHByb2FjaCB0byB0aGUgc2Vzc2lvbi0gYW5kIGxvY2FsU3RvcmFnZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ3hTdG9yYWdlU2VydmljZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgd2luZG93U2VydmljZSA9IGluamVjdChOZ3hXaW5kb3dTZXJ2aWNlKTtcblxuXHQvKipcblx0ICogQSByZWNvcmQgdG8gaG9sZCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2Vzc2lvblN0b3JhZ2Vcblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VSZWNvcmQ6IE5neFN0b3JhZ2VSZWNvcmQgPSB7fTtcblx0LyoqXG5cdCAqIEEgcmVjb3JkIHRvIGhvbGQgdGhlIHByb3BlcnRpZXMgaW4gdGhlIGxvY2FsU3RvcmFnZVxuXHQgKi9cblx0cHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2VSZWNvcmQ6IE5neFN0b3JhZ2VSZWNvcmQgPSB7fTtcblx0LyoqXG5cdCAqIEEgc3ViamVjdCB0byBob2xkIHRoZSBldmVudHMgb2YgdGhlIHN0b3JhZ2Vcblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZUV2ZW50U3ViamVjdDogU3ViamVjdDxOZ3hTdG9yYWdlRXZlbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuXHQvKipcblx0ICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSBzZXNzaW9uLSBvciB0aGUgbG9jYWxTdG9yYWdlIHdhcyB1cGRhdGVkXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgc3RvcmFnZUV2ZW50cyQ6IE9ic2VydmFibGU8Tmd4U3RvcmFnZUV2ZW50PiA9XG5cdFx0dGhpcy5zdG9yYWdlRXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHdpbmRvd1NlcnZpY2UgPSB0aGlzLndpbmRvd1NlcnZpY2U7XG5cblx0XHQvLyBJYmVuOiBHZXQgdGhlIGluaXRpYWwgdmFsdWVzIG9mIHRoZSBzZXNzaW9uIGFuZCB0aGUgbG9jYWwgc3RvcmFnZVxuXHRcdHdpbmRvd1NlcnZpY2UucnVuSW5Ccm93c2VyKCgpID0+IHtcblx0XHRcdHRoaXMuc2V0dXBTdG9yYWdlKHNlc3Npb25TdG9yYWdlLCB0aGlzLnNlc3Npb25TdG9yYWdlUmVjb3JkKTtcblx0XHRcdHRoaXMuc2V0dXBTdG9yYWdlKGxvY2FsU3RvcmFnZSwgdGhpcy5sb2NhbFN0b3JhZ2VSZWNvcmQpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgbG9jYWxTdG9yYWdlIGltcGxlbWVudGF0aW9uIHVzaW5nIG9ic2VydmFibGVzXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGxvY2FsU3RvcmFnZSgpOiBOZ3hTdG9yYWdlIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Z2V0SXRlbTogPERhdGFUeXBlID0gYW55PihrZXk6IHN0cmluZykgPT4gdGhpcy5nZXRJdGVtPERhdGFUeXBlPihrZXksIGxvY2FsU3RvcmFnZSksXG5cdFx0XHRnZXRJdGVtT2JzZXJ2YWJsZTogPERhdGFUeXBlID0gYW55PihrZXk6IHN0cmluZykgPT5cblx0XHRcdFx0dGhpcy5nZXRJdGVtT2JzZXJ2YWJsZTxEYXRhVHlwZT4oa2V5LCB0aGlzLmxvY2FsU3RvcmFnZVJlY29yZCksXG5cdFx0XHRyZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+XG5cdFx0XHRcdHRoaXMucmVtb3ZlSXRlbShrZXksIGxvY2FsU3RvcmFnZSwgdGhpcy5sb2NhbFN0b3JhZ2VSZWNvcmQsICdsb2NhbCcpLFxuXHRcdFx0c2V0SXRlbTogPERhdGFUeXBlID0gYW55PihrZXk6IHN0cmluZywgaXRlbTogRGF0YVR5cGUpID0+XG5cdFx0XHRcdHRoaXMuc2V0SXRlbShrZXksIGl0ZW0sIGxvY2FsU3RvcmFnZSwgdGhpcy5sb2NhbFN0b3JhZ2VSZWNvcmQsICdsb2NhbCcpLFxuXHRcdFx0Y2xlYXI6ICgpID0+IHRoaXMuY2xlYXJTdG9yYWdlKGxvY2FsU3RvcmFnZSwgdGhpcy5sb2NhbFN0b3JhZ2VSZWNvcmQsICdsb2NhbCcpLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQSBzZXNzaW9uU3RvcmFnZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBvYnNlcnZhYmxlc1xuXHQgKi9cblx0cHVibGljIGdldCBzZXNzaW9uU3RvcmFnZSgpOiBOZ3hTdG9yYWdlIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Z2V0SXRlbTogPERhdGFUeXBlID0gYW55PihrZXk6IHN0cmluZykgPT4gdGhpcy5nZXRJdGVtPERhdGFUeXBlPihrZXksIHNlc3Npb25TdG9yYWdlKSxcblx0XHRcdGdldEl0ZW1PYnNlcnZhYmxlOiA8RGF0YVR5cGUgPSBhbnk+KGtleTogc3RyaW5nKSA9PlxuXHRcdFx0XHR0aGlzLmdldEl0ZW1PYnNlcnZhYmxlPERhdGFUeXBlPihrZXksIHRoaXMuc2Vzc2lvblN0b3JhZ2VSZWNvcmQpLFxuXHRcdFx0cmVtb3ZlSXRlbTogKGtleTogc3RyaW5nKSA9PlxuXHRcdFx0XHR0aGlzLnJlbW92ZUl0ZW0oa2V5LCBzZXNzaW9uU3RvcmFnZSwgdGhpcy5zZXNzaW9uU3RvcmFnZVJlY29yZCwgJ3Nlc3Npb24nKSxcblx0XHRcdHNldEl0ZW06IDxEYXRhVHlwZSA9IGFueT4oa2V5OiBzdHJpbmcsIGl0ZW06IERhdGFUeXBlKSA9PlxuXHRcdFx0XHR0aGlzLnNldEl0ZW0oa2V5LCBpdGVtLCBzZXNzaW9uU3RvcmFnZSwgdGhpcy5zZXNzaW9uU3RvcmFnZVJlY29yZCwgJ3Nlc3Npb24nKSxcblx0XHRcdGNsZWFyOiAoKSA9PiB0aGlzLmNsZWFyU3RvcmFnZShzZXNzaW9uU3RvcmFnZSwgdGhpcy5zZXNzaW9uU3RvcmFnZVJlY29yZCwgJ3Nlc3Npb24nKSxcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRJdGVtPERhdGFUeXBlID0gYW55PihrZXk6IHN0cmluZywgc3RvcmFnZTogU3RvcmFnZSk6IERhdGFUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJzZVZhbHVlKHN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdmVyc2lvbiBvZiB0aGUgc3RvcmFnZSB2YWx1ZVxuXHQgKlxuXHQgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgc3RvcmFnZSB2YWx1ZVxuXHQgKiBAcGFyYW0gcmVjb3JkICAtIFRoZSBzdG9yYWdlIHJlY29yZFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRJdGVtT2JzZXJ2YWJsZTxEYXRhVHlwZT4oXG5cdFx0a2V5OiBzdHJpbmcsXG5cdFx0cmVjb3JkOiBOZ3hTdG9yYWdlUmVjb3JkXG5cdCk6IE9ic2VydmFibGU8RGF0YVR5cGU+IHtcblx0XHQvLyBJYmVuOiBSZXR1cm4gTkVWRVIgd2hlbiBub3QgaW4gYnJvd3NlclxuXHRcdGlmICghdGhpcy53aW5kb3dTZXJ2aWNlLmlzQnJvd3NlcigpKSB7XG5cdFx0XHRyZXR1cm4gTkVWRVI7XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogSWYgdGhlIHN1YmplY3QgYWxyZWFkeSBleGlzdHMsIHdlIHJldHVybiB0aGUgb2JzZXJ2YWJsZVxuXHRcdGlmIChyZWNvcmRba2V5XSkge1xuXHRcdFx0cmV0dXJuIHJlY29yZFtrZXldLmFzT2JzZXJ2YWJsZSgpO1xuXHRcdH1cblxuXHRcdC8vIEliZW46IElmIG5vIHN1YmplY3QgZXhpdHMsIHdlIGNyZWF0ZSBhIG5ldyBvbmVcblx0XHRyZWNvcmRba2V5XSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVR5cGU+KHVuZGVmaW5lZCk7XG5cblx0XHQvLyBJYmVuOiBSZXR1cm4gdGhlIG9ic2VydmFibGVcblx0XHRyZXR1cm4gdGhpcy5nZXRJdGVtT2JzZXJ2YWJsZTxEYXRhVHlwZT4oa2V5LCByZWNvcmQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYW4gaXRlbSBpbiB0aGUgc3RvcmFnZVxuXHQgKlxuXHQgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgaXRlbVxuXHQgKiBAcGFyYW0gaXRlbSAtIFRoZSBpdGVtIGluIHRoZSBzdG9yYWdlXG5cdCAqIEBwYXJhbSBzdG9yYWdlIC0gVGhlIHN0b3JhZ2UgaW4gd2hpY2ggd2Ugd2FudCB0byBzYXZlIHRoZSBpdGVtXG5cdCAqIEBwYXJhbSByZWNvcmQgLSBUaGUgY29ycmVzcG9uZGluZyBzdG9yYWdlIHJlY29yZFxuXHQgKi9cblx0cHJpdmF0ZSBzZXRJdGVtPERhdGFUeXBlID0gYW55Pihcblx0XHRrZXk6IHN0cmluZyxcblx0XHRpdGVtOiBEYXRhVHlwZSxcblx0XHRzdG9yYWdlOiBTdG9yYWdlLFxuXHRcdHJlY29yZDogTmd4U3RvcmFnZVJlY29yZCxcblx0XHR0eXBlOiBOZ3hTdG9yYWdlVHlwZVxuXHQpOiBOZ3hTdG9yYWdlU2V0RXZlbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vIEliZW46IEVhcmx5IGV4aXQgd2hlbiB3ZSdyZSBpbiB0aGUgYnJvd3NlclxuXHRcdGlmICghdGhpcy53aW5kb3dTZXJ2aWNlLmlzQnJvd3NlcigpKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEliZW46IENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHN1YmplY3QgZm9yIHRoaXMgaXRlbS4gSWYgbm90LCB3ZSBjcmVhdGUgb25lXG5cdFx0bGV0IHN1YmplY3QgPSByZWNvcmRba2V5XTtcblxuXHRcdGlmICghc3ViamVjdCkge1xuXHRcdFx0c3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVR5cGU+KHVuZGVmaW5lZCk7XG5cdFx0XHRzdG9yYWdlW2tleV0gPSBzdWJqZWN0O1xuXHRcdH1cblxuXHRcdC8vIEliZW46IFN0b3JlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzdWJqZWN0XG5cdFx0Y29uc3Qgb2xkVmFsdWUgPSBzdWJqZWN0LmdldFZhbHVlKCk7XG5cblx0XHQvLyBJYmVuOiBTZXQgdGhlIGl0ZW0gaW4gdGhlIHN0b3JhZ2Vcblx0XHRzdG9yYWdlLnNldEl0ZW0oa2V5LCB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xuXG5cdFx0Ly8gSWJlbjogVXBkYXRlIHRoZSBzdWJqZWN0IGluIHRoZSByZWNvcmRcblx0XHRzdWJqZWN0Lm5leHQoaXRlbSk7XG5cblx0XHQvLyBJYmVuOiBDcmVhdGUgdGhlIHN0b3JhZ2UgZXZlbnRcblx0XHRjb25zdCBldmVudDogTmd4U3RvcmFnZVNldEV2ZW50ID0ge1xuXHRcdFx0a2V5LFxuXHRcdFx0bmV3VmFsdWU6IGl0ZW0sXG5cdFx0XHRvbGRWYWx1ZSxcblx0XHRcdHN0b3JhZ2U6IHR5cGUsXG5cdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHR9O1xuXG5cdFx0Ly8gSWJlbjogRW1pdCB0aGUgc3RvcmFnZSBldmVudFxuXHRcdHRoaXMuc3RvcmFnZUV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KTtcblxuXHRcdC8vIEliZW46IFJldHVybiB0aGUgc3RvcmFnZSBldmVudFxuXHRcdHJldHVybiBldmVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzdG9yYWdlIGFuZCBlbWl0IGEgcmVtb3ZlIGV2ZW50XG5cdCAqXG5cdCAqIEBwYXJhbSAga2V5IC0gVGhlIGtleSBvZiB0aGUgaXRlbVxuXHQgKiBAcGFyYW0gc3RvcmFnZSAtIFRoZSBzdG9yYWdlIHdlIHdpc2ggdG8gcmVtb3ZlIHRoZSBpdGVtIGZyb21cblx0ICogQHBhcmFtIHJlY29yZCAtIFRoZSByZWNvcmQgd2l0aCB0aGUgc3ViamVjdFxuXHQgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHN0b3JhZ2Vcblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlSXRlbShcblx0XHRrZXk6IHN0cmluZyxcblx0XHRzdG9yYWdlOiBTdG9yYWdlLFxuXHRcdHJlY29yZDogTmd4U3RvcmFnZVJlY29yZCxcblx0XHR0eXBlOiBOZ3hTdG9yYWdlVHlwZVxuXHQpOiBOZ3hTdG9yYWdlUmVtb3ZlRXZlbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vIEliZW46IEVhcmx5IGV4aXQgd2hlbiB3ZSdyZSBub3QgaW4gdGhlIGJyb3dzZXJcblx0XHRpZiAoIXRoaXMud2luZG93U2VydmljZS5pc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBHZXQgdGhlIG9sZCBpdGVtXG5cdFx0Y29uc3Qgb2xkVmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoc3RvcmFnZS5nZXRJdGVtKGtleSkpO1xuXG5cdFx0Ly8gSWJlbjogUmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIHN0b3JhZ2Vcblx0XHRzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcblxuXHRcdC8vIEliZW4gVXBkYXRlIHRoZSBzdWJqZWN0IGlmIGl0IGV4aXN0c1xuXHRcdHJlY29yZFtrZXldPy5uZXh0KHVuZGVmaW5lZCk7XG5cblx0XHQvLyBJYmVuOiBDcmVhdGUgdGhlIGV2ZW50IGFuZCByZXR1cm4gYW5kIGVtaXQgaXRcblx0XHRjb25zdCBldmVudDogTmd4U3RvcmFnZVJlbW92ZUV2ZW50ID0ge1xuXHRcdFx0b2xkVmFsdWUsXG5cdFx0XHRzdG9yYWdlOiB0eXBlLFxuXHRcdFx0a2V5LFxuXHRcdFx0dHlwZTogJ3JlbW92ZScsXG5cdFx0fTtcblxuXHRcdHRoaXMuc3RvcmFnZUV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KTtcblx0XHRyZXR1cm4gZXZlbnQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXJzIHRoZSBzdG9yYWdlLCBjb21wbGV0ZXMgYWxsIHN1YmplY3RzIGFuZCBlbWl0cyBhIGNsZWFyIGV2ZW50XG5cdCAqXG5cdCAqIEBwYXJhbSBzdG9yYWdlIC0gVGhlIHN0b3JhZ2Ugd2Ugd2lzaCB0byBjbGVhclxuXHQgKiBAcGFyYW0gcmVjb3JkIC0gVGhlIHJlY29yZCB3aXRoIHRoZSBzdWJqZWN0c1xuXHQgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHN0b3JhZ2Vcblx0ICovXG5cdHByaXZhdGUgY2xlYXJTdG9yYWdlKFxuXHRcdHN0b3JhZ2U6IFN0b3JhZ2UsXG5cdFx0cmVjb3JkOiBOZ3hTdG9yYWdlUmVjb3JkLFxuXHRcdHR5cGU6IE5neFN0b3JhZ2VUeXBlXG5cdCk6IE5neFN0b3JhZ2VDbGVhckV2ZW50IHwgdW5kZWZpbmVkIHtcblx0XHQvLyBJYmVuOiBFYXJseSBleGl0IHdoZW4gd2UncmUgbm90IGluIHRoZSBicm93c2VyXG5cdFx0aWYgKCF0aGlzLndpbmRvd1NlcnZpY2UuaXNCcm93c2VyKCkpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogQ2xlYXIgdGhlIHN0b3JhZ2Vcblx0XHRzdG9yYWdlLmNsZWFyKCk7XG5cblx0XHQvLyBJYmVuOiBDbGVhciB0aGUgcmVjb3JkIGFuZCBjb21wbGV0ZSBhbGwgc3ViamVjdHNcblx0XHRPYmplY3QuZW50cmllcyhyZWNvcmQpLmZvckVhY2goKFtrZXksIHN1YmplY3RdKSA9PiB7XG5cdFx0XHRzdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcblx0XHRcdHN1YmplY3QuY29tcGxldGUoKTtcblxuXHRcdFx0cmVjb3JkW2tleV0gPSB1bmRlZmluZWQ7XG5cdFx0fSk7XG5cblx0XHQvLyBJYmVuOiBDcmVhdGUgYW5kIGVtaXQgZXZlbnRcblx0XHRjb25zdCBldmVudDogTmd4U3RvcmFnZUNsZWFyRXZlbnQgPSB7XG5cdFx0XHR0eXBlOiAnY2xlYXInLFxuXHRcdFx0c3RvcmFnZTogdHlwZSxcblx0XHR9O1xuXG5cdFx0dGhpcy5zdG9yYWdlRXZlbnRTdWJqZWN0Lm5leHQoZXZlbnQpO1xuXG5cdFx0cmV0dXJuIGV2ZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdyYWJzIHRoZSBleGlzdGluZyBzdG9yYWdlIGFuZCB1cGRhdGVzIHRoZSByZWNvcmRcblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdG9yYWdlfSBzdG9yYWdlIC0gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0b3JhZ2Vcblx0ICogQHBhcmFtIHtOZ3hTdG9yYWdlUmVjb3JkfSByZWNvcmRcblx0ICogQG1lbWJlcm9mIE5neFN0b3JhZ2VTZXJ2aWNlXG5cdCAqL1xuXHRwcml2YXRlIHNldHVwU3RvcmFnZShzdG9yYWdlOiBTdG9yYWdlLCByZWNvcmQ6IE5neFN0b3JhZ2VSZWNvcmQpIHtcblx0XHRPYmplY3QuZW50cmllcyhzdG9yYWdlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcblx0XHRcdHJlY29yZFtrZXldID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnBhcnNlVmFsdWUodmFsdWUpKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBzdHJpbmcgdmFsdWUgZnJvbSB0aGUgc3RvcmFnZSB0byBhbiBhY3R1YWwgdmFsdWVcblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIHByb3ZpZGVkIHN0cmluZyB2YWx1ZVxuXHQgKi9cblx0cHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuXHRcdC8vIEliZW46IElmIHRoZSB2YWx1ZSBkb2VzIG5vdCBleGlzdCwgcmV0dXJuIHRoZSB2YWx1ZVxuXHRcdGlmICghdmFsdWUpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBJZiB0aGUgdmFsdWUgaXMgZWl0aGVyIHRydWUgb3IgZmFsc2UsIHJldHVybiBhIGJvb2xlYW4gdmVyc2lvbiBvZiB0aGUgdmFsdWVcblx0XHRpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJykge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSAndHJ1ZSc7XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogSWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyLCByZXR1cm4gdGhlIHBhcnNlZCBudW1iZXJcblx0XHRpZiAodmFsdWUubWF0Y2goL15bMC05XSpbLC5dezAsMX1bMC05XSokLykpIHtcblx0XHRcdHJldHVybiBOdW1iZXIodmFsdWUpO1xuXHRcdH1cblxuXHRcdC8vIEliZW46IElmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QsIHJldHVybiB0aGUgcGFyc2VkIG9iamVjdFxuXHRcdGlmICh2YWx1ZS5tYXRjaCgveyguKjouKlssXXswLDF9KSp9LykpIHtcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBSZXR1cm4gdGhlIHN0cmluZyB2YWx1ZSBhcyBpc1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxufVxuIl19","import { Injectable, inject } from '@angular/core';\nimport { filter, map, ReplaySubject } from 'rxjs';\nimport { NgxWindowService } from '@studiohyperdrive/ngx-core';\nimport * as i0 from \"@angular/core\";\n/**\n * A service that can be used to track media queries and their changes. It exposes a method\n * to register media queries, which takes an array of tuples with the id of the media query\n * and the query itself. The service will then emit the id of the media query that has\n * changed when subscribed to the `getMatchingQuery$` method.\n */\nexport class NgxMediaQueryService {\n    constructor() {\n        this.windowService = inject(NgxWindowService);\n        /**\n         * A map of media queries that are registered with the service.\n         */\n        this.queryListMap = new Map();\n        /**\n         * A map of the registered media queries with their id.\n         */\n        this.queryIdMap = new Map();\n        /*\n         * A map of listeners that are registered with the service.\n         * They are saved to be able to remove them when the service is destroyed.\n         */\n        this.mediaQueryListenerMap = new Map();\n        /**\n         * A subject that emits the id of the media query that has changed.\n         */\n        this.queryChangedSubject = new ReplaySubject();\n    }\n    /**\n     * Register a list of media queries that need to be tracked by the service.\n     *\n     * @param queries - A list of media queries that should be registered with the service.\n     */\n    registerMediaQueries(...queries) {\n        this.windowService.runInBrowser(({ browserWindow }) => {\n            for (const [id, query] of queries) {\n                // Wouter: Warn if the id has already been registered.\n                if (this.queryIdMap.get(id)) {\n                    return console.warn(`NgxMediaQueryService: Media query with id '${id}' already exists and is defined by '${this.queryIdMap.get(id)}'`);\n                }\n                // Wouter: If the query has already been registered, throw an error to prevent duplicate subscriptions\n                if ([...this.queryIdMap].some(([_, value]) => value === query)) {\n                    const duplicateQuery = [...this.queryIdMap].find(([_, value]) => value === query);\n                    throw new Error(`NgxMediaQueryService: Query of ['${id}', ${query}] already exists and is defined by ['${duplicateQuery[0]}', ${duplicateQuery[1]}]`);\n                }\n                // Wouter: save the id and query\n                this.queryIdMap.set(id, query);\n                // Wouter: For each query, create a MediaQueryList object\n                const matchedQuery = browserWindow.matchMedia(query);\n                // Wouter: Save the query\n                this.queryListMap.set(id, matchedQuery);\n                // Wouter: Emit the id of the query that has changed\n                this.queryChangedSubject.next(id);\n                // Wouter: Create a listener for the query. This is done separately to be\n                // able to remove the listener when the service is destroyed\n                const listener = (queryChangedEvent) => {\n                    this.queryListMap.set(id, queryChangedEvent.currentTarget);\n                    // Wouter: Emit the id of the query that has changed\n                    this.queryChangedSubject.next(id);\n                };\n                // Wouter: Register the listener to the query\n                matchedQuery.addEventListener('change', listener);\n                // Wouter: Save the listener\n                this.mediaQueryListenerMap.set(id, listener);\n            }\n        });\n    }\n    /**\n     * Pass the id of the query whose changes need to be listened to.\n     *\n     * @param id - The id of the media query that should be checked.\n     * @returns An observable that emits a boolean value whenever the requested media query changes.\n     */\n    getMatchingQuery$(id) {\n        // Wouter: Throw an error if the query has not been registered\n        if (!this.queryIdMap.has(id)) {\n            throw new Error(`NgxMediaQueryService: No media query with id '${id}' has been registered. Please register the media query first using the 'registerMediaQueries' method.`);\n        }\n        return this.queryChangedSubject.asObservable().pipe(\n        // Wouter: Filter the query that has changed.\n        // This will make sure only the [id] streams are triggered.\n        filter((queryId) => queryId === id), map(() => this.queryListMap.get(id).matches));\n    }\n    /**\n     * Unregister all media query subscriptions from the service.\n     */\n    ngOnDestroy() {\n        this.windowService.runInBrowser(() => {\n            // Wouter: Remove all eventListeners\n            for (const [id, query] of this.queryListMap) {\n                query.removeEventListener('change', this.mediaQueryListenerMap.get(id));\n            }\n            // Wouter: Complete subscriptions\n            this.queryChangedSubject.next(null);\n            this.queryChangedSubject.complete();\n            // Wouter: Clear maps\n            this.queryListMap.clear();\n            this.mediaQueryListenerMap.clear();\n        });\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxMediaQueryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxMediaQueryService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWFxdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvc2VydmljZXMvbWVkaWEtcXVlcnkvbWVkaWFxdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFOUQ7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBRGpDO1FBRWtCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFDYyxpQkFBWSxHQUFnQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXZFOztXQUVHO1FBQ2MsZUFBVSxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTdEOzs7V0FHRztRQUNjLDBCQUFxQixHQUdsQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQ7O1dBRUc7UUFDYyx3QkFBbUIsR0FBMEIsSUFBSSxhQUFhLEVBQUUsQ0FBQztLQW9HbEY7SUFsR0E7Ozs7T0FJRztJQUNJLG9CQUFvQixDQUFDLEdBQUcsT0FBc0M7UUFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUU7WUFDckQsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNuQyxzREFBc0Q7Z0JBQ3RELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxPQUFPLENB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QzdDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7WUFFRCxpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFcEMscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E1SFcsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmd4V2luZG93U2VydmljZSB9IGZyb20gJ0BzdHVkaW9oeXBlcmRyaXZlL25neC1jb3JlJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCBjYW4gYmUgdXNlZCB0byB0cmFjayBtZWRpYSBxdWVyaWVzIGFuZCB0aGVpciBjaGFuZ2VzLiBJdCBleHBvc2VzIGEgbWV0aG9kXG4gKiB0byByZWdpc3RlciBtZWRpYSBxdWVyaWVzLCB3aGljaCB0YWtlcyBhbiBhcnJheSBvZiB0dXBsZXMgd2l0aCB0aGUgaWQgb2YgdGhlIG1lZGlhIHF1ZXJ5XG4gKiBhbmQgdGhlIHF1ZXJ5IGl0c2VsZi4gVGhlIHNlcnZpY2Ugd2lsbCB0aGVuIGVtaXQgdGhlIGlkIG9mIHRoZSBtZWRpYSBxdWVyeSB0aGF0IGhhc1xuICogY2hhbmdlZCB3aGVuIHN1YnNjcmliZWQgdG8gdGhlIGBnZXRNYXRjaGluZ1F1ZXJ5JGAgbWV0aG9kLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5neE1lZGlhUXVlcnlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0cHJpdmF0ZSByZWFkb25seSB3aW5kb3dTZXJ2aWNlID0gaW5qZWN0KE5neFdpbmRvd1NlcnZpY2UpO1xuXG5cdC8qKlxuXHQgKiBBIG1hcCBvZiBtZWRpYSBxdWVyaWVzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2VydmljZS5cblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgcXVlcnlMaXN0TWFwOiBNYXA8c3RyaW5nLCBNZWRpYVF1ZXJ5TGlzdD4gPSBuZXcgTWFwKCk7XG5cblx0LyoqXG5cdCAqIEEgbWFwIG9mIHRoZSByZWdpc3RlcmVkIG1lZGlhIHF1ZXJpZXMgd2l0aCB0aGVpciBpZC5cblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgcXVlcnlJZE1hcDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuXHQvKlxuXHQgKiBBIG1hcCBvZiBsaXN0ZW5lcnMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzZXJ2aWNlLlxuXHQgKiBUaGV5IGFyZSBzYXZlZCB0byBiZSBhYmxlIHRvIHJlbW92ZSB0aGVtIHdoZW4gdGhlIHNlcnZpY2UgaXMgZGVzdHJveWVkLlxuXHQgKi9cblx0cHJpdmF0ZSByZWFkb25seSBtZWRpYVF1ZXJ5TGlzdGVuZXJNYXA6IE1hcDxcblx0XHRzdHJpbmcsXG5cdFx0KHF1ZXJ5Q2hhbmdlZEV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkXG5cdD4gPSBuZXcgTWFwKCk7XG5cblx0LyoqXG5cdCAqIEEgc3ViamVjdCB0aGF0IGVtaXRzIHRoZSBpZCBvZiB0aGUgbWVkaWEgcXVlcnkgdGhhdCBoYXMgY2hhbmdlZC5cblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgcXVlcnlDaGFuZ2VkU3ViamVjdDogUmVwbGF5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlcGxheVN1YmplY3QoKTtcblxuXHQvKipcblx0ICogUmVnaXN0ZXIgYSBsaXN0IG9mIG1lZGlhIHF1ZXJpZXMgdGhhdCBuZWVkIHRvIGJlIHRyYWNrZWQgYnkgdGhlIHNlcnZpY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBxdWVyaWVzIC0gQSBsaXN0IG9mIG1lZGlhIHF1ZXJpZXMgdGhhdCBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzZXJ2aWNlLlxuXHQgKi9cblx0cHVibGljIHJlZ2lzdGVyTWVkaWFRdWVyaWVzKC4uLnF1ZXJpZXM6IFtpZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nXVtdKTogdm9pZCB7XG5cdFx0dGhpcy53aW5kb3dTZXJ2aWNlLnJ1bkluQnJvd3NlcigoeyBicm93c2VyV2luZG93IH0pID0+IHtcblx0XHRcdGZvciAoY29uc3QgW2lkLCBxdWVyeV0gb2YgcXVlcmllcykge1xuXHRcdFx0XHQvLyBXb3V0ZXI6IFdhcm4gaWYgdGhlIGlkIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZC5cblx0XHRcdFx0aWYgKHRoaXMucXVlcnlJZE1hcC5nZXQoaWQpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbnNvbGUud2Fybihcblx0XHRcdFx0XHRcdGBOZ3hNZWRpYVF1ZXJ5U2VydmljZTogTWVkaWEgcXVlcnkgd2l0aCBpZCAnJHtpZH0nIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBkZWZpbmVkIGJ5ICcke3RoaXMucXVlcnlJZE1hcC5nZXQoXG5cdFx0XHRcdFx0XHRcdGlkXG5cdFx0XHRcdFx0XHQpfSdgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdvdXRlcjogSWYgdGhlIHF1ZXJ5IGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCwgdGhyb3cgYW4gZXJyb3IgdG8gcHJldmVudCBkdXBsaWNhdGUgc3Vic2NyaXB0aW9uc1xuXHRcdFx0XHRpZiAoWy4uLnRoaXMucXVlcnlJZE1hcF0uc29tZSgoW18sIHZhbHVlXSkgPT4gdmFsdWUgPT09IHF1ZXJ5KSkge1xuXHRcdFx0XHRcdGNvbnN0IGR1cGxpY2F0ZVF1ZXJ5ID0gWy4uLnRoaXMucXVlcnlJZE1hcF0uZmluZChcblx0XHRcdFx0XHRcdChbXywgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gcXVlcnlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdGBOZ3hNZWRpYVF1ZXJ5U2VydmljZTogUXVlcnkgb2YgWycke2lkfScsICR7cXVlcnl9XSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgZGVmaW5lZCBieSBbJyR7ZHVwbGljYXRlUXVlcnlbMF19JywgJHtkdXBsaWNhdGVRdWVyeVsxXX1dYFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXb3V0ZXI6IHNhdmUgdGhlIGlkIGFuZCBxdWVyeVxuXHRcdFx0XHR0aGlzLnF1ZXJ5SWRNYXAuc2V0KGlkLCBxdWVyeSk7XG5cblx0XHRcdFx0Ly8gV291dGVyOiBGb3IgZWFjaCBxdWVyeSwgY3JlYXRlIGEgTWVkaWFRdWVyeUxpc3Qgb2JqZWN0XG5cdFx0XHRcdGNvbnN0IG1hdGNoZWRRdWVyeSA9IGJyb3dzZXJXaW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG5cblx0XHRcdFx0Ly8gV291dGVyOiBTYXZlIHRoZSBxdWVyeVxuXHRcdFx0XHR0aGlzLnF1ZXJ5TGlzdE1hcC5zZXQoaWQsIG1hdGNoZWRRdWVyeSk7XG5cblx0XHRcdFx0Ly8gV291dGVyOiBFbWl0IHRoZSBpZCBvZiB0aGUgcXVlcnkgdGhhdCBoYXMgY2hhbmdlZFxuXHRcdFx0XHR0aGlzLnF1ZXJ5Q2hhbmdlZFN1YmplY3QubmV4dChpZCk7XG5cblx0XHRcdFx0Ly8gV291dGVyOiBDcmVhdGUgYSBsaXN0ZW5lciBmb3IgdGhlIHF1ZXJ5LiBUaGlzIGlzIGRvbmUgc2VwYXJhdGVseSB0byBiZVxuXHRcdFx0XHQvLyBhYmxlIHRvIHJlbW92ZSB0aGUgbGlzdGVuZXIgd2hlbiB0aGUgc2VydmljZSBpcyBkZXN0cm95ZWRcblx0XHRcdFx0Y29uc3QgbGlzdGVuZXIgPSAocXVlcnlDaGFuZ2VkRXZlbnQ6IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHtcblx0XHRcdFx0XHR0aGlzLnF1ZXJ5TGlzdE1hcC5zZXQoaWQsIHF1ZXJ5Q2hhbmdlZEV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgTWVkaWFRdWVyeUxpc3QpO1xuXG5cdFx0XHRcdFx0Ly8gV291dGVyOiBFbWl0IHRoZSBpZCBvZiB0aGUgcXVlcnkgdGhhdCBoYXMgY2hhbmdlZFxuXHRcdFx0XHRcdHRoaXMucXVlcnlDaGFuZ2VkU3ViamVjdC5uZXh0KGlkKTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQvLyBXb3V0ZXI6IFJlZ2lzdGVyIHRoZSBsaXN0ZW5lciB0byB0aGUgcXVlcnlcblx0XHRcdFx0bWF0Y2hlZFF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuXHRcdFx0XHQvLyBXb3V0ZXI6IFNhdmUgdGhlIGxpc3RlbmVyXG5cdFx0XHRcdHRoaXMubWVkaWFRdWVyeUxpc3RlbmVyTWFwLnNldChpZCwgbGlzdGVuZXIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhc3MgdGhlIGlkIG9mIHRoZSBxdWVyeSB3aG9zZSBjaGFuZ2VzIG5lZWQgdG8gYmUgbGlzdGVuZWQgdG8uXG5cdCAqXG5cdCAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgbWVkaWEgcXVlcnkgdGhhdCBzaG91bGQgYmUgY2hlY2tlZC5cblx0ICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGEgYm9vbGVhbiB2YWx1ZSB3aGVuZXZlciB0aGUgcmVxdWVzdGVkIG1lZGlhIHF1ZXJ5IGNoYW5nZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWF0Y2hpbmdRdWVyeSQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXHRcdC8vIFdvdXRlcjogVGhyb3cgYW4gZXJyb3IgaWYgdGhlIHF1ZXJ5IGhhcyBub3QgYmVlbiByZWdpc3RlcmVkXG5cdFx0aWYgKCF0aGlzLnF1ZXJ5SWRNYXAuaGFzKGlkKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgTmd4TWVkaWFRdWVyeVNlcnZpY2U6IE5vIG1lZGlhIHF1ZXJ5IHdpdGggaWQgJyR7aWR9JyBoYXMgYmVlbiByZWdpc3RlcmVkLiBQbGVhc2UgcmVnaXN0ZXIgdGhlIG1lZGlhIHF1ZXJ5IGZpcnN0IHVzaW5nIHRoZSAncmVnaXN0ZXJNZWRpYVF1ZXJpZXMnIG1ldGhvZC5gXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnF1ZXJ5Q2hhbmdlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcblx0XHRcdC8vIFdvdXRlcjogRmlsdGVyIHRoZSBxdWVyeSB0aGF0IGhhcyBjaGFuZ2VkLlxuXHRcdFx0Ly8gVGhpcyB3aWxsIG1ha2Ugc3VyZSBvbmx5IHRoZSBbaWRdIHN0cmVhbXMgYXJlIHRyaWdnZXJlZC5cblx0XHRcdGZpbHRlcigocXVlcnlJZCkgPT4gcXVlcnlJZCA9PT0gaWQpLFxuXHRcdFx0bWFwKCgpID0+IHRoaXMucXVlcnlMaXN0TWFwLmdldChpZCkubWF0Y2hlcylcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVucmVnaXN0ZXIgYWxsIG1lZGlhIHF1ZXJ5IHN1YnNjcmlwdGlvbnMgZnJvbSB0aGUgc2VydmljZS5cblx0ICovXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLndpbmRvd1NlcnZpY2UucnVuSW5Ccm93c2VyKCgpID0+IHtcblx0XHRcdC8vIFdvdXRlcjogUmVtb3ZlIGFsbCBldmVudExpc3RlbmVyc1xuXHRcdFx0Zm9yIChjb25zdCBbaWQsIHF1ZXJ5XSBvZiB0aGlzLnF1ZXJ5TGlzdE1hcCkge1xuXHRcdFx0XHRxdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLm1lZGlhUXVlcnlMaXN0ZW5lck1hcC5nZXQoaWQpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV291dGVyOiBDb21wbGV0ZSBzdWJzY3JpcHRpb25zXG5cdFx0XHR0aGlzLnF1ZXJ5Q2hhbmdlZFN1YmplY3QubmV4dChudWxsKTtcblx0XHRcdHRoaXMucXVlcnlDaGFuZ2VkU3ViamVjdC5jb21wbGV0ZSgpO1xuXG5cdFx0XHQvLyBXb3V0ZXI6IENsZWFyIG1hcHNcblx0XHRcdHRoaXMucXVlcnlMaXN0TWFwLmNsZWFyKCk7XG5cdFx0XHR0aGlzLm1lZGlhUXVlcnlMaXN0ZW5lck1hcC5jbGVhcigpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * A pipe that will search an array to see if on of its objects contains specific values on provided keys.\n *\n * Usage:\n * value | arrayContainsOne : ['prop1', 'prop2', ...]\n *\n * Examples:\n * \t{{\n * \t\t[\n * \t\t\t{ title: 'This is the title', description: 'This is the description' },\n * \t\t\t{ title: 'This is the title' }\n * \t\t] | arrayContainsOne: ['description']\n * \t}}\n * \tOutput: true\n */\nexport class ArrayContainsOnePipe {\n    transform(values, checkProps = []) {\n        if (!Array.isArray(values) ||\n            values.length === 0 ||\n            !Array.isArray(checkProps) ||\n            checkProps.length === 0) {\n            return false;\n        }\n        return values.some((item) => checkProps.some((key) => item[key] !== null && item[key] !== undefined));\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: ArrayContainsOnePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: ArrayContainsOnePipe, isStandalone: true, name: \"arrayContainsOne\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: ArrayContainsOnePipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'arrayContainsOne',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktY29udGFpbnMtb25lLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9hcnJheS1jb250YWlucy1vbmUvYXJyYXktY29udGFpbnMtb25lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBS0gsTUFBTSxPQUFPLG9CQUFvQjtJQUN6QixTQUFTLENBQUMsTUFBaUIsRUFBRSxhQUF1QixFQUFFO1FBQzVELElBQ0MsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN0QixNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDbkIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUMxQixVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDdEIsQ0FBQztZQUNGLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQ3BDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0gsQ0FBQzs4R0FkVyxvQkFBb0I7NEdBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFKaEMsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBwaXBlIHRoYXQgd2lsbCBzZWFyY2ggYW4gYXJyYXkgdG8gc2VlIGlmIG9uIG9mIGl0cyBvYmplY3RzIGNvbnRhaW5zIHNwZWNpZmljIHZhbHVlcyBvbiBwcm92aWRlZCBrZXlzLlxuICpcbiAqIFVzYWdlOlxuICogdmFsdWUgfCBhcnJheUNvbnRhaW5zT25lIDogWydwcm9wMScsICdwcm9wMicsIC4uLl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqIFx0e3tcbiAqIFx0XHRbXG4gKiBcdFx0XHR7IHRpdGxlOiAnVGhpcyBpcyB0aGUgdGl0bGUnLCBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGRlc2NyaXB0aW9uJyB9LFxuICogXHRcdFx0eyB0aXRsZTogJ1RoaXMgaXMgdGhlIHRpdGxlJyB9XG4gKiBcdFx0XSB8IGFycmF5Q29udGFpbnNPbmU6IFsnZGVzY3JpcHRpb24nXVxuICogXHR9fVxuICogXHRPdXRwdXQ6IHRydWVcbiAqL1xuQFBpcGUoe1xuXHRuYW1lOiAnYXJyYXlDb250YWluc09uZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Q29udGFpbnNPbmVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdHB1YmxpYyB0cmFuc2Zvcm0odmFsdWVzOiB1bmtub3duW10sIGNoZWNrUHJvcHM6IHN0cmluZ1tdID0gW10pOiBib29sZWFuIHtcblx0XHRpZiAoXG5cdFx0XHQhQXJyYXkuaXNBcnJheSh2YWx1ZXMpIHx8XG5cdFx0XHR2YWx1ZXMubGVuZ3RoID09PSAwIHx8XG5cdFx0XHQhQXJyYXkuaXNBcnJheShjaGVja1Byb3BzKSB8fFxuXHRcdFx0Y2hlY2tQcm9wcy5sZW5ndGggPT09IDBcblx0XHQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWVzLnNvbWUoKGl0ZW06IHVua25vd24pID0+XG5cdFx0XHRjaGVja1Byb3BzLnNvbWUoKGtleSkgPT4gaXRlbVtrZXldICE9PSBudWxsICYmIGl0ZW1ba2V5XSAhPT0gdW5kZWZpbmVkKVxuXHRcdCk7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BtwPipe {\n    /**\n     * Converts a BTW number to the correct format\n     *\n     * @param value - The value we wish to convert\n     */\n    transform(value) {\n        if (!value) {\n            // Denis: if the value is falsy, return it without transform.\n            return value;\n        }\n        const addCharAtIndex = (original, char, index) => {\n            return original.slice(0, index) + char + original.slice(index);\n        };\n        // Iben: Convert to string if it's a number\n        value = value.toString();\n        if (value.replace(/\\./g, '').length === 9) {\n            value = '0' + value;\n        }\n        // Iben: Format: xxxx.xxx.xxx\n        if (value.charAt(4) !== '.') {\n            value = addCharAtIndex(value, '.', 4);\n        }\n        if (value.charAt(8) !== '.') {\n            value = addCharAtIndex(value, '.', 8);\n        }\n        return value;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: BtwPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: BtwPipe, isStandalone: true, name: \"btw\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: BtwPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'btw',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnR3LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9idHcvYnR3LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxPQUFPO0lBQ25COzs7O09BSUc7SUFDSSxTQUFTLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWiw2REFBNkQ7WUFDN0QsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFnQixFQUFFLElBQVksRUFBRSxLQUFhLEVBQVUsRUFBRTtZQUNoRixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztRQUVGLDJDQUEyQztRQUMzQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXpCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzdCLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzdCLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDOzhHQWpDVyxPQUFPOzRHQUFQLE9BQU87OzJGQUFQLE9BQU87a0JBSm5CLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG5cdG5hbWU6ICdidHcnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCdHdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIEJUVyBudW1iZXIgdG8gdGhlIGNvcnJlY3QgZm9ybWF0XG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB3ZSB3aXNoIHRvIGNvbnZlcnRcblx0ICovXG5cdHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCF2YWx1ZSkge1xuXHRcdFx0Ly8gRGVuaXM6IGlmIHRoZSB2YWx1ZSBpcyBmYWxzeSwgcmV0dXJuIGl0IHdpdGhvdXQgdHJhbnNmb3JtLlxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFkZENoYXJBdEluZGV4ID0gKG9yaWdpbmFsOiBzdHJpbmcsIGNoYXI6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyA9PiB7XG5cdFx0XHRyZXR1cm4gb3JpZ2luYWwuc2xpY2UoMCwgaW5kZXgpICsgY2hhciArIG9yaWdpbmFsLnNsaWNlKGluZGV4KTtcblx0XHR9O1xuXG5cdFx0Ly8gSWJlbjogQ29udmVydCB0byBzdHJpbmcgaWYgaXQncyBhIG51bWJlclxuXHRcdHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcblxuXHRcdGlmICh2YWx1ZS5yZXBsYWNlKC9cXC4vZywgJycpLmxlbmd0aCA9PT0gOSkge1xuXHRcdFx0dmFsdWUgPSAnMCcgKyB2YWx1ZTtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBGb3JtYXQ6IHh4eHgueHh4Lnh4eFxuXHRcdGlmICh2YWx1ZS5jaGFyQXQoNCkgIT09ICcuJykge1xuXHRcdFx0dmFsdWUgPSBhZGRDaGFyQXRJbmRleCh2YWx1ZSwgJy4nLCA0KTtcblx0XHR9XG5cblx0XHRpZiAodmFsdWUuY2hhckF0KDgpICE9PSAnLicpIHtcblx0XHRcdHZhbHVlID0gYWRkQ2hhckF0SW5kZXgodmFsdWUsICcuJywgOCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class CleanArrayPipe {\n    /**\n     * Removes all falsy values from the provided array.\n     *\n     * @param value The values that need to be stripped of falsy values.\n     * @param exceptions The falsy values that may be included in the filtered array.\n     * @returns The filtered array.\n     */\n    transform(value, exceptions = []) {\n        if (!exceptions.length) {\n            return value.filter(Boolean);\n        }\n        return value.filter((entry) => Boolean(entry) || exceptions.includes(entry));\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: CleanArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: CleanArrayPipe, isStandalone: true, name: \"cleanArray\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: CleanArrayPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'cleanArray',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4tYXJyYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3BpcGVzL2NsZWFuLWFycmF5L2NsZWFuLWFycmF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxjQUFjO0lBQzFCOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxLQUFZLEVBQUUsYUFBb0IsRUFBRTtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7OEdBZFcsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxZQUFZO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ2NsZWFuQXJyYXknLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDbGVhbkFycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHQvKipcblx0ICogUmVtb3ZlcyBhbGwgZmFsc3kgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIGFycmF5LlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgc3RyaXBwZWQgb2YgZmFsc3kgdmFsdWVzLlxuXHQgKiBAcGFyYW0gZXhjZXB0aW9ucyBUaGUgZmFsc3kgdmFsdWVzIHRoYXQgbWF5IGJlIGluY2x1ZGVkIGluIHRoZSBmaWx0ZXJlZCBhcnJheS5cblx0ICogQHJldHVybnMgVGhlIGZpbHRlcmVkIGFycmF5LlxuXHQgKi9cblx0cHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55W10sIGV4Y2VwdGlvbnM6IGFueVtdID0gW10pOiBhbnlbXSB7XG5cdFx0aWYgKCFleGNlcHRpb25zLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIHZhbHVlLmZpbHRlcihCb29sZWFuKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWUuZmlsdGVyKChlbnRyeSkgPT4gQm9vbGVhbihlbnRyeSkgfHwgZXhjZXB0aW9ucy5pbmNsdWRlcyhlbnRyeSkpO1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport { isObject } from 'lodash';\nimport * as i0 from \"@angular/core\";\nexport class EntriesPipe {\n    /**\n     * Transforms a record into a [key, value] array\n     *\n     * @param value - The provided record\n     */\n    transform(value) {\n        // Iben: If there's no value or the value is not an object, we return an empty array to prevent frontend breaking\n        if (!value || !isObject(value) || Array.isArray(value)) {\n            return [];\n        }\n        // Iben: Transform the record to a [key,value] array\n        return Array.from(Object.entries(value));\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: EntriesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: EntriesPipe, isStandalone: true, name: \"entries\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: EntriesPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'entries',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cmllcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvZW50cmllcy9lbnRyaWVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFNbEMsTUFBTSxPQUFPLFdBQVc7SUFDdkI7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxLQUE4QjtRQUM5QyxpSEFBaUg7UUFDakgsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0FkVyxXQUFXOzRHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5AUGlwZSh7XG5cdG5hbWU6ICdlbnRyaWVzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRW50cmllc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0LyoqXG5cdCAqIFRyYW5zZm9ybXMgYSByZWNvcmQgaW50byBhIFtrZXksIHZhbHVlXSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgLSBUaGUgcHJvdmlkZWQgcmVjb3JkXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFtzdHJpbmcsIHVua25vd25dW10ge1xuXHRcdC8vIEliZW46IElmIHRoZXJlJ3Mgbm8gdmFsdWUgb3IgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QsIHdlIHJldHVybiBhbiBlbXB0eSBhcnJheSB0byBwcmV2ZW50IGZyb250ZW5kIGJyZWFraW5nXG5cdFx0aWYgKCF2YWx1ZSB8fCAhaXNPYmplY3QodmFsdWUpIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogVHJhbnNmb3JtIHRoZSByZWNvcmQgdG8gYSBba2V5LHZhbHVlXSBhcnJheVxuXHRcdHJldHVybiBBcnJheS5mcm9tKE9iamVjdC5lbnRyaWVzKHZhbHVlKSk7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class HasObserversPipe {\n    transform(output) {\n        return output && output.observers.length > 0;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: HasObserversPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: HasObserversPipe, isStandalone: true, name: \"hasObservers\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: HasObserversPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'hasObservers',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW9ic2VydmVycy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvaGFzLW9ic2VydmVycy9oYXMtb2JzZXJ2ZXJzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBK0IsTUFBTSxlQUFlLENBQUM7O0FBTWxFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDckIsU0FBUyxDQUFDLE1BQTZCO1FBQzdDLE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQUhXLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnaGFzT2JzZXJ2ZXJzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGFzT2JzZXJ2ZXJzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHRwdWJsaWMgdHJhbnNmb3JtKG91dHB1dDogRXZlbnRFbWl0dGVyPHVua25vd24+KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIG91dHB1dCAmJiBvdXRwdXQub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class HasOwnProperty {\n    /**\n     * Checks whether the specified property exists within the given object.\n     *\n     * @param {unknown} object - The object to check for the presence of the property.\n     * @param {string} prop - The property name to check for within the object.\n     * @return {boolean} - Returns `true` if the property exists in the object, `false` otherwise.\n     */\n    transform(object, prop) {\n        // Use Object.prototype.hasOwnProperty to check if the property exists in the object\n        const hasOwnProperty = Object.prototype.hasOwnProperty;\n        // Check if the object is not null or undefined, and if it has the specified property\n        return object != null && hasOwnProperty.call(object, prop);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: HasOwnProperty, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: HasOwnProperty, isStandalone: true, name: \"hasOwnProperty\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: HasOwnProperty, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'hasOwnProperty',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW93bi1wcm9wZXJ0eS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvaGFzLW93bi1wcm9wZXJ0eS9oYXMtb3duLXByb3BlcnR5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxjQUFjO0lBQzFCOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxNQUFlLEVBQUUsSUFBWTtRQUM3QyxvRkFBb0Y7UUFDcEYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFFdkQscUZBQXFGO1FBQ3JGLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDOzhHQWRXLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ2hhc093blByb3BlcnR5Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGFzT3duUHJvcGVydHkgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgZXhpc3RzIHdpdGhpbiB0aGUgZ2l2ZW4gb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3Vua25vd259IG9iamVjdCAtIFRoZSBvYmplY3QgdG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIC0gVGhlIHByb3BlcnR5IG5hbWUgdG8gY2hlY2sgZm9yIHdpdGhpbiB0aGUgb2JqZWN0LlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMgaW4gdGhlIG9iamVjdCwgYGZhbHNlYCBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKG9iamVjdDogdW5rbm93biwgcHJvcDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Ly8gVXNlIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkgdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0XG5cdFx0Y29uc3QgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIG9iamVjdCBpcyBub3QgbnVsbCBvciB1bmRlZmluZWQsIGFuZCBpZiBpdCBoYXMgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eVxuXHRcdHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcCk7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { isObject } from 'lodash';\nimport clean from 'obj-clean';\nimport * as i0 from \"@angular/core\";\nexport class HasValuesPipe {\n    /**\n     * Checks whether an object has values\n     *\n     * @param value - The provided value\n     */\n    transform(value) {\n        // Iben: If the value is not an object, return valse\n        if (!value || !isObject(value) || Array.isArray(value)) {\n            return false;\n        }\n        // Iben: Return when the object has values\n        return Object.keys(clean(value)).length > 0;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: HasValuesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: HasValuesPipe, isStandalone: true, name: \"hasValues\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: HasValuesPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'hasValues',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXZhbHVlcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvaGFzLXZhbHVlcy9oYXMtdmFsdWVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEtBQUssTUFBTSxXQUFXLENBQUM7O0FBTTlCLE1BQU0sT0FBTyxhQUFhO0lBQ3pCOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsS0FBYTtRQUM3QixvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsMENBQTBDO1FBQzFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7OEdBZFcsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxXQUFXO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgY2xlYW4gZnJvbSAnb2JqLWNsZWFuJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnaGFzVmFsdWVzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGFzVmFsdWVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyB2YWx1ZXNcblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIHByb3ZpZGVkIHZhbHVlXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBvYmplY3QpOiBib29sZWFuIHtcblx0XHQvLyBJYmVuOiBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCwgcmV0dXJuIHZhbHNlXG5cdFx0aWYgKCF2YWx1ZSB8fCAhaXNPYmplY3QodmFsdWUpIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogUmV0dXJuIHdoZW4gdGhlIG9iamVjdCBoYXMgdmFsdWVzXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKGNsZWFuKHZhbHVlKSkubGVuZ3RoID4gMDtcblx0fVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { normalizeString } from '@studiohyperdrive/utils';\nimport * as i0 from \"@angular/core\";\nexport class NgxHighlightPipe {\n    /**\n     * Highlights the provided substring of a text with a chosen dom element\n     *\n     * @param value - The full text with the part we wish to highlight\n     * @param highlight - The part of the text we wish to highlight\n     * @param config - The configuration to determine if we want to normalize the values, to be case-sensitive, which tag and/or class to use for the highlight\n     * @param config.normalized - Default = true\n     * @param config.caseInsensitive - Default = true\n     * @param config.splitTextToHighlight - Default = false\n     * @param config.someOrEveryMatch - Default = 'every'\n     * @param config.tag - Default = 'mark'\n     * @param config.highlightClass - Default = 'ngx-mark-highlight'\n     */\n    transform(value, highlight, config) {\n        // Femke: Setup configuration or defaults\n        const normalized = config?.normalized ?? true;\n        const caseInsensitive = config?.caseInsensitive ?? true;\n        const splitTextToHighlight = config?.splitTextToHighlight ?? false;\n        const someOrEveryMatch = config?.someOrEveryMatch || 'every';\n        const tag = config?.tag || 'mark';\n        const highlightClass = config?.highlightClass ?? 'ngx-mark-highlight';\n        // Femke: Early exit if there's no value/highlight or the value/highlight is not a string\n        if (!value || !highlight || typeof value !== 'string' || typeof highlight !== 'string') {\n            return value;\n        }\n        // Femke: determine which value to use (normalized or not => é â ö etc will be replaced with e a o)\n        const usableValue = normalized ? normalizeString(value) : value;\n        let usableHighlight = (normalized ? normalizeString(highlight) : highlight)\n            // Femke: escape all regex characters\n            .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n        if (splitTextToHighlight) {\n            usableHighlight = usableHighlight\n                // Femke: replace all multiple spaces next to each other to a single space\n                .replace(/  +/gi, ' ')\n                // Femke: replace space with a pipe to have an OR query instead of searching for the entire string eg search for 'some' OR 'thing' OR 'else' instead of 'some thing else'\n                .replace(/ /gi, '|');\n        }\n        // Femke: remove all multiple pipes at the start\n        usableHighlight = usableHighlight.replace(/^\\|+/gi, '');\n        // Femke: remember on what indices we updated in our search text\n        let changedIndices = [];\n        usableValue.split('').forEach((char, index) => {\n            if (value[index] !== char) {\n                changedIndices.push({ original: index, updated: index });\n            }\n        });\n        let regexFlags = '';\n        // Femke: Every match should be highlighted, so the regex should apply global\n        if (someOrEveryMatch === 'every') {\n            regexFlags = 'g';\n        }\n        // Femke: Regex should be case-insensitive\n        if (caseInsensitive) {\n            regexFlags += 'i';\n        }\n        const regEx = new RegExp(usableHighlight, regexFlags);\n        const usableClass = highlightClass ? ` class=\"${highlightClass}\"` : '';\n        // Femke: Use a custom replacer so we can update our marked indices in case we found a match with our regex\n        let replacedResult = usableValue.replace(regEx, (match, index) => {\n            if (!match) {\n                return '';\n            }\n            const endIndex = index + match.length;\n            // Femke: we are using the original text here to make sure we have the original accent characters within the highlight\n            const result = `<${tag}${usableClass}>${value.substring(index, index + match.length)}</${tag}>`;\n            // Femke: filter out all changed indices that lay withing the range of our current match\n            changedIndices = changedIndices.filter((item) => !(index <= item.original && item.original < endIndex));\n            // Femke: update all found indices if they lay after the current replacement string\n            // Femke: we are however keeping the original position to know with what we need to replace the character later on\n            changedIndices = changedIndices.map((changedIndex) => {\n                if (index >= changedIndex.original) {\n                    return changedIndex;\n                }\n                else {\n                    // Femke: take the current updated position (in case of multiple hits before this index\n                    // Femke: add the length of the replacement string but subtract the length of the match since that length was there already\n                    return {\n                        ...changedIndex,\n                        updated: changedIndex.updated + result.length - match.length,\n                    };\n                }\n            });\n            return result;\n        });\n        // Femke: Update the character on each index that was replaced when normalizing the string but was not part of any match of the search query\n        changedIndices.forEach((item) => {\n            replacedResult =\n                replacedResult.substring(0, item.updated) +\n                    value.charAt(item.original) +\n                    replacedResult.substring(item.updated + 1);\n        });\n        return replacedResult;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxHighlightPipe, isStandalone: true, name: \"highlight\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxHighlightPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'highlight',\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWhpZ2hsaWdodC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvaGlnaGxpZ2h0L25neC1oaWdobGlnaHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTzFELE1BQU0sT0FBTyxnQkFBZ0I7SUFDNUI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksU0FBUyxDQUNmLEtBQW9CLEVBQ3BCLFNBQXdCLEVBQ3hCLE1BQXlDO1FBRXpDLHlDQUF5QztRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQztRQUM5QyxNQUFNLGVBQWUsR0FBRyxNQUFNLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQztRQUN4RCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sRUFBRSxvQkFBb0IsSUFBSSxLQUFLLENBQUM7UUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1FBQzdELE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDO1FBQ2xDLE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxjQUFjLElBQUksb0JBQW9CLENBQUM7UUFFdEUseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3hGLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUVELG1HQUFtRztRQUNuRyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMs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LE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07cUJBQzVELENBQUM7Z0JBQ0gsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILDRJQUE0STtRQUM1SSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsY0FBYztnQkFDYixjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUN6QyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQzNCLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sY0FBYyxDQUFDO0lBQ3ZCLENBQUM7OEdBbEhXLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUg1QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxXQUFXO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gJ0BzdHVkaW9oeXBlcmRyaXZlL3V0aWxzJztcblxuaW1wb3J0IHsgTmd4SGlnaGxpZ2h0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnaGlnaGxpZ2h0Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4SGlnaGxpZ2h0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHQvKipcblx0ICogSGlnaGxpZ2h0cyB0aGUgcHJvdmlkZWQgc3Vic3RyaW5nIG9mIGEgdGV4dCB3aXRoIGEgY2hvc2VuIGRvbSBlbGVtZW50XG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBmdWxsIHRleHQgd2l0aCB0aGUgcGFydCB3ZSB3aXNoIHRvIGhpZ2hsaWdodFxuXHQgKiBAcGFyYW0gaGlnaGxpZ2h0IC0gVGhlIHBhcnQgb2YgdGhlIHRleHQgd2Ugd2lzaCB0byBoaWdobGlnaHRcblx0ICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIHRvIGRldGVybWluZSBpZiB3ZSB3YW50IHRvIG5vcm1hbGl6ZSB0aGUgdmFsdWVzLCB0byBiZSBjYXNlLXNlbnNpdGl2ZSwgd2hpY2ggdGFnIGFuZC9vciBjbGFzcyB0byB1c2UgZm9yIHRoZSBoaWdobGlnaHRcblx0ICogQHBhcmFtIGNvbmZpZy5ub3JtYWxpemVkIC0gRGVmYXVsdCA9IHRydWVcblx0ICogQHBhcmFtIGNvbmZpZy5jYXNlSW5zZW5zaXRpdmUgLSBEZWZhdWx0ID0gdHJ1ZVxuXHQgKiBAcGFyYW0gY29uZmlnLnNwbGl0VGV4dFRvSGlnaGxpZ2h0IC0gRGVmYXVsdCA9IGZhbHNlXG5cdCAqIEBwYXJhbSBjb25maWcuc29tZU9yRXZlcnlNYXRjaCAtIERlZmF1bHQgPSAnZXZlcnknXG5cdCAqIEBwYXJhbSBjb25maWcudGFnIC0gRGVmYXVsdCA9ICdtYXJrJ1xuXHQgKiBAcGFyYW0gY29uZmlnLmhpZ2hsaWdodENsYXNzIC0gRGVmYXVsdCA9ICduZ3gtbWFyay1oaWdobGlnaHQnXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKFxuXHRcdHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuXHRcdGhpZ2hsaWdodDogc3RyaW5nIHwgbnVsbCxcblx0XHRjb25maWc/OiBOZ3hIaWdobGlnaHRDb25maWd1cmF0aW9uIHwgbnVsbFxuXHQpOiBzdHJpbmcge1xuXHRcdC8vIEZlbWtlOiBTZXR1cCBjb25maWd1cmF0aW9uIG9yIGRlZmF1bHRzXG5cdFx0Y29uc3Qgbm9ybWFsaXplZCA9IGNvbmZpZz8ubm9ybWFsaXplZCA/PyB0cnVlO1xuXHRcdGNvbnN0IGNhc2VJbnNlbnNpdGl2ZSA9IGNvbmZpZz8uY2FzZUluc2Vuc2l0aXZlID8/IHRydWU7XG5cdFx0Y29uc3Qgc3BsaXRUZXh0VG9IaWdobGlnaHQgPSBjb25maWc/LnNwbGl0VGV4dFRvSGlnaGxpZ2h0ID8/IGZhbHNlO1xuXHRcdGNvbnN0IHNvbWVPckV2ZXJ5TWF0Y2ggPSBjb25maWc/LnNvbWVPckV2ZXJ5TWF0Y2ggfHwgJ2V2ZXJ5Jztcblx0XHRjb25zdCB0YWcgPSBjb25maWc/LnRhZyB8fCAnbWFyayc7XG5cdFx0Y29uc3QgaGlnaGxpZ2h0Q2xhc3MgPSBjb25maWc/LmhpZ2hsaWdodENsYXNzID8/ICduZ3gtbWFyay1oaWdobGlnaHQnO1xuXG5cdFx0Ly8gRmVta2U6IEVhcmx5IGV4aXQgaWYgdGhlcmUncyBubyB2YWx1ZS9oaWdobGlnaHQgb3IgdGhlIHZhbHVlL2hpZ2hsaWdodCBpcyBub3QgYSBzdHJpbmdcblx0XHRpZiAoIXZhbHVlIHx8ICFoaWdobGlnaHQgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgaGlnaGxpZ2h0ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdC8vIEZlbWtlOiBkZXRlcm1pbmUgd2hpY2ggdmFsdWUgdG8gdXNlIChub3JtYWxpemVkIG9yIG5vdCA9PiDDqSDDoiDDtiBldGMgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGUgYSBvKVxuXHRcdGNvbnN0IHVzYWJsZVZhbHVlID0gbm9ybWFsaXplZCA/IG5vcm1hbGl6ZVN0cmluZyh2YWx1ZSkgOiB2YWx1ZTtcblx0XHRsZXQgdXNhYmxlSGlnaGxpZ2h0ID0gKG5vcm1hbGl6ZWQgPyBub3JtYWxpemVTdHJpbmcoaGlnaGxpZ2h0KSA6IGhpZ2hsaWdodClcblx0XHRcdC8vIEZlbWtlOiBlc2NhcGUgYWxsIHJlZ2V4IGNoYXJhY3RlcnNcblx0XHRcdC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xuXG5cdFx0aWYgKHNwbGl0VGV4dFRvSGlnaGxpZ2h0KSB7XG5cdFx0XHR1c2FibGVIaWdobGlnaHQgPSB1c2FibGVIaWdobGlnaHRcblx0XHRcdFx0Ly8gRmVta2U6IHJlcGxhY2UgYWxsIG11bHRpcGxlIHNwYWNlcyBuZXh0IHRvIGVhY2ggb3RoZXIgdG8gYSBzaW5nbGUgc3BhY2Vcblx0XHRcdFx0LnJlcGxhY2UoLyAgKy9naSwgJyAnKVxuXHRcdFx0XHQvLyBGZW1rZTogcmVwbGFjZSBzcGFjZSB3aXRoIGEgcGlwZSB0byBoYXZlIGFuIE9SIHF1ZXJ5IGluc3RlYWQgb2Ygc2VhcmNoaW5nIGZvciB0aGUgZW50aXJlIHN0cmluZyBlZyBzZWFyY2ggZm9yICdzb21lJyBPUiAndGhpbmcnIE9SICdlbHNlJyBpbnN0ZWFkIG9mICdzb21lIHRoaW5nIGVsc2UnXG5cdFx0XHRcdC5yZXBsYWNlKC8gL2dpLCAnfCcpO1xuXHRcdH1cblxuXHRcdC8vIEZlbWtlOiByZW1vdmUgYWxsIG11bHRpcGxlIHBpcGVzIGF0IHRoZSBzdGFydFxuXHRcdHVzYWJsZUhpZ2hsaWdodCA9IHVzYWJsZUhpZ2hsaWdodC5yZXBsYWNlKC9eXFx8Ky9naSwgJycpO1xuXG5cdFx0Ly8gRmVta2U6IHJlbWVtYmVyIG9uIHdoYXQgaW5kaWNlcyB3ZSB1cGRhdGVkIGluIG91ciBzZWFyY2ggdGV4dFxuXHRcdGxldCBjaGFuZ2VkSW5kaWNlczogeyBvcmlnaW5hbDogbnVtYmVyOyB1cGRhdGVkOiBudW1iZXIgfVtdID0gW107XG5cdFx0dXNhYmxlVmFsdWUuc3BsaXQoJycpLmZvckVhY2goKGNoYXIsIGluZGV4KSA9PiB7XG5cdFx0XHRpZiAodmFsdWVbaW5kZXhdICE9PSBjaGFyKSB7XG5cdFx0XHRcdGNoYW5nZWRJbmRpY2VzLnB1c2goeyBvcmlnaW5hbDogaW5kZXgsIHVwZGF0ZWQ6IGluZGV4IH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0bGV0IHJlZ2V4RmxhZ3MgPSAnJztcblxuXHRcdC8vIEZlbWtlOiBFdmVyeSBtYXRjaCBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQsIHNvIHRoZSByZWdleCBzaG91bGQgYXBwbHkgZ2xvYmFsXG5cdFx0aWYgKHNvbWVPckV2ZXJ5TWF0Y2ggPT09ICdldmVyeScpIHtcblx0XHRcdHJlZ2V4RmxhZ3MgPSAnZyc7XG5cdFx0fVxuXG5cdFx0Ly8gRmVta2U6IFJlZ2V4IHNob3VsZCBiZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0aWYgKGNhc2VJbnNlbnNpdGl2ZSkge1xuXHRcdFx0cmVnZXhGbGFncyArPSAnaSc7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVnRXggPSBuZXcgUmVnRXhwKHVzYWJsZUhpZ2hsaWdodCwgcmVnZXhGbGFncyk7XG5cdFx0Y29uc3QgdXNhYmxlQ2xhc3MgPSBoaWdobGlnaHRDbGFzcyA/IGAgY2xhc3M9XCIke2hpZ2hsaWdodENsYXNzfVwiYCA6ICcnO1xuXG5cdFx0Ly8gRmVta2U6IFVzZSBhIGN1c3RvbSByZXBsYWNlciBzbyB3ZSBjYW4gdXBkYXRlIG91ciBtYXJrZWQgaW5kaWNlcyBpbiBjYXNlIHdlIGZvdW5kIGEgbWF0Y2ggd2l0aCBvdXIgcmVnZXhcblx0XHRsZXQgcmVwbGFjZWRSZXN1bHQgPSB1c2FibGVWYWx1ZS5yZXBsYWNlKHJlZ0V4LCAobWF0Y2gsIGluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdGlmICghbWF0Y2gpIHtcblx0XHRcdFx0cmV0dXJuICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBlbmRJbmRleCA9IGluZGV4ICsgbWF0Y2gubGVuZ3RoO1xuXHRcdFx0Ly8gRmVta2U6IHdlIGFyZSB1c2luZyB0aGUgb3JpZ2luYWwgdGV4dCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBvcmlnaW5hbCBhY2NlbnQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGhpZ2hsaWdodFxuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYDwke3RhZ30ke3VzYWJsZUNsYXNzfT4ke3ZhbHVlLnN1YnN0cmluZyhpbmRleCwgaW5kZXggKyBtYXRjaC5sZW5ndGgpfTwvJHt0YWd9PmA7XG5cblx0XHRcdC8vIEZlbWtlOiBmaWx0ZXIgb3V0IGFsbCBjaGFuZ2VkIGluZGljZXMgdGhhdCBsYXkgd2l0aGluZyB0aGUgcmFuZ2Ugb2Ygb3VyIGN1cnJlbnQgbWF0Y2hcblx0XHRcdGNoYW5nZWRJbmRpY2VzID0gY2hhbmdlZEluZGljZXMuZmlsdGVyKFxuXHRcdFx0XHQoaXRlbSkgPT4gIShpbmRleCA8PSBpdGVtLm9yaWdpbmFsICYmIGl0ZW0ub3JpZ2luYWwgPCBlbmRJbmRleClcblx0XHRcdCk7XG5cblx0XHRcdC8vIEZlbWtlOiB1cGRhdGUgYWxsIGZvdW5kIGluZGljZXMgaWYgdGhleSBsYXkgYWZ0ZXIgdGhlIGN1cnJlbnQgcmVwbGFjZW1lbnQgc3RyaW5nXG5cdFx0XHQvLyBGZW1rZTogd2UgYXJlIGhvd2V2ZXIga2VlcGluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb24gdG8ga25vdyB3aXRoIHdoYXQgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBjaGFyYWN0ZXIgbGF0ZXIgb25cblx0XHRcdGNoYW5nZWRJbmRpY2VzID0gY2hhbmdlZEluZGljZXMubWFwKChjaGFuZ2VkSW5kZXgpID0+IHtcblx0XHRcdFx0aWYgKGluZGV4ID49IGNoYW5nZWRJbmRleC5vcmlnaW5hbCkge1xuXHRcdFx0XHRcdHJldHVybiBjaGFuZ2VkSW5kZXg7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gRmVta2U6IHRha2UgdGhlIGN1cnJlbnQgdXBkYXRlZCBwb3NpdGlvbiAoaW4gY2FzZSBvZiBtdWx0aXBsZSBoaXRzIGJlZm9yZSB0aGlzIGluZGV4XG5cdFx0XHRcdFx0Ly8gRmVta2U6IGFkZCB0aGUgbGVuZ3RoIG9mIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgYnV0IHN1YnRyYWN0IHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoIHNpbmNlIHRoYXQgbGVuZ3RoIHdhcyB0aGVyZSBhbHJlYWR5XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdC4uLmNoYW5nZWRJbmRleCxcblx0XHRcdFx0XHRcdHVwZGF0ZWQ6IGNoYW5nZWRJbmRleC51cGRhdGVkICsgcmVzdWx0Lmxlbmd0aCAtIG1hdGNoLmxlbmd0aCxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblxuXHRcdC8vIEZlbWtlOiBVcGRhdGUgdGhlIGNoYXJhY3RlciBvbiBlYWNoIGluZGV4IHRoYXQgd2FzIHJlcGxhY2VkIHdoZW4gbm9ybWFsaXppbmcgdGhlIHN0cmluZyBidXQgd2FzIG5vdCBwYXJ0IG9mIGFueSBtYXRjaCBvZiB0aGUgc2VhcmNoIHF1ZXJ5XG5cdFx0Y2hhbmdlZEluZGljZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0cmVwbGFjZWRSZXN1bHQgPVxuXHRcdFx0XHRyZXBsYWNlZFJlc3VsdC5zdWJzdHJpbmcoMCwgaXRlbS51cGRhdGVkKSArXG5cdFx0XHRcdHZhbHVlLmNoYXJBdChpdGVtLm9yaWdpbmFsKSArXG5cdFx0XHRcdHJlcGxhY2VkUmVzdWx0LnN1YnN0cmluZyhpdGVtLnVwZGF0ZWQgKyAxKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiByZXBsYWNlZFJlc3VsdDtcblx0fVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class IbanPipe {\n    transform(value = '') {\n        value = value.replace(/\\s/g, ''); // replace all spaces\n        let reformat = value.replace(/(.{4})/g, function (match) {\n            return match + ' '; // reformat into groups of 4 succeeded with a space\n        });\n        reformat = reformat.trim(); // remove trailing space\n        return reformat;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: IbanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: IbanPipe, isStandalone: true, name: \"IBAN\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: IbanPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'IBAN',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvaWJhbi9pYmFuLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxRQUFRO0lBQ2IsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQzFCLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtRQUV2RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLEtBQUs7WUFDdEQsT0FBTyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsbURBQW1EO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtRQUVwRCxPQUFPLFFBQVEsQ0FBQztJQUNqQixDQUFDOzhHQVhXLFFBQVE7NEdBQVIsUUFBUTs7MkZBQVIsUUFBUTtrQkFKcEIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsTUFBTTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ0lCQU4nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJYmFuUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlID0gJycpOiBzdHJpbmcge1xuXHRcdHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxzL2csICcnKTsgLy8gcmVwbGFjZSBhbGwgc3BhY2VzXG5cblx0XHRsZXQgcmVmb3JtYXQgPSB2YWx1ZS5yZXBsYWNlKC8oLns0fSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG5cdFx0XHRyZXR1cm4gbWF0Y2ggKyAnICc7IC8vIHJlZm9ybWF0IGludG8gZ3JvdXBzIG9mIDQgc3VjY2VlZGVkIHdpdGggYSBzcGFjZVxuXHRcdH0pO1xuXG5cdFx0cmVmb3JtYXQgPSByZWZvcm1hdC50cmltKCk7IC8vIHJlbW92ZSB0cmFpbGluZyBzcGFjZVxuXG5cdFx0cmV0dXJuIHJlZm9ybWF0O1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class IsNotEmptyPipe {\n    /**\n     * Checks if a given argument is an object or array and if it is empty.\n     *\n     * @param value - can be any value.\n     * @param checkProps - which props to check.\n     */\n    transform(value, checkProps = []) {\n        // Denis: check for array first, because \"typeof Array\" will return \"object\"\n        if (Array.isArray(value) && value.length > 0) {\n            return true;\n        }\n        // Denis: check for null values second, because \"typeof null\" will return \"object\"\n        if (value === null) {\n            return false;\n        }\n        // Denis: if the object is not empty, and checkProps is provided, check those props.\n        if (typeof value === 'object' && checkProps.length > 0) {\n            const propsWithValues = checkProps.filter((key) => typeof value[key] !== 'undefined' && value[key] !== null);\n            return propsWithValues.length === checkProps.length;\n        }\n        // Denis: check for empty objects.\n        if (typeof value === 'object' && Object.keys(value).length > 0) {\n            return true;\n        }\n        return false;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: IsNotEmptyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: IsNotEmptyPipe, isStandalone: true, name: \"isNotEmpty\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: IsNotEmptyPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'isNotEmpty',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbm90LWVtcHR5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9pcy1ub3QtZW1wdHkvaXMtbm90LWVtcHR5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxjQUFjO0lBQzFCOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEtBQWMsRUFBRSxhQUF1QixFQUFFO1FBQ2xELDRFQUE0RTtRQUM1RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxrRkFBa0Y7UUFDbEYsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsb0ZBQW9GO1FBQ3BGLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUN6RSxDQUFDO1lBRUYsT0FBTyxlQUFlLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDckQsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7OEdBakNXLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG5cdG5hbWU6ICdpc05vdEVtcHR5Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSXNOb3RFbXB0eVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhIGdpdmVuIGFyZ3VtZW50IGlzIGFuIG9iamVjdCBvciBhcnJheSBhbmQgaWYgaXQgaXMgZW1wdHkuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIGNhbiBiZSBhbnkgdmFsdWUuXG5cdCAqIEBwYXJhbSBjaGVja1Byb3BzIC0gd2hpY2ggcHJvcHMgdG8gY2hlY2suXG5cdCAqL1xuXHR0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGNoZWNrUHJvcHM6IHN0cmluZ1tdID0gW10pOiBib29sZWFuIHtcblx0XHQvLyBEZW5pczogY2hlY2sgZm9yIGFycmF5IGZpcnN0LCBiZWNhdXNlIFwidHlwZW9mIEFycmF5XCIgd2lsbCByZXR1cm4gXCJvYmplY3RcIlxuXHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBEZW5pczogY2hlY2sgZm9yIG51bGwgdmFsdWVzIHNlY29uZCwgYmVjYXVzZSBcInR5cGVvZiBudWxsXCIgd2lsbCByZXR1cm4gXCJvYmplY3RcIlxuXHRcdGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERlbmlzOiBpZiB0aGUgb2JqZWN0IGlzIG5vdCBlbXB0eSwgYW5kIGNoZWNrUHJvcHMgaXMgcHJvdmlkZWQsIGNoZWNrIHRob3NlIHByb3BzLlxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGNoZWNrUHJvcHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgcHJvcHNXaXRoVmFsdWVzID0gY2hlY2tQcm9wcy5maWx0ZXIoXG5cdFx0XHRcdChrZXk6IHN0cmluZykgPT4gdHlwZW9mIHZhbHVlW2tleV0gIT09ICd1bmRlZmluZWQnICYmIHZhbHVlW2tleV0gIT09IG51bGxcblx0XHRcdCk7XG5cblx0XHRcdHJldHVybiBwcm9wc1dpdGhWYWx1ZXMubGVuZ3RoID09PSBjaGVja1Byb3BzLmxlbmd0aDtcblx0XHR9XG5cblx0XHQvLyBEZW5pczogY2hlY2sgZm9yIGVtcHR5IG9iamVjdHMuXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuIl19","// Iben: This implementation is from https://github.com/nglrx/pipes/blob/master/packages/pipes/src/lib/array/join/join.pipe.ts\n// The package is no longer supported and is not compatible with more recent versions of Angular\nimport { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class JoinPipe {\n    /**\n     * Transforms an array to a joined string\n     *\n     * @param values - An array of values\n     * @param separator - A separator we wish to use\n     */\n    transform(values, separator) {\n        return values && values.join(separator);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: JoinPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: JoinPipe, isStandalone: true, name: \"join\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: JoinPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'join',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvam9pbi9qb2luLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOEhBQThIO0FBQzlILGdHQUFnRztBQUVoRyxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLFFBQVE7SUFDcEI7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsTUFBcUIsRUFBRSxTQUFrQjtRQUN6RCxPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OEdBVFcsUUFBUTs0R0FBUixRQUFROzsyRkFBUixRQUFRO2tCQUpwQixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxNQUFNO29CQUNaLFVBQVUsRUFBRSxJQUFJO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEliZW46IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbmdscngvcGlwZXMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvcGlwZXMvc3JjL2xpYi9hcnJheS9qb2luL2pvaW4ucGlwZS50c1xuLy8gVGhlIHBhY2thZ2UgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBhbmQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBtb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiBBbmd1bGFyXG5cbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnam9pbicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEpvaW5QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1zIGFuIGFycmF5IHRvIGEgam9pbmVkIHN0cmluZ1xuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVzIC0gQW4gYXJyYXkgb2YgdmFsdWVzXG5cdCAqIEBwYXJhbSBzZXBhcmF0b3IgLSBBIHNlcGFyYXRvciB3ZSB3aXNoIHRvIHVzZVxuXHQgKi9cblx0cHVibGljIHRyYW5zZm9ybSh2YWx1ZXM6IEFycmF5PHN0cmluZz4sIHNlcGFyYXRvcj86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHZhbHVlcyAmJiB2YWx1ZXMuam9pbihzZXBhcmF0b3IpO1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class LimitToPipe {\n    /**\n     * Limits an array to a specific value\n     *\n     * @param value - The provided array\n     * @param limitedTo - The number to which we want to limit the array\n     */\n    transform(value, limitedTo) {\n        // Iben: If no value is provided or the value is not an array, we early exit\n        if (!value || !Array.isArray(value)) {\n            return [];\n        }\n        // Iben: Slice the array based on the provided limit\n        return [...value].slice(0, limitedTo);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LimitToPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: LimitToPipe, isStandalone: true, name: \"limitTo\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LimitToPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'limitTo',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltaXQtdG8ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3BpcGVzL2xpbWl0LXRvL2xpbWl0LXRvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBQ3ZCOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLEtBQVksRUFBRSxTQUFpQjtRQUMvQyw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQWZXLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ2xpbWl0VG8nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBMaW1pdFRvUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHQvKipcblx0ICogTGltaXRzIGFuIGFycmF5IHRvIGEgc3BlY2lmaWMgdmFsdWVcblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIHByb3ZpZGVkIGFycmF5XG5cdCAqIEBwYXJhbSBsaW1pdGVkVG8gLSBUaGUgbnVtYmVyIHRvIHdoaWNoIHdlIHdhbnQgdG8gbGltaXQgdGhlIGFycmF5XG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnlbXSwgbGltaXRlZFRvOiBudW1iZXIpOiBhbnlbXSB7XG5cdFx0Ly8gSWJlbjogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQgb3IgdGhlIHZhbHVlIGlzIG5vdCBhbiBhcnJheSwgd2UgZWFybHkgZXhpdFxuXHRcdGlmICghdmFsdWUgfHwgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogU2xpY2UgdGhlIGFycmF5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBsaW1pdFxuXHRcdHJldHVybiBbLi4udmFsdWVdLnNsaWNlKDAsIGxpbWl0ZWRUbyk7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class LogPipe {\n    /**\n     * Logs the provided value to the console.\n     *\n     * @param value The value to log to the console.\n     * @param text An optional textual value to print before the piped value.\n     */\n    transform(value, text) {\n        // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n        text ? console.log(text, value) : console.log(value);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LogPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: LogPipe, isStandalone: true, name: \"log\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: LogPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'log',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9sb2cvbG9nLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxPQUFPO0lBQ25COzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFhO1FBQ3pDLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7OEdBVlcsT0FBTzs0R0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQUpuQixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxLQUFLO29CQUNYLFVBQVUsRUFBRSxJQUFJO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnbG9nJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTG9nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHQvKipcblx0ICogTG9ncyB0aGUgcHJvdmlkZWQgdmFsdWUgdG8gdGhlIGNvbnNvbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbG9nIHRvIHRoZSBjb25zb2xlLlxuXHQgKiBAcGFyYW0gdGV4dCBBbiBvcHRpb25hbCB0ZXh0dWFsIHZhbHVlIHRvIHByaW50IGJlZm9yZSB0aGUgcGlwZWQgdmFsdWUuXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHRleHQ/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuXHRcdHRleHQgPyBjb25zb2xlLmxvZyh0ZXh0LCB2YWx1ZSkgOiBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class MergeArraysPipe {\n    /**\n     * The mergeArrays pipe will take a source array and concat it with all provided additional arrays.\n     * Undefined or null values are filtered from the flattened result.\n     *\n     * @param source{any[]}\n     * @param arrays{any[]}\n     */\n    transform(source = [], ...arrays) {\n        // Denis: If the source is not a valid array, fallback to an empty array.\n        if (!Array.isArray(source)) {\n            return [];\n        }\n        return (source\n            // Denis: Concat the source with the provided arguments, filter out the non-array values from the arguments.\n            .concat(...arrays.filter((array) => Array.isArray(array)))\n            // Denis: Filter undefined or null values from the flattened result.\n            .filter((value) => typeof value !== 'undefined' && value !== null));\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: MergeArraysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: MergeArraysPipe, isStandalone: true, name: \"mergeArrays\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: MergeArraysPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'mergeArrays',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtYXJyYXlzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9tZXJnZS1hcnJheXMvbWVyZ2UtYXJyYXlzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxlQUFlO0lBQzNCOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxTQUFnQixFQUFFLEVBQUUsR0FBRyxNQUFlO1FBQ3RELHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sQ0FDTixNQUFNO1lBQ0wsNEdBQTRHO2FBQzNHLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRSxvRUFBb0U7YUFDbkUsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxDQUN4RSxDQUFDO0lBQ0gsQ0FBQzs4R0FyQlcsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxhQUFhO29CQUNuQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ21lcmdlQXJyYXlzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTWVyZ2VBcnJheXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdC8qKlxuXHQgKiBUaGUgbWVyZ2VBcnJheXMgcGlwZSB3aWxsIHRha2UgYSBzb3VyY2UgYXJyYXkgYW5kIGNvbmNhdCBpdCB3aXRoIGFsbCBwcm92aWRlZCBhZGRpdGlvbmFsIGFycmF5cy5cblx0ICogVW5kZWZpbmVkIG9yIG51bGwgdmFsdWVzIGFyZSBmaWx0ZXJlZCBmcm9tIHRoZSBmbGF0dGVuZWQgcmVzdWx0LlxuXHQgKlxuXHQgKiBAcGFyYW0gc291cmNle2FueVtdfVxuXHQgKiBAcGFyYW0gYXJyYXlze2FueVtdfVxuXHQgKi9cblx0cHVibGljIHRyYW5zZm9ybShzb3VyY2U6IGFueVtdID0gW10sIC4uLmFycmF5czogYW55W11bXSk6IGFueVtdIHtcblx0XHQvLyBEZW5pczogSWYgdGhlIHNvdXJjZSBpcyBub3QgYSB2YWxpZCBhcnJheSwgZmFsbGJhY2sgdG8gYW4gZW1wdHkgYXJyYXkuXG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0c291cmNlXG5cdFx0XHRcdC8vIERlbmlzOiBDb25jYXQgdGhlIHNvdXJjZSB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMsIGZpbHRlciBvdXQgdGhlIG5vbi1hcnJheSB2YWx1ZXMgZnJvbSB0aGUgYXJndW1lbnRzLlxuXHRcdFx0XHQuY29uY2F0KC4uLmFycmF5cy5maWx0ZXIoKGFycmF5OiBhbnlbXSkgPT4gQXJyYXkuaXNBcnJheShhcnJheSkpKVxuXHRcdFx0XHQvLyBEZW5pczogRmlsdGVyIHVuZGVmaW5lZCBvciBudWxsIHZhbHVlcyBmcm9tIHRoZSBmbGF0dGVuZWQgcmVzdWx0LlxuXHRcdFx0XHQuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKVxuXHRcdCk7XG5cdH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/** The configuration token for the NgxReplaceElementsPipe */\nexport const NgxReplaceElementsConfigurationToken = new InjectionToken('NgxReplaceElementsConfigurationToken');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1lbGVtZW50cy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3Rva2Vucy9yZXBsYWNlLWVsZW1lbnRzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsNkRBQTZEO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUNoRCxJQUFJLGNBQWMsQ0FBa0Msc0NBQXNDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5neFJlcGxhY2VFbGVtZW50c0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKiBUaGUgY29uZmlndXJhdGlvbiB0b2tlbiBmb3IgdGhlIE5neFJlcGxhY2VFbGVtZW50c1BpcGUgKi9cbmV4cG9ydCBjb25zdCBOZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uVG9rZW4gPVxuXHRuZXcgSW5qZWN0aW9uVG9rZW48Tmd4UmVwbGFjZUVsZW1lbnRzQ29uZmlndXJhdGlvbj4oJ05neFJlcGxhY2VFbGVtZW50c0NvbmZpZ3VyYXRpb25Ub2tlbicpO1xuIl19","import { Pipe, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NgxReplaceElementsConfigurationToken } from '../../tokens';\nimport * as i0 from \"@angular/core\";\n/**\n * A pipe that allows to replace text elements with a WebComponent\n */\nexport class NgxReplaceElementsPipe {\n    constructor() {\n        this.configuration = inject(NgxReplaceElementsConfigurationToken);\n        this.sanitizer = inject(DomSanitizer);\n    }\n    /**\n     * Replaces all matches of a specific selector with provided WebComponents\n     *\n     * @param value - The original string value\n     * @param items - The items we wish to replace\n     */\n    transform(value, items) {\n        // Iben: If the value isn't a string we early exit and warn the user\n        if (typeof value !== 'string') {\n            console.warn('NgxReplaceElements: A non string-value was provided to the NgxReplaceElementsPipe');\n            return '';\n        }\n        // Iben: If no items were provided to replace, we just return the value\n        if (!items || items.length === 0) {\n            return value;\n        }\n        // Iben: set up a new instance of the DOMParser and parse the value as text/html.\n        // This will return a Document which we can work with to find/replace elements.\n        const parser = new DOMParser();\n        const body = parser.parseFromString(value, 'text/html');\n        // Iben: Loop over all items we wish to replace\n        items.forEach((item) => {\n            // Iben: Get the selector and the element we want to replace the target with\n            const { selector, element, includeInnerText } = this.configuration[item.elementId];\n            // Iben: Select the target\n            const target = body.querySelector(selector.replace('{{id}}', item.id));\n            // Iben: If no target was found, early exit\n            if (!target) {\n                return;\n            }\n            // Iben: Create a new element within the Document based on the provided selector.\n            // The selector can be any native or custom web component (not an Angular component).\n            // Keep in mind that the element will need to have a lowercase input prop for the reference.\n            const replacement = body.createElement(element);\n            // Iben: If the item included data, we set these attributes\n            if (item.data) {\n                Object.entries(item.data).forEach(([key, value]) => {\n                    replacement.setAttribute(key, value);\n                });\n            }\n            // Iben: Copy the innerText of the target element to the new element if needed.\n            if (includeInnerText) {\n                replacement.innerText = target.innerText;\n            }\n            // Iben: Replace the target with the new element within the Document.\n            target.replaceWith(replacement);\n        });\n        // Iben: sanitize the document and mark it as trusted HTML before returning it to the template.\n        return this.sanitizer.bypassSecurityTrustHtml(body.documentElement.innerHTML);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxReplaceElementsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxReplaceElementsPipe, isStandalone: true, name: \"ngxReplaceElements\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxReplaceElementsPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'ngxReplaceElements',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1lbGVtZW50cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvcmVwbGFjZS1lbGVtZW50cy9yZXBsYWNlLWVsZW1lbnRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBR3BFOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQUtrQixrQkFBYSxHQUFHLE1BQU0sQ0FDdEMsb0NBQW9DLENBQ3BDLENBQUM7UUFDZSxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBZ0VsRDtJQTlEQTs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBK0I7UUFDdkQsb0VBQW9FO1FBQ3BFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTyxDQUFDLElBQUksQ0FDWCxtRkFBbUYsQ0FDbkYsQ0FBQztZQUNGLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsaUZBQWlGO1FBQ2pGLCtFQUErRTtRQUMvRSxNQUFNLE1BQU0sR0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFhLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxFLCtDQUErQztRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEIsNEVBQTRFO1lBQzVFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFbkYsMEJBQTBCO1lBQzFCLE1BQU0sTUFBTSxHQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXBGLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2IsT0FBTztZQUNSLENBQUM7WUFFRCxpRkFBaUY7WUFDakYscUZBQXFGO1lBQ3JGLDRGQUE0RjtZQUM1RixNQUFNLFdBQVcsR0FBZ0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU3RCwyREFBMkQ7WUFDM0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtvQkFDbEQsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUVELCtFQUErRTtZQUMvRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RCLFdBQVcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUMxQyxDQUFDO1lBRUQscUVBQXFFO1lBQ3JFLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCwrRkFBK0Y7UUFDL0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs4R0FuRVcsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IE5neFJlcGxhY2VFbGVtZW50c0NvbmZpZ3VyYXRpb25Ub2tlbiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBOZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uLCBOZ3hSZXBsYWNlRWxlbWVudHNJdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIEEgcGlwZSB0aGF0IGFsbG93cyB0byByZXBsYWNlIHRleHQgZWxlbWVudHMgd2l0aCBhIFdlYkNvbXBvbmVudFxuICovXG5AUGlwZSh7XG5cdG5hbWU6ICduZ3hSZXBsYWNlRWxlbWVudHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hSZXBsYWNlRWxlbWVudHNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvbiA9IGluamVjdDxOZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uPihcblx0XHROZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uVG9rZW5cblx0KTtcblx0cHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuXHQvKipcblx0ICogUmVwbGFjZXMgYWxsIG1hdGNoZXMgb2YgYSBzcGVjaWZpYyBzZWxlY3RvciB3aXRoIHByb3ZpZGVkIFdlYkNvbXBvbmVudHNcblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIG9yaWdpbmFsIHN0cmluZyB2YWx1ZVxuXHQgKiBAcGFyYW0gaXRlbXMgLSBUaGUgaXRlbXMgd2Ugd2lzaCB0byByZXBsYWNlXG5cdCAqL1xuXHR0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgaXRlbXM6IE5neFJlcGxhY2VFbGVtZW50c0l0ZW1bXSk6IFNhZmVIdG1sIHtcblx0XHQvLyBJYmVuOiBJZiB0aGUgdmFsdWUgaXNuJ3QgYSBzdHJpbmcgd2UgZWFybHkgZXhpdCBhbmQgd2FybiB0aGUgdXNlclxuXHRcdGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRjb25zb2xlLndhcm4oXG5cdFx0XHRcdCdOZ3hSZXBsYWNlRWxlbWVudHM6IEEgbm9uIHN0cmluZy12YWx1ZSB3YXMgcHJvdmlkZWQgdG8gdGhlIE5neFJlcGxhY2VFbGVtZW50c1BpcGUnXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdC8vIEliZW46IElmIG5vIGl0ZW1zIHdlcmUgcHJvdmlkZWQgdG8gcmVwbGFjZSwgd2UganVzdCByZXR1cm4gdGhlIHZhbHVlXG5cdFx0aWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBzZXQgdXAgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIERPTVBhcnNlciBhbmQgcGFyc2UgdGhlIHZhbHVlIGFzIHRleHQvaHRtbC5cblx0XHQvLyBUaGlzIHdpbGwgcmV0dXJuIGEgRG9jdW1lbnQgd2hpY2ggd2UgY2FuIHdvcmsgd2l0aCB0byBmaW5kL3JlcGxhY2UgZWxlbWVudHMuXG5cdFx0Y29uc3QgcGFyc2VyOiBET01QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5cdFx0Y29uc3QgYm9keTogRG9jdW1lbnQgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHZhbHVlLCAndGV4dC9odG1sJyk7XG5cblx0XHQvLyBJYmVuOiBMb29wIG92ZXIgYWxsIGl0ZW1zIHdlIHdpc2ggdG8gcmVwbGFjZVxuXHRcdGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcblx0XHRcdC8vIEliZW46IEdldCB0aGUgc2VsZWN0b3IgYW5kIHRoZSBlbGVtZW50IHdlIHdhbnQgdG8gcmVwbGFjZSB0aGUgdGFyZ2V0IHdpdGhcblx0XHRcdGNvbnN0IHsgc2VsZWN0b3IsIGVsZW1lbnQsIGluY2x1ZGVJbm5lclRleHQgfSA9IHRoaXMuY29uZmlndXJhdGlvbltpdGVtLmVsZW1lbnRJZF07XG5cblx0XHRcdC8vIEliZW46IFNlbGVjdCB0aGUgdGFyZ2V0XG5cdFx0XHRjb25zdCB0YXJnZXQ6IEhUTUxFbGVtZW50ID0gYm9keS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLnJlcGxhY2UoJ3t7aWR9fScsIGl0ZW0uaWQpKTtcblxuXHRcdFx0Ly8gSWJlbjogSWYgbm8gdGFyZ2V0IHdhcyBmb3VuZCwgZWFybHkgZXhpdFxuXHRcdFx0aWYgKCF0YXJnZXQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJYmVuOiBDcmVhdGUgYSBuZXcgZWxlbWVudCB3aXRoaW4gdGhlIERvY3VtZW50IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWxlY3Rvci5cblx0XHRcdC8vIFRoZSBzZWxlY3RvciBjYW4gYmUgYW55IG5hdGl2ZSBvciBjdXN0b20gd2ViIGNvbXBvbmVudCAobm90IGFuIEFuZ3VsYXIgY29tcG9uZW50KS5cblx0XHRcdC8vIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBlbGVtZW50IHdpbGwgbmVlZCB0byBoYXZlIGEgbG93ZXJjYXNlIGlucHV0IHByb3AgZm9yIHRoZSByZWZlcmVuY2UuXG5cdFx0XHRjb25zdCByZXBsYWNlbWVudDogSFRNTEVsZW1lbnQgPSBib2R5LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCk7XG5cblx0XHRcdC8vIEliZW46IElmIHRoZSBpdGVtIGluY2x1ZGVkIGRhdGEsIHdlIHNldCB0aGVzZSBhdHRyaWJ1dGVzXG5cdFx0XHRpZiAoaXRlbS5kYXRhKSB7XG5cdFx0XHRcdE9iamVjdC5lbnRyaWVzKGl0ZW0uZGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRcdFx0cmVwbGFjZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWJlbjogQ29weSB0aGUgaW5uZXJUZXh0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCB0byB0aGUgbmV3IGVsZW1lbnQgaWYgbmVlZGVkLlxuXHRcdFx0aWYgKGluY2x1ZGVJbm5lclRleHQpIHtcblx0XHRcdFx0cmVwbGFjZW1lbnQuaW5uZXJUZXh0ID0gdGFyZ2V0LmlubmVyVGV4dDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWJlbjogUmVwbGFjZSB0aGUgdGFyZ2V0IHdpdGggdGhlIG5ldyBlbGVtZW50IHdpdGhpbiB0aGUgRG9jdW1lbnQuXG5cdFx0XHR0YXJnZXQucmVwbGFjZVdpdGgocmVwbGFjZW1lbnQpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gSWJlbjogc2FuaXRpemUgdGhlIGRvY3VtZW50IGFuZCBtYXJrIGl0IGFzIHRydXN0ZWQgSFRNTCBiZWZvcmUgcmV0dXJuaW5nIGl0IHRvIHRoZSB0ZW1wbGF0ZS5cblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYm9keS5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MKTtcblx0fVxufVxuIl19","import { Pipe, SecurityContext, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as i0 from \"@angular/core\";\nexport class SafeHtmlPipe {\n    constructor() {\n        this.sanitized = inject(DomSanitizer);\n    }\n    /**\n     * Maps a provided string value to a sanitized string\n     *\n     * @param value - A provided string with HTML items\n     */\n    transform(value) {\n        // Iben: Early exit in case the value is not a string\n        if (!value || typeof value !== 'string') {\n            return '';\n        }\n        // Iben: Sanitize the string\n        return this.sanitized.sanitize(SecurityContext.HTML, value);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: SafeHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: SafeHtmlPipe, isStandalone: true, name: \"safeHtml\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: SafeHtmlPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'safeHtml',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9zYWZlLWh0bWwvc2FmZS1odG1sLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxZQUFZO0lBSnpCO1FBS2tCLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0FnQmxEO0lBZEE7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxLQUFhO1FBQzdCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0FoQlcsWUFBWTs0R0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxVQUFVO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBTZWN1cml0eUNvbnRleHQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHtcblx0bmFtZTogJ3NhZmVIdG1sJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2FmZUh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkID0gaW5qZWN0KERvbVNhbml0aXplcik7XG5cblx0LyoqXG5cdCAqIE1hcHMgYSBwcm92aWRlZCBzdHJpbmcgdmFsdWUgdG8gYSBzYW5pdGl6ZWQgc3RyaW5nXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIEEgcHJvdmlkZWQgc3RyaW5nIHdpdGggSFRNTCBpdGVtc1xuXHQgKi9cblx0cHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0Ly8gSWJlbjogRWFybHkgZXhpdCBpbiBjYXNlIHRoZSB2YWx1ZSBpcyBub3QgYSBzdHJpbmdcblx0XHRpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBTYW5pdGl6ZSB0aGUgc3RyaW5nXG5cdFx0cmV0dXJuIHRoaXMuc2FuaXRpemVkLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCB2YWx1ZSk7XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class StripHtmlPipe {\n    transform(value, replaceWith = '') {\n        return value\n            ? String(value)\n                .replace(/(<[^>]+>)+/gm, replaceWith)\n                .replace(/(&nbsp;)+/gm, replaceWith)\n                .replace(/(\\r\\n|\\n|\\r)+/gm, replaceWith)\n            : '';\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: StripHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: StripHtmlPipe, isStandalone: true, name: \"stripHtml\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: StripHtmlPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'stripHtml',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaXAtaHRtbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvc3RyaXAtaHRtbC9zdHJpcC1odG1sLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxhQUFhO0lBQ2xCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsY0FBc0IsRUFBRTtRQUN2RCxPQUFPLEtBQUs7WUFDWCxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDWixPQUFPLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQztpQkFDcEMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7aUJBQ25DLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUM7OEdBUlcsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxXQUFXO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ3N0cmlwSHRtbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFN0cmlwSHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0cHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCByZXBsYWNlV2l0aDogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuXHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0PyBTdHJpbmcodmFsdWUpXG5cdFx0XHRcdFx0LnJlcGxhY2UoLyg8W14+XSs+KSsvZ20sIHJlcGxhY2VXaXRoKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC8oJm5ic3A7KSsvZ20sIHJlcGxhY2VXaXRoKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC8oXFxyXFxufFxcbnxcXHIpKy9nbSwgcmVwbGFjZVdpdGgpXG5cdFx0XHQ6ICcnO1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ToArrayPipe {\n    /**\n     * Checks if a given argument is an array, if not, it will wrap the argument in a new array.\n     */\n    // Denis: Intentional any interface. The argument can be any kind of value.\n    transform(value) {\n        if (typeof value === 'undefined' || value === null) {\n            return [];\n        }\n        if (Array.isArray(value)) {\n            return value;\n        }\n        return [value];\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: \"toArray\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: ToArrayPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'toArray',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3BpcGVzL3RvLWFycmF5L3RvLWFycmF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBQ3ZCOztPQUVHO0lBQ0gsMkVBQTJFO0lBQ3BFLFNBQVMsQ0FBQyxLQUFVO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxPQUFPLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQzs4R0FmVyxXQUFXOzRHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG5cdG5hbWU6ICd0b0FycmF5Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9BcnJheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhIGdpdmVuIGFyZ3VtZW50IGlzIGFuIGFycmF5LCBpZiBub3QsIGl0IHdpbGwgd3JhcCB0aGUgYXJndW1lbnQgaW4gYSBuZXcgYXJyYXkuXG5cdCAqL1xuXHQvLyBEZW5pczogSW50ZW50aW9uYWwgYW55IGludGVyZmFjZS4gVGhlIGFyZ3VtZW50IGNhbiBiZSBhbnkga2luZCBvZiB2YWx1ZS5cblx0cHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55KTogYW55W10ge1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFt2YWx1ZV07XG5cdH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * A pipe to pass a transformer function to. By using this setup, we can use functions without causing rerender issues\n */\nexport class TransformPipe {\n    /**\n     * Transforms a value based on a provided transform function\n     *\n     * @param value - The provided value we wish to transform\n     * @param transformer - A provided transform function\n     */\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n    transform(value, transformer) {\n        // Iben: If no transformer is passed, we return the original value\n        if (!transformer) {\n            return value;\n        }\n        // Iben: Transform the value and return\n        return transformer(value);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: TransformPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: TransformPipe, isStandalone: true, name: \"transform\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: TransformPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'transform',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy90cmFuc2Zvcm0vdHJhbnNmb3JtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOztHQUVHO0FBS0gsTUFBTSxPQUFPLGFBQWE7SUFDekI7Ozs7O09BS0c7SUFDSCxzRUFBc0U7SUFDL0QsU0FBUyxDQUF3QixLQUFVLEVBQUUsV0FBcUI7UUFDeEUsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0FoQlcsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxXQUFXO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBwaXBlIHRvIHBhc3MgYSB0cmFuc2Zvcm1lciBmdW5jdGlvbiB0by4gQnkgdXNpbmcgdGhpcyBzZXR1cCwgd2UgY2FuIHVzZSBmdW5jdGlvbnMgd2l0aG91dCBjYXVzaW5nIHJlcmVuZGVyIGlzc3Vlc1xuICovXG5AUGlwZSh7XG5cdG5hbWU6ICd0cmFuc2Zvcm0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1zIGEgdmFsdWUgYmFzZWQgb24gYSBwcm92aWRlZCB0cmFuc2Zvcm0gZnVuY3Rpb25cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIC0gVGhlIHByb3ZpZGVkIHZhbHVlIHdlIHdpc2ggdG8gdHJhbnNmb3JtXG5cdCAqIEBwYXJhbSB0cmFuc2Zvcm1lciAtIEEgcHJvdmlkZWQgdHJhbnNmb3JtIGZ1bmN0aW9uXG5cdCAqL1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG5cdHB1YmxpYyB0cmFuc2Zvcm08VHJhbnNmb3JtZXJUeXBlID0gYW55Pih2YWx1ZTogYW55LCB0cmFuc2Zvcm1lcjogRnVuY3Rpb24pOiBUcmFuc2Zvcm1lclR5cGUge1xuXHRcdC8vIEliZW46IElmIG5vIHRyYW5zZm9ybWVyIGlzIHBhc3NlZCwgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZVxuXHRcdGlmICghdHJhbnNmb3JtZXIpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBUcmFuc2Zvcm0gdGhlIHZhbHVlIGFuZCByZXR1cm5cblx0XHRyZXR1cm4gdHJhbnNmb3JtZXIodmFsdWUpO1xuXHR9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TruncateTextPipe {\n    transform(value, limit = 75) {\n        return value.length > limit ? value.substring(0, limit) + '...' : value;\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: TruncateTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: TruncateTextPipe, isStandalone: true, name: \"truncateText\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: TruncateTextPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'truncateText',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUtdGV4dC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvdHJ1bmNhdGUtdGV4dC90cnVuY2F0ZS10ZXh0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxnQkFBZ0I7SUFDckIsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFLLEdBQUcsRUFBRTtRQUN6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6RSxDQUFDOzhHQUhXLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcblx0bmFtZTogJ3RydW5jYXRlVGV4dCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRydW5jYXRlVGV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0cHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsaW1pdCA9IDc1KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdmFsdWUubGVuZ3RoID4gbGltaXQgPyB2YWx1ZS5zdWJzdHJpbmcoMCwgbGltaXQpICsgJy4uLicgOiB2YWx1ZTtcblx0fVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { uniqBy } from 'lodash';\nimport * as i0 from \"@angular/core\";\nexport class UniqByPipe {\n    transform(value, key) {\n        if (!Array.isArray(value) || value.length === 0) {\n            return [];\n        }\n        return uniqBy(value, key);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: UniqByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: UniqByPipe, isStandalone: true, name: \"uniqBy\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: UniqByPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'uniqBy',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcS1ieS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvdW5pcXVlLWJ5L3VuaXEtYnkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDOztBQU1oQyxNQUFNLE9BQU8sVUFBVTtJQUNmLFNBQVMsQ0FBQyxLQUErQixFQUFFLEdBQVc7UUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0FQVyxVQUFVOzRHQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBSnRCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcblxuQFBpcGUoe1xuXHRuYW1lOiAndW5pcUJ5Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVW5pcUJ5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10sIGtleTogc3RyaW5nKTogYW55IHtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdHJldHVybiB1bmlxQnkodmFsdWUsIGtleSk7XG5cdH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const WITH_ROUTER_LINKS_CONFIG = new InjectionToken('withRouterLinksConfig');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yb3V0ZXItbGlua3MuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvcGlwZXMvd2l0aC1yb3V0ZXItbGlua3Mvd2l0aC1yb3V0ZXItbGlua3MuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3pELHVCQUF1QixDQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgV2l0aFJvdXRlckxpbmtzQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgV0lUSF9ST1VURVJfTElOS1NfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFdpdGhSb3V0ZXJMaW5rc0NvbmZpZz4oXG5cdCd3aXRoUm91dGVyTGlua3NDb25maWcnXG4pO1xuIl19","import { Pipe, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { WITH_ROUTER_LINKS_CONFIG } from './with-router-links.config';\nimport * as i0 from \"@angular/core\";\n/**\n * An additional pipe to convert anchors to router-links\n */\nexport class WithRouterLinkPipe {\n    constructor() {\n        this.config = inject(WITH_ROUTER_LINKS_CONFIG);\n        this.sanitizer = inject(DomSanitizer);\n    }\n    /**\n     * transform\n     *\n     * The transform method loop through the linkReferences and find/replace matching\n     * references within the given value (string) with the provided web component (global/local config).\n     *\n     * @param value\n     * @param linkReferences\n     */\n    transform(value, linkReferences = []) {\n        // Denis: Check if the provided value is a string,\n        // if not, the DOMParser would fail, so return the value as given.\n        if (typeof value !== 'string') {\n            return value;\n        }\n        // Denis: set up a new instance of the DOMParser and parse the value as text/html.\n        // This will return a Document which we can work with to find/replace elements.\n        const parser = new DOMParser();\n        const body = parser.parseFromString(value, 'text/html');\n        // Denis: loop over each reference within the linkReferences.\n        // The argument defaults to an empty array, if no linkReferences are provided,\n        // it will loop over an empty array.\n        linkReferences.forEach(({ dataLinkId, link, replaceElementSelector, toAttribute, hostClass, }) => {\n            // Denis: construct the selector string\n            const selector = `a[${this.config.dataLinkIdAttributeName}=\"${dataLinkId}\"]`;\n            // Denis: select the placeholder element within the parsed Document.\n            const placeholderLink = body.querySelector(selector);\n            // Denis: if no placeholder is found, early return.\n            if (!placeholderLink) {\n                return;\n            }\n            // Denis: create a new element within the Document based on the provided selector.\n            // The selector can be any native or custom web component (not an Angular component).\n            // Keep in mind that the element will need to have a lowercase input prop for the reference.\n            // We will attempt to create the element with the replaceElementSelector (local)\n            // and fall back to the config.replaceElementSelector (global).\n            const parsedLink = body.createElement(replaceElementSelector || this.config.replaceElementSelector);\n            // Denis: because setAttribute expects a string value,\n            // check if the provided routerLinkValue is an Array. If so, join it.\n            const routerLinkValue = Array.isArray(link) ? link.join('/') : link;\n            // Denis: set the link attribute of the component.\n            // We will attempt to set the attribute with the linkAttributeName (local)\n            // and fall back to the config.linkAttributeName (global).\n            parsedLink.setAttribute(toAttribute || this.config.linkAttributeName, routerLinkValue);\n            // Wouter: If provided, set the hostClass provided by the pipe's transform. If no class is defined,\n            // the global config will be used. If no global config is defined either, the class will not be set.\n            if (hostClass || this.config.hostClass) {\n                parsedLink.setAttribute('class', hostClass || this.config.hostClass);\n            }\n            // Denis: copy the innerText of the placeholder element to the new element.\n            parsedLink.innerText = placeholderLink.innerText;\n            // Denis: replace the placeholder with the new element within the Document.\n            placeholderLink.replaceWith(parsedLink);\n        });\n        // Denis: sanitize the document and mark it as trusted HTML before returning it to the template.\n        return this.sanitizer.bypassSecurityTrustHtml(body.documentElement.innerHTML);\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: WithRouterLinkPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n    static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.2.4\", ngImport: i0, type: WithRouterLinkPipe, isStandalone: true, name: \"withRouterLinks\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: WithRouterLinkPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'withRouterLinks',\n                    standalone: true,\n                }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yb3V0ZXItbGlua3MucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3BpcGVzL3dpdGgtcm91dGVyLWxpbmtzL3dpdGgtcm91dGVyLWxpbmtzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFdEU7O0dBRUc7QUFLSCxNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBS2tCLFdBQU0sR0FBRyxNQUFNLENBQXdCLHdCQUF3QixDQUFDLENBQUM7UUFDakUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQWtGbEQ7SUFoRkE7Ozs7Ozs7O09BUUc7SUFDSSxTQUFTLENBQUMsS0FBYSxFQUFFLGlCQUFrQyxFQUFFO1FBQ25FLGtEQUFrRDtRQUNsRCxrRUFBa0U7UUFDbEUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxrRkFBa0Y7UUFDbEYsK0VBQStFO1FBQy9FLE1BQU0sTUFBTSxHQUFjLElBQUksU0FBUyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQWEsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFbEUsNkRBQTZEO1FBQzdELDhFQUE4RTtRQUM5RSxvQ0FBb0M7UUFDcEMsY0FBYyxDQUFDLE9BQU8sQ0FDckIsQ0FBQyxFQUNBLFVBQVUsRUFDVixJQUFJLEVBQ0osc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxTQUFTLEdBQ00sRUFBRSxFQUFFO1lBQ25CLHVDQUF1QztZQUN2QyxNQUFNLFFBQVEsR0FBVyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEtBQUssVUFBVSxJQUFJLENBQUM7WUFDckYsb0VBQW9FO1lBQ3BFLE1BQU0sZUFBZSxHQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxFLG1EQUFtRDtZQUNuRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDUixDQUFDO1lBRUQsa0ZBQWtGO1lBQ2xGLHFGQUFxRjtZQUNyRiw0RkFBNEY7WUFDNUYsZ0ZBQWdGO1lBQ2hGLCtEQUErRDtZQUMvRCxNQUFNLFVBQVUsR0FBZ0IsSUFBSSxDQUFDLGFBQWEsQ0FDakQsc0JBQXNCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDNUQsQ0FBQztZQUVGLHNEQUFzRDtZQUN0RCxxRUFBcUU7WUFDckUsTUFBTSxlQUFlLEdBQVcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRTVFLGtEQUFrRDtZQUNsRCwwRUFBMEU7WUFDMUUsMERBQTBEO1lBQzFELFVBQVUsQ0FBQyxZQUFZLENBQ3RCLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUM1QyxlQUFlLENBQ2YsQ0FBQztZQUVGLG1HQUFtRztZQUNuRyxvR0FBb0c7WUFDcEcsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUVELDJFQUEyRTtZQUMzRSxVQUFVLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFFakQsMkVBQTJFO1lBQzNFLGVBQWUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUNELENBQUM7UUFFRixnR0FBZ0c7UUFDaEcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs4R0FuRlcsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgV2l0aFJvdXRlckxpbmtzQ29uZmlnLCBMaW5rUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgV0lUSF9ST1VURVJfTElOS1NfQ09ORklHIH0gZnJvbSAnLi93aXRoLXJvdXRlci1saW5rcy5jb25maWcnO1xuXG4vKipcbiAqIEFuIGFkZGl0aW9uYWwgcGlwZSB0byBjb252ZXJ0IGFuY2hvcnMgdG8gcm91dGVyLWxpbmtzXG4gKi9cbkBQaXBlKHtcblx0bmFtZTogJ3dpdGhSb3V0ZXJMaW5rcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFdpdGhSb3V0ZXJMaW5rUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHRwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdDxXaXRoUm91dGVyTGlua3NDb25maWc+KFdJVEhfUk9VVEVSX0xJTktTX0NPTkZJRyk7XG5cdHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG5cblx0LyoqXG5cdCAqIHRyYW5zZm9ybVxuXHQgKlxuXHQgKiBUaGUgdHJhbnNmb3JtIG1ldGhvZCBsb29wIHRocm91Z2ggdGhlIGxpbmtSZWZlcmVuY2VzIGFuZCBmaW5kL3JlcGxhY2UgbWF0Y2hpbmdcblx0ICogcmVmZXJlbmNlcyB3aXRoaW4gdGhlIGdpdmVuIHZhbHVlIChzdHJpbmcpIHdpdGggdGhlIHByb3ZpZGVkIHdlYiBjb21wb25lbnQgKGdsb2JhbC9sb2NhbCBjb25maWcpLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVcblx0ICogQHBhcmFtIGxpbmtSZWZlcmVuY2VzXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxpbmtSZWZlcmVuY2VzOiBMaW5rUmVmZXJlbmNlW10gPSBbXSk6IGFueSB7XG5cdFx0Ly8gRGVuaXM6IENoZWNrIGlmIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhIHN0cmluZyxcblx0XHQvLyBpZiBub3QsIHRoZSBET01QYXJzZXIgd291bGQgZmFpbCwgc28gcmV0dXJuIHRoZSB2YWx1ZSBhcyBnaXZlbi5cblx0XHRpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdC8vIERlbmlzOiBzZXQgdXAgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIERPTVBhcnNlciBhbmQgcGFyc2UgdGhlIHZhbHVlIGFzIHRleHQvaHRtbC5cblx0XHQvLyBUaGlzIHdpbGwgcmV0dXJuIGEgRG9jdW1lbnQgd2hpY2ggd2UgY2FuIHdvcmsgd2l0aCB0byBmaW5kL3JlcGxhY2UgZWxlbWVudHMuXG5cdFx0Y29uc3QgcGFyc2VyOiBET01QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5cdFx0Y29uc3QgYm9keTogRG9jdW1lbnQgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHZhbHVlLCAndGV4dC9odG1sJyk7XG5cblx0XHQvLyBEZW5pczogbG9vcCBvdmVyIGVhY2ggcmVmZXJlbmNlIHdpdGhpbiB0aGUgbGlua1JlZmVyZW5jZXMuXG5cdFx0Ly8gVGhlIGFyZ3VtZW50IGRlZmF1bHRzIHRvIGFuIGVtcHR5IGFycmF5LCBpZiBubyBsaW5rUmVmZXJlbmNlcyBhcmUgcHJvdmlkZWQsXG5cdFx0Ly8gaXQgd2lsbCBsb29wIG92ZXIgYW4gZW1wdHkgYXJyYXkuXG5cdFx0bGlua1JlZmVyZW5jZXMuZm9yRWFjaChcblx0XHRcdCh7XG5cdFx0XHRcdGRhdGFMaW5rSWQsXG5cdFx0XHRcdGxpbmssXG5cdFx0XHRcdHJlcGxhY2VFbGVtZW50U2VsZWN0b3IsXG5cdFx0XHRcdHRvQXR0cmlidXRlLFxuXHRcdFx0XHRob3N0Q2xhc3MsXG5cdFx0XHR9OiBMaW5rUmVmZXJlbmNlKSA9PiB7XG5cdFx0XHRcdC8vIERlbmlzOiBjb25zdHJ1Y3QgdGhlIHNlbGVjdG9yIHN0cmluZ1xuXHRcdFx0XHRjb25zdCBzZWxlY3Rvcjogc3RyaW5nID0gYGFbJHt0aGlzLmNvbmZpZy5kYXRhTGlua0lkQXR0cmlidXRlTmFtZX09XCIke2RhdGFMaW5rSWR9XCJdYDtcblx0XHRcdFx0Ly8gRGVuaXM6IHNlbGVjdCB0aGUgcGxhY2Vob2xkZXIgZWxlbWVudCB3aXRoaW4gdGhlIHBhcnNlZCBEb2N1bWVudC5cblx0XHRcdFx0Y29uc3QgcGxhY2Vob2xkZXJMaW5rOiBIVE1MRWxlbWVudCA9IGJvZHkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG5cblx0XHRcdFx0Ly8gRGVuaXM6IGlmIG5vIHBsYWNlaG9sZGVyIGlzIGZvdW5kLCBlYXJseSByZXR1cm4uXG5cdFx0XHRcdGlmICghcGxhY2Vob2xkZXJMaW5rKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRGVuaXM6IGNyZWF0ZSBhIG5ldyBlbGVtZW50IHdpdGhpbiB0aGUgRG9jdW1lbnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNlbGVjdG9yLlxuXHRcdFx0XHQvLyBUaGUgc2VsZWN0b3IgY2FuIGJlIGFueSBuYXRpdmUgb3IgY3VzdG9tIHdlYiBjb21wb25lbnQgKG5vdCBhbiBBbmd1bGFyIGNvbXBvbmVudCkuXG5cdFx0XHRcdC8vIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBlbGVtZW50IHdpbGwgbmVlZCB0byBoYXZlIGEgbG93ZXJjYXNlIGlucHV0IHByb3AgZm9yIHRoZSByZWZlcmVuY2UuXG5cdFx0XHRcdC8vIFdlIHdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGVsZW1lbnQgd2l0aCB0aGUgcmVwbGFjZUVsZW1lbnRTZWxlY3RvciAobG9jYWwpXG5cdFx0XHRcdC8vIGFuZCBmYWxsIGJhY2sgdG8gdGhlIGNvbmZpZy5yZXBsYWNlRWxlbWVudFNlbGVjdG9yIChnbG9iYWwpLlxuXHRcdFx0XHRjb25zdCBwYXJzZWRMaW5rOiBIVE1MRWxlbWVudCA9IGJvZHkuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRyZXBsYWNlRWxlbWVudFNlbGVjdG9yIHx8IHRoaXMuY29uZmlnLnJlcGxhY2VFbGVtZW50U2VsZWN0b3Jcblx0XHRcdFx0KTtcblxuXHRcdFx0XHQvLyBEZW5pczogYmVjYXVzZSBzZXRBdHRyaWJ1dGUgZXhwZWN0cyBhIHN0cmluZyB2YWx1ZSxcblx0XHRcdFx0Ly8gY2hlY2sgaWYgdGhlIHByb3ZpZGVkIHJvdXRlckxpbmtWYWx1ZSBpcyBhbiBBcnJheS4gSWYgc28sIGpvaW4gaXQuXG5cdFx0XHRcdGNvbnN0IHJvdXRlckxpbmtWYWx1ZTogc3RyaW5nID0gQXJyYXkuaXNBcnJheShsaW5rKSA/IGxpbmsuam9pbignLycpIDogbGluaztcblxuXHRcdFx0XHQvLyBEZW5pczogc2V0IHRoZSBsaW5rIGF0dHJpYnV0ZSBvZiB0aGUgY29tcG9uZW50LlxuXHRcdFx0XHQvLyBXZSB3aWxsIGF0dGVtcHQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgbGlua0F0dHJpYnV0ZU5hbWUgKGxvY2FsKVxuXHRcdFx0XHQvLyBhbmQgZmFsbCBiYWNrIHRvIHRoZSBjb25maWcubGlua0F0dHJpYnV0ZU5hbWUgKGdsb2JhbCkuXG5cdFx0XHRcdHBhcnNlZExpbmsuc2V0QXR0cmlidXRlKFxuXHRcdFx0XHRcdHRvQXR0cmlidXRlIHx8IHRoaXMuY29uZmlnLmxpbmtBdHRyaWJ1dGVOYW1lLFxuXHRcdFx0XHRcdHJvdXRlckxpbmtWYWx1ZVxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIFdvdXRlcjogSWYgcHJvdmlkZWQsIHNldCB0aGUgaG9zdENsYXNzIHByb3ZpZGVkIGJ5IHRoZSBwaXBlJ3MgdHJhbnNmb3JtLiBJZiBubyBjbGFzcyBpcyBkZWZpbmVkLFxuXHRcdFx0XHQvLyB0aGUgZ2xvYmFsIGNvbmZpZyB3aWxsIGJlIHVzZWQuIElmIG5vIGdsb2JhbCBjb25maWcgaXMgZGVmaW5lZCBlaXRoZXIsIHRoZSBjbGFzcyB3aWxsIG5vdCBiZSBzZXQuXG5cdFx0XHRcdGlmIChob3N0Q2xhc3MgfHwgdGhpcy5jb25maWcuaG9zdENsYXNzKSB7XG5cdFx0XHRcdFx0cGFyc2VkTGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgaG9zdENsYXNzIHx8IHRoaXMuY29uZmlnLmhvc3RDbGFzcyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBEZW5pczogY29weSB0aGUgaW5uZXJUZXh0IG9mIHRoZSBwbGFjZWhvbGRlciBlbGVtZW50IHRvIHRoZSBuZXcgZWxlbWVudC5cblx0XHRcdFx0cGFyc2VkTGluay5pbm5lclRleHQgPSBwbGFjZWhvbGRlckxpbmsuaW5uZXJUZXh0O1xuXG5cdFx0XHRcdC8vIERlbmlzOiByZXBsYWNlIHRoZSBwbGFjZWhvbGRlciB3aXRoIHRoZSBuZXcgZWxlbWVudCB3aXRoaW4gdGhlIERvY3VtZW50LlxuXHRcdFx0XHRwbGFjZWhvbGRlckxpbmsucmVwbGFjZVdpdGgocGFyc2VkTGluayk7XG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdC8vIERlbmlzOiBzYW5pdGl6ZSB0aGUgZG9jdW1lbnQgYW5kIG1hcmsgaXQgYXMgdHJ1c3RlZCBIVE1MIGJlZm9yZSByZXR1cm5pbmcgaXQgdG8gdGhlIHRlbXBsYXRlLlxuXHRcdHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChib2R5LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwpO1xuXHR9XG59XG4iXX0=","import { ArrayContainsOnePipe } from './array-contains-one/array-contains-one.pipe';\nimport { BtwPipe } from './btw/btw.pipe';\nimport { CleanArrayPipe } from './clean-array/clean-array.pipe';\nimport { EntriesPipe } from './entries/entries.pipe';\nimport { HasObserversPipe } from './has-observers/has-observers.pipe';\nimport { HasOwnProperty } from './has-own-property/has-own-property.pipe';\nimport { HasValuesPipe } from './has-values/has-values.pipe';\nimport { NgxHighlightPipe } from './highlight/ngx-highlight.pipe';\nimport { IbanPipe } from './iban/iban.pipe';\nimport { IsNotEmptyPipe } from './is-not-empty/is-not-empty.pipe';\nimport { JoinPipe } from './join/join.pipe';\nimport { LimitToPipe } from './limit-to/limit-to.pipe';\nimport { LogPipe } from './log/log.pipe';\nimport { MergeArraysPipe } from './merge-arrays/merge-arrays.pipe';\nimport { NgxReplaceElementsPipe } from './replace-elements/replace-elements.pipe';\nimport { SafeHtmlPipe } from './safe-html/safe-html.pipe';\nimport { StripHtmlPipe } from './strip-html/strip-html.pipe';\nimport { ToArrayPipe } from './to-array/to-array.pipe';\nimport { TransformPipe } from './transform/transform.pipe';\nimport { TruncateTextPipe } from './truncate-text/truncate-text.pipe';\nimport { UniqByPipe } from './unique-by/uniq-by.pipe';\nimport { WithRouterLinkPipe } from './with-router-links/with-router-links.pipe';\nexport const Pipes = [\n    ArrayContainsOnePipe,\n    BtwPipe,\n    CleanArrayPipe,\n    CleanArrayPipe,\n    EntriesPipe,\n    HasObserversPipe,\n    HasOwnProperty,\n    HasValuesPipe,\n    NgxHighlightPipe,\n    IbanPipe,\n    IsNotEmptyPipe,\n    JoinPipe,\n    LimitToPipe,\n    LogPipe,\n    MergeArraysPipe,\n    SafeHtmlPipe,\n    StripHtmlPipe,\n    ToArrayPipe,\n    TransformPipe,\n    TruncateTextPipe,\n    UniqByPipe,\n    WithRouterLinkPipe,\n    NgxReplaceElementsPipe,\n];\nexport { ArrayContainsOnePipe } from './array-contains-one/array-contains-one.pipe';\nexport { BtwPipe } from './btw/btw.pipe';\nexport { CleanArrayPipe } from './clean-array/clean-array.pipe';\nexport { EntriesPipe } from './entries/entries.pipe';\nexport { HasObserversPipe } from './has-observers/has-observers.pipe';\nexport { HasOwnProperty } from './has-own-property/has-own-property.pipe';\nexport { HasValuesPipe } from './has-values/has-values.pipe';\nexport { NgxHighlightPipe } from './highlight/ngx-highlight.pipe';\nexport { IbanPipe } from './iban/iban.pipe';\nexport { IsNotEmptyPipe } from './is-not-empty/is-not-empty.pipe';\nexport { JoinPipe } from './join/join.pipe';\nexport { LimitToPipe } from './limit-to/limit-to.pipe';\nexport { LogPipe } from './log/log.pipe';\nexport { MergeArraysPipe } from './merge-arrays/merge-arrays.pipe';\nexport { SafeHtmlPipe } from './safe-html/safe-html.pipe';\nexport { StripHtmlPipe } from './strip-html/strip-html.pipe';\nexport { ToArrayPipe } from './to-array/to-array.pipe';\nexport { TransformPipe } from './transform/transform.pipe';\nexport { TruncateTextPipe } from './truncate-text/truncate-text.pipe';\nexport { UniqByPipe } from './unique-by/uniq-by.pipe';\nexport { WithRouterLinkPipe } from './with-router-links/with-router-links.pipe';\nexport { NgxReplaceElementsPipe } from './replace-elements/replace-elements.pipe';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9waXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ3BCLG9CQUFvQjtJQUNwQixPQUFPO0lBQ1AsY0FBYztJQUNkLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLFFBQVE7SUFDUixjQUFjO0lBQ2QsUUFBUTtJQUNSLFdBQVc7SUFDWCxPQUFPO0lBQ1AsZUFBZTtJQUNmLFlBQVk7SUFDWixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGtCQUFrQjtJQUNsQixzQkFBc0I7Q0FDdEIsQ0FBQztBQUVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycmF5Q29udGFpbnNPbmVQaXBlIH0gZnJvbSAnLi9hcnJheS1jb250YWlucy1vbmUvYXJyYXktY29udGFpbnMtb25lLnBpcGUnO1xuaW1wb3J0IHsgQnR3UGlwZSB9IGZyb20gJy4vYnR3L2J0dy5waXBlJztcbmltcG9ydCB7IENsZWFuQXJyYXlQaXBlIH0gZnJvbSAnLi9jbGVhbi1hcnJheS9jbGVhbi1hcnJheS5waXBlJztcbmltcG9ydCB7IEVudHJpZXNQaXBlIH0gZnJvbSAnLi9lbnRyaWVzL2VudHJpZXMucGlwZSc7XG5pbXBvcnQgeyBIYXNPYnNlcnZlcnNQaXBlIH0gZnJvbSAnLi9oYXMtb2JzZXJ2ZXJzL2hhcy1vYnNlcnZlcnMucGlwZSc7XG5pbXBvcnQgeyBIYXNPd25Qcm9wZXJ0eSB9IGZyb20gJy4vaGFzLW93bi1wcm9wZXJ0eS9oYXMtb3duLXByb3BlcnR5LnBpcGUnO1xuaW1wb3J0IHsgSGFzVmFsdWVzUGlwZSB9IGZyb20gJy4vaGFzLXZhbHVlcy9oYXMtdmFsdWVzLnBpcGUnO1xuaW1wb3J0IHsgTmd4SGlnaGxpZ2h0UGlwZSB9IGZyb20gJy4vaGlnaGxpZ2h0L25neC1oaWdobGlnaHQucGlwZSc7XG5pbXBvcnQgeyBJYmFuUGlwZSB9IGZyb20gJy4vaWJhbi9pYmFuLnBpcGUnO1xuaW1wb3J0IHsgSXNOb3RFbXB0eVBpcGUgfSBmcm9tICcuL2lzLW5vdC1lbXB0eS9pcy1ub3QtZW1wdHkucGlwZSc7XG5pbXBvcnQgeyBKb2luUGlwZSB9IGZyb20gJy4vam9pbi9qb2luLnBpcGUnO1xuaW1wb3J0IHsgTGltaXRUb1BpcGUgfSBmcm9tICcuL2xpbWl0LXRvL2xpbWl0LXRvLnBpcGUnO1xuaW1wb3J0IHsgTG9nUGlwZSB9IGZyb20gJy4vbG9nL2xvZy5waXBlJztcbmltcG9ydCB7IE1lcmdlQXJyYXlzUGlwZSB9IGZyb20gJy4vbWVyZ2UtYXJyYXlzL21lcmdlLWFycmF5cy5waXBlJztcbmltcG9ydCB7IE5neFJlcGxhY2VFbGVtZW50c1BpcGUgfSBmcm9tICcuL3JlcGxhY2UtZWxlbWVudHMvcmVwbGFjZS1lbGVtZW50cy5waXBlJztcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSB9IGZyb20gJy4vc2FmZS1odG1sL3NhZmUtaHRtbC5waXBlJztcbmltcG9ydCB7IFN0cmlwSHRtbFBpcGUgfSBmcm9tICcuL3N0cmlwLWh0bWwvc3RyaXAtaHRtbC5waXBlJztcbmltcG9ydCB7IFRvQXJyYXlQaXBlIH0gZnJvbSAnLi90by1hcnJheS90by1hcnJheS5waXBlJztcbmltcG9ydCB7IFRyYW5zZm9ybVBpcGUgfSBmcm9tICcuL3RyYW5zZm9ybS90cmFuc2Zvcm0ucGlwZSc7XG5pbXBvcnQgeyBUcnVuY2F0ZVRleHRQaXBlIH0gZnJvbSAnLi90cnVuY2F0ZS10ZXh0L3RydW5jYXRlLXRleHQucGlwZSc7XG5pbXBvcnQgeyBVbmlxQnlQaXBlIH0gZnJvbSAnLi91bmlxdWUtYnkvdW5pcS1ieS5waXBlJztcbmltcG9ydCB7IFdpdGhSb3V0ZXJMaW5rUGlwZSB9IGZyb20gJy4vd2l0aC1yb3V0ZXItbGlua3Mvd2l0aC1yb3V0ZXItbGlua3MucGlwZSc7XG5cbmV4cG9ydCBjb25zdCBQaXBlcyA9IFtcblx0QXJyYXlDb250YWluc09uZVBpcGUsXG5cdEJ0d1BpcGUsXG5cdENsZWFuQXJyYXlQaXBlLFxuXHRDbGVhbkFycmF5UGlwZSxcblx0RW50cmllc1BpcGUsXG5cdEhhc09ic2VydmVyc1BpcGUsXG5cdEhhc093blByb3BlcnR5LFxuXHRIYXNWYWx1ZXNQaXBlLFxuXHROZ3hIaWdobGlnaHRQaXBlLFxuXHRJYmFuUGlwZSxcblx0SXNOb3RFbXB0eVBpcGUsXG5cdEpvaW5QaXBlLFxuXHRMaW1pdFRvUGlwZSxcblx0TG9nUGlwZSxcblx0TWVyZ2VBcnJheXNQaXBlLFxuXHRTYWZlSHRtbFBpcGUsXG5cdFN0cmlwSHRtbFBpcGUsXG5cdFRvQXJyYXlQaXBlLFxuXHRUcmFuc2Zvcm1QaXBlLFxuXHRUcnVuY2F0ZVRleHRQaXBlLFxuXHRVbmlxQnlQaXBlLFxuXHRXaXRoUm91dGVyTGlua1BpcGUsXG5cdE5neFJlcGxhY2VFbGVtZW50c1BpcGUsXG5dO1xuXG5leHBvcnQgeyBBcnJheUNvbnRhaW5zT25lUGlwZSB9IGZyb20gJy4vYXJyYXktY29udGFpbnMtb25lL2FycmF5LWNvbnRhaW5zLW9uZS5waXBlJztcbmV4cG9ydCB7IEJ0d1BpcGUgfSBmcm9tICcuL2J0dy9idHcucGlwZSc7XG5leHBvcnQgeyBDbGVhbkFycmF5UGlwZSB9IGZyb20gJy4vY2xlYW4tYXJyYXkvY2xlYW4tYXJyYXkucGlwZSc7XG5leHBvcnQgeyBFbnRyaWVzUGlwZSB9IGZyb20gJy4vZW50cmllcy9lbnRyaWVzLnBpcGUnO1xuZXhwb3J0IHsgSGFzT2JzZXJ2ZXJzUGlwZSB9IGZyb20gJy4vaGFzLW9ic2VydmVycy9oYXMtb2JzZXJ2ZXJzLnBpcGUnO1xuZXhwb3J0IHsgSGFzT3duUHJvcGVydHkgfSBmcm9tICcuL2hhcy1vd24tcHJvcGVydHkvaGFzLW93bi1wcm9wZXJ0eS5waXBlJztcbmV4cG9ydCB7IEhhc1ZhbHVlc1BpcGUgfSBmcm9tICcuL2hhcy12YWx1ZXMvaGFzLXZhbHVlcy5waXBlJztcbmV4cG9ydCB7IE5neEhpZ2hsaWdodFBpcGUgfSBmcm9tICcuL2hpZ2hsaWdodC9uZ3gtaGlnaGxpZ2h0LnBpcGUnO1xuZXhwb3J0IHsgSWJhblBpcGUgfSBmcm9tICcuL2liYW4vaWJhbi5waXBlJztcbmV4cG9ydCB7IElzTm90RW1wdHlQaXBlIH0gZnJvbSAnLi9pcy1ub3QtZW1wdHkvaXMtbm90LWVtcHR5LnBpcGUnO1xuZXhwb3J0IHsgSm9pblBpcGUgfSBmcm9tICcuL2pvaW4vam9pbi5waXBlJztcbmV4cG9ydCB7IExpbWl0VG9QaXBlIH0gZnJvbSAnLi9saW1pdC10by9saW1pdC10by5waXBlJztcbmV4cG9ydCB7IExvZ1BpcGUgfSBmcm9tICcuL2xvZy9sb2cucGlwZSc7XG5leHBvcnQgeyBNZXJnZUFycmF5c1BpcGUgfSBmcm9tICcuL21lcmdlLWFycmF5cy9tZXJnZS1hcnJheXMucGlwZSc7XG5leHBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuL3NhZmUtaHRtbC9zYWZlLWh0bWwucGlwZSc7XG5leHBvcnQgeyBTdHJpcEh0bWxQaXBlIH0gZnJvbSAnLi9zdHJpcC1odG1sL3N0cmlwLWh0bWwucGlwZSc7XG5leHBvcnQgeyBUb0FycmF5UGlwZSB9IGZyb20gJy4vdG8tYXJyYXkvdG8tYXJyYXkucGlwZSc7XG5leHBvcnQgeyBUcmFuc2Zvcm1QaXBlIH0gZnJvbSAnLi90cmFuc2Zvcm0vdHJhbnNmb3JtLnBpcGUnO1xuZXhwb3J0IHsgVHJ1bmNhdGVUZXh0UGlwZSB9IGZyb20gJy4vdHJ1bmNhdGUtdGV4dC90cnVuY2F0ZS10ZXh0LnBpcGUnO1xuZXhwb3J0IHsgVW5pcUJ5UGlwZSB9IGZyb20gJy4vdW5pcXVlLWJ5L3VuaXEtYnkucGlwZSc7XG5leHBvcnQgeyBXaXRoUm91dGVyTGlua1BpcGUgfSBmcm9tICcuL3dpdGgtcm91dGVyLWxpbmtzL3dpdGgtcm91dGVyLWxpbmtzLnBpcGUnO1xuZXhwb3J0IHsgTmd4UmVwbGFjZUVsZW1lbnRzUGlwZSB9IGZyb20gJy4vcmVwbGFjZS1lbGVtZW50cy9yZXBsYWNlLWVsZW1lbnRzLnBpcGUnO1xuIl19","import { Directive } from '@angular/core';\nimport { Subject, filter, take, takeUntil, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class NgxQueryParamFormSyncComponent {\n    constructor(route, // eslint-disable-line @angular-eslint/prefer-inject\n    router // eslint-disable-line @angular-eslint/prefer-inject\n    ) {\n        this.route = route;\n        this.router = router;\n        this.destroyed$ = new Subject();\n        /**\n         * The query params we wish to form\n         */\n        this.queryParams$ = this.route\n            .queryParams;\n    }\n    ngOnInit() {\n        //Iben: Warn the user if one of the two methods isn't provided\n        if ((!this.scrambleParams && this.unscrambleParams) ||\n            (this.scrambleParams && !this.unscrambleParams)) {\n            console.error(`NgxUtils: NgxQueryParamFormSyncComponent detected the use of the parameter scrambling but is missing an implementation for the ${this.scrambleParams ? 'unscrambleParams' : 'scrambleParams'} method. Please provide this method in order for this flow to work correctly.`);\n        }\n        // Iben: Setup the form for the data\n        this.form = this.initForm();\n        // Iben: Listen to the form changes\n        this.form.valueChanges\n            .pipe(tap((data) => {\n            // Iben: Update the route params\n            this.setDataInRoute(data);\n            // Iben: Handle the route data changes\n            if (this.handleDataChanges) {\n                this.handleDataChanges(data);\n            }\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n        // Iben: Listen to the initial query param update so we can set the data in the form if we navigate to a link with the params\n        this.queryParams$\n            .pipe(take(1), filter(Boolean), tap((data) => {\n            // Iben: Convert the route data properties to the actual data\n            let value = Object.keys(data || {}).reduce((previous, current) => {\n                return {\n                    ...previous,\n                    [current]: data[current] ? JSON.parse(data[current]) : undefined,\n                };\n            }, {});\n            // Iben: In case the unscrambleParams method is provided, we unscramble the data\n            if (this.unscrambleParams) {\n                value = this.unscrambleParams(value);\n            }\n            //Iben: If the entire object is empty, we early exit and do not set the form\n            if (Object.keys(value).length === 0) {\n                return;\n            }\n            // Iben: Set the current form value\n            this.form.setValue(value);\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n    }\n    ngOnDestroy() {\n        this.destroyed$.next();\n        this.destroyed$.complete();\n        this.clearData();\n    }\n    /**\n     * Clears the data in the form\n     */\n    clearData() {\n        this.form.reset();\n    }\n    /**\n     * Sets the provided data in the route, so the filtered view can be shared by url\n     *\n     * @param  data - The provided data\n     */\n    setDataInRoute(data) {\n        // Iben: If no data was provided, we simply unset the current params\n        if (Object.keys(data || {}).length === 0) {\n            this.router.navigate([], {\n                relativeTo: this.route,\n                queryParams: {},\n            });\n            return;\n        }\n        // Iben: In case a scrambleParams function was provided, we scramble the params first\n        const parsedData = this.scrambleParams ? this.scrambleParams(data) : data;\n        // Iben: Stringify all properties of the data\n        const queryParams = Object.keys(parsedData || {}).reduce((previous, current) => {\n            return {\n                ...previous,\n                [current]: JSON.stringify(parsedData[current]),\n            };\n        }, {});\n        // Iben: Add the queryParams to the route\n        this.router.navigate([], {\n            relativeTo: this.route,\n            queryParamsHandling: 'merge',\n            queryParams,\n        });\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxQueryParamFormSyncComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Directive }); }\n    static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.2.4\", type: NgxQueryParamFormSyncComponent, isStandalone: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NgxQueryParamFormSyncComponent, decorators: [{\n            type: Directive\n        }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW0tZm9ybS1zeW5jLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2Fic3RyYWN0cy9xdWVyeS1wYXJhbS1mb3JtLXN5bmMvcXVlcnktcGFyYW0tZm9ybS1zeW5jLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBT3pFLE1BQU0sT0FBZ0IsOEJBQThCO0lBbUJuRCxZQUNvQixLQUFxQixFQUFFLG9EQUFvRDtJQUMzRSxNQUFjLENBQUMsb0RBQW9EOztRQURuRSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmYsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBTzdEOztXQUVHO1FBQ08saUJBQVksR0FBNEQsSUFBSSxDQUFDLEtBQUs7YUFDMUYsV0FBc0UsQ0FBQztJQUt0RSxDQUFDO0lBRUcsUUFBUTtRQUNkLDhEQUE4RDtRQUM5RCxJQUNDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUMvQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFDOUMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxLQUFLLENBQ1osa0lBQ0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGdCQUM1QywrRUFBK0UsQ0FDL0UsQ0FBQztRQUNILENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFB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QUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM5RSxPQUFPO2dCQUNOLEdBQUcsUUFBUTtnQkFDWCxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlDLENBQUM7UUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3hCLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztZQUN0QixtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLFdBQVc7U0FDWCxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTFJb0IsOEJBQThCO2tHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBRG5ELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgU3RyaW5naWZpZWRRdWVyeVBhcmFtc1R5cGU8UXVlcnlQYXJhbXNUeXBlPiA9IHtcblx0W2tleSBpbiBrZXlvZiBRdWVyeVBhcmFtc1R5cGVdOiBzdHJpbmc7XG59O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3hRdWVyeVBhcmFtRm9ybVN5bmNDb21wb25lbnQ8XG5cdFx0UXVlcnlQYXJhbXNUeXBlLFxuXHRcdEZvcm1UeXBlIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sLFxuXHQ+XG5cdGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG5cdC8qKlxuXHQgKiBUaGUgZm9ybSBpbiB3aGljaCB3ZSB3aWxsIHNhdmUgdGhlIHF1ZXJ5UGFyYW0gZGF0YVxuXHQgKi9cblx0cHVibGljIGZvcm06IEZvcm1UeXBlO1xuXG5cdC8qKlxuXHQgKiBUaGUgcXVlcnkgcGFyYW1zIHdlIHdpc2ggdG8gZm9ybVxuXHQgKi9cblx0cHJvdGVjdGVkIHF1ZXJ5UGFyYW1zJDogT2JzZXJ2YWJsZTxTdHJpbmdpZmllZFF1ZXJ5UGFyYW1zVHlwZTxRdWVyeVBhcmFtc1R5cGU+PiA9IHRoaXMucm91dGVcblx0XHQucXVlcnlQYXJhbXMgYXMgT2JzZXJ2YWJsZTxTdHJpbmdpZmllZFF1ZXJ5UGFyYW1zVHlwZTxRdWVyeVBhcmFtc1R5cGU+PjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9wcmVmZXItaW5qZWN0XG5cdFx0cHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L3ByZWZlci1pbmplY3Rcblx0KSB7fVxuXG5cdHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvL0liZW46IFdhcm4gdGhlIHVzZXIgaWYgb25lIG9mIHRoZSB0d28gbWV0aG9kcyBpc24ndCBwcm92aWRlZFxuXHRcdGlmIChcblx0XHRcdCghdGhpcy5zY3JhbWJsZVBhcmFtcyAmJiB0aGlzLnVuc2NyYW1ibGVQYXJhbXMpIHx8XG5cdFx0XHQodGhpcy5zY3JhbWJsZVBhcmFtcyAmJiAhdGhpcy51bnNjcmFtYmxlUGFyYW1zKVxuXHRcdCkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YE5neFV0aWxzOiBOZ3hRdWVyeVBhcmFtRm9ybVN5bmNDb21wb25lbnQgZGV0ZWN0ZWQgdGhlIHVzZSBvZiB0aGUgcGFyYW1ldGVyIHNjcmFtYmxpbmcgYnV0IGlzIG1pc3NpbmcgYW4gaW1wbGVtZW50YXRpb24gZm9yIHRoZSAke1xuXHRcdFx0XHRcdHRoaXMuc2NyYW1ibGVQYXJhbXMgPyAndW5zY3JhbWJsZVBhcmFtcycgOiAnc2NyYW1ibGVQYXJhbXMnXG5cdFx0XHRcdH0gbWV0aG9kLiBQbGVhc2UgcHJvdmlkZSB0aGlzIG1ldGhvZCBpbiBvcmRlciBmb3IgdGhpcyBmbG93IHRvIHdvcmsgY29ycmVjdGx5LmBcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gSWJlbjogU2V0dXAgdGhlIGZvcm0gZm9yIHRoZSBkYXRhXG5cdFx0dGhpcy5mb3JtID0gdGhpcy5pbml0Rm9ybSgpO1xuXG5cdFx0Ly8gSWJlbjogTGlzdGVuIHRvIHRoZSBmb3JtIGNoYW5nZXNcblx0XHR0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG5cdFx0XHQucGlwZShcblx0XHRcdFx0dGFwKChkYXRhKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWJlbjogVXBkYXRlIHRoZSByb3V0ZSBwYXJhbXNcblx0XHRcdFx0XHR0aGlzLnNldERhdGFJblJvdXRlKGRhdGEpO1xuXG5cdFx0XHRcdFx0Ly8gSWJlbjogSGFuZGxlIHRoZSByb3V0ZSBkYXRhIGNoYW5nZXNcblx0XHRcdFx0XHRpZiAodGhpcy5oYW5kbGVEYXRhQ2hhbmdlcykge1xuXHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVEYXRhQ2hhbmdlcyhkYXRhKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuXHRcdFx0KVxuXHRcdFx0LnN1YnNjcmliZSgpO1xuXG5cdFx0Ly8gSWJlbjogTGlzdGVuIHRvIHRoZSBpbml0aWFsIHF1ZXJ5IHBhcmFtIHVwZGF0ZSBzbyB3ZSBjYW4gc2V0IHRoZSBkYXRhIGluIHRoZSBmb3JtIGlmIHdlIG5hdmlnYXRlIHRvIGEgbGluayB3aXRoIHRoZSBwYXJhbXNcblx0XHR0aGlzLnF1ZXJ5UGFyYW1zJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdHRha2UoMSksXG5cdFx0XHRcdGZpbHRlcihCb29sZWFuKSxcblx0XHRcdFx0dGFwKChkYXRhKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWJlbjogQ29udmVydCB0aGUgcm91dGUgZGF0YSBwcm9wZXJ0aWVzIHRvIHRoZSBhY3R1YWwgZGF0YVxuXHRcdFx0XHRcdGxldCB2YWx1ZTogUXVlcnlQYXJhbXNUeXBlID0gT2JqZWN0LmtleXMoZGF0YSB8fCB7fSkucmVkdWNlKFxuXHRcdFx0XHRcdFx0KHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0Li4ucHJldmlvdXMsXG5cdFx0XHRcdFx0XHRcdFx0W2N1cnJlbnRdOiBkYXRhW2N1cnJlbnRdID8gSlNPTi5wYXJzZShkYXRhW2N1cnJlbnRdKSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7fVxuXHRcdFx0XHRcdCkgYXMgUXVlcnlQYXJhbXNUeXBlO1xuXG5cdFx0XHRcdFx0Ly8gSWJlbjogSW4gY2FzZSB0aGUgdW5zY3JhbWJsZVBhcmFtcyBtZXRob2QgaXMgcHJvdmlkZWQsIHdlIHVuc2NyYW1ibGUgdGhlIGRhdGFcblx0XHRcdFx0XHRpZiAodGhpcy51bnNjcmFtYmxlUGFyYW1zKSB7XG5cdFx0XHRcdFx0XHR2YWx1ZSA9IHRoaXMudW5zY3JhbWJsZVBhcmFtcyh2YWx1ZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly9JYmVuOiBJZiB0aGUgZW50aXJlIG9iamVjdCBpcyBlbXB0eSwgd2UgZWFybHkgZXhpdCBhbmQgZG8gbm90IHNldCB0aGUgZm9ybVxuXHRcdFx0XHRcdGlmIChPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gSWJlbjogU2V0IHRoZSBjdXJyZW50IGZvcm0gdmFsdWVcblx0XHRcdFx0XHR0aGlzLmZvcm0uc2V0VmFsdWUodmFsdWUpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcblx0XHRcdClcblx0XHRcdC5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuXG5cdFx0dGhpcy5jbGVhckRhdGEoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgdGhlIGRhdGEgaW4gdGhlIGZvcm1cblx0ICovXG5cdHB1YmxpYyBjbGVhckRhdGEoKTogdm9pZCB7XG5cdFx0dGhpcy5mb3JtLnJlc2V0KCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgcHJvdmlkZWQgZGF0YSBpbiB0aGUgcm91dGUsIHNvIHRoZSBmaWx0ZXJlZCB2aWV3IGNhbiBiZSBzaGFyZWQgYnkgdXJsXG5cdCAqXG5cdCAqIEBwYXJhbSAgZGF0YSAtIFRoZSBwcm92aWRlZCBkYXRhXG5cdCAqL1xuXHRwcml2YXRlIHNldERhdGFJblJvdXRlKGRhdGE6IFF1ZXJ5UGFyYW1zVHlwZSk6IHZvaWQge1xuXHRcdC8vIEliZW46IElmIG5vIGRhdGEgd2FzIHByb3ZpZGVkLCB3ZSBzaW1wbHkgdW5zZXQgdGhlIGN1cnJlbnQgcGFyYW1zXG5cdFx0aWYgKE9iamVjdC5rZXlzKGRhdGEgfHwge30pLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcblx0XHRcdFx0cmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcblx0XHRcdFx0cXVlcnlQYXJhbXM6IHt9LFxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJYmVuOiBJbiBjYXNlIGEgc2NyYW1ibGVQYXJhbXMgZnVuY3Rpb24gd2FzIHByb3ZpZGVkLCB3ZSBzY3JhbWJsZSB0aGUgcGFyYW1zIGZpcnN0XG5cdFx0Y29uc3QgcGFyc2VkRGF0YSA9IHRoaXMuc2NyYW1ibGVQYXJhbXMgPyB0aGlzLnNjcmFtYmxlUGFyYW1zKGRhdGEpIDogZGF0YTtcblxuXHRcdC8vIEliZW46IFN0cmluZ2lmeSBhbGwgcHJvcGVydGllcyBvZiB0aGUgZGF0YVxuXHRcdGNvbnN0IHF1ZXJ5UGFyYW1zID0gT2JqZWN0LmtleXMocGFyc2VkRGF0YSB8fCB7fSkucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Li4ucHJldmlvdXMsXG5cdFx0XHRcdFtjdXJyZW50XTogSlNPTi5zdHJpbmdpZnkocGFyc2VkRGF0YVtjdXJyZW50XSksXG5cdFx0XHR9O1xuXHRcdH0sIHt9KTtcblxuXHRcdC8vIEliZW46IEFkZCB0aGUgcXVlcnlQYXJhbXMgdG8gdGhlIHJvdXRlXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcblx0XHRcdHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG5cdFx0XHRxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuXHRcdFx0cXVlcnlQYXJhbXMsXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQSBtZXRob2QgdGhhdCB0aGF0IHdpbGwgcHJvdmlkZSBhIGZvcm0gdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlIGN1cnJlbnQgZGF0YVxuXHQgKi9cblx0cHJvdGVjdGVkIGFic3RyYWN0IGluaXRGb3JtKCk6IEZvcm1UeXBlO1xuXG5cdC8qKlxuXHQgKiBBbiBvcHRpb25hbCBtZXRob2QgdGhhdCB3aWxsIGhhbmRsZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgZGF0YSBoYXZlIGJlZW4gdXBkYXRlZC4gRG8gTk9UIHN1YnNjcmliZSB0byBhbiBPYnNlcnZhYmxlIGluIHRoaXMgbWV0aG9kLlxuXHQgKlxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaW4gY2FzZSB5b3Ugd2lzaCB0byBzYXZlIHlvdXIgY3VycmVudGx5IHNlbGVjdGVkIGRhdGEgdG8gYSBnbG9iYWwgc3RhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgcHJvdmlkZWQgYnkgdGhlIGZvcm1cblx0ICovXG5cdHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVEYXRhQ2hhbmdlcz8oZGF0YTogUXVlcnlQYXJhbXNUeXBlKTogdm9pZDtcblxuXHQvKipcblx0ICogQW4gb3B0aW9uYWwgbWV0aG9kIHRvIHNjcmFtYmxlIHRoZSBwYXJhbWV0ZXJzIGlmIG5lZWRlZCwgc28gbm8gZGF0YSBnZXRzIGFkZGVkIGludG8gdGhlIHJvdXRlIHRoYXQgc2hvdWxkbid0IGJlIHNoYXJlZFxuXHQgKlxuXHQgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHByb3ZpZGVkIHBhcmFtcyB3ZSB3aXNoIHRvIHNldCBpbiB0aGUgcm91dGVcblx0ICovXG5cdHByb3RlY3RlZCBzY3JhbWJsZVBhcmFtcz8ocGFyYW1zOiBRdWVyeVBhcmFtc1R5cGUpOiBRdWVyeVBhcmFtc1R5cGU7XG5cdC8qKlxuXHQgKiBBbiBvcHRpb25hbCBtZXRob2QgdG8gdW5zY3JhbWJsZSB0aGUgcGFyYW1ldGVycyBpZiBuZWVkZWQsIHNvIG5vIGRhdGEgZ2V0cyBhZGRlZCBpbnRvIHRoZSByb3V0ZSB0aGF0IHNob3VsZG4ndCBiZSBzaGFyZWRcblx0ICpcblx0ICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwcm92aWRlZCBwYXJhbXMgd2Ugd2lzaCB0byBwYXRjaCBpbiB0aGUgZm9ybVxuXHQgKi9cblx0cHJvdGVjdGVkIHVuc2NyYW1ibGVQYXJhbXM/KHBhcmFtczogUXVlcnlQYXJhbXNUeXBlKTogUXVlcnlQYXJhbXNUeXBlO1xufVxuIl19","import { NgxReplaceElementsConfigurationToken } from '../../tokens';\n/**\n * Provides the configuration for the NgxReplaceElements directive\n *\n * @param configuration - The required configuration\n */\nexport const provideNgxReplaceElementsConfiguration = (configuration) => {\n    return {\n        provide: NgxReplaceElementsConfigurationToken,\n        useValue: configuration,\n    };\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1lbGVtZW50cy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3Byb3ZpZGVycy9yZXBsYWNlLWVsZW1lbnRzL3JlcGxhY2UtZWxlbWVudHMucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3BFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUNyRCxhQUE4QyxFQUNuQyxFQUFFO0lBQ2IsT0FBTztRQUNOLE9BQU8sRUFBRSxvQ0FBb0M7UUFDN0MsUUFBUSxFQUFFLGFBQWE7S0FDdkIsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5neFJlcGxhY2VFbGVtZW50c0NvbmZpZ3VyYXRpb25Ub2tlbiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBOZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgTmd4UmVwbGFjZUVsZW1lbnRzIGRpcmVjdGl2ZVxuICpcbiAqIEBwYXJhbSBjb25maWd1cmF0aW9uIC0gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVOZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uID0gKFxuXHRjb25maWd1cmF0aW9uOiBOZ3hSZXBsYWNlRWxlbWVudHNDb25maWd1cmF0aW9uXG4pOiBQcm92aWRlciA9PiB7XG5cdHJldHVybiB7XG5cdFx0cHJvdmlkZTogTmd4UmVwbGFjZUVsZW1lbnRzQ29uZmlndXJhdGlvblRva2VuLFxuXHRcdHVzZVZhbHVlOiBjb25maWd1cmF0aW9uLFxuXHR9O1xufTtcbiJdfQ==","/**\n * Method checks if given value has changed\n * @param {SimpleChange} value: value to check\n * @returns {boolean} whether or not if the given input has changed\n */\nexport const simpleChangeHasChanged = (value) => {\n    return value && JSON.stringify(value.previousValue) !== JSON.stringify(value.currentValue);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWNoYW5nZXMudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL3V0aWxzL3NpbXBsZS1jaGFuZ2VzL3NpbXBsZS1jaGFuZ2VzLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBbUIsRUFBVyxFQUFFO0lBQ3RFLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpbXBsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIE1ldGhvZCBjaGVja3MgaWYgZ2l2ZW4gdmFsdWUgaGFzIGNoYW5nZWRcbiAqIEBwYXJhbSB7U2ltcGxlQ2hhbmdlfSB2YWx1ZTogdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIG9yIG5vdCBpZiB0aGUgZ2l2ZW4gaW5wdXQgaGFzIGNoYW5nZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHNpbXBsZUNoYW5nZUhhc0NoYW5nZWQgPSAodmFsdWU6IFNpbXBsZUNoYW5nZSk6IGJvb2xlYW4gPT4ge1xuXHRyZXR1cm4gdmFsdWUgJiYgSlNPTi5zdHJpbmdpZnkodmFsdWUucHJldmlvdXNWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KHZhbHVlLmN1cnJlbnRWYWx1ZSk7XG59O1xuIl19","/*\n * Public API Surface of utils\n */\nexport * from './lib/directives';\nexport * from './lib/injects';\nexport * from './lib/services';\nexport * from './lib/pipes';\nexport * from './lib/types';\nexport * from './lib/abstracts';\nexport * from './lib/providers';\nexport * from './lib/tokens';\nexport * from './lib/utils';\nexport * from './lib/utils.const';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFFNUIsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdXRpbHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luamVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWJzdHJhY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy5jb25zdCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1ZGlvaHlwZXJkcml2ZS1uZ3gtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL3N0dWRpb2h5cGVyZHJpdmUtbmd4LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0="],"names":[],"mappings":"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"}