{"version":3,"file":"pepperi-addons-ngx-lib.mjs","sources":["../../../projects/ngx-lib/src/core/http/interceptors/error.interceptor.ts","../../../projects/ngx-lib/src/core/http/services/loader.service.ts","../../../projects/ngx-lib/src/core/http/interceptors/loader.interceptor.ts","../../../projects/ngx-lib/src/core/http/interceptors/profiler.interceptor.ts","../../../projects/ngx-lib/src/core/http/interceptors/index.ts","../../../projects/ngx-lib/src/core/clipboard/clipboard.directive.ts","../../../projects/ngx-lib/src/core/layout/layout.service.ts","../../../projects/ngx-lib/src/core/layout/rtl.directive.ts","../../../projects/ngx-lib/src/core/common/pipes/common-pipes.ts","../../../projects/ngx-lib/src/core/common/pipes/date-ago.pipe.ts","../../../projects/ngx-lib/src/core/common/directives/auto-width.directive.ts","../../../projects/ngx-lib/src/core/common/directives/button-blur.directive.ts","../../../projects/ngx-lib/src/core/common/services/utilities.service.ts","../../../projects/ngx-lib/src/core/common/directives/button-loader.directive.ts","../../../projects/ngx-lib/src/core/common/directives/menu-blur.directive.ts","../../../projects/ngx-lib/src/core/common/directives/data-qa.directive.ts","../../../projects/ngx-lib/src/core/common/directives/prevent-multi-click.directive.ts","../../../projects/ngx-lib/src/core/common/directives/print.directive.ts","../../../projects/ngx-lib/src/core/common/services/jwt-helper.service.ts","../../../projects/ngx-lib/src/core/common/services/session.service.ts","../../../projects/ngx-lib/src/core/common/services/file.service.ts","../../../projects/ngx-lib/src/core/customization/customization.service.ts","../../../projects/ngx-lib/src/core/common/directives/div-loader.directive.ts","../../../projects/ngx-lib/src/core/portal/portal.service.ts","../../../projects/ngx-lib/src/core/portal/attach.directive.ts","../../../projects/ngx-lib/src/core/portal/target.directive.ts","../../../projects/ngx-lib/src/core/clipboard/clipboard.service.ts","../../../projects/ngx-lib/src/core/clipboard/public-api.ts","../../../projects/ngx-lib/src/core/clipboard/index.ts","../../../projects/ngx-lib/src/core/common/directives/public-api.ts","../../../projects/ngx-lib/src/core/common/directives/index.ts","../../../projects/ngx-lib/src/core/common/model/papi.model.ts","../../../projects/ngx-lib/src/core/common/model/utilities.model.ts","../../../projects/ngx-lib/src/core/common/model/wapi.model.ts","../../../projects/ngx-lib/src/core/common/model/public-api.ts","../../../projects/ngx-lib/src/core/common/model/index.ts","../../../projects/ngx-lib/src/core/common/pipes/public-api.ts","../../../projects/ngx-lib/src/core/common/pipes/index.ts","../../../projects/ngx-lib/src/core/common/services/cookie.service.ts","../../../projects/ngx-lib/src/core/http/services/http.service.ts","../../../projects/ngx-lib/src/core/common/services/translate.service.ts","../../../projects/ngx-lib/src/core/common/services/addon.service.ts","../../../projects/ngx-lib/src/core/common/services/color.service.ts","../../../projects/ngx-lib/src/core/common/services/data-convertor.service.ts","../../../projects/ngx-lib/src/core/common/services/validator.service.ts","../../../projects/ngx-lib/src/core/common/services/window-scrolling.service.ts","../../../projects/ngx-lib/src/core/common/services/public-api.ts","../../../projects/ngx-lib/src/core/common/services/index.ts","../../../projects/ngx-lib/src/core/common/public-api.ts","../../../projects/ngx-lib/src/core/common/index.ts","../../../projects/ngx-lib/src/core/customization/customization.model.ts","../../../projects/ngx-lib/src/core/customization/public-api.ts","../../../projects/ngx-lib/src/core/customization/index.ts","../../../projects/ngx-lib/src/core/http/public-api.ts","../../../projects/ngx-lib/src/core/http/index.ts","../../../projects/ngx-lib/src/core/layout/public-api.ts","../../../projects/ngx-lib/src/core/layout/index.ts","../../../projects/ngx-lib/src/core/portal/public-api.ts","../../../projects/ngx-lib/src/core/portal/index.ts","../../../projects/ngx-lib/src/core/scroll-to/scroll-to.service.ts","../../../projects/ngx-lib/src/core/scroll-to/public-api.ts","../../../projects/ngx-lib/src/core/scroll-to/index.ts","../../../projects/ngx-lib/src/core/public-api.ts","../../../projects/ngx-lib/src/core/index.ts","../../../projects/ngx-lib/src/ngx-lib.module.ts","../../../projects/ngx-lib/src/public-api.ts","../../../projects/ngx-lib/src/pepperi-addons-ngx-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n    HttpEvent,\n    HttpRequest,\n    HttpHandler,\n    HttpInterceptor,\n    HttpErrorResponse,\n} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\n// import { ToastrService } from 'ngx-toastr';\n\n@Injectable()\nexport class PepErrorInterceptor implements HttpInterceptor {\n    // constructor() {} // private toastr: ToastrService\n\n    intercept(\n        req: HttpRequest<any>,\n        next: HttpHandler\n    ): Observable<HttpEvent<any>> {\n        // console.warn('ErrorInterceptor');\n\n        return next.handle(req).pipe(\n            // retry(2), TODO: Check if we want to retry\n            catchError((error: HttpErrorResponse) => {\n                // 401 handled in auth.interceptor\n                if (error.status !== 401) {\n                    // TODO: Show error in dialog.\n                    // this.toastr.error(error.message);\n                }\n                return throwError(error);\n            })\n        );\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepLoaderService {\n    counter = 0;\n    private showLoaderSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(undefined);\n\n    get onChanged$(): Observable<boolean> {\n        return this.showLoaderSubject\n            .asObservable()\n            .pipe(\n                filter(v => v !== undefined),\n                distinctUntilChanged());\n    }\n\n    constructor() {\n        // Raise custom event for showing the loader.\n        this.onChanged$.subscribe((show) => {\n            this.showLoaderChanged(show);\n        });\n    }\n\n    private showLoaderChanged(show: boolean): void {\n        const eventData = {\n            detail: {\n                showLoader: show,\n            },\n        };\n\n        const event = new CustomEvent('toggleLoader', eventData);\n        window.dispatchEvent(event);\n    }\n\n    show(): void {\n        this.counter++;\n        this.showLoaderSubject.next(true);\n    }\n\n    hide(): void {\n        this.counter--;\n\n        if (this.counter < 0) {\n            this.counter = 0;\n        }\n\n        if (this.counter === 0) {\n            this.showLoaderSubject.next(false);\n        }\n    }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n    HttpEvent,\n    HttpRequest,\n    HttpHandler,\n    HttpInterceptor,\n    HttpResponse,\n} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { finalize, delay, map, catchError } from 'rxjs/operators';\nimport { PepLoaderService } from '../services/loader.service';\n\n@Injectable()\nexport class PepLoaderInterceptor implements HttpInterceptor {\n    constructor(private injector: Injector) { }\n\n    intercept(\n        req: HttpRequest<any>,\n        next: HttpHandler\n    ): Observable<HttpEvent<any>> {\n        // console.warn('LoaderInterceptor');\n        const newVer = 2;\n        const loaderService = this.injector.get(PepLoaderService);\n      //  console.log('show', req.url);       \n        loaderService.show();\n\n        return next.handle(req).pipe(\n            // delay(3000),\n            catchError((err) => throwError(err)),\n            finalize(() =>  loaderService.hide())\n        );\n\n        // return next.handle(req).pipe(map(event => {\n        //     if (event instanceof HttpResponse) {\n        //        loaderService.hide();\n        //     }\n\n        //     return event;\n        // }));\n    }\n}\n","import { Injectable } from '@angular/core';\nimport {\n    HttpEvent,\n    HttpRequest,\n    HttpHandler,\n    HttpInterceptor,\n    HttpResponse,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap, finalize } from 'rxjs/operators';\n\n@Injectable()\nexport class PepProfilerInterceptor implements HttpInterceptor {\n    intercept(\n        req: HttpRequest<any>,\n        next: HttpHandler\n    ): Observable<HttpEvent<any>> {\n        // console.warn('ProfilerInterceptor');\n\n        const started = Date.now();\n        let ok: string;\n\n        return next.handle(req).pipe(\n            tap(\n                // Succeeds when there is a response; ignore other events\n                (event: HttpEvent<any>) => {\n                    if (event instanceof HttpResponse) {\n                        ok = 'succeeded';\n                    }\n                },\n                // Operation failed; error is an HttpErrorResponse\n                (error) => (ok = 'failed')\n            ),\n            // Log when response observable either completes or errors\n            finalize(() => {\n                const elapsed = Date.now() - started;\n                const msg = `${req.method} \"${req.urlWithParams}\" ${ok} in ${elapsed} ms.`;\n                console.log(msg);\n            })\n        );\n    }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\n\n// import { AuthInterceptor } from './auth.interceptor';\n// import { CacheInterceptor } from './cache.interceptor';\n// import { ConvertInterceptor } from './convert.interceptor';\nimport { PepErrorInterceptor } from './error.interceptor';\n// import { FakeInterceptor } from './fake.interceptor';\n// import { HeaderInterceptor } from './header.interceptor';\nimport { PepLoaderInterceptor } from './loader.interceptor';\nimport { PepProfilerInterceptor } from './profiler.interceptor';\n\nexport const httpInterceptorProviders = [\n    // { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\n    //   { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true },\n    //   { provide: HTTP_INTERCEPTORS, useClass: ConvertInterceptor, multi: true },\n    { provide: HTTP_INTERCEPTORS, useClass: PepErrorInterceptor, multi: true },\n    //   { provide: HTTP_INTERCEPTORS, useClass: FakeInterceptor, multi: true },\n    //   { provide: HTTP_INTERCEPTORS, useClass: HeaderInterceptor, multi: true },\n    { provide: HTTP_INTERCEPTORS, useClass: PepLoaderInterceptor, multi: true },\n    {\n        provide: HTTP_INTERCEPTORS,\n        useClass: PepProfilerInterceptor,\n        multi: true,\n    },\n];\n","// Import the core angular services.\nimport { Directive } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\n\n// Import the application components and services.\n// import { PepClipboardService } from './clipboard.service';\n\n// This directive acts as a simple glue layer between the given [clipboard] property\n// and the underlying ClipboardService. Upon the (click) event, the [clipboard] value\n// will be copied to the ClipboardService and a (clipboardCopy) event will be emitted.\n@Directive({\n    selector: '[pepClipboard]',\n    inputs: ['value: clipboard'],\n    outputs: ['copyEvent: clipboardCopy', 'errorEvent: clipboardError'],\n    host: {\n        '(click)': 'copyToClipboard()',\n    },\n})\nexport class PepClipboardDirective {\n    // public copyEvent: EventEmitter<string>;\n    // public errorEvent: EventEmitter<Error>;\n    // public value: string;\n    // private clipboardService: ClipboardService;\n    // // I initialize the clipboard directive.\n    // constructor(clipboardService: ClipboardService) {\n    //     this.clipboardService = clipboardService;\n    //     this.copyEvent = new EventEmitter();\n    //     this.errorEvent = new EventEmitter();\n    //     this.value = '';\n    // }\n    // // ---\n    // // PUBLIC METODS.\n    // // ---\n    // // I copy the value-input to the Clipboard. Emits success or error event.\n    // public copyToClipboard(): void {\n    //     this.clipboardService\n    //         .copy(this.value)\n    //         .then((value: string): void => {\n    //             this.copyEvent.emit(value);\n    //         })\n    //         .catch((error: Error): void => {\n    //             this.errorEvent.emit(error);\n    //         });\n    // }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\n\n// Const BIDI_RTL_LANGS Array\n// BIDI_RTL_LANGS ref: http://en.wikipedia.org/wiki/Right-to-left\n// Table of scripts in Unicode: https://en.wikipedia.org/wiki/Script_(Unicode)\nconst _BIDI_RTL_LANGS = [\n    'ae' /* Avestan */,\n    'ar' /* 'العربية', Arabic */,\n    'arc' /* Aramaic */,\n    'bcc' /* 'بلوچی مکرانی', Southern Balochi */,\n    'bqi' /* 'بختياري', Bakthiari */,\n    'ckb' /* 'Soranî / کوردی', Sorani */,\n    'dv' /* Dhivehi */,\n    'fa' /* 'فارسی', Persian */,\n    'glk' /* 'گیلکی', Gilaki */,\n    'he' /* 'עברית', Hebrew */,\n    'ku' /* 'Kurdî / كوردی', Kurdish */,\n    'mzn' /* 'مازِرونی', Mazanderani */,\n    'nqo' /* N'Ko */,\n    'pnb' /* 'پنجابی', Western Punjabi */,\n    'ps' /* 'پښتو', Pashto, */,\n    'sd' /* 'سنڌي', Sindhi */,\n    'ug' /* 'Uyghurche / ئۇيغۇرچە', Uyghur */,\n    'ur' /* 'اردو', Urdu */,\n    'yi' /* 'ייִדיש', Yiddish */,\n];\n\nexport type PepOrientationType = 'landscape' | 'portrait';\n\nexport enum PepScreenSizeType {\n    XL,\n    LG,\n    MD,\n    SM,\n    XS,\n}\n// export type PepScreenSizeType = 'xl' | 'lg' | 'md' | 'sm' | 'xs';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepLayoutService {\n    private resizeSubject: BehaviorSubject<PepScreenSizeType>;\n    private deviceHasMouseSubject: BehaviorSubject<boolean>;\n\n    get onResize$(): Observable<PepScreenSizeType> {\n        return this.resizeSubject.asObservable().pipe(distinctUntilChanged());\n    }\n\n    get onMouseOver$(): Observable<boolean> {\n        return this.deviceHasMouseSubject\n            .asObservable()\n            .pipe(distinctUntilChanged());\n    }\n\n    constructor(@Optional() private translate: TranslateService = null) {\n        this.resizeSubject = new BehaviorSubject(PepScreenSizeType.LG);\n\n        this.deviceHasMouseSubject = new BehaviorSubject(false);\n        document.addEventListener(\n            'mouseover',\n            this.documentMouseoverListener,\n            false\n        );\n        // document.addEventListener('touchstart', this._documentTouchstartListener, false);\n    }\n\n    private documentMouseoverListener = (event: MouseEvent) => {\n        this.deviceHasMouseSubject.next(true);\n        this.deviceHasMouseSubject.complete();\n        document.removeEventListener(\n            'mouseover',\n            this.documentMouseoverListener,\n            false\n        );\n    };\n\n    // private _documentTouchstartListener = (event: TouchEvent) => {\n    //     debugger;\n    //     this.isTouchDevice = true;\n    //     document.removeEventListener('touchstart', this._documentTouchstartListener, false);\n    // }\n\n    /**\n     * Set the current screen size.\n     * @param size The size to change to.\n     */\n    onResize(size: PepScreenSizeType): void {\n        this.resizeSubject.next(size);\n    }\n\n    getDeviceHasMouse(): boolean {\n        return this.deviceHasMouseSubject.getValue();\n    }\n\n    getOrintation(): PepOrientationType {\n        if (window.innerHeight > window.innerWidth) {\n            return 'portrait';\n        } else {\n            return 'landscape';\n        }\n    }\n\n    getScreenWidth(): number {\n        let retVal = 250.0;\n        switch (this.resizeSubject.getValue()) {\n            case PepScreenSizeType.XS: {\n                retVal = this.getOrintation() === 'landscape' ? 130.0 : 65.0;\n                break;\n            }\n            case PepScreenSizeType.SM:\n            case PepScreenSizeType.MD: {\n                retVal = this.getOrintation() === 'landscape' ? 220.0 : 140.0;\n                break;\n            }\n            case PepScreenSizeType.LG:\n            case PepScreenSizeType.XL: {\n                retVal = this.getOrintation() === 'landscape' ? 400.0 : 250.0;\n                break;\n            }\n        }\n        return retVal;\n    }\n\n    getScreenHeight(): number {\n        let retVal = 250.0;\n        switch (this.resizeSubject.getValue()) {\n            case PepScreenSizeType.XS: {\n                retVal = this.getOrintation() === 'landscape' ? 65.0 : 130.0;\n                break;\n            }\n            case PepScreenSizeType.SM:\n            case PepScreenSizeType.MD: {\n                retVal = this.getOrintation() === 'landscape' ? 140.0 : 220.0;\n                break;\n            }\n            case PepScreenSizeType.LG:\n            case PepScreenSizeType.XL: {\n                retVal = this.getOrintation() === 'landscape' ? 250.0 : 400.0;\n                break;\n            }\n        }\n        return retVal;\n    }\n\n    getScreenHeightPx(): number {\n        return (\n            window.innerHeight ||\n            document.documentElement.clientHeight ||\n            document.body.clientHeight\n        );\n    }\n\n    getScreenWidthPx(): number {\n        return (\n            window.innerWidth ||\n            document.documentElement.clientWidth ||\n            document.body.clientWidth\n        );\n    }\n\n    getScrollbarWidth() {\n        // Creating invisible container\n        const outer = document.createElement('div');\n        outer.style.visibility = 'hidden';\n        outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n        // outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n        document.body.appendChild(outer);\n\n        // Creating inner element and placing it in the container\n        const inner = document.createElement('div');\n        outer.appendChild(inner);\n\n        // Calculating difference between container's full width and the child width\n        const scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);\n\n        // Removing temporary elements from the DOM\n        outer.parentNode.removeChild(outer);\n\n        return scrollbarWidth;\n    }\n\n    getCurrentLanguage(): string {\n        return this.translate?.getBrowserCultureLang() || navigator.language;\n    }\n\n    isRtl(): boolean {\n        const userLang = this.getCurrentLanguage();\n        const isRtl = _BIDI_RTL_LANGS.indexOf(userLang) >= 0;\n\n        return isRtl;\n    }\n}\n","import { Directive, Renderer2, ElementRef, OnInit } from '@angular/core';\nimport { PepLayoutService } from './layout.service';\n\n@Directive({\n    selector: '[pepRtlClass]',\n})\nexport class PepRtlClassDirective implements OnInit {\n    constructor(\n        private layoutService: PepLayoutService,\n        private renderer: Renderer2,\n        private element: ElementRef\n    ) {}\n\n    ngOnInit(): void {\n        const isRtl = this.layoutService.isRtl();\n\n        if (isRtl) {\n            this.renderer.addClass(this.element.nativeElement, 'rtl');\n        }\n    }\n}\n\n@Directive({\n    selector: '[pepRtlDirection]',\n})\nexport class PepRtlDirectionDirective implements OnInit {\n    constructor(\n        private layoutService: PepLayoutService,\n        private renderer: Renderer2,\n        private element: ElementRef\n    ) {}\n\n    ngOnInit(): void {\n        const isRtl = this.layoutService.isRtl();\n\n        this.renderer.setAttribute(\n            this.element.nativeElement,\n            'dir',\n            isRtl ? 'rtl' : 'ltr'\n        );\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n    DomSanitizer,\n    SafeHtml,\n    SafeStyle,\n    SafeScript,\n    SafeUrl,\n    SafeResourceUrl,\n} from '@angular/platform-browser';\n\n@Pipe({ name: 'pepCapitalize' })\nexport class PepCapitalizePipe implements PipeTransform {\n    transform(value: any) {\n        if (value) {\n            return value.charAt(0).toUpperCase() + value.slice(1);\n        }\n        return value;\n    }\n}\n\n@Pipe({ name: 'pepEncode' })\nexport class PepEncodePipe implements PipeTransform {\n    transform(value: any) {\n        if (value) {\n            const v = btoa(value);\n            return v;\n        }\n        return value;\n    }\n}\n\ndeclare function escape(s: string): string;\n\n@Pipe({ name: 'pepEscape' })\nexport class PepEscapePipe implements PipeTransform {\n    transform(value: any) {\n        if (value) {\n            const v = escape(value);\n            return v;\n        }\n        return value;\n    }\n}\n\n@Pipe({ name: 'pepReplaceLineBreaks' })\nexport class PepReplaceLineBreaksPipe implements PipeTransform {\n    transform(value: string): string {\n        const newValue = value.replace(/(<br\\ ?\\/?>)/g, ' ');\n        return newValue;\n    }\n}\n\n@Pipe({ name: 'pepDateFormatter' })\nexport class PepDateFormatterPipe implements PipeTransform {\n    transform(value: Date, culture: any, showTime = false): string {\n        let res = '';\n        value = new Date(value);\n        if (value) {\n            res = value.toLocaleDateString(culture || 'en-US');\n            if (showTime) {\n                res +=\n                    ' ' +\n                    value.toLocaleTimeString(culture || 'en-US', {\n                        hour: '2-digit',\n                        minute: '2-digit',\n                    });\n            }\n        }\n        return res;\n    }\n}\n\n@Pipe({ name: 'pepDateStringFormatter' })\nexport class PepDateStringFormatterPipe implements PipeTransform {\n    transform(value: string, culture: any, showTime = false): string {\n        let res = '';\n        const tmpDate = new Date(value);\n        if (value) {\n            res = tmpDate.toLocaleDateString(culture || 'en-US');\n            if (showTime) {\n                res += ' ' + tmpDate.toLocaleTimeString(culture || 'en-US');\n            }\n        }\n        return res;\n    }\n}\n\n@Pipe({ name: 'pepSafeHtml' })\nexport class PepSafeHtmlPipe implements PipeTransform {\n    constructor(private sanitizer: DomSanitizer) {}\n\n    transform(html) {\n        return this.sanitizer.bypassSecurityTrustHtml(html);\n    }\n}\n\n@Pipe({ name: 'pepSafe' })\nexport class PepSafePipe implements PipeTransform {\n    constructor(protected sanitizer: DomSanitizer) {}\n\n    public transform(\n        value: any,\n        type: string\n    ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n        switch (type) {\n            case 'html':\n                return this.sanitizer.bypassSecurityTrustHtml(value);\n\n            case 'style':\n                return this.sanitizer.bypassSecurityTrustStyle(value);\n\n            case 'script':\n                return this.sanitizer.bypassSecurityTrustScript(value);\n\n            case 'url':\n                return this.sanitizer.bypassSecurityTrustUrl(value);\n\n            case 'resourceUrl':\n                return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n\n            default:\n                throw new Error(`Invalid safe type specified: ${type}`);\n        }\n    }\n}\n\n@Pipe({ name: 'pepSplitUppercase' })\nexport class PepSplitUppercasePipe implements PipeTransform {\n    transform(value: string): string {\n        const newValue = value.replace(/([a-z])([A-Z])/g, '$1 $2');\n        return newValue;\n    }\n}\n\n@Pipe({ name: 'pepToNumber' })\nexport class PepToNumberPipe implements PipeTransform {\n    transform(value: string): number {\n        return parseInt(value);\n    }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n    name: 'dateAgo'\r\n})\r\nexport class DateAgoPipe implements PipeTransform {\r\n    constructor(private translateService: TranslateService) {}\r\n\r\n    private getCounterTranslation(counter: number, key: string) {\r\n        const intervalText = this.translateService.get(`DATE_AGO.${key.toUpperCase()}`) || key;\r\n        const agoText = this.translateService.get(counter === 1 ? 'DATE_AGO.SINGULAR' : 'DATE_AGO.PLURAL') || counter === 1 ? ' ago' : 's ago';\r\n        return `${intervalText}${agoText}`;\r\n    }\r\n\r\n    transform(value: any, args?: any): any {\r\n        if (value) {\r\n            const seconds = Math.floor((+new Date() - +new Date(value)) / 1000);\r\n            if (seconds < 29) // less than 30 seconds ago will show as 'Just now'\r\n                return this.translateService.get('DATE_AGO.JUST_NOW') || 'Just now';\r\n            const intervals: { [key: string]: number } = {\r\n                'year': 31536000,\r\n                'month': 2592000,\r\n                'week': 604800,\r\n                'day': 86400,\r\n                'hour': 3600,\r\n                'minute': 60,\r\n                'second': 1\r\n            };\r\n            let counter;\r\n            for (const i in intervals) {\r\n                counter = Math.floor(seconds / intervals[i]);\r\n                if (counter > 0) {\r\n                    this.getCounterTranslation(counter, i);\r\n                }\r\n            }\r\n        }\r\n        return value;\r\n    }\r\n\r\n}","import {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    HostListener,\n    Input,\n    OnDestroy,\n    Renderer2,\n} from '@angular/core';\n\n@Directive({\n    selector: '[pepAutoWidth]',\n})\nexport class PepInputAutoWidthDirective implements AfterViewInit, OnDestroy {\n    @Input() includePadding = true;\n\n    private input: any = null;\n\n    constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n    ngAfterViewInit(): void {\n        if (this.el.nativeElement.tagName.toLowerCase() === 'input') {\n            this.input = this.el;\n        } else {\n            const list = this.el.nativeElement.querySelectorAll('input');\n            this.input = list.length > 0 ? list[0] : null;\n        }\n\n        if (this.input) {\n            this.input.addEventListener(\n                'blur',\n                this.setWidthUsingText.bind(this)\n            );\n            this.input.addEventListener(\n                'keyup',\n                this.setWidthUsingText.bind(this)\n            );\n        }\n\n        this.setWidthUsingText();\n    }\n\n    ngOnDestroy() {\n        this.input.removeEventListener(\n            'blur',\n            this.setWidthUsingText.bind(this)\n        );\n        this.input.removeEventListener(\n            'keyup',\n            this.setWidthUsingText.bind(this)\n        );\n    }\n\n    get paddingWidth(): number {\n        return this.includePadding\n            ? this._sumPropertyValues(['padding-left', 'padding-right'])\n            : 0;\n    }\n\n    get style() {\n        return getComputedStyle(this.input, '');\n    }\n\n    setWidth(width: number): void {\n        this.renderer.setStyle(this.input, 'width', width + 'px');\n    }\n\n    setWidthUsingText(): void {\n        if (this.input) {\n            const text = this.input.value;\n            this.setWidth(this.textWidth(text) + this.paddingWidth);\n        }\n    }\n\n    private _sumPropertyValues(properties: string[]): number {\n        return properties\n            .map((property) =>\n                parseInt(this.style.getPropertyValue(property), 10)\n            )\n            .reduce((a, b) => a + b, 0);\n    }\n\n    private textWidth(value: string): number {\n        const ctx = this.renderer.createElement('canvas').getContext('2d');\n        const {\n            fontStyle,\n            fontVariant,\n            fontWeight,\n            fontSize,\n            fontFamily,\n        } = this.style;\n\n        // font string format: {normal, normal, 700, 20px, Roboto, \"Helvetica Neue\", sans-serif}\n        ctx.font =\n            fontStyle +\n            ' ' +\n            fontVariant +\n            ' ' +\n            fontWeight +\n            ' ' +\n            fontSize +\n            ' ' +\n            fontFamily;\n        return ctx ? ctx.measureText(value).width : 0;\n    }\n}\n","import { Directive, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n    selector: '[pepButtonBlur]',\n})\nexport class PepButtonBlurDirective {\n    constructor(private element: ElementRef) {}\n\n    @HostListener('click')\n    onClick(): void {\n        setTimeout(() => {\n            this.element.nativeElement.blur();\n        }, 0);\n    }\n}\n","import { coerceNumberProperty, _isNumberValue } from '@angular/cdk/coercion';\nimport { formatCurrency, formatNumber, formatPercent } from '@angular/common';\nimport { Injectable, Optional } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepUtilitiesService {\n    private culture = 'en-US';\n\n    constructor(@Optional() private translate: TranslateService = null) {\n        this.culture = this.translate?.getBrowserCultureLang() || 'en-US';\n\n        // try {\n        //     import(`@angular/common/locales/global/${this.culture}`);\n        // } catch {}\n    }\n\n    private prepareNumberToFormat(value: string, fallbackValue = 0): number {\n        // If the decimal separator is ',' change it to '.'\n        if (value?.length > 0) {\n            // If the decimal separator is ',' change it to '.' for let the formatting works.\n            value = this.changeDecimalSeparatorWhenItsComma(value);\n            // console.log('coerceNumberProperty after change decimal separator value is', value);\n        }\n\n        return coerceNumberProperty(value, fallbackValue);\n    }\n\n    // adapted from https://github.com/sindresorhus/parse-ms.\n    // moved to internal function because parse-ms is now pure ESM.\n    private parseMs(milliseconds: number) {\n        if (typeof milliseconds !== 'number') {\n            throw new TypeError('Expected a number')\n        }\n\n        return {\n            days: Math.trunc(milliseconds / 86400000),\n            hours: Math.trunc(milliseconds / 3600000) % 24,\n            minutes: Math.trunc(milliseconds / 60000) % 60,\n            seconds: Math.trunc(milliseconds / 1000) % 60,\n            milliseconds: Math.trunc(milliseconds) % 1000\n        }\n    }\n\n    // adapted from https://github.com/rafaelrinaldi/add-zero.\n    // moved to internal function b/c addZero is unmaintained (7+ years).\n    // stripped out negative sign logic since we're already doing it elsewhere.\n    private addZero(value: number, digits = 2) {\n        digits = digits || 2\n\n        let str = value.toString()\n        let size = 0\n\n        size = digits - str.length + 1\n        str = new Array(size).join('0').concat(str)\n\n        return str\n    }\n\n    private isCurrencyShouldBeOnRight(currencySymbol: string) {\n        let res = false;\n\n        if (currencySymbol == \"€\" ||\n            currencySymbol == \"₪\" ||\n            currencySymbol == \"Ft\" ||\n            currencySymbol == \"Kč\" ||\n            currencySymbol == \"руб\" ||\n            currencySymbol == \"zł\" ||\n            currencySymbol == \"kr.\") {\n            res = true;\n        }\n\n        return res;\n    }\n\n    private cutValueByFractionDigits(value: string, maxFractionDigits: number): string {\n        let res = value;\n        maxFractionDigits = maxFractionDigits || 2;\n        const decimalSeparator = this.getDecimalSeparator();\n\n        if (value.includes(decimalSeparator)) {\n            const valueArr = value.split(decimalSeparator);\n\n            // if (valueArr[1].length < maxFractionDigits) {\n            valueArr[1] = valueArr[1].padEnd(maxFractionDigits, '0');\n            // }\n\n            res = `${valueArr[0]}${decimalSeparator}${valueArr[1].slice(0, maxFractionDigits)}`;\n        }\n\n        return res;\n    }\n\n    parseDate(dateStr: string, showTime = false): Date {\n        let retVal: Date = null;\n        if (dateStr !== '') {\n            retVal = new Date(dateStr);\n\n            // Convert to date with no offset.\n            if (!showTime) {\n                const index = dateStr.indexOf('T');\n\n                if (index > 0) {\n                    dateStr = dateStr.substring(0, index);\n                }\n\n                const dateText = dateStr.split('-');\n                if (dateText.length === 3) {\n                    const year = Number(dateText[0]);\n                    const month = Number(dateText[1]) - 1;\n                    const day = Number(dateText[2]);\n                    retVal = new Date(year, month, day, 0, retVal.getTimezoneOffset() * -1);\n                }\n            } else {\n                retVal = new Date(\n                    retVal.getFullYear(), retVal.getMonth(), retVal.getDate(), retVal.getHours(),\n                    retVal.getMinutes() + retVal.getTimezoneOffset() * -1, retVal.getSeconds());\n            }\n        }\n        if (retVal && isNaN(retVal.getTime())) {\n            retVal = null;\n        }\n        return retVal;\n    }\n\n    stringifyDate(date: Date, showTime = false): string {\n        if (date) {\n            if (showTime) {\n                return date.toISOString(); // include - offset\n            } else {\n                const dateText = [];\n                dateText.push(\n                    date.getFullYear(),\n                    '-',\n                    date.getMonth() + 1,\n                    '-',\n                    date.getDate()\n                );\n                return dateText.join('');\n            }\n        } else {\n            return '';\n        }\n    }\n\n    isValueHtml(value: string): boolean {\n        let res = false;\n        const REGEXP = /<\\/?[a-z][\\s\\S]*>/i;\n        res = REGEXP.test(value);\n\n        return res;\n    }\n\n    isJsonString(str: string): boolean {\n        try {\n            JSON.parse(str);\n        } catch (e) {\n            return false;\n        }\n        return true;\n    }\n\n    getSvgElementFromString(document, svgContent: string): SVGElement {\n        const div = document.createElement('DIV');\n        // div.className = 'svg-icon';\n        // Add class svg-icon\n        if (svgContent?.length > 0) {\n            div.innerHTML = svgContent.replace('<svg ', '<svg class=\"svg-icon\" ');\n        }\n        return (\n            div.querySelector('svg') ||\n            document.createElementNS('http://www.w3.org/2000/svg', 'path')\n        );\n    }\n\n    // formatPercent(value: any, digitsInfo = '1.0-2') {\n    formatPercent(value: any, minFractionDigits = 0, maxFractionDigits = 2) {\n        minFractionDigits = coerceNumberProperty(minFractionDigits, null);\n        maxFractionDigits = coerceNumberProperty(maxFractionDigits, null);\n\n        value = this.cutValueByFractionDigits(value?.toString(), Math.max(minFractionDigits, maxFractionDigits));\n        const number = this.prepareNumberToFormat(value);\n\n        if (number === 0) {\n            return '0%';\n        } else {\n            // return formatPercent(number / 100, this.culture, digitsInfo);\n            return new Intl.NumberFormat(this.culture, {\n                style: 'percent',\n                minimumFractionDigits: minFractionDigits || 0,\n                maximumFractionDigits: maxFractionDigits || Math.max(2, minFractionDigits),\n            }).format(number / 100);\n        }\n    }\n\n    // formatCurrency(value: any, currencySign = '', digitsInfo = '1.2-2') {\n    formatCurrency(value: any, currencySign = '', minFractionDigits = 2, maxFractionDigits = 2, useGrouping = true) {\n        minFractionDigits = coerceNumberProperty(minFractionDigits, null);\n        maxFractionDigits = coerceNumberProperty(maxFractionDigits, null);\n\n        let res = '';\n\n        // If the decimal separator is the last digit\n        // if (value.length > 0 && value.indexOf(this.getDecimalSeparator()) === value.length -1) {\n        //     res = value;\n        // } else {\n            value = this.cutValueByFractionDigits(value?.toString(), Math.max(minFractionDigits, maxFractionDigits));\n            const number = this.prepareNumberToFormat(value);\n            const styleOptions = {\n                // style: 'currency',\n                // currencySign: currencySign,\n                useGrouping: useGrouping,\n                minimumFractionDigits: minFractionDigits || Math.min(2, maxFractionDigits || 2),\n                maximumFractionDigits: maxFractionDigits || Math.max(2, minFractionDigits),\n            };\n    \n            if (number === 0) {\n                // return formatCurrency(0, this.culture, currencySign, undefined, digitsInfo);\n                res = new Intl.NumberFormat(this.culture, styleOptions).format(0);\n            } else {\n                // return formatCurrency(value, this.culture, currencySign, undefined, digitsInfo);\n                res = new Intl.NumberFormat(this.culture, styleOptions).format(number);\n            }\n    \n            if (currencySign.length > 0) {\n                res = this.isCurrencyShouldBeOnRight(currencySign) ? `${res} ${currencySign}` : `${currencySign} ${res}`\n            }\n        // }\n\n        return res;\n    }\n\n    // formatDecimal(value: any, digitsInfo = '1.2-2') {\n    formatDecimal(value: any, minFractionDigits = 2, maxFractionDigits = 2, useGrouping = true) {\n        minFractionDigits = coerceNumberProperty(minFractionDigits, null);\n        // console.log('formatDecimal minFractionDigits value is', minFractionDigits);\n        maxFractionDigits = coerceNumberProperty(maxFractionDigits, null);\n        // console.log('formatDecimal minFractionDigits value is', maxFractionDigits);\n\n        value = this.cutValueByFractionDigits(value?.toString(), Math.max(minFractionDigits, maxFractionDigits));\n        const number = this.prepareNumberToFormat(value);\n        \n        // console.log('number value is', number);\n\n        if (number === 0) {\n            return '0';\n        } else {\n            // return formatNumber(value, this.culture, digitsInfo);\n            const res = new Intl.NumberFormat(this.culture, {\n                useGrouping: useGrouping,\n                minimumFractionDigits: minFractionDigits || Math.min(2, maxFractionDigits || 2),\n                maximumFractionDigits: maxFractionDigits || Math.max(2, minFractionDigits),\n            }).format(number);\n            \n            // console.log('Intl.NumberFormat value is', res);\n\n            return res;\n        }\n    }\n\n    // formatNumber(value: any, digitsInfo = '1.0-0'): string {\n    formatNumber(value: any, useGrouping = true): string {\n        const number = this.prepareNumberToFormat(value);\n\n        if (number === 0) {\n            return '0';\n        } else {\n            // return formatNumber(value, this.culture, digitsInfo);\n            return new Intl.NumberFormat(this.culture, {\n                useGrouping: useGrouping,\n                minimumFractionDigits: 0,\n                maximumFractionDigits: 0,\n            }).format(number)\n        }\n    }\n\n    /**\n     * Convert a number in milliseconds to a standard duration string.\n     * @param {number} value - duration in milliseconds\n     * @param {object} options - formatDuration options object\n     * @param {boolean} [options.leading=false] - add leading zero\n     * @returns string - formatted duration string\n    */\n    formatDuration(value, options: { leading?: boolean, duration?: 'milliseconds' | 'seconds' } = {}): string {\n        const isNumber = _isNumberValue(value);\n\n        if (!isNumber) {\n            return value;\n        } else {\n            let number = this.prepareNumberToFormat(value);\n\n            const leading = options?.leading || true;\n            const duration = options?.duration || 'milliseconds';\n            if (duration === 'seconds') {\n                number = number * 1000;\n            }\n\n            const unsignedMs = number < 0 ? -number : number;\n            const sign = number <= -1000 ? '-' : '';\n            const t = this.parseMs(unsignedMs);\n            const seconds = this.addZero(t.seconds);\n\n            if (t.days) {\n                return sign + t.days + ':' + this.addZero(t.hours) + ':' + this.addZero(t.minutes) + ':' + seconds\n            }\n\n            if (t.hours) {\n                return sign + (leading ? this.addZero(t.hours) : t.hours) + ':' + this.addZero(t.minutes) + ':' + seconds\n            }\n\n            return sign + (leading ? this.addZero(t.minutes) : t.minutes) + ':' + seconds\n        }\n    }\n\n    incrementNumber(value: any): string {\n        let numberValue = coerceNumberProperty(value, 0);\n        return (++numberValue).toString();\n    }\n\n    decrementNumber(value: any): string {\n        let numberValue = coerceNumberProperty(value, 0);\n        return (--numberValue).toString();\n    }\n\n    getDecimalSeparator(): string {\n        const numberWithDecimalSeparator = 1.1;\n\n        return numberWithDecimalSeparator\n            .toLocaleString(this.culture)\n            .substring(1, 2);\n    }\n\n    changeDecimalSeparatorWhenItsComma(value: string, reverse = false): string {\n        // If the decimal separator is ','\n        if (this.getDecimalSeparator() === ',') {\n            // In case that the value isn't string.\n            value = value?.toString() || '';\n\n            // If reverse change the number from '.' to ',' else do the opposite.\n            value = reverse ? value.replace('.', ',') : value.replace(',', '.');\n        }\n\n        return value;\n    }\n\n    isEqualNumber(numberAsString: string, numberAsString2: string): boolean {\n        const number = this.prepareNumberToFormat(numberAsString);\n        const number2 = this.prepareNumberToFormat(numberAsString2);\n\n        return number === number2;\n    }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    HostListener,\n    Inject,\n    Input,\n    OnInit,\n    Optional,\n    Renderer2,\n} from '@angular/core';\nimport { PepUtilitiesService } from '../services/utilities.service';\n\n@Directive({\n    selector: '[pepButtonLoader]',\n})\nexport class PepButtonLoaderDirective implements OnInit {\n    @Input() loaderTime = 0;\n    @Input() loaderColor = null;\n    @Input() loaderWidth = '1.5rem';\n    @Input() loaderHeight = 'inherit';\n    @Input() ignoreDisabledStyle = false;\n\n    private _isLoading = false;\n    private _finish = null;\n    @Input()\n    set finish(value: boolean) {\n        this._finish = value;\n\n        if (this._isLoading && value) {\n            this.toggleLoading(false);\n        }\n    }\n\n    private svgIcon: SVGElement;\n\n    constructor(\n        private renderer: Renderer2,\n        private element: ElementRef,\n        private utilitiesService: PepUtilitiesService,\n        @Optional() @Inject(DOCUMENT) private document: any\n    ) {}\n\n    @HostListener('click', ['$event'])\n    clickEvent(event): void {\n        this.toggleLoading(true);\n\n        // In case that the finish input is supplied - init it.\n        if (this._finish !== null) {\n            this._finish = false;\n        } else {\n            // Init loaderTime if is not supplied (3000 - default 3 seconds).\n            if (this.loaderTime === 0) {\n                this.loaderTime = 3000;\n            }\n        }\n\n        if (this.loaderTime > 0) {\n            setTimeout(() => {\n                this.toggleLoading(false);\n            }, this.loaderTime);\n        }\n    }\n\n    ngOnInit(): void {\n        this.setButtonStyle();\n        const svgData =\n            '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\" preserveAspectRatio=\"xMidYMid\" class=\"lds-ripple\" style=\"background:0 0; \"><circle cx=\"64\" cy=\"64\" r=\"0\" fill=\"none\" stroke-width=\"10\"><animate attributeName=\"r\" calcMode=\"spline\" values=\"0;59\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0 0.3 0.8 0.8\" begin=\"-1.6s\" repeatCount=\"indefinite\"/><animate attributeName=\"opacity\" calcMode=\"spline\" values=\"1;0\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0.3 0 0.8 1\" begin=\"-1.6s\" repeatCount=\"indefinite\"/></circle><circle cx=\"64\" cy=\"64\" r=\"0\" fill=\"none\" stroke-width=\"10\"><animate attributeName=\"r\" calcMode=\"spline\" values=\"0;59\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0 0.3 0.8 0.8\" begin=\"-0.8s\" repeatCount=\"indefinite\"/><animate attributeName=\"opacity\" calcMode=\"spline\" values=\"1;0\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0.3 0 0.8 1\" begin=\"-0.8s\" repeatCount=\"indefinite\"/></circle><circle cx=\"64\" cy=\"64\" r=\"0\" fill=\"none\" stroke-width=\"10\"><animate attributeName=\"r\" calcMode=\"spline\" values=\"0;59\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0 0.3 0.8 0.8\" begin=\"0s\" repeatCount=\"indefinite\"/><animate attributeName=\"opacity\" calcMode=\"spline\" values=\"1;0\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0.3 0 0.8 1\" begin=\"0s\" repeatCount=\"indefinite\"/></circle></svg>';\n        this.svgIcon = this.utilitiesService.getSvgElementFromString(\n            this.document,\n            svgData\n        );\n        this.setIconStyle();\n    }\n\n    private setButtonStyle(): void {\n        this.renderer.setStyle(this.element.nativeElement, 'display', 'flex');\n        this.renderer.setStyle(\n            this.element.nativeElement,\n            'justify-content',\n            'center'\n        );\n        this.renderer.setStyle(\n            this.element.nativeElement,\n            'align-items',\n            'center'\n        );\n\n        if (this.ignoreDisabledStyle) {\n            this.renderer.addClass(\n                this.element.nativeElement,\n                'ignore-disabled'\n            );\n        }\n    }\n\n    private setIconStyle(): void {\n        if (this.loaderColor) {\n            this.renderer.setStyle(this.svgIcon, 'stroke', this.loaderColor);\n        }\n\n        this.renderer.setStyle(this.svgIcon, 'width', this.loaderWidth);\n        this.renderer.setStyle(this.svgIcon, 'height', this.loaderHeight);\n        this.renderer.setStyle(this.svgIcon, 'margin-inline-start', '0.5rem');\n        this.renderer.addClass(this.svgIcon, 'svg-icon');\n        this.renderer.addClass(this.svgIcon, 'stroke');\n    }\n\n    private toggleLoading(show: boolean): void {\n        if (show) {\n            this._isLoading = true;\n            this.renderer.appendChild(this.element.nativeElement, this.svgIcon);\n            this.renderer.setAttribute(\n                this.element.nativeElement,\n                'disabled',\n                'true'\n            );\n            this.renderer.addClass(this.element.nativeElement, 'lock-events');\n        } else {\n            if (this._isLoading) {\n                this._isLoading = false;\n                this.renderer.removeChild(\n                    this.element.nativeElement,\n                    this.svgIcon\n                );\n                this.renderer.removeAttribute(\n                    this.element.nativeElement,\n                    'disabled'\n                );\n                this.renderer.removeClass(\n                    this.element.nativeElement,\n                    'lock-events'\n                );\n            }\n        }\n    }\n}\n","import { Directive, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n    selector: '[pepMenuBlur]',\n})\nexport class PepMenuBlurDirective {\n    constructor(private element: ElementRef) {}\n\n    @HostListener('menuClosed')\n    menuClosedEvent(): void {\n        setTimeout(() => {\n            this.element.nativeElement.blur();\n        }, 0);\n    }\n\n    @HostListener('menuOpened')\n    menuOpenedEvent(): void {\n        setTimeout(() => {\n            this.element.nativeElement.blur();\n        }, 0);\n    }\n}\n","import {\n    Directive,\n    HostListener,\n    ElementRef,\n    Renderer2,\n    OnInit,\n    Input,\n} from '@angular/core';\n\n@Directive({\n    selector: '[pepDataQa]',\n})\nexport class PepDataQaDirective implements OnInit {\n    @Input('pepDataQa') dataQa: string;\n\n    constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n    ngOnInit(): void {\n        this.renderer.setAttribute(\n            this.element.nativeElement,\n            'data-qa',\n            this.dataQa\n        );\n    }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\n\n@Directive({\n    selector: '[pepPreventMultiClick]',\n})\nexport class PepPreventMultiClickDirective {\n    @Input() disabledTime = 1000;\n\n    @HostListener('click', ['$event'])\n    clickEvent(event): void {\n        event.srcElement.setAttribute('disabled', true);\n        setTimeout(() => {\n            event.srcElement.removeAttribute('disabled');\n        }, this.disabledTime);\n    }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\r\n@Directive({\r\n    selector: \"[pepPrint]\"\r\n})\r\nexport class PepPrintDirective {\r\n\r\n    public _printStyle = [];\r\n\r\n    /**\r\n     * @memberof PepPrintDirective\r\n     */\r\n    @Input() printSectionId: string;\r\n\r\n    /**\r\n     * @memberof PepPrintDirective\r\n     */\r\n    @Input() printTitle: string;\r\n\r\n    /**\r\n     * @memberof PepPrintDirective\r\n     */\r\n    @Input() useExistingCss = true;\r\n\r\n    /**\r\n     * A delay in milliseconds to force the print dialog to wait before opened. Default: 0\r\n     * \r\n     * @memberof PepPrintDirective\r\n     */\r\n    @Input() printDelay = 0;\r\n\r\n    /**\r\n     * @memberof PepPrintDirective\r\n     */\r\n    @Input()\r\n    set printStyle(values: { [key: string]: { [key: string]: string } }) {\r\n        for (const key in values) {\r\n            if (values.hasOwnProperty(key)) {\r\n                this._printStyle.push((key + JSON.stringify(values[key])).replace(/['\"]+/g, ''));\r\n            }\r\n        }\r\n        this.returnStyleValues();\r\n    }\r\n\r\n    /**\r\n     *\r\n     *\r\n     * @returns the string that create the stylesheet which will be injected\r\n     * later within <style></style> tag.\r\n     *\r\n     * - join/replace to transform an array objects to css-styled string\r\n     * @memberof PepPrintDirective\r\n     */\r\n    public returnStyleValues() {\r\n        return `<style> ${this._printStyle.join(' ').replace(/,/g, ';')} </style>`;\r\n    }\r\n\r\n    /**\r\n     * @returns html for the given tag\r\n     *\r\n     * @memberof PepPrintDirective\r\n     */\r\n    private _styleSheetFile = '';\r\n\r\n    /**\r\n     * @memberof PepPrintDirective\r\n     * @param cssList\r\n     */\r\n    @Input()\r\n    set styleSheetFile(cssList: string) {\r\n        const linkTagFn = function (cssFileName) {\r\n            return `<link rel=\"stylesheet\" type=\"text/css\" href=\"${cssFileName}\">`;\r\n        }\r\n        if (cssList.indexOf(',') !== -1) {\r\n            const valueArr = cssList.split(',');\r\n            for (const val of valueArr) {\r\n                this._styleSheetFile = this._styleSheetFile + linkTagFn(val);\r\n            }\r\n        } else {\r\n            this._styleSheetFile = linkTagFn(cssList);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @returns string which contains the link tags containing the css which will\r\n     * be injected later within <head></head> tag.\r\n     *\r\n     */\r\n    private returnStyleSheetLinkTags() {\r\n        return this._styleSheetFile;\r\n    }\r\n    private getElementTag(tag: keyof HTMLElementTagNameMap): string {\r\n        const html: string[] = [];\r\n        const elements = document.getElementsByTagName(tag);\r\n        for (let index = 0; index < elements.length; index++) {\r\n            html.push(elements[index].outerHTML);\r\n        }\r\n        return html.join('\\r\\n');\r\n    }\r\n\r\n    /**\r\n     * \r\n     * @param data the html element collection to save defaults to\r\n     * \r\n     */\r\n    private getFormData(data: any) {\r\n        for (let i = 0; i < data.length; i++) {\r\n            data[i].defaultValue = data[i].value;\r\n            if (data[i].checked) {\r\n                data[i].defaultChecked = true;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @returns html section to be printed along with some associated inputs\r\n     * \r\n     */\r\n    private getHtmlContents() {\r\n        const printContents = document.getElementById(this.printSectionId);\r\n        const innards = printContents.getElementsByTagName('input');\r\n        this.getFormData(innards);\r\n\r\n        const txt = printContents.getElementsByTagName('textarea');\r\n        this.getFormData(txt);\r\n\r\n        return printContents.innerHTML;\r\n    }\r\n\r\n    /**\r\n     * @memberof PepPrintDirective\r\n     */\r\n    @HostListener('click')\r\n    public print(): void {\r\n        let styles = '', links = '';\r\n        const baseTag = this.getElementTag('base');\r\n\r\n        if (this.useExistingCss) {\r\n            styles = this.getElementTag('style');\r\n            links = this.getElementTag('link');\r\n        }\r\n\r\n        const printContents = this.getHtmlContents();\r\n        const popupWin = window.open(\"\", \"_blank\", \"top=0,left=0,height=auto,width=auto\");\r\n        popupWin.document.open();\r\n        popupWin.document.write(`\r\n            <html>\r\n                <head>\r\n                <title>${this.printTitle ? this.printTitle : \"\"}</title>\r\n                ${baseTag}\r\n                ${this.returnStyleValues()}\r\n                ${this.returnStyleSheetLinkTags()}\r\n                ${styles}\r\n                ${links}\r\n                </head>\r\n                <body>\r\n                ${printContents}\r\n                <script defer>\r\n                    function triggerPrint(event) {\r\n                    window.removeEventListener('load', triggerPrint, false);\r\n                    setTimeout(function() {\r\n                        closeWindow(window.print());\r\n                    }, ${this.printDelay});\r\n                    }\r\n                    function closeWindow(){\r\n                        window.close();\r\n                    }\r\n                    window.addEventListener('load', triggerPrint, false);\r\n                </script>\r\n                </body>\r\n            </html>`\r\n        );\r\n        popupWin.document.close();\r\n    }\r\n}","import { HttpRequest } from '@angular/common/http';\nimport { Injectable, Inject } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepJwtHelperService {\n    public urlBase64Decode(str: string): string {\n        let output = str.replace(/-/g, '+').replace(/_/g, '/');\n        switch (output.length % 4) {\n            case 0: {\n                break;\n            }\n            case 2: {\n                output += '==';\n                break;\n            }\n            case 3: {\n                output += '=';\n                break;\n            }\n            default: {\n                throw new Error('Illegal base64url string!');\n            }\n        }\n        return this.b64DecodeUnicode(output);\n    }\n\n    // credits for decoder goes to https://github.com/atk\n    private b64decode(str: string): string {\n        const chars =\n            'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n        let output = '';\n\n        str = String(str).replace(/=+$/, '');\n\n        if (str.length % 4 === 1) {\n            throw new Error(\n                \"'atob' failed: The string to be decoded is not correctly encoded.\"\n            );\n        }\n\n        for (\n            // initialize result and counters\n            let bc = 0, bs: any, buffer: any, idx = 0;\n            // get next character\n            (buffer = str.charAt(idx++));\n            // character found in table? initialize bit storage and add its ascii value;\n            ~buffer &&\n            ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n            // and if not first of each 4 characters,\n            // convert the first 8 bits to one ascii character\n            bc++ % 4)\n                ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n                : 0\n        ) {\n            // try to find character in table (0-63, not found => -1)\n            buffer = chars.indexOf(buffer);\n        }\n        return output;\n    }\n\n    private b64DecodeUnicode(str: any): string {\n        return decodeURIComponent(\n            Array.prototype.map\n                .call(this.b64decode(str), (c: any) => {\n                    return (\n                        '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n                    );\n                })\n                .join('')\n        );\n    }\n\n    public decodeToken(token: string): any {\n        if (!token || token === '') {\n            return null;\n        }\n\n        const parts = token.split('.');\n\n        if (parts.length !== 3) {\n            throw new Error(\n                \"The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.\"\n            );\n        }\n\n        const decoded = this.urlBase64Decode(parts[1]);\n        if (!decoded) {\n            throw new Error('Cannot decode the token.');\n        }\n\n        return JSON.parse(decoded);\n    }\n\n    public getTokenExpirationDate(token: string): Date | null {\n        const decoded = this.decodeToken(token);\n\n        if (!decoded || !decoded.hasOwnProperty('exp')) {\n            return null;\n        }\n\n        const date = new Date(0);\n        date.setUTCSeconds(decoded.exp);\n\n        return date;\n    }\n\n    public isTokenExpired(token: string, offsetSeconds?: number): boolean {\n        if (!token || token === '') {\n            return true;\n        }\n        const date = this.getTokenExpirationDate(token);\n        offsetSeconds = offsetSeconds || 0;\n\n        if (date === null) {\n            return false;\n        }\n\n        return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n    }\n\n    public getAuthScheme(\n        authScheme: (request: HttpRequest<any>) => any | string | undefined,\n        request: HttpRequest<any>\n    ): string {\n        if (typeof authScheme === 'function') {\n            return authScheme(request);\n        }\n\n        return authScheme;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { PepJwtHelperService } from './jwt-helper.service';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepSessionService {\n    private readonly IDP_TOKEN_KEY = 'idp_token';\n    private readonly PAPI_BASE_URL_KEY = 'pepperi.baseurl';\n    // private readonly WAPI_TOKEN_KEY = 'auth_token';\n    private readonly WAPI_BASE_URL_KEY = 'serverHostURL'; // pepperi.webapibaseurl\n    // private readonly PEPPERI_CONSUMER_TOKEN: 'YY2pAwx6Exo2LWXrUllF9xzSfWF53wqc';\n\n    constructor(private jwtHelper: PepJwtHelperService) {}\n\n    private getParseToken(): any {\n        // debugger;\n        // const tokenTest = \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjRiYTFjNzJmMTI3NThjYzEzMzg3ZWQ3YTBiZjNlODg3IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTY3MjU5NjksImV4cCI6MTU5NjcyNjI2OSwiaXNzIjoiaHR0cHM6Ly9pZHAuc2FuZGJveC5wZXBwZXJpLmNvbSIsImF1ZCI6InBlcHBlcmkud2ViYXBwLmFwcC5zYW5kYm94LnBlcHBlcmkuY29tIiwiaWF0IjoxNTk2NzI1OTY5LCJhdF9oYXNoIjoiSGtmRXJ0Q2JzQ3NzOTVKUm05VmJTdyIsInNpZCI6IjJkNzFiM2JiNWUyNjRiNDk2Y2JmZDkzNmYyNTNhNWIzIiwic3ViIjoiZTJkZmQ0MDYtZDM4Yy00ZmYwLThhZGItMWRlMjI3ODIzYWEyIiwiYXV0aF90aW1lIjoxNTk2NzE4ODA5LCJpZHAiOiJsb2NhbCIsIm5hbWUiOiJkYW5pZWwgZGF2aWRvZmYiLCJlbWFpbCI6ImRhbmllbC5kQHBlcHBlcml0ZXN0LmNvbSIsInBlcHBlcmkuaWQiOjg2OTAzMDQsInBlcHBlcmkudXNlcnV1aWQiOiJlMmRmZDQwNi1kMzhjLTRmZjAtOGFkYi0xZGUyMjc4MjNhYTIiLCJwZXBwZXJpLmRpc3RyaWJ1dG9yaWQiOjMwMDEyMzUxLCJwZXBwZXJpLmRpc3RyaWJ1dG9ydXVpZCI6IjBiZDBlZDc5LThlOWUtNDRmYi05NmY0LThlNTNlZDljZTgyYiIsInBlcHBlcmkuZGF0YWNlbnRlciI6InNhbmRib3giLCJwZXBwZXJpLmtlZXBsb2dpbiI6ZmFsc2UsInBlcHBlcmkuaWRsZXRpbWV3ZWIiOjEyMCwidXBkYXRlZF9hdCI6MTU5NjcwMjgwMCwiZ2l2ZW5fbmFtZSI6ImRhbmllbCIsImZhbWlseV9uYW1lIjoiZGF2aWRvZmYiLCJwZXBwZXJpLmFwaW50YmFzZXVybCI6Imh0dHBzOi8vcmVzdGFwaS5zYW5kYm94LnBlcHBlcmkuY29tIiwicGVwcGVyaS53ZWJhcGliYXNldXJsIjoiaHR0cHM6Ly93ZWJhcGkuc2FuZGJveC5wZXBwZXJpLmNvbS9WMTZfNTAvV2ViQXBwXzYiLCJwZXBwZXJpLnB1YmxpY2FwaWJhc2V1cmwiOiJodHRwczovL2FwaS1zYW5kYm94LnBlcHBlcmkuY29tIiwicGVwcGVyaS5iYXNldXJsIjoiaHR0cHM6Ly9wYXBpLnNhbmRib3gucGVwcGVyaS5jb20vVjEuMCIsInBlcHBlcmkuZW1wbG95ZWV0eXBlIjoxLCJhbXIiOlsicHdkIl19.tNtZT3Cl4dMmTQftoaO2KP5BvHOlWGIP-5GpHrAhZoymBkxBSxpKprQGqr0ATtQlNHjX3gDV1W6k_avaSkyJgDiB2hcwr1tNRilasNuMzNV93gxLC9Oh_HdkIN4cZ0hahIcJvf_17PHpS8zD_MRwvGG_i45wRYJAtiGXChxCMzooethRsLOq5TEwuNbE3MxdjZOpImGYyytmsfdsdJRWQn1LQwQBt95ssuypcUzBsVB34P5XuFttjAe9dhTwHIfgsPG-VdfAWH_r-hVe834wKpKrplSWlC_MucgS0X4XP_tN4CtLnHO2wXKPsojqSTH2NQycfqh6YvT6rzRDBEdQIQ\";\n        const token = this.getIdpToken();\n        // token = token || tokenTest;\n\n        const decodedToken = this.jwtHelper.decodeToken(token);\n        // const expirationDate = this.jwtHelper.getTokenExpirationDate(token);\n        // const isExpired = this.jwtHelper.isTokenExpired(token);\n\n        return decodedToken;\n    }\n\n    setObject<T>(key: string, object: T): void {\n        const stringifiedObject =\n            typeof object === 'string' || object instanceof String\n                ? object\n                : JSON.stringify(object);\n\n        sessionStorage.setItem(key, stringifiedObject.toString());\n    }\n\n    getObject<T = any>(key: string): T {\n        let result = null;\n        const item = sessionStorage.getItem(key);\n\n        try {\n            result = item ? (JSON.parse(item) as T) : item;\n        } catch {\n            result = item;\n        }\n\n        return result;\n    }\n\n    // setObject(key: string, value: string): void {\n    //     sessionStorage.setItem(key, value);\n    // }\n\n    // getObject(key: string): string | null {\n    //     return sessionStorage.getItem(key);\n    // }\n\n    removeObject(key: string): void {\n        sessionStorage.removeItem(key);\n    }\n\n    // getWapiToken(): string {\n    //     return this.getObject(this.WAPI_TOKEN_KEY);\n    // }\n\n    getWapiBaseUrl(): string {\n        return this.getObject(this.WAPI_BASE_URL_KEY);\n    }\n\n    getIdpToken(): string {\n        return this.getObject(this.IDP_TOKEN_KEY);\n    }\n\n    getPapiBaseUrl(): string {\n        const tokenObj = this.getParseToken();\n        return tokenObj ? tokenObj[this.PAPI_BASE_URL_KEY] : null;\n    }\n}\n","import { Injectable } from '@angular/core';\n\nexport type PepFileType = 'script' | 'style';\n\nexport interface IPepExternalFileModel {\n    path: string;\n    type: PepFileType;\n}\n\ndeclare let document: any;\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepFileService {\n    private scripts: Map<string, { loaded: boolean; src: string }>;\n    private styles: Map<string, { loaded: boolean; src: string }>;\n\n    constructor() {\n        this.scripts = new Map<string, { loaded: boolean; src: string }>();\n        this.styles = new Map<string, { loaded: boolean; src: string }>();\n    }\n\n    loadFiles(files: IPepExternalFileModel[]): Promise<any[]> {\n        const promises: any[] = [];\n        files.forEach((file) => {\n            if (file.type === 'style') {\n                promises.push(this.loadStyle(file.path));\n            } else if (file.type === 'script') {\n                promises.push(this.loadScript(file.path));\n            }\n        });\n        return Promise.all(promises);\n    }\n\n    removeFiles(files: IPepExternalFileModel[]): void {\n        for (\n            let index = 0;\n            index < files.length &&\n            files[index].path &&\n            files[index].path.trim() !== '';\n            index++\n        ) {\n            const name = this.getFileName(files[index].path, true);\n            const element = document.getElementById(name);\n            element.parentNode.removeChild(element);\n\n            if (files[index].type === 'script' && this.scripts.has(name)) {\n                this.scripts.delete(name);\n            } else if (files[index].type === 'style' && this.styles.has(name)) {\n                this.styles.delete(name);\n            }\n        }\n    }\n\n    loadScript(path: string): Promise<any> {\n        return new Promise((resolve, reject) => {\n            const name = this.getFileName(path, true);\n\n            // If the script isn't exist add it.\n            if (!this.scripts.has(name)) {\n                this.scripts.set(name, { loaded: false, src: path });\n            }\n\n            const scriptItem = this.scripts.get(name);\n\n            // Resolve if already loaded\n            if (scriptItem.loaded) {\n                resolve({\n                    script: name,\n                    loaded: true,\n                    status: 'Already Loaded',\n                });\n            } else {\n                // Load script\n                const script = document.createElement('script');\n                script.type = 'text/javascript';\n                script.src = scriptItem.src;\n                script.setAttribute('id', name);\n                script.async = false;\n\n                if (script.readyState) {\n                    // IE\n                    script.onreadystatechange = () => {\n                        if (\n                            script.readyState === 'loaded' ||\n                            script.readyState === 'complete'\n                        ) {\n                            script.onreadystatechange = null;\n                            scriptItem.loaded = true;\n                            resolve({\n                                path,\n                                type: 'script',\n                                loaded: true,\n                                status: 'Loaded',\n                            });\n                        }\n                    };\n                } else {\n                    // Others\n                    script.onload = () => {\n                        scriptItem.loaded = true;\n                        resolve({\n                            path,\n                            type: 'script',\n                            loaded: true,\n                            status: 'Loaded',\n                        });\n                    };\n                }\n                script.onerror = (error: any) =>\n                    resolve({\n                        path,\n                        type: 'script',\n                        loaded: false,\n                        status: 'Loaded',\n                    });\n                document.getElementsByTagName('head')[0].appendChild(script);\n            }\n        });\n    }\n\n    loadStyle(path: string): Promise<any> {\n        return new Promise((resolve, reject) => {\n            const name = this.getFileName(path, true);\n\n            // If the style isn't exist add it.\n            if (!this.styles.has(name)) {\n                this.styles.set(name, { loaded: false, src: path });\n            }\n\n            const styleItem = this.styles.get(name);\n\n            // Resolve if already loaded\n            if (styleItem.loaded) {\n                resolve({\n                    path,\n                    type: 'style',\n                    loaded: true,\n                    status: 'Already Loaded',\n                });\n            } else {\n                // Load style\n                const style = document.createElement('link');\n                style.type = 'text/css';\n                style.rel = 'stylesheet';\n                style.href = styleItem.src;\n                style.media = 'all';\n                style.setAttribute('id', name);\n\n                styleItem.loaded = true;\n                resolve({\n                    path,\n                    type: 'style',\n                    loaded: true,\n                    status: 'Loaded',\n                });\n\n                document.getElementsByTagName('head')[0].appendChild(style);\n            }\n        });\n    }\n\n    loadFontStyle(styleId: string, href: string): void {\n        const head = document.getElementsByTagName('head')[0];\n\n        const styleElement = document.getElementById(\n            styleId\n        ) as HTMLLinkElement;\n\n        if (styleElement) {\n            styleElement.href = href;\n        } else {\n            const style = document.createElement('link');\n            style.id = styleId;\n            style.rel = 'stylesheet';\n            style.href = `${href}`;\n\n            head.appendChild(style);\n        }\n    }\n\n    getFileName(filePath: string, withExtenstion = false): string {\n        const lastIndex = withExtenstion\n            ? filePath.length - 1\n            : filePath.lastIndexOf('.');\n\n        return filePath.substr(filePath.lastIndexOf('/') + 1, lastIndex);\n    }\n\n    getFileExtension(filePath: string): string {\n        const fileSplit = filePath.split('.');\n        let fileExt = '';\n        if (fileSplit.length > 1) {\n            fileExt = fileSplit[fileSplit.length - 2];\n        }\n        return fileExt;\n    }\n\n    /* Returns true if url is valid */\n    isValidUrl(url: string): boolean {\n        /* Try creating a valid URL */\n        try {\n            const tmp = new URL(url);\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    convertFromb64toBlob(\n        b64Data: any,\n        contentType = '',\n        sliceSize = 512\n    ): Blob {\n        const byteCharacters = atob(b64Data);\n        const byteArrays = [];\n\n        for (\n            let offset = 0;\n            offset < byteCharacters.length;\n            offset += sliceSize\n        ) {\n            const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n            const byteNumbers = new Array(slice.length);\n            for (let i = 0; i < slice.length; i++) {\n                byteNumbers[i] = slice.charCodeAt(i);\n            }\n\n            const byteArray = new Uint8Array(byteNumbers);\n            byteArrays.push(byteArray);\n        }\n\n        const blob = new Blob(byteArrays, { type: contentType });\n        return blob;\n    }\n\n    getAssetsPath(assetsDomain = '', libName = 'ngx-lib'): string {\n        const concatChar =\n            assetsDomain === '' || assetsDomain.endsWith('/') ? '' : '/';\n        return `${assetsDomain}${concatChar}assets/${libName}/`;\n    }\n\n    getAssetsTranslationsSuffix(libName = 'ngx-lib'): string {\n        return `.${libName}.json`;\n    }\n\n    getAssetsTranslationsPath(assetsDomain = '', libName = 'ngx-lib'): string {\n        return `${this.getAssetsPath(assetsDomain, libName)}i18n/`;\n    }\n\n    getAssetsImagesPath(assetsDomain = '', image = '', libName = 'ngx-lib'): string {\n        return `${this.getAssetsPath(assetsDomain, libName)}images/${image}`;\n    }\n\n    getSvgAsImageSrc(svg: string): string {\n        const blob = new Blob([svg], { type: 'image/svg+xml' });\n        const url = URL.createObjectURL(blob);\n        return url;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { PepSessionService } from '../common/services/session.service';\nimport { PepFileService } from '../common/services/file.service';\nimport { PepStyleType, PepFieldBase } from './customization.model';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepCustomizationService {\n    static STAND_ALONE_FIELD_CLASS_NAME = 'pep-field';\n    static STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME = 'pep-field-no-spacing';\n\n    static REM_STRING = 'rem';\n    static PX_STRING = 'px';\n    static USER_THEME = 'user_theme';\n    static USER_COLOR = 'user_color';\n    static USER_THEME_VARIABLES = 'user_theme_variables';\n\n    // Header height\n    static HEADER_HEIGHT_KEY = '--pep-header-height';\n\n    // Side bar variables keys\n    static SIDE_BAR_WIDTH_KEY = '--pep-side-bar-width';\n\n    // Settings width\n    static SETTINGS_WIDTH_KEY = '--pep-settings-bar-width';\n\n    // Top bar variables keys\n    static TOP_BAR_SPACING_TOP_KEY = '--pep-top-bar-spacing-top';\n    static TOP_BAR_SPACING_BOTTOM_KEY = '--pep-top-bar-spacing-bottom';\n    static TOP_BAR_FIELD_HEIGHT_KEY = '--pep-top-bar-field-height';\n\n    // Footer variables keys\n    static FOOTER_HEIGHT_KEY = '--pep-footer-bar-height';\n    static FOOTER_BAR_SPACING_TOP_KEY = '--pep-footer-bar-spacing-top';\n    static FOOTER_BAR_SPACING_BOTTOM_KEY = '--pep-footer-bar-spacing-bottom';\n\n    // Main container height\n    static MAIN_HEIGHT_KEY = '--pep-main-height';\n\n    // Colors variables keys\n    static COLOR_USER_PRIMARY_KEY = '--pep-color-user-primary';\n    static COLOR_USER_SECONDARY_KEY = '--pep-color-user-secondary';\n    static COLOR_SYSTEM_PRIMARY_INVERT_KEY =\n        '--pep-color-system-primary-invert';\n    static COLOR_SYSTEM_PRIMARY_KEY = '--pep-color-system-primary';\n    static COLOR_TEXT_LINK_KEY = '--pep-color-text-link';\n    static COLOR_SYSTEM_CAUTION_KEY = '--pep-color-system-caution';\n    static COLOR_SYSTEM_SUCCESS_KEY = '--pep-color-system-success';\n    static COLOR_STRONG_KEY = '--pep-color-strong';\n    static COLOR_REGULAR_KEY = '--pep-color-regular';\n    static COLOR_WEAK_KEY = '--pep-color-weak';\n\n    // Top header variables keys\n    static COLOR_TOP_HEADER_KEY = '--pep-color-top-header';\n    static STYLE_TOP_HEADER_KEY = '--pep-style-top-header';\n\n    // QS variables keys\n    static COLOR_QS_KEY = '--pep-color-qs';\n    static STYLE_QS_KEY = '--pep-style-qs';\n\n    // Fonts variables keys\n    static FONT_FAMILY_TITLE_KEY = '--pep-font-family-title';\n    static FONT_FAMILY_TITLE_NORMAL_URL_KEY =\n        '--pep-font-family-title-normal-url';\n    static FONT_FAMILY_TITLE_BOLD_URL_KEY = '--pep-font-family-title-bold-url';\n    static FONT_FAMILY_BODY_KEY = '--pep-font-family-body';\n    static FONT_FAMILY_BODY_NORMAL_URL_KEY =\n        '--pep-font-family-body-normal-url';\n    static FONT_FAMILY_BODY_BOLD_URL_KEY = '--pep-font-family-body-bold-url';\n\n    // Border radius variables keys\n    static BORDER_RADIUS_KEY = '--pep-border-radius';\n    static BORDER_RADIUS_SM_KEY =\n        PepCustomizationService.BORDER_RADIUS_KEY + '-sm';\n    static BORDER_RADIUS_MD_KEY =\n        PepCustomizationService.BORDER_RADIUS_KEY + '-md';\n    static BORDER_RADIUS_LG_KEY =\n        PepCustomizationService.BORDER_RADIUS_KEY + '-lg';\n    static BORDER_RADIUS_XL_KEY =\n        PepCustomizationService.BORDER_RADIUS_KEY + '-xl';\n\n    // Fonts variables keys\n    static FONT_SIZE_2XS_KEY = '--pep-font-size-2xs';\n    static FONT_SIZE_XS_KEY = '--pep-font-size-xs';\n    static FONT_SIZE_SM_KEY = '--pep-font-size-sm';\n    static FONT_SIZE_MD_KEY = '--pep-font-size-md';\n    static FONT_SIZE_LG_KEY = '--pep-font-size-lg';\n    static FONT_SIZE_XL_KEY = '--pep-font-size-xl';\n    static FONT_SIZE_2XL_KEY = '--pep-font-size-2xl';\n\n    // Line height variables keys\n    static LINE_HEIGHT_2XS_KEY = '--pep-line-height-2xs';\n    static LINE_HEIGHT_XS_KEY = '--pep-line-height-xs';\n    static LINE_HEIGHT_SM_KEY = '--pep-line-height-sm';\n    static LINE_HEIGHT_MD_KEY = '--pep-line-height-md';\n    static LINE_HEIGHT_LG_KEY = '--pep-line-height-lg';\n    static LINE_HEIGHT_XL_KEY = '--pep-line-height-xl';\n    static LINE_HEIGHT_2XL_KEY = '--pep-line-height-2xl';\n\n    // Shadows offset variables keys\n    static SHADOW_NONE_OFFSET_KEY = '--pep-shadow-none-offset';\n    static SHADOW_XS_OFFSET_KEY = '--pep-shadow-xs-offset';\n    static SHADOW_SM_OFFSET_KEY = '--pep-shadow-sm-offset';\n    static SHADOW_MD_OFFSET_KEY = '--pep-shadow-md-offset';\n    static SHADOW_LG_OFFSET_KEY = '--pep-shadow-lg-offset';\n    static SHADOW_XL_OFFSET_KEY = '--pep-shadow-xl-offset';\n\n    // Spacing variables keys\n    static SPACING_SIZE_2XS_KEY = '--pep-spacing-2xs';\n    static SPACING_SIZE_XS_KEY = '--pep-spacing-xs';\n    static SPACING_SIZE_SM_KEY = '--pep-spacing-sm';\n    static SPACING_SIZE_MD_KEY = '--pep-spacing-md';\n    static SPACING_SIZE_LG_KEY = '--pep-spacing-lg';\n    static SPACING_SIZE_XL_KEY = '--pep-spacing-xl';\n    static SPACING_SIZE_2XL_KEY = '--pep-spacing-2xl';\n    static SPACING_SIZE_3XL_KEY = '--pep-spacing-3xl';\n    static SPACING_SIZE_4XL_KEY = '--pep-spacing-4xl';\n    static SPACING_SIZE_5XL_KEY = '--pep-spacing-5xl';\n    static SPACING_SIZE_6XL_KEY = '--pep-spacing-6xl';\n    static SPACING_SIZE_7XL_KEY = '--pep-spacing-7xl';\n    static SPACING_SIZE_8XL_KEY = '--pep-spacing-8xl';\n    static SPACING_SIZE_9XL_KEY = '--pep-spacing-9xl';\n\n    // Form variables keys\n    static FORM_FIELD_HEIGHT_KEY = '--pep-form-field-height';\n    static FORM_FIELD_TITLE_HEIGHT_KEY = '--pep-form-field-title-height';\n    static FORM_FIELD_SPACEING_KEY = '--pep-form-field-spacing';\n    static FORM_SPACEING_KEY = '--pep-form-spacing';\n\n    // Card variables keys\n    static CARD_FIELD_HEIGHT_KEY = '--pep-card-field-height';\n    static CARD_SPACEING_KEY = '--pep-card-spacing';\n    static CARD_SHADOW_OFFSET_KEY = '--pep-shadow-card-offset';\n    static CARD_BORDER_RADIUS_KEY = '--pep-card-border-radius';\n\n    // Table variables keys\n    static TABLE_FIELD_HEIGHT_KEY = '--pep-table-field-height';\n    static TABLE_SPACEING_KEY = '--pep-table-spacing';\n    static TABLE_BORDER_RADIUS_KEY = '--pep-table-border-radius';\n\n    static DEFAULT_HEADER_HEIGHT = 64; // Default\n\n    static DEFAULT_SPINNER_COLOR = '#78aa00';\n    static DEFAULT_BRANDING_COLOR = '#fff';\n\n    public hasCustomHomepage: boolean = null;\n    public hasCustomHeader: boolean = null;\n    public customHeaderHeight = PepCustomizationService.DEFAULT_HEADER_HEIGHT;\n    public mainContHeight = 0;\n    public footerHeight = new BehaviorSubject<number>(0);\n    public settingsWidth = new BehaviorSubject<number>(0);\n\n    constructor(\n        private sessionService: PepSessionService,\n        private fileService: PepFileService,\n        public fb: FormBuilder\n    ) {\n        this.hideFooter();\n        //\n    }\n\n    getDefaultFromGroup(field: PepFieldBase, withValidators = true): FormGroup {\n        const validators = withValidators ? field.getValidators() : [];\n        const group = {};\n        group[field.key] = [\n            { value: field.value, disabled: field.disabled },\n            validators,\n        ];\n        return this.fb.group(group);\n    }\n\n    getFormControl(\n        form: FormGroup,\n        fieldKey: string,\n        parentFieldKey: string = null\n    ): any {\n        let formControl = null;\n\n        if (form && form.controls) {\n            if (parentFieldKey === null) {\n                formControl = form.controls[fieldKey];\n            } else {\n                formControl = form.controls[parentFieldKey]?.get(fieldKey);\n            }\n        }\n\n        return formControl;\n    }\n\n    updateFormFieldValue(\n        form: FormGroup,\n        fieldKey: string,\n        value = '',\n        parentFieldKey: string = null\n    ): void {\n        const formControl = this.getFormControl(form, fieldKey, parentFieldKey);\n        if (formControl) {\n            formControl.setValue(value);\n        }\n    }\n\n    updateFormField(\n        form: FormGroup,\n        field: PepFieldBase,\n        value = '',\n        parentField: PepFieldBase = null\n    ): void {\n        const formControl: FormControl = this.getFormControl(\n            form,\n            field.key,\n            parentField?.key\n        );\n        if (formControl) {\n            formControl.setValue(value);\n\n            // If disabled has changed.\n            if (formControl.disabled !== field.disabled) {\n                field.disabled ? formControl.disable() : formControl.enable();\n\n                const validators = field.getValidators();\n                formControl.setValidators(validators);\n            }\n        }\n    }\n\n    calculateFormFieldHeight(\n        withTitle = true,\n        rowSpan = 1,\n        standAlone = false\n    ): number {\n        const themeVars = this.getThemeVariables();\n        const rowFieldHeight = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n        );\n        const rowFieldTitleHeight = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n        );\n        const rowFieldSpacingBottom = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.FORM_SPACEING_KEY\n        );\n\n        let fieldHeight = 0;\n        if (rowSpan === 1) {\n            fieldHeight =\n                (withTitle ? rowFieldTitleHeight : 0) + rowFieldHeight;\n        } else {\n            const rowSpanCalc = withTitle ? rowSpan : rowSpan - 1;\n            fieldHeight =\n                rowSpan * rowFieldHeight +\n                rowSpanCalc * rowFieldTitleHeight +\n                (standAlone ? 0 : rowSpanCalc * rowFieldSpacingBottom);\n        }\n\n        return fieldHeight;\n    }\n\n    calculateCardRowsHeight(rowsCount = 1, withSpacing = true): number {\n        const themeVars = this.getThemeVariables();\n        const cardFieldHeight = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n        );\n        const cardFieldSpacing = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.CARD_SPACEING_KEY\n        );\n\n        const fieldHeight =\n            rowsCount * cardFieldHeight +\n            (rowsCount - 1) * (withSpacing ? cardFieldSpacing : 0);\n        return fieldHeight;\n    }\n\n    calculateTableRowsHeight(rowsCount = 1, withSpacing = true): number {\n        const themeVars = this.getThemeVariables();\n        const tableFieldHeight = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.TABLE_FIELD_HEIGHT_KEY\n        );\n        const tableFieldSpacing = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.TABLE_SPACEING_KEY\n        );\n\n        const fieldHeight =\n            rowsCount *\n            (tableFieldHeight + (withSpacing ? tableFieldSpacing * 2 : 0));\n        return fieldHeight;\n    }\n\n    calculateFieldHeight(layoutType = 'form', rowSpan, standAlone): string {\n        let fieldHeight = 'inherit'; // Default for card (with no title)\n        if (layoutType === 'table') {\n            fieldHeight = this.getThemeVariable(\n                PepCustomizationService.TABLE_FIELD_HEIGHT_KEY\n            );\n        } else if (layoutType === 'card') {\n            fieldHeight =\n                this.calculateCardRowsHeight(rowSpan, !standAlone) +\n                PepCustomizationService.REM_STRING;\n        } else {\n            // Form\n            fieldHeight =\n                this.calculateFormFieldHeight(false, rowSpan, standAlone) +\n                PepCustomizationService.REM_STRING;\n        }\n\n        return fieldHeight;\n    }\n\n    getBrandingTheme(): string {\n        const themeObj = this.sessionService.getObject(\n            PepCustomizationService.USER_THEME\n        );\n        return (themeObj && themeObj.Theme) || 'default-theme'; // 'light-theme';\n    }\n\n    getDefaultThemeLayoutVariables(themeVars: any): void {\n        // Declare default screen sizes.\n        themeVars['--pep-screen-max-size-2xs'] =\n            '460' + PepCustomizationService.PX_STRING;\n        themeVars['--pep-screen-max-size-xs'] =\n            '767' + PepCustomizationService.PX_STRING;\n        themeVars['--pep-screen-max-size-sm'] =\n            '991' + PepCustomizationService.PX_STRING;\n        themeVars['--pep-screen-max-size-md'] =\n            '1199' + PepCustomizationService.PX_STRING;\n        themeVars['--pep-screen-max-size-lg'] =\n            '1366' + PepCustomizationService.PX_STRING;\n        themeVars['--pep-screen-max-size-xl'] =\n            '1920' + PepCustomizationService.PX_STRING;\n\n        // Declare default top bar.\n        themeVars[PepCustomizationService.SIDE_BAR_WIDTH_KEY] =\n            '16' + PepCustomizationService.REM_STRING;\n\n        // Declare default top bar.\n        themeVars[PepCustomizationService.TOP_BAR_SPACING_TOP_KEY] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.TOP_BAR_SPACING_BOTTOM_KEY] =\n            '0.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY] =\n            '2.5' + PepCustomizationService.REM_STRING;\n\n        // Declare default footer.\n        themeVars[PepCustomizationService.FOOTER_BAR_SPACING_TOP_KEY] =\n            '0.75' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FOOTER_BAR_SPACING_BOTTOM_KEY] =\n            '1.25' + PepCustomizationService.REM_STRING;\n    }\n\n    getDefaultThemeBorderRadiusVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.BORDER_RADIUS_SM_KEY] =\n            '0.125' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.BORDER_RADIUS_MD_KEY] =\n            '0.25' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.BORDER_RADIUS_LG_KEY] =\n            '0.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.BORDER_RADIUS_XL_KEY] =\n            '1' + PepCustomizationService.REM_STRING;\n    }\n\n    getDefaultThemeSpacingVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.SPACING_SIZE_2XS_KEY] =\n            '0.125' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_XS_KEY] =\n            '0.25' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_SM_KEY] =\n            '0.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_MD_KEY] =\n            '0.75' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_LG_KEY] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_XL_KEY] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_2XL_KEY] =\n            '2' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_3XL_KEY] =\n            '2.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_4XL_KEY] =\n            '3' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_5XL_KEY] =\n            '3.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_6XL_KEY] =\n            '5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_7XL_KEY] =\n            '6' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_8XL_KEY] =\n            '8' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.SPACING_SIZE_9XL_KEY] =\n            '16' + PepCustomizationService.REM_STRING;\n    }\n\n    getDefaultThemeFontsVariables(themeVars: any): void {\n        // Title font family\n        themeVars[PepCustomizationService.FONT_FAMILY_TITLE_KEY] = 'Nexa';\n\n        // Body font family\n        themeVars[PepCustomizationService.FONT_FAMILY_BODY_KEY] = 'Inter';\n\n        // Font sizes\n        themeVars[PepCustomizationService.FONT_SIZE_2XS_KEY] =\n            '0.625' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FONT_SIZE_XS_KEY] =\n            '0.75' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FONT_SIZE_SM_KEY] =\n            '0.875' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FONT_SIZE_MD_KEY] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FONT_SIZE_LG_KEY] =\n            '1.125' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FONT_SIZE_XL_KEY] =\n            '1.25' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FONT_SIZE_2XL_KEY] =\n            '1.5' + PepCustomizationService.REM_STRING;\n\n        // Line height\n        themeVars[PepCustomizationService.LINE_HEIGHT_2XS_KEY] =\n            '0.75' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.LINE_HEIGHT_XS_KEY] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.LINE_HEIGHT_SM_KEY] =\n            '1.25' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.LINE_HEIGHT_MD_KEY] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.LINE_HEIGHT_LG_KEY] =\n            '1.75' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.LINE_HEIGHT_XL_KEY] =\n            '2' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.LINE_HEIGHT_2XL_KEY] =\n            '2.25' + PepCustomizationService.REM_STRING;\n\n        // Font weight\n        themeVars['--pep-font-weight-normal'] = 400;\n        themeVars['--pep-font-weight-bold'] = 600;\n        themeVars['--pep-font-weight-bolder'] = 800;\n    }\n\n    getDefaultThemeButtonsVariables(themeVars: any): void {\n        themeVars['--pep-button-2xs-horizontal-spacing'] =\n            '0.25' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-2xs-min-width'] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-2xs-height'] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-2xs-font-size'] =\n            'var(' + PepCustomizationService.FONT_SIZE_2XS_KEY + ')';\n        // themeVars['--pep-button-2xs-icon-horizontal-spacing'] = '0.125' + PepCustomizationService.REM_STRING;\n\n        themeVars['--pep-button-xs-horizontal-spacing'] =\n            '0.5' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-xs-min-width'] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-xs-height'] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-xs-font-size'] =\n            'var(' + PepCustomizationService.FONT_SIZE_XS_KEY + ')';\n        // themeVars['--pep-button-xs-icon-horizontal-spacing'] = '0.25' + PepCustomizationService.REM_STRING;\n\n        themeVars['--pep-button-sm-horizontal-spacing'] =\n            '0.75' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-sm-min-width'] =\n            '2' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-sm-height'] =\n            '2' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-sm-font-size'] =\n            'var(' + PepCustomizationService.FONT_SIZE_SM_KEY + ')';\n        // themeVars['--pep-button-sm-icon-horizontal-spacing'] = '0.5' + PepCustomizationService.REM_STRING;\n\n        themeVars['--pep-button-md-horizontal-spacing'] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-md-min-width'] =\n            '2.5' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-md-height'] =\n            '2.5' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-md-font-size'] =\n            'var(' + PepCustomizationService.FONT_SIZE_MD_KEY + ')';\n        // themeVars['--pep-button-md-icon-horizontal-spacing'] = '0.5' + PepCustomizationService.REM_STRING;\n\n        themeVars['--pep-button-lg-horizontal-spacing'] =\n            '1' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-lg-min-width'] =\n            '3' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-lg-height'] =\n            '3' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-lg-font-size'] =\n            'var(' + PepCustomizationService.FONT_SIZE_LG_KEY + ')';\n        // themeVars['--pep-button-lg-icon-horizontal-spacing'] = '0.75' + PepCustomizationService.REM_STRING;\n\n        themeVars['--pep-button-xl-horizontal-spacing'] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-xl-min-width'] =\n            '4' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-xl-height'] =\n            '4' + PepCustomizationService.REM_STRING;\n        themeVars['--pep-button-xl-font-size'] =\n            'var(' + PepCustomizationService.FONT_SIZE_XL_KEY + ')';\n        // themeVars['--pep-button-xl-icon-horizontal-spacing'] = '1' + PepCustomizationService.REM_STRING;\n    }\n\n    getSystemPrimaryInvertColorsVariables(themeVars: any): void {\n        themeVars[\n            PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY + '-h'\n        ] = '255';\n        themeVars[\n            PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY + '-s'\n        ] = '100%';\n        themeVars[\n            PepCustomizationService.COLOR_SYSTEM_PRIMARY_INVERT_KEY + '-l'\n        ] = '100%';\n    }\n\n    getSystemPrimaryColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h'] =\n            '0';\n        themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s'] =\n            '0%';\n        themeVars[PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l'] =\n            '10%';\n    }\n\n    getSystemSuccessColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY + '-h'] =\n            '100';\n        themeVars[PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY + '-s'] =\n            '100%';\n        themeVars[PepCustomizationService.COLOR_SYSTEM_SUCCESS_KEY + '-l'] =\n            '25%';\n    }\n\n    getSystemCautionColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-h'] =\n            '360';\n        themeVars[PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-s'] =\n            '100%';\n        themeVars[PepCustomizationService.COLOR_SYSTEM_CAUTION_KEY + '-l'] =\n            '40%';\n    }\n\n    getUserPrimaryColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-h'] = '78';\n        themeVars[PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-s'] =\n            '87%';\n        themeVars[PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-l'] =\n            '27%';\n    }\n\n    getUserSecondaryColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_USER_SECONDARY_KEY + '-h'] =\n            '77';\n        themeVars[PepCustomizationService.COLOR_USER_SECONDARY_KEY + '-s'] =\n            '87%';\n        themeVars[PepCustomizationService.COLOR_USER_SECONDARY_KEY + '-l'] =\n            '42%';\n    }\n\n    getWeakColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_WEAK_KEY + '-h'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h)';\n        themeVars[PepCustomizationService.COLOR_WEAK_KEY + '-s'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s)';\n        themeVars[PepCustomizationService.COLOR_WEAK_KEY + '-l'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';\n    }\n\n    getRegularColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_REGULAR_KEY + '-h'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h)';\n        themeVars[PepCustomizationService.COLOR_REGULAR_KEY + '-s'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s)';\n        themeVars[PepCustomizationService.COLOR_REGULAR_KEY + '-l'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';\n    }\n\n    getStrongColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_STRONG_KEY + '-h'] =\n            'var(' + PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-h)';\n        themeVars[PepCustomizationService.COLOR_STRONG_KEY + '-s'] =\n            'var(' + PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-s)';\n        themeVars[PepCustomizationService.COLOR_STRONG_KEY + '-l'] =\n            'var(' + PepCustomizationService.COLOR_USER_PRIMARY_KEY + '-l)';\n    }\n\n    getTextColorsVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.COLOR_TEXT_LINK_KEY + '-h'] = '207';\n        themeVars[PepCustomizationService.COLOR_TEXT_LINK_KEY + '-s'] = '76%';\n        themeVars[PepCustomizationService.COLOR_TEXT_LINK_KEY + '-l'] = '37%';\n    }\n\n    getDefaultThemeColorsVariables(themeVars: any): void {\n        // System primary invert colors.\n        this.getSystemPrimaryInvertColorsVariables(themeVars);\n        // System primary colors.\n        this.getSystemPrimaryColorsVariables(themeVars);\n        // System success colors.\n        this.getSystemSuccessColorsVariables(themeVars);\n        // System caution colors.\n        this.getSystemCautionColorsVariables(themeVars);\n        // User primary colors.\n        this.getUserPrimaryColorsVariables(themeVars);\n        // User secondary colors.\n        this.getUserSecondaryColorsVariables(themeVars);\n\n        // Weak colors.\n        this.getWeakColorsVariables(themeVars);\n        // Regular colors.\n        this.getRegularColorsVariables(themeVars);\n        // Strong colors.\n        this.getStrongColorsVariables(themeVars);\n\n        // Text colors.\n        this.getTextColorsVariables(themeVars);\n    }\n\n    getDefaultThemeShadowsVariables(themeVars: any): void {\n        const noneOffset = '0';\n        themeVars[PepCustomizationService.SHADOW_NONE_OFFSET_KEY] = noneOffset;\n\n        const xsOffset = '0 0.125rem 0.25rem 0';\n        themeVars[PepCustomizationService.SHADOW_XS_OFFSET_KEY] = xsOffset;\n\n        const smOffset = '0 0.25rem 0.5rem 0';\n        themeVars[PepCustomizationService.SHADOW_SM_OFFSET_KEY] = smOffset;\n\n        const mdOffset = '0 0.5rem 1rem 0';\n        themeVars[PepCustomizationService.SHADOW_MD_OFFSET_KEY] = mdOffset;\n\n        const lgOffset = '0 1rem 2rem 0';\n        themeVars[PepCustomizationService.SHADOW_LG_OFFSET_KEY] = lgOffset;\n\n        const xlOffset = '0 2rem 4rem 0';\n        themeVars[PepCustomizationService.SHADOW_XL_OFFSET_KEY] = xlOffset;\n    }\n\n    getDefaultThemeFormCustomizationVariables(themeVars: any): void {\n        const formFieldSpacing = 1;\n        themeVars[PepCustomizationService.FORM_FIELD_HEIGHT_KEY] =\n            '2.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FORM_SPACEING_KEY] =\n            formFieldSpacing + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.FORM_FIELD_SPACEING_KEY] =\n            formFieldSpacing + PepCustomizationService.REM_STRING;\n    }\n\n    getDefaultThemeCardCustomizationVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.CARD_FIELD_HEIGHT_KEY] =\n            '1.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.CARD_SPACEING_KEY] =\n            'var(' + PepCustomizationService.SPACING_SIZE_XS_KEY + ')';\n\n        themeVars[PepCustomizationService.CARD_BORDER_RADIUS_KEY] =\n            'var(' + PepCustomizationService.BORDER_RADIUS_MD_KEY + ')';\n        themeVars[PepCustomizationService.CARD_SHADOW_OFFSET_KEY] =\n            'var(' + PepCustomizationService.SHADOW_MD_OFFSET_KEY + ')';\n    }\n\n    getDefaultThemeTableCustomizationVariables(themeVars: any): void {\n        themeVars[PepCustomizationService.TABLE_FIELD_HEIGHT_KEY] =\n            '2' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.TABLE_SPACEING_KEY] =\n            '0.5' + PepCustomizationService.REM_STRING;\n        themeVars[PepCustomizationService.TABLE_BORDER_RADIUS_KEY] =\n            'var(' + PepCustomizationService.BORDER_RADIUS_MD_KEY + ')';\n    }\n\n    getDefaultThemeQSCustomizationVariables(themeVars: any): void {\n        const qsState: PepStyleType = 'regular';\n        themeVars[PepCustomizationService.STYLE_QS_KEY] = qsState;\n\n        themeVars[PepCustomizationService.COLOR_QS_KEY + '-h'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-h)';\n        themeVars[PepCustomizationService.COLOR_QS_KEY + '-s'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-s)';\n        themeVars[PepCustomizationService.COLOR_QS_KEY + '-l'] =\n            'var(' + PepCustomizationService.COLOR_SYSTEM_PRIMARY_KEY + '-l)';\n    }\n\n    getDefaultThemeTopHeaderCustomizationVariables(themeVars: any): void {\n        const topHeaderState: PepStyleType = 'strong';\n        themeVars[\n            PepCustomizationService.STYLE_TOP_HEADER_KEY\n        ] = topHeaderState;\n\n        themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-h'] = '';\n        themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-s'] = '';\n        themeVars[PepCustomizationService.COLOR_TOP_HEADER_KEY + '-l'] = '';\n    }\n\n    getDefaultThemeVariables(): any {\n        const themeVars = {};\n\n        // Declare default layout.\n        this.getDefaultThemeLayoutVariables(themeVars);\n\n        // Declare default border radius.\n        this.getDefaultThemeBorderRadiusVariables(themeVars);\n\n        // Declare default spacing.\n        this.getDefaultThemeSpacingVariables(themeVars);\n\n        // Declare default fonts size & line height.\n        this.getDefaultThemeFontsVariables(themeVars);\n\n        // Declare default buttons.\n        this.getDefaultThemeButtonsVariables(themeVars);\n\n        // Declare default colors.\n        this.getDefaultThemeColorsVariables(themeVars);\n\n        // Declare default shadows.\n        this.getDefaultThemeShadowsVariables(themeVars);\n\n        // Declare default form customization.\n        this.getDefaultThemeFormCustomizationVariables(themeVars);\n\n        // Declare default card customization.\n        this.getDefaultThemeCardCustomizationVariables(themeVars);\n\n        // Declare default table customization.\n        this.getDefaultThemeTableCustomizationVariables(themeVars);\n\n        // Declare default qs customization.\n        this.getDefaultThemeQSCustomizationVariables(themeVars);\n\n        // Declare default top header customization.\n        this.getDefaultThemeTopHeaderCustomizationVariables(themeVars);\n\n        return themeVars;\n    }\n\n    getThemeVariables(): any {\n        const ret = this.getDefaultThemeVariables();\n        const themeVars = this.sessionService.getObject(\n            PepCustomizationService.USER_THEME_VARIABLES\n        );\n\n        // Override defaults.\n        if (themeVars) {\n            for (const key in themeVars) {\n                ret[key] = themeVars[key];\n            }\n        }\n\n        return ret;\n    }\n\n    setThemeVariables(themeVariablesToSet = null): void {\n        const themeVariables = this.getThemeVariables();\n\n        // Override defaults.\n        if (themeVariablesToSet) {\n            for (const key in themeVariablesToSet) {\n                themeVariables[key] = themeVariablesToSet[key];\n            }\n        }\n\n        this.sessionService.setObject(\n            PepCustomizationService.USER_THEME_VARIABLES,\n            JSON.stringify(themeVariables)\n        );\n\n        for (const key in themeVariables) {\n            if (this.isFontUrlKey(key)) {\n                this.fileService.loadFontStyle(key, themeVariables[key]);\n            } else {\n                document.documentElement.style.setProperty(\n                    key,\n                    themeVariables[key]\n                );\n            }\n        }\n    }\n\n    isFontUrlKey(key: string): boolean {\n        let res = false;\n\n        if (\n            key === PepCustomizationService.FONT_FAMILY_TITLE_NORMAL_URL_KEY ||\n            key === PepCustomizationService.FONT_FAMILY_TITLE_BOLD_URL_KEY ||\n            key === PepCustomizationService.FONT_FAMILY_BODY_NORMAL_URL_KEY ||\n            key === PepCustomizationService.FONT_FAMILY_BODY_BOLD_URL_KEY\n        ) {\n            res = true;\n        }\n\n        return res;\n    }\n\n    getThemeVariable(key: string): string {\n        const themeVars = this.getThemeVariables();\n\n        if (themeVars.hasOwnProperty(key)) {\n            return themeVars[key];\n        } else {\n            return '';\n        }\n    }\n\n    getNumberThemeVariable(themeVars, key: string): number {\n        if (themeVars && themeVars.hasOwnProperty(key)) {\n            // If it's reference to another key.\n            if (themeVars[key].indexOf('var(') === 0) {\n                key = themeVars[key].substr(4).split(')')[0];\n            }\n\n            const tmp = Number(\n                themeVars[key].replace(PepCustomizationService.REM_STRING, '')\n            );\n            return tmp;\n        } else {\n            return 0;\n        }\n    }\n\n    private setFooterHeight(height): void {\n        if (this.footerHeight.getValue() !== height) {\n            // it is publishing this value to all the subscribers that have already subscribed to this message\n            setTimeout(() => {\n                this.footerHeight.next(height);\n            }, 0);\n        }\n        document.documentElement.style.setProperty(\n            PepCustomizationService.FOOTER_HEIGHT_KEY,\n            height + PepCustomizationService.REM_STRING\n        );\n    }\n\n    hideFooter(): void {\n        this.setFooterHeight(0);\n    }\n\n    showFooter(): void {\n        const themeVars = this.getThemeVariables();\n\n        const res =\n            this.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FOOTER_BAR_SPACING_TOP_KEY\n            ) +\n            this.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.FOOTER_BAR_SPACING_BOTTOM_KEY\n            ) +\n            this.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY\n            );\n\n        this.setFooterHeight(res);\n    }\n\n    private setSettingsWidth(width): void {\n        if (this.settingsWidth.getValue() !== width) {\n            // it is publishing this value to all the subscribers that have already subscribed to this message\n            setTimeout(() => {\n                this.settingsWidth.next(width);\n            }, 0);\n        }\n        document.documentElement.style.setProperty(\n            PepCustomizationService.SETTINGS_WIDTH_KEY,\n            width + PepCustomizationService.REM_STRING\n        );\n    }\n\n    hideSettings(): void {\n        this.setSettingsWidth(0);\n    }\n\n    showSettings(): void {\n        const themeVars = this.getThemeVariables();\n\n        const res = this.getNumberThemeVariable(\n            themeVars,\n            PepCustomizationService.SIDE_BAR_WIDTH_KEY\n        );\n\n        this.setSettingsWidth(res);\n    }\n\n    getTopBarHeight(): number {\n        const themeVars = this.getThemeVariables();\n\n        const res =\n            this.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.TOP_BAR_SPACING_TOP_KEY\n            ) +\n            this.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.TOP_BAR_SPACING_BOTTOM_KEY\n            ) +\n            this.getNumberThemeVariable(\n                themeVars,\n                PepCustomizationService.TOP_BAR_FIELD_HEIGHT_KEY\n            );\n\n        return res;\n    }\n\n    setOldUserTheme(res: any): void {\n        // Added user theme.\n        const themeObj = {\n            Theme: res.Theme || 'default-theme',\n        };\n\n        this.sessionService.setObject(\n            PepCustomizationService.USER_THEME,\n            JSON.stringify(themeObj)\n        );\n\n        let spinnerColor;\n        let brandingFontColor;\n\n        if (this.isLightColor(res.BrandingMainColor)) {\n            spinnerColor = PepCustomizationService.DEFAULT_SPINNER_COLOR;\n            brandingFontColor = '#222';\n        } else {\n            spinnerColor = res.BrandingMainColor;\n            brandingFontColor = PepCustomizationService.DEFAULT_BRANDING_COLOR;\n        }\n\n        const color = {\n            BrandingSecondaryColor: res.BrandingSecondaryColor,\n            BrandingMainColor: res.BrandingMainColor,\n            BrandingFontColor: brandingFontColor,\n            SpinnerColor: spinnerColor,\n        };\n\n        this.sessionService.setObject(\n            PepCustomizationService.USER_COLOR,\n            JSON.stringify(color)\n        );\n\n        this.hasCustomHeader =\n            res.TopHeaderFiles &&\n                res.TopHeaderFiles.length > 0 &&\n                res.TopHeaderFiles[0] !== ''\n                ? true\n                : false;\n        this.hasCustomHomepage =\n            res.UserRole === 'Buyer' &&\n            res.TopHeaderFiles &&\n            res.TopHeaderFiles.length > 1 &&\n            res.TopHeaderFiles[1] !== '';\n    }\n\n    isLegacyColor(): boolean {\n        const h = document.documentElement.style.getPropertyValue(\n            PepCustomizationService.COLOR_TOP_HEADER_KEY + '-h'\n        );\n        const s = document.documentElement.style.getPropertyValue(\n            PepCustomizationService.COLOR_TOP_HEADER_KEY + '-s'\n        );\n        const l = document.documentElement.style.getPropertyValue(\n            PepCustomizationService.COLOR_TOP_HEADER_KEY + '-l'\n        );\n\n        return !(h && s && l);\n    }\n\n    getLoadingSpinnerColor(): string {\n        let spinnerColor = '';\n\n        if (this.isLegacyColor()) {\n            const color = this.sessionService.getObject(\n                PepCustomizationService.USER_COLOR\n            );\n\n            if (color && color.SpinnerColor) {\n                spinnerColor = color.SpinnerColor;\n            } else {\n                spinnerColor = PepCustomizationService.DEFAULT_SPINNER_COLOR;\n            }\n        }\n\n        return spinnerColor;\n    }\n\n    getBrandingMainColor(): string {\n        let brandingMainColor = '';\n\n        if (this.isLegacyColor()) {\n            const color = this.sessionService.getObject(\n                PepCustomizationService.USER_COLOR\n            );\n\n            if (color && color.BrandingMainColor) {\n                brandingMainColor = color.BrandingMainColor;\n            } else {\n                brandingMainColor =\n                    PepCustomizationService.DEFAULT_BRANDING_COLOR;\n            }\n        }\n\n        return brandingMainColor;\n    }\n\n    isLightColor(hexColor): boolean {\n        if (!hexColor) {\n            return;\n        }\n\n        let isBright = false;\n        let sum = 0;\n        const c = hexColor.replace(/^#/, '');\n\n        sum = parseInt(c[0] + c[1], 16);\n        sum += parseInt(c[2] + c[3], 16);\n        sum += parseInt(c[4] + c[5], 16);\n\n        if (sum > 382.6) {\n            // it's bright color\n            isBright = true;\n        }\n\n        return isBright;\n    }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    HostListener,\n    Inject,\n    Input,\n    OnInit,\n    Optional,\n    Renderer2,\n} from '@angular/core';\nimport { PepCustomizationService } from '../../customization/customization.service';\nimport { PepUtilitiesService } from '../services/utilities.service';\n\n@Directive({\n    selector: '[pepDivLoader]',\n})\nexport class PepDivLoaderDirective implements OnInit {\n    @Input() loaderColor = null;\n    @Input() loaderWidth = '5rem';\n    @Input() loaderHeight = 'inherit';\n    \n    private svgIcon: SVGElement;\n\n    constructor(\n        private renderer: Renderer2,\n        private element: ElementRef,\n        private utilitiesService: PepUtilitiesService,\n        private customizationService: PepCustomizationService,\n        @Optional() @Inject(DOCUMENT) private document: any\n    ) {}\n\n    ngOnInit(): void {\n        if (!this.loaderColor) {\n            this.loaderColor = this.customizationService?.getLoadingSpinnerColor();\n        }\n\n        this.setDivStyle();\n        const svgData =\n            '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\" preserveAspectRatio=\"xMidYMid\" class=\"lds-ripple\" style=\"background:0 0; \"><circle cx=\"64\" cy=\"64\" r=\"0\" fill=\"none\" stroke-width=\"10\"><animate attributeName=\"r\" calcMode=\"spline\" values=\"0;59\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0 0.3 0.8 0.8\" begin=\"-1.6s\" repeatCount=\"indefinite\"/><animate attributeName=\"opacity\" calcMode=\"spline\" values=\"1;0\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0.3 0 0.8 1\" begin=\"-1.6s\" repeatCount=\"indefinite\"/></circle><circle cx=\"64\" cy=\"64\" r=\"0\" fill=\"none\" stroke-width=\"10\"><animate attributeName=\"r\" calcMode=\"spline\" values=\"0;59\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0 0.3 0.8 0.8\" begin=\"-0.8s\" repeatCount=\"indefinite\"/><animate attributeName=\"opacity\" calcMode=\"spline\" values=\"1;0\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0.3 0 0.8 1\" begin=\"-0.8s\" repeatCount=\"indefinite\"/></circle><circle cx=\"64\" cy=\"64\" r=\"0\" fill=\"none\" stroke-width=\"10\"><animate attributeName=\"r\" calcMode=\"spline\" values=\"0;59\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0 0.3 0.8 0.8\" begin=\"0s\" repeatCount=\"indefinite\"/><animate attributeName=\"opacity\" calcMode=\"spline\" values=\"1;0\" keyTimes=\"0;1\" dur=\"2.4\" keySplines=\"0.3 0 0.8 1\" begin=\"0s\" repeatCount=\"indefinite\"/></circle></svg>';\n        this.svgIcon = this.utilitiesService.getSvgElementFromString(\n            this.document,\n            svgData\n        );\n\n        this.setIconStyle();\n        this.renderer.appendChild(this.element.nativeElement, this.svgIcon);\n    }\n\n    private setDivStyle(): void {\n        this.renderer.setStyle(this.element.nativeElement, 'display', 'flex');\n        this.renderer.setStyle(\n            this.element.nativeElement,\n            'justify-content',\n            'center'\n        );\n        this.renderer.setStyle(\n            this.element.nativeElement,\n            'align-items',\n            'center'\n        );\n    }\n\n    private setIconStyle(): void {\n        if (this.loaderColor) {\n            this.renderer.setStyle(this.svgIcon, 'stroke', this.loaderColor);\n        }\n\n        this.renderer.setStyle(this.svgIcon, 'width', this.loaderWidth);\n        this.renderer.setStyle(this.svgIcon, 'height', this.loaderHeight);\n        this.renderer.addClass(this.svgIcon, 'svg-icon');\n        this.renderer.addClass(this.svgIcon, 'stroke');\n    }\n}\n","import { Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepPortalService {\n    private targets: Map<string, ViewContainerRef>;\n\n    constructor() {\n        this.targets = new Map<string, ViewContainerRef>();\n    }\n\n    addTarget(targetName: string, viewContainer: ViewContainerRef): void {\n        this.targets.set(targetName, viewContainer);\n    }\n\n    attach(targetName: string, template: TemplateRef<any>): void {\n        const target = this.getTarget(targetName);\n\n        if (target) {\n            target.createEmbeddedView(template);\n        }\n    }\n\n    clear(targetName: string): void {\n        const target = this.getTarget(targetName);\n\n        if (target) {\n            target.clear();\n        }\n    }\n\n    private getTarget(targetName: string): ViewContainerRef {\n        return this.targets.has(targetName)\n            ? this.targets.get(targetName)\n            : null;\n    }\n}\n","import {\n    Directive,\n    OnInit,\n    OnDestroy,\n    Input,\n    TemplateRef,\n} from '@angular/core';\nimport { PepPortalService } from './portal.service';\n\n@Directive({\n    selector: '[pepAttach]',\n})\nexport class PepAttachDirective implements OnInit, OnDestroy {\n    @Input('pepAttach') targetName: string;\n\n    constructor(\n        private portalService: PepPortalService,\n        private templateRef: TemplateRef<any>\n    ) {}\n\n    ngOnInit(): void {\n        this.portalService.attach(this.targetName, this.templateRef);\n    }\n\n    ngOnDestroy(): void {\n        this.portalService.clear(this.targetName);\n    }\n}\n","import { Directive, OnInit, Input, ViewContainerRef } from '@angular/core';\nimport { PepPortalService } from './portal.service';\n\n@Directive({\n    selector: '[pepTarget]',\n})\nexport class PepTargetDirective implements OnInit {\n    @Input('pepTarget') targetName: string;\n\n    constructor(\n        private portalService: PepPortalService,\n        private viewContainer: ViewContainerRef\n    ) {}\n\n    ngOnInit(): void {\n        this.portalService.addTarget(this.targetName, this.viewContainer);\n    }\n}\n","// Import the core angular services.\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepClipboardService {\n    // private dom: Document;\n    // // I initialize the Clipboard service.\n    // // --\n    // // CAUTION: This service is tightly couped to the browser DOM (Document Object Model).\n    // // But, by injecting the \"document\" reference rather than trying to reference it\n    // // globally, we can at least pretend that we are trying to lower the tight coupling.\n    // constructor(@Optional() @Inject(DOCUMENT)  dom: Document) {\n    //     this.dom = dom;\n    // }\n    // // ---\n    // // PUBLIC METHODS.\n    // // ---\n    // // I copy the given value to the user's system clipboard. Returns a promise that\n    // // resolves to the given value on success or rejects with the raised Error.\n    // public copy(value: string): Promise<any> {\n    //     const promise = new Promise(\n    //         (resolve, reject): void => {\n    //             let textarea = null;\n    //             try {\n    //                 // In order to execute the \"Copy\" command, we actually have to have\n    //                 // a \"selection\" in the currently rendered document. As such, we're\n    //                 // going to inject a Textarea element and .select() it in order to\n    //                 // force a selection.\n    //                 // --\n    //                 // NOTE: This Textarea is being rendered off-screen.\n    //                 textarea = this.dom.createElement('textarea');\n    //                 textarea.style.height = '0px';\n    //                 textarea.style.left = '-100px';\n    //                 textarea.style.opacity = '0';\n    //                 textarea.style.position = 'fixed';\n    //                 textarea.style.top = '-100px';\n    //                 textarea.style.width = '0px';\n    //                 this.dom.body.appendChild(textarea);\n    //                 // Set and select the value (creating an active Selection range).\n    //                 textarea.value = value;\n    //                 textarea.select();\n    //                 // Ask the browser to copy the current selection to the clipboard.\n    //                 this.dom.execCommand('copy');\n    //                 resolve(value);\n    //             } finally {\n    //                 // Cleanup - remove the Textarea from the DOM if it was injected.\n    //                 if (textarea && textarea.parentNode) {\n    //                     textarea.parentNode.removeChild(textarea);\n    //                 }\n    //             }\n    //         }\n    //     );\n    //     return (promise);\n    // }\n}\n","/*\n * Public API Surface of ngx-lib/core/clipboard\n */\nexport * from './clipboard.service';\nexport * from './clipboard.directive';\n","/*\n * export from ngx-lib/core/clipboard\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core/common/directives\n */\nexport * from './auto-width.directive';\nexport * from './button-blur.directive';\nexport * from './button-loader.directive';\nexport * from './data-qa.directive';\nexport * from './menu-blur.directive';\n// export * from './debounce-click.directive';\nexport * from './prevent-multi-click.directive';\nexport * from './print.directive';\nexport * from './div-loader.directive';\n","/*\n * export from ngx-lib/core/common/directives\n */\nexport * from './public-api';\n","export class Test {}\n","export class PepGuid {\n    private static pad4(num: number): string {\n        let ret: string = num.toString(16);\n        while (ret.length < 4) {\n            ret = '0' + ret;\n        }\n        return ret;\n    }\n\n    private static random4(): string {\n        return Math.floor((1 + Math.random()) * 0x10000)\n            .toString(16)\n            .substring(1);\n    }\n\n    public static newGuid(): string {\n        // This is not build for -prod\n        // return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        //     const r = Math.random() * 16 | 0;\n        //     const v = c === 'x' ? r : (r & 0x3 | 0x8);\n        //     return v.toString(16);\n        // });\n\n        // If we have a cryptographically secure PRNG, use that\n        if (\n            typeof window !== 'undefined' &&\n            typeof window.crypto !== 'undefined' &&\n            typeof window.crypto.getRandomValues !== 'undefined'\n        ) {\n            const buf: Uint16Array = new Uint16Array(8);\n            window.crypto.getRandomValues(buf);\n            return (\n                this.pad4(buf[0]) +\n                this.pad4(buf[1]) +\n                '-' +\n                this.pad4(buf[2]) +\n                '-' +\n                this.pad4(buf[3]) +\n                '-' +\n                this.pad4(buf[4]) +\n                '-' +\n                this.pad4(buf[5]) +\n                this.pad4(buf[6]) +\n                this.pad4(buf[7])\n            );\n        } else {\n            // Otherwise, just use Math.random\n            return (\n                this.random4() +\n                this.random4() +\n                '-' +\n                this.random4() +\n                '-' +\n                this.random4() +\n                '-' +\n                this.random4() +\n                '-' +\n                this.random4() +\n                this.random4() +\n                this.random4()\n            );\n        }\n    }\n}\n","export enum FIELD_TYPE {\n    // specify text field\n    'Default' = 0,\n    'TextBox' = 1,\n    'LimitedLengthTextBox' = 2,\n    // specify text area field\n    'TextArea' = 3,\n    'TextHeader' = 4,\n    // specify date field\n    'Date' = 5,\n    // specify date & time field\n    'DateAndTime' = 6,\n    // specify integer field\n    'NumberInteger' = 7,\n    // specify decimal field\n    'NumberReal' = 8,\n    // specify currency field\n    'Currency' = 9,\n    // specify boolean field\n    'Boolean' = 10,\n    // specify multiple options field\n    'ComboBox' = 11,\n    // specify multiple options field\n    'MultiTickBox' = 12,\n    // specify separator (view only) field\n    'Separator' = 13,\n    // specify address field\n    'Address' = 14,\n    // specify percentage field\n    'Percentage' = 15,\n    'EmptyComboBox' = 16, // For Category, CPIPriceList, Special Price List (ComboBox Without Values)\n    'InternalLink' = 17, // for reps, Contacts, Locations & Catalogs\n    // specify email field\n    'Email' = 18,\n    'LimitedDate' = 19,\n    // specify image field\n    'Image' = 20,\n    'MultiTickBoxToComboBox' = 21,\n    'EmptyMultiTickBox' = 22,\n    'Totals' = 23,\n    // specify attachment field\n    'Attachment' = 24,\n    'Signature' = 25,\n    // specify link field\n    'Link' = 26,\n    // specify image url field\n    'ImageURL' = 27,\n    'NumberIntegerQuantitySelector' = 28, // hack for quantity selector in case of integer\n    'NumberRealQuantitySelector' = 29, // hack for quantity selector in case of double\n    'NumberIntegerForMatrix' = 30, // hack for integer in matrix\n    'NumberRealForMatrix' = 31, // hack for double in matrix\n    'Images' = 32, // hack for Images (for filmstrip and variants)\n    'Indicators' = 33, // Indicators is like address (group field that conains boolean fields).\n    'CalculatedReal' = 34,\n    'CalculatedInt' = 35,\n    'CalculatedString' = 36,\n    'CalculatedDate' = 37,\n    'CalculatedBool' = 38,\n    'MapDataDropDown' = 39,\n    'MapDataReal' = 40,\n    'MapDataString' = 41,\n    'MapDataInt' = 42,\n    'Sum' = 43,\n    'Phone' = 44,\n    'UrlForApi' = 45,\n    'ManyToManyUrlForApi' = 46,\n    'ReferenceType' = 47,\n    'GuidReferenceType' = 48,\n    'Button' = 49,\n    'InternalPage' = 50, // The old value was 45 - in the cpi project the \"InternalPage\" value is 50 so i fixed it!!!\n    'Duration' = 51,\n    'ListOfObjects' = 52,\n    'Package' = 53, // Package Quantity Selector\n    'RelatedObjectsCards' = 54,\n    'BooleanText' = 55, // Boolean that return a string defined by the user in case of true/false\n    'RichTextHTML' = 56, // Html Text\n}\n\nexport enum X_ALIGNMENT_TYPE {\n    None = 0,\n    Left = 1,\n    Right = 2,\n    Center = 3,\n}\n\nexport enum Y_ALIGNMENT_TYPE {\n    None = 0,\n    Top = 1,\n    Bottom = 2,\n    Center = 3,\n}\n\nexport class FieldLayout {\n    X: number;\n    Width: number;\n    XAlignment: X_ALIGNMENT_TYPE;\n    Y: Y_ALIGNMENT_TYPE;\n    Height: number;\n    YAlignment: Y_ALIGNMENT_TYPE;\n    LineNumber: number;\n\n    // constructor(\n    //     x = 0,\n    //     width = 1,\n    //     xAlignment: X_ALIGNMENT_TYPE = 1, y: Y_ALIGNMENT_TYPE = 0, height = 1, yAlignment = 1, lineNumber = 1) {\n    //     this.X = x;\n    //     this.Width = width;\n    //     this.XAlignment = xAlignment;\n    //     this.Y = y;\n    //     this.Height = height;\n    //     this.YAlignment = yAlignment;\n    //     this.LineNumber = lineNumber;\n    // }\n\n    constructor(data: Partial<FieldLayout>) {\n        Object.assign(this, data);\n    }\n}\n\nexport class UIControlField {\n    Title: string;\n    MandatoryField = false;\n    Mandatory = false;\n    ReadOnlyField: boolean;\n    ReadOnly: boolean;\n    FieldConditions: any;\n    CustomField: any;\n    ApiName: string;\n    FieldType: FIELD_TYPE;\n    OptionalValues: Array<KeyValuePair<string>>;\n    MinValue: number;\n    MaxValue: number;\n    MaxCharacters: number;\n    MaxFieldCharacters: number;\n    MaxLines: number;\n    Layout: FieldLayout; // { X: number; Height: number; Y: number; Width: number; XAlignment: number; YAlignment: number };\n    ColumnWidth: number;\n    ColumnWidthType: number;\n    FieldName: string;\n    DefaultValue: string;\n    Hidden: boolean;\n    ObjectTypeReference: any;\n    ParentField: string;\n    WrntyFieldName: string;\n    Editor: any;\n    minFieldWidth = 45;\n    calcColumnWidth = 10;\n    calcTitleColumnWidthString = '100%';\n    calcColumnWidthString = '100%';\n}\n\nexport class UIControl {\n    ObjectID: any;\n    Type: string;\n    DisplayName: string;\n    ControlFields: Array<UIControlField>;\n    Columns: number;\n}\n\nexport class ObjectsDataRowCell {\n    Accessory?: string;\n    AdditionalValue?: string;\n    ApiName: string;\n    BackgroundColor?: string;\n    Enabled?: boolean;\n    FieldType: number;\n    FormattedValue: any;\n    GroupFields?: Array<ObjectsDataRowCell>;\n    Highlighted?: boolean;\n    NotificationInfo?: string;\n    OptionalValues?: Array<KeyValuePair<string>>;\n    ReferenceObjectInternalType?: string;\n    ReferenceObjectSubType?: string;\n    ReferenceObjectType?: string;\n    TextColor?: string;\n    UiPageKey?: string;\n    UIPageInfo?: any;\n    // Type?: string; // This is in the object??\n    Value: any;\n    Visible?: boolean; \n    DigitsNumberAfterDecimalPoint?: number;\n}\n\nexport class ObjectsDataRow {\n    AdditionalData?: any;\n    BackgroundColor?: string;\n    ExtraInfo?: Array<{ Key: string; Value: string }>;\n    Fields: Array<ObjectsDataRowCell>;\n    IsEditable = true;\n    IsSelected = false;\n    IsSelectableForActions = true;\n    MainAction?: string;\n    Profile?: any;\n    Type: number;\n    UID: any;\n    Key: string;\n}\n\nexport class ObjectSingleData {\n    Data: ObjectsDataRow;\n    ErrorCode: string;\n    ErrorMessage: string;\n    IsEditable: boolean;\n    Success: boolean;\n    Type: string;\n    UIControl: UIControl;\n\n    constructor(uiControl: UIControl = null, data: ObjectsDataRow = null) {\n        this.Success = true;\n        this.ErrorMessage = '';\n        this.Type = '';\n\n        this.UIControl = uiControl;\n        this.Data = data;\n    }\n}\n\nexport class ObjectsData {\n    DateFilter?: string;\n    ErrorCode: string;\n    ErrorMessage: string;\n    Rows: Array<ObjectsDataRow>;\n    SearchCode?: string;\n    SecSmartSearchList?: [];\n    SmartSearchList: Array<SmartSearchResponse>;\n    Success: boolean;\n    TotalRows: number;\n    UIControl: UIControl;\n    // AllRows: Array<ObjectsDataRow>;\n    // TotalAmount: any;\n    // CurrencySymbol: any;\n\n    constructor() {\n        this.ErrorMessage = '';\n        this.Success = true;\n        // this.TotalAmount = '0';\n        // this.CurrencySymbol = '$';\n    }\n}\n\nexport class SmartSearchValues {\n    ApiName: string;\n    ComparisonType: string;\n    Value: string;\n    ValueRange: { Start: string; End: string };\n    Values: Array<string>;\n}\n\nexport class SmartSearchResponse {\n    ApiName: string;\n    FieldType: any;\n    Title: string;\n    Values: Array<KeyValuePair<string>>;\n    SmartSearchData: SmartSearchValues;\n}\n\nexport class KeyValuePair<T> {\n    Key: string;\n    Value: T;\n}\n","/*\n * Public API Surface of ngx-lib/core/common/model\n */\nexport * from './papi.model';\nexport * from './utilities.model';\nexport * from './wapi.model';\n","/*\n * export from ngx-lib/core/common/model\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core/common/pipes\n */\nexport * from './common-pipes';\nexport * from './date-ago.pipe';\n","/*\n * export from ngx-lib/core/common/pipes\n */\nexport * from './public-api';\n","import {\n    Injectable,\n    Inject,\n    PLATFORM_ID,\n    InjectionToken,\n    Optional,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepCookieService {\n    private readonly documentIsAccessible: boolean;\n\n    constructor(\n        @Optional() @Inject(DOCUMENT) private document: any,\n        @Inject(PLATFORM_ID) private platformId: InjectionToken<any>\n    ) {\n        this.documentIsAccessible = isPlatformBrowser(this.platformId);\n    }\n\n    /**\n     * @param name Cookie name\n     * @returns boolean - whether cookie with specified name exists\n     */\n    check(name: string): boolean {\n        if (!this.documentIsAccessible) {\n            return false;\n        }\n\n        name = encodeURIComponent(name);\n\n        const regExp: RegExp = this.getCookieRegExp(name);\n        const exists: boolean = regExp.test(this.document.cookie);\n\n        return exists;\n    }\n\n    /**\n     * @param name Cookie name\n     * @returns property value\n     */\n    get(name: string): string {\n        if (this.documentIsAccessible && this.check(name)) {\n            name = encodeURIComponent(name);\n\n            const regExp: RegExp = this.getCookieRegExp(name);\n            const result: RegExpExecArray = regExp.exec(this.document.cookie);\n\n            return this.safeDecodeURIComponent(result[1]);\n        } else {\n            return '';\n        }\n    }\n\n    /**\n     * @returns all the cookies in json\n     */\n    getAll(): { [key: string]: string } {\n        if (!this.documentIsAccessible) {\n            return {};\n        }\n\n        const cookies: { [key: string]: string } = {};\n        const document: any = this.document;\n\n        if (document.cookie && document.cookie !== '') {\n            document.cookie.split(';').forEach((currentCookie) => {\n                const [cookieName, cookieValue] = currentCookie.split('=');\n                cookies[\n                    this.safeDecodeURIComponent(cookieName.replace(/^ /, ''))\n                ] = this.safeDecodeURIComponent(cookieValue);\n            });\n        }\n\n        return cookies;\n    }\n\n    /**\n     * @param name     Cookie name\n     * @param value    Cookie value\n     * @param expires  Number of days until the cookies expires or an actual `Date`\n     * @param path     Cookie path\n     * @param domain   Cookie domain\n     * @param secure   Secure flag\n     * @param sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n     */\n    set(\n        name: string,\n        value: string,\n        expires?: number | Date,\n        path?: string,\n        domain?: string,\n        secure?: boolean,\n        sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'\n    ): void {\n        if (!this.documentIsAccessible) {\n            return;\n        }\n\n        let cookieString: string =\n            encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n\n        if (expires) {\n            if (typeof expires === 'number') {\n                const dateExpires: Date = new Date(\n                    new Date().getTime() + expires * 1000 * 60 * 60 * 24\n                );\n\n                cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n            } else {\n                cookieString += 'expires=' + expires.toUTCString() + ';';\n            }\n        }\n\n        if (path) {\n            cookieString += 'path=' + path + ';';\n        }\n\n        if (domain) {\n            cookieString += 'domain=' + domain + ';';\n        }\n\n        if (secure === false && sameSite === 'None') {\n            secure = true;\n        }\n\n        if (secure) {\n            cookieString += 'secure;';\n        }\n\n        cookieString += 'sameSite=' + sameSite + ';';\n\n        this.document.cookie = cookieString;\n    }\n\n    /**\n     * @param name   Cookie name\n     * @param path   Cookie path\n     * @param domain Cookie domain\n     */\n    delete(\n        name: string,\n        path?: string,\n        domain?: string,\n        secure?: boolean,\n        sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'\n    ): void {\n        if (!this.documentIsAccessible) {\n            return;\n        }\n\n        this.set(\n            name,\n            '',\n            new Date('Thu, 01 Jan 1970 00:00:01 GMT'),\n            path,\n            domain,\n            secure,\n            sameSite\n        );\n    }\n\n    /**\n     * @param path   Cookie path\n     * @param domain Cookie domain\n     */\n    deleteAll(\n        path?: string,\n        domain?: string,\n        secure?: boolean,\n        sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'\n    ): void {\n        if (!this.documentIsAccessible) {\n            return;\n        }\n\n        const cookies: any = this.getAll();\n\n        for (const cookieName in cookies) {\n            if (cookies.hasOwnProperty(cookieName)) {\n                this.delete(cookieName, path, domain, secure, sameSite);\n            }\n        }\n    }\n\n    /**\n     * @param name Cookie name\n     * @returns property RegExp\n     */\n    private getCookieRegExp(name: string): RegExp {\n        const escapedName: string = name.replace(\n            /([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi,\n            '\\\\$1'\n        );\n\n        return new RegExp(\n            '(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)',\n            'g'\n        );\n    }\n\n    private safeDecodeURIComponent(encodedURIComponent: string): string {\n        try {\n            return decodeURIComponent(encodedURIComponent);\n        } catch {\n            // probably it is not uri encoded. return as is\n            return encodedURIComponent;\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\nimport {\n    HttpClient,\n    HttpErrorResponse,\n    HttpParams,\n    HttpHeaders,\n} from '@angular/common/http';\nimport { throwError, Observable } from 'rxjs';\nimport { retry, catchError, tap } from 'rxjs/operators';\nimport { PepSessionService } from '../../common/services/session.service';\nimport { PepCookieService } from '../../common/services/cookie.service';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepHttpService {\n    private readonly AUTH_HEADER = 'Authorization';\n    private readonly PEPPERI_TOKEN_HEADER = 'PepperiSessionToken';\n    private readonly WAPI_TOKEN_KEY = 'auth_token';\n    private readonly PEPPERI_TOKEN_COOKIE = 'PepperiUserSettings';\n\n    constructor(\n        private sessionService: PepSessionService,\n        private cookieService: PepCookieService,\n        private http: HttpClient\n    ) {}\n\n    private handleError(response: HttpErrorResponse): Observable<never> {\n        let errorMessage = 'Unknown error!';\n        if (response.error instanceof ErrorEvent) {\n            // Client-side errors\n            errorMessage = `Error: ${response.error.message}`;\n        } else {\n            // Server-side errors\n            errorMessage = this.getServerErrorMessage(response);\n        }\n\n        return throwError(errorMessage);\n    }\n\n    private getServerErrorMessage(response: HttpErrorResponse): string {\n        if (response?.error?.fault?.faultstring) {\n            return `${response.error.fault.faultstring}`;\n        } else {\n            switch (response.status) {\n                case 404: {\n                    return `Not Found: ${response.message}`;\n                }\n                case 403: {\n                    return `Access Denied: ${response.message}`;\n                }\n                case 500: {\n                    return `Internal Server Error: ${response.message}`;\n                }\n                default: {\n                    return `Unknown Server Error\\nError Code: ${response.status}\\nMessage: ${response.message}`;\n                }\n            }\n        }\n    }\n\n    // Add authorization token if the token exist.\n    private addAuthorizationToken(httpOptions: any = {}): any {\n        if (!httpOptions.headers.has(this.AUTH_HEADER)) {\n            const idpToken = this.sessionService.getIdpToken();\n\n            if (idpToken) {\n                httpOptions.headers = httpOptions.headers.set(\n                    this.AUTH_HEADER,\n                    `Bearer ${idpToken}`\n                );\n            }\n        }\n\n        return httpOptions;\n    }\n\n    // Add web api token if calling to wapi domain.\n    private addWebApiToken(url: string, httpOptions: any = {}): any {\n        if (!httpOptions.headers.has(this.PEPPERI_TOKEN_HEADER)) {\n            const wapiBaseUrl = this.sessionService.getWapiBaseUrl();\n\n            if (wapiBaseUrl && url.match(new RegExp(wapiBaseUrl, 'g'))) {\n                // TODO:\n                // const webApiToken = this.sessionService.getWapiToken();\n                try {\n                    const userSettingCookie = this.cookieService.get(\n                        this.PEPPERI_TOKEN_COOKIE\n                    );\n                    const webApiToken = JSON.parse(userSettingCookie).values\n                        .items[this.WAPI_TOKEN_KEY];\n                    if (webApiToken) {\n                        httpOptions.headers = httpOptions.headers.set(\n                            this.PEPPERI_TOKEN_HEADER,\n                            webApiToken\n                        );\n                    }\n                } catch {\n                    // Do nothing.\n                }\n            }\n        }\n\n        return httpOptions;\n    }\n\n    private setDefaultHeaderOptions(url: string, httpOptions: any = {}): any {\n        if (!httpOptions.headers) {\n            httpOptions.headers = new HttpHeaders();\n        }\n\n        // Add content type\n        if (!httpOptions.headers.has('Content-Type')) {\n            httpOptions.headers = httpOptions.headers.set(\n                'Content-Type',\n                'application/json'\n            );\n        }\n\n        httpOptions = this.addAuthorizationToken(httpOptions);\n        httpOptions = this.addWebApiToken(url, httpOptions);\n\n        return httpOptions;\n    }\n\n    // getTextFile(filename: string): void {\n    //     // The Observable returned by get() is of type Observable<string>\n    //     // because a text response was specified.\n    //     // There's no need to pass a <string> type parameter to get().\n    //     // return this.http.get(filename, {responseType: 'text'})\n    //     //     .pipe(\n    //     //         tap( // Log the result or error\n    //     //         data => this.log(filename, data),\n    //     //         error => this.logError(filename, error)\n    //     //         )\n    //     // );\n    // }\n\n    getHttpCall(url: string, httpOptions: any = {}): Observable<any> {\n        httpOptions = this.setDefaultHeaderOptions(url, httpOptions);\n\n        return this.http\n            .get(url, httpOptions)\n            .pipe(catchError(this.handleError.bind(this)));\n        //     .subscribe(\n        //         (res) => console.log(''),\n        //         (error) => console.log(''),\n        //         () => {}\n        // );\n    }\n\n    postHttpCall(\n        url: string,\n        body: any | null,\n        httpOptions: any = {}\n    ): Observable<any> {\n        httpOptions = this.setDefaultHeaderOptions(url, httpOptions);\n\n        return this.http\n            .post(url, body, httpOptions)\n            .pipe(catchError(this.handleError.bind(this)));\n        //     .subscribe(\n        //         (res) => console.log(''),\n        //         (error) => console.log(''),\n        //         () => {}\n        // );\n    }\n\n    getWapiApiCall(url: string, httpOptions: any = {}): Observable<any> {\n        const wapiBaseUrl = this.sessionService.getWapiBaseUrl();\n        return this.getHttpCall(`${wapiBaseUrl}${url}`, httpOptions);\n    }\n\n    postWapiApiCall(\n        url: string,\n        body: any | null,\n        httpOptions: any = {}\n    ): Observable<any> {\n        const wapiBaseUrl = this.sessionService.getWapiBaseUrl();\n        return this.postHttpCall(`${wapiBaseUrl}${url}`, body, httpOptions);\n    }\n\n    getPapiApiCall(url: string, httpOptions: any = {}): Observable<any> {\n        const papiBaseUrl = this.sessionService.getPapiBaseUrl();\n        return this.getHttpCall(`${papiBaseUrl}${url}`, httpOptions);\n    }\n\n    postPapiApiCall(\n        url: string,\n        body: any | null,\n        httpOptions: any = {}\n    ): Observable<any> {\n        const papiBaseUrl = this.sessionService.getPapiBaseUrl();\n        return this.postHttpCall(`${papiBaseUrl}${url}`, body, httpOptions);\n    }\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ITranslationResource, MultiTranslateHttpLoader } from 'ngx-translate-multi-http-loader';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n/*\r\n    This service is the webapp api for addon usege.\r\n*/\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class PepTranslateService {\r\n    constructor(\r\n        private http: HttpClient\r\n        // private sessionService: PepSessionService,\r\n        // private httpService: PepHttpService,\r\n        // private loaderService: PepLoaderService\r\n    ) {\r\n        //\r\n    }\r\n\r\n    createMultiTranslateLoader(resources: ITranslationResource[]) {\r\n        return new MultiTranslateHttpLoader(this.http, resources);\r\n    }\r\n\r\n    setDefaultTranslateLang(translate: TranslateService, urlLangParam = 'userLang') {\r\n        let userLang = 'en';\r\n        translate.setDefaultLang(userLang);\r\n        userLang = translate.getBrowserLang().split('-')[0]; // use navigator lang if available\r\n\r\n        if (urlLangParam.length > 0) {\r\n            const index = location.href.indexOf(urlLangParam);\r\n\r\n            if (index > -1) {\r\n                // urlLangParam=XX\r\n                const startIndex = index + urlLangParam.length + '='.length;\r\n                userLang = location.href.substring(startIndex, startIndex + 2);\r\n            }\r\n        }\r\n\r\n        // the lang to use, if the lang isn't available, it will use the current loader to get them\r\n        translate.use(userLang).subscribe((res: any) => {\r\n            // In here you can put the code you want. At this point the lang will be loaded\r\n        });\r\n    }\r\n\r\n}\r\n","import { Injectable, Injector, Optional, Type } from '@angular/core';\nimport { createCustomElement } from '@angular/elements';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PepSessionService } from './session.service';\nimport { PepFileService } from './file.service';\nimport { PepHttpService } from '../../http/services/http.service';\nimport { PepLoaderService } from '../../http/services/loader.service';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ITranslationResource } from 'ngx-translate-multi-http-loader';\nimport { PepTranslateService } from './translate.service';\nimport { connectRouter } from '@angular-architects/module-federation-tools';\n\n/*\n    This service is the webapp api for addon usege.\n*/\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepAddonService {\n    private readonly PAGES_ADDON_UUID = '50062e0c-9967-4ed4-9102-f2bc50602d41';\n    // private readonly ADDON_ASSETS_PATH_KEY = 'AddonAssetsPath';\n    private readonly ADDONS_DICTIONARY_ASSETS_PATH_KEY = 'AddonsDictionaryAssetsPath';\n    private readonly ADDON_API_RELATIVE_PATH = '/addons/api';\n    private readonly ADDON_API_ASYNC_RELATIVE_PATH = `${this.ADDON_API_RELATIVE_PATH}/async`;\n\n    private static _customElementsMap: Map<string, any> = new Map();\n\n    private get devServer() {\n        return this.route ? this.route.snapshot.queryParamMap.get('devServer') === 'true' : false;\n    }\n\n    constructor(\n        private sessionService: PepSessionService,\n        private httpService: PepHttpService,\n        private loaderService: PepLoaderService,\n        public translateService: PepTranslateService,\n        public fileService: PepFileService,\n        @Optional() private route: ActivatedRoute,\n    ) {\n        //\n    }\n\n    private getAddonBaseRelativePath(isAsync = false): string {\n        return isAsync\n            ? this.ADDON_API_ASYNC_RELATIVE_PATH\n            : this.ADDON_API_RELATIVE_PATH;\n    }\n\n    getAddonStaticFolder(addonUUID: string): string {\n        // if (addonUUID.length > 0) {\n            const addonsDictionary = this.sessionService.getObject(this.ADDONS_DICTIONARY_ASSETS_PATH_KEY);\n            return addonsDictionary && addonsDictionary[addonUUID] ? addonsDictionary[addonUUID] : '';\n        // } else {\n            // return this.sessionService.getObject(this.ADDON_ASSETS_PATH_KEY) || '';\n        // }\n    }\n\n    setAddonStaticFolder(path: string, addonUUID: string): void {\n        // if (addonUUID.length > 0) {\n            const addonsDictionary = this.sessionService.getObject(this.ADDONS_DICTIONARY_ASSETS_PATH_KEY) ?? {};\n            addonsDictionary[addonUUID] = path;\n            this.sessionService.setObject(this.ADDONS_DICTIONARY_ASSETS_PATH_KEY, addonsDictionary);\n        // } else {\n        //     return this.sessionService.setObject(this.ADDON_ASSETS_PATH_KEY, path);\n        // }\n    }\n\n    getServerBaseUrl(addonUUID: string, fileName = '', isAsync = false, localhostPort = 4500): string {\n        const fileToAdd = fileName.length > 0 ? `/${fileName}` : '';\n        \n        // For devServer run server on localhost.\n        if(this.devServer) {\n            return `http://localhost:${localhostPort}${fileToAdd}`;\n        } else {\n            const baseUrl = this.sessionService.getPapiBaseUrl();\n            return `${baseUrl}${this.getAddonBaseRelativePath(isAsync)}/${addonUUID}${fileToAdd}`;\n        }\n    }\n\n    getAddonApiCall(\n        addonUUID: string,\n        fileName: string,\n        functionName: string,\n        httpOptions = {},\n        isAsync = false\n    ): Observable<any> {\n        // return this.httpService.getPapiApiCall(\n        //     `${this.getAddonBaseRelativePath(\n        //         isAsync\n        //     )}/${addonUUID}/${fileName}/${functionName}`,\n        //     httpOptions\n        // );\n\n        const papiBaseUrl = this.getServerBaseUrl(addonUUID, fileName, isAsync);\n        return this.httpService.getHttpCall(`${papiBaseUrl}/${functionName}`, httpOptions);\n    }\n\n    postAddonApiCall(\n        addonUUID: string,\n        fileName: string,\n        functionName: string,\n        body = {},\n        httpOptions = {},\n        isAsync = false\n    ): Observable<any> {\n        // return this.httpService.postPapiApiCall(\n        //     `${this.getAddonBaseRelativePath(\n        //         isAsync\n        //     )}/${addonUUID}/${fileName}/${functionName}`,\n        //     body,\n        //     httpOptions\n        // );\n\n        const papiBaseUrl = this.getServerBaseUrl(addonUUID, fileName, isAsync);\n        return this.httpService.postHttpCall(`${papiBaseUrl}/${functionName}`, body, httpOptions);\n    }\n\n    async getAddonCPICall(\n        addonUUID: string,\n        url: string\n    ) {\n        const res = await this.emitEvent(\"AddonAPI\", {\n            AddonUUID: addonUUID,\n            RelativeURL: url,\n        })\n\n        if (res.Success) {\n            return JSON.parse(res.Value)\n        }\n        else {\n            throw new Error(res.Value)\n        }\n    }\n\n    async postAddonCPICall(\n        addonUUID: string,\n        url: string,\n        body: any\n    ) {\n        const res = await this.emitEvent(\"AddonAPI\", {\n            AddonUUID: addonUUID,\n            RelativeURL: url,\n            Method: 'POST',\n            Body: body\n        })\n\n        if (res.Success) {\n            return JSON.parse(res.Value)\n        }\n        else {\n            throw new Error(res.Value)\n        }\n    }   \n\n    emitEvent(eventKey: string, eventData: any): Promise<any> {\n        return new Promise(resolve => {\n            window.dispatchEvent(new CustomEvent('emit-event', {\n                detail: {\n                    eventKey,\n                    eventData: eventData,\n                    completion: resolve\n                }\n            }))\n        })\n    }\n\n    // TODO: need to chek this if the loader is working.\n    fetch(input: RequestInfo, init?: RequestInit): Promise<Response> {\n        this.loaderService.show();\n\n        return window.fetch(input, init).finally(() => {\n            this.loaderService.hide();\n        });\n    }\n\n    getNgxLibTranslationResource(addonUUID: string, libName = 'ngx-lib'): ITranslationResource {\n        const addonStaticFolder = this.getAddonStaticFolder(addonUUID);\n        const translationsPath: string = this.fileService.getAssetsTranslationsPath(addonStaticFolder, libName);\n        const translationsSuffix: string = this.fileService.getAssetsTranslationsSuffix(libName);\n\n        return {\n            prefix: translationsPath,\n            suffix: translationsSuffix,\n        };\n    }\n\n    getAddonTranslationResource(addonUUID: string): ITranslationResource {\n        const addonStaticFolder = this.getAddonStaticFolder(addonUUID);\n        const defaultSubFolder = 'assets/i18n/';\n\n        return {\n            prefix: addonStaticFolder.length > 0 ? `${addonStaticFolder}${defaultSubFolder}` : `/${defaultSubFolder}`,\n            suffix: '.json',\n        };\n    }\n\n    setDefaultTranslateLang(translate: TranslateService, urlLangParam = 'userLang') {\n        this.translateService.setDefaultTranslateLang(translate, urlLangParam);\n    }\n\n    getPagesAddonUUID() {\n        return this.PAGES_ADDON_UUID;\n    }\n\n    setShellRouterData(data: { addPadding?: boolean, showSidebar?: boolean, showHeader?: boolean }) {\n        const eventData = {\n            detail: data,\n        };\n\n        const customEvent = new CustomEvent('set-router-data', eventData);\n        window.dispatchEvent(customEvent);\n    }\n\n    defineCustomElement(elementName: string, component: Type<any>, injector: Injector) {\n        if (!customElements.get(elementName)) {  \n            customElements.define(elementName, createCustomElement(component, {injector: injector}));\n            \n            // Set the elementName in the _customElementsMap (Fix internal routing bug).\n            PepAddonService._customElementsMap.set(elementName, {injector: injector});\n        }\n    }\n\n    // Fix internal routing bug.\n    connectInternalRouter(elementName: string) {\n        const customElementObject = PepAddonService._customElementsMap.get(elementName);\n        const router = customElementObject?.injector.get(Router);\n\n        if (router) {\n            const useHash = location.href.includes('#');\n            connectRouter(router, useHash);\n        }\n    }\n\n    public static createMultiTranslateLoader(\n        addonUUID: string,\n        addonService: PepAddonService,\n        libsName = ['ngx-lib'],\n    ) {\n        const ngxLibTranslationResources = [];\n\n        if (libsName?.length > 0) {\n            for (let index = 0; index < libsName.length; index++) {\n                const libName = libsName[index];\n                ngxLibTranslationResources.push(addonService.getNgxLibTranslationResource(addonUUID, libName));\n            }\n        }\n\n        const addonTranslationResource = addonService.getAddonTranslationResource(addonUUID);\n\n        return addonService.translateService.createMultiTranslateLoader([\n            ...ngxLibTranslationResources,\n            addonTranslationResource\n        ]);\n    }\n}\n","import { Injectable } from '@angular/core';\n\nexport interface IPepRgbColor {\n    r?: any;\n    g?: any;\n    b?: any;\n}\n\nexport interface IPepHslColor {\n    h?: any;\n    s?: any;\n    l?: any;\n}\n\nexport interface IPepClosestColor {\n    color: string;\n    lightness: number;\n}\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepColorService {\n    readonly FLOAT_REGEX = /^\\d+(\\.\\d+)?$/;\n    readonly THREE_DIGIT_HEX_COLOR_REGEX = /^[0-9a-fA-F]{3}$/;\n    readonly THREE_DIGIT_HEX_COLOR_WITH_HASH_REGEX = /^#[0-9a-fA-F]{3}$/;\n    readonly SIX_DIGIT_HEX_COLOR_REGEX = /^[0-9a-fA-F]{6}$/;\n    readonly SIX_DIGIT_HEX_COLOR_WITH_HASH_REGEX = /^#[0-9a-fA-F]{6}$/;\n\n    private contrast(str1: string, str2: string): number {\n        const L1 = this.relativeLuminance(this.hex2rgb(str1));\n        const L2 = this.relativeLuminance(this.hex2rgb(str2));\n\n        if (L1 < L2) {\n            return (L2 + 0.05) / (L1 + 0.05);\n        }\n\n        return (L1 + 0.05) / (L2 + 0.05);\n    }\n\n    private findClosestAccessibleDarkerColor(\n        adjustableColor: string,\n        otherColor: string,\n        contrastRatio: number\n    ): IPepClosestColor {\n        const { h, s, l } = this.hex2hsl(adjustableColor);\n\n        if (this.contrast(adjustableColor, otherColor) >= contrastRatio) {\n            return {\n                color: adjustableColor,\n                lightness: l,\n            };\n        }\n\n        let minColor = this.hsl2hex({ h, s, l: 0 });\n\n        if (this.contrast(minColor, otherColor) < contrastRatio) {\n            return null;\n        }\n\n        let min = 0;\n        let max = l;\n        let maxColor = this.hsl2hex({ h, s, l });\n        let lastMinColor;\n        let lastMaxColor;\n        let lTemp;\n\n        while (minColor !== lastMinColor || maxColor !== lastMaxColor) {\n            lastMinColor = minColor;\n            lastMaxColor = maxColor;\n\n            lTemp = (min + max) / 2;\n            adjustableColor = this.hsl2hex({ h, s, l: lTemp });\n\n            if (this.contrast(adjustableColor, otherColor) < contrastRatio) {\n                max = lTemp;\n                maxColor = this.hsl2hex({ h, s, l: lTemp });\n            } else {\n                min = lTemp;\n                minColor = this.hsl2hex({ h, s, l: lTemp });\n            }\n        }\n\n        return {\n            color: minColor,\n            lightness: min,\n        };\n    }\n\n    private findClosestAccessibleLighterColor(\n        adjustableColor: string,\n        otherColor: string,\n        contrastRatio: number\n    ): IPepClosestColor {\n        const { h, s, l } = this.hex2hsl(adjustableColor);\n\n        if (this.contrast(adjustableColor, otherColor) >= contrastRatio) {\n            return {\n                color: adjustableColor,\n                lightness: l,\n            };\n        }\n\n        let maxColor = this.hsl2hex({ h, s, l: 100 });\n\n        if (this.contrast(maxColor, otherColor) < contrastRatio) {\n            return null;\n        }\n\n        let min = l;\n        let max = 100;\n        let minColor = this.hsl2hex({ h, s, l });\n        let lastMinColor;\n        let lastMaxColor;\n        let lTemp;\n\n        while (minColor !== lastMinColor || maxColor !== lastMaxColor) {\n            lastMinColor = minColor;\n            lastMaxColor = maxColor;\n\n            lTemp = (min + max) / 2;\n            adjustableColor = this.hsl2hex({ h, s, l: lTemp });\n\n            if (this.contrast(adjustableColor, otherColor) < contrastRatio) {\n                min = lTemp;\n                minColor = this.hsl2hex({ h, s, l: lTemp });\n            } else {\n                max = lTemp;\n                maxColor = this.hsl2hex({ h, s, l: lTemp });\n            }\n        }\n\n        return {\n            color: maxColor,\n            lightness: max,\n        };\n    }\n\n    /**\n     * Convert hex string to 6 digits hex string.\n     * @param str The string to convert.\n     */\n    hex2sixDigitHex(str: string): string {\n        if (!str) {\n            return null;\n        }\n\n        str = str.trim();\n\n        if (this.SIX_DIGIT_HEX_COLOR_WITH_HASH_REGEX.test(str)) {\n            return str;\n        }\n\n        if (this.SIX_DIGIT_HEX_COLOR_REGEX.test(str)) {\n            return '#' + str;\n        }\n\n        if (this.THREE_DIGIT_HEX_COLOR_WITH_HASH_REGEX.test(str)) {\n            return '#' + str[1] + str[1] + str[2] + str[2] + str[3] + str[3];\n        }\n\n        if (this.THREE_DIGIT_HEX_COLOR_REGEX.test(str)) {\n            return '#' + str[0] + str[0] + str[1] + str[1] + str[2] + str[2];\n        }\n\n        return null;\n    }\n\n    /**\n     * Convert rgb color to 6 digits hex string.\n     * @param color The rgb color to convert.\n     */\n    rgb2sixDigitHex(color: IPepRgbColor): string {\n        if (!color) {\n            return null;\n        }\n\n        color.r = color.r.toString(16);\n        color.g = color.g.toString(16);\n        color.b = color.b.toString(16);\n\n        if (color.r.length === 1) {\n            color.r = '0' + color.r;\n        }\n\n        if (color.g.length === 1) {\n            color.g = '0' + color.g;\n        }\n\n        if (color.b.length === 1) {\n            color.b = '0' + color.b;\n        }\n\n        return '#' + color.r + color.g + color.b;\n    }\n\n    /**\n     * Convert hex string to rgb color.\n     * @param str The hex string to convert.\n     */\n    hex2rgb(str: string): IPepRgbColor {\n        if (!str) {\n            return null;\n        }\n\n        const sixDigitHex = this.hex2sixDigitHex(str);\n\n        if (sixDigitHex === null) {\n            return null;\n        }\n\n        return {\n            r: parseInt(sixDigitHex.slice(1, 3), 16),\n            g: parseInt(sixDigitHex.slice(3, 5), 16),\n            b: parseInt(sixDigitHex.slice(5, 7), 16),\n        };\n    }\n\n    rgbString2hsl(str: string): IPepHslColor {\n        if (!str) {\n            return null;\n        }\n\n        const sep = str.indexOf(',') > -1 ? ',' : ' ';\n        const rgbArr = str.substr(4).split(')')[0].split(sep);\n\n        const r = rgbArr[0];\n        const g = rgbArr[1].substr(0, rgbArr[1].length).trim();\n        const b = rgbArr[2].substr(0, rgbArr[2].length).trim();\n\n        return this.rgb2hsl({ r, g, b });\n    }\n\n    rgb2hsl({ r, g, b }: IPepRgbColor): IPepHslColor {\n        r /= 255;\n        g /= 255;\n        b /= 255;\n\n        // Find greatest and smallest channel values\n        const cmin = Math.min(r, g, b);\n        const cmax = Math.max(r, g, b);\n        const delta = cmax - cmin;\n\n        let h = 0;\n        let s = 0;\n        let l = 0;\n\n        if (delta === 0) {\n            h = 0;\n        } else if (cmax === r) {\n            h = ((g - b) / delta) % 6;\n        } else if (cmax === g) {\n            h = (b - r) / delta + 2;\n        } else {\n            h = (r - g) / delta + 4;\n        }\n\n        h = Math.round(h * 60);\n\n        if (h < 0) {\n            h += 360;\n        }\n\n        l = (cmax + cmin) / 2;\n        s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n        s = +(s * 100).toFixed(1);\n        l = +(l * 100).toFixed(1);\n\n        return { h, s, l };\n    }\n\n    hslString2hsl(str: string): IPepHslColor {\n        if (!str) {\n            return null;\n        }\n\n        const sep = str.indexOf(',') > -1 ? ',' : ' ';\n        const hslArr = str.substr(4).split(')')[0].split(sep);\n\n        let h: any = hslArr[0];\n        let s = hslArr[1].substr(0, hslArr[1].length).trim();\n        let l = hslArr[2].substr(0, hslArr[2].length).trim();\n\n        // Strip label and convert to degrees (if necessary)\n        if (h.indexOf('deg') > -1) {\n            h = h.substr(0, h.length - 3);\n        } else if (h.indexOf('rad') > -1) {\n            h = Math.round(h.substr(0, h.length - 3) * (180 / Math.PI));\n        } else if (h.indexOf('turn') > -1) {\n            h = Math.round(h.substr(0, h.length - 4) * 360);\n        }\n\n        // Keep hue fraction of 360 if ending up over\n        if (h >= 360) {\n            h %= 360;\n        }\n\n        // Remove the %\n        if (s.indexOf('%') > -1) {\n            s = s.replace(/%/g, '');\n        }\n\n        // Remove the %\n        if (l.indexOf('%') > -1) {\n            l = l.replace(/%/g, '');\n        }\n\n        return { h, s, l };\n    }\n\n    hsl2rgb({ h, s, l }: IPepHslColor): IPepRgbColor {\n        let r;\n        let g;\n        let b;\n\n        if (!isFinite(h)) {\n            h = 0;\n        }\n\n        if (!isFinite(s)) {\n            s = 0;\n        }\n\n        if (!isFinite(l)) {\n            l = 0;\n        }\n\n        h /= 60;\n\n        if (h < 0) {\n            h = 6 - (-h % 6);\n        }\n\n        h %= 6;\n\n        s = Math.max(0, Math.min(1, s / 100));\n        l = Math.max(0, Math.min(1, l / 100));\n\n        const c = (1 - Math.abs(2 * l - 1)) * s;\n        const x = c * (1 - Math.abs((h % 2) - 1));\n\n        if (h < 1) {\n            r = c;\n            g = x;\n            b = 0;\n        } else if (h < 2) {\n            r = x;\n            g = c;\n            b = 0;\n        } else if (h < 3) {\n            r = 0;\n            g = c;\n            b = x;\n        } else if (h < 4) {\n            r = 0;\n            g = x;\n            b = c;\n        } else if (h < 5) {\n            r = x;\n            g = 0;\n            b = c;\n        } else {\n            r = c;\n            g = 0;\n            b = x;\n        }\n\n        const m = l - c / 2;\n        r = Math.round((r + m) * 255);\n        g = Math.round((g + m) * 255);\n        b = Math.round((b + m) * 255);\n\n        return { r, g, b };\n    }\n\n    hex2hsl(str: string): IPepHslColor {\n        if (!str) {\n            return null;\n        }\n\n        const sixDigitHex = this.hex2sixDigitHex(str);\n\n        if (sixDigitHex === null) {\n            return null;\n        }\n\n        const rgb = this.hex2rgb(sixDigitHex);\n\n        if (rgb === null) {\n            return null;\n        }\n\n        return this.rgb2hsl(rgb);\n    }\n\n    hsl2hex(hsl: IPepHslColor): string {\n        if (!hsl) {\n            return null;\n        }\n\n        const rgb = this.hsl2rgb(hsl);\n\n        return this.rgb2sixDigitHex(rgb);\n    }\n\n    relativeLuminance({ r, g, b }: IPepRgbColor): number {\n        [r, g, b] = [r, g, b].map((c) => {\n            c = c / 255;\n\n            if (c <= 0.03928) {\n                return c / 12.92;\n            }\n\n            return Math.pow((c + 0.055) / 1.055, 2.4);\n        });\n\n        return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n    }\n\n    findClosestAccessibleColor(\n        adjustableColor: string,\n        otherColor: string,\n        contrastRatio: number\n    ): string {\n        const closestDarkerColor: IPepClosestColor = this.findClosestAccessibleDarkerColor(\n            adjustableColor,\n            otherColor,\n            contrastRatio\n        );\n        const closestLighterColor: IPepClosestColor = this.findClosestAccessibleLighterColor(\n            adjustableColor,\n            otherColor,\n            contrastRatio\n        );\n\n        if (closestDarkerColor === null) {\n            if (closestLighterColor === null) {\n                return null;\n            }\n\n            return closestLighterColor.color;\n        }\n\n        if (closestLighterColor === null) {\n            return closestDarkerColor.color;\n        }\n\n        const { l } = this.hex2hsl(adjustableColor);\n\n        if (\n            closestLighterColor.lightness - l <\n            l - closestDarkerColor.lightness\n        ) {\n            return closestLighterColor.color;\n        }\n\n        return closestDarkerColor.color;\n    }\n\n    convertHslToStringHsl(hsl: IPepHslColor): string {\n        return (\n            'hsl(' +\n            (hsl.h < 0 ? hsl.h + 360 : hsl.h) +\n            ', ' +\n            hsl.s +\n            '%, ' +\n            hsl.l +\n            '%)'\n        );\n    }\n}\n","import { Injectable } from '@angular/core';\nimport {\n    FieldLayout,\n    ObjectsDataRow,\n    UIControl,\n    UIControlField,\n    ObjectsDataRowCell,\n    FIELD_TYPE,\n    X_ALIGNMENT_TYPE,\n} from '../model/wapi.model';\nimport { PepGuid } from '../model/utilities.model';\n\nexport class PepFieldData {\n    ApiName: string;\n    Enabled?: boolean;\n    Value: string;\n    FormattedValue?: string;\n    FieldType: FIELD_TYPE;\n    ReadOnly?: boolean;\n    ColumnWidth: number;\n    ColumnWidthType?: number;\n    XAlignment: X_ALIGNMENT_TYPE;\n    Title: string;\n    AdditionalValue?: string;\n    OptionalValues?: any;\n\n    constructor(\n        options: {\n            ApiName?: string;\n            Enabled?: boolean;\n            Value?: string;\n            FormattedValue?: string;\n            FieldType?: FIELD_TYPE;\n            ReadOnly?: boolean;\n            ColumnWidth?: number;\n            ColumnWidthType?: number;\n            XAlignment?: X_ALIGNMENT_TYPE;\n            Title?: string;\n        } = {}\n    ) {\n        this.ApiName = options.ApiName;\n        this.Enabled = !!options.Enabled;\n        this.Value = options.Value;\n        this.FormattedValue = options.FormattedValue || '';\n        this.FieldType = options.FieldType;\n        this.ReadOnly = !!options.ReadOnly;\n        this.ColumnWidth = options.ColumnWidth;\n        this.ColumnWidthType = options.ColumnWidthType;\n        this.XAlignment = options.XAlignment || X_ALIGNMENT_TYPE.Left;\n        this.Title = options.Title || '';\n    }\n}\nexport class PepRowData {\n    UUID?: string;\n    IsEditable?: boolean;\n    IsSelected?: boolean;\n    IsSelectableForActions?: boolean;\n    Fields: PepFieldData[];\n}\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepDataConvertorService {\n    getUiControl(formData: PepRowData): UIControl {\n        const uiControl = new UIControl();\n\n        if (formData?.Fields?.length > 0) {\n            const uiRow = formData.Fields;\n            uiControl.ControlFields = [];\n            uiRow.forEach((field) =>\n                uiControl.ControlFields.push(this.setUIControlField(field))\n            );\n        }\n\n        return uiControl;\n    }\n\n    convertFormData(formData: PepRowData): ObjectsDataRow {\n        const rowData = new ObjectsDataRow();\n        rowData.Fields = [];\n        rowData.Type = 0;\n        rowData.UID = PepGuid.newGuid();\n        formData.Fields.forEach((field) =>\n            rowData.Fields.push(this.setDataField(field))\n        );\n\n        return rowData;\n    }\n\n    convertListData(\n        tableData: PepRowData[],\n        rowUUID = ''\n    ): Array<ObjectsDataRow> {\n        const rows = new Array<ObjectsDataRow>();\n\n        if (tableData.length > 0) {\n            tableData.forEach((row) => {\n                const rowData = new ObjectsDataRow();\n                rowData.Fields = [];\n                rowData.Type = 0;\n                rowData.UID = rowUUID\n                    ? rowUUID\n                    : row.UUID\n                        ? row.UUID\n                        : PepGuid.newGuid();\n                if (row.IsEditable === false) {\n                    rowData.IsEditable = false;\n                }\n                if (row.IsSelectableForActions === false) {\n                    rowData.IsSelectableForActions = false;\n                }\n                if (row.IsSelected) {\n                    rowData.IsSelected = true;\n                }\n                row.Fields.forEach((field) =>\n                    rowData.Fields.push(this.setDataField(field))\n                );\n                rows.push(rowData);\n            });\n        }\n\n        return rows;\n    }\n\n    setUIControlField(field: PepFieldData): UIControlField {\n        const controlField = new UIControlField();\n        controlField.ApiName = field.ApiName;\n        controlField.FieldType = field.FieldType;\n\n        controlField.Layout = new FieldLayout({\n            X: 1,\n            Width: 1,\n            XAlignment: field.XAlignment,\n            Y: 1,\n            Height: 1,\n            YAlignment: 1,\n        });\n\n        controlField.Title = field.Title;\n        controlField.ReadOnly = field.ReadOnly === true ? true : false;\n        controlField.ColumnWidth = field.ColumnWidth;\n        controlField.ColumnWidthType = field.ColumnWidthType || 1;\n        return controlField;\n    }\n\n    setDataField(field: PepFieldData): ObjectsDataRowCell {\n        const dataField = new ObjectsDataRowCell();\n        dataField.AdditionalValue = field.AdditionalValue;\n        dataField.ApiName = field.ApiName;\n        dataField.Enabled = field.Enabled === false ? false : true;\n        dataField.FieldType = field.FieldType;\n        dataField.FormattedValue =\n            field.FormattedValue || field.Value.toString();\n        dataField.GroupFields = null;\n        dataField.NotificationInfo = '';\n        dataField.OptionalValues = field.OptionalValues;\n        dataField.ReferenceObjectSubType = '';\n        dataField.TextColor = '';\n        dataField.Value = field.Value.toString();\n        dataField.Visible = true;\n        return dataField;\n    }\n\n    setFieldLayout(\n        x: number,\n        width: number,\n        xAlignment: number,\n        y: number,\n        height: number,\n        yAlignment: number,\n        lineNumber: number\n    ): FieldLayout {\n        const layout = new FieldLayout({\n            X: x,\n            Width: width,\n            XAlignment: xAlignment,\n            Y: y,\n            Height: height,\n            YAlignment: yAlignment,\n            LineNumber: lineNumber,\n        });\n\n        return layout;\n    }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Injectable, Optional } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n    AbstractControl,\n    ValidatorFn,\n    FormControl,\n    Validators,\n} from '@angular/forms';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepValidatorService {\n    //  Regular expressions\n    readonly integerUnsigned = '^[0-9]*$';\n    readonly integerSigned = '^-?[0-9]+$';\n    decimalUnsigned = '^[0-9]+(.[0-9]+)?$';\n    decimalSigned = '^-?[0-9]+(.[0-9]+)?$';\n    readonly phone = '^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-s./0-9]*$';\n\n    decimalSeparator = '.';\n\n    constructor(@Optional() private translate: TranslateService = null) {\n        const currentLang = this.translate?.currentLang || navigator.language;\n\n        // Check for number with thousands separator and if === ',' then the decimal separator is '.' else ','\n        const tmp = new Intl.NumberFormat(currentLang, {\n            maximumSignificantDigits: 2,\n        }).format(1000);\n        this.decimalSeparator = tmp.indexOf(',') === 1 ? '.' : ',';\n\n        this.decimalUnsigned = `^[0-9]+(${this.decimalSeparator}[0-9]+)?$`;\n        this.decimalSigned = `^-?[0-9]+(${this.decimalSeparator}[0-9]+)?$`;\n    }\n\n    /*\n        ValidatorFn functions\n    */\n    isEqual(target: FormControl | AbstractControl): ValidatorFn {\n        return (control: AbstractControl): { [key: string]: any } | null => {\n            if (control.value) {\n                return target.value !== control.value\n                    ? { equal: { value: true } }\n                    : null;\n            } else {\n                return null;\n            }\n        };\n    }\n\n    isGreaterThan(target: FormControl | AbstractControl): ValidatorFn {\n        return (control: AbstractControl): { [key: string]: any } | null => {\n            if (control.value && typeof target.value === 'number') {\n                return target.value > control.value\n                    ? { greater: { value: true } }\n                    : null;\n            } else if (control.value && typeof target.value === 'string') {\n                const controlValueNumer = coerceNumberProperty(control.value);\n                const targetValueNumer = coerceNumberProperty(target.value);\n\n                return targetValueNumer > controlValueNumer\n                    ? { greater: { value: true } }\n                    : null;\n            } else {\n                return null;\n            }\n        };\n    }\n\n    isLessThan(target: FormControl | AbstractControl): ValidatorFn {\n        return (control: AbstractControl): { [key: string]: any } | null => {\n            if (control.value && typeof target.value === 'number') {\n                return target.value < control.value\n                    ? { less: { value: true } }\n                    : null;\n            } else if (control.value && typeof target.value === 'string') {\n                const controlValueNumer = coerceNumberProperty(control.value);\n                const targetValueNumer = coerceNumberProperty(target.value);\n\n                return targetValueNumer < controlValueNumer\n                    ? { less: { value: true } }\n                    : null;\n            } else {\n                return null;\n            }\n        };\n    }\n\n    checkEmails(separator?: string): ValidatorFn {\n        return (control: AbstractControl): { [key: string]: any } | null => {\n            if (control.value) {\n                const emails = control.value.split(separator ? separator : ',');\n                const ctrl = new FormControl('', [\n                    Validators.required,\n                    Validators.email,\n                ]);\n                const result = emails.every((val: string) => {\n                    ctrl.setValue(val);\n                    return ctrl.valid;\n                });\n\n                return !result ? { emails: { value: true } } : null;\n            } else {\n                return null;\n            }\n        };\n    }\n\n    zipCodeValidator(): ValidatorFn {\n        return Validators.pattern(/^(\\d{5}(-\\d{4})?|[A-Z]\\d[A-Z] *\\d[A-Z]\\d)$/);\n    }\n\n    allowableCharactersValidator(): ValidatorFn {\n        return Validators.pattern(\n            /^[a-zA-Z0-9`~!@#$%^&*()_+}{|\":?><,./;'\\\\\\]\\[=\\- ]+$/\n        );\n    }\n\n    allowableCharactersWithoutNumberValidator(): ValidatorFn {\n        return Validators.pattern(\n            /^[a-zA-Z`~!@#$%^&*()_+}{|\":?><,./;'\\\\\\]\\[=\\- ]+$/\n        );\n    }\n\n    allowableCharactersWithoutSpecialValidator(): ValidatorFn {\n        return Validators.pattern(/^[a-zA-Z0-9 ]+$/);\n    }\n\n    dateValidator(): ValidatorFn {\n        return Validators.pattern(\n            /^(?:(0[1-9]|1[012])[\\/.](0[1-9]|[12][0-9]|3[01])[\\/.](19|20)[0-9]{2})$/\n        );\n    }\n\n    numberValidator(): ValidatorFn {\n        return Validators.pattern(/^[0-9]*$/);\n    }\n\n    /*\n        RegExp functions\n    */\n    validateNumber(value: string, allowDecimal: boolean): string {\n        // choose the appropiate regular expression\n        let regex: string;\n\n        if (allowDecimal) {\n            regex = this.decimalSigned;\n        } else {\n            regex = this.integerSigned;\n        }\n\n        // when a numbers begins with a decimal separator,\n        // fix it adding a zero in the beginning\n        const firstCharacter = value.charAt(0);\n        if (firstCharacter == this.decimalSeparator) value = 0 + value;\n\n        // when a numbers ends with a decimal separator,\n        // fix it adding a zero in the end\n        const lastCharacter = value.charAt(value.length - 1);\n        if (lastCharacter == this.decimalSeparator) value = value + 0;\n\n        // test number with regular expression, when\n        // number is invalid, replace it with a zero\n        // console.log(`regex is ${regex} and value is ${value}`);\n        const valid: boolean = new RegExp(regex).test(value);\n\n        return valid ? value : null;\n    }\n\n    validatePhone(value: string): boolean {\n        // test phone with regular expression\n        const valid: boolean = new RegExp(this.phone).test(value);\n        return valid;\n    }\n\n    private getName(e): string {\n        if (e.key) {\n            return e.key;\n        } else {\n            // for old browsers\n            if (e.keyCode && String.fromCharCode) {\n                switch (e.keyCode) {\n                    case 8:\n                        return 'Backspace';\n                    case 9:\n                        return 'Tab';\n                    case 27:\n                        return 'Escape';\n                    case 37:\n                        return 'ArrowLeft';\n                    case 39:\n                        return 'ArrowRight';\n                    case 188:\n                        return ',';\n                    case 190:\n                        return '.';\n                    case 109:\n                        return '-'; // minus in numbpad\n                    case 173:\n                        return '-'; // minus in alphabet keyboard in firefox\n                    case 189:\n                        return '-'; // minus in alphabet keyboard in chrome\n                    default:\n                        return String.fromCharCode(e.keyCode);\n                }\n            }\n        }\n    }\n\n    private allowKeyboardNonNumericCharacters(\n        allowedKeys: Array<string>,\n        key: string,\n        controlOrCommand: boolean\n    ): boolean {\n        const defaultAllowedKeys = [\n            'Backspace',\n            'ArrowLeft',\n            'ArrowRight',\n            'Escape',\n            'Tab',\n            'Home',\n            'End',\n            'Delete',\n        ];\n\n        // allow some non-numeric characters\n        if (\n            defaultAllowedKeys.indexOf(key) != -1 ||\n            allowedKeys.indexOf(key) != -1 ||\n            // Allow: Ctrl+A and Command+A\n            (key == 'a' && controlOrCommand) ||\n            // Allow: Ctrl+C and Command+C\n            (key == 'c' && controlOrCommand) ||\n            // Allow: Ctrl+V and Command+V\n            (key == 'v' && controlOrCommand) ||\n            // Allow: Ctrl+X and Command+X\n            (key == 'x' && controlOrCommand) ||\n            key.startsWith('F')\n        ) {\n            // let it happen, don't do anything\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    isPhone(e: KeyboardEvent): boolean {\n        const key: string = this.getName(e);\n        const controlOrCommand = e.ctrlKey === true || e.metaKey === true;\n\n        // allowed keys apart from numeric characters\n        const allowedKeys = ['.', '-', '+', '(', ')', '*', '#'];\n\n        // allow some non-numeric characters\n        if (\n            this.allowKeyboardNonNumericCharacters(\n                allowedKeys,\n                key,\n                controlOrCommand\n            )\n        ) {\n            return true;\n        }\n\n        // allow phone characters only\n        const isPhone = new RegExp(this.phone).test(key);\n        return isPhone;\n    }\n\n    isNumber(e: KeyboardEvent, allowDecimal: boolean): boolean {\n        const cursorPosition: number = e.target['selectionStart'];\n        const originalValue: string = e.target['value'];\n        const key: string = this.getName(e);\n        const controlOrCommand = e.ctrlKey === true || e.metaKey === true;\n        const signExists = originalValue.includes('-');\n        const separatorExists = originalValue.includes(this.decimalSeparator);\n\n        // allowed keys apart from numeric characters\n        const allowedKeys = [];\n\n        // when decimals are allowed, add\n        // decimal separator to allowed codes when\n        // its position is not close to the the sign (-. and .-)\n        const separatorIsCloseToSign = signExists && cursorPosition <= 1;\n        if (allowDecimal && !separatorIsCloseToSign && !separatorExists) {\n            if (this.decimalSeparator == '.') allowedKeys.push('.');\n            else allowedKeys.push(',');\n        }\n\n        // when minus sign is allowed, add its\n        // key to allowed key only when the\n        // cursor is in the first position, and\n        // first character is different from\n        // decimal separator\n        const firstCharacterIsSeparator =\n            originalValue.charAt(0) != this.decimalSeparator;\n        if (!signExists && firstCharacterIsSeparator && cursorPosition == 0) {\n            allowedKeys.push('-');\n        }\n\n        // allow some non-numeric characters\n        if (\n            this.allowKeyboardNonNumericCharacters(\n                allowedKeys,\n                key,\n                controlOrCommand\n            )\n        ) {\n            return true;\n        }\n\n        // allow number characters only\n        const isNumber = new RegExp(this.integerUnsigned).test(key);\n        return isNumber;\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepWindowScrollingService {\n    // Inject a STYLE element for overrides the scroll behavior, this way we can add | remove it in order to the behavior.\n    private styleTag: HTMLStyleElement;\n\n    constructor() {\n        this.styleTag = this.buildStyleElement();\n    }\n\n    // Disable the scrolling feature on the main viewport.\n    public disable(): void {\n        document.body.appendChild(this.styleTag);\n    }\n\n    // Re-enable the scrolling feature on the main viewport.\n    public enable(): void {\n        document.body.removeChild(this.styleTag);\n    }\n\n    // Return a Style element that will prevent scrolling on the body.\n    private buildStyleElement(): HTMLStyleElement {\n        const style = document.createElement('style');\n\n        style.type = 'text/css';\n        style.setAttribute(\n            'data-debug',\n            'Injected by WindowScrolling service.'\n        );\n        style.textContent = `\n            body {\n                overflow: hidden !important ;\n            }\n        `;\n\n        return style;\n    }\n}\n","/*\n * Public API Surface of ngx-lib/core/common/services\n */\nexport * from './addon.service';\nexport * from './color.service';\nexport * from './cookie.service';\nexport * from './data-convertor.service';\nexport * from './file.service';\nexport * from './jwt-helper.service';\nexport * from './session.service';\nexport * from './translate.service';\nexport * from './utilities.service';\nexport * from './validator.service';\nexport * from './window-scrolling.service';\n","/*\n * export from ngx-lib/core/common/services\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core/common\n */\nexport * from './directives/index';\nexport * from './model/index';\nexport * from './pipes/index';\nexport * from './services/index';\n","/*\n * export from ngx-lib/core/common\n */\nexport * from './public-api';\n","import { ValidatorFn, Validators } from '@angular/forms';\n\n/** Allowed layout options */\nexport type PepLayoutType = 'form' | 'card' | 'table';\n\n/** Allowed style options */\nexport type PepStyleType = 'weak' | 'weak-invert' | 'regular' | 'strong';\n\n/** Allowed style state options */\nexport type PepStyleStateType = 'system' | 'caution' | 'success';\n\n/** Allowed size options */\nexport type PepSizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Allowed horizontal alignment options */\nexport type PepHorizontalAlignment = 'left' | 'center' | 'right';\n/** Default horizontal alignment. */\nexport const DEFAULT_HORIZONTAL_ALIGNMENT: PepHorizontalAlignment = 'left';\n\n/** Allowed vertical alignment options */\nexport type PepVerticalAlignment = 'top' | 'middle' | 'bottom';\n/** Default horizontal alignment. */\nexport const DEFAULT_VERTICAL_ALIGNMENT: PepVerticalAlignment = 'top';\nexport interface IPepOption {\n    key: string;\n    value: string;\n}\n\n// export type PepFieldBaseType = '' | PepInternalButtonFieldType | PepTextboxFieldType |\n//     PepQuantitySelectorFieldType | PepDateFieldType | PepCheckboxFieldType | PepSelectFieldType;\ninterface IPepFieldBaseOptions {\n    value?: any;\n    formattedValue?: any;\n    additionalValue?: string;\n    key?: string;\n    label?: string;\n    accessory?: string;\n    mandatory?: boolean;\n    readonly?: boolean;\n    disabled?: boolean;\n    order?: number;\n    controlType?: string;\n    // type?: PepFieldBaseType;\n    placeholder?: string;\n    hidden?: boolean;\n    row?: number;\n    rowSpan?: number;\n    col?: number;\n    colSpan?: number;\n    xAlignment?: PepHorizontalAlignment;\n    yAlignment?: PepVerticalAlignment;\n    maxFieldCharacters?: number;\n    minValue?: number;\n    maxValue?: number;\n    textColor?: string;\n    visible?: boolean;    \n    emptyOption?: boolean;    \n    // lastFocusField?: any;\n    digitsNumberAfterDecimalPoint?: number;\n}\nexport class PepFieldBase {\n    value: any;\n    formattedValue: any;\n    additionalValue: string;\n    key: string;\n    label: string;\n    accessory: string;\n    mandatory: boolean;\n    readonly: boolean;\n    disabled: boolean;\n    order: number;\n    // type: string;\n    controlType: string;\n    placeholder: string;\n    hidden: boolean;\n    row: number;\n    rowSpan: number;\n    col: number;\n    colSpan: number;\n    xAlignment: PepHorizontalAlignment;\n    yAlignment: PepVerticalAlignment;\n    groupFields: PepFieldBase[];\n    maxFieldCharacters: number;\n    minValue: number;\n    maxValue: number;\n    textColor: string;\n    visible: boolean;        \n    // lastFocusField: any;\n\n    constructor(options: IPepFieldBaseOptions = {}) {\n        this.key = options.key || '';\n        this.label = options.label || '';\n        this.accessory = options.accessory || '';\n        this.mandatory = !!options.mandatory;\n\n        this.order = options.order ?? 1;\n        this.controlType = options.controlType || '';\n        // this.type = options.type || '';\n        this.placeholder = options.placeholder || '';\n        this.hidden = !!options.hidden;\n\n        this.row = options.row ?? 1;\n        this.rowSpan = options.rowSpan ?? 1;\n        this.col = options.col ?? 1;\n        this.colSpan = options.colSpan ?? 1;\n\n        this.xAlignment = options.xAlignment ?? DEFAULT_HORIZONTAL_ALIGNMENT;\n        this.yAlignment = options.yAlignment ?? DEFAULT_VERTICAL_ALIGNMENT;\n\n        this.maxFieldCharacters = options.maxFieldCharacters ?? 0;\n        this.minValue = options.minValue ?? 0;\n        this.maxValue = options.maxValue ?? 0;\n\n        this.update(options);\n    }\n\n    protected getBaseValidators(isCheckbox = false): ValidatorFn[] {\n        const validators = [];\n\n        if (this.mandatory && !this.readonly && !this.disabled) {\n            if (isCheckbox) {\n                validators.push(Validators.requiredTrue);\n            } else {\n                validators.push(Validators.required);\n            }\n        } else {\n            validators.push(Validators.nullValidator);\n        }\n\n        if (this.maxFieldCharacters > 0) {\n            validators.push(Validators.maxLength(this.maxFieldCharacters));\n        }        \n\n        return validators;\n    }\n\n    public getValidators(): ValidatorFn[] {\n        const validators = this.getBaseValidators();\n        return validators;\n    }\n\n    public update(options: IPepFieldBaseOptions): void {\n        this.value = options.value;\n        this.formattedValue = options.formattedValue;\n        this.additionalValue = options.additionalValue;\n\n        this.readonly = !!options.readonly;\n        this.disabled = !!options.disabled;\n        this.visible = !!options.visible;\n        this.textColor = options.textColor || '';\n        // this.lastFocusField = options.lastFocusField || null;\n    }\n}\n\nexport class PepPlaceholderField extends PepFieldBase {\n    controlType = 'placeholder';\n\n    constructor(options: IPepFieldBaseOptions = {}) {\n        super(options);\n    }\n}\n\nexport class PepSeparatorField extends PepFieldBase {\n    controlType = 'separator';\n    \n    constructor(options: IPepFieldBaseOptions = {}) {\n        super(options);        \n    }\n}\n\nexport class PepAttachmentField extends PepFieldBase {\n    controlType = 'attachment';\n\n    constructor(options: IPepFieldBaseOptions = {}) {\n        super(options);\n    }\n}\n\nexport class PepIndicatorsField extends PepFieldBase {\n    controlType = 'indicators';\n\n    constructor(options: IPepFieldBaseOptions = {}) {\n        super(options);\n    }\n}\n\nexport type PepTextboxFieldType =\n    | 'text'\n    | 'link'\n    | 'email'\n    | 'phone'\n    | 'duration'\n    | 'int'\n    | 'percentage'\n    | 'currency'\n    | 'real';\ninterface IPepTextboxFieldOptions extends IPepFieldBaseOptions {\n    type?: PepTextboxFieldType;\n    regex?: string | RegExp;\n    // regexError?: string;\n}\nexport class PepTextboxField extends PepFieldBase {\n    controlType = 'textbox';\n    type: PepTextboxFieldType = 'text';\n    regex?: string | RegExp;\n    // regexError?: string;\n    digitsNumberAfterDecimalPoint = NaN;\n\n    constructor(options: IPepTextboxFieldOptions = {}) {\n        super(options);\n\n        this.type = options.type || 'text';\n        this.regex = options.regex ?? null;\n        // this.regexError = options.regexError ?? null;\n\n        this.update(options);\n    }\n\n    public update(options: IPepTextboxFieldOptions): void {\n        super.update(options);\n\n        this.digitsNumberAfterDecimalPoint = options.digitsNumberAfterDecimalPoint ?? NaN;\n\n        if (this.type === 'link') {\n            // DI-11292 - add changes for link field for the \"Read Only display value\" prop\n            this.formattedValue =\n                this.disabled && this.formattedValue && this.value\n                    ? this.formattedValue\n                    : this.value;\n        }\n    }\n\n    public getValidators(): ValidatorFn[] {\n        const validators = super.getBaseValidators();\n\n        if (this.type === 'email') {\n            validators.push(\n                Validators.pattern(\n                    /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n                )\n            );\n            // validators.push(Validators.email);\n        } else if (this.type === 'phone') {\n            validators.push(Validators.pattern(/^[\\d\\.\\-\\+\\(\\)\\*\\#]+$/));\n        } else if (this.type === 'int' || this.type === 'real') {\n            validators.push(Validators.pattern(/^[\\.,\\-\\+\\d]+$/));\n\n            if (!isNaN(this.minValue)) {\n                validators.push(Validators.min(this.minValue));\n            }\n\n            if (!isNaN(this.maxValue)) {\n                validators.push(Validators.max(this.maxValue));\n            }\n        }\n\n        if (this.type === 'text' && this.regex) {\n            validators.push(Validators.pattern(this.regex));\n        }\n\n        return validators;\n    }\n}\n\nexport class PepLinkField extends PepFieldBase {\n    controlType = 'link';\n    type: PepTextboxFieldType = 'link';\n\n    constructor(options: IPepFieldBaseOptions = {}) {\n        super(options);\n\n        this.update(options);\n    }\n\n    public update(options: IPepTextboxFieldOptions): void {\n        super.update(options);\n\n        // DI-11292 - add changes for link field for the \"Read Only display value\" prop\n        this.formattedValue =\n            this.disabled && this.formattedValue && this.value\n                ? this.formattedValue\n                : this.value;\n\n    }\n}\n\nexport class PepTextareaField extends PepFieldBase {\n    controlType = 'textarea';\n\n    constructor(options: IPepFieldBaseOptions = {}) {\n        super(options);\n        // this.type = 'textarea';\n    }\n}\n\ninterface IPepSignatureFieldOptions extends IPepFieldBaseOptions {\n    renderTitle?: boolean;\n    renderEnlargeButton?: boolean;\n}\nexport class PepRichHtmlTextareaField extends PepFieldBase {\n    controlType = 'richhtmltextarea';    \n    renderTitle: boolean;\n    renderEnlargeButton: boolean;\n\n    constructor(options: IPepSignatureFieldOptions = {}) {\n        super(options);\n\n        this.renderTitle = options.renderTitle !== undefined ? options.renderTitle : true;\n        this.renderEnlargeButton = options.renderEnlargeButton !== undefined ? options.renderEnlargeButton : true;\n    }\n}\n\ninterface IPepSignatureFieldOptions extends IPepFieldBaseOptions {\n    options?: IPepOption[];\n}\nexport class PepSignatureField extends PepFieldBase {\n    controlType = 'signature';\n    options: IPepOption[] = [];\n\n    constructor(options: IPepSignatureFieldOptions = {}) {\n        super(options);\n        this.options = options.options || [];\n    }\n}\n\ninterface IPepImageFieldOptions extends IPepFieldBaseOptions {\n    hasCampaignField?: any;\n    indicatorsField?: any;\n    menuField?: any;\n    options?: IPepOption[];\n    sizeLimitMB?: number;\n}\nexport class PepImageField extends PepFieldBase {\n    controlType = 'image';\n    hasCampaignField = null;\n    indicatorsField = null;\n    menuField = null;\n    options: IPepOption[] = [];\n    sizeLimitMB = 5;\n\n    constructor(options: IPepImageFieldOptions = {}) {\n        super(options);\n        this.hasCampaignField = options.hasCampaignField || null;\n        this.indicatorsField = options.indicatorsField || null;\n        this.menuField = options.menuField || null;\n        this.options = options.options || [];\n        this.sizeLimitMB = options.sizeLimitMB || 5;\n    }\n}\n\ninterface IPepImagesFieldOptions extends IPepFieldBaseOptions {\n    options?: IPepOption[];\n}\nexport class PepImagesField extends PepFieldBase {\n    controlType = 'images';\n    options: IPepOption[] = [];\n\n    constructor(options: IPepImagesFieldOptions = {}) {\n        super(options);\n        this.options = options.options || [];\n    }\n}\n\nexport type PepQuantitySelectorFieldType =\n    | 'button'\n    | 'packageButton'\n    | 'qs'\n    | 'qsForMatrix';\ninterface IPepQuantitySelectorFieldOptions extends IPepFieldBaseOptions {\n    allowDecimal?: boolean;\n    notificationInfo?: any;\n    type?: PepQuantitySelectorFieldType;\n}\nexport class PepQuantitySelectorField extends PepFieldBase {\n    controlType = 'qs';\n    allowDecimal: boolean;\n    notificationInfo: any = {};\n    updatedDataCount: number;\n    type: PepQuantitySelectorFieldType;\n    digitsNumberAfterDecimalPoint = NaN;\n\n    constructor(options: IPepQuantitySelectorFieldOptions = {}) {\n        super(options);\n\n        this.updatedDataCount = 0;\n        this.type = options.type || 'qs';\n\n        this.update(options);\n    }\n\n    public update(options: IPepQuantitySelectorFieldOptions): void {\n        super.update(options);\n        \n        this.digitsNumberAfterDecimalPoint = options.digitsNumberAfterDecimalPoint ?? NaN;\n\n        this.allowDecimal = options.allowDecimal || false;\n        this.notificationInfo = options.notificationInfo;\n        this.updatedDataCount += 1;\n    }\n}\n\nexport type PepDateFieldType = 'datetime' | 'date';\ninterface IPepDateFieldOptions extends IPepFieldBaseOptions {\n    type?: PepDateFieldType;\n}\nexport class PepDateField extends PepFieldBase {\n    controlType = 'date';\n    type: PepDateFieldType;\n\n    constructor(options: IPepDateFieldOptions = {}) {\n        super(options);\n\n        this.type = options.type || 'date';\n    }\n}\n\nexport type PepCheckboxFieldType = 'checkbox' | 'booleanText';\ninterface IPepCheckboxFieldOptions extends IPepFieldBaseOptions {\n    type?: PepCheckboxFieldType;\n}\nexport class PepCheckboxField extends PepFieldBase {\n    controlType = 'checkbox';\n    type: PepCheckboxFieldType;\n\n    constructor(options: IPepCheckboxFieldOptions = {}) {\n        super(options);\n\n        this.type = options.type || 'checkbox';\n    }\n\n    public getValidators(): ValidatorFn[] {\n        const validators = super.getBaseValidators(true);\n        return validators;\n    }\n}\n\nexport type PepSelectFieldType = 'select' | 'multi';\ninterface IPepSelectFieldOptions extends IPepFieldBaseOptions {\n    options?: IPepOption[];\n    type?: PepSelectFieldType;\n}\nexport class PepSelectField extends PepFieldBase {\n    controlType = 'select';\n    options: IPepOption[] = [];    \n    type: PepSelectFieldType;    \n    emptyOption: boolean;\n\n    constructor(options: IPepSelectFieldOptions = {}) {\n        super(options);\n        this.type = options.type || 'select';\n        this.emptyOption = options.emptyOption;\n\n        this.update(options);\n    }\n\n    public update(options: IPepSelectFieldOptions): void {\n        super.update(options);\n\n        this.options = options.options || [];\n    }\n}\n\ninterface IPepAddressFieldOptions extends IPepFieldBaseOptions {\n    groupFields?: PepFieldBase[];\n}\nexport class PepAddressField extends PepFieldBase {\n    controlType = 'address';\n    groupFields: PepFieldBase[] = null;\n\n    constructor(options: IPepAddressFieldOptions = {}) {\n        super(options);\n        this.groupFields = options.groupFields || null;\n    }\n}\n\nexport type PepInternalButtonFieldType =\n    | 'button'\n    | 'reference'\n    | 'listofobjects';\ninterface IPepInternalButtonFieldOptions extends IPepFieldBaseOptions {\n    referenceObjectType?: any;\n    referenceObjectSubType?: string;\n    referenceObjectInternalType?: string;\n    type?: PepInternalButtonFieldType;\n}\nexport class PepInternalButtonField extends PepFieldBase {\n    controlType = 'button';\n    referenceObjectType;\n    referenceObjectSubType = '';\n    referenceObjectInternalType = '';\n    type: PepInternalButtonFieldType;\n\n    constructor(options: IPepInternalButtonFieldOptions = {}) {\n        super(options);\n\n        this.referenceObjectType = options.referenceObjectType || null;\n        this.referenceObjectSubType = options.referenceObjectSubType || null;\n        this.referenceObjectInternalType =\n            options.referenceObjectInternalType || null;\n\n        this.type = options.type || 'button';\n    }\n}\n\ninterface IPepInternalPageFieldOptions extends IPepFieldBaseOptions {\n    objectId?: string;\n    parentId?: string;\n    searchCode?: string;\n}\nexport class PepInternalPageField extends PepFieldBase {\n    controlType = 'internalPage';\n    objectId = '';\n    parentId = '';\n    searchCode = '';\n\n    constructor(options: IPepInternalPageFieldOptions = {}) {\n        super(options);\n        this.objectId = options.objectId || '';\n        this.parentId = options.parentId || '';\n        this.searchCode = options.searchCode || '';\n    }\n}\n\n\ninterface IPepInternalCaruselFieldOptions extends IPepFieldBaseOptions {\n    searchCode?: string;\n    pageInfo?: any;\n}\nexport class PepInternalCaruselField extends PepFieldBase {\n    controlType = 'internalCarusel';\n    searchCode = '';\n    pageInfo;\n\n    constructor(options: IPepInternalCaruselFieldOptions = {}) {\n        super(options);\n        this.searchCode = options.searchCode || '';\n\n        this.update(options);\n    }\n\n    public update(options: IPepInternalCaruselFieldOptions): void {\n        super.update(options);\n\n        this.pageInfo = options.pageInfo;\n    }\n}\n\n\ninterface IPepInternalMenuFieldOptions extends IPepFieldBaseOptions {\n    options?: IPepOption[];\n}\nexport class PepInternalMenuField extends PepFieldBase {\n    controlType = 'menu';\n    options: IPepOption[] = [];\n    // hasSubMenu: boolean = false;\n\n    constructor(options: IPepInternalMenuFieldOptions = {}) {\n        super(options);\n        this.options = options.options || [];\n        // this.hasSubMenu = options['hasSubMenu'];\n    }\n}\n\nexport interface IPepFieldValueChangeEvent {\n    key: string;\n    value: string;\n    controlType?: string;\n}\n\nexport interface IPepFieldClickEvent {\n    key: string;\n    value?: string;\n    controlType?: string;\n    eventWhich?: any;\n    otherData?: any;\n}\n","/*\n * Public API Surface of ngx-lib/core/customizatin\n */\nexport * from './customization.model';\nexport * from './customization.service';\n","/*\n * export from ngx-lib/core/customization\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core/http\n */\nexport * from './services/http.service';\nexport * from './services/loader.service';\n","/*\n * export from ngx-lib/core/http\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core/layout\n */\nexport * from './layout.service';\nexport * from './rtl.directive';\n","/*\n * export from ngx-lib/core/layout\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core/portal\n */\nexport * from './attach.directive';\nexport * from './target.directive';\nexport * from './portal.service';\n","/*\n * export from ngx-lib/core/portal\n */\nexport * from './public-api';\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class PepScrollToService {\n    public scrollElementTo(\n        element: Element | Window,\n        duration = 500,\n        top = 0\n    ): Observable<any> {\n        const subject: Subject<any> = new Subject<any>();\n        if (element instanceof Element || element instanceof Window) {\n            this._scrollElementTo(element, duration, top, subject);\n        } else {\n            subject.error(\"I don't find element\");\n        }\n\n        return subject;\n    }\n\n    private _scrollElementTo(\n        el: Element | Window,\n        duration: number,\n        top: number,\n        subject: Subject<any>\n    ): Observable<any> {\n        if (el) {\n            let startingY: number;\n            if (el instanceof Window) {\n                startingY = window.pageYOffset;\n            } else {\n                const viewportOffset = (el as Element).getBoundingClientRect();\n                startingY = viewportOffset.top;\n            }\n            this.doScrolling(el, startingY, top, duration, subject);\n        } else {\n            subject.error(\"I don't find element\");\n        }\n\n        return subject;\n    }\n\n    public scrollWindowToElement(\n        element: string | HTMLElement,\n        duration = 500,\n        offset = 0\n    ): Observable<any> {\n        const subject: Subject<any> = new Subject<any>();\n        if (typeof element === 'string') {\n            const el = document.querySelector(element as string);\n            this._scrollWindowToElement(\n                el as HTMLElement,\n                duration,\n                offset,\n                subject\n            );\n        } else if (element instanceof HTMLElement) {\n            this._scrollWindowToElement(element, duration, offset, subject);\n        } else {\n            subject.error(\"I don't find element\");\n        }\n\n        return subject;\n    }\n\n    private _scrollWindowToElement(\n        el: HTMLElement,\n        duration: number,\n        offset: number,\n        subject: Subject<any>\n    ): Observable<any> {\n        if (el) {\n            const viewportOffset = el.getBoundingClientRect();\n            const startingY = window.pageYOffset;\n            const offsetTop = viewportOffset.top + startingY;\n            this.doScrolling(\n                window,\n                startingY,\n                offsetTop + offset,\n                duration,\n                subject\n            );\n        } else {\n            subject.error(\"I don't find element\");\n        }\n\n        return subject;\n    }\n\n    private doScrolling(\n        scrollingElement: Element | Window,\n        startingY: number,\n        elementY: number,\n        duration: number,\n        subject: Subject<any>\n    ): void {\n        const diff = elementY - startingY;\n        let start;\n\n        requestAnimationFrame(function step(timestamp) {\n            start = !start ? timestamp : start;\n\n            const time = timestamp - start;\n            const percent = Math.min(time / duration, 1);\n\n            scrollingElement.scrollTo(0, startingY + diff * percent);\n\n            if (time < duration) {\n                requestAnimationFrame(step);\n                subject.next({});\n            } else {\n                subject.complete();\n            }\n        });\n    }\n}\n","/*\n * Public API Surface of ngx-lib/core/scroll-to\n */\n// export * from './scroll-to.directive';\nexport * from './scroll-to.service';\n","/*\n * export from ngx-lib/core/scroll-to\n */\nexport * from './public-api';\n","/*\n * Public API Surface of ngx-lib/core\n */\nexport * from './clipboard/index';\nexport * from './common/index';\nexport * from './customization/index';\nexport * from './http/index';\nexport * from './layout/index';\nexport * from './portal/index';\nexport * from './scroll-to/index';\n","/*\n * export from ngx-lib/core\n */\nexport * from './public-api';\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\n\nimport { httpInterceptorProviders } from './core/http/interceptors/index';\n\nimport { PepClipboardDirective } from './core/clipboard/clipboard.directive';\nconst clipboardList = [PepClipboardDirective];\n\nimport {\n    PepRtlClassDirective,\n    PepRtlDirectionDirective,\n} from './core/layout/rtl.directive';\nconst layoutList = [PepRtlClassDirective, PepRtlDirectionDirective];\n\nimport {\n    PepCapitalizePipe,\n    PepEncodePipe,\n    PepEscapePipe,\n    PepReplaceLineBreaksPipe,\n    PepDateFormatterPipe,\n    PepDateStringFormatterPipe,\n    PepSafeHtmlPipe,\n    PepSafePipe,\n    PepSplitUppercasePipe,\n    PepToNumberPipe,\n} from './core/common/pipes/common-pipes';\n\nimport { DateAgoPipe } from './core/common/pipes/date-ago.pipe';\n\nconst pipeList = [\n    PepCapitalizePipe,\n    PepEncodePipe,\n    PepEscapePipe,\n    PepReplaceLineBreaksPipe,\n    PepDateFormatterPipe,\n    PepDateStringFormatterPipe,\n    PepSafeHtmlPipe,\n    PepSafePipe,\n    PepSplitUppercasePipe,\n    PepToNumberPipe,\n    DateAgoPipe\n];\n\nimport { PepInputAutoWidthDirective } from './core/common/directives/auto-width.directive';\nimport { PepButtonBlurDirective } from './core/common/directives/button-blur.directive';\nimport { PepButtonLoaderDirective } from './core/common/directives/button-loader.directive';\nimport { PepMenuBlurDirective } from './core/common/directives/menu-blur.directive';\nimport { PepDataQaDirective } from './core/common/directives/data-qa.directive';\n// import { PreventDoubleClickDirective } from './core/common/directives/debounce-click.directive';\nimport { PepPreventMultiClickDirective } from './core/common/directives/prevent-multi-click.directive';\nimport { PepPrintDirective } from './core/common/directives/print.directive';\nimport { PepDivLoaderDirective } from './core/common/directives/div-loader.directive';\n\nconst utilitiesList = [\n    PepInputAutoWidthDirective,\n    PepButtonBlurDirective,\n    PepButtonLoaderDirective,\n    PepMenuBlurDirective,\n    PepDataQaDirective,\n    // PreventDoubleClickDirective,\n    PepPreventMultiClickDirective,\n    PepPrintDirective,\n    PepDivLoaderDirective,\n];\n\nimport { PepAttachDirective } from './core/portal/attach.directive';\nimport { PepTargetDirective } from './core/portal/target.directive';\n\nconst portalList = [PepAttachDirective, PepTargetDirective];\n\nimport { TranslateModule, TranslateService, TranslateStore } from '@ngx-translate/core';\nimport { \n    PepAddonService,\n    PepColorService,\n    PepCookieService,\n    PepDataConvertorService,\n    PepFileService,\n    PepJwtHelperService,\n    PepSessionService,\n    PepTranslateService,\n    PepUtilitiesService,\n    PepValidatorService,\n    PepWindowScrollingService,\n    PepCustomizationService,\n    PepHttpService,\n    PepLoaderService,\n    PepLayoutService,\n    PepPortalService,\n    PepScrollToService,\n} from './core/index';\n\n@NgModule({\n    declarations: [\n        pipeList,\n        utilitiesList,\n        clipboardList,\n        layoutList,\n        portalList,\n    ],\n    imports: [\n        CommonModule,\n        HttpClientModule,\n        ReactiveFormsModule,\n    ],\n    exports: [\n        pipeList,\n        utilitiesList,\n        clipboardList,\n        layoutList,\n        portalList,\n        TranslateModule,\n    ],\n    providers: [\n        httpInterceptorProviders,\n        PepAddonService,\n        PepColorService,\n        PepCookieService,\n        PepDataConvertorService,\n        PepFileService,\n        PepJwtHelperService,\n        PepSessionService,\n        PepTranslateService,\n        PepUtilitiesService,\n        PepValidatorService,\n        PepWindowScrollingService,\n        PepCustomizationService,\n        PepHttpService,\n        PepLoaderService,\n        PepLayoutService,\n        PepPortalService,\n        PepScrollToService,\n        FormBuilder\n    ]\n})\nexport class PepNgxLibModule {\n    // static forRoot(): ModuleWithProviders<PepNgxLibModule> {\n    //     return {\n    //         ngModule: PepNgxLibModule,\n    //         providers: [PepCustomizationService]\n    //     };\n    // }\n    // static forRoot() {\n    //     return {\n    //       ngModule: PepNgxLibModule,\n    //       providers: [ PepCustomizationService ]\n    //     }\n    // }\n}\n","/*\n * Public API Surface of ngx-lib\n */\nexport * from './ngx-lib.module';\nexport * from './core/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PepLayoutService","i1","i1.PepJwtHelperService","i1.PepSessionService","i2.PepFileService","i1.PepPortalService","i2.PepCookieService","i3","i2.PepHttpService","i3.PepLoaderService","i4.PepTranslateService","i5.PepFileService"],"mappings":"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"}