@fundamental-ngx/platform 0.58.2-rc.0 → 0.58.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +61 -47
  2. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-platform-button.mjs +7 -7
  4. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +47 -47
  6. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +10 -8
  8. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-platform-form.mjs +327 -319
  10. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +91 -84
  12. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-platform-info-label.mjs +7 -7
  14. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-platform-link.mjs +10 -8
  16. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-platform-list.mjs +59 -59
  18. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +7 -7
  20. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-platform-menu.mjs +14 -14
  22. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +16 -16
  24. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-platform-object-attribute.mjs.map +1 -1
  26. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +7 -7
  27. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  28. package/fesm2022/fundamental-ngx-platform-object-status.mjs +10 -10
  29. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  30. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +8 -8
  31. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  32. package/fesm2022/fundamental-ngx-platform-panel.mjs +31 -25
  33. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  34. package/fesm2022/fundamental-ngx-platform-search-field.mjs +16 -16
  35. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  36. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +36 -36
  37. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  38. package/fesm2022/fundamental-ngx-platform-shared.mjs +28 -28
  39. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  40. package/fesm2022/fundamental-ngx-platform-slider.mjs +7 -7
  41. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  42. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +34 -34
  43. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  44. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +7 -7
  45. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  46. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +82 -82
  47. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  48. package/fesm2022/fundamental-ngx-platform-table.mjs +131 -131
  49. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  50. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +30 -30
  51. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +19 -19
  53. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +43 -43
  55. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-platform.mjs +4 -4
  57. package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
  58. package/{types/fundamental-ngx-platform-icon-tab-bar.d.ts → icon-tab-bar/index.d.ts} +5 -1
  59. package/package.json +38 -38
  60. package/{types/fundamental-ngx-platform-panel.d.ts → panel/index.d.ts} +4 -4
  61. package/schematics/ng-add/index.js +1 -1
  62. package/schematics/utils/package-utils.js +1 -1
  63. package/schematics/utils/package-utils.js.map +1 -1
  64. /package/{types/fundamental-ngx-platform-approval-flow.d.ts → approval-flow/index.d.ts} +0 -0
  65. /package/{types/fundamental-ngx-platform-button.d.ts → button/index.d.ts} +0 -0
  66. /package/{types/fundamental-ngx-platform-dynamic-page.d.ts → dynamic-page/index.d.ts} +0 -0
  67. /package/{types/fundamental-ngx-platform-feed-input.d.ts → feed-input/index.d.ts} +0 -0
  68. /package/{types/fundamental-ngx-platform-form.d.ts → form/index.d.ts} +0 -0
  69. /package/{types/fundamental-ngx-platform.d.ts → index.d.ts} +0 -0
  70. /package/{types/fundamental-ngx-platform-info-label.d.ts → info-label/index.d.ts} +0 -0
  71. /package/{types/fundamental-ngx-platform-link.d.ts → link/index.d.ts} +0 -0
  72. /package/{types/fundamental-ngx-platform-list.d.ts → list/index.d.ts} +0 -0
  73. /package/{types/fundamental-ngx-platform-menu.d.ts → menu/index.d.ts} +0 -0
  74. /package/{types/fundamental-ngx-platform-menu-button.d.ts → menu-button/index.d.ts} +0 -0
  75. /package/{types/fundamental-ngx-platform-message-popover.d.ts → message-popover/index.d.ts} +0 -0
  76. /package/{types/fundamental-ngx-platform-object-attribute.d.ts → object-attribute/index.d.ts} +0 -0
  77. /package/{types/fundamental-ngx-platform-object-marker.d.ts → object-marker/index.d.ts} +0 -0
  78. /package/{types/fundamental-ngx-platform-object-status.d.ts → object-status/index.d.ts} +0 -0
  79. /package/{types/fundamental-ngx-platform-page-footer.d.ts → page-footer/index.d.ts} +0 -0
  80. /package/{types/fundamental-ngx-platform-search-field.d.ts → search-field/index.d.ts} +0 -0
  81. /package/{types/fundamental-ngx-platform-settings-generator.d.ts → settings-generator/index.d.ts} +0 -0
  82. /package/{types/fundamental-ngx-platform-shared.d.ts → shared/index.d.ts} +0 -0
  83. /package/{types/fundamental-ngx-platform-slider.d.ts → slider/index.d.ts} +0 -0
  84. /package/{types/fundamental-ngx-platform-smart-filter-bar.d.ts → smart-filter-bar/index.d.ts} +0 -0
  85. /package/{types/fundamental-ngx-platform-split-menu-button.d.ts → split-menu-button/index.d.ts} +0 -0
  86. /package/{types/fundamental-ngx-platform-table.d.ts → table/index.d.ts} +0 -0
  87. /package/{types/fundamental-ngx-platform-table-helpers.d.ts → table-helpers/index.d.ts} +0 -0
  88. /package/{types/fundamental-ngx-platform-value-help-dialog.d.ts → value-help-dialog/index.d.ts} +0 -0
  89. /package/{types/fundamental-ngx-platform-variant-management.d.ts → variant-management/index.d.ts} +0 -0
  90. /package/{types/fundamental-ngx-platform-wizard-generator.d.ts → wizard-generator/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-message-popover.mjs","sources":["../../../../libs/platform/message-popover/default-config.ts","../../../../libs/platform/message-popover/directives/message-popover-form-item.directive.ts","../../../../libs/platform/message-popover/utils.ts","../../../../libs/platform/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.ts","../../../../libs/platform/message-popover/components/message-view/message-view.component.ts","../../../../libs/platform/message-popover/components/message-view/message-view.component.html","../../../../libs/platform/message-popover/message-popover.component.ts","../../../../libs/platform/message-popover/message-popover.component.html","../../../../libs/platform/message-popover/platform-message-popover.module.ts","../../../../libs/platform/message-popover/fundamental-ngx-platform-message-popover.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\n\nexport interface MessagePopoverErrorConfig {\n heading: string;\n description?: string;\n type: FormStates;\n}\n\nexport interface MessagePopoverConfig {\n /**\n * Errors object where key is error type and value is i18n string.\n */\n errors: Record<string, string | MessagePopoverErrorConfig>;\n}\n\nexport const FDP_MESSAGE_POPOVER_DEFAULT_CONFIG: MessagePopoverConfig = {\n errors: {\n email: 'platformMessagePopover.defaultErrors.email',\n max: 'platformMessagePopover.defaultErrors.max',\n maxlength: 'platformMessagePopover.defaultErrors.maxLength',\n min: 'platformMessagePopover.defaultErrors.min',\n minlength: 'platformMessagePopover.defaultErrors.minLength',\n pattern: 'platformMessagePopover.defaultErrors.pattern',\n required: 'platformMessagePopover.defaultErrors.required',\n requiredTrue: 'platformMessagePopover.defaultErrors.requiredTrue'\n }\n};\n\nexport const FDP_MESSAGE_POPOVER_CONFIG = new InjectionToken<MessagePopoverConfig>('FdpMessagePopoverConfig');\n","import { Directive, ElementRef, Input, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MessagePopoverConfig } from '../default-config';\n\n@Directive({\n selector: '[fdpMessagePopoverFormItem]',\n standalone: true\n})\nexport class MessagePopoverFormItemDirective {\n /** Form item name. */\n @Input('fdpMessagePopoverFormItem')\n label: string;\n\n /** Error type definition. */\n @Input()\n errorTypes: MessagePopoverConfig['errors'];\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n @Optional() public readonly control: NgControl\n ) {}\n}\n","import { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { ObjectStatus } from '@fundamental-ngx/core/object-status';\nimport { MessagePopoverState } from './models/message-popover.interface';\n\n/**\n * Converts Object Status into Message Popover State\n * @param status Object status\n * @returns Message Popover State.\n */\nexport function convertFormStateToMessagePopoverState(state: FormStates): MessagePopoverState {\n switch (state) {\n case 'error':\n return 'negative';\n case 'warning':\n return 'critical';\n case 'default':\n return 'neutral';\n default:\n return state;\n }\n}\n\n/**\n * Converts Form State into Object status type.\n * @param type Form state.\n * @returns `ObjectStatus` type.\n */\nexport function convertFormState(type: FormStates): ObjectStatus {\n switch (type) {\n case 'success':\n return 'positive';\n case 'error':\n return 'negative';\n case 'warning':\n return 'critical';\n case 'information':\n return 'informative';\n default:\n return 'neutral';\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, ControlContainer, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';\nimport { FD_FORM_FIELD_CONTROL, FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n FormFieldErrorDirectiveContext,\n PlatformFormField,\n PlatformFormFieldControl\n} from '@fundamental-ngx/platform/shared';\nimport { Subject, Subscription, filter, startWith, switchMap, zip } from 'rxjs';\nimport { FDP_MESSAGE_POPOVER_CONFIG, MessagePopoverConfig, MessagePopoverErrorConfig } from '../../default-config';\nimport { MessagePopoverFormItemDirective } from '../../directives/message-popover-form-item.directive';\nimport {\n MessagePopoverEntry,\n MessagePopoverErrorGroup,\n MessagePopoverErrorText\n} from '../../models/message-popover-entry.interface';\nimport { MessagePopoverWrapper } from '../../models/message-popover-wrapper.interface';\nimport { MessagePopover } from '../../models/message-popover.interface';\nimport { convertFormState } from '../../utils';\n\nexport type MessagePopoverForm = NgForm | FormGroupDirective;\n\n@Component({\n selector: 'fdp-message-popover-form-wrapper',\n template: `<ng-content></ng-content>`,\n exportAs: 'messagePopoverWrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class MessagePopoverFormWrapperComponent implements MessagePopoverWrapper, AfterViewInit, OnDestroy {\n /** @hidden */\n @ContentChildren(ControlContainer, { descendants: true })\n private readonly _projectedForm: QueryList<MessagePopoverForm>;\n\n /** @hidden */\n @ContentChildren(FD_FORM_FIELD_CONTROL, { descendants: true })\n private readonly _projectedFormFieldControls!: QueryList<PlatformFormFieldControl>;\n\n /** @hidden */\n @ContentChildren(MessagePopoverFormItemDirective, { descendants: true })\n private readonly _directiveItems!: QueryList<MessagePopoverFormItemDirective>;\n\n /** Message Popover instance. */\n messagePopover$ = new Subject<MessagePopover>();\n\n /**\n * User-passed forms.\n */\n @Input()\n set forms(forms: MessagePopoverForm | MessagePopoverForm[]) {\n if (!forms) {\n return;\n }\n if (!Array.isArray(forms)) {\n forms = [forms];\n }\n this._ngForms = forms;\n this._startListeningForErrors();\n }\n\n /** User-passed form fields. */\n @Input()\n set formFields(value: PlatformFormFieldControl[]) {\n this._formFields = value;\n this._listenToFormFieldErrors(value);\n }\n\n get formFields(): PlatformFormFieldControl[] {\n return this._formFields;\n }\n\n /**\n * Error models Signal. Emitted when form submitted and contains invalid fields.\n */\n readonly errors$ = signal<MessagePopoverErrorGroup[]>([]);\n\n /** @hidden */\n private _formFields: PlatformFormFieldControl[] = [];\n\n /** @hidden */\n private _formErrorsSubscription: Subscription | undefined;\n\n /** @hidden */\n private _ngForms: (NgForm | FormGroupDirective)[] = [];\n\n /** @hidden */\n private _formItemErrorsSubscription = new Subscription();\n\n /** @hidden */\n private _formSubmitted = false;\n\n /** @hidden */\n constructor(\n private readonly _destroyRef: DestroyRef,\n @Inject(FDP_MESSAGE_POPOVER_CONFIG) private readonly _config: MessagePopoverConfig\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n // Forms are passed via input property.\n if (this._ngForms.length > 0) {\n return;\n }\n this._projectedForm?.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._ngForms = this._projectedForm.toArray();\n this._startListeningForErrors();\n });\n }\n\n /**\n * Sets Message Popover component instance.\n */\n setMessagePopover(messagePopover: MessagePopover): void {\n this.messagePopover$.next(messagePopover);\n // this.messagePopover = messagePopover;\n }\n\n /**\n * Programmatically add new form to array of forms.\n * @param forms\n */\n addForms(forms: MessagePopoverForm | MessagePopoverForm[]): void {\n const formsArray = Array.isArray(forms) ? forms : [forms];\n this._ngForms.push(...formsArray);\n this._startListeningForErrors();\n }\n\n /**\n * Programmatically add new form fields to array of listened form fields.\n * @param formFields\n */\n addFormFields(formFields: PlatformFormFieldControl[]): void {\n this._formFields.push(...formFields);\n this._listenToFormFieldErrors(this._formFields);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._formItemErrorsSubscription.unsubscribe();\n }\n\n /**\n * @hidden\n * Listens to the form submission and collects form control errors.\n */\n private _startListeningForErrors(): void {\n if (!this._ngForms) {\n return;\n }\n this._formErrorsSubscription?.unsubscribe();\n this.errors$.set([]);\n\n const formSubmitEvents = this._ngForms.map((form) =>\n form.ngSubmit.pipe(\n switchMap(() =>\n form.statusChanges!.pipe(\n startWith(form.status),\n filter((status: string) => status.toLowerCase() !== 'pending')\n )\n )\n )\n );\n\n this._formErrorsSubscription = zip(...formSubmitEvents)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formSubmitted = true;\n const errors =\n this._directiveItems.length > 0 ? this._collectPlainFormData() : this._collectAdvancedFormData();\n\n this.errors$.set(errors);\n });\n\n this._listenToFormFieldErrors(this._projectedFormFieldControls.toArray());\n\n this._projectedFormFieldControls?.changes.subscribe(() => {\n this._listenToFormFieldErrors(this._projectedFormFieldControls.toArray());\n });\n }\n\n /** @hidden */\n private _listenToFormFieldErrors(fields: PlatformFormFieldControl[]): void {\n this._formItemErrorsSubscription.unsubscribe();\n\n this._formItemErrorsSubscription = new Subscription();\n\n fields?.forEach((field) => {\n this._formItemErrorsSubscription.add(\n field.formField?.errorsChange$.subscribe(() => {\n if (!this._formSubmitted) {\n return;\n }\n const errors =\n this._directiveItems.length > 0\n ? this._collectPlainFormData()\n : this._collectAdvancedFormData();\n this.errors$.set(errors);\n })\n );\n });\n }\n\n /** @hidden */\n private _collectPlainFormData(): MessagePopoverErrorGroup[] {\n const errors: MessagePopoverErrorGroup[] = [\n {\n errors: []\n }\n ];\n\n const fields = this._directiveItems.toArray();\n\n this._ngForms.forEach((form) => {\n Object.keys(form.form.controls).forEach((controlName) => {\n const control = form.form.get(controlName);\n const field = fields.find((formField) => formField.control?.name === controlName);\n\n if (!control?.errors || !field) {\n return;\n }\n\n const configErrors = Object.keys(this._config.errors);\n\n Object.keys(control.errors)\n .filter((error) => configErrors.includes(error))\n .forEach((errorKey) => {\n const errorObj = control.errors![errorKey];\n\n const errorTextModel = this._getConfigErrorModel(errorKey, field.errorTypes);\n const errorConfig = field?.errorTypes ? field?.errorTypes[errorKey] : null;\n const errorState =\n errorConfig && this._isAdvancedError(errorConfig) && errorConfig.type\n ? errorConfig.type\n : 'error';\n const error: MessagePopoverEntry = {\n name: controlName,\n type: errorTextModel.type,\n state: convertFormState(errorState),\n fieldName: field?.label ?? '',\n element: field?.elementRef,\n heading: {\n type: 'string',\n error: errorObj,\n message: errorTextModel.heading\n },\n description: {\n type: 'string',\n error: errorObj,\n message: errorTextModel.description\n },\n errors: control!.errors\n };\n\n errors[0].errors.push(error);\n });\n });\n });\n\n return errors;\n }\n\n /** @hidden */\n private _collectAdvancedFormData(): MessagePopoverErrorGroup[] {\n let errors: MessagePopoverErrorGroup[] = [];\n const fields = this.formFields.length > 0 ? this.formFields : this._projectedFormFieldControls.toArray();\n\n /**\n * Iterates over form controls to collect their errors.\n * @param form Form Group or a collection of Form Groups.\n */\n const iterateOverForm = (form: FormGroup | FormGroup[]): MessagePopoverErrorGroup[] => {\n if (Array.isArray(form)) {\n form.forEach((formGroup) => {\n errors = iterateOverForm(formGroup);\n });\n return errors;\n }\n Object.keys(form.controls).forEach((controlName) => {\n const control = form.get(controlName);\n const field = fields.find((formField) => formField.id === controlName);\n\n if (control instanceof FormGroup) {\n errors = iterateOverForm(control);\n }\n\n if (!control?.errors || !field) {\n return;\n }\n\n Object.keys(control.errors).forEach((errorKey) => {\n const errorDirective = field.formField?.groupedErrors.find(\n (groupedError) => groupedError.directive.error === errorKey\n );\n\n const groupName = this._getGroupName(field?.formField);\n const error = this._getErrorModel(\n controlName,\n groupName,\n control,\n field,\n errorKey,\n errorDirective,\n control.errors![errorKey]\n );\n\n let errorGroupIndex = errors.findIndex((errorGroup) => errorGroup.group === groupName);\n\n if (errorGroupIndex === -1) {\n errorGroupIndex =\n errors.push({\n group: groupName,\n errors: []\n }) - 1;\n }\n\n const group = errors[errorGroupIndex];\n\n group.errors.push(error);\n });\n });\n\n return errors;\n };\n\n return iterateOverForm(this._ngForms.map((form) => form.form));\n }\n\n /**\n * @hidden\n * Creates error model\n */\n private _getErrorModel(\n controlName: string,\n groupName: string,\n control: AbstractControl,\n field: PlatformFormFieldControl,\n errorKey: string,\n errorDirective?: FormFieldErrorDirectiveContext,\n error?: any\n ): MessagePopoverEntry {\n let state: FormStates = 'error';\n const configError = this._config.errors[errorKey];\n\n if (errorDirective?.directive.type) {\n state = errorDirective.directive.type;\n } else if (this._isAdvancedError(configError)) {\n state = configError.type;\n }\n\n return {\n name: controlName,\n type: state,\n state: convertFormState(state),\n group: groupName,\n fieldName: field?.formField?.label ?? '',\n heading: this._getErrorText(field, errorDirective, 'heading', errorKey, error),\n description: this._getErrorText(field, errorDirective, 'description', errorKey, error),\n errors: control!.errors,\n formField: field,\n element: field?.elementRef\n };\n }\n\n /**\n * @hidden\n * Creates error text based on the type of the error.\n * @param field Form Field Control.\n * @param errorDirective Optional Error directive\n * @param section Section where text should be rendered.\n * @param errorKey\n * @param error\n */\n private _getErrorText(\n field: PlatformFormFieldControl,\n errorDirective: Nullable<FormFieldErrorDirectiveContext>,\n section: 'heading' | 'description' = 'heading',\n errorKey: string,\n error?: any\n ): MessagePopoverErrorText {\n const errorTextObj: MessagePopoverErrorText = {\n error: errorDirective?.error,\n type: errorDirective?.directive ? 'directive' : field?.formField?.i18Strings ? 'templateRef' : 'string'\n };\n\n if (errorTextObj.type === 'string') {\n const errorTextModel = this._getConfigErrorModel(errorKey);\n\n errorTextObj.error = error;\n errorTextObj.message = errorTextModel[section];\n return errorTextObj;\n }\n\n if (errorDirective?.directive) {\n errorTextObj.message =\n section === 'heading'\n ? (errorDirective.directive._headingTemplateRef ?? errorDirective.directive._descriptionTemplateRef)\n : errorDirective.directive._descriptionTemplateRef;\n return errorTextObj;\n }\n\n errorTextObj.message = field?.formField?.i18Strings ?? null;\n return errorTextObj;\n }\n\n /** @hidden */\n private _getGroupName(formField: Nullable<PlatformFormField>): string {\n const parts: string[] = [];\n\n if (formField?.formGroupContainer?.mainTitle) {\n parts.push(formField.formGroupContainer.mainTitle);\n }\n\n if (formField?.formFieldGroup?.label) {\n parts.push(formField.formFieldGroup.label);\n }\n\n return parts.join(', ');\n }\n\n /** @hidden */\n private _getConfigErrorModel(\n errorKey: string,\n customErrorTypes?: MessagePopoverConfig['errors']\n ): MessagePopoverErrorConfig {\n const configError =\n customErrorTypes && customErrorTypes[errorKey] ? customErrorTypes[errorKey] : this._config.errors[errorKey];\n const isPlainError = !this._isAdvancedError(configError);\n const errorType = isPlainError ? 'error' : configError.type;\n const headingMessage = isPlainError ? configError : configError.heading;\n const descriptionMessage = isPlainError ? undefined : configError.description;\n\n return {\n type: errorType,\n heading: headingMessage,\n description: descriptionMessage\n };\n }\n\n /** @hidden */\n private _isAdvancedError(error: string | MessagePopoverErrorConfig): error is MessagePopoverErrorConfig {\n return !!error && typeof error !== 'string';\n }\n}\n","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable, TabbableElementService, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { ObjectStatusComponent } from '@fundamental-ngx/core/object-status';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { debounceTime } from 'rxjs';\nimport { MessagePopoverEntry, MessagePopoverErrorGroup } from '../../models/message-popover-entry.interface';\n\n@Component({\n selector: 'fdp-message-view',\n templateUrl: './message-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [TabbableElementService],\n animations: [\n trigger('openCloseList', [\n // ...\n state(\n 'open',\n style({\n transform: 'translateX(0)',\n opacity: 1\n })\n ),\n state(\n 'closed',\n style({\n transform: 'translateX(-50px)',\n opacity: 0\n })\n ),\n transition('open => closed', [animate('.1s cubic-bezier(0, 0, 0.2, 1)')]),\n transition('closed => open', [animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')])\n ]),\n trigger('openCloseDetails', [\n state(\n 'open',\n style({\n transform: 'translateX(0)',\n opacity: 1,\n display: 'block'\n })\n ),\n state(\n 'closed',\n style({\n transform: 'translateX(50px)',\n opacity: 0\n })\n ),\n transition('open => closed', [\n animate(\n '.1s cubic-bezier(0, 0, 0.2, 1)',\n keyframes([\n style({\n transform: 'translateX(0)',\n opacity: 1,\n display: 'block'\n }),\n style({\n transform: 'translateX(50px)',\n opacity: 0,\n display: 'none'\n })\n ])\n )\n ]),\n transition('closed => open', [\n style({\n display: 'block'\n }),\n animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')\n ])\n ])\n ],\n imports: [\n NgTemplateOutlet,\n CdkScrollable,\n ScrollbarDirective,\n ListModule,\n ObjectStatusComponent,\n LinkComponent,\n FdTranslatePipe\n ]\n})\nexport class MessageViewComponent implements AfterViewInit {\n /** Current Message Popover screen. Can be either `list` or `details`. */\n @Input()\n currentScreen: 'list' | 'details';\n\n /** Filtered errors to render. */\n @Input()\n filteredErrors: MessagePopoverErrorGroup[];\n\n /** Current error entry. Used for details view. */\n @Input()\n currentEntry: Nullable<MessagePopoverEntry>;\n\n /** Event emitted when user clicks on error entry containing additional description. */\n @Output()\n openDetails = new EventEmitter<MessagePopoverEntry>();\n\n /** Event emitted when user clicks on error entry and item's element should be focused. */\n @Output()\n focusItem = new EventEmitter<MessagePopoverEntry>();\n\n /** Event emitted when user clicks on the field link to focus on the field itself. */\n @Output()\n closePopover = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild('listView', { read: ElementRef })\n protected _listView: ElementRef;\n\n /** @hidden */\n @ViewChild('detailsView', { read: ElementRef })\n protected _detailsView: ElementRef;\n\n /** @Hidden */\n @HostBinding('class')\n protected readonly _initialClass = 'fd-message-popover__view-container';\n\n /** @hidden */\n private _activeListElement: Nullable<HTMLElement> = null;\n\n /** @hidden */\n constructor(\n private readonly _destroyRef: DestroyRef,\n private readonly _tabbableService: TabbableElementService,\n @Inject(DOCUMENT) private readonly _document: Document\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n resizeObservable(this._detailsView.nativeElement)\n .pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const { height } = this._detailsView.nativeElement.getBoundingClientRect();\n this._listView.nativeElement.style.minHeight = `${height}px`;\n });\n }\n\n /** @hidden */\n _showDetails(entry: MessagePopoverEntry): void {\n this._activeListElement = this._document.activeElement as HTMLElement;\n if (!entry.description.message) {\n this._focusElement(undefined, entry);\n return;\n }\n this.currentScreen = 'details';\n this.openDetails.emit(entry);\n }\n\n /** @hidden */\n _focusElement(event?: MouseEvent, item?: MessagePopoverEntry): void {\n if (!item?.element?.nativeElement) {\n return;\n }\n event?.stopImmediatePropagation();\n this.closePopover.emit(false);\n this.focusItem.emit(item);\n setTimeout(() => {\n const tabbableElement = this._tabbableService.getTabbableElement(item.element?.nativeElement);\n tabbableElement?.focus();\n });\n }\n\n /** @hidden */\n _onListAnimationComplete(event: any): void {\n if (event.toState === 'open' && this._activeListElement) {\n this._activeListElement.focus();\n this._activeListElement = null;\n }\n }\n}\n","<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate: { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate: { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n @for (group of filteredErrors; track group) {\n @if (group.group) {\n <li fd-list-group-header>\n <span fd-list-title>{{ group.group }}</span>\n </li>\n }\n @for (item of group.errors; track item; let i = $index) {\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n @if (item.element && !!item.description.message) {\n <span fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n } @else {\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n }\n </li>\n }\n }\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n @if (currentEntry) {\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n @if (currentEntry.description.message) {\n <span class=\"fd-message-view__details-description\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n }\n }\n </div>\n </section>\n</div>\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n computed,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { InitialFocusDirective, Nullable, countBy, flatten } from '@fundamental-ngx/cdk/utils';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ObjectStatusComponent } from '@fundamental-ngx/core/object-status';\nimport { PopoverComponent, PopoverModule } from '@fundamental-ngx/core/popover';\nimport { SegmentedButtonComponent } from '@fundamental-ngx/core/segmented-button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { getFormState } from '@fundamental-ngx/platform/form';\nimport { MessageViewComponent } from './components/message-view/message-view.component';\nimport {\n MessagePopoverEntry,\n MessagePopoverError,\n MessagePopoverErrorGroup\n} from './models/message-popover-entry.interface';\nimport { MessagePopoverWrapper } from './models/message-popover-wrapper.interface';\nimport { MessagePopover, MessagePopoverState } from './models/message-popover.interface';\nimport { convertFormState, convertFormStateToMessagePopoverState } from './utils';\n\n@Component({\n selector: 'fdp-message-popover',\n templateUrl: './message-popover.component.html',\n styleUrl: './message-popover.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n PopoverModule,\n ButtonComponent,\n NgClass,\n BarModule,\n SegmentedButtonComponent,\n FormsModule,\n ObjectStatusComponent,\n InitialFocusDirective,\n MessageViewComponent,\n FdTranslatePipe\n ]\n})\nexport class MessagePopoverComponent implements MessagePopover {\n /** @hidden */\n @ViewChild('popover')\n readonly _popover: PopoverComponent;\n\n /** Message Popover Wrapper component. */\n @Input()\n set wrapper(value: Nullable<MessagePopoverWrapper>) {\n value?.setMessagePopover(this);\n this._wrapper$.set(value);\n }\n get wrapper(): Nullable<MessagePopoverWrapper> {\n return this._wrapper$();\n }\n\n /** Event emits when user clicks on error entry and item's element needs to be focused. */\n @Output()\n focusItem = new EventEmitter<MessagePopoverEntry>();\n\n /** Current message popover screen. Can be `list` or `details`. */\n currentScreen: 'list' | 'details' = 'list';\n\n /** Current error entry. */\n currentEntry: Nullable<MessagePopoverEntry>;\n\n /** @hidden */\n _currentErrorType$: WritableSignal<MessagePopoverError['group']> = signal('all');\n\n /** @hidden */\n _errorTypes$ = computed<MessagePopoverError[]>(() => {\n const countedErrors = this._countedErrors$();\n const errorTypes = Object.keys(countedErrors) as FormStates[];\n return errorTypes.map((errorType) => ({\n group: errorType,\n count: countedErrors[errorType],\n state: convertFormState(errorType)\n }));\n });\n\n /** @hidden */\n _priorityStateItemsCount$ = computed(() => this._countedErrors$()[this._priorityFormState$()!] || 0);\n\n /** @hidden */\n _priorityFormState$ = computed<FormStates>(() => {\n const countedErrors = this._countedErrors$();\n const errorTypes = Object.keys(countedErrors) as FormStates[];\n return getFormState(errorTypes);\n });\n\n /** @hidden */\n _priorityState$ = computed<Nullable<MessagePopoverState>>(() =>\n convertFormStateToMessagePopoverState(this._priorityFormState$())\n );\n\n /** @hidden */\n readonly _filteredErrors$ = computed(() => {\n const groupedErrors = this._groupedErrors$();\n const errorType = this._currentErrorType$();\n\n if (errorType === 'all') {\n return groupedErrors;\n }\n\n const filteredErrors: MessagePopoverErrorGroup[] = [];\n groupedErrors.forEach((group) => {\n const errors = group.errors.filter((error) => error.type === errorType);\n\n if (errors.length === 0) {\n return;\n }\n\n filteredErrors.push({\n group: group.group,\n errors\n });\n });\n\n return filteredErrors;\n });\n\n private readonly _groupedErrors$ = computed(() => this._wrapper$()?.errors$() || []);\n\n private readonly _wrapper$ = signal<Nullable<MessagePopoverWrapper>>(null);\n\n private readonly _countedErrors$ = computed(() =>\n countBy(flatten(Object.values(this._groupedErrors$().map((group) => group.errors))), 'type')\n );\n\n /** @hidden */\n _showList(): void {\n this.currentScreen = 'list';\n this.currentEntry = null;\n }\n\n /** @hidden */\n _showDetails(entry: MessagePopoverEntry): void {\n this.currentScreen = 'details';\n this.currentEntry = entry;\n }\n\n /** @hidden */\n _closePopover(focusLast = true): void {\n this._popover.close(focusLast);\n }\n}\n","@if (_errorTypes$().length > 0) {\n <fd-popover\n #popover\n placement=\"top-start\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [disableScrollbar]=\"true\"\n >\n <fd-popover-control>\n <button\n fd-button\n type=\"button\"\n class=\"fd-message-popover__trigger fd-message-popover__trigger\"\n [ngClass]=\"'fd-message-popover__trigger--' + _priorityState$()\"\n [glyph]=\"'message-' + _priorityFormState$()\"\n [label]=\"_priorityStateItemsCount$().toString()\"\n ></button>\n </fd-popover-control>\n <div>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\" class=\"fd-bar--growing\">\n <div fd-bar-left>\n @if (currentScreen === 'list') {\n <fd-segmented-button\n [ngModel]=\"_currentErrorType$()\"\n (ngModelChange)=\"_currentErrorType$.set($event)\"\n >\n <button\n fd-button\n [label]=\"'platformMessagePopover.allErrors' | fdTranslate\"\n value=\"all\"\n ></button>\n @for (type of _errorTypes$(); track type) {\n <button fd-button [value]=\"type.group\">\n <span\n fd-object-status\n [status]=\"type.state\"\n [glyph]=\"'message-' + type.group\"\n ></span>\n <span class=\"fd-button__text\">{{ type.count }}</span>\n </button>\n }\n </fd-segmented-button>\n }\n @if (currentScreen === 'details') {\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n title=\"Go back\"\n (click)=\"_showList()\"\n ></button>\n }\n </div>\n <div fd-bar-right>\n <button fd-button fdType=\"transparent\" (click)=\"popover.close()\" glyph=\"decline\"></button>\n </div>\n </div>\n </div>\n <fdp-message-view\n [currentScreen]=\"currentScreen\"\n [filteredErrors]=\"_filteredErrors$()\"\n [currentEntry]=\"currentEntry\"\n (openDetails)=\"_showDetails($event)\"\n (closePopover)=\"_closePopover($event)\"\n (focusItem)=\"focusItem.emit($event)\"\n ></fdp-message-view>\n </div>\n </fd-popover>\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { mergeWith } from '@fundamental-ngx/cdk/utils';\nimport { MessagePopoverFormWrapperComponent } from './components/message-popover-form-wrapper/message-popover-form-wrapper.component';\nimport { MessageViewComponent } from './components/message-view/message-view.component';\nimport { FDP_MESSAGE_POPOVER_CONFIG, FDP_MESSAGE_POPOVER_DEFAULT_CONFIG, MessagePopoverConfig } from './default-config';\nimport { MessagePopoverFormItemDirective } from './directives/message-popover-form-item.directive';\nimport { MessagePopoverComponent } from './message-popover.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n MessagePopoverComponent,\n MessagePopoverFormWrapperComponent,\n MessageViewComponent,\n MessagePopoverFormItemDirective\n ],\n exports: [\n MessagePopoverComponent,\n MessagePopoverFormWrapperComponent,\n MessageViewComponent,\n MessagePopoverFormItemDirective\n ],\n providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: FDP_MESSAGE_POPOVER_DEFAULT_CONFIG\n }\n ]\n})\nexport class PlatformMessagePopoverModule {\n /**\n * Method allows users to apply custom configuration.\n * @param config Object containing error definitions.\n */\n static withConfig(config: MessagePopoverConfig): ModuleWithProviders<PlatformMessagePopoverModule> {\n const customConfig = mergeWith(FDP_MESSAGE_POPOVER_DEFAULT_CONFIG, config, (obj, src) => {\n if (typeof obj === 'object' && !Array.isArray(obj)) {\n return Object.assign(obj, src);\n } else if (Array.isArray(obj)) {\n return obj.concat(src);\n } else {\n return src;\n }\n });\n\n return {\n ngModule: PlatformMessagePopoverModule,\n providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: customConfig\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-message-popover.mjs","sources":["../tmp-esm2022/message-popover/default-config.js","../tmp-esm2022/message-popover/directives/message-popover-form-item.directive.js","../tmp-esm2022/message-popover/utils.js","../tmp-esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.js","../tmp-esm2022/message-popover/components/message-view/message-view.component.js","../tmp-esm2022/message-popover/message-popover.component.js","../tmp-esm2022/message-popover/platform-message-popover.module.js","../tmp-esm2022/message-popover/fundamental-ngx-platform-message-popover.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const FDP_MESSAGE_POPOVER_DEFAULT_CONFIG = {\n errors: {\n email: 'platformMessagePopover.defaultErrors.email',\n max: 'platformMessagePopover.defaultErrors.max',\n maxlength: 'platformMessagePopover.defaultErrors.maxLength',\n min: 'platformMessagePopover.defaultErrors.min',\n minlength: 'platformMessagePopover.defaultErrors.minLength',\n pattern: 'platformMessagePopover.defaultErrors.pattern',\n required: 'platformMessagePopover.defaultErrors.required',\n requiredTrue: 'platformMessagePopover.defaultErrors.requiredTrue'\n }\n};\nexport const FDP_MESSAGE_POPOVER_CONFIG = new InjectionToken('FdpMessagePopoverConfig');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL21lc3NhZ2UtcG9wb3Zlci9kZWZhdWx0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBZ0IvQyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBeUI7SUFDcEUsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLDRDQUE0QztRQUNuRCxHQUFHLEVBQUUsMENBQTBDO1FBQy9DLFNBQVMsRUFBRSxnREFBZ0Q7UUFDM0QsR0FBRyxFQUFFLDBDQUEwQztRQUMvQyxTQUFTLEVBQUUsZ0RBQWdEO1FBQzNELE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsUUFBUSxFQUFFLCtDQUErQztRQUN6RCxZQUFZLEVBQUUsbURBQW1EO0tBQ3BFO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUF1Qix5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyB7XG4gICAgaGVhZGluZzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHR5cGU6IEZvcm1TdGF0ZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZVBvcG92ZXJDb25maWcge1xuICAgIC8qKlxuICAgICAqIEVycm9ycyBvYmplY3Qgd2hlcmUga2V5IGlzIGVycm9yIHR5cGUgYW5kIHZhbHVlIGlzIGkxOG4gc3RyaW5nLlxuICAgICAqL1xuICAgIGVycm9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZz47XG59XG5cbmV4cG9ydCBjb25zdCBGRFBfTUVTU0FHRV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHOiBNZXNzYWdlUG9wb3ZlckNvbmZpZyA9IHtcbiAgICBlcnJvcnM6IHtcbiAgICAgICAgZW1haWw6ICdwbGF0Zm9ybU1lc3NhZ2VQb3BvdmVyLmRlZmF1bHRFcnJvcnMuZW1haWwnLFxuICAgICAgICBtYXg6ICdwbGF0Zm9ybU1lc3NhZ2VQb3BvdmVyLmRlZmF1bHRFcnJvcnMubWF4JyxcbiAgICAgICAgbWF4bGVuZ3RoOiAncGxhdGZvcm1NZXNzYWdlUG9wb3Zlci5kZWZhdWx0RXJyb3JzLm1heExlbmd0aCcsXG4gICAgICAgIG1pbjogJ3BsYXRmb3JtTWVzc2FnZVBvcG92ZXIuZGVmYXVsdEVycm9ycy5taW4nLFxuICAgICAgICBtaW5sZW5ndGg6ICdwbGF0Zm9ybU1lc3NhZ2VQb3BvdmVyLmRlZmF1bHRFcnJvcnMubWluTGVuZ3RoJyxcbiAgICAgICAgcGF0dGVybjogJ3BsYXRmb3JtTWVzc2FnZVBvcG92ZXIuZGVmYXVsdEVycm9ycy5wYXR0ZXJuJyxcbiAgICAgICAgcmVxdWlyZWQ6ICdwbGF0Zm9ybU1lc3NhZ2VQb3BvdmVyLmRlZmF1bHRFcnJvcnMucmVxdWlyZWQnLFxuICAgICAgICByZXF1aXJlZFRydWU6ICdwbGF0Zm9ybU1lc3NhZ2VQb3BvdmVyLmRlZmF1bHRFcnJvcnMucmVxdWlyZWRUcnVlJ1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGRFBfTUVTU0FHRV9QT1BPVkVSX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZXNzYWdlUG9wb3ZlckNvbmZpZz4oJ0ZkcE1lc3NhZ2VQb3BvdmVyQ29uZmlnJyk7XG4iXX0=","import { Directive, ElementRef, Input, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport class MessagePopoverFormItemDirective {\n /** @hidden */\n constructor(elementRef, control) {\n this.elementRef = elementRef;\n this.control = control;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessagePopoverFormItemDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: MessagePopoverFormItemDirective, isStandalone: true, selector: \"[fdpMessagePopoverFormItem]\", inputs: { label: [\"fdpMessagePopoverFormItem\", \"label\"], errorTypes: \"errorTypes\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessagePopoverFormItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpMessagePopoverFormItem]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NgControl, decorators: [{\n type: Optional\n }] }], propDecorators: { label: [{\n type: Input,\n args: ['fdpMessagePopoverFormItem']\n }], errorTypes: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL21lc3NhZ2UtcG9wb3Zlci9kaXJlY3RpdmVzL21lc3NhZ2UtcG9wb3Zlci1mb3JtLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLCtCQUErQjtJQVN4QyxjQUFjO0lBQ2QsWUFDb0IsVUFBc0IsRUFDVixPQUFrQjtRQUQ5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUMvQyxDQUFDOzhHQWJLLCtCQUErQjtrR0FBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBYVEsUUFBUTt5Q0FUYixLQUFLO3NCQURKLEtBQUs7dUJBQUMsMkJBQTJCO2dCQUtsQyxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJDb25maWcgfSBmcm9tICcuLi9kZWZhdWx0LWNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1EaXJlY3RpdmUge1xuICAgIC8qKiBGb3JtIGl0ZW0gbmFtZS4gKi9cbiAgICBASW5wdXQoJ2ZkcE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW0nKVxuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogRXJyb3IgdHlwZSBkZWZpbml0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXJyb3JUeXBlczogTWVzc2FnZVBvcG92ZXJDb25maWdbJ2Vycm9ycyddO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWFkb25seSBjb250cm9sOiBOZ0NvbnRyb2xcbiAgICApIHt9XG59XG4iXX0=","/**\n * Converts Object Status into Message Popover State\n * @param status Object status\n * @returns Message Popover State.\n */\nexport function convertFormStateToMessagePopoverState(state) {\n switch (state) {\n case 'error':\n return 'negative';\n case 'warning':\n return 'critical';\n case 'default':\n return 'neutral';\n default:\n return state;\n }\n}\n/**\n * Converts Form State into Object status type.\n * @param type Form state.\n * @returns `ObjectStatus` type.\n */\nexport function convertFormState(type) {\n switch (type) {\n case 'success':\n return 'positive';\n case 'error':\n return 'negative';\n case 'warning':\n return 'critical';\n case 'information':\n return 'informative';\n default:\n return 'neutral';\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL21lc3NhZ2UtcG9wb3Zlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFDQUFxQyxDQUFDLEtBQWlCO0lBQ25FLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFDWixLQUFLLE9BQU87WUFDUixPQUFPLFVBQVUsQ0FBQztRQUN0QixLQUFLLFNBQVM7WUFDVixPQUFPLFVBQVUsQ0FBQztRQUN0QixLQUFLLFNBQVM7WUFDVixPQUFPLFNBQVMsQ0FBQztRQUNyQjtZQUNJLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFnQjtJQUM3QyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ1gsS0FBSyxTQUFTO1lBQ1YsT0FBTyxVQUFVLENBQUM7UUFDdEIsS0FBSyxPQUFPO1lBQ1IsT0FBTyxVQUFVLENBQUM7UUFDdEIsS0FBSyxTQUFTO1lBQ1YsT0FBTyxVQUFVLENBQUM7UUFDdEIsS0FBSyxhQUFhO1lBQ2QsT0FBTyxhQUFhLENBQUM7UUFDekI7WUFDSSxPQUFPLFNBQVMsQ0FBQztJQUN6QixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBPYmplY3RTdGF0dXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvb2JqZWN0LXN0YXR1cyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlclN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29udmVydHMgT2JqZWN0IFN0YXR1cyBpbnRvIE1lc3NhZ2UgUG9wb3ZlciBTdGF0ZVxuICogQHBhcmFtIHN0YXR1cyBPYmplY3Qgc3RhdHVzXG4gKiBAcmV0dXJucyBNZXNzYWdlIFBvcG92ZXIgU3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Rm9ybVN0YXRlVG9NZXNzYWdlUG9wb3ZlclN0YXRlKHN0YXRlOiBGb3JtU3RhdGVzKTogTWVzc2FnZVBvcG92ZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICByZXR1cm4gJ25lZ2F0aXZlJztcbiAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICByZXR1cm4gJ2NyaXRpY2FsJztcbiAgICAgICAgY2FzZSAnZGVmYXVsdCc6XG4gICAgICAgICAgICByZXR1cm4gJ25ldXRyYWwnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBGb3JtIFN0YXRlIGludG8gT2JqZWN0IHN0YXR1cyB0eXBlLlxuICogQHBhcmFtIHR5cGUgRm9ybSBzdGF0ZS5cbiAqIEByZXR1cm5zIGBPYmplY3RTdGF0dXNgIHR5cGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Rm9ybVN0YXRlKHR5cGU6IEZvcm1TdGF0ZXMpOiBPYmplY3RTdGF0dXMge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgICAgIHJldHVybiAncG9zaXRpdmUnO1xuICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICByZXR1cm4gJ25lZ2F0aXZlJztcbiAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICByZXR1cm4gJ2NyaXRpY2FsJztcbiAgICAgICAgY2FzZSAnaW5mb3JtYXRpb24nOlxuICAgICAgICAgICAgcmV0dXJuICdpbmZvcm1hdGl2ZSc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ25ldXRyYWwnO1xuICAgIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, ContentChildren, DestroyRef, Inject, Input, QueryList, ViewEncapsulation, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlContainer, FormGroup } from '@angular/forms';\nimport { FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { Subject, Subscription, filter, startWith, switchMap, zip } from 'rxjs';\nimport { FDP_MESSAGE_POPOVER_CONFIG } from '../../default-config';\nimport { MessagePopoverFormItemDirective } from '../../directives/message-popover-form-item.directive';\nimport { convertFormState } from '../../utils';\nimport * as i0 from \"@angular/core\";\nexport class MessagePopoverFormWrapperComponent {\n /**\n * User-passed forms.\n */\n set forms(forms) {\n if (!forms) {\n return;\n }\n if (!Array.isArray(forms)) {\n forms = [forms];\n }\n this._ngForms = forms;\n this._startListeningForErrors();\n }\n /** User-passed form fields. */\n set formFields(value) {\n this._formFields = value;\n this._listenToFormFieldErrors(value);\n }\n get formFields() {\n return this._formFields;\n }\n /** @hidden */\n constructor(_destroyRef, _config) {\n this._destroyRef = _destroyRef;\n this._config = _config;\n /** Message Popover instance. */\n this.messagePopover$ = new Subject();\n /**\n * Error models Signal. Emitted when form submitted and contains invalid fields.\n */\n this.errors$ = signal([], ...(ngDevMode ? [{ debugName: \"errors$\" }] : []));\n /** @hidden */\n this._formFields = [];\n /** @hidden */\n this._ngForms = [];\n /** @hidden */\n this._formItemErrorsSubscription = new Subscription();\n /** @hidden */\n this._formSubmitted = false;\n }\n /** @hidden */\n ngAfterViewInit() {\n // Forms are passed via input property.\n if (this._ngForms.length > 0) {\n return;\n }\n this._projectedForm?.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._ngForms = this._projectedForm.toArray();\n this._startListeningForErrors();\n });\n }\n /**\n * Sets Message Popover component instance.\n */\n setMessagePopover(messagePopover) {\n this.messagePopover$.next(messagePopover);\n // this.messagePopover = messagePopover;\n }\n /**\n * Programmatically add new form to array of forms.\n * @param forms\n */\n addForms(forms) {\n const formsArray = Array.isArray(forms) ? forms : [forms];\n this._ngForms.push(...formsArray);\n this._startListeningForErrors();\n }\n /**\n * Programmatically add new form fields to array of listened form fields.\n * @param formFields\n */\n addFormFields(formFields) {\n this._formFields.push(...formFields);\n this._listenToFormFieldErrors(this._formFields);\n }\n /** @hidden */\n ngOnDestroy() {\n this._formItemErrorsSubscription.unsubscribe();\n }\n /**\n * @hidden\n * Listens to the form submission and collects form control errors.\n */\n _startListeningForErrors() {\n if (!this._ngForms) {\n return;\n }\n this._formErrorsSubscription?.unsubscribe();\n this.errors$.set([]);\n const formSubmitEvents = this._ngForms.map((form) => form.ngSubmit.pipe(switchMap(() => form.statusChanges.pipe(startWith(form.status), filter((status) => status.toLowerCase() !== 'pending')))));\n this._formErrorsSubscription = zip(...formSubmitEvents)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._formSubmitted = true;\n const errors = this._directiveItems.length > 0 ? this._collectPlainFormData() : this._collectAdvancedFormData();\n this.errors$.set(errors);\n });\n this._listenToFormFieldErrors(this._projectedFormFieldControls.toArray());\n this._projectedFormFieldControls?.changes.subscribe(() => {\n this._listenToFormFieldErrors(this._projectedFormFieldControls.toArray());\n });\n }\n /** @hidden */\n _listenToFormFieldErrors(fields) {\n this._formItemErrorsSubscription.unsubscribe();\n this._formItemErrorsSubscription = new Subscription();\n fields?.forEach((field) => {\n this._formItemErrorsSubscription.add(field.formField?.errorsChange$.subscribe(() => {\n if (!this._formSubmitted) {\n return;\n }\n const errors = this._directiveItems.length > 0\n ? this._collectPlainFormData()\n : this._collectAdvancedFormData();\n this.errors$.set(errors);\n }));\n });\n }\n /** @hidden */\n _collectPlainFormData() {\n const errors = [\n {\n errors: []\n }\n ];\n const fields = this._directiveItems.toArray();\n this._ngForms.forEach((form) => {\n Object.keys(form.form.controls).forEach((controlName) => {\n const control = form.form.get(controlName);\n const field = fields.find((formField) => formField.control?.name === controlName);\n if (!control?.errors || !field) {\n return;\n }\n const configErrors = Object.keys(this._config.errors);\n Object.keys(control.errors)\n .filter((error) => configErrors.includes(error))\n .forEach((errorKey) => {\n const errorObj = control.errors[errorKey];\n const errorTextModel = this._getConfigErrorModel(errorKey, field.errorTypes);\n const errorConfig = field?.errorTypes ? field?.errorTypes[errorKey] : null;\n const errorState = errorConfig && this._isAdvancedError(errorConfig) && errorConfig.type\n ? errorConfig.type\n : 'error';\n const error = {\n name: controlName,\n type: errorTextModel.type,\n state: convertFormState(errorState),\n fieldName: field?.label ?? '',\n element: field?.elementRef,\n heading: {\n type: 'string',\n error: errorObj,\n message: errorTextModel.heading\n },\n description: {\n type: 'string',\n error: errorObj,\n message: errorTextModel.description\n },\n errors: control.errors\n };\n errors[0].errors.push(error);\n });\n });\n });\n return errors;\n }\n /** @hidden */\n _collectAdvancedFormData() {\n let errors = [];\n const fields = this.formFields.length > 0 ? this.formFields : this._projectedFormFieldControls.toArray();\n /**\n * Iterates over form controls to collect their errors.\n * @param form Form Group or a collection of Form Groups.\n */\n const iterateOverForm = (form) => {\n if (Array.isArray(form)) {\n form.forEach((formGroup) => {\n errors = iterateOverForm(formGroup);\n });\n return errors;\n }\n Object.keys(form.controls).forEach((controlName) => {\n const control = form.get(controlName);\n const field = fields.find((formField) => formField.id === controlName);\n if (control instanceof FormGroup) {\n errors = iterateOverForm(control);\n }\n if (!control?.errors || !field) {\n return;\n }\n Object.keys(control.errors).forEach((errorKey) => {\n const errorDirective = field.formField?.groupedErrors.find((groupedError) => groupedError.directive.error === errorKey);\n const groupName = this._getGroupName(field?.formField);\n const error = this._getErrorModel(controlName, groupName, control, field, errorKey, errorDirective, control.errors[errorKey]);\n let errorGroupIndex = errors.findIndex((errorGroup) => errorGroup.group === groupName);\n if (errorGroupIndex === -1) {\n errorGroupIndex =\n errors.push({\n group: groupName,\n errors: []\n }) - 1;\n }\n const group = errors[errorGroupIndex];\n group.errors.push(error);\n });\n });\n return errors;\n };\n return iterateOverForm(this._ngForms.map((form) => form.form));\n }\n /**\n * @hidden\n * Creates error model\n */\n _getErrorModel(controlName, groupName, control, field, errorKey, errorDirective, error) {\n let state = 'error';\n const configError = this._config.errors[errorKey];\n if (errorDirective?.directive.type) {\n state = errorDirective.directive.type;\n }\n else if (this._isAdvancedError(configError)) {\n state = configError.type;\n }\n return {\n name: controlName,\n type: state,\n state: convertFormState(state),\n group: groupName,\n fieldName: field?.formField?.label ?? '',\n heading: this._getErrorText(field, errorDirective, 'heading', errorKey, error),\n description: this._getErrorText(field, errorDirective, 'description', errorKey, error),\n errors: control.errors,\n formField: field,\n element: field?.elementRef\n };\n }\n /**\n * @hidden\n * Creates error text based on the type of the error.\n * @param field Form Field Control.\n * @param errorDirective Optional Error directive\n * @param section Section where text should be rendered.\n * @param errorKey\n * @param error\n */\n _getErrorText(field, errorDirective, section = 'heading', errorKey, error) {\n const errorTextObj = {\n error: errorDirective?.error,\n type: errorDirective?.directive ? 'directive' : field?.formField?.i18Strings ? 'templateRef' : 'string'\n };\n if (errorTextObj.type === 'string') {\n const errorTextModel = this._getConfigErrorModel(errorKey);\n errorTextObj.error = error;\n errorTextObj.message = errorTextModel[section];\n return errorTextObj;\n }\n if (errorDirective?.directive) {\n errorTextObj.message =\n section === 'heading'\n ? (errorDirective.directive._headingTemplateRef ?? errorDirective.directive._descriptionTemplateRef)\n : errorDirective.directive._descriptionTemplateRef;\n return errorTextObj;\n }\n errorTextObj.message = field?.formField?.i18Strings ?? null;\n return errorTextObj;\n }\n /** @hidden */\n _getGroupName(formField) {\n const parts = [];\n if (formField?.formGroupContainer?.mainTitle) {\n parts.push(formField.formGroupContainer.mainTitle);\n }\n if (formField?.formFieldGroup?.label) {\n parts.push(formField.formFieldGroup.label);\n }\n return parts.join(', ');\n }\n /** @hidden */\n _getConfigErrorModel(errorKey, customErrorTypes) {\n const configError = customErrorTypes && customErrorTypes[errorKey] ? customErrorTypes[errorKey] : this._config.errors[errorKey];\n const isPlainError = !this._isAdvancedError(configError);\n const errorType = isPlainError ? 'error' : configError.type;\n const headingMessage = isPlainError ? configError : configError.heading;\n const descriptionMessage = isPlainError ? undefined : configError.description;\n return {\n type: errorType,\n heading: headingMessage,\n description: descriptionMessage\n };\n }\n /** @hidden */\n _isAdvancedError(error) {\n return !!error && typeof error !== 'string';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessagePopoverFormWrapperComponent, deps: [{ token: i0.DestroyRef }, { token: FDP_MESSAGE_POPOVER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.4\", type: MessagePopoverFormWrapperComponent, isStandalone: true, selector: \"fdp-message-popover-form-wrapper\", inputs: { forms: \"forms\", formFields: \"formFields\" }, queries: [{ propertyName: \"_projectedForm\", predicate: ControlContainer, descendants: true }, { propertyName: \"_projectedFormFieldControls\", predicate: FD_FORM_FIELD_CONTROL, descendants: true }, { propertyName: \"_directiveItems\", predicate: MessagePopoverFormItemDirective, descendants: true }], exportAs: [\"messagePopoverWrapper\"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessagePopoverFormWrapperComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fdp-message-popover-form-wrapper',\n template: `<ng-content></ng-content>`,\n exportAs: 'messagePopoverWrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.DestroyRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [FDP_MESSAGE_POPOVER_CONFIG]\n }] }], propDecorators: { _projectedForm: [{\n type: ContentChildren,\n args: [ControlContainer, { descendants: true }]\n }], _projectedFormFieldControls: [{\n type: ContentChildren,\n args: [FD_FORM_FIELD_CONTROL, { descendants: true }]\n }], _directiveItems: [{\n type: ContentChildren,\n args: [MessagePopoverFormItemDirective, { descendants: true }]\n }], forms: [{\n type: Input\n }], formFields: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL21lc3NhZ2UtcG9wb3Zlci9jb21wb25lbnRzL21lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXIvbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsU0FBUyxFQUE4QixNQUFNLGdCQUFnQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBYyxNQUFNLDRCQUE0QixDQUFDO0FBTy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQW1ELE1BQU0sc0JBQXNCLENBQUM7QUFDbkgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFRdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQVkvQyxNQUFNLE9BQU8sa0NBQWtDO0lBZ0IzQzs7T0FFRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWdEO1FBQ3RELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FB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QVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBa0VRLE1BQU07MkJBQUMsMEJBQTBCO3lDQTlEckIsY0FBYztzQkFEOUIsZUFBZTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBS3ZDLDJCQUEyQjtzQkFEM0MsZUFBZTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSzVDLGVBQWU7c0JBRC9CLGVBQWU7dUJBQUMsK0JBQStCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQVVuRSxLQUFLO3NCQURSLEtBQUs7Z0JBY0YsVUFBVTtzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0LFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZpbHRlciwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkRQX01FU1NBR0VfUE9QT1ZFUl9DT05GSUcsIE1lc3NhZ2VQb3BvdmVyQ29uZmlnLCBNZXNzYWdlUG9wb3ZlckVycm9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1jb25maWcnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBNZXNzYWdlUG9wb3ZlckVudHJ5LFxuICAgIE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cCxcbiAgICBNZXNzYWdlUG9wb3ZlckVycm9yVGV4dFxufSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLWVudHJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLXdyYXBwZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VQb3BvdmVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lc3NhZ2UtcG9wb3Zlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY29udmVydEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVBvcG92ZXJGb3JtID0gTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyJyxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGV4cG9ydEFzOiAnbWVzc2FnZVBvcG92ZXJXcmFwcGVyJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVBvcG92ZXJGb3JtV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1lc3NhZ2VQb3BvdmVyV3JhcHBlciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ29udHJvbENvbnRhaW5lciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm06IFF1ZXJ5TGlzdDxNZXNzYWdlUG9wb3ZlckZvcm0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZEX0ZPUk1fRklFTERfQ09OVFJPTCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzITogUXVlcnlMaXN0PFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpcmVjdGl2ZUl0ZW1zITogUXVlcnlMaXN0PE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIE1lc3NhZ2UgUG9wb3ZlciBpbnN0YW5jZS4gKi9cbiAgICBtZXNzYWdlUG9wb3ZlciQgPSBuZXcgU3ViamVjdDxNZXNzYWdlUG9wb3Zlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIFVzZXItcGFzc2VkIGZvcm1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcm1zKGZvcm1zOiBNZXNzYWdlUG9wb3ZlckZvcm0gfCBNZXNzYWdlUG9wb3ZlckZvcm1bXSkge1xuICAgICAgICBpZiAoIWZvcm1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZvcm1zKSkge1xuICAgICAgICAgICAgZm9ybXMgPSBbZm9ybXNdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25nRm9ybXMgPSBmb3JtcztcbiAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICB9XG5cbiAgICAvKiogVXNlci1wYXNzZWQgZm9ybSBmaWVsZHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9ybUZpZWxkcyh2YWx1ZTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1GaWVsZHMoKTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcnJvciBtb2RlbHMgU2lnbmFsLiBFbWl0dGVkIHdoZW4gZm9ybSBzdWJtaXR0ZWQgYW5kIGNvbnRhaW5zIGludmFsaWQgZmllbGRzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVycm9ycyQgPSBzaWduYWw8TWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10+KFtdKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybUZpZWxkczogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybUVycm9yc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9uZ0Zvcm1zOiAoTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlKVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgICAgICBASW5qZWN0KEZEUF9NRVNTQUdFX1BPUE9WRVJfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc6IE1lc3NhZ2VQb3BvdmVyQ29uZmlnXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEZvcm1zIGFyZSBwYXNzZWQgdmlhIGlucHV0IHByb3BlcnR5LlxuICAgICAgICBpZiAodGhpcy5fbmdGb3Jtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvamVjdGVkRm9ybT8uY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbmdGb3JtcyA9IHRoaXMuX3Byb2plY3RlZEZvcm0udG9BcnJheSgpO1xuICAgICAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBNZXNzYWdlIFBvcG92ZXIgY29tcG9uZW50IGluc3RhbmNlLlxuICAgICAqL1xuICAgIHNldE1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VQb3BvdmVyOiBNZXNzYWdlUG9wb3Zlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1lc3NhZ2VQb3BvdmVyJC5uZXh0KG1lc3NhZ2VQb3BvdmVyKTtcbiAgICAgICAgLy8gdGhpcy5tZXNzYWdlUG9wb3ZlciA9IG1lc3NhZ2VQb3BvdmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpY2FsbHkgYWRkIG5ldyBmb3JtIHRvIGFycmF5IG9mIGZvcm1zLlxuICAgICAqIEBwYXJhbSBmb3Jtc1xuICAgICAqL1xuICAgIGFkZEZvcm1zKGZvcm1zOiBNZXNzYWdlUG9wb3ZlckZvcm0gfCBNZXNzYWdlUG9wb3ZlckZvcm1bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3Jtc0FycmF5ID0gQXJyYXkuaXNBcnJheShmb3JtcykgPyBmb3JtcyA6IFtmb3Jtc107XG4gICAgICAgIHRoaXMuX25nRm9ybXMucHVzaCguLi5mb3Jtc0FycmF5KTtcbiAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9ncmFtbWF0aWNhbGx5IGFkZCBuZXcgZm9ybSBmaWVsZHMgdG8gYXJyYXkgb2YgbGlzdGVuZWQgZm9ybSBmaWVsZHMuXG4gICAgICogQHBhcmFtIGZvcm1GaWVsZHNcbiAgICAgKi9cbiAgICBhZGRGb3JtRmllbGRzKGZvcm1GaWVsZHM6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1GaWVsZHMucHVzaCguLi5mb3JtRmllbGRzKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Gb3JtRmllbGRFcnJvcnModGhpcy5fZm9ybUZpZWxkcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1FcnJvcnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdGVucyB0byB0aGUgZm9ybSBzdWJtaXNzaW9uIGFuZCBjb2xsZWN0cyBmb3JtIGNvbnRyb2wgZXJyb3JzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3N0YXJ0TGlzdGVuaW5nRm9yRXJyb3JzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX25nRm9ybXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mb3JtRXJyb3JzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmVycm9ycyQuc2V0KFtdKTtcblxuICAgICAgICBjb25zdCBmb3JtU3VibWl0RXZlbnRzID0gdGhpcy5fbmdGb3Jtcy5tYXAoKGZvcm0pID0+XG4gICAgICAgICAgICBmb3JtLm5nU3VibWl0LnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIGZvcm0uc3RhdHVzQ2hhbmdlcyEucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChmb3JtLnN0YXR1cyksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXR1czogc3RyaW5nKSA9PiBzdGF0dXMudG9Mb3dlckNhc2UoKSAhPT0gJ3BlbmRpbmcnKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb24gPSB6aXAoLi4uZm9ybVN1Ym1pdEV2ZW50cylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1TdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpcmVjdGl2ZUl0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLl9jb2xsZWN0UGxhaW5Gb3JtRGF0YSgpIDogdGhpcy5fY29sbGVjdEFkdmFuY2VkRm9ybURhdGEoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzJC5zZXQoZXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG5cbiAgICAgICAgdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHM/LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Gb3JtRmllbGRFcnJvcnMoZmllbGRzOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgIGZpZWxkcz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICBmaWVsZC5mb3JtRmllbGQ/LmVycm9yc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9mb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpcmVjdGl2ZUl0ZW1zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2NvbGxlY3RQbGFpbkZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzJC5zZXQoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsZWN0UGxhaW5Gb3JtRGF0YSgpOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSB7XG4gICAgICAgIGNvbnN0IGVycm9yczogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXJyb3JzOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuX2RpcmVjdGl2ZUl0ZW1zLnRvQXJyYXkoKTtcblxuICAgICAgICB0aGlzLl9uZ0Zvcm1zLmZvckVhY2goKGZvcm0pID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm0uZm9ybS5jb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5mb3JtLmdldChjb250cm9sTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZm9ybUZpZWxkKSA9PiBmb3JtRmllbGQuY29udHJvbD8ubmFtZSA9PT0gY29udHJvbE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFjb250cm9sPy5lcnJvcnMgfHwgIWZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWdFcnJvcnMgPSBPYmplY3Qua2V5cyh0aGlzLl9jb25maWcuZXJyb3JzKTtcblxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChlcnJvcikgPT4gY29uZmlnRXJyb3JzLmluY2x1ZGVzKGVycm9yKSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGVycm9yS2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck9iaiA9IGNvbnRyb2wuZXJyb3JzIVtlcnJvcktleV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yVGV4dE1vZGVsID0gdGhpcy5fZ2V0Q29uZmlnRXJyb3JNb2RlbChlcnJvcktleSwgZmllbGQuZXJyb3JUeXBlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvckNvbmZpZyA9IGZpZWxkPy5lcnJvclR5cGVzID8gZmllbGQ/LmVycm9yVHlwZXNbZXJyb3JLZXldIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yU3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ29uZmlnICYmIHRoaXMuX2lzQWR2YW5jZWRFcnJvcihlcnJvckNvbmZpZykgJiYgZXJyb3JDb25maWcudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVycm9yQ29uZmlnLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3I6IE1lc3NhZ2VQb3BvdmVyRW50cnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udHJvbE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZXJyb3JUZXh0TW9kZWwudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29udmVydEZvcm1TdGF0ZShlcnJvclN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkPy5sYWJlbCA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBmaWVsZD8uZWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JPYmosXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVGV4dE1vZGVsLmhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JPYmosXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVGV4dE1vZGVsLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IGNvbnRyb2whLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzWzBdLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdIHtcbiAgICAgICAgbGV0IGVycm9yczogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10gPSBbXTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5mb3JtRmllbGRzLmxlbmd0aCA+IDAgPyB0aGlzLmZvcm1GaWVsZHMgOiB0aGlzLl9wcm9qZWN0ZWRGb3JtRmllbGRDb250cm9scy50b0FycmF5KCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEl0ZXJhdGVzIG92ZXIgZm9ybSBjb250cm9scyB0byBjb2xsZWN0IHRoZWlyIGVycm9ycy5cbiAgICAgICAgICogQHBhcmFtIGZvcm0gRm9ybSBHcm91cCBvciBhIGNvbGxlY3Rpb24gb2YgRm9ybSBHcm91cHMuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVyYXRlT3ZlckZvcm0gPSAoZm9ybTogRm9ybUdyb3VwIHwgRm9ybUdyb3VwW10pOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtKSkge1xuICAgICAgICAgICAgICAgIGZvcm0uZm9yRWFjaCgoZm9ybUdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGl0ZXJhdGVPdmVyRm9ybShmb3JtR3JvdXApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChjb250cm9sTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZm9ybUZpZWxkKSA9PiBmb3JtRmllbGQuaWQgPT09IGNvbnRyb2xOYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGl0ZXJhdGVPdmVyRm9ybShjb250cm9sKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2w/LmVycm9ycyB8fCAhZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKChlcnJvcktleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvckRpcmVjdGl2ZSA9IGZpZWxkLmZvcm1GaWVsZD8uZ3JvdXBlZEVycm9ycy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwZWRFcnJvcikgPT4gZ3JvdXBlZEVycm9yLmRpcmVjdGl2ZS5lcnJvciA9PT0gZXJyb3JLZXlcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cE5hbWUgPSB0aGlzLl9nZXRHcm91cE5hbWUoZmllbGQ/LmZvcm1GaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5fZ2V0RXJyb3JNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRpcmVjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZXJyb3JzIVtlcnJvcktleV1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JHcm91cEluZGV4ID0gZXJyb3JzLmZpbmRJbmRleCgoZXJyb3JHcm91cCkgPT4gZXJyb3JHcm91cC5ncm91cCA9PT0gZ3JvdXBOYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JHcm91cEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JHcm91cEluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiBncm91cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGVycm9yc1tlcnJvckdyb3VwSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBpdGVyYXRlT3ZlckZvcm0odGhpcy5fbmdGb3Jtcy5tYXAoKGZvcm0pID0+IGZvcm0uZm9ybSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDcmVhdGVzIGVycm9yIG1vZGVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RXJyb3JNb2RlbChcbiAgICAgICAgY29udHJvbE5hbWU6IHN0cmluZyxcbiAgICAgICAgZ3JvdXBOYW1lOiBzdHJpbmcsXG4gICAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgZmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgZXJyb3JLZXk6IHN0cmluZyxcbiAgICAgICAgZXJyb3JEaXJlY3RpdmU/OiBGb3JtRmllbGRFcnJvckRpcmVjdGl2ZUNvbnRleHQsXG4gICAgICAgIGVycm9yPzogYW55XG4gICAgKTogTWVzc2FnZVBvcG92ZXJFbnRyeSB7XG4gICAgICAgIGxldCBzdGF0ZTogRm9ybVN0YXRlcyA9ICdlcnJvcic7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9yID0gdGhpcy5fY29uZmlnLmVycm9yc1tlcnJvcktleV07XG5cbiAgICAgICAgaWYgKGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUudHlwZSkge1xuICAgICAgICAgICAgc3RhdGUgPSBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUudHlwZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pc0FkdmFuY2VkRXJyb3IoY29uZmlnRXJyb3IpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGNvbmZpZ0Vycm9yLnR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogY29udHJvbE5hbWUsXG4gICAgICAgICAgICB0eXBlOiBzdGF0ZSxcbiAgICAgICAgICAgIHN0YXRlOiBjb252ZXJ0Rm9ybVN0YXRlKHN0YXRlKSxcbiAgICAgICAgICAgIGdyb3VwOiBncm91cE5hbWUsXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkPy5mb3JtRmllbGQ/LmxhYmVsID8/ICcnLFxuICAgICAgICAgICAgaGVhZGluZzogdGhpcy5fZ2V0RXJyb3JUZXh0KGZpZWxkLCBlcnJvckRpcmVjdGl2ZSwgJ2hlYWRpbmcnLCBlcnJvcktleSwgZXJyb3IpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuX2dldEVycm9yVGV4dChmaWVsZCwgZXJyb3JEaXJlY3RpdmUsICdkZXNjcmlwdGlvbicsIGVycm9yS2V5LCBlcnJvciksXG4gICAgICAgICAgICBlcnJvcnM6IGNvbnRyb2whLmVycm9ycyxcbiAgICAgICAgICAgIGZvcm1GaWVsZDogZmllbGQsXG4gICAgICAgICAgICBlbGVtZW50OiBmaWVsZD8uZWxlbWVudFJlZlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDcmVhdGVzIGVycm9yIHRleHQgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIGVycm9yLlxuICAgICAqIEBwYXJhbSBmaWVsZCBGb3JtIEZpZWxkIENvbnRyb2wuXG4gICAgICogQHBhcmFtIGVycm9yRGlyZWN0aXZlIE9wdGlvbmFsIEVycm9yIGRpcmVjdGl2ZVxuICAgICAqIEBwYXJhbSBzZWN0aW9uIFNlY3Rpb24gd2hlcmUgdGV4dCBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAgICogQHBhcmFtIGVycm9yS2V5XG4gICAgICogQHBhcmFtIGVycm9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RXJyb3JUZXh0KFxuICAgICAgICBmaWVsZDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBlcnJvckRpcmVjdGl2ZTogTnVsbGFibGU8Rm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0PixcbiAgICAgICAgc2VjdGlvbjogJ2hlYWRpbmcnIHwgJ2Rlc2NyaXB0aW9uJyA9ICdoZWFkaW5nJyxcbiAgICAgICAgZXJyb3JLZXk6IHN0cmluZyxcbiAgICAgICAgZXJyb3I/OiBhbnlcbiAgICApOiBNZXNzYWdlUG9wb3ZlckVycm9yVGV4dCB7XG4gICAgICAgIGNvbnN0IGVycm9yVGV4dE9iajogTWVzc2FnZVBvcG92ZXJFcnJvclRleHQgPSB7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3JEaXJlY3RpdmU/LmVycm9yLFxuICAgICAgICAgICAgdHlwZTogZXJyb3JEaXJlY3RpdmU/LmRpcmVjdGl2ZSA/ICdkaXJlY3RpdmUnIDogZmllbGQ/LmZvcm1GaWVsZD8uaTE4U3RyaW5ncyA/ICd0ZW1wbGF0ZVJlZicgOiAnc3RyaW5nJ1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChlcnJvclRleHRPYmoudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yVGV4dE1vZGVsID0gdGhpcy5fZ2V0Q29uZmlnRXJyb3JNb2RlbChlcnJvcktleSk7XG5cbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgZXJyb3JUZXh0T2JqLm1lc3NhZ2UgPSBlcnJvclRleHRNb2RlbFtzZWN0aW9uXTtcbiAgICAgICAgICAgIHJldHVybiBlcnJvclRleHRPYmo7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3JEaXJlY3RpdmU/LmRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgZXJyb3JUZXh0T2JqLm1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24gPT09ICdoZWFkaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IChlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2hlYWRpbmdUZW1wbGF0ZVJlZiA/PyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWYpXG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLl9kZXNjcmlwdGlvblRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVGV4dE9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID0gZmllbGQ/LmZvcm1GaWVsZD8uaTE4U3RyaW5ncyA/PyBudWxsO1xuICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBOYW1lKGZvcm1GaWVsZDogTnVsbGFibGU8UGxhdGZvcm1Gb3JtRmllbGQ+KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgaWYgKGZvcm1GaWVsZD8uZm9ybUdyb3VwQ29udGFpbmVyPy5tYWluVGl0bGUpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZm9ybUZpZWxkLmZvcm1Hcm91cENvbnRhaW5lci5tYWluVGl0bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1GaWVsZD8uZm9ybUZpZWxkR3JvdXA/LmxhYmVsKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGZvcm1GaWVsZC5mb3JtRmllbGRHcm91cC5sYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFydHMuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENvbmZpZ0Vycm9yTW9kZWwoXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUVycm9yVHlwZXM/OiBNZXNzYWdlUG9wb3ZlckNvbmZpZ1snZXJyb3JzJ11cbiAgICApOiBNZXNzYWdlUG9wb3ZlckVycm9yQ29uZmlnIHtcbiAgICAgICAgY29uc3QgY29uZmlnRXJyb3IgPVxuICAgICAgICAgICAgY3VzdG9tRXJyb3JUeXBlcyAmJiBjdXN0b21FcnJvclR5cGVzW2Vycm9yS2V5XSA/IGN1c3RvbUVycm9yVHlwZXNbZXJyb3JLZXldIDogdGhpcy5fY29uZmlnLmVycm9yc1tlcnJvcktleV07XG4gICAgICAgIGNvbnN0IGlzUGxhaW5FcnJvciA9ICF0aGlzLl9pc0FkdmFuY2VkRXJyb3IoY29uZmlnRXJyb3IpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBpc1BsYWluRXJyb3IgPyAnZXJyb3InIDogY29uZmlnRXJyb3IudHlwZTtcbiAgICAgICAgY29uc3QgaGVhZGluZ01lc3NhZ2UgPSBpc1BsYWluRXJyb3IgPyBjb25maWdFcnJvciA6IGNvbmZpZ0Vycm9yLmhlYWRpbmc7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTWVzc2FnZSA9IGlzUGxhaW5FcnJvciA/IHVuZGVmaW5lZCA6IGNvbmZpZ0Vycm9yLmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBlcnJvclR5cGUsXG4gICAgICAgICAgICBoZWFkaW5nOiBoZWFkaW5nTWVzc2FnZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbk1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQWR2YW5jZWRFcnJvcihlcnJvcjogc3RyaW5nIHwgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyk6IGVycm9yIGlzIE1lc3NhZ2VQb3BvdmVyRXJyb3JDb25maWcge1xuICAgICAgICByZXR1cm4gISFlcnJvciAmJiB0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnO1xuICAgIH1cbn1cbiJdfQ==","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DOCUMENT, DestroyRef, ElementRef, EventEmitter, HostBinding, Inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TabbableElementService, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { ObjectStatusComponent } from '@fundamental-ngx/core/object-status';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { debounceTime } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/cdk/utils\";\nimport * as i2 from \"@fundamental-ngx/core/list\";\nexport class MessageViewComponent {\n /** @hidden */\n constructor(_destroyRef, _tabbableService, _document) {\n this._destroyRef = _destroyRef;\n this._tabbableService = _tabbableService;\n this._document = _document;\n /** Event emitted when user clicks on error entry containing additional description. */\n this.openDetails = new EventEmitter();\n /** Event emitted when user clicks on error entry and item's element should be focused. */\n this.focusItem = new EventEmitter();\n /** Event emitted when user clicks on the field link to focus on the field itself. */\n this.closePopover = new EventEmitter();\n /** @Hidden */\n this._initialClass = 'fd-message-popover__view-container';\n /** @hidden */\n this._activeListElement = null;\n }\n /** @hidden */\n ngAfterViewInit() {\n resizeObservable(this._detailsView.nativeElement)\n .pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const { height } = this._detailsView.nativeElement.getBoundingClientRect();\n this._listView.nativeElement.style.minHeight = `${height}px`;\n });\n }\n /** @hidden */\n _showDetails(entry) {\n this._activeListElement = this._document.activeElement;\n if (!entry.description.message) {\n this._focusElement(undefined, entry);\n return;\n }\n this.currentScreen = 'details';\n this.openDetails.emit(entry);\n }\n /** @hidden */\n _focusElement(event, item) {\n if (!item?.element?.nativeElement) {\n return;\n }\n event?.stopImmediatePropagation();\n this.closePopover.emit(false);\n this.focusItem.emit(item);\n setTimeout(() => {\n const tabbableElement = this._tabbableService.getTabbableElement(item.element?.nativeElement);\n tabbableElement?.focus();\n });\n }\n /** @hidden */\n _onListAnimationComplete(event) {\n if (event.toState === 'open' && this._activeListElement) {\n this._activeListElement.focus();\n this._activeListElement = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessageViewComponent, deps: [{ token: i0.DestroyRef }, { token: i1.TabbableElementService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: MessageViewComponent, isStandalone: true, selector: \"fdp-message-view\", inputs: { currentScreen: \"currentScreen\", filteredErrors: \"filteredErrors\", currentEntry: \"currentEntry\" }, outputs: { openDetails: \"openDetails\", focusItem: \"focusItem\", closePopover: \"closePopover\" }, host: { properties: { \"class\": \"this._initialClass\" } }, providers: [TabbableElementService], viewQueries: [{ propertyName: \"_listView\", first: true, predicate: [\"listView\"], descendants: true, read: ElementRef }, { propertyName: \"_detailsView\", first: true, predicate: [\"detailsView\"], descendants: true, read: ElementRef }], ngImport: i0, template: \"<ng-template #headingTemplate let-item>\\n <ng-template #directiveHeading>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.heading.message || item.description.message\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.heading.error }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #i18nHeading>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.heading.message\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.errors }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #stringHeading>\\n {{ item.heading.message | fdTranslate: { error: item.heading.error } : item.heading.message }}\\n </ng-template>\\n <ng-template\\n [ngTemplateOutlet]=\\\"\\n item.heading.type === 'directive'\\n ? directiveHeading\\n : item.heading.type === 'string'\\n ? stringHeading\\n : i18nHeading\\n \\\"\\n ></ng-template>\\n</ng-template>\\n<ng-template #descriptionTemplate let-item>\\n <ng-template #directiveDescription>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.description.message!\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.description.error }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #i18nDescription>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.description.message!\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.errors }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #stringDescription>\\n {{ item.description.message | fdTranslate: { error: item.description.error } : item.description.message }}\\n </ng-template>\\n <ng-template\\n [ngTemplateOutlet]=\\\"\\n item.heading.type === 'directive'\\n ? directiveDescription\\n : item.heading.type === 'string'\\n ? stringDescription\\n : i18nDescription\\n \\\"\\n ></ng-template>\\n</ng-template>\\n<div class=\\\"fd-message-view\\\">\\n <section\\n class=\\\"fd-message-view__list\\\"\\n tabindex=\\\"-1\\\"\\n [@openCloseList]=\\\"currentScreen === 'list' ? 'open' : 'closed'\\\"\\n (@openCloseList.done)=\\\"_onListAnimationComplete($event)\\\"\\n fd-scrollbar\\n >\\n <ul #listView fd-list class=\\\"message-popover__list fd-list--message-view\\\" [navigationIndicator]=\\\"true\\\">\\n @for (group of filteredErrors; track group) {\\n @if (group.group) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{ group.group }}</span>\\n </li>\\n }\\n @for (item of group.errors; track item; let i = $index) {\\n <li fd-list-item [tabindex]=\\\"i === 0 ? 0 : -1\\\" [byline]=\\\"true\\\" (click)=\\\"_showDetails(item)\\\">\\n <ng-template #itemIcon>\\n <span\\n fd-object-status\\n class=\\\"fd-list__icon\\\"\\n [status]=\\\"item.state\\\"\\n [glyph]=\\\"'message-' + item.type\\\"\\n ></span>\\n </ng-template>\\n <ng-template #listSubtitle>\\n <span class=\\\"fd-list__subtitle\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"headingTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-template>\\n </span>\\n </ng-template>\\n @if (item.element && !!item.description.message) {\\n <span fd-list-link [navigationIndicator]=\\\"!!item.description.message\\\">\\n <ng-template [ngTemplateOutlet]=\\\"itemIcon\\\"></ng-template>\\n <span fd-list-content>\\n <span fd-list-title>\\n <a tabindex=\\\"0\\\" fd-link (click)=\\\"_focusElement($event, item)\\\">\\n {{ item.fieldName }}\\n </a>\\n </span>\\n <ng-template [ngTemplateOutlet]=\\\"listSubtitle\\\"></ng-template>\\n </span>\\n </span>\\n } @else {\\n <a fd-list-link [navigationIndicator]=\\\"!!item.description.message\\\">\\n <ng-template [ngTemplateOutlet]=\\\"itemIcon\\\"></ng-template>\\n <span fd-list-content>\\n <span fd-list-title>{{ item.fieldName }}</span>\\n <ng-template [ngTemplateOutlet]=\\\"listSubtitle\\\"></ng-template>\\n </span>\\n </a>\\n }\\n </li>\\n }\\n }\\n </ul>\\n </section>\\n <section class=\\\"fd-message-view__details\\\" [@openCloseDetails]=\\\"currentScreen === 'details' ? 'open' : 'closed'\\\">\\n <div #detailsView>\\n @if (currentEntry) {\\n <span class=\\\"fd-message-view__details-title\\\">\\n <span\\n fd-object-status\\n class=\\\"fd-message-view__icon\\\"\\n [status]=\\\"currentEntry.state\\\"\\n [glyph]=\\\"'message-' + currentEntry.type\\\"\\n ></span>\\n <ng-template\\n [ngTemplateOutlet]=\\\"headingTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: currentEntry }\\\"\\n ></ng-template>\\n </span>\\n @if (currentEntry.description.message) {\\n <span class=\\\"fd-message-view__details-description\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"descriptionTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: currentEntry }\\\"\\n ></ng-template>\\n </span>\\n }\\n }\\n </div>\\n </section>\\n</div>\\n\", dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: ScrollbarDirective, selector: \"[fdScrollbar], [fd-scrollbar]\", inputs: [\"noHorizontalScroll\", \"noVerticalScroll\", \"alwaysVisible\"] }, { kind: \"ngmodule\", type: ListModule }, { kind: \"component\", type: i2.ListComponent, selector: \"[fd-list], [fdList]\", inputs: [\"dropdownMode\", \"multiInputMode\", \"mobileMode\", \"hasMessage\", \"noBorder\", \"navigationIndicator\", \"selection\", \"keyboardSupport\", \"byline\", \"subline\", \"theme\", \"unreadIndicator\", \"role\", \"settingsList\", \"settingsListFooter\"], outputs: [\"focusEscapeList\"] }, { kind: \"component\", type: i2.ListItemComponent, selector: \"[fdListItem] ,[fd-list-item]\", inputs: [\"selected\", \"noData\", \"action\", \"interactive\", \"growing\", \"counter\", \"active\", \"unread\", \"byline\", \"ariaRole\", \"id\", \"preventClick\", \"settingsListTpl\"], outputs: [\"keyDown\"], exportAs: [\"fdListItem\"] }, { kind: \"directive\", type: i2.ListTitleDirective, selector: \"[fd-list-title], [fdListTitle]\", inputs: [\"wrap\", \"truncate\"] }, { kind: \"directive\", type: i2.ListGroupHeaderDirective, selector: \"[fdListGroupHeader], [fd-list-group-header]\", inputs: [\"nativeElementId\"], outputs: [\"keyDown\"] }, { kind: \"directive\", type: i2.ListLinkDirective, selector: \"[fd-list-link], [fdListLink]\", inputs: [\"navigationIndicator\", \"navigated\", \"focusable\"] }, { kind: \"directive\", type: i2.ListContentDirective, selector: \"[fdListContent], [fd-list-content]\", inputs: [\"twoCol\"] }, { kind: \"component\", type: ObjectStatusComponent, selector: \"[fd-object-status]\", inputs: [\"class\", \"status\", \"glyph\", \"glyphFont\", \"label\", \"glyphAriaLabel\", \"indicationColor\", \"clickable\", \"inverted\", \"large\", \"secondaryIndication\", \"textTemplate\"] }, { kind: \"component\", type: LinkComponent, selector: \"[fdLink], [fd-link]\", inputs: [\"class\", \"emphasized\", \"disabled\", \"inverted\", \"subtle\", \"undecorated\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], animations: [\n trigger('openCloseList', [\n // ...\n state('open', style({\n transform: 'translateX(0)',\n opacity: 1\n })),\n state('closed', style({\n transform: 'translateX(-50px)',\n opacity: 0\n })),\n transition('open => closed', [animate('.1s cubic-bezier(0, 0, 0.2, 1)')]),\n transition('closed => open', [animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')])\n ]),\n trigger('openCloseDetails', [\n state('open', style({\n transform: 'translateX(0)',\n opacity: 1,\n display: 'block'\n })),\n state('closed', style({\n transform: 'translateX(50px)',\n opacity: 0\n })),\n transition('open => closed', [\n animate('.1s cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({\n transform: 'translateX(0)',\n opacity: 1,\n display: 'block'\n }),\n style({\n transform: 'translateX(50px)',\n opacity: 0,\n display: 'none'\n })\n ]))\n ]),\n transition('closed => open', [\n style({\n display: 'block'\n }),\n animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessageViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-message-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [TabbableElementService], animations: [\n trigger('openCloseList', [\n // ...\n state('open', style({\n transform: 'translateX(0)',\n opacity: 1\n })),\n state('closed', style({\n transform: 'translateX(-50px)',\n opacity: 0\n })),\n transition('open => closed', [animate('.1s cubic-bezier(0, 0, 0.2, 1)')]),\n transition('closed => open', [animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')])\n ]),\n trigger('openCloseDetails', [\n state('open', style({\n transform: 'translateX(0)',\n opacity: 1,\n display: 'block'\n })),\n state('closed', style({\n transform: 'translateX(50px)',\n opacity: 0\n })),\n transition('open => closed', [\n animate('.1s cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({\n transform: 'translateX(0)',\n opacity: 1,\n display: 'block'\n }),\n style({\n transform: 'translateX(50px)',\n opacity: 0,\n display: 'none'\n })\n ]))\n ]),\n transition('closed => open', [\n style({\n display: 'block'\n }),\n animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')\n ])\n ])\n ], imports: [\n NgTemplateOutlet,\n CdkScrollable,\n ScrollbarDirective,\n ListModule,\n ObjectStatusComponent,\n LinkComponent,\n FdTranslatePipe\n ], template: \"<ng-template #headingTemplate let-item>\\n <ng-template #directiveHeading>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.heading.message || item.description.message\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.heading.error }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #i18nHeading>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.heading.message\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.errors }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #stringHeading>\\n {{ item.heading.message | fdTranslate: { error: item.heading.error } : item.heading.message }}\\n </ng-template>\\n <ng-template\\n [ngTemplateOutlet]=\\\"\\n item.heading.type === 'directive'\\n ? directiveHeading\\n : item.heading.type === 'string'\\n ? stringHeading\\n : i18nHeading\\n \\\"\\n ></ng-template>\\n</ng-template>\\n<ng-template #descriptionTemplate let-item>\\n <ng-template #directiveDescription>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.description.message!\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.description.error }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #i18nDescription>\\n <ng-template\\n [ngTemplateOutlet]=\\\"item.description.message!\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item.errors }\\\"\\n ></ng-template>\\n </ng-template>\\n <ng-template #stringDescription>\\n {{ item.description.message | fdTranslate: { error: item.description.error } : item.description.message }}\\n </ng-template>\\n <ng-template\\n [ngTemplateOutlet]=\\\"\\n item.heading.type === 'directive'\\n ? directiveDescription\\n : item.heading.type === 'string'\\n ? stringDescription\\n : i18nDescription\\n \\\"\\n ></ng-template>\\n</ng-template>\\n<div class=\\\"fd-message-view\\\">\\n <section\\n class=\\\"fd-message-view__list\\\"\\n tabindex=\\\"-1\\\"\\n [@openCloseList]=\\\"currentScreen === 'list' ? 'open' : 'closed'\\\"\\n (@openCloseList.done)=\\\"_onListAnimationComplete($event)\\\"\\n fd-scrollbar\\n >\\n <ul #listView fd-list class=\\\"message-popover__list fd-list--message-view\\\" [navigationIndicator]=\\\"true\\\">\\n @for (group of filteredErrors; track group) {\\n @if (group.group) {\\n <li fd-list-group-header>\\n <span fd-list-title>{{ group.group }}</span>\\n </li>\\n }\\n @for (item of group.errors; track item; let i = $index) {\\n <li fd-list-item [tabindex]=\\\"i === 0 ? 0 : -1\\\" [byline]=\\\"true\\\" (click)=\\\"_showDetails(item)\\\">\\n <ng-template #itemIcon>\\n <span\\n fd-object-status\\n class=\\\"fd-list__icon\\\"\\n [status]=\\\"item.state\\\"\\n [glyph]=\\\"'message-' + item.type\\\"\\n ></span>\\n </ng-template>\\n <ng-template #listSubtitle>\\n <span class=\\\"fd-list__subtitle\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"headingTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-template>\\n </span>\\n </ng-template>\\n @if (item.element && !!item.description.message) {\\n <span fd-list-link [navigationIndicator]=\\\"!!item.description.message\\\">\\n <ng-template [ngTemplateOutlet]=\\\"itemIcon\\\"></ng-template>\\n <span fd-list-content>\\n <span fd-list-title>\\n <a tabindex=\\\"0\\\" fd-link (click)=\\\"_focusElement($event, item)\\\">\\n {{ item.fieldName }}\\n </a>\\n </span>\\n <ng-template [ngTemplateOutlet]=\\\"listSubtitle\\\"></ng-template>\\n </span>\\n </span>\\n } @else {\\n <a fd-list-link [navigationIndicator]=\\\"!!item.description.message\\\">\\n <ng-template [ngTemplateOutlet]=\\\"itemIcon\\\"></ng-template>\\n <span fd-list-content>\\n <span fd-list-title>{{ item.fieldName }}</span>\\n <ng-template [ngTemplateOutlet]=\\\"listSubtitle\\\"></ng-template>\\n </span>\\n </a>\\n }\\n </li>\\n }\\n }\\n </ul>\\n </section>\\n <section class=\\\"fd-message-view__details\\\" [@openCloseDetails]=\\\"currentScreen === 'details' ? 'open' : 'closed'\\\">\\n <div #detailsView>\\n @if (currentEntry) {\\n <span class=\\\"fd-message-view__details-title\\\">\\n <span\\n fd-object-status\\n class=\\\"fd-message-view__icon\\\"\\n [status]=\\\"currentEntry.state\\\"\\n [glyph]=\\\"'message-' + currentEntry.type\\\"\\n ></span>\\n <ng-template\\n [ngTemplateOutlet]=\\\"headingTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: currentEntry }\\\"\\n ></ng-template>\\n </span>\\n @if (currentEntry.description.message) {\\n <span class=\\\"fd-message-view__details-description\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"descriptionTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: currentEntry }\\\"\\n ></ng-template>\\n </span>\\n }\\n }\\n </div>\\n </section>\\n</div>\\n\" }]\n }], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i1.TabbableElementService }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }], propDecorators: { currentScreen: [{\n type: Input\n }], filteredErrors: [{\n type: Input\n }], currentEntry: [{\n type: Input\n }], openDetails: [{\n type: Output\n }], focusItem: [{\n type: Output\n }], closePopover: [{\n type: Output\n }], _listView: [{\n type: ViewChild,\n args: ['listView', { read: ElementRef }]\n }], _detailsView: [{\n type: ViewChild,\n args: ['detailsView', { read: ElementRef }]\n }], _initialClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbWVzc2FnZS1wb3BvdmVyL2NvbXBvbmVudHMvbWVzc2FnZS12aWV3L21lc3NhZ2Utdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL21lc3NhZ2UtcG9wb3Zlci9jb21wb25lbnRzL21lc3NhZ2Utdmlldy9tZXNzYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQVksc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0Is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O3NCQURyQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSzNCLGFBQWE7c0JBRC9CLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIGtleWZyYW1lcywgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERPQ1VNRU5ULFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgVGFiYmFibGVFbGVtZW50U2VydmljZSwgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IExpbmtDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGluayc7XG5pbXBvcnQgeyBMaXN0TW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL29iamVjdC1zdGF0dXMnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlckVudHJ5LCBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXAgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLWVudHJ5LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLW1lc3NhZ2UtdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ29wZW5DbG9zZUxpc3QnLCBbXG4gICAgICAgICAgICAvLyAuLi5cbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdvcGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbYW5pbWF0ZSgnLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW2FuaW1hdGUoJzAuMXMgLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyldKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignb3BlbkNsb3NlRGV0YWlscycsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdvcGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAnLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAga2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMC4xcyAuMXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBMaXN0TW9kdWxlLFxuICAgICAgICBPYmplY3RTdGF0dXNDb21wb25lbnQsXG4gICAgICAgIExpbmtDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQ3VycmVudCBNZXNzYWdlIFBvcG92ZXIgc2NyZWVuLiBDYW4gYmUgZWl0aGVyIGBsaXN0YCBvciBgZGV0YWlsc2AuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50U2NyZWVuOiAnbGlzdCcgfCAnZGV0YWlscyc7XG5cbiAgICAvKiogRmlsdGVyZWQgZXJyb3JzIHRvIHJlbmRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlcmVkRXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXTtcblxuICAgIC8qKiBDdXJyZW50IGVycm9yIGVudHJ5LiBVc2VkIGZvciBkZXRhaWxzIHZpZXcuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50RW50cnk6IE51bGxhYmxlPE1lc3NhZ2VQb3BvdmVyRW50cnk+O1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBlcnJvciBlbnRyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgZGVzY3JpcHRpb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgb3BlbkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VQb3BvdmVyRW50cnk+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGVycm9yIGVudHJ5IGFuZCBpdGVtJ3MgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb2N1c0l0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VQb3BvdmVyRW50cnk+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIHRoZSBmaWVsZCBsaW5rIHRvIGZvY3VzIG9uIHRoZSBmaWVsZCBpdHNlbGYuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2VQb3BvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdsaXN0VmlldycsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByb3RlY3RlZCBfbGlzdFZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RldGFpbHNWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJvdGVjdGVkIF9kZXRhaWxzVmlldzogRWxlbWVudFJlZjtcblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pbml0aWFsQ2xhc3MgPSAnZmQtbWVzc2FnZS1wb3BvdmVyX192aWV3LWNvbnRhaW5lcic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZUxpc3RFbGVtZW50OiBOdWxsYWJsZTxIVE1MRWxlbWVudD4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVTZXJ2aWNlOiBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogRG9jdW1lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9kZXRhaWxzVmlldy5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBoZWlnaHQgfSA9IHRoaXMuX2RldGFpbHNWaWV3Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGlzdFZpZXcubmF0aXZlRWxlbWVudC5zdHlsZS5taW5IZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2hvd0RldGFpbHMoZW50cnk6IE1lc3NhZ2VQb3BvdmVyRW50cnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQgPSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoIWVudHJ5LmRlc2NyaXB0aW9uLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzRWxlbWVudCh1bmRlZmluZWQsIGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRTY3JlZW4gPSAnZGV0YWlscyc7XG4gICAgICAgIHRoaXMub3BlbkRldGFpbHMuZW1pdChlbnRyeSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9jdXNFbGVtZW50KGV2ZW50PzogTW91c2VFdmVudCwgaXRlbT86IE1lc3NhZ2VQb3BvdmVyRW50cnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQ/LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3Zlci5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb2N1c0l0ZW0uZW1pdChpdGVtKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWJiYWJsZUVsZW1lbnQgPSB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0YWJiYWJsZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uTGlzdEFuaW1hdGlvbkNvbXBsZXRlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdvcGVuJyAmJiB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUxpc3RFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjaGVhZGluZ1RlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGlyZWN0aXZlSGVhZGluZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmhlYWRpbmcubWVzc2FnZSB8fCBpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmhlYWRpbmcuZXJyb3IgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNpMThuSGVhZGluZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmhlYWRpbmcubWVzc2FnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0uZXJyb3JzIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RyaW5nSGVhZGluZz5cbiAgICAgICAge3sgaXRlbS5oZWFkaW5nLm1lc3NhZ2UgfCBmZFRyYW5zbGF0ZTogeyBlcnJvcjogaXRlbS5oZWFkaW5nLmVycm9yIH0gOiBpdGVtLmhlYWRpbmcubWVzc2FnZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgaXRlbS5oZWFkaW5nLnR5cGUgPT09ICdkaXJlY3RpdmUnXG4gICAgICAgICAgICAgICAgPyBkaXJlY3RpdmVIZWFkaW5nXG4gICAgICAgICAgICAgICAgOiBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gc3RyaW5nSGVhZGluZ1xuICAgICAgICAgICAgICAgICAgOiBpMThuSGVhZGluZ1xuICAgICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICA8bmctdGVtcGxhdGUgI2RpcmVjdGl2ZURlc2NyaXB0aW9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZSFcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmRlc2NyaXB0aW9uLmVycm9yIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjaTE4bkRlc2NyaXB0aW9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZSFcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmVycm9ycyB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3N0cmluZ0Rlc2NyaXB0aW9uPlxuICAgICAgICB7eyBpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UgfCBmZFRyYW5zbGF0ZTogeyBlcnJvcjogaXRlbS5kZXNjcmlwdGlvbi5lcnJvciB9IDogaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ2RpcmVjdGl2ZSdcbiAgICAgICAgICAgICAgICA/IGRpcmVjdGl2ZURlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgOiBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gc3RyaW5nRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgIDogaTE4bkRlc2NyaXB0aW9uXG4gICAgICAgIFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuPGRpdiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld1wiPlxuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19saXN0XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFtAb3BlbkNsb3NlTGlzdF09XCJjdXJyZW50U2NyZWVuID09PSAnbGlzdCcgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgICAgIChAb3BlbkNsb3NlTGlzdC5kb25lKT1cIl9vbkxpc3RBbmltYXRpb25Db21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgZmQtc2Nyb2xsYmFyXG4gICAgPlxuICAgICAgICA8dWwgI2xpc3RWaWV3IGZkLWxpc3QgY2xhc3M9XCJtZXNzYWdlLXBvcG92ZXJfX2xpc3QgZmQtbGlzdC0tbWVzc2FnZS12aWV3XCIgW25hdmlnYXRpb25JbmRpY2F0b3JdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgQGZvciAoZ3JvdXAgb2YgZmlsdGVyZWRFcnJvcnM7IHRyYWNrIGdyb3VwKSB7XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5ncm91cCkge1xuICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IGdyb3VwLmdyb3VwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGdyb3VwLmVycm9yczsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbdGFiaW5kZXhdPVwiaSA9PT0gMCA/IDAgOiAtMVwiIFtieWxpbmVdPVwidHJ1ZVwiIChjbGljayk9XCJfc2hvd0RldGFpbHMoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cIml0ZW0uc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ21lc3NhZ2UtJyArIGl0ZW0udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xpc3RTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX3N1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5lbGVtZW50ICYmICEhaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1saW5rIFtuYXZpZ2F0aW9uSW5kaWNhdG9yXT1cIiEhaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtSWNvblwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgZmQtbGluayAoY2xpY2spPVwiX2ZvY3VzRWxlbWVudCgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZmllbGROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RTdWJ0aXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgW25hdmlnYXRpb25JbmRpY2F0b3JdPVwiISFpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1JY29uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyBpdGVtLmZpZWxkTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0U3VidGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L3NlY3Rpb24+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdfX2RldGFpbHNcIiBbQG9wZW5DbG9zZURldGFpbHNdPVwiY3VycmVudFNjcmVlbiA9PT0gJ2RldGFpbHMnID8gJ29wZW4nIDogJ2Nsb3NlZCdcIj5cbiAgICAgICAgPGRpdiAjZGV0YWlsc1ZpZXc+XG4gICAgICAgICAgICBAaWYgKGN1cnJlbnRFbnRyeSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImN1cnJlbnRFbnRyeS5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ21lc3NhZ2UtJyArIGN1cnJlbnRFbnRyeS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjdXJyZW50RW50cnkgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGN1cnJlbnRFbnRyeS5kZXNjcmlwdGlvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXNjcmlwdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGN1cnJlbnRFbnRyeSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, computed, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InitialFocusDirective, countBy, flatten } from '@fundamental-ngx/cdk/utils';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ObjectStatusComponent } from '@fundamental-ngx/core/object-status';\nimport { PopoverComponent, PopoverModule } from '@fundamental-ngx/core/popover';\nimport { SegmentedButtonComponent } from '@fundamental-ngx/core/segmented-button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { getFormState } from '@fundamental-ngx/platform/form';\nimport { MessageViewComponent } from './components/message-view/message-view.component';\nimport { convertFormState, convertFormStateToMessagePopoverState } from './utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/popover\";\nimport * as i2 from \"@fundamental-ngx/core/bar\";\nimport * as i3 from \"@angular/forms\";\nexport class MessagePopoverComponent {\n constructor() {\n /** Event emits when user clicks on error entry and item's element needs to be focused. */\n this.focusItem = new EventEmitter();\n /** Current message popover screen. Can be `list` or `details`. */\n this.currentScreen = 'list';\n /** @hidden */\n this._currentErrorType$ = signal('all', ...(ngDevMode ? [{ debugName: \"_currentErrorType$\" }] : []));\n /** @hidden */\n this._errorTypes$ = computed(() => {\n const countedErrors = this._countedErrors$();\n const errorTypes = Object.keys(countedErrors);\n return errorTypes.map((errorType) => ({\n group: errorType,\n count: countedErrors[errorType],\n state: convertFormState(errorType)\n }));\n }, ...(ngDevMode ? [{ debugName: \"_errorTypes$\" }] : []));\n /** @hidden */\n this._priorityStateItemsCount$ = computed(() => this._countedErrors$()[this._priorityFormState$()] || 0, ...(ngDevMode ? [{ debugName: \"_priorityStateItemsCount$\" }] : []));\n /** @hidden */\n this._priorityFormState$ = computed(() => {\n const countedErrors = this._countedErrors$();\n const errorTypes = Object.keys(countedErrors);\n return getFormState(errorTypes);\n }, ...(ngDevMode ? [{ debugName: \"_priorityFormState$\" }] : []));\n /** @hidden */\n this._priorityState$ = computed(() => convertFormStateToMessagePopoverState(this._priorityFormState$()), ...(ngDevMode ? [{ debugName: \"_priorityState$\" }] : []));\n /** @hidden */\n this._filteredErrors$ = computed(() => {\n const groupedErrors = this._groupedErrors$();\n const errorType = this._currentErrorType$();\n if (errorType === 'all') {\n return groupedErrors;\n }\n const filteredErrors = [];\n groupedErrors.forEach((group) => {\n const errors = group.errors.filter((error) => error.type === errorType);\n if (errors.length === 0) {\n return;\n }\n filteredErrors.push({\n group: group.group,\n errors\n });\n });\n return filteredErrors;\n }, ...(ngDevMode ? [{ debugName: \"_filteredErrors$\" }] : []));\n this._groupedErrors$ = computed(() => this._wrapper$()?.errors$() || [], ...(ngDevMode ? [{ debugName: \"_groupedErrors$\" }] : []));\n this._wrapper$ = signal(null, ...(ngDevMode ? [{ debugName: \"_wrapper$\" }] : []));\n this._countedErrors$ = computed(() => countBy(flatten(Object.values(this._groupedErrors$().map((group) => group.errors))), 'type'), ...(ngDevMode ? [{ debugName: \"_countedErrors$\" }] : []));\n }\n /** Message Popover Wrapper component. */\n set wrapper(value) {\n value?.setMessagePopover(this);\n this._wrapper$.set(value);\n }\n get wrapper() {\n return this._wrapper$();\n }\n /** @hidden */\n _showList() {\n this.currentScreen = 'list';\n this.currentEntry = null;\n }\n /** @hidden */\n _showDetails(entry) {\n this.currentScreen = 'details';\n this.currentEntry = entry;\n }\n /** @hidden */\n _closePopover(focusLast = true) {\n this._popover.close(focusLast);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessagePopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: MessagePopoverComponent, isStandalone: true, selector: \"fdp-message-popover\", inputs: { wrapper: \"wrapper\" }, outputs: { focusItem: \"focusItem\" }, viewQueries: [{ propertyName: \"_popover\", first: true, predicate: [\"popover\"], descendants: true }], ngImport: i0, template: \"@if (_errorTypes$().length > 0) {\\n <fd-popover\\n #popover\\n placement=\\\"top-start\\\"\\n [focusTrapped]=\\\"true\\\"\\n [focusAutoCapture]=\\\"true\\\"\\n [disableScrollbar]=\\\"true\\\"\\n >\\n <fd-popover-control>\\n <button\\n fd-button\\n type=\\\"button\\\"\\n class=\\\"fd-message-popover__trigger fd-message-popover__trigger\\\"\\n [ngClass]=\\\"'fd-message-popover__trigger--' + _priorityState$()\\\"\\n [glyph]=\\\"'message-' + _priorityFormState$()\\\"\\n [label]=\\\"_priorityStateItemsCount$().toString()\\\"\\n ></button>\\n </fd-popover-control>\\n <div>\\n <div fd-popover-body-header>\\n <div fd-bar barDesign=\\\"header\\\" class=\\\"fd-bar--growing\\\">\\n <div fd-bar-left>\\n @if (currentScreen === 'list') {\\n <fd-segmented-button\\n [ngModel]=\\\"_currentErrorType$()\\\"\\n (ngModelChange)=\\\"_currentErrorType$.set($event)\\\"\\n >\\n <button\\n fd-button\\n [label]=\\\"'platformMessagePopover.allErrors' | fdTranslate\\\"\\n value=\\\"all\\\"\\n ></button>\\n @for (type of _errorTypes$(); track type) {\\n <button fd-button [value]=\\\"type.group\\\">\\n <span\\n fd-object-status\\n [status]=\\\"type.state\\\"\\n [glyph]=\\\"'message-' + type.group\\\"\\n ></span>\\n <span class=\\\"fd-button__text\\\">{{ type.count }}</span>\\n </button>\\n }\\n </fd-segmented-button>\\n }\\n @if (currentScreen === 'details') {\\n <button\\n fd-button\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n glyph=\\\"navigation-left-arrow\\\"\\n title=\\\"Go back\\\"\\n (click)=\\\"_showList()\\\"\\n ></button>\\n }\\n </div>\\n <div fd-bar-right>\\n <button fd-button fdType=\\\"transparent\\\" (click)=\\\"popover.close()\\\" glyph=\\\"decline\\\"></button>\\n </div>\\n </div>\\n </div>\\n <fdp-message-view\\n [currentScreen]=\\\"currentScreen\\\"\\n [filteredErrors]=\\\"_filteredErrors$()\\\"\\n [currentEntry]=\\\"currentEntry\\\"\\n (openDetails)=\\\"_showDetails($event)\\\"\\n (closePopover)=\\\"_closePopover($event)\\\"\\n (focusItem)=\\\"focusItem.emit($event)\\\"\\n ></fdp-message-view>\\n </div>\\n </fd-popover>\\n}\\n\", styles: [\".fd-message-view{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;position:relative}.fd-message-view:after,.fd-message-view:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__list{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;max-height:50vh;max-width:26rem;padding-block:0;padding-inline:0}.fd-message-view__list:after,.fd-message-view__list:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__list--hidden{opacity:0}.fd-message-view__details{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;inset:0;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-block:1rem;padding-inline:0;padding-inline:3.5rem 1rem;position:absolute}.fd-message-view__details:after,.fd-message-view__details:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__details-title{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader5Size);font-weight:400;font-weight:var(--sapFontHeaderWeight);forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-margin-after:1rem;display:block;margin-block-end:1rem;white-space:normal;-webkit-margin-start:0;margin-inline-start:0}.fd-message-view__details-title:after,.fd-message-view__details-title:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__details-title .fd-message-view__icon{font-size:1rem;margin-block:0;margin-inline:-2rem .5rem}.fd-message-view__details-description{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1.4;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-margin-after:1rem;display:block;margin-block-end:1rem;white-space:normal}.fd-message-view__details-description:after,.fd-message-view__details-description:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__details--visible{display:block}.fd-message-popover__trigger{--fdButtonFocusColor:var(--sapContent_ContrastFocusColor);border-width:var(--fdMessagePopover_Trigger_Border_Width);text-shadow:var(--fdButtonTextShadow)}.fd-message-popover__trigger.fd-message-popover__trigger--critical{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Regular_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--critical:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--critical:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--critical:hover{--fdButtonColor:var(--sapButton_Critical_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Hover_Background);--fdButtonBorderColor:var(--sapButton_Critical_Hover_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--critical:active{--fdButtonColor:var(--sapButton_Critical_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Active_Background);--fdButtonBorderColor:var(--sapButton_Critical_Active_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--critical:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--critical[aria-disabled=true]{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__trigger.fd-message-popover__trigger--negative{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Regular_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--negative:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--negative:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--negative:hover{--fdButtonColor:var(--sapButton_Negative_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Hover_Background);--fdButtonBorderColor:var(--sapButton_Negative_Hover_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--negative:active{--fdButtonColor:var(--sapButton_Negative_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Active_Background);--fdButtonBorderColor:var(--sapButton_Negative_Active_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--negative:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--negative[aria-disabled=true]{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__trigger.fd-message-popover__trigger--success{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Regular_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--success:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--success:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--success:hover{--fdButtonColor:var(--sapButton_Success_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Hover_Background);--fdButtonBorderColor:var(--sapButton_Success_Hover_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--success:active{--fdButtonColor:var(--sapButton_Success_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Active_Background);--fdButtonBorderColor:var(--sapButton_Success_Active_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--success:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--success[aria-disabled=true]{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__trigger.fd-message-popover__trigger--information{--fdButtonColor:var(--fdMessagePopover_Information_Regular_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Regular_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Regular_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Regular_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Information_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--information:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--information:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--information:hover{--fdButtonColor:var(--fdMessagePopover_Information_Hover_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Hover_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Hover_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--information:active{--fdButtonColor:var(--fdMessagePopover_Information_Active_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Active_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Active_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--information:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--information[aria-disabled=true]{--fdButtonColor:var(--fdMessagePopover_Information_Regular_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Regular_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Regular_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__view-container{border-bottom-left-radius:var(--fdPopover_Border_Radius);border-bottom-right-radius:var(--fdPopover_Border_Radius);overflow:hidden;display:block;max-height:40vh}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child:before{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-view__list{min-width:20rem;min-height:10rem;max-height:40vh}.fd-message-view__list .fd-link{font-size:inherit}.fd-message-view__list .fd-list__link:active,.fd-message-view__list .fd-list__link.is-active{--sapLinkColor: var(--sapList_Active_TextColor);--sapLink_Active_Color: var(--sapList_Active_TextColor)}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/message-popover.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"], dependencies: [{ kind: \"ngmodule\", type: PopoverModule }, { kind: \"component\", type: i1.PopoverControlComponent, selector: \"fd-popover-control, [fdPopoverControl]\" }, { kind: \"directive\", type: i1.PopoverBodyHeaderDirective, selector: \"[fdPopoverBodyHeader], [fd-popover-body-header]\" }, { kind: \"component\", type: i1.PopoverComponent, selector: \"fd-popover\", inputs: [\"title\", \"trigger\", \"fixedPosition\", \"id\", \"mobile\", \"mobileConfig\", \"preventSpaceKeyScroll\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: BarModule }, { kind: \"component\", type: i2.BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: i2.BarLeftDirective, selector: \"[fd-bar-left]\" }, { kind: \"directive\", type: i2.BarRightDirective, selector: \"[fd-bar-right]\" }, { kind: \"component\", type: SegmentedButtonComponent, selector: \"fd-segmented-button\", inputs: [\"toggle\", \"vertical\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: ObjectStatusComponent, selector: \"[fd-object-status]\", inputs: [\"class\", \"status\", \"glyph\", \"glyphFont\", \"label\", \"glyphAriaLabel\", \"indicationColor\", \"clickable\", \"inverted\", \"large\", \"secondaryIndication\", \"textTemplate\"] }, { kind: \"directive\", type: InitialFocusDirective, selector: \"[fdkInitialFocus]\", inputs: [\"fdkInitialFocus\", \"enabled\", \"focusLastElement\"] }, { kind: \"component\", type: MessageViewComponent, selector: \"fdp-message-view\", inputs: [\"currentScreen\", \"filteredErrors\", \"currentEntry\"], outputs: [\"openDetails\", \"focusItem\", \"closePopover\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MessagePopoverComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-message-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n PopoverModule,\n ButtonComponent,\n NgClass,\n BarModule,\n SegmentedButtonComponent,\n FormsModule,\n ObjectStatusComponent,\n InitialFocusDirective,\n MessageViewComponent,\n FdTranslatePipe\n ], template: \"@if (_errorTypes$().length > 0) {\\n <fd-popover\\n #popover\\n placement=\\\"top-start\\\"\\n [focusTrapped]=\\\"true\\\"\\n [focusAutoCapture]=\\\"true\\\"\\n [disableScrollbar]=\\\"true\\\"\\n >\\n <fd-popover-control>\\n <button\\n fd-button\\n type=\\\"button\\\"\\n class=\\\"fd-message-popover__trigger fd-message-popover__trigger\\\"\\n [ngClass]=\\\"'fd-message-popover__trigger--' + _priorityState$()\\\"\\n [glyph]=\\\"'message-' + _priorityFormState$()\\\"\\n [label]=\\\"_priorityStateItemsCount$().toString()\\\"\\n ></button>\\n </fd-popover-control>\\n <div>\\n <div fd-popover-body-header>\\n <div fd-bar barDesign=\\\"header\\\" class=\\\"fd-bar--growing\\\">\\n <div fd-bar-left>\\n @if (currentScreen === 'list') {\\n <fd-segmented-button\\n [ngModel]=\\\"_currentErrorType$()\\\"\\n (ngModelChange)=\\\"_currentErrorType$.set($event)\\\"\\n >\\n <button\\n fd-button\\n [label]=\\\"'platformMessagePopover.allErrors' | fdTranslate\\\"\\n value=\\\"all\\\"\\n ></button>\\n @for (type of _errorTypes$(); track type) {\\n <button fd-button [value]=\\\"type.group\\\">\\n <span\\n fd-object-status\\n [status]=\\\"type.state\\\"\\n [glyph]=\\\"'message-' + type.group\\\"\\n ></span>\\n <span class=\\\"fd-button__text\\\">{{ type.count }}</span>\\n </button>\\n }\\n </fd-segmented-button>\\n }\\n @if (currentScreen === 'details') {\\n <button\\n fd-button\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n glyph=\\\"navigation-left-arrow\\\"\\n title=\\\"Go back\\\"\\n (click)=\\\"_showList()\\\"\\n ></button>\\n }\\n </div>\\n <div fd-bar-right>\\n <button fd-button fdType=\\\"transparent\\\" (click)=\\\"popover.close()\\\" glyph=\\\"decline\\\"></button>\\n </div>\\n </div>\\n </div>\\n <fdp-message-view\\n [currentScreen]=\\\"currentScreen\\\"\\n [filteredErrors]=\\\"_filteredErrors$()\\\"\\n [currentEntry]=\\\"currentEntry\\\"\\n (openDetails)=\\\"_showDetails($event)\\\"\\n (closePopover)=\\\"_closePopover($event)\\\"\\n (focusItem)=\\\"focusItem.emit($event)\\\"\\n ></fdp-message-view>\\n </div>\\n </fd-popover>\\n}\\n\", styles: [\".fd-message-view{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;position:relative}.fd-message-view:after,.fd-message-view:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__list{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;max-height:50vh;max-width:26rem;padding-block:0;padding-inline:0}.fd-message-view__list:after,.fd-message-view__list:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__list--hidden{opacity:0}.fd-message-view__details{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;inset:0;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-block:1rem;padding-inline:0;padding-inline:3.5rem 1rem;position:absolute}.fd-message-view__details:after,.fd-message-view__details:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__details-title{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader5Size);font-weight:400;font-weight:var(--sapFontHeaderWeight);forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-margin-after:1rem;display:block;margin-block-end:1rem;white-space:normal;-webkit-margin-start:0;margin-inline-start:0}.fd-message-view__details-title:after,.fd-message-view__details-title:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__details-title .fd-message-view__icon{font-size:1rem;margin-block:0;margin-inline:-2rem .5rem}.fd-message-view__details-description{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1.4;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-margin-after:1rem;display:block;margin-block-end:1rem;white-space:normal}.fd-message-view__details-description:after,.fd-message-view__details-description:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-message-view__details--visible{display:block}.fd-message-popover__trigger{--fdButtonFocusColor:var(--sapContent_ContrastFocusColor);border-width:var(--fdMessagePopover_Trigger_Border_Width);text-shadow:var(--fdButtonTextShadow)}.fd-message-popover__trigger.fd-message-popover__trigger--critical{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Regular_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--critical:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--critical:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--critical:hover{--fdButtonColor:var(--sapButton_Critical_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Hover_Background);--fdButtonBorderColor:var(--sapButton_Critical_Hover_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--critical:active{--fdButtonColor:var(--sapButton_Critical_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Active_Background);--fdButtonBorderColor:var(--sapButton_Critical_Active_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--critical.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--critical:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--critical[aria-disabled=true]{--fdButtonColor:var(--sapButton_Critical_TextColor);--fdButtonBackgroundColor:var(--sapButton_Critical_Background);--fdButtonBorderColor:var(--sapButton_Critical_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Critical_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__trigger.fd-message-popover__trigger--negative{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Regular_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--negative:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--negative:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--negative:hover{--fdButtonColor:var(--sapButton_Negative_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Hover_Background);--fdButtonBorderColor:var(--sapButton_Negative_Hover_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--negative:active{--fdButtonColor:var(--sapButton_Negative_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Active_Background);--fdButtonBorderColor:var(--sapButton_Negative_Active_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--negative.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--negative:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--negative[aria-disabled=true]{--fdButtonColor:var(--sapButton_Negative_TextColor);--fdButtonBackgroundColor:var(--sapButton_Negative_Background);--fdButtonBorderColor:var(--sapButton_Negative_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Negative_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__trigger.fd-message-popover__trigger--success{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Regular_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--success:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--success:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--success:hover{--fdButtonColor:var(--sapButton_Success_Hover_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Hover_Background);--fdButtonBorderColor:var(--sapButton_Success_Hover_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--success:active{--fdButtonColor:var(--sapButton_Success_Active_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Active_Background);--fdButtonBorderColor:var(--sapButton_Success_Active_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--success.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--success:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--success[aria-disabled=true]{--fdButtonColor:var(--sapButton_Success_TextColor);--fdButtonBackgroundColor:var(--sapButton_Success_Background);--fdButtonBorderColor:var(--sapButton_Success_BorderColor);--fdButtonTextShadow:var(--fdMessagePopover_Success_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__trigger.fd-message-popover__trigger--information{--fdButtonColor:var(--fdMessagePopover_Information_Regular_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Regular_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Regular_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Regular_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Information_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-focus,.fd-message-popover__trigger.fd-message-popover__trigger--information:focus{z-index:5}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-focus:after,.fd-message-popover__trigger.fd-message-popover__trigger--information:focus:after{border-color:var(--fdButtonFocusColor)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-hover,.fd-message-popover__trigger.fd-message-popover__trigger--information:hover{--fdButtonColor:var(--fdMessagePopover_Information_Hover_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Hover_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Hover_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Hover_Text_Shadow)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-active,.fd-message-popover__trigger.fd-message-popover__trigger--information:active{--fdButtonColor:var(--fdMessagePopover_Information_Active_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Active_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Active_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Active_Text_Shadow);--fdButtonFocusColor:var(--fdMessagePopover_Active_Focus_Outline_Color)}.fd-message-popover__trigger.fd-message-popover__trigger--information.is-disabled,.fd-message-popover__trigger.fd-message-popover__trigger--information:disabled,.fd-message-popover__trigger.fd-message-popover__trigger--information[aria-disabled=true]{--fdButtonColor:var(--fdMessagePopover_Information_Regular_Color);--fdButtonBackgroundColor:var(--fdMessagePopover_Information_Regular_Background_Color);--fdButtonBorderColor:var(--fdMessagePopover_Information_Regular_Border_Color);--fdButtonTextShadow:var(--fdMessagePopover_Information_Regular_Text_Shadow);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-message-popover__view-container{border-bottom-left-radius:var(--fdPopover_Border_Radius);border-bottom-right-radius:var(--fdPopover_Border_Radius);overflow:hidden;display:block;max-height:40vh}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:first-child:before{border-top-left-radius:0;border-top-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-popover__view-container .fd-message-view .fd-list__item:last-child:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-message-view__list{min-width:20rem;min-height:10rem;max-height:40vh}.fd-message-view__list .fd-link{font-size:inherit}.fd-message-view__list .fd-list__link:active,.fd-message-view__list .fd-list__link.is-active{--sapLinkColor: var(--sapList_Active_TextColor);--sapLink_Active_Color: var(--sapList_Active_TextColor)}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/message-popover.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"] }]\n }], propDecorators: { _popover: [{\n type: ViewChild,\n args: ['popover']\n }], wrapper: [{\n type: Input\n }], focusItem: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbWVzc2FnZS1wb3BvdmVyL21lc3NhZ2UtcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL21lc3NhZ2UtcG9wb3Zlci9tZXNzYWdlLXBvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFFakIsUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFZLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBUXhG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QUFTOytCQUNJLHFCQUFxQixpQkFHaEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDTCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxTQUFTO3dCQUNULHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixlQUFlO3FCQUNsQjs4QkFLUSxRQUFRO3NCQURoQixTQUFTO3VCQUFDLFNBQVM7Z0JBS2hCLE9BQU87c0JBRFYsS0FBSztnQkFXTixTQUFTO3NCQURSLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFdyaXRhYmxlU2lnbmFsLFxuICAgIGNvbXB1dGVkLFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IEluaXRpYWxGb2N1c0RpcmVjdGl2ZSwgTnVsbGFibGUsIGNvdW50QnksIGZsYXR0ZW4gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCYXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL29iamVjdC1zdGF0dXMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IFNlZ21lbnRlZEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zZWdtZW50ZWQtYnV0dG9uJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBnZXRGb3JtU3RhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2Zvcm0nO1xuaW1wb3J0IHsgTWVzc2FnZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzc2FnZS12aWV3L21lc3NhZ2Utdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBNZXNzYWdlUG9wb3ZlckVudHJ5LFxuICAgIE1lc3NhZ2VQb3BvdmVyRXJyb3IsXG4gICAgTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwXG59IGZyb20gJy4vbW9kZWxzL21lc3NhZ2UtcG9wb3Zlci1lbnRyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJXcmFwcGVyIH0gZnJvbSAnLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLXdyYXBwZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VQb3BvdmVyLCBNZXNzYWdlUG9wb3ZlclN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjb252ZXJ0Rm9ybVN0YXRlLCBjb252ZXJ0Rm9ybVN0YXRlVG9NZXNzYWdlUG9wb3ZlclN0YXRlIH0gZnJvbSAnLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLW1lc3NhZ2UtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL21lc3NhZ2UtcG9wb3Zlci5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBTZWdtZW50ZWRCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBPYmplY3RTdGF0dXNDb21wb25lbnQsXG4gICAgICAgIEluaXRpYWxGb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgTWVzc2FnZVZpZXdDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBNZXNzYWdlUG9wb3ZlciB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgICByZWFkb25seSBfcG9wb3ZlcjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBNZXNzYWdlIFBvcG92ZXIgV3JhcHBlciBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgd3JhcHBlcih2YWx1ZTogTnVsbGFibGU8TWVzc2FnZVBvcG92ZXJXcmFwcGVyPikge1xuICAgICAgICB2YWx1ZT8uc2V0TWVzc2FnZVBvcG92ZXIodGhpcyk7XG4gICAgICAgIHRoaXMuX3dyYXBwZXIkLnNldCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB3cmFwcGVyKCk6IE51bGxhYmxlPE1lc3NhZ2VQb3BvdmVyV3JhcHBlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fd3JhcHBlciQoKTtcbiAgICB9XG5cbiAgICAvKiogRXZlbnQgZW1pdHMgd2hlbiB1c2VyIGNsaWNrcyBvbiBlcnJvciBlbnRyeSBhbmQgaXRlbSdzIGVsZW1lbnQgbmVlZHMgdG8gYmUgZm9jdXNlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb2N1c0l0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VQb3BvdmVyRW50cnk+KCk7XG5cbiAgICAvKiogQ3VycmVudCBtZXNzYWdlIHBvcG92ZXIgc2NyZWVuLiBDYW4gYmUgYGxpc3RgIG9yIGBkZXRhaWxzYC4gKi9cbiAgICBjdXJyZW50U2NyZWVuOiAnbGlzdCcgfCAnZGV0YWlscycgPSAnbGlzdCc7XG5cbiAgICAvKiogQ3VycmVudCBlcnJvciBlbnRyeS4gKi9cbiAgICBjdXJyZW50RW50cnk6IE51bGxhYmxlPE1lc3NhZ2VQb3BvdmVyRW50cnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudEVycm9yVHlwZSQ6IFdyaXRhYmxlU2lnbmFsPE1lc3NhZ2VQb3BvdmVyRXJyb3JbJ2dyb3VwJ10+ID0gc2lnbmFsKCdhbGwnKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Vycm9yVHlwZXMkID0gY29tcHV0ZWQ8TWVzc2FnZVBvcG92ZXJFcnJvcltdPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50ZWRFcnJvcnMgPSB0aGlzLl9jb3VudGVkRXJyb3JzJCgpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGVzID0gT2JqZWN0LmtleXMoY291bnRlZEVycm9ycykgYXMgRm9ybVN0YXRlc1tdO1xuICAgICAgICByZXR1cm4gZXJyb3JUeXBlcy5tYXAoKGVycm9yVHlwZSkgPT4gKHtcbiAgICAgICAgICAgIGdyb3VwOiBlcnJvclR5cGUsXG4gICAgICAgICAgICBjb3VudDogY291bnRlZEVycm9yc1tlcnJvclR5cGVdLFxuICAgICAgICAgICAgc3RhdGU6IGNvbnZlcnRGb3JtU3RhdGUoZXJyb3JUeXBlKVxuICAgICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcmlvcml0eVN0YXRlSXRlbXNDb3VudCQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jb3VudGVkRXJyb3JzJCgpW3RoaXMuX3ByaW9yaXR5Rm9ybVN0YXRlJCgpIV0gfHwgMCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcmlvcml0eUZvcm1TdGF0ZSQgPSBjb21wdXRlZDxGb3JtU3RhdGVzPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50ZWRFcnJvcnMgPSB0aGlzLl9jb3VudGVkRXJyb3JzJCgpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGVzID0gT2JqZWN0LmtleXMoY291bnRlZEVycm9ycykgYXMgRm9ybVN0YXRlc1tdO1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybVN0YXRlKGVycm9yVHlwZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcHJpb3JpdHlTdGF0ZSQgPSBjb21wdXRlZDxOdWxsYWJsZTxNZXNzYWdlUG9wb3ZlclN0YXRlPj4oKCkgPT5cbiAgICAgICAgY29udmVydEZvcm1TdGF0ZVRvTWVzc2FnZVBvcG92ZXJTdGF0ZSh0aGlzLl9wcmlvcml0eUZvcm1TdGF0ZSQoKSlcbiAgICApO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfZmlsdGVyZWRFcnJvcnMkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cGVkRXJyb3JzID0gdGhpcy5fZ3JvdXBlZEVycm9ycyQoKTtcbiAgICAgICAgY29uc3QgZXJyb3JUeXBlID0gdGhpcy5fY3VycmVudEVycm9yVHlwZSQoKTtcblxuICAgICAgICBpZiAoZXJyb3JUeXBlID09PSAnYWxsJykge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRFcnJvcnM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZEVycm9yczogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10gPSBbXTtcbiAgICAgICAgZ3JvdXBlZEVycm9ycy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gZ3JvdXAuZXJyb3JzLmZpbHRlcigoZXJyb3IpID0+IGVycm9yLnR5cGUgPT09IGVycm9yVHlwZSk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWx0ZXJlZEVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBncm91cDogZ3JvdXAuZ3JvdXAsXG4gICAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkRXJyb3JzO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZ3JvdXBlZEVycm9ycyQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl93cmFwcGVyJCgpPy5lcnJvcnMkKCkgfHwgW10pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfd3JhcHBlciQgPSBzaWduYWw8TnVsbGFibGU8TWVzc2FnZVBvcG92ZXJXcmFwcGVyPj4obnVsbCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb3VudGVkRXJyb3JzJCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIGNvdW50QnkoZmxhdHRlbihPYmplY3QudmFsdWVzKHRoaXMuX2dyb3VwZWRFcnJvcnMkKCkubWFwKChncm91cCkgPT4gZ3JvdXAuZXJyb3JzKSkpLCAndHlwZScpXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRTY3JlZW4gPSAnbGlzdCc7XG4gICAgICAgIHRoaXMuY3VycmVudEVudHJ5ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaG93RGV0YWlscyhlbnRyeTogTWVzc2FnZVBvcG92ZXJFbnRyeSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRTY3JlZW4gPSAnZGV0YWlscyc7XG4gICAgICAgIHRoaXMuY3VycmVudEVudHJ5ID0gZW50cnk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2xvc2VQb3BvdmVyKGZvY3VzTGFzdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3Zlci5jbG9zZShmb2N1c0xhc3QpO1xuICAgIH1cbn1cbiIsIkBpZiAoX2Vycm9yVHlwZXMkKCkubGVuZ3RoID4gMCkge1xuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNwb3BvdmVyXG4gICAgICAgIHBsYWNlbWVudD1cInRvcC1zdGFydFwiXG4gICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZVNjcm9sbGJhcl09XCJ0cnVlXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1tZXNzYWdlLXBvcG92ZXJfX3RyaWdnZXIgZmQtbWVzc2FnZS1wb3BvdmVyX190cmlnZ2VyXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmQtbWVzc2FnZS1wb3BvdmVyX190cmlnZ2VyLS0nICsgX3ByaW9yaXR5U3RhdGUkKClcIlxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCInbWVzc2FnZS0nICsgX3ByaW9yaXR5Rm9ybVN0YXRlJCgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX3ByaW9yaXR5U3RhdGVJdGVtc0NvdW50JCgpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXJcIiBjbGFzcz1cImZkLWJhci0tZ3Jvd2luZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjdXJyZW50U2NyZWVuID09PSAnbGlzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2VnbWVudGVkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfY3VycmVudEVycm9yVHlwZSQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9jdXJyZW50RXJyb3JUeXBlJC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1NZXNzYWdlUG9wb3Zlci5hbGxFcnJvcnMnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHR5cGUgb2YgX2Vycm9yVHlwZXMkKCk7IHRyYWNrIHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFt2YWx1ZV09XCJ0eXBlLmdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInR5cGUuc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ21lc3NhZ2UtJyArIHR5cGUuZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1idXR0b25fX3RleHRcIj57eyB0eXBlLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXNlZ21lbnRlZC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGN1cnJlbnRTY3JlZW4gPT09ICdkZXRhaWxzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwibmF2aWdhdGlvbi1sZWZ0LWFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJHbyBiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zaG93TGlzdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cInBvcG92ZXIuY2xvc2UoKVwiIGdseXBoPVwiZGVjbGluZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZkcC1tZXNzYWdlLXZpZXdcbiAgICAgICAgICAgICAgICBbY3VycmVudFNjcmVlbl09XCJjdXJyZW50U2NyZWVuXCJcbiAgICAgICAgICAgICAgICBbZmlsdGVyZWRFcnJvcnNdPVwiX2ZpbHRlcmVkRXJyb3JzJCgpXCJcbiAgICAgICAgICAgICAgICBbY3VycmVudEVudHJ5XT1cImN1cnJlbnRFbnRyeVwiXG4gICAgICAgICAgICAgICAgKG9wZW5EZXRhaWxzKT1cIl9zaG93RGV0YWlscygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xvc2VQb3BvdmVyKT1cIl9jbG9zZVBvcG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzSXRlbSk9XCJmb2N1c0l0ZW0uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZkcC1tZXNzYWdlLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZmQtcG9wb3Zlcj5cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { mergeWith } from '@fundamental-ngx/cdk/utils';\nimport { MessagePopoverFormWrapperComponent } from './components/message-popover-form-wrapper/message-popover-form-wrapper.component';\nimport { MessageViewComponent } from './components/message-view/message-view.component';\nimport { FDP_MESSAGE_POPOVER_CONFIG, FDP_MESSAGE_POPOVER_DEFAULT_CONFIG } from './default-config';\nimport { MessagePopoverFormItemDirective } from './directives/message-popover-form-item.directive';\nimport { MessagePopoverComponent } from './message-popover.component';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class PlatformMessagePopoverModule {\n /**\n * Method allows users to apply custom configuration.\n * @param config Object containing error definitions.\n */\n static withConfig(config) {\n const customConfig = mergeWith(FDP_MESSAGE_POPOVER_DEFAULT_CONFIG, config, (obj, src) => {\n if (typeof obj === 'object' && !Array.isArray(obj)) {\n return Object.assign(obj, src);\n }\n else if (Array.isArray(obj)) {\n return obj.concat(src);\n }\n else {\n return src;\n }\n });\n return {\n ngModule: PlatformMessagePopoverModule,\n providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: customConfig\n }\n ]\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformMessagePopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformMessagePopoverModule, imports: [MessagePopoverComponent,\n MessagePopoverFormWrapperComponent,\n MessageViewComponent,\n MessagePopoverFormItemDirective], exports: [MessagePopoverComponent,\n MessagePopoverFormWrapperComponent,\n MessageViewComponent,\n MessagePopoverFormItemDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformMessagePopoverModule, providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: FDP_MESSAGE_POPOVER_DEFAULT_CONFIG\n }\n ], imports: [MessagePopoverComponent,\n MessageViewComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformMessagePopoverModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n MessagePopoverComponent,\n MessagePopoverFormWrapperComponent,\n MessageViewComponent,\n MessagePopoverFormItemDirective\n ],\n exports: [\n MessagePopoverComponent,\n MessagePopoverFormWrapperComponent,\n MessageViewComponent,\n MessagePopoverFormItemDirective\n ],\n providers: [\n {\n provide: FDP_MESSAGE_POPOVER_CONFIG,\n useValue: FDP_MESSAGE_POPOVER_DEFAULT_CONFIG\n }\n ]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tbWVzc2FnZS1wb3BvdmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbWVzc2FnZS1wb3BvdmVyL3BsYXRmb3JtLW1lc3NhZ2UtcG9wb3Zlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxrQ0FBa0MsRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQztBQUN4SCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFdEU7OztHQUdHO0FBcUJILE1BQU0sT0FBTyw0QkFBNEI7SUFDckM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUE0QjtRQUMxQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3BGLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxHQUFHLENBQUM7WUFDZixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0gsUUFBUSxFQUFFLDRCQUE0QjtZQUN0QyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLDBCQUEwQjtvQkFDbkMsUUFBUSxFQUFFLFlBQVk7aUJBQ3pCO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQzs4R0F6QlEsNEJBQTRCOytHQUE1Qiw0QkFBNEIsWUFsQmpDLHVCQUF1QjtZQUN2QixrQ0FBa0M7WUFDbEMsb0JBQW9CO1lBQ3BCLCtCQUErQixhQUcvQix1QkFBdUI7WUFDdkIsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiwrQkFBK0I7K0dBUzFCLDRCQUE0QixhQVAxQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFFBQVEsRUFBRSxrQ0FBa0M7YUFDL0M7U0FDSixZQWhCRyx1QkFBdUI7WUFFdkIsb0JBQW9COzsyRkFnQmYsNEJBQTRCO2tCQXBCeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsdUJBQXVCO3dCQUN2QixrQ0FBa0M7d0JBQ2xDLG9CQUFvQjt3QkFDcEIsK0JBQStCO3FCQUNsQztvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsdUJBQXVCO3dCQUN2QixrQ0FBa0M7d0JBQ2xDLG9CQUFvQjt3QkFDcEIsK0JBQStCO3FCQUNsQztvQkFDRCxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsUUFBUSxFQUFFLGtDQUFrQzt5QkFDL0M7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJGb3JtV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyL21lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lc3NhZ2Utdmlldy9tZXNzYWdlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEZEUF9NRVNTQUdFX1BPUE9WRVJfQ09ORklHLCBGRFBfTUVTU0FHRV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHLCBNZXNzYWdlUG9wb3ZlckNvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9tZXNzYWdlLXBvcG92ZXItZm9ybS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBkaXJlY3QgaW1wb3J0cyBvZiBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWVzc2FnZVBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIE1lc3NhZ2VQb3BvdmVyRm9ybVdyYXBwZXJDb21wb25lbnQsXG4gICAgICAgIE1lc3NhZ2VWaWV3Q29tcG9uZW50LFxuICAgICAgICBNZXNzYWdlUG9wb3ZlckZvcm1JdGVtRGlyZWN0aXZlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE1lc3NhZ2VQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBNZXNzYWdlUG9wb3ZlckZvcm1XcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBNZXNzYWdlVmlld0NvbXBvbmVudCxcbiAgICAgICAgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9NRVNTQUdFX1BPUE9WRVJfQ09ORklHLFxuICAgICAgICAgICAgdXNlVmFsdWU6IEZEUF9NRVNTQUdFX1BPUE9WRVJfREVGQVVMVF9DT05GSUdcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1NZXNzYWdlUG9wb3Zlck1vZHVsZSB7XG4gICAgLyoqXG4gICAgICogTWV0aG9kIGFsbG93cyB1c2VycyB0byBhcHBseSBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gY29uZmlnIE9iamVjdCBjb250YWluaW5nIGVycm9yIGRlZmluaXRpb25zLlxuICAgICAqL1xuICAgIHN0YXRpYyB3aXRoQ29uZmlnKGNvbmZpZzogTWVzc2FnZVBvcG92ZXJDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFBsYXRmb3JtTWVzc2FnZVBvcG92ZXJNb2R1bGU+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tQ29uZmlnID0gbWVyZ2VXaXRoKEZEUF9NRVNTQUdFX1BPUE9WRVJfREVGQVVMVF9DT05GSUcsIGNvbmZpZywgKG9iaiwgc3JjKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9iaiwgc3JjKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iai5jb25jYXQoc3JjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNyYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBQbGF0Zm9ybU1lc3NhZ2VQb3BvdmVyTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBGRFBfTUVTU0FHRV9QT1BPVkVSX0NPTkZJRyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGN1c3RvbUNvbmZpZ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLW1lc3NhZ2UtcG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbWVzc2FnZS1wb3BvdmVyL2Z1bmRhbWVudGFsLW5neC1wbGF0Zm9ybS1tZXNzYWdlLXBvcG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1","i2","i3"],"mappings":"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"}