{"version":3,"file":"inet-ui.mjs","sources":["../../../projects/inet-ui/src/lib/model/system-application.ts","../../../projects/inet-ui/src/lib/model/user-role.ts","../../../projects/inet-ui/src/lib/model/chat-message.ts","../../../projects/inet-ui/src/lib/model/notify-message.ts","../../../projects/inet-ui/src/lib/model/address.ts","../../../projects/inet-ui/src/lib/model/contact.ts","../../../projects/inet-ui/src/lib/model/organization.ts","../../../projects/inet-ui/src/lib/model/organization-information.ts","../../../projects/inet-ui/src/lib/model/response-upload-file.ts","../../../projects/inet-ui/src/lib/decorator/auto-unsubscribe.decorator.ts","../../../projects/inet-ui/src/lib/decorator/logger.decorator.ts","../../../projects/inet-ui/src/lib/pipes/safe.pipe.ts","../../../projects/inet-ui/src/lib/pipes/safe-html.pipe.ts","../../../projects/inet-ui/src/lib/pipes/safe-pipe.module.ts","../../../projects/inet-ui/src/lib/common/authenticate.guard.ts","../../../projects/inet-ui/src/lib/common/location.service.ts","../../../projects/inet-ui/src/lib/common/dictionary.service.ts","../../../projects/inet-ui/src/lib/common/notify-message.service.ts","../../../projects/inet-ui/src/lib/interceptor/interceptor.module.ts","../../../projects/inet-ui/src/lib/translate/system-vi.ts","../../../projects/inet-ui/src/lib/translate/system-en.ts","../../../projects/inet-ui/src/lib/translate/cloud-trans-loader.ts","../../../projects/inet-ui/src/lib/translate/cloud-translate.service.ts","../../../projects/inet-ui/src/lib/translate/cloud-translate.module.ts","../../../projects/inet-ui/src/lib/web-socket/websocket.module.ts","../../../projects/inet-ui/src/lib/collapse/collapse.directive.ts","../../../projects/inet-ui/src/lib/collapse/collapse.module.ts","../../../projects/inet-ui/src/lib/dialog/dialog-action.ts","../../../projects/inet-ui/src/lib/dialog/modal-content.directive.ts","../../../projects/inet-ui/src/lib/dialog/modal-action.directive.ts","../../../projects/inet-ui/src/lib/dialog/modal-header.directive.ts","../../../projects/inet-ui/src/lib/dialog/confirm-dialog.component.ts","../../../projects/inet-ui/src/lib/dialog/confirm-dialog.component.html","../../../projects/inet-ui/src/lib/dialog/dialog.module.ts","../../../projects/inet-ui/src/lib/list-view/list-view-row.ts","../../../projects/inet-ui/src/lib/list-view/list-view.component.ts","../../../projects/inet-ui/src/lib/list-view/list-view.component.html","../../../projects/inet-ui/src/lib/list-view/list-view.directive.ts","../../../projects/inet-ui/src/lib/list-view/list-view.module.ts","../../../projects/inet-ui/src/lib/file/file-format.service.ts","../../../projects/inet-ui/src/lib/file/file-ext.pipe.ts","../../../projects/inet-ui/src/lib/file/file-icon.pipe.ts","../../../projects/inet-ui/src/lib/file/viewer.service.ts","../../../projects/inet-ui/src/lib/file/viewer.directive.ts","../../../projects/inet-ui/src/lib/file/list/file-list.component.ts","../../../projects/inet-ui/src/lib/file/list/file-list.component.html","../../../projects/inet-ui/src/lib/file/file.module.ts","../../../projects/inet-ui/src/lib/file-upload/file-drop.directive.ts","../../../projects/inet-ui/src/lib/file-upload/file-select.directive.ts","../../../projects/inet-ui/src/lib/file-upload/file-type.class.ts","../../../projects/inet-ui/src/lib/file-upload/file-like-object.class.ts","../../../projects/inet-ui/src/lib/file-upload/file-item.class.ts","../../../projects/inet-ui/src/lib/file-upload/file-uploader.class.ts","../../../projects/inet-ui/src/lib/file-upload/file-upload.module.ts","../../../projects/inet-ui/src/lib/open-graph/open-graph.service.ts","../../../projects/inet-ui/src/lib/open-graph/link-preview/link-preview.component.ts","../../../projects/inet-ui/src/lib/open-graph/link-preview/link-preview.component.html","../../../projects/inet-ui/src/lib/open-graph/open-graph.module.ts","../../../projects/inet-ui/src/lib/image-cropper/image.utils.ts","../../../projects/inet-ui/src/lib/image-cropper/image-cropper.component.ts","../../../projects/inet-ui/src/lib/image-cropper/image-cropper.component.html","../../../projects/inet-ui/src/lib/image-cropper/cropper-avatar/cropper-avatar-dialog.component.ts","../../../projects/inet-ui/src/lib/image-cropper/cropper-avatar/cropper-avatar-dialog.component.html","../../../projects/inet-ui/src/lib/image-cropper/image-cropper.module.ts","../../../projects/inet-ui/src/lib/pagination/pagination-list/pagination-list.component.ts","../../../projects/inet-ui/src/lib/pagination/pagination-list/pagination-list.component.html","../../../projects/inet-ui/src/lib/pagination/pagination-list.module.ts","../../../projects/inet-ui/src/lib/datetime/timeago.pipe.ts","../../../projects/inet-ui/src/lib/datetime/datetime.module.ts","../../../projects/inet-ui/src/lib/plugin-manager/plugin-manager.service.ts","../../../projects/inet-ui/src/lib/plugin-manager/cloud-plugin.component.ts","../../../projects/inet-ui/src/lib/plugin-manager/plugin-toolbar.directive.ts","../../../projects/inet-ui/src/lib/plugin-manager/plugin-manager.module.ts","../../../projects/inet-ui/src/lib/notify/toastr/toast.directive.ts","../../../projects/inet-ui/src/lib/notify/portal/portal.ts","../../../projects/inet-ui/src/lib/notify/toastr/toastr-config.ts","../../../projects/inet-ui/src/lib/notify/toastr/toast-injector.ts","../../../projects/inet-ui/src/lib/notify/portal/dom-portal-host.ts","../../../projects/inet-ui/src/lib/notify/overlay/overlay-ref.ts","../../../projects/inet-ui/src/lib/notify/overlay/overlay-container.ts","../../../projects/inet-ui/src/lib/notify/overlay/overlay.ts","../../../projects/inet-ui/src/lib/notify/toastr/toastr.service.ts","../../../projects/inet-ui/src/lib/notify/toastr/toast.component.ts","../../../projects/inet-ui/src/lib/notify/toastr/toastr.module.ts","../../../projects/inet-ui/src/lib/notify/notify.service.ts","../../../projects/inet-ui/src/lib/notify/notify.module.ts","../../../projects/inet-ui/src/lib/custom-pagination/custom-pagination.component.ts","../../../projects/inet-ui/src/lib/custom-pagination/custom-pagination.component.html","../../../projects/inet-ui/src/lib/custom-pagination/custom-pagination.module.ts","../../../projects/inet-ui/src/lib/ngx-editor/common/services/message.service.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor-message/ngx-editor-message.component.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor-message/ngx-editor-message.component.html","../../../projects/inet-ui/src/lib/ngx-editor/common/utils/ngx-editor.utils.ts","../../../projects/inet-ui/src/lib/ngx-editor/common/services/command-executor.service.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor-toolbar/ngx-editor-toolbar.component.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor-toolbar/ngx-editor-toolbar.component.html","../../../projects/inet-ui/src/lib/ngx-editor/ngx-grippie/ngx-grippie.component.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-grippie/ngx-grippie.component.html","../../../projects/inet-ui/src/lib/ngx-editor/common/ngx-editor.defaults.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor.component.ts","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor.component.html","../../../projects/inet-ui/src/lib/ngx-editor/ngx-editor.module.ts","../../../projects/inet-ui/src/lib/grid/utils/drag.ts","../../../projects/inet-ui/src/lib/grid/utils/px.ts","../../../projects/inet-ui/src/lib/grid/utils/hide.ts","../../../projects/inet-ui/src/lib/grid/utils/min.ts","../../../projects/inet-ui/src/lib/grid/components/column/column.component.ts","../../../projects/inet-ui/src/lib/grid/components/row/row.component.ts","../../../projects/inet-ui/src/lib/grid/components/row/row.component.html","../../../projects/inet-ui/src/lib/grid/types/default-translations.type.ts","../../../projects/inet-ui/src/lib/grid/components/pagination/pagination.component.ts","../../../projects/inet-ui/src/lib/grid/components/pagination/pagination.component.html","../../../projects/inet-ui/src/lib/grid/components/header/header.component.ts","../../../projects/inet-ui/src/lib/grid/components/header/header.component.html","../../../projects/inet-ui/src/lib/grid/components/table/table.component.ts","../../../projects/inet-ui/src/lib/grid/components/table/table.component.html","../../../projects/inet-ui/src/lib/grid/datasource/data-table-resource.ts","../../../projects/inet-ui/src/lib/grid/grid-module.ts","../../../projects/inet-ui/src/lib/grid/index.ts","../../../projects/inet-ui/src/lib/utils/date-utils.ts","../../../projects/inet-ui/src/lib/number-format/number-utils.service.ts","../../../projects/inet-ui/src/lib/number-format/number-separator.directive.ts","../../../projects/inet-ui/src/lib/number-format/number-format.module.ts","../../../projects/inet-ui/src/lib/web-token/lib/Constants.ts","../../../projects/inet-ui/src/lib/web-token/lib/CertUtils.ts","../../../projects/inet-ui/src/lib/web-token/lib/WebTokenSigner.ts","../../../projects/inet-ui/src/lib/web-token/lib/TokenSimulator.ts","../../../projects/inet-ui/src/lib/web-token/web-token.service.ts","../../../projects/inet-ui/src/lib/web-token/web-token.module.ts","../../../projects/inet-ui/src/lib/navigation-tab/navigation-tab.component.ts","../../../projects/inet-ui/src/lib/navigation-tab/navigation-tab.component.html","../../../projects/inet-ui/src/lib/navigation-tab/navigation-tab.module.ts","../../../projects/inet-ui/src/lib/pipe-common/truncate.pipe.ts","../../../projects/inet-ui/src/lib/pipe-common/pipe-common.module.ts","../../../projects/inet-ui/src/lib/naming-convetion/naming-convention.directive.ts","../../../projects/inet-ui/src/lib/naming-convetion/naming-convention.module.ts","../../../projects/inet-ui/src/public-api.ts","../../../projects/inet-ui/src/inet-ui.ts"],"sourcesContent":["export class SystemApplication {\n    domain?: string;\n    firmContext?: string;\n    homepage?: string;\n    icon?: string;\n    module?: string;\n    name?: string;\n    organId?: string;\n    pattern?: string;\n    prefixUri?: string;\n    webContext?: string;\n    widget?: string //title bar\n}\n","export class UserRole {\n    user: boolean =false;\n    admin: boolean = false;\n    community: boolean = false\n}\n","export class Message {\n  application?: string;\n  alert?: string;\n  sender?: string;\n  content?: string;\n  badge: number = 1;\n  sound: string = 'default';\n}\nexport class ChatMessage {\n  application?: string;\n  organization?: string;\n  sender?: string;\n  sent?: number;\n  message?: Message;\n  messageType?: string;\n  alias: string[] = [];\n}\n","export class NotifyMessage {\n  uuid?: string;\n  application?: string;\n  context?: string;\n  activityID?: string;\n  message?: string;\n  sender?: string;\n  fullname?: string;\n  usercode?: string;\n  created?: number;\n  read?: boolean;\n  mredirectURL?: string;\n  mshortcutURL?: string;\n  redirectURL?: string;\n  shortcutURL?: string;\n  params?: any\n}\n\nexport class NotifyMessageContent {\n  action?: string;\n  alert?: string;\n  badge?: string;\n  content?: string;\n  msgID?: string;\n  sound: string = 'default';\n  ttl?: string;\n}\n\nexport class NotifyMessageItem {\n  uuid?: string;\n  alias?: string[];\n  application?: string;\n  channelIds?:  string[];\n  deviceTypes?: string[];\n  message?: NotifyMessageContent;\n  messageType?: string;\n  organization?: string;\n  sender?: string;\n  sent?: number;\n  variants?: any[];\n}\n","export class Address {\n    address?: string;\n    districtCode?: string;\n    districtName?: string;\n    provinceCode?: string;\n    provinceName?: string;\n    countryCode?: string;\n    countryName?: string;\n    stateCode?: string;\n    stateName?: string;\n    state?: string;\n    postcode?: string;\n}\n","import {Address} from './address';\n\nexport class Contact {\n    salutationType?: string;\n    sex?: string;\n    firstName?: string;\n    lastName?: string;\n    middleName?: string;\n    fullName?: string;\n    primaryEmail?: string;\n    officePhone?: number;\n    mobilePhone?: string;\n    homePhone?: string;\n    fax?: number;\n    dateOfBirth?: number;\n    fullDateOfBirth?: any;\n    organId?: string;\n    organName?: string;\n    title?: string;\n    department?: string;\n    contactType?: string;\n    leadSource?: string;\n    address?: Address;\n    addressStr?: string;\n    description?: string;\n    status?: string;\n    uuid?: string;\n    type?: string;\n    avatar?: string;\n    readonly userCode?: string;\n\n    constructor() {\n        this.address = new Address();\n    }\n}\n","import {Address} from './address';\n\nexport class Organization {\n    readonly uuid?: string;\n    readonly organId?: string;\n    createdDate?: number;\n    name?: string;\n    primaryEmail?: string;\n    type?: string;\n    address?: string;\n    officeAddress: Address;\n    description?: string;\n    officeAddressStr?: string; // For Update\n    taxCode?: string;\n    foreignName?: string;\n    abbreviationName?: string;\n    website?: string;\n    primaryPhone?: string;\n    companySize?: string;\n    industry?: string;\n    legalRepName?: string;\n    legalRepCanonId?: string;  // Link to contact\n    createdBy?: string;\n    logo?: string; // For View Logo\n    readonly ownerId?: string;\n    readonly memberOfId?: string;\n    readonly ownerShip?: string;\n    readonly region?: string;\n    readonly modifiedBy?: string;\n    readonly modifiedDate?: number;\n    banks?: Array<any>;\n    busAces?: Array<any>;\n\n    constructor() {\n        this.officeAddress = new Address();\n    }\n}\n","import {Organization} from \"./organization\";\r\nexport class OrganizationInformation {\r\n    readonly organId?: string;\r\n    readonly secret?: string;\r\n    readonly mercuryAPIKey?: string;\r\n    readonly mercurySecret?: string;\r\n    orgName?: string;\r\n    email?: string;\r\n    address1?: string;\r\n    phone?: string;\r\n    city?: string;\r\n    fax?: string;\r\n    country?: string;\r\n    languageUsed?: string;\r\n    readonly logo?: string;\r\n    readonly uriPrefix?: string;\r\n    readonly acctPrxDomain?: string;\r\n    readonly byteDataUsed?: number;\r\n    readonly expiredDate?: number;\r\n    readonly activedDate?: number;\r\n    readonly status?: string;\r\n    readonly glorganprofileload?: Organization;\r\n\r\n}\r\n","export class ResponseUploadFile {\n    elements: ResponseFileItem[] = []\n}\n\nexport class ResponseFileItem {\n    uuid?: string;\n    name?: string;\n    mimetype?: string;\n    filesize: number = 0\n}\n","export function AutoUnsubscribe(): ClassDecorator {\n    return function (constructor: any) {\n        const original = constructor.prototype.ngOnDestroy;\n\n        constructor.prototype.ngOnDestroy = function () {\n            for (let prop in this) {\n                const property = this[prop];\n                if (property && (typeof property.unsubscribe === \"function\")) {\n                    property.unsubscribe();\n                }\n            }\n            original && typeof original === \"function\" && original.apply(this, arguments);\n        };\n    }\n\n}","export function Logger(hooks: string[] = []): ClassDecorator {\n    return function (constructor: any) {\n        const component = constructor.name;\n        const log = function (hook: string) {\n            try {\n                const original = constructor.prototype[hook];\n                if (original && (typeof original === \"function\")) {\n                    constructor.prototype[hook] = function (...args: any) {\n                        console.log(`%c ${component} - ${hook}`, `color: #4CAF50; font-weight: bold`, ...args);\n                        const result = original && original.apply(this, args);\n                        if (result) {\n                            console.log(`%c ${component} - ${hook} - return`, `color: #4CAF50; font-weight: bold`, result);\n                        }\n                    }\n                }\n            } catch (e) {\n                console.error(e);\n            }\n        };\n\n        if (hooks.length > 0) {\n            hooks.forEach(hook => {\n                log(hook);\n            });\n        } else {\n            for (let hook in constructor.prototype) {\n                log(hook);\n            }\n        }\n    }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\n\n@Pipe({\n    name: 'safe',\n    standalone: false\n})\nexport class SafePipe implements PipeTransform {\n    constructor(private sanitizer: DomSanitizer) {\n    }\n\n    transform(url: string): SafeUrl {\n        return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n    }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer} from \"@angular/platform-browser\";\n\n@Pipe({\n    name: 'safeHtml',\n    standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n    constructor(private sanitized: DomSanitizer) {\n    }\n    transform(value: string) {\n        return this.sanitized.bypassSecurityTrustHtml(value);\n    }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SafePipe} from \"./safe.pipe\";\nimport {SafeHtmlPipe} from \"./safe-html.pipe\";\n\n@NgModule({\n    declarations: [SafePipe, SafeHtmlPipe],\n    imports: [\n        CommonModule\n    ],\n    exports: [SafePipe, SafeHtmlPipe]\n})\nexport class SafePipeModule {\n}\n","import {Injectable} from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {SecurityService} from \"inet-core\";\n\n@Injectable()\nexport class AuthenticateGuard  {\n    constructor(private securityService: SecurityService) {\n\n    }\n\n    canActivate(\n        next: ActivatedRouteSnapshot,\n        state: RouterStateSnapshot):  Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n        const roles = next.data[\"roles\"] as Array<string>;\n        //console.log('[canActivate][with roles]', roles);\n        return this.securityService.hasRole(roles.join(','));\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClientService, ResponseData} from 'inet-core';\nimport {Observable, of} from 'rxjs';\nimport {shareReplay, tap} from 'rxjs/operators';\n\ndeclare let iNet: any;\n\n@Injectable({\n    providedIn: 'platform'\n})\nexport class LocationService {\n    private url = {\n        // list_country: iNet.getPUrl('cloudapp/country/list'),\n        // list_city: iNet.getPUrl('cloudapp/city/list'),\n        // list_district: iNet.getPUrl('cloudapp/district/list'),\n        list_country: iNet.getPUrl('gl/country/list'),\n        list_city: iNet.getPUrl('gl/city/list'),\n        list_district: iNet.getPUrl('gl/district/list')\n    };\n    private $countryCache: Observable<Object> | undefined;\n    private $provinceCache: any = {};\n    private $districtCache: any = {};\n    private countries: Array<any> | undefined;\n    private provinceData: any = {}; // store province by country code\n    private districtData: any = {};  // store district by province code\n\n    constructor(private http: HttpClientService) {\n    }\n\n    private getCountry(): Observable<any> {\n        return this.http.getJSON(this.url.list_country).pipe(tap((res) => this.countries = res['items']));\n    }\n\n    private _getProvinceByCountryCode(countryCode: string): Observable<any> {\n        return this.http.getJSON(this.url.list_city, {countryCode: countryCode}).pipe(\n            tap(res => this.provinceData[countryCode] = res['items'])\n        );\n    }\n\n    private _getDistrictByCode(countryCode: string, provinceCode: string): Observable<any> {\n        const key = countryCode + '_' + provinceCode;\n        return this.http.getJSON(this.url.list_district, {countryCode: countryCode, cityCode: provinceCode}).pipe(\n            tap(res => this.districtData[key] = res['items'])\n        );\n    }\n\n    listCountry(): Observable<Object> {\n        if (this.countries) {\n            const responseData = new ResponseData();\n            responseData.items = this.countries;\n            return of(responseData);\n        }\n        if (!this.$countryCache) {\n            this.$countryCache = this.getCountry().pipe(shareReplay(1));\n        }\n        return this.$countryCache;\n    }\n\n    /*\n     * @deprecated Use getProvinceByCountryCode(countryCode) instead\n     */\n\n    getProvinceByCountryId(countryId: string): Observable<any> {\n        return this.http.getJSON(this.url.list_city, {country: countryId});\n    }\n\n    /*\n     * @deprecated Use getDistrictByCode(countryCode, provinceCode) instead\n     */\n\n    getDistrictByProvinceId(uuid: string): Observable<any> {\n        return this.http.getJSON(this.url.list_district, {city: uuid});\n    }\n\n    getProvinceByCountryCode(countryCode: string): Observable<any> {\n        if (this.provinceData[countryCode]) {\n            const responseData = new ResponseData();\n            responseData.items = this.provinceData[countryCode];\n            return of(responseData);\n        }\n        if (!this.$provinceCache[countryCode]) {\n            this.$provinceCache[countryCode] = this._getProvinceByCountryCode(countryCode).pipe(shareReplay(1));\n        }\n        return this.$provinceCache[countryCode];\n    }\n\n    getDistrictByCode(countryCode: string, provinceCode: string): Observable<any> {\n        const key = countryCode + '_' + provinceCode;\n        if (this.districtData[key]) {\n            const responseData = new ResponseData();\n            responseData.items = this.districtData[key];\n            return of(responseData);\n        }\n        if (!this.$districtCache[key]) {\n            this.$districtCache[key] = this._getDistrictByCode(countryCode, provinceCode).pipe(shareReplay(1));\n        }\n        return this.$districtCache[key];\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClientService} from 'inet-core';\nimport {Observable, of} from 'rxjs';\nimport {shareReplay, tap} from 'rxjs/operators';\n\ndeclare let iNet: any;\n\n@Injectable({\n    providedIn: 'platform'\n})\nexport class DictionaryService {\n    private url = {\n        find_by_key: iNet.getPUrl('global/category/dicts/fbykeys'),\n        get_sex: iNet.getPUrl('gl/contact/profile/sex')\n    };\n    private $findObservableCache: any = {};\n    private store: any = {};\n    private inventory: any = {};\n\n    constructor(private http: HttpClientService) {\n    }\n\n    findByKeys(keyStr: string): Observable<Object> {\n        const keys = keyStr.split(';');\n        if (keys.length === 1 && this.inventory.hasOwnProperty(keyStr)) { // single key\n            return of({data: this.inventory[keyStr]});\n        }\n        if (this.store[keyStr]) { // multiple keys\n            return of({data: this.store[keyStr]});\n        }\n        if (!this.$findObservableCache[keyStr]) {\n            this.$findObservableCache[keyStr] = this.http.getJSON(this.url.find_by_key, {keys: keyStr}).pipe(\n                tap(res => this.store[keyStr] = res['data']),\n                tap(res => Object.assign(this.inventory, res['data'])),\n                shareReplay(1)\n            )\n        }\n        return this.$findObservableCache[keyStr];\n    }\n\n    getSex(params?: any): Observable<any> {\n        return this.http.postJSON(this.url.get_sex, params);\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClientService} from 'inet-core';\nimport { HttpErrorResponse } from \"@angular/common/http\";\nimport {Observable} from \"rxjs\";\n\ndeclare let iNet: any;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NotifyMessageService {\n    private url = {\n        list: iNet.getPUrl('social/activity/notify'),\n        clear: iNet.getPUrl('social/activity/clearnotify'),\n        load_notify: iNet.getPUrl('social/activity/loadnotify')\n    };\n\n    constructor(private http: HttpClientService) {\n    }\n\n    getMessages(params: any = {}): Observable<any> {\n        return this.http.getJSON(this.url.list, params);\n    }\n\n    count(params?: any): Promise<number> {\n        return new Promise(resolve => {\n            this.http.getJSON(this.url.list, params).subscribe((v: any) => {\n                resolve(v);\n            }, (err: HttpErrorResponse) => {\n                resolve(0);\n            });\n        });\n    }\n\n    clearAll(params: any = {}) {\n        return this.http.postJSON(this.url.clear, params);\n    }\n\n    loadNotify(app: string, activityId: string): Observable<any> {\n        return this.http.getJSON(this.url.load_notify, {activity: activityId, application: app});\n    }\n\n    clearByActivityId(activityId: string): Observable<any> {\n        return this.http.postJSON(this.url.clear, {activity: activityId});\n    }\n\n}\n\n","import {Injectable, NgModule} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';\nimport {HTTP_INTERCEPTORS} from '@angular/common/http';\nimport {CoreService, HttpClientService, NotificationService, SecurityService} from \"inet-core\";\nimport {catchError, tap} from \"rxjs/operators\";\n\n@Injectable()\nexport class HttpsRequestInterceptor implements HttpInterceptor {\n    constructor(private securityService: SecurityService,\n                private coreService: CoreService,\n                private httpClientService: HttpClientService) {\n    }\n\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        return next.handle(req).pipe(\n            tap((event: HttpEvent<any>) => {\n                if (event instanceof HttpResponse && !req.reportProgress) {\n                    this.httpClientService.hideLoading();\n                }\n            }),\n            catchError((err: any) => {\n                if (err instanceof HttpErrorResponse) {\n                    this.httpClientService.hideLoading();\n                    if (this.coreService.getEnvironment().production) {\n                        this.securityService.ping();\n                    }\n                }\n                throw err;\n            })\n        );\n    }\n}\n\n@NgModule({\n    providers: [\n        {provide: HTTP_INTERCEPTORS, useClass: HttpsRequestInterceptor, multi: true}\n    ]\n})\nexport class InterceptorModule {\n}\n","export const systemViLocale = {\n    abbr: 'vi',\n    vi: 'Tiếng Việt',\n    en: 'Tiếng Anh',\n    months: 'Tháng 1_Tháng 2_Tháng 3_Tháng 4_Tháng 5_Tháng 6_Tháng 7_Tháng 8_Tháng 9_Tháng 10_Tháng 11_Tháng 12'.split('_'),\n    monthsShort: 'TH1_TH2_TH3_TH4_TH5_TH6_TH7_TH8_TH9_TH10_TH11_TH12'.split('_'),\n    weekdays: 'Chủ nhật_Thứ 2_Thứ 3_Thứ 4_Thứ 5_Thứ 6_Thứ 7'.split('_'),\n    weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n    weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n    longDateFormat: {\n        LT: 'HH:mm',\n        LTS: 'HH:mm:ss',\n        L: 'DD/MM/YYYY',\n        LL: 'D MMMM YYYY',\n        LLL: 'D MMMM YYYY HH:mm',\n        LLLL: 'dddd, D MMMM YYYY HH:mm'\n    },\n    calendar: {\n        sameDay: '[Hôm nay lúc] LT',\n        nextDay: '[Ngày mai lúc] LT',\n        nextWeek: 'dddd [lúc] LT',\n        lastDay: '[Hôm qua lúc] LT',\n        lastWeek: '[Tuần trước] dddd [lúc] LT',\n        sameElse: 'L'\n    },\n    relativeTime: {\n        future: 'trong %s',\n        past: '%s trước',\n        s: '1 vài giây',\n        ss: '%d giây',\n        m: '1 phút',\n        mm: '%d phút',\n        h: '1 giờ',\n        hh: '%d giờ',\n        d: '1 ngày',\n        dd: '%d ngày',\n        M: '1 tháng',\n        MM: '%d tháng',\n        y: '1 năm',\n        yy: '%d năm'\n    },\n    dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n    ordinal: function (_num: string) {\n        let num: number = Number(_num);\n        let b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'th' :\n            (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                    (b === 3) ? 'rd' : 'th';\n        return num + output;\n    },\n    week: {\n        dow: 1,\n        doy: 4 // The week that contains Jan 4th is the first week of the year.\n    },\n    grid: {\n        displayMsg: ' Hiển thị <b>{0}</b> - <b>{1}</b> trong tổng số <b>{2}</b>',\n        emptyMsg: 'Không có dữ liệu để hiển thị',\n        beforePageText: 'Trang',\n        afterPageText: 'của {0}',\n        firstText: 'Trang đầu',\n        prevText: 'Trang trước',\n        nextText: 'Trang sau',\n        lastText: 'Trang cuối',\n        refreshText: 'Làm tươi',\n        searchText: 'Tìm kiếm',\n        searchPlaceholder: 'Từ khóa',\n        downloadText: 'Tải về',\n        translations: {\n            headerReload: 'Nạp lại',\n            headerColumnSelector: 'Chọn cột hiển thị',\n            indexColumn: 'Thứ tự hiển thị',\n            selectColumn: 'Cột chọn',\n            selectRow: 'Chọn dòng',\n            selectAllRows: 'Chọn',\n            expandColumn: 'Mở rộng',\n            expandRow: 'Xem nhiều hơn',\n            paginationLimit: 'Phần tử',\n            paginationRange: 'Hiển thị',\n            firstText: 'Trang đầu',\n            prevText: 'Trang trước',\n            nextText: 'Trang sau',\n            lastText: 'Trang cuối'\n        }\n    },\n    TOOLBAR: {\n        ADD: 'Thêm mới',\n        EDIT: 'Sửa',\n        SAVE: 'Lưu',\n        UPDATE: 'Cập nhật',\n        DELETE: 'Xóa',\n        SEARCH: 'Tìm kiếm',\n        OK: 'Đồng ý',\n        CANCEL: 'Bỏ qua',\n        RESET: 'Nhập lại',\n        BACK: 'Quay lại',\n        CLOSE: 'Đóng',\n        DOWNLOAD: 'Tải về'\n    },\n    COMMON: {\n        WELCOME: 'Xin chào',\n        PLACEHOLDER_SEARCH: 'Tìm kiếm ...',\n        NOTIFICATION: {\n            TITLE: 'Thông báo',\n            EMPTY_MSG: 'Không có dữ liệu để hiển thị',\n            LOAD_MORE: 'Tải thêm',\n            ITEMS: 'thông báo',\n            CLEAR_ALL: 'Xóa tất cả thông báo'\n        },\n        APPLICATION: {\n            TITLE: 'Ứng dụng',\n            EVENTS_TODAY: 'Sự kiện hôm nay',\n            NEW_ACTIVITY: 'Tương tác mới'\n        },\n        MENU: {\n            LANGUAGE: 'Ngôn ngữ',\n            HOME: 'Trang chủ',\n            USER_PROFILE: 'Thông tin cá nhân',\n            ORGANIZATION_INFORMATION: 'Thông tin công ty',\n            CONFIG: 'Cấu hình',\n            SIGNATURE: 'Chữ ký số',\n            ABOUT: 'Thông tin hệ thống',\n            BACK: 'Quay lại',\n            LOGOUT: 'Đăng xuất',\n            WORKSPACE: 'Không gian làm việc'\n        },\n        SELECTION: {\n            DEFAULT_VALUE: '- Chọn -'\n        },\n        MODULE: {\n            ADDRESS: {\n                CITY: 'Tỉnh/Thành phố',\n                DISTRICT: 'Quận/Huyện',\n                COUNTRY: 'Quốc gia',\n                ADDRESS: 'Địa chỉ',\n                STREET: 'Địa chỉ',\n                ADDRESS_REQUIRED_MSG: 'Địa chỉ không được rỗng',\n                COUNTRY_REQUIRED_MSG: 'Quốc gia không được rỗng'\n            },\n            ORGANIZATION: {\n                TITLE: 'Công ty',\n                CODE: 'Mã công ty',\n                NAME: 'Tên công ty',\n                FOREIGN_NAME: 'Tên quốc tế',\n                ABBREVIATION_NAME: 'Tên viết tắt',\n                TAX_CODE: 'Mã số thuế',\n                BILLING_ADDRESS: 'Địa chỉ trên hóa đơn',\n                LEGAL_REPRESENTATIVE: 'Đại diện pháp luật',\n                WEBSITE: 'Website',\n                INDUSTRY: 'Ngành nghề',\n                COMPANY_SIZE: 'Quy mô công ty',\n                DESCRIPTION: 'Mô tả',\n                LINK: 'Địa chỉ truy cập',\n                CODE_REQUIRED_MSG: 'Mã công ty không được rỗng',\n                NAME_REQUIRED_MSG: 'Tên công ty không được rỗng',\n                EMAIL: 'Thư điện tử',\n                EMAIL_INVALID_MSG: 'Địa chỉ thư điện tử không hợp lệ',\n                PHONE: 'Điện thoại',\n                FAX: 'Fax',\n                CITY: 'Tỉnh/Thành phố',\n                LANGUAGE: 'Ngôn ngữ',\n                CHOSEN_IMAGE: 'Chọn Logo ...',\n                STANDARD_IMAGE_SIZE: 'Kích thước chuẩn',\n                UPDATE_LOGO_ERROR_MSG: 'Có lỗi xảy ra khi cập nhật Logo',\n                EMPLOYEES: 'nhân viên',\n                SELF_EMPLOYED: 'Tự làm chủ',\n                REMOVE_LOGO: 'Xóa Logo',\n                SAVE_LOGO: 'Lưu Logo',\n                REMOVE_LOGO_SUCCESSFUL_MSG: 'Logo đã được xóa',\n                REMOVE_LOGO_ERROR_MSG: 'Có lỗi xảy ra khi xóa Logo',\n                UPDATE_SUCCESSFUL_MSG: 'Thông tin đã được cập nhật',\n                UPDATE_ERROR_MSG: 'Có lỗi xảy ra khi cập nhật thông tin',\n                TAXCODE_REQUIRED_MSG: 'Mã số thuế không được rỗng',\n            },\n            USER_PROFILE: {\n                TITLE: 'Thông tin tài khoản',\n                USERNAME: 'Tài khoản',\n                LAST_NAME: 'Họ',\n                MIDDLE_NAME: 'Tên đệm',\n                FIRST_NAME: 'Tên',\n                BIRTHDAY: 'Ngày sinh',\n                PHONE: 'Điện thoại',\n                MOBILE: 'Di động',\n                FULL_NAME: 'Họ và tên',\n                EMAIL: 'Thư điện tử',\n                GROUP_NAME: 'Tên nhóm quyền',\n                DESCRIPTION: 'Mô tả nhóm quyền',\n                GENDER: 'Giới tính',\n                MALE: 'Nam',\n                FEMALE: 'Nữ',\n                OTHER: 'Khác',\n                FIRST_NAME_REQUIRED_MSG: 'Tên không được rỗng',\n                LAST_NAME_REQUIRED_MSG: 'Họ không được rỗng',\n                EMAIL_REQUIRED_MSG: 'Địa chỉ thư điện tử không được rỗng',\n                EMAIL_INVALID_MSG: 'Địa chỉ thư điện tử không hợp lệ',\n                GENERAL_INFORMATION: 'Thông tin tài khoản',\n                CHOSEN_IMAGE: 'Chọn ảnh ...',\n                SECURITY_INFORMATION: 'Thông tin bảo mật',\n                CURRENT_PASSWORD: 'Mật khẩu',\n                NEW_PASSWORD: 'Mật khẩu mới',\n                CONFIRM_NEW_PASSWORD: ' Xác nhận mật khẩu',\n                CHANGE_PASSWORD: 'Đổi mật khẩu',\n                CURRENT_PASSWORD_REQUIRED_MSG: 'Vui lòng nhập mật khẩu hiện tại',\n                NEW_PASSWORD_REQUIRED_MSG: 'Vui lòng nhập mật khẩu mới',\n                CONFIRM_NEW_PASSWORD_REQUIRED_MSG: 'Vui lòng nhập xác nhận mật khẩu mới',\n                PASSWORD_DO_NOT_MATCH: 'Xác nhận mật khẩu mới chưa đúng',\n                CHANGE_PASSWORD_INFO_MSG: 'Để đổi mật khẩu, vui lòng nhập mật khẩu hiện tại của bạn, sau đó nhập mật khẩu mới của bạn hai lần',\n                CHANGE_PASSWORD_SUCCESSFUL_MSG: 'Mật khẩu đã được thay đổi',\n                CHANGE_PASSWORD_ERROR_MSG: 'Có lỗi xảy ra khi đổi mật khẩu',\n                CURRENT_PASSWORD_INCORRECT: 'Mật khẩu hiện tại không đúng. Vui lòng nhập lại',\n                UPDATE_PROFILE_SUCCESSFUL_MSG: 'Thông tin tài khoản đã được thay đổi',\n                UPDATE_PROFILE_ERROR_MSG: 'Có lỗi xảy ra khi cập nhật thông tin tài khoản',\n                AVATAR: 'Ảnh đại diện',\n                SAVE_IMAGE: 'Lưu ảnh',\n                REMOVE_IMAGE: 'Xóa ảnh',\n                IMAGE_UPDATE_SUCCESSFUL_MSG: 'Ảnh đại diện đã được cập nhật',\n                IMAGE_UPDATE_ERROR_MSG: 'Có lỗi xảy ra khi cập nhật ảnh đại diện',\n                IMAGE_REMOVE_SUCCESSFUL_MSG: 'Ảnh đại diện đã được xóa',\n                IMAGE_REMOVE_ERROR_MSG: 'Có lỗi xảy ra khi xóa ảnh đại diện',\n                SIGNATURE_INFORMATION: 'Chữ ký số',\n                ACCESS_ROLE: 'Quyền truy cập',\n                SIGNATURE_VERIFY: 'Số điện thoại',\n                SIGNATURE_FILE: 'Tệp ảnh chữ ký',\n                SIGNATURE_VERIFY_REQUIRED_MSG: 'Số điện thoại không được để rỗng',\n                UPDATE_SIGNATURE_SUCCESSFUL_MSG: 'Thông tin chữ ký số đã được cập nhật',\n                UPDATE_SIGNATURE_ERROR_MSG: 'Có lỗi xảy ra khi cập nhật thông tin chữ ký số',\n                SIGNATURE_FILE_REQUIRED_MSG: 'Vui lòng chọn ảnh chữ ký để cập nhật',\n                UPDATE_SIGNATURE: 'Cập nhật chữ ký số',\n                NO_FILE: 'Không có tệp tin ...',\n                CHOOSE: 'Chọn tệp'\n            },\n            VIEWER: {\n                UNSUPPORTED: 'Rất tiếc, định dạng không được hỗ trợ xem trực tuyến <br /> trên trình duyệt này'\n            },\n            CROPPER: {\n                TITLE: 'Công cụ cắt ảnh',\n                SELECT_NEW_IMAGE: 'Chọn ảnh khác ...'\n            },\n            SIGNATURE_MANAGE: {\n                CREATE_SIGN: 'Thêm chữ ký số',\n                TITLE: 'Chữ ký',\n                NAME: 'Tên',\n                NAME_REQUIRED_MSG: 'Tên chữ ký không được rỗng',\n                MOBILE: 'Di động',\n                ISSUED: 'Đơn vị phát hành',\n                FILE: 'Tệp ảnh',\n                FILE_REQUIRED_MSG: 'Chưa chọn ảnh',\n                PHOTO: 'Ảnh',\n                RESULTS: 'Hiển thị',\n                DELETE_SUCCESSFUL_MSG: 'Chữ ký đã được xóa',\n                DELETE_ERROR_MSG: 'Có lỗi xảy ra khi xóa chữ ký',\n                SAVE_SUCCESSFUL_MSG: 'Chữ ký đã được tạo',\n                SAVE_ERROR_MSG: 'Có lỗi xảy ra khi tạo chữ ký',\n                NO_INFORMATION: 'Không tìm thấy kết quả phù hợp',\n                KEY_SEARCH: 'Hãy chắc rằng từ khóa bạn cần tìm kiếm là chính xác.'\n            },\n            EMAIL_TEMPLATE: {\n                \"SEND_TEST\": \"Gửi test\",\n                \"EMAIL\": \"Mẫu email\",\n                \"LIST\": \"Danh sách mẫu email\",\n                \"ADD_EMAIL\": \"Thêm mới mẫu email\",\n                \"EDIT_EMAIL\": \"Chỉnh sửa mẫu email\",\n                \"EMAIL_CODE\": \"Mã\",\n                \"EMAIL_NAME\": \"Tên\",\n                \"EMAIL_SUBJECT\": \"Tiêu đề\",\n                \"EMAIL_CONTENT\": \"Nội dung email\",\n                \"NOTE\": \"Ghi chú\",\n                \"SAMPLE_INFORMATION\": \"Thông tin mẫu email\",\n                \"SYSTEM_INFORMATION\": \"Thông tin tham số cấu hình\",\n                \"TO\": \"Từ\",\n                \"FROM\": \"Đến\",\n                \"EMAIL_CODE_EXIST_MSG\": \"Mã đã tồn tại\",\n                \"EMAIL_CODE_REQUIRED\": \"Vui lòng nhập mã\",\n                \"EMAIL_NAME_REQUIRED\": \"Vui lòng nhập tên\",\n                \"ADD_SUCCESS\": \"Mẫu email đã được thêm mới\",\n                \"ADD_ERROR\": \"Có lỗi xảy ra trong quá trình thêm mới\",\n                \"UPDATE_SUCCESS\": \"Mẫu email đã được cập nhật\",\n                \"UPDATE_ERROR\": \"Có lỗi xảy ra trong quá trình cập nhật dữ liệu\",\n                \"DELETE_SUCCESS\": \"Mẫu email đã được xóa.\",\n                \"DELETE_ERROR\": \"Có lỗi xảy ra trong quá trình xóa dữ liệu\",\n                \"DELETE_TITLE\": \"Xóa mẫu email?\",\n                \"DELETE_CONTENT\": \"Bạn có chắc là muốn xóa mẫu email này không ?\",\n                \"ACTIVE\": \"Sử dụng\"\n            },\n            REPORT_TEMPLATE: {\n                \"TITLE\": \"Biểu mẫu\",\n                \"LIST\": 'Danh sách biểu mẫu',\n                \"ADD\": \"Thêm mới biểu mẫu\",\n                \"APPLICATION\": \"Ứng dụng\",\n                \"MODULE\": \"Mô-đun\",\n                \"TYPE\": \"Loại\",\n                \"VERSION\": \"Phiên bản\",\n                \"NAME\": \"Tên\",\n                \"DESCRIPTION\": \"Mô tả\",\n                \"FILE_UPLOAD\": \"Tệp tin\",\n                \"APPLICATION_REQUIRED\": \"Tên ứng dụng không được rỗng\",\n                \"MODULE_REQUIRED\": \"Tên mô-đun không được rỗng\",\n                \"TYPE_REQUIRED\": \"Tên loại không được rỗng\",\n                \"VERSION_REQUIRED\": \"Phiên bản không được rỗng\",\n                \"NAME_REQUIRED\": \"Tên biểu mẫu không được rỗng\",\n                \"DESCRIPTION_REQUIRED\": \"Mô tả không được rỗng\",\n                \"ADD_SUCCESS\": \"Biểu mẫu đã được thêm mới.\",\n                \"ADD_ERROR\": \"Không thể thêm mới. Có lỗi xảy ra trong quá trình thêm mới biểu mẫu\",\n                \"UPDATE_SUCCESS\": \"Biểu mẫu đã được chỉnh sửa\",\n                \"UPDATE_ERROR\": \"Không thể chỉnh sửa. Có lỗi xảy ra trong quá trình chỉnh sửa biểu mẫu\",\n                \"DELETE_SUCCESS\": \"Biểu mẫu đã được xóa\",\n                \"DELETE_ERROR\": \"Không thể xóa. Có lỗi xảy ra trong quá trình xóa biểu mẫu\",\n                \"DELETE_TITLE\": \"Xóa biểu mẫu?\",\n                \"DELETE_CONTENT\": \"Bạn có chắc là muốn xóa biểu mẫu này không?\",\n                \"NO_FILE\": \"Không có tệp tin ...\",\n                \"CHOOSE\": \"Chọn tệp\"\n            }\n        },\n        PLUGIN: {\n            SERVICE_UNAVAILABLE: 'Dịch vụ hiện không khả dụng',\n            SERVICE_MESSAGE_ERROR: 'Vui lòng kiểm tra lại kết nối và thử lại'\n        }\n    },\n    INDICATOR: {\n        LOADING: 'Đang tải ...',\n        PROCESSING: 'Đang xử lý ...',\n        SAVING: 'Đang lưu ...',\n        UPDATING: 'Đang cập nhật ...'\n    },\n    \"ALL_SELECTED\": \"Tất cả đã được chọn\",\n    \"CANCEL\": \"Bỏ qua\",\n    \"CLEAR_ALL_FILTERS\": \"Xóa tất cả điều kiện lọc\",\n    \"CLEAR_ALL_SORTING\": \"Xóa tất cả việc sắp xếp\",\n    \"CLEAR_ALL_GROUPING\": \"Xóa tất cả việc nhóm\",\n    \"CLEAR_PINNING\": \"Giải phóng cột/hàng\",\n    \"COLLAPSE_ALL_GROUPS\": \"Thu gọn tất cả Nhóm\",\n    \"COLUMNS\": \"Cột\",\n    \"COLUMN_RESIZE_BY_CONTENT\": \"Điều chỉnh kích thước theo nội dung\",\n    \"COMMANDS\": \"Chức năng\",\n    \"CONTAINS\": \"Có chứa\",\n    \"COPY\": \"Sao chép\",\n    \"EMPTY_DATA_WARNING_MESSAGE\": \"Không có dữ liệu để hiển thị\",\n    \"ENDS_WITH\": \"Kết thúc với\",\n    \"EQUALS\": \"Bằng\",\n    \"EQUAL_TO\": \"Bằng với\",\n    \"EXPAND_ALL_GROUPS\": \"Mở rộng tất cả Nhóm\",\n    \"EXPORT_TO_CSV\": \"Kết xuất định dạng CSV\",\n    \"EXPORT_TO_EXCEL\": \"Kết xuất dữ liệu\",\n    \"EXPORT_TO_TAB_DELIMITED\": \"Kết xuất định dạng Văn bản (phân cách bằng tab)\",\n    \"EXPORT_TO_TEXT_FORMAT\": \"Kết xuất định dạng Văn bản\",\n    \"FROM_TO_OF_TOTAL_ITEMS\": \"{{from}}-{{to}} của tổng số {{totalItems}} dòng\",\n    \"FORCE_FIT_COLUMNS\": \"Hiển thị mặc định\",\n    \"FREEZE_COLUMNS\": \"Cố định các cột\",\n    \"INVALID_FLOAT\": \"Dữ liệu số phải hợp lệ và có số thập phân tối đa là {{maxDecimal}}.\",\n    \"GREATER_THAN\": \"Lớn hơn\",\n    \"GREATER_THAN_OR_EQUAL_TO\": \"Lơn hơn hoặc bằng với\",\n    \"GROUP_BY\": \"Nhóm theo\",\n    \"HIDE_COLUMN\": \"Ẩn cột\",\n    \"IN_COLLECTION_SEPERATED_BY_COMMA\": \"Tìm kiếm dữ liệu trong tập dữ liệu, các dữ liệu phải được phân tách bằng dấu phẩy (a,b)\",\n    \"ITEMS\": \"Dòng\",\n    \"ITEMS_PER_PAGE\": \"dòng trên mỗi trang\",\n    \"ITEMS_SELECTED\": \"dòng đã được chọn\",\n    \"LAST_UPDATE\": \"Cập nhật cuối cùng\",\n    \"LESS_THAN\": \"Ít hơn\",\n    \"LESS_THAN_OR_EQUAL_TO\": \"Ít hơn hoặc bằng với\",\n    \"NOT_CONTAINS\": \"Không chứ\",\n    \"NOT_EQUAL_TO\": \"Không bằng với\",\n    \"NOT_IN_COLLECTION_SEPERATED_BY_COMMA\": \"Tìm kiếm dữ liệu không nằm trong tập dữ liệu, các dữ liệu phải được phân tách bằng dấu phẩy (a,b)\",\n    \"OF\": \"của\",\n    \"OK\": \"Đồng ý\",\n    \"PAGE\": \"Trang\",\n    \"PAGE_X_OF_Y\": \"trang {{x}} của {{y}}\",\n    \"REFRESH_DATASET\": \"Làm mới dữ liệu\",\n    \"REMOVE_FILTER\": \"Hủy lọc dữ liệu\",\n    \"REMOVE_SORT\": \"Hủy sắp xếp dữ liệu\",\n    \"SAVE\": \"Lưu dữ liệu\",\n    \"SELECT_ALL\": \"Chọn tất cả\",\n    \"SORT_ASCENDING\": \"Sắp xếp tăng dần\",\n    \"SORT_DESCENDING\": \"Sắp xếp giảm dần\",\n    \"STARTS_WITH\": \"Bắt đầu với\",\n    \"SYNCHRONOUS_RESIZE\": \"Thay đổi kích thước đồng bộ\",\n    \"TOGGLE_FILTER_ROW\": \"Ẩn/hiện dòng lọc dữ liệu\",\n    \"TOGGLE_PRE_HEADER_ROW\": \"Chuyển đổi dòng trước tiêu đề\",\n    \"X_OF_Y_SELECTED\": \"# của % đã chọn\",\n    \"SETTING\": {\n        \"USER_PROFILE\" :  {\n            \"CURRENT_PASSWORD\": \"Mật khẩu\",\n            \"NEW_PASSWORD\": \"Mật khẩu mới\",\n            \"CONFIRM_NEW_PASSWORD\": \"Xác nhận mật khẩu mới\",\n            \"CHANGE_PASSWORD\": \"Đổi mật khẩu\",\n            \"CURRENT_PASSWORD_REQUIRED_MSG\": \"Vui lòng nhập mật khẩu hiện tại\",\n            \"NEW_PASSWORD_REQUIRED_MSG\": \"Vui lòng nhập mật khẩu mới\",\n            \"CONFIRM_NEW_PASSWORD_REQUIRED_MSG\": \"Vui lòng nhập xác nhận mật khẩu mới\",\n            \"PASSWORD_DO_NOT_MATCH\": \"Xác nhận mật khẩu mới chưa đúng\",\n            \"CHANGE_PASSWORD_SUCCESSFUL_MSG\": \"Mật khẩu đã được thay đổi\",\n            \"CHANGE_PASSWORD_ERROR_MSG\": \"Có lỗi xảy ra khi đổi mật khẩu\",\n            \"NEW_PASSWORD_INVALID\": \"Mật khẩu mới không được giống với mật khẩu hiện tại của bạn. Vui lòng nhập một mật khẩu khác.\",\n            \"CURRENT_PASSWORD_INCORRECT\": \"Mật khẩu hiện tại không đúng. Vui lòng nhập lại\",\n            \"USERNAME\": \"Tài khoản\",\n            \"LAST_NAME\": \"Tên\",\n            \"MIDDLE_NAME\": \"Tên đệm\",\n            \"FIRST_NAME\": \"Họ\",\n            \"BIRTHDAY\": \"Ngày sinh\",\n            \"PHONE\": \"Số điện thoại cá nhân\",\n            \"COMPANY_PHONE\": \"Số điện thoại công ty\",\n            \"ADDRESS\": \"Địa chỉ cá nhân\",\n            \"MOBILE\": \"Di động\",\n            \"FULL_NAME\": \"Họ và tên\",\n            \"FULL_NAME_IS_REQUIRED\": \"Họ và tên là bắt buộc\",\n            \"EMAIL\": \"Email cá nhân\",\n            \"COMPANY_EMAIL\": \"Email công ty\",\n            \"GENDER\": \"Giới tính\",\n            \"MALE\": \"Nam\",\n            \"FEMALE\": \"Nữ\",\n            \"OTHER\": \"Khác\",\n            \"FIRST_NAME_REQUIRED_MSG\": \"Họ không được rỗng\",\n            \"LAST_NAME_REQUIRED_MSG\": \"Tên không được rỗng\",\n            \"EMAIL_REQUIRED_MSG\": \"Email cá nhân không được rỗng\",\n            \"EMAIL_INVALID_MSG\": \"Email không hợp lệ\",\n            \"GENERAL_INFORMATION\": \"Thông tin tài khoản\",\n            \"PERSONAL_INFORMATION\": \"Thông tin cá nhân\",\n            \"CHOSEN_IMAGE\": \"Chọn ảnh ...\",\n            \"UPDATE_PROFILE_SUCCESSFUL_MSG\": \"Thông tin tài khoản đã được cập nhật\",\n            \"UPDATE_PROFILE_ERROR_MSG\": \"Có lỗi xảy ra khi cập nhật thông tin tài khoản\",\n            \"IMAGE_UPDATE_SUCCESSFUL_MSG\": \"Ảnh đại diện đã được cập nhật\",\n            \"IMAGE_UPDATE_ERROR_MSG\": \"Có lỗi xảy ra khi cập nhật ảnh đại diện\",\n            \"CROPPER\": {\n                \"TITLE\": \"Công cụ cắt ảnh\",\n                \"SELECT_NEW_IMAGE\": \"Chọn ảnh khác ...\",\n                \"OK\": \"Đồng ý\",\n                \"CANCEL\": \"Bỏ qua\"\n            },\n            \"UPDATE\": \"Cập nhật\",\n            \"FIRST_NAME_INVALID_MSG\": \"Họ không hợp lệ\",\n            \"LAST_NAME_INVALID_MSG\": \"Tên không hợp lệ\",\n            \"PHONE_REQUIRED_MSG\": \"Số di động không được rỗng\",\n            \"PHONE_INVALID_MSG\": \"Số điện thoại không hợp lệ\",\n            \"ADDRESS_REQUIRED_MSG\": \"Địa chỉ không được rỗng\",\n            \"OFFICE_PHONE_REQUIRED_MSG\": \"Số điện thoại công ty không được rỗng\",\n            PASSWORD_NOT_STRONG_ENOUGH: 'Mật khẩu không đủ mạnh',\n            PASSWORD_LENGTH_INVALID_MSG: 'Mật khẩu sử dụng 8 ký tự trở lên',\n            PASSWORD_INVALID_MSG: 'Mật khẩu chỉ sử dụng chữ, số và các ký tự cơ bản',\n            PASSWORD_LENGTH_REQUIRED: 'Mật khẩu sử dụng {{quality}} ký tự trở lên',\n            PASSWORD_REQUIRED_LOWER: 'Mật khẩu sử dụng ít nhất {{quality}} ký tự thường',\n            PASSWORD_REQUIRED_UPPER: 'Mật khẩu sử dụng ít nhất {{quality}} ký tự in hoa',\n            PASSWORD_REQUIRED_SPECIAL: 'Mật khẩu sử dụng sử dụng ít nhất {{quality}} ký tự đặc biệt',\n            PASSWORD_REQUIRED_NUMERICAL: 'Mật khẩu sử dụng sử dụng ít nhất {{quality}} chữ số',\n            PASSWORD_WARNING: 'Sử dụng 8 ký tự trở lên và kết hợp chữ in hoa, chữ thường, chữ số và ký tự đặc biệt'\n        }\n    }\n};\n","export const systemEnLocale = {\n    abbr: 'en',\n    vi: 'Vietnamese',\n    en: 'English',\n    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n    longDateFormat: {\n        LT: 'HH:mm',\n        LTS: 'HH:mm:ss',\n        L: 'DD/MM/YYYY',\n        LL: 'D MMMM YYYY',\n        LLL: 'D MMMM YYYY HH:mm',\n        LLLL: 'dddd, D MMMM YYYY HH:mm'\n    },\n    calendar: {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L'\n    },\n    relativeTime: {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years'\n    },\n    dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n    ordinal: function (_num: string) {\n        let num: number = Number(_num);\n        let b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'th' :\n            (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                    (b === 3) ? 'rd' : 'th';\n        return num + output;\n    },\n    week: {\n        dow: 1,\n        doy: 4 // The week that contains Jan 4th is the first week of the year.\n    },\n    grid: {\n        displayMsg: 'Displaying <b>{0}</b> - <b>{1}</b> of <b>{2}</b>',\n        emptyMsg: 'No data to display',\n        beforePageText: 'Page',\n        afterPageText: 'of {0}',\n        firstText: 'First Page',\n        prevText: 'Previous Page',\n        nextText: 'Next Page',\n        lastText: 'Last Page',\n        refreshText: 'Refresh',\n        searchText: 'Search',\n        searchPlaceholder: 'Keyword',\n        downloadText: 'Download',\n        translations: {\n            headerReload: 'Reload',\n            headerColumnSelector: 'Column selector',\n            indexColumn: 'Index',\n            selectColumn: 'Select',\n            selectRow: 'Select',\n            selectAllRows: 'Select',\n            expandColumn: 'Expand',\n            expandRow: 'Expand',\n            paginationLimit: 'Limit',\n            paginationRange: 'Results',\n            firstText: 'First Page',\n            prevText: 'Previous Page',\n            nextText: 'Next Page',\n            lastText: 'Last Page'\n        }\n    },\n    TOOLBAR: {\n        ADD: 'Create',\n        EDIT: 'Edit',\n        SAVE: 'Save',\n        UPDATE: 'Update',\n        DELETE: 'Delete',\n        SEARCH: 'Search',\n        OK: 'Ok',\n        CANCEL: 'Cancel',\n        RESET: 'Reset',\n        BACK: 'Back',\n        CLOSE: 'Close',\n        DOWNLOAD: 'Download'\n    },\n    COMMON: {\n        WELCOME: 'Welcome',\n        PLACEHOLDER_SEARCH: 'Search ...',\n        NOTIFICATION: {\n            TITLE: 'Notifications',\n            EMPTY_MSG: 'No data to display',\n            LOAD_MORE: 'Load more',\n            ITEMS: 'item(s)',\n            CLEAR_ALL: 'Clear all messages'\n        },\n        APPLICATION: {\n            TITLE: 'Application',\n            EVENTS_TODAY: 'Events today',\n            NEW_ACTIVITY: 'New activity'\n        },\n        MENU: {\n            LANGUAGE: 'Language',\n            HOME: 'Home',\n            USER_PROFILE: 'Profile',\n            ORGANIZATION_INFORMATION: 'Organization information',\n            SIGNATURE: 'Signature',\n            CONFIG: 'Configuration',\n            ABOUT: 'About',\n            LOGOUT: 'Logout',\n            BACK: 'Back',\n            WORKSPACE: 'Workspace'\n        },\n        SELECTION: {\n            DEFAULT_VALUE: '- Select -'\n        },\n        MODULE: {\n            ADDRESS: {\n                CITY: 'Province/City',\n                COUNTRY: 'Country',\n                DISTRICT: 'District',\n                ADDRESS: 'Address',\n                STREET: 'Street',\n                ADDRESS_REQUIRED_MSG: 'Address field is required',\n                COUNTRY_REQUIRED_MSG: 'Country field is required'\n            },\n            ORGANIZATION: {\n                TITLE: 'Organization',\n                CODE: 'Code',\n                NAME: 'Name',\n                FOREIGN_NAME: 'Foreign name',\n                ABBREVIATION_NAME: 'Abbreviation name',\n                TAX_CODE: 'Tax Code',\n                BILLING_ADDRESS: 'Billing address',\n                LEGAL_REPRESENTATIVE: 'Legal representative',\n                WEBSITE: 'Website',\n                INDUSTRY: 'Industry',\n                COMPANY_SIZE: 'Company size',\n                DESCRIPTION: 'Description',\n                LINK: 'Link',\n                CODE_REQUIRED_MSG: 'Code field is required',\n                NAME_REQUIRED_MSG: 'Name field is required',\n                EMAIL: 'Email',\n                EMAIL_INVALID_MSG: 'Email must be a valid email',\n                PHONE: 'Phone',\n                FAX: 'Fax',\n                CITY: 'Province/City',\n                LANGUAGE: 'Language',\n                CHOSEN_IMAGE: 'Chosen Logo ...',\n                STANDARD_IMAGE_SIZE: 'Standard image size',\n                UPDATE_LOGO_ERROR_MSG: 'Can not update logo.Error while updating logo',\n                EMPLOYEES: 'employees',\n                SELF_EMPLOYED: 'Self-employed',\n                REMOVE_LOGO: 'Remove Logo',\n                SAVE_LOGO: 'Save Logo',\n                REMOVE_LOGO_SUCCESSFUL_MSG: 'Logo was deleted successfully',\n                REMOVE_LOGO_ERROR_MSG: 'Can not delete Logo',\n                UPDATE_SUCCESSFUL_MSG: 'Information was updated successfully',\n                UPDATE_ERROR_MSG: 'Can not update.Error while updating information',\n                TAXCODE_REQUIRED_MSG: 'Taxcode field is required'\n            },\n            USER_PROFILE: {\n                TITLE: 'Profile',\n                USERNAME: 'Username',\n                LAST_NAME: 'Last name',\n                MIDDLE_NAME: 'Middle name',\n                FIRST_NAME: 'First name',\n                BIRTHDAY: 'Birthday',\n                PHONE: 'Phone',\n                MOBILE: 'Mobile',\n                FULL_NAME: 'Full name',\n                EMAIL: 'Email',\n                GROUP_NAME: 'Group Name',\n                DESCRIPTION: 'Description',\n                GENDER: 'Gender',\n                MALE: 'Male',\n                FEMALE: 'Female',\n                OTHER: 'Other',\n                FIRST_NAME_REQUIRED_MSG: 'First name field is required',\n                LAST_NAME_REQUIRED_MSG: 'Last Name field is required',\n                EMAIL_REQUIRED_MSG: 'Email field is required',\n                EMAIL_INVALID_MSG: 'Email must be a valid email',\n                GENERAL_INFORMATION: 'General information',\n                CHOSEN_IMAGE: 'Chosen avatar ...',\n                SECURITY_INFORMATION: 'Security information',\n                CURRENT_PASSWORD: 'Current Password',\n                NEW_PASSWORD: 'New Password',\n                CONFIRM_NEW_PASSWORD: 'Confirm new password',\n                CHANGE_PASSWORD: 'Change password',\n                CURRENT_PASSWORD_REQUIRED_MSG: 'Please enter the current password',\n                NEW_PASSWORD_REQUIRED_MSG: 'Please enter a new password',\n                CONFIRM_NEW_PASSWORD_REQUIRED_MSG: 'Please enter a new password again',\n                PASSWORD_DO_NOT_MATCH: 'New password do not match',\n                CHANGE_PASSWORD_INFO_MSG: 'Please enter the your current password, then your new password twice',\n                CHANGE_PASSWORD_SUCCESSFUL_MSG: 'Password was changed successfully',\n                CHANGE_PASSWORD_ERROR_MSG: 'Can not change password.Error while changing password',\n                CURRENT_PASSWORD_INCORRECT: 'Current password is incorrect. Please try again',\n                UPDATE_PROFILE_SUCCESSFUL_MSG: 'Profile was updated successfully',\n                UPDATE_PROFILE_ERROR_MSG: 'Can not update profile.Error while updating profile',\n                AVATAR: 'Avatar',\n                SAVE_IMAGE: 'Apply',\n                REMOVE_IMAGE: 'Remove',\n                IMAGE_UPDATE_SUCCESSFUL_MSG: 'Avatar was updated successfully',\n                IMAGE_UPDATE_ERROR_MSG: 'Can not update.Error while updating avatar',\n                IMAGE_REMOVE_SUCCESSFUL_MSG: 'Avatar was deleted successfully',\n                IMAGE_REMOVE_ERROR_MSG: 'Can not remove.Error while removing avatar',\n                SIGNATURE_INFORMATION: 'Signature information',\n                ACCESS_ROLE: 'Access role',\n                SIGNATURE_VERIFY: 'Phone number',\n                SIGNATURE_FILE: 'Signature File',\n                SIGNATURE_VERIFY_REQUIRED_MSG: 'Phone number field is required',\n                UPDATE_SIGNATURE_SUCCESSFUL_MSG: 'Signature was updated successfully',\n                UPDATE_SIGNATURE_ERROR_MSG: 'Can not update signature.Error while updating signature',\n                SIGNATURE_FILE_REQUIRED_MSG: 'Please select a signature image to update',\n                UPDATE_SIGNATURE: 'Update signature',\n                NO_FILE: 'No File ...',\n                CHOOSE: 'Choose'\n            },\n            VIEWER: {\n                UNSUPPORTED: 'We\\'re sorry, an error occurred when trying to view the document <br /> File format is not supported'\n            },\n            CROPPER: {\n                TITLE: 'Image Cropper',\n                SELECT_NEW_IMAGE: 'Select new image ...'\n            },\n            SIGNATURE_MANAGE: {\n                CREATE_SIGN: 'Create signature',\n                TITLE: 'Signature',\n                NAME: 'Signature name',\n                NAME_REQUIRED_MSG: 'Name field is required',\n                MOBILE: 'Mobile',\n                ISSUED: 'Issued',\n                FILE: 'File',\n                RESULTS: 'Results',\n                FILE_REQUIRED_MSG: 'File field is required',\n                PHOTO: 'Photo',\n                DELETE_SUCCESSFUL_MSG: 'Signature was deleted successfully',\n                DELETE_ERROR_MSG: 'Can not delete.Error while deleting signature',\n                SAVE_SUCCESSFUL_MSG: 'Signature was saved successfully',\n                SAVE_ERROR_MSG: 'Can not save.Error while saving signature',\n                NO_INFORMATION: 'No matches found',\n                KEY_SEARCH: 'Please sure that that the keyword you need to search for a primary.'\n            },\n            EMAIL_TEMPLATE: {\n                \"SEND_TEST\": \"Send test\",\n                \"EMAIL\": \"Email template\",\n                \"LIST\": \"Email template list\",\n                \"ADD_EMAIL\": \"Add new email template\",\n                \"EDIT_EMAIL\": \"Edit email template\",\n                \"EMAIL_CODE\": \"Code\",\n                \"EMAIL_NAME\": \"Name\",\n                \"EMAIL_SUBJECT\": \"Subject\",\n                \"EMAIL_CONTENT\": \"Content\",\n                \"NOTE\": \"Note\",\n                \"SAMPLE_INFORMATION\": \"Sample information\",\n                \"SYSTEM_INFORMATION\": \"System configuration information\",\n                \"TO\": \"To\",\n                \"FROM\": \"From\",\n                \"EMAIL_CODE_EXIST_MSG\": \"Email code already exists\",\n                \"EMAIL_CODE_REQUIRED\": \"Email code field is required\",\n                \"EMAIL_NAME_REQUIRED\": \"Email name field is required\",\n                \"ADD_SUCCESS\": \"Email template was saved successfully.\",\n                \"ADD_ERROR\": \"Can not save.Error while saving email template.\",\n                \"UPDATE_SUCCESS\": \"Email template was updated successfully.\",\n                \"UPDATE_ERROR\": \"Can not update.Error while updating email template.\",\n                \"DELETE_SUCCESS\": \"Email template was deleted successfully.\",\n                \"DELETE_ERROR\": \"Can not delete.Error while deleting email template.\",\n                \"DELETE_TITLE\": \"Delete email template?\",\n                \"DELETE_CONTENT\": \"Are you sure want to delete this?\",\n                \"ACTIVE\": \"Active\"\n            },\n            REPORT_TEMPLATE: {\n                \"TITLE\": \"Report template\",\n                \"LIST\": 'Templates',\n                \"ADD\": \"Add\",\n                \"APPLICATION\": \"Application\",\n                \"MODULE\": \"Module\",\n                \"TYPE\": \"Type\",\n                \"VERSION\": \"Version\",\n                \"NAME\": \"Name\",\n                \"DESCRIPTION\": \"Description\",\n                \"FILE_UPLOAD\": \"File upload\",\n                \"APPLICATION_REQUIRED\": \"Application field is required\",\n                \"MODULE_REQUIRED\": \"Module field is required\",\n                \"TYPE_REQUIRED\": \"Type field is required\",\n                \"VERSION_REQUIRED\": \"Version field is required\",\n                \"NAME_REQUIRED\": \"Name field is required\",\n                \"DESCRIPTION_REQUIRED\": \"Description field is required\",\n                \"ADD_SUCCESS\": \"Form management was added successfully\",\n                \"ADD_ERROR\": \"Can not add.Error while adding template\",\n                \"UPDATE_SUCCESS\": \"Form management was updated successfully\",\n                \"UPDATE_ERROR\": \"Can not update.Error while updating template\",\n                \"DELETE_SUCCESS\": \"Form management was deleted successfully\",\n                \"DELETE_ERROR\": \"Can not delete.Error while deleting template\",\n                \"DELETE_TITLE\": \"Delete template\",\n                \"DELETE_CONTENT\": \"Are you sure you want to delete the selected template?\",\n                \"NO_FILE\": \"No File ...\",\n                \"CHOOSE\": \"Choose\"\n            }\n        },\n        PLUGIN: {\n            SERVICE_UNAVAILABLE: 'The service is currently unavailable',\n            SERVICE_MESSAGE_ERROR: 'Please check the connection and try again'\n        }\n    },\n    INDICATOR: {\n        LOADING: 'Loading ...',\n        PROCESSING: 'Processing ...',\n        SAVING: 'Saving ...',\n        UPDATING: 'Updating ...'\n    },\n    \"ALL_SELECTED\": \"All Selected\",\n    \"CANCEL\": \"Cancel\",\n    \"CLEAR_ALL_FILTERS\": \"Clear all Filters\",\n    \"CLEAR_ALL_GROUPING\": \"Clear all Grouping\",\n    \"CLEAR_ALL_SORTING\": \"Clear all Sorting\",\n    \"CLEAR_PINNING\": \"Unfreeze Columns/Rows\",\n    \"COLLAPSE_ALL_GROUPS\": \"Collapse all Groups\",\n    \"COLUMNS\": \"Columns\",\n    \"COLUMN_RESIZE_BY_CONTENT\": \"Resize by Content\",\n    \"COMMANDS\": \"Commands\",\n    \"CONTAINS\": \"Contains\",\n    \"COPY\": \"Copy\",\n    \"EMPTY_DATA_WARNING_MESSAGE\": \"No data to display.\",\n    \"ENDS_WITH\": \"Ends With\",\n    \"EQUALS\": \"Equals\",\n    \"EQUAL_TO\": \"Equal to\",\n    \"EXPAND_ALL_GROUPS\": \"Expand all Groups\",\n    \"EXPORT_TO_CSV\": \"Export in CSV format\",\n    \"EXPORT_TO_EXCEL\": \"Export to Excel\",\n    \"EXPORT_TO_TAB_DELIMITED\": \"Export in Text format (Tab delimited)\",\n    \"EXPORT_TO_TEXT_FORMAT\": \"Export in Text format\",\n    \"FROM_TO_OF_TOTAL_ITEMS\": \"{{from}}-{{to}} of {{totalItems}} items\",\n    \"FORCE_FIT_COLUMNS\": \"Force fit columns\",\n    \"FREEZE_COLUMNS\": \"Freeze Columns\",\n    \"INVALID_FLOAT\": \"The number must be valid and have a maximum of {{maxDecimal}} decimals.\",\n    \"GREATER_THAN\": \"Greater than\",\n    \"GREATER_THAN_OR_EQUAL_TO\": \"Greater than or equal to\",\n    \"GROUP_BY\": \"Group by\",\n    \"HIDE_COLUMN\": \"Hide Column\",\n    \"IN_COLLECTION_SEPERATED_BY_COMMA\": \"Search items in a collection, must be separated by a comma (a,b)\",\n    \"ITEMS\": \"items\",\n    \"ITEMS_PER_PAGE\": \"items per page\",\n    \"ITEMS_SELECTED\": \"items selected\",\n    \"LAST_UPDATE\": \"Last Update\",\n    \"LESS_THAN\": \"Less than\",\n    \"LESS_THAN_OR_EQUAL_TO\": \"Less than or equal to\",\n    \"NOT_CONTAINS\": \"Not contains\",\n    \"NOT_EQUAL_TO\": \"Not equal to\",\n    \"NOT_IN_COLLECTION_SEPERATED_BY_COMMA\": \"Search items not in a collection, must be separated by a comma (a,b)\",\n    \"OF\": \"of\",\n    \"OK\": \"OK\",\n    \"PAGE\": \"Page\",\n    \"PAGE_X_OF_Y\": \"page {{x}} of {{y}}\",\n    \"REFRESH_DATASET\": \"Refresh Dataset\",\n    \"REMOVE_FILTER\": \"Remove Filter\",\n    \"REMOVE_SORT\": \"Remove Sort\",\n    \"SAVE\": \"Save\",\n    \"SELECT_ALL\": \"Select All\",\n    \"SORT_ASCENDING\": \"Sort Ascending\",\n    \"SORT_DESCENDING\": \"Sort Descending\",\n    \"STARTS_WITH\": \"Starts With\",\n    \"SYNCHRONOUS_RESIZE\": \"Synchronous resize\",\n    \"TOGGLE_FILTER_ROW\": \"Toggle Filter Row\",\n    \"TOGGLE_PRE_HEADER_ROW\": \"Toggle Pre-Header Row\",\n    \"X_OF_Y_SELECTED\": \"# of % selected\",\n    \"SETTING\": {\n        \"USER_PROFILE\": {\n            \"CURRENT_PASSWORD\": \"Current Password\",\n            \"NEW_PASSWORD\": \"New Password\",\n            \"CONFIRM_NEW_PASSWORD\": \"Confirm new password\",\n            \"CHANGE_PASSWORD\": \"Change password\",\n            \"CURRENT_PASSWORD_REQUIRED_MSG\": \"Please enter the current password\",\n            \"NEW_PASSWORD_REQUIRED_MSG\": \"Please enter a new password\",\n            \"CONFIRM_NEW_PASSWORD_REQUIRED_MSG\": \"Please enter a new password again\",\n            \"PASSWORD_DO_NOT_MATCH\": \"New password do not match\",\n            \"CHANGE_PASSWORD_SUCCESSFUL_MSG\": \"Password was changed successfully\",\n            \"CHANGE_PASSWORD_ERROR_MSG\": \"Can not change password.Error while changing password\",\n            \"NEW_PASSWORD_INVALID\": \"New password can not be same as your current password. Please enter a different password.\",\n            \"CURRENT_PASSWORD_INCORRECT\": \"Current password is incorrect. Please try again\",\n            \"USERNAME\": \"Username\",\n            \"LAST_NAME\": \"Last name\",\n            \"MIDDLE_NAME\": \"Middle name\",\n            \"FIRST_NAME\": \"First name\",\n            \"BIRTHDAY\": \"Birthday\",\n            \"ADDRESS\": \"Personal address\",\n            \"PHONE\": \"Phone\",\n            \"MOBILE\": \"Mobile\",\n            \"COMPANY_PHONE\": \"Company phone number\",\n            \"FULL_NAME\": \"Full name\",\n            \"FULL_NAME_IS_REQUIRED\": \"Full name is required\",\n            \"EMAIL\": \"Personal email\",\n            \"COMPANY_EMAIL\": \"Company Email\",\n            \"GROUP_NAME\": \"Group Name\",\n            \"DESCRIPTION\": \"Description\",\n            \"GENDER\": \"Gender\",\n            \"MALE\": \"Male\",\n            \"FEMALE\": \"Female\",\n            \"OTHER\": \"Other\",\n            \"FIRST_NAME_REQUIRED_MSG\": \"First name field is required\",\n            \"LAST_NAME_REQUIRED_MSG\": \"Last Name field is required\",\n            \"EMAIL_REQUIRED_MSG\": \"Personal email field is required\",\n            \"EMAIL_INVALID_MSG\": \"Personal email must be a valid email\",\n            \"GENERAL_INFORMATION\": \"Profile information\",\n            \"PERSONAL_INFORMATION\": \"Personal information\",\n            \"CHOSEN_IMAGE\": \"Chosen avatar ...\",\n            \"UPDATE_PROFILE_SUCCESSFUL_MSG\": \"Profile was updated successfully\",\n            \"UPDATE_PROFILE_ERROR_MSG\": \"Can not update profile.Error while updating profile\",\n            \"IMAGE_UPDATE_SUCCESSFUL_MSG\": \"Avatar was updated successfully\",\n            \"IMAGE_UPDATE_ERROR_MSG\": \"Can not update.Error while updating avatar\",\n            \"CROPPER\": {\n                \"TITLE\": \"Image Cropper\",\n                \"SELECT_NEW_IMAGE\": \"Select new image ...\",\n                \"OK\": \"Ok\",\n                \"CANCEL\": \"Cancel\"\n            },\n            \"UPDATE\": \"Update\",\n            \"FIRST_NAME_INVALID_MSG\": \"First name illegal\",\n            \"LAST_NAME_INVALID_MSG\": \"Last name illegal\",\n            \"PHONE_REQUIRED_MSG\": \"Mobile number cannot be empty\",\n            \"PHONE_INVALID_MSG\": \"Invalid phone number\",\n            \"ADDRESS_REQUIRED_MSG\": \"Address cannot be empty\",\n            \"OFFICE_PHONE_REQUIRED_MSG\": \"Company phone number cannot be empty\",\n            PASSWORD_NOT_STRONG_ENOUGH: 'Password not strong enough',\n            PASSWORD_LENGTH_INVALID_MSG: 'Password using 8 or more characters',\n            PASSWORD_INVALID_MSG: 'Passwords use only letters, numbers and basic characters',\n            PASSWORD_LENGTH_REQUIRED: 'Password using {{ quality }} or more characters',\n            PASSWORD_REQUIRED_LOWER: 'Password using {{ quality }} or more characters lower',\n            PASSWORD_REQUIRED_UPPER: 'Password using {{ quality }} or more characters upper',\n            PASSWORD_REQUIRED_SPECIAL: 'Password using {{ quality }} or more characters special',\n            PASSWORD_REQUIRED_NUMERICAL: 'Password using {{ quality }} or more characters number',\n            PASSWORD_WARNING: 'Use 8 or more characters and a combination of letters, lowercase, numbers, and characters'\n        }\n    }\n};\n","import {TranslateLoader} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\n\nimport {defineLocale} from 'ngx-bootstrap/chronos';\n\nimport {systemViLocale} from \"./system-vi\";\nimport {systemEnLocale} from \"./system-en\";\n\nexport class CloudTransLoader implements TranslateLoader {\n\n    private store: any = {};\n\n    constructor() {\n        this.defineLocale(systemViLocale.abbr, systemViLocale);\n        this.defineLocale(systemEnLocale.abbr, systemEnLocale);\n    }\n\n    assign(lang: string, data: any): any {\n        return Object.assign(this.getResourceByLang(lang), data);\n    }\n\n    defineLocale(lang: string, data: any) {\n        defineLocale(lang, data);\n        this.store[lang] = data;\n    }\n\n    getTranslation(lang: string): Observable<any> {\n        return of(this.getResourceByLang(lang));\n    }\n\n    getResourceByLang(lang: string): any {\n        return this.store[lang] || systemEnLocale;\n    }\n\n    /**\n     * Convert complex js object to dot notation js object\n     */\n    private dotizeStringToJSON(message: string, value: string, obj: any) {\n        const parts = message.split(\".\");\n        const last = parts.pop();\n        let part;\n        while (part = parts.shift()) {\n            if (typeof obj[part] !== \"object\") {\n                obj[part] = {};\n            }\n            obj = obj[part];\n        }\n        // @ts-ignore\n        obj[last] = value;\n    }\n\n    /**\n     * Convert Java .properties files data to JSON\n     */\n    private propertiesToJSON(str: string): any {\n        // Concat lines that end with '\\'.\n        // Split by line breaks.\n        // Remove commented lines\n        // Create the JSON\n        return str.replace(/\\\\\\n/, \"\").split(\"\\n\")\n            .filter((line) => /(\\#|\\!)/.test(line.replace(/\\s/g, \"\").slice(0, 1)) ? false : line)\n            .reduce((obj, line) => {\n                const colonifiedLine = line.replace(/(\\=)/, \":\");\n                const key = colonifiedLine.substring(0, colonifiedLine.indexOf(\":\")).trim();\n                const value = this.asciiToNative(colonifiedLine.substring(colonifiedLine.indexOf(\":\") + 1).trim());\n                // @ts-ignore\n                obj[key] = value;\n                return obj;\n            }, {});\n    }\n\n    /*\n    * Convert ASCII value to Native Character\n     */\n    private asciiToNative(value: string): string {\n        let character = value.split(\"\\\\u\");\n        let nativeStr = character[0];\n        for (let i = 1; i < character.length; i++) {\n            let code = character[i];\n            nativeStr += String.fromCharCode(parseInt(\"0x\" + code.substring(0, 4)));\n            if (code.length > 4) {\n                nativeStr += code.substring(4, code.length);\n            }\n        }\n        return nativeStr;\n    }\n\n    /*\n    * Convert Native value to ASCII\n     */\n    private native2Ascii(value: string, ignoreLatin: boolean = false): string {\n        let character = value.split(\"\");\n        let asciiStr = \"\";\n        for (let i = 0; i < character.length; i++) {\n            const code = Number(character[i].charCodeAt(0));\n            if (!ignoreLatin || code > 127) {\n                let charAscii = code.toString(16);\n                charAscii = new String(\"0000\").substring(charAscii.length, 4) + charAscii;\n                asciiStr += \"\\\\u\" + charAscii;\n            } else {\n                asciiStr += character[i];\n            }\n        }\n        return asciiStr;\n    }\n\n    /**\n     * Convert items from the server to Translation\n     */\n    convertResourceToObject(items: any[]): any {\n        let translation = {};\n        for (const item of items) {\n            this.dotizeStringToJSON(item['messageKey'], item['text'], translation);\n        }\n        return translation;\n    }\n\n    /**\n     * Convert Java .properties files data to Translation\n     */\n    convertPropertiesToObject(str: string): any {\n        let translation = {};\n        const json = this.propertiesToJSON(str);\n        for (const key in json) {\n            this.dotizeStringToJSON(key, json[key], translation);\n        }\n        return translation;\n    }\n\n    setResources(lang: string, items: any[]) {\n        this.assign(lang, this.convertResourceToObject(items));\n    }\n\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClientService} from 'inet-core';\nimport {Observable} from \"rxjs\";\nimport {TranslateService} from \"@ngx-translate/core\";\n\ndeclare let iNet: any;\n\n@Injectable()\nexport class CloudTranslateService {\n    static LANGUAGE_KEY = 'language';\n    static GRID_KEY = 'grid';\n    private url = {\n        list: iNet.getPUrl('message/keys')\n    };\n\n    constructor(private http: HttpClientService,\n                private translate: TranslateService) {}\n\n    getAllMessage(): Observable<any> {\n        return this.http.getJSON(this.url.list);\n    }\n\n    getMessageByApp(appName: string) : Observable<any> {\n        return this.http.getJSON(this.url.list, {group: appName});\n    }\n\n    getCurrentLang(): string {\n        if (window.localStorage) {\n            return window.localStorage.getItem(CloudTranslateService.LANGUAGE_KEY) || this.translate.currentLang;\n        }\n        return this.translate.currentLang;\n    }\n\n    setCurrentLang(lang: string) {\n        if (window.localStorage) {\n            localStorage.setItem(CloudTranslateService.LANGUAGE_KEY, lang);\n        }\n        this.translate.setDefaultLang(lang);\n    }\n\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BsLocaleService} from \"ngx-bootstrap/datepicker\";\nimport {TranslateLoader, TranslateModule, TranslateService} from \"@ngx-translate/core\";\nimport { listLocales } from 'ngx-bootstrap/chronos';\n\nimport {CloudTransLoader} from \"./cloud-trans-loader\";\nimport {HttpClientService} from \"inet-core\";\nimport {CloudTranslateService} from \"./cloud-translate.service\";\n\ndeclare let iNet: any;\n\n@NgModule({\n    imports: [\n        CommonModule,\n        TranslateModule.forRoot({\n            loader: {provide: TranslateLoader, useClass: CloudTransLoader}\n        })\n    ],\n    declarations: [],\n    exports: [TranslateModule],\n    providers: [BsLocaleService, TranslateService, CloudTranslateService, HttpClientService]\n})\nexport class CloudTranslateModule {\n\n    static forRoot(config: any = {}): ModuleWithProviders<TranslateModule> {\n        return TranslateModule.forRoot({\n            loader: {\n                provide: TranslateLoader,\n                useClass: config.loader || CloudTransLoader,\n                deps:[HttpClientService]\n            }\n        });\n    }\n\n    constructor(\n        public translate: TranslateService,\n        public localeService: BsLocaleService,\n        private cloudTranslate: CloudTranslateService\n    ) {\n        let languages = listLocales();\n        translate.addLangs(languages);\n\n        let lang = cloudTranslate.getCurrentLang() || languages[0];\n        translate.use(lang);\n\n        //Change a locale\n        this.localeService.use(lang);\n        /*\n        translate.get([CloudTranslateService.GRID_KEY]).subscribe(res => {\n            setTimeout(()=>{\n                if (iNet.ui && iNet.ui.grid && iNet.ui.grid.Grid && res) {\n                    iNet.applyIf(iNet.ui.grid.Grid.prototype, res[CloudTranslateService.GRID_KEY]);\n                }\n            }, 100)\n        });\n        */\n    }\n}\n","import { NgModule } from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {WebSocketClientService} from \"inet-core\";\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [],\n  exports: [],\n  providers: [WebSocketClientService]\n})\nexport class WebsocketModule {\n  \n}\n","import {Directive, ElementRef, Input, OnInit} from '@angular/core';\ndeclare var $: any;\n\n@Directive({\n    selector: '[appCollapse]',\n    standalone: false\n})\nexport class CollapseDirective implements OnInit {\n  @Input() expanded: boolean = false;\n  @Input() toggleEl: HTMLElement | undefined;\n\n  private _element: any;\n\n  constructor(\n    private _el: ElementRef\n  ) { }\n\n  ngOnInit() {\n    this._element = $(this._el.nativeElement);\n\n    // Click toggle\n    if (this.toggleEl) {\n      this.toggleEl.addEventListener('click', this.toggle.bind(this));\n    }\n\n    this.expanded = !this.expanded;\n    this.toggle();\n\n  }\n\n  show() {\n    this.expanded = true;\n    this._element.collapse('show').parent().addClass('collapse-expanded');\n  }\n\n  hide() {\n    this.expanded = false;\n    this._element.collapse('hide').parent().removeClass('collapse-expanded');\n  }\n\n  toggle() {\n    if (this.expanded) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CollapseDirective} from \"./collapse.directive\";\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [\n        CollapseDirective\n    ],\n    exports: [\n        CollapseDirective\n    ]\n})\nexport class CollapseModule {\n}\n","export class DialogAction {\n    title: string;\n    iconCls: string;\n    cls: string;\n    fn?: Function;\n    params?: any;\n\n    constructor(title: string, cls: string, iconCls: string, fn?: Function | undefined, params?: any) {\n        this.title = title;\n        this.cls = cls;\n        this.iconCls = iconCls;\n        if (fn) {\n            this.fn = fn;\n        }\n        if (params) {\n            this.params = params;\n        }\n    }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'ng-template[modalContent]',\n    standalone: false\n})\nexport class ModalContentDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'ng-template[modalAction]',\n    standalone: false\n})\nexport class ModalActionDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'ng-template[modalHeader]',\n    standalone: false\n})\nexport class ModalHeaderDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {AfterViewInit, Component, ContentChild, Input, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {BsModalService} from 'ngx-bootstrap/modal';\nimport {BsModalRef} from 'ngx-bootstrap/modal/bs-modal-ref.service';\nimport {DialogAction} from \"./dialog-action\";\nimport {Subscription} from \"rxjs\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {ModalContentDirective} from \"./modal-content.directive\";\nimport {ModalActionDirective} from \"./modal-action.directive\";\nimport {ModalHeaderDirective} from \"./modal-header.directive\";\n\ndeclare let iNet: any;\n\n@Component({\n    selector: 'app-confirm-dialog',\n    templateUrl: './confirm-dialog.component.html',\n    standalone: false\n})\nexport class ConfirmDialogComponent implements AfterViewInit {\n    @ViewChild('confirmModal') confirmModal: TemplateRef<any> | undefined;\n    @ContentChild(ModalHeaderDirective) modalHeaderItem!: ModalHeaderDirective;\n    @ContentChild(ModalContentDirective) modalContentItem!: ModalContentDirective;\n    @ContentChild(ModalActionDirective) modalActionItem!: ModalActionDirective;\n\n    @Input() id: string = iNet.generateId();\n    @Input() iconCls: string = '';\n    @Input() title: string = '';\n    @Input() content: string = '';\n    @Input() cls: string = '';\n    @Input() actions: Array<DialogAction> = [];\n    @Input() config: any = {\n        backdrop: true,\n        ignoreBackdropClick: true\n    };\n    data: any;\n    private modalRef: BsModalRef | undefined;\n    private toolbarTranslations: any;\n    private readonly translateSubscription: Subscription;\n\n\n    constructor(private modalService: BsModalService, private translate: TranslateService) {\n        this.translateSubscription = translate.get(['TOOLBAR']).subscribe(res => {\n            const {TOOLBAR} = res || {'TOOLBAR': {'CLOSE': 'Close'}};\n            this.toolbarTranslations = TOOLBAR;\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.getActions().length < 1 && !this.modalActionItem) {\n            const {CLOSE} = this.toolbarTranslations;\n            const closeAction = new DialogAction(CLOSE, 'btn-danger', 'fa fa-check', this.hide);\n            this.setActions([closeAction]);\n        }\n    }\n\n    public hide() {\n        if (!this.modalRef) {\n            return;\n        }\n        this.modalRef.hide();\n    }\n\n    show() {\n        if(this.confirmModal) {\n            this.modalRef = this.modalService.show(this.confirmModal, this.config);\n        }\n    }\n\n    pushAction(action: DialogAction) {\n        this.actions.push(action);\n    }\n\n    setActions(actions: Array<DialogAction>) {\n        this.actions = actions;\n    }\n\n    getActions(): Array<DialogAction> {\n        return this.actions;\n    }\n\n    setData(v: any) {\n        this.data = v;\n    }\n\n    getData(): any {\n        return this.data;\n    }\n\n    getId(): string {\n        return this.id;\n    }\n\n    callFn(fn?: Function, params?: any) {\n        if(fn) {\n            fn.call(this, params);\n        }\n    }\n}\n","<ng-template #confirmModal>\n    <div class=\"modal-header\">\n        <ng-container *ngIf=\"modalHeaderItem; else defaultHeaderBlock\" [ngTemplateOutlet]=\"modalHeaderItem.templateRef\" [ngTemplateOutletContext]=\"{data: data}\"></ng-container>\n        <ng-template #defaultHeaderBlock>\n            <h5 class=\"modal-title pull-left\"><i class=\"{{iconCls}}\"></i> {{title}}</h5>\n            <button type=\"button\" class=\"close pull-right\" (click)=\"hide()\">\n                <span aria-hidden=\"true\">&times;</span>\n            </button>\n        </ng-template>\n    </div>\n    <div class=\"modal-body\">\n        <ng-container *ngIf=\"content\"><div [outerHTML]=\"content\"></div></ng-container>\n        <ng-container *ngIf=\"modalContentItem\" [ngTemplateOutlet]=\"modalContentItem.templateRef\" [ngTemplateOutletContext]=\"{data: data}\"></ng-container>\n    </div>\n    <div class=\"modal-footer text-right\">\n        <ng-container *ngIf=\"modalActionItem\" [ngTemplateOutlet]=\"modalActionItem.templateRef\" [ngTemplateOutletContext]=\"{data: data}\"></ng-container>\n        <button type=\"button\" *ngFor=\"let action of actions\" class=\"btn btn-sm {{action.cls}}\"\n                (click)=\"callFn(action?.fn, action?.params)\"><i class=\"{{action.iconCls}}\"></i> {{action.title}}</button>\n    </div>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ModalModule, BsModalService} from 'ngx-bootstrap/modal';\nimport {ConfirmDialogComponent} from \"./confirm-dialog.component\";\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {ModalContentDirective} from './modal-content.directive';\nimport {ModalActionDirective} from \"./modal-action.directive\";\nimport {ModalHeaderDirective} from \"./modal-header.directive\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ModalModule.forRoot(),\n        TranslateModule\n    ],\n    declarations: [ConfirmDialogComponent, ModalContentDirective, ModalActionDirective, ModalHeaderDirective],\n    exports: [ConfirmDialogComponent, ModalContentDirective, ModalActionDirective, ModalHeaderDirective],\n    providers: [BsModalService]\n})\nexport class DialogModule {\n}\n","export class ListViewRow {\n    public selected: boolean = false;\n    public active: boolean = false;\n\n    constructor(public $implicit: any, public index: number = 0, public count: number = 0) {\n    }\n\n    get first(): boolean {\n        return this.index === 0;\n    }\n\n    get last(): boolean {\n        return this.index === this.count - 1;\n    }\n\n    get even(): boolean {\n        return this.index % 2 === 0;\n    }\n\n    get odd(): boolean {\n        return !this.even;\n    }\n}\n","import {\n    Component, OnInit, Input, Output, EventEmitter,\n    ViewChild, ContentChild, TemplateRef, OnChanges, ElementRef, SimpleChanges,\n} from '@angular/core';\nimport {ListViewRow} from \"./list-view-row\";\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'list-view',\n    styleUrls: ['./list-view.component.scss'],\n    templateUrl: './list-view.component.html',\n    standalone: false\n})\nexport class ListViewComponent implements OnChanges {\n\n    listItems: Array<any> = [];\n    selectedItems = [];\n    activeItem = -1;\n\n    @Input() items = [];\n\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onSelectionChanged = new EventEmitter();\n\n    @ViewChild(\"listBody\") listBody!: { nativeElement: HTMLElement};\n\n    @ContentChild('toolbarTpl') toolbar!: TemplateRef<ElementRef>;\n    @ContentChild('contentTpl') template!: TemplateRef<ElementRef> ;\n    @ContentChild('searchTpl') search!: TemplateRef<ElementRef>;\n    @ContentChild('footerTpl') footer!: TemplateRef<ElementRef>;\n\n    @Input() idProperty: string = 'uuid';\n    @Input() autoSelect: boolean= false;\n    @Input() singleSelect: boolean = false;\n    constructor() {\n    }\n\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n    ngOnInit() {\n \n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const count = this.items.length;\n        this.listItems = this.items.map((item, index) => {\n            return new ListViewRow(item, index, count);\n        });\n        this.autoSelectItem();\n    }\n\n    private autoSelectItem() {\n        if(this.autoSelect  && this.listItems.length>0) {\n            this.selectedItems = [];\n            this.selectItem(0);//active first item\n        }\n    }\n\n    requestFocus() {\n        if( this.listBody)\n            this.listBody.nativeElement.focus();\n    }\n\n    handleKeyPress(event: KeyboardEvent) {\n        const keyCode = event.which;\n\n        let row = this.activeItem < 0 ? {} : this.listItems[this.activeItem];\n        row.active = false;\n\n        const prevActiveItem = this.activeItem;\n        switch (keyCode) {\n            case 40:\n                if (this.activeItem === this.items.length - 1) {\n                    this.activeItem = 0;\n                    break;\n                }\n\n                this.activeItem++;\n                break;\n            case 38:\n            case 9:\n                if (this.activeItem === 0) {\n                    this.activeItem = this.items.length - 1;\n                    break;\n                }\n\n                this.activeItem--;\n                break;\n\n            case 32:\n                this.toggleItem(this.activeItem);\n                break;\n\n            default:\n                return\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n\n        if (this.activeItem == prevActiveItem) {\n            return;\n        }\n\n        if (event.altKey) {\n            this.updateItemState();\n            return;\n        }\n\n        //const isSelected = row.selected;\n        if (event.shiftKey) {\n            row.selected = true;\n        }\n        else {\n            row.selected = false;\n            this.selectedItems = [];\n        }\n\n        this.selectItem(this.activeItem);\n    }\n\n    handleClick(event: any, index: number) {\n        if (event.metaKey || event.ctrlKey) {\n            this.toggleItem(index);\n        }\n        else {\n            this.selectedItems = [];\n            this.selectItem(index);\n        }\n    }\n\n    updateItemState() {\n        this.listItems.forEach((row, index) => {\n            row.selected = this.selectedItems.indexOf(this.items[index]) >= 0;\n            row.active = index == this.activeItem;\n        });\n\n        if (this.activeItem >= 0) {\n            this.scrollItemIntoView(this.activeItem);\n        }\n    }\n\n    scrollItemIntoView(index: number) {\n        if(!this.listBody) {\n            return;\n        }\n        const activeItemEl = (this.listBody.nativeElement as HTMLElement).children.item(index) as HTMLElement;\n        const scrollTop = this.listBody.nativeElement.scrollTop;\n        const scrollEnd = scrollTop + this.listBody.nativeElement.offsetHeight;\n        if (activeItemEl.offsetTop < scrollTop) {\n            this.listBody.nativeElement.scrollTop = activeItemEl.offsetTop;\n        }\n        else if (activeItemEl.offsetTop + activeItemEl.offsetHeight > scrollEnd) {\n            this.listBody.nativeElement.scrollTop = activeItemEl.offsetTop + activeItemEl.offsetHeight - this.listBody.nativeElement.offsetHeight;\n        }\n        else if (activeItemEl.offsetTop > scrollEnd) {\n        }\n    }\n\n    toggleItem(index: number) {\n        if (this.selectedItems.indexOf(this.items[index]) >= 0) {\n            this.deselectItem(index);\n        }\n        else {\n            this.selectItem(index);\n        }\n    }\n\n    deselectItem(index: number) {\n        this.selectedItems.splice(this.selectedItems.indexOf(this.items[index]), 1);\n        this.updateItemState();\n        this.onSelectionChanged.emit(this.selectedItems);\n    }\n\n    selectItem(index: number) {\n        if(this.singleSelect) {\n            this.selectedItems = [];\n        }\n        this.activeItem = index;\n        // (<EmbeddedViewRef<ListViewRow>>this._vr.get(index)).rootNodes[0].scrollIntoView(false);\n        if (this.selectedItems.indexOf(this.items[index]) < 0) {\n            this.selectedItems.push(this.items[index]);\n        }\n        this.updateItemState();\n        this.onSelectionChanged.emit(this.selectedItems);\n    }\n\n    selectAll() {\n        if(this.singleSelect) {\n            this.autoSelectItem();\n        } else {\n            this.selectedItems = this.items.map(l => l);\n            this.updateItemState();\n        }\n        this.onSelectionChanged.emit(this.selectedItems);\n    }\n\n    clearSelection() {\n        this.selectedItems = [];\n        this.updateItemState();\n        this.onSelectionChanged.emit(this.selectedItems);\n    }\n\n    selectById(id: string) {\n        //this.selectedItems = [];\n        setTimeout(() => {\n            let index = this.items.findIndex(obj => obj[this.getIdProperty()] == id);\n            // console.log('indexx', index, this.getIdProperty(), id);\n            if (index > -1) {\n                this.selectItem(index);\n            }\n        }, 500)\n    }\n\n    deselectById(id: string) {\n        setTimeout(() => {\n            let index = this.items.findIndex(obj => obj[this.getIdProperty()] == id);\n            if (index > -1) {\n                this.deselectItem(index);\n            }\n        }, 500)\n    }\n\n    getIdProperty() {\n        return this.idProperty;\n    }\n\n}\n","<div class=\"toolbar\">\n    <ng-template [ngTemplateOutlet]=\"toolbar\"></ng-template>\n</div>\n<div class=\"search-container\">\n    <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n</div>\n<div #listBody class=\"list-body content\" tabindex=\"0\" (keydown)=\"handleKeyPress($event)\">\n    <i class=\"list-item-body flex-column\" style=\"text-align: center;padding-top: 10px;\" *ngIf=\"listItems.length < 1\">\n        {{'grid.emptyMsg' | translate}}\n    </i>\n    <a *ngFor=\"let item of listItems; let index = index\" class=\"list-item-body flex-column\"\n       (click)=\"handleClick($event, index)\" [attr.data-index]=\"index\">\n        <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"item\"></ng-template>\n    </a>\n</div>\n<div class=\"footer\">\n    <ng-template [ngTemplateOutlet]=\"footer\"></ng-template>\n</div>\n","import {\n  Directive, Input, Output, ElementRef, ViewContainerRef, TemplateRef, EventEmitter,\n  OnChanges, OnInit, OnDestroy, SimpleChanges\n} from '@angular/core';\n\n\n@Directive({\n    selector: '[listOf]',\n    exportAs: 'listView',\n    standalone: false\n})\nexport class ListViewDirective implements OnInit, OnChanges, OnDestroy{\n  selectedItems = [];\n  activeItem = 0;\n\n  @Input() listOf = [];\n  @Output() onSelectionChanged = new EventEmitter();\n\n  constructor(private _element: ElementRef,  private _vr: ViewContainerRef, private _tr: TemplateRef<any>) {}\n\n  ngOnInit() {\n    //console.log('[ListViewDirective]', this._element);\n    // document.addEventListener('keydown', (e) => this.handleKeyPress(e));\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this._vr.clear();\n\n    const count = this.listOf.length;\n    this.listOf.map((item, index) => {\n      const row = {item, index, count};\n      const view = this._vr.createEmbeddedView(this._tr, row);\n      // view.rootNodes[0].addEventListener('click', (event) => this.handleClick(event, index));\n      return row;\n    });\n\n    // this.updateItemState();\n  }\n\n  ngOnDestroy(): any {\n\n  }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ListViewComponent} from \"./list-view.component\";\nimport {ListViewDirective} from \"./list-view.directive\";\nimport {TranslateModule} from \"@ngx-translate/core\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        TranslateModule\n    ],\n    declarations: [ListViewComponent, ListViewDirective],\n    exports: [ListViewComponent, ListViewDirective]\n})\nexport class ListViewModule {\n}\n","import {Injectable} from '@angular/core';\n\ndeclare let iNet: any;\n\nconst FILES_FORMAT = [\n    'unknown', 'text', 'archive', 'audio', 'video',\n    'png', 'jpg', 'gif', 'tiff', 'svg', 'ai', 'psd', 'dwg',\n    'avi', 'fla', 'mp2', 'mp3', 'mp4', 'aac', 'flac', 'wma', 'wav', 'mxf',\n    'iso', 'mdf', 'nrg',\n    'zip', '7z', 'arj', 'rar',\n    'pdf', 'doc', 'rtf', 'txt', 'xls', 'ppt',\n    'css', 'csv', 'html', 'json', 'js', 'xml',\n    'dbf', 'exe'\n];\n\nconst FILES_EDIT_FORMAT = [\n    'doc', 'docx', 'odt', 'ods', 'xls', 'xlsx',\n    'ppt', 'pps', 'pptm', 'pptx', 'pot', 'potx',\n    'dot', 'dotx', 'docm', 'dotx', 'csv', 'sxw']\n;\n\nconst FILES_VIEW_FORMAT = ['pdf', 'png', 'jpg', 'jpeg', 'gif'];\n\nconst UNKNOWN = 'unknown';\n\n@Injectable()\nexport class FileFormatService {\n\n    constructor() {\n    }\n\n    getImagePath(): string {\n        let path = iNet.commonImageFolder;\n        const lastIndex = path.lastIndexOf('/');\n        if (lastIndex === path.length - 1) {\n            return path.substring(0, lastIndex);\n        }\n        return path;\n    }\n\n    getFileFormatPath(): string {\n        return `${this.getImagePath()}/format`;\n    }\n\n    getUrlByExt(ext: string) {\n        const path = this.getFileFormatPath();\n        if (FILES_FORMAT.indexOf(ext) > -1) {\n            return `${path}/${ext.toLowerCase()}.svg`\n        }\n        return `${path}/${UNKNOWN}.svg`\n    }\n\n    getUrlByName(name: string) {\n        return this.getUrlByExt(this.getExtByName(name));\n    }\n\n    getExtByName(name: string) {\n        // @ts-ignore\n        return name.split('.').pop().toLowerCase() || UNKNOWN;\n    }\n\n    getEditFormats(): string[] {\n        return FILES_EDIT_FORMAT;\n    }\n\n    getViewFormats(): string[] {\n        return FILES_VIEW_FORMAT;\n    }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {FileFormatService} from \"./file-format.service\";\n\n@Pipe({\n    name: 'fileExt',\n    standalone: false\n})\nexport class FileExtPipe implements PipeTransform {\n    constructor(private formatService: FileFormatService) {\n    }\n\n    transform(name: string): string {\n        return this.formatService.getExtByName(name);\n    }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {FileFormatService} from \"./file-format.service\";\n\n@Pipe({\n    name: 'fileIcon',\n    standalone: false\n})\nexport class FileIconPipe implements PipeTransform {\n\n    constructor(private formatService: FileFormatService) {\n\n    }\n\n    transform(name: string): string {\n        return this.formatService.getUrlByName(name);\n    }\n\n}\n","import {Injectable} from '@angular/core';\nimport {NavigationExtras, Router} from '@angular/router';\nimport {HttpClientService} from \"inet-core\";\nimport {Subject} from \"rxjs\";\nimport {FileFormatService} from \"./file-format.service\";\n\ndeclare let iNet: any;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ViewerService {\n    private static files: any[] = [];\n    private routerPath: string = 'viewer';//Navigate with the router path\n    private downloadUrl: string = iNet.getPUrl('docx/download');\n\n    // Observable sources\n    private emitLoadSource = new Subject<any>();\n    // Observable when document loaded\n    loadEmitted = this.emitLoadSource.asObservable();\n\n    constructor(private router: Router,\n                private formatService: FileFormatService,\n                private http: HttpClientService) {\n    }\n\n    setRouterPath(v: string) {\n        this.routerPath = v;\n    }\n\n    getRouterPath(): string {\n        return this.routerPath;\n    }\n\n    setDownloadUrl(v: string) {\n        this.downloadUrl = v;\n    }\n\n    getDownloadUrl(): string {\n        return this.downloadUrl;\n    }\n\n    open(ext: string, docId: string, extras?: NavigationExtras) {\n        if (this.hasEdit(ext) || (this.hasView(ext) && this.hasViewerInBrowser())) {\n            this.router.navigate([this.getRouterPath(), ext, docId], extras);\n        } else { //error pages\n            this.router.navigate([this.getRouterPath(), docId]);\n        }\n    }\n\n    hasNameInPlugin(name: string): boolean {\n        let plugins: any = navigator.plugins || [];\n        let plugin: any = {};\n        for (let i = 0; i < plugins.length; i++) {\n            plugin = plugins[i] || {};\n            if ((plugin['name']).search(name) > -1) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    hasViewerInBrowser(): boolean {\n        if (iNet.isWebKit) { //Chrome or Safari\n            if (iNet.isChrome) {\n                return this.hasNameInPlugin('PDF Viewer');\n            } else if (iNet.isSafari) {\n                return (this.hasNameInPlugin('Adobe Acrobat') || this.hasNameInPlugin('PDF'));\n            }\n        } else if (iNet.isGecko) { //Firefox\n            return this.hasNameInPlugin('Adobe Acrobat');\n        }\n        return false;\n    }\n\n    hasEdit(ext: string): boolean {\n        return this.formatService.getEditFormats().indexOf(ext) > -1;\n    }\n\n    hasView(ext: string): boolean {\n        return this.formatService.getViewFormats().indexOf(ext) > -1;\n    }\n\n    downloadById(docId: string) {\n        this.http.downloadFile(this.getDownloadUrl(), {docID: docId});\n    }\n\n    setFiles(v: any) {\n        ViewerService.files = v;\n    }\n\n    getFiles() {\n        return ViewerService.files;\n    }\n\n    /**\n     * Returns true if this url is viewer module, false otherwise\n     * @param url - the give URL\n     */\n\n    isViewerModuleByUrl(url: string): boolean {\n        return (url.indexOf('/' + this.getRouterPath()) === 0);\n    }\n\n    /**\n     * Fire event when document loaded\n     * */\n    sendEvent($event: any) {\n        this.emitLoadSource.next({$event});\n    }\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {ViewerService} from './viewer.service';\nimport {NavigationExtras} from \"@angular/router\";\n\n@Directive({\n    selector: '[appViewer]',\n    standalone: false\n})\nexport class ViewerDirective {\n\n    @Input('ext') ext: string | undefined;\n    @Input('docId') docId: string | undefined;\n    @Input('files') files?: Array<any>;\n    @Input('extras') extras?: NavigationExtras;\n    constructor(private viewerService: ViewerService) {\n    }\n\n    @HostListener('click') onClick() {\n        if(this.ext && this.docId) {\n            this.viewerService.setFiles(this.files);\n            this.viewerService.open(this.ext, this.docId, this.extras);\n        }\n    }\n\n}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\n\n@Component({\n    selector: 'file-list',\n    templateUrl: './file-list.component.html',\n    styleUrls: ['./file-list.component.css'],\n    standalone: false\n})\nexport class FileListComponent implements OnInit {\n    @Input() fileEl: HTMLInputElement | undefined;\n    @Input() files: FileListItem[] = [];\n    @Input() removable: boolean = true;\n    @Input() template: TemplateRef<any> | undefined;\n\n    @Output() onClick = new EventEmitter<any>();\n    @Output() onRemove = new EventEmitter<FileListItem>();\n\n    ngOnInit(): void {\n        this._initFileEl();\n    }\n\n    clickFile(file: FileListItem, event: any) {\n        this.onClick.emit({file, event});\n    }\n\n    removeFile(file: FileListItem) {\n        const index = this.files.indexOf(file);\n        if (index > -1) {\n            this.files.splice(index, 1);\n            this.onRemove.emit(file);\n        }\n    }\n\n    addFiles(files: FileList | File[]) {\n        // Read as base64 if image\n        let file:any;\n        for (let i  = 0; i < files.length; i++) {\n            file = files[i];\n            if (this._fileIsImage(file)) {\n                file['image'] = true;\n                this._readImageBase64(file);\n            }\n            this.files.push(file);\n        }\n    }\n\n    private _initFileEl() {\n        if (this.fileEl) {\n            this.fileEl.addEventListener('change', (e) => {\n                if(this.fileEl) {\n                    const files: any = this.fileEl.files;\n                    if (files.length > 0) {\n                        // Read as base64 if image\n                        this.addFiles(files);\n\n                        // Reset file\n                        this.fileEl.value = '';\n                    }\n                }\n            });\n        }\n    }\n\n    private _readImageBase64(file: any) {\n        const reader = new FileReader();\n        reader.readAsDataURL(file);\n        reader.onload = function() {\n            file.url = reader.result;\n        };\n    }\n\n    private _fileIsImage(file: FileListItem) {\n        return file.type && file.type.indexOf('image') > -1;\n    }\n}\n\nexport interface FileListItem extends File {\n    id?: string;\n    url?: string;\n    image?: boolean;\n}\n","<ng-container *ngFor=\"let file of files\">\n    <ng-template *ngTemplateOutlet=\"template ? template : fileItem; context: {file: file}\">\n    </ng-template>\n</ng-container>\n<ng-template #fileItem let-file=\"file\">\n    <div class=\"file-item\" [title]=\"file.name\" (click)=\"clickFile(file, $event)\">\n        <img *ngIf=\"file.image; else icon\" [src]=\"file.url\" class=\"file-item__image\">\n        <ng-template #icon>\n            <img [src]=\"file.name | fileIcon\" class=\"file-item__image_type\">\n            <div class=\"file-item__name\">{{file.name}}</div>\n        </ng-template>\n        <i *ngIf=\"removable\" (click)=\"removeFile(file)\" class=\"fa fa-times file-item__remove\"></i>\n    </div>\n</ng-template>","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FileExtPipe} from './file-ext.pipe';\nimport {ViewerDirective} from './viewer.directive';\nimport {FileIconPipe} from './file-icon.pipe';\nimport {FileFormatService} from './file-format.service';\nimport {ViewerService} from './viewer.service';\nimport {FileListComponent} from './list/file-list.component';\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [ViewerDirective, FileIconPipe, FileExtPipe, FileListComponent],\n    exports: [ViewerDirective, FileIconPipe, FileExtPipe, FileListComponent],\n    providers: [FileFormatService, ViewerService]\n})\nexport class FileModule {\n}\n","import {Directive, EventEmitter, ElementRef, HostListener, Input, Output} from '@angular/core';\n\nimport {FileUploader, FileUploaderOptions} from './file-uploader.class';\n\n@Directive({\n    selector: '[ng2FileDrop]',\n    standalone: false\n})\nexport class FileDropDirective {\n    @Input() public uploader: FileUploader | undefined;\n    @Output() public fileOver: EventEmitter<any> = new EventEmitter();\n    @Output() public onFileDrop: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n    protected element: ElementRef;\n\n    public constructor(element: ElementRef) {\n        this.element = element;\n    }\n\n    public getOptions(): FileUploaderOptions | null {\n        return this.uploader ? this.uploader.options : null;\n    }\n\n    public getFilters(): any {\n        return {};\n    }\n\n    @HostListener('drop', ['$event'])\n    public onDrop(event: any): void {\n        let transfer = this._getTransfer(event);\n        if (!transfer) {\n            return;\n        }\n\n        let options = this.getOptions();\n        let filters = this.getFilters();\n        this._preventAndStop(event);\n        if (this.uploader && options) {\n            this.uploader.addToQueue(transfer.files, options, filters);\n        }\n        this.fileOver.emit(false);\n        this.onFileDrop.emit(transfer.files);\n    }\n\n    @HostListener('dragover', ['$event'])\n    public onDragOver(event: any): void {\n        let transfer = this._getTransfer(event);\n        if (!this._haveFiles(transfer.types)) {\n            return;\n        }\n\n        transfer.dropEffect = 'copy';\n        this._preventAndStop(event);\n        this.fileOver.emit(true);\n    }\n\n    @HostListener('dragleave', ['$event'])\n    public onDragLeave(event: any): any {\n        if ((this as any).element) {\n            if (event.currentTarget === (this as any).element[0]) {\n                return;\n            }\n        }\n\n        this._preventAndStop(event);\n        this.fileOver.emit(false);\n    }\n\n    protected _getTransfer(event: any): any {\n        return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer;\n    }\n\n    protected _preventAndStop(event: any): any {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    protected _haveFiles(types: any): any {\n        if (!types) {\n            return false;\n        }\n\n        if (types.indexOf) {\n            return types.indexOf('Files') !== -1;\n        } else if (types.contains) {\n            return types.contains('Files');\n        } else {\n            return false;\n        }\n    }\n}\n","import { Directive, EventEmitter, ElementRef, Input, HostListener, Output } from '@angular/core';\n\nimport { FileUploader } from './file-uploader.class';\n\n@Directive({\n    selector: '[ng2FileSelect]',\n    standalone: false\n})\nexport class FileSelectDirective {\n  @Input() public uploader: FileUploader | undefined;\n  @Output() public onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n  protected element: ElementRef;\n\n  public constructor(element: ElementRef) {\n    this.element = element;\n  }\n\n  public getOptions(): any {\n    return this.uploader ? this.uploader.options : {};\n  }\n\n  public getFilters(): any {\n    return {};\n  }\n\n  public isEmptyAfterSelection(): boolean {\n    return !!this.element.nativeElement.attributes.multiple;\n  }\n\n  @HostListener('change')\n  public onChange(): any {\n    let files = this.element.nativeElement.files;\n    let options = this.getOptions();\n    let filters = this.getFilters();\n    if(this.uploader) {\n      this.uploader.addToQueue(files, options, filters);\n    }\n    this.onFileSelected.emit(files);\n\n    if (this.isEmptyAfterSelection()) {\n      this.element.nativeElement.value = '';\n    }\n  }\n}\n","import {FileLikeObject} from './file-like-object.class';\n\nexport class FileType {\n    /*  MS office  */\n    public static mime_doc: string[] = [\n        'application/msword',\n        'application/msword',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n        'application/vnd.ms-word.document.macroEnabled.12',\n        'application/vnd.ms-word.template.macroEnabled.12'\n    ];\n    public static mime_xsl: string[] = [\n        'application/vnd.ms-excel',\n        'application/vnd.ms-excel',\n        'application/vnd.ms-excel',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n        'application/vnd.ms-excel.sheet.macroEnabled.12',\n        'application/vnd.ms-excel.template.macroEnabled.12',\n        'application/vnd.ms-excel.addin.macroEnabled.12',\n        'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n    ];\n    public static mime_ppt: string[] = [\n        'application/vnd.ms-powerpoint',\n        'application/vnd.ms-powerpoint',\n        'application/vnd.ms-powerpoint',\n        'application/vnd.ms-powerpoint',\n        'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n        'application/vnd.openxmlformats-officedocument.presentationml.template',\n        'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n        'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n        'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n        'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n        'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n    ];\n\n    /* PSD */\n    public static mime_psd: string[] = [\n        'image/photoshop',\n        'image/x-photoshop',\n        'image/psd',\n        'application/photoshop',\n        'application/psd',\n        'zz-application/zz-winassoc-psd'\n    ];\n\n    /* Compressed files */\n    public static mime_compress: string[] = [\n        'application/x-gtar',\n        'application/x-gcompress',\n        'application/compress',\n        'application/x-tar',\n        'application/x-rar-compressed',\n        'application/octet-stream',\n        'application/x-zip-compressed',\n        'application/zip-compressed',\n        'application/x-7z-compressed',\n        'application/gzip',\n        'application/x-bzip2'\n    ];\n\n    public static getMimeClass(file: FileLikeObject): string {\n        let mimeClass = 'application';\n        if (this.mime_psd.indexOf(file.type) !== -1) {\n            mimeClass = 'image';\n        } else if (file.type.match('image.*')) {\n            mimeClass = 'image';\n        } else if (file.type.match('video.*')) {\n            mimeClass = 'video';\n        } else if (file.type.match('audio.*')) {\n            mimeClass = 'audio';\n        } else if (file.type === 'application/pdf') {\n            mimeClass = 'pdf';\n        } else if (this.mime_compress.indexOf(file.type) !== -1) {\n            mimeClass = 'compress';\n        } else if (this.mime_doc.indexOf(file.type) !== -1) {\n            mimeClass = 'doc';\n        } else if (this.mime_xsl.indexOf(file.type) !== -1) {\n            mimeClass = 'xls';\n        } else if (this.mime_ppt.indexOf(file.type) !== -1) {\n            mimeClass = 'ppt';\n        }\n        if (mimeClass === 'application') {\n            mimeClass = this.fileTypeDetection(file.name);\n        }\n\n        return mimeClass;\n    }\n\n    public static fileTypeDetection(inputFilename: string): string {\n        let types: { [key: string]: string } = {\n            'jpg': 'image',\n            'jpeg': 'image',\n            'tif': 'image',\n            'psd': 'image',\n            'bmp': 'image',\n            'png': 'image',\n            'nef': 'image',\n            'tiff': 'image',\n            'cr2': 'image',\n            'dwg': 'image',\n            'cdr': 'image',\n            'ai': 'image',\n            'indd': 'image',\n            'pin': 'image',\n            'cdp': 'image',\n            'skp': 'image',\n            'stp': 'image',\n            '3dm': 'image',\n            'mp3': 'audio',\n            'wav': 'audio',\n            'wma': 'audio',\n            'mod': 'audio',\n            'm4a': 'audio',\n            'compress': 'compress',\n            'zip': 'compress',\n            'rar': 'compress',\n            '7z': 'compress',\n            'lz': 'compress',\n            'z01': 'compress',\n            'bz2': 'compress',\n            'gz': 'compress',\n            'pdf': 'pdf',\n            'xls': 'xls',\n            'xlsx': 'xls',\n            'ods': 'xls',\n            'mp4': 'video',\n            'avi': 'video',\n            'wmv': 'video',\n            'mpg': 'video',\n            'mts': 'video',\n            'flv': 'video',\n            '3gp': 'video',\n            'vob': 'video',\n            'm4v': 'video',\n            'mpeg': 'video',\n            'm2ts': 'video',\n            'mov': 'video',\n            'doc': 'doc',\n            'docx': 'doc',\n            'eps': 'doc',\n            'txt': 'doc',\n            'odt': 'doc',\n            'rtf': 'doc',\n            'ppt': 'ppt',\n            'pptx': 'ppt',\n            'pps': 'ppt',\n            'ppsx': 'ppt',\n            'odp': 'ppt'\n        };\n\n        let chunks = inputFilename.split('.');\n        if (chunks.length < 2) {\n            return 'application';\n        }\n        let extension = chunks[chunks.length - 1].toLowerCase();\n        if (types[extension] === undefined) {\n            return 'application';\n        } else {\n            return types[extension];\n        }\n    }\n}\n","function isElement(node: any): boolean {\n    return !!(node && (node.nodeName || node.prop && node.attr && node.find));\n}\n\nexport class FileLikeObject {\n    public lastModifiedDate: any;\n    public size: any;\n    public type: string = '';\n    public name: string = '';\n    public rawFile: string;\n\n    public constructor(fileOrInput: any) {\n        this.rawFile = fileOrInput;\n        let isInput = isElement(fileOrInput);\n        let fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;\n        let postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n        let method = '_createFrom' + postfix;\n        (this as any)[method](fakePathOrObject);\n    }\n\n    public _createFromFakePath(path: string): void {\n        this.lastModifiedDate = void 0;\n        this.size = void 0;\n        this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();\n        this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n    }\n\n    public _createFromObject(object: { size: number, type: string, name: string }): void {\n        this.size = object.size;\n        this.type = object.type;\n        this.name = object.name;\n    }\n}\n","import { FileLikeObject } from './file-like-object.class';\nimport { FileUploader, ParsedResponseHeaders, FileUploaderOptions } from './file-uploader.class';\n\nexport class FileItem {\n  public file: FileLikeObject;\n  public _file: File;\n  public alias: string | undefined;\n  public url: string | undefined = '/';\n  public method: string | undefined;\n  public headers: any = [];\n  public withCredentials: boolean = true;\n  public formData: any = [];\n  public isReady: boolean = false;\n  public isUploading: boolean = false;\n  public isUploaded: boolean = false;\n  public isSuccess: boolean = false;\n  public isCancel: boolean = false;\n  public isError: boolean = false;\n  public progress: number = 0;\n  public index: number = 0;\n  public _xhr: XMLHttpRequest | undefined;\n  public _form: any;\n\n  protected uploader: FileUploader;\n  protected some: File;\n  protected options: FileUploaderOptions;\n\n  public constructor(uploader: FileUploader, some: File, options: FileUploaderOptions) {\n    this.uploader = uploader;\n    this.some = some;\n    this.options = options;\n    this.file = new FileLikeObject(some);\n    this._file = some;\n    if (uploader.options) {\n      this.method = uploader.options.method || 'POST';\n      this.alias = uploader.options.itemAlias || 'FileUpload';\n    }\n    if(uploader.options.url) {\n      this.url = uploader.options.url;\n    }\n  }\n\n  public upload(): void {\n    try {\n      this.uploader.uploadItem(this);\n    } catch (e) {\n      this.uploader._onCompleteItem(this, '', 0, {});\n      this.uploader._onErrorItem(this, '', 0, {});\n    }\n  }\n\n  public cancel(): void {\n    this.uploader.cancelItem(this);\n  }\n\n  public remove(): void {\n    this.uploader.removeFromQueue(this);\n  }\n\n  public onBeforeUpload(): void {\n    return void 0;\n  }\n\n  public onBuildForm(form: any): any {\n    return { form };\n  }\n\n  public onProgress(progress: number): any {\n    return { progress };\n  }\n\n  public onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n  public onError(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n  public onCancel(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n  public onComplete(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n  public _onBeforeUpload(): void {\n    this.isReady = true;\n    this.isUploading = true;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 0;\n    this.onBeforeUpload();\n  }\n\n  public _onBuildForm(form: any): void {\n    this.onBuildForm(form);\n  }\n\n  public _onProgress(progress: number): void {\n    this.progress = progress;\n    this.onProgress(progress);\n  }\n\n  public _onSuccess(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = true;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 100;\n    this.index = 0;\n    this.onSuccess(response, status, headers);\n  }\n\n  public _onError(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = true;\n    this.progress = 0;\n    this.index = 0;\n    this.onError(response, status, headers);\n  }\n\n  public _onCancel(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = true;\n    this.isError = false;\n    this.progress = 0;\n    this.index = 0;\n    this.onCancel(response, status, headers);\n  }\n\n  public _onComplete(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.onComplete(response, status, headers);\n\n    if (this.uploader.options.removeAfterUpload) {\n      this.remove();\n    }\n  }\n\n  public _prepareToUploading(): void {\n    this.index = this.index || ++this.uploader._nextIndex;\n    this.isReady = true;\n  }\n}\n","import {EventEmitter} from '@angular/core';\nimport {FileLikeObject} from './file-like-object.class';\nimport {FileItem} from './file-item.class';\nimport {FileType} from './file-type.class';\n\nfunction isFile(value: any): boolean {\n    return (File && value instanceof File);\n}\n\nexport interface Headers {\n    name: string;\n    value: string;\n}\n\nexport type ParsedResponseHeaders = { [headerFieldName: string]: string };\n\nexport type FilterFunction = {\n    name: string,\n    fn: (item?: FileLikeObject, options?: FileUploaderOptions) => boolean\n};\n\nexport interface FileUploaderOptions {\n    allowedMimeType?: string[];\n    allowedFileType?: string[];\n    autoUpload?: boolean;\n    isHTML5?: boolean;\n    filters?: FilterFunction[];\n    headers?: Headers[];\n    method?: string;\n    authToken?: string;\n    maxFileSize?: number;\n    queueLimit?: number;\n    removeAfterUpload?: boolean;\n    url?: string;\n    disableMultipart?: boolean;\n    itemAlias?: string;\n    authTokenHeader?: string;\n    additionalParameter?: { [key: string]: any };\n    parametersBeforeFiles?: boolean;\n    formatDataFunction?: Function;\n    formatDataFunctionIsAsync?: boolean;\n}\n\nexport class FileUploader {\n\n    public authToken: string | undefined = '';\n    public isUploading: boolean = false;\n    public queue: FileItem[] = [];\n    public progress: number = 0;\n    public _nextIndex: number = 0;\n    public autoUpload: any;\n    public authTokenHeader: string = '';\n    public response: EventEmitter<any>;\n\n    public options: FileUploaderOptions = {\n        autoUpload: false,\n        isHTML5: true,\n        filters: [],\n        removeAfterUpload: false,\n        disableMultipart: false,\n        formatDataFunction: (item: FileItem) => item._file,\n        formatDataFunctionIsAsync: false\n    };\n\n    protected _failFilterIndex: number = -1;\n\n    public constructor(options: FileUploaderOptions) {\n        this.setOptions(options);\n        this.response = new EventEmitter<any>();\n    }\n\n    public setOptions(options: FileUploaderOptions): void {\n        this.options = Object.assign(this.options, options);\n\n        this.authToken = this.options.authToken;\n        this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n        this.autoUpload = this.options.autoUpload;\n        // @ts-ignore\n        this.options.filters.unshift({name: 'queueLimit', fn: this._queueLimitFilter});\n\n        if (this.options.maxFileSize) {\n            // @ts-ignore\n            this.options.filters.unshift({name: 'fileSize', fn: this._fileSizeFilter});\n        }\n\n        if (this.options.allowedFileType) {\n            // @ts-ignore\n            this.options.filters.unshift({name: 'fileType', fn: this._fileTypeFilter});\n        }\n\n        if (this.options.allowedMimeType) {\n            // @ts-ignore\n            this.options.filters.unshift({name: 'mimeType', fn: this._mimeTypeFilter});\n        }\n\n        for (let i = 0; i < this.queue.length; i++) {\n            this.queue[i].url = this.options.url;\n        }\n    }\n\n    public addToQueue(files: File[], options?: FileUploaderOptions, filters?: FilterFunction[] | string): void {\n        let list: File[] = [];\n        for (let file of files) {\n            list.push(file);\n        }\n        let arrayOfFilters: any = this._getFilters(filters);\n        let count = this.queue.length;\n        let addedFileItems: FileItem[] = [];\n        list.map((some: File) => {\n            if (!options) {\n                options = this.options;\n            }\n\n            let temp = new FileLikeObject(some);\n            if (this._isValidFile(temp, arrayOfFilters, options)) {\n                let fileItem = new FileItem(this, some, options);\n                addedFileItems.push(fileItem);\n                this.queue.push(fileItem);\n                this._onAfterAddingFile(fileItem);\n            } else {\n                let filter = arrayOfFilters[this._failFilterIndex];\n                this._onWhenAddingFileFailed(temp, filter, options);\n            }\n        });\n        if (this.queue.length !== count) {\n            this._onAfterAddingAll(addedFileItems);\n            this.progress = this._getTotalProgress();\n        }\n        this._render();\n        if (this.options.autoUpload) {\n            this.uploadAll();\n        }\n    }\n\n    public removeFromQueue(value: FileItem): void {\n        let index = this.getIndexOfItem(value);\n        let item = this.queue[index];\n        if (item.isUploading) {\n            item.cancel();\n        }\n        this.queue.splice(index, 1);\n        this.progress = this._getTotalProgress();\n    }\n\n    public clearQueue(): void {\n        while (this.queue.length) {\n            this.queue[0].remove();\n        }\n        this.progress = 0;\n    }\n\n    public uploadItem(value: FileItem): void {\n        let index = this.getIndexOfItem(value);\n        let item = this.queue[index];\n        let transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n        item._prepareToUploading();\n        if (this.isUploading) {\n            return;\n        }\n        this.isUploading = true;\n        (this as any)[transport](item);\n    }\n\n    public cancelItem(value: FileItem): void {\n        let index = this.getIndexOfItem(value);\n        let item = this.queue[index];\n        let prop = this.options.isHTML5 ? item._xhr : item._form;\n        if (item && item.isUploading) {\n            prop.abort();\n        }\n    }\n\n    public uploadAll(): void {\n        let items = this.getNotUploadedItems().filter((item: FileItem) => !item.isUploading);\n        if (!items.length) {\n            return;\n        }\n        items.map((item: FileItem) => item._prepareToUploading());\n        items[0].upload();\n    }\n\n    public cancelAll(): void {\n        let items = this.getNotUploadedItems();\n        items.map((item: FileItem) => item.cancel());\n    }\n\n    public isFile(value: any): boolean {\n        return isFile(value);\n    }\n\n    public isFileLikeObject(value: any): boolean {\n        return value instanceof FileLikeObject;\n    }\n\n    public getIndexOfItem(value: any): number {\n        return typeof value === 'number' ? value : this.queue.indexOf(value);\n    }\n\n    public getNotUploadedItems(): any[] {\n        return this.queue.filter((item: FileItem) => !item.isUploaded);\n    }\n\n    public getReadyItems(): any[] {\n        return this.queue\n            .filter((item: FileItem) => (item.isReady && !item.isUploading))\n            .sort((item1: any, item2: any) => item1.index - item2.index);\n    }\n\n    public destroy(): void {\n        return void 0;\n    }\n\n    public onAfterAddingAll(fileItems: any): any {\n        return {fileItems};\n    }\n\n    public onBuildItemForm(fileItem: FileItem, form: any): any {\n        return {fileItem, form};\n    }\n\n    public onAfterAddingFile(fileItem: FileItem): any {\n        return {fileItem};\n    }\n\n    public onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any {\n        return {item, filter, options};\n    }\n\n    public onBeforeUploadItem(fileItem: FileItem): any {\n        return {fileItem};\n    }\n\n    public onProgressItem(fileItem: FileItem, progress: any): any {\n        return {fileItem, progress};\n    }\n\n    public onProgressAll(progress: any): any {\n        return {progress};\n    }\n\n    public onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n        return {item, response, status, headers};\n    }\n\n    public onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n        return {item, response, status, headers};\n    }\n\n    public onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n        return {item, response, status, headers};\n    }\n\n    public onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n        return {item, response, status, headers};\n    }\n\n    public onCompleteAll(): any {\n        return void 0;\n    }\n\n    public _mimeTypeFilter(item: FileLikeObject): boolean {\n        return !(this.options.allowedMimeType && this.options.allowedMimeType.indexOf(item.type) === -1);\n    }\n\n    public _fileSizeFilter(item: FileLikeObject): boolean {\n        return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n    }\n\n    public _fileTypeFilter(item: FileLikeObject): boolean {\n        return !(this.options.allowedFileType &&\n            this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n    }\n\n    public _onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n        item._onError(response, status, headers);\n        this.onErrorItem(item, response, status, headers);\n    }\n\n    public _onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n        item._onComplete(response, status, headers);\n        this.onCompleteItem(item, response, status, headers);\n        let nextItem = this.getReadyItems()[0];\n        this.isUploading = false;\n        if (nextItem) {\n            nextItem.upload();\n            return;\n        }\n        this.onCompleteAll();\n        this.progress = this._getTotalProgress();\n        this._render();\n    }\n\n    protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any {\n        return (name: any): any => {\n            if (name) {\n                return parsedHeaders[name.toLowerCase()] || void 0;\n            }\n            return parsedHeaders;\n        };\n    }\n\n    protected _xhrTransport(item: FileItem): any {\n        let that = this;\n        let xhr = item._xhr = new XMLHttpRequest();\n        let sendable: any;\n        this._onBeforeUploadItem(item);\n\n        if (typeof item._file.size !== 'number') {\n            throw new TypeError('The file specified is no longer valid');\n        }\n        if (!this.options.disableMultipart) {\n            sendable = new FormData();\n            this._onBuildItemForm(item, sendable);\n\n            const appendFile = () => sendable.append(item.alias, item._file, item.file.name);\n            if (!this.options.parametersBeforeFiles) {\n                appendFile();\n            }\n\n            // For AWS, Additional Parameters must come BEFORE Files\n            if (this.options.additionalParameter !== undefined) {\n                Object.keys(this.options.additionalParameter).forEach((key: string) => {\n                    // @ts-ignore\n                    let paramVal = this.options.additionalParameter[key];\n                    // Allow an additional parameter to include the filename\n                    if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0) {\n                        paramVal = paramVal.replace('{{file_name}}', item.file.name);\n                    }\n                    sendable.append(key, paramVal);\n                });\n            }\n\n            if (this.options.parametersBeforeFiles) {\n                appendFile();\n            }\n        } else {\n            // @ts-ignore\n            sendable = this.options.formatDataFunction(item);\n        }\n\n        xhr.upload.onprogress = (event: any) => {\n            let progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n            this._onProgressItem(item, progress);\n        };\n        xhr.onload = () => {\n            let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n            let response = this._transformResponse(xhr.response, headers);\n            let gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n            let method = '_on' + gist + 'Item';\n            (this as any)[method](item, response, xhr.status, headers);\n            this._onCompleteItem(item, response, xhr.status, headers);\n        };\n        xhr.onerror = () => {\n            let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n            let response = this._transformResponse(xhr.response, headers);\n            this._onErrorItem(item, response, xhr.status, headers);\n            this._onCompleteItem(item, response, xhr.status, headers);\n        };\n        xhr.onabort = () => {\n            let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n            let response = this._transformResponse(xhr.response, headers);\n            this._onCancelItem(item, response, xhr.status, headers);\n            this._onCompleteItem(item, response, xhr.status, headers);\n        };\n        if (item.method != null && item.url) {\n            xhr.open(item.method, item.url, true);\n        }\n        xhr.withCredentials = item.withCredentials;\n        if (this.options.headers) {\n            for (let header of this.options.headers) {\n                xhr.setRequestHeader(header.name, header.value);\n            }\n        }\n        if (item.headers.length) {\n            for (let header of item.headers) {\n                xhr.setRequestHeader(header.name, header.value);\n            }\n        }\n        if (this.authToken) {\n            xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n        }\n        xhr.onreadystatechange = function () {\n            if (xhr.readyState == XMLHttpRequest.DONE) {\n                that.response.emit(xhr.responseText)\n            }\n        }\n        if (this.options.formatDataFunctionIsAsync) {\n            sendable.then(\n                (result: any) => xhr.send(JSON.stringify(result))\n            );\n        } else {\n            xhr.send(sendable);\n        }\n        this._render();\n    }\n\n    protected _getTotalProgress(value: number = 0): number {\n        if (this.options.removeAfterUpload) {\n            return value;\n        }\n        let notUploaded = this.getNotUploadedItems().length;\n        let uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n        let ratio = 100 / this.queue.length;\n        let current = value * ratio / 100;\n        return Math.round(uploaded * ratio + current);\n    }\n\n    protected _getFilters(filters: FilterFunction[] | string | undefined): FilterFunction[] | undefined {\n        if (!filters) {\n            return this.options.filters;\n        }\n        if (Array.isArray(filters)) {\n            return filters;\n        }\n        if (typeof filters === 'string') {\n            let names = filters.match(/[^\\s,]+/g);\n            // @ts-ignore\n            return this.options.filters\n                .filter((filter: any) => (names as Array<string>).indexOf(filter.name) !== -1);\n        }\n        return this.options.filters;\n    }\n\n    protected _render(): any {\n        return void 0;\n    }\n\n    protected _queueLimitFilter(): boolean {\n        return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n    }\n\n    protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean {\n        this._failFilterIndex = -1;\n        return !filters.length ? true : filters.every((filter: FilterFunction) => {\n            this._failFilterIndex++;\n            return filter.fn.call(this, file, options);\n        });\n    }\n\n    protected _isSuccessCode(status: number): boolean {\n        return (status >= 200 && status < 300) || status === 304;\n    }\n\n    protected _transformResponse(response: string, headers: ParsedResponseHeaders): string {\n        return response;\n    }\n\n    protected _parseHeaders(headers: string): ParsedResponseHeaders {\n        let parsed: any = {};\n        let key: any;\n        let val: any;\n        let i: any;\n        if (!headers) {\n            return parsed;\n        }\n        headers.split('\\n').map((line: any) => {\n            i = line.indexOf(':');\n            key = line.slice(0, i).trim().toLowerCase();\n            val = line.slice(i + 1).trim();\n            if (key) {\n                parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n            }\n        });\n        return parsed;\n    }\n\n    protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void {\n        this.onWhenAddingFileFailed(item, filter, options);\n    }\n\n    protected _onAfterAddingFile(item: FileItem): void {\n        this.onAfterAddingFile(item);\n    }\n\n    protected _onAfterAddingAll(items: any): void {\n        this.onAfterAddingAll(items);\n    }\n\n    protected _onBeforeUploadItem(item: FileItem): void {\n        item._onBeforeUpload();\n        this.onBeforeUploadItem(item);\n    }\n\n    protected _onBuildItemForm(item: FileItem, form: any): void {\n        item._onBuildForm(form);\n        this.onBuildItemForm(item, form);\n    }\n\n    protected _onProgressItem(item: FileItem, progress: any): void {\n        let total = this._getTotalProgress(progress);\n        this.progress = total;\n        item._onProgress(progress);\n        this.onProgressItem(item, progress);\n        this.onProgressAll(total);\n        this._render();\n    }\n\n    protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n        item._onSuccess(response, status, headers);\n        this.onSuccessItem(item, response, status, headers);\n    }\n\n    protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n        item._onCancel(response, status, headers);\n        this.onCancelItem(item, response, status, headers);\n    }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {FileDropDirective} from './file-drop.directive';\nimport {FileSelectDirective} from './file-select.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [FileDropDirective, FileSelectDirective],\n    exports: [FileDropDirective, FileSelectDirective]\n})\nexport class FileUploadModule {\n}\n","import {Injectable} from '@angular/core';\nimport {OpenGraphData, OpenGraphImageInfo} from \"./model/OpenGraphData\";\nimport { HttpClientService } from 'inet-core';\n\ndeclare let iNet: any;\n\n@Injectable()\nexport class OpenGraphService {\n\n    private regex = /(https?:\\/\\/[^\\s]+)/;\n\n    constructor(private http: HttpClientService) {\n    }\n\n    loadPreviewLink(link: string, callback: Function) {\n        if (!link) {\n            callback(null, {\n                error: 'Link is empty'\n            });\n            return;\n        }\n        if (!this.isLink(link)) {\n            callback(null, {\n                error: 'Link invalid'\n            });\n            return;\n        }\n\n        this.http.postJSON(iNet.getUrl('opengraph/fetch'), { url: link }).subscribe({\n            next: (data: any) => {\n                callback(this.convertOpenData(data, link));\n            },\n            error: (err) => {\n                callback(null, {\n                    error: 'Response error'\n                });\n            }\n        });\n    }\n\n    isLink(link: string): boolean {\n        return this.regex.test(link);\n    }\n\n    loadImageInfo(src: string, callback: Function) {\n        let img = new Image();\n        img.onload = img.onerror = function () {\n            let imageInfo: OpenGraphImageInfo = {\n                width: img.width,\n                height: img.height\n            };\n            if (imageInfo.width && imageInfo.height) {\n                imageInfo.available = true;\n                imageInfo.landscape = imageInfo.width / imageInfo.height > 1.1;\n            }\n            callback(imageInfo);\n        };\n        img.src = src;\n    }\n\n    private convertOpenData(properties: any[], url: string): OpenGraphData | null {\n        if (properties.length < 1) {\n            return null;\n        }\n        let openData = <OpenGraphData>{};\n\n        properties.forEach((item: any) => {\n            // @ts-ignore\n          openData[item.property] = item.content;\n        });\n\n        if (!openData.url) {\n            openData.url = url;\n        }\n\n        return openData;\n    }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {OpenGraphService} from \"../open-graph.service\";\nimport {OpenGraphData, OpenGraphImageInfo} from \"../model/OpenGraphData\";\n\n@Component({\n    selector: 'app-link-preview',\n    templateUrl: './link-preview.component.html',\n    styleUrls: ['./link-preview.component.scss'],\n    standalone: false\n})\nexport class LinkPreviewComponent implements OnInit {\n    @Input() link?: string | undefined;\n    @Input() openGraphData?: OpenGraphData;\n    @Input() removable: boolean = true;\n    @Output() onLoad = new EventEmitter();\n    @Output() onDelete = new EventEmitter();\n\n    _hidden: boolean = false;\n\n    constructor(\n        private openGraphService: OpenGraphService\n    ) {\n    }\n\n    ngOnInit() {\n        if (this.link && this.openGraphService.isLink(this.link)) {\n            this.loadPreview();\n        } else if (this.openGraphData) {\n            this.loadImageInfo();\n        } else {\n            this.setHidden(true);\n        }\n    }\n\n    isPreview(): boolean {\n        return !this.isHidden() && (!!this.link || !!this.openGraphData);\n    }\n\n    setData(data: OpenGraphData) {\n        if (!data || !data.title) {\n            return;\n        }\n        this.openGraphData = data;\n        this.loadImageInfo();\n        this.setHidden(false);\n    }\n\n    getData() {\n        return this.openGraphData;\n    }\n\n    setLink(link: string) {\n        if (this.link === link) {\n            return;\n        }\n        this.link = link;\n        this.loadPreview();\n    }\n\n    removePreView() {\n        this.onDelete.emit(this);\n        this.clearData();\n    }\n\n    getDomain(url?: string): string {\n        if (!url) {\n            return '';\n        }\n        let domain = url.split('/')[2] || '';\n        return domain.replace('www.', '');\n    }\n\n    clearData() {\n        this.link = undefined;\n        this.openGraphData = undefined;\n        this.setHidden(true);\n    }\n\n    private loadPreview() {\n        this.setHidden(false);\n        if (this.link && this.openGraphService.isLink(this.link)) {\n            this.openGraphService.loadPreviewLink(this.link, (data: OpenGraphData) => {\n                if (data) {\n                    this.setData(data);\n                } else {\n                    this.setHidden(true);\n                }\n            });\n        } else {\n            this.setHidden(true);\n        }\n    }\n\n    private loadImageInfo() {\n        if (this.openGraphData && this.openGraphData.image) {\n            this.openGraphService.loadImageInfo(this.openGraphData.image, (imageInfo: OpenGraphImageInfo) => {\n                if (this.openGraphData) {\n                    this.openGraphData.imageInfo = imageInfo;\n                }\n            });\n        }\n    }\n\n    private setHidden(hidden: boolean) {\n        this._hidden = hidden;\n    }\n\n    private isHidden() {\n        return this._hidden;\n    }\n}\n","<div *ngIf=\"!_hidden\" class=\"link-preview\">\n    <div *ngIf=\"!openGraphData; else preview\">\n        <i class=\"fa fa-spinner fa-spin link-preview-spinner\"></i>\n        <div class=\"link-preview-content\">Đang tải chế độ xem trước...</div>\n    </div>\n    <ng-template #preview>\n        <div *ngIf=\"openGraphData?.imageInfo?.available\"\n             [ngClass]=\"openGraphData?.imageInfo?.landscape ? 'landscape' : 'portrait'\"\n             class=\"link-preview-image\">\n            <img [src]=\"openGraphData?.image\">\n        </div>\n        <div class=\"link-preview-content\">\n            <div class=\"link-preview-title\">{{openGraphData?.title}}</div>\n            <div class=\"link-preview-text\">{{openGraphData?.description}}</div>\n            <div class=\"link-preview-url\">{{getDomain(openGraphData?.url)}}</div>\n        </div>\n        <a [href]=\"openGraphData?.url\" target=\"_blank\" rel=\"noopener nofollow\" class=\"link-preview-anchor\"></a>\n    </ng-template>\n    <i *ngIf=\"removable\" (click)=\"removePreView()\" class=\"fa fa-times link-preview-remove\"></i>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OpenGraphService} from \"./open-graph.service\";\nimport {LinkPreviewComponent} from \"./link-preview/link-preview.component\";\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    exports: [\n        LinkPreviewComponent\n    ],\n    declarations: [\n        LinkPreviewComponent\n    ],\n    providers: [\n        OpenGraphService\n    ]\n})\nexport class OpenGraphModule {\n}\n","export class ImageUtils {\n    static getOrientation(imageBase64: string): number {\n        const view = new DataView(this.base64ToArrayBuffer(imageBase64));\n        if (view.getUint16(0, false) != 0xFFD8) {\n            return -2;\n        }\n        const length = view.byteLength;\n        let offset = 2;\n        while (offset < length) {\n            if (view.getUint16(offset + 2, false) <= 8) return -1;\n            const marker = view.getUint16(offset, false);\n            offset += 2;\n            if (marker == 0xFFE1) {\n                if (view.getUint32(offset += 2, false) != 0x45786966) {\n                    return -1;\n                }\n\n                const little = view.getUint16(offset += 6, false) == 0x4949;\n                offset += view.getUint32(offset + 4, little);\n                const tags = view.getUint16(offset, little);\n                offset += 2;\n                for (let i = 0; i < tags; i++) {\n                    if (view.getUint16(offset + (i * 12), little) == 0x0112) {\n                        return view.getUint16(offset + (i * 12) + 8, little);\n                    }\n                }\n            } else if ((marker & 0xFF00) != 0xFF00) {\n                break;\n            } else {\n                offset += view.getUint16(offset, false);\n            }\n        }\n        return -1;\n    }\n\n    private static base64ToArrayBuffer(imageBase64: string) {\n        imageBase64 = imageBase64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n        const binaryString = atob(imageBase64);\n        const len = binaryString.length;\n        const bytes = new Uint8Array(len);\n        for (let i = 0; i < len; i++) {\n            bytes[i] = binaryString.charCodeAt(i);\n        }\n        return bytes.buffer;\n    }\n\n    static resetOrientation(srcBase64: string, srcOrientation: number, callback: Function) {\n        const img = new Image();\n        img.onload = function () {\n            const width = img.width;\n            const height = img.height;\n            const canvas = document.createElement('canvas');\n            const ctx = canvas.getContext('2d');\n\n            if (ctx) {\n                if (4 < srcOrientation && srcOrientation < 9) {\n                    canvas.width = height;\n                    canvas.height = width;\n                } else {\n                    canvas.width = width;\n                    canvas.height = height;\n                }\n                ImageUtils.transformCanvas(ctx, srcOrientation, width, height);\n                ctx.drawImage(img, 0, 0);\n                callback(canvas.toDataURL());\n            } else {\n                callback(srcBase64);\n            }\n        };\n        img.src = srcBase64;\n    }\n\n    private static transformCanvas(ctx: any, orientation: number, width: number, height: number) {\n        switch (orientation) {\n            case 2:\n                ctx.transform(-1, 0, 0, 1, width, 0);\n                break;\n            case 3:\n                ctx.transform(-1, 0, 0, -1, width, height);\n                break;\n            case 4:\n                ctx.transform(1, 0, 0, -1, 0, height);\n                break;\n            case 5:\n                ctx.transform(0, 1, 1, 0, 0, 0);\n                break;\n            case 6:\n                ctx.transform(0, 1, -1, 0, height, 0);\n                break;\n            case 7:\n                ctx.transform(0, -1, -1, 0, height, width);\n                break;\n            case 8:\n                ctx.transform(0, -1, 1, 0, 0, width);\n                break;\n            default:\n                break;\n        }\n    }\n\n    /**\n    * Converts data uri to Blob. Necessary for uploading.\n    */\n    /*\n    public static convertDataURItoBlob(dataURI: string): Blob {\n        const binary = atob(dataURI.split(',')[1]);\n        const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n        const array = [];\n        for (let i = 0; i < binary.length; i++) {\n            array.push(binary.charCodeAt(i));\n        }\n        return new Blob([new Uint8Array(array)], {type: mimeString});\n    };\n    */\n}\n","import {\n    Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges,\n    ChangeDetectorRef, ChangeDetectionStrategy, NgZone\n} from '@angular/core';\nimport {DomSanitizer, SafeUrl, SafeStyle} from '@angular/platform-browser';\nimport {ImageUtils} from './image.utils';\n\ninterface MoveStart {\n    active: boolean;\n    type: string | null;\n    position: string | null;\n    x1: number;\n    y1: number;\n    x2: number;\n    y2: number;\n    clientX: number;\n    clientY: number;\n}\n\ninterface Dimensions {\n    width: number;\n    height: number;\n}\n\nexport interface CropperPosition {\n    x1: number;\n    y1: number;\n    x2: number;\n    y2: number;\n}\n\nexport interface ImageCroppedEvent {\n    base64?: string | null;\n    file?: Blob | null;\n    width: number;\n    height: number;\n    cropperPosition: CropperPosition;\n}\n\n@Component({\n    selector: 'image-cropper',\n    templateUrl: './image-cropper.component.html',\n    styleUrls: ['./image-cropper.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class ImageCropperComponent implements OnChanges {\n    private originalImage: any;\n    private moveStart?: MoveStart;\n    private maxSize?: Dimensions;\n    private originalSize?: Dimensions;\n\n    safeImgDataUrl?: SafeUrl | string;\n    marginLeft: SafeStyle | string = '0px';\n    imageVisible = false;\n\n    @Input()\n    set imageFileChanged(file: File) {\n        this.initCropper();\n        if (file) {\n            this.loadImageFile(file);\n        }\n    }\n\n    @Input()\n    set imageChangedEvent(event: any) {\n        this.initCropper();\n        if (event && event.target && event.target.files && event.target.files.length > 0) {\n            this.loadImageFile(event.target.files[0]);\n        }\n    }\n\n    @Input()\n    set imageBase64(imageBase64: string) {\n        this.initCropper();\n        this.loadBase64Image(imageBase64);\n    }\n\n    @Input() format: 'png' | 'jpeg' | 'bmp' | 'webp' | 'ico' = 'png';\n    @Input() outputType: 'base64' | 'file' | 'both' = 'both';\n    @Input() maintainAspectRatio = true;\n    @Input() aspectRatio = 1;\n    @Input() resizeToWidth = 0;\n    @Input() roundCropper = false;\n    @Input() onlyScaleDown = false;\n    @Input() imageQuality = 92;\n    @Input() autoCrop = true;\n    @Input() cropper: CropperPosition = {\n        x1: -100,\n        y1: -100,\n        x2: 10000,\n        y2: 10000\n    };\n\n    @Output() imageCropped = new EventEmitter<ImageCroppedEvent>();\n    @Output() imageCroppedBase64 = new EventEmitter<string>();\n    @Output() imageCroppedFile = new EventEmitter<Blob>();\n    @Output() imageLoaded = new EventEmitter<void>();\n    @Output() loadImageFailed = new EventEmitter<void>();\n\n    constructor(private elementRef: ElementRef,\n                private sanitizer: DomSanitizer,\n                private cd: ChangeDetectorRef,\n                private zone: NgZone) {\n        this.initCropper();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['cropper']) {\n            setTimeout(() => {\n                this.setMaxSize();\n                this.checkCropperPosition(false);\n                this.doAutoCrop();\n                this.cd.markForCheck();\n            });\n        }\n        if (changes['aspectRatio']) {\n            this.resetCropperPosition();\n        }\n    }\n\n    private initCropper() {\n        this.imageVisible = false;\n        this.originalImage = null;\n        this.safeImgDataUrl = 'data:image/png;base64,iVBORw0KGg'\n            + 'oAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAU'\n            + 'AAarVyFEAAAAASUVORK5CYII=';\n        this.moveStart = {\n            active: false,\n            type: null,\n            position: null,\n            x1: 0,\n            y1: 0,\n            x2: 0,\n            y2: 0,\n            clientX: 0,\n            clientY: 0\n        };\n        this.maxSize = {\n            width: 0,\n            height: 0\n        };\n        this.originalSize = {\n            width: 0,\n            height: 0\n        };\n        this.cropper.x1 = -100;\n        this.cropper.y1 = -100;\n        this.cropper.x2 = 10000;\n        this.cropper.y2 = 10000;\n    }\n\n    private loadImageFile(file: File) {\n        const fileReader = new FileReader();\n        fileReader.onload = (event: any) => {\n            const imageType = file.type;\n            if (this.isValidImageType(imageType)) {\n                try {\n                    this.checkExifRotationAndLoadImage(event.target.result);\n                } catch (e) {\n                    this.loadImageFailed.emit();\n                }\n            } else {\n                this.loadImageFailed.emit();\n            }\n        };\n        fileReader.readAsDataURL(file);\n    }\n\n    private isValidImageType(type: string) {\n        return type === 'image/jpeg'\n            || type === 'image/jpg'\n            || type === 'image/png'\n            || type === 'image/gif'\n    }\n\n    private checkExifRotationAndLoadImage(imageBase64: string) {\n        const exifRotation = ImageUtils.getOrientation(imageBase64);\n        if (exifRotation > 1) {\n            ImageUtils.resetOrientation(\n                imageBase64,\n                exifRotation,\n                (rotatedBase64: string) => this.loadBase64Image(rotatedBase64)\n            );\n        } else {\n            this.loadBase64Image(imageBase64);\n        }\n    }\n\n    private loadBase64Image(imageBase64: string) {\n        this.safeImgDataUrl = this.sanitizer.bypassSecurityTrustResourceUrl(imageBase64);\n        this.originalImage = new Image();\n        this.originalImage.onload = () => {\n            if(this.originalSize) {\n                this.originalSize.width = this.originalImage.width;\n                this.originalSize.height = this.originalImage.height;\n            }\n            this.cd.markForCheck();\n        };\n        this.originalImage.src = imageBase64;\n    }\n\n    imageLoadedInView(): void {\n        if (this.originalImage != null) {\n            this.imageLoaded.emit();\n            setTimeout(() => {\n                this.setMaxSize();\n                this.resetCropperPosition();\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    @HostListener('window:resize', ['$event'])\n    onResize(event: Event) {\n        this.resizeCropperPosition();\n        this.setMaxSize();\n    }\n\n    private resizeCropperPosition() {\n        const displayedImage = this.elementRef.nativeElement.querySelector('.source-image');\n        if(this.maxSize) {\n            if (this.maxSize.width !== displayedImage.offsetWidth || this.maxSize.height !== displayedImage.offsetHeight) {\n                this.cropper.x1 = this.cropper.x1 * displayedImage.offsetWidth / this.maxSize.width;\n                this.cropper.x2 = this.cropper.x2 * displayedImage.offsetWidth / this.maxSize.width;\n                this.cropper.y1 = this.cropper.y1 * displayedImage.offsetHeight / this.maxSize.height;\n                this.cropper.y2 = this.cropper.y2 * displayedImage.offsetHeight / this.maxSize.height;\n            }\n        }\n    }\n\n    private resetCropperPosition() {\n        const displayedImage = this.elementRef.nativeElement.querySelector('.source-image');\n        if (displayedImage.offsetWidth / this.aspectRatio < displayedImage.offsetHeight) {\n            this.cropper.x1 = 0;\n            this.cropper.x2 = displayedImage.offsetWidth;\n            const cropperHeight = displayedImage.offsetWidth / this.aspectRatio;\n            this.cropper.y1 = (displayedImage.offsetHeight - cropperHeight) / 2;\n            this.cropper.y2 = this.cropper.y1 + cropperHeight;\n        } else {\n            this.cropper.y1 = 0;\n            this.cropper.y2 = displayedImage.offsetHeight;\n            const cropperWidth = displayedImage.offsetHeight * this.aspectRatio;\n            this.cropper.x1 = (displayedImage.offsetWidth - cropperWidth) / 2;\n            this.cropper.x2 = this.cropper.x1 + cropperWidth;\n        }\n        this.doAutoCrop();\n        this.imageVisible = true;\n    }\n\n    startMove(event: any, moveType: string, position: string | null = null) {\n        this.moveStart = Object.assign({\n            active: true,\n            type: moveType,\n            position: position,\n            clientX: this.getClientX(event),\n            clientY: this.getClientY(event)\n        }, this.cropper);\n    }\n\n    @HostListener('document:mousemove', ['$event'])\n    @HostListener('document:touchmove', ['$event'])\n    moveImg(event: any) {\n        if(this.moveStart) {\n            if (this.moveStart.active) {\n                event.stopPropagation();\n                event.preventDefault();\n                this.setMaxSize();\n                if (this.moveStart.type === 'move') {\n                    this.move(event);\n                    this.checkCropperPosition(true);\n                } else if (this.moveStart.type === 'resize') {\n                    this.resize(event);\n                    this.checkCropperPosition(false);\n                }\n                this.cd.detectChanges();\n            }\n        }\n    }\n\n    private setMaxSize() {\n        const el = this.elementRef.nativeElement.querySelector('.source-image');\n        if(this.maxSize) {\n            this.maxSize.width = el.offsetWidth;\n            this.maxSize.height = el.offsetHeight;\n            this.marginLeft = this.sanitizer.bypassSecurityTrustStyle('calc(50% - ' + this.maxSize.width / 2 + 'px)');\n        }\n    }\n\n    private checkCropperPosition(maintainSize = false) {\n        if (this.cropper.x1 < 0) {\n            this.cropper.x2 -= maintainSize ? this.cropper.x1 : 0;\n            this.cropper.x1 = 0;\n        }\n        if (this.cropper.y1 < 0) {\n            this.cropper.y2 -= maintainSize ? this.cropper.y1 : 0;\n            this.cropper.y1 = 0;\n        }\n        if(this.maxSize) {\n            if (this.cropper.x2 > this.maxSize.width) {\n                this.cropper.x1 -= maintainSize ? (this.cropper.x2 - this.maxSize.width) : 0;\n                this.cropper.x2 = this.maxSize.width;\n            }\n            if (this.cropper.y2 > this.maxSize.height) {\n                this.cropper.y1 -= maintainSize ? (this.cropper.y2 - this.maxSize.height) : 0;\n                this.cropper.y2 = this.maxSize.height;\n            }\n        }\n    }\n\n    @HostListener('document:mouseup', ['$event'])\n    @HostListener('document:touchend', ['$event'])\n    moveStop(event: any) {\n        if (this.moveStart && this.moveStart.active) {\n            this.moveStart.active = false;\n            this.doAutoCrop();\n        }\n    }\n\n    private move(event: any) {\n        if(this.moveStart) {\n            const diffX = this.getClientX(event) - this.moveStart.clientX;\n            const diffY = this.getClientY(event) - this.moveStart.clientY;\n            this.cropper.x1 = this.moveStart.x1 + diffX;\n            this.cropper.y1 = this.moveStart.y1 + diffY;\n            this.cropper.x2 = this.moveStart.x2 + diffX;\n            this.cropper.y2 = this.moveStart.y2 + diffY;\n        }\n    }\n\n    private resize(event: any) {\n        if(this.moveStart) {\n            const diffX = this.getClientX(event) - this.moveStart.clientX;\n            const diffY = this.getClientY(event) - this.moveStart.clientY;\n            switch (this.moveStart.position) {\n                case 'left':\n                    this.cropper.x1 = Math.min(this.moveStart.x1 + diffX, this.cropper.x2 - 20);\n                    break;\n                case 'topleft':\n                    this.cropper.x1 = Math.min(this.moveStart.x1 + diffX, this.cropper.x2 - 20);\n                    this.cropper.y1 = Math.min(this.moveStart.y1 + diffY, this.cropper.y2 - 20);\n                    break;\n                case 'top':\n                    this.cropper.y1 = Math.min(this.moveStart.y1 + diffY, this.cropper.y2 - 20);\n                    break;\n                case 'topright':\n                    this.cropper.x2 = Math.max(this.moveStart.x2 + diffX, this.cropper.x1 + 20);\n                    this.cropper.y1 = Math.min(this.moveStart.y1 + diffY, this.cropper.y2 - 20);\n                    break;\n                case 'right':\n                    this.cropper.x2 = Math.max(this.moveStart.x2 + diffX, this.cropper.x1 + 20);\n                    break;\n                case 'bottomright':\n                    this.cropper.x2 = Math.max(this.moveStart.x2 + diffX, this.cropper.x1 + 20);\n                    this.cropper.y2 = Math.max(this.moveStart.y2 + diffY, this.cropper.y1 + 20);\n                    break;\n                case 'bottom':\n                    this.cropper.y2 = Math.max(this.moveStart.y2 + diffY, this.cropper.y1 + 20);\n                    break;\n                case 'bottomleft':\n                    this.cropper.x1 = Math.min(this.moveStart.x1 + diffX, this.cropper.x2 - 20);\n                    this.cropper.y2 = Math.max(this.moveStart.y2 + diffY, this.cropper.y1 + 20);\n                    break;\n            }\n        }\n\n        if (this.maintainAspectRatio) {\n            this.checkAspectRatio();\n        }\n    }\n\n    private checkAspectRatio() {\n        if(this.moveStart && this.maxSize) {\n            let overflowX = 0;\n            let overflowY = 0;\n            switch (this.moveStart.position) {\n                case 'top':\n                    this.cropper.x2 = this.cropper.x1 + (this.cropper.y2 - this.cropper.y1) * this.aspectRatio;\n                    overflowX = Math.max(this.cropper.x2 - this.maxSize.width, 0);\n                    overflowY = Math.max(0 - this.cropper.y1, 0);\n                    if (overflowX > 0 || overflowY > 0) {\n                        this.cropper.x2 -= (overflowY * this.aspectRatio) > overflowX ? (overflowY * this.aspectRatio) : overflowX;\n                        this.cropper.y1 += (overflowY * this.aspectRatio) > overflowX ? overflowY : overflowX / this.aspectRatio;\n                    }\n                    break;\n                case 'bottom':\n                    this.cropper.x2 = this.cropper.x1 + (this.cropper.y2 - this.cropper.y1) * this.aspectRatio;\n                    overflowX = Math.max(this.cropper.x2 - this.maxSize.width, 0);\n                    overflowY = Math.max(this.cropper.y2 - this.maxSize.height, 0);\n                    if (overflowX > 0 || overflowY > 0) {\n                        this.cropper.x2 -= (overflowY * this.aspectRatio) > overflowX ? (overflowY * this.aspectRatio) : overflowX;\n                        this.cropper.y2 -= (overflowY * this.aspectRatio) > overflowX ? overflowY : (overflowX / this.aspectRatio);\n                    }\n                    break;\n                case 'topleft':\n                    this.cropper.y1 = this.cropper.y2 - (this.cropper.x2 - this.cropper.x1) / this.aspectRatio;\n                    overflowX = Math.max(0 - this.cropper.x1, 0);\n                    overflowY = Math.max(0 - this.cropper.y1, 0);\n                    if (overflowX > 0 || overflowY > 0) {\n                        this.cropper.x1 += (overflowY * this.aspectRatio) > overflowX ? (overflowY * this.aspectRatio) : overflowX;\n                        this.cropper.y1 += (overflowY * this.aspectRatio) > overflowX ? overflowY : overflowX / this.aspectRatio;\n                    }\n                    break;\n                case 'topright':\n                    this.cropper.y1 = this.cropper.y2 - (this.cropper.x2 - this.cropper.x1) / this.aspectRatio;\n                    overflowX = Math.max(this.cropper.x2 - this.maxSize.width, 0);\n                    overflowY = Math.max(0 - this.cropper.y1, 0);\n                    if (overflowX > 0 || overflowY > 0) {\n                        this.cropper.x2 -= (overflowY * this.aspectRatio) > overflowX ? (overflowY * this.aspectRatio) : overflowX;\n                        this.cropper.y1 += (overflowY * this.aspectRatio) > overflowX ? overflowY : overflowX / this.aspectRatio;\n                    }\n                    break;\n                case 'right':\n                case 'bottomright':\n                    this.cropper.y2 = this.cropper.y1 + (this.cropper.x2 - this.cropper.x1) / this.aspectRatio;\n                    overflowX = Math.max(this.cropper.x2 - this.maxSize.width, 0);\n                    overflowY = Math.max(this.cropper.y2 - this.maxSize.height, 0);\n                    if (overflowX > 0 || overflowY > 0) {\n                        this.cropper.x2 -= (overflowY * this.aspectRatio) > overflowX ? (overflowY * this.aspectRatio) : overflowX;\n                        this.cropper.y2 -= (overflowY * this.aspectRatio) > overflowX ? overflowY : overflowX / this.aspectRatio;\n                    }\n                    break;\n                case 'left':\n                case 'bottomleft':\n                    this.cropper.y2 = this.cropper.y1 + (this.cropper.x2 - this.cropper.x1) / this.aspectRatio;\n                    overflowX = Math.max(0 - this.cropper.x1, 0);\n                    overflowY = Math.max(this.cropper.y2 - this.maxSize.height, 0);\n                    if (overflowX > 0 || overflowY > 0) {\n                        this.cropper.x1 += (overflowY * this.aspectRatio) > overflowX ? (overflowY * this.aspectRatio) : overflowX;\n                        this.cropper.y2 -= (overflowY * this.aspectRatio) > overflowX ? overflowY : overflowX / this.aspectRatio;\n                    }\n                    break;\n            }\n        }\n    }\n\n    private doAutoCrop() {\n        if (this.autoCrop) {\n            this.crop();\n        }\n    }\n\n    crop() {\n        const displayedImage = this.elementRef.nativeElement.querySelector('.source-image');\n        if (displayedImage && this.originalImage != null &&  this.originalSize) {\n            const ratio = this.originalSize.width / displayedImage.offsetWidth;\n            const left = Math.round(this.cropper.x1 * ratio);\n            const top = Math.round(this.cropper.y1 * ratio);\n            const width = Math.round((this.cropper.x2 - this.cropper.x1) * ratio);\n            const height = Math.round((this.cropper.y2 - this.cropper.y1) * ratio);\n            const resizeRatio = this.getResizeRatio(width);\n            const resizedWidth = Math.floor(width * resizeRatio);\n            const resizedHeight = Math.floor(height * resizeRatio);\n\n            const cropCanvas = document.createElement('canvas') as HTMLCanvasElement;\n            cropCanvas.width = resizedWidth;\n            cropCanvas.height = resizedHeight;\n\n            const ctx = cropCanvas.getContext('2d');\n            if (ctx) {\n                ctx.drawImage(this.originalImage, left, top, width, height, 0, 0, width * resizeRatio, height * resizeRatio);\n                this.cropToOutputType(cropCanvas, resizedWidth, resizedHeight);\n            }\n        }\n    }\n\n    private cropToOutputType(cropCanvas: HTMLCanvasElement, resizedWidth: number, resizedHeight: number) {\n        const output: ImageCroppedEvent = {\n            width: resizedWidth,\n            height: resizedHeight,\n            cropperPosition: Object.assign({}, this.cropper)\n        };\n        switch (this.outputType) {\n            case 'base64':\n                output.base64 = this.cropToBase64(cropCanvas);\n                this.imageCropped.emit(output);\n                break;\n            case 'file':\n                this.cropToFile(cropCanvas)\n                    .then((result: Blob | null) => {\n                        output.file = result;\n                        this.imageCropped.emit(output);\n                    });\n                break;\n            case 'both':\n                output.base64 = this.cropToBase64(cropCanvas);\n                this.cropToFile(cropCanvas)\n                    .then((result: Blob | null) => {\n                        output.file = result;\n                        this.imageCropped.emit(output);\n                    });\n                break;\n        }\n    }\n\n    private cropToBase64(cropCanvas: HTMLCanvasElement): string {\n        const imageBase64 = cropCanvas.toDataURL('image/' + this.format, this.getQuality());\n        this.imageCroppedBase64.emit(imageBase64);\n        return imageBase64;\n    }\n\n    private cropToFile(cropCanvas: HTMLCanvasElement): Promise<Blob | null> {\n        return this.getCanvasBlob(cropCanvas)\n            .then((result: Blob | null) => {\n                if (result) {\n                    this.imageCroppedFile.emit(result);\n                }\n                return result;\n            });\n    }\n\n    private getCanvasBlob(cropCanvas: HTMLCanvasElement): Promise<Blob | null> {\n        return new Promise((resolve) => {\n            cropCanvas.toBlob(\n                (result: Blob | null) => this.zone.run(() => resolve(result)),\n                'image/' + this.format,\n                this.getQuality()\n            );\n        });\n    }\n\n    private getQuality(): number {\n        return Math.min(1, Math.max(0, this.imageQuality / 100));\n    }\n\n    private getResizeRatio(width: number): number {\n        return this.resizeToWidth > 0 && (!this.onlyScaleDown || width > this.resizeToWidth)\n            ? this.resizeToWidth / width\n            : 1;\n    }\n\n    private getClientX(event: any) {\n        return event.clientX != null ? event.clientX : event.touches[0].clientX;\n    }\n\n    private getClientY(event: any) {\n        return event.clientY != null ? event.clientY : event.touches[0].clientY;\n    }\n}\n","<div>\n    <img\n        [src]=\"safeImgDataUrl\"\n        [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n        (load)=\"imageLoadedInView()\"\n        class=\"source-image\"\n    />\n    <div class=\"cropper\"\n         [class.rounded]=\"roundCropper\"\n         [style.top.px]=\"cropper.y1\"\n         [style.left.px]=\"cropper.x1\"\n         [style.width.px]=\"cropper.x2 - cropper.x1\"\n         [style.height.px]=\"cropper.y2 - cropper.y1\"\n         [style.margin-left]=\"marginLeft\"\n         [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n    >\n        <div\n            (mousedown)=\"startMove($event, 'move')\"\n            (touchstart)=\"startMove($event, 'move')\"\n            class=\"move\"\n        >&nbsp;</div>\n        <span\n            class=\"resize topleft\"\n            (mousedown)=\"startMove($event, 'resize', 'topleft')\"\n            (touchstart)=\"startMove($event, 'resize', 'topleft')\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize top\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize topright\"\n            (mousedown)=\"startMove($event, 'resize', 'topright')\"\n            (touchstart)=\"startMove($event, 'resize', 'topright')\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize right\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize bottomright\"\n            (mousedown)=\"startMove($event, 'resize', 'bottomright')\"\n            (touchstart)=\"startMove($event, 'resize', 'bottomright')\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize bottom\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize bottomleft\"\n            (mousedown)=\"startMove($event, 'resize', 'bottomleft')\"\n            (touchstart)=\"startMove($event, 'resize', 'bottomleft')\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize left\"\n        ><span class=\"square\"></span></span>\n        <span\n            class=\"resize-bar top\"\n            (mousedown)=\"startMove($event, 'resize', 'top')\"\n            (touchstart)=\"startMove($event, 'resize', 'top')\"\n        ></span>\n        <span\n            class=\"resize-bar right\"\n            (mousedown)=\"startMove($event, 'resize', 'right')\"\n            (touchstart)=\"startMove($event, 'resize', 'right')\"\n        ></span>\n        <span\n            class=\"resize-bar bottom\"\n            (mousedown)=\"startMove($event, 'resize', 'bottom')\"\n            (touchstart)=\"startMove($event, 'resize', 'bottom')\"\n        ></span>\n        <span\n            class=\"resize-bar left\"\n            (mousedown)=\"startMove($event, 'resize', 'left')\"\n            (touchstart)=\"startMove($event, 'resize', 'left')\"\n        ></span>\n    </div>\n</div>\n","import {Component, EventEmitter, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\nimport {BsModalService} from 'ngx-bootstrap/modal';\nimport {BsModalRef} from 'ngx-bootstrap/modal/bs-modal-ref.service';\nimport {ImageCroppedEvent} from \"../image-cropper.component\";\n@Component({\n    selector: 'app-cropper-avatar-dialog',\n    templateUrl: './cropper-avatar-dialog.component.html',\n    standalone: false\n})\nexport class CropperAvatarDialogComponent implements OnInit {\n\n    @ViewChild('cropperAvatarModal') cropperModal?: TemplateRef<any>;\n\n    private modalRef?: BsModalRef;\n\n    cropperReady = false;\n    imageChangedEvent: any;\n    imageCroppedEvent?: ImageCroppedEvent;\n    @Output() onCropped = new EventEmitter();\n    @Output() onHide = new EventEmitter();\n    @Output() onSelectFile = new EventEmitter();\n    private isModalShown = false;\n    constructor(private modalService: BsModalService) {}\n\n    ngOnInit() {\n        this.modalService.onShow.subscribe(() => {\n            this.isModalShown = true;\n        });\n\n        this.modalService.onHide.subscribe(() => {\n            this.isModalShown = false;\n        });\n    }\n\n    imageCropped(event: ImageCroppedEvent) {\n        this.imageCroppedEvent = event;\n    }\n\n    imageLoaded() {\n        this.cropperReady = true;\n    }\n\n    loadImageFailed() {\n        //console.log('Load failed');\n    }\n\n    setImageChangedEvent($event: any) {\n        this.imageChangedEvent = $event;\n    }\n\n    hide() {\n        if( this.modalRef) {\n            this.modalRef.hide();\n        }\n        this.setImageChangedEvent({});\n        if(this.imageCroppedEvent) {\n            this.onHide.emit(this.imageCroppedEvent.base64);\n        }\n    }\n\n    show($event: any) {\n        this.setImageChangedEvent($event);\n        if(!this.isModalShown && this.cropperModal) {\n            this.modalRef = this.modalService.show(this.cropperModal);\n        }\n    }\n\n    select($event: any) {\n        this.onSelectFile.emit($event);\n    }\n\n    submit() {\n        if(this.imageCroppedEvent) {\n            this.onCropped.emit(this.imageCroppedEvent.base64);\n        }\n        this.hide();\n    }\n\n    getImageBlob(): Blob | null | undefined {\n        return this.imageCroppedEvent ? this.imageCroppedEvent.file : null;\n    }\n\n}\n\n","<ng-template #cropperAvatarModal>\n    <div class=\"modal-header\">\n        <h5 class=\"modal-title pull-left\"><i class=\"fa fa-crop\"></i> {{'COMMON.MODULE.CROPPER.TITLE' | translate }}</h5>\n        <button type=\"button\" class=\"close pull-right\" (click)=\"hide()\">\n            <span aria-hidden=\"true\">&times;</span>\n        </button>\n    </div>\n    <div class=\"modal-body p-0\">\n        <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n                       [maintainAspectRatio]=\"true\"\n                       [aspectRatio]=\"1\" [resizeToWidth]=\"150\"\n                       [roundCropper]=\"true\" format=\"png\" outputType=\"both\"\n                       (imageCropped)=\"imageCropped($event)\"\n                       (imageLoaded)=\"imageLoaded()\"\n                       (loadImageFailed)=\"loadImageFailed()\"\n                       [style.display]=\"cropperReady ? null : 'none'\"></image-cropper>\n    </div>\n    <div class=\"modal-footer text-right\">\n        <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"select($event)\">\n            <i class=\"fa fa-picture-o\"></i> {{ 'COMMON.MODULE.CROPPER.SELECT_NEW_IMAGE'  | translate}}\n        </button>\n\n        <button type=\"button\" class=\"btn btn-success btn-sm ml-1\" (click)=\"submit()\">\n            <i class=\"fa fa-crop\"></i> {{ 'TOOLBAR.OK' | translate }}\n        </button>\n        <button type=\"button\" class=\"btn btn-danger btn-sm ml-1\" (click)=\"hide()\">\n            <i class=\"fa fa-times\"></i> {{ 'TOOLBAR.CANCEL' | translate }}\n        </button>\n    </div>\n</ng-template>","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ImageCropperComponent} from './image-cropper.component';\nimport {CropperAvatarDialogComponent} from \"./cropper-avatar/cropper-avatar-dialog.component\";\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {CoreModule} from \"inet-core\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        CoreModule,\n        TranslateModule\n    ],\n    declarations: [\n        ImageCropperComponent,\n        CropperAvatarDialogComponent\n    ],\n    exports: [\n        ImageCropperComponent,\n        CropperAvatarDialogComponent\n    ]\n})\nexport class ImageCropperModule {\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\n\n@Component({\n    selector: 'app-pagination-list',\n    templateUrl: './pagination-list.component.html',\n    styleUrls: ['./pagination-list.component.scss'],\n    standalone: false\n})\nexport class PaginationListComponent implements OnInit {\n\n    @Input() total: number = 0;\n    @Input() page: number = 0;\n    @Input() items: any;\n    @Input() limit: number= 10;\n    @Output() changePage = new EventEmitter();\n    @Output() load = new EventEmitter();\n    itemsPage: Array<any> = [];\n    startNumber = 0;\n    endNumber = 0;\n    totalPage = 0;\n\n    constructor() {\n    }\n\n    ngOnInit() {\n    }\n\n    loadPagination() {\n        setTimeout(() => {\n            this.getItemsPage();\n        }, 50);\n    }\n\n    getItemsPage() {\n        if (this.total === 0) {\n            this.startNumber = 0;\n            this.endNumber = 0;\n            this.page = 0;\n            this.itemsPage = [];\n        } else {\n            if (this.page === 0) {\n                this.page++;\n            }\n            let totalPage = this.page * this.limit;\n            this.startNumber = totalPage - this.limit + 1;\n            this.endNumber = totalPage > this.total ? this.total : (this.startNumber + this.limit - 1);\n            if (this.page === 1)\n                this.itemsPage = this.items.slice(0, totalPage > this.total ? this.total : (this.startNumber + this.limit - 1));\n            else {\n                this.itemsPage = this.items.slice(this.startNumber - 1, this.endNumber);\n            }\n        }\n        this.totalPage = Math.ceil(this.total / this.limit);\n        this.changePage.emit({\n            page: this.page,\n            items: this.itemsPage\n        });\n    }\n\n    prevPage() {\n        if (this.page > 1) {\n            this.page--;\n            this.getItemsPage();\n        }\n    }\n\n    prevFirstPage() {\n        if (this.page !== 1) {\n            this.page = 1;\n            this.getItemsPage();\n        }\n    }\n\n    nextPage() {\n        let maxPage = Math.ceil(this.total / this.limit);\n        if (this.page < maxPage) {\n            this.page++;\n            this.getItemsPage();\n        }\n    }\n\n    nextLastPage() {\n        let maxPage = Math.ceil(this.total / this.limit);\n        if (this.page !== maxPage) {\n            this.page = maxPage;\n            this.getItemsPage();\n        }\n    }\n\n    reload() {\n        this.load.emit({\n            page: this.page,\n            items: this.getItemsPage()\n        });\n    }\n\n    inputPageText() {\n        let total = Math.ceil(this.total / this.limit);\n        if (this.page < 1) {\n            this.page = 1;\n        } else if (this.page > total) {\n            this.page = total;\n        }\n        this.getItemsPage();\n    }\n}\n","<div class=\"btn-group h-100 col-sm-12 pl-0 pr-0\" role=\"group\" aria-label=\"First group\">\n    <span class=\"rounded-left title-show pl-3 pr-3\">\n    <span class=\"mr-2\">Hiển thị</span>\n        <b>{{startNumber}} - {{endNumber}} / {{total}}</b>\n    </span>\n\n    <button type=\"button\" (click)=\"prevFirstPage()\" class=\"btn btn-light border\">\n        <i class=\"fa fa-step-backward\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" (click)=\"prevPage()\" class=\"btn btn-light border\">\n        <i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i>\n    </button>\n    <input type=\"text\" class=\"text-center border-right-0 border-left-0 border\"\n           [(ngModel)]=\"page\"\n           oninput=\"this.value=this.value.replace(/[^0-9]/g,'');\"\n           (keyup.enter)=\"inputPageText()\"\n           (focusout)=\"inputPageText()\"\n           style=\"width: 36px;background: #efefef;\">\n    <button type=\"button\" (click)=\"nextPage()\" class=\"btn btn-light border\">\n        <i class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" (click)=\"nextLastPage()\" class=\"btn btn-light border\">\n        <i class=\"fa fa-step-forward\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"btn btn-light border\" (click)=\"reload()\">\n        <i class=\"fa fa-refresh\" aria-hidden=\"true\"></i>\n    </button>\n</div>\n\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PaginationListComponent} from './pagination-list/pagination-list.component';\nimport {FormsModule} from \"@angular/forms\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule\n    ],\n    declarations: [PaginationListComponent],\n    exports: [PaginationListComponent]\n})\nexport class PaginationListModule {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport { format, register } from 'timeago.js';\nregister('vi', (number: any, index: any, total_sec: any): [string, string] => {\n    // number: the timeago / timein number;\n    // index: the index of array below;\n    // total_sec: total seconds between date to be formatted and today's date;\n    // @ts-ignore\n    return [\n        ['vừa xong', 'một lúc'],\n        ['%s giây trước', '%s giây nữa'],\n        ['1 phút trước', '1 phút nữa'],\n        ['%s phút trước', '%s phút nữa'],\n        ['1 giờ trước', '1 giờ nữa'],\n        ['%s giờ trước', '%s giờ nữa'],\n        ['1 ngày trước', '1 ngày nữa'],\n        ['%s ngày trước', '%s ngày nữa'],\n        ['1 tuần trước', '1 tuần nữa'],\n        ['%s tuần trước', '%s tuần nữa'],\n        ['1 tháng trước', '1 tháng nữa'],\n        ['%s tháng trước', '%s tháng nữa'],\n        ['1 năm trước', '1 năm nữa'],\n        ['%s năm trước', '%s năm nữa']\n    ][index];\n});\n\n@Pipe({\n    name: 'timeAgo',\n    standalone: false\n})\nexport class TimeAgoPipe implements PipeTransform {\n    transform(date: any, locale?: string): string {\n        locale = locale || 'vi';\n        return format(date, locale);\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TimeAgoPipe} from \"./timeago.pipe\";\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [\n        TimeAgoPipe\n    ],\n    exports: [\n        TimeAgoPipe\n    ]\n})\nexport class DateTimeModule {\n}\n","import {Injectable} from '@angular/core';\nimport { HttpParams } from \"@angular/common/http\";\nimport {Subject} from 'rxjs';\nimport {Observable} from \"rxjs\";\nimport {CloudPluginComponent} from \"./cloud-plugin.component\";\n\ndeclare let iNet: any;\n\n@Injectable({\n    providedIn: 'root'\n})\n\nexport class PluginManagerService {\n    private loaded = false;\n    pluginManager: any = iNet.PluginManager;\n    private plugins: any = {};\n    // Observable sources\n    private subject = new Subject<any>();\n\n    constructor() {\n    }\n\n    register(pluginId: string, component: any) {\n        if(pluginId) {\n            this.plugins[pluginId] = component;\n        }\n    }\n\n    destroyById(pluginId: string) {\n        this.clearMessage(); // clear all\n        delete this.plugins[pluginId];\n    }\n\n    getPlugins() {\n        return this.plugins;\n    }\n\n    hasPluginId(pluginId: string): boolean {\n        return this.plugins.hasOwnProperty(pluginId);\n    }\n\n    getPluginById(pluginId: string): CloudPluginComponent {\n        return this.plugins[pluginId];\n    }\n\n    sendMessageTo(message: any, contentWindow: any) {\n        if (this.pluginManager) {\n            this.pluginManager.sendMessageTo(message, contentWindow);\n            // console.log('[PluginManagerService]--sendMessage--', message);\n        }\n    }\n\n    listen() {\n        if (!this.pluginManager) {\n            console.warn(`\\tCould not find PluginManager, plugins may not work as expected. Please update to the latest version of iNet Core.\n            For more info refer to: https://www.npmjs.com/package/inet-core`);\n        } else if (!this.loaded) {\n            // console.log('Listen to message from window of Unicorn');\n            //console.log('PluginManager is listening on ' + window.origin);\n            this.pluginManager.bindEvent(window, 'message', (e: any) => {\n                //console.log('[PluginManager Recieve]--message--', e);\n                this.sendMessage(e); // call to feed values\n            });\n\n            this.loaded = true;\n        }\n    }\n\n    getMessage(): Observable<any> {\n        return this.subject.asObservable();\n    }\n\n    clearMessage() {\n        this.subject.next('clear');\n    }\n\n    getContentWindowById(pluginId: string): Promise<Window | Document> {\n        return new Promise((resolve, reject) => {\n            setTimeout(() => {\n                const iframe = document.getElementById(pluginId) as any;\n                resolve(iframe ? iframe['contentWindow'] || iframe['contentDocument'] : null);\n            });\n        });\n    }\n\n    private sendMessage(message: any) {\n        // console.log('[PluginManager Send messages to component]--message--', message);\n        this.subject.next(message);\n    }\n\n    convertToHttpParams(obj: any): HttpParams | null {\n        if (!obj) {\n            return null;\n        }\n        return Object.getOwnPropertyNames(obj).reduce((p, key) => p.set(key, (obj[key] === undefined || iNet.isObject(obj[key])) ? '' : obj[key]), new HttpParams());\n    }\n\n    /*\n       loadById(pluginId: string, targetId: string, params?: any | null) {\n\n           const me = this;\n           let url = iNet.getPUrl(`common/page/plugins/${pluginId}`);\n           if (params) {\n               url = iNet.urlAppend(url, this.convertToHttpParams(params).toString());\n           }\n           const client = new XMLHttpRequest();\n           client.onload = function () {\n               if (!!this.responseText) {\n                   // console.log(this.responseText, me);\n                   me.createDynamicPluginTemplate(pluginId, this.responseText, targetId);\n               }\n           };\n           client.open('GET', url, true);\n           client.send();\n\n    }\n    */\n\n    /*\n    executeScripts(html: string) {\n        const $el = $('<template></template>').html(html);\n        const $scripts = $el.find('script');\n        for (let i = 0; i < $scripts.length; i++) {\n            const $script = $($scripts[i]);\n            const newScript = document.createElement('script');\n            if (!!$script.attr('src')) { // external scripts\n                newScript.src = $script.attr('src');\n            } else { // inline script\n                const inlineScript = document.createTextNode($script[0].innerHTML);\n                newScript.appendChild(inlineScript);\n            }\n            document.documentElement.appendChild(newScript);\n        }\n    }\n    */\n\n    testCreatePluginTemplate(pluginId: string, targetId: string) {\n        /*\n        const html = `\n            <script>console.log(\"execute inline script\");</script>\n            <b>HTML and Javascript Content</b>\n            <script src=\"http://cdn.inetcloud.vn/data/api/lib/test/test.js\"></script>\n        `;\n\n        this.createDynamicPluginTemplate(pluginId, html, targetId);\n        */\n        // this.executeScripts(html);\n    }\n\n    /*\n        createDynamicPluginTemplate(pluginId: string, html: string, targetId: string) {\n            // html = html.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '');\n            const template = document.createElement('template');\n            template.id = pluginId;\n            template.innerHTML = html;\n\n            // Using script to add scripts\n            const $el = $('<template></template>').html(html);\n            const $scripts = $el.find('script');\n            for (let i = 0; i < $scripts.length; i++) {\n                const $script = $($scripts[i]);\n                const newScript = document.createElement('script');\n                if (!!$script.attr('src')) { // external scripts\n                    newScript.src = $script.attr('src');\n                } else { // inline script\n                    const inlineScript = document.createTextNode($script[0].innerHTML);\n                    newScript.appendChild(inlineScript);\n                }\n                template.appendChild(newScript);\n            }\n\n            document.documentElement.appendChild(template);\n\n    }\n\n    private getDocumentFragmentById(pluginId: string, templateId: string): DocumentFragment {\n        const pluginDocument = document.getElementById(pluginId)['contentWindow'].document;\n        let template: DocumentFragment = null;\n        if (pluginDocument) {\n            template = pluginDocument.getElementById(templateId);\n        }\n        return template;\n    }\n\n    private addTemplateToElement(template: DocumentFragment, contentSelector: Element): DocumentFragment {\n        let shadowRoot: DocumentFragment = contentSelector.shadowRoot;\n        if (contentSelector) {\n            if (!shadowRoot) {\n                shadowRoot = contentSelector.attachShadow({mode: 'open'});\n            }\n            if (shadowRoot && template) {\n                shadowRoot['innerHTML'] = '';\n                const htmlContent = document.importNode(template['content'], true);\n                console.log('[addTemplate]--content--', template['content']);\n                shadowRoot.appendChild(htmlContent);\n            }\n        }\n       return shadowRoot;\n    }\n\n    addPluginTo(pluginId: string, templateId: string, element: Element): DocumentFragment {\n        const template = this.getDocumentFragmentById(pluginId, templateId);\n        if (template && element) {\n            return this.addTemplateToElement(template, element);\n        }\n        return null;\n    }\n    */\n}\n","import {Component, Input, OnInit, Output, EventEmitter, OnDestroy} from '@angular/core';\nimport {PluginManagerService} from \"./plugin-manager.service\";\nimport {CoreService} from \"inet-core\";\ndeclare let iNet: any;\n\n@Component({\n    selector: 'app-cloud-plugin',\n    styles: [`\n        iframe {\n            width: 100%;\n            height: 100%;\n            border: none;\n        }\n    `],\n    template: `<iframe *ngIf=\"pluginId && url\" id=\"{{pluginId}}\" [src]=\"url | safe\" (load)=\"onLoad($event)\"></iframe>`,\n    standalone: false\n})\nexport class CloudPluginComponent implements OnInit, OnDestroy {\n    @Input() pluginId?: string;\n    @Input() url?: string;\n    @Input() params: any = {};\n    @Input() autoHeight = false;\n    @Output() load = new EventEmitter<void>();\n    constructor( private coreService: CoreService,\n                 private pluginManagerService: PluginManagerService) {\n    }\n    ngOnInit() {\n        if(this.pluginId) {\n            this.pluginManagerService.register(this.pluginId, this);\n            if (!iNet.isEmptyObject(this.params)) {\n                // const __params = this.pluginManagerService.convertToHttpParams(this.params).toString();\n                const __params = this.pluginManagerService.convertToHttpParams({\n                    application: this.params['application'],\n                    secrd: this.params['queryStr']\n                });\n\n                this.url = iNet.urlAppend(this.url, __params?.toString());\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        if(this.pluginId)\n            this.pluginManagerService.destroyById(this.pluginId);\n        // console.log('[CloudPluginComponent]--ngOnDestroy--', this.pluginId);\n    }\n\n    private getContentWindow(): Promise<Window | Document> | undefined {\n        if(this.pluginId) {\n            return this.pluginManagerService.getContentWindowById(this.pluginId);\n        }\n        return  undefined;\n    }\n\n    reload() {\n        this.getContentWindow()?.then(contentWindow => {\n            if (contentWindow && this.coreService.getEnvironment().production) {\n                contentWindow['location'].reload();\n            }\n        });\n    }\n\n    resize() {\n        // console.log('[resize]');\n        if (this.autoHeight && this.coreService.getEnvironment().production) {\n            this.getContentWindow()?.then((contentWindow: any) => {\n                if (contentWindow) {\n                    const height = contentWindow['document']['body']['offsetHeight'] || contentWindow['document']['body']['scrollHeight'];\n                    if (this.pluginId && height) {\n                        const element = document.getElementById(this.pluginId);\n                        if(element) {\n                            element.style.height = `${height}px`;\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    onLoad($event: any) {\n        if (this.pluginId && document.getElementById(this.pluginId)) {\n            this.getContentWindow()?.then(contentWindow => {\n                if (contentWindow) {\n                    this.resize();\n                    // The plugin has finished loading\n                    // console.log('[onLoad]--pluginId', this.pluginId, contentWindow);\n                    // this.pluginManagerService.sendMessageTo({pluginId: this.pluginId, eventName: 'loaded'}, contentWindow);\n                    setTimeout(() => {\n                        this.pluginManagerService.sendMessageTo({pluginId: this.pluginId, eventName: 'loaded'}, contentWindow);\n                    }, 100);\n                }\n            });\n        }\n    }\n}\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {PluginManagerService} from \"./plugin-manager.service\";\nimport {Subscription} from \"rxjs\";\nimport {CoreService, NotificationService} from \"inet-core\";\n\n@Directive({\n    selector: '[appPluginToolbar]',\n    standalone: false\n})\nexport class PluginToolbarDirective implements OnInit, OnDestroy {\n    message: any;\n    subscription?: Subscription;\n    @Input() idProperty = 'toolbar'; // The name of the field, Defaults to 'toolbar'.\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2,\n        private coreService: CoreService,\n        private notifyService: NotificationService,\n        private pluginManagerService: PluginManagerService) {\n        // console.log('[PluginToolbarDirective]constructor');\n    }\n\n    ngOnInit() {\n        // console.log('[PluginToolbarDirective]ngOnInit');\n        // subscribe messages\n        this.subscription = this.pluginManagerService.getMessage().subscribe(message => {\n            if (!message) {\n                return;\n            }\n            this.message = message || {};\n            const data = this.message['data'] || {};\n            // console.log('data', data, this.getIdProperty(), data.hasOwnProperty(this.getIdProperty()));\n            if (data.hasOwnProperty(this.getIdProperty())) {\n                const toolbar = data[this.getIdProperty()] || [];\n                let pluginId = data['pluginId'];\n                // console.log('[PluginToolbarDirective]--pluginId--', pluginId);\n                let container;\n                if (this.coreService.getEnvironment().production && this.message.source) {  // production\n                    if (this.message.source.frameElement) {\n                        pluginId = this.message.source.frameElement.id;\n                        if (pluginId) {\n                            container = this.initContainerById(pluginId);\n                            if (window.origin === this.message.source.origin && this.pluginManagerService.hasPluginId(pluginId)) {\n                                this.generateToolbar(container, toolbar);\n                                this.notificationDetectByData(data);\n                            }\n                        } else {\n                            console.warn(`Could not find plugin id`);\n                        }\n                    }\n                } else { // For testing with localhost\n                    if (pluginId && this.pluginManagerService.hasPluginId(pluginId)) {\n                        container = this.initContainerById(pluginId);\n                        this.generateToolbar(container, toolbar);\n                    }\n                    this.notificationDetectByData(data);\n                }\n            }\n        });\n    }\n\n    private notificationDetectByData(data: any = {}) {\n        if (data.hasOwnProperty('notify')) {\n            const {title, type, msg} = data['notify'];\n            this.notifyService.showMessage(msg, type, title);\n        }\n    }\n\n    getIdProperty(): string {\n        return this.idProperty;\n    }\n\n    clear() {\n        this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');\n    }\n\n    initContainerById(pluginId: string): ToolbarContainer {\n        const prefix = `plugin-${this.getIdProperty()}-${pluginId}-`;\n        const containerId = prefix + 'container';\n        let element = document.getElementById(containerId);\n        let exists = false;\n        if (element) {\n            element.innerHTML = '';\n            exists = true;\n        } else {\n            element = this.renderer.createElement('span');\n            this.renderer.setProperty(element, 'id', containerId);\n            // this.renderer.setProperty(element, 'innerHTML', '');\n        }\n        return new ToolbarContainer(prefix, pluginId, element, exists);\n    }\n\n    generateToolbar(container: ToolbarContainer, buttons: any[] = []) {\n        const pluginId = container.pluginId;\n        const plugin = this.pluginManagerService.getPluginById(pluginId);\n        if (plugin && plugin.resize) {\n            plugin.resize();\n        }\n        for (const button of buttons) {\n            if (button) {\n                const buttonEl = this.renderer.createElement('button');\n                const buttonId = container.prefix + button['id'];\n                this.renderer.setProperty(buttonEl, 'id', buttonId);\n                this.renderer.addClass(buttonEl, 'btn');\n                this.renderer.addClass(buttonEl, 'btn-sm');\n                this.renderer.addClass(buttonEl, 'ml-1');\n                const classes = (button['cls'] || '').split(' ');\n                for (const cls of classes) {\n                    this.renderer.addClass(buttonEl, cls);\n                }\n                const iconEl = this.renderer.createElement('i');\n                const iconClasses = (button['iconCls'] || '').split(' ');\n                for (const iconCls of iconClasses) {\n                    this.renderer.addClass(iconEl, iconCls);\n                }\n                const text = this.renderer.createText(' ' + button['text'] || '');\n                this.renderer.listen(buttonEl, 'click', (event) => {\n                    // console.log('[' + pluginId + '] plugin call ' + button['eventName']);\n                    this.pluginManagerService.getContentWindowById(pluginId).then(contentWindow => {\n                        if (contentWindow) {\n                            this.pluginManagerService.sendMessageTo({id: buttonId, pluginId: pluginId, eventName: button['eventName']}, contentWindow);\n                        }\n                    });\n                });\n                this.renderer.appendChild(buttonEl, iconEl);\n                this.renderer.appendChild(buttonEl, text);\n                this.renderer.appendChild(container.element, buttonEl);\n            }\n        }\n        if (!container.exists) {\n            this.renderer.appendChild(this.el.nativeElement, container.element);\n        }\n    }\n\n    ngOnDestroy() {\n        this.clear();\n        // console.log('[PluginToolbarDirective]destroy');\n        // unsubscribe to ensure no memory leaks\n        if(this.subscription)\n            this.subscription.unsubscribe();\n    }\n\n}\n\nexport class ToolbarContainer {\n    pluginId: string;\n    element: any;\n    prefix: string;\n    exists: boolean;\n\n    constructor(prefix: string, pluginId: string, element: any, exists: boolean) {\n        this.prefix = prefix;\n        this.pluginId = pluginId;\n        this.element = element;\n        this.exists = exists;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CloudPluginComponent} from './cloud-plugin.component';\nimport {PluginManagerService} from './plugin-manager.service';\nimport {PluginToolbarDirective} from './plugin-toolbar.directive';\nimport {SafePipeModule} from \"../pipes/safe-pipe.module\";\nimport {CoreService, NotificationService} from \"inet-core\";\n\n@NgModule({\n    declarations: [CloudPluginComponent, PluginToolbarDirective],\n    imports: [\n        CommonModule,\n        SafePipeModule\n    ],\n    exports: [CloudPluginComponent, PluginToolbarDirective],\n    providers: [PluginManagerService, CoreService, NotificationService]\n})\nexport class PluginManagerModule {\n    constructor(private pluginManagerService: PluginManagerService) {\n        this.pluginManagerService.listen();\n    }\n}\n","import {\n  Directive,\n  ElementRef,\n  NgModule,\n} from '@angular/core';\n\n@Directive({\n    selector: '[toastContainer]',\n    exportAs: 'toastContainer',\n    standalone: false\n})\nexport class ToastContainerDirective {\n  constructor(private el: ElementRef) { }\n  getContainerElement(): HTMLElement {\n    return this.el.nativeElement;\n  }\n}\n\n@NgModule({\n  declarations: [ToastContainerDirective],\n  exports: [ToastContainerDirective],\n})\nexport class ToastContainerModule {}\n","import {\n  ComponentRef,\n  Injector,\n  ViewContainerRef\n} from '@angular/core';\n\nexport interface ComponentType<T> {\n  // eslint-disable-next-line @typescript-eslint/prefer-function-type\n  new (...args: any[]): T;\n}\n\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> {\n  private _attachedHost?: BasePortalHost;\n  /** The type of the component that will be instantiated for attachment. */\n  component: ComponentType<T>;\n\n  /**\n   * [Optional] Where the attached component should live in Angular's *logical* component tree.\n   * This is different from where the component *renders*, which is determined by the PortalHost.\n   * The origin necessary when the host is outside of the Angular application context.\n   */\n  viewContainerRef!: ViewContainerRef;\n\n  /** Injector used for the instantiation of the component. */\n  injector: Injector;\n\n  constructor(component: ComponentType<T>, injector: Injector) {\n    this.component = component;\n    this.injector = injector;\n  }\n\n  /** Attach this portal to a host. */\n  attach(host: BasePortalHost, newestOnTop: boolean): ComponentRef<any> {\n    this._attachedHost = host;\n    return host.attach(this, newestOnTop);\n  }\n\n  /** Detach this portal from its host */\n  detach() {\n    const host = this._attachedHost;\n    if (host) {\n      this._attachedHost = undefined;\n      return host.detach();\n    }\n  }\n\n  /** Whether this portal is attached to a host. */\n  get isAttached(): boolean {\n    return this._attachedHost != null;\n  }\n\n  /**\n   * Sets the PortalHost reference without performing `attach()`. This is used directly by\n   * the PortalHost when it is performing an `attach()` or `detach()`.\n   */\n  setAttachedHost(host?: BasePortalHost) {\n    this._attachedHost = host;\n  }\n}\n\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nexport abstract class BasePortalHost {\n  /** The portal currently attached to the host. */\n  private _attachedPortal?: ComponentPortal<any>;\n\n  /** A function that will permanently dispose this host. */\n  private _disposeFn?: () => void;\n\n  attach(portal: ComponentPortal<any>, newestOnTop: boolean) {\n    this._attachedPortal = portal;\n    return this.attachComponentPortal(portal, newestOnTop);\n  }\n\n  abstract attachComponentPortal<T>(portal: ComponentPortal<T>, newestOnTop: boolean): ComponentRef<T>;\n\n  detach() {\n    if (this._attachedPortal) {\n      this._attachedPortal.setAttachedHost();\n    }\n\n    this._attachedPortal = undefined;\n    if (this._disposeFn) {\n      this._disposeFn();\n      this._disposeFn = undefined;\n    }\n  }\n\n  setDisposeFn(fn: () => void) {\n    this._disposeFn = fn;\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { ComponentType } from '../portal/portal';\nimport { ToastRef } from './toast-injector';\n\nexport type ProgressAnimationType = 'increasing' | 'decreasing';\n\n/**\n * Configuration for an individual toast.\n */\nexport interface IndividualConfig {\n  /**\n   * disable both timeOut and extendedTimeOut\n   * default: false\n   */\n  disableTimeOut: boolean | 'timeOut' | 'extendedTimeOut';\n  /**\n   * toast time to live in milliseconds\n   * default: 5000\n   */\n  timeOut: number;\n  /**\n   * toast show close button\n   * default: false\n   */\n  closeButton: boolean;\n  /**\n   * time to close after a user hovers over toast\n   * default: 1000\n   */\n  extendedTimeOut: number;\n  /**\n   * show toast progress bar\n   * default: false\n   */\n  progressBar: boolean;\n\n  /**\n   * changes toast progress bar animation\n   * default: decreasing\n   */\n  progressAnimation: ProgressAnimationType;\n\n  /**\n   * render html in toast message (possibly unsafe)\n   * default: false\n   */\n  enableHtml: boolean;\n  /**\n   * css class on toast component\n   * default: ngx-toastr\n   */\n  toastClass: string;\n  /**\n   * css class on toast container\n   * default: toast-top-right\n   */\n  positionClass: string;\n  /**\n   * css class on toast title\n   * default: toast-title\n   */\n  titleClass: string;\n  /**\n   * css class on toast message\n   * default: toast-message\n   */\n  messageClass: string;\n  /**\n   * animation easing on toast\n   * default: ease-in\n   */\n  easing: string;\n  /**\n   * animation ease time on toast\n   * default: 300\n   */\n  easeTime: string | number;\n  /**\n   * clicking on toast dismisses it\n   * default: true\n   */\n  tapToDismiss: boolean;\n  /**\n   * Angular toast component to be shown\n   * default: Toast\n   */\n  toastComponent?: ComponentType<any>;\n  /**\n   * Helps show toast from a websocket or from event outside Angular\n   * default: false\n   */\n  onActivateTick: boolean;\n  /**\n   * New toast placement\n   * default: true\n   */\n  newestOnTop: boolean;\n}\n\nexport interface ToastrIconClasses {\n  error: string;\n  info: string;\n  success: string;\n  warning: string;\n  [key: string]: string;\n}\n\n/**\n * Global Toast configuration\n * Includes all IndividualConfig\n */\nexport interface GlobalConfig extends IndividualConfig {\n  /**\n   * max toasts opened. Toasts will be queued\n   * Zero is unlimited\n   * default: 0\n   */\n  maxOpened: number;\n  /**\n   * dismiss current toast when max is reached\n   * default: false\n   */\n  autoDismiss: boolean;\n  iconClasses: Partial<ToastrIconClasses>;\n  /**\n   * block duplicate messages\n   * default: false\n   */\n  preventDuplicates: boolean;\n  /**\n   * display the number of duplicate messages\n   * default: false\n   */\n  countDuplicates: boolean;\n  /**\n   * Reset toast timeout when there's a duplicate (preventDuplicates needs to be set to true)\n   * default: false\n   */\n  resetTimeoutOnDuplicate: boolean;\n  /**\n   * consider the title of a toast when checking if duplicate\n   * default: false\n   */\n  includeTitleDuplicates: boolean;\n}\n\n/**\n * Everything a toast needs to launch\n */\nexport class ToastPackage {\n  private _onTap = new Subject<void>();\n  private _onAction = new Subject<any>();\n\n  constructor(\n    public toastId: number,\n    public config: IndividualConfig,\n    public message: string | null | undefined,\n    public title: string | undefined,\n    public toastType: string,\n    public toastRef: ToastRef<any>,\n  ) {\n    this.toastRef.afterClosed().subscribe(() => {\n      this._onAction.complete();\n      this._onTap.complete();\n    });\n  }\n\n  /** Fired on click */\n  triggerTap(): void {\n    this._onTap.next();\n    if (this.config.tapToDismiss) {\n      this._onTap.complete();\n    }\n  }\n\n  onTap(): Observable<void> {\n    return this._onTap.asObservable();\n  }\n\n  /** available for use in custom toast */\n  triggerAction(action?: any): void {\n    this._onAction.next(action);\n  }\n\n  onAction(): Observable<void> {\n    return this._onAction.asObservable();\n  }\n}\n\n/* eslint-disable @typescript-eslint/no-empty-interface */\n/** @deprecated use GlobalConfig */\nexport interface GlobalToastrConfig extends GlobalConfig {}\n/** @deprecated use IndividualConfig */\nexport interface IndividualToastrConfig extends IndividualConfig {}\n/** @deprecated use IndividualConfig */\nexport interface ToastrConfig extends IndividualConfig {}\n\nexport const DefaultNoComponentGlobalConfig: GlobalConfig = {\n  maxOpened: 0,\n  autoDismiss: false,\n  newestOnTop: true,\n  preventDuplicates: false,\n  countDuplicates: false,\n  resetTimeoutOnDuplicate: false,\n  includeTitleDuplicates: false,\n\n  iconClasses: {\n    error: 'toast-error',\n    info: 'toast-info',\n    success: 'toast-success',\n    warning: 'toast-warning',\n  },\n\n  // Individual\n  closeButton: false,\n  disableTimeOut: false,\n  timeOut: 5000,\n  extendedTimeOut: 1000,\n  enableHtml: false,\n  progressBar: false,\n  toastClass: 'ngx-toastr',\n  positionClass: 'toast-top-right',\n  titleClass: 'toast-title',\n  messageClass: 'toast-message',\n  easing: 'ease-in',\n  easeTime: 300,\n  tapToDismiss: true,\n  onActivateTick: false,\n  progressAnimation: 'decreasing',\n};\n\nexport interface ToastToken {\n  default: GlobalConfig;\n  config: Partial<GlobalConfig>;\n}\n\nexport const TOAST_CONFIG = new InjectionToken<ToastToken>('ToastConfig');\n","import { Injector, InjectFlags } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '../overlay/overlay-ref';\nimport { ToastPackage } from './toastr-config';\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nexport class ToastRef<T> {\n  /** The instance of component opened into the toast. */\n  componentInstance!: T;\n\n  /** Count of duplicates of this toast */\n  private duplicatesCount = 0;\n\n  /** Subject for notifying the user that the toast has finished closing. */\n  private _afterClosed = new Subject<void>();\n  /** triggered when toast is activated */\n  private _activate = new Subject<void>();\n  /** notifies the toast that it should close before the timeout */\n  private _manualClose = new Subject<void>();\n  /** notifies the toast that it should reset the timeouts */\n  private _resetTimeout = new Subject<void>();\n  /** notifies the toast that it should count a duplicate toast */\n  private _countDuplicate = new Subject<number>();\n\n  constructor(private _overlayRef: OverlayRef) {}\n\n  manualClose() {\n    this._manualClose.next();\n    this._manualClose.complete();\n  }\n\n  manualClosed(): Observable<any> {\n    return this._manualClose.asObservable();\n  }\n\n  timeoutReset(): Observable<any> {\n    return this._resetTimeout.asObservable();\n  }\n\n  countDuplicate(): Observable<number> {\n    return this._countDuplicate.asObservable();\n  }\n\n  /**\n   * Close the toast.\n   */\n  close(): void {\n    this._overlayRef.detach();\n    this._afterClosed.next();\n    this._manualClose.next();\n    this._afterClosed.complete();\n    this._manualClose.complete();\n    this._activate.complete();\n    this._resetTimeout.complete();\n    this._countDuplicate.complete();\n  }\n\n  /** Gets an observable that is notified when the toast is finished closing. */\n  afterClosed(): Observable<any> {\n    return this._afterClosed.asObservable();\n  }\n\n  isInactive() {\n    return this._activate.isStopped;\n  }\n\n  activate() {\n    this._activate.next();\n    this._activate.complete();\n  }\n\n  /** Gets an observable that is notified when the toast has started opening. */\n  afterActivate(): Observable<any> {\n    return this._activate.asObservable();\n  }\n\n  /** Reset the toast timouts and count duplicates */\n  onDuplicate(resetTimeout: boolean, countDuplicate: boolean) {\n    if (resetTimeout) {\n      this._resetTimeout.next();\n    }\n    if (countDuplicate) {\n      this._countDuplicate.next(++this.duplicatesCount);\n    }\n  }\n}\n\n/** Custom injector type specifically for instantiating components with a toast. */\nexport class ToastInjector implements Injector {\n  constructor(\n    private _toastPackage: ToastPackage,\n    private _parentInjector: Injector\n  ) {}\n    \n  get<T>(token: any, notFoundValue?: T, flags?: any): T | ToastPackage {\n    if (token === ToastPackage) {\n      return this._toastPackage;\n    }\n    return this._parentInjector.get<T>(token, notFoundValue, flags);\n  }\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EmbeddedViewRef,\n} from '@angular/core';\nimport { BasePortalHost, ComponentPortal } from './portal';\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nexport class DomPortalHost extends BasePortalHost {\n  constructor(\n    private _hostDomElement: Element,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _appRef: ApplicationRef,\n  ) {\n    super();\n  }\n\n  /**\n   * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n   * @param portal Portal to be attached\n   */\n  attachComponentPortal<T>(\n    portal: ComponentPortal<T>,\n    newestOnTop: boolean,\n  ): ComponentRef<T> {\n    const componentFactory = this._componentFactoryResolver.resolveComponentFactory(\n      portal.component,\n    );\n    let componentRef: ComponentRef<T>;\n\n    // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n    // for the component (in terms of Angular's component tree, not rendering).\n    // When the ViewContainerRef is missing, we use the factory to create the component directly\n    // and then manually attach the ChangeDetector for that component to the application (which\n    // happens automatically when using a ViewContainer).\n    componentRef = componentFactory.create(portal.injector);\n\n    // When creating a component outside of a ViewContainer, we need to manually register\n    // its ChangeDetector with the application. This API is unfortunately not yet published\n    // in Angular core. The change detector must also be deregistered when the component\n    // is destroyed to prevent memory leaks.\n    this._appRef.attachView(componentRef.hostView);\n\n    this.setDisposeFn(() => {\n      this._appRef.detachView(componentRef.hostView);\n      componentRef.destroy();\n    });\n\n    // At this point the component has been instantiated, so we move it to the location in the DOM\n    // where we want it to be rendered.\n    if (newestOnTop) {\n      this._hostDomElement.insertBefore(\n        this._getComponentRootNode(componentRef),\n        this._hostDomElement.firstChild,\n      );\n    } else {\n      this._hostDomElement.appendChild(\n        this._getComponentRootNode(componentRef),\n      );\n    }\n\n    return componentRef;\n  }\n\n  /** Gets the root HTMLElement for an instantiated component. */\n  private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n    return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n  }\n}\n","import { ComponentRef } from '@angular/core';\nimport { BasePortalHost, ComponentPortal } from '../portal/portal';\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nexport class OverlayRef {\n  constructor(private _portalHost: BasePortalHost) {}\n\n  attach(\n    portal: ComponentPortal<any>,\n    newestOnTop: boolean = true,\n  ): ComponentRef<any> {\n    return this._portalHost.attach(portal, newestOnTop);\n  }\n\n  /**\n   * Detaches an overlay from a portal.\n   * @returns Resolves when the overlay has been detached.\n   */\n  detach() {\n    return this._portalHost.detach();\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\n\n/** Container inside which all toasts will render. */\n@Injectable({ providedIn: 'root' })\nexport class OverlayContainer implements OnDestroy {\n  protected _containerElement!: HTMLElement;\n\n  constructor(@Inject(DOCUMENT) protected _document: any) {}\n\n  ngOnDestroy() {\n    if (this._containerElement && this._containerElement.parentNode) {\n      this._containerElement.parentNode.removeChild(this._containerElement);\n    }\n  }\n\n  /**\n   * This method returns the overlay container element. It will lazily\n   * create the element the first time  it is called to facilitate using\n   * the container in non-browser environments.\n   * @returns the container element\n   */\n  getContainerElement(): HTMLElement {\n    if (!this._containerElement) {\n      this._createContainer();\n    }\n    return this._containerElement;\n  }\n\n  /**\n   * Create the overlay container element, which is simply a div\n   * with the 'cdk-overlay-container' class on the document body.\n   */\n  protected _createContainer(): void {\n    const container = this._document.createElement('div');\n    container.classList.add('overlay-container');\n    this._document.body.appendChild(container);\n    this._containerElement = container;\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { DOCUMENT } from '@angular/common';\nimport { ApplicationRef, ComponentFactoryResolver, Inject, Injectable } from '@angular/core';\n\nimport { DomPortalHost } from '../portal/dom-portal-host';\nimport { ToastContainerDirective } from '../toastr/toast.directive';\nimport { OverlayContainer } from './overlay-container';\nimport { OverlayRef } from './overlay-ref';\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\n@Injectable({ providedIn: 'root' })\nexport class Overlay {\n  // Namespace panes by overlay container\n  private _paneElements: Map<ToastContainerDirective, Record<string, HTMLElement>> = new Map();\n\n  constructor(\n    private _overlayContainer: OverlayContainer,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _appRef: ApplicationRef,\n    @Inject(DOCUMENT) private _document: any,\n  ) {}\n  /**\n   * Creates an overlay.\n   * @returns A reference to the created overlay.\n   */\n  create(positionClass?: string, overlayContainer?: ToastContainerDirective): OverlayRef {\n    // get existing pane if possible\n    return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n  }\n\n  getPaneElement(\n    positionClass: string = '',\n    overlayContainer?: ToastContainerDirective,\n  ): HTMLElement {\n    if (!this._paneElements.get(overlayContainer as ToastContainerDirective)) {\n      this._paneElements.set(overlayContainer as ToastContainerDirective, {});\n    }\n\n    if (!this._paneElements.get(overlayContainer as ToastContainerDirective)![positionClass]) {\n      this._paneElements.get(overlayContainer as ToastContainerDirective)![\n        positionClass\n      ] = this._createPaneElement(positionClass, overlayContainer);\n    }\n\n    return this._paneElements.get(overlayContainer as ToastContainerDirective)![positionClass];\n  }\n\n  /**\n   * Creates the DOM element for an overlay and appends it to the overlay container.\n   * @returns Newly-created pane element\n   */\n  private _createPaneElement(\n    positionClass: string,\n    overlayContainer?: ToastContainerDirective,\n  ): HTMLElement {\n    const pane = this._document.createElement('div');\n\n    pane.id = 'toast-container';\n    pane.classList.add(positionClass);\n    pane.classList.add('toast-container');\n\n    if (!overlayContainer) {\n      this._overlayContainer.getContainerElement().appendChild(pane);\n    } else {\n      overlayContainer.getContainerElement().appendChild(pane);\n    }\n\n    return pane;\n  }\n\n  /**\n   * Create a DomPortalHost into which the overlay content can be loaded.\n   * @param pane The DOM element to turn into a portal host.\n   * @returns A portal host for the given DOM element.\n   */\n  private _createPortalHost(pane: HTMLElement): DomPortalHost {\n    return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n  }\n\n  /**\n   * Creates an OverlayRef for an overlay in the given DOM element.\n   * @param pane DOM element for the overlay\n   */\n  private _createOverlayRef(pane: HTMLElement): OverlayRef {\n    return new OverlayRef(this._createPortalHost(pane));\n  }\n}\n","import { ComponentRef, Inject, Injectable, Injector, NgZone, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Observable } from 'rxjs';\n\nimport { Overlay } from '../overlay/overlay';\nimport { ComponentPortal } from '../portal/portal';\nimport { ToastInjector, ToastRef } from './toast-injector';\nimport { ToastContainerDirective } from './toast.directive';\nimport {\n  GlobalConfig,\n  IndividualConfig,\n  ToastPackage,\n  ToastToken,\n  TOAST_CONFIG,\n} from './toastr-config';\n\nexport interface ActiveToast<C> {\n  /** Your Toast ID. Use this to close it individually */\n  toastId: number;\n  /** the title of your toast. Stored to prevent duplicates */\n  title: string;\n  /** the message of your toast. Stored to prevent duplicates */\n  message: string;\n  /** a reference to the component see portal.ts */\n  portal: ComponentRef<C>;\n  /** a reference to your toast */\n  toastRef: ToastRef<C>;\n  /** triggered when toast is active */\n  onShown: Observable<void>;\n  /** triggered when toast is destroyed */\n  onHidden: Observable<void>;\n  /** triggered on toast click */\n  onTap: Observable<void>;\n  /** available for your use in custom toast */\n  onAction: Observable<any>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastrService {\n  toastrConfig: GlobalConfig;\n  currentlyActive = 0;\n  toasts: ActiveToast<any>[] = [];\n  overlayContainer?: ToastContainerDirective;\n  previousToastMessage: string | undefined;\n  private index = 0;\n\n  constructor(\n    @Inject(TOAST_CONFIG) token: ToastToken,\n    private overlay: Overlay,\n    private _injector: Injector,\n    private sanitizer: DomSanitizer,\n    private ngZone: NgZone,\n  ) {\n    this.toastrConfig = {\n      ...token.default,\n      ...token.config,\n    };\n    if (token.config.iconClasses) {\n      this.toastrConfig.iconClasses = {\n        ...token.default.iconClasses,\n        ...token.config.iconClasses,\n      };\n    }\n  }\n  /** show toast */\n  show(message?: string, title?: string, override: Partial<IndividualConfig> = {}, type = '') {\n    return this._preBuildNotification(type, message, title, this.applyConfig(override));\n  }\n  /** show successful toast */\n  success(message?: string, title?: string, override: Partial<IndividualConfig> = {}) {\n    const type = this.toastrConfig.iconClasses.success || '';\n    return this._preBuildNotification(type, message, title, this.applyConfig(override));\n  }\n  /** show error toast */\n  error(message?: string, title?: string, override: Partial<IndividualConfig> = {}) {\n    const type = this.toastrConfig.iconClasses.error || '';\n    return this._preBuildNotification(type, message, title, this.applyConfig(override));\n  }\n  /** show info toast */\n  info(message?: string, title?: string, override: Partial<IndividualConfig> = {}) {\n    const type = this.toastrConfig.iconClasses.info || '';\n    return this._preBuildNotification(type, message, title, this.applyConfig(override));\n  }\n  /** show warning toast */\n  warning(message?: string, title?: string, override: Partial<IndividualConfig> = {}) {\n    const type = this.toastrConfig.iconClasses.warning || '';\n    return this._preBuildNotification(type, message, title, this.applyConfig(override));\n  }\n  /**\n   * Remove all or a single toast by id\n   */\n  clear(toastId?: number) {\n    // Call every toastRef manualClose function\n    for (const toast of this.toasts) {\n      if (toastId !== undefined) {\n        if (toast.toastId === toastId) {\n          toast.toastRef.manualClose();\n          return;\n        }\n      } else {\n        toast.toastRef.manualClose();\n      }\n    }\n  }\n  /**\n   * Remove and destroy a single toast by id\n   */\n  remove(toastId: number) {\n    const found = this._findToast(toastId);\n    if (!found) {\n      return false;\n    }\n    found.activeToast.toastRef.close();\n    this.toasts.splice(found.index, 1);\n    this.currentlyActive = this.currentlyActive - 1;\n    if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n      return false;\n    }\n    if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n      const p = this.toasts[this.currentlyActive].toastRef;\n      if (!p.isInactive()) {\n        this.currentlyActive = this.currentlyActive + 1;\n        p.activate();\n      }\n    }\n    return true;\n  }\n\n  /**\n   * Determines if toast message is already shown\n   */\n  findDuplicate(title = '', message = '', resetOnDuplicate: boolean, countDuplicates: boolean) {\n    const { includeTitleDuplicates } = this.toastrConfig;\n\n    for (const toast of this.toasts) {\n      const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n      if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n        toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n        return toast;\n      }\n    }\n\n    return null;\n  }\n\n  /** create a clone of global config and apply individual settings */\n  private applyConfig(override: Partial<IndividualConfig> = {}): GlobalConfig {\n    return { ...this.toastrConfig, ...override };\n  }\n\n  /**\n   * Find toast object by id\n   */\n  private _findToast(toastId: number): { index: number; activeToast: ActiveToast<any> } | null {\n    for (let i = 0; i < this.toasts.length; i++) {\n      if (this.toasts[i].toastId === toastId) {\n        return { index: i, activeToast: this.toasts[i] };\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Determines the need to run inside angular's zone then builds the toast\n   */\n  private _preBuildNotification(\n    toastType: string,\n    message: string | undefined,\n    title: string | undefined,\n    config: GlobalConfig,\n  ): ActiveToast<any> | null {\n    if (config.onActivateTick) {\n      return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n    }\n    return this._buildNotification(toastType, message, title, config);\n  }\n\n  /**\n   * Creates and attaches toast data to component\n   * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n   */\n  private _buildNotification(\n    toastType: string,\n    message: string | undefined,\n    title: string | undefined,\n    config: GlobalConfig,\n  ): ActiveToast<any> | null {\n    if (!config.toastComponent) {\n      throw new Error('toastComponent required');\n    }\n    // max opened and auto dismiss = true\n    // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n    // a timeout at all\n    const duplicate = this.findDuplicate(\n      title,\n      message,\n      this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0,\n      this.toastrConfig.countDuplicates,\n    );\n    if (\n      ((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n      this.toastrConfig.preventDuplicates &&\n      duplicate !== null\n    ) {\n      return duplicate;\n    }\n\n    this.previousToastMessage = message;\n    let keepInactive = false;\n    if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n      keepInactive = true;\n      if (this.toastrConfig.autoDismiss) {\n        this.clear(this.toasts[0].toastId);\n      }\n    }\n\n    const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n    this.index = this.index + 1;\n    let sanitizedMessage: string | undefined | null = message;\n    if (message && config.enableHtml) {\n      sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n    }\n\n    const toastRef = new ToastRef(overlayRef);\n    const toastPackage = new ToastPackage(\n      this.index,\n      config,\n      sanitizedMessage,\n      title,\n      toastType,\n      toastRef,\n    );\n    const toastInjector = new ToastInjector(toastPackage, this._injector);\n    const component = new ComponentPortal(config.toastComponent, toastInjector);\n    const portal = overlayRef.attach(component, this.toastrConfig.newestOnTop);\n    toastRef.componentInstance = portal.instance;\n    const ins: ActiveToast<any> = {\n      toastId: this.index,\n      title: title || '',\n      message: message || '',\n      toastRef,\n      onShown: toastRef.afterActivate(),\n      onHidden: toastRef.afterClosed(),\n      onTap: toastPackage.onTap(),\n      onAction: toastPackage.onAction(),\n      portal,\n    };\n\n    if (!keepInactive) {\n      this.currentlyActive = this.currentlyActive + 1;\n      setTimeout(() => {\n        ins.toastRef.activate();\n      });\n    }\n\n    this.toasts.push(ins);\n    return ins;\n  }\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger\n} from '@angular/animations';\nimport {\n  Component,\n  HostBinding,\n  HostListener,\n  NgZone,\n  OnDestroy\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IndividualConfig, ToastPackage } from './toastr-config';\nimport { ToastrService } from './toastr.service';\n\n@Component({\n    selector: '[toast-component]',\n    styleUrls: ['./toast.component.scss'],\n    template: `\n  <button *ngIf=\"options.closeButton\" (click)=\"remove()\" class=\"toast-close-button\" aria-label=\"Close\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n  <div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n    {{ title }} <ng-container *ngIf=\"duplicatesCount\">[{{ duplicatesCount + 1 }}]</ng-container>\n  </div>\n  <div *ngIf=\"message && options.enableHtml\" role=\"alertdialog\" aria-live=\"polite\"\n    [class]=\"options.messageClass\" [innerHTML]=\"message\">\n  </div>\n  <div *ngIf=\"message && !options.enableHtml\" role=\"alertdialog\" aria-live=\"polite\"\n    [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n    {{ message }}\n  </div>\n  <div *ngIf=\"options.progressBar\">\n    <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n  </div>\n  `,\n    animations: [\n        trigger('flyInOut', [\n            state('inactive', style({ opacity: 0 })),\n            state('active', style({ opacity: 1 })),\n            state('removed', style({ opacity: 0 })),\n            transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n            transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n        ])\n    ],\n    preserveWhitespaces: false,\n    standalone: false\n})\nexport class Toast implements OnDestroy {\n  message?: string | null;\n  title?: string;\n  options: IndividualConfig;\n  duplicatesCount!: number;\n  originalTimeout: number;\n  /** width of progress bar */\n  width = -1;\n  /** a combination of toast type and options.toastClass */\n  @HostBinding('class') toastClasses = '';\n  /** controls animation */\n  @HostBinding('@flyInOut')\n  state = {\n    value: 'inactive',\n    params: {\n      easeTime: this.toastPackage.config.easeTime,\n      easing: 'ease-in'\n    }\n  };\n\n  /** hides component when waiting to be displayed */\n  @HostBinding('style.display')\n  get displayStyle(): string | undefined {\n    if (this.state.value === 'inactive') {\n      return 'none';\n    }\n\n    return;\n  }\n\n  private timeout: any;\n  private intervalId: any;\n  private hideTime!: number;\n  private sub: Subscription;\n  private sub1: Subscription;\n  private sub2: Subscription;\n  private sub3: Subscription;\n\n  constructor(\n    protected toastrService: ToastrService,\n    public toastPackage: ToastPackage,\n    protected ngZone?: NgZone\n  ) {\n    this.message = toastPackage.message;\n    this.title = toastPackage.title;\n    this.options = toastPackage.config;\n    this.originalTimeout = toastPackage.config.timeOut;\n    this.toastClasses = `${toastPackage.toastType} ${\n      toastPackage.config.toastClass\n    }`;\n    this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n      this.activateToast();\n    });\n    this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n      this.remove();\n    });\n    this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n      this.resetTimeout();\n    });\n    this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n      this.duplicatesCount = count;\n    });\n  }\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    this.sub1.unsubscribe();\n    this.sub2.unsubscribe();\n    this.sub3.unsubscribe();\n    clearInterval(this.intervalId);\n    clearTimeout(this.timeout);\n  }\n  /**\n   * activates toast and sets timeout\n   */\n  activateToast() {\n    this.state = { ...this.state, value: 'active' };\n    if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n      this.outsideTimeout(() => this.remove(), this.options.timeOut);\n      this.hideTime = new Date().getTime() + this.options.timeOut;\n      if (this.options.progressBar) {\n        this.outsideInterval(() => this.updateProgress(), 10);\n      }\n    }\n  }\n  /**\n   * updates progress bar width\n   */\n  updateProgress() {\n    if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n      return;\n    }\n    const now = new Date().getTime();\n    const remaining = this.hideTime - now;\n    this.width = (remaining / this.options.timeOut) * 100;\n    if (this.options.progressAnimation === 'increasing') {\n      this.width = 100 - this.width;\n    }\n    if (this.width <= 0) {\n      this.width = 0;\n    }\n    if (this.width >= 100) {\n      this.width = 100;\n    }\n  }\n\n  resetTimeout() {\n    clearTimeout(this.timeout);\n    clearInterval(this.intervalId);\n    this.state = { ...this.state, value: 'active' };\n\n    this.outsideTimeout(() => this.remove(), this.originalTimeout);\n    this.options.timeOut = this.originalTimeout;\n    this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n    this.width = -1;\n    if (this.options.progressBar) {\n      this.outsideInterval(() => this.updateProgress(), 10);\n    }\n  }\n\n  /**\n   * tells toastrService to remove this toast after animation time\n   */\n  remove() {\n    if (this.state.value === 'removed') {\n      return;\n    }\n    clearTimeout(this.timeout);\n    this.state = { ...this.state, value: 'removed' };\n    this.outsideTimeout(\n      () => this.toastrService.remove(this.toastPackage.toastId),\n      +this.toastPackage.config.easeTime\n    );\n  }\n  @HostListener('click')\n  tapToast() {\n    if (this.state.value === 'removed') {\n      return;\n    }\n    this.toastPackage.triggerTap();\n    if (this.options.tapToDismiss) {\n      this.remove();\n    }\n  }\n  @HostListener('mouseenter')\n  stickAround() {\n    if (this.state.value === 'removed') {\n      return;\n    }\n    clearTimeout(this.timeout);\n    this.options.timeOut = 0;\n    this.hideTime = 0;\n\n    // disable progressBar\n    clearInterval(this.intervalId);\n    this.width = 0;\n  }\n  @HostListener('mouseleave')\n  delayedHideToast() {\n    if (\n      (this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n      this.options.extendedTimeOut === 0 ||\n      this.state.value === 'removed'\n    ) {\n      return;\n    }\n    this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n    this.options.timeOut = this.options.extendedTimeOut;\n    this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n    this.width = -1;\n    if (this.options.progressBar) {\n      this.outsideInterval(() => this.updateProgress(), 10);\n    }\n  }\n\n  outsideTimeout(func: () => any, timeout: number) {\n    if (this.ngZone) {\n      this.ngZone.runOutsideAngular(\n        () =>\n          (this.timeout = setTimeout(\n            () => this.runInsideAngular(func),\n            timeout\n          ))\n      );\n    } else {\n      this.timeout = setTimeout(() => func(), timeout);\n    }\n  }\n\n  outsideInterval(func: () => any, timeout: number) {\n    if (this.ngZone) {\n      this.ngZone.runOutsideAngular(\n        () =>\n          (this.intervalId = setInterval(\n            () => this.runInsideAngular(func),\n            timeout\n          ))\n      );\n    } else {\n      this.intervalId = setInterval(() => func(), timeout);\n    }\n  }\n\n  private runInsideAngular(func: () => any) {\n    if (this.ngZone) {\n      this.ngZone.run(() => func());\n    } else {\n      func();\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { Toast } from './toast.component';\nimport {\n  DefaultNoComponentGlobalConfig,\n  GlobalConfig,\n  TOAST_CONFIG,\n} from './toastr-config';\n\nexport const DefaultGlobalConfig: GlobalConfig = {\n  ...DefaultNoComponentGlobalConfig,\n  toastComponent: Toast,\n};\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [Toast],\n    exports: [Toast]\n})\nexport class ToastrModule {\n  static forRoot(config: Partial<GlobalConfig> = {}): ModuleWithProviders<ToastrModule> {\n    return {\n      ngModule: ToastrModule,\n      providers: [\n        {\n          provide: TOAST_CONFIG,\n          useValue: {\n            default: DefaultGlobalConfig,\n            config,\n          },\n        },\n      ],\n    };\n  }\n}\n\n@NgModule({\n  imports: [CommonModule],\n})\nexport class ToastrComponentlessModule {\n  static forRoot(config: Partial<GlobalConfig> = {}): ModuleWithProviders<ToastrModule> {\n    return {\n      ngModule: ToastrModule,\n      providers: [\n        {\n          provide: TOAST_CONFIG,\n          useValue: {\n            default: DefaultNoComponentGlobalConfig,\n            config,\n          },\n        },\n      ],\n    };\n  }\n}\n","import {Injectable, ViewChild} from '@angular/core';\n\ndeclare let iNet: any;\nimport {Observable} from 'rxjs';\nimport {HttpClientService} from \"inet-core\";\nimport {ToastrService} from \"./toastr/toastr.service\";\nimport {ToastContainerDirective} from \"./toastr/toast.directive\";\n\n@Injectable()\nexport class NotifyService {\n\n    @ViewChild(ToastContainerDirective) toastContainer?: ToastContainerDirective;\n\n    private url = {\n        list: iNet.getPUrl('social/activity/notify')\n    };\n\n    constructor(private http: HttpClientService,\n                private toastService: ToastrService) {\n\n        this.toastService.overlayContainer = this.toastContainer;\n    }\n\n    count(): Observable<Object> {\n        return this.http.getJSON(this.url.list);\n    }\n\n    getMessage(params: any): Observable<Object> {\n        return this.http.getJSON(this.url.list, params);\n    }\n\n    showMessage(msg: string, type?: string, title = 'Thông báo', config: any = {}) {\n        switch (type) {\n            case 'info':\n                this.toastService.info(msg, title, config);\n                break;\n            case 'error':\n                this.toastService.error(msg, title, config);\n                break;\n            case 'warning':\n                this.toastService.warning(msg, title, config);\n                break;\n            case 'success':\n            default:\n                this.toastService.success(msg, title, config);\n        }\n    }\n\n    getNotifyService(): ToastrService {\n        return this.toastService;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NotifyService} from \"./notify.service\";\nimport {ToastrModule} from \"./toastr/toastr.module\";\nimport {NotificationService} from \"inet-core\";\nimport {ToastrService} from \"./toastr/toastr.service\";\nimport {ToastContainerModule} from \"./toastr/toast.directive\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ToastrModule.forRoot(),\n        ToastContainerModule\n    ],\n\n    declarations: [],\n    exports: [ToastrModule, ToastContainerModule],\n    providers: [NotifyService, ToastrService]\n})\nexport class NotifyModule {\n    constructor(service: NotifyService) {\n        // Override show message function\n        NotificationService.prototype.showMessage =  function (msg, type, title, config) {\n            service.showMessage(msg, type, title, config);\n        };\n    }\n}","import {\n    Component,\n    ContentChild, ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef\n} from '@angular/core';\n\n@Component({\n    selector: 'app-custom-pagination',\n    templateUrl: './custom-pagination.component.html',\n    styleUrls: ['./custom-pagination.component.scss'],\n    standalone: false\n})\n\nexport class CustomPaginationComponent implements OnInit, OnChanges {\n    @Input() pageSize = 10;\n    @Input() pageNumber = 1;\n    @Input() totalItems = 0;\n    @Input() firstLoad = true;\n    @Input() params: any = {};\n    @Input() pageRange = false;\n    @Input() numberRange = true;\n\n    @ContentChild('basicSearch') basicSearch!: TemplateRef<any>;\n    @ContentChild('advanceSearch') advanceSearch!: TemplateRef<any>;\n    @ContentChild('actionSearch') actionSearch!: TemplateRef<any>;\n\n    query: any;\n    pageCount = 0;\n    startNumber = 0;\n    endNumber = 0;\n\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onLoad = new EventEmitter<any>();\n    @Output() pagingChanged = new EventEmitter<any>();\n\n    constructor() {\n\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if ('totalItems' in changes) {\n            this.processOnTotalChanged();\n        }\n    }\n\n    ngOnInit() {\n        if (this.firstLoad) {\n            this.load();\n        } else {\n            this.getItemsPage();\n        }\n    }\n\n    computeRef() {\n        this.processOnTotalChanged(false)\n    }\n\n    changeToFirstPage(event: any) {\n        this.pageNumber = 1;\n        this.onPageChanged(event, this.pageNumber);\n    }\n\n    changeToLastPage(event: any) {\n        this.pageNumber = this.pageCount;\n        this.onPageChanged(event, this.pageNumber);\n    }\n\n    changeToNextPage(event: any) {\n        if (this.pageNumber < this.pageCount) {\n            this.pageNumber++;\n            this.onPageChanged(event, this.pageNumber);\n        }\n    }\n\n    changeToPreviousPage(event: any) {\n        if (this.pageNumber > 1) {\n            this.pageNumber--;\n            this.onPageChanged(event, this.pageNumber);\n        }\n    }\n\n    changeToCurrentPage(event: any) {\n        this.pageNumber = event.currentTarget.value;\n        if (this.pageNumber < 1) {\n            this.pageNumber = 1;\n        } else if (this.pageNumber > this.pageCount) {\n            this.pageNumber = this.pageCount;\n        }\n        event.currentTarget.value = this.pageNumber;\n\n        this.onPageChanged(event, this.pageNumber);\n    }\n\n    get maxPage() {\n        return Math.ceil(this.totalItems / this.pageSize) || 0;\n    }\n\n    getQuery(): any {\n        let query = {\n            pageNumber: (this.pageNumber < 1) ? 0 : this.pageNumber - 1,\n            pageSize: this.pageSize\n        };\n        query = { ...this.getParams(), ...query };\n        return query;\n    }\n\n    resetPage() {\n        this.pageNumber = 0;\n        this.processOnTotalChanged();\n    }\n\n    setTotalItems(v: number) {\n        this.totalItems = v;\n        this.processOnTotalChanged();\n    }\n\n    setParams(params: any = {}) {\n        this.params = params;\n    }\n\n    getParams(): any {\n        return this.params || {};\n    }\n\n    reload(event?: any) {\n        this.onLoad.emit(this.getQuery());\n    }\n\n    load() {\n        let query = { newPage: 1, pageSize: this.pageSize };\n        query = { ...this.getParams(), ...query };\n        this.processOnPaginationChanged(query);\n    }\n\n    onPageChanged(event?: Event, pageNumber?: number) {\n        this.processOnPaginationChanged({ newPage: pageNumber, pageSize: -1 });\n    }\n\n    private processOnPaginationChanged(args: any): string {\n        this.pageNumber = args.newPage;\n        this.onLoad.emit(this.getQuery());\n        this.getItemsPage();\n\n        return 'onPaginationChanged';\n    }\n\n    private processOnTotalChanged(emitEvent: boolean= true) {\n        //console.log('[pageCount, maxPage, pageNumber, firstLoad]', this.pageCount, this.maxPage, this.pageNumber)\n        let foreLoad = false;\n        if (this.maxPage !== this.pageCount) {\n            this.pageCount = this.maxPage || 0;\n        }\n        if (this.pageCount < 1) {\n            this.pageNumber = 0;\n        } else if (this.pageCount < this.pageNumber) {\n            this.pageNumber = this.pageCount;\n            foreLoad = true\n        }\n        this.query = this.getQuery();\n        this.getItemsPage();\n        if (emitEvent) {\n            this.pagingChanged.emit({\n                maxPage: this.maxPage,\n                pageNumber: this.pageNumber,\n                pageCount: this.pageCount,\n                totalItems: this.totalItems,\n                query: this.query,\n                foreLoad\n            })\n        }\n    }\n\n    private getItemsPage() {\n        if (this.totalItems < 1) {\n            this.startNumber = 0;\n            this.endNumber = 0;\n            this.pageNumber = 0;\n        } else {\n            if (this.pageNumber === 0) {\n                this.pageNumber++;\n            }\n            let totalPage = this.pageNumber * this.pageSize;\n            this.startNumber = totalPage - this.pageSize + 1;\n            let endNumber = totalPage > this.totalItems ? this.totalItems : (this.startNumber + this.pageSize - 1);\n            if (endNumber > totalPage) {\n                endNumber = totalPage\n            }\n            this.endNumber = endNumber;\n\n        }\n        this.pageCount = Math.ceil(this.totalItems / this.pageSize) || 0;\n    }\n}\n","<div class=\"pagination m-0 py-2 form-group d-flex flex-row flex-nowrap align-items-center\"\n     [ngClass]=\"{'pagination-box':!pageRange , 'pull-right':pageRange }\">\n    <ng-container [ngTemplateOutlet]=\"basicSearch\" [ngTemplateOutletContext]=\"{item: params}\"></ng-container>\n    <div class=\"align-items-end justify-content-end d-flex flex-grow-1 flex-shrink-1 flex-nowrap\">\n        <div *ngIf=\"numberRange\" class=\"ml-1 mr-2 align-self-center font-weight-bold f-12\">\n          {{startNumber}} - {{endNumber}} / {{totalItems}}\n        </div>\n        <div class=\"pagination-controllers d-flex flex-nowrap \">\n            <div class=\"pagination-pages mr-1\">\n                <button [disabled]=\"pageNumber === 1 || totalItems === 0\"\n                        class=\"btn btn-sm btn-light btn-circle pagination-firstpage\"\n                        [title]=\"'grid.firstText' | translate\" [tooltip]=\"'grid.firstText' | translate\" placement=\"bottom\"\n                        (click)=\"changeToFirstPage($event)\">\n                    <i class=\"fa fa-step-backward\"></i>\n                </button>\n                <button [disabled]=\"pageNumber === 1 || totalItems === 0\"\n                        class=\"btn btn-sm btn-light btn-circle pagination-prevpage ml-1\"\n                        [title]=\"'grid.prevText' | translate\" [tooltip]=\"'grid.prevText' | translate\"\n                        (click)=\"changeToPreviousPage($event)\" placement=\"bottom\">\n                    <i class=\"fa fa-chevron-left\"></i>\n                </button>\n                <div class=\"pagination-page ml-1\">\n                    <div class=\"input-group input-group-sm\">\n                        <input value=\"{{pageNumber}}\" [disabled]=\"totalItems === 0\"\n                                (change)=\"changeToCurrentPage($event)\" type=\"number\" class=\"form-control\" min=\"0\" step=\"1\">\n                        <div class=\"input-group-append\">\n                            <span class=\"input-group-text\"><span>/</span><span>{{pageCount}}</span></span>\n                        </div>\n                    </div>\n                </div>\n                <button [disabled]=\"pageNumber === pageCount || totalItems === 0\"\n                        class=\"btn btn-sm btn-light btn-circle pagination-nextpage ml-1\"\n                        [title]=\"'grid.nextText' | translate\" [tooltip]=\"'grid.nextText' | translate\" placement=\"bottom\"\n                        (click)=\"changeToNextPage($event)\">\n                    <i class=\"fa fa-chevron-right\"></i>\n                </button>\n                <button [disabled]=\"pageNumber === pageCount || totalItems === 0\" (click)=\"changeToLastPage($event)\"\n                        [title]=\"'grid.lastText' | translate\" [tooltip]=\"'grid.lastText' | translate\" placement=\"bottom\"\n                        class=\"btn btn-sm btn-light btn-circle pagination-lastpage ml-1\">\n                    <i class=\"fa fa-step-forward\"></i>\n                </button>\n                <button [title]=\"'grid.refreshText' | translate\" [tooltip]=\"'grid.refreshText' | translate\" (click)=\"reload($event)\" type=\"button\"\n                        class=\"btn btn-sm btn-light btn-circle pagination-reload ml-1\" placement=\"bottom\">\n                    <i class=\"fa fa-refresh\"></i>\n                </button>\n            </div>\n            <ng-template [ngTemplateOutlet]=\"actionSearch\" [ngTemplateOutletContext]=\"{item: params}\"></ng-template>\n        </div>\n    </div>\n</div>\n<div class=\"advance-search-paging\">\n    <ng-container [ngTemplateOutlet]=\"advanceSearch\" [ngTemplateOutletContext]=\"{item: params}\"></ng-container>\n</div>\n\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CustomPaginationComponent} from \"./custom-pagination.component\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {TooltipModule} from \"ngx-bootstrap/tooltip\";\n\n@NgModule({\n  declarations: [CustomPaginationComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    TranslateModule,\n    TooltipModule.forRoot()\n  ],\n  exports: [CustomPaginationComponent],\n  providers: []\n})\nexport class CustomPaginationModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\n\n/** time in which the message has to be cleared */\nconst DURATION = 7000;\n\n@Injectable()\nexport class MessageService {\n  /** variable to hold the user message */\n  private message: Subject<string> = new Subject();\n\n  constructor() { }\n\n  /** returns the message sent by the editor */\n  getMessage(): Observable<string> {\n    return this.message.asObservable();\n  }\n\n  /**\n   * sends message to the editor\n   *\n   * @param message message to be sent\n   */\n  sendMessage(message: string): void {\n    this.message.next(message);\n    this.clearMessageIn(DURATION);\n  }\n\n  /**\n   * a short interval to clear message\n   *\n   * @param milliseconds time in seconds in which the message has to be cleared\n   */\n  private clearMessageIn(milliseconds: number): void {\n    setTimeout(() => {\n      this.message.next('');\n    }, milliseconds);\n  }\n}\n","import { Component } from '@angular/core';\n\nimport { MessageService } from '../common/services/message.service';\n\n@Component({\n    selector: 'app-ngx-editor-message',\n    templateUrl: './ngx-editor-message.component.html',\n    styleUrls: ['./ngx-editor-message.component.scss'],\n    standalone: false\n})\n\nexport class NgxEditorMessageComponent {\n  /** property that holds the message to be displayed on the editor */\n  ngxMessage = undefined;\n\n  /**\n   * @param _messageService service to send message to the editor\n   */\n  constructor(private _messageService: MessageService) {\n    // @ts-ignore\n    this._messageService.getMessage().subscribe((message: string) => this.ngxMessage = message);\n  }\n\n  /**\n   * clears editor message\n   */\n  clearMessage(): void {\n    this.ngxMessage = undefined;\n  }\n}\n","<div class=\"ngx-editor-message\" *ngIf=\"ngxMessage\" (dblclick)=\"clearMessage()\">\n  {{ ngxMessage }}\n</div>\n","/**\n * enable or disable toolbar based on configuration\n *\n * @param value toolbar item\n * @param toolbar toolbar configuration object\n */\nexport function canEnableToolbarOptions(value: string, toolbar: any): boolean {\n  if (value) {\n    if (toolbar['length'] === 0) {\n      return true;\n    } else {\n      const found = toolbar.filter((array: any) => {\n        return array.indexOf(value) !== -1;\n      });\n\n      return found.length ? true : false;\n    }\n  } else {\n    return false;\n  }\n}\n\n/**\n * set editor configuration\n *\n * @param value configuration via [config] property\n * @param ngxEditorConfig default editor configuration\n * @param input direct configuration inputs via directives\n */\nexport function getEditorConfiguration(value: any, ngxEditorConfig: any, input: any): any {\n  for (const i in ngxEditorConfig) {\n    if (i) {\n      if (input[i] !== undefined) {\n        value[i] = input[i];\n      }\n      if (!value.hasOwnProperty(i)) {\n        value[i] = ngxEditorConfig[i];\n      }\n    }\n  }\n\n  return value;\n}\n\n/**\n * return vertical if the element is the resizer property is set to basic\n *\n * @param resizer type of resizer, either basic or stack\n */\nexport function canResize(resizer: string): any {\n  if (resizer === 'basic') {\n    return 'vertical';\n  }\n  return false;\n}\n\n/**\n * save selection when the editor is focussed out\n */\nexport function saveSelection(): any {\n  if (window.getSelection) {\n    const sel = window.getSelection();\n    if (sel && sel.getRangeAt && sel.rangeCount) {\n      return sel.getRangeAt(0);\n    }\n  } else if (!!document.getSelection && document.createRange) {\n    return document.createRange();\n  }\n  return null;\n}\n\n/**\n * restore selection when the editor is focussed in\n *\n * @param range saved selection when the editor is focussed out\n */\nexport function restoreSelection(range: any): boolean {\n  if (range) {\n    if (window.getSelection) {\n      const sel = window.getSelection();\n      if(sel) {\n        sel.removeAllRanges();\n        sel.addRange(range);\n      }\n      return true;\n    } else if (!!document.getSelection && range.select) {\n      range.select();\n      return true;\n    }\n    return false;\n  } else {\n    return false;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpRequest } from '@angular/common/http';\nimport * as Utils from '../utils/ngx-editor.utils';\n\n@Injectable()\nexport class CommandExecutorService {\n  /** saves the selection from the editor when focussed out */\n  savedSelection: any = undefined;\n\n  /**\n   *\n   * @param _http HTTP Client for making http requests\n   */\n  constructor(private _http: HttpClient) { }\n\n  /**\n   * executes command from the toolbar\n   *\n   * @param command command to be executed\n   */\n  execute(command: string): void {\n    if (!this.savedSelection && command !== 'enableObjectResizing') {\n      throw new Error('Range out of Editor');\n    }\n\n    if (command === 'enableObjectResizing') {\n      document.execCommand('enableObjectResizing', true);\n    }\n\n    if (command === 'blockquote') {\n      document.execCommand('formatBlock', false, 'blockquote');\n    }\n\n    if (command === 'removeBlockquote') {\n      document.execCommand('formatBlock', false, 'div');\n    }\n    // @ts-ignore\n    document.execCommand(command, false, null);\n  }\n\n  /**\n   * inserts image in the editor\n   *\n   * @param imageURI url of the image to be inserted\n   */\n  insertImage(imageURI: string): void {\n    if (this.savedSelection) {\n      if (imageURI) {\n        const restored = Utils.restoreSelection(this.savedSelection);\n        if (restored) {\n          const inserted = document.execCommand('insertImage', false, imageURI);\n          if (!inserted) {\n            throw new Error('Invalid URL');\n          }\n        }\n      }\n    } else {\n      throw new Error('Range out of the editor');\n    }\n  }\n\n  /**\n * inserts image in the editor\n *\n * @param videParams url of the image to be inserted\n */\n  insertVideo(videParams: any): void {\n    if (this.savedSelection) {\n      if (videParams) {\n        const restored = Utils.restoreSelection(this.savedSelection);\n        if (restored) {\n          if (this.isYoutubeLink(videParams.videoUrl)) {\n            const youtubeURL = '<iframe width=\"' + videParams.width + '\" height=\"' + videParams.height + '\"'\n              + 'src=\"' + videParams.videoUrl + '\"></iframe>';\n            this.insertHtml(youtubeURL);\n          } else if (this.checkTagSupportInBrowser('video')) {\n\n            if (this.isValidURL(videParams.videoUrl)) {\n              const videoSrc = '<video width=\"' + videParams.width + '\" height=\"' + videParams.height + '\"'\n                + ' controls=\"true\"><source src=\"' + videParams.videoUrl + '\"></video>';\n              this.insertHtml(videoSrc);\n            } else {\n              throw new Error('Invalid video URL');\n            }\n\n          } else {\n            throw new Error('Unable to insert video');\n          }\n        }\n      }\n    } else {\n      throw new Error('Range out of the editor');\n    }\n  }\n\n  /**\n   * checks the input url is a valid youtube URL or not\n   *\n   * @param url Youtue URL\n   */\n  private isYoutubeLink(url: string): boolean {\n    const ytRegExp = /^(http(s)?:\\/\\/)?((w){3}.)?youtu(be|.be)?(\\.com)?\\/.+/;\n    return ytRegExp.test(url);\n  }\n\n  /**\n   * check whether the string is a valid url or not\n   * @param url url\n   */\n  private isValidURL(url: string) {\n    const urlRegExp = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n    return urlRegExp.test(url);\n  }\n\n  /**\n   * uploads image to the server\n   *\n   * @param file file that has to be uploaded\n   * @param endPoint enpoint to which the image has to be uploaded\n   */\n  uploadImage(file: File, endPoint: string): any {\n    if (!endPoint) {\n      throw new Error('Image Endpoint isn`t provided or invalid');\n    }\n\n    const formData: FormData = new FormData();\n\n    if (file) {\n\n      formData.append('file', file);\n\n      const req = new HttpRequest('POST', endPoint, formData, {\n        reportProgress: true\n      });\n\n      return this._http.request(req);\n\n    } else {\n      throw new Error('Invalid Image');\n    }\n  }\n\n  /**\n   * inserts link in the editor\n   *\n   * @param params parameters that holds the information for the link\n   */\n  createLink(params: any): void {\n    if (this.savedSelection) {\n      /**\n       * check whether the saved selection contains a range or plain selection\n       */\n      if (params.urlNewTab) {\n        const newUrl = '<a href=\"' + params.urlLink + '\" target=\"_blank\">' + params.urlText + '</a>';\n\n        // @ts-ignore\n        if (document.getSelection().type !== 'Range') {\n          const restored = Utils.restoreSelection(this.savedSelection);\n          if (restored) {\n            this.insertHtml(newUrl);\n          }\n        } else {\n          throw new Error('Only new links can be inserted. You cannot edit URL`s');\n        }\n      } else {\n        const restored = Utils.restoreSelection(this.savedSelection);\n        if (restored) {\n          document.execCommand('createLink', false, params.urlLink);\n        }\n      }\n    } else {\n      throw new Error('Range out of the editor');\n    }\n  }\n\n  /**\n   * insert color either font or background\n   *\n   * @param color color to be inserted\n   * @param where where the color has to be inserted either text/background\n   */\n  insertColor(color: string, where: string): void {\n    if (this.savedSelection) {\n      const restored = Utils.restoreSelection(this.savedSelection);\n      if (restored && this.checkSelection()) {\n        if (where === 'textColor') {\n          document.execCommand('foreColor', false, color);\n        } else {\n          document.execCommand('hiliteColor', false, color);\n        }\n      }\n    } else {\n      throw new Error('Range out of the editor');\n    }\n  }\n\n  /**\n   * set email param\n   *\n   * @param param to be set\n   */\n  setEmailParam(v: string): void {\n      if (this.savedSelection) {\n          const deletedValue = this.deleteAndGetElement();\n          if (v) {\n              const restored = Utils.restoreSelection(this.savedSelection);\n              if (restored) {\n                  const paramerter = `<div><b>`+ v +`</b></div>`;\n                  this.insertHtml(paramerter);\n              }\n          }\n      }\n      else {\n          throw new Error('Range out of the editor');\n      }\n  }\n  /**\n   * set font size for text\n   *\n   * @param fontSize font-size to be set\n   */\n  setFontSize(fontSize: string): void {\n    if (this.savedSelection && this.checkSelection()) {\n      const deletedValue = this.deleteAndGetElement();\n\n      if (deletedValue) {\n        const restored = Utils.restoreSelection(this.savedSelection);\n\n        if (restored) {\n          if (this.isNumeric(fontSize)) {\n            const fontPx = '<span style=\"font-size: ' + fontSize + 'px;\">' + deletedValue + '</span>';\n            this.insertHtml(fontPx);\n          } else {\n            const fontPx = '<span style=\"font-size: ' + fontSize + ';\">' + deletedValue + '</span>';\n            this.insertHtml(fontPx);\n          }\n        }\n      }\n    } else {\n      throw new Error('Range out of the editor');\n    }\n  }\n\n  /**\n   * set font name/family for text\n   *\n   * @param fontName font-family to be set\n   */\n  setFontName(fontName: string): void {\n    if (this.savedSelection && this.checkSelection()) {\n      const deletedValue = this.deleteAndGetElement();\n\n      if (deletedValue) {\n        const restored = Utils.restoreSelection(this.savedSelection);\n\n        if (restored) {\n          if (this.isNumeric(fontName)) {\n            const fontFamily = '<span style=\"font-family: ' + fontName + 'px;\">' + deletedValue + '</span>';\n            this.insertHtml(fontFamily);\n          } else {\n            const fontFamily = '<span style=\"font-family: ' + fontName + ';\">' + deletedValue + '</span>';\n            this.insertHtml(fontFamily);\n          }\n        }\n      }\n    } else {\n      throw new Error('Range out of the editor');\n    }\n  }\n\n  /** insert HTML */\n  private insertHtml(html: string): void {\n    const isHTMLInserted = document.execCommand('insertHTML', false, html);\n    if (!isHTMLInserted) {\n      throw new Error('Unable to perform the operation');\n    }\n  }\n\n  /**\n   * check whether the value is a number or string\n   * if number return true\n   * else return false\n   */\n  private isNumeric(value: any): boolean {\n    return /^-{0,1}\\d+$/.test(value);\n  }\n\n  /** delete the text at selected range and return the value */\n  private deleteAndGetElement(): any {\n    let slectedText;\n\n    if (this.savedSelection) {\n      slectedText = this.savedSelection.toString();\n      this.savedSelection.deleteContents();\n      return slectedText;\n    }\n\n    return false;\n  }\n\n  /** check any slection is made or not */\n  private checkSelection(): any {\n    const slectedText = this.savedSelection.toString();\n\n    if (slectedText.length === 0) {\n      throw new Error('No Selection Made');\n    }\n\n    return true;\n  }\n\n  /**\n   * check tag is supported by browser or not\n   *\n   * @param tag HTML tag\n   */\n  private checkTagSupportInBrowser(tag: string): boolean {\n    return !(document.createElement(tag) instanceof HTMLUnknownElement);\n  }\n\n}\n","import {Component, Input, Output, EventEmitter, OnInit, ViewChild} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { HttpResponse } from '@angular/common/http';\nimport { PopoverConfig } from 'ngx-bootstrap/popover';\nimport { CommandExecutorService } from '../common/services/command-executor.service';\nimport { MessageService } from '../common/services/message.service';\nimport * as Utils from '../common/utils/ngx-editor.utils';\n\n@Component({\n    selector: 'app-ngx-editor-toolbar',\n    templateUrl: './ngx-editor-toolbar.component.html',\n    styleUrls: ['./ngx-editor-toolbar.component.scss'],\n    providers: [PopoverConfig],\n    standalone: false\n})\n\nexport class NgxEditorToolbarComponent implements OnInit {\n  /** holds values of the insert link form */\n  urlForm!: UntypedFormGroup;\n  /** holds values of the insert image form */\n  imageForm!: UntypedFormGroup;\n  /** holds values of the insert video form */\n  videoForm!: UntypedFormGroup;\n  /** set to false when image is being uploaded */\n  uploadComplete = true;\n  /** upload percentage */\n  updloadPercentage = 0;\n  /** set to true when the image is being uploaded */\n  isUploading = false;\n  /** which tab to active for color insetion */\n  selectedColorTab = 'textColor';\n  /** font family name */\n  fontName = '';\n  /** font size */\n  fontSize = '';\n  /** hex color code */\n  hexColor = '';\n  /** show/hide image uploader */\n  isImageUploader = false;\n  params?: string;\n\n  /**\n   * Editor configuration\n   */\n  @Input() config: any;\n  @Input() emailParams: any;\n  @ViewChild('urlPopover') urlPopover: any;\n  @ViewChild('imagePopover') imagePopover: any;\n  @ViewChild('videoPopover') videoPopover: any;\n  @ViewChild('fontSizePopover') fontSizePopover: any;\n  @ViewChild('colorPopover') colorPopover: any;\n  @ViewChild('emailParamPopover') emailParamPopover: any;\n  /**\n   * Emits an event when a toolbar button is clicked\n   */\n  @Output() execute: EventEmitter<string> = new EventEmitter<string>();\n\n  constructor(private _popOverConfig: PopoverConfig,\n    private _formBuilder: UntypedFormBuilder,\n    private _messageService: MessageService,\n    private _commandExecutorService: CommandExecutorService) {\n    this._popOverConfig.outsideClick = true;\n    this._popOverConfig.placement = 'bottom';\n    this._popOverConfig.container = 'body';\n  }\n\n  /**\n   * enable or diable toolbar based on configuration\n   *\n   * @param value name of the toolbar buttons\n   */\n  canEnableToolbarOptions(value: any): boolean {\n    return Utils.canEnableToolbarOptions(value, this.config['toolbar']);\n  }\n\n  /**\n   * triggers command from the toolbar to be executed and emits an event\n   *\n   * @param command name of the command to be executed\n   */\n  triggerCommand(command: string): void {\n    this.execute.emit(command);\n  }\n\n  /**\n   * create URL insert form\n   */\n  buildUrlForm(): void {\n    this.urlForm = this._formBuilder.group({\n      urlLink: ['', [Validators.required]],\n      urlText: ['', [Validators.required]],\n      urlNewTab: [true]\n    });\n  }\n\n  /**\n   * inserts link in the editor\n   */\n  insertLink(): void {\n    try {\n      // @ts-ignore\n      this._commandExecutorService.createLink(this.urlForm.value);\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n\n    /** reset form to default */\n    this.buildUrlForm();\n    /** close inset URL pop up */\n    this.urlPopover.hide();\n  }\n\n  /**\n   * create insert image form\n   */\n  buildImageForm(): void {\n    this.imageForm = this._formBuilder.group({\n      imageUrl: ['', [Validators.required]]\n    });\n  }\n\n  /**\n   * create insert image form\n   */\n  buildVideoForm(): void {\n    this.videoForm = this._formBuilder.group({\n      videoUrl: ['', [Validators.required]],\n      height: [''],\n      width: ['']\n    });\n  }\n\n  /**\n   * Executed when file is selected\n   *\n   * @param e onChange event\n   */\n  onFileChange(e: any): void {\n    this.uploadComplete = false;\n    this.isUploading = true;\n\n    if (e.target.files.length > 0) {\n      const file = e.target.files[0];\n\n      try {\n        this._commandExecutorService.uploadImage(file, this.config.imageEndPoint).subscribe((event: any) => {\n\n          if (event.type) {\n            this.updloadPercentage = Math.round(100 * event.loaded / event.total);\n          }\n\n          if (event instanceof HttpResponse) {\n            try {\n              this._commandExecutorService.insertImage(event.body.url);\n            } catch (error: any) {\n              this._messageService.sendMessage(error.message);\n            }\n            this.uploadComplete = true;\n            this.isUploading = false;\n          }\n        });\n      } catch (error: any) {\n        this._messageService.sendMessage(error.message);\n        this.uploadComplete = true;\n        this.isUploading = false;\n      }\n    }\n  }\n\n  /** insert image in the editor */\n  insertImage(): void {\n    try {\n      if(this.imageForm) {\n        this._commandExecutorService.insertImage(this.imageForm.value.imageUrl);\n      }\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n\n    /** reset form to default */\n    this.buildImageForm();\n    /** close inset URL pop up */\n    this.imagePopover.hide();\n  }\n\n  /** insert image in the editor */\n  insertVideo(): void {\n    try {\n      if(this.videoForm) {\n        this._commandExecutorService.insertVideo(this.videoForm.value);\n      }\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n\n    /** reset form to default */\n    this.buildVideoForm();\n    /** close inset URL pop up */\n    this.videoPopover.hide();\n  }\n\n  /** inser text/background color */\n  insertColor(color: string, where: string): void {\n    try {\n      this._commandExecutorService.insertColor(color, where);\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n\n    this.colorPopover.hide();\n  }\n  /** set email param */\n  setEmailParam(email: string): void {\n      try {\n          this._commandExecutorService.setEmailParam(email);\n      } catch (error: any) {\n          this._messageService.sendMessage(error.message);\n      }\n      if(this.emailParamPopover) {\n        this.emailParamPopover.hide();\n      }\n  }\n\n\n  /** set font size */\n  setFontSize(fontSize: string): void {\n    try {\n      this._commandExecutorService.setFontSize(fontSize);\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n\n    this.fontSizePopover.hide();\n  }\n\n  /** set font Name/family */\n  setFontName(fontName: string): void {\n    try {\n      this._commandExecutorService.setFontName(fontName);\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n\n    this.fontSizePopover.hide();\n  }\n\n  ngOnInit() {\n    this.buildUrlForm();\n    this.buildImageForm();\n    this.buildVideoForm();\n  }\n\n  mouseEnter(item: any) {\n    this.params = item.parameter;\n  }\n\n  mouseLeave() {\n    this.params = '';\n  }\n\n}\n","<div class=\"ngx-toolbar\" *ngIf=\"config['showToolbar']\">\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('bold')\" (click)=\"triggerCommand('bold')\"\n      title=\"Bold\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-bold\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('italic')\" (click)=\"triggerCommand('italic')\"\n      title=\"Italic\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-italic\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('underline')\" (click)=\"triggerCommand('underline')\"\n      title=\"Underline\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-underline\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('strikeThrough')\" (click)=\"triggerCommand('strikeThrough')\"\n      title=\"Strikethrough\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-strikethrough\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('superscript')\" (click)=\"triggerCommand('superscript')\"\n      title=\"Superscript\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-superscript\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('subscript')\" (click)=\"triggerCommand('subscript')\"\n      title=\"Subscript\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-subscript\" aria-hidden=\"true\"></i>\n    </button>\n  </div>\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('fontName')\" (click)=\"fontName = ''\"\n      title=\"Font Family\" [popover]=\"fontNameTemplate\" #fontNamePopover=\"bs-popover\" containerClass=\"ngxePopover\"\n      [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-font\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('fontSize')\" (click)=\"fontSize = ''\"\n      title=\"Font Size\" [popover]=\"fontSizeTemplate\" #fontSizePopover=\"bs-popover\" containerClass=\"ngxePopover\"\n      [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-text-height\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('color')\" (click)=\"hexColor = ''\"\n      title=\"Color Picker\" [popover]=\"insertColorTemplate\" #colorPopover=\"bs-popover\" containerClass=\"ngxePopover\"\n      [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-tint\" aria-hidden=\"true\"></i>\n    </button>\n  </div>\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('justifyLeft')\" (click)=\"triggerCommand('justifyLeft')\"\n      title=\"Justify Left\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-align-left\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('justifyCenter')\" (click)=\"triggerCommand('justifyCenter')\"\n      title=\"Justify Center\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-align-center\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('justifyRight')\" (click)=\"triggerCommand('justifyRight')\"\n      title=\"Justify Right\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-align-right\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('justifyFull')\" (click)=\"triggerCommand('justifyFull')\"\n      title=\"Justify\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-align-justify\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('indent')\" (click)=\"triggerCommand('indent')\"\n      title=\"Indent\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-indent\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('outdent')\" (click)=\"triggerCommand('outdent')\"\n      title=\"Outdent\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-outdent\" aria-hidden=\"true\"></i>\n    </button>\n  </div>\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('cut')\" (click)=\"triggerCommand('cut')\"\n      title=\"Cut\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-scissors\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('copy')\" (click)=\"triggerCommand('copy')\"\n      title=\"Copy\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-files-o\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('delete')\" (click)=\"triggerCommand('delete')\"\n      title=\"Delete\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-trash\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('removeFormat')\" (click)=\"triggerCommand('removeFormat')\"\n      title=\"Clear Formatting\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-eraser\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('undo')\" (click)=\"triggerCommand('undo')\"\n      title=\"Undo\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-undo\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('redo')\" (click)=\"triggerCommand('redo')\"\n      title=\"Redo\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-repeat\" aria-hidden=\"true\"></i>\n    </button>\n  </div>\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('paragraph')\" (click)=\"triggerCommand('insertParagraph')\"\n      title=\"Paragraph\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-paragraph\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('blockquote')\" (click)=\"triggerCommand('blockquote')\"\n      title=\"Blockquote\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-quote-left\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('removeBlockquote')\" (click)=\"triggerCommand('removeBlockquote')\"\n      title=\"Remove Blockquote\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-quote-right\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('horizontalLine')\" (click)=\"triggerCommand('insertHorizontalRule')\"\n      title=\"Horizontal Line\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('unorderedList')\" (click)=\"triggerCommand('insertUnorderedList')\"\n      title=\"Unordered List\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-list-ul\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('orderedList')\" (click)=\"triggerCommand('insertOrderedList')\"\n      title=\"Ordered List\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-list-ol\" aria-hidden=\"true\"></i>\n    </button>\n  </div>\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('link')\" (click)=\"buildUrlForm()\"\n      [popover]=\"insertLinkTemplate\" title=\"Insert Link\" #urlPopover=\"bs-popover\" containerClass=\"ngxePopover\"\n      [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-link\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('unlink')\" (click)=\"triggerCommand('unlink')\"\n      title=\"Unlink\" [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-chain-broken\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('image')\" (click)=\"buildImageForm()\"\n      title=\"Insert Image\" [popover]=\"insertImageTemplate\" #imagePopover=\"bs-popover\" containerClass=\"ngxePopover\"\n      [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-picture-o\" aria-hidden=\"true\"></i>\n    </button>\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('video')\" (click)=\"buildVideoForm()\"\n      title=\"Insert Video\" [popover]=\"insertVideoTemplate\" #videoPopover=\"bs-popover\" containerClass=\"ngxePopover\"\n      [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i>\n    </button>\n  </div>\n  <div class=\"ngx-toolbar-set\">\n    <button type=\"button\" class=\"ngx-editor-button\" *ngIf=\"canEnableToolbarOptions('emailParam')\" (click)=\"triggerCommand('emailParam')\"\n            title=\"Chèn tham số cấu hình\" [popover]=\"emailParamTemplate\" #emailParamPopover=\"bs-popover\" containerClass=\"ngxePopover\"\n            [disabled]=\"!config['enableToolbar']\">\n      <i class=\"fa fa-usd\" aria-hidden=\"true\"></i>&nbsp;Tham số cấu hình\n    </button>\n  </div>\n</div>\n\n\n<!-- URL Popover template -->\n<ng-template #emailParamTemplate>\n  <div class=\"ngxe-popover extra-gt p-0\">\n    <ul class=\"list-group custom-textarea \">\n      <li (mouseleave)=\"mouseLeave()\" (mouseenter)=\"mouseEnter(item)\" *ngFor=\"let item of emailParams\"\n          class=\"list-group-item  border-0 custom-pointer p-1 pb-2\" (click)=\"setEmailParam(item.parameter)\" data-toggle=\"tooltip\" [title]=\"item.description\">\n        <b>{{item.parameter}}</b> = {{item.description}}</li>\n    </ul>\n  </div>\n</ng-template>\n\n\n<!-- URL Popover template -->\n<ng-template #insertLinkTemplate>\n  <div class=\"ngxe-popover extra-gt\">\n    <form [formGroup]=\"urlForm\" (ngSubmit)=\"urlForm.valid && insertLink()\" autocomplete=\"off\">\n      <div class=\"form-group\">\n        <label for=\"urlInput\" class=\"small\">URL</label>\n        <input type=\"text\" class=\"form-control-sm\" id=\"URLInput\" placeholder=\"URL\" formControlName=\"urlLink\" required>\n      </div>\n      <div class=\"form-group\">\n        <label for=\"urlTextInput\" class=\"small\">Text</label>\n        <input type=\"text\" class=\"form-control-sm\" id=\"urlTextInput\" placeholder=\"Text\" formControlName=\"urlText\"\n          required>\n      </div>\n      <div class=\"form-check\">\n        <input type=\"checkbox\" class=\"form-check-input\" id=\"urlNewTab\" formControlName=\"urlNewTab\">\n        <label class=\"form-check-label\" for=\"urlNewTab\">Open in new tab</label>\n      </div>\n      <button type=\"submit\" class=\"btn-primary btn-sm btn\">Submit</button>\n    </form>\n  </div>\n</ng-template>\n\n<!-- Image Uploader Popover template -->\n<ng-template #insertImageTemplate>\n  <div class=\"ngxe-popover imgc-ctnr\">\n    <div class=\"imgc-topbar btn-ctnr\">\n      <button type=\"button\" class=\"btn\" [ngClass]=\"{active: isImageUploader}\" (click)=\"isImageUploader = true\">\n        <i class=\"fa fa-upload\"></i>\n      </button>\n      <button type=\"button\" class=\"btn\" [ngClass]=\"{active: !isImageUploader}\" (click)=\"isImageUploader = false\">\n        <i class=\"fa fa-link\"></i>\n      </button>\n    </div>\n    <div class=\"imgc-ctnt is-image\">\n      <div *ngIf=\"isImageUploader; else insertImageLink\"> </div>\n      <div *ngIf=\"!isImageUploader; else imageUploder\"> </div>\n      <ng-template #imageUploder>\n        <div class=\"ngx-insert-img-ph\">\n          <p *ngIf=\"uploadComplete\">Choose Image</p>\n          <p *ngIf=\"!uploadComplete\">\n            <span>Uploading Image</span>\n            <br>\n            <span>{{ updloadPercentage }} %</span>\n          </p>\n          <div class=\"ngxe-img-upl-frm\">\n            <input type=\"file\" (change)=\"onFileChange($event)\" accept=\"image/*\" [disabled]=\"isUploading\" [style.cursor]=\"isUploading ? 'not-allowed': 'allowed'\">\n          </div>\n        </div>\n      </ng-template>\n      <ng-template #insertImageLink>\n        <form class=\"extra-gt\" [formGroup]=\"imageForm\" (ngSubmit)=\"imageForm.valid && insertImage()\" autocomplete=\"off\">\n          <div class=\"form-group\">\n            <label for=\"imageURLInput\" class=\"small\">URL</label>\n            <input type=\"text\" class=\"form-control-sm\" id=\"imageURLInput\" placeholder=\"URL\" formControlName=\"imageUrl\"\n              required>\n          </div>\n          <button type=\"submit\" class=\"btn-primary btn-sm btn\">Submit</button>\n        </form>\n      </ng-template>\n      <div class=\"progress\" *ngIf=\"!uploadComplete\">\n        <div class=\"progress-bar progress-bar-striped progress-bar-animated bg-success\" [ngClass]=\"{'bg-danger': updloadPercentage<20, 'bg-warning': updloadPercentage<50, 'bg-success': updloadPercentage>=100}\"\n          [style.width.%]=\"updloadPercentage\"></div>\n      </div>\n    </div>\n  </div>\n</ng-template>\n\n\n<!-- Insert Video Popover template -->\n<ng-template #insertVideoTemplate>\n  <div class=\"ngxe-popover imgc-ctnr\">\n    <div class=\"imgc-topbar btn-ctnr\">\n      <button type=\"button\" class=\"btn active\">\n        <i class=\"fa fa-link\"></i>\n      </button>\n\n    </div>\n    <div class=\"imgc-ctnt is-image\">\n      <form class=\"extra-gt\" [formGroup]=\"videoForm\" (ngSubmit)=\"videoForm.valid && insertVideo()\" autocomplete=\"off\">\n        <div class=\"form-group\">\n          <label for=\"videoURLInput\" class=\"small\">URL</label>\n          <input type=\"text\" class=\"form-control-sm\" id=\"videoURLInput\" placeholder=\"URL\" formControlName=\"videoUrl\"\n            required>\n        </div>\n        <div class=\"row form-group\">\n          <div class=\"col\">\n            <input type=\"text\" class=\"form-control-sm\" formControlName=\"height\" placeholder=\"height (px)\" pattern=\"[0-9]\">\n          </div>\n          <div class=\"col\">\n            <input type=\"text\" class=\"form-control-sm\" formControlName=\"width\" placeholder=\"width (px)\" pattern=\"[0-9]\">\n          </div>\n          <label class=\"small\">Height/Width</label>\n        </div>\n        <button type=\"submit\" class=\"btn-primary btn-sm btn\">Submit</button>\n      </form>\n    </div>\n  </div>\n</ng-template>\n\n<!-- Insert color template -->\n<ng-template #insertColorTemplate>\n  <div class=\"ngxe-popover imgc-ctnr\">\n    <div class=\"imgc-topbar two-tabs\">\n      <span (click)=\"selectedColorTab ='textColor'\" [ngClass]=\"{active: selectedColorTab ==='textColor'}\">Text</span>\n      <span (click)=\"selectedColorTab ='backgroundColor'\" [ngClass]=\"{active: selectedColorTab ==='backgroundColor'}\">Background</span>\n    </div>\n    <div class=\"imgc-ctnt is-color extra-gt1\">\n      <form autocomplete=\"off\">\n        <div class=\"form-group\">\n          <label for=\"hexInput\" class=\"small\">Hex Color</label>\n          <input type=\"text\" class=\"form-control-sm\" id=\"hexInput\" name=\"hexInput\" maxlength=\"7\" placeholder=\"HEX Color\"\n            [(ngModel)]=\"hexColor\" required>\n        </div>\n        <button type=\"button\" class=\"btn-primary btn-sm btn\" (click)=\"insertColor(hexColor, selectedColorTab)\">Submit</button>\n      </form>\n    </div>\n  </div>\n</ng-template>\n\n<!-- font size template -->\n<ng-template #fontSizeTemplate>\n  <div class=\"ngxe-popover extra-gt1\">\n    <form autocomplete=\"off\">\n      <div class=\"form-group\">\n        <label for=\"fontSize\" class=\"small\">Font Size</label>\n        <input type=\"text\" class=\"form-control-sm\" id=\"fontSize\" name=\"fontSize\" placeholder=\"Font size in px/rem\"\n          [(ngModel)]=\"fontSize\" required>\n      </div>\n      <button type=\"button\" class=\"btn-primary btn-sm btn\" (click)=\"setFontSize(fontSize)\">Submit</button>\n    </form>\n  </div>\n</ng-template>\n\n<!-- font family/name template -->\n<ng-template #fontNameTemplate>\n  <div class=\"ngxe-popover extra-gt1\">\n    <form autocomplete=\"off\">\n      <div class=\"form-group\">\n        <label for=\"fontSize\" class=\"small\">Font Size</label>\n        <input type=\"text\" class=\"form-control-sm\" id=\"fontName\" name=\"fontName\" placeholder=\"Ex: 'Times New Roman', Times, serif\"\n          [(ngModel)]=\"fontName\" required>\n      </div>\n      <button type=\"button\" class=\"btn-primary btn-sm btn\" (click)=\"setFontName(fontName)\">Submit</button>\n    </form>\n  </div>\n</ng-template>\n","import {Component, EventEmitter, HostListener, Output} from '@angular/core';\n@Component({\n    selector: 'app-ngx-grippie',\n    templateUrl: './ngx-grippie.component.html',\n    styleUrls: ['./ngx-grippie.component.scss'],\n    standalone: false\n})\n\nexport class NgxGrippieComponent {\n  /** height of the editor */\n  height: number= 0;\n  /** previous value befor resizing the editor */\n  oldY = 0;\n  /** set to true on mousedown event */\n  grabber = false;\n\n  @Output() resizeTextArea = new EventEmitter<number>();\n\n  /**\n   * Constructor\n   *\n   * @param _editorComponent Editor component\n   */\n  constructor() { }\n\n  /**\n   *\n   * @param event Mouseevent\n   *\n   * Update the height of the editor when the grabber is dragged\n   */\n  @HostListener('document:mousemove', ['$event']) onMouseMove(event: MouseEvent) {\n    if (!this.grabber) {\n      return;\n    }\n    this.resizeTextArea.emit(event.clientY - this.oldY);\n    this.oldY = event.clientY;\n  }\n\n  /**\n   *\n   * @param event Mouseevent\n   *\n   * set the grabber to false on mouse up action\n   */\n  @HostListener('document:mouseup', ['$event']) onMouseUp(event: MouseEvent) {\n    this.grabber = false;\n  }\n\n  @HostListener('mousedown', ['$event']) onResize(event: MouseEvent, resizer?: Function) {\n    this.grabber = true;\n    this.oldY = event.clientY;\n    event.preventDefault();\n  }\n\n}\n","<div class=\"ngx-editor-grippie\">\n  <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"isolation:isolate\" viewBox=\"651.6 235 26 5\"\n    width=\"26\" height=\"5\">\n    <g id=\"sprites\">\n      <path d=\" M 651.6 235 L 653.6 235 L 653.6 237 L 651.6 237 M 654.6 238 L 656.6 238 L 656.6 240 L 654.6 240 M 660.6 238 L 662.6 238 L 662.6 240 L 660.6 240 M 666.6 238 L 668.6 238 L 668.6 240 L 666.6 240 M 672.6 238 L 674.6 238 L 674.6 240 L 672.6 240 M 657.6 235 L 659.6 235 L 659.6 237 L 657.6 237 M 663.6 235 L 665.6 235 L 665.6 237 L 663.6 237 M 669.6 235 L 671.6 235 L 671.6 237 L 669.6 237 M 675.6 235 L 677.6 235 L 677.6 237 L 675.6 237\"\n        fill=\"rgb(147,153,159)\" />\n    </g>\n  </svg>\n</div>\n","/**\n * toolbar default configuration\n */\nexport const ngxEditorConfig = {\n  editable: true,\n  spellcheck: true,\n  height: 'auto',\n  minHeight: '0',\n  width: 'auto',\n  minWidth: '0',\n  translate: 'yes',\n  enableToolbar: true,\n  showToolbar: true,\n  placeholder: 'Enter text here...',\n  imageEndPoint: '',\n  toolbar: [\n    ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],\n    ['fontName', 'fontSize', 'color'],\n    ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\n    ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\n    ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],\n    ['link', 'unlink', 'image', 'video']\n  ]\n};\n","import {\n  Component, OnInit, Input, Output, ViewChild,\n  EventEmitter, Renderer2, forwardRef, ElementRef, AfterViewInit\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { CommandExecutorService } from './common/services/command-executor.service';\nimport { MessageService } from './common/services/message.service';\n\nimport { ngxEditorConfig } from './common/ngx-editor.defaults';\nimport * as Utils from './common/utils/ngx-editor.utils';\n\n@Component({\n    selector: 'app-ngx-editor',\n    templateUrl: './ngx-editor.component.html',\n    styleUrls: ['./ngx-editor.component.scss'],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NgxEditorComponent),\n            multi: true\n        }],\n    standalone: false\n})\n\nexport class NgxEditorComponent implements AfterViewInit, ControlValueAccessor {\n  /** Specifies weather the textarea to be editable or not */\n  @Input() editable?: boolean;\n  /** The spellcheck property specifies whether the element is to have its spelling and grammar checked or not. */\n  @Input() spellcheck?: boolean;\n  /** Placeholder for the textArea */\n  @Input() placeholder?: string;\n  /**\n   * The translate property specifies whether the content of an element should be translated or not.\n   *\n   * Check https://www.w3schools.com/tags/att_global_translate.asp for more information and browser support\n   */\n  @Input() translate?: string;\n  /** Sets height of the editor */\n  @Input() height?: string;\n  /** Sets minimum height for the editor */\n  @Input() minHeight?: string;\n  /** Sets Width of the editor */\n  @Input() width?: string;\n  /** Sets minimum width of the editor */\n  @Input() minWidth?: string;\n  /**\n   * Toolbar accepts an array which specifies the options to be enabled for the toolbar\n   *\n   * Check ngxEditorConfig for toolbar configuration\n   *\n   * Passing an empty array will enable all toolbar\n   */\n  @Input() toolbar?: Object;\n  /**\n   * The editor can be resized vertically.\n   *\n   * `basic` resizer enables the html5 reszier. Check here https://www.w3schools.com/cssref/css3_pr_resize.asp\n   *\n   * `stack` resizer enable a resizer that looks like as if in https://stackoverflow.com\n   */\n  @Input() resizer = 'stack';\n  /**\n   * The config property is a JSON object\n   *\n   * All avaibale inputs inputs can be provided in the configuration as JSON\n   * inputs provided directly are considered as top priority\n   */\n  @Input() config = ngxEditorConfig;\n  /** Weather to show or hide toolbar */\n  @Input() showToolbar?: boolean;\n  /** Weather to enable or disable the toolbar */\n  @Input() enableToolbar?: boolean;\n  /** Endpoint for which the image to be uploaded */\n  @Input() imageEndPoint?: string;\n\n  @Input() emailParams: any;\n\n    /** emits `blur` event when focused out from the textarea */\n        // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() blur: EventEmitter<string> = new EventEmitter<string>();\n  /** emits `focus` event when focused in to the textarea */\n      // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() focus: EventEmitter<string> = new EventEmitter<string>();\n\n  @ViewChild('ngxTextArea') textArea!: ElementRef;\n  @ViewChild('ngxWrapper') ngxWrapper!: ElementRef;\n  @ViewChild('ngxEditor') ngxEditor!: ElementRef;\n\n  Utils: any = Utils;\n\n  private onChange?: (value: string) => void;\n  private onTouched?: () => void;\n\n  /**\n   * @param _messageService service to send message to the editor message component\n   * @param _commandExecutor executes command from the toolbar\n   * @param _renderer access and manipulate the dom element\n   */\n  constructor(\n    private _messageService: MessageService,\n    private _commandExecutor: CommandExecutorService,\n    private _renderer: Renderer2) { }\n\n  /**\n   * events\n   */\n  onTextAreaFocus(): void {\n    this.focus.emit('focus');\n  }\n\n  /** focus the text area when the editor is focussed */\n  onEditorFocus() {\n    if(this.textArea && this.textArea.nativeElement) {\n      this.textArea.nativeElement.focus();\n    }\n\n  }\n\n  /**\n   * Executed from the contenteditable section while the input property changes\n   * @param innerHTML: html string from contenteditable\n   */\n  onContentChange(innerHTML: string): void {\n    if (typeof this.onChange === 'function') {\n      this.onChange(innerHTML);\n      this.togglePlaceholder(innerHTML);\n    }\n  }\n\n  onChangeTextarea($event: any) {\n    if($event.target) {\n      this.onContentChange($event.target['innerHTML'])\n    }\n  }\n\n\n  onTextAreaBlur(): void {\n    /** save selection if focussed out */\n    this._commandExecutor.savedSelection = Utils.saveSelection();\n\n    if (typeof this.onTouched === 'function') {\n      this.onTouched();\n    }\n    this.blur.emit('blur');\n  }\n\n  /**\n   * resizing text area\n   *\n   * @param offsetY vertical height of the eidtable portion of the editor\n   */\n  resizeTextArea(offsetY: number): void {\n    if(this.height &&  this.textArea.nativeElement) {\n      let newHeight = parseInt(this.height, 10);\n      newHeight += offsetY;\n      this.height = newHeight + 'px';\n      this.textArea.nativeElement.style.height = this.height;\n    }\n  }\n\n  /**\n   * editor actions, i.e., executes command from toolbar\n   *\n   * @param commandName name of the command to be executed\n   */\n  executeCommand(commandName: string): void {\n    try {\n      this._commandExecutor.execute(commandName);\n    } catch (error: any) {\n      this._messageService.sendMessage(error.message);\n    }\n  }\n\n  /**\n   * Write a new value to the element.\n   *\n   * @param value value to be executed when there is a change in contenteditable\n   */\n  writeValue(value: any): void {\n    this.togglePlaceholder(value);\n\n    if (value === null || value === undefined || value === '' || value === '<br>') {\n      value = null;\n    }\n\n    this.refreshView(value);\n  }\n\n  /**\n   * Set the function to be called\n   * when the control receives a change event.\n   *\n   * @param fn a function\n   */\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  /**\n   * Set the function to be called\n   * when the control receives a touch event.\n   *\n   * @param fn a function\n   */\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * refresh view/HTML of the editor\n   *\n   * @param value html string from the editor\n   */\n  refreshView(value: string): void {\n    if(this.textArea && this.textArea.nativeElement) {\n      const normalizedValue = value === null ? '' : value;\n      this._renderer.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);\n    }\n  }\n\n  /**\n   * toggles placeholder based on input string\n   *\n   * @param value A HTML string from the editor\n   */\n  togglePlaceholder(value: any): void {\n    if(this.ngxWrapper && this.ngxWrapper.nativeElement) {\n      if (!value || value === '<br>' || value === '') {\n        this._renderer.addClass(this.ngxWrapper.nativeElement, 'show-placeholder');\n      } else {\n        this._renderer.removeClass(this.ngxWrapper.nativeElement, 'show-placeholder');\n      }\n    }\n  }\n\n  /**\n   * returns a json containing input params\n   */\n  getCollectiveParams(): any {\n    return {\n      editable: this.editable,\n      spellcheck: this.spellcheck,\n      placeholder: this.placeholder,\n      translate: this.translate,\n      height: this.height,\n      minHeight: this.minHeight,\n      width: this.width,\n      minWidth: this.minWidth,\n      enableToolbar: this.enableToolbar,\n      showToolbar: this.showToolbar,\n      imageEndPoint: this.imageEndPoint,\n      toolbar: this.toolbar\n    };\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(()=>{\n      this.config = this.Utils.getEditorConfiguration(this.config, ngxEditorConfig, this.getCollectiveParams());\n      if((!this.height) && this.textArea && this.textArea.nativeElement) {\n        this.height = this.height || this.textArea.nativeElement.offsetHeight;\n      }\n      this.executeCommand('enableObjectResizing');\n    },100)\n  }\n}\n","<div #ngxEditor class=\"ngx-editor\" [style.width]=\"config['width']\" [style.minWidth]=\"config['minWidth']\" tabindex=\"0\"\n  (focus)=\"onEditorFocus()\">\n\n  <app-ngx-editor-toolbar [emailParams]=\"emailParams\" [config]=\"config\" (execute)=\"executeCommand($event)\"></app-ngx-editor-toolbar>\n\n  <!-- text area -->\n  <div class=\"ngx-wrapper\" #ngxWrapper>\n    <div class=\"ngx-editor-textarea\" [attr.contenteditable]=\"config['editable']\" (input)=\"onChangeTextarea($event)\"\n      [attr.translate]=\"config['translate']\" [attr.spellcheck]=\"config['spellcheck']\" [style.height]=\"config['height']\"\n      [style.minHeight]=\"config['minHeight']\" [style.resize]=\"Utils?.canResize(resizer)\" (focus)=\"onTextAreaFocus()\"\n      (blur)=\"onTextAreaBlur()\" #ngxTextArea></div>\n\n    <span class=\"ngx-editor-placeholder\">{{ placeholder || config['placeholder'] }}</span>\n  </div>\n\n  <app-ngx-editor-message></app-ngx-editor-message>\n  <app-ngx-grippie *ngIf=\"resizer === 'stack'\" (resizeTextArea)=\"resizeTextArea($event)\"></app-ngx-grippie>\n\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {PopoverModule} from 'ngx-bootstrap/popover';\nimport {NgxEditorComponent} from './ngx-editor.component';\nimport {NgxGrippieComponent} from './ngx-grippie/ngx-grippie.component';\nimport {NgxEditorMessageComponent} from './ngx-editor-message/ngx-editor-message.component';\nimport {NgxEditorToolbarComponent} from './ngx-editor-toolbar/ngx-editor-toolbar.component';\nimport {MessageService} from './common/services/message.service';\nimport {CommandExecutorService} from './common/services/command-executor.service';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ReactiveFormsModule, PopoverModule.forRoot()],\n    declarations: [NgxEditorComponent, NgxGrippieComponent, NgxEditorMessageComponent, NgxEditorToolbarComponent],\n    exports: [NgxEditorComponent],\n    providers: [CommandExecutorService, MessageService]\n})\n\nexport class NgxEditorModule {\n}\n","export type MoveHandler = (event: MouseEvent, dx: number, dy: number, x: number, y: number) => void;\nexport type UpHandler = (event: MouseEvent, x: number, y: number, moved: boolean) => void;\n\nexport function drag(event: MouseEvent, {move: move, up: up}: { move: MoveHandler, up?: UpHandler }) {\n\n    let startX = event.pageX;\n    let startY = event.pageY;\n    let x = startX;\n    let y = startY;\n    let moved = false;\n\n    function mouseMoveHandler(event: MouseEvent) {\n        let dx = event.pageX - x;\n        let dy = event.pageY - y;\n        x = event.pageX;\n        y = event.pageY;\n        if (dx || dy) moved = true;\n\n        move(event, dx, dy, x, y);\n\n        event.preventDefault(); // to avoid text selection\n    }\n\n    function mouseUpHandler(event: MouseEvent) {\n        x = event.pageX;\n        y = event.pageY;\n\n        document.removeEventListener('mousemove', mouseMoveHandler);\n        document.removeEventListener('mouseup', mouseUpHandler);\n\n        if (up) up(event, x, y, moved);\n    }\n\n    document.addEventListener('mousemove', mouseMoveHandler);\n    document.addEventListener('mouseup', mouseUpHandler);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n    name: 'px',\n    standalone: false\n})\nexport class PixelConverter implements PipeTransform {\n  transform(value: string | number): any {\n    if (value === undefined) {\n        return;\n    }\n    if (typeof value === 'string') {\n        return value;\n    }\n    return value + 'px';\n  }\n}\n","import {Directive, ElementRef, Renderer2} from '@angular/core';\n\n\nfunction isBlank(obj: any): boolean {\n    return obj === undefined || obj === null;\n}\n\n@Directive({\n    selector: '[hide]', inputs: ['hide'],\n    standalone: false\n})\nexport class Hide {\n\n    private _prevCondition?: boolean;\n    private _displayStyle?: string;\n\n    constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n    }\n\n    set hide(newCondition: boolean) {\n        this.initDisplayStyle();\n\n        if (newCondition && (isBlank(this._prevCondition) || !this._prevCondition)) {\n            this._prevCondition = true;\n            this._renderer.setStyle(this._elementRef.nativeElement, 'display', 'none');\n        } else if (!newCondition && (isBlank(this._prevCondition) || this._prevCondition)) {\n            this._prevCondition = false;\n            this._renderer.setStyle(this._elementRef.nativeElement, 'display', this._displayStyle);\n        }\n    }\n\n    private initDisplayStyle() {\n        if (this._displayStyle === undefined) {\n            let displayStyle = this._elementRef.nativeElement.style.display;\n            if (displayStyle && displayStyle !== 'none') {\n                this._displayStyle = displayStyle;\n            }\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n\n@Pipe({\n    name: 'min',\n    standalone: false\n})\nexport class MinPipe implements PipeTransform {\n  transform(value: number[]): any {\n    return Math.min.apply(null, value);\n  }\n}\n","import { Directive, Input, ContentChild, OnInit } from '@angular/core';\nimport { DataTableRow } from '../row/row.component';\nimport { CellCallback } from '../../types/cell-callback.type';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'data-table-column',\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class DataTableColumn implements OnInit {\n\n    // init:\n    @Input() header?: string;\n    @Input() sortable = false;\n    @Input() resizable = false;\n    @Input() property!: string;\n    @Input() styleClass?: string;\n    @Input() cellColors?: CellCallback;\n\n    // init and state:\n    @Input() width: number | string = 'auto';\n    @Input() visible = true;\n\n    @ContentChild('dataTableCell') cellTemplate: any;\n    @ContentChild('dataTableHeader') headerTemplate: any;\n\n    // @ts-ignore\n    getCellColor(row: DataTableRow, index: number) {\n        if (this.cellColors !== undefined) {\n            return (<CellCallback>this.cellColors)(row.item, row, this, index);\n        }\n    }\n\n    styleClassObject = {}; // for [ngClass]\n\n    ngOnInit() {\n        this._initCellClass();\n    }\n\n    private _initCellClass() {\n        if (!this.styleClass && this.property) {\n            if (/^[a-zA-Z0-9_]+$/.test(this.property)) {\n                this.styleClass = 'column-' + this.property;\n            } else {\n                this.styleClass = 'column-' + this.property.replace(/[^a-zA-Z0-9_]/g, '');\n            }\n        }\n\n        if (this.styleClass != null) {\n            this.styleClassObject = {\n                [this.styleClass]: true\n            };\n        }\n    }\n}\n","import {\n    Component, Input, Output, EventEmitter, OnDestroy, QueryList, TemplateRef\n} from '@angular/core';\nimport {DataTableColumn} from \"../column/column.component\";\nimport {DataTableTranslations} from \"../../types/data-table-translations.type\";\n\n@Component({\n    //moduleId: 'grid-module',\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[dataTableRow]',\n    templateUrl: './row.component.html',\n    styleUrls: ['./row.component.css'],\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class DataTableRow implements OnDestroy {\n\n    @Input() item: any;\n    @Input() index: number = 0;\n\n    @Input() selectOnRowClick = false;\n\n    expanded: boolean = false;\n\n    // row selection:\n\n    private _selected: boolean = false;\n\n    @Output() selectedChange = new EventEmitter();\n    @Output() expandedChange = new EventEmitter();\n\n    @Output() doubleClicked = new EventEmitter<any>();\n    @Output() clicked = new EventEmitter<any>();\n\n    @Input() translations!: DataTableTranslations;\n\n    @Input() expandableRows: boolean = false;\n    @Input() expandColumnVisible: boolean = false;\n    @Input() indexColumnVisible: boolean = false;\n    @Input() selectColumnVisible: boolean = false;\n    @Input() columns?: QueryList<DataTableColumn>;\n    @Input() columnCount: number = 0;\n    @Input() expandTemplate!: TemplateRef<any>;\n    @Input() backgroundColor: string = '';\n\n    get selected() {\n        return this._selected;\n    }\n\n    set selected(selected) {\n        this._selected = selected;\n        this.selectedChange.emit(selected);\n    }\n\n    // other:\n\n    get displayIndex() {\n        /*\n        if (this.dataTable.pagination) {\n            // @ts-ignore\n            return this.dataTable.displayParams.offset + this.index + 1;\n        } else {\n            // @ts-ignore\n            return this.index + 1;\n        }\n\n         */\n        return this.index + 1;\n    }\n\n    getTooltip() {\n        /*\n        if (this.dataTable.rowTooltip) {\n            // @ts-ignore\n            return this.dataTable.rowTooltip(this.item, this, this.index);\n        }\n\n         */\n        return '';\n    }\n\n\n    constructor() {}\n\n    ngOnDestroy() {\n        this.selected = false;\n    }\n\n    expand() {\n        this.expanded = !this.expanded;\n        this.expandedChange.emit(this.expanded);\n    }\n\n    collapse() {\n        this.expanded = false;\n        this.expandedChange.emit(this.expanded);\n    }\n\n    rowDoubleClicked($event : any){\n        this.doubleClicked.emit($event);\n    }\n\n    rowClicked($event: any) {\n        this.clicked.emit($event);\n    }\n}\n","<tr\tclass=\"data-table-row\"\n       [title]=\"getTooltip()\"\n       [style.background-color]=\"backgroundColor\"\n       [class.row-odd]=\"index % 2 === 0\"\n       [class.row-even]=\"index % 2 === 1\"\n       [class.selected]=\"selected\"\n       [class.clickable]=\"selectOnRowClick\"\n       (dblclick)=\"rowDoubleClicked($event)\"\n       (click)=\"rowClicked($event)\"\n>\n    <td [hide]=\"!expandColumnVisible\">\n        <div tabindex=\"0\" role=\"button\" (click)=\"this.expand(); $event.stopPropagation()\" class=\"row-expand-button\"\n             [attr.aria-expanded]=\"expanded\" [title]=\"translations.expandRow\" [attr.aria-label]=\"translations.expandRow\">\n            <span class=\"fa\" [ngClass]=\"{'fa-caret-right': !expanded, 'fa-caret-down': expanded}\" aria-hidden=\"true\"></span>\n        </div>\n    </td>\n    <td [hide]=\"!indexColumnVisible\" class=\"index-column\" [textContent]=\"displayIndex\"></td>\n    <td [hide]=\"!selectColumnVisible\" class=\"select-column\" (click)=\"$event.stopPropagation()\">\n        <input type=\"checkbox\" [(ngModel)]=\"selected\"/>\n        <label class=\"mb-0 lbl\"></label>\n    </td>\n    <td *ngFor=\"let column of columns\" [hide]=\"!column.visible\" [ngClass]=\"column.styleClassObject ? column.styleClassObject : ''\" class=\"data-column\"\n        [style.background-color]=\"column.getCellColor(this, index)\">\n        <div *ngIf=\"!column.cellTemplate\" [textContent]=\"item[column.property]\"></div>\n        <div *ngIf=\"column.cellTemplate\" [ngTemplateOutlet]=\"column.cellTemplate\" [ngTemplateOutletContext]=\"{column: column, row: this, item: item}\"></div>\n    </td>\n</tr>\n<tr *ngIf=\"expandableRows\" [hide]=\"!expanded\" class=\"row-expansion\">\n    <td [attr.colspan]=\"columnCount\">\n        <div [ngTemplateOutlet]=\"expandTemplate\" [ngTemplateOutletContext]=\"{row: this, item: item}\"></div>\n    </td>\n</tr>\n","import {DataTableTranslations} from './data-table-translations.type'\n\nexport const defaultTranslations: DataTableTranslations = {\n\theaderReload: 'reload',\n\theaderColumnSelector: 'column selector',\n\tindexColumn: 'index',\n\tselectColumn: 'select',\n\tselectRow: 'select',\n\tselectAllRows: 'select',\n\texpandColumn: 'expand',\n\texpandRow: 'expand',\n\tpaginationLimit: 'Limit',\n\tpaginationRange: 'Results',\n    firstText: 'First Page',\n    prevText: 'Previous Page',\n    nextText: 'Next Page',\n    lastText: 'Last Page'\n};\n","import {\n    Component,\n    Input,\n    TemplateRef,\n    ElementRef, QueryList, Output, EventEmitter\n} from '@angular/core';\nimport {DataTableColumn} from \"../column/column.component\";\nimport {DataTableTranslations} from \"../../types/data-table-translations.type\";\n\n@Component({\n    //moduleId: 'grid-module',\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'data-table-pagination',\n    templateUrl: './pagination.component.html',\n    styleUrls: ['./pagination.component.css'],\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        '(document:click)': '_closeSelector()'\n    },\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class DataTablePagination {\n\n    @Input() show_range = false;\n    @Input() show_limit = false;\n    @Input() show_input = false;\n    @Input() show_numbers = true;\n    @Input() show_column_selector = false;\n    @Input() autoHide = false;\n\n    @Input() basicSearch!: TemplateRef<ElementRef>;\n    @Input() advanceSearch!: TemplateRef<ElementRef>;\n\n    @Input() translations!: DataTableTranslations;\n\n    @Input() offset: number = 0;\n    @Input() page: number = 0;\n    @Input() limit: number = 10;\n    @Input() lastPage: number = 0;\n    @Input() expandableRows: boolean = false;\n    @Input() indexColumn: boolean = false;\n    @Input() selectColumn: boolean = false;\n    @Input() columns?: QueryList<DataTableColumn>;\n    @Input() itemCount: number = 0;\n\n    expandColumnVisible= false;\n    indexColumnVisible= false;\n    selectColumnVisible = false;\n\n    @Output() reload = new EventEmitter<any>();\n    @Output() changeOffset = new EventEmitter<number>();\n    @Output() changePage = new EventEmitter<number>();\n\n    columnSelectorOpen = false;\n\n    _closeSelector() {\n        this.columnSelectorOpen = false;\n    }\n\n    constructor() {\n    }\n\n    pageBack() {\n        this.offset -= Math.min(this.limit, this.offset);\n        this.onChangeOffset();\n    }\n\n    pageForward() {\n        this.offset += this.limit;\n        this.onChangeOffset();\n    }\n\n    pageFirst() {\n        this.offset = 0;\n        this.onChangeOffset();\n    }\n\n    pageLast() {\n        this.offset = (this.maxPage - 1) * this.limit;\n        this.onChangeOffset();\n    }\n\n    get maxPage() {\n        // @ts-ignore\n        return Math.ceil(this.itemCount / this.limit);\n    }\n\n    createPageRange(number: number, page: number): any[] {\n        const displayedPage = 3;\n        let items: number[] = [];\n        if (number > 1) {\n            let maxPage = number;\n            let minPage = 1;\n            if (page === 1 && maxPage >= displayedPage) {\n                maxPage = 3;\n            } else if (page > 1 && maxPage > page + 1) {\n                minPage = page - 1;\n                maxPage = page + 1;\n            } else if (page > 2 && maxPage > page) {\n                minPage = page - 1;\n                maxPage = page + 1;\n            } else  if (page > 2 && maxPage === page) {\n                minPage = page - 2;\n                maxPage = page;\n            }\n            for (let i = minPage; i <= maxPage; i++) {\n                items.push(i);\n            }\n        }\n        return items;\n    }\n\n    onChange(value: any): any {\n        value = Number(<any>value);\n        const minPage = 1;\n        const maxPage = this.maxPage;\n        if (value < minPage) {\n            value = minPage;\n        } else if (value > maxPage) {\n            value = maxPage;\n        }\n        this.page = value;\n        this.changePage.emit(this.page);\n\n        return value;\n    }\n\n    convertToNumber(value: any): number  {\n        return Number(value);\n    }\n\n    convertToString(value: any): string {\n        return <string> value;\n    }\n\n    reloadItems() {\n        this.reload.emit({\n\n        })\n    }\n\n    onChangeOffset() {\n        this.changeOffset.emit(this.offset)\n    }\n\n}\n","<div class=\"pagination-box\">\n    <div class=\"pagination-range\"  *ngIf=\"!show_range\">\n        <ng-template [ngTemplateOutlet]=\"basicSearch\"></ng-template>\n    </div>\n    <div class=\"pagination-range input-group-sm\" *ngIf=\"show_range\">\n        <div class=\"input-group-prepend\">\n            <span class=\"input-group-text\">\n        {{translations.paginationRange}}:\n        <span class=\"ml-1\" [textContent]=\"itemCount>0 ? offset + 1 : 0\"></span>\n        -\n        <span [textContent]=\"[offset + limit , itemCount] | min\"></span>\n        /\n        <span [textContent]=\"itemCount\"></span>\n        </span>\n        </div>\n    </div>\n\n    <div class=\"pagination-controllers\">\n        <div class=\"pagination-limit\" *ngIf=\"show_limit\">\n            <div class=\"input-group input-group-sm\">\n                <div class=\"input-group-prepend\">\n                    <span class=\"input-group-text\">{{translations.paginationLimit}}:</span>\n                </div>\n                <input #limitInput type=\"number\" class=\"form-control\" min=\"1\" step=\"1\" [disabled]=\"maxPage === 0\"\n                       [ngModel]=\"limit\" (blur)=\"limit = convertToNumber(limitInput.value)\"\n                       (keyup.enter)=\"limit = convertToNumber(limitInput.value)\" (keyup.esc)=\"limitInput.value = convertToString(limit)\"/>\n            </div>\n        </div>\n        <div class=\"pagination-pages mr-1\" *ngIf=\"!autoHide || (autoHide && (maxPage > 0))\">\n            <button [disabled]=\"offset <= 0\" (click)=\"pageFirst()\"\n                    class=\"btn btn-sm btn-light pagination-firstpage\"\n                    [title]=\"translations.firstText\">\n                <i class=\"fa fa-step-backward\"></i>\n            </button>\n            <button [disabled]=\"offset <= 0\" (click)=\"pageBack()\"\n                    class=\"btn btn-sm btn-light pagination-prevpage ml-1\"\n                    [title]=\"translations.prevText\">\n                <i class=\"fa fa-chevron-left\"></i>\n            </button>\n            <div class=\"pagination-page ml-1\" *ngIf=\"show_input\">\n                <div class=\"input-group input-group-sm\">\n                    <input #pageInput type=\"number\" class=\"form-control\" min=\"1\" step=\"1\" max=\"{{maxPage}}\"\n                           [ngModel]=\"page\" (blur)=\"pageInput.value = onChange(pageInput.value)\"\n                           (keyup.enter)=\"pageInput.value = onChange(pageInput.value)\" [disabled]=\"maxPage === 0\"\n                           (keyup.esc)=\"pageInput.value = convertToString(page)\"/>\n                    <div class=\"input-group-append\">\n                        <span class=\"input-group-text\"><span>/</span><span\n                                [textContent]=\"lastPage\"></span></span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"pagination-page\" *ngIf=\"show_numbers\">\n                <button *ngFor=\"let i of createPageRange(maxPage,page)\"\n                        [disabled]=\"i == page\"\n                        (click)=\"page = i\"\n                        class=\"btn btn-sm btn-light ml-1\">{{ i }}\n                </button>\n            </div>\n            <button [disabled]=\"(offset + limit) >= itemCount\" (click)=\"pageForward()\"\n                    class=\"btn btn-sm btn-light pagination-nextpage ml-1\" [title]=\"translations.nextText\">\n                <i class=\"fa fa-chevron-right\"></i>\n            </button>\n            <button [disabled]=\"(offset + limit) >= itemCount\" (click)=\"pageLast()\"\n                    class=\"btn btn-sm btn-light pagination-lastpage ml-1\" [title]=\"translations.lastText\">\n                <i class=\"fa fa-step-forward\"></i>\n            </button>\n            <button type=\"button\" class=\"btn btn-sm btn-light pagination-reload ml-1\"\n                    (click)=\"reloadItems()\"\n                    [attr.aria-label]=\"translations.headerReload\"\n                    [title]=\"translations.headerReload\">\n                <i class=\"fa fa-refresh\"></i>\n            </button>\n            <button *ngIf=\"show_column_selector\" type=\"button\" class=\"btn btn btn-sm btn-light column-selector-button ml-1\"\n                    [class.active]=\"columnSelectorOpen\"\n                    (click)=\"columnSelectorOpen = !columnSelectorOpen; $event.stopPropagation()\"\n                    [attr.aria-label]=\"translations.headerColumnSelector\"\n                    [title]=\"translations.headerColumnSelector\">\n                <i class=\"fa fa-list\"></i>\n            </button>\n            <div *ngIf=\"show_column_selector\" class=\"column-selector-wrapper\" (click)=\"$event.stopPropagation()\">\n                <div *ngIf=\"columnSelectorOpen\" class=\"column-selector-box panel panel-default\">\n                    <div *ngIf=\"expandableRows\" class=\"column-selector-fixed-column checkbox\">\n                        <label>\n                            <input type=\"checkbox\" id=\"chk-expand-column-selector\" [(ngModel)]=\"expandColumnVisible\"/>\n                            <label class=\"mb-0 lbl\" for=\"chk-expand-column-selector\"> {{translations.expandColumn}}</label>\n                        </label>\n                    </div>\n                    <div *ngIf=\"indexColumn\" class=\"column-selector-fixed-column checkbox\">\n                        <label>\n                            <input type=\"checkbox\" id=\"chk-index-column-selector\" [(ngModel)]=\"indexColumnVisible\"/>\n                            <label class=\"mb-0 lbl\" for=\"chk-index-column-selector\"> {{translations.indexColumn}}</label>\n                        </label>\n                    </div>\n                    <div *ngIf=\"selectColumn\" class=\"column-selector-fixed-column checkbox\">\n                        <label>\n                            <input type=\"checkbox\" id=\"chk-select-column-selector\" [(ngModel)]=\"selectColumnVisible\"/>\n                            <label class=\"mb-0 lbl\" for=\"chk-select-column-selector\"> {{translations.selectColumn}}</label>\n                        </label>\n                    </div>\n                    <div *ngFor=\"let column of columns;\" class=\"column-selector-column checkbox\">\n                        <label>\n                            <input type=\"checkbox\" [id]=\"'chk-'+ column.property + '-selector'\" [(ngModel)]=\"column.visible\"/>\n                            <label class=\"mb-0 lbl\" [for]=\"'chk-'+ column.property + '-selector'\">\n                                &nbsp;<span [textContent]=\"column.header || (column.property)\"></span>\n                            </label>\n                        </label>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <ng-template *ngIf=\"!show_range\" [ngTemplateOutlet]=\"advanceSearch\"></ng-template>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n    //moduleId: 'grid-module',\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'data-table-header',\n    templateUrl: './header.component.html',\n    styleUrls: ['./header.component.css'],\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class DataTableHeader {\n\n    @Input() headerTitle?: string;\n    constructor() {\n    }\n}\n","<div class=\"data-table-header\">\n    <h4 class=\"title\" [textContent]=\"headerTitle\"></h4>\n</div>\n","import {\n    Component, Input, Output, EventEmitter, ContentChildren, QueryList,\n    TemplateRef, ContentChild, ViewChildren, OnInit, OnDestroy, ElementRef\n} from '@angular/core';\nimport {DataTableColumn} from '../column/column.component';\nimport {DataTableRow} from '../row/row.component';\nimport {DataTableParams} from '../../types/data-table-params.type';\nimport {RowCallback} from '../../types/row-callback.type';\nimport {DataTableTranslations} from '../../types/data-table-translations.type';\nimport {defaultTranslations} from '../../types/default-translations.type';\nimport {drag} from '../../utils/drag';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {CloudTranslateService} from \"../../../translate/cloud-translate.service\";\nimport {Subscription} from \"rxjs\";\n\n@Component({\n    //moduleId: 'grid-module',\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'data-table',\n    templateUrl: './table.component.html',\n    styleUrls: ['./table.component.css'],\n    standalone: false\n})\n\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class DataTable implements DataTableParams, OnInit, OnDestroy {\n\n    private _items: any[] = [];\n\n    @Input() get items() {\n        return this._items;\n    }\n\n    set items(items: any[]) {\n        this.selectedRows = [];\n        this._items = items;\n        this._onReloadFinished();\n    }\n\n    @Input() itemCount: number = 0;\n\n    // UI components:\n\n    @ContentChildren(DataTableColumn) columns?: QueryList<DataTableColumn>;\n    @ViewChildren(DataTableRow) rows?: QueryList<DataTableRow>;\n    @ContentChild('dataTableExpand') expandTemplate!: TemplateRef<any>;\n\n    // One-time optional bindings with default values:\n\n    @Input() headerTitle: string = '';\n    @Input() header = false;\n    @Input() pagination = true;\n    @Input() pagination_range = true;\n    @Input() pagination_limit = false;\n    @Input() pagination_input = true;\n    @Input() pagination_numbers = false;\n    @Input() indexColumn = true;\n    @Input() indexColumnHeader = '';\n    @Input() rowColors?: RowCallback;\n    @Input() rowTooltip?: RowCallback;\n    @Input() selectColumn = false;\n    @Input() multiSelect = true;\n    @Input() substituteRows = false;\n    @Input() expandableRows = false;\n    @Input() translations: DataTableTranslations = defaultTranslations;\n    @Input() selectOnRowClick = false;\n    @Input() autoReload = true;\n    @Input() showReloading = true;\n    @Input() noDataMessage?: string;\n    @Input() showColumnSelector = false;\n    @Input() autoHidePaging = false;\n    // UI state without input:\n\n    indexColumnVisible: boolean = false;\n    selectColumnVisible: boolean = false;\n    expandColumnVisible: boolean = false;\n\n    // UI state: visible ge/set for the outside with @Input for one-time initial values\n\n    private _sortBy?: string;\n    private _sortAsc = true;\n\n    private _offset = 0;\n    private _limit = 10;\n    private translateSubscription?: Subscription;\n\n    @ContentChild('basicSearch') basicSearch!: TemplateRef<ElementRef>;\n    @ContentChild('advanceSearch') advanceSearch!: TemplateRef<ElementRef>;\n\n    @Input()\n    get sortBy() {\n        return this._sortBy;\n    }\n\n    set sortBy(value) {\n        this._sortBy = value;\n        this._triggerReload();\n    }\n\n    @Input()\n    get sortAsc() {\n        return this._sortAsc;\n    }\n\n    set sortAsc(value) {\n        this._sortAsc = value;\n        this._triggerReload();\n    }\n\n    @Input()\n    get offset() {\n        return this._offset;\n    }\n\n    set offset(value) {\n        this._offset = value;\n        this._triggerReload();\n    }\n\n    @Input()\n    get limit() {\n        return this._limit;\n    }\n\n    set limit(value) {\n        this._limit = value;\n        this._triggerReload();\n    }\n\n    // calculated property:\n\n    @Input()\n    get page() {\n        return Math.floor(this.offset / this.limit) + 1;\n    }\n\n    set page(value) {\n        this.offset = (value - 1) * this.limit;\n    }\n\n    get lastPage() {\n        // @ts-ignore\n        return Math.ceil(this.itemCount / this.limit);\n    }\n\n    // setting multiple observable properties simultaneously\n\n    sort(sortBy: string, asc: boolean) {\n        this.sortBy = sortBy;\n        this.sortAsc = asc;\n    }\n\n    firstPage() {\n        this.offset = 0;\n    }\n\n    constructor(private translate: TranslateService) {\n    }\n\n    // init\n    ngOnInit() {\n        this.translateSubscription = this.translate.get([CloudTranslateService.GRID_KEY]).subscribe(res => {\n            const __resources = res[CloudTranslateService.GRID_KEY];\n            if (__resources.translations) {\n                this.translations = (__resources.translations as DataTableTranslations);\n            } else {\n                this.translations = defaultTranslations;\n            }\n            if (!this.noDataMessage && __resources.emptyMsg) {\n                this.noDataMessage = __resources.emptyMsg;\n            }\n        });\n\n        this._initDefaultValues();\n        this._initDefaultClickEvents();\n        this._updateDisplayParams();\n\n        if (this.autoReload && this._scheduledReload == null) {\n            this.reloadItems();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.translateSubscription) {\n            this.translateSubscription.unsubscribe();\n        }\n    }\n\n\n    private _initDefaultValues() {\n        this.indexColumnVisible = this.indexColumn;\n        this.selectColumnVisible = this.selectColumn;\n        this.expandColumnVisible = this.expandableRows;\n    }\n\n    private _initDefaultClickEvents() {\n        this.headerClick.subscribe(tableEvent => this.sortColumn(tableEvent.column));\n        if (this.selectOnRowClick) {\n            this.rowClick.subscribe(tableEvent => tableEvent.row.selected = !tableEvent.row.selected);\n        }\n    }\n\n    // Reloading:\n\n    _reloading = false;\n\n    get reloading() {\n        return this._reloading;\n    }\n\n    @Output() reload = new EventEmitter();\n\n    reloadItems() {\n        this._reloading = true;\n        this.reload.emit(this._getRemoteParameters());\n    }\n\n    private _onReloadFinished() {\n        this._updateDisplayParams();\n\n        this._selectAllCheckbox = false;\n        this._reloading = false;\n    }\n\n    _displayParams = <DataTableParams>{}; // params of the last finished reload\n\n    get displayParams() {\n        return this._displayParams;\n    }\n\n    _updateDisplayParams() {\n        this._displayParams = {\n            sortBy: this.sortBy,\n            sortAsc: this.sortAsc,\n            offset: this.offset,\n            limit: this.limit\n        };\n    }\n\n    _scheduledReload = null;\n\n    // for avoiding cascading reloads if multiple params are set at once:\n    _triggerReload() {\n        if (this._scheduledReload) {\n            // @ts-ignore\n            clearTimeout(this._scheduledReload);\n        }\n        // @ts-ignore\n        this._scheduledReload = setTimeout(() => {\n            this.reloadItems();\n        });\n    }\n\n    // event handlers:\n\n    @Output() rowClick = new EventEmitter();\n    @Output() rowDoubleClick = new EventEmitter();\n    @Output() headerClick = new EventEmitter();\n    @Output() cellClick = new EventEmitter();\n\n    public rowClicked(row: DataTableRow, event: any) {\n        this.rowClick.emit({row, event});\n    }\n\n    public rowDoubleClicked(row: DataTableRow, event: any) {\n        this.rowDoubleClick.emit({row, event});\n    }\n\n    headerClicked(column: DataTableColumn, event: Event) {\n        if (!this._resizeInProgress) {\n            event.preventDefault();\n            event.stopPropagation();\n            this.headerClick.emit({column, event});\n        } else {\n            this._resizeInProgress = false; // this is because I can't prevent click from mousup of the drag end\n        }\n    }\n\n    private cellClicked(column: DataTableColumn, row: DataTableRow, event: MouseEvent) {\n        this.cellClick.emit({row, column, event});\n    }\n\n    // functions:\n\n    private _getRemoteParameters(): DataTableParams {\n        let params = <DataTableParams>{};\n\n        if (this.sortBy) {\n            params.sortBy = this.sortBy;\n            params.sortAsc = this.sortAsc;\n        }\n        if (this.pagination) {\n            params.offset = this.offset;\n            params.limit = this.limit;\n        }\n        return params;\n    }\n\n    private sortColumn(column: DataTableColumn) {\n        if (column.sortable) {\n            let ascending = this.sortBy === column.property ? !this.sortAsc : true;\n            if(column.property) {\n                this.sort(column.property, ascending);\n            }\n        }\n    }\n\n    get columnCount() {\n        let count = 0;\n        count += this.indexColumnVisible ? 1 : 0;\n        count += this.selectColumnVisible ? 1 : 0;\n        count += this.expandColumnVisible ? 1 : 0;\n        // @ts-ignore\n        this.columns.toArray().forEach(column => {\n            count += column.visible ? 1 : 0;\n        });\n        return count;\n    }\n\n    // @ts-ignore\n    public getRowColor(item: any, index: number, row: DataTableRow): string {\n        if (this.rowColors !== undefined) {\n            return (<RowCallback>this.rowColors)(item, row, index);\n        }\n        return ''\n    }\n\n    // selection:\n\n    selectedRow: any;\n    selectedRows: DataTableRow[] = [];\n\n    private _selectAllCheckbox = false;\n\n    get selectAllCheckbox() {\n        return this._selectAllCheckbox;\n    }\n\n    set selectAllCheckbox(value) {\n        this._selectAllCheckbox = value;\n        this._onSelectAllChanged(value);\n    }\n\n    private _onSelectAllChanged(value: boolean) {\n        // @ts-ignore\n        this.rows.toArray().forEach(row => row.selected = value);\n    }\n\n    @Output() selectionChange = new EventEmitter();\n\n    onRowSelectChanged(selected: boolean, row: DataTableRow) {\n        // maintain the selectedRow(s) view\n        if (this.multiSelect) {\n            let index = this.selectedRows.indexOf(row);\n            if (row.selected && index < 0) {\n                this.selectedRows.push(row);\n            } else if (!row.selected && index >= 0) {\n                this.selectedRows.splice(index, 1);\n            }\n        } else {\n            if (row && row.selected) {\n                this.selectedRow = row;\n                this.selectedRows = [row];\n                // unselect all other rows:\n                // @ts-ignore\n                this.rows.toArray().filter(row_ => row_.selected).forEach(row_ => {\n                    if (row_ !== row) { // avoid endless loop\n                        row_.selected = false;\n                    }\n                });\n            } else if (this.selectedRow === row) {\n                this.selectedRow = undefined;\n                this.selectedRows = [];\n            }\n        }\n        //FIXME: prevent sticky execution\n\n        this.selectionChange.emit({selected, row, selectedRows: this.selectedRows});\n\n    }\n\n    @Output() expandClick = new EventEmitter();\n\n    onExpandChanged(expanded: boolean, row: DataTableRow) {\n        this.expandClick.emit({expanded, row});\n    }\n\n    // other:\n\n    get substituteItems() {\n        // @ts-ignore\n        return Array.from({length: this.displayParams.limit - this.items.length});\n    }\n\n    // column resizing:\n\n    private _resizeInProgress = false;\n\n    resizeColumnStart(event: MouseEvent, column: DataTableColumn, columnElement: HTMLElement) {\n        this._resizeInProgress = true;\n\n        drag(event, {\n            move: (moveEvent: MouseEvent, dx: number) => {\n                if (this._isResizeInLimit(columnElement, dx)) {\n                    column.width = columnElement.offsetWidth + dx;\n                }\n            },\n        });\n    }\n\n    resizeLimit = 30;\n\n    private _isResizeInLimit(columnElement: HTMLElement, dx: number) {\n        /* This is needed because CSS min-width didn't work on table-layout: fixed.\n         Without the limits, resizing can make the next column disappear completely,\n         and even increase the table width. The current implementation suffers from the fact,\n         that offsetWidth sometimes contains out-of-date values. */\n        if ((dx < 0 && (columnElement.offsetWidth + dx) <= this.resizeLimit) ||\n            !columnElement.nextElementSibling || // resizing doesn't make sense for the last visible column\n            (dx >= 0 && ((<HTMLElement>columnElement.nextElementSibling).offsetWidth + dx) <= this.resizeLimit)) {\n            return false;\n        }\n        return true;\n    }\n}\n","<div class=\"data-table-wrapper\">\n    <data-table-header *ngIf=\"header\"></data-table-header>\n\n    <data-table-pagination\n            *ngIf=\"pagination\"\n            [show_range]=\"pagination_range\"\n            [show_limit]=\"pagination_limit\"\n            [show_input]=\"pagination_input\"\n            [show_numbers]=\"pagination_numbers\"\n            [show_column_selector]=\"showColumnSelector\"\n            [autoHide]=\"autoHidePaging\"\n            [basicSearch]=\"basicSearch\"\n            [advanceSearch]=\"advanceSearch\"\n            [offset]=\"offset\"\n            [page]=\"page\"\n            [lastPage]=\"lastPage\"\n            [limit]=\"limit\"\n            [translations]=\"translations\"\n            [indexColumn]=\"indexColumn\"\n            [expandableRows]=\"expandableRows\"\n            [selectColumn]=\"selectColumn\"\n            [itemCount]=\"itemCount\"\n            [columns]=\"columns\"\n            (reload)=\"reloadItems()\"\n            (changeOffset)=\"offset=$event\"\n            (changePage)=\"page=$event\"\n    >\n    </data-table-pagination>\n\n    <div class=\"data-table-box\">\n        <table class=\"table table-condensed table-bordered data-table\">\n            <thead>\n            <tr>\n                <th scope=\"col\" [hide]=\"!expandColumnVisible\" class=\"expand-column-header\">\n                <th scope=\"col\" [hide]=\"!indexColumnVisible\" class=\"index-column-header\">\n                    <span [textContent]=\"indexColumnHeader\"></span>\n                </th>\n                <th scope=\"col\" [hide]=\"!selectColumnVisible\" class=\"select-column-header\">\n                    <input [hide]=\"!multiSelect\" type=\"checkbox\" [(ngModel)]=\"selectAllCheckbox\" [attr.aria-label]=\"translations.selectAllRows\" />\n                    <label class=\"mb-0 lbl\"></label>\n                </th>\n                <th scope=\"col\" *ngFor=\"let column of columns\" #th [hide]=\"!column.visible\"\n                    (click)=\"headerClicked(column, $event)\"\n                    (keydown.enter)=\"headerClicked(column, $event)\" (keydown.space)=\"headerClicked(column, $event)\"\n\n                    [class.sortable]=\"column.sortable\" [class.resizable]=\"column.resizable\"\n\n                    [ngClass]=\"column.styleClassObject\" class=\"column-header\" [style.width]=\"column.width | px\"\n\n                    [attr.aria-sort]=\"column.sortable ? (column.property === sortBy ? (sortAsc ? 'ascending' : 'descending') : 'none') : null\"\n                    [attr.tabindex]=\"column.sortable ? '0' : null\">\n                    <span *ngIf=\"!column.headerTemplate\" [textContent]=\"column.header\"></span>\n                    <span *ngIf=\"column.headerTemplate\" [ngTemplateOutlet]=\"column.headerTemplate\" [ngTemplateOutletContext]=\"{column: column}\"></span>\n                    <span class=\"column-sort-icon\" *ngIf=\"column.sortable\">\n                            <span class=\"fa fa-sort column-sortable-icon\" [hide]=\"column.property === sortBy\"></span>\n                            <span [hide]=\"column.property !== sortBy\">\n                                 <span class=\"fa\" [ngClass]=\"{'fa-sort-asc': !sortAsc, 'fa-sort-desc': sortAsc}\"></span>\n                            </span>\n                    </span>\n                    <span *ngIf=\"column.resizable\" class=\"column-resize-handle\" (mousedown)=\"resizeColumnStart($event, column, th)\"></span>\n                </th>\n            </tr>\n            </thead>\n            <tbody *ngFor=\"let item of items; let index=index\" class=\"data-table-row-wrapper\"\n                   dataTableRow #row [item]=\"item\" [index]=\"index\"\n                   (doubleClicked)=\"rowDoubleClicked(row, $event)\"\n                   (clicked)=\"rowClicked(row, $event)\"\n                   [translations]=\"translations\"\n                   [indexColumnVisible]=\"indexColumnVisible\"\n                   [expandableRows]=\"expandableRows\"\n                   [selectColumnVisible]=\"selectColumnVisible\"\n                   [expandColumnVisible]=\"expandColumnVisible\"\n                   [expandTemplate]=\"expandTemplate\"\n                   [columnCount]=\"columnCount\"\n                   [columns]=\"columns\"\n                   [backgroundColor]=\"getRowColor(item, index, row)\"\n                   (selectedChange)=\"onRowSelectChanged($event, row ? row : item)\"\n                   (expandedChange)=\"onExpandChanged($event, row ? row : item)\">\n            </tbody>\n            <tbody *ngIf=\"itemCount === 0 && noDataMessage\">\n            <tr>\n                <td [attr.colspan]=\"columnCount\">{{ noDataMessage }}</td>\n            </tr>\n            </tbody>\n            <tbody class=\"substitute-rows\" *ngIf=\"pagination && substituteRows\">\n            <tr *ngFor=\"let item of substituteItems, let index = index\"\n                [class.row-odd]=\"(index + items.length) % 2 === 0\"\n                [class.row-even]=\"(index + items.length) % 2 === 1\"\n            >\n                <td [hide]=\"!expandColumnVisible\"></td>\n                <td [hide]=\"!indexColumnVisible\">&nbsp;</td>\n                <td [hide]=\"!selectColumnVisible\"></td>\n                <td *ngFor=\"let column of columns\" [hide]=\"!column.visible\">\n            </tr>\n            </tbody>\n        </table>\n\n        <div class=\"loading-cover\" *ngIf=\"showReloading && reloading\"></div>\n    </div>\n</div>\n","import {DataTableParams} from '../types/data-table-params.type';\n\n\nexport class DataTableResource<T> {\n\n    constructor(private items: T[]) {\n    }\n\n    query(params: DataTableParams, filter?: (item: T, index: number, items: T[]) => boolean): Promise<T[]> {\n\n        let result: T[] = [];\n        if (filter) {\n            result = this.items.filter(filter);\n        } else {\n            result = this.items.slice(); // shallow copy to use for sorting instead of changing the original\n        }\n\n        // Update page number\n        // @ts-ignore\n        params.page = Math.floor(params.offset / params.limit);\n\n        if (params.sortBy) {\n            result.sort((a, b) => {\n                // @ts-ignore\n                if (typeof a[params.sortBy] === 'string') {\n                    // @ts-ignore\n                    return a[params.sortBy].localeCompare(b[params.sortBy]);\n                } else {\n                    // @ts-ignore\n                    return a[params.sortBy] - b[params.sortBy];\n                }\n            });\n            if (params.sortAsc === false) {\n                result.reverse();\n            }\n        }\n        if (params.offset !== undefined) {\n            if (params.limit === undefined) {\n                result = result.slice(params.offset, result.length);\n            } else {\n                result = result.slice(params.offset, params.offset + params.limit);\n\n            }\n\n        }\n\n        return new Promise((resolve, reject) => {\n            setTimeout(() => resolve(result));\n        });\n    }\n\n    count(): Promise<number> {\n        return new Promise((resolve, reject) => {\n            setTimeout(() => resolve(this.items.length));\n        });\n\n    }\n\n    setItems(v: T[]) {\n        this.items = v;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\n\nimport {DataTable} from './components/table/table.component';\nimport {DataTableColumn} from './components/column/column.component';\nimport {DataTableRow} from './components/row/row.component';\nimport {DataTablePagination} from './components/pagination/pagination.component';\nimport {DataTableHeader} from './components/header/header.component';\nimport {PixelConverter} from './utils/px';\nimport {Hide} from './utils/hide';\nimport {MinPipe} from './utils/min';\nimport {DataTableTranslations} from './types/data-table-translations.type';\nimport {CellCallback} from './types/cell-callback.type';\nimport {RowCallback} from './types/row-callback.type';\nimport {DataTableParams} from './types/data-table-params.type';\nimport {defaultTranslations} from './types/default-translations.type';\nimport {TranslateModule} from \"@ngx-translate/core\";\n\nexport * from './datasource/data-table-resource';\nexport {\n    DataTable, DataTableColumn, DataTableRow, DataTablePagination,\n    DataTableHeader, DataTableTranslations, CellCallback, RowCallback, DataTableParams, defaultTranslations\n};\n//export const DATA_TABLE_DIRECTIVES = [DataTable, DataTableColumn];\n\n@NgModule({\n    imports: [CommonModule, FormsModule, TranslateModule],\n    declarations: [\n        DataTable, DataTableColumn,\n        DataTableRow, DataTablePagination, DataTableHeader,\n        PixelConverter, Hide, MinPipe\n    ],\n    exports: [DataTable, DataTableColumn]\n})\nexport class GridModule {\n}\n","/*\nexport * from './components/column/column.component';\nexport * from './components/header/header.component';\nexport * from './components/pagination/pagination.component';\nexport * from './components/row/row.component';\nexport * from './components/table/table.component';\n\nexport * from './datasource/data-table-resource';\n*/\nexport * from './types/cell-callback.type';\nexport * from './types/data-table-params.type';\nexport * from './types/data-table-translations.type';\n//export * from './types/default-translations.type';\nexport * from './types/row-callback.type';\n\nexport * from './utils/drag';\nexport * from './utils/px';\nexport * from './utils/hide';\nexport * from './utils/min';\n\nexport * from './grid-module';\n","import {DatePipe} from \"@angular/common\";\n\nexport class DateUtils {\n    private static datePipe: DatePipe = new DatePipe('en-US');\n    public static DATETIME_FORMAT = 'dd/MM/yyyy HH:mm';\n    public static VN_DATETIME_FORMAT = 'HH:mm dd/MM/yyyy';\n    public static DATE_FORMAT = 'dd/MM/yyyy';\n    public static TIME_FORMAT = 'HH:mm';\n\n    public static format(date?: Date | number | string, format?: string): string {\n        if (!format) {\n            format = this.VN_DATETIME_FORMAT;\n        }\n        return <string>this.datePipe.transform(date, format);\n    }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable()\nexport class NumberUtilsService {\n\n    isNumeric(value: string | number):boolean {\n        if ((undefined === value) || (null === value)) {\n            return false;\n        }\n        if (typeof value === 'number') {\n            return true;\n        }\n        if (!/^[0-9.,]+$/.test(value)) {\n            return false;\n        }\n        if (!/^(?=.*\\d)\\d*[\\.\\,]?\\d*$/.test(value)) {\n            return false;\n        }\n        return !isNaN(parseFloat(value) - 0);\n    }\n\n    isObjectEmpty(obj: any): boolean {\n        return Object.keys(obj).length === 0 && obj.constructor === Object;\n    }\n\n    addSeparator(value: number | string, separator: string = ','): string | number {\n        if (value && separator) {\n            value = value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n        }\n        return value;\n    }\n\n    removeSeparator(value: number | string, separator: string = ','): string | number {\n        if (value && typeof value !== 'number') {\n            switch (separator) {\n                case ' ':\n                    value = value.toString().replace(/[\\s]/g, '');\n                    break;\n                case ',':\n                    value = value.toString().replace(/\\,/g, '');\n                    break;\n                default:\n                    value = value.toString().replace(/separator/g, '');\n                    break;\n            }\n        }\n        return value;\n    }\n\n}\n","import {\n    Directive,\n    Input,\n    HostListener,\n    forwardRef,\n    Attribute,\n    ElementRef,\n    OnInit,\n    EventEmitter,\n    Output\n} from '@angular/core';\nimport {NumberUtilsService} from './number-utils.service';\nimport {Validator, AbstractControl, NG_VALIDATORS} from '@angular/forms';\n\n@Directive({\n    selector: '[appNumberSeparator]',\n    providers: [\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumberSeparatorDirective), multi: true }\n    ]\n    /*\n    host: {\n        '(ngModelChange)' : 'onInputChange($event)'\n    }\n    */\n    ,\n    standalone: false\n})\nexport class NumberSeparatorDirective implements Validator, OnInit {\n\n    @Input('separator') separator = ',';\n    @Input('numberMin') numberMin?: string;\n    @Input('numberMax') numberMax?: string;\n    @Input('numberLength') numberLength?: string;\n\n    private readonly el: HTMLInputElement;\n\n    @Output() ngModel: EventEmitter<any> = new EventEmitter();\n\n    constructor(private utilsService: NumberUtilsService,\n                private elementRef: ElementRef,\n                // private injector: Injector,\n                @Attribute('name') public name: string) {\n\n        this.el = this.elementRef.nativeElement;\n        if (this.el) {\n            this.el.type = 'text';\n        }\n    }\n\n    ngOnInit() {\n    }\n\n    validate(c: AbstractControl): { [key: string]: any } | null {\n        // self value\n        let v = c.value;\n        if (v == 0 && !this.numberMin && !this.numberMax) {\n            this.el.value = \"0\";\n            return null;\n        }\n        if (v) {\n            // console.log('validate[value]', v, this.el.value, v !== this.el.value);\n\n            // first update\n            if (this.el && (v !== this.el.value)) {\n                this.el.value = <string>this.addSeparator(this.el.value);\n            }\n\n            // control value\n            v = parseInt(v.toString().replace(/[^0-9.,]/g, ''), 10);\n\n            // number validator\n            if (!this.isValidParam(v)) {\n                // @ts-ignore\n                this.el.value = null;\n                return {\n                    pattern: true\n                };\n            }\n\n            // min validator\n\n            if (v && this.numberMax && this.isValidParam(this.numberMax) && v > parseInt(this.numberMax, 10)) {\n                return {\n                    max: false\n                };\n            }\n\n            // max validator\n            if (v && this.numberMin && this.isValidParam(this.numberMin) && v < parseInt(this.numberMin, 10)) {\n                return {\n                    min: false\n                };\n            }\n        }\n\n        return null;\n    }\n\n    private isValidParam(param: any): boolean {\n        return param && this.utilsService.isNumeric(param);\n    }\n\n    private getNumber(value: string): string {\n        value = value.replace(/[^0-9.,]/g, '');\n        return value;\n    }\n\n    private checkLength(value: string): string {\n        if (this.numberLength && this.isValidParam(this.numberLength) && value.length > parseInt(this.numberLength, 10)) {\n            value = value.slice(0, parseInt(this.numberLength, 10));\n        }\n        return value;\n    }\n\n    @HostListener('input', ['$event'])\n    onInput($event: any) {\n        // console.log('onInput[data]', data.target.value);\n        let value = this.utilsService.removeSeparator($event.target.value, this.separator);\n        value = this.getNumber(<string> value);\n        if (this.utilsService.isNumeric(value)) {\n            value = this.checkLength(value);\n            $event.target.value = this.utilsService.addSeparator(value, this.separator);\n        }\n    }\n\n    /*\n\n    @HostListener(\"change\", [\"$event.target.value\"])\n    onChange(value) {\n        this.el.value = this.addSeparator(value);\n    }\n\n    onInputChange(value) {\n        const control = this.injector.get(NgControl);\n        const newValue = this.utilsService.removeSeparator(value, this.separator);\n        console.log('[newValue]', newValue);\n        control.valueAccessor.writeValue(newValue);\n    }\n\n    */\n\n    private addSeparator(v: string| number): string | number {\n        let value = this.utilsService.removeSeparator(v, this.separator);\n        value = this.getNumber(<string> value);\n        if (this.utilsService.isNumeric(value)) {\n            value = this.checkLength(value);\n            return this.utilsService.addSeparator(value, this.separator);\n        }\n        return v;\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NumberUtilsService} from \"./number-utils.service\";\nimport {NumberSeparatorDirective} from \"./number-separator.directive\";\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [NumberSeparatorDirective],\n    exports: [NumberSeparatorDirective],\n    providers: [NumberUtilsService]\n})\nexport class NumberFormatModule {\n}\n","export enum EXT_HASH_ALG {\n    SHA1 = \"SHA1\",\n    SHA256 = \"SHA256\"\n}\n\nexport enum EXT_ACTION {\n    EXIT = \"EXIT\",\n    GET_INFO = \"GET_INFO\",\n    GET_CERTS = \"GET_CERTS\",\n    SIGN_HASH = \"SIGN_HASH\"\n}\n\nexport const NATIVE_APP_URL = \"https://cdn.inetcloud.vn/data/products/einvoice/token/token-signer-latest.msi\";\n\nexport const EXT_CHROME_URL = \"https://chrome.google.com/webstore/detail/oambjgnagjajdpefjbmnoahbbbggfnin\";\n\nexport const EXT_FIREFOX_URL = \"\";\n","export class CertUtils {\r\n\r\n    static parseCertString(subject: string) {\r\n        const data: any = {};\r\n        subject.split(',').forEach((str) => {\r\n            const values = str.trim().split('=');\r\n            if (data[values[0]]) {\r\n                data[values[0]] += ', ' + values[1];\r\n            } else {\r\n                data[values[0]] = values[1];\r\n            }\r\n        });\r\n        return data;\r\n    }\r\n}","import {MessageSignHash} from \"./model/MessageSignHash\";\nimport {EXT_ACTION, EXT_CHROME_URL, EXT_FIREFOX_URL, EXT_HASH_ALG, NATIVE_APP_URL} from \"./Constants\";\nimport {CertData} from \"./model/CertData\";\nimport {ReplyData} from \"./model/ReplyData\";\nimport {CertUtils} from \"./CertUtils\";\n\nexport class WebTokenSigner {\n    isChrome: boolean = /Google Inc/.test(navigator.vendor);\n    isFirefox: boolean = /Firefox/.test(navigator.userAgent);\n    isWindows: boolean = navigator.platform.indexOf('Win') > -1;\n\n    osSupported: boolean = this.isWindows;\n    browserSupported: boolean = this.isChrome || this.isFirefox;\n    appInstalled: boolean = false;\n    get extInstalled(): boolean {\n        // @ts-ignore\n        return !!window['_ExtTokenBridge'];\n    };\n\n    appInfo = {\n        version: null,\n        nativeVersion: null,\n        nativeLatestVersion: null\n    };\n\n    textOsUnSupport: string = 'Tính năng đang hỗ trợ cho máy tính dùng Windows';\n    textBrowserUnSupport: string = 'Tính năng đang hỗ trợ cho Chrome và FireFox';\n    textExtNotInstalled: string = `\n    Cần cài đặt extension <a href=\"${this.isChrome ? EXT_CHROME_URL : EXT_FIREFOX_URL}\" target=\"_blank\">TokenSigner</a> trên trình duyệt Web\n    `;\n    textAppNotInstalled: string = `\n    Cần cài đặt ứng dụng ký <a href=\"${NATIVE_APP_URL + '?t=' + new Date().getTime()}\" target=\"_blank\">TokenSigner</a> trên máy tính\n    `;\n\n    title: string = \"Chứng thư số\";\n    description: string = \"Chọn chứng thư số để ký\";\n    textOk: string = 'Đồng ý';\n    textCancel: string = 'Đóng';\n    certNotFound: string = 'Không tìm thấy chứng thư số';\n    textIssuer: string = 'Nhà cung cấp';\n    textValid: string = 'Hiệu lực';\n    zIndex: number = 1100;\n\n    private _dialog: any;\n    private _certEl: any;\n    private _certs?: CertData[];\n    private _certCallback?: Function;\n\n    constructor() {\n        this._onEscapeKey = this._onEscapeKey.bind(this);\n    }\n\n    checkReady(silent?: boolean): Promise<boolean> {\n        return new Promise(resolve => {\n            if (this.appInstalled) {\n                return resolve(true);\n            }\n\n            if (!this.osSupported) {\n                if (!silent) {\n                    this._createCertDialog([], this.textOsUnSupport);\n                }\n                return resolve(false);\n            }\n\n            if (!this.browserSupported) {\n                if (!silent) {\n                    this._createCertDialog([], this.textBrowserUnSupport);\n                }\n                return resolve(false);\n            }\n\n            if (!this.extInstalled) {\n                if (!silent) {\n                    this._createCertDialog([], this.textExtNotInstalled);\n                }\n                return resolve(false);\n            }\n\n            this._loadAppInfo().then(() => {\n                if (!this.appInstalled && !silent) {\n                    this._createCertDialog([], this.textAppNotInstalled);\n                }\n                resolve(this.appInstalled);\n            });\n        });\n    }\n\n    checkNativeUpdate() {\n        // @ts-ignore\n        return this.appInstalled && (this.appInfo.nativeVersion < this.appInfo.nativeLatestVersion);\n    }\n\n    loadCerts(): Promise<CertData[]> {\n        return new Promise(resolve => {\n            this.checkReady(true).then((ready) => {\n                if (ready) {\n                    this._postExt(EXT_ACTION.GET_CERTS).then((data) => {\n                        const certs = data && data.data || [];\n                        certs.forEach((cert: any) => {\n                            cert.subjectData = CertUtils.parseCertString(cert.subject);\n                            cert.issuerData = CertUtils.parseCertString(cert.issuer);\n                        });\n                        resolve(certs);\n                    });\n                } else {\n                    resolve([]);\n                }\n            });\n        });\n    }\n\n    signHash(data: MessageSignHash): Promise<ReplyData> {\n        return new Promise(resolve => {\n            if (data && (data.hash || data.hashs)) {\n                this.checkReady().then((ready) => {\n                    if (ready) {\n                        data.hashAlg = data.hashAlg || EXT_HASH_ALG.SHA1;\n                        this._postExt(EXT_ACTION.SIGN_HASH, data).then(resolve);\n                    } else {\n                        // @ts-ignore\n                        resolve(null);\n                    }\n                });\n            } else {\n                resolve({\n                    error: \"HASH_MISSING\"\n                });\n            }\n        });\n    }\n\n    selectCert(forceSelect?: boolean) {\n        return new Promise(resolve => {\n            this.checkReady().then((ready) => {\n                if (ready) {\n                    this.loadCerts().then((certs) => {\n                        if (certs.length > 1 || forceSelect) {\n                            this._certCallback = resolve;\n                            this._createCertDialog(certs);\n                        } else {\n                            resolve(certs[0]);\n                        }\n                    });\n                } else {\n                    resolve(null);\n                }\n            });\n        });\n    }\n\n    dateDisplay(dateStr?: string) {\n        if(!dateStr) {\n            return  '';\n        }\n        const date = new Date(dateStr);\n        return [date.getDate(), date.getMonth() + 1, date.getFullYear()].join('/');\n    }\n\n    private _postExt(action: EXT_ACTION, data?: any): Promise<ReplyData> {\n        return new Promise(resolve => {\n            if (this.extInstalled) {\n                // @ts-ignore\n                window[\"_ExtTokenBridge\"].postToExtension(action, data).then((response) => {\n                    resolve(response);\n                });\n            } else {\n                resolve({\n                    error: \"EXTENSION_NOT_INSTALL\"\n                });\n            }\n        });\n    }\n\n    private _loadAppInfo(): Promise<any> {\n        return new Promise(resolve => {\n            this._postExt(EXT_ACTION.GET_INFO).then((reply: ReplyData) => {\n                if (reply && reply.data) {\n                    Object.assign(this.appInfo, reply.data);\n                }\n                this.appInstalled = !!this.appInfo.nativeVersion;\n                resolve(this.appInstalled);\n            });\n        });\n    }\n\n    private _createCertDialog(certs: CertData[], message?: string) {\n        if (this._dialog) {\n            return;\n        }\n        this._dialog = document.createElement('div');\n        this._dialog.classList.add('webtoken-dialog');\n        this._dialog.style.zIndex = this.zIndex;\n\n        this._certs = certs;\n\n        let msg;\n\n        if (message) {\n            msg = '<div class=\"webtoken-dialog__message\">' + message + '</div>';\n        } else {\n            msg = certs.length < 1 ? `<div class=\"webtoken-dialog__message\">${this.certNotFound}</div>` : this._buildCertHtml(certs);\n        }\n\n        this._dialog.innerHTML = `\n        <style>\n        .webtoken-dialog {\n            position: fixed;\n            top: 0;\n            right: 0;\n            bottom: 0;\n            left: 0;\n            background: rgba(0, 0, 0, .3);\n        }\n        .webtoken-dialog__container {\n            width: 400px;\n            margin: auto;\n            background: #fff;\n            overflow: hidden;\n            color: #333;\n            position: absolute;\n            transform: translate(-50%, -50%);\n            top: 50%;\n            left: 50%;\n            border-radius: 4px;\n        }\n        .webtoken-dialog__header {\n            padding: 10px 15px;\n            border-bottom: 1px solid #ddd;\n        }\n        .webtoken-dialog__title {\n            font-size: 20px;\n            font-weight: bold;\n            margin-bottom: 5px;\n        }\n        .webtoken-dialog__desc {\n            font-size: 14px;\n            line-height: 20px;\n        }\n        .webtoken-dialog__close {\n            float: right;\n            width: 30px;\n            cursor: pointer;\n            text-align: center;\n            line-height: 30px;\n            margin: -5px 0;\n            font-size: 20px;\n        }\n        .webtoken-dialog__body {\n            max-height: 250px;\n            overflow: auto;\n            font-size: 14px;\n            line-height: 20px;\n        }\n        .webtoken-dialog__message {\n            padding: 20px;            \n        }\n        .webtoken-cert__item {\n            padding: 10px 20px;\n            cursor: pointer;\n            line-height: 20px;\n        }\n        .webtoken-cert__item.active {\n            background: #ddd !important;\n        }\n        .webtoken-cert__item:hover {\n            background: #f5f5f5;\n        }\n        .webtoken-cert__title {\n            font-size: 18px;\n            margin-bottom: 2px;\n        }\n        .webtoken-cert__text {\n            font-size: 14px;\n        }\n        .webtoken-dialog__footer {\n            padding: 10px 20px;\n            border-top: 1px solid #ddd;\n            text-align: right;\n        }\n        .webtoken-dialog__button {\n            height: 30px;\n            line-height: 30px;\n            padding: 0 10px;\n            min-width: 60px;\n            margin-left: 10px;\n            cursor: pointer;\n            border-radius: 4px;\n            font-weight: bold;\n            background: #fff;\n            border: 1px solid #ddd;\n        }\n        .webtoken-dialog__button:hover {\n            opacity: 8;\n        }\n        .btn-ok {\n            background: #007bff;\n            border-color: #007bff;\n            color: #fff;\n        }\n        </style>\n        <div class=\"webtoken-dialog__container\">\n        <div class=\"webtoken-dialog__header\">\n        <div class=\"webtoken-dialog__close\">×</div>\n        <div class=\"webtoken-dialog__title\">${this.title}</div>\n        ${message ? '' : `<div class=\"webtoken-dialog__desc\">${this.description}</div>`}\n        </div>\n        <div class=\"webtoken-dialog__body\">${msg}</div>\n        <div class=\"webtoken-dialog__footer\">\n        <button class=\"btn-close webtoken-dialog__button\">${this.textCancel}</button>\n        ${message ? '' : `<button class=\"btn-ok webtoken-dialog__button\">${this.textOk}</button>`}\n        </div>\n        </div>\n        `;\n\n        const certEl = this._dialog.getElementsByClassName('webtoken-cert__item');\n\n        // Close dialog\n        this._dialog.addEventListener('click', () => this._closeDialog());\n        this._dialog.getElementsByClassName('webtoken-dialog__close')[0].addEventListener('click', () => this._closeDialog());\n\n        // Prevent close dialog\n        this._dialog.getElementsByClassName('webtoken-dialog__container')[0].addEventListener('click', function (e: any) {\n            e.stopPropagation();\n        });\n\n        this._dialog.getElementsByClassName('btn-close')[0].addEventListener('click', () => this._closeDialog());\n\n        if (certs && certs.length > 0) {\n            // Ok select\n            this._dialog.getElementsByClassName('btn-ok')[0].addEventListener('click', () => {\n                if (this._certEl) {\n                    let index = Number(this._certEl.getAttribute('index'));\n                    if (this._certs && this._certs[index]) {\n                        if(this._certCallback) {\n                            this._certCallback(this._certs[index]);\n                        }\n                    }\n                } else if(this._certCallback) {\n                    this._certCallback(null);\n                }\n                this._closeDialog();\n            });\n\n            // On click cert item\n            for (let i = 0; i < certEl.length; i++) {\n                certEl[i].addEventListener('click', (e: any) => this._onClickCertEl(e));\n            }\n\n            // Select first cert\n            certEl[0].click();\n        }\n\n        // Esc key close dialog\n        document.addEventListener('keydown', this._onEscapeKey);\n\n        document.body.appendChild(this._dialog);\n    }\n\n    private _buildCertHtml(certs: CertData[]) {\n        let html = '';\n        certs.forEach((cert: CertData, index) => {\n            html += `\n            <div class=\"webtoken-cert__item\" index=\"${index}\">\n            <div class=\"webtoken-cert__title\">${cert?.subjectData?.CN}</div>\n            <div class=\"webtoken-cert__text\">${this.textIssuer}: ${cert?.issuerData?.CN}</div>\n            <div class=\"webtoken-cert__text\">${this.textValid}: ${this.dateDisplay(cert?.validFrom)} - ${this.dateDisplay(cert?.validTo)}</div>\n            </div>\n            `;\n        });\n        return html;\n    }\n\n    private _onClickCertEl(e: any) {\n        let certEl = this._findCerEl(e.target);\n        if (certEl.classList.contains('active')) {\n            return;\n        }\n        if (this._certEl) {\n            this._certEl.classList.remove('active');\n        }\n        certEl.classList.add('active');\n        this._certEl = certEl;\n    }\n\n    // @ts-ignore\n    private _findCerEl(certEl: any) {\n        if (!certEl.classList.contains('webtoken-cert__item')) {\n            return this._findCerEl(certEl.parentNode);\n        }\n        return certEl;\n    }\n\n    private _closeDialog() {\n        document.body.removeChild(this._dialog);\n        document.removeEventListener('keydown', this._onEscapeKey);\n        this._dialog = null;\n        this._certEl = null;\n        // @ts-ignore\n        this._certCallback = null;\n    }\n\n    private _onEscapeKey(e: any) {\n        if (e.which === 27) {\n            this._closeDialog();\n        }\n    }\n}\n","import {EXT_ACTION, EXT_HASH_ALG} from \"./Constants\";\nimport {ReplyData} from \"./model/ReplyData\";\nimport {CertData} from \"./model/CertData\";\nimport * as JSEncryptModule from \"jsencrypt\";\nimport {SignedData, SignedReplyData} from \"./model/SignedReplyData\";\nimport {MessageSignHash} from \"./model/MessageSignHash\";\n\nconst JSEncrypt = JSEncryptModule.JSEncrypt;\n\nexport class TokenSimulator {\n\n    static _certs: CertData[] = [\n        {\n            subject: \"C=VN, ST=HCM, L=HCM, O=Calista, OU=Calista, , CN=iNet Solutions Corporation\",\n            issuer: \"C=VN, CN=Viettel-CA, O=iNet, OU=iNet Solutions\",\n            validFrom: \"2019-07-06\",\n            validTo: \"2030-07-07\",\n            serial: \"843F1DF405009A62\",\n            cert: \"MIICezCCAeQCCQCEPx30BQCaYjANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMC\" +\n                \"Vk4xDDAKBgNVBAgMA0hDTTEMMAoGA1UEBwwDSENNMRAwDgYDVQQKDAdDYWxpc3Rh\" +\n                \"MRAwDgYDVQQLDAdDYWxpc3RhMRAwDgYDVQQDDAdDYWxpc3RhMSAwHgYJKoZIhvcN\" +\n                \"AQkBFhFpbmZvQGluZXRjbG91ZC52bjAeFw0xOTA3MDgwNjM2MDNaFw0yMDA3MDcw\" +\n                \"NjM2MDNaMIGBMQswCQYDVQQGEwJWTjEMMAoGA1UECAwDSENNMQwwCgYDVQQHDANI\" +\n                \"Q00xEDAOBgNVBAoMB0NhbGlzdGExEDAOBgNVBAsMB0NhbGlzdGExEDAOBgNVBAMM\" +\n                \"B0NhbGlzdGExIDAeBgkqhkiG9w0BCQEWEWluZm9AaW5ldGNsb3VkLnZuMIGfMA0G\" +\n                \"CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxetXFs9aXIX89WX/cqc6pvAqfA1bSTwEC\" +\n                \"Qchv7Te/gHQJanYXBPOCpihJwa9jnKnI/S6y5KK+A6Ud/xO3CS6XWrJkd2AfGv1B\" +\n                \"o5of/4S3Y+AXiygimG9h/UOqZVgQQgkQbQd/c1uBEBznL0nvfZcUsTPI1DpDC9UK\" +\n                \"ZiUEWsaCTQIDAQABMA0GCSqGSIb3DQEBCwUAA4GBAITGgS2WPloMGmY6Z2zYyS3y\" +\n                \"as+/B59nevh6so3JRmFduQ1Qu9OwTWU0pySd4g/5ZpuUPZkhlUzFOX+VKOxYmqpr\" +\n                \"4T2u9yXtNau94NYFPOpvzQGsEaR5OP14Oy2u/RXUoucPsZ1GPX8QggsOTK1I4xXs\" +\n                \"sOVgB1hlg0hdAKFQuXTC\",\n            pk: \"MIICXAIBAAKBgQCxetXFs9aXIX89WX/cqc6pvAqfA1bSTwECQchv7Te/gHQJanYX\" +\n                \"BPOCpihJwa9jnKnI/S6y5KK+A6Ud/xO3CS6XWrJkd2AfGv1Bo5of/4S3Y+AXiygi\" +\n                \"mG9h/UOqZVgQQgkQbQd/c1uBEBznL0nvfZcUsTPI1DpDC9UKZiUEWsaCTQIDAQAB\" +\n                \"AoGAM3xy73uQUR+CjgWctiL8tPi8DA0n7rLElCcJQo8KkR9uihy8TUk+azRQk7UA\" +\n                \"cGFOT+RC29q/62ebSuxoh7y+KuZObhNT2wkqE7cjbB97HlAgZrQOf4rYG+vGN3nB\" +\n                \"a3ZIzGq/NK+lxmpY7ZvAnA4v3yUWUmSsmbD3c5v/LzBSWgECQQDj1RSkFs27anTb\" +\n                \"HfKW2IDbDwL/l2zHPiRdd4v7DUlzhsoKEA/YgqSM+b/jsJ5i3JrKmqftFYvNhQUo\" +\n                \"SDcBXxjhAkEAx2wXaNTknWP7rfF++AGcqh61lSLkxABMRqEKU1XbAihmHd5KZw3H\" +\n                \"V+VgN4hoOhOLOyPF5E1nE9rdm4rkFcm67QJBAMFKeP2Rvy9+7O8tZC/oNMIk5UVV\" +\n                \"Aduz9AQ8NU1kA2n49BY/dEIa7GISTWNt56I2STkUpt10xyww66Q2SDxoouECQDKq\" +\n                \"CYB+pd4+qpBUjFdhwXWO+7758HjDQp2nCEKHy25O6TKpaOmpnH1+LuWs6B3pHTRX\" +\n                \"ME2CRK/MqQR9UtkeOTkCQBV7PYWgWshl/vz6pvu4bDtIwL1IxAd4+Ig50gYHPZtG\" +\n                \"whnZfWGcgraHy6W7GHhfskABTC9nm9DgdYLO6XpfvVQ=\"\n        },\n        {\n            subject: \"C=VN, ST=HCM, L=HCM, O=Vinaco, OU=Vinaco, CN=Vinaco Corporation\",\n            issuer: \"C=VN, CN=Viettel-CA, O=iNet, OU=iNet Solutions\",\n            validFrom: \"2019-07-06\",\n            validTo: \"2030-07-07\",\n            serial: \"99184098D6747AFA\",\n            cert: \"MIICczCCAdwCCQCZGECY1nR6+jANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJW\" +\n                \"TjEMMAoGA1UECAwDSENNMQwwCgYDVQQHDANIQ00xDzANBgNVBAoMBlZpbmFjbzEP\" +\n                \"MA0GA1UECwwGVmluYWNvMQ8wDQYDVQQDDAZWaW5hY28xIDAeBgkqhkiG9w0BCQEW\" +\n                \"EWluZm9AaW5ldGNsb3VkLnZuMB4XDTE5MDcwODA2MzQxMFoXDTIwMDcwNzA2MzQx\" +\n                \"MFowfjELMAkGA1UEBhMCVk4xDDAKBgNVBAgMA0hDTTEMMAoGA1UEBwwDSENNMQ8w\" +\n                \"DQYDVQQKDAZWaW5hY28xDzANBgNVBAsMBlZpbmFjbzEPMA0GA1UEAwwGVmluYWNv\" +\n                \"MSAwHgYJKoZIhvcNAQkBFhFpbmZvQGluZXRjbG91ZC52bjCBnzANBgkqhkiG9w0B\" +\n                \"AQEFAAOBjQAwgYkCgYEA3K8A4TKSOGQQepR0ZWPIdi0ABnLXtYKqUdS84XIvCbCD\" +\n                \"60v7Rj8x/0YpLd99MMVfS1B3ZBF2XoCeE/qAg8BdtjSgnvHpyQX4vy9DRnKj56jJ\" +\n                \"TR0PX5njeG3xpToXjubusB70LVDqDSNERsmBga66oBbIDOtQj58dm3Dms4cyfCcC\" +\n                \"AwEAATANBgkqhkiG9w0BAQsFAAOBgQDPHQKecmW65R1Sng0A/HWHC71UvEGdshgK\" +\n                \"fODIlICjo0bX3n67Eu+m+VRFCKjWas9bYoPLQRx2m2F0qkdiim3iuKZf+0wYvXBk\" +\n                \"iDuPpoKG2Zq+aAFIh7H1qjgR34H96g3frl8dN5BQK4PFibrq24lxQuW2OvVwSOiz\" +\n                \"bar1/bl+jw==\",\n            pk: \"MIICWwIBAAKBgQDcrwDhMpI4ZBB6lHRlY8h2LQAGcte1gqpR1Lzhci8JsIPrS/tG\" +\n                \"PzH/Rikt330wxV9LUHdkEXZegJ4T+oCDwF22NKCe8enJBfi/L0NGcqPnqMlNHQ9f\" +\n                \"meN4bfGlOheO5u6wHvQtUOoNI0RGyYGBrrqgFsgM61CPnx2bcOazhzJ8JwIDAQAB\" +\n                \"AoGAKKkJ5XQ24rL1IlC1/XRcHAIAji+ctPHFRdyHjJZIOmXOeI0AWBoOsTURI0WZ\" +\n                \"QGItQ6gox0Q8Zf8WoSG3ig7odPEswLVqH/cr/0IsQ4yIMKlsw5JqizLq5Opcik61\" +\n                \"dH6wpLjVrNRcv2h/JVvmKdAo5K+KEwZ8UNmmEZK5O5cAssECQQD1qubI7/y4OWwQ\" +\n                \"PUYD9ZCocLWDLn34oBxN8ayNnLp/N4/D78jhpsDKSSPIcTFFSZVf4FplcEZS8f94\" +\n                \"fikFZmKHAkEA5fcZkwad0z/w5OahX0YHFRe3vNt7up4KEocXXgVETM79Yp6tiMbE\" +\n                \"+aEOtslBSfGAPiEIm46tXb9f0/ffid5hYQJAFm1uukNmf+8GFYlyfeQKO8ZmW75/\" +\n                \"05XSX69DgH4hbIHHBy052pfdm9oHgUIMLHYmQ+V4ezA/y0y6dOaXmh2ZuwJAN815\" +\n                \"UDsXyy5F51WrrPHSQCUMOfDMmmFFMm/DlNYUV8sWo3q7w2fwXl7dsi8t/6JxqyHa\" +\n                \"89xwZ0JMH6STguIKoQJAV/UVZO/8kpxbygpR4jlyA4cSrbb7bId8fk421CXivjcI\" +\n                \"JPRTHaTtJleJhITyPf48F/wwr0d62ENnuLLLv2QiRw==\"\n        }\n    ];\n\n    static postToExtension(action: EXT_ACTION, data?: any): Promise<ReplyData> {\n        const promise = new Promise((resolve) => {\n            switch (action) {\n                case EXT_ACTION.GET_INFO:\n                    resolve({data: {\n                        version: '0.0.1',\n                        nativeVersion: 1,\n                        nativeLatestVersion: 1,\n                    }});\n                    break;\n                case EXT_ACTION.SIGN_HASH:\n                    this._sign(data, resolve);\n                    break;\n                case EXT_ACTION.GET_CERTS:\n                    resolve({data: this._certs});\n                    break;\n            }\n        });\n        // @ts-ignore\n        return promise;\n    }\n\n    static _sign(data: MessageSignHash, resolve: any) {\n        try {\n            const cert = this._getCert(data.serial);\n            const response: SignedData = {\n                serial: cert.serial,\n                cert: cert.cert,\n                hashAlg: data.hashAlg || EXT_HASH_ALG.SHA1\n            };\n            // @ts-ignore\n            const jsEncrypt = new JSEncrypt(null);\n            jsEncrypt.setPrivateKey(cert.pk);\n\n            let __signature;\n            if (data.hashs) {\n                response.signatures = [];\n                data.hashs.forEach((hash) => {\n                    // @ts-ignore\n                    __signature = jsEncrypt.sign(hash, (str) => this._base64toHEX(str), data.hashAlg.toLocaleLowerCase());\n                    // @ts-ignore\n                    response.signatures.push(__signature);\n                });\n            } else {\n                if(data.hash) {\n                    __signature = jsEncrypt.sign(data.hash, (str) => {\n                        return this._base64toHEX(str);\n                    }, data.hashAlg ? data.hashAlg.toLocaleLowerCase(): '');\n                    if(__signature)\n                        response.signature = __signature;\n                }\n            }\n            resolve(<SignedReplyData>{\n                data: response\n            });\n        } catch (e: any) {\n            resolve(<SignedReplyData>{\n                error: \"SIGN_ERROR\",\n                errorMsg: e?.message\n            });\n        }\n    }\n\n    static _getCert(serial: any) {\n        for (let i = 0; i < this._certs.length; i++) {\n            if (this._certs[i].serial === serial) {\n                return this._certs[i];\n            }\n        }\n        return this._certs[0];\n    }\n\n    static _base64toHEX(base64: any) {\n\n        var raw = atob(base64);\n\n        var HEX = '';\n\n        for (let i = 0; i < raw.length; i++ ) {\n\n            var _hex = raw.charCodeAt(i).toString(16);\n\n            HEX += (_hex.length==2?_hex:'0'+_hex);\n\n        }\n        return HEX;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport {WebTokenSigner} from \"./lib/WebTokenSigner\";\nimport {CertData} from \"./lib/model/CertData\";\nimport {MessageSignHash} from \"./lib/model/MessageSignHash\";\nimport {ReplyData} from \"./lib/model/ReplyData\";\nimport {TokenSimulator} from \"./lib/TokenSimulator\";\nimport {EXT_HASH_ALG} from \"./lib/Constants\";\nimport {Observable, Subscriber} from \"rxjs\";\n\n@Injectable()\nexport class WebTokenService {\n\n  private _signer = new WebTokenSigner();\n\n  initForDevMode() {\n    console.warn(\"Init WebTokenSigner for dev mode. Not used it in production mode\");\n    this._signer.appInstalled = true;\n    // @ts-ignore\n    if (!window[\"_ExtTokenBridge\"]) {\n      // @ts-ignore\n      window[\"_ExtTokenBridge\"] = TokenSimulator;\n    }\n  }\n\n  ready(): Observable<boolean> {\n    return Observable.create((subscriber: Subscriber<boolean>) => {\n      this._signer.checkReady().then((supported) => subscriber.next(supported));\n    });\n  }\n\n  selectCert(forceSelect?: boolean): Observable<CertData> {\n    return Observable.create((subscriber: Subscriber<CertData>) => {\n      // @ts-ignore\n      this._signer.selectCert(forceSelect).then((cert: CertData) => subscriber.next(cert));\n    });\n  }\n\n  getCertBySerial(serial: string): Observable<CertData> {\n    return Observable.create((subscriber: Subscriber<CertData>) => {\n      this.loadCerts().subscribe((certs: CertData[]) => {\n        for (let i = 0; i < certs.length; i++) {\n          if (certs[i].serial === serial) {\n            return subscriber.next(certs[i]);\n          }\n        }\n        subscriber.next();\n      });\n    });\n  }\n\n  selectCertUnlock(serial?: string): Observable<CertData> {\n    return Observable.create((subscriber: any) => {\n      if (serial) {\n        this.getCertBySerial(serial).subscribe((cert: CertData) => this._unlockCert(cert, subscriber));\n      } else {\n        this.selectCert().subscribe((cert: CertData) => this._unlockCert(cert, subscriber));\n      }\n    });\n  }\n\n  private _unlockCert(cert: CertData, subscriber: Subscriber<CertData>) {\n    if (cert) {\n      this.unlockCert(cert).subscribe((unlocked: boolean) => {\n        cert.unlocked = unlocked;\n        subscriber.next(cert);\n      });\n    } else {\n      subscriber.next(cert);\n    }\n  }\n\n  unlockCert(cert: CertData): Observable<boolean> {\n    return Observable.create((subscriber: Subscriber<boolean>) => {\n      // Sign fake data to unlock token\n      const fakeData: MessageSignHash = {\n        hash: \"cA/metLrX7NUOfviDVsGYeRxAIo=\",\n        hashAlg: EXT_HASH_ALG.SHA1,\n        serial: cert.serial\n      };\n      this.signHash(fakeData).subscribe((response: ReplyData) => {\n        if (response && response.data && response.data.signature) {\n          subscriber.next(true);\n        } else {\n          subscriber.next(false);\n        }\n      });\n    });\n  }\n\n  loadCerts(): Observable<CertData[]> {\n    return Observable.create((subscriber: any) => {\n      this._signer.loadCerts().then((data) => subscriber.next(data));\n    });\n  }\n\n  signHash(data: MessageSignHash): Observable<ReplyData> {\n    return Observable.create((subscriber: Subscriber<ReplyData>) => {\n      this._signer.signHash(data).then((response) => subscriber.next(response));\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {WebTokenService} from \"./web-token.service\";\n\n@NgModule({\n  imports: [CommonModule],\n  providers: [WebTokenService]\n})\nexport class WebTokenModule {}\n","import {\n    Component,\n    ComponentFactoryResolver,\n    ComponentRef,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewContainerRef\n} from '@angular/core';\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {filter} from \"rxjs/operators\";\nimport {Subscription} from \"rxjs\";\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[navigationTab]',\n    templateUrl: './navigation-tab.component.html',\n    styleUrls: ['./navigation-tab.component.scss'],\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NavigationTab implements OnInit, OnDestroy {\n    @Input() tabs?: NavigationData[];\n    @Input() viewContainerRef?: ViewContainerRef;\n    @Input() prefix: string = '';\n\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onChange = new EventEmitter<any>();\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onLoad = new EventEmitter<any>();\n\n    tabActive?: NavigationData;\n    componentRef?: ComponentRef<any>;\n\n    private _router?: Subscription;\n\n    constructor(\n        private componentFactoryResolver: ComponentFactoryResolver,\n        private router: Router\n    ) {\n    }\n\n    ngOnInit() {\n\n        // @ts-ignore\n      this._router = this.router.events\n            .pipe(filter(event => event instanceof NavigationEnd))\n            .subscribe(() => {\n                this._activeTab();\n            });\n\n        this._activeTab();\n    }\n\n    ngOnDestroy() {\n        if (this._router) {\n            this._router.unsubscribe();\n        }\n    }\n\n    activeTab(tab: NavigationData) {\n        if (tab.active) {\n            return;\n        }\n        this.router.navigate([this.getFullPath(tab)]);\n        this.onChange.emit(tab);\n    }\n\n    getTabByPath(path: string): any {\n        // get tab with path matching\n        if(this.tabs) {\n          for (let i = 0; i < this.tabs.length; i++) {\n            if (this.getFullPath(this.tabs[i]) === path) {\n              return this.tabs[i];\n            }\n          }\n          return this.tabs[0];\n        }\n        return null;\n    }\n\n    getFullPath(tab: NavigationData) {\n        return this.prefix + tab.path;\n    }\n\n    private _loadComponent(tab: NavigationData) {\n        if (this.tabActive === tab) {\n            return;\n        }\n        this.tabActive = tab;\n        if(this.viewContainerRef) {\n          this.viewContainerRef.clear();\n          if (tab.component) {\n            let componentFactory = this.componentFactoryResolver.resolveComponentFactory(tab.component);\n            this.componentRef = this.viewContainerRef.createComponent(componentFactory);\n            this.onLoad.emit(this.componentRef);\n          }\n        }\n    }\n\n    private _activeTab() {\n        let tab = this.getTabByPath(this.router.url);\n        if (tab && this.tabs) {\n            this.tabs.forEach(_tab => _tab.active = false);\n            this._loadComponent(tab);\n            tab.active = true;\n        }\n    }\n}\n\nexport interface NavigationData {\n    name: string\n    component: any\n    path: string\n    active?: boolean\n}\n","<div class=\"navigation-tab\">\n  <ul class=\"nav navigation-tab__content\">\n    <li *ngFor=\"let tab of tabs\" class=\"nav-item\" [ngClass]=\"{'active': tab.active}\">\n      <span class=\"nav-link\" (click)=\"activeTab(tab)\">{{tab.name}}</span>\n    </li>\n  </ul>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NavigationTab} from \"./navigation-tab.component\";\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    exports: [NavigationTab],\n    declarations: [NavigationTab]\n})\nexport class NavigationTabModule {\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'truncate',\n    standalone: false\n})\nexport class TruncatePipe implements PipeTransform {\n\n  transform(value: string, limit: number): string {\n    if(!value) {\n      return '';\n    }\n    return value.length < limit ? value : value.slice(0, limit) + '...';\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {TruncatePipe} from \"./truncate.pipe\";\n@NgModule({\n  declarations: [TruncatePipe],\n  imports: [\n    CommonModule\n  ],\n  exports: [TruncatePipe]\n})\nexport class PipeCommonModule { }\n","import {\n    Directive,\n    Input,\n    HostListener,\n    forwardRef,\n    Attribute,\n    ElementRef,\n    EventEmitter,\n    Output\n} from '@angular/core';\nimport {Validator, AbstractControl, NG_VALIDATORS} from '@angular/forms';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'input[namingConvention]',\n    providers: [\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => NamingConventionDirective), multi: true }\n    ],\n    standalone: false\n})\nexport class NamingConventionDirective implements Validator {\n\n    @Input() pattern: string = '^[a-z_$][a-z_$0-9]*$';\n    private readonly el: HTMLInputElement;\n    private value: string = '';\n    @Output() ngModel: EventEmitter<any> = new EventEmitter();\n\n    constructor(\n        private elementRef: ElementRef,\n        @Attribute('name') public name: string) {\n\n        this.el = this.elementRef.nativeElement;\n        if (this.el) {\n            this.el.type = 'text';\n        }\n    }\n\n    validate(c: AbstractControl): { [key: string]: any } | null {\n        const v = c.value;\n        if (v) {\n            if (!this.isValid(v?.trim()?.removeAccents())) {\n                return {\n                    pattern: true\n                };\n            }\n        }\n        return null;\n    }\n\n    isValid(v: string): boolean {\n        return new RegExp(this.pattern).test(v);\n    }\n\n    @HostListener('input', ['$event'])\n    onInput($event: any) {\n        let value = $event.target?.value;\n        if (value) {\n            value = value?.toLowerCase()?.trim()?.removeAccents();\n            $event.target.value = value;\n            if (this.isValid(value)) {\n                this.value = value;\n            }\n        \n        }\n\n    }\n    @HostListener('focusout', ['$event'])\n    onFocusOut($event: any): void {\n        this.value = '';//reset cached value\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {NamingConventionDirective} from \"./naming-convention.directive\";\n\n@NgModule({\n  declarations: [\n      NamingConventionDirective\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [NamingConventionDirective]\n})\nexport class NamingConventionModule { }\n","/*\n * Public API Surface of inet-ui\n */\n\nexport * from './lib/model/index';\nexport * from './lib/decorator/index';\nexport * from './lib/pipes/index';\nexport * from './lib/common/index';\nexport * from './lib/interceptor/index';\nexport * from './lib/translate/index';\nexport * from './lib/web-socket/index';\nexport * from './lib/collapse/index';\nexport * from './lib/dialog/index';\nexport * from './lib/list-view/index';\nexport * from './lib/file/index';\nexport * from './lib/file-upload/index';\nexport * from './lib/open-graph/index';\n//export * from './lib/photoswipe/index';\n//export * from './lib/sticky-bar/index';\nexport * from './lib/image-cropper/index';\nexport * from './lib/pagination/index';\nexport * from './lib/datetime/index';\nexport * from './lib/plugin-manager/index';\nexport * from './lib/notify/index';\nexport * from './lib/custom-pagination/index';\nexport * from './lib/ngx-editor/index';\nexport * from './lib/grid/index';\nexport * from './lib/utils/index';\nexport * from './lib/number-format/index';\nexport * from './lib/web-token/index';\nexport * from './lib/navigation-tab/index';\nexport * from './lib/pipe-common/index';\nexport * from './lib/naming-convetion/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.CloudTranslateService","i3","i1.FileFormatService","i2.FileFormatService","i1.ViewerService","i2.FileIconPipe","i1.OpenGraphService","i2.ImageCropperComponent","i2.PluginManagerService","i4.SafePipe","i1.PluginManagerService","i1.Overlay","i1.ToastrService","i2.ToastPackage","i2.ToastrService","i1.NotifyService","i2.ToastrModule","i1.MessageService","Utils.restoreSelection","Utils.canEnableToolbarOptions","i3.MessageService","i4.CommandExecutorService","i5","Utils.saveSelection","i2.CommandExecutorService","i4.NgxGrippieComponent","i5.NgxEditorMessageComponent","i6.NgxEditorToolbarComponent","i3.Hide","i3.MinPipe","i4.DataTableRow","i5.DataTablePagination","i6.DataTableHeader","i7.Hide","i8.PixelConverter"],"mappings":"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"}