UNPKG

@ibenvandeveire/ngx-authentication

Version:

A library of core authentication functionality used with @ibenvandeveire/types-auth.

1 lines 187 kB
{"version":3,"file":"ibenvandeveire-ngx-authentication.mjs","sources":["../tmp-esm2022/lib/abstracts/authentication.service.js","../tmp-esm2022/lib/tokens/authentication-configuration.token.js","../tmp-esm2022/lib/utils/convert-to-array.util.js","../tmp-esm2022/lib/directives/has-feature/has-feature.directive.js","../tmp-esm2022/lib/directives/has-permission/has-permission.directive.js","../tmp-esm2022/lib/directives/is-authenticated/is-authenticated.directive.js","../tmp-esm2022/lib/guards/has-feature/has-feature.guard.js","../tmp-esm2022/lib/guards/has-permission/has-permission.guard.js","../tmp-esm2022/lib/guards/is-authenticated/is-authenticated.guard.js","../tmp-esm2022/lib/pipes/has-feature/has-feature.pipe.js","../tmp-esm2022/lib/pipes/has-permission/has-permission.pipe.js","../tmp-esm2022/lib/interceptors/authentication/authentication.interceptor.js","../tmp-esm2022/lib/providers/authentication-configuration.provider.js","../tmp-esm2022/lib/mocks/authentication.service.mock.js","../tmp-esm2022/lib/mocks/authentication.response.mock.js","../tmp-esm2022/lib/mocks/authenticated-http-client.mock.js","../tmp-esm2022/lib/services/authenticated-http-client/authenticated-http-client.service.js","../tmp-esm2022/ibenvandeveire-ngx-authentication.js"],"sourcesContent":["import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map, of, switchMap, tap, } from 'rxjs';\n/**\n * An abstract service used by the directives, guards and other components of @ibenvandeveire/ngx-auth\n *\n * @template AuthenticationResponseType - The type of authentication response\n * @template SignInDataType - The data type used to sign in a user\n * @template SignoutDataType - The data type used to sign out a user\n * @template SignOutResponseType - The data type you get when signing out a user\n */\nexport class NgxAuthenticationAbstractService {\n    /**\n     * A subject to store the authentication response if no other state implementation was provided\n     */\n    authenticationResponseSubject = new BehaviorSubject(undefined);\n    /**\n     * A subject to store whether we've authenticated already\n     */\n    authenticationStatusSubject = new BehaviorSubject('unset');\n    /**\n     * A subject to store global features that are available for all users, regardless of their authenticated state\n     */\n    globalFeaturesSubject = new BehaviorSubject([]);\n    /**\n     * Whether an authentication attempt has been made\n     */\n    hasAuthenticated$ = this.authenticationStatusSubject.pipe(distinctUntilChanged(), map((status) => status !== 'unset'));\n    /**\n     * Whether the user is authenticated\n     */\n    isAuthenticated$ = this.authenticationStatusSubject.pipe(distinctUntilChanged(), map((status) => status === 'signed-in'));\n    /**\n     * Stores the authentication response in the state\n     *\n     * @param response - The authentication response\n     */\n    storeAuthenticationResponse(response) {\n        this.authenticationResponseSubject.next(response);\n    }\n    /**\n     * Returns the authentication response from the state\n     */\n    getAuthenticationResponse() {\n        return this.authenticationResponseSubject.asObservable();\n    }\n    /**\n     * The authenticated user\n     */\n    get user$() {\n        return this.getAuthenticationResponse().pipe(filter(Boolean), map((response) => response.user), distinctUntilChanged());\n    }\n    /**\n     * The session of the authenticated user\n     */\n    get session$() {\n        return this.getAuthenticationResponse().pipe(filter(Boolean), map(({ session }) => session), distinctUntilChanged());\n    }\n    /**\n     * The metadata of the authenticated user\n     */\n    get metadata$() {\n        return this.getAuthenticationResponse().pipe(filter(Boolean), map(({ metadata }) => metadata), distinctUntilChanged());\n    }\n    /**\n     * Signs in a user and stores the authentication response\n     *\n     * @param signInData - The data needed to sign in a user\n     */\n    signIn(signInData) {\n        // Iben: Perform the call to sign in a user\n        return this.signInUser(signInData).pipe(tap((response) => {\n            // Iben: Set the user as signed in\n            this.authenticationStatusSubject.next('signed-in');\n            // Iben: Store the authentication response\n            this.storeAuthenticationResponse(response);\n        }), \n        // Iben: Convert to void\n        map(() => undefined));\n    }\n    /**\n     * Signs out a user and removes the stored authentication response\n     *\n     * @param signoutDataType - Optional data needed to sign out a use\n     */\n    signOut(signoutDataType) {\n        // Iben: Perform the call to sign out a user\n        return this.signOutUser(signoutDataType).pipe(tap(() => {\n            // Iben: Set the user as signed out\n            this.authenticationStatusSubject.next('signed-out');\n            // Iben: Remove the stored authentication response\n            this.storeAuthenticationResponse(undefined);\n        }));\n    }\n    /**\n     * Returns whether the user has the required features.\n     *\n     * @param requiredFeatures - An array of required features\n     * @param shouldHaveAllFeatures - Whether all features in the array are required, by default true\n     */\n    hasFeature(requiredFeatures, shouldHaveAllFeatures = true) {\n        // Iben: Get the session\n        return combineLatest([this.getSession(), this.globalFeaturesSubject.asObservable()]).pipe(map(([{ features }, globalFeatures]) => {\n            const sessionFeatures = new Set([...(features || []), ...(globalFeatures || [])]);\n            // Iben: Return whether the user has the required features\n            // We cast to strings here to make the typing work\n            return shouldHaveAllFeatures\n                ? requiredFeatures.every((feature) => sessionFeatures.has(`${feature}`))\n                : requiredFeatures.some((feature) => sessionFeatures.has(`${feature}`));\n        }));\n    }\n    /**\n     * Sets a set of global features that are always present, regardless of the authenticated state of the user\n     *\n     * @param  features - A list of features\n     */\n    setGlobalFeatures(features) {\n        this.globalFeaturesSubject.next(features);\n    }\n    /**\n     * Returns whether the user has the required permissions.\n     *\n     * @param requiredPermissions - An array of required permissions\n     * @param shouldHaveAllPermissions - Whether all permissions in the array are required, by default true\n     */\n    hasPermission(requiredPermissions, shouldHaveAllPermissions = true) {\n        // Iben: Get the session\n        return this.getSession().pipe(filter(Boolean), map(({ permissions }) => {\n            const sessionPermissions = new Set([...permissions]);\n            // Iben: Return whether the user has the required permissions\n            return shouldHaveAllPermissions\n                ? requiredPermissions.every((permission) => sessionPermissions.has(permission))\n                : requiredPermissions.some((permission) => sessionPermissions.has(permission));\n        }));\n    }\n    /**\n     * Returns a session or an empty session depending on the authenticated state\n     */\n    getSession() {\n        return this.isAuthenticated$.pipe(switchMap((isAuthenticated) => {\n            // Iben: If the user is authenticated, we return the session, if not, we return an empty version for the hasPermission and hasFeature methods\n            // This ensures we always get a response\n            return isAuthenticated\n                ? this.session$\n                : of({\n                    features: [],\n                    permissions: [],\n                });\n        }));\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL2Fic3RyYWN0cy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixlQUFlLEVBQ2YsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUVILEVBQUUsRUFDRixTQUFTLEVBQ1QsR0FBRyxHQUNILE1BQU0sTUFBTSxDQUFDO0FBSWQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBZ0IsZ0NBQWdDO0lBT3JEOztPQUVHO0lBQ2MsNkJBQTZCLEdBQzdDLElBQUksZUFBZSxDQUE2QixTQUFTLENBQUMsQ0FBQztJQUU1RDs7T0FFRztJQUNjLDJCQUEyQixHQUMzQyxJQUFJLGVBQWUsQ0FBMEIsT0FBTyxDQUFDLENBQUM7SUFFdkQ7O09BRUc7SUFDYyxxQkFBcUIsR0FFbEMsSUFBSSxlQUFlLENBQWlFLEVBQUUsQ0FBQyxDQUFDO0lBRTVGOztPQUVHO0lBQ2EsaUJBQWlCLEdBQXdCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQzdGLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUNuQyxDQUFDO0lBRUY7O09BRUc7SUFDYSxnQkFBZ0IsR0FBd0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FDNUYsb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQ3ZDLENBQUM7SUFvQkY7Ozs7T0FJRztJQUNPLDJCQUEyQixDQUFDLFFBQW9DO1FBQ3pFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsUUFB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LDZJQUE2STtZQUM3SSx3Q0FBd0M7WUFDeEMsT0FBTyxlQUFlO2dCQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDSCxRQUFRLEVBQUUsRUFBRTtvQkFDWixXQUFXLEVBQUUsRUFBRTtpQkFDZixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXNwb25zZSB9IGZyb20gJ0BpYmVudmFuZGV2ZWlyZS90eXBlcy1hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQge1xuXHRCZWhhdmlvclN1YmplY3QsXG5cdGNvbWJpbmVMYXRlc3QsXG5cdGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuXHRmaWx0ZXIsXG5cdG1hcCxcblx0T2JzZXJ2YWJsZSxcblx0b2YsXG5cdHN3aXRjaE1hcCxcblx0dGFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25SZXNwb25zZUZlYXR1cmUsIE5neEF1dGhlbnRpY2F0aW9uU3RhdHVzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIEFuIGFic3RyYWN0IHNlcnZpY2UgdXNlZCBieSB0aGUgZGlyZWN0aXZlcywgZ3VhcmRzIGFuZCBvdGhlciBjb21wb25lbnRzIG9mIEBpYmVudmFuZGV2ZWlyZS9uZ3gtYXV0aFxuICpcbiAqIEB0ZW1wbGF0ZSBBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZSAtIFRoZSB0eXBlIG9mIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlXG4gKiBAdGVtcGxhdGUgU2lnbkluRGF0YVR5cGUgLSBUaGUgZGF0YSB0eXBlIHVzZWQgdG8gc2lnbiBpbiBhIHVzZXJcbiAqIEB0ZW1wbGF0ZSBTaWdub3V0RGF0YVR5cGUgLSBUaGUgZGF0YSB0eXBlIHVzZWQgdG8gc2lnbiBvdXQgYSB1c2VyXG4gKiBAdGVtcGxhdGUgU2lnbk91dFJlc3BvbnNlVHlwZSAtIFRoZSBkYXRhIHR5cGUgeW91IGdldCB3aGVuIHNpZ25pbmcgb3V0IGEgdXNlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2U8XG5cdEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlIGV4dGVuZHNcblx0XHRBdXRoZW50aWNhdGlvblJlc3BvbnNlPHVua25vd24+ID0gQXV0aGVudGljYXRpb25SZXNwb25zZTxhbnk+LFxuXHRTaWduSW5EYXRhVHlwZSA9IGFueSxcblx0U2lnbm91dERhdGFUeXBlID0gYW55LFxuXHRTaWduT3V0UmVzcG9uc2VUeXBlID0gdm9pZCxcbj4ge1xuXHQvKipcblx0ICogQSBzdWJqZWN0IHRvIHN0b3JlIHRoZSBhdXRoZW50aWNhdGlvbiByZXNwb25zZSBpZiBubyBvdGhlciBzdGF0ZSBpbXBsZW1lbnRhdGlvbiB3YXMgcHJvdmlkZWRcblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgYXV0aGVudGljYXRpb25SZXNwb25zZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZT4gPVxuXHRcdG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aGVudGljYXRpb25SZXNwb25zZVR5cGU+KHVuZGVmaW5lZCk7XG5cblx0LyoqXG5cdCAqIEEgc3ViamVjdCB0byBzdG9yZSB3aGV0aGVyIHdlJ3ZlIGF1dGhlbnRpY2F0ZWQgYWxyZWFkeVxuXHQgKi9cblx0cHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGlvblN0YXR1c1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxOZ3hBdXRoZW50aWNhdGlvblN0YXR1cz4gPVxuXHRcdG5ldyBCZWhhdmlvclN1YmplY3Q8Tmd4QXV0aGVudGljYXRpb25TdGF0dXM+KCd1bnNldCcpO1xuXG5cdC8qKlxuXHQgKiBBIHN1YmplY3QgdG8gc3RvcmUgZ2xvYmFsIGZlYXR1cmVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzLCByZWdhcmRsZXNzIG9mIHRoZWlyIGF1dGhlbnRpY2F0ZWQgc3RhdGVcblx0ICovXG5cdHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsRmVhdHVyZXNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8XG5cdFx0Tmd4QXV0aGVudGljYXRpb25SZXNwb25zZUZlYXR1cmU8QXV0aGVudGljYXRpb25SZXNwb25zZVR5cGU+W11cblx0PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tmd4QXV0aGVudGljYXRpb25SZXNwb25zZUZlYXR1cmU8QXV0aGVudGljYXRpb25SZXNwb25zZVR5cGU+W10+KFtdKTtcblxuXHQvKipcblx0ICogV2hldGhlciBhbiBhdXRoZW50aWNhdGlvbiBhdHRlbXB0IGhhcyBiZWVuIG1hZGVcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBoYXNBdXRoZW50aWNhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aGVudGljYXRpb25TdGF0dXNTdWJqZWN0LnBpcGUoXG5cdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcblx0XHRtYXAoKHN0YXR1cykgPT4gc3RhdHVzICE9PSAndW5zZXQnKVxuXHQpO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWRcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoZW50aWNhdGlvblN0YXR1c1N1YmplY3QucGlwZShcblx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuXHRcdG1hcCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdzaWduZWQtaW4nKVxuXHQpO1xuXG5cdC8qKlxuXHQgKiBUaGUgY2FsbCByZXF1aXJlZCB0byBzaWduIGluIGEgdXNlclxuXHQgKlxuXHQgKiBAcGFyYW0gc2lnbkluRGF0YSAtIFRoZSBkYXRhIG5lZWRlZCB0byBzaWduIGluIGEgdXNlclxuXHQgKi9cblx0cHJvdGVjdGVkIGFic3RyYWN0IHNpZ25JblVzZXIoXG5cdFx0c2lnbkluRGF0YTogU2lnbkluRGF0YVR5cGVcblx0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZT47XG5cblx0LyoqXG5cdCAqIFRoZSBjYWxsIHJlcXVpcmVkIHRvIHNpZ24gb3V0IGEgdXNlclxuXHQgKlxuXHQgKiBAcGFyYW0gc2lnbm91dERhdGFUeXBlIC0gT3B0aW9uYWwgZGF0YSBuZWVkZWQgdG8gc2lnbiBvdXQgYSB1c2VyXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYWJzdHJhY3Qgc2lnbk91dFVzZXIoXG5cdFx0c2lnbm91dERhdGFUeXBlPzogU2lnbm91dERhdGFUeXBlXG5cdCk6IE9ic2VydmFibGU8U2lnbk91dFJlc3BvbnNlVHlwZT47XG5cblx0LyoqXG5cdCAqIFN0b3JlcyB0aGUgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgaW4gdGhlIHN0YXRlXG5cdCAqXG5cdCAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSBhdXRoZW50aWNhdGlvbiByZXNwb25zZVxuXHQgKi9cblx0cHJvdGVjdGVkIHN0b3JlQXV0aGVudGljYXRpb25SZXNwb25zZShyZXNwb25zZTogQXV0aGVudGljYXRpb25SZXNwb25zZVR5cGUpOiB2b2lkIHtcblx0XHR0aGlzLmF1dGhlbnRpY2F0aW9uUmVzcG9uc2VTdWJqZWN0Lm5leHQocmVzcG9uc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIGZyb20gdGhlIHN0YXRlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZ2V0QXV0aGVudGljYXRpb25SZXNwb25zZSgpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlPiB7XG5cdFx0cmV0dXJuIHRoaXMuYXV0aGVudGljYXRpb25SZXNwb25zZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGF1dGhlbnRpY2F0ZWQgdXNlclxuXHQgKi9cblx0cHVibGljIGdldCB1c2VyJCgpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlWyd1c2VyJ10+IHtcblx0XHRyZXR1cm4gdGhpcy5nZXRBdXRoZW50aWNhdGlvblJlc3BvbnNlKCkucGlwZShcblx0XHRcdGZpbHRlcihCb29sZWFuKSxcblx0XHRcdG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlLnVzZXIpLFxuXHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIHNlc3Npb24gb2YgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlclxuXHQgKi9cblx0cHVibGljIGdldCBzZXNzaW9uJCgpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlWydzZXNzaW9uJ10+IHtcblx0XHRyZXR1cm4gdGhpcy5nZXRBdXRoZW50aWNhdGlvblJlc3BvbnNlKCkucGlwZShcblx0XHRcdGZpbHRlcihCb29sZWFuKSxcblx0XHRcdG1hcCgoeyBzZXNzaW9uIH06IEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlKSA9PiBzZXNzaW9uKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBtZXRhZGF0YSBvZiB0aGUgYXV0aGVudGljYXRlZCB1c2VyXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IG1ldGFkYXRhJCgpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlWydtZXRhZGF0YSddPiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0QXV0aGVudGljYXRpb25SZXNwb25zZSgpLnBpcGUoXG5cdFx0XHRmaWx0ZXIoQm9vbGVhbiksXG5cdFx0XHRtYXAoKHsgbWV0YWRhdGEgfTogQXV0aGVudGljYXRpb25SZXNwb25zZVR5cGUpID0+IG1ldGFkYXRhKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNpZ25zIGluIGEgdXNlciBhbmQgc3RvcmVzIHRoZSBhdXRoZW50aWNhdGlvbiByZXNwb25zZVxuXHQgKlxuXHQgKiBAcGFyYW0gc2lnbkluRGF0YSAtIFRoZSBkYXRhIG5lZWRlZCB0byBzaWduIGluIGEgdXNlclxuXHQgKi9cblx0cHVibGljIHNpZ25JbihzaWduSW5EYXRhOiBTaWduSW5EYXRhVHlwZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuXHRcdC8vIEliZW46IFBlcmZvcm0gdGhlIGNhbGwgdG8gc2lnbiBpbiBhIHVzZXJcblx0XHRyZXR1cm4gdGhpcy5zaWduSW5Vc2VyKHNpZ25JbkRhdGEpLnBpcGUoXG5cdFx0XHR0YXAoKHJlc3BvbnNlOiBBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZSkgPT4ge1xuXHRcdFx0XHQvLyBJYmVuOiBTZXQgdGhlIHVzZXIgYXMgc2lnbmVkIGluXG5cdFx0XHRcdHRoaXMuYXV0aGVudGljYXRpb25TdGF0dXNTdWJqZWN0Lm5leHQoJ3NpZ25lZC1pbicpO1xuXG5cdFx0XHRcdC8vIEliZW46IFN0b3JlIHRoZSBhdXRoZW50aWNhdGlvbiByZXNwb25zZVxuXHRcdFx0XHR0aGlzLnN0b3JlQXV0aGVudGljYXRpb25SZXNwb25zZShyZXNwb25zZSk7XG5cdFx0XHR9KSxcblx0XHRcdC8vIEliZW46IENvbnZlcnQgdG8gdm9pZFxuXHRcdFx0bWFwKCgpID0+IHVuZGVmaW5lZClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNpZ25zIG91dCBhIHVzZXIgYW5kIHJlbW92ZXMgdGhlIHN0b3JlZCBhdXRoZW50aWNhdGlvbiByZXNwb25zZVxuXHQgKlxuXHQgKiBAcGFyYW0gc2lnbm91dERhdGFUeXBlIC0gT3B0aW9uYWwgZGF0YSBuZWVkZWQgdG8gc2lnbiBvdXQgYSB1c2Vcblx0ICovXG5cdHB1YmxpYyBzaWduT3V0KHNpZ25vdXREYXRhVHlwZT86IFNpZ25vdXREYXRhVHlwZSk6IE9ic2VydmFibGU8U2lnbk91dFJlc3BvbnNlVHlwZT4ge1xuXHRcdC8vIEliZW46IFBlcmZvcm0gdGhlIGNhbGwgdG8gc2lnbiBvdXQgYSB1c2VyXG5cdFx0cmV0dXJuIHRoaXMuc2lnbk91dFVzZXIoc2lnbm91dERhdGFUeXBlKS5waXBlKFxuXHRcdFx0dGFwKCgpID0+IHtcblx0XHRcdFx0Ly8gSWJlbjogU2V0IHRoZSB1c2VyIGFzIHNpZ25lZCBvdXRcblx0XHRcdFx0dGhpcy5hdXRoZW50aWNhdGlvblN0YXR1c1N1YmplY3QubmV4dCgnc2lnbmVkLW91dCcpO1xuXG5cdFx0XHRcdC8vIEliZW46IFJlbW92ZSB0aGUgc3RvcmVkIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlXG5cdFx0XHRcdHRoaXMuc3RvcmVBdXRoZW50aWNhdGlvblJlc3BvbnNlKHVuZGVmaW5lZCk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgcmVxdWlyZWQgZmVhdHVyZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSByZXF1aXJlZEZlYXR1cmVzIC0gQW4gYXJyYXkgb2YgcmVxdWlyZWQgZmVhdHVyZXNcblx0ICogQHBhcmFtIHNob3VsZEhhdmVBbGxGZWF0dXJlcyAtIFdoZXRoZXIgYWxsIGZlYXR1cmVzIGluIHRoZSBhcnJheSBhcmUgcmVxdWlyZWQsIGJ5IGRlZmF1bHQgdHJ1ZVxuXHQgKi9cblx0cHVibGljIGhhc0ZlYXR1cmUoXG5cdFx0cmVxdWlyZWRGZWF0dXJlczogTmd4QXV0aGVudGljYXRpb25SZXNwb25zZUZlYXR1cmU8QXV0aGVudGljYXRpb25SZXNwb25zZVR5cGU+W10sXG5cdFx0c2hvdWxkSGF2ZUFsbEZlYXR1cmVzOiBib29sZWFuID0gdHJ1ZVxuXHQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblx0XHQvLyBJYmVuOiBHZXQgdGhlIHNlc3Npb25cblx0XHRyZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5nZXRTZXNzaW9uKCksIHRoaXMuZ2xvYmFsRmVhdHVyZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXSkucGlwZShcblx0XHRcdG1hcCgoW3sgZmVhdHVyZXMgfSwgZ2xvYmFsRmVhdHVyZXNdKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNlc3Npb25GZWF0dXJlcyA9IG5ldyBTZXQoWy4uLihmZWF0dXJlcyB8fCBbXSksIC4uLihnbG9iYWxGZWF0dXJlcyB8fCBbXSldKTtcblx0XHRcdFx0Ly8gSWJlbjogUmV0dXJuIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRoZSByZXF1aXJlZCBmZWF0dXJlc1xuXHRcdFx0XHQvLyBXZSBjYXN0IHRvIHN0cmluZ3MgaGVyZSB0byBtYWtlIHRoZSB0eXBpbmcgd29ya1xuXHRcdFx0XHRyZXR1cm4gc2hvdWxkSGF2ZUFsbEZlYXR1cmVzXG5cdFx0XHRcdFx0PyByZXF1aXJlZEZlYXR1cmVzLmV2ZXJ5KChmZWF0dXJlKSA9PiBzZXNzaW9uRmVhdHVyZXMuaGFzKGAke2ZlYXR1cmV9YCkpXG5cdFx0XHRcdFx0OiByZXF1aXJlZEZlYXR1cmVzLnNvbWUoKGZlYXR1cmUpID0+IHNlc3Npb25GZWF0dXJlcy5oYXMoYCR7ZmVhdHVyZX1gKSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIHNldCBvZiBnbG9iYWwgZmVhdHVyZXMgdGhhdCBhcmUgYWx3YXlzIHByZXNlbnQsIHJlZ2FyZGxlc3Mgb2YgdGhlIGF1dGhlbnRpY2F0ZWQgc3RhdGUgb2YgdGhlIHVzZXJcblx0ICpcblx0ICogQHBhcmFtICBmZWF0dXJlcyAtIEEgbGlzdCBvZiBmZWF0dXJlc1xuXHQgKi9cblx0cHVibGljIHNldEdsb2JhbEZlYXR1cmVzKFxuXHRcdGZlYXR1cmVzOiBOZ3hBdXRoZW50aWNhdGlvblJlc3BvbnNlRmVhdHVyZTxBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZT5bXVxuXHQpOiB2b2lkIHtcblx0XHR0aGlzLmdsb2JhbEZlYXR1cmVzU3ViamVjdC5uZXh0KGZlYXR1cmVzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHJlcXVpcmVkUGVybWlzc2lvbnMgLSBBbiBhcnJheSBvZiByZXF1aXJlZCBwZXJtaXNzaW9uc1xuXHQgKiBAcGFyYW0gc2hvdWxkSGF2ZUFsbFBlcm1pc3Npb25zIC0gV2hldGhlciBhbGwgcGVybWlzc2lvbnMgaW4gdGhlIGFycmF5IGFyZSByZXF1aXJlZCwgYnkgZGVmYXVsdCB0cnVlXG5cdCAqL1xuXHRwdWJsaWMgaGFzUGVybWlzc2lvbihcblx0XHRyZXF1aXJlZFBlcm1pc3Npb25zOiBBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZVsnc2Vzc2lvbiddWydwZXJtaXNzaW9ucyddLFxuXHRcdHNob3VsZEhhdmVBbGxQZXJtaXNzaW9uczogYm9vbGVhbiA9IHRydWVcblx0KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cdFx0Ly8gSWJlbjogR2V0IHRoZSBzZXNzaW9uXG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2Vzc2lvbigpLnBpcGUoXG5cdFx0XHRmaWx0ZXIoQm9vbGVhbiksXG5cdFx0XHRtYXAoKHsgcGVybWlzc2lvbnMgfSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzZXNzaW9uUGVybWlzc2lvbnMgPSBuZXcgU2V0KFsuLi5wZXJtaXNzaW9uc10pO1xuXG5cdFx0XHRcdC8vIEliZW46IFJldHVybiB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnNcblx0XHRcdFx0cmV0dXJuIHNob3VsZEhhdmVBbGxQZXJtaXNzaW9uc1xuXHRcdFx0XHRcdD8gcmVxdWlyZWRQZXJtaXNzaW9ucy5ldmVyeSgocGVybWlzc2lvbikgPT4gc2Vzc2lvblBlcm1pc3Npb25zLmhhcyhwZXJtaXNzaW9uKSlcblx0XHRcdFx0XHQ6IHJlcXVpcmVkUGVybWlzc2lvbnMuc29tZSgocGVybWlzc2lvbikgPT4gc2Vzc2lvblBlcm1pc3Npb25zLmhhcyhwZXJtaXNzaW9uKSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHNlc3Npb24gb3IgYW4gZW1wdHkgc2Vzc2lvbiBkZXBlbmRpbmcgb24gdGhlIGF1dGhlbnRpY2F0ZWQgc3RhdGVcblx0ICovXG5cdHByaXZhdGUgZ2V0U2Vzc2lvbigpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VUeXBlWydzZXNzaW9uJ10+IHtcblx0XHRyZXR1cm4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG5cdFx0XHRzd2l0Y2hNYXAoKGlzQXV0aGVudGljYXRlZCkgPT4ge1xuXHRcdFx0XHQvLyBJYmVuOiBJZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLCB3ZSByZXR1cm4gdGhlIHNlc3Npb24sIGlmIG5vdCwgd2UgcmV0dXJuIGFuIGVtcHR5IHZlcnNpb24gZm9yIHRoZSBoYXNQZXJtaXNzaW9uIGFuZCBoYXNGZWF0dXJlIG1ldGhvZHNcblx0XHRcdFx0Ly8gVGhpcyBlbnN1cmVzIHdlIGFsd2F5cyBnZXQgYSByZXNwb25zZVxuXHRcdFx0XHRyZXR1cm4gaXNBdXRoZW50aWNhdGVkXG5cdFx0XHRcdFx0PyB0aGlzLnNlc3Npb24kXG5cdFx0XHRcdFx0OiBvZih7XG5cdFx0XHRcdFx0XHRcdGZlYXR1cmVzOiBbXSxcblx0XHRcdFx0XHRcdFx0cGVybWlzc2lvbnM6IFtdLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/**\n * A token to provide the necessary service to the directives/guard\n */\nexport const NgxAuthenticationServiceToken = new InjectionToken('NgxAuthenticationServiceToken');\n/**\n * A token to provide the necessary urlHandler to the NgxAuthenticatedHttpClient\n */\nexport const NgxAuthenticationUrlHandlerToken = new InjectionToken('NgxAuthenticationUrlHandlerToken');\n/**\n * A token to provide the necessary handler to the NgxAuthenticatedHttpInterceptor\n */\nexport const NgxAuthenticationInterceptorToken = new InjectionToken('NgxAuthenticationInterceptorToken');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tY29uZmlndXJhdGlvbi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL3Rva2Vucy9hdXRoZW50aWNhdGlvbi1jb25maWd1cmF0aW9uLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FDOUQsK0JBQStCLENBQy9CLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksY0FBYyxDQUVoRSxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXRDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsSUFBSSxjQUFjLENBRWpFLG1DQUFtQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZSB9IGZyb20gJy4uL2Fic3RyYWN0cyc7XG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGVkSHR0cENsaWVudENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogQSB0b2tlbiB0byBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc2VydmljZSB0byB0aGUgZGlyZWN0aXZlcy9ndWFyZFxuICovXG5leHBvcnQgY29uc3QgTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Tmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2U+KFxuXHQnTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4nXG4pO1xuXG4vKipcbiAqIEEgdG9rZW4gdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHVybEhhbmRsZXIgdG8gdGhlIE5neEF1dGhlbnRpY2F0ZWRIdHRwQ2xpZW50XG4gKi9cbmV4cG9ydCBjb25zdCBOZ3hBdXRoZW50aWNhdGlvblVybEhhbmRsZXJUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcblx0Tmd4QXV0aGVudGljYXRlZEh0dHBDbGllbnRDb25maWd1cmF0aW9uWydiYXNlVXJsJ11cbj4oJ05neEF1dGhlbnRpY2F0aW9uVXJsSGFuZGxlclRva2VuJyk7XG5cbi8qKlxuICogQSB0b2tlbiB0byBwcm92aWRlIHRoZSBuZWNlc3NhcnkgaGFuZGxlciB0byB0aGUgTmd4QXV0aGVudGljYXRlZEh0dHBJbnRlcmNlcHRvclxuICovXG5leHBvcnQgY29uc3QgTmd4QXV0aGVudGljYXRpb25JbnRlcmNlcHRvclRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFxuXHROZ3hBdXRoZW50aWNhdGVkSHR0cENsaWVudENvbmZpZ3VyYXRpb25bJ2F1dGhlbnRpY2F0ZWRDYWxsSGFuZGxlciddXG4+KCdOZ3hBdXRoZW50aWNhdGlvbkludGVyY2VwdG9yVG9rZW4nKTtcbiJdfQ==","/**\n * Converts an single item to an array or returns the array as is. This is to help the guards, directives and pipes in this feature due to the typing in the abstract service\n */\nexport const convertToArray = (item) => {\n    return Array.isArray(item) ? item : [item];\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC10by1hcnJheS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9saWIvdXRpbHMvY29udmVydC10by1hcnJheS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQVcsSUFBMkIsRUFBYyxFQUFFO0lBQ25GLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYW4gc2luZ2xlIGl0ZW0gdG8gYW4gYXJyYXkgb3IgcmV0dXJucyB0aGUgYXJyYXkgYXMgaXMuIFRoaXMgaXMgdG8gaGVscCB0aGUgZ3VhcmRzLCBkaXJlY3RpdmVzIGFuZCBwaXBlcyBpbiB0aGlzIGZlYXR1cmUgZHVlIHRvIHRoZSB0eXBpbmcgaW4gdGhlIGFic3RyYWN0IHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0FycmF5ID0gPERhdGFUeXBlPihpdGVtOiBEYXRhVHlwZSB8IERhdGFUeXBlW10pOiBEYXRhVHlwZVtdID0+IHtcblx0cmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgPyBpdGVtIDogW2l0ZW1dO1xufTtcbiJdfQ==","import { ChangeDetectorRef, Directive, TemplateRef, ViewContainerRef, effect, inject, input, } from '@angular/core';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport { convertToArray } from '../../utils';\nimport * as i0 from \"@angular/core\";\n/**\n * A directive that will render a part of the template based on whether the required feature(s) are provided.\n *\n * Based upon `*ngIf`. See https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_if.ts\n */\n//TODO: Iben: Implement Cypress/PlayWright tests\nexport class NgxHasFeatureDirective {\n    /**\n     * The provided template ref\n     */\n    templateRef = inject(TemplateRef);\n    /**\n     * The provided ViewContainerRef\n     */\n    viewContainer = inject(ViewContainerRef);\n    /**\n     * The provided AuthenticationService implementation\n     */\n    authenticationService = inject(NgxAuthenticationServiceToken);\n    /**\n     * The provided ChangeDetectorRef\n     */\n    cdRef = inject(ChangeDetectorRef);\n    /**\n     * The destroyed state of the directive\n     */\n    destroyed$;\n    /**\n     * The needed templateRefs\n     */\n    thenTemplateRef = null;\n    thenViewRef = null;\n    elseTemplateRef = null;\n    elseViewRef = null;\n    /**\n     * The (list of) feature(s) we need to check\n     */\n    feature = [];\n    /**\n     * Whether the feature should be enabled\n     */\n    shouldHaveFeature = true;\n    /**\n     * Whether all features should be enabled\n     */\n    shouldHaveAllFeatures = true;\n    /**\n     * A feature or list of features the item should have\n     */\n    ngxHasFeature = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasFeature\" }] : []));\n    /**\n     * The else template in case the feature is not enabled\n     */\n    ngxHasFeatureElse = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasFeatureElse\" }] : []));\n    /**\n     * Whether the feature should be enabled, by default this is true\n     */\n    ngxHasFeatureShouldHaveFeature = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasFeatureShouldHaveFeature\" }] : []));\n    /**\n     * Whether all features should be enabled, by default this is true\n     */\n    ngxHasFeatureShouldHaveAllFeatures = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasFeatureShouldHaveAllFeatures\" }] : []));\n    constructor() {\n        const templateRef = this.templateRef;\n        this.thenTemplateRef = templateRef;\n        effect(() => {\n            this.shouldHaveAllFeatures = this.ngxHasFeatureShouldHaveAllFeatures();\n            this.shouldHaveFeature = this.ngxHasFeatureShouldHaveFeature();\n            this.feature = this.ngxHasFeature();\n            this.updateView();\n        });\n        effect(() => {\n            this.elseTemplateRef = this.ngxHasFeatureElse();\n            this.elseViewRef = null;\n        });\n    }\n    ngOnDestroy() {\n        this.dispose();\n    }\n    /**\n     * Updates the view and hides/renders the template as needed\n     */\n    updateView() {\n        // Iben: Dispose the current subscription\n        this.dispose();\n        // Iben: Create a new onDestroyed handler\n        this.destroyed$ = new Subject();\n        // Iben: Render the views based on the correct state\n        this.authenticationService\n            .hasFeature(convertToArray(this.feature), this.shouldHaveAllFeatures)\n            .pipe(tap((hasFeature) => {\n            // Iben: Clear the current view\n            this.viewContainer.clear();\n            // Iben: Check if we should render the view\n            const shouldRender = this.shouldHaveFeature ? hasFeature : !hasFeature;\n            // Iben: Render the correct templates\n            if (shouldRender) {\n                this.viewContainer.clear();\n                this.elseViewRef = null;\n                if (this.thenTemplateRef) {\n                    this.thenViewRef = this.viewContainer.createEmbeddedView(this.thenTemplateRef);\n                }\n            }\n            else {\n                if (!this.elseViewRef) {\n                    this.viewContainer.clear();\n                    this.thenViewRef = null;\n                    if (this.elseTemplateRef) {\n                        this.elseViewRef = this.viewContainer.createEmbeddedView(this.elseTemplateRef);\n                    }\n                }\n            }\n            // Iben: Detect the changes so that the view gets updated\n            this.cdRef.detectChanges();\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n    }\n    /**\n     * Dispose the current subscription\n     */\n    dispose() {\n        if (this.destroyed$) {\n            this.destroyed$.next();\n            this.destroyed$.complete();\n        }\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasFeatureDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.2\", type: NgxHasFeatureDirective, isStandalone: true, selector: \"[ngxHasFeature]\", inputs: { ngxHasFeature: { classPropertyName: \"ngxHasFeature\", publicName: \"ngxHasFeature\", isSignal: true, isRequired: false, transformFunction: null }, ngxHasFeatureElse: { classPropertyName: \"ngxHasFeatureElse\", publicName: \"ngxHasFeatureElse\", isSignal: true, isRequired: false, transformFunction: null }, ngxHasFeatureShouldHaveFeature: { classPropertyName: \"ngxHasFeatureShouldHaveFeature\", publicName: \"ngxHasFeatureShouldHaveFeature\", isSignal: true, isRequired: false, transformFunction: null }, ngxHasFeatureShouldHaveAllFeatures: { classPropertyName: \"ngxHasFeatureShouldHaveAllFeatures\", publicName: \"ngxHasFeatureShouldHaveAllFeatures\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasFeatureDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[ngxHasFeature]',\n                }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWZlYXR1cmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9saWIvZGlyZWN0aXZlcy9oYXMtZmVhdHVyZS9oYXMtZmVhdHVyZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixTQUFTLEVBSVQsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRTdDOzs7O0dBSUc7QUFFSCxnREFBZ0Q7QUFJaEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNsQzs7T0FFRztJQUNILFdBQVcsR0FBRyxNQUFNLENBQW1CLFdBQVcsQ0FBQyxDQUFDO0lBQ3BEOztPQUVHO0lBQ0ssYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pEOztPQUVHO0lBQ2MscUJBQXFCLEdBQUcsTUFBTSxDQUM5Qyw2QkFBNkIsQ0FDN0IsQ0FBQztJQUNGOztPQUVHO0lBQ2MsS0FBSyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRW5EOztPQUVHO0lBQ0ssVUFBVSxDQUFnQjtJQUVsQzs7T0FFRztJQUNLLGVBQWUsR0FBNEIsSUFBSSxDQUFDO0lBQ2hELFdBQVcsR0FBZ0MsSUFBSSxDQUFDO0lBQ2hELGVBQWUsR0FBNEIsSUFBSSxDQUFDO0lBQ2hELFdBQVcsR0FBZ0MsSUFBSSxDQUFDO0lBRXhEOztPQUVHO0lBQ0ssT0FBTyxHQUFn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SyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzFCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxPQUFPO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDRixDQUFDO3VHQXZKVyxzQkFBc0I7MkZBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsaUJBQWlCO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHREaXJlY3RpdmUsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0SW5wdXRTaWduYWwsXG5cdE9uRGVzdHJveSxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDb250YWluZXJSZWYsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGlvblNlcnZpY2VUb2tlbiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9BcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdpbGwgcmVuZGVyIGEgcGFydCBvZiB0aGUgdGVtcGxhdGUgYmFzZWQgb24gd2hldGhlciB0aGUgcmVxdWlyZWQgZmVhdHVyZShzKSBhcmUgcHJvdmlkZWQuXG4gKlxuICogQmFzZWQgdXBvbiBgKm5nSWZgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9wYWNrYWdlcy9jb21tb24vc3JjL2RpcmVjdGl2ZXMvbmdfaWYudHNcbiAqL1xuXG4vL1RPRE86IEliZW46IEltcGxlbWVudCBDeXByZXNzL1BsYXlXcmlnaHQgdGVzdHNcbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tuZ3hIYXNGZWF0dXJlXScsXG59KVxuZXhwb3J0IGNsYXNzIE5neEhhc0ZlYXR1cmVEaXJlY3RpdmU8RmVhdHVyZVR5cGUgZXh0ZW5kcyBzdHJpbmc+IGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0LyoqXG5cdCAqIFRoZSBwcm92aWRlZCB0ZW1wbGF0ZSByZWZcblx0ICovXG5cdHRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPGFueT4+KFRlbXBsYXRlUmVmKTtcblx0LyoqXG5cdCAqIFRoZSBwcm92aWRlZCBWaWV3Q29udGFpbmVyUmVmXG5cdCAqL1xuXHRwcml2YXRlIHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cdC8qKlxuXHQgKiBUaGUgcHJvdmlkZWQgQXV0aGVudGljYXRpb25TZXJ2aWNlIGltcGxlbWVudGF0aW9uXG5cdCAqL1xuXHRwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uU2VydmljZSA9IGluamVjdDxOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZT4oXG5cdFx0Tmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW5cblx0KTtcblx0LyoqXG5cdCAqIFRoZSBwcm92aWRlZCBDaGFuZ2VEZXRlY3RvclJlZlxuXHQgKi9cblx0cHJpdmF0ZSByZWFkb25seSBjZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqXG5cdCAqIFRoZSBkZXN0cm95ZWQgc3RhdGUgb2YgdGhlIGRpcmVjdGl2ZVxuXHQgKi9cblx0cHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+O1xuXG5cdC8qKlxuXHQgKiBUaGUgbmVlZGVkIHRlbXBsYXRlUmVmc1xuXHQgKi9cblx0cHJpdmF0ZSB0aGVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSB0aGVuVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBlbHNlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBlbHNlVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIChsaXN0IG9mKSBmZWF0dXJlKHMpIHdlIG5lZWQgdG8gY2hlY2tcblx0ICovXG5cdHByaXZhdGUgZmVhdHVyZTogRmVhdHVyZVR5cGUgfCBGZWF0dXJlVHlwZVtdID0gW107XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGVuYWJsZWRcblx0ICovXG5cdHByaXZhdGUgc2hvdWxkSGF2ZUZlYXR1cmU6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIGFsbCBmZWF0dXJlcyBzaG91bGQgYmUgZW5hYmxlZFxuXHQgKi9cblx0cHJpdmF0ZSBzaG91bGRIYXZlQWxsRmVhdHVyZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBBIGZlYXR1cmUgb3IgbGlzdCBvZiBmZWF0dXJlcyB0aGUgaXRlbSBzaG91bGQgaGF2ZVxuXHQgKi9cblx0cHVibGljIG5neEhhc0ZlYXR1cmU6IElucHV0U2lnbmFsPEZlYXR1cmVUeXBlIHwgRmVhdHVyZVR5cGVbXT4gPSBpbnB1dCgpO1xuXG5cdC8qKlxuXHQgKiBUaGUgZWxzZSB0ZW1wbGF0ZSBpbiBjYXNlIHRoZSBmZWF0dXJlIGlzIG5vdCBlbmFibGVkXG5cdCAqL1xuXHRwdWJsaWMgbmd4SGFzRmVhdHVyZUVsc2U6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPGFueT4+ID0gaW5wdXQoKTtcblxuXHQvKipcblx0ICogV2hldGhlciB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZCwgYnkgZGVmYXVsdCB0aGlzIGlzIHRydWVcblx0ICovXG5cdHB1YmxpYyBuZ3hIYXNGZWF0dXJlU2hvdWxkSGF2ZUZlYXR1cmU6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoKTtcblxuXHQvKipcblx0ICogV2hldGhlciBhbGwgZmVhdHVyZXMgc2hvdWxkIGJlIGVuYWJsZWQsIGJ5IGRlZmF1bHQgdGhpcyBpcyB0cnVlXG5cdCAqL1xuXHRwdWJsaWMgbmd4SGFzRmVhdHVyZVNob3VsZEhhdmVBbGxGZWF0dXJlczogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dCgpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHRlbXBsYXRlUmVmID0gdGhpcy50ZW1wbGF0ZVJlZjtcblxuXHRcdHRoaXMudGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5zaG91bGRIYXZlQWxsRmVhdHVyZXMgPSB0aGlzLm5neEhhc0ZlYXR1cmVTaG91bGRIYXZlQWxsRmVhdHVyZXMoKTtcblx0XHRcdHRoaXMuc2hvdWxkSGF2ZUZlYXR1cmUgPSB0aGlzLm5neEhhc0ZlYXR1cmVTaG91bGRIYXZlRmVhdHVyZSgpO1xuXHRcdFx0dGhpcy5mZWF0dXJlID0gdGhpcy5uZ3hIYXNGZWF0dXJlKCk7XG5cblx0XHRcdHRoaXMudXBkYXRlVmlldygpO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMuZWxzZVRlbXBsYXRlUmVmID0gdGhpcy5uZ3hIYXNGZWF0dXJlRWxzZSgpO1xuXHRcdFx0dGhpcy5lbHNlVmlld1JlZiA9IG51bGw7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5kaXNwb3NlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdmlldyBhbmQgaGlkZXMvcmVuZGVycyB0aGUgdGVtcGxhdGUgYXMgbmVlZGVkXG5cdCAqL1xuXHRwcml2YXRlIHVwZGF0ZVZpZXcoKTogdm9pZCB7XG5cdFx0Ly8gSWJlbjogRGlzcG9zZSB0aGUgY3VycmVudCBzdWJzY3JpcHRpb25cblx0XHR0aGlzLmRpc3Bvc2UoKTtcblxuXHRcdC8vIEliZW46IENyZWF0ZSBhIG5ldyBvbkRlc3Ryb3llZCBoYW5kbGVyXG5cdFx0dGhpcy5kZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuXHRcdC8vIEliZW46IFJlbmRlciB0aGUgdmlld3MgYmFzZWQgb24gdGhlIGNvcnJlY3Qgc3RhdGVcblx0XHR0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZVxuXHRcdFx0Lmhhc0ZlYXR1cmUoY29udmVydFRvQXJyYXk8RmVhdHVyZVR5cGU+KHRoaXMuZmVhdHVyZSksIHRoaXMuc2hvdWxkSGF2ZUFsbEZlYXR1cmVzKVxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdHRhcCgoaGFzRmVhdHVyZSkgPT4ge1xuXHRcdFx0XHRcdC8vIEliZW46IENsZWFyIHRoZSBjdXJyZW50IHZpZXdcblx0XHRcdFx0XHR0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcblxuXHRcdFx0XHRcdC8vIEliZW46IENoZWNrIGlmIHdlIHNob3VsZCByZW5kZXIgdGhlIHZpZXdcblx0XHRcdFx0XHRjb25zdCBzaG91bGRSZW5kZXI6IGJvb2xlYW4gPSB0aGlzLnNob3VsZEhhdmVGZWF0dXJlID8gaGFzRmVhdHVyZSA6ICFoYXNGZWF0dXJlO1xuXG5cdFx0XHRcdFx0Ly8gSWJlbjogUmVuZGVyIHRoZSBjb3JyZWN0IHRlbXBsYXRlc1xuXHRcdFx0XHRcdGlmIChzaG91bGRSZW5kZXIpIHtcblx0XHRcdFx0XHRcdHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuXHRcdFx0XHRcdFx0dGhpcy5lbHNlVmlld1JlZiA9IG51bGw7XG5cblx0XHRcdFx0XHRcdGlmICh0aGlzLnRoZW5UZW1wbGF0ZVJlZikge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnRoZW5WaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnRoZW5UZW1wbGF0ZVJlZlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMuZWxzZVZpZXdSZWYpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMudGhlblZpZXdSZWYgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmVsc2VUZW1wbGF0ZVJlZikge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZWxzZVZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5lbHNlVGVtcGxhdGVSZWZcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gSWJlbjogRGV0ZWN0IHRoZSBjaGFuZ2VzIHNvIHRoYXQgdGhlIHZpZXcgZ2V0cyB1cGRhdGVkXG5cdFx0XHRcdFx0dGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuXHRcdFx0KVxuXHRcdFx0LnN1YnNjcmliZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc3Bvc2UgdGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uXG5cdCAqL1xuXHRwcml2YXRlIGRpc3Bvc2UoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZGVzdHJveWVkJCkge1xuXHRcdFx0dGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcblx0XHRcdHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuXHRcdH1cblx0fVxufVxuIl19","import { ChangeDetectorRef, Directive, TemplateRef, ViewContainerRef, effect, inject, input, } from '@angular/core';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport { convertToArray } from '../../utils';\nimport * as i0 from \"@angular/core\";\n/**\n * A directive that will render a part of the template based on whether the required permissions(s) are provided.\n *\n * Based upon `*ngIf`. See https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_if.ts\n */\n//TODO: Iben: Implement Cypress/PlayWright tests\nexport class NgxHasPermissionDirective {\n    viewContainer = inject(ViewContainerRef);\n    authenticationService = inject(NgxAuthenticationServiceToken);\n    cdRef = inject(ChangeDetectorRef);\n    /**\n     * The destroyed state of the directive\n     */\n    destroyed$;\n    /**\n     * The needed templateRefs\n     */\n    thenTemplateRef = null;\n    thenViewRef = null;\n    elseTemplateRef = null;\n    elseViewRef = null;\n    /**\n     * The (list of) permission(s) we need to check\n     */\n    permission = [];\n    /**\n     * Whether the permission should be enabled\n     */\n    shouldHavePermission = true;\n    /**\n     * Whether all permissions should be enabled\n     */\n    shouldHaveAllPermissions = true;\n    /**\n     * A permission or list of permissions the item should have\n     */\n    ngxHasPermission = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasPermission\" }] : []));\n    /**\n     * The else template in case the permission is not enabled\n     */\n    ngxHasPermissionElse = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasPermissionElse\" }] : []));\n    /**\n     * Whether the permission should be enabled, by default this is true\n     */\n    ngxHasPermissionShouldHavePermission = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasPermissionShouldHavePermission\" }] : []));\n    /**\n     * Whether all permissions should be enabled, by default this is true\n     */\n    ngxHasPermissionShouldHaveAllPermissions = input(...(ngDevMode ? [undefined, { debugName: \"ngxHasPermissionShouldHaveAllPermissions\" }] : []));\n    constructor() {\n        const templateRef = inject(TemplateRef);\n        this.thenTemplateRef = templateRef;\n        effect(() => {\n            this.shouldHaveAllPermissions = this.ngxHasPermissionShouldHaveAllPermissions();\n            this.shouldHavePermission = this.ngxHasPermissionShouldHavePermission();\n            this.permission = this.ngxHasPermission();\n            this.updateView();\n        });\n        effect(() => {\n            this.elseTemplateRef = this.ngxHasPermissionElse();\n            this.elseViewRef = null;\n        });\n    }\n    ngOnDestroy() {\n        this.dispose();\n    }\n    /**\n     * Updates the view and hides/renders the template as needed\n     */\n    updateView() {\n        // Iben: Dispose the current subscription\n        this.dispose();\n        // Iben: Create a new onDestroyed handler\n        this.destroyed$ = new Subject();\n        // Iben: Render the views based on the correct state\n        this.authenticationService\n            .hasPermission(convertToArray(this.permission), this.shouldHaveAllPermissions)\n            .pipe(tap((hasPermission) => {\n            // Iben: Clear the current view\n            this.viewContainer.clear();\n            // Iben: Check if we should render the view\n            const shouldRender = this.shouldHavePermission\n                ? hasPermission\n                : !hasPermission;\n            // Iben: Render the correct templates\n            if (shouldRender) {\n                this.viewContainer.clear();\n                this.elseViewRef = null;\n                if (this.thenTemplateRef) {\n                    this.thenViewRef = this.viewContainer.createEmbeddedView(this.thenTemplateRef);\n                }\n            }\n            else {\n                if (!this.elseViewRef) {\n                    this.viewContainer.clear();\n                    this.thenViewRef = null;\n                    if (this.elseTemplateRef) {\n                        this.elseViewRef = this.viewContainer.createEmbeddedView(this.elseTemplateRef);\n                    }\n                }\n            }\n            // Iben: Detect the changes so that the view gets updated\n            this.cdRef.detectChanges();\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n    }\n    /**\n     * Dispose the current subscription\n     */\n    dispose() {\n        if (this.destroyed$) {\n            this.destroyed$.next();\n            this.destroyed$.complete();\n        }\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasPermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.2\", type: NgxHasPermissionDirective, isStandalone: true, selector: \"[ngxHasPermission]\", inputs: { ngxHasPermission: { classPropertyName: \"ngxHasPermission\", publicName: \"ngxHasPermission\", isSignal: true, isRequired: false, transformFunction: null }, ngxHasPermissionElse: { classPropertyName: \"ngxHasPermissionElse\", publicName: \"ngxHasPermissionElse\", isSignal: true, isRequired: false, transformFunction: null }, ngxHasPermissionShouldHavePermission: { classPropertyName: \"ngxHasPermissionShouldHavePermission\", publicName: \"ngxHasPermissionShouldHavePermission\", isSignal: true, isRequired: false, transformFunction: null }, ngxHasPermissionShouldHaveAllPermissions: { classPropertyName: \"ngxHasPermissionShouldHaveAllPermissions\", publicName: \"ngxHasPermissionShouldHaveAllPermissions\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasPermissionDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[ngxHasPermission]',\n                }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXBlcm1pc3Npb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9saWIvZGlyZWN0aXZlcy9oYXMtcGVybWlzc2lvbi9oYXMtcGVybWlzc2lvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixTQUFTLEVBSVQsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRTdDOzs7O0dBSUc7QUFFSCxnREFBZ0Q7QUFJaEQsTUFBTSxPQUFPLHlCQUF5QjtJQUM3QixhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEMscUJBQXFCLEdBQUcsTUFBTSxDQUM5Qyw2QkFBNkIsQ0FDN0IsQ0FBQztJQUNlLEtBQUssR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVuRDs7T0FFRztJQUNLLFVBQVUsQ0FBZ0I7SUFFbEM7O09BRUc7SUFDSyxlQUFlLEdBQTRCLElBQUksQ0FBQztJQUNoRCxXQUFXLEdBQWdDLElBQUksQ0FBQztJQUNoRCxlQUFlLEdBQTRCLElBQUksQ0FBQztJQUNoRCxXQUFXLEdBQWdDLElBQUksQ0FBQztJQUV4RDs7T0FFRztJQUNLLFVBQVUsR0FBc0MsRUFBRSxDQUFDO0lBRTNEOztPQUVHO0lBQ0ssb0JBQW9CLEdBQVksSUFBSSxDQUFDO0lBRTdDOztPQUVHO0lBQ0ssd0JBQXdCLEdB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LFVBQVUsQ0FBQyxDQUMxQjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssT0FBTztRQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0YsQ0FBQzt1R0EvSVcseUJBQXlCOzJGQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG9CQUFvQjtpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0RGlyZWN0aXZlLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdElucHV0U2lnbmFsLFxuXHRPbkRlc3Ryb3ksXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgY29udmVydFRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCB3aWxsIHJlbmRlciBhIHBhcnQgb2YgdGhlIHRlbXBsYXRlIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zKHMpIGFyZSBwcm92aWRlZC5cbiAqXG4gKiBCYXNlZCB1cG9uIGAqbmdJZmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2NvbW1vbi9zcmMvZGlyZWN0aXZlcy9uZ19pZi50c1xuICovXG5cbi8vVE9ETzogSWJlbjogSW1wbGVtZW50IEN5cHJlc3MvUGxheVdyaWdodCB0ZXN0c1xuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW25neEhhc1Blcm1pc3Npb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4SGFzUGVybWlzc2lvbkRpcmVjdGl2ZTxQZXJtaXNzaW9uVHlwZSBleHRlbmRzIHN0cmluZz4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXHRwcml2YXRlIHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cdHByaXZhdGUgcmVhZG9ubHkgYXV0aGVudGljYXRpb25TZXJ2aWNlID0gaW5qZWN0PE5neEF1dGhlbnRpY2F0aW9uQWJzdHJhY3RTZXJ2aWNlPihcblx0XHROZ3hBdXRoZW50aWNhdGlvblNlcnZpY2VUb2tlblxuXHQpO1xuXHRwcml2YXRlIHJlYWRvbmx5IGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKipcblx0ICogVGhlIGRlc3Ryb3llZCBzdGF0ZSBvZiB0aGUgZGlyZWN0aXZlXG5cdCAqL1xuXHRwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD47XG5cblx0LyoqXG5cdCAqIFRoZSBuZWVkZWQgdGVtcGxhdGVSZWZzXG5cdCAqL1xuXHRwcml2YXRlIHRoZW5UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHRoZW5WaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIGVsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIGVsc2VWaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBUaGUgKGxpc3Qgb2YpIHBlcm1pc3Npb24ocykgd2UgbmVlZCB0byBjaGVja1xuXHQgKi9cblx0cHJpdmF0ZSBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uVHlwZSB8IFBlcm1pc3Npb25UeXBlW10gPSBbXTtcblxuXHQvKipcblx0ICogV2hldGhlciB0aGUgcGVybWlzc2lvbiBzaG91bGQgYmUgZW5hYmxlZFxuXHQgKi9cblx0cHJpdmF0ZSBzaG91bGRIYXZlUGVybWlzc2lvbjogYm9vbGVhbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgYWxsIHBlcm1pc3Npb25zIHNob3VsZCBiZSBlbmFibGVkXG5cdCAqL1xuXHRwcml2YXRlIHNob3VsZEhhdmVBbGxQZXJtaXNzaW9uczogYm9vbGVhbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIEEgcGVybWlzc2lvbiBvciBsaXN0IG9mIHBlcm1pc3Npb25zIHRoZSBpdGVtIHNob3VsZCBoYXZlXG5cdCAqL1xuXHRwdWJsaWMgbmd4SGFzUGVybWlzc2lvbjogSW5wdXRTaWduYWw8UGVybWlzc2lvblR5cGUgfCBQZXJtaXNzaW9uVHlwZVtdPiA9IGlucHV0KCk7XG5cblx0LyoqXG5cdCAqIFRoZSBlbHNlIHRlbXBsYXRlIGluIGNhc2UgdGhlIHBlcm1pc3Npb24gaXMgbm90IGVuYWJsZWRcblx0ICovXG5cdHB1YmxpYyBuZ3hIYXNQZXJtaXNzaW9uRWxzZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8YW55Pj4gPSBpbnB1dCgpO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRoZSBwZXJtaXNzaW9uIHNob3VsZCBiZSBlbmFibGVkLCBieSBkZWZhdWx0IHRoaXMgaXMgdHJ1ZVxuXHQgKi9cblx0cHVibGljIG5neEhhc1Blcm1pc3Npb25TaG91bGRIYXZlUGVybWlzc2lvbjogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dCgpO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIGFsbCBwZXJtaXNzaW9ucyBzaG91bGQgYmUgZW5hYmxlZCwgYnkgZGVmYXVsdCB0aGlzIGlzIHRydWVcblx0ICovXG5cdHB1YmxpYyBuZ3hIYXNQZXJtaXNzaW9uU2hvdWxkSGF2ZUFsbFBlcm1pc3Npb25zOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4oVGVtcGxhdGVSZWYpO1xuXG5cdFx0dGhpcy50aGVuVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNob3VsZEhhdmVBbGxQZXJtaXNzaW9ucyA9IHRoaXMubmd4SGFzUGVybWlzc2lvblNob3VsZEhhdmVBbGxQZXJtaXNzaW9ucygpO1xuXHRcdFx0dGhpcy5zaG91bGRIYXZlUGVybWlzc2lvbiA9IHRoaXMubmd4SGFzUGVybWlzc2lvblNob3VsZEhhdmVQZXJtaXNzaW9uKCk7XG5cdFx0XHR0aGlzLnBlcm1pc3Npb24gPSB0aGlzLm5neEhhc1Blcm1pc3Npb24oKTtcblxuXHRcdFx0dGhpcy51cGRhdGVWaWV3KCk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5lbHNlVGVtcGxhdGVSZWYgPSB0aGlzLm5neEhhc1Blcm1pc3Npb25FbHNlKCk7XG5cdFx0XHR0aGlzLmVsc2VWaWV3UmVmID0gbnVsbDtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmRpc3Bvc2UoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB2aWV3IGFuZCBoaWRlcy9yZW5kZXJzIHRoZSB0ZW1wbGF0ZSBhcyBuZWVkZWRcblx0ICovXG5cdHByaXZhdGUgdXBkYXRlVmlldygpOiB2b2lkIHtcblx0XHQvLyBJYmVuOiBEaXNwb3NlIHRoZSBjdXJyZW50IHN1YnNjcmlwdGlvblxuXHRcdHRoaXMuZGlzcG9zZSgpO1xuXG5cdFx0Ly8gSWJlbjogQ3JlYXRlIGEgbmV3IG9uRGVzdHJveWVkIGhhbmRsZXJcblx0XHR0aGlzLmRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuXG5cdFx0Ly8gSWJlbjogUmVuZGVyIHRoZSB2aWV3cyBiYXNlZCBvbiB0aGUgY29ycmVjdCBzdGF0ZVxuXHRcdHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlXG5cdFx0XHQuaGFzUGVybWlzc2lvbihcblx0XHRcdFx0Y29udmVydFRvQXJyYXk8UGVybWlzc2lvblR5cGU+KHRoaXMucGVybWlzc2lvbiksXG5cdFx0XHRcdHRoaXMuc2hvdWxkSGF2ZUFsbFBlcm1pc3Npb25zXG5cdFx0XHQpXG5cdFx0XHQucGlwZShcblx0XHRcdFx0dGFwKChoYXNQZXJtaXNzaW9uKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWJlbjogQ2xlYXIgdGhlIGN1cnJlbnQgdmlld1xuXHRcdFx0XHRcdHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuXG5cdFx0XHRcdFx0Ly8gSWJlbjogQ2hlY2sgaWYgd2Ugc2hvdWxkIHJlbmRlciB0aGUgdmlld1xuXHRcdFx0XHRcdGNvbnN0IHNob3VsZFJlbmRlcjogYm9vbGVhbiA9IHRoaXMuc2hvdWxkSGF2ZVBlcm1pc3Npb25cblx0XHRcdFx0XHRcdD8gaGFzUGVybWlzc2lvblxuXHRcdFx0XHRcdFx0OiAhaGFzUGVybWlzc2lvbjtcblxuXHRcdFx0XHRcdC8vIEliZW46IFJlbmRlciB0aGUgY29ycmVjdCB0ZW1wbGF0ZXNcblx0XHRcdFx0XHRpZiAoc2hvdWxkUmVuZGVyKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcblx0XHRcdFx0XHRcdHRoaXMuZWxzZVZpZXdSZWYgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRpZiAodGhpcy50aGVuVGVtcGxhdGVSZWYpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy50aGVuVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy50aGVuVGVtcGxhdGVSZWZcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLmVsc2VWaWV3UmVmKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnRoZW5WaWV3UmVmID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5lbHNlVGVtcGxhdGVSZWYpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVsc2VWaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZWxzZVRlbXBsYXRlUmVmXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEliZW46IERldGVjdCB0aGUgY2hhbmdlcyBzbyB0aGF0IHRoZSB2aWV3IGdldHMgdXBkYXRlZFxuXHRcdFx0XHRcdHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcblx0XHRcdClcblx0XHRcdC5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwb3NlIHRoZSBjdXJyZW50IHN1YnNjcmlwdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBkaXNwb3NlKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmRlc3Ryb3llZCQpIHtcblx0XHRcdHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG5cdFx0XHR0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==","import { Directive, TemplateRef, ViewContainerRef, effect, inject, input, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport * as i0 from \"@angular/core\";\n/**\n *  * A directive that will render a part of the template based on whether the user is authenticated.\n *\n * Based upon `*ngIf`. See https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_if.ts\n */\nexport class NgxIsAuthenticatedDirective {\n    authenticationService = inject(NgxAuthenticationServiceToken);\n    viewContainer = inject(ViewContainerRef);\n    /**\n     * The destroyed state of the directive\n     */\n    destroyed$;\n    /**\n     * The needed templateRefs\n     */\n    thenTemplateRef = null;\n    thenViewRef = null;\n    elseTemplateRef = null;\n    elseViewRef = null;\n    /**\n     * Whether the user has to be authenticated\n     */\n    shouldBeAuthenticated = true;\n    constructor() {\n        const templateRef = inject(TemplateRef);\n        this.thenTemplateRef = templateRef;\n        effect(() => {\n            this.shouldBeAuthenticated = this.ngxIsAuthenticated();\n            this.updateView();\n        });\n        effect(() => {\n            this.elseTemplateRef = this.ngxIsAuthenticatedElse();\n            this.elseViewRef = null;\n            this.updateView();\n        });\n    }\n    /**\n     * Whether the user has to be authenticated\n     */\n    ngxIsAuthenticated = input(...(ngDevMode ? [undefined, { debugName: \"ngxIsAuthenticated\" }] : []));\n    /**\n     * The else template in case the condition is not matched\n     */\n    ngxIsAuthenticatedElse = input(...(ngDevMode ? [undefined, { debugName: \"ngxIsAuthenticatedElse\" }] : []));\n    ngOnDestroy() {\n        this.dispose();\n    }\n    updateView() {\n        // Iben: Dispose the current subscription\n        this.dispose();\n        // Iben: Create a new onDestroyed handler\n        this.destroyed$ = new Subject();\n        // Iben: Render the views based on the correct state\n        this.authenticationService.isAuthenticated$\n            .pipe(tap((isAuthenticated) => {\n            // Iben: Check if we should render the view\n            if ((isAuthenticated && this.shouldBeAuthenticated) ||\n                (!isAuthenticated && !this.shouldBeAuthenticated)) {\n                if (!this.thenViewRef) {\n                    this.viewContainer.clear();\n                    this.elseViewRef = null;\n                    if (this.thenTemplateRef) {\n                        this.thenViewRef = this.viewContainer.createEmbeddedView(this.thenTemplateRef);\n                    }\n                }\n            }\n            else {\n                if (!this.elseViewRef) {\n                    this.viewContainer.clear();\n                    this.thenViewRef = null;\n                    if (this.elseTemplateRef) {\n                        this.elseViewRef = this.viewContainer.createEmbeddedView(this.elseTemplateRef);\n                    }\n                }\n            }\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n    }\n    /**\n     * Dispose the current subscription\n     */\n    dispose() {\n        if (this.destroyed$) {\n            this.destroyed$.next();\n            this.destroyed$.complete();\n        }\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxIsAuthenticatedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.2\", type: NgxIsAuthenticatedDirective, isStandalone: true, selector: \"[ngxIsAuthenticated]\", inputs: { ngxIsAuthenticated: { classPropertyName: \"ngxIsAuthenticated\", publicName: \"ngxIsAuthenticated\", isSignal: true, isRequired: false, transformFunction: null }, ngxIsAuthenticatedElse: { classPropertyName: \"ngxIsAuthenticatedElse\", publicName: \"ngxIsAuthenticatedElse\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxIsAuthenticatedDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[ngxIsAuthenticated]',\n                }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXV0aGVudGljYXRlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYXV0aGVudGljYXRpb24vc3JjL2xpYi9kaXJlY3RpdmVzL2lzLWF1dGhlbnRpY2F0ZWQvaXMtYXV0aGVudGljYXRlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFJVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTdEOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RCLHFCQUFxQixHQUFHLE1BQU0sQ0FDOUMsNkJBQTZCLENBQzdCLENBQUM7SUFDTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFakQ7O09BRUc7SUFDSyxVQUFVLENBQWdCO0lBRWxDOztPQUVHO0lBQ0ssZUFBZSxHQUE0QixJQUFJLENBQUM7SUFDaEQsV0FBVyxHQUFnQyxJQUFJLENBQUM7SUFDaEQsZUFBZSxHQUE0QixJQUFJLENBQUM7SUFDaEQsV0FBVyxHQUFnQyxJQUFJLENBQUM7SUFFeEQ7O09BRUc7SUFDSyxxQkFBcUIsR0FBWSxJQUFJLENBQUM7SUFFOUM7UUFDQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQW1CLFdBQVcsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBRW5DLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQWtCLEdBQXlCLEtBQUssd0VBQUUsQ0FBQztJQUMxRDs7T0FFRztJQUNJLHNCQUFzQixHQUFrQyxLQUFLLDRFQUFFLENBQUM7SUFFaEUsV0FBVztRQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVU7UUFDakIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFaEMsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0I7YUFDekMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3ZCLDJDQUEyQztZQUMzQyxJQUNDLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUNoRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUN2RCxJQUFJLENBQUMsZUFBZSxDQUNwQixDQUFDO29CQUNILENBQUM7Z0JBQ0YsQ0FBQztZQUNGLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDeEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDdkQsSUFBSSxDQUFDLGVBQWUsQ0FDcEIsQ0FBQztvQkFDSCxDQUFDO2dCQUNGLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDMUI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU87UUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNGLENBQUM7dUdBeEdXLDJCQUEyQjsyRkFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdElucHV0U2lnbmFsLFxuXHRPbkRlc3Ryb3ksXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE5neEF1dGhlbnRpY2F0aW9uQWJzdHJhY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RzJztcbmltcG9ydCB7IE5neEF1dGhlbnRpY2F0aW9uU2VydmljZVRva2VuIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcblxuLyoqXG4gKiAgKiBBIGRpcmVjdGl2ZSB0aGF0IHdpbGwgcmVuZGVyIGEgcGFydCBvZiB0aGUgdGVtcGxhdGUgYmFzZWQgb24gd2hldGhlciB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLlxuICpcbiAqIEJhc2VkIHVwb24gYCpuZ0lmYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYXN0ZXIvcGFja2FnZXMvY29tbW9uL3NyYy9kaXJlY3RpdmVzL25nX2lmLnRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tuZ3hJc0F1dGhlbnRpY2F0ZWRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4SXNBdXRoZW50aWNhdGVkRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0cHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGlvblNlcnZpY2UgPSBpbmplY3Q8Tmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2U+KFxuXHRcdE5neEF1dGhlbnRpY2F0aW9uU2VydmljZVRva2VuXG5cdCk7XG5cdHByaXZhdGUgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuXHQvKipcblx0ICogVGhlIGRlc3Ryb3llZCBzdGF0ZSBvZiB0aGUgZGlyZWN0aXZlXG5cdCAqL1xuXHRwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD47XG5cblx0LyoqXG5cdCAqIFRoZSBuZWVkZWQgdGVtcGxhdGVSZWZzXG5cdCAqL1xuXHRwcml2YXRlIHRoZW5UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHRoZW5WaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIGVsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIGVsc2VWaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyB0byBiZSBhdXRoZW50aWNhdGVkXG5cdCAqL1xuXHRwcml2YXRlIHNob3VsZEJlQXV0aGVudGljYXRlZDogYm9vbGVhbiA9IHRydWU7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4oVGVtcGxhdGVSZWYpO1xuXG5cdFx0dGhpcy50aGVuVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNob3VsZEJlQXV0aGVudGljYXRlZCA9IHRoaXMubmd4SXNBdXRoZW50aWNhdGVkKCk7XG5cdFx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLmVsc2VUZW1wbGF0ZVJlZiA9IHRoaXMubmd4SXNBdXRoZW50aWNhdGVkRWxzZSgpO1xuXHRcdFx0dGhpcy5lbHNlVmlld1JlZiA9IG51bGw7XG5cdFx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyB0byBiZSBhdXRoZW50aWNhdGVkXG5cdCAqL1xuXHRwdWJsaWMgbmd4SXNBdXRoZW50aWNhdGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KCk7XG5cdC8qKlxuXHQgKiBUaGUgZWxzZSB0ZW1wbGF0ZSBpbiBjYXNlIHRoZSBjb25kaXRpb24gaXMgbm90IG1hdGNoZWRcblx0ICovXG5cdHB1YmxpYyBuZ3hJc0F1dGhlbnRpY2F0ZWRFbHNlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+PiA9IGlucHV0KCk7XG5cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuZGlzcG9zZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVWaWV3KCk6IHZvaWQge1xuXHRcdC8vIEliZW46IERpc3Bvc2UgdGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uXG5cdFx0dGhpcy5kaXNwb3NlKCk7XG5cblx0XHQvLyBJYmVuOiBDcmVhdGUgYSBuZXcgb25EZXN0cm95ZWQgaGFuZGxlclxuXHRcdHRoaXMuZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cblx0XHQvLyBJYmVuOiBSZW5kZXIgdGhlIHZpZXdzIGJhc2VkIG9uIHRoZSBjb3JyZWN0IHN0YXRlXG5cdFx0dGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNBdXRoZW50aWNhdGVkJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdHRhcCgoaXNBdXRoZW50aWNhdGVkKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWJlbjogQ2hlY2sgaWYgd2Ugc2hvdWxkIHJlbmRlciB0aGUgdmlld1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChpc0F1dGhlbnRpY2F0ZWQgJiYgdGhpcy5zaG91bGRCZUF1dGhlbnRpY2F0ZWQpIHx8XG5cdFx0XHRcdFx0XHQoIWlzQXV0aGVudGljYXRlZCAmJiAhdGhpcy5zaG91bGRCZUF1dGhlbnRpY2F0ZWQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMudGhlblZpZXdSZWYpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZWxzZVZpZXdSZWYgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy50aGVuVGVtcGxhdGVSZWYpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnRoZW5WaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMudGhlblRlbXBsYXRlUmVmXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMuZWxzZVZpZXdSZWYpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMudGhlblZpZXdSZWYgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5lbHNlVGVtcGxhdGVSZWYpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVsc2VWaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZWxzZVRlbXBsYXRlUmVmXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcG9zZSB0aGUgY3VycmVudCBzdWJzY3JpcHRpb25cblx0ICovXG5cdHByaXZhdGUgZGlzcG9zZSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5kZXN0cm95ZWQkKSB7XG5cdFx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdFx0dGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=","import { inject } from '@angular/core';\nimport { ActivatedRoute, Router, createUrlTreeFromSnapshot, } from '@angular/router';\nimport { combineLatest, filter, map, of, tap } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport { convertToArray } from '../../utils';\n/**\n * Check if we can route to this route based on the provided feature\n *\n * @param  routeSnapshot - The provided route snapshot\n */\nexport const NgxHasFeatureGuard = (routeSnapshot) => {\n    // Iben: Fetch all injectables\n    const authenticationService = inject(NgxAuthenticationServiceToken);\n    const route = inject(ActivatedRoute);\n    const router = inject(Router);\n    // Iben: Check if the feature is enabled for the environment\n    const snapshot = routeSnapshot;\n    const feature = snapshot.data?.feature;\n    const allFeatures = snapshot.data?.shouldHaveAllFeatures === undefined\n        ? true\n        : snapshot.data?.shouldHaveAllFeatures;\n    // Wouter: The path to redirect to when the right conditions are met.\n    const redirectTo = snapshot.data?.redirect;\n    /**\n     * Whether we should navigate away if the feature exists.\n     * * If this is set to `true`, a redirect path has been provided, and the feature is enabled, we navigate away\n     * from the route this guard is set upon.\n     * * If this is set to `false`, the feature flag must be enabled. If not, the guard will not allow for the route\n     * this guard is set upon to be navigated to and will redirect to either the provided paths or the home page.\n     *\n     * Default value is `false`.\n     */\n    const shouldNavigateOnFeature = Boolean(snapshot.data?.['shouldNavigateOnFeature']);\n    // Iben: Early exit if there's no feature provided\n    if (!feature) {\n        return of(true);\n    }\n    // Wouter: Early exit if we should navigate when the feature is enabled but no navigation was provided\n    if (shouldNavigateOnFeature && !redirectTo.length) {\n        return of(true);\n    }\n    // Iben: If there's a feature provided, we check if we have the feature\n    return combineLatest([\n        authenticationService.isAuthenticated$,\n        authenticationService.hasFeature(convertToArray(feature), allFeatures),\n    ]).pipe(filter(([featuresHaveBeenSet]) => featuresHaveBeenSet), tap(([, canNavigate]) => {\n        // Wouter: Continue if we should navigate when the FF is enabled\n        if (shouldNavigateOnFeature) {\n            // Wouter: Continue only if the feature is enabled\n            if (canNavigate) {\n                // Wouter: Snapshot is needed to navigate relatively.\n                return router.navigateByUrl(createUrlTreeFromSnapshot(routeSnapshot, redirectTo));\n            }\n        }\n        // Wouter: Continue if we should navigate when the feature is disabled\n        // Wouter: If the feature is enabled, we shouldn't redirect.\n        if (canNavigate) {\n            return true;\n        }\n        // Iben: Redirect if the feature is disabled\n        return router.navigate([...redirectTo], {\n            relativeTo: route,\n        });\n    }), \n    // Wouter: If we should navigate when the feature exists, the guard returns false as we have already navigated away.\n    // If we should allow this guard's route when the feature exists, we can safely do so.\n    map(([, canNavigate]) => (shouldNavigateOnFeature ? !canNavigate : canNavigate)));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWZlYXR1cmUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYXV0aGVudGljYXRpb24vc3JjL2xpYi9ndWFyZHMvaGFzLWZlYXR1cmUvaGFzLWZlYXR1cmUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQ04sY0FBYyxFQUdkLE1BQU0sRUFDTix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWtCLENBQ2hELGFBQXFDLEVBQ2YsRUFBRTtJQUN4Qiw4QkFBOEI7SUFDOUIsTUFBTSxxQkFBcUIsR0FBcUMsTUFBTSxDQUNyRSw2QkFBNkIsQ0FDN0IsQ0FBQztJQUNGLE1BQU0sS0FBSyxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLDREQUE0RDtJQUM1RCxNQUFNLFFBQVEsR0FDYixhQUFtRCxDQUFDO0lBQ3JELE1BQU0sT0FBTyxHQUFnQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUNwRSxNQUFNLFdBQVcsR0FDaEIsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsS0FBSyxTQUFTO1FBQ2pELENBQUMsQ0FBQyxJQUFJO1FBQ04sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7SUFFekMscUVBQXFFO0lBQ3JFLE1BQU0sVUFBVSxHQUFhLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ3JEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSx1QkFBdUIsR0FBWSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFFLHlCQUF5QixDQUFFLENBQUMsQ0FBQztJQUUvRixrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxJQUFJLHVCQUF1QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25ELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsT0FBTyxhQUFhLENBQUM7UUFDcEIscUJBQXFCLENBQUMsZ0JBQWdCO1FBQ3RDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQWMsT0FBTyxDQUFDLEVBQUUsV0FBVyxDQUFDO0tBQ25GLENBQUMsQ0FBQyxJQUFJLENBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUN0RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtRQUN2QixnRUFBZ0U7UUFDaEUsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQzdCLGtEQUFrRDtZQUNsRCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixxREFBcUQ7Z0JBQ3JELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FDMUIseUJBQXlCLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUNwRCxDQUFDO1lBQ0gsQ0FBQztRQUNGLENBQUM7UUFDRCxzRUFBc0U7UUFDdEUsNERBQTREO1FBQzVELElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBRUQsNENBQTRDO1FBQzVDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7WUFDdkMsVUFBVSxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBQ0Ysb0hBQW9IO0lBQ3BILHNGQUFzRjtJQUN0RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUNoRixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRBY3RpdmF0ZWRSb3V0ZSxcblx0QWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcblx0Q2FuQWN0aXZhdGVGbixcblx0Um91dGVyLFxuXHRjcmVhdGVVcmxUcmVlRnJvbVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRlZFJvdXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgY29udmVydFRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgY2FuIHJvdXRlIHRvIHRoaXMgcm91dGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZlYXR1cmVcbiAqXG4gKiBAcGFyYW0gIHJvdXRlU25hcHNob3QgLSBUaGUgcHJvdmlkZWQgcm91dGUgc25hcHNob3RcbiAqL1xuZXhwb3J0IGNvbnN0IE5neEhhc0ZlYXR1cmVHdWFyZDogQ2FuQWN0aXZhdGVGbiA9IDxGZWF0dXJlVHlwZSBleHRlbmRzIHN0cmluZz4oXG5cdHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Rcbik6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4ge1xuXHQvLyBJYmVuOiBGZXRjaCBhbGwgaW5qZWN0YWJsZXNcblx0Y29uc3QgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZSA9IGluamVjdChcblx0XHROZ3hBdXRoZW50aWNhdGlvblNlcnZpY2VUb2tlblxuXHQpO1xuXHRjb25zdCByb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXHRjb25zdCByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG5cdC8vIEliZW46IENoZWNrIGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgZm9yIHRoZSBlbnZpcm9ubWVudFxuXHRjb25zdCBzbmFwc2hvdDogTmd4QXV0aGVudGljYXRlZFJvdXRlPEZlYXR1cmVUeXBlPiA9XG5cdFx0cm91dGVTbmFwc2hvdCBhcyBOZ3hBdXRoZW50aWNhdGVkUm91dGU8RmVhdHVyZVR5cGU+O1xuXHRjb25zdCBmZWF0dXJlOiBGZWF0dXJlVHlwZSB8IEZlYXR1cmVUeXBlW10gPSBzbmFwc2hvdC5kYXRhPy5mZWF0dXJlO1xuXHRjb25zdCBhbGxGZWF0dXJlczogYm9vbGVhbiA9XG5cdFx0c25hcHNob3QuZGF0YT8uc2hvdWxkSGF2ZUFsbEZlYXR1cmVzID09PSB1bmRlZmluZWRcblx0XHRcdD8gdHJ1ZVxuXHRcdFx0OiBzbmFwc2hvdC5kYXRhPy5zaG91bGRIYXZlQWxsRmVhdHVyZXM7XG5cblx0Ly8gV291dGVyOiBUaGUgcGF0aCB0byByZWRpcmVjdCB0byB3aGVuIHRoZSByaWdodCBjb25kaXRpb25zIGFyZSBtZXQuXG5cdGNvbnN0IHJlZGlyZWN0VG86IHN0cmluZ1tdID0gc25hcHNob3QuZGF0YT8ucmVkaXJlY3Q7XG5cdC8qKlxuXHQgKiBXaGV0aGVyIHdlIHNob3VsZCBuYXZpZ2F0ZSBhd2F5IGlmIHRoZSBmZWF0dXJlIGV4aXN0cy5cblx0ICogKiBJZiB0aGlzIGlzIHNldCB0byBgdHJ1ZWAsIGEgcmVkaXJlY3QgcGF0aCBoYXMgYmVlbiBwcm92aWRlZCwgYW5kIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQsIHdlIG5hdmlnYXRlIGF3YXlcblx0ICogZnJvbSB0aGUgcm91dGUgdGhpcyBndWFyZCBpcyBzZXQgdXBvbi5cblx0ICogKiBJZiB0aGlzIGlzIHNldCB0byBgZmFsc2VgLCB0aGUgZmVhdHVyZSBmbGFnIG11c3QgYmUgZW5hYmxlZC4gSWYgbm90LCB0aGUgZ3VhcmQgd2lsbCBub3QgYWxsb3cgZm9yIHRoZSByb3V0ZVxuXHQgKiB0aGlzIGd1YXJkIGlzIHNldCB1cG9uIHRvIGJlIG5hdmlnYXRlZCB0byBhbmQgd2lsbCByZWRpcmVjdCB0byBlaXRoZXIgdGhlIHByb3ZpZGVkIHBhdGhzIG9yIHRoZSBob21lIHBhZ2UuXG5cdCAqXG5cdCAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cblx0ICovXG5cdGNvbnN0IHNob3VsZE5hdmlnYXRlT25GZWF0dXJlOiBib29sZWFuID0gQm9vbGVhbihzbmFwc2hvdC5kYXRhPy5bICdzaG91bGROYXZpZ2F0ZU9uRmVhdHVyZScgXSk7XG5cblx0Ly8gSWJlbjogRWFybHkgZXhpdCBpZiB0aGVyZSdzIG5vIGZlYXR1cmUgcHJvdmlkZWRcblx0aWYgKCFmZWF0dXJlKSB7XG5cdFx0cmV0dXJuIG9mKHRydWUpO1xuXHR9XG5cblx0Ly8gV291dGVyOiBFYXJseSBleGl0IGlmIHdlIHNob3VsZCBuYXZpZ2F0ZSB3aGVuIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgYnV0IG5vIG5hdmlnYXRpb24gd2FzIHByb3ZpZGVkXG5cdGlmIChzaG91bGROYXZpZ2F0ZU9uRmVhdHVyZSAmJiAhcmVkaXJlY3RUby5sZW5ndGgpIHtcblx0XHRyZXR1cm4gb2YodHJ1ZSk7XG5cdH1cblxuXHQvLyBJYmVuOiBJZiB0aGVyZSdzIGEgZmVhdHVyZSBwcm92aWRlZCwgd2UgY2hlY2sgaWYgd2UgaGF2ZSB0aGUgZmVhdHVyZVxuXHRyZXR1cm4gY29tYmluZUxhdGVzdChbXG5cdFx0YXV0aGVudGljYXRpb25TZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQsXG5cdFx0YXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc0ZlYXR1cmUoY29udmVydFRvQXJyYXk8RmVhdHVyZVR5cGU+KGZlYXR1cmUpLCBhbGxGZWF0dXJlcyksXG5cdF0pLnBpcGUoXG5cdFx0ZmlsdGVyKChbZmVhdHVyZXNIYXZlQmVlblNldF0pID0+IGZlYXR1cmVzSGF2ZUJlZW5TZXQpLFxuXHRcdHRhcCgoWywgY2FuTmF2aWdhdGVdKSA9PiB7XG5cdFx0XHQvLyBXb3V0ZXI6IENvbnRpbnVlIGlmIHdlIHNob3VsZCBuYXZpZ2F0ZSB3aGVuIHRoZSBGRiBpcyBlbmFibGVkXG5cdFx0XHRpZiAoc2hvdWxkTmF2aWdhdGVPbkZlYXR1cmUpIHtcblx0XHRcdFx0Ly8gV291dGVyOiBDb250aW51ZSBvbmx5IGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWRcblx0XHRcdFx0aWYgKGNhbk5hdmlnYXRlKSB7XG5cdFx0XHRcdFx0Ly8gV291dGVyOiBTbmFwc2hvdCBpcyBuZWVkZWQgdG8gbmF2aWdhdGUgcmVsYXRpdmVseS5cblx0XHRcdFx0XHRyZXR1cm4gcm91dGVyLm5hdmlnYXRlQnlVcmwoXG5cdFx0XHRcdFx0XHRjcmVhdGVVcmxUcmVlRnJvbVNuYXBzaG90KHJvdXRlU25hcHNob3QsIHJlZGlyZWN0VG8pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gV291dGVyOiBDb250aW51ZSBpZiB3ZSBzaG91bGQgbmF2aWdhdGUgd2hlbiB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZFxuXHRcdFx0Ly8gV291dGVyOiBJZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLCB3ZSBzaG91bGRuJ3QgcmVkaXJlY3QuXG5cdFx0XHRpZiAoY2FuTmF2aWdhdGUpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEliZW46IFJlZGlyZWN0IGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkXG5cdFx0XHRyZXR1cm4gcm91dGVyLm5hdmlnYXRlKFsuLi5yZWRpcmVjdFRvXSwge1xuXHRcdFx0XHRyZWxhdGl2ZVRvOiByb3V0ZSxcblx0XHRcdH0pO1xuXHRcdH0pLFxuXHRcdC8vIFdvdXRlcjogSWYgd2Ugc2hvdWxkIG5hdmlnYXRlIHdoZW4gdGhlIGZlYXR1cmUgZXhpc3RzLCB0aGUgZ3VhcmQgcmV0dXJucyBmYWxzZSBhcyB3ZSBoYXZlIGFscmVhZHkgbmF2aWdhdGVkIGF3YXkuXG5cdFx0Ly8gSWYgd2Ugc2hvdWxkIGFsbG93IHRoaXMgZ3VhcmQncyByb3V0ZSB3aGVuIHRoZSBmZWF0dXJlIGV4aXN0cywgd2UgY2FuIHNhZmVseSBkbyBzby5cblx0XHRtYXAoKFssIGNhbk5hdmlnYXRlXSkgPT4gKHNob3VsZE5hdmlnYXRlT25GZWF0dXJlID8gIWNhbk5hdmlnYXRlIDogY2FuTmF2aWdhdGUpKVxuXHQpO1xufTtcbiJdfQ==","import { inject } from '@angular/core';\nimport { ActivatedRoute, Router, createUrlTreeFromSnapshot, } from '@angular/router';\nimport { combineLatest, filter, map, of, tap } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport { convertToArray } from '../../utils';\n/**\n * Check if we can route to this route based on the provided permission\n *\n * @param  routeSnapshot - The provided route snapshot\n */\nexport const NgxHasPermissionGuard = (routeSnapshot) => {\n    // Iben: Fetch all injectables\n    const authenticationService = inject(NgxAuthenticationServiceToken);\n    const route = inject(ActivatedRoute);\n    const router = inject(Router);\n    // Iben: Check if the permission is enabled for the environment\n    const snapshot = routeSnapshot;\n    const permission = snapshot.data?.permission;\n    const allPermissions = snapshot.data?.shouldHaveAllPermissions === undefined\n        ? true\n        : snapshot.data?.shouldHaveAllPermissions;\n    // Wouter: The path to redirect to when the right conditions are met.\n    const redirectTo = snapshot.data?.redirect;\n    /**\n     * Whether we should navigate away if the permission exists.\n     * * If this is set to `true`, a redirect path has been provided, and the permission is enabled, we navigate away\n     * from the route this guard is set upon.\n     * * If this is set to `false`, the permission flag must be enabled. If not, the guard will not allow for the route\n     * this guard is set upon to be navigated to and will redirect to either the provided paths or the home page.\n     *\n     * Default value is `false`.\n     */\n    const shouldNavigateOnPermission = Boolean(snapshot.data?.['shouldNavigateOnPermission']);\n    // Iben: Early exit if there's no permission provided\n    if (!permission) {\n        return of(true);\n    }\n    // Wouter: Early exit if we should navigate when the permission is enabled but no navigation was provided\n    if (shouldNavigateOnPermission && !redirectTo.length) {\n        return of(true);\n    }\n    // Iben: If there's a permission provided, we check if we have the permission\n    return combineLatest([\n        authenticationService.isAuthenticated$,\n        authenticationService.hasPermission(convertToArray(permission), allPermissions),\n    ]).pipe(filter(([permissionsHaveBeenSet]) => permissionsHaveBeenSet), tap(([, canNavigate]) => {\n        // Wouter: Continue if we should navigate when the FF is enabled\n        if (shouldNavigateOnPermission) {\n            // Wouter: Continue only if the permission is enabled\n            if (canNavigate) {\n                // Wouter: Snapshot is needed to navigate relatively.\n                return router.navigateByUrl(createUrlTreeFromSnapshot(routeSnapshot, redirectTo));\n            }\n        }\n        // Wouter: Continue if we should navigate when the permission is disabled\n        // Wouter: If the permission is enabled, we shouldn't redirect.\n        if (canNavigate) {\n            return true;\n        }\n        // Iben: Redirect if the permission is disabled\n        return router.navigate([...redirectTo], {\n            relativeTo: route,\n        });\n    }), \n    // Wouter: If we should navigate when the permission exists, the guard returns false as we have already navigated away.\n    // If we should allow this guard's route when the permission exists, we can safely do so.\n    map(([, canNavigate]) => (shouldNavigateOnPermission ? !canNavigate : canNavigate)));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXBlcm1pc3Npb24uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYXV0aGVudGljYXRpb24vc3JjL2xpYi9ndWFyZHMvaGFzLXBlcm1pc3Npb24vaGFzLXBlcm1pc3Npb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQ04sY0FBYyxFQUdkLE1BQU0sRUFDTix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWtCLENBQ25ELGFBQXFDLEVBQ2YsRUFBRTtJQUN4Qiw4QkFBOEI7SUFDOUIsTUFBTSxxQkFBcUIsR0FBcUMsTUFBTSxDQUNyRSw2QkFBNkIsQ0FDN0IsQ0FBQztJQUNGLE1BQU0sS0FBSyxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLCtEQUErRDtJQUMvRCxNQUFNLFFBQVEsR0FDYixhQUE4RCxDQUFDO0lBQ2hFLE1BQU0sVUFBVSxHQUFzQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUNoRixNQUFNLGNBQWMsR0FDbkIsUUFBUSxDQUFDLElBQUksRUFBRSx3QkFBd0IsS0FBSyxTQUFTO1FBQ3BELENBQUMsQ0FBQyxJQUFJO1FBQ04sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUM7SUFFNUMscUVBQXFFO0lBQ3JFLE1BQU0sVUFBVSxHQUFhLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ3JEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSwwQkFBMEIsR0FBWSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFFLDRCQUE0QixDQUFFLENBQUMsQ0FBQztJQUVyRyxxREFBcUQ7SUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx5R0FBeUc7SUFDekcsSUFBSSwwQkFBMEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLE9BQU8sYUFBYSxDQUFDO1FBQ3BCLHFCQUFxQixDQUFDLGdCQUFnQjtRQUN0QyxxQkFBcUIsQ0FBQyxhQUFhLENBQ2xDLGNBQWMsQ0FBaUIsVUFBVSxDQUFDLEVBQzFDLGNBQWMsQ0FDZDtLQUNELENBQUMsQ0FBQyxJQUFJLENBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUM1RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtRQUN2QixnRUFBZ0U7UUFDaEUsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1lBQ2hDLHFEQUFxRDtZQUNyRCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixxREFBcUQ7Z0JBQ3JELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FDMUIseUJBQXlCLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUNwRCxDQUFDO1lBQ0gsQ0FBQztRQUNGLENBQUM7UUFDRCx5RUFBeUU7UUFDekUsK0RBQStEO1FBQy9ELElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBRUQsK0NBQStDO1FBQy9DLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7WUFDdkMsVUFBVSxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBQ0YsdUhBQXVIO0lBQ3ZILHlGQUF5RjtJQUN6RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUNuRixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRBY3RpdmF0ZWRSb3V0ZSxcblx0QWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcblx0Q2FuQWN0aXZhdGVGbixcblx0Um91dGVyLFxuXHRjcmVhdGVVcmxUcmVlRnJvbVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRlZFJvdXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgY29udmVydFRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgY2FuIHJvdXRlIHRvIHRoaXMgcm91dGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBlcm1pc3Npb25cbiAqXG4gKiBAcGFyYW0gIHJvdXRlU25hcHNob3QgLSBUaGUgcHJvdmlkZWQgcm91dGUgc25hcHNob3RcbiAqL1xuZXhwb3J0IGNvbnN0IE5neEhhc1Blcm1pc3Npb25HdWFyZDogQ2FuQWN0aXZhdGVGbiA9IDxQZXJtaXNzaW9uVHlwZSBleHRlbmRzIHN0cmluZz4oXG5cdHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Rcbik6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4ge1xuXHQvLyBJYmVuOiBGZXRjaCBhbGwgaW5qZWN0YWJsZXNcblx0Y29uc3QgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZSA9IGluamVjdChcblx0XHROZ3hBdXRoZW50aWNhdGlvblNlcnZpY2VUb2tlblxuXHQpO1xuXHRjb25zdCByb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXHRjb25zdCByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG5cdC8vIEliZW46IENoZWNrIGlmIHRoZSBwZXJtaXNzaW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBlbnZpcm9ubWVudFxuXHRjb25zdCBzbmFwc2hvdDogTmd4QXV0aGVudGljYXRlZFJvdXRlPHN0cmluZywgUGVybWlzc2lvblR5cGU+ID1cblx0XHRyb3V0ZVNuYXBzaG90IGFzIE5neEF1dGhlbnRpY2F0ZWRSb3V0ZTxzdHJpbmcsIFBlcm1pc3Npb25UeXBlPjtcblx0Y29uc3QgcGVybWlzc2lvbjogUGVybWlzc2lvblR5cGUgfCBQZXJtaXNzaW9uVHlwZVtdID0gc25hcHNob3QuZGF0YT8ucGVybWlzc2lvbjtcblx0Y29uc3QgYWxsUGVybWlzc2lvbnM6IGJvb2xlYW4gPVxuXHRcdHNuYXBzaG90LmRhdGE/LnNob3VsZEhhdmVBbGxQZXJtaXNzaW9ucyA9PT0gdW5kZWZpbmVkXG5cdFx0XHQ/IHRydWVcblx0XHRcdDogc25hcHNob3QuZGF0YT8uc2hvdWxkSGF2ZUFsbFBlcm1pc3Npb25zO1xuXG5cdC8vIFdvdXRlcjogVGhlIHBhdGggdG8gcmVkaXJlY3QgdG8gd2hlbiB0aGUgcmlnaHQgY29uZGl0aW9ucyBhcmUgbWV0LlxuXHRjb25zdCByZWRpcmVjdFRvOiBzdHJpbmdbXSA9IHNuYXBzaG90LmRhdGE/LnJlZGlyZWN0O1xuXHQvKipcblx0ICogV2hldGhlciB3ZSBzaG91bGQgbmF2aWdhdGUgYXdheSBpZiB0aGUgcGVybWlzc2lvbiBleGlzdHMuXG5cdCAqICogSWYgdGhpcyBpcyBzZXQgdG8gYHRydWVgLCBhIHJlZGlyZWN0IHBhdGggaGFzIGJlZW4gcHJvdmlkZWQsIGFuZCB0aGUgcGVybWlzc2lvbiBpcyBlbmFibGVkLCB3ZSBuYXZpZ2F0ZSBhd2F5XG5cdCAqIGZyb20gdGhlIHJvdXRlIHRoaXMgZ3VhcmQgaXMgc2V0IHVwb24uXG5cdCAqICogSWYgdGhpcyBpcyBzZXQgdG8gYGZhbHNlYCwgdGhlIHBlcm1pc3Npb24gZmxhZyBtdXN0IGJlIGVuYWJsZWQuIElmIG5vdCwgdGhlIGd1YXJkIHdpbGwgbm90IGFsbG93IGZvciB0aGUgcm91dGVcblx0ICogdGhpcyBndWFyZCBpcyBzZXQgdXBvbiB0byBiZSBuYXZpZ2F0ZWQgdG8gYW5kIHdpbGwgcmVkaXJlY3QgdG8gZWl0aGVyIHRoZSBwcm92aWRlZCBwYXRocyBvciB0aGUgaG9tZSBwYWdlLlxuXHQgKlxuXHQgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG5cdCAqL1xuXHRjb25zdCBzaG91bGROYXZpZ2F0ZU9uUGVybWlzc2lvbjogYm9vbGVhbiA9IEJvb2xlYW4oc25hcHNob3QuZGF0YT8uWyAnc2hvdWxkTmF2aWdhdGVPblBlcm1pc3Npb24nIF0pO1xuXG5cdC8vIEliZW46IEVhcmx5IGV4aXQgaWYgdGhlcmUncyBubyBwZXJtaXNzaW9uIHByb3ZpZGVkXG5cdGlmICghcGVybWlzc2lvbikge1xuXHRcdHJldHVybiBvZih0cnVlKTtcblx0fVxuXG5cdC8vIFdvdXRlcjogRWFybHkgZXhpdCBpZiB3ZSBzaG91bGQgbmF2aWdhdGUgd2hlbiB0aGUgcGVybWlzc2lvbiBpcyBlbmFibGVkIGJ1dCBubyBuYXZpZ2F0aW9uIHdhcyBwcm92aWRlZFxuXHRpZiAoc2hvdWxkTmF2aWdhdGVPblBlcm1pc3Npb24gJiYgIXJlZGlyZWN0VG8ubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIG9mKHRydWUpO1xuXHR9XG5cblx0Ly8gSWJlbjogSWYgdGhlcmUncyBhIHBlcm1pc3Npb24gcHJvdmlkZWQsIHdlIGNoZWNrIGlmIHdlIGhhdmUgdGhlIHBlcm1pc3Npb25cblx0cmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuXHRcdGF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLFxuXHRcdGF1dGhlbnRpY2F0aW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKFxuXHRcdFx0Y29udmVydFRvQXJyYXk8UGVybWlzc2lvblR5cGU+KHBlcm1pc3Npb24pLFxuXHRcdFx0YWxsUGVybWlzc2lvbnNcblx0XHQpLFxuXHRdKS5waXBlKFxuXHRcdGZpbHRlcigoW3Blcm1pc3Npb25zSGF2ZUJlZW5TZXRdKSA9PiBwZXJtaXNzaW9uc0hhdmVCZWVuU2V0KSxcblx0XHR0YXAoKFssIGNhbk5hdmlnYXRlXSkgPT4ge1xuXHRcdFx0Ly8gV291dGVyOiBDb250aW51ZSBpZiB3ZSBzaG91bGQgbmF2aWdhdGUgd2hlbiB0aGUgRkYgaXMgZW5hYmxlZFxuXHRcdFx0aWYgKHNob3VsZE5hdmlnYXRlT25QZXJtaXNzaW9uKSB7XG5cdFx0XHRcdC8vIFdvdXRlcjogQ29udGludWUgb25seSBpZiB0aGUgcGVybWlzc2lvbiBpcyBlbmFibGVkXG5cdFx0XHRcdGlmIChjYW5OYXZpZ2F0ZSkge1xuXHRcdFx0XHRcdC8vIFdvdXRlcjogU25hcHNob3QgaXMgbmVlZGVkIHRvIG5hdmlnYXRlIHJlbGF0aXZlbHkuXG5cdFx0XHRcdFx0cmV0dXJuIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxuXHRcdFx0XHRcdFx0Y3JlYXRlVXJsVHJlZUZyb21TbmFwc2hvdChyb3V0ZVNuYXBzaG90LCByZWRpcmVjdFRvKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIFdvdXRlcjogQ29udGludWUgaWYgd2Ugc2hvdWxkIG5hdmlnYXRlIHdoZW4gdGhlIHBlcm1pc3Npb24gaXMgZGlzYWJsZWRcblx0XHRcdC8vIFdvdXRlcjogSWYgdGhlIHBlcm1pc3Npb24gaXMgZW5hYmxlZCwgd2Ugc2hvdWxkbid0IHJlZGlyZWN0LlxuXHRcdFx0aWYgKGNhbk5hdmlnYXRlKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJYmVuOiBSZWRpcmVjdCBpZiB0aGUgcGVybWlzc2lvbiBpcyBkaXNhYmxlZFxuXHRcdFx0cmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShbLi4ucmVkaXJlY3RUb10sIHtcblx0XHRcdFx0cmVsYXRpdmVUbzogcm91dGUsXG5cdFx0XHR9KTtcblx0XHR9KSxcblx0XHQvLyBXb3V0ZXI6IElmIHdlIHNob3VsZCBuYXZpZ2F0ZSB3aGVuIHRoZSBwZXJtaXNzaW9uIGV4aXN0cywgdGhlIGd1YXJkIHJldHVybnMgZmFsc2UgYXMgd2UgaGF2ZSBhbHJlYWR5IG5hdmlnYXRlZCBhd2F5LlxuXHRcdC8vIElmIHdlIHNob3VsZCBhbGxvdyB0aGlzIGd1YXJkJ3Mgcm91dGUgd2hlbiB0aGUgcGVybWlzc2lvbiBleGlzdHMsIHdlIGNhbiBzYWZlbHkgZG8gc28uXG5cdFx0bWFwKChbLCBjYW5OYXZpZ2F0ZV0pID0+IChzaG91bGROYXZpZ2F0ZU9uUGVybWlzc2lvbiA/ICFjYW5OYXZpZ2F0ZSA6IGNhbk5hdmlnYXRlKSlcblx0KTtcbn07XG4iXX0=","import { inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\n/**\n * Check if we can route to this route based on the provided permission\n *\n * @param  routeSnapshot - The provided route snapshot\n */\nexport const NgxIsAuthenticatedGuard = (routeSnapshot) => {\n    // Iben: Fetch all injectables\n    const authenticationService = inject(NgxAuthenticationServiceToken);\n    const route = inject(ActivatedRoute);\n    const router = inject(Router);\n    // Iben: Check if the permission is enabled for the environment\n    const snapshot = routeSnapshot;\n    // Wouter: The path to redirect to when the right conditions are met.\n    const redirectTo = snapshot.data?.redirect;\n    /**\n     * Whether we should navigate away if the user is not authenticated\n     * Default value is `false`.\n     */\n    const shouldBeAuthenticated = Boolean(snapshot.data?.shouldBeAuthenticated);\n    // Iben: If there's a permission provided, we check if we have the permission\n    return authenticationService.isAuthenticated$.pipe(map((isAuthenticated) => {\n        // Wouter: Continue if we are authenticated and we should be authenticated or vice-versa\n        if ((isAuthenticated && shouldBeAuthenticated) ||\n            (!isAuthenticated && !shouldBeAuthenticated)) {\n            return true;\n        }\n        // Iben: Redirect if the previous check has failed\n        router.navigate([...redirectTo], {\n            relativeTo: route,\n        });\n        return false;\n    }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXV0aGVudGljYXRlZC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL2d1YXJkcy9pcy1hdXRoZW50aWNhdGVkL2lzLWF1dGhlbnRpY2F0ZWQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUF5QyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUc3RDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWtCLENBQ3JELGFBQXFDLEVBQ2YsRUFBRTtJQUN4Qiw4QkFBOEI7SUFDOUIsTUFBTSxxQkFBcUIsR0FBcUMsTUFBTSxDQUNyRSw2QkFBNkIsQ0FDN0IsQ0FBQztJQUNGLE1BQU0sS0FBSyxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLCtEQUErRDtJQUMvRCxNQUFNLFFBQVEsR0FBMEIsYUFBc0MsQ0FBQztJQUUvRSxxRUFBcUU7SUFDckUsTUFBTSxVQUFVLEdBQWEsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7SUFDckQ7OztPQUdHO0lBQ0gsTUFBTSxxQkFBcUIsR0FBWSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJGLDZFQUE2RTtJQUM3RSxPQUFPLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDakQsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7UUFDdkIsd0ZBQXdGO1FBQ3hGLElBQ0MsQ0FBQyxlQUFlLElBQUkscUJBQXFCLENBQUM7WUFDMUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQzNDLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxrREFBa0Q7UUFDbEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7WUFDaEMsVUFBVSxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FDRixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVGbiwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGlvblNlcnZpY2VUb2tlbiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGVkUm91dGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgY2FuIHJvdXRlIHRvIHRoaXMgcm91dGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBlcm1pc3Npb25cbiAqXG4gKiBAcGFyYW0gIHJvdXRlU25hcHNob3QgLSBUaGUgcHJvdmlkZWQgcm91dGUgc25hcHNob3RcbiAqL1xuZXhwb3J0IGNvbnN0IE5neElzQXV0aGVudGljYXRlZEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKFxuXHRyb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XG4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHtcblx0Ly8gSWJlbjogRmV0Y2ggYWxsIGluamVjdGFibGVzXG5cdGNvbnN0IGF1dGhlbnRpY2F0aW9uU2VydmljZTogTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2UgPSBpbmplY3QoXG5cdFx0Tmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW5cblx0KTtcblx0Y29uc3Qgcm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblx0Y29uc3Qgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuXHQvLyBJYmVuOiBDaGVjayBpZiB0aGUgcGVybWlzc2lvbiBpcyBlbmFibGVkIGZvciB0aGUgZW52aXJvbm1lbnRcblx0Y29uc3Qgc25hcHNob3Q6IE5neEF1dGhlbnRpY2F0ZWRSb3V0ZSA9IHJvdXRlU25hcHNob3QgYXMgTmd4QXV0aGVudGljYXRlZFJvdXRlO1xuXG5cdC8vIFdvdXRlcjogVGhlIHBhdGggdG8gcmVkaXJlY3QgdG8gd2hlbiB0aGUgcmlnaHQgY29uZGl0aW9ucyBhcmUgbWV0LlxuXHRjb25zdCByZWRpcmVjdFRvOiBzdHJpbmdbXSA9IHNuYXBzaG90LmRhdGE/LnJlZGlyZWN0O1xuXHQvKipcblx0ICogV2hldGhlciB3ZSBzaG91bGQgbmF2aWdhdGUgYXdheSBpZiB0aGUgdXNlciBpcyBub3QgYXV0aGVudGljYXRlZFxuXHQgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG5cdCAqL1xuXHRjb25zdCBzaG91bGRCZUF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW4gPSBCb29sZWFuKHNuYXBzaG90LmRhdGE/LnNob3VsZEJlQXV0aGVudGljYXRlZCk7XG5cblx0Ly8gSWJlbjogSWYgdGhlcmUncyBhIHBlcm1pc3Npb24gcHJvdmlkZWQsIHdlIGNoZWNrIGlmIHdlIGhhdmUgdGhlIHBlcm1pc3Npb25cblx0cmV0dXJuIGF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG5cdFx0bWFwKChpc0F1dGhlbnRpY2F0ZWQpID0+IHtcblx0XHRcdC8vIFdvdXRlcjogQ29udGludWUgaWYgd2UgYXJlIGF1dGhlbnRpY2F0ZWQgYW5kIHdlIHNob3VsZCBiZSBhdXRoZW50aWNhdGVkIG9yIHZpY2UtdmVyc2Fcblx0XHRcdGlmIChcblx0XHRcdFx0KGlzQXV0aGVudGljYXRlZCAmJiBzaG91bGRCZUF1dGhlbnRpY2F0ZWQpIHx8XG5cdFx0XHRcdCghaXNBdXRoZW50aWNhdGVkICYmICFzaG91bGRCZUF1dGhlbnRpY2F0ZWQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEliZW46IFJlZGlyZWN0IGlmIHRoZSBwcmV2aW91cyBjaGVjayBoYXMgZmFpbGVkXG5cdFx0XHRyb3V0ZXIubmF2aWdhdGUoWy4uLnJlZGlyZWN0VG9dLCB7XG5cdFx0XHRcdHJlbGF0aXZlVG86IHJvdXRlLFxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KVxuXHQpO1xufTtcbiJdfQ==","import { ChangeDetectorRef, Pipe, inject } from '@angular/core';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport { convertToArray } from '../../utils';\nimport * as i0 from \"@angular/core\";\n/**\n * A pipe that returns whether a (list of) feature(s) has been provided\n */\nexport class NgxHasFeaturePipe {\n    authenticationService = inject(NgxAuthenticationServiceToken);\n    cdRef = inject(ChangeDetectorRef);\n    /**\n     * Subject to hold the destroyed state of the current observable\n     */\n    destroyed$;\n    /**\n     * The latest value of the Observable, whether or not the feature is provided\n     */\n    hasFeature;\n    /**\n     * Instance of the change detector ref, implemented like this according to the async pipe implementation\n     * https://github.com/angular/angular/blob/main/packages/common/src/pipes/async_pipe.ts\n     */\n    changeDetectorRef;\n    constructor() {\n        const cdRef = this.cdRef;\n        // Iben: Use instance of cdRef like this to prevent memory leaks (see Angular async Pipe implementation)\n        this.changeDetectorRef = cdRef;\n    }\n    ngOnDestroy() {\n        // Iben: Call the dispose when the component is destroyed so we have no running subscriptions left\n        this.dispose();\n        // Iben: Clear instance of cdRef like this to prevent memory leaks (see Angular async Pipe implementation)\n        this.changeDetectorRef = null;\n    }\n    /**\n     * Returns whether or not a feature is provided for the environment\n     *\n     * @param feature - The provided feature\n     */\n    transform(feature) {\n        this.subscribe(this.authenticationService.hasFeature(convertToArray(feature)));\n        return this.hasFeature;\n    }\n    /**\n     * Handles the changeDetection, latest value and dispose of the hasFeature observable\n     *\n     * @param observable - The hasFeature observable\n     */\n    subscribe(observable) {\n        // Iben: Dispose the current subscription\n        this.dispose();\n        // Iben: Create a new destroyed subject to handle the destruction when needed\n        this.destroyed$ = new Subject();\n        observable\n            .pipe(tap((value) => {\n            // Iben: Update the latest value when it a new value is provided\n            this.hasFeature = value;\n            // Iben: Mark the component as ready for check\n            this.changeDetectorRef.markForCheck();\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n    }\n    /**\n     * Dispose of the feature observable when existing\n     */\n    dispose() {\n        // Iben: In case there's a destroyed, we have an observable and we destroy the subscription and reset the observable\n        if (this.destroyed$) {\n            this.destroyed$.next();\n            this.destroyed$.complete();\n        }\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasFeaturePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n    static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasFeaturePipe, isStandalone: true, name: \"ngxHasFeature\", pure: false });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasFeaturePipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'ngxHasFeature',\n                    pure: false,\n                }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWZlYXR1cmUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL3BpcGVzL2hhcy1mZWF0dXJlL2hhcy1mZWF0dXJlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFhLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFN0M7O0dBRUc7QUFLSCxNQUFNLE9BQU8saUJBQWlCO0lBQ1oscUJBQXFCLEdBQUcsTUFBTSxDQUFtQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2hHLEtBQUssR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVuRDs7T0FFRztJQUNLLFVBQVUsQ0FBZ0I7SUFDbEM7O09BRUc7SUFDSyxVQUFVLENBQVU7SUFDNUI7OztPQUdHO0lBQ0ssaUJBQWlCLENBQTJCO0lBRXBEO1FBQ0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV6Qix3R0FBd0c7UUFDeEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVztRQUNqQixrR0FBa0c7UUFDbEcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsMEdBQTBHO1FBQzFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsT0FBb0M7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBYyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssU0FBUyxDQUFDLFVBQStCO1FBQ2hELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWhDLFVBQVU7YUFDUixJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDYixnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFFeEIsOENBQThDO1lBQzlDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMxQjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssT0FBTztRQUNkLG9IQUFvSDtRQUNwSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNGLENBQUM7dUdBL0VXLGlCQUFpQjtxR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxlQUFlO29CQUNyQixJQUFJLEVBQUUsS0FBSztpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgY29udmVydFRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogQSBwaXBlIHRoYXQgcmV0dXJucyB3aGV0aGVyIGEgKGxpc3Qgb2YpIGZlYXR1cmUocykgaGFzIGJlZW4gcHJvdmlkZWRcbiAqL1xuQFBpcGUoe1xuXHRuYW1lOiAnbmd4SGFzRmVhdHVyZScsXG5cdHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hIYXNGZWF0dXJlUGlwZTxGZWF0dXJlVHlwZSBleHRlbmRzIHN0cmluZz4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuXHRwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uU2VydmljZSA9IGluamVjdDxOZ3hBdXRoZW50aWNhdGlvbkFic3RyYWN0U2VydmljZT4oTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4pO1xuXHRwcml2YXRlIHJlYWRvbmx5IGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKipcblx0ICogU3ViamVjdCB0byBob2xkIHRoZSBkZXN0cm95ZWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgb2JzZXJ2YWJsZVxuXHQgKi9cblx0cHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+O1xuXHQvKipcblx0ICogVGhlIGxhdGVzdCB2YWx1ZSBvZiB0aGUgT2JzZXJ2YWJsZSwgd2hldGhlciBvciBub3QgdGhlIGZlYXR1cmUgaXMgcHJvdmlkZWRcblx0ICovXG5cdHByaXZhdGUgaGFzRmVhdHVyZTogYm9vbGVhbjtcblx0LyoqXG5cdCAqIEluc3RhbmNlIG9mIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgcmVmLCBpbXBsZW1lbnRlZCBsaWtlIHRoaXMgYWNjb3JkaW5nIHRvIHRoZSBhc3luYyBwaXBlIGltcGxlbWVudGF0aW9uXG5cdCAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYWluL3BhY2thZ2VzL2NvbW1vbi9zcmMvcGlwZXMvYXN5bmNfcGlwZS50c1xuXHQgKi9cblx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYgfCBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGNkUmVmID0gdGhpcy5jZFJlZjtcblxuXHRcdC8vIEliZW46IFVzZSBpbnN0YW5jZSBvZiBjZFJlZiBsaWtlIHRoaXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3MgKHNlZSBBbmd1bGFyIGFzeW5jIFBpcGUgaW1wbGVtZW50YXRpb24pXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZiA9IGNkUmVmO1xuXHR9XG5cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdC8vIEliZW46IENhbGwgdGhlIGRpc3Bvc2Ugd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBzbyB3ZSBoYXZlIG5vIHJ1bm5pbmcgc3Vic2NyaXB0aW9ucyBsZWZ0XG5cdFx0dGhpcy5kaXNwb3NlKCk7XG5cblx0XHQvLyBJYmVuOiBDbGVhciBpbnN0YW5jZSBvZiBjZFJlZiBsaWtlIHRoaXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3MgKHNlZSBBbmd1bGFyIGFzeW5jIFBpcGUgaW1wbGVtZW50YXRpb24pXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZiA9IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhIGZlYXR1cmUgaXMgcHJvdmlkZWQgZm9yIHRoZSBlbnZpcm9ubWVudFxuXHQgKlxuXHQgKiBAcGFyYW0gZmVhdHVyZSAtIFRoZSBwcm92aWRlZCBmZWF0dXJlXG5cdCAqL1xuXHRwdWJsaWMgdHJhbnNmb3JtKGZlYXR1cmU6IEZlYXR1cmVUeXBlIHwgRmVhdHVyZVR5cGVbXSk6IGJvb2xlYW4ge1xuXHRcdHRoaXMuc3Vic2NyaWJlKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc0ZlYXR1cmUoY29udmVydFRvQXJyYXk8RmVhdHVyZVR5cGU+KGZlYXR1cmUpKSk7XG5cblx0XHRyZXR1cm4gdGhpcy5oYXNGZWF0dXJlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNoYW5nZURldGVjdGlvbiwgbGF0ZXN0IHZhbHVlIGFuZCBkaXNwb3NlIG9mIHRoZSBoYXNGZWF0dXJlIG9ic2VydmFibGVcblx0ICpcblx0ICogQHBhcmFtIG9ic2VydmFibGUgLSBUaGUgaGFzRmVhdHVyZSBvYnNlcnZhYmxlXG5cdCAqL1xuXHRwcml2YXRlIHN1YnNjcmliZShvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdm9pZCB7XG5cdFx0Ly8gSWJlbjogRGlzcG9zZSB0aGUgY3VycmVudCBzdWJzY3JpcHRpb25cblx0XHR0aGlzLmRpc3Bvc2UoKTtcblxuXHRcdC8vIEliZW46IENyZWF0ZSBhIG5ldyBkZXN0cm95ZWQgc3ViamVjdCB0byBoYW5kbGUgdGhlIGRlc3RydWN0aW9uIHdoZW4gbmVlZGVkXG5cdFx0dGhpcy5kZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuXHRcdG9ic2VydmFibGVcblx0XHRcdC5waXBlKFxuXHRcdFx0XHR0YXAoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWJlbjogVXBkYXRlIHRoZSBsYXRlc3QgdmFsdWUgd2hlbiBpdCBhIG5ldyB2YWx1ZSBpcyBwcm92aWRlZFxuXHRcdFx0XHRcdHRoaXMuaGFzRmVhdHVyZSA9IHZhbHVlO1xuXG5cdFx0XHRcdFx0Ly8gSWJlbjogTWFyayB0aGUgY29tcG9uZW50IGFzIHJlYWR5IGZvciBjaGVja1xuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuXHRcdFx0KVxuXHRcdFx0LnN1YnNjcmliZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc3Bvc2Ugb2YgdGhlIGZlYXR1cmUgb2JzZXJ2YWJsZSB3aGVuIGV4aXN0aW5nXG5cdCAqL1xuXHRwcml2YXRlIGRpc3Bvc2UoKTogdm9pZCB7XG5cdFx0Ly8gSWJlbjogSW4gY2FzZSB0aGVyZSdzIGEgZGVzdHJveWVkLCB3ZSBoYXZlIGFuIG9ic2VydmFibGUgYW5kIHdlIGRlc3Ryb3kgdGhlIHN1YnNjcmlwdGlvbiBhbmQgcmVzZXQgdGhlIG9ic2VydmFibGVcblx0XHRpZiAodGhpcy5kZXN0cm95ZWQkKSB7XG5cdFx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdFx0dGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=","import { ChangeDetectorRef, Pipe, inject } from '@angular/core';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { NgxAuthenticationServiceToken } from '../../tokens';\nimport { convertToArray } from '../../utils';\nimport * as i0 from \"@angular/core\";\n/**\n * A pipe that returns whether a (list of) permission(s) has been provided\n */\nexport class NgxHasPermissionPipe {\n    authenticationService = inject(NgxAuthenticationServiceToken);\n    cdRef = inject(ChangeDetectorRef);\n    /**\n     * Subject to hold the destroyed state of the current observable\n     */\n    destroyed$;\n    /**\n     * The latest value of the Observable, whether or not the permission is provided\n     */\n    hasPermission;\n    /**\n     * Instance of the change detector ref, implemented like this according to the async pipe implementation\n     * https://github.com/angular/angular/blob/main/packages/common/src/pipes/async_pipe.ts\n     */\n    changeDetectorRef;\n    constructor() {\n        const cdRef = this.cdRef;\n        // Iben: Use instance of cdRef like this to prevent memory leaks (see Angular async Pipe implementation)\n        this.changeDetectorRef = cdRef;\n    }\n    ngOnDestroy() {\n        // Iben: Call the dispose when the component is destroyed so we have no running subscriptions left\n        this.dispose();\n        // Iben: Clear instance of cdRef like this to prevent memory leaks (see Angular async Pipe implementation)\n        this.changeDetectorRef = null;\n    }\n    /**\n     * Returns whether or not a permission is provided for the environment\n     *\n     * @param permission - The provided permission\n     */\n    transform(permission) {\n        this.subscribe(this.authenticationService.hasPermission(convertToArray(permission)));\n        return this.hasPermission;\n    }\n    /**\n     * Handles the changeDetection, latest value and dispose of the hasPermission observable\n     *\n     * @param observable - The hasPermission observable\n     */\n    subscribe(observable) {\n        // Iben: Dispose the current subscription\n        this.dispose();\n        // Iben: Create a new destroyed subject to handle the destruction when needed\n        this.destroyed$ = new Subject();\n        observable\n            .pipe(tap((value) => {\n            // Iben: Update the latest value when it a new value is provided\n            this.hasPermission = value;\n            // Iben: Mark the component as ready for check\n            this.changeDetectorRef.markForCheck();\n        }), takeUntil(this.destroyed$))\n            .subscribe();\n    }\n    /**\n     * Dispose of the permission observable when existing\n     */\n    dispose() {\n        // Iben: In case there's a destroyed, we have an observable and we destroy the subscription and reset the observable\n        if (this.destroyed$) {\n            this.destroyed$.next();\n            this.destroyed$.complete();\n        }\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasPermissionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n    static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasPermissionPipe, isStandalone: true, name: \"ngxHasPermission\", pure: false });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxHasPermissionPipe, decorators: [{\n            type: Pipe,\n            args: [{\n                    name: 'ngxHasPermission',\n                    pure: false,\n                }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXBlcm1pc3Npb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL3BpcGVzL2hhcy1wZXJtaXNzaW9uL2hhcy1wZXJtaXNzaW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFhLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFN0M7O0dBRUc7QUFLSCxNQUFNLE9BQU8sb0JBQW9CO0lBR2YscUJBQXFCLEdBQUcsTUFBTSxDQUFtQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2hHLEtBQUssR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVuRDs7T0FFRztJQUNLLFVBQVUsQ0FBZ0I7SUFDbEM7O09BRUc7SUFDSyxhQUFhLENBQVU7SUFDL0I7OztPQUdHO0lBQ0ssaUJBQWlCLENBQTJCO0lBRXBEO1FBQ0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV6Qix3R0FBd0c7UUFDeEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVztRQUNqQixrR0FBa0c7UUFDbEcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsMEdBQTBHO1FBQzFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsVUFBNkM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FDYixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBaUIsVUFBVSxDQUFDLENBQUMsQ0FDcEYsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFNBQVMsQ0FBQyxVQUErQjtRQUNoRCx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVoQyxVQUFVO2FBQ1IsSUFBSSxDQUNKLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2IsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBRTNCLDhDQUE4QztZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDMUI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU87UUFDZCxvSEFBb0g7UUFDcEgsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDRixDQUFDO3VHQW5GVyxvQkFBb0I7cUdBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFKaEMsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixJQUFJLEVBQUUsS0FBSztpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgY29udmVydFRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogQSBwaXBlIHRoYXQgcmV0dXJucyB3aGV0aGVyIGEgKGxpc3Qgb2YpIHBlcm1pc3Npb24ocykgaGFzIGJlZW4gcHJvdmlkZWRcbiAqL1xuQFBpcGUoe1xuXHRuYW1lOiAnbmd4SGFzUGVybWlzc2lvbicsXG5cdHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hIYXNQZXJtaXNzaW9uUGlwZTxQZXJtaXNzaW9uVHlwZSBleHRlbmRzIHN0cmluZz5cblx0aW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3lcbntcblx0cHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGlvblNlcnZpY2UgPSBpbmplY3Q8Tmd4QXV0aGVudGljYXRpb25BYnN0cmFjdFNlcnZpY2U+KE5neEF1dGhlbnRpY2F0aW9uU2VydmljZVRva2VuKTtcblx0cHJpdmF0ZSByZWFkb25seSBjZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0LyoqXG5cdCAqIFN1YmplY3QgdG8gaG9sZCB0aGUgZGVzdHJveWVkIHN0YXRlIG9mIHRoZSBjdXJyZW50IG9ic2VydmFibGVcblx0ICovXG5cdHByaXZhdGUgZGVzdHJveWVkJDogU3ViamVjdDx2b2lkPjtcblx0LyoqXG5cdCAqIFRoZSBsYXRlc3QgdmFsdWUgb2YgdGhlIE9ic2VydmFibGUsIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9uIGlzIHByb3ZpZGVkXG5cdCAqL1xuXHRwcml2YXRlIGhhc1Blcm1pc3Npb246IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBJbnN0YW5jZSBvZiB0aGUgY2hhbmdlIGRldGVjdG9yIHJlZiwgaW1wbGVtZW50ZWQgbGlrZSB0aGlzIGFjY29yZGluZyB0byB0aGUgYXN5bmMgcGlwZSBpbXBsZW1lbnRhdGlvblxuXHQgKiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFpbi9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL2FzeW5jX3BpcGUudHNcblx0ICovXG5cdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmIHwgbnVsbDtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBjZFJlZiA9IHRoaXMuY2RSZWY7XG5cblx0XHQvLyBJYmVuOiBVc2UgaW5zdGFuY2Ugb2YgY2RSZWYgbGlrZSB0aGlzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIChzZWUgQW5ndWxhciBhc3luYyBQaXBlIGltcGxlbWVudGF0aW9uKVxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgPSBjZFJlZjtcblx0fVxuXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHQvLyBJYmVuOiBDYWxsIHRoZSBkaXNwb3NlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQgc28gd2UgaGF2ZSBubyBydW5uaW5nIHN1YnNjcmlwdGlvbnMgbGVmdFxuXHRcdHRoaXMuZGlzcG9zZSgpO1xuXG5cdFx0Ly8gSWJlbjogQ2xlYXIgaW5zdGFuY2Ugb2YgY2RSZWYgbGlrZSB0aGlzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIChzZWUgQW5ndWxhciBhc3luYyBQaXBlIGltcGxlbWVudGF0aW9uKVxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgPSBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgd2hldGhlciBvciBub3QgYSBwZXJtaXNzaW9uIGlzIHByb3ZpZGVkIGZvciB0aGUgZW52aXJvbm1lbnRcblx0ICpcblx0ICogQHBhcmFtIHBlcm1pc3Npb24gLSBUaGUgcHJvdmlkZWQgcGVybWlzc2lvblxuXHQgKi9cblx0cHVibGljIHRyYW5zZm9ybShwZXJtaXNzaW9uOiBQZXJtaXNzaW9uVHlwZSB8IFBlcm1pc3Npb25UeXBlW10pOiBib29sZWFuIHtcblx0XHR0aGlzLnN1YnNjcmliZShcblx0XHRcdHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24oY29udmVydFRvQXJyYXk8UGVybWlzc2lvblR5cGU+KHBlcm1pc3Npb24pKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGNoYW5nZURldGVjdGlvbiwgbGF0ZXN0IHZhbHVlIGFuZCBkaXNwb3NlIG9mIHRoZSBoYXNQZXJtaXNzaW9uIG9ic2VydmFibGVcblx0ICpcblx0ICogQHBhcmFtIG9ic2VydmFibGUgLSBUaGUgaGFzUGVybWlzc2lvbiBvYnNlcnZhYmxlXG5cdCAqL1xuXHRwcml2YXRlIHN1YnNjcmliZShvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdm9pZCB7XG5cdFx0Ly8gSWJlbjogRGlzcG9zZSB0aGUgY3VycmVudCBzdWJzY3JpcHRpb25cblx0XHR0aGlzLmRpc3Bvc2UoKTtcblxuXHRcdC8vIEliZW46IENyZWF0ZSBhIG5ldyBkZXN0cm95ZWQgc3ViamVjdCB0byBoYW5kbGUgdGhlIGRlc3RydWN0aW9uIHdoZW4gbmVlZGVkXG5cdFx0dGhpcy5kZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuXHRcdG9ic2VydmFibGVcblx0XHRcdC5waXBlKFxuXHRcdFx0XHR0YXAoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0Ly8gSWJlbjogVXBkYXRlIHRoZSBsYXRlc3QgdmFsdWUgd2hlbiBpdCBhIG5ldyB2YWx1ZSBpcyBwcm92aWRlZFxuXHRcdFx0XHRcdHRoaXMuaGFzUGVybWlzc2lvbiA9IHZhbHVlO1xuXG5cdFx0XHRcdFx0Ly8gSWJlbjogTWFyayB0aGUgY29tcG9uZW50IGFzIHJlYWR5IGZvciBjaGVja1xuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuXHRcdFx0KVxuXHRcdFx0LnN1YnNjcmliZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc3Bvc2Ugb2YgdGhlIHBlcm1pc3Npb24gb2JzZXJ2YWJsZSB3aGVuIGV4aXN0aW5nXG5cdCAqL1xuXHRwcml2YXRlIGRpc3Bvc2UoKTogdm9pZCB7XG5cdFx0Ly8gSWJlbjogSW4gY2FzZSB0aGVyZSdzIGEgZGVzdHJveWVkLCB3ZSBoYXZlIGFuIG9ic2VydmFibGUgYW5kIHdlIGRlc3Ryb3kgdGhlIHN1YnNjcmlwdGlvbiBhbmQgcmVzZXQgdGhlIG9ic2VydmFibGVcblx0XHRpZiAodGhpcy5kZXN0cm95ZWQkKSB7XG5cdFx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdFx0dGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=","import { inject } from '@angular/core';\nimport { NgxAuthenticationInterceptorToken } from '../../tokens';\n/**\n * An interceptor that will handle any request that needs to be authenticated\n *\n * @param request - The provided request\n * @param next - The HttpHandler\n */\nexport function NgxAuthenticatedHttpInterceptor(request, next) {\n    // Iben: Get the authenticatedCallHandler\n    const authenticatedCallHandler = inject(NgxAuthenticationInterceptorToken);\n    // Iben: If the request does not need to be made in an authenticated state or if no authenticatedCallHandler was provided, we return the request as is\n    if (!request.withCredentials || !authenticatedCallHandler) {\n        return next(request);\n    }\n    // Iben: Handle the authenticated call\n    return next(authenticatedCallHandler(request));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYXV0aGVudGljYXRpb24vc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFakU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQzlDLE9BQTZCLEVBQzdCLElBQW1CO0lBRW5CLHlDQUF5QztJQUN6QyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBRTNFLHNKQUFzSjtJQUN0SixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm4sIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5neEF1dGhlbnRpY2F0aW9uSW50ZXJjZXB0b3JUb2tlbiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5cbi8qKlxuICogQW4gaW50ZXJjZXB0b3IgdGhhdCB3aWxsIGhhbmRsZSBhbnkgcmVxdWVzdCB0aGF0IG5lZWRzIHRvIGJlIGF1dGhlbnRpY2F0ZWRcbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFRoZSBwcm92aWRlZCByZXF1ZXN0XG4gKiBAcGFyYW0gbmV4dCAtIFRoZSBIdHRwSGFuZGxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gTmd4QXV0aGVudGljYXRlZEh0dHBJbnRlcmNlcHRvcihcblx0cmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG5cdG5leHQ6IEh0dHBIYW5kbGVyRm5cbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XG5cdC8vIEliZW46IEdldCB0aGUgYXV0aGVudGljYXRlZENhbGxIYW5kbGVyXG5cdGNvbnN0IGF1dGhlbnRpY2F0ZWRDYWxsSGFuZGxlciA9IGluamVjdChOZ3hBdXRoZW50aWNhdGlvbkludGVyY2VwdG9yVG9rZW4pO1xuXG5cdC8vIEliZW46IElmIHRoZSByZXF1ZXN0IGRvZXMgbm90IG5lZWQgdG8gYmUgbWFkZSBpbiBhbiBhdXRoZW50aWNhdGVkIHN0YXRlIG9yIGlmIG5vIGF1dGhlbnRpY2F0ZWRDYWxsSGFuZGxlciB3YXMgcHJvdmlkZWQsIHdlIHJldHVybiB0aGUgcmVxdWVzdCBhcyBpc1xuXHRpZiAoIXJlcXVlc3Qud2l0aENyZWRlbnRpYWxzIHx8ICFhdXRoZW50aWNhdGVkQ2FsbEhhbmRsZXIpIHtcblx0XHRyZXR1cm4gbmV4dChyZXF1ZXN0KTtcblx0fVxuXG5cdC8vIEliZW46IEhhbmRsZSB0aGUgYXV0aGVudGljYXRlZCBjYWxsXG5cdHJldHVybiBuZXh0KGF1dGhlbnRpY2F0ZWRDYWxsSGFuZGxlcihyZXF1ZXN0KSk7XG59XG4iXX0=","import { provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { NgxAuthenticatedHttpInterceptor } from '../interceptors';\nimport { NgxAuthenticationInterceptorToken, NgxAuthenticationServiceToken, NgxAuthenticationUrlHandlerToken, } from '../tokens';\n/**\n * Configures the provided implementation of the NgxAuthenticationAbstract service to the application\n *\n * @param configuration - The configuration with the provided service implementation\n */\nexport const provideNgxAuthenticationConfiguration = (configuration) => {\n    return [\n        {\n            provide: NgxAuthenticationServiceToken,\n            useExisting: configuration.service,\n        },\n        // Iben: If the HttpClientConfiguration is provided, we assume the user wants to use the NgxAuthenticatedHttpClient\n        ...(!configuration.httpClientConfiguration\n            ? []\n            : [\n                {\n                    provide: NgxAuthenticationUrlHandlerToken,\n                    useValue: configuration.httpClientConfiguration.baseUrl,\n                },\n                {\n                    provide: NgxAuthenticationInterceptorToken,\n                    useValue: configuration.httpClientConfiguration.authenticatedCallHandler,\n                },\n                provideHttpClient(withInterceptors([\n                    NgxAuthenticatedHttpInterceptor,\n                    ...(configuration.httpClientConfiguration.interceptors || []),\n                ])),\n            ]),\n    ];\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tY29uZmlndXJhdGlvbi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL3Byb3ZpZGVycy9hdXRoZW50aWNhdGlvbi1jb25maWd1cmF0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDTixpQ0FBaUMsRUFDakMsNkJBQTZCLEVBQzdCLGdDQUFnQyxHQUNoQyxNQUFNLFdBQVcsQ0FBQztBQUVuQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FDcEQsYUFBNkMsRUFDVCxFQUFFO0lBQ3RDLE9BQU87UUFDTjtZQUNDLE9BQU8sRUFBRSw2QkFBNkI7WUFDdEMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxPQUFPO1NBQ2xDO1FBQ0QsbUhBQW1IO1FBQ25ILEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUI7WUFDekMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUM7Z0JBQ0E7b0JBQ0MsT0FBTyxFQUFFLGdDQUFnQztvQkFDekMsUUFBUSxFQUFFLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPO2lCQUN2RDtnQkFDRDtvQkFDQyxPQUFPLEVBQUUsaUNBQWlDO29CQUMxQyxRQUFRLEVBQUUsYUFBYSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QjtpQkFDeEU7Z0JBQ0QsaUJBQWlCLENBQ2hCLGdCQUFnQixDQUFDO29CQUNoQiwrQkFBK0I7b0JBQy9CLEdBQUcsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztpQkFDN0QsQ0FBQyxDQUNGO2FBQ0QsQ0FBQztLQUNKLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGVkSHR0cEludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0b3JzJztcbmltcG9ydCB7XG5cdE5neEF1dGhlbnRpY2F0aW9uSW50ZXJjZXB0b3JUb2tlbixcblx0Tmd4QXV0aGVudGljYXRpb25TZXJ2aWNlVG9rZW4sXG5cdE5neEF1dGhlbnRpY2F0aW9uVXJsSGFuZGxlclRva2VuLFxufSBmcm9tICcuLi90b2tlbnMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBwcm92aWRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTmd4QXV0aGVudGljYXRpb25BYnN0cmFjdCBzZXJ2aWNlIHRvIHRoZSBhcHBsaWNhdGlvblxuICpcbiAqIEBwYXJhbSBjb25maWd1cmF0aW9uIC0gVGhlIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgcHJvdmlkZWQgc2VydmljZSBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgY29uc3QgcHJvdmlkZU5neEF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IChcblx0Y29uZmlndXJhdGlvbjogTmd4QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uXG4pOiBQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzW10gPT4ge1xuXHRyZXR1cm4gW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5neEF1dGhlbnRpY2F0aW9uU2VydmljZVRva2VuLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IGNvbmZpZ3VyYXRpb24uc2VydmljZSxcblx0XHR9LFxuXHRcdC8vIEliZW46IElmIHRoZSBIdHRwQ2xpZW50Q29uZmlndXJhdGlvbiBpcyBwcm92aWRlZCwgd2UgYXNzdW1lIHRoZSB1c2VyIHdhbnRzIHRvIHVzZSB0aGUgTmd4QXV0aGVudGljYXRlZEh0dHBDbGllbnRcblx0XHQuLi4oIWNvbmZpZ3VyYXRpb24uaHR0cENsaWVudENvbmZpZ3VyYXRpb25cblx0XHRcdD8gW11cblx0XHRcdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHByb3ZpZGU6IE5neEF1dGhlbnRpY2F0aW9uVXJsSGFuZGxlclRva2VuLFxuXHRcdFx0XHRcdFx0dXNlVmFsdWU6IGNvbmZpZ3VyYXRpb24uaHR0cENsaWVudENvbmZpZ3VyYXRpb24uYmFzZVVybCxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHByb3ZpZGU6IE5neEF1dGhlbnRpY2F0aW9uSW50ZXJjZXB0b3JUb2tlbixcblx0XHRcdFx0XHRcdHVzZVZhbHVlOiBjb25maWd1cmF0aW9uLmh0dHBDbGllbnRDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0ZWRDYWxsSGFuZGxlcixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHByb3ZpZGVIdHRwQ2xpZW50KFxuXHRcdFx0XHRcdFx0d2l0aEludGVyY2VwdG9ycyhbXG5cdFx0XHRcdFx0XHRcdE5neEF1dGhlbnRpY2F0ZWRIdHRwSW50ZXJjZXB0b3IsXG5cdFx0XHRcdFx0XHRcdC4uLihjb25maWd1cmF0aW9uLmh0dHBDbGllbnRDb25maWd1cmF0aW9uLmludGVyY2VwdG9ycyB8fCBbXSksXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdF0pLFxuXHRdO1xufTtcbiJdfQ==","import { map } from 'rxjs';\n/**\n * Returns a mock version of the authentication service\n *\n * @param  configuration - The configuration of the mock\n */\nexport const NgxAuthenticationServiceMock = (configuration) => {\n    return {\n        hasFeature: configuration.hasFeatureSpy,\n        hasPermission: configuration.hasPermissionSpy,\n        signIn: configuration.signInSpy,\n        signOut: configuration.signOutSpy,\n        isAuthenticated$: configuration.hasAuthenticated\n            .asObservable()\n            .pipe(map((status) => status === 'signed-in')),\n        hasAuthenticated$: configuration.hasAuthenticated\n            .asObservable()\n            .pipe(map((status) => status !== 'unset')),\n        user$: configuration.authenticationResponse\n            .asObservable()\n            .pipe(map((response) => response?.user)),\n        session$: configuration.authenticationResponse\n            .asObservable()\n            .pipe(map((response) => response?.session)),\n        metadata$: configuration.authenticationResponse\n            .asObservable()\n            .pipe(map((response) => response?.metadata)),\n    };\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9saWIvbW9ja3MvYXV0aGVudGljYXRpb24uc2VydmljZS5tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFHcEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBRTFDLGFBT0QsRUFBTyxFQUFFO0lBQ1QsT0FBTztRQUNOLFVBQVUsRUFBRSxhQUFhLENBQUMsYUFBYTtRQUN2QyxhQUFhLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtRQUM3QyxNQUFNLEVBQUUsYUFBYSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxFQUFFLGFBQWEsQ0FBQyxVQUFVO1FBQ2pDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxnQkFBZ0I7YUFDOUMsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxnQkFBZ0I7YUFDL0MsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLEtBQUssRUFBRSxhQUFhLENBQUMsc0JBQXNCO2FBQ3pDLFlBQVksRUFBRTthQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxRQUFRLEVBQUUsYUFBYSxDQUFDLHNCQUFzQjthQUM1QyxZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxzQkFBc0I7YUFDN0MsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzdDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlc3BvbnNlIH0gZnJvbSAnQGliZW52YW5kZXZlaXJlL3R5cGVzLWF1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IG1hcCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3hBdXRoZW50aWNhdGlvblN0YXR1cyB9IGZyb20gJy4uL3R5cGVzJztcbi8qKlxuICogUmV0dXJucyBhIG1vY2sgdmVyc2lvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZVxuICpcbiAqIEBwYXJhbSAgY29uZmlndXJhdGlvbiAtIFRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBtb2NrXG4gKi9cbmV4cG9ydCBjb25zdCBOZ3hBdXRoZW50aWNhdGlvblNlcnZpY2VNb2NrID0gPFxuXHRBdXRoZW50aWNhdGlvblJlc3BvbnNlVHlwZSBleHRlbmRzIEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U8YW55PiA9IEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U8YW55Pixcbj4oY29uZmlndXJhdGlvbjoge1xuXHRoYXNGZWF0dXJlU3B5OiB1bmtub3duO1xuXHRoYXNQZXJtaXNzaW9uU3B5OiB1bmtub3duO1xuXHRzaWduSW5TcHk6IHVua25vd247XG5cdHNpZ25PdXRTcHk6IHVua25vd247XG5cdGF1dGhlbnRpY2F0aW9uUmVzcG9uc2U6IFN1YmplY3Q8QXV0aGVudGljYXRpb25SZXNwb25zZVR5cGU+O1xuXHRoYXNBdXRoZW50aWNhdGVkOiBTdWJqZWN0PE5neEF1dGhlbnRpY2F0aW9uU3RhdHVzPjtcbn0pOiBhbnkgPT4ge1xuXHRyZXR1cm4ge1xuXHRcdGhhc0ZlYXR1cmU6IGNvbmZpZ3VyYXRpb24uaGFzRmVhdHVyZVNweSxcblx0XHRoYXNQZXJtaXNzaW9uOiBjb25maWd1cmF0aW9uLmhhc1Blcm1pc3Npb25TcHksXG5cdFx0c2lnbkluOiBjb25maWd1cmF0aW9uLnNpZ25JblNweSxcblx0XHRzaWduT3V0OiBjb25maWd1cmF0aW9uLnNpZ25PdXRTcHksXG5cdFx0aXNBdXRoZW50aWNhdGVkJDogY29uZmlndXJhdGlvbi5oYXNBdXRoZW50aWNhdGVkXG5cdFx0XHQuYXNPYnNlcnZhYmxlKClcblx0XHRcdC5waXBlKG1hcCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdzaWduZWQtaW4nKSksXG5cdFx0aGFzQXV0aGVudGljYXRlZCQ6IGNvbmZpZ3VyYXRpb24uaGFzQXV0aGVudGljYXRlZFxuXHRcdFx0LmFzT2JzZXJ2YWJsZSgpXG5cdFx0XHQucGlwZShtYXAoKHN0YXR1cykgPT4gc3RhdHVzICE9PSAndW5zZXQnKSksXG5cdFx0dXNlciQ6IGNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRpb25SZXNwb25zZVxuXHRcdFx0LmFzT2JzZXJ2YWJsZSgpXG5cdFx0XHQucGlwZShtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZT8udXNlcikpLFxuXHRcdHNlc3Npb24kOiBjb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0aW9uUmVzcG9uc2Vcblx0XHRcdC5hc09ic2VydmFibGUoKVxuXHRcdFx0LnBpcGUobWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2U/LnNlc3Npb24pKSxcblx0XHRtZXRhZGF0YSQ6IGNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRpb25SZXNwb25zZVxuXHRcdFx0LmFzT2JzZXJ2YWJsZSgpXG5cdFx0XHQucGlwZShtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZT8ubWV0YWRhdGEpKSxcblx0fTtcbn07XG4iXX0=","/**\n * Returns a mock authentication response\n */\nexport const NgxAuthenticationResponseMock = {\n    user: {\n        name: 'Test',\n    },\n    session: {\n        features: ['A'],\n        permissions: ['User'],\n    },\n    metadata: {\n        requestPassword: true,\n    },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ucmVzcG9uc2UubW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9hdXRoZW50aWNhdGlvbi9zcmMvbGliL21vY2tzL2F1dGhlbnRpY2F0aW9uLnJlc3BvbnNlLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FJdEM7SUFDSCxJQUFJLEVBQUU7UUFDTCxJQUFJLEVBQUUsTUFBTTtLQUNaO0lBQ0QsT0FBTyxFQUFFO1FBQ1IsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2YsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO0tBQ3JCO0lBQ0QsUUFBUSxFQUFFO1FBQ1QsZUFBZSxFQUFFLElBQUk7S0FDckI7Q0FDRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aGVudGljYXRlZFVzZXJTZXNzaW9uLCBBdXRoZW50aWNhdGlvblJlc3BvbnNlIH0gZnJvbSAnQGliZW52YW5kZXZlaXJlL3R5cGVzLWF1dGhlbnRpY2F0aW9uJztcbi8qKlxuICogUmV0dXJucyBhIG1vY2sgYXV0aGVudGljYXRpb24gcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNvbnN0IE5neEF1dGhlbnRpY2F0aW9uUmVzcG9uc2VNb2NrOiBBdXRoZW50aWNhdGlvblJlc3BvbnNlPFxuXHR7IG5hbWU6IHN0cmluZyB9LFxuXHRBdXRoZW50aWNhdGVkVXNlclNlc3Npb248J0EnIHwgJ0InLCAnQWRtaW4nIHwgJ1VzZXInPixcblx0eyByZXF1ZXN0UGFzc3dvcmQ6IGJvb2xlYW4gfVxuPiA9IHtcblx0dXNlcjoge1xuXHRcdG5hbWU6ICdUZXN0Jyxcblx0fSxcblx0c2Vzc2lvbjoge1xuXHRcdGZlYXR1cmVzOiBbJ0EnXSxcblx0XHRwZXJtaXNzaW9uczogWydVc2VyJ10sXG5cdH0sXG5cdG1ldGFkYXRhOiB7XG5cdFx0cmVxdWVzdFBhc3N3b3JkOiB0cnVlLFxuXHR9LFxufTtcbiJdfQ==","import { of } from 'rxjs';\nexport /**\n * Returns a mock for the NgxAuthenticatedHttpClient. By default each methods returns an empty observable\n *\n * @param  configuration - Configuration to replace one of the methods with a custom method\n */ const NgxMockAuthenticatedHttpClient = (configuration) => {\n    const defaultFunction = () => of();\n    return {\n        get: configuration.get || defaultFunction,\n        download: configuration.download || defaultFunction,\n        delete: configuration.delete || defaultFunction,\n        patch: configuration.patch || defaultFunction,\n        post: configuration.post || defaultFunction,\n        put: configuration.put || defaultFunction,\n    };\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlZC1odHRwLWNsaWVudC5tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9saWIvbW9ja3MvYXV0aGVudGljYXRlZC1odHRwLWNsaWVudC5tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxDQUFDOzs7O0dBSUosQ0FDSCxNQUFNLDhCQUE4QixHQUFHLENBQUMsYUFPdkMsRUFBRSxFQUFFO0lBQ0osTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkMsT0FBTztRQUNOLEdBQUcsRUFBRSxhQUFhLENBQUMsR0FBRyxJQUFJLGVBQWU7UUFDekMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLElBQUksZUFBZTtRQUNuRCxNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU0sSUFBSSxlQUFlO1FBQy9DLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxJQUFJLGVBQWU7UUFDN0MsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksZUFBZTtRQUMzQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEdBQUcsSUFBSSxlQUFlO0tBQ3pDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgLyoqXG4gKiBSZXR1cm5zIGEgbW9jayBmb3IgdGhlIE5neEF1dGhlbnRpY2F0ZWRIdHRwQ2xpZW50LiBCeSBkZWZhdWx0IGVhY2ggbWV0aG9kcyByZXR1cm5zIGFuIGVtcHR5IG9ic2VydmFibGVcbiAqXG4gKiBAcGFyYW0gIGNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIHRvIHJlcGxhY2Ugb25lIG9mIHRoZSBtZXRob2RzIHdpdGggYSBjdXN0b20gbWV0aG9kXG4gKi9cbmNvbnN0IE5neE1vY2tBdXRoZW50aWNhdGVkSHR0cENsaWVudCA9IChjb25maWd1cmF0aW9uOiB7XG5cdGRvd25sb2FkPzogdW5rbm93bjtcblx0Z2V0PzogdW5rbm93bjtcblx0cGF0Y2g/OiB1bmtub3duO1xuXHRwdXQ/OiB1bmtub3duO1xuXHRkZWxldGU/OiB1bmtub3duO1xuXHRwb3N0PzogdW5rbm93bjtcbn0pID0+IHtcblx0Y29uc3QgZGVmYXVsdEZ1bmN0aW9uID0gKCkgPT4gb2YoKTtcblx0cmV0dXJuIHtcblx0XHRnZXQ6IGNvbmZpZ3VyYXRpb24uZ2V0IHx8IGRlZmF1bHRGdW5jdGlvbixcblx0XHRkb3dubG9hZDogY29uZmlndXJhdGlvbi5kb3dubG9hZCB8fCBkZWZhdWx0RnVuY3Rpb24sXG5cdFx0ZGVsZXRlOiBjb25maWd1cmF0aW9uLmRlbGV0ZSB8fCBkZWZhdWx0RnVuY3Rpb24sXG5cdFx0cGF0Y2g6IGNvbmZpZ3VyYXRpb24ucGF0Y2ggfHwgZGVmYXVsdEZ1bmN0aW9uLFxuXHRcdHBvc3Q6IGNvbmZpZ3VyYXRpb24ucG9zdCB8fCBkZWZhdWx0RnVuY3Rpb24sXG5cdFx0cHV0OiBjb25maWd1cmF0aW9uLnB1dCB8fCBkZWZhdWx0RnVuY3Rpb24sXG5cdH07XG59O1xuIl19","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport clean from 'obj-clean';\nimport { map } from 'rxjs';\nimport { NgxAuthenticationUrlHandlerToken } from '../../tokens';\nimport * as i0 from \"@angular/core\";\n/**\n * An opinionated wrapper of the HttpClient providing easy ways to make authenticated and unauthenticated calls\n */\nexport class NgxAuthenticatedHttpClient {\n    httpClient = inject(HttpClient);\n    baseUrl;\n    constructor() {\n        const baseUrlHandler = inject(NgxAuthenticationUrlHandlerToken);\n        // Iben: Setup the base url\n        this.baseUrl = baseUrlHandler ? baseUrlHandler() : '';\n    }\n    /**\n     * Adds a base-url to every request\n     * @param {string} url - The url of the request\n     */\n    handleUrl(url) {\n        return `${this.baseUrl}/${url}`;\n    }\n    /**\n     * Constructs a GET request to the provided API\n     *\n     * @param  url - The url of the API\n     * @param params - An optional set of params we wish to send to the API\n     * @param withCredentials - Whether the call is made by an authenticated user, by default true\n     * @param context - An optional HTTPContext\n     */\n    get(url, params, withCredentials = true, context) {\n        return this.httpClient.get(this.handleUrl(url), clean({ withCredentials, params, context }));\n    }\n    /**\n     * Constructs a GET request tailored to downloading to the provided API\n     *\n     * @param  url - The url of the API\n     * @param params - An optional set of params we wish to send to the API\n     * @param withCredentials - Whether the call is made by an authenticated user, by default true\n     * @param context - An optional HTTPContext\n     */\n    download(url, params, withCredentials = true, context) {\n        return this.httpClient\n            .get(this.handleUrl(url), clean({\n            withCredentials,\n            params,\n            responseType: 'blob',\n            observe: 'response',\n            context,\n        }))\n            .pipe(map((response) => {\n            return {\n                fileType: response.headers.get('content-disposition').split('.')[1],\n                blob: response.body,\n            };\n        }));\n    }\n    /**\n     * Constructs a DELETE request to the provided API\n     *\n     * @param  url - The url of the API\n     * @param params - An optional set of params we wish to send to the API\n     * @param withCredentials - Whether the call is made by an authenticated user, by default true\n     * @param context - An optional HTTPContext\n     */\n    delete(url, params, withCredentials = true, context) {\n        return this.httpClient.delete(this.handleUrl(url), clean({ params, withCredentials, context }));\n    }\n    /**\n     * Constructs a POST request to the provided API\n     *\n     * @param  url - The url of the API\n     * @param body - The body we wish to send\n     * @param params - An optional set of params we wish to send to the API\n     * @param withCredentials - Whether the call is made by an authenticated user, by default true\n     * @param context - An optional HTTPContext\n     */\n    post(url, body, params, withCredentials = true, context) {\n        return this.httpClient.post(this.handleUrl(url), body, clean({ params, withCredentials, context }));\n    }\n    /**\n     * Constructs a PUT request to the provided API\n     *\n     * @param  url - The url of the API\n     * @param body - The body we wish to send\n     * @param params - An optional set of params we wish to send to the API\n     * @param withCredentials - Whether the call is made by an authenticated user, by default true\n     * @param context - An optional HTTPContext\n     */\n    put(url, body, params, withCredentials = true, context) {\n        return this.httpClient.put(this.handleUrl(url), body, clean({ params, withCredentials, context }));\n    }\n    /**\n     * Constructs a PATCH request to the provided API\n     *\n     * @param  url - The url of the API\n     * @param body - The body we wish to send\n     * @param params - An optional set of params we wish to send to the API\n     * @param withCredentials - Whether the call is made by an authenticated user, by default true\n     * @param context - An optional HTTPContext\n     */\n    patch(url, body, params, withCredentials = true, context) {\n        return this.httpClient.patch(this.handleUrl(url), body, clean({ params, withCredentials, context }));\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxAuthenticatedHttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n    static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxAuthenticatedHttpClient, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: NgxAuthenticatedHttpClient, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlZC1odHRwLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9saWIvc2VydmljZXMvYXV0aGVudGljYXRlZC1odHRwLWNsaWVudC9hdXRoZW50aWNhdGVkLWh0dHAtY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEtBQUssTUFBTSxXQUFXLENBQUM7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBR2hFOztHQUVHO0FBRUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sQ0FBUztJQUV4QjtRQUNDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRWhFLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssU0FBUyxDQUFDLEdBQVc7UUFDNUIsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxHQUFHLENBQ1QsR0FBVyxFQUNYLE1BQW1ELEVBQ25ELGtCQUEyQixJQUFJLEVBQy9CLE9BQXFCO1FBRXJCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ25CLEtBQUssQ0FBQyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQXFDLENBQy9FLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFFBQVEsQ0FDZCxHQUFXLEVBQ1gsTUFBbUQsRUFDbkQsa0JBQTJCLElBQUksRUFDL0IsT0FBcUI7UUFLckIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNwQixHQUFHLENBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFDbkIsS0FBSyxDQUFDO1lBQ0wsZUFBZTtZQUNmLE1BQU07WUFDTixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsVUFBVTtZQUNuQixPQUFPO1NBQ1AsQ0FBcUMsQ0FDdEM7YUFDQSxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsUUFBNEIsRUFBRSxFQUFFO1lBQ3BDLE9BQU87Z0JBQ04sUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFZO2FBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQ1osR0FBVyxFQUNYLE1BQXNELEVBQ3RELGtCQUEyQixJQUFJLEVBQy9CLE9BQXFCO1FBRXJCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ25CLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQXdDLENBQ2xGLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxJQUFJLENBQ1YsR0FBVyxFQUNYLElBQVMsRUFDVCxNQUFvRCxFQUNwRCxrQkFBMkIsSUFBSSxFQUMvQixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUNuQixJQUFJLEVBQ0osS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBc0MsQ0FDaEYsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEdBQUcsQ0FDVCxHQUFXLEVBQ1gsSUFBVSxFQUNWLE1BQW1ELEVBQ25ELGtCQUEyQixJQUFJLEVBQy9CLE9BQXFCO1FBRXJCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ25CLElBQUksRUFDSixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFxQyxDQUMvRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUNYLEdBQVcsRUFDWCxJQUFTLEVBQ1QsTUFBcUQsRUFDckQsa0JBQTJCLElBQUksRUFDL0IsT0FBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFDbkIsSUFBSSxFQUNKLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQXVDLENBQ2pGLENBQUM7SUFDSCxDQUFDO3VHQXJLVywwQkFBMEI7MkdBQTFCLDBCQUEwQixjQURiLE1BQU07OzJGQUNuQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENvbnRleHQsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGNsZWFuIGZyb20gJ29iai1jbGVhbic7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRpb25VcmxIYW5kbGVyVG9rZW4gfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgTmd4QXV0aGVudGljYXRlZEh0dHBDbGllbnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIEFuIG9waW5pb25hdGVkIHdyYXBwZXIgb2YgdGhlIEh0dHBDbGllbnQgcHJvdmlkaW5nIGVhc3kgd2F5cyB0byBtYWtlIGF1dGhlbnRpY2F0ZWQgYW5kIHVuYXV0aGVudGljYXRlZCBjYWxsc1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5neEF1dGhlbnRpY2F0ZWRIdHRwQ2xpZW50IHtcblx0cHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG5cdHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGJhc2VVcmxIYW5kbGVyID0gaW5qZWN0KE5neEF1dGhlbnRpY2F0aW9uVXJsSGFuZGxlclRva2VuKTtcblxuXHRcdC8vIEliZW46IFNldHVwIHRoZSBiYXNlIHVybFxuXHRcdHRoaXMuYmFzZVVybCA9IGJhc2VVcmxIYW5kbGVyID8gYmFzZVVybEhhbmRsZXIoKSA6ICcnO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBiYXNlLXVybCB0byBldmVyeSByZXF1ZXN0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgdXJsIG9mIHRoZSByZXF1ZXN0XG5cdCAqL1xuXHRwcml2YXRlIGhhbmRsZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGAke3RoaXMuYmFzZVVybH0vJHt1cmx9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgR0VUIHJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIEFQSVxuXHQgKlxuXHQgKiBAcGFyYW0gIHVybCAtIFRoZSB1cmwgb2YgdGhlIEFQSVxuXHQgKiBAcGFyYW0gcGFyYW1zIC0gQW4gb3B0aW9uYWwgc2V0IG9mIHBhcmFtcyB3ZSB3aXNoIHRvIHNlbmQgdG8gdGhlIEFQSVxuXHQgKiBAcGFyYW0gd2l0aENyZWRlbnRpYWxzIC0gV2hldGhlciB0aGUgY2FsbCBpcyBtYWRlIGJ5IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgYnkgZGVmYXVsdCB0cnVlXG5cdCAqIEBwYXJhbSBjb250ZXh0IC0gQW4gb3B0aW9uYWwgSFRUUENvbnRleHRcblx0ICovXG5cdHB1YmxpYyBnZXQ8RGF0YVR5cGUgPSB1bmtub3duPihcblx0XHR1cmw6IHN0cmluZyxcblx0XHRwYXJhbXM/OiBQYXJhbWV0ZXJzPEh0dHBDbGllbnRbJ2dldCddPlsxXVsncGFyYW1zJ10sXG5cdFx0d2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gdHJ1ZSxcblx0XHRjb250ZXh0PzogSHR0cENvbnRleHRcblx0KTogT2JzZXJ2YWJsZTxEYXRhVHlwZT4ge1xuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PERhdGFUeXBlPihcblx0XHRcdHRoaXMuaGFuZGxlVXJsKHVybCksXG5cdFx0XHRjbGVhbih7IHdpdGhDcmVkZW50aWFscywgcGFyYW1zLCBjb250ZXh0IH0pIGFzIFBhcmFtZXRlcnM8SHR0cENsaWVudFsnZ2V0J10+WzFdXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgR0VUIHJlcXVlc3QgdGFpbG9yZWQgdG8gZG93bmxvYWRpbmcgdG8gdGhlIHByb3ZpZGVkIEFQSVxuXHQgKlxuXHQgKiBAcGFyYW0gIHVybCAtIFRoZSB1cmwgb2YgdGhlIEFQSVxuXHQgKiBAcGFyYW0gcGFyYW1zIC0gQW4gb3B0aW9uYWwgc2V0IG9mIHBhcmFtcyB3ZSB3aXNoIHRvIHNlbmQgdG8gdGhlIEFQSVxuXHQgKiBAcGFyYW0gd2l0aENyZWRlbnRpYWxzIC0gV2hldGhlciB0aGUgY2FsbCBpcyBtYWRlIGJ5IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgYnkgZGVmYXVsdCB0cnVlXG5cdCAqIEBwYXJhbSBjb250ZXh0IC0gQW4gb3B0aW9uYWwgSFRUUENvbnRleHRcblx0ICovXG5cdHB1YmxpYyBkb3dubG9hZChcblx0XHR1cmw6IHN0cmluZyxcblx0XHRwYXJhbXM/OiBQYXJhbWV0ZXJzPEh0dHBDbGllbnRbJ2dldCddPlsxXVsncGFyYW1zJ10sXG5cdFx0d2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gdHJ1ZSxcblx0XHRjb250ZXh0PzogSHR0cENvbnRleHRcblx0KTogT2JzZXJ2YWJsZTx7XG5cdFx0ZmlsZVR5cGU6IHN0cmluZztcblx0XHRibG9iOiBCbG9iO1xuXHR9PiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudFxuXHRcdFx0LmdldChcblx0XHRcdFx0dGhpcy5oYW5kbGVVcmwodXJsKSxcblx0XHRcdFx0Y2xlYW4oe1xuXHRcdFx0XHRcdHdpdGhDcmVkZW50aWFscyxcblx0XHRcdFx0XHRwYXJhbXMsXG5cdFx0XHRcdFx0cmVzcG9uc2VUeXBlOiAnYmxvYicsXG5cdFx0XHRcdFx0b2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcblx0XHRcdFx0XHRjb250ZXh0LFxuXHRcdFx0XHR9KSBhcyBQYXJhbWV0ZXJzPEh0dHBDbGllbnRbJ2dldCddPlsxXVxuXHRcdFx0KVxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IEh0dHBSZXNwb25zZTxCbG9iPikgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRmaWxlVHlwZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKS5zcGxpdCgnLicpWzFdLFxuXHRcdFx0XHRcdFx0YmxvYjogcmVzcG9uc2UuYm9keSBhcyBCbG9iLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBERUxFVEUgcmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgQVBJXG5cdCAqXG5cdCAqIEBwYXJhbSAgdXJsIC0gVGhlIHVybCBvZiB0aGUgQVBJXG5cdCAqIEBwYXJhbSBwYXJhbXMgLSBBbiBvcHRpb25hbCBzZXQgb2YgcGFyYW1zIHdlIHdpc2ggdG8gc2VuZCB0byB0aGUgQVBJXG5cdCAqIEBwYXJhbSB3aXRoQ3JlZGVudGlhbHMgLSBXaGV0aGVyIHRoZSBjYWxsIGlzIG1hZGUgYnkgYW4gYXV0aGVudGljYXRlZCB1c2VyLCBieSBkZWZhdWx0IHRydWVcblx0ICogQHBhcmFtIGNvbnRleHQgLSBBbiBvcHRpb25hbCBIVFRQQ29udGV4dFxuXHQgKi9cblx0cHVibGljIGRlbGV0ZTxEYXRhVHlwZSA9IHZvaWQ+KFxuXHRcdHVybDogc3RyaW5nLFxuXHRcdHBhcmFtcz86IFBhcmFtZXRlcnM8SHR0cENsaWVudFsnZGVsZXRlJ10+WzFdWydwYXJhbXMnXSxcblx0XHR3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSB0cnVlLFxuXHRcdGNvbnRleHQ/OiBIdHRwQ29udGV4dFxuXHQpOiBPYnNlcnZhYmxlPERhdGFUeXBlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGU8RGF0YVR5cGU+KFxuXHRcdFx0dGhpcy5oYW5kbGVVcmwodXJsKSxcblx0XHRcdGNsZWFuKHsgcGFyYW1zLCB3aXRoQ3JlZGVudGlhbHMsIGNvbnRleHQgfSkgYXMgUGFyYW1ldGVyczxIdHRwQ2xpZW50WydkZWxldGUnXT5bMV1cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBQT1NUIHJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIEFQSVxuXHQgKlxuXHQgKiBAcGFyYW0gIHVybCAtIFRoZSB1cmwgb2YgdGhlIEFQSVxuXHQgKiBAcGFyYW0gYm9keSAtIFRoZSBib2R5IHdlIHdpc2ggdG8gc2VuZFxuXHQgKiBAcGFyYW0gcGFyYW1zIC0gQW4gb3B0aW9uYWwgc2V0IG9mIHBhcmFtcyB3ZSB3aXNoIHRvIHNlbmQgdG8gdGhlIEFQSVxuXHQgKiBAcGFyYW0gd2l0aENyZWRlbnRpYWxzIC0gV2hldGhlciB0aGUgY2FsbCBpcyBtYWRlIGJ5IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgYnkgZGVmYXVsdCB0cnVlXG5cdCAqIEBwYXJhbSBjb250ZXh0IC0gQW4gb3B0aW9uYWwgSFRUUENvbnRleHRcblx0ICovXG5cdHB1YmxpYyBwb3N0PERhdGFUeXBlID0gdm9pZD4oXG5cdFx0dXJsOiBzdHJpbmcsXG5cdFx0Ym9keTogYW55LFxuXHRcdHBhcmFtcz86IFBhcmFtZXRlcnM8SHR0cENsaWVudFsncG9zdCddPlsxXVsncGFyYW1zJ10sXG5cdFx0d2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gdHJ1ZSxcblx0XHRjb250ZXh0PzogSHR0cENvbnRleHRcblx0KTogT2JzZXJ2YWJsZTxEYXRhVHlwZT4ge1xuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxEYXRhVHlwZT4oXG5cdFx0XHR0aGlzLmhhbmRsZVVybCh1cmwpLFxuXHRcdFx0Ym9keSxcblx0XHRcdGNsZWFuKHsgcGFyYW1zLCB3aXRoQ3JlZGVudGlhbHMsIGNvbnRleHQgfSkgYXMgUGFyYW1ldGVyczxIdHRwQ2xpZW50Wydwb3N0J10+WzJdXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgUFVUIHJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIEFQSVxuXHQgKlxuXHQgKiBAcGFyYW0gIHVybCAtIFRoZSB1cmwgb2YgdGhlIEFQSVxuXHQgKiBAcGFyYW0gYm9keSAtIFRoZSBib2R5IHdlIHdpc2ggdG8gc2VuZFxuXHQgKiBAcGFyYW0gcGFyYW1zIC0gQW4gb3B0aW9uYWwgc2V0IG9mIHBhcmFtcyB3ZSB3aXNoIHRvIHNlbmQgdG8gdGhlIEFQSVxuXHQgKiBAcGFyYW0gd2l0aENyZWRlbnRpYWxzIC0gV2hldGhlciB0aGUgY2FsbCBpcyBtYWRlIGJ5IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgYnkgZGVmYXVsdCB0cnVlXG5cdCAqIEBwYXJhbSBjb250ZXh0IC0gQW4gb3B0aW9uYWwgSFRUUENvbnRleHRcblx0ICovXG5cdHB1YmxpYyBwdXQ8RGF0YVR5cGUgPSB2b2lkPihcblx0XHR1cmw6IHN0cmluZyxcblx0XHRib2R5PzogYW55LFxuXHRcdHBhcmFtcz86IFBhcmFtZXRlcnM8SHR0cENsaWVudFsncHV0J10+WzFdWydwYXJhbXMnXSxcblx0XHR3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSB0cnVlLFxuXHRcdGNvbnRleHQ/OiBIdHRwQ29udGV4dFxuXHQpOiBPYnNlcnZhYmxlPERhdGFUeXBlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8RGF0YVR5cGU+KFxuXHRcdFx0dGhpcy5oYW5kbGVVcmwodXJsKSxcblx0XHRcdGJvZHksXG5cdFx0XHRjbGVhbih7IHBhcmFtcywgd2l0aENyZWRlbnRpYWxzLCBjb250ZXh0IH0pIGFzIFBhcmFtZXRlcnM8SHR0cENsaWVudFsncHV0J10+WzJdXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgUEFUQ0ggcmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgQVBJXG5cdCAqXG5cdCAqIEBwYXJhbSAgdXJsIC0gVGhlIHVybCBvZiB0aGUgQVBJXG5cdCAqIEBwYXJhbSBib2R5IC0gVGhlIGJvZHkgd2Ugd2lzaCB0byBzZW5kXG5cdCAqIEBwYXJhbSBwYXJhbXMgLSBBbiBvcHRpb25hbCBzZXQgb2YgcGFyYW1zIHdlIHdpc2ggdG8gc2VuZCB0byB0aGUgQVBJXG5cdCAqIEBwYXJhbSB3aXRoQ3JlZGVudGlhbHMgLSBXaGV0aGVyIHRoZSBjYWxsIGlzIG1hZGUgYnkgYW4gYXV0aGVudGljYXRlZCB1c2VyLCBieSBkZWZhdWx0IHRydWVcblx0ICogQHBhcmFtIGNvbnRleHQgLSBBbiBvcHRpb25hbCBIVFRQQ29udGV4dFxuXHQgKi9cblx0cHVibGljIHBhdGNoPERhdGFUeXBlID0gdm9pZD4oXG5cdFx0dXJsOiBzdHJpbmcsXG5cdFx0Ym9keTogYW55LFxuXHRcdHBhcmFtcz86IFBhcmFtZXRlcnM8SHR0cENsaWVudFsncGF0Y2gnXT5bMV1bJ3BhcmFtcyddLFxuXHRcdHdpdGhDcmVkZW50aWFsczogYm9vbGVhbiA9IHRydWUsXG5cdFx0Y29udGV4dD86IEh0dHBDb250ZXh0XG5cdCk6IE9ic2VydmFibGU8RGF0YVR5cGU+IHtcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBhdGNoPERhdGFUeXBlPihcblx0XHRcdHRoaXMuaGFuZGxlVXJsKHVybCksXG5cdFx0XHRib2R5LFxuXHRcdFx0Y2xlYW4oeyBwYXJhbXMsIHdpdGhDcmVkZW50aWFscywgY29udGV4dCB9KSBhcyBQYXJhbWV0ZXJzPEh0dHBDbGllbnRbJ3BhdGNoJ10+WzJdXG5cdFx0KTtcblx0fVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJlbnZhbmRldmVpcmUtbmd4LWF1dGhlbnRpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2F1dGhlbnRpY2F0aW9uL3NyYy9pYmVudmFuZGV2ZWlyZS1uZ3gtYXV0aGVudGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["tap","takeUntil"],"mappings":"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"}