{"version":3,"file":"ui-tool-core.mjs","sources":["../../../../projects/ui-lib/src/constants/injectors/common-validator-injectors.ts","../../../../projects/ui-lib/src/constants/injectors/injectors.ts","../../../../projects/ui-lib/src/constants/injectors/multiple-validation-summarizer-injectors.ts","../../../../projects/ui-lib/src/constants/injectors/validation-summarizer-injectors.ts","../../../../projects/ui-lib/src/constants/built-in-validation-message.constant.ts","../../../../projects/ui-lib/src/constants/dialog-result.constant.ts","../../../../projects/ui-lib/src/constants/dialog-builder-exception.constant.ts","../../../../projects/ui-lib/src/constants/dialog-kind.constant.ts","../../../../projects/ui-lib/src/constants/smart-navigator-exceptions.ts","../../../../projects/ui-lib/src/constants/spinner-commands.ts","../../../../projects/ui-lib/src/enums/visibilities.ts","../../../../projects/ui-lib/src/models/implementations/dialog-settings/confirmation-dialog-settings.ts","../../../../projects/ui-lib/src/models/implementations/dialog-settings/error-dialog-settings.ts","../../../../projects/ui-lib/src/models/implementations/dialog-settings/info-dialog-settings.ts","../../../../projects/ui-lib/src/models/implementations/dialog-settings/warning-dialog-settings.ts","../../../../projects/ui-lib/src/models/implementations/dialogs/basic-dialog-button.ts","../../../../projects/ui-lib/src/models/implementations/dialogs/dialog-result.ts","../../../../projects/ui-lib/src/models/implementations/dialogs/template-dialog-button.ts","../../../../projects/ui-lib/src/models/implementations/smart-navigators/navigate-to-screen-request.ts","../../../../projects/ui-lib/src/models/implementations/spinners/delete-spinner-command.ts","../../../../projects/ui-lib/src/models/implementations/spinners/display-spinner-command.ts","../../../../projects/ui-lib/src/models/implementations/spinners/purge-spinner-command.ts","../../../../projects/ui-lib/src/models/implementations/validation-summarizers/validation-item-build-context.ts","../../../../projects/ui-lib/src/models/implementations/validation-summarizers/validation-message.ts","../../../../projects/ui-lib/src/models/interfaces/spinners/display-spinner-options.interface.ts","../../../../projects/ui-lib/src/models/html-content.ts","../../../../projects/ui-lib/src/models/index.ts","../../../../projects/ui-lib/src/modules/banner/banner.component.ts","../../../../projects/ui-lib/src/modules/banner/banner.component.html","../../../../projects/ui-lib/src/services/implementations/banners/banner.service.ts","../../../../projects/ui-lib/src/services/implementations/window.service.ts","../../../../projects/ui-lib/src/constants/injectors/internal-injectors.ts","../../../../projects/ui-lib/src/factories/banner.factory.ts","../../../../projects/ui-lib/src/modules/banner/banner.module.ts","../../../../projects/ui-lib/src/modules/sentinel/requirement-sentinel/requirement-sentinel.directive.ts","../../../../projects/ui-lib/src/modules/sentinel/requirement-sentinel/requirement-sentinel.service.ts","../../../../projects/ui-lib/src/factories/requirement-sentinel.factory.ts","../../../../projects/ui-lib/src/modules/sentinel/requirement-sentinel/requirement-sentinel.module.ts","../../../../projects/ui-lib/src/modules/sentinel/feature-sentinel/feature-sentinel.directive.ts","../../../../projects/ui-lib/src/modules/sentinel/feature-sentinel/feature-sentinel.module.ts","../../../../projects/ui-lib/src/modules/sentinel/role-sentinel/role-sentinel.directive.ts","../../../../projects/ui-lib/src/modules/sentinel/role-sentinel/role-sentinel.module.ts","../../../../projects/ui-lib/src/services/implementations/smart-navigator.service.ts","../../../../projects/ui-lib/src/pipes/smart-navigators/to-raw-url.pipe.ts","../../../../projects/ui-lib/src/pipes/smart-navigators/to-url-tree.pipe.ts","../../../../projects/ui-lib/src/pipes/smart-navigators/to-url.pipe.ts","../../../../projects/ui-lib/src/modules/smart-navigator/smart-navigator.module.ts","../../../../projects/ui-lib/src/modules/spinner/basic-spinner/basic-spinner.component.ts","../../../../projects/ui-lib/src/modules/spinner/basic-spinner/basic-spinner.component.html","../../../../projects/ui-lib/src/modules/spinner/spinner-container.component.ts","../../../../projects/ui-lib/src/modules/spinner/spinner-container.component.html","../../../../projects/ui-lib/src/services/implementations/spinners/spinner.service.ts","../../../../projects/ui-lib/src/modules/spinner/spinner-container.module.ts","../../../../projects/ui-lib/src/modules/spinner/index.ts","../../../../projects/ui-lib/src/modules/validator/common-validator/validation-summarizer-directive/validator-class-base.ts","../../../../projects/ui-lib/src/modules/validator/common-validator/validation-summarizer-directive/validator-control-watch.directive.ts","../../../../projects/ui-lib/src/modules/validator/common-validator/validation-summarizer-directive/with-invalid-validator-class-in-form-control.directive.ts","../../../../projects/ui-lib/src/modules/validator/common-validator/validation-summarizer-directive/with-invalid-validator-class-not-form-control.directive.ts","../../../../projects/ui-lib/src/services/implementations/validators/validation-summarizers/validation-summarizer-base.service.ts","../../../../projects/ui-lib/src/services/implementations/validators/validation-summarizers/validation-summarizer.service.ts","../../../../projects/ui-lib/src/providers/implementations/validation-summarizer-option.provider.ts","../../../../projects/ui-lib/src/factories/common-validator.factory.ts","../../../../projects/ui-lib/src/modules/validator/common-validator/common-validator.module.ts","../../../../projects/ui-lib/src/modules/validator/multiple-validation-summarizer/directives/multiple-validation-summarizer-item-context.directive.ts","../../../../projects/ui-lib/src/constants/internal-exception-codes.ts","../../../../projects/ui-lib/src/modules/validator/validation-summarizer/validation-summarizer-item/validation-summarizer-item.directive.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-html/to-trusted-html.pipe.ts","../../../../projects/ui-lib/src/modules/validator/validation-summarizer/validation-summarizer.component.ts","../../../../projects/ui-lib/src/modules/validator/validation-summarizer/validation-summarizer.component.html","../../../../projects/ui-lib/src/modules/validator/multiple-validation-summarizer/multiple-validation-summarizer.component.ts","../../../../projects/ui-lib/src/modules/validator/multiple-validation-summarizer/multiple-validation-summarizer.component.html","../../../../projects/ui-lib/src/services/implementations/validators/multiple-validation-summarizers/multiple-validation-summarizer.service.ts","../../../../projects/ui-lib/src/factories/multiple-validation-summarizer.factory.ts","../../../../projects/ui-lib/src/factories/validation-summarizer.factory.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-html/to-trusted-html-pipe.module.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-resource-url/to-trusted-resource-url.pipe.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-resource-url/to-trusted-resource-url-pipe.module.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-script/to-trusted-script.pipe.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-script/to-trusted-script-pipe.module.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-style/to-trusted-style.pipe.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-style/to-trusted-style-pipe.module.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-url/to-trusted-url.pipe.ts","../../../../projects/ui-lib/src/pipes/sanitizers/to-trusted-url/to-trusted-url-pipe.module.ts","../../../../projects/ui-lib/src/modules/validator/validation-summarizer/validation-summarizer.module.ts","../../../../projects/ui-lib/src/modules/validator/multiple-validation-summarizer/multiple-validation-summarizer.module.ts","../../../../projects/ui-lib/src/modules/validator/pipes/has-validators/has-any-validators.pipe.ts","../../../../projects/ui-lib/src/factories/has-any-validators-pipe.factory.ts","../../../../projects/ui-lib/src/modules/validator/pipes/has-validators/has-any-validators.module.ts","../../../../projects/ui-lib/src/modules/window-accessor/window-accessor.module.ts","../../../../projects/ui-lib/src/modules/index.ts","../../../../projects/ui-lib/src/services/implementations/dialog.service.ts","../../../../projects/ui-lib/src/services/implementations/default-screen-code.resolver.ts","../../../../projects/ui-lib/src/services/interfaces/index.ts","../../../../projects/ui-lib/src/public-api.ts","../../../../projects/ui-lib/src/ui-tool-core.ts"],"sourcesContent":["// Multiple validation summarizer\nimport {InjectionToken} from '@angular/core';\nimport {IValidationSummarizerService} from '../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {IValidationSummarizerOptions} from '../../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\nimport {IValidationSummarizerOptionProvider} from '../../providers/interfaces/validation-summarizer-options-provider.interface';\nimport {\n  ICommonValidatorModuleOptionProvider\n} from '../../providers/interfaces/common-validator-module-option-provider.interface';\n\nexport const COMMON_VALIDATOR_SERVICE = new InjectionToken<IValidationSummarizerService>('COMMON_VALIDATOR_SERVICE');\nexport const COMMON_VALIDATOR_OPTIONS = new InjectionToken<IValidationSummarizerOptions>('COMMON_VALIDATOR_OPTIONS');\nexport const COMMON_VALIDATOR_OPTIONS_PROVIDER =\n  new InjectionToken<ICommonValidatorModuleOptionProvider>('COMMON_VALIDATOR_OPTIONS_PROVIDER');\n","import {InjectionToken} from '@angular/core';\nimport {ISpinnerService} from '../../services/interfaces/spinner-service.interface';\nimport {IBannerService} from '../../services/interfaces/banners/banner-service.interface';\nimport {ISmartNavigatorService} from '../../services/interfaces/smart-navigator-service.interface';\nimport {IBannerContentBuilder} from '../../services/interfaces/banners/banner-content-builder.interface';\nimport {IDialogBuilder} from '../../services/interfaces/dialogs/dialog-builder.interface';\nimport {IScreenCodeResolver} from '../../services/interfaces/screen-code-resolver.interface';\nimport {IMeetRequirementService} from '../../modules/sentinel/requirement-sentinel/requirement-sentinel-service.interface';\nimport {IRoleSentinelService} from '../../modules/sentinel/role-sentinel/role-sentinel-service.interface';\nimport {IRequirementHandler} from '../../modules/sentinel/requirement-sentinel/requirement-handler.interface';\nimport {IFeatureSentinelService} from '../../modules/sentinel/feature-sentinel/feature-sentinel-service.interface';\nimport {IDialogService} from '../../services/interfaces/dialogs/dialog-service.interface';\nimport {ISpinnerContext} from '../../models';\n\n// Spinner providers.\nexport const SPINNER_SERVICE = new InjectionToken<ISpinnerService>('SPINNER_SERVICE');\nexport const SPINNER_METHOD_INVOKE_CALLBACK = new InjectionToken<(methodName: string, payload: any) => void>('SPINNER_METHOD_INVOKE_CALLBACK');\n\n// Banner providers.\nexport const BANNER_SERVICE = new InjectionToken<IBannerService>('BANNER_SERVICE');\nexport const BANNER_BUILDER = new InjectionToken<IBannerContentBuilder>('BANNER_BUILDER');\n\n// Smart navigator providers.\nexport const SMART_NAVIGATOR_SERVICE = new InjectionToken<ISmartNavigatorService>('SMART_NAVIGATOR_SERVICE');\nexport const SMART_NAVIGATOR_ROUTES = new InjectionToken<{ [key: string]: string }>('SMART_NAVIGATOR_ROUTES');\nexport const SMART_NAVIGATOR_SCREEN_CODE_RESOLVER = new InjectionToken<IScreenCodeResolver>('SMART_NAVIGATOR_SCREEN_CODE_RESOLVER');\n\n// Dialog providers.\nexport const DIALOG_BUILDER = new InjectionToken<IDialogBuilder>('DIALOG_BUILDER');\nexport const DIALOG_SERVICE = new InjectionToken<IDialogService>('DIALOG_SERVICE');\n\n// Windows provider.\nexport const WINDOW = new InjectionToken('WINDOW');\n\n// Sentinel providers\nexport const REQUIREMENT_SENTINEL_SERVICE = new InjectionToken<IMeetRequirementService>('REQUIREMENT_SENTINEL_SERVICE');\nexport const REQUIREMENT_HANDLER = new InjectionToken<IRequirementHandler>('REQUIREMENT_HANDLER');\n\nexport const FEATURE_SENTINEL_SERVICE = new InjectionToken<IFeatureSentinelService>('FEATURE_SENTINEL_SERVICE');\nexport const ROLE_SENTINEL_SERVICE =\n  new InjectionToken<IRoleSentinelService>('ROLE_SENTINEL_SERVICE');\n","// Multiple validation summarizer\nimport {InjectionToken} from '@angular/core';\nimport {IValidationSummarizerService} from '../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {IValidationSummarizerOptions} from '../../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\nimport {IValidationSummarizerOptionProvider} from '../../providers/interfaces/validation-summarizer-options-provider.interface';\n\nexport const MULTIPLE_VALIDATION_SUMMARIZER_SERVICE = new InjectionToken<IValidationSummarizerService>('MULTIPLE_VALIDATION_SUMMARIZER_SERVICE');\nexport const MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS = new InjectionToken<IValidationSummarizerOptions>('MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER');\nexport const MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER = new InjectionToken<IValidationSummarizerOptionProvider>('MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER');\n","// Validation summarizer providers.\nimport {InjectionToken} from '@angular/core';\nimport {\n  IValidationSummarizerService\n} from '../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {\n  IValidationSummarizerItemTemplateBuilder\n} from '../../services/interfaces/validation-summarizers/validation-summarizer-item-template-builder.interface';\nimport {IValidationSummarizerOptionProvider} from '../../providers/interfaces/validation-summarizer-options-provider.interface';\n\nexport const VALIDATION_SUMMARIZER_SERVICE = new InjectionToken<IValidationSummarizerService>('VALIDATION_SUMMARIZER_PROVIDER');\nexport const VALIDATION_ITEM_TEMPLATE_BUILDERS =\n  new InjectionToken<IValidationSummarizerItemTemplateBuilder[]>('VALIDATION_ITEM_TEMPLATE_BUILDERS_PROVIDER');\nexport const VALIDATION_SUMMARIZER_OPTIONS_PROVIDER = new InjectionToken<IValidationSummarizerOptionProvider>('VALIDATION_SUMMARIZER_OPTION_PROVIDER');\n","// Key-value which is used for mapping validation error with its actual display.\nexport const builtInValidationMessages: {[name: string]: string; } = {\n  required: 'MSG_VALIDATION_PROPERTY_REQUIRED',\n  min: 'MSG_VALIDATION_PROPERTY_MIN',\n  max: 'MSG_VALIDATION_PROPERTY_MAX',\n  minlength: 'MSG_VALIDATION_PROPERTY_MIN_LENGTH',\n  maxlength: 'MSG_VALIDATION_PROPERTY_MAX_LENGTH',\n  pattern: 'MSG_VALIDATION_PROPERTY_PATTERN',\n  email: 'MSG_VALIDATION_PROPERTY_EMAIL'\n};\n","export class DialogResultConstant {\n\n  //#region Properties\n\n  public static readonly reject = 'DISMISS';\n\n  public static readonly resolve = 'MANUALLY_CLOSED';\n\n  //#endregion\n\n}\n","export class DialogBuilderExceptionConstant {\n\n  //#region Properties\n\n  public static readonly invalidDialogSettings = 'INVALID_DIALOG_SETTINGS';\n\n  //#endregion\n}\n","export class DialogKindConstant {\n\n  //#region Properties\n\n  public static readonly confirmation = 'confirmation';\n\n  public static readonly error = 'error';\n\n  public static readonly info = 'info';\n\n  public static readonly warning = 'warning';\n\n  //#endregion\n\n}\n","export class SmartNavigatorExceptions {\n\n  //#region Properties\n\n  public static readonly invalidScreenCode = 'INVALID_SCREEN_CODE';\n\n  public static readonly invalidNavigationRequest = 'INVALID_NAVIGATION_REQUEST';\n\n  public static readonly screenCodeMappingNotFound = 'SCREEN_CODE_MAPPING_NOT_FOUND';\n\n  public static readonly urlNotFound = 'SCREEN_URL_NOT_FOUND';\n\n  //#endregion\n\n}\n","export class SpinnerCommands {\n\n  //#region Properties\n\n  public static readonly display = 'DISPLAY_SPINNER';\n\n  public static readonly close = 'CLOSE_SPINNER';\n\n  public static readonly purge = 'PURGE_SPINNER';\n\n  //#endregion\n\n}\n","export enum Visibilities {\n  hidden,\n  visible\n}\n","import {IDialogSettings} from '../../interfaces/dialogs/dialog-settings.interface';\nimport {IDialogButton} from '../../interfaces';\nimport {HtmlContent} from '../../html-content';\nimport {Injector, TemplateRef} from '@angular/core';\nimport {DialogKindConstant} from '../../../constants/dialog-kind.constant';\n\nexport class ConfirmationDialogSettings implements IDialogSettings {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  public message: string | HtmlContent | TemplateRef<any>;\n\n  public icon?: HtmlContent | TemplateRef<any>;\n\n  public backdropClasses: string[];\n\n  public buttons: IDialogButton[];\n\n  public centered: boolean;\n\n  public dialogClasses: string[];\n\n  public disableClose: boolean;\n\n  public injector?: Injector;\n\n  public title: string | HtmlContent | TemplateRef<any>;\n\n  //#endregion\n\n\n  //#region Constructor\n\n  public constructor(message: string | HtmlContent | TemplateRef<any>,\n                     title?: string | HtmlContent | TemplateRef<any>,\n                     icon?: HtmlContent | TemplateRef<any>,\n                     injector?: Injector) {\n    this.kind = DialogKindConstant.confirmation;\n    this.message = message;\n    this.title = title || '';\n    this.icon = icon;\n    this.injector = injector;\n\n    this.backdropClasses = [];\n    this.buttons = [];\n    this.centered = true;\n    this.dialogClasses = [];\n    this.disableClose = false;\n  }\n\n  //#endregion\n\n}\n","import {IDialogSettings} from '../../interfaces/dialogs/dialog-settings.interface';\nimport {HtmlContent} from '../../html-content';\nimport {Injector, TemplateRef} from '@angular/core';\nimport {DialogKindConstant} from '../../../constants/dialog-kind.constant';\nimport {IDialogButton} from '../../interfaces';\n\n// tslint:disable-next-line:no-empty-interface\nexport class ErrorDialogSettings implements IDialogSettings {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  public message: string | HtmlContent | TemplateRef<any>;\n\n  public icon?: HtmlContent | TemplateRef<any>;\n\n  public backdropClasses: string[];\n\n  public buttons: IDialogButton[];\n\n  public centered: boolean;\n\n  public dialogClasses: string[];\n\n  public disableClose: boolean;\n\n  public injector?: Injector;\n\n  public title: string | HtmlContent | TemplateRef<any>;\n\n  //#endregion\n\n\n  //#region Constructor\n\n  public constructor(message: string | HtmlContent | TemplateRef<any>,\n                     title?: string | HtmlContent | TemplateRef<any>,\n                     icon?: HtmlContent | TemplateRef<any>,\n                     injector?: Injector) {\n    this.kind = DialogKindConstant.error;\n    this.message = message;\n    this.title = title || '';\n    this.icon = icon;\n    this.injector = injector;\n\n    this.backdropClasses = [];\n    this.buttons = [];\n    this.centered = true;\n    this.dialogClasses = [];\n    this.disableClose = false;\n  }\n\n  //#endregion\n}\n","import {IDialogSettings} from '../../interfaces/dialogs/dialog-settings.interface';\nimport {HtmlContent} from '../../html-content';\nimport {Injector, TemplateRef} from '@angular/core';\nimport {DialogKindConstant} from '../../../constants/dialog-kind.constant';\nimport {IDialogButton} from '../../interfaces';\n\n// tslint:disable-next-line:no-empty-interface\nexport class InfoDialogSettings implements IDialogSettings {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  public message: string | HtmlContent | TemplateRef<any>;\n\n  public icon?: HtmlContent | TemplateRef<any>;\n\n  public backdropClasses: string[];\n\n  public buttons: IDialogButton[];\n\n  public centered: boolean;\n\n  public dialogClasses: string[];\n\n  public disableClose: boolean;\n\n  public injector?: Injector;\n\n  public title: string | HtmlContent | TemplateRef<any>;\n\n  //#endregion\n\n\n  //#region Constructor\n\n  public constructor(message: string | HtmlContent | TemplateRef<any>,\n                     title?: string | HtmlContent | TemplateRef<any>,\n                     icon?: HtmlContent | TemplateRef<any>,\n                     injector?: Injector) {\n    this.kind = DialogKindConstant.info;\n    this.message = message;\n    this.title = title || '';\n    this.icon = icon;\n    this.injector = injector;\n\n    this.backdropClasses = [];\n    this.buttons = [];\n    this.centered = true;\n    this.dialogClasses = [];\n    this.disableClose = false;\n  }\n\n  //#endregion\n}\n","import {IDialogSettings} from '../../interfaces/dialogs/dialog-settings.interface';\nimport {HtmlContent} from '../../html-content';\nimport {Injector, TemplateRef} from '@angular/core';\nimport {DialogKindConstant} from '../../../constants/dialog-kind.constant';\nimport {IDialogButton} from '../../interfaces';\n\nexport class WarningDialogSettings implements IDialogSettings {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  public message: string | HtmlContent | TemplateRef<any>;\n\n  public icon?: HtmlContent | TemplateRef<any>;\n\n  public backdropClasses: string[];\n\n  public buttons: IDialogButton[];\n\n  public centered: boolean;\n\n  public dialogClasses: string[];\n\n  public disableClose: boolean;\n\n  public injector?: Injector;\n\n  public title: string | HtmlContent | TemplateRef<any>;\n\n  //#endregion\n\n\n  //#region Constructor\n\n  public constructor(message: string | HtmlContent | TemplateRef<any>,\n                     title?: string | HtmlContent | TemplateRef<any>,\n                     icon?: HtmlContent | TemplateRef<any>,\n                     injector?: Injector) {\n    this.kind = DialogKindConstant.warning;\n    this.message = message;\n    this.title = title || '';\n    this.icon = icon;\n    this.injector = injector;\n\n    this.backdropClasses = [];\n    this.buttons = [];\n    this.centered = true;\n    this.dialogClasses = [];\n    this.disableClose = false;\n  }\n\n  //#endregion\n}\n","import {Observable} from 'rxjs';\nimport {IDialogButton} from '../../interfaces';\nimport {DialogResult} from './dialog-result';\nimport {HtmlContent} from '../../html-content';\nimport {TemplateRef} from '@angular/core';\n\nexport class BasicDialogButton implements IDialogButton {\n\n  //#region Properties\n\n  public classes?: string[];\n\n  // Whether button should be disabled or not.\n  public disabledHandler?: () => boolean;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(public content: string | HtmlContent | TemplateRef<any>,\n                     public clickHandler?: () => boolean | DialogResult<any> | Observable<DialogResult<any>>,\n                     classes?: string[]) {\n    this.classes = classes;\n  }\n\n  //#endregion\n\n\n}\n","export class DialogResult<T> {\n\n  //#region Properties\n\n  // tslint:disable-next-line:variable-name\n  private readonly _action: string;\n\n  // tslint:disable-next-line:variable-name\n  private readonly _data: T;\n\n  //#endregion\n\n  //#region Accessor\n\n  // Modal dialog action.\n  public get action(): string {\n    return this._action;\n  }\n\n  // Data.\n  public get data(): T {\n    return this._data;\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  constructor(action: string, data: T) {\n    this._action = action;\n    this._data = data;\n  }\n\n  //#endregion\n\n}\n","import {IDialogButton} from '../../interfaces/dialogs/dialog-button.interface';\nimport {TemplateRef} from '@angular/core';\n\nexport class TemplateDialogButton implements IDialogButton {\n\n  //#region Properties\n\n  public content: TemplateRef<any>;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(content: TemplateRef<any>) {\n    this.content = content;\n  }\n\n  //#endregion\n\n}\n","import {NavigationExtras} from '@angular/router';\n\nexport class NavigateToScreenRequest<T> {\n\n  //#region Properties\n\n  public code: string;\n\n  public readonly routeParams?: T;\n\n  public readonly extras?: NavigationExtras;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(code: string,\n                     routeParams?: T,\n                     extras?: NavigationExtras) {\n    this.code = code;\n    this.routeParams = routeParams;\n    this.extras = extras;\n  }\n\n  //#endregion\n\n}\n","import {ISpinnerCommand} from '../../interfaces';\nimport {SpinnerCommands} from '../../../constants/spinner-commands';\n\nexport class DeleteSpinnerCommand implements ISpinnerCommand {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  // Request to be deleted.\n  public id?: string;\n\n  // Id of container whose spinner must be deleted.\n  public containerId: string;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(containerId: string, id?: string) {\n    this.kind = SpinnerCommands.close;\n    this.containerId = containerId;\n    this.id = id;\n  }\n\n  //#endregion\n\n}\n","import {IDisplaySpinnerOptions, ISpinnerCommand} from '../../interfaces';\nimport {SpinnerCommands} from '../../../constants/spinner-commands';\n\nexport class DisplaySpinnerCommand implements ISpinnerCommand {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(public containerId: string,\n                     public id: string,\n                     public options?: IDisplaySpinnerOptions) {\n    this.kind = SpinnerCommands.display;\n  }\n\n  //#endregion\n\n}\n","import {ISpinnerCommand} from '../../interfaces';\nimport {SpinnerCommands} from '../../../constants';\n\nexport class PurgeSpinnerCommand implements ISpinnerCommand {\n\n  //#region Properties\n\n  public readonly kind: string;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(public readonly containerId: string) {\n    this.kind = SpinnerCommands.purge;\n  }\n\n  //#endregion\n\n}\n","import {ValidationMessage} from './validation-message';\nimport {AbstractControl, NgControl} from '@angular/forms';\n\nexport class ValidationItemBuildContext {\n\n  //#region Constructor\n\n  public constructor(public readonly containerGroupId: string,\n                     public readonly label: string | undefined,\n                     public readonly validationMessage: ValidationMessage | undefined,\n                     public readonly control: AbstractControl | NgControl | undefined | null) {\n  }\n\n  //#endregion\n\n}\n","export class ValidationMessage {\n\n  //#region Methods\n\n  // Property name which is validated.\n  public key: string;\n\n  // Validation content.\n  public content: string;\n\n  // Additional value that can be used in validation.\n  public readonly additionalValue: { [key: string]: any};\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(key: string, content: string) {\n    this.key = key;\n    this.content = content;\n    this.additionalValue = {};\n  }\n\n  //#endregion\n}\n","import {Type} from '@angular/core';\n\nexport class IDisplaySpinnerOptions {\n\n  //#region Properties\n\n  // Whether previous displayed spinner must be destroyed or not.\n  purge?: boolean;\n\n  // If no instance type is defined, the default spinner will be used instead.\n  instanceType?: Type<any>;\n\n  public closing?: () => boolean;\n\n  public closed?: (force: boolean) => void;\n\n  public invokedMethod?: (methodName: string, payload: any) => void;\n\n  //#endregion\n\n}\n","export class HtmlContent {\n\n  //#region Constructor\n\n  public constructor(public content: string) {\n  }\n\n  //#endregion\n\n}\n","// Implementations export.\nexport * from './implementations/index';\n\n// Interfaces export.\nexport * from './interfaces/index';\n\n// Single classes export.\nexport * from './html-content';\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Injector,\n  Input,\n  OnDestroy,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport {BANNER_BUILDER, BANNER_SERVICE, WINDOW} from '../../constants/injectors/injectors';\nimport {Observable, of, Subscription, throwError} from 'rxjs';\nimport {NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, RouterEvent} from '@angular/router';\nimport {filter, map, mergeMap, retryWhen, switchMap, tap} from 'rxjs/operators';\nimport {BANNER_PRESERVE_MODE, BANNER_QUERY_MODE} from '../../constants/data-type.constant';\nimport {findLastIndex} from 'lodash-es';\nimport {IBannerContentBuilder} from '../../services/interfaces/banners/banner-content-builder.interface';\nimport {BannerService} from '../../services/implementations/banners/banner.service';\nimport {IDisplayBannerRequest} from '../../models/interfaces/banners/add-banner-content-request.interface';\nimport {IBannerContentComponent} from '../../models/interfaces/banners/banner-content-component.interface';\nimport {IDeleteBannerRequest} from '../../models/interfaces/banners/delete-banner-content-request.interface';\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'cms-banner',\n  templateUrl: 'banner.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BannerComponent implements AfterViewInit, OnDestroy {\n\n  //#region Properties\n\n  // Unique id of a banner container.\n  @Input()\n  public id: string;\n\n  // How banner is queried for being displayed.\n  // tslint:disable-next-line:no-input-rename\n  @Input('query-mode')\n  public queryMode: BANNER_QUERY_MODE;\n\n  // How banner preserve message.\n  // tslint:disable-next-line:no-input-rename\n  @Input('preserve-mode')\n  public preserveMode: BANNER_PRESERVE_MODE;\n\n  // Get the banner container area.\n  @ViewChild('container', {read: ViewContainerRef})\n  public container: ViewContainerRef | null;\n\n  // Request which is currently applied to the banner container.\n  // tslint:disable-next-line:variable-name\n  private _displayingRequest: IDisplayBannerRequest | null;\n\n  // Background task which is for destroying currently displayed banner.\n  // tslint:disable-next-line:variable-name\n  private _destroyBannerTimer: number | null;\n\n  // List of request about banner display.\n  // tslint:disable-next-line:variable-name\n  private readonly _displayRequests: IDisplayBannerRequest[];\n\n  // Subscription watch list.\n  // tslint:disable-next-line:variable-name\n  private readonly _subscription: Subscription;\n\n  //#endregion\n\n  //#region Services\n\n  // Service for handling banner business.\n  protected readonly bannerService: BannerService;\n\n  // Component factory resolver.\n  protected readonly componentFactoryResolver: ComponentFactoryResolver;\n\n  // Router service.\n  protected readonly router: Router;\n\n  // Window service.\n  protected readonly windowService: Window;\n\n  // Banner builder.\n  protected readonly bannerBuilders: IBannerContentBuilder[];\n\n  protected readonly changeDetectorRef: ChangeDetectorRef;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(protected injector: Injector) {\n    this.id = '';\n    this.queryMode = 'pop';\n    this.preserveMode = 'navigate-start-clear';\n    this.container = null;\n    this._destroyBannerTimer = null;\n    this._displayingRequest = null;\n    this._displayRequests = [];\n\n    // Service reflection.\n    this.bannerService = this.injector.get(BANNER_SERVICE) as any as BannerService;\n    this.componentFactoryResolver = this.injector.get(ComponentFactoryResolver);\n    this.router = this.injector.get(Router);\n    this.windowService = this.injector.get(WINDOW) as Window;\n    this.bannerBuilders = this.injector.get(BANNER_BUILDER) as any as IBannerContentBuilder[];\n    this.changeDetectorRef = this.injector.get(ChangeDetectorRef);\n    this._subscription = new Subscription();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public ngAfterViewInit(): void {\n\n    const id = this.id;\n\n    // Subscription about banner display requested.\n    const displayBannerSubscription = this.bannerService\n      .addedRequestEvent\n      .subscribe(request => {\n\n        // Container is invalid.\n        if (!this.container) {\n          return;\n        }\n\n        // Add the request into list.\n        this._displayRequests.push(request);\n\n        // No banner has been displayed before.\n        if (!this._displayingRequest) {\n          this.bannerService.displayNextBanner(id);\n        }\n      });\n    this._subscription.add(displayBannerSubscription);\n\n    // Subscription which raises when next banner display is requested.\n    const nextBannerDisplayRequestSubscription = this.bannerService\n      .nextBannerDisplayRequested\n      .pipe(\n        switchMap(request => {\n\n          // Invalid container.\n          if (request.containerId && request.containerId !== id) {\n            return of(void (0));\n          }\n\n          if (!request.containerId) {\n            return of(void (0));\n          }\n\n          // Get the next settings.\n          const nextRequest = this.queryMode === 'pop' ? this.popRequest(request.containerId)\n            : this.dequeueRequest(request.containerId);\n\n          if (!nextRequest) {\n            // Clear the host view.\n            if (this.container) {\n              this.container.clear();\n              this._displayingRequest = null;\n            }\n\n            return of(void (0));\n          }\n\n          return this.displayBannerAsync(nextRequest)\n            .pipe(\n              map(_ => void (0))\n            );\n        })\n      )\n      .subscribe(() => {\n        this.changeDetectorRef.markForCheck();\n      });\n\n    this._subscription.add(nextBannerDisplayRequestSubscription);\n\n    // Listen to navigation event.\n    const navigationEventSubscription = this.router\n      .events\n      .pipe(\n        filter(e => e instanceof RouterEvent),\n        filter(e => (e instanceof NavigationCancel) || (e instanceof NavigationEnd) || (e instanceof NavigationError))\n      )\n      .subscribe(e => {\n\n        if (!this.container) {\n          return;\n        }\n\n        if (((e instanceof NavigationCancel) || (e instanceof NavigationEnd) || (e instanceof NavigationError))\n          && this.preserveMode === 'navigate-end-clear') {\n          this.container.clear();\n          this.changeDetectorRef.markForCheck();\n        }\n\n        if ((e instanceof NavigationStart)\n          && this.preserveMode === 'navigate-start-clear') {\n          this.container.clear();\n          this.changeDetectorRef.markForCheck();\n        }\n      });\n    this._subscription.add(navigationEventSubscription);\n\n    // Hook delete display banner request.\n    this.hookDeleteRequestEvent();\n  }\n\n  // Called when component is destroyed.\n  public ngOnDestroy(): void {\n    this._subscription?.unsubscribe();\n\n    // Clear the previous timeout.\n    if (this._destroyBannerTimer) {\n      this.windowService.clearTimeout(this._destroyBannerTimer);\n    }\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  protected hookDeleteRequestEvent(): void {\n    const deleteRequestSubscription = this.bannerService\n      .deleteRequestEvent\n      .subscribe(deleteRequest => {\n\n        // Container is invalid.\n        if (!this.container) {\n          return;\n        }\n\n        let index = 0;\n\n        while (index < this._displayRequests.length) {\n\n          // Container is invalid.\n          if (deleteRequest.containerId && deleteRequest.containerId !== this.id) {\n            index++;\n            continue;\n          }\n\n          // Request id is invalid.\n          if (deleteRequest.id && deleteRequest.id !== this._displayingRequest?.id) {\n            index++;\n            continue;\n          }\n\n          this._displayRequests.splice(index, 1);\n        }\n\n        if (!this.ableToDeleteDisplayingRequest(deleteRequest)) {\n          return;\n        }\n\n        this.container.clear();\n        this._displayingRequest = null;\n        this.changeDetectorRef.markForCheck();\n      });\n    this._subscription.add(deleteRequestSubscription);\n  }\n\n  // Display banner by handling request.\n  protected displayBannerAsync(bannerDisplayRequest: IDisplayBannerRequest): Observable<void> {\n\n    // Invalid request.\n    if (!bannerDisplayRequest) {\n      return of(void (0));\n    }\n\n    // Request does not belong to the current container.\n    if (bannerDisplayRequest.containerId && this.id\n      && bannerDisplayRequest.containerId !== this.id) {\n      return of(void (0));\n    }\n\n    const settings = bannerDisplayRequest.settings;\n    if (!settings) {\n      return of(void (0));\n    }\n\n    // Clear the previous timeout.\n    if (this._destroyBannerTimer) {\n      this.windowService.clearTimeout(this._destroyBannerTimer);\n    }\n\n    let itemIndex = 0;\n    const builders = this.bannerBuilders;\n    const isNotAbleToBuildException = 'IS_NOT_ABLE_TO_BE_BUILT';\n    const noBuilderAvailableException = 'NO_BUILDER_AVAILABLE';\n    const maxRetriesExceeded = 'MAX_RETRIES_EXCEEDED';\n\n    return of(void (0))\n      .pipe(\n        tap(_ => {\n          if (!builders) {\n            throw noBuilderAvailableException;\n          }\n\n          if (itemIndex > builders.length - 1) {\n            throw maxRetriesExceeded;\n          }\n        }),\n        mergeMap(_ => builders[itemIndex].canBuildAsync(bannerDisplayRequest.settings)),\n        mergeMap(ableToBuild => {\n          if (!ableToBuild) {\n            return throwError(isNotAbleToBuildException);\n          }\n\n          return builders[itemIndex].buildAsync(bannerDisplayRequest.settings)\n            .pipe(\n              tap((componentRef: ComponentRef<IBannerContentComponent>) => {\n\n                if (!this.container) {\n                  return;\n                }\n\n                // Update the request.\n                this._displayingRequest = bannerDisplayRequest;\n\n                const hookDisposeRequest = componentRef.instance\n                  .disposeRequestingEvent\n                  .subscribe((_: any) => {\n                    this.bannerService.displayNextBanner(this.id);\n                  });\n\n                componentRef.onDestroy(() => {\n                  if (hookDisposeRequest && !hookDisposeRequest.closed) {\n                    hookDisposeRequest.unsubscribe();\n                  }\n\n                  // Mark no request to be displayed.\n                  this._displayingRequest = null;\n                });\n\n                // Detect changes.\n                componentRef.changeDetectorRef.detectChanges();\n\n                this.container.clear();\n                this.container.insert(componentRef.hostView);\n\n                if (settings.timeout && settings.timeout.duration && settings.timeout.action) {\n                  this._destroyBannerTimer = this.windowService\n                    .setTimeout(() => {\n                      // Do action on timeout.\n                      if (settings && settings.timeout) {\n                        settings.timeout.action();\n                      }\n                    }, settings.timeout.duration);\n                }\n              }),\n              map(_ => void (0))\n            );\n        }),\n        retryWhen(exceptionObservable => {\n          return exceptionObservable\n            .pipe(\n              tap(exception => {\n                if (exception !== isNotAbleToBuildException) {\n                  throw exception;\n                }\n\n                itemIndex++;\n              })\n            );\n        })\n      );\n\n    //#endregion\n  }\n\n  // Whether displaying request is removable or not.\n  protected ableToDeleteDisplayingRequest(deleteRequest: IDeleteBannerRequest): boolean {\n\n    if (deleteRequest.containerId && deleteRequest.containerId !== this.id) {\n      return false;\n    }\n\n    if (deleteRequest.id && deleteRequest.id !== this._displayingRequest?.id) {\n      return false;\n    }\n\n    return true;\n  }\n\n  // Dequeue request.\n  protected dequeueRequest(containerId: string): IDisplayBannerRequest | null {\n    if (!this._displayRequests || !this._displayRequests.length) {\n      return null;\n    }\n\n    // Get first match item in the messages list.\n    const itemIndex = this._displayRequests.findIndex(x => x.containerId === containerId);\n    if (itemIndex < 0) {\n      return null;\n    }\n\n    const item = this._displayRequests[itemIndex];\n    this._displayRequests.splice(itemIndex, 1);\n    return item;\n  }\n\n  // Pop request.\n  protected popRequest(containerId: string): IDisplayBannerRequest | null {\n    if (!this._displayRequests || !this._displayRequests.length) {\n      return null;\n    }\n\n    // Find the last index of item.\n    const lastIndex = findLastIndex(this._displayRequests, x => x.containerId === containerId);\n    if (lastIndex < 0) {\n      return null;\n    }\n\n    const item = this._displayRequests[lastIndex];\n    this._displayRequests.splice(lastIndex, 1);\n    return item;\n  }\n\n  //#endregion\n}\n","<ng-template #container></ng-template>\n","import {Injectable} from '@angular/core';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {IBannerService} from '../../interfaces/banners/banner-service.interface';\nimport {IDeleteBannerRequest} from '../../../models/interfaces/banners/delete-banner-content-request.interface';\nimport {IBannerNextDisplayRequest} from '../../../models/interfaces/banners/display-next-banner-content-request.interface';\nimport { IDisplayBannerRequest } from '../../../models/interfaces/banners/add-banner-content-request.interface';\nimport { IBannerContentSettings } from '../../../models/interfaces/banners/banner-content-settings.interface';\n\nexport class BannerService implements IBannerService {\n\n  //#region Properties\n\n\n  // Raise an event about banner display request.\n  // tslint:disable-next-line:variable-name\n  private readonly _bannerDisplayRequestSubject: Subject<IDisplayBannerRequest>;\n\n  // Raise an event about banner delete request.\n  // tslint:disable-next-line:variable-name\n  private readonly _deleteRequestSubject: Subject<IDeleteBannerRequest>;\n\n  // tslint:disable-next-line:variable-name\n  private readonly _displayNextSubject: Subject<IBannerNextDisplayRequest>;\n\n  // Raised when a banner display is requested.\n  public readonly addedRequestEvent: Observable<IDisplayBannerRequest>;\n\n  // Raised when  banners deletion is requested.\n  public readonly deleteRequestEvent: Observable<IDeleteBannerRequest>;\n\n  // Raised when next banner should be displayed.\n  public readonly nextBannerDisplayRequested: Observable<IBannerNextDisplayRequest>;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor() {\n\n    this._bannerDisplayRequestSubject = new ReplaySubject<IDisplayBannerRequest>(1);\n    this._deleteRequestSubject = new ReplaySubject<IDeleteBannerRequest>(1);\n    this._displayNextSubject = new ReplaySubject<IBannerNextDisplayRequest>(1);\n\n    this.addedRequestEvent = this._bannerDisplayRequestSubject.asObservable();\n    this.deleteRequestEvent = this._deleteRequestSubject.asObservable();\n    this.nextBannerDisplayRequested = this._displayNextSubject.asObservable();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  // Display banner using specific settings.\n  // If container id is defined, only the contain whose id matches will display the banner.\n  public addBanner(settings: IBannerContentSettings, containerId?: string): string {\n    const request: IDisplayBannerRequest = {\n      id: settings.id,\n      containerId,\n      settings\n    };\n\n    this._bannerDisplayRequestSubject.next(request);\n    return request.id;\n  }\n\n  // Find and delete banner by id.\n  // No id is defined, all banner will be deleted.\n  public deleteBanner(id?: string, containerId?: string): void {\n\n    const deleteRequest: IDeleteBannerRequest = {\n      id,\n      containerId\n    };\n\n    this._deleteRequestSubject.next(deleteRequest);\n  }\n\n  // Get the next banner and display it inside a specific container.\n  // If no container id is defined, display next banner into every banner.\n  public displayNextBanner(containerId?: string): void {\n    const request: IBannerNextDisplayRequest = {\n      containerId\n    };\n\n    this._displayNextSubject.next(request);\n  }\n\n  //#endregion\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {FactoryProvider, Injectable, PLATFORM_ID, ValueProvider} from '@angular/core';\nimport {WINDOW} from '../../constants/injectors/injectors';\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n  // tslint:disable-next-line:ban-types\n  get nativeWindow(): Window | Object {\n    throw new Error('Not implemented.');\n  }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n  constructor() {\n    super();\n  }\n\n  // tslint:disable-next-line:ban-types\n  get nativeWindow(): Window | Object {\n    return window;\n  }\n\n}\n\n/* Create an factory function that returns the native window object. */\n\n// tslint:disable-next-line:ban-types\nexport function windowFactory(browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object {\n  if (isPlatformBrowser(platformId)) {\n    return browserWindowRef.nativeWindow;\n  }\n  return {};\n}\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ValueProvider = {\n  provide: WindowRef,\n  useValue: new BrowserWindowRef()\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n  provide: WINDOW,\n  useFactory: windowFactory,\n  deps: [WindowRef, PLATFORM_ID]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n  browserWindowProvider,\n  windowProvider\n];\n","// Child validation summarizer providers\nimport {InjectionToken} from '@angular/core';\nimport {IValidationSummarizerModuleOptions} from '../../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {ValidationSummarizerBaseService} from '../../services/implementations/validators/validation-summarizers/validation-summarizer-base.service';\nimport {IValidationSummarizerService} from '../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {IBannerService} from '../../services/interfaces/banners/banner-service.interface';\nimport {IBannerContentBuilder} from '../../services/interfaces/banners/banner-content-builder.interface';\n\n// Validation summarizer option.\n// tslint:disable-next-line:max-line-length\nexport const VALIDATION_SUMMARIZER_OPTIONS = new InjectionToken<IValidationSummarizerModuleOptions>('VALIDATION_SUMMARIZER_OPTIONS_PROVIDER');\nexport const NULL_VALIDATION_SUMMARIZER_PROVIDER = new InjectionToken<IValidationSummarizerService>('BLANK_VALIDATION_SUMMARIZER_PROVIDER');\n\n// Common validator\nexport const NULL_COMMON_VALIDATOR_SERVICE = new InjectionToken<IValidationSummarizerService>('NULL_COMMON_VALIDATOR_SERVICE');\n\n// Banner\nexport const NULL_BANNER_SERVICE_PROVIDER = new InjectionToken<IBannerService>('NULL_BANNER_SERVICE_PROVIDER');\nexport const NULL_BANNER_CONTENT_BUILDER_SERVICE_PROVIDER = new InjectionToken<IBannerContentBuilder>('NULL_BANNER_CONTENT_BUILDER_SERVICE_PROVIDER');\n\n// Validation pipe\nexport const HAS_ANY_VALIDATOR_SERVICE = new InjectionToken<ValidationSummarizerBaseService>('HAS_ANY_VALIDATOR_SERVICE');\n","\nimport {IBannerModuleOption} from '../providers/interfaces/banner-module-option.interface';\nimport {Provider} from '@angular/core';\nimport {\n  NULL_BANNER_CONTENT_BUILDER_SERVICE_PROVIDER,\n  NULL_BANNER_SERVICE_PROVIDER\n} from '../constants/injectors/internal-injectors';\nimport {BANNER_SERVICE} from '../constants/injectors/injectors';\nimport {IBannerService} from '../services/interfaces/banners/banner-service.interface';\nimport {BannerService} from '../services/implementations/banners/banner.service';\n\n//#region Services\n\n// Build banner service.\nexport function buildBannerService(option: IBannerModuleOption)\n  : IBannerService {\n  return new BannerService();\n}\n\n// Build null banner service.\nexport function buildNullBannerProvider(): Provider {\n  return {\n    provide: NULL_BANNER_SERVICE_PROVIDER,\n    useValue: {}\n  };\n}\n\n// Build banner provider.\nexport function buildBannerProvider(): Provider {\n  return {\n    provide: BANNER_SERVICE,\n    useFactory: buildBannerService\n  };\n}\n\n//#endregion\n\n//#region Content builders\n\nexport function buildEmptyContentBuilderProvider(): Provider {\n  return {\n    provide: NULL_BANNER_CONTENT_BUILDER_SERVICE_PROVIDER,\n    useValue: {}\n  };\n}\n\n//#endregion\n\n\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BannerComponent} from './banner.component';\nimport {CommonModule} from '@angular/common';\nimport {RouterModule} from '@angular/router';\nimport {BANNER_SERVICE} from '../../constants/injectors/injectors';\nimport {BannerService} from '../../services/implementations/banners/banner.service';\nimport {WINDOW_PROVIDERS} from '../../services/implementations/window.service';\nimport {IBannerModuleOption} from '../../providers/interfaces/banner-module-option.interface';\nimport {\n  buildBannerProvider,\n  buildEmptyContentBuilderProvider,\n  buildNullBannerProvider\n} from '../../factories/banner.factory';\n\n@NgModule({\n  declarations: [\n    BannerComponent\n  ],\n  exports: [\n    BannerComponent\n  ],\n  imports: [\n    CommonModule,\n    RouterModule\n  ],\n  providers: [\n    WINDOW_PROVIDERS,\n    {\n      provide: BANNER_SERVICE,\n      useClass: BannerService\n    }\n  ]\n})\nexport class BannerModule {\n\n  //#region Methods\n\n  public static forRoot(options?: IBannerModuleOption): ModuleWithProviders<BannerModule> {\n    return {\n      ngModule: BannerModule,\n      providers: [\n        // Banner service registration.\n        (options || {}).serviceProvider || buildBannerProvider(),\n\n        // Banner content builder.\n        (options || {}).contentBuilderProviders || buildEmptyContentBuilderProvider()\n      ]\n    };\n  }\n\n  public static forChild(options?: IBannerModuleOption): ModuleWithProviders<BannerModule> {\n    return {\n      ngModule: BannerModule,\n      providers: [\n        // Banner service registration.\n        (options || {}).serviceProvider || buildNullBannerProvider(),\n\n        // Banner content builder.\n        (options || {}).contentBuilderProviders || buildEmptyContentBuilderProvider()\n      ]\n    };\n  }\n\n  //#endregion\n}\n","import {Directive, Inject, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {REQUIREMENT_SENTINEL_SERVICE} from '../../../constants/injectors/injectors';\nimport {of, Subject, Subscription} from 'rxjs';\nimport {catchError, debounceTime, mergeMap} from 'rxjs/operators';\nimport {IMeetRequirementService} from './requirement-sentinel-service.interface';\n\n@Directive({\n  selector: '[meetRequirement]'\n})\nexport class RequirementSentinelDirective implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  // Name of requirement which must be satisfied.\n  private __requirement: string | undefined;\n\n  // Handle the requirement which is assigned to the current directive.\n  private readonly __handleRequirement$: Subject<string>;\n\n  // Subscription watch list.\n  private readonly _subscription: Subscription;\n\n  //#endregion\n\n  //#region Accessors\n\n  @Input('meetRequirement')\n  public set requirement(value: string) {\n    this.__requirement = value;\n    this.__handleRequirement$.next(value);\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(\n    @Inject(REQUIREMENT_SENTINEL_SERVICE)\n    protected readonly _meetRequirementService: IMeetRequirementService,\n    protected readonly _viewContainerRef: ViewContainerRef,\n    protected readonly _templateRef: TemplateRef<any>) {\n    this.__requirement = undefined;\n    this.__handleRequirement$ = new Subject<string>();\n    this._subscription = new Subscription();\n  }\n\n  //#endregion\n\n  //#region Life cycles\n\n  public ngOnInit(): void {\n\n    const handleRequirementSubscription = this.__handleRequirement$\n      .pipe(\n        debounceTime(250),\n        mergeMap(name => this._meetRequirementService.shouldRequirementMetAsync(name)),\n        catchError(_ => of(false))\n      )\n      .subscribe(metRequirement => {\n\n        // Clear the container.\n        this._viewContainerRef.clear();\n        if (!metRequirement) {\n          return;\n        }\n\n        const embeddedView = this._viewContainerRef.createEmbeddedView(this._templateRef);\n        embeddedView.detectChanges();\n      });\n    this._subscription.add(handleRequirementSubscription);\n\n    // Do the first requirement check.\n    this.__handleRequirement$.next(this.__requirement);\n  }\n\n  public ngOnDestroy(): void {\n    this._subscription?.unsubscribe();\n  }\n\n  //#endregion\n}\n","import {IMeetRequirementService} from './requirement-sentinel-service.interface';\nimport {Observable, of} from 'rxjs';\nimport {Injectable, InjectFlags, Injector} from '@angular/core';\nimport {IRequirementHandler} from './requirement-handler.interface';\nimport {REQUIREMENT_HANDLER} from '../../../constants/injectors/injectors';\n\nexport class RequirementSentinelService implements IMeetRequirementService {\n\n    //#region Properties\n\n  // tslint:disable-next-line:variable-name\n    private readonly _requirementHandlers: IRequirementHandler[];\n\n    //#endregion\n\n    //#region Constructor\n\n    public constructor(injector: Injector) {\n        this._requirementHandlers = injector\n            .get(REQUIREMENT_HANDLER, null, InjectFlags.Optional) as unknown as IRequirementHandler[];\n    }\n\n    //#endregion\n\n    //#region Methods\n\n    public shouldRequirementMetAsync(name: string): Observable<boolean> {\n\n        // No requirement is found.\n        if (!this._requirementHandlers || !this._requirementHandlers.length) {\n            return of(false);\n        }\n        // Find the requirement which has the exact name  with the passed one.\n        const requirementHandler = this._requirementHandlers.find(item => item.name === name);\n        if (!requirementHandler) {\n            return of(false);\n        }\n\n        return requirementHandler.shouldRequirementMetAsync();\n    }\n\n    //#endregion\n}\n","import {RequirementSentinelService} from '../modules/sentinel/requirement-sentinel/requirement-sentinel.service';\nimport {Injector} from '@angular/core';\n\nexport function buildSentinelDirectiveService(injector: Injector): RequirementSentinelService {\n  return new RequirementSentinelService(injector);\n}\n","import {Injector, ModuleWithProviders, NgModule, Provider} from '@angular/core';\nimport {RequirementSentinelDirective} from './requirement-sentinel.directive';\nimport {REQUIREMENT_SENTINEL_SERVICE} from '../../../constants/injectors/injectors';\nimport {buildSentinelDirectiveService} from '../../../factories/requirement-sentinel.factory';\n\n@NgModule({\n  declarations: [\n    RequirementSentinelDirective\n  ],\n  exports: [\n    RequirementSentinelDirective\n  ]\n})\nexport class RequirementSentinelModule {\n\n  //#region Methods\n\n  public static forRoot(): ModuleWithProviders<RequirementSentinelModule> {\n    return {\n      ngModule: RequirementSentinelModule,\n      providers: [\n        {\n          provide: REQUIREMENT_SENTINEL_SERVICE,\n          useFactory: buildSentinelDirectiveService,\n          deps: [\n            Injector\n          ]\n        }\n      ]\n    };\n  }\n\n  public static withRequirementHandlers(providers: Provider[]): ModuleWithProviders<RequirementSentinelModule> {\n      return {\n        ngModule: RequirementSentinelModule,\n        providers\n      };\n  }\n\n  //#endregion\n}\n","import {Directive, Inject, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {FEATURE_SENTINEL_SERVICE} from '../../../constants/injectors/injectors';\nimport {IFeatureSentinelService} from './feature-sentinel-service.interface';\nimport {of, ReplaySubject, Subject, Subscription} from 'rxjs';\nimport {catchError, debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators';\n\n@Directive({\n  selector: '[hasFeatureAccess]'\n})\nexport class FeatureSentinelDirective implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  // Name of feature.\n  private __names: string[];\n\n  private __elseTemplateRef?: TemplateRef<any>;\n\n  // Raise event about displaying feature content.\n  private __displayFeatureContent$: Subject<void>;\n\n  // Subscription watch list.\n  protected readonly _subscription: Subscription;\n\n  //#endregion\n\n  //#region Accessors\n\n  @Input('hasFeatureAccess')\n  public set name(value: string | string[]) {\n\n    if (value instanceof Array) {\n      this.__names = value as string[];\n    } else {\n      this.__names = [value];\n    }\n\n    this.__displayFeatureContent$.next();\n  }\n\n  @Input('hasFeatureAccessElse')\n  public set elseTemplate(value: TemplateRef<any>) {\n    this.__elseTemplateRef = value;\n    this.__displayFeatureContent$.next();\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(FEATURE_SENTINEL_SERVICE)\n                     protected readonly _requireFeaturePermissionService: IFeatureSentinelService,\n                     protected readonly _viewContainerRef: ViewContainerRef,\n                     protected readonly _templateRef: TemplateRef<any>) {\n\n    this.__names = [];\n    this.__displayFeatureContent$ = new ReplaySubject<void>();\n    this._subscription = new Subscription();\n  }\n\n//#endregion\n\n  //#region Methods\n\n  public ngOnInit(): void {\n\n    // Display feature subscription.\n    const displayFeatureContentSubscription = this.__displayFeatureContent$\n      .pipe(\n        switchMap(() => {\n          return this._requireFeaturePermissionService\n            .ableToAccessFeaturesAsync(this.__names)\n            .pipe(\n              catchError(_ => of(false))\n            );\n        }),\n        distinctUntilChanged()\n      )\n      .subscribe(ableToAccessFeature => {\n        this._viewContainerRef.clear();\n        if (!ableToAccessFeature) {\n          if (this.__elseTemplateRef) {\n            const elseView = this._viewContainerRef.createEmbeddedView(this.__elseTemplateRef);\n            elseView.markForCheck();\n          }\n          return;\n        } else {\n          const embeddedView = this._viewContainerRef.createEmbeddedView(this._templateRef);\n          embeddedView.markForCheck();\n        }\n      });\n    this._subscription.add(displayFeatureContentSubscription);\n\n    // Hook validation event from service.\n    const hookValidationEventSubscription = this._requireFeaturePermissionService\n      .hookValidationEventAsync()\n      .subscribe(() => {\n        this.__displayFeatureContent$.next();\n      });\n    this._subscription.add(hookValidationEventSubscription);\n\n    this.__displayFeatureContent$.next();\n  }\n\n  public ngOnDestroy(): void {\n    this.__displayFeatureContent$.complete();\n    this._subscription?.unsubscribe();\n  }\n\n  //#endregion\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {FeatureSentinelDirective} from './feature-sentinel.directive';\nimport {FeatureSentinelOption} from './feature-sentinel-option';\n\n@NgModule({\n  declarations: [\n    FeatureSentinelDirective\n  ],\n  exports: [\n    FeatureSentinelDirective\n  ]\n})\nexport class FeatureSentinelModule {\n\n  //#region Properties\n\n  public static forRoot(option: FeatureSentinelOption): ModuleWithProviders<FeatureSentinelModule> {\n    return {\n      ngModule: FeatureSentinelModule,\n      providers: option.providers || []\n    };\n  }\n\n  //#endregion\n\n}\n","import {Directive, Inject, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {ROLE_SENTINEL_SERVICE} from '../../../constants/injectors/injectors';\nimport {of, ReplaySubject, Subject, Subscription} from 'rxjs';\nimport {catchError, debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators';\nimport {IRoleSentinelService} from './role-sentinel-service.interface';\n\n@Directive({\n  selector: '[hasRoles]'\n})\nexport class RoleSentinelDirective implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  // Name of feature.\n  private __names: string[];\n\n  // Raise event about displaying feature content.\n  private __displayRoleContent$: Subject<void>;\n\n  private __elseTemplateRef?: TemplateRef<any>;\n\n  // Subscription watch list.\n  protected readonly _subscription: Subscription;\n\n  //#endregion\n\n  //#region Accessors\n\n  @Input('hasRoles')\n  public set name(value: string | string[]) {\n\n    if (value instanceof Array) {\n      this.__names = value as string[];\n    } else {\n      this.__names = [value];\n    }\n\n    this.__displayRoleContent$.next();\n  }\n\n  @Input('hasRolesElse')\n  public set elseTemplate(value: TemplateRef<any>) {\n    this.__elseTemplateRef = value;\n    this.__displayRoleContent$.next();\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(ROLE_SENTINEL_SERVICE)\n                     protected readonly _requireRolePermissionService: IRoleSentinelService,\n                     protected readonly _viewContainerRef: ViewContainerRef,\n                     protected readonly _templateRef: TemplateRef<any>) {\n\n    this.__names = [];\n    this.__displayRoleContent$ = new ReplaySubject<void>(1);\n    this._subscription = new Subscription();\n  }\n\n//#endregion\n\n  //#region Methods\n\n  public ngOnInit(): void {\n\n    const displayFeatureContentSubscription = this.__displayRoleContent$\n      .pipe(\n        switchMap(() => {\n          return this._requireRolePermissionService\n            .hasAnyRoleAsync(this.__names)\n            .pipe(\n              catchError(_ => of(false))\n            );\n        }),\n        distinctUntilChanged()\n      )\n      .subscribe(ableToAccessFeature => {\n        this._viewContainerRef.clear();\n\n        if (!ableToAccessFeature) {\n          if (this.__elseTemplateRef) {\n            const elseView = this._viewContainerRef.createEmbeddedView(this.__elseTemplateRef);\n            elseView.markForCheck();\n          }\n          return;\n        }\n\n        const embeddedView = this._viewContainerRef.createEmbeddedView(this._templateRef);\n        embeddedView.markForCheck();\n      });\n\n    // Trigger validation.\n    this.__displayRoleContent$.next();\n\n    const hookRoleValidationSubscription = this._requireRolePermissionService\n      .hookValidationEventAsync()\n      .subscribe(() => {\n        this.__displayRoleContent$.next();\n      });\n\n\n    this._subscription.add(hookRoleValidationSubscription);\n    this._subscription.add(displayFeatureContentSubscription);\n  }\n\n  public ngOnDestroy(): void {\n    this._subscription?.unsubscribe();\n    this.__displayRoleContent$.complete();\n  }\n\n  //#endregion\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {RoleSentinelDirective} from './role-sentinel.directive';\nimport {RoleSentinelOption} from './role-sentinel-option';\n\n@NgModule({\n    declarations: [\n        RoleSentinelDirective\n    ],\n    exports: [\n        RoleSentinelDirective\n    ]\n})\nexport class RoleSentinelModule {\n\n    //#region Properties\n\n    public static forRoot(option: RoleSentinelOption): ModuleWithProviders<RoleSentinelModule> {\n        return {\n            ngModule: RoleSentinelModule,\n            providers: option.providers || []\n        };\n    }\n\n    //#endregion\n\n}\n","import {ISmartNavigatorService} from '../interfaces/smart-navigator-service.interface';\nimport {InjectFlags, Injector} from '@angular/core';\nimport {from, Observable} from 'rxjs';\nimport {NavigationExtras, Router, UrlTree} from '@angular/router';\nimport {merge as lodashMerge, template, templateSettings} from 'lodash-es';\nimport {SMART_NAVIGATOR_ROUTES, SMART_NAVIGATOR_SCREEN_CODE_RESOLVER} from '../../constants/injectors/injectors';\nimport {NavigateToScreenRequest} from '../../models/implementations/smart-navigators/navigate-to-screen-request';\nimport {IScreenCodeResolver} from '../interfaces/screen-code-resolver.interface';\nimport {SmartNavigatorExceptions} from '../../constants/smart-navigator-exceptions';\n\nexport class SmartNavigatorService implements ISmartNavigatorService {\n\n  //#region Properties\n\n  private readonly __codeToUrlMappings: { [key: string]: string; };\n\n  protected _router: Router;\n\n  protected _screenCodeResolvers: IScreenCodeResolver[];\n\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(protected injector: Injector) {\n\n    const codeToUrlMappings = this.injector.get(SMART_NAVIGATOR_ROUTES);\n    this._router = this.injector.get(Router);\n    this._screenCodeResolvers = this.injector.get(SMART_NAVIGATOR_SCREEN_CODE_RESOLVER,\n      null, InjectFlags.Optional) as any as IScreenCodeResolver[];\n    this.__codeToUrlMappings = {};\n\n    if (codeToUrlMappings) {\n      this.__codeToUrlMappings = lodashMerge({}, codeToUrlMappings);\n    }\n  }\n\n  //#endregion\n\n  //#endregion\n\n  //#region Methods\n\n  // Navigate to a screen by using screen code.\n  public navigateToScreenAsync(request: NavigateToScreenRequest<any>): Observable<boolean> {\n\n    if (!request) {\n      throw new Error(SmartNavigatorExceptions.invalidNavigationRequest);\n    }\n\n    // Get raw url from screen code.\n    const rawUrl = this.loadRawUrl(request.code);\n\n    templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n    const compiled = template(rawUrl);\n    const fullUrl = compiled(request.routeParams);\n\n    return from(this._router.navigate([fullUrl], request.extras));\n  }\n\n  // Get raw url.\n  public loadRawUrl(code: string): string {\n    if (!code || !code.length) {\n      throw new Error(SmartNavigatorExceptions.invalidScreenCode);\n    }\n\n    let url: string | null = this.__codeToUrlMappings[code];\n    if (url) {\n      return url;\n    }\n\n    const screenCodeResolvers = this._screenCodeResolvers;\n    if (!screenCodeResolvers || !screenCodeResolvers.length) {\n      throw new Error(SmartNavigatorExceptions.invalidScreenCode);\n    }\n\n    for (const screenCodeResolver of screenCodeResolvers) {\n      url = screenCodeResolver.loadUrl(code);\n      if (url && url.length) {\n        return url;\n      }\n    }\n\n    throw new Error(SmartNavigatorExceptions.invalidScreenCode);\n  }\n\n  // Build url tree.\n  public buildUrlTree(screenCode: string, routeParams?: { [key: string]: any; },\n                      extras?: NavigationExtras): UrlTree {\n    const rawUrl = this.loadRawUrl(screenCode) || '';\n    templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n    const compiled = template(rawUrl);\n    const fullUrl = compiled(routeParams);\n\n    const urlTree = this._router.createUrlTree([fullUrl], extras);\n    return urlTree;\n  }\n\n  public buildUrlTreeFromNavigationRequest<T>(navigationRequest: NavigateToScreenRequest<T>): UrlTree {\n    return this.buildUrlTree(navigationRequest.code, navigationRequest.routeParams, navigationRequest.extras);\n  }\n\n  //#endregion\n}\n","import {Inject, Injector, Pipe, PipeTransform} from '@angular/core';\nimport {SMART_NAVIGATOR_SERVICE} from '../../constants/injectors/injectors';\nimport {ISmartNavigatorService} from '../../services/interfaces/smart-navigator-service.interface';\n\n@Pipe({\n  name: 'toRawUrl'\n})\nexport class ToRawUrlPipe implements PipeTransform {\n\n  //#region Services\n\n  protected readonly smartNavigatorService: ISmartNavigatorService;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(injector: Injector) {\n    this.smartNavigatorService = injector.get(SMART_NAVIGATOR_SERVICE);\n  }\n\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: string, ...args: any[]): string | null {\n    return this.smartNavigatorService.loadRawUrl(value);\n  }\n\n  //#endregion\n}\n","import {Injector, Pipe, PipeTransform} from '@angular/core';\nimport {ISmartNavigatorService} from '../../services/interfaces/smart-navigator-service.interface';\nimport {SMART_NAVIGATOR_SERVICE} from '../../constants/injectors/injectors';\nimport {NavigationExtras, UrlTree} from '@angular/router';\n\n@Pipe({\n  name: 'toUrlTree'\n})\nexport class ToUrlTreePipe implements PipeTransform {\n\n  //#region Services\n\n  protected readonly smartNavigatorService: ISmartNavigatorService;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(injector: Injector) {\n    this.smartNavigatorService = injector.get(SMART_NAVIGATOR_SERVICE);\n  }\n\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: string, routeParams?: { [key: string]: any; },\n                   extras?: NavigationExtras): UrlTree {\n\n    if (extras) {\n      extras.queryParams = null;\n    }\n\n    return this.smartNavigatorService.buildUrlTree(value, routeParams, extras);\n  }\n\n  //#endregion\n\n}\n","import {Injector, Pipe, PipeTransform} from '@angular/core';\nimport {ISmartNavigatorService} from '../../services/interfaces/smart-navigator-service.interface';\nimport {SMART_NAVIGATOR_SERVICE} from '../../constants/injectors/injectors';\nimport {NavigationExtras, UrlTree} from '@angular/router';\n\n@Pipe({\n  name: 'toUrl'\n})\nexport class ToUrlPipe implements PipeTransform {\n\n  //#region Services\n\n  protected readonly smartNavigatorService: ISmartNavigatorService;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(injector: Injector) {\n    this.smartNavigatorService = injector.get(SMART_NAVIGATOR_SERVICE);\n  }\n\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: UrlTree): string {\n    return value.toString();\n  }\n\n  //#endregion\n\n}\n","import {Injector, ModuleWithProviders, NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {SMART_NAVIGATOR_SERVICE, SMART_NAVIGATOR_ROUTES} from '../../constants/injectors/injectors';\nimport {SmartNavigatorService} from '../../services/implementations/smart-navigator.service';\nimport {ISmartNavigatorService} from '../../services/interfaces/smart-navigator-service.interface';\nimport {ToRawUrlPipe} from '../../pipes/smart-navigators/to-raw-url.pipe';\nimport {ToUrlTreePipe} from '../../pipes/smart-navigators/to-url-tree.pipe';\nimport {ToUrlPipe} from '../../pipes/smart-navigators/to-url.pipe';\n\nexport function basicNavigatorServiceFactory(injector: Injector): ISmartNavigatorService {\n  return new SmartNavigatorService(injector);\n}\n\n@NgModule({\n  imports: [\n    RouterModule\n  ],\n  declarations: [\n    ToRawUrlPipe,\n    ToUrlTreePipe,\n    ToUrlPipe\n  ],\n  exports: [\n    ToRawUrlPipe,\n    ToUrlTreePipe,\n    ToUrlPipe\n  ]\n})\nexport class SmartNavigatorModule {\n\n  public static forRoot(codeToUrlMappings?: { [key: string]: string }): ModuleWithProviders<SmartNavigatorModule> {\n    return {\n      ngModule: SmartNavigatorModule,\n      providers: [\n        {\n          provide: SMART_NAVIGATOR_SERVICE,\n          useFactory: basicNavigatorServiceFactory,\n          deps: [\n            Injector\n          ]\n        },\n        {\n          provide: SMART_NAVIGATOR_ROUTES,\n          useValue: codeToUrlMappings || {}\n        }\n      ]\n    };\n  }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'basic-spinner',\n  templateUrl: 'basic-spinner.component.html',\n  styleUrls: ['basic-spinner.component.scss']\n})\nexport class BasicSpinnerComponent {\n\n}\n","<div class=\"loader\"></div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component, ComponentRef,\n  Inject,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport {v4 as uuid} from 'uuid';\nimport {Subject, Subscription} from 'rxjs';\nimport {SPINNER_METHOD_INVOKE_CALLBACK, SPINNER_SERVICE} from '../../constants/injectors/injectors';\nimport {ISpinnerService} from '../../services/interfaces/spinner-service.interface';\nimport {DisplaySpinnerCommand} from '../../models/implementations/spinners/display-spinner-command';\nimport {DeleteSpinnerCommand} from '../../models/implementations/spinners/delete-spinner-command';\nimport {BasicSpinnerComponent} from './basic-spinner/basic-spinner.component';\nimport {filter} from 'rxjs/operators';\nimport {SpinnerCommands} from '../../constants';\nimport {ISpinnerCommand, PurgeSpinnerCommand} from '../../models';\n\ndeclare type SpinnerCommandContext = {\n  command: DisplaySpinnerCommand,\n  componentRef: ComponentRef<any> | null\n};\n\n@Component({\n  selector: 'cms-spinner-container',\n  templateUrl: 'spinner-container.component.html',\n  styleUrls: ['spinner-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpinnerContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  //#region Properties\n\n  // Id of loading spinner.\n  private __id: string;\n\n  // Whether spinner only displays the latest request only or not.\n  private __preserveLatestRequest: boolean;\n\n  // Class which is applied to host component.\n  private __hostClass: string;\n\n  // Subject which emits spinner visibility event.\n  private readonly _visibilityEvent$: Subject<ISpinnerCommand | null>;\n\n  // Mapping between display request id & displayed component.\n  private readonly __contexts: SpinnerCommandContext[];\n\n  // Subscription to handle local visibility request.\n  private __localVisibilityRequestHandleSubscription: Subscription | undefined;\n\n  // Subscription watch list.\n  protected _visibilityChangedSubscription: Subscription | undefined;\n\n  //#endregion\n\n  //#region Accessors\n\n  @Input()\n  public set id(value: string) {\n    this.__id = value;\n\n    if (this._visibilityChangedSubscription && !this._visibilityChangedSubscription.closed) {\n      this._visibilityChangedSubscription.unsubscribe();\n      this._visibilityEvent$.next(undefined);\n    }\n\n    // Register spinner visibility changed event.\n    this._visibilityChangedSubscription = this._spinnerService\n      .hookSpinnerVisibilityEvent(value)\n      .subscribe((event: DisplaySpinnerCommand | DeleteSpinnerCommand) => this._visibilityEvent$.next(event));\n  }\n\n  public get id(): string {\n    return this.__id;\n  }\n\n  @Input()\n  public set preserveLatestRequest(value: boolean) {\n    this.__preserveLatestRequest = value;\n  }\n\n  public get preserveLatestRequest(): boolean {\n    return this.__preserveLatestRequest;\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(SPINNER_SERVICE)\n                     protected readonly _spinnerService: ISpinnerService,\n                     protected readonly _viewContainerRef: ViewContainerRef,\n                     protected readonly _changeDetectorRef: ChangeDetectorRef,\n                     private readonly __injector: Injector) {\n    this.id = uuid();\n\n    this.__id = uuid();\n    this.__hostClass = '';\n    this.__preserveLatestRequest = true;\n\n    this.__contexts = [];\n    this._visibilityEvent$ = new Subject<ISpinnerCommand | null>();\n  }\n\n  //#endregion\n\n  //#region Life cycle hooks\n\n  public ngOnInit(): void {\n\n    // Subscription registration.\n    this.__localVisibilityRequestHandleSubscription = this._visibilityEvent$\n      .pipe(\n        filter(command => command?.containerId === this.__id),\n        filter(command => command !== null && command !== undefined),\n      )\n      .subscribe(command => {\n        this._handleVisibilityChangedEvent(command);\n        this._changeDetectorRef.markForCheck();\n      });\n  }\n\n  public ngAfterViewInit(): void {\n    // Update component id to trigger spinner event.\n    this.id = this.__id || uuid();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  // Called when component is destroyed.\n  public ngOnDestroy(): void {\n\n    this._visibilityChangedSubscription?.unsubscribe();\n    this._visibilityEvent$?.unsubscribe();\n    this.__localVisibilityRequestHandleSubscription?.unsubscribe();\n  }\n\n  // Handle visibility changed event.\n  protected _handleVisibilityChangedEvent(command: ISpinnerCommand | null): void {\n\n    // Invalid command & view container ref.\n    if (!command || !this._viewContainerRef) {\n      return;\n    }\n\n    if (command.kind === SpinnerCommands.display) {\n      const actualCommand = command as DisplaySpinnerCommand;\n\n      let purge = false;\n      if (actualCommand.options) {\n        purge = actualCommand.options.purge || false;\n      }\n\n      if (purge) {\n        const purgeRequest = new PurgeSpinnerCommand(actualCommand.containerId);\n        this._handleVisibilityChangedEvent(purgeRequest);\n      } else if (this.__preserveLatestRequest) {\n        // Get the latest context.\n        const context = this._getLatestContext();\n        if (context) {\n          context.context?.componentRef?.destroy();\n        }\n      }\n\n      this._displaySpinner(actualCommand, -1);\n      return;\n    }\n\n    if (command.kind === SpinnerCommands.close) {\n      const actualCommand = command as DeleteSpinnerCommand;\n      if (actualCommand.id) {\n        this._dismissByRequestId(actualCommand.id);\n      }\n\n      // There is at least one display request. Display that one.\n      const {context, index: latestIndex} = this._getLatestContext();\n      if (context && latestIndex > -1) {\n        this._displaySpinner(context.command, latestIndex);\n      }\n\n      return;\n    }\n\n    if (command.kind === SpinnerCommands.purge) {\n      while (true) {\n        if (!this.__contexts.length) {\n          break;\n        }\n\n        this._dismissByRequestId(this.__contexts[0].command?.id, true);\n      }\n\n      return;\n    }\n  }\n\n  protected _displaySpinner(displaySpinnerRequest: DisplaySpinnerCommand, index: number): void {\n\n    if (!displaySpinnerRequest || !this._viewContainerRef) {\n      return;\n    }\n\n    const commandContext: SpinnerCommandContext = {\n      command: displaySpinnerRequest,\n      componentRef: null\n    };\n\n    const childInjector = Injector.create({\n      providers: [\n        {\n          provide: SPINNER_METHOD_INVOKE_CALLBACK,\n          useValue: displaySpinnerRequest.options?.invokedMethod\n        }\n      ],\n      parent: this.__injector\n    });\n\n    if (!displaySpinnerRequest.options || !displaySpinnerRequest.options.instanceType) {\n      const componentRef = this._viewContainerRef.createComponent(BasicSpinnerComponent, {\n        injector: childInjector\n      });\n\n      componentRef.changeDetectorRef.markForCheck();\n      commandContext.componentRef = componentRef;\n    } else {\n      const componentRef = this._viewContainerRef.createComponent(displaySpinnerRequest.options.instanceType, {\n        injector: childInjector\n      });\n      componentRef.changeDetectorRef.markForCheck();\n      commandContext.componentRef = componentRef;\n    }\n\n    if (index < 0 || index >= this.__contexts.length) {\n      this.__contexts.push(commandContext);\n    } else {\n      this.__contexts[index] = commandContext;\n    }\n  }\n\n  protected _dismissByRequestId(requestId: string, force?: boolean): void {\n    const index = this.__contexts.findIndex(x => x.command?.id === requestId);\n    if (index < 0) {\n      return;\n    }\n\n    const context = this.__contexts[index];\n    if (!context) {\n      return;\n    }\n\n    const command = context.command;\n    if (!command || command.kind !== SpinnerCommands.display) {\n      return;\n    }\n\n    // Spinner cannot be closed.\n    const closingHandler = command?.options?.closing;\n    if (!force && closingHandler && !closingHandler()) {\n      return;\n    }\n\n    context.componentRef?.destroy();\n    context.componentRef = null;\n    command?.options?.closed?.(force || false);\n    this.__contexts.splice(index, 1);\n  }\n\n  protected _getLatestContext(): { context: SpinnerCommandContext | null, index: number } {\n    if (this.__contexts.length < 1) {\n      return {context: null, index: -1};\n    }\n\n    const lastIndex = this.__contexts.length - 1;\n    return {context: this.__contexts[lastIndex], index: lastIndex};\n  }\n\n  //#endregion\n\n}\n","<ng-template #content></ng-template>\n","import {ISpinnerService} from '../../interfaces';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {DisplaySpinnerCommand} from '../../../models/implementations/spinners/display-spinner-command';\nimport {v4 as uuidv4} from 'uuid';\nimport {DeleteSpinnerCommand} from '../../../models/implementations/spinners/delete-spinner-command';\nimport {IDisplaySpinnerOptions} from '../../../models/interfaces/spinners/display-spinner-options.interface';\nimport {ISpinnerCommand} from '../../../models';\nimport {SpinnerCommands} from '../../../constants';\n\nexport class SpinnerService implements ISpinnerService {\n\n  //#region Properties\n\n  // Mapping between container id & visibility emitter.\n  private readonly _containerIdToVisibilityEvent: {\n    [containerId: string]\n      : Subject<ISpinnerCommand>\n  };\n\n  // Container ids which already registered.\n  private readonly _containerIds: string[];\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor() {\n    this._containerIdToVisibilityEvent = {};\n    this._containerIds = [];\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public displaySpinner(containerId: string, options?: IDisplaySpinnerOptions): string {\n\n    // Initialize request id.\n    const requestId = uuidv4();\n\n    const displaySpinnerRequest = new DisplaySpinnerCommand(containerId, requestId, options);\n    this._sendSpinnerCommand(displaySpinnerRequest);\n    return requestId;\n  }\n\n  public deleteSpinner(containerId: string, id?: string): void {\n\n    // Delete spinner request.\n    const deleteSpinnerRequest = new DeleteSpinnerCommand(containerId, id);\n\n    // Deleted requests is smaller than container request.\n    this._sendSpinnerCommand(deleteSpinnerRequest);\n  }\n\n  public deleteSpinners(containerId?: string): void {\n\n    if (!containerId) {\n\n      for (const displayedSpinnerId of this._containerIds) {\n        const deleteSpinnerRequest = new DeleteSpinnerCommand(displayedSpinnerId);\n        this._sendSpinnerCommand(deleteSpinnerRequest);\n      }\n\n      this._containerIds.splice(0);\n      return;\n    }\n\n    this._sendSpinnerCommand(new DeleteSpinnerCommand(containerId));\n  }\n\n  // Hook visibility changed event.\n  public hookSpinnerVisibilityEvent(containerId: string): Observable<DisplaySpinnerCommand | DeleteSpinnerCommand> {\n\n    if (!this._containerIdToVisibilityEvent[containerId]) {\n      this._containerIdToVisibilityEvent[containerId] = new ReplaySubject(1);\n    }\n\n    return this._containerIdToVisibilityEvent[containerId].asObservable();\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  // Broadcast visibility event.\n  protected _sendSpinnerCommand(command: ISpinnerCommand): void {\n\n    if (!command || !command.containerId) {\n      return;\n    }\n\n    if (!this._containerIdToVisibilityEvent[command.containerId]) {\n      this._containerIdToVisibilityEvent[command.containerId] = new ReplaySubject<ISpinnerCommand>(1);\n    }\n\n    if (command.kind === SpinnerCommands.display) {\n      const displaySpinnerRequest = command as DisplaySpinnerCommand;\n      const itemIndex = this._containerIds.indexOf(displaySpinnerRequest.containerId);\n      if (itemIndex < 0) {\n        this._containerIds.push(displaySpinnerRequest.containerId);\n      }\n    }\n\n    this._containerIdToVisibilityEvent[command.containerId].next(command);\n  }\n\n  //#endregion\n\n}\n","import {Injector, ModuleWithProviders, NgModule, Type} from '@angular/core';\nimport {SpinnerContainerComponent} from './spinner-container.component';\nimport {CommonModule} from '@angular/common';\nimport {SPINNER_SERVICE} from '../../constants/injectors/injectors';\nimport {ISpinnerService} from '../../services/interfaces/spinner-service.interface';\nimport {BasicSpinnerComponent} from './basic-spinner/basic-spinner.component';\nimport {WINDOW_PROVIDERS} from '../../services/implementations/window.service';\nimport {SpinnerService} from '../../services/implementations/spinners/spinner.service';\n\nexport function basicSpinnerFactory(): ISpinnerService {\n  return new SpinnerService();\n}\n\n@NgModule({\n    declarations: [\n        SpinnerContainerComponent,\n        BasicSpinnerComponent\n    ],\n    imports: [\n        CommonModule\n    ],\n    exports: [\n        SpinnerContainerComponent,\n        BasicSpinnerComponent\n    ],\n    providers: [\n        WINDOW_PROVIDERS\n    ]\n})\nexport class SpinnerContainerModule {\n\n  //#region Methods\n\n  public static forRoot(): ModuleWithProviders<SpinnerContainerModule> {\n    return {\n      ngModule: SpinnerContainerModule,\n      providers: [\n        {\n          provide: SPINNER_SERVICE,\n          useFactory: basicSpinnerFactory\n        }\n      ]\n    };\n  }\n\n  //#endregion\n\n}\n","// Component export.\nexport * from './basic-spinner/basic-spinner.component';\nexport * from './spinner-container.component';\n\n// Module export.\nexport * from './spinner-container.module';\n","import {ChangeDetectorRef, Component, ElementRef, Inject, Injectable, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormControl, FormControlDirective, NgControl, NgModel} from '@angular/forms';\nimport {Subscription} from 'rxjs';\nimport {VALIDATION_SUMMARIZER_SERVICE} from '../../../../constants/injectors/validation-summarizer-injectors';\nimport {IValidationSummarizerService} from '../../../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\n\n@Injectable()\nexport abstract class ValidatorClassBase implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  protected _control: AbstractControl | NgControl | null = null;\n\n  // Handler for handling summarizer visibility.\n  // tslint:disable-next-line:variable-name\n  protected _visibilityHandler: ((ngControl: AbstractControl | NgControl) => boolean | null);\n\n  // Subscription about status changes.\n  protected _hookStatusChangesSubscription: Subscription | undefined = undefined;\n\n  // Classes for applying into component.\n  protected _classes: string[] = [];\n\n  //#endregion\n\n  //#region Accessors\n\n  public set classes(value: string[] | string | null) {\n    if (typeof (value) === 'string') {\n      this._classes = [value];\n      return;\n    }\n\n    if ((value instanceof Array) && value.every(x => typeof (x) === 'string')) {\n      this._classes = value;\n      return;\n    }\n  }\n\n  public set visibilityHandler(value: ((ngControl: AbstractControl | NgControl) => boolean | null)) {\n    this._visibilityHandler = value;\n    this.buildElementClasses(this._control);\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  protected constructor(@Inject(VALIDATION_SUMMARIZER_SERVICE)\n                        protected readonly _validationSummarizerService: IValidationSummarizerService,\n                        protected readonly _changeDetectorRef: ChangeDetectorRef,\n                        protected readonly _elementRef: ElementRef) {\n    this._visibilityHandler = ngControl => {\n      if (ngControl instanceof FormControl) {\n        return ngControl.invalid && (ngControl.dirty || ngControl.touched);\n      }\n\n      if (ngControl instanceof FormControlDirective) {\n        const formControlDirective = ngControl as FormControlDirective;\n        return formControlDirective.invalid && (formControlDirective.dirty || formControlDirective.touched);\n      }\n\n      if (ngControl instanceof NgModel) {\n        const formControl = (ngControl as NgModel).control;\n        return formControl.invalid && (formControl.dirty || formControl.touched);\n      }\n\n      return null;\n    };\n  }\n\n  //#endregion\n\n  //#region Life cycle hooks\n\n  public ngOnInit(): void {\n    this.buildElementClasses(this._control);\n  }\n\n  public ngOnDestroy(): void {\n    this._hookStatusChangesSubscription?.unsubscribe();\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  protected buildElementClasses(control: AbstractControl | NgControl | null): void {\n    if (!control) {\n      return;\n    }\n\n    const classes: string[] = this.getValidationClasses();\n    const shouldValidationMessageVisible = this.ableToDisplayValidationMessages(control);\n\n    const htmlElement = this._elementRef.nativeElement as HTMLElement;\n\n    if (!control.errors || !Object.keys(control.errors) || !shouldValidationMessageVisible) {\n      htmlElement.classList.remove(...classes);\n      return;\n    }\n    htmlElement.classList.add(...classes);\n  }\n\n  protected ableToDisplayValidationMessages(ngControl: AbstractControl | NgControl | null): boolean {\n\n    if (!ngControl) {\n      return false;\n    }\n\n    if (!ngControl) {\n      return false;\n    }\n\n    if (this._visibilityHandler) {\n      return this._visibilityHandler(ngControl) || false;\n    }\n\n    const ableToDisplay = ngControl.invalid && (ngControl.dirty || ngControl.touched) === true;\n    return true === ableToDisplay;\n  }\n\n  protected abstract getValidationClasses(): string[];\n\n  //#endregion\n}\n","import {Directive, Inject, Injector, Input, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormControlDirective, FormControlName, NgControl, NgModel} from '@angular/forms';\nimport {Observable, Subscription} from 'rxjs';\nimport {COMMON_VALIDATOR_SERVICE} from '../../../../constants/injectors/common-validator-injectors';\nimport {IValidationSummarizerService} from '../../../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\n\n@Directive({\n  selector: '[validation-summarizer-control-watch][formControl], [validation-summarizer-control-watch][formControlName], [validation-summarizer-control-watch][ngModel]'\n})\nexport class ValidatorControlWatchDirective implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  // Watch instance status change subscription.\n  private _watchedInstanceStatusChangesSubscription: Subscription;\n\n  // Abstract control to be validated.\n  private _control: AbstractControl | null;\n\n  //#endregion\n\n  //#region Accessors\n\n  @Input('validation-summarizer-control-watch')\n  public set watchedInstance(value: AbstractControl | NgControl | null) {\n    this._watchedInstanceStatusChangesSubscription?.unsubscribe();\n\n    if (!value) {\n      return;\n    }\n\n    let valueChangedObservable: Observable<any> | null = null;\n    if (value instanceof AbstractControl) {\n      valueChangedObservable = (value as AbstractControl).valueChanges;\n    } else if (value instanceof NgControl) {\n      valueChangedObservable = (value as NgControl).valueChanges;\n    }\n\n    if (valueChangedObservable) {\n      this._watchedInstanceStatusChangesSubscription = valueChangedObservable\n        .subscribe(() => {\n          this.doValidation();\n        });\n    }\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(COMMON_VALIDATOR_SERVICE)\n                     protected readonly validationSummarizerService: IValidationSummarizerService,\n                     protected readonly ngControl: NgControl,\n                     protected readonly injector: Injector) {\n    this._watchedInstanceStatusChangesSubscription = new Subscription();\n    this._control = null;\n  }\n\n  //#endregion\n\n  //#region Life cycle hook\n\n  public ngOnInit(): void {\n\n    if (this.ngControl instanceof FormControlName) {\n      this._control = (this.ngControl as FormControlName).control;\n    } else if (this.ngControl instanceof FormControlDirective) {\n      this._control = (this.ngControl as FormControlDirective).control;\n    } else if (this.ngControl instanceof NgModel) {\n      this._control = (this.ngControl as NgModel).control;\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this._watchedInstanceStatusChangesSubscription?.unsubscribe();\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  protected doValidation(): void {\n    if (!this._control) {\n      return;\n    }\n\n    this.validationSummarizerService.doControlValidation(this._control);\n  }\n\n  //#endregion\n}\n","import {ChangeDetectorRef, Directive, ElementRef, Inject, Input, OnDestroy, OnInit} from '@angular/core';\nimport {AbstractControl, FormControlDirective, FormControlName, NgControl, NgModel} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {\n  COMMON_VALIDATOR_OPTIONS_PROVIDER,\n  COMMON_VALIDATOR_SERVICE\n} from '../../../../constants/injectors/common-validator-injectors';\nimport {\n  IValidationSummarizerService\n} from '../../../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {ValidatorClassBase} from './validator-class-base';\nimport {ICommonValidatorModuleOptionProvider} from '../../../../providers';\n\n@Directive({\n  selector: '[with-invalid-validator-class][ngModel], [with-invalid-validator-class][formControl], [with-invalid-validator-class][formControlName]'\n})\nexport class WithInvalidValidatorClassInFormControlDirective extends ValidatorClassBase implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  //#endregion\n\n  //#region Accessors\n\n  @Input('with-invalid-validator-class')\n  public set classes(value: string[] | string) {\n    super.classes = value;\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(COMMON_VALIDATOR_SERVICE)\n                     protected readonly _validationSummarizerService: IValidationSummarizerService,\n                     @Inject(COMMON_VALIDATOR_OPTIONS_PROVIDER)\n                     protected readonly _optionProvider: ICommonValidatorModuleOptionProvider,\n                     protected readonly _changeDetectorRef: ChangeDetectorRef,\n                     protected readonly _elementRef: ElementRef,\n                     protected readonly ngControl: NgControl) {\n    super(_validationSummarizerService, _changeDetectorRef, _elementRef);\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public ngOnInit(): void {\n\n    if (this.ngControl instanceof FormControlName) {\n      this._control = (this.ngControl as FormControlName).control;\n    } else if (this.ngControl instanceof FormControlDirective) {\n      this._control = (this.ngControl as FormControlDirective).control;\n    } else if (this.ngControl instanceof NgModel) {\n      this._control = (this.ngControl as NgModel).control;\n    }\n\n    if (this._control) {\n      this.hookControlStatusChanges(this._control);\n    }\n  }\n\n  public ngOnDestroy(): void {\n    super.ngOnDestroy();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  protected hookControlStatusChanges(control: NgControl | AbstractControl): void {\n\n    // Unsubscribe the previous subscription.\n    this._hookStatusChangesSubscription?.unsubscribe();\n    this._control = control;\n\n    let statusChangesObservable: Observable<any> | null = null;\n    if (control instanceof AbstractControl) {\n      statusChangesObservable = control.statusChanges;\n    } else if (control instanceof NgControl) {\n      statusChangesObservable = control.statusChanges;\n    }\n\n    this._hookStatusChangesSubscription = statusChangesObservable?.subscribe(() => {\n      this.buildElementClasses(control);\n    });\n  }\n\n  protected getValidationClasses(): string[] {\n    if (this._classes && this._classes.length) {\n      return this._classes;\n    }\n\n    return this._optionProvider\n      .getOption().defaultControlValidationClasses || [];\n  }\n\n  //#endregion\n\n}\n","import {ChangeDetectorRef, Directive, ElementRef, Inject, Input} from '@angular/core';\nimport {AbstractControl, NgControl} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {\n  COMMON_VALIDATOR_OPTIONS_PROVIDER,\n  COMMON_VALIDATOR_SERVICE\n} from '../../../../constants/injectors/common-validator-injectors';\nimport {\n  IValidationSummarizerService\n} from '../../../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {ValidatorClassBase} from './validator-class-base';\nimport {ICommonValidatorModuleOptionProvider} from '../../../../providers';\n\n@Directive({\n  selector: '[with-invalid-validator-class]:not([formControl]):not([ngModel]):not([formControlName])'\n})\nexport class WithInvalidValidatorClassNotFormControlDirective extends ValidatorClassBase {\n\n  //#region Properties\n\n  //#endregion\n\n  //#region Accessors\n\n  // Instance to validate.\n  @Input()\n  public set instance(control: AbstractControl | NgControl | null) {\n\n    // Unsubscribe the previous subscription.\n    this._hookStatusChangesSubscription?.unsubscribe();\n    this._control = control;\n\n    let statusChangesObservable: Observable<any> | null = null;\n    if (control instanceof AbstractControl) {\n      statusChangesObservable = control.statusChanges;\n    } else if (control instanceof NgControl) {\n      statusChangesObservable = control.statusChanges;\n    }\n\n    this._hookStatusChangesSubscription = statusChangesObservable?.subscribe(() => {\n      this.buildElementClasses(control);\n    });\n  }\n\n  @Input('with-invalid-validator-class')\n  public set classes(value: string[] | string | null) {\n    super.classes = value || [];\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(COMMON_VALIDATOR_SERVICE)\n                     protected readonly _validationSummarizerService: IValidationSummarizerService,\n                     @Inject(COMMON_VALIDATOR_OPTIONS_PROVIDER)\n                     protected readonly _optionProvider: ICommonValidatorModuleOptionProvider,\n                     protected readonly _changeDetectorRef: ChangeDetectorRef,\n                     protected readonly _elementRef: ElementRef) {\n    super(_validationSummarizerService, _changeDetectorRef, _elementRef);\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  protected getValidationClasses(): string[] {\n    if (this._classes && this._classes.length) {\n      return this._classes;\n    }\n\n    return this._optionProvider\n      .getOption().defaultValidationClasses || [];\n  }\n\n  //#endregion\n}\n","import {merge as lodashMerge} from 'lodash-es';\nimport {\n  AbstractControl,\n  FormArray,\n  FormControl,\n  FormControlDirective,\n  FormGroup,\n  NgControl,\n  NgForm,\n  NgModel,\n  ValidationErrors\n} from '@angular/forms';\nimport {ValidationMessage} from '../../../../models/implementations/validation-summarizers/validation-message';\nimport {EventEmitter} from '@angular/core';\n\nexport class ValidationSummarizerBaseService {\n\n  //#region Properties\n\n  // tslint:disable-next-line:variable-name\n  protected readonly _id: string;\n\n  /*\n  * Mapping between validator name and validation message.\n  * */\n  // tslint:disable-next-line:variable-name\n  protected _validatorNameToValidationMessage: { [name: string]: string; };\n\n  //#endregion\n\n  //#region Constructor\n\n  // tslint:disable-next-line:max-line-length\n  public constructor(id: string) {\n    this._id = id;\n    this._validatorNameToValidationMessage = {};\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public getId(): string {\n    return this._id;\n  }\n\n  // Get a single control validation message.\n  public loadControlValidationMessage(controlLabel: string, control: AbstractControl): ValidationMessage | null {\n    const messages = this.loadControlValidationMessages(controlLabel, control);\n    if (!messages) {\n      return null;\n    }\n\n    return messages[0];\n  }\n\n  // Get all control validation messages.\n  public loadControlValidationMessages(controlLabel: string, control: AbstractControl | NgControl | null): ValidationMessage[] | null {\n\n    // Invalid control.\n    if (!control) {\n      return null;\n    }\n\n    // List of validation messages.\n    const messages: ValidationMessage[] = [];\n    if (!control.errors || !control.errors) {\n      return [];\n    }\n\n    const keys = Object.keys(control.errors);\n    for (const key of keys) {\n      if (!control.hasError(key)) {\n        continue;\n      }\n\n      let boundValue = '';\n      if (key === 'min' || key === 'max') {\n        boundValue = control.errors[key][key];\n      } else if (key === 'minlength' || key === 'maxlength') {\n        boundValue = control.errors[key].requiredLength;\n      } else {\n        boundValue = control.errors[key];\n      }\n\n      const additionalValue: { [key: string]: any } = {};\n\n      if (key && key.length && boundValue) {\n        additionalValue[key] = boundValue;\n      }\n\n      const message = this.buildValidationMessage(controlLabel, key, additionalValue);\n      if (!message) {\n        return [{\n          key,\n          content: key,\n          additionalValue: additionalValue[key]\n        }];\n      }\n\n      const validationMessage = new ValidationMessage(key, message);\n      validationMessage.key = key;\n      validationMessage.content = message;\n      validationMessage.additionalValue[key] = boundValue;\n      messages.push(validationMessage);\n    }\n\n    return messages;\n  }\n\n  // Whether component has been attached with any multiple-validation-summarizers or not.\n  public hasValidator(name: string, ngControl: AbstractControl | NgControl | NgModel): boolean {\n\n    if (!ngControl) {\n      return false;\n    }\n\n    let actualControl: AbstractControl | null = null;\n    if (ngControl instanceof NgControl) {\n      actualControl = ngControl.control;\n    } else if (ngControl instanceof NgModel) {\n      actualControl = (ngControl as NgModel).control;\n    } else if (ngControl instanceof AbstractControl) {\n      actualControl = ngControl;\n    }\n\n    if (!actualControl) {\n      return false;\n    }\n\n    if (!actualControl.validator) {\n      return false;\n    }\n\n    const validator = actualControl.validator({} as AbstractControl);\n    if (!validator) {\n      return false;\n    }\n\n    return validator[name];\n  }\n\n  // Update the dictionary which is used for mapping validation property & validation message.\n  public updateValidationMessageDictionary(validationMessageDictionary: { [p: string]: string; }): void {\n\n    if (!validationMessageDictionary) {\n      this._validatorNameToValidationMessage = {};\n      return;\n    }\n\n    this._validatorNameToValidationMessage = {...validationMessageDictionary};\n  }\n\n  // Run validation on controls inside a form.\n  public doFormControlsValidation(formGroup: FormGroup | NgForm): void {\n\n    // Form group is not valid.\n    if (!formGroup) {\n      return;\n    }\n\n    // No control is found.\n    const controls = formGroup.controls;\n    if (!controls) {\n      return;\n    }\n\n    const keys = Object.keys(controls);\n    for (const key of keys) {\n      const control = formGroup.controls[key];\n      this.doControlValidation(control as any);\n    }\n  }\n\n  // Do control validation\n  public doControlValidation(control: AbstractControl | FormGroup): void {\n\n    try {\n      if (control instanceof FormControl) {\n        control.markAsTouched({onlySelf: true});\n        control.markAsDirty({onlySelf: true});\n        control.updateValueAndValidity({emitEvent: false});\n        (control.statusChanges as EventEmitter<any>).emit(control.status);\n\n        return;\n      }\n\n      if (control instanceof FormArray) {\n        // Get the list of control;\n        const children = control.controls;\n        for (const child of children) {\n          this.doControlValidation(child);\n        }\n        return;\n      }\n\n      if (control instanceof FormControlDirective) {\n        const formControlDirective = control as FormControlDirective;\n        formControlDirective.control.markAsTouched({onlySelf: true});\n        formControlDirective.control.markAsDirty({onlySelf: true});\n        formControlDirective.control.updateValueAndValidity({emitEvent: false});\n        (formControlDirective.statusChanges as EventEmitter<any>).emit(control.status);\n      }\n\n      if (control instanceof FormGroup) {\n        this.doFormControlsValidation(control);\n      }\n\n    } catch (exception) {\n      // Suppress error.\n    }\n  }\n\n  // Get control validation errors.\n  public loadControlValidationErrors(control: AbstractControl | FormGroup): ValidationErrors | null {\n\n    if (control instanceof FormControl) {\n      return control.errors;\n    }\n\n    if (control instanceof FormControlDirective) {\n      const formControlDirective = control as FormControlDirective;\n      return formControlDirective.errors;\n    }\n\n    const validationErrors: ValidationErrors = {};\n\n    if (control instanceof FormGroup) {\n      const controlValidationErrors = this.loadFormControlsValidationError(control);\n      lodashMerge(validationErrors, controlValidationErrors);\n    }\n\n    return validationErrors;\n  }\n\n  // Run validation on controls inside a form.\n  public loadFormControlsValidationError(formGroup: FormGroup): ValidationErrors | null {\n\n    // Form group is not valid.\n    if (!formGroup) {\n      return null;\n    }\n\n    // No control is found.\n    const controls = formGroup.controls;\n    if (!controls) {\n      return null;\n    }\n\n    const validationErrors: ValidationErrors = {};\n    const keys = Object.keys(controls);\n    for (const key of keys) {\n      const control = formGroup.controls[key];\n      const validationError = this.loadControlValidationErrors(control);\n      lodashMerge(validationErrors, validationError);\n    }\n\n    return validationErrors;\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  // Build validation message from specific information.\n  protected buildValidationMessage(controlLabel: string, validatorName: string, additionalValue: { [key: string]: string; }): string {\n    if (!this._validatorNameToValidationMessage) {\n      return '';\n    }\n\n    const validationMessage = this._validatorNameToValidationMessage[validatorName];\n    if (!validationMessage) {\n      return '';\n    }\n\n    return validationMessage;\n  }\n\n  //#endregion\n\n}\n","import {\n  AbstractControl,\n  FormArray,\n  FormControl,\n  FormControlDirective,\n  FormGroup,\n  NgControl,\n  NgForm,\n  ValidationErrors\n} from '@angular/forms';\nimport {merge as lodashMerge} from 'lodash-es';\nimport {IValidationSummarizerService} from '../../../interfaces';\nimport {ValidationMessage} from '../../../../models/implementations/validation-summarizers/validation-message';\nimport {builtInValidationMessages} from '../../../../constants/built-in-validation-message.constant';\nimport {v4 as uuid} from 'uuid';\nimport {IValidationSummarizerOptionProvider} from '../../../../providers/interfaces/validation-summarizer-options-provider.interface';\nimport {EventEmitter} from '@angular/core';\nimport {ValidationSummarizerBaseService} from './validation-summarizer-base.service';\n\nexport class ValidationSummarizerService extends ValidationSummarizerBaseService implements IValidationSummarizerService {\n\n  //#region Constructor\n\n  // tslint:disable-next-line:max-line-length\n  public constructor(private readonly validationSummarizerOptionProvider: IValidationSummarizerOptionProvider) {\n\n    // Call base method.\n    super(validationSummarizerOptionProvider?.getOption()?.groupId || uuid());\n\n    const option = this.validationSummarizerOptionProvider\n      .getOption() || {};\n    this._validatorNameToValidationMessage = lodashMerge(\n      builtInValidationMessages,\n      option.validationMessages || {});\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public getId(): string {\n    return this._id;\n  }\n\n  // Get a single control validation message.\n  public loadControlValidationMessage(controlLabel: string, control: AbstractControl): ValidationMessage | null {\n    const messages = this.loadControlValidationMessages(controlLabel, control);\n    if (!messages) {\n      return null;\n    }\n\n    return messages[0];\n  }\n\n  // Get all control validation messages.\n  public loadControlValidationMessages(controlLabel: string, control: AbstractControl | NgControl | null): ValidationMessage[] | null {\n\n    // Invalid control.\n    if (!control) {\n      return null;\n    }\n\n    // List of validation messages.\n    const messages: ValidationMessage[] = [];\n    if (!control.errors || !control.errors) {\n      return [];\n    }\n\n    const keys = Object.keys(control.errors);\n    for (const key of keys) {\n      if (!control.hasError(key)) {\n        continue;\n      }\n\n      let boundValue = '';\n      if (key === 'min' || key === 'max') {\n        boundValue = control.errors[key][key];\n      } else if (key === 'minlength' || key === 'maxlength') {\n        boundValue = control.errors[key].requiredLength;\n      } else {\n        boundValue = control.errors[key];\n      }\n\n      const additionalValue: { [key: string]: any } = {};\n\n      if (key && key.length && boundValue) {\n        additionalValue[key] = boundValue;\n      }\n\n      const message = this.buildValidationMessage(controlLabel, key, additionalValue);\n      if (!message) {\n        return [{\n          key,\n          content: key,\n          additionalValue: additionalValue[key]\n        }];\n      }\n\n      const validationMessage = new ValidationMessage(key, message);\n      validationMessage.key = key;\n      validationMessage.content = message;\n      validationMessage.additionalValue[key] = boundValue;\n      messages.push(validationMessage);\n    }\n\n    return messages;\n  }\n\n  // Whether component has been attached with any multiple-validation-summarizers or not.\n  public hasValidator(name: string, ngControl: NgControl): boolean {\n\n    if (!ngControl) {\n      return false;\n    }\n\n    const control = ngControl.control;\n    if (!control) {\n      return false;\n    }\n\n    if (!control.validator) {\n      return false;\n    }\n\n    const validator = control.validator({} as AbstractControl);\n    if (!validator) {\n      return false;\n    }\n\n    return validator[name];\n  }\n\n  // Update the dictionary which is used for mapping validation property & validation message.\n  public updateValidationMessageDictionary(validationMessageDictionary: { [p: string]: string; }): void {\n\n    if (!validationMessageDictionary) {\n      this._validatorNameToValidationMessage = {};\n      return;\n    }\n\n    this._validatorNameToValidationMessage = {...validationMessageDictionary};\n  }\n\n  // Run validation on controls inside a form.\n  public doFormControlsValidation(formGroup: FormGroup | NgForm): void {\n\n    // Form group is not valid.\n    if (!formGroup) {\n      return;\n    }\n\n    // No control is found.\n    const controls = formGroup.controls;\n    if (!controls) {\n      return;\n    }\n\n    const keys = Object.keys(controls);\n    for (const key of keys) {\n      const control = formGroup.controls[key];\n      this.doControlValidation(control as any);\n    }\n  }\n\n  // Do control validation\n  public doControlValidation(control: AbstractControl | FormGroup): void {\n\n    try {\n      if (control instanceof FormControl) {\n        control.markAsTouched({onlySelf: true});\n        control.markAsDirty({onlySelf: true});\n        control.updateValueAndValidity({emitEvent: false});\n        (control.statusChanges as EventEmitter<any>).emit(control.status);\n\n        return;\n      }\n\n      if (control instanceof FormControlDirective) {\n        const formControlDirective = control as FormControlDirective;\n        formControlDirective.control.markAsTouched({onlySelf: true});\n        formControlDirective.control.markAsDirty({onlySelf: true});\n        formControlDirective.control.updateValueAndValidity({emitEvent: false});\n        (formControlDirective.statusChanges as EventEmitter<any>).emit(control.status);\n        return;\n      }\n\n      if (control instanceof FormArray) {\n        const formArray = control as FormArray;\n        for (const child of formArray.controls) {\n          this.doControlValidation(child);\n        }\n        return;\n      }\n\n      if (control instanceof FormGroup) {\n        this.doFormControlsValidation(control);\n        return;\n      }\n\n    } catch (exception) {\n      // Suppress error.\n    }\n  }\n\n  // Except empty string\n  public isEmptyString(keyword: string): boolean {\n\n    if (!keyword || keyword && keyword.trim() === '') {\n      return false;\n    }\n\n    return true;\n  }\n\n  // Get control validation errors.\n  public loadControlValidationErrors(control: AbstractControl | FormGroup): ValidationErrors | null {\n\n    if (control instanceof FormControl) {\n      return control.errors;\n    }\n\n    if (control instanceof FormControlDirective) {\n      const formControlDirective = control as FormControlDirective;\n      return formControlDirective.errors;\n    }\n\n    const validationErrors: ValidationErrors = {};\n\n    if (control instanceof FormGroup) {\n      const controlValidationErrors = this.loadFormControlsValidationError(control);\n      lodashMerge(validationErrors, controlValidationErrors);\n    }\n\n    return validationErrors;\n  }\n\n  // Run validation on controls inside a form.\n  public loadFormControlsValidationError(formGroup: FormGroup): ValidationErrors | null {\n\n    // Form group is not valid.\n    if (!formGroup) {\n      return null;\n    }\n\n    // No control is found.\n    const controls = formGroup.controls;\n    if (!controls) {\n      return null;\n    }\n\n    const validationErrors: ValidationErrors = {};\n    const keys = Object.keys(controls);\n    for (const key of keys) {\n      const control = formGroup.controls[key];\n      const validationError = this.loadControlValidationErrors(control);\n      lodashMerge(validationErrors, validationError);\n    }\n\n    return validationErrors;\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  // Build validation message from specific information.\n  protected buildValidationMessage(controlLabel: string, validatorName: string, additionalValue: { [key: string]: string; }): string {\n    if (!this._validatorNameToValidationMessage) {\n      return '';\n    }\n\n    const validationMessage = this._validatorNameToValidationMessage[validatorName];\n    if (!validationMessage) {\n      return '';\n    }\n\n    return validationMessage;\n  }\n\n  //#endregion\n}\n","import {IValidationSummarizerOptionProvider} from '../interfaces/validation-summarizer-options-provider.interface';\nimport {IValidationSummarizerModuleOptions} from '../../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {Inject} from '@angular/core';\nimport {VALIDATION_SUMMARIZER_OPTIONS} from '../../constants/injectors/internal-injectors';\nimport {merge as lodashMerge} from 'lodash-es';\n\nexport class ValidationSummarizerOptionProvider\n  implements IValidationSummarizerOptionProvider {\n\n  //#region Constructor\n\n  public constructor(@Inject(VALIDATION_SUMMARIZER_OPTIONS)\n                     protected options: IValidationSummarizerModuleOptions[]) {\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public getOption(): IValidationSummarizerModuleOptions {\n    let finalOption = {};\n    for (const option of this.options) {\n      finalOption = lodashMerge(finalOption, option);\n    }\n\n    return finalOption;\n  }\n\n  //#endregion\n}\n","import {Provider} from '@angular/core';\nimport {\n  COMMON_VALIDATOR_OPTIONS,\n  COMMON_VALIDATOR_OPTIONS_PROVIDER,\n  COMMON_VALIDATOR_SERVICE\n} from '../constants/injectors/common-validator-injectors';\nimport {IValidationSummarizerOptionProvider} from '../providers/interfaces/validation-summarizer-options-provider.interface';\nimport {IValidationSummarizerService} from '../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {ValidationSummarizerService} from '../services/implementations/validators/validation-summarizers/validation-summarizer.service';\nimport {IValidationSummarizerOptions} from '../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\nimport {ValidationSummarizerOptionProvider} from '../providers/implementations/validation-summarizer-option.provider';\n\n//#region Internal methods\n\nexport function loadValidationSummarizerService(optionProvider: IValidationSummarizerOptionProvider)\n  : IValidationSummarizerService {\n  return new ValidationSummarizerService(optionProvider);\n}\n\nexport function buildInternalCommonValidatorOptionsProvider(options: IValidationSummarizerOptions[])\n  : IValidationSummarizerOptionProvider {\n  return new ValidationSummarizerOptionProvider(options);\n}\n\n//#endregion\n\n//#region Methods\n\n// Build multiple validation summarizer options.\nexport function buildCommonValidatorOptions(options?: IValidationSummarizerOptions): Provider {\n  return {\n    provide: COMMON_VALIDATOR_OPTIONS,\n    useValue: options,\n    multi: true\n  };\n}\n\n// Build multiple validation summarizer option provider service.\nexport function buildCommonValidatorOptionsProvider(): Provider {\n  return {\n    provide: COMMON_VALIDATOR_OPTIONS_PROVIDER,\n    useFactory: buildInternalCommonValidatorOptionsProvider,\n    deps: [COMMON_VALIDATOR_OPTIONS],\n    multi: false\n  };\n}\n\n// Build multiple validation summarizer service.\nexport function buildCommonValidatorService(): Provider {\n  return {\n    provide: COMMON_VALIDATOR_SERVICE,\n    useFactory: loadValidationSummarizerService,\n    deps: [COMMON_VALIDATOR_OPTIONS_PROVIDER],\n    multi: false\n  };\n}\n\n//#endregion\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {WithInvalidValidatorClassNotFormControlDirective} from './validation-summarizer-directive/with-invalid-validator-class-not-form-control.directive';\nimport {ValidatorControlWatchDirective} from './validation-summarizer-directive/validator-control-watch.directive';\nimport {IValidationSummarizerModuleOptions} from '../../../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {\n  buildCommonValidatorOptions,\n  buildCommonValidatorOptionsProvider,\n  buildCommonValidatorService\n} from '../../../factories/common-validator.factory';\nimport {NULL_COMMON_VALIDATOR_SERVICE} from '../../../constants/injectors/internal-injectors';\nimport {\n  WithInvalidValidatorClassInFormControlDirective\n} from './validation-summarizer-directive/with-invalid-validator-class-in-form-control.directive';\nimport {ICommonValidatorModuleOptions} from '../../../models';\n\n@NgModule({\n  declarations: [\n    WithInvalidValidatorClassInFormControlDirective,\n    WithInvalidValidatorClassNotFormControlDirective,\n    ValidatorControlWatchDirective\n  ],\n  exports: [\n    WithInvalidValidatorClassInFormControlDirective,\n    WithInvalidValidatorClassNotFormControlDirective,\n    ValidatorControlWatchDirective\n  ]\n})\nexport class CommonValidatorModule {\n\n  //#region Methods\n\n  public static forRoot(\n    options?: Partial<ICommonValidatorModuleOptions>)\n    : ModuleWithProviders<CommonValidatorModule> {\n    return {\n      ngModule: CommonValidatorModule,\n      providers: [\n        // Options.\n        buildCommonValidatorOptions(options),\n\n        // Options provider.\n        buildCommonValidatorOptionsProvider(),\n\n        // Build validator provider.\n        options?.validatorProvider || buildCommonValidatorService()\n      ]\n    };\n  }\n\n  public static forChild(\n    options?: ICommonValidatorModuleOptions)\n    : ModuleWithProviders<CommonValidatorModule> {\n    return {\n      ngModule: CommonValidatorModule,\n      providers: [\n        // Options.\n        buildCommonValidatorOptions(options),\n\n        // Options provider.\n        buildCommonValidatorOptionsProvider(),\n\n        // Build validator provider.\n        options?.validatorProvider ? options.validatorProvider : {\n          provide: NULL_COMMON_VALIDATOR_SERVICE,\n          useValue: null\n        }\n      ]\n    };\n  }\n\n  //#endregion\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\nimport {AbstractControl, NgControl} from '@angular/forms';\nimport {MultipleValidationSummarizerItemContext} from '../../../../models/interfaces/multiple-validation-summarizers/multiple-validation-summarizer-item-context';\nimport {v4 as uuid} from 'uuid';\nimport {Observable, Subject} from 'rxjs';\nimport {MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT, MULTIPLE_VALIDATION_SUMMARIZER_PROPERTY} from '../../../../constants/multiple-validation-summarizer-constants';\n\n@Directive({\n  selector: 'cms-multiple-validation-summarizer item-context'\n})\nexport class MultipleValidationSummarizerItemContextDirective {\n\n  //#region Properties\n\n  // Id of directive.\n  private readonly _id: string;\n\n  // Instance to be validated.\n  private _instance: AbstractControl | NgControl | null = null;\n\n  // Label of validated instance.\n  private _label = '';\n\n  // Item template\n  private _template: TemplateRef<MultipleValidationSummarizerItemContext> | null = null;\n\n  // Whether control has been initialized or not.\n  private _hasControlInitialized = false;\n\n  // Raise event about context changed.\n  private _updatedEventSubject: Subject<MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT>\n    = new Subject<MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT>();\n\n  // Event which is emitted when property is changed.\n  public readonly updateEvent: Observable<MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT>\n    = this._updatedEventSubject.asObservable();\n\n  //#endregion\n\n  //#region Accessors\n\n  public get id(): string {\n    return this._id;\n  }\n\n  public get instance(): AbstractControl | NgControl | null {\n    return this._instance;\n  }\n\n  @Input()\n  public set instance(value: AbstractControl | NgControl | null) {\n    this._instance = value;\n    this.sendUpdateEvent('instance', value);\n  }\n\n  public get label(): string {\n    return this._label;\n  }\n\n  @Input()\n  public set label(value: string) {\n    this._label = value;\n    this.sendUpdateEvent('label', value);\n  }\n\n  public get template(): TemplateRef<MultipleValidationSummarizerItemContext> | null {\n    return this._template;\n  }\n\n  @Input()\n  public set template(value: TemplateRef<MultipleValidationSummarizerItemContext> | null) {\n    this._template = value;\n    this.sendUpdateEvent('template', value);\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor() {\n    this._id = uuid();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  private sendUpdateEvent(name: MULTIPLE_VALIDATION_SUMMARIZER_PROPERTY, value: any): void {\n    if (!this._hasControlInitialized) {\n      return;\n    }\n\n    this._updatedEventSubject.next({name, value});\n  }\n\n  //#endregion\n\n}\n","// Raise the issue when no suitable validation item template builder is found.\n// tslint:disable-next-line:max-line-length\nexport const NO_SUITABLE_VALIDATION_SUMMARIZER_ITEM_TEMPLATE_BUILDER_FOUND = 'NO_SUITABLE_VALIDATION_SUMMARIZER_ITEM_TEMPLATE_BUILDER_FOUND';\n","import {AfterViewInit, ComponentRef, Directive, Inject, Input, OnDestroy, OnInit, Optional, ViewContainerRef} from '@angular/core';\nimport {IValidationSummarizerItemTemplateBuilder} from '../../../../services/interfaces/validation-summarizers/validation-summarizer-item-template-builder.interface';\nimport {VALIDATION_ITEM_TEMPLATE_BUILDERS} from '../../../../constants/injectors/validation-summarizer-injectors';\nimport {ValidationMessage} from '../../../../models/implementations/validation-summarizers/validation-message';\nimport {AbstractControl, NgControl} from '@angular/forms';\nimport {NO_SUITABLE_VALIDATION_SUMMARIZER_ITEM_TEMPLATE_BUILDER_FOUND} from '../../../../constants/internal-exception-codes';\nimport {ValidationItemBuildContext} from '../../../../models/implementations/validation-summarizers/validation-item-build-context';\nimport {forkJoin, from, Observable, of, Subject, Subscription} from 'rxjs';\nimport {catchError, debounceTime, map, switchMap} from 'rxjs/operators';\n\n@Directive({\n  // tslint:disable-next-line:directive-selector\n  selector: '[validationSummarizerItem]'\n})\n// tslint:disable-next-line:directive-class-suffix\nexport class ValidationSummarizerItemDirective implements OnInit, AfterViewInit, OnDestroy {\n\n  //#region Properties\n\n  // Id of validation summarizer.\n  // tslint:disable-next-line:variable-name\n  private _containerId: string;\n\n  // tslint:disable-next-line:variable-name\n  private _validationMessages: ValidationMessage[] | undefined;\n\n  // Form control which is being validated.\n  // tslint:disable-next-line:variable-name\n  private _control: AbstractControl | NgControl | undefined | null;\n\n  // Control label.\n  // tslint:disable-next-line:variable-name\n  private _label: string | undefined;\n\n  // Subject which triggers validation.\n  // tslint:disable-next-line:variable-name\n  private readonly _validationTriggerSubject: Subject<void>;\n\n  // Subscription watch list.\n  // tslint:disable-next-line:variable-name\n  private readonly _subscription: Subscription;\n\n  //#endregion\n\n  //#region Accessors\n\n  public get containerId(): string {\n    return this._containerId;\n  }\n\n  @Input()\n  public set containerId(value: string) {\n    this._containerId = value;\n  }\n\n  public get validationMessages(): ValidationMessage[] | undefined {\n    return this._validationMessages;\n  }\n\n  @Input()\n  public set validationMessages(value: ValidationMessage[] | undefined) {\n\n    if (!value) {\n      this._validationMessages = [];\n      return;\n    }\n\n    this._validationMessages = value;\n  }\n\n  public get ngControl(): AbstractControl | NgControl | undefined | null {\n    return this._control;\n  }\n\n  @Input()\n  public set ngControl(value: AbstractControl | NgControl | undefined | null) {\n    this._control = value;\n  }\n\n  public get controlLabel(): string | undefined {\n    return this._label;\n  }\n\n  @Input()\n  public set controlLabel(value: string | undefined) {\n    this._label = value;\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(\n    protected viewContainerRef: ViewContainerRef,\n    // tslint:disable-next-line:max-line-length\n    @Inject(VALIDATION_ITEM_TEMPLATE_BUILDERS) @Optional() protected readonly validationItemTemplateBuilders: IValidationSummarizerItemTemplateBuilder[]) {\n    this._containerId = '';\n\n    this._validationTriggerSubject = new Subject<void>();\n    this._subscription = new Subscription();\n  }\n\n  //#endregion\n\n  //#region Life cycle\n\n  public ngOnInit(): void {\n\n    const validationTriggerSubscription = this._validationTriggerSubject\n      .pipe(\n        debounceTime(50),\n        map(() => this._validationMessages || []),\n        switchMap(validationMessages => {\n\n          // Observables to be completed.\n          const observables: Observable<ComponentRef<any> | null>[] = [];\n          for (const validationMessage of validationMessages) {\n            const loadValidationItemComponentRefObservable = from(this.loadValidationItemComponentRef(validationMessage))\n              .pipe(\n                catchError(() => {\n                  return of(null);\n                })\n              );\n            observables.push(loadValidationItemComponentRefObservable);\n          }\n\n          return forkJoin(observables);\n        })\n      )\n      .subscribe((componentRefs: (ComponentRef<any> | null) []) => {\n        // Clear the view container.\n        this.viewContainerRef.clear();\n\n        for (const componentRef of componentRefs) {\n          if (!componentRef) {\n            continue;\n          }\n          this.viewContainerRef.insert(componentRef.hostView);\n        }\n      });\n    this._subscription.add(validationTriggerSubscription);\n  }\n\n  public async ngAfterViewInit(): Promise<void> {\n\n    if (!this.ngControl || !this.ngControl.valueChanges) {\n      return;\n    }\n\n    const valueChangeSubscription = this.ngControl.valueChanges\n      .subscribe(() => {\n        this._validationTriggerSubject.next();\n      });\n    this._subscription.add(valueChangeSubscription);\n\n    // Trigger the validation right after the view has been initialized.\n    this._validationTriggerSubject.next();\n  }\n\n  // Called when component is destroyed.\n  public ngOnDestroy(): void {\n    if (this._subscription && !this._subscription.closed) {\n      this._subscription.unsubscribe();\n    }\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  // Load suitable item template builder asynchronously.\n  protected async loadSuitableItemTemplateBuilderAsync(validationMessage: ValidationMessage)\n    : Promise<IValidationSummarizerItemTemplateBuilder> {\n\n    if (!this.validationItemTemplateBuilders || !this.validationItemTemplateBuilders.length) {\n      throw new Error(NO_SUITABLE_VALIDATION_SUMMARIZER_ITEM_TEMPLATE_BUILDER_FOUND);\n    }\n\n    // Build the context.\n    const validationItemBuildContext = this.loadValidationItemBuildContext(validationMessage);\n\n    for (const validationTemplateBuilder of this.validationItemTemplateBuilders) {\n\n      // Check whether template can be built or not.\n      const ableToBuildTemplate = await validationTemplateBuilder.ableToBuildTemplateAsync(validationItemBuildContext).toPromise();\n      if (!ableToBuildTemplate) {\n        continue;\n      }\n\n      return validationTemplateBuilder;\n    }\n\n    throw new Error(NO_SUITABLE_VALIDATION_SUMMARIZER_ITEM_TEMPLATE_BUILDER_FOUND);\n  }\n\n  protected loadValidationItemBuildContext(validationMessage: ValidationMessage): ValidationItemBuildContext {\n    return new ValidationItemBuildContext(this.containerId, this._label,\n      validationMessage, this.ngControl);\n  }\n\n  // Load validation item component reference.\n  protected async loadValidationItemComponentRef(validationMessage: ValidationMessage): Promise<ComponentRef<any>> {\n    // Build the message context.\n    const context = this.loadValidationItemBuildContext(validationMessage);\n\n    // Get the suitable item template builder.\n    const suitableItemTemplateBuilder = await this.loadSuitableItemTemplateBuilderAsync(validationMessage);\n\n    // Build the component ref.\n    return await suitableItemTemplateBuilder.buildTemplateAsync(context).toPromise();\n  }\n\n//#endregion\n}\n","import {Pipe, PipeTransform, Sanitizer} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Pipe({\n  name: 'toTrustedHtml'\n})\nexport class ToTrustedHtmlPipe implements PipeTransform {\n\n  //#region Constructor\n\n  public constructor(protected readonly sanitizer: DomSanitizer) {\n  }\n\n//#endregion\n\n  //#region Methods\n\n  public transform(value: string, ...args: any[]): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(value);\n  }\n\n  //#endregion\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  InjectFlags,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  TemplateRef\n} from '@angular/core';\nimport {AbstractControl, NgControl} from '@angular/forms';\nimport {IValidationSummarizerService} from '../../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {ValidationMessage} from '../../../models/implementations/validation-summarizers/validation-message';\nimport {IValidationSummarizerOptions} from '../../../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\nimport {v4 as uuid} from 'uuid';\nimport {IValidationSummarizerModuleOptions} from '../../../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {Observable, Subscription} from 'rxjs';\nimport {VALIDATION_SUMMARIZER_OPTIONS_PROVIDER, VALIDATION_SUMMARIZER_SERVICE} from '../../../constants/injectors/validation-summarizer-injectors';\n\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'cms-validation-summarizer',\n  templateUrl: 'validation-summarizer.component.html',\n  styleUrls: ['validation-summarizer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ValidationSummarizerComponent implements OnInit, OnDestroy {\n\n  //#region Properties\n\n  // Context of template.\n  // tslint:disable-next-line:variable-name\n  private _templateContext: any;\n\n  // Component id.\n  // tslint:disable-next-line:variable-name\n  protected _groupId: string;\n\n  // tslint:disable-next-line:variable-name\n  protected _control: AbstractControl | NgControl | null | undefined;\n\n  // tslint:disable-next-line:variable-name\n  protected _maxValidationMessages = 0;\n\n  // Validation summarizer options.\n  // tslint:disable-next-line:variable-name\n  protected _options: IValidationSummarizerModuleOptions;\n\n  // Service for validating controls.\n  protected validationSummarizerService: IValidationSummarizerService | null;\n\n  // Handler for handling summarizer visibility.\n  // tslint:disable-next-line:variable-name\n  protected _visibilityHandler: ((ngControl: AbstractControl | NgControl) => boolean) | null;\n\n  // Hook status changes subscription\n  // tslint:disable-next-line:variable-name\n  private _hookStatusChangesSubscription: Subscription | undefined;\n\n  // For marking component as changed.\n  // tslint:disable-next-line:variable-name\n  private _changeDetectorRef: ChangeDetectorRef;\n\n  // Subscription watch list.\n  private readonly _subscription: Subscription;\n\n  //#endregion\n\n  //#region Accessors\n\n  // Id of group the validation summarizer belongs to.\n  // This can be used for identifying whether to apply validation summarizer item template builder or not.\n  public get groupId(): string {\n    return this._groupId;\n  }\n\n  // Set item group id.\n  // tslint:disable-next-line:no-input-rename\n  @Input('group-id')\n  public set groupId(value: string) {\n\n    if (!value || !value.length) {\n      return;\n    }\n\n    this._groupId = value;\n  }\n\n  // Instance of the control that needs to be validated.\n  @Input('instance')\n  public set ngControl(control: AbstractControl | NgControl | null | undefined) {\n    this._control = control;\n\n    // Unsubscribe subscription.\n    this._hookStatusChangesSubscription?.unsubscribe();\n\n    let statusChangesObservable: Observable<any> | null = null;\n    if (this._control instanceof AbstractControl) {\n      statusChangesObservable = (this._control as AbstractControl).statusChanges;\n    } else if (this._control instanceof NgControl) {\n      statusChangesObservable = (this._control as NgControl).statusChanges;\n    }\n\n    this._hookStatusChangesSubscription = statusChangesObservable?.subscribe(() => {\n      this._templateContext = this.getTemplateContext();\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  // Get the instance of control that needs to be validated.\n  public get ngControl(): AbstractControl | NgControl | null | undefined {\n    return this._control;\n  }\n\n  // Label of control.\n  // tslint:disable-next-line:no-input-rename\n  @Input('label')\n  public controlLabel: string;\n\n  // Alternative template for validation summary.\n  // tslint:disable-next-line:no-input-rename\n  @Input('validation-template')\n  public alternativeTemplate: TemplateRef<any> | null;\n\n  // Get template context.\n  public get templateContext(): any {\n    return this._templateContext;\n  }\n\n  // Maximum number of validation messages.\n  public get maximumValidationMessages(): number {\n    return this._maxValidationMessages;\n  }\n\n  // Maximum number of validation messages.\n  @Input('maximum-messages')\n  public set maximumValidationMessages(value: number) {\n    if (isNaN(value)) {\n      this._maxValidationMessages = 0;\n      return;\n    }\n\n    this._maxValidationMessages = value;\n  }\n\n  // tslint:disable-next-line:no-input-rename\n  @Input('visibility-handler')\n  public set visibilityHandler(value: ((ngControl: AbstractControl | NgControl) => boolean) | null) {\n    this._visibilityHandler = value;\n  }\n\n  public get visibilityHandler(): ((ngControl: AbstractControl | NgControl) => boolean) | null {\n    return this._visibilityHandler;\n  }\n\n  // Validation summarizer options.\n  public get options(): IValidationSummarizerOptions {\n    return this._options;\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(protected injector: Injector) {\n\n    // Service resolve.\n    this.validationSummarizerService = injector.get(VALIDATION_SUMMARIZER_SERVICE,\n      null, InjectFlags.Optional);\n\n    const validationSummarizerOptions = injector.get(VALIDATION_SUMMARIZER_OPTIONS_PROVIDER);\n    this._changeDetectorRef = injector.get(ChangeDetectorRef);\n\n    this._options = validationSummarizerOptions.getOption();\n\n    this._groupId = this._options.groupId || uuid();\n    this._maxValidationMessages = this._options.maximumMessages || 0;\n    this._visibilityHandler = this._options.visibilityHandler || null;\n\n    this.controlLabel = '';\n    this._control = null;\n    this.alternativeTemplate = null;\n    this._subscription = new Subscription();\n  }\n\n  //#endregion\n\n  //#region Life cycle hooks\n\n  public ngOnInit(): void {\n    this._templateContext = this.getTemplateContext();\n    this._changeDetectorRef.markForCheck();\n  }\n\n  public ngOnDestroy(): void {\n    this._hookStatusChangesSubscription?.unsubscribe();\n    this._subscription?.unsubscribe();\n  }\n\n  //#endregion\n\n\n  //#region Methods\n\n  public ableToDisplayValidationMessages(ngControl: AbstractControl | NgControl | null | undefined): boolean {\n\n    if (!ngControl) {\n      return false;\n    }\n\n    // Visibility handler is defined.\n    if (this.visibilityHandler) {\n      return this.visibilityHandler(ngControl);\n    }\n\n    if (!ngControl) {\n      return false;\n    }\n\n    const ableToDisplay = ngControl.invalid && (ngControl.dirty || ngControl.touched) === true;\n    return true === ableToDisplay;\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  protected loadValidationMessages(maximumValidationMessages: number | null): ValidationMessage[] {\n\n    if (!this.validationSummarizerService || !this.ngControl) {\n      return [];\n    }\n\n    let messages = this.validationSummarizerService\n      .loadControlValidationMessages(this.controlLabel, this.ngControl);\n\n    if (!messages) {\n      return [];\n    }\n\n    if (!maximumValidationMessages || isNaN(maximumValidationMessages)) {\n      return messages;\n    }\n\n    if (maximumValidationMessages < 1) {\n      return messages;\n    }\n\n    messages = messages.slice(0, maximumValidationMessages);\n    return messages;\n  }\n\n  // Get validation template context.\n  private getTemplateContext(): any {\n    return {\n      ngControl: this.ngControl,\n      controlLabel: this.controlLabel,\n      validationMessages: this.loadValidationMessages(this.maximumValidationMessages)\n    };\n  }\n\n  //#endregion\n}\n","<!--Only displayed when control is available-->\n<ng-container *ngIf=\"ableToDisplayValidationMessages(ngControl)\"\n              [ngSwitch]=\"options.useValidationItemBuilder\">\n\n  <!--Use item template builder-->\n  <ng-container *ngSwitchCase=\"true\">\n    <ng-container *ngIf=\"templateContext.validationMessages && templateContext.validationMessages.length > 0\">\n      <ng-template validationSummarizerItem\n                   [containerId]=\"groupId\"\n                   [validationMessages]=\"templateContext.validationMessages\"\n                   [ngControl]=\"ngControl\"\n                   [controlLabel]=\"controlLabel\"></ng-template>\n    </ng-container>\n  </ng-container>\n\n\n  <!--Using item template-->\n  <ng-container *ngSwitchDefault>\n    <ng-template\n      [ngTemplateOutlet]=\"alternativeTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"templateContext\"\n    >\n    </ng-template>\n  </ng-container>\n\n</ng-container>\n\n<!--Default validation summary template-->\n<ng-template\n  #defaultTemplate\n  let-ngControl=\"ngControl\"\n  let-controlLabel=\"controlLabel\"\n  let-validationMessages=\"validationMessages\"\n>\n  <ul class=\"validation-summary\"\n      *ngIf=\"validationMessages && validationMessages.length > 0\">\n    <li *ngFor=\"let validationMessage of validationMessages;\"\n        [innerHTML]=\"validationMessage.content | toTrustedHtml\">\n    </li>\n  </ul>\n</ng-template>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  TemplateRef\n} from '@angular/core';\nimport {AbstractControl, FormControlDirective, FormGroup, NgControl, ValidationErrors} from '@angular/forms';\nimport {Observable, Subscription} from 'rxjs';\nimport {\n  MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS,\n  MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n  MULTIPLE_VALIDATION_SUMMARIZER_SERVICE\n} from '../../../constants/injectors/multiple-validation-summarizer-injectors';\nimport {VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n  VALIDATION_SUMMARIZER_SERVICE} from '../../../constants/injectors/validation-summarizer-injectors';\nimport {MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT} from '../../../constants/multiple-validation-summarizer-constants';\nimport {IValidationSummarizerService} from '../../../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {v4 as uuid} from 'uuid';\nimport {MultipleValidationSummarizerItemContextDirective} from './directives/multiple-validation-summarizer-item-context.directive';\nimport {MultipleValidationSummarizerItemContext} from '../../../models/interfaces/multiple-validation-summarizers/multiple-validation-summarizer-item-context';\nimport {IValidationSummarizerOptionProvider} from '../../../providers/interfaces/validation-summarizer-options-provider.interface';\nimport {VALIDATION_SUMMARIZER_OPTIONS} from '../../../constants/injectors/internal-injectors';\n\nconst basicValidationHandler = (ngControl: AbstractControl | NgControl): boolean => {\n  if (!ngControl) {\n    return false;\n  }\n\n  return (ngControl.invalid && (ngControl.dirty || ngControl.touched)) || false;\n};\n\n@Component({\n  selector: 'cms-multiple-validation-summarizer',\n  templateUrl: 'multiple-validation-summarizer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: VALIDATION_SUMMARIZER_SERVICE,\n      useExisting: MULTIPLE_VALIDATION_SUMMARIZER_SERVICE\n    },\n    {\n      provide: VALIDATION_SUMMARIZER_OPTIONS,\n      useExisting: MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS\n    },\n    {\n      provide: VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n      useExisting: MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n      multi: false\n    }\n  ]\n})\nexport class MultipleValidationSummarizerComponent implements OnInit, AfterContentInit, OnDestroy {\n\n  //#region Properties\n\n  // Group id.\n  private _groupId: string;\n\n  // Id to label.\n  private _idToLabel: { [id: string]: string };\n\n  // Id to template.\n  private _idToTemplate: { [id: string]: TemplateRef<MultipleValidationSummarizerItemContext> | null };\n\n  // Id to instance.\n  private _idToInstance: { [id: string]: AbstractControl | FormGroup | FormControlDirective | null };\n\n  // Id to validation errors.\n  private _idToValidationError: { [id: string]: ValidationErrors };\n\n  // Handler for handling summarizer visibility.\n  // tslint:disable-next-line:variable-name\n  private _visibilityHandler: ((ngControl: AbstractControl | NgControl) => boolean);\n\n  // Whether there is any invalid field or not.\n  private _hasInvalidField: boolean;\n\n  // Id to control status change subscription.\n  private _idToControlStatusChangeSubscription: { [id: string]: Subscription | null } = {};\n\n  // Subscription about validation context changes.\n  private _validationContextChangesSubscription: Subscription | null = null;\n\n  // Subscription watch list.\n  private _subscription: Subscription;\n\n  // Context directive watch list.\n  @ContentChildren(MultipleValidationSummarizerItemContextDirective)\n  public itemContexts: QueryList<MultipleValidationSummarizerItemContextDirective> | null = null;\n\n  //#endregion\n\n  //#region Accessors\n\n  // Id to label mapping.\n  public get idToLabel(): { [id: string]: string } {\n    return this._idToLabel;\n  }\n\n  // Id to template mapping.\n  public get idToTemplate(): { [id: string]: TemplateRef<MultipleValidationSummarizerItemContext> | null } {\n    return this._idToTemplate;\n  }\n\n  public get idToInstance(): { [id: string]: AbstractControl | FormGroup | FormControlDirective | null } {\n    return this._idToInstance;\n  }\n\n  public get groupId(): string {\n    return this._groupId;\n  }\n\n  // Id of group the multiple validation summarizer belongs to.\n  @Input('group-id')\n  public set groupId(value: string) {\n    this._groupId = value;\n  }\n\n  // Whether there is any invalid field or not.\n  public get hasInvalidField(): boolean {\n    return this._hasInvalidField;\n  }\n\n  // tslint:disable-next-line:no-input-rename\n  @Input('visibility-handler')\n  public set visibilityHandler(value: ((ngControl: AbstractControl | NgControl) => boolean) | null) {\n    if (!value) {\n      this._visibilityHandler = basicValidationHandler;\n      return;\n    }\n    this._visibilityHandler = value;\n  }\n\n  public get visibilityHandler(): (((ngControl: AbstractControl | NgControl) => boolean) | null) {\n    return this._visibilityHandler;\n  }\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(MULTIPLE_VALIDATION_SUMMARIZER_SERVICE)\n                     protected readonly validationSummarizerService: IValidationSummarizerService,\n                     @Inject(MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER)\n                     protected readonly optionsProvider: IValidationSummarizerOptionProvider,\n                     protected readonly changeDetectorRef: ChangeDetectorRef) {\n\n    const options = this.optionsProvider.getOption();\n    this._groupId = options?.groupId || uuid();\n    this._idToLabel = {};\n    this._idToTemplate = {};\n    this._idToInstance = {};\n    this._idToValidationError = {};\n    this._visibilityHandler = options.visibilityHandler || basicValidationHandler;\n    this._hasInvalidField = false;\n    this._subscription = new Subscription();\n  }\n\n  //#endregion\n\n  //#region Life cycle hooks\n\n  public ngOnInit(): void {\n  }\n\n  // Called when content has been initialized.\n  public ngAfterContentInit(): void {\n    // Handle control initial changes.\n    this.handleControlChanges();\n    this.changeDetectorRef.markForCheck();\n\n    // Hook control changes.\n    const hookControlChangesSubscription = this.itemContexts\n      ?.changes\n      .subscribe(() => {\n        this.handleControlChanges();\n        this.changeDetectorRef.markForCheck();\n      });\n    this._subscription.add(hookControlChangesSubscription);\n  }\n\n  // Called when component is destroyed.\n  public ngOnDestroy(): void {\n    this.deleteControlStatusChangeSubscriptions();\n    this._validationContextChangesSubscription?.unsubscribe();\n    this._subscription?.unsubscribe();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  // Whether control has validation error or not.\n  public shouldControlHasValidationError(id: string): boolean {\n    if (!id || !this._idToValidationError) {\n      return false;\n    }\n\n    const validationError = this._idToValidationError[id];\n    return validationError !== null && validationError !== undefined;\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  private handleControlChanges(): void {\n\n    // Unsubscribe the previous control status.\n    this._validationContextChangesSubscription?.unsubscribe();\n\n    // Clear the mapping.\n    this._idToLabel = {};\n    this._idToTemplate = {};\n    this._hasInvalidField = false;\n    this._idToValidationError = {};\n\n    // Invalid item collection.\n    if (!this.itemContexts || !this.itemContexts.length) {\n      return;\n    }\n\n    // Handle control changes.\n    for (const itemContext of this.itemContexts) {\n      this.handleContextChangedEvent(itemContext, {name: 'label', value: itemContext.label});\n      this.handleContextChangedEvent(itemContext, {name: 'template', value: itemContext.template});\n      this.handleContextChangedEvent(itemContext, {name: 'instance', value: itemContext.instance});\n\n      const validationContextChangeSubscription = itemContext.updateEvent\n        .subscribe(\n          (context: MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT) => {\n            this.handleContextChangedEvent(itemContext, context, true);\n          });\n      this._validationContextChangesSubscription?.add(validationContextChangeSubscription);\n    }\n\n    // Check whether there is any invalid field or not.\n    this._hasInvalidField = this.shouldAnyFieldInvalid();\n    this.changeDetectorRef.markForCheck();\n  }\n\n  // Handle context change event.\n  private handleContextChangedEvent(itemContext: MultipleValidationSummarizerItemContextDirective,\n                                    context: MULTIPLE_VALIDATION_SUMMARIZER_CONTEXT_CHANGED_EVENT,\n                                    markAsChanged?: boolean): void {\n    switch (context.name) {\n      case 'label':\n        this._idToLabel[itemContext.id] = context.value;\n        break;\n\n      case 'template':\n        this._idToTemplate[itemContext.id] = context.value;\n        break;\n\n      case 'instance':\n\n        // Unsubscribe this instance subscription.\n        let controlChangesSubscription = this._idToControlStatusChangeSubscription[itemContext.id];\n        controlChangesSubscription?.unsubscribe();\n        delete this._idToInstance[itemContext.id];\n\n        let valueChangesObservable: Observable<any> | null = null;\n        if (itemContext.instance instanceof AbstractControl) {\n          valueChangesObservable = (itemContext.instance as AbstractControl).statusChanges;\n        } else if (itemContext.instance instanceof NgControl) {\n          valueChangesObservable = (itemContext.instance as NgControl).statusChanges;\n        }\n\n        if (valueChangesObservable) {\n          this._idToInstance[itemContext.id] = context.value;\n          controlChangesSubscription = valueChangesObservable\n            .subscribe(() => {\n              const instance = this._idToInstance[itemContext.id];\n              if (!instance) {\n                return;\n              }\n\n              this._hasInvalidField = this.shouldAnyFieldInvalid();\n              this.changeDetectorRef.markForCheck();\n            });\n\n          this._subscription.add(controlChangesSubscription);\n        }\n\n        break;\n    }\n\n    if (markAsChanged) {\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  // Remove control status change subscription.\n  private deleteControlStatusChangeSubscriptions(): void {\n    const ids = Object.keys(this._idToControlStatusChangeSubscription);\n    for (const id of ids) {\n      const controlStatusChangeSubscription = this._idToControlStatusChangeSubscription[id];\n      controlStatusChangeSubscription?.unsubscribe();\n    }\n\n    this._idToControlStatusChangeSubscription = {};\n  }\n\n  // Whether there is any invalid field or not.\n  private shouldAnyFieldInvalid(): boolean {\n    const ids = Object.keys(this._idToInstance);\n    if (!ids || !ids.length) {\n      return false;\n    }\n\n    let hasValidationError = false;\n\n    for (const id of ids) {\n      const instance = this.idToInstance[id];\n      if (!instance) {\n        continue;\n      }\n\n      const validationErrors = this.validationSummarizerService.loadControlValidationErrors(instance as any);\n      if (!validationErrors) {\n        continue;\n      }\n\n      this._idToValidationError[id] = validationErrors;\n      const shouldValidationErrorVisible = this.visibilityHandler ? this._visibilityHandler(instance) : false;\n      if (!shouldValidationErrorVisible) {\n        continue;\n      }\n\n      hasValidationError = true;\n    }\n\n    return hasValidationError;\n  }\n\n  //#endregion\n}\n","<ul *ngIf=\"hasInvalidField\">\n  <ng-container *ngFor=\"let itemContext of itemContexts\">\n    <cms-validation-summarizer *ngIf=\"idToInstance[itemContext.id] && shouldControlHasValidationError(itemContext.id)\"\n                               [instance]=\"idToInstance[itemContext.id]\"\n                               [label]=\"idToLabel[itemContext.id]\"\n                               [validation-template]=\"idToTemplate[itemContext.id] || validationSummarizerTemplate\">\n    </cms-validation-summarizer>\n  </ng-container>\n</ul>\n\n\n<!--Default validation summary template-->\n<ng-template\n  #validationSummarizerTemplate\n  let-ngControl=\"ngControl\"\n  let-controlLabel=\"controlLabel\"\n  let-validationMessages=\"validationMessages\"\n>\n  <li *ngFor=\"let validationMessage of validationMessages;\">\n    {{controlLabel}} {{validationMessage | json}}\n  </li>\n</ng-template>\n","import {ValidationSummarizerBaseService} from '../validation-summarizers/validation-summarizer-base.service';\nimport {IValidationSummarizerService} from '../../../interfaces';\nimport {MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER} from '../../../../constants/injectors/multiple-validation-summarizer-injectors';\nimport {Inject} from '@angular/core';\nimport {v4 as uuid} from 'uuid';\nimport {IValidationSummarizerOptionProvider} from '../../../../providers/interfaces/validation-summarizer-options-provider.interface';\n\nexport class MultipleValidationSummarizerService\n  extends ValidationSummarizerBaseService implements IValidationSummarizerService {\n\n  //#region Properties\n\n  public constructor(@Inject(MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER)\n                     protected readonly optionProvider: IValidationSummarizerOptionProvider) {\n    super(optionProvider?.getOption()?.groupId || uuid());\n  }\n\n  //#endregion\n}\n","import {Provider} from '@angular/core';\nimport {MultipleValidationSummarizerService} from '../services/implementations/validators/multiple-validation-summarizers/multiple-validation-summarizer.service';\nimport { MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS } from '../constants/injectors/multiple-validation-summarizer-injectors';\nimport {IValidationSummarizerService} from '../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {IValidationSummarizerOptionProvider} from '../providers/interfaces/validation-summarizer-options-provider.interface';\nimport {IValidationSummarizerOptions} from '../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\nimport {ValidationSummarizerOptionProvider} from '../providers/implementations/validation-summarizer-option.provider';\nimport {\n  MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n  MULTIPLE_VALIDATION_SUMMARIZER_SERVICE\n} from '../constants/injectors/multiple-validation-summarizer-injectors';\n\n//#region Internal methods\n\nexport function buildInternalMultipleValidationSummarizerService(optionProvider: IValidationSummarizerOptionProvider)\n  : IValidationSummarizerService {\n  return new MultipleValidationSummarizerService(optionProvider);\n}\n\nexport function buildInternalMultipleValidationSummarizerOptionsProvider(options: IValidationSummarizerOptions[])\n  : IValidationSummarizerOptionProvider {\n  return new ValidationSummarizerOptionProvider(options);\n}\n\n//#endregion\n\n//#region Methods\n\n// Build multiple validation summarizer options.\nexport function buildMultipleValidationSummarizerOptions(options?: IValidationSummarizerOptions): Provider {\n  return {\n    provide: MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS,\n    useValue: options,\n    multi: true\n  };\n}\n\n// Build multiple validation summarizer option provider service.\nexport function buildMultipleValidationSummarizerOptionsProvider(): Provider {\n  return {\n    provide: MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n    useFactory: buildInternalMultipleValidationSummarizerOptionsProvider,\n    deps: [MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS],\n    multi: false\n  };\n}\n\n// Build multiple validation summarizer service.\nexport function buildMultipleValidationSummarizerService(): Provider {\n  return {\n    provide: MULTIPLE_VALIDATION_SUMMARIZER_SERVICE,\n    useFactory: buildInternalMultipleValidationSummarizerService,\n    deps: [MULTIPLE_VALIDATION_SUMMARIZER_OPTIONS_PROVIDER],\n    multi: false\n  };\n}\n\n//#endregion\n","import {IValidationSummarizerModuleOptions} from '../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {ValidationSummarizerService} from '../services/implementations/validators/validation-summarizers/validation-summarizer.service';\nimport {Provider} from '@angular/core';\nimport {VALIDATION_SUMMARIZER_OPTIONS} from '../constants/injectors/internal-injectors';\nimport {IValidationSummarizerOptionProvider} from '../providers/interfaces/validation-summarizer-options-provider.interface';\nimport {IValidationSummarizerService} from '../services/interfaces/validation-summarizers/validation-summarizer-service.interface';\nimport {IValidationSummarizerOptions} from '../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\nimport {ValidationSummarizerOptionProvider} from '../providers/implementations/validation-summarizer-option.provider';\nimport {VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n  VALIDATION_SUMMARIZER_SERVICE} from '../constants/injectors/validation-summarizer-injectors';\n\n//#region Internal function\n\n// Build up validation summarizer service.\nexport function buildInternalValidationSummarizerService(optionProvider: IValidationSummarizerOptionProvider)\n  : IValidationSummarizerService {\n  return new ValidationSummarizerService(optionProvider);\n}\n\n// Build up validation summarizer options.\nexport function buildInternalValidationSummarizerOptionsProvider(options: IValidationSummarizerOptions[])\n  : IValidationSummarizerOptionProvider {\n  return new ValidationSummarizerOptionProvider(options);\n}\n\n\n//#endregion\n\n//#region External function\n\n// Build validation summarizer options.\nexport function buildValidationSummarizerOptions(options: IValidationSummarizerModuleOptions): Provider {\n  return {\n    provide: VALIDATION_SUMMARIZER_OPTIONS,\n    useValue: options,\n    multi: true\n  };\n}\n\n// Build validation summarizer options provider.\nexport function buildValidationSummarizerOptionsProvider(): Provider {\n  return {\n    provide: VALIDATION_SUMMARIZER_OPTIONS_PROVIDER,\n    useFactory: buildInternalValidationSummarizerOptionsProvider,\n    deps: [VALIDATION_SUMMARIZER_OPTIONS],\n    multi: false\n  };\n}\n\n// Build validator service.\nexport function buildValidationSummarizerService(): Provider {\n  return {\n    provide: VALIDATION_SUMMARIZER_SERVICE,\n    useFactory: buildInternalValidationSummarizerService,\n    deps: [VALIDATION_SUMMARIZER_OPTIONS_PROVIDER],\n    multi: false\n  };\n}\n\n//#endregion\n","import {NgModule} from '@angular/core';\nimport {ToTrustedHtmlPipe} from './to-trusted-html.pipe';\n\n@NgModule({\n  declarations: [\n    ToTrustedHtmlPipe\n  ],\n  exports: [\n    ToTrustedHtmlPipe\n  ]\n})\nexport class ToTrustedHtmlPipeModule {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Pipe({\n  name: 'toTrustedResourceUrl'\n})\nexport class ToTrustedResourceUrlPipe implements PipeTransform {\n\n  //#region Constructor\n\n  public constructor(protected readonly sanitizer: DomSanitizer) {\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: string): SafeResourceUrl {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n  }\n\n  //#endregion\n\n}\n","import {NgModule} from '@angular/core';\nimport {ToTrustedResourceUrlPipe} from './to-trusted-resource-url.pipe';\n\n@NgModule({\n  declarations: [\n    ToTrustedResourceUrlPipe\n  ],\n  exports: [\n    ToTrustedResourceUrlPipe\n  ]\n})\nexport class ToTrustedResourceUrlPipeModule {\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeScript} from '@angular/platform-browser';\n\n@Pipe({\n  name: 'toTrustedScript'\n})\nexport class ToTrustedScriptPipe implements PipeTransform {\n\n  //#region Constructor\n\n  public constructor(protected readonly sanitizer: DomSanitizer) {\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: string, ...args: any[]): SafeScript {\n    return this.sanitizer.bypassSecurityTrustScript(value);\n  }\n\n  //#endregion\n}\n","import {NgModule} from '@angular/core';\nimport {ToTrustedScriptPipe} from './to-trusted-script.pipe';\n\n@NgModule({\n  declarations: [\n    ToTrustedScriptPipe\n  ],\n  exports: [\n    ToTrustedScriptPipe\n  ]\n})\nexport class ToTrustedScriptPipeModule {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeStyle} from '@angular/platform-browser';\n\n@Pipe({\n  name: 'toTrustedPipe'\n})\nexport class ToTrustedStylePipe implements PipeTransform {\n\n  //#region Constructor\n\n  public constructor(protected readonly sanitizer: DomSanitizer) {\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: string, ...args: any[]): SafeStyle {\n    return this.sanitizer.bypassSecurityTrustStyle(value);\n  }\n\n  //#endregion\n}\n","import {NgModule} from '@angular/core';\nimport {ToTrustedStylePipe} from './to-trusted-style.pipe';\n\n@NgModule({\n  declarations: [\n    ToTrustedStylePipe\n  ],\n  exports: [\n    ToTrustedStylePipe\n  ]\n})\nexport class ToTrustedStylePipeModule {\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\n\n@Pipe({\n  name: 'toTrustedUrl'\n})\nexport class ToTrustedUrlPipe implements PipeTransform {\n\n  //#region Constructor\n\n  public constructor(protected readonly sanitizer: DomSanitizer) {\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: string, ...args: any[]): SafeUrl {\n    return this.sanitizer.bypassSecurityTrustUrl(value);\n  }\n\n  //#endregion\n}\n","import {NgModule} from '@angular/core';\nimport {ToTrustedUrlPipe} from './to-trusted-url.pipe';\n\n@NgModule({\n  declarations: [\n    ToTrustedUrlPipe\n  ],\n  exports: [\n    ToTrustedUrlPipe\n  ]\n})\nexport class ToTrustedUrlPipeModule {\n\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ValidationSummarizerComponent} from './validation-summarizer.component';\nimport {IValidationSummarizerModuleOptions} from '../../../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {ValidationSummarizerItemDirective} from './validation-summarizer-item/validation-summarizer-item.directive';\nimport {\n  buildValidationSummarizerOptions,\n  buildValidationSummarizerOptionsProvider,\n  buildValidationSummarizerService\n} from '../../../factories/validation-summarizer.factory';\nimport {NULL_VALIDATION_SUMMARIZER_PROVIDER} from '../../../constants/injectors/internal-injectors';\nimport {ToTrustedHtmlPipeModule} from '../../../pipes/index';\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ToTrustedHtmlPipeModule\n  ],\n  declarations: [\n    ValidationSummarizerItemDirective,\n    ValidationSummarizerComponent\n  ],\n  exports: [\n    ValidationSummarizerItemDirective,\n    ValidationSummarizerComponent\n  ]\n})\nexport class ValidationSummarizerModule {\n\n  //#region Methods\n\n  public static forRoot(\n    options: Partial<IValidationSummarizerModuleOptions>)\n    : ModuleWithProviders<ValidationSummarizerModule> {\n    return {\n      ngModule: ValidationSummarizerModule,\n      providers: [\n        // Build options\n        buildValidationSummarizerOptions(options),\n\n        // Build options provider.\n        buildValidationSummarizerOptionsProvider(),\n\n        // Build validator provider.\n        options?.validatorProvider || buildValidationSummarizerService()\n      ]\n    };\n  }\n\n  public static forChild(\n    options: IValidationSummarizerModuleOptions)\n    : ModuleWithProviders<ValidationSummarizerModule> {\n    return {\n      ngModule: ValidationSummarizerModule,\n      providers: [\n        // Build options\n        buildValidationSummarizerOptions(options),\n\n        // Build options provider.\n        buildValidationSummarizerOptionsProvider(),\n\n        // Validation summarizer service registration.\n        options.validatorProvider || {\n          provide: NULL_VALIDATION_SUMMARIZER_PROVIDER,\n          useValue: null\n        }\n      ]\n    };\n  }\n\n  //#endregion\n\n}\n\n//#endregion\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {MultipleValidationSummarizerComponent} from './multiple-validation-summarizer.component';\nimport {CommonModule} from '@angular/common';\nimport {MultipleValidationSummarizerItemContextDirective} from './directives/multiple-validation-summarizer-item-context.directive';\nimport {\n  buildMultipleValidationSummarizerOptions,\n  buildMultipleValidationSummarizerOptionsProvider,\n  buildMultipleValidationSummarizerService\n} from '../../../factories/multiple-validation-summarizer.factory';\nimport {ValidationSummarizerModule} from '../validation-summarizer/validation-summarizer.module';\nimport {IValidationSummarizerModuleOptions} from '../../../models/interfaces/validation-summarizers/validation-summarizer-module-options.interface';\nimport {IValidationSummarizerOptions} from '../../../models/interfaces/validation-summarizers/validation-summarizer-options.interface';\n\n@NgModule({\n  declarations: [\n    MultipleValidationSummarizerComponent,\n    MultipleValidationSummarizerItemContextDirective\n  ],\n  imports: [\n    CommonModule,\n    ValidationSummarizerModule\n  ],\n  exports: [\n    MultipleValidationSummarizerComponent,\n    MultipleValidationSummarizerItemContextDirective\n  ]\n})\nexport class MultipleValidationSummarizerModule {\n\n  //#region For root method\n\n  public static forRoot(\n    options?: Partial<IValidationSummarizerModuleOptions>)\n    : ModuleWithProviders<MultipleValidationSummarizerModule> {\n    return {\n      ngModule: MultipleValidationSummarizerModule,\n      providers: [\n        // Option\n        buildMultipleValidationSummarizerOptions(options),\n\n        // Option provider\n        buildMultipleValidationSummarizerOptionsProvider(),\n\n        // Build service\n        buildMultipleValidationSummarizerService()\n      ]\n    };\n  }\n\n  //#endregion\n\n  //#region For child method\n\n  public static forChild(\n    options?: Partial<IValidationSummarizerOptions>)\n    : ModuleWithProviders<MultipleValidationSummarizerModule> {\n    return {\n      ngModule: MultipleValidationSummarizerModule,\n      providers: [\n        // Option\n        buildMultipleValidationSummarizerOptions(options),\n\n        // Option provider\n        buildMultipleValidationSummarizerOptionsProvider(),\n\n        // Build service\n        buildMultipleValidationSummarizerService()\n      ]\n    };\n  }\n\n  //#endregion\n}\n\n","import {ChangeDetectorRef, Inject, OnDestroy, Pipe, PipeTransform} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {AbstractControl, NgControl, NgModel} from '@angular/forms';\nimport {HAS_ANY_VALIDATOR_SERVICE} from '../../../../constants/injectors/internal-injectors';\nimport {ValidationSummarizerBaseService} from '../../../../services/implementations/validators/validation-summarizers/validation-summarizer-base.service';\n\n@Pipe({\n  name: 'hasValidators',\n  pure: false\n})\nexport class HasAnyValidatorsPipe implements PipeTransform, OnDestroy {\n\n  //#region Properties\n\n  private _subscription: Subscription;\n\n  //#endregion\n\n  //#region Constructor\n\n  public constructor(@Inject(HAS_ANY_VALIDATOR_SERVICE)\n                     protected readonly hasValidatorService: ValidationSummarizerBaseService,\n                     protected readonly changeDetectorRef: ChangeDetectorRef) {\n    this._subscription = new Subscription();\n  }\n\n  //#endregion\n\n  //#region Life cycle hook\n\n  public ngOnDestroy(): void {\n    this._subscription?.unsubscribe();\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  public transform(value: AbstractControl | NgControl | NgModel, [validatorName]: [string | string[]]): boolean {\n\n    // Validator name is invalid.\n    if (validatorName === null || validatorName === undefined) {\n      return false;\n    }\n\n    let validatorNames = [];\n    if (typeof (validatorName) === 'string') {\n      if (validatorName.trim().length < 1) {\n        return false;\n      }\n\n      validatorNames = [validatorName];\n    } else {\n      validatorNames = (validatorName as unknown as string[])\n        .filter(x => x !== null && x !== undefined && x.trim().length > 0);\n    }\n\n    if (!validatorNames || !validatorNames.length) {\n      return false;\n    }\n\n    let statusChangesObservable: Observable<any> | null = null;\n    if (value instanceof NgControl) {\n      statusChangesObservable = (value as NgControl).statusChanges;\n    } else if (value instanceof NgModel) {\n      statusChangesObservable = (value as NgModel).statusChanges;\n    } else if (value instanceof AbstractControl) {\n      statusChangesObservable = (value as AbstractControl).statusChanges;\n    }\n\n\n    if (!statusChangesObservable) {\n      return false;\n    }\n\n    const statusChangesSubscription = statusChangesObservable\n      .subscribe(status => {\n        if ('PENDING' === status) {\n          return;\n        }\n        this.changeDetectorRef.markForCheck();\n      });\n    this._subscription.add(statusChangesSubscription);\n    return validatorNames.findIndex(x => this.hasValidatorService.hasValidator(x, value)) > -1;\n  }\n\n  //#endregion\n}\n","import {ValidationSummarizerBaseService} from '../services/implementations/validators/validation-summarizers/validation-summarizer-base.service';\nimport {v4 as uuid} from 'uuid';\n\n// tslint:disable-next-line:typedef\nexport function buildHasAnyValidatorService() {\n  return new ValidationSummarizerBaseService(uuid());\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {HasAnyValidatorsPipe} from './has-any-validators.pipe';\nimport {HAS_ANY_VALIDATOR_SERVICE} from '../../../../constants/injectors/internal-injectors';\nimport {buildHasAnyValidatorService} from '../../../../factories/has-any-validators-pipe.factory';\n\n@NgModule({\n  declarations: [\n    HasAnyValidatorsPipe\n  ],\n  exports: [\n    HasAnyValidatorsPipe\n  ]\n})\nexport class HasAnyValidatorsModule {\n\n  //#region Methods\n\n  public static forRoot(): ModuleWithProviders<HasAnyValidatorsModule> {\n    return {\n      ngModule: HasAnyValidatorsModule,\n      providers: [\n        {\n          provide: HAS_ANY_VALIDATOR_SERVICE,\n          useFactory: buildHasAnyValidatorService,\n          multi: false\n        }\n      ]\n    };\n  }\n\n  //#endregion\n}\n","import {NgModule} from '@angular/core';\nimport {WINDOW_PROVIDERS} from '../../services/implementations/window.service';\n\n@NgModule({\n  providers: [\n    WINDOW_PROVIDERS\n  ]\n})\nexport class WindowAccessorModule {\n}\n","// Banner export.\nexport * from './banner/index';\n\n// Sentinel modules export.\nexport * from './sentinel/index';\n\n// Smart navigator export.\nexport * from './smart-navigator/index';\n\n// Spinner export.\nexport * from './spinner/index';\n\n// Validator export.\nexport * from './validator/index';\n\n// Window accessor export.\nexport * from './window-accessor/index';\n","import {IDialogService} from '../interfaces/dialogs/dialog-service.interface';\nimport {Observable, of, race, throwError} from 'rxjs';\nimport {map, mergeMap, retryWhen, tap} from 'rxjs/operators';\nimport {DialogResult} from '../../models/implementations/dialogs/dialog-result';\nimport {DialogResultConstant} from '../../constants/dialog-result.constant';\nimport {IDialogSettings} from '../../models/interfaces/dialogs/dialog-settings.interface';\nimport {Injector} from '@angular/core';\nimport {IDialogBuilder} from '../interfaces/dialogs/dialog-builder.interface';\nimport {DIALOG_BUILDER} from '../../constants/injectors/injectors';\n\nexport abstract class DialogService implements IDialogService {\n\n  //#region Properties\n\n  // List of dialog builders to build dialog in the system.\n  protected readonly dialogBuilders: IDialogBuilder[];\n\n  //#endregion\n\n\n  //#region Constructor\n\n  protected constructor(protected injector: Injector) {\n    this.dialogBuilders = injector.get(DIALOG_BUILDER) as any as IDialogBuilder[];\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  // Display confirm modal asynchronously\n  // Will be return true or false base on action of user in the modal\n  public displayDialogAsync<T>(settings: IDialogSettings): Observable<T> {\n\n    return this.buildDialogAsync<T>(settings)\n      .pipe(\n        map((dialogResult: DialogResult<T>) => {\n          // Modal is dismissed.\n          if (DialogResultConstant.reject === dialogResult.action) {\n            throw new Error(DialogResultConstant.reject);\n          }\n\n          return dialogResult.data;\n        })\n      );\n  }\n\n  // Close all dialog which has been displayed.\n  public closeAll(): void {\n    throw new Error('Not implemented');\n  }\n\n  //#endregion\n\n  //#region Internal methods\n\n  protected buildDialogAsync<T>(settings: IDialogSettings): Observable<DialogResult<T>> {\n\n    if (!settings) {\n      return throwError('INVALID_DIALOG_SETTING');\n    }\n\n    let itemIndex = 0;\n    const builders = this.dialogBuilders;\n    const isNotAbleToBuildException = 'IS_NOT_ABLE_TO_BE_BUILT';\n    const noBuilderAvailableException = 'NO_DIALOG_BUILDER_AVAILABLE';\n    const maxRetriesExceeded = 'MAX_RETRIES_EXCEEDED';\n\n    return of(void (0))\n      .pipe(\n        tap(_ => {\n          if (!builders) {\n            throw noBuilderAvailableException;\n          }\n\n          if (itemIndex > builders.length - 1) {\n            throw maxRetriesExceeded;\n          }\n        }),\n        mergeMap(_ => {\n\n          return builders[itemIndex]\n            .buildAsync(settings)\n            .pipe(\n              map(dialogResult => dialogResult as DialogResult<T>)\n            );\n        }),\n        retryWhen(exceptionObservable => {\n          return exceptionObservable\n            .pipe(\n              tap(exception => {\n                if (exception !== isNotAbleToBuildException) {\n                  throw exception;\n                }\n\n                itemIndex++;\n              })\n            );\n        })\n      );\n\n  }\n\n  //#endregion\n}\n","import {IScreenCodeResolver} from '../interfaces';\nimport {cloneDeep} from 'lodash-es';\n\nexport abstract class DefaultScreenCodeResolver implements IScreenCodeResolver {\n\n  //#region Properties\n\n  // Mapping between screen code & url.\n  // tslint:disable-next-line:variable-name\n  protected _codeToUrl: { [key: string]: string };\n\n  //#endregion\n\n  //#region Constructor\n\n  protected constructor(codeToUrl: { [key: string]: string }) {\n    this._codeToUrl = cloneDeep(codeToUrl);\n  }\n\n  //#endregion\n\n  //#region Methods\n\n  // Convert screen code to url.\n  public loadUrl(code: string): string | null {\n    if (!code || !code.length) {\n      return null;\n    }\n\n    if (!this._codeToUrl) {\n      return null;\n    }\n\n    return this._codeToUrl[code];\n  }\n\n  //#endregion\n\n}\n","// Banner services.\nexport * from './banners/index';\n\nexport * from './smart-navigator-service.interface';\nexport * from './spinner-service.interface';\n\n// Screen code resolver.\nexport * from './screen-code-resolver.interface';\n\n// Dialog export.\nexport * from './dialogs/index';\n\n// Validation summarizer export.\nexport * from './validation-summarizers/index';\n","// Constants export.\nexport * from './constants/index';\n\n// Enums export.\nexport * from './enums/index';\n\n// Models export.\nexport * from './models/index';\n\n// Modules export.\nexport * from './modules/index';\n\n// Pipes export.\nexport * from './pipes/index';\n\n// Providers export.\nexport * from './providers/index';\n\n// Services export.\nexport * from './services/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["lodashMerge","uuid","uuidv4","i1","i2.ValidationSummarizerItemDirective","i3.ToTrustedHtmlPipe","i1.ValidationSummarizerComponent","i2"],"mappings":"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"}