@gravitee/ui-particles-angular 5.6.0 → 5.7.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"gravitee-ui-particles-angular.mjs","sources":["../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.component.ts","../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.component.html","../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.module.ts","../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.module.ts","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-banner/gio-banner.component.ts","../../../projects/ui-particles-angular/src/lib/gio-banner/gio-banner.component.html","../../../projects/ui-particles-angular/src/lib/gio-icons/gio-icons.module.ts","../../../projects/ui-particles-angular/src/lib/gio-banner/gio-banner.module.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.component.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.component.html","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.module.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.html","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.module.ts","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.model.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.module.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.component.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/index.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.service.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-item/gio-menu-item.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-item/gio-menu-item.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-footer/gio-menu-footer.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-footer/gio-menu-footer.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-list/gio-menu-list.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-list/gio-menu-list.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-selector/gio-menu-selector.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-selector/gio-menu-selector.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-header/gio-menu-header.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-header/gio-menu-header.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.module.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-selector/gio-menu-selector.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/index.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu.component.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu.component.html","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-group/gio-submenu-group.component.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-group/gio-submenu-group.component.html","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.html","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu.module.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/index.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar.module.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.module.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.module.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/index.ts","../../../projects/ui-particles-angular/src/lib/gio-avatar/gio-avatar.component.ts","../../../projects/ui-particles-angular/src/lib/gio-avatar/gio-avatar.component.html","../../../projects/ui-particles-angular/src/lib/gio-avatar/gio-avatar.module.ts","../../../projects/ui-particles-angular/src/lib/gio-avatar/index.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb-item.directive.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb.component.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb.component.html","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb.module.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/index.ts","../../../projects/ui-particles-angular/src/lib/gio-mat-config/gio-mat-config.module.ts","../../../projects/ui-particles-angular/src/lib/gio-mat-config/index.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/gio-form-json-schema.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/type-component/null-type.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/type-component/object-type.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/type-component/array-type.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/util/validation-message.util.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/gio-form-json-schema.module.ts","../../../projects/ui-particles-angular/src/lib/public-api.ts","../../../projects/ui-particles-angular/src/public-api.ts","../../../projects/ui-particles-angular/src/gravitee-ui-particles-angular.ts"],"sourcesContent":["/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'gio-save-bar',\n templateUrl: './gio-save-bar.component.html',\n styleUrls: ['./gio-save-bar.component.scss'],\n animations: [\n trigger('slideUpDown', [\n transition(':enter', [\n style({ transform: 'translateY(40vh)', opacity: '0' }),\n animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateY(0)', opacity: '1' })),\n ]),\n transition(':leave', [\n style({ transform: 'translateY(0)', opacity: '1' }),\n animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateY(40vh)', opacity: '0' })),\n ]),\n ]),\n ],\n})\nexport class GioSaveBarComponent {\n public isSubmitted = false;\n\n @HostBinding('class.save-bar-sticky')\n public get isSticky(): boolean {\n return !this.creationMode;\n }\n\n @Input()\n public opened = false;\n\n /**\n * When true, the submit button have invalidate display\n * And on submit clicked the output event is emit on submitInvalidState (and not on submit)\n */\n @Input()\n public invalidState?: boolean = false;\n\n @Input()\n public creationMode = false;\n\n @Input()\n public form?: FormGroup;\n\n private hasSubmitLock = true;\n\n @Input()\n public formInitialValues?: unknown;\n\n @Output()\n public resetClicked = new EventEmitter<void>();\n\n @Output()\n public submitted = new EventEmitter<void>();\n\n @Output()\n public submittedInvalidState = new EventEmitter();\n\n @HostBinding('class.is-open')\n public get isOpen(): boolean {\n if (this.creationMode) {\n return true;\n }\n\n if (this.form) {\n return this.form.dirty;\n }\n return this.opened;\n }\n\n public onResetClicked(): void {\n if (this.form) {\n this.form.reset(this.formInitialValues);\n this.form.markAsPristine();\n }\n this.resetClicked.emit();\n }\n\n @HostListener('disable-submit-lock')\n public onDisableSubmitLock(): void {\n this.hasSubmitLock = false;\n }\n\n public onSubmitClicked(): void {\n if ((this.form && this.form.invalid) || this.invalidState) {\n this.form?.markAllAsTouched();\n this.submittedInvalidState.emit();\n return;\n }\n\n if (this.isSubmitted) {\n return;\n }\n\n this.submitted.emit();\n if (this.hasSubmitLock) {\n this.isSubmitted = true;\n timer(2000).subscribe(() => (this.isSubmitted = false));\n }\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div *ngIf=\"isOpen\" [@slideUpDown] [@.disabled]=\"creationMode\">\n <mat-card class=\"save-bar__content\" [class.mat-elevation-z3]=\"creationMode\" [class.mat-elevation-z6]=\"!creationMode\">\n <div class=\"save-bar__content__label\">{{ creationMode ? '' : 'You have unsaved changes' }}</div>\n <div>\n <button *ngIf=\"!creationMode\" class=\"save-bar__content__reset-button\" mat-button type=\"button\" (click)=\"onResetClicked()\">\n Discard\n </button>\n <button\n class=\"save-bar__content__submit-button\"\n [class.invalid]=\"(form && form.invalid) || invalidState\"\n mat-flat-button\n color=\"primary\"\n [type]=\"form ? 'submit' : 'button'\"\n (click)=\"onSubmitClicked()\"\n >\n {{ creationMode ? 'Create' : 'Save' }}\n </button>\n </div>\n </mat-card>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { GioSaveBarComponent } from './gio-save-bar.component';\n\n@NgModule({\n imports: [CommonModule, MatCardModule, MatButtonModule],\n declarations: [GioSaveBarComponent],\n exports: [GioSaveBarComponent],\n})\nexport class GioSaveBarModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentHarness } from '@angular/cdk/testing';\n\nexport class GioSaveBarHarness extends ComponentHarness {\n public static hostSelector = 'gio-save-bar';\n\n private readonly resetButtonSelector = '.save-bar__content__reset-button';\n private readonly submitButtonSelector = '.save-bar__content__submit-button';\n\n protected getSubmitButton = this.locatorFor(this.submitButtonSelector);\n protected getResetButton = this.locatorFor(this.resetButtonSelector);\n\n public async isVisible(): Promise<boolean> {\n const submitButton = await this.locatorForOptional(this.submitButtonSelector)();\n return submitButton !== null;\n }\n\n public async clickSubmit(): Promise<void> {\n const host = await this.host();\n await host.dispatchEvent('disable-submit-lock');\n const submitButton = await this.getSubmitButton();\n return submitButton.click();\n }\n\n public async isSubmitButtonInvalid(): Promise<boolean> {\n const submitButton = await this.getSubmitButton();\n return submitButton.hasClass('invalid');\n }\n\n public async isResetButtonVisible(): Promise<boolean> {\n const submitButton = await this.locatorForOptional(this.resetButtonSelector)();\n return submitButton !== null;\n }\n\n public async clickReset(): Promise<void> {\n const resetButton = await this.getResetButton();\n return resetButton.click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, DoCheck, ElementRef, HostBinding, Input, OnDestroy, Optional, Self, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { isEmpty } from 'lodash';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\n\nexport type Tags = Array<string>;\n\n@Component({\n selector: 'gio-form-tags-input',\n templateUrl: './gio-form-tags-input.component.html',\n styleUrls: ['./gio-form-tags-input.component.scss'],\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: GioFormTagsInputComponent,\n },\n ],\n})\nexport class GioFormTagsInputComponent implements MatFormFieldControl<Tags>, ControlValueAccessor, DoCheck, OnDestroy {\n private static nextId = 0;\n\n public _onChange: (_tags: Tags | null) => void = () => ({});\n\n public _onTouched: () => void = () => ({});\n private touched = false;\n\n @Input('aria-label')\n public ariaLabel = '';\n\n @Input()\n public addOnBlur = true;\n\n /**\n * Function called each time a tag is added, it can be used to hook inside the\n * addition process to, for instance, have custom validation in the components\n * using `gio-form-tags-input`.\n *\n * Parameters are:\n * - `tag`: The value of the tag to add\n * - `validationCb`: The callback function to call when validation is done. If\n * called with `true` it will add the tag, otherwise it will just ignore it\n */\n @Input()\n public tagValidationHook: ((tag: string, validationCb: (shouldAddTag: boolean) => void) => void) | undefined = undefined;\n\n @Input()\n public set autocompleteOptions(v: string[] | undefined) {\n this._autocompleteOptions = v;\n this.initAutocomplete();\n }\n public _autocompleteOptions?: string[];\n\n @ViewChild('tagInput')\n public set tagInput(v: ElementRef<HTMLInputElement> | null) {\n this._tagInput = v;\n this.initAutocomplete();\n }\n private _tagInput: ElementRef<HTMLInputElement> | null = null;\n\n // From ControlValueAccessor interface\n public get value(): Tags | null {\n return this._value;\n }\n\n public set value(_tags: Tags | null) {\n this._value = _tags;\n this._onChange(_tags);\n this.stateChanges.next();\n }\n\n private _value: Tags | null = null;\n\n // From ControlValueAccessor interface\n public stateChanges = new Subject<void>();\n\n // From ControlValueAccessor interface\n @HostBinding('id')\n public id = `gio-form-tags-input-${GioFormTagsInputComponent.nextId++}`;\n\n // From ControlValueAccessor interface\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh: string) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _placeholder = '';\n\n public autocompleteFilteredOptions$?: Observable<string[]>;\n\n // From ControlValueAccessor interface\n public focused = false;\n\n // From ControlValueAccessor interface\n public get empty(): boolean {\n return isEmpty(this.value) && isEmpty(this._tagInput?.nativeElement?.value);\n }\n\n // From ControlValueAccessor interface\n @HostBinding('class.floating')\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n // From ControlValueAccessor interface\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req: boolean) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n\n private _required = false;\n\n // From ControlValueAccessor interface\n @Input()\n public get disabled(): boolean {\n return this._disabled || (this.ngControl && this.ngControl.disabled === true);\n }\n\n public set disabled(dis: boolean) {\n this._disabled = coerceBooleanProperty(dis);\n this.stateChanges.next();\n }\n\n private _disabled = false;\n\n // From ControlValueAccessor interface\n public get errorState(): boolean {\n return (\n this.touched &&\n // if required check if is empty\n ((this.required && this.empty) ||\n // if there is a touched control check if there is an error\n (this.ngControl && this.ngControl.touched === true && !!this.ngControl.errors))\n );\n }\n\n // From ControlValueAccessor interface\n public controlType?: string;\n\n // From ControlValueAccessor interface\n public autofilled?: boolean;\n\n // From ControlValueAccessor interface\n public userAriaDescribedBy?: string;\n\n constructor(\n // From ControlValueAccessor interface\n @Optional() @Self() public readonly ngControl: NgControl,\n private readonly elRef: ElementRef,\n private readonly fm: FocusMonitor,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n // Replace the provider from above with this.\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n fm.monitor(elRef.nativeElement, true).subscribe(origin => {\n this.focused = !!origin;\n this._onTouched();\n this.touched = true;\n this.stateChanges.next();\n });\n }\n\n public ngDoCheck(): void {\n // sync control touched with local touched\n if (this.ngControl != null && this.touched !== this.ngControl.touched) {\n this.touched = this.ngControl.touched === true;\n this.stateChanges.next();\n }\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n // From ControlValueAccessor interface\n public writeValue(value: string[]): void {\n this._value = value;\n }\n\n // From ControlValueAccessor interface\n public registerOnChange(fn: (tags: Tags | null) => void): void {\n this._onChange = fn;\n }\n\n // From ControlValueAccessor interface\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // From ControlValueAccessor interface\n @HostBinding('attr.aria-describedby')\n public describedBy = '';\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n // From ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n public onContainerClick(_event: MouseEvent): void {}\n\n public addChipToFormControl(event: { value: string }): void {\n const input = this._tagInput?.nativeElement;\n const tagToAdd = (event.value ?? '').trim();\n\n if (isEmpty(tagToAdd)) {\n return;\n }\n\n // Add the tag only if shouldAddTag in validationCb return true\n // Set default callback if not defined\n const tagValidationHook = this.tagValidationHook ?? ((_, validationCb) => validationCb(true));\n\n const validationCb = (shouldAddTag: boolean) => {\n // Add new Tag in form control\n if (shouldAddTag) {\n // Delete Tag if already existing\n const formControlValue = [...(this.value ?? [])].filter(v => v !== tagToAdd);\n\n this.value = [...formControlValue, tagToAdd];\n }\n };\n\n // Reset the input value\n if (input) {\n input.value = '';\n }\n\n tagValidationHook(tagToAdd, validationCb);\n }\n\n public removeChipToFormControl(tag: string): void {\n this.value = [...(this.value ?? [])].filter(v => v !== tag);\n }\n\n public onAutocompleteSelect(event: MatAutocompleteSelectedEvent): void {\n this.addChipToFormControl({ value: event.option.value });\n }\n\n public onMatChipTokenEnd(): void {\n // Give priority to the `onAutocompleteSelect` when validating with the blur event\n setTimeout(() => {\n this.addChipToFormControl({ value: this._tagInput?.nativeElement.value ?? '' });\n }, 100);\n }\n\n private initAutocomplete(): void {\n if (this._autocompleteOptions && this._tagInput?.nativeElement) {\n this.autocompleteFilteredOptions$ = fromEvent(this._tagInput.nativeElement, 'keyup').pipe(\n startWith([] as string[]),\n map(() => {\n return (this._autocompleteOptions ?? []).filter(defaultHeader =>\n defaultHeader.toLowerCase().includes((this._tagInput?.nativeElement.value ?? '').toLowerCase()),\n );\n }),\n distinctUntilChanged(),\n );\n this.changeDetectorRef.detectChanges();\n }\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<mat-chip-list #tagChipList [attr.aria-label]=\"ariaLabel\" multiple [disabled]=\"disabled\">\n <mat-chip *ngFor=\"let tag of value\" [selectable]=\"false\" [removable]=\"!disabled\" (removed)=\"removeChipToFormControl(tag)\">\n {{ tag }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n *ngIf=\"!disabled\"\n #tagInput\n [matAutocompleteDisabled]=\"!_autocompleteOptions\"\n [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\"\n [matChipInputFor]=\"tagChipList\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"onMatChipTokenEnd()\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onAutocompleteSelect($event)\">\n <mat-option *ngFor=\"let value of autocompleteFilteredOptions$ | async\" [value]=\"value\">\n {{ value }}\n </mat-option>\n </mat-autocomplete>\n</mat-chip-list>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { GioFormTagsInputComponent } from './gio-form-tags-input.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, MatChipsModule, MatInputModule, FormsModule, MatIconModule, MatAutocompleteModule, MatSelectModule],\n declarations: [GioFormTagsInputComponent],\n exports: [GioFormTagsInputComponent],\n})\nexport class GioFormTagsInputModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate, parallel, TestKey } from '@angular/cdk/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\nimport { MatChipListHarness } from '@angular/material/chips/testing';\n\nexport type GioFormTagsInputHarnessFilters = BaseHarnessFilters;\n\nexport class GioFormTagsInputHarness extends ComponentHarness {\n public static hostSelector = 'gio-form-tags-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `GioFormColorInputHarness` that meets\n * certain criteria.\n *\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n public static with(options: GioFormTagsInputHarnessFilters = {}): HarnessPredicate<GioFormTagsInputHarness> {\n return new HarnessPredicate(GioFormTagsInputHarness, options);\n }\n\n protected getMatChipListHarness = this.locatorFor(MatChipListHarness);\n\n public async isDisabled(): Promise<boolean> {\n const matChipList = await this.getMatChipListHarness();\n return matChipList.isDisabled();\n }\n\n public async getTags(): Promise<string[]> {\n const matChipList = await this.getMatChipListHarness();\n\n const chips = await matChipList.getChips();\n\n return parallel(() => chips.map(async chip => await chip.getText()));\n }\n\n public async addTag(tag: string, separatorKey: TestKey | 'blur' = TestKey.ENTER): Promise<void> {\n const matChipList = await this.getMatChipListHarness();\n\n const chipInput = await matChipList.getInput();\n await chipInput.setValue(tag);\n if (separatorKey === 'blur') {\n await chipInput.blur();\n } else {\n await chipInput.sendSeparatorKey(separatorKey);\n }\n }\n\n public async removeTag(tag: string): Promise<void> {\n const matChipList = await this.getMatChipListHarness();\n\n const chips = await matChipList.getChips({ text: tag });\n if (chips[0]) {\n await chips[0].remove();\n }\n }\n\n public async getMatAutocompleteHarness(): Promise<MatAutocompleteHarness | null> {\n const matAutocompleteHarness = await this.locatorForOptional(MatAutocompleteHarness)();\n\n return matAutocompleteHarness;\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Directive, Input } from '@angular/core';\n\nexport type GioBannerTypes = 'error' | 'info' | 'success' | 'warning';\n\n@Component({\n selector: 'gio-banner',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerComponent {\n @Input()\n public type: GioBannerTypes = 'info';\n}\n\n@Directive({\n selector: '[gioBannerBody]',\n})\nexport class GioBannerBodyDirective {}\n\n@Directive({\n selector: '[gioBannerAction]',\n})\nexport class GioBannerActionDirective {}\n\n@Component({\n selector: 'gio-banner-error',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerErrorComponent extends GioBannerComponent {\n public type = 'error' as GioBannerTypes;\n}\n\n@Component({\n selector: 'gio-banner-info',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerInfoComponent extends GioBannerComponent {\n public type = 'info' as GioBannerTypes;\n}\n\n@Component({\n selector: 'gio-banner-success',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerSuccessComponent extends GioBannerComponent {\n public type = 'success' as GioBannerTypes;\n}\n\n@Component({\n selector: 'gio-banner-warning',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerWarningComponent extends GioBannerComponent {\n public type = 'warning' as GioBannerTypes;\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n class=\"banner\"\n [class.info]=\"type === 'info'\"\n [class.error]=\"type === 'error'\"\n [class.warning]=\"type === 'warning'\"\n [class.success]=\"type === 'success'\"\n>\n <div class=\"banner__wrapper\">\n <div class=\"banner__wrapper__icon\" [ngSwitch]=\"type\">\n <mat-icon *ngSwitchCase=\"'info'\" svgIcon=\"gio:chat-lines\"></mat-icon>\n <mat-icon *ngSwitchCase=\"'error'\" svgIcon=\"gio:chat-bubble-error\"></mat-icon>\n <mat-icon *ngSwitchCase=\"'warning'\" svgIcon=\"gio:chat-bubble-warning\"></mat-icon>\n <mat-icon *ngSwitchCase=\"'success'\" svgIcon=\"gio:chat-bubble-check\"></mat-icon>\n </div>\n <div class=\"banner__wrapper__head\">\n <div class=\"banner__wrapper__title\">\n <ng-content></ng-content>\n </div>\n <div #body class=\"banner__wrapper__body\" [class.hide]=\"!body.children.length\">\n <ng-content select=\"[gioBannerBody]\"></ng-content>\n </div>\n </div>\n <div #action class=\"banner__wrapper__action\" [class.hide]=\"!action.children.length\">\n <ng-content select=\"[gioBannerAction]\"></ng-content>\n </div>\n </div>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule, MatIconModule],\n exports: [MatIconModule],\n})\nexport class GioIconsModule {\n constructor(matIconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {\n matIconRegistry.addSvgIconSetInNamespace('gio', sanitizer.bypassSecurityTrustResourceUrl('assets/gio-icons.svg'));\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport {\n GioBannerComponent,\n GioBannerBodyDirective,\n GioBannerErrorComponent,\n GioBannerInfoComponent,\n GioBannerSuccessComponent,\n GioBannerWarningComponent,\n GioBannerActionDirective,\n} from './gio-banner.component';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, GioIconsModule],\n declarations: [\n GioBannerComponent,\n GioBannerErrorComponent,\n GioBannerInfoComponent,\n GioBannerSuccessComponent,\n GioBannerWarningComponent,\n GioBannerBodyDirective,\n GioBannerActionDirective,\n ],\n exports: [\n GioBannerComponent,\n GioBannerErrorComponent,\n GioBannerInfoComponent,\n GioBannerSuccessComponent,\n GioBannerWarningComponent,\n GioBannerBodyDirective,\n GioBannerActionDirective,\n ],\n})\nexport class GioBannerModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport type GioConfirmDialogData = {\n title?: string;\n content?: string;\n confirmButton?: string;\n cancelButton?: string;\n};\n\n@Component({\n selector: 'gio-confirm-dialog',\n templateUrl: './gio-confirm-dialog.component.html',\n styleUrls: ['./gio-confirm-dialog.component.scss'],\n})\nexport class GioConfirmDialogComponent {\n public title: string;\n public content?: string;\n public confirmButton: string;\n public cancelButton: string;\n\n constructor(public dialogRef: MatDialogRef<GioConfirmDialogComponent>, @Inject(MAT_DIALOG_DATA) confirmDialogData: GioConfirmDialogData) {\n this.title = confirmDialogData?.title ?? 'Are you sure?';\n this.content = confirmDialogData?.content;\n this.confirmButton = confirmDialogData?.confirmButton ?? 'Confirm';\n this.cancelButton = confirmDialogData?.cancelButton ?? 'Cancel';\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"confirm-dialog__title\">{{ title }}</h2>\n\n<mat-dialog-content *ngIf=\"content\" class=\"confirm-dialog__content\">\n <p [innerHTML]=\"content\"></p>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\" class=\"confirm-dialog__actions\">\n <button class=\"confirm-dialog__cancel-button\" mat-flat-button [mat-dialog-close]=\"false\">\n {{ cancelButton }}\n </button>\n <button\n class=\"confirm-dialog__confirm-button\"\n color=\"warn\"\n mat-raised-button\n [mat-dialog-close]=\"true\"\n cdkFocusInitial\n data-testid=\"confirm-dialog\"\n >\n {{ confirmButton }}\n </button>\n</mat-dialog-actions>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { GioConfirmDialogComponent } from './gio-confirm-dialog.component';\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatDialogModule, A11yModule],\n declarations: [GioConfirmDialogComponent],\n exports: [GioConfirmDialogComponent],\n})\nexport class GioConfirmDialogModule {}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\n\nexport class GioConfirmDialogHarness extends ComponentHarness {\n public static hostSelector = 'gio-confirm-dialog';\n\n private getConfirmBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__confirm-button' }));\n private getCancelBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__cancel-button' }));\n\n public async confirm(): Promise<void> {\n const button = await this.getConfirmBtn();\n await button.click();\n }\n\n public async cancel(): Promise<void> {\n const button = await this.getCancelBtn();\n await button.click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { toLower } from 'lodash';\n\nexport type GioConfirmAndValidateDialogData = {\n title?: string;\n warning?: string;\n content?: string;\n validationMessage?: string;\n validationValue?: string;\n confirmButton?: string;\n cancelButton?: string;\n};\n\n@Component({\n selector: 'gio-confirm-and-validate-dialog',\n templateUrl: './gio-confirm-and-validate-dialog.component.html',\n styleUrls: ['./gio-confirm-and-validate-dialog.component.scss'],\n})\nexport class GioConfirmAndValidateDialogComponent {\n public title: string;\n public warning?: string;\n public content?: string;\n public validationMessage?: string;\n public validationValue: string;\n public confirmButton: string;\n public cancelButton: string;\n\n public confirmValue?: string;\n public isValid = false;\n\n constructor(\n public dialogRef: MatDialogRef<GioConfirmAndValidateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) confirmDialogData: GioConfirmAndValidateDialogData,\n ) {\n this.title = confirmDialogData?.title ?? 'Are you sure?';\n this.warning = confirmDialogData?.warning;\n this.content = confirmDialogData?.content;\n this.validationMessage = extendValidationMessage(\n confirmDialogData?.validationMessage ?? 'Please, type <code>confirm</code> to confirm.',\n );\n this.validationValue = confirmDialogData?.validationValue ?? 'confirm';\n this.confirmButton = confirmDialogData?.confirmButton ?? 'Confirm';\n this.cancelButton = confirmDialogData?.cancelButton ?? 'Cancel';\n }\n\n public onConfirmChange(confirmValue: string): void {\n this.isValid = toLower(confirmValue) === toLower(this.validationValue);\n }\n}\n\nconst extendValidationMessage = (validationMessage: string) => {\n return validationMessage.replace('<code>', '<code class=\"gio-badge-warning\">');\n};\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"confirm-dialog__title\">{{ title }}</h2>\n\n<mat-dialog-content class=\"confirm-dialog__body\">\n <gio-banner-warning *ngIf=\"warning\"><span [innerHTML]=\"warning\"></span></gio-banner-warning>\n <p class=\"confirm-dialog__body__content\" *ngIf=\"content\" [innerHTML]=\"content\"></p>\n <p class=\"confirm-dialog__body__validate-message\" [innerHTML]=\"validationMessage\"></p>\n <mat-form-field class=\"confirm-dialog__body__validate-input\" appearance=\"outline\" floatLabel=\"always\">\n <mat-label>Confirm</mat-label>\n <input\n matInput\n cdkFocusInitial\n type=\"text\"\n [placeholder]=\"validationValue\"\n [ngModel]=\"confirmValue\"\n (ngModelChange)=\"onConfirmChange($event)\"\n required\n data-testid=\"confirm-input-dialog\"\n />\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\" class=\"confirm-dialog__actions\">\n <button\n class=\"confirm-dialog__confirm-button\"\n [disabled]=\"!isValid\"\n color=\"warn\"\n mat-raised-button\n [mat-dialog-close]=\"true\"\n data-testid=\"confirm-dialog\"\n >\n {{ confirmButton }}\n </button>\n <button class=\"confirm-dialog__cancel-button\" mat-flat-button [mat-dialog-close]=\"false\">\n {{ cancelButton }}\n </button>\n</mat-dialog-actions>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { GioBannerModule } from '../public-api';\n\nimport { GioConfirmAndValidateDialogComponent } from './gio-confirm-and-validate-dialog.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatButtonModule, MatDialogModule, MatInputModule, MatFormFieldModule, A11yModule, GioBannerModule],\n declarations: [GioConfirmAndValidateDialogComponent],\n exports: [GioConfirmAndValidateDialogComponent],\n})\nexport class GioConfirmAndValidateDialogModule {}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nexport class GioConfirmAndValidateDialogHarness extends ComponentHarness {\n public static hostSelector = 'gio-confirm-and-validate-dialog';\n\n private getConfirmBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__confirm-button' }));\n private getCancelBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__cancel-button' }));\n private getConfirmInput = this.locatorFor(MatInputHarness);\n\n public async confirm(): Promise<void> {\n const confirmInput = await this.getConfirmInput();\n await confirmInput.setValue(await confirmInput.getPlaceholder());\n\n const button = await this.getConfirmBtn();\n if (!(await button.isDisabled())) {\n await button.click();\n }\n }\n\n public async cancel(): Promise<void> {\n const button = await this.getCancelBtn();\n await button.click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Component, ElementRef, forwardRef, HostBinding, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { dropRight, isEmpty } from 'lodash';\nimport { map, startWith, tap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport type Header = { key: string; value: string };\nconst HEADER_NAMES = [\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-ID',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-MD5',\n 'Content-Range',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'ETag',\n 'Expires',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Location',\n 'Link',\n 'Max-Forwards',\n 'MIME-Version',\n 'Origin',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'Proxy-Connection',\n 'Range',\n 'Referer',\n 'Retry-After',\n 'Server',\n 'Set-Cookie',\n 'Set-Cookie2',\n 'TE',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'Warning',\n 'WWW-Authenticate',\n 'X-Forwarded-For',\n 'X-Forwarded-Proto',\n 'X-Forwarded-Server',\n 'X-Forwarded-Host',\n 'X-Forwarded-Port',\n 'X-Forwarded-Prefix',\n];\n\n@Component({\n selector: 'gio-form-headers',\n templateUrl: './gio-form-headers.component.html',\n styleUrls: ['./gio-form-headers.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GioFormHeadersComponent),\n multi: true,\n },\n ],\n})\nexport class GioFormHeadersComponent implements OnInit, ControlValueAccessor {\n public mainForm: FormGroup;\n public headersFormArray = new FormArray([\n new FormGroup({\n key: new FormControl(''),\n value: new FormControl(''),\n }),\n ]);\n\n @HostBinding('class.disabled')\n public disabled = false;\n\n private headers: Header[] = [];\n\n private _onChange: (_headers: Header[] | null) => void = () => ({});\n\n private _onTouched: () => void = () => ({});\n\n private filteredHeaderNames: Observable<string[]>[] = [];\n\n constructor(private readonly fm: FocusMonitor, private readonly elRef: ElementRef) {\n this.mainForm = new FormGroup({\n headers: this.headersFormArray,\n });\n }\n\n // From ControlValueAccessor interface\n public writeValue(value: Header[] | null): void {\n if (!value) {\n return;\n }\n\n this.headers = value ?? [];\n this.initHeadersForm();\n }\n\n // From ControlValueAccessor interface\n public registerOnChange(fn: (headers: Header[] | null) => void): void {\n this._onChange = fn;\n }\n\n // From ControlValueAccessor interface\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // From ControlValueAccessor interface\n public setDisabledState(isDisabled: boolean): void {\n if (isDisabled === this.disabled) {\n // do nothing if the disabled state is not changed\n return;\n }\n\n this.disabled = isDisabled;\n if (isDisabled) {\n this.headersFormArray.disable({ emitEvent: false });\n this.removeLastHeader();\n return;\n }\n this.headersFormArray.enable({ emitEvent: false });\n this.addEmptyHeader();\n }\n\n public ngOnInit(): void {\n // When user start to complete last header add new empty one a the end\n this.headersFormArray?.valueChanges\n .pipe(\n tap(headers => headers.length > 0 && this._onChange(removeLastEmptyHeader(headers))),\n tap((headers: Header[]) => {\n if (headers.length > 0 && (headers[headers.length - 1].key !== '' || headers[headers.length - 1].value !== '')) {\n this.addEmptyHeader();\n }\n }),\n )\n .subscribe();\n\n this.fm.monitor(this.elRef.nativeElement, true).subscribe(() => {\n this._onTouched();\n });\n }\n\n public initHeadersForm(): void {\n // Clear all previous headers\n this.headersFormArray.clear();\n\n // Populate headers array from headers\n this.headers.forEach(({ key, value }, headerIndex) => {\n this.headersFormArray.push(\n new FormGroup({\n key: this.initKeyFormControl(key, headerIndex),\n value: new FormControl({ value, disabled: this.disabled }),\n }),\n {\n emitEvent: false,\n },\n );\n });\n\n // add one empty header a the end\n this.addEmptyHeader();\n }\n\n public getFilteredHeaderNames(headerIndex: number, header: Header): Observable<string[]> {\n if (!this.filteredHeaderNames[headerIndex]) {\n return this.filteredHeaderNames[headerIndex];\n }\n if (header.key != null && header.key != '') {\n this.filteredHeaderNames[headerIndex] = of(header.key).pipe(map(value => this._filter(value)));\n return this.filteredHeaderNames[headerIndex];\n }\n return of(HEADER_NAMES);\n }\n\n private initKeyFormControl(key: string, headerIndex: number) {\n const control = new FormControl({ value: key, disabled: this.disabled });\n const filteredKeys = control.valueChanges.pipe(\n startWith(''),\n map(value => this._filter(value)),\n );\n this.filteredHeaderNames.splice(headerIndex, 0, filteredKeys);\n return control;\n }\n\n public onDeleteHeader(headerIndex: number): void {\n this._onTouched();\n this.headersFormArray.removeAt(headerIndex);\n }\n\n private addEmptyHeader() {\n if (this.disabled) {\n return;\n }\n\n this.headersFormArray.push(\n new FormGroup({\n key: this.initKeyFormControl('', this.headersFormArray.length),\n value: new FormControl(''),\n }),\n { emitEvent: false },\n );\n }\n\n private removeLastHeader() {\n this.headersFormArray.removeAt(this.headersFormArray.length - 1, { emitEvent: false });\n }\n\n private _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return HEADER_NAMES.filter(option => option.toLowerCase().includes(filterValue));\n }\n}\n\nconst removeLastEmptyHeader = (headers: Header[]) => {\n const lastHeader = headers[headers.length - 1];\n\n if (lastHeader && isEmpty(lastHeader.key) && isEmpty(lastHeader.value)) {\n return dropRight(headers);\n }\n return headers;\n};\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<table class=\"gio-form-headers__table gio-table-light\" [formGroup]=\"mainForm\">\n <thead>\n <tr>\n <th>KEY</th>\n <th>VALUE</th>\n </tr>\n </thead>\n <tbody formArrayName=\"headers\">\n <tr\n *ngFor=\"let control of headersFormArray.controls; index as headerIndex\"\n class=\"gio-form-headers__table__header-row\"\n [formGroupName]=\"headerIndex\"\n >\n <td class=\"gio-form-headers__table__header-row__td-key\">\n <mat-form-field class=\"gio-form-headers__table__header-row__td-key__field\" [floatLabel]=\"'never'\" appearance=\"standard\">\n <textarea\n formControlName=\"key\"\n matInput\n placeholder=\"Name...\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n [matAutocomplete]=\"headerNamesAutocomplete\"\n ></textarea>\n </mat-form-field>\n <mat-autocomplete #headerNamesAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let headerName of getFilteredHeaderNames(headerIndex, control.value) | async\" [value]=\"headerName\">{{\n headerName\n }}</mat-option>\n </mat-autocomplete>\n </td>\n <td class=\"gio-form-headers__table__header-row__td-value\">\n <mat-form-field class=\"gio-form-headers__table__header-row__td-value__field\" [floatLabel]=\"'never'\" appearance=\"standard\">\n <textarea formControlName=\"value\" matInput placeholder=\"Value...\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\"></textarea>\n </mat-form-field>\n <button\n class=\"gio-form-headers__table__header-row__td-value__button\"\n *ngIf=\"headersFormArray.controls.length - 1 !== headerIndex\"\n mat-icon-button\n aria-label=\"Delete\"\n (click)=\"onDeleteHeader(headerIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatOptionModule } from '@angular/material/core';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioFormHeadersComponent } from './gio-form-headers.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n GioIconsModule,\n MatButtonModule,\n MatAutocompleteModule,\n MatOptionModule,\n ],\n declarations: [GioFormHeadersComponent],\n exports: [GioFormHeadersComponent],\n})\nexport class GioFormHeadersModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncFactoryFn, BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\n\nexport class GioFormHeadersHarness extends ComponentHarness {\n public static hostSelector = 'gio-form-headers';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `GioFormColorInputHarness` that meets\n * certain criteria.\n *\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioFormHeadersHarness> {\n return new HarnessPredicate(GioFormHeadersHarness, options);\n }\n\n private getHeaderRowsElement = this.locatorForAll('tr.gio-form-headers__table__header-row');\n\n private getHeaderRowInputKey = (rowIndex: number): AsyncFactoryFn<MatInputHarness> =>\n this.locatorFor(MatInputHarness.with({ ancestor: `[ng-reflect-name=\"${rowIndex}\"]`, selector: '[formControlName=key]' }));\n\n private getHeaderRowInputKeyAutocomplete = (rowIndex: number): AsyncFactoryFn<MatAutocompleteHarness> =>\n this.locatorFor(MatAutocompleteHarness.with({ ancestor: `tr[ng-reflect-name=\"${rowIndex}\"]`, selector: '.mat-autocomplete-trigger' }));\n\n private getHeaderRowInputValue = (rowIndex: number): AsyncFactoryFn<MatInputHarness> =>\n this.locatorFor(MatInputHarness.with({ ancestor: `tr[ng-reflect-name=\"${rowIndex}\"]`, selector: '[formControlName=value]' }));\n\n private getHeaderRowRemoveButton = (rowIndex: number): AsyncFactoryFn<MatButtonHarness | null> =>\n this.locatorForOptional(MatButtonHarness.with({ ancestor: `tr[ng-reflect-name=\"${rowIndex}\"]`, selector: '[aria-label=\"Delete\"]' }));\n\n public async getHeaderRows(): Promise<\n {\n keyInput: MatInputHarness;\n keyAutocomplete: MatAutocompleteHarness;\n valueInput: MatInputHarness;\n removeButton: MatButtonHarness | null;\n }[]\n > {\n const rows = await this.getHeaderRowsElement();\n\n return Promise.all(\n rows.map(async (_, rowIndex) => ({\n keyInput: await this.getHeaderRowInputKey(rowIndex)(),\n keyAutocomplete: await this.getHeaderRowInputKeyAutocomplete(rowIndex)(),\n valueInput: await this.getHeaderRowInputValue(rowIndex)(),\n removeButton: await this.getHeaderRowRemoveButton(rowIndex)(),\n })),\n );\n }\n\n public async getLastHeaderRow(): Promise<{ keyInput: MatInputHarness; valueInput: MatInputHarness }> {\n const rows = await this.getHeaderRowsElement();\n\n return {\n keyInput: await this.getHeaderRowInputKey(rows.length - 1)(),\n valueInput: await this.getHeaderRowInputValue(rows.length - 1)(),\n };\n }\n\n public async addHeader({ key, value }: { key: string; value: string }): Promise<void> {\n const { keyInput, valueInput } = await this.getLastHeaderRow();\n\n await keyInput.setValue(key);\n await valueInput.setValue(value);\n }\n\n public async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('disabled');\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-file-picker-add-button',\n templateUrl: './gio-form-file-picker-add-button.component.html',\n styleUrls: ['./gio-form-file-picker-add-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerAddButtonComponent {}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"add-button\" matRipple>\n <div #content><ng-content></ng-content></div>\n <span *ngIf=\"!content.children.length\">\n <mat-icon class=\"add-button__image\" svgIcon=\"gio:upload\"></mat-icon>\n <span class=\"add-button__content\">Drag your file</span>\n </span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-file-picker-empty',\n templateUrl: './gio-form-file-picker-empty.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerEmptyComponent {}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #content><ng-content></ng-content></div>\n<span *ngIf=\"!content.children.length\"> No file defined </span>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-file-picker-label',\n templateUrl: './gio-form-file-picker-label.component.html',\n styleUrls: ['./gio-form-file-picker-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerLabelComponent {}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"mat-caption\"><ng-content></ng-content></div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class NewFile {\n constructor(public readonly name: string, public readonly dataUrl: string, public readonly file?: File) {}\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { isArray, isNil, remove } from 'lodash';\nimport { ReadFile, ReadMode } from 'ngx-file-helpers';\nimport { tap } from 'rxjs/operators';\n\nimport { NewFile } from './gio-form-file-picker.model';\n\ntype FileValue = {\n name: string;\n isNew: boolean;\n dataUrl: string;\n file?: File;\n isImage: boolean;\n};\n\n@Component({\n selector: 'gio-form-file-picker',\n templateUrl: './gio-form-file-picker.component.html',\n styleUrls: ['./gio-form-file-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerComponent implements OnInit, ControlValueAccessor {\n @Input()\n public multiple = false;\n\n @Input()\n public accept = '*';\n\n @Input()\n public set disabled(disabled: boolean) {\n this.setDisabledState(disabled);\n }\n\n public fileValues: FileValue[] = [];\n public readMode: ReadMode = ReadMode.dataURL;\n public dragHover = false;\n public isDisabled = false;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeCallback: (files: (string | NewFile)[]) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedCallback = () => {};\n\n constructor(private changeDetectorRef: ChangeDetectorRef, @Self() @Optional() public ngControl?: NgControl) {\n if (ngControl) {\n // Setting the value accessor directly (instead of using\n // the providers `NG_VALUE_ACCESSOR`) to avoid running into a circular import.\n ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.ngControl && this.ngControl.statusChanges) {\n // As the change detection is OnPush we have to markForCheck the component after a validation change because no input/output or values have changed\n this.ngControl.statusChanges.pipe(tap(() => this.changeDetectorRef.markForCheck())).subscribe();\n }\n }\n\n public get isComplete(): boolean {\n return (!this.multiple && this.fileValues.length === 1) || false;\n }\n\n public get isValid(): boolean | null {\n return !this.ngControl || !this.ngControl.touched || this.ngControl.valid;\n }\n\n // implement by ControlValueAccessor\n public async writeValue(inputs?: string[]): Promise<void> {\n if (isNil(inputs) || !isArray(inputs)) {\n this.fileValues = [];\n return Promise.resolve();\n }\n\n this.fileValues = await Promise.all(\n inputs.map(async input => ({\n isNew: false,\n name: input,\n dataUrl: input,\n isImage: await isImgUrl(input),\n })),\n );\n this.changeDetectorRef.markForCheck();\n }\n\n // implement by ControlValueAccessor\n public registerOnChange(fn: (v: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n // implement by ControlValueAccessor\n public registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n // implement by ControlValueAccessor\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n public onFilePicked(event: ReadFile): void {\n this.handleReceivedFileEvent(event);\n }\n\n public onFileDropped(event: ReadFile): void {\n this.handleReceivedFileEvent(event);\n }\n\n public onRemoveFile(file: FileValue): void {\n this.onTouchedCallback();\n this.dragHover = false;\n\n remove(this.fileValues, { name: file.name });\n\n this.emitFileValue();\n }\n\n public onTouched(): void {\n this.onTouchedCallback();\n this.dragHover = false;\n }\n\n public onDragEnter($event: DragEvent): void {\n const el = $event.target as HTMLElement | null;\n if (el) {\n this.dragHover = true;\n this.onTouchedCallback();\n }\n }\n\n public onDragOver($event: DragEvent): void {\n const el = $event.target as HTMLElement | null;\n\n if (el) {\n this.dragHover = false;\n this.onTouchedCallback();\n }\n }\n\n private handleReceivedFileEvent(event: ReadFile) {\n this.onTouchedCallback();\n\n this.dragHover = false;\n\n if (!this.multiple) {\n this.fileValues = [];\n }\n\n this.fileValues.push({\n name: event.name,\n isNew: true,\n dataUrl: event.content,\n file: event.underlyingFile,\n isImage: event.type.startsWith('image/'),\n });\n\n this.emitFileValue();\n }\n\n private emitFileValue() {\n this.onChangeCallback(\n this.fileValues.map(fileValue =>\n fileValue.isNew ? new NewFile(fileValue.name, fileValue.dataUrl, fileValue.file) : fileValue.dataUrl,\n ),\n );\n }\n}\n\nconst isImgUrl = (url: string): Promise<boolean> => {\n try {\n const img = new Image();\n img.src = url;\n return new Promise(resolve => {\n img.onerror = () => resolve(false);\n img.onload = () => resolve(true);\n });\n } catch (error) {\n return Promise.resolve(false);\n }\n};\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-content select=\"gio-form-file-picker-label\"></ng-content>\n<div\n *ngIf=\"!isDisabled; else disabledTpl\"\n class=\"file-picker\"\n ngxFileDropzone\n [readMode]=\"readMode\"\n (fileDrop)=\"onFileDropped($event)\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragOver($event)\"\n (blur)=\"dragHover = false\"\n>\n <div\n *ngIf=\"!isComplete\"\n class=\"file-picker__add-button\"\n [class.complete]=\"isComplete\"\n [class.error]=\"!isValid\"\n [class.drag-hover]=\"dragHover\"\n ngxFilePicker\n [accept]=\"accept\"\n [readMode]=\"readMode\"\n [multiple]=\"multiple\"\n (filePick)=\"onFilePicked($event)\"\n (click)=\"onTouched()\"\n >\n <div #addButton class=\"file-picker__add-button__content\"><ng-content select=\"gio-form-file-picker-add-button\"></ng-content></div>\n <gio-form-file-picker-add-button *ngIf=\"addButton.children.length === 0\"></gio-form-file-picker-add-button>\n </div>\n <div *ngFor=\"let fileValue of fileValues\" class=\"file-picker__preview\" [class.drag-hover]=\"dragHover\" [class.error]=\"!isValid\">\n <a class=\"file-picker__preview__delete\" (click)=\"onRemoveFile(fileValue)\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </a>\n\n <ng-container *ngTemplateOutlet=\"filePreview; context: { fileValue: this.fileValue }\"></ng-container>\n </div>\n</div>\n\n<ng-template #disabledTpl>\n <div class=\"file-picker disabled\">\n <ng-container *ngIf=\"fileValues.length === 0\">\n <span #previewEmpty class=\"file-picker__preview-empty disabled\">\n <ng-content select=\"gio-form-file-picker-empty\"></ng-content>\n <gio-form-file-picker-empty\n *ngIf=\"previewEmpty.children.length === 0\"\n class=\"file-picker__preview-empty__default\"\n ></gio-form-file-picker-empty>\n </span>\n </ng-container>\n\n <div class=\"file-picker__preview disabled\" *ngFor=\"let fileValue of fileValues\">\n <ng-container *ngTemplateOutlet=\"filePreview; context: { fileValue: this.fileValue }\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #filePreview let-fileValue=\"fileValue\">\n <div class=\"file-picker__preview__image\" *ngIf=\"fileValue.isImage\" [style.background-image]=\"'url(' + fileValue.dataUrl + ')'\"></div>\n <div class=\"file-picker__preview__file\" *ngIf=\"!fileValue.isImage\">\n <p>{{ fileValue.name }}</p>\n </div>\n</ng-template>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgxFileHelpersModule } from 'ngx-file-helpers';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioFormFilePickerAddButtonComponent } from './gio-form-file-picker-add-button/gio-form-file-picker-add-button.component';\nimport { GioFormFilePickerEmptyComponent } from './gio-form-file-picker-empty/gio-form-file-picker-empty.component';\nimport { GioFormFilePickerLabelComponent } from './gio-form-file-picker-label/gio-form-file-picker-label.component';\nimport { GioFormFilePickerComponent } from './gio-form-file-picker.component';\n\n@NgModule({\n declarations: [\n GioFormFilePickerComponent,\n GioFormFilePickerAddButtonComponent,\n GioFormFilePickerEmptyComponent,\n GioFormFilePickerLabelComponent,\n ],\n exports: [\n GioFormFilePickerComponent,\n GioFormFilePickerAddButtonComponent,\n GioFormFilePickerEmptyComponent,\n GioFormFilePickerLabelComponent,\n ],\n imports: [CommonModule, ReactiveFormsModule, NgxFileHelpersModule, MatRippleModule, MatIconModule, GioIconsModule],\n})\nexport class GioFormFilePickerModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\ninterface GioFormFilePickerHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the formControlName */\n formControlName?: string;\n}\n\nexport class GioFormFilePickerInputHarness extends ComponentHarness {\n public static hostSelector = 'gio-form-file-picker';\n\n public static with(options: GioFormFilePickerHarnessFilters): HarnessPredicate<GioFormFilePickerInputHarness> {\n return new HarnessPredicate(GioFormFilePickerInputHarness, options).addOption(\n 'formControlName',\n options.formControlName,\n (harness, text) => HarnessPredicate.stringMatches(harness.getFormControlName(), text),\n );\n }\n\n /**\n * Hack force onload on Image Object\n * GioFormFilePickerComponent use a Image Object to check if the file is an image.\n * This method allow to force onload event on the Image Object.\n * @param excludeSrc call onerror instead of onload for this src\n */\n public static forceImageOnload(excludeSrc: string[] = []): void {\n Object.defineProperties(Image.prototype, {\n src: {\n get: function () {\n return this._src;\n },\n set: function (src) {\n this._src = src;\n },\n },\n onload: {\n get: function () {\n return this._onload;\n },\n set: function (fn) {\n this._onload = fn;\n\n excludeSrc.includes(this._src) ? this.onerror() : this.onload();\n },\n },\n });\n }\n\n protected _mainDiv = this.locatorFor('.file-picker__add-button');\n protected _hasErrorClass = this.locatorForOptional('[class=\"file-picker__add-button error\"]');\n protected _inputFile = this.locatorFor('input[type=\"file\"]');\n protected _getDisabledElement = this.locatorForOptional('.disabled');\n\n private async getFormControlName(): Promise<string | null> {\n const filePickerInputHarness = await this.host();\n return filePickerInputHarness.getAttribute('formControlName');\n }\n\n public async hasErrorClass(): Promise<boolean> {\n return !!(await this._hasErrorClass());\n }\n\n public async clickInside(): Promise<void> {\n await (await this._mainDiv()).click();\n }\n\n public async getInputFileAccept(): Promise<string | null> {\n return await (await this._inputFile()).getAttribute('accept');\n }\n\n public async getPreviews(): Promise<(string | null)[]> {\n const previewImages = await this.locatorForAll('.file-picker__preview__image')();\n const previewFiles = await this.locatorForAll('.file-picker__preview__file')();\n\n return Promise.all([\n ...previewImages.map(previewImage => previewImage.getAttribute('style')),\n ...previewFiles.map(previewFile => previewFile.text()),\n ]);\n }\n\n public async isAddButtonPresent(): Promise<boolean> {\n return (await this.locatorForOptional('gio-form-file-picker-add-button')()) !== null;\n }\n\n public async isDisabled(): Promise<boolean> {\n return !!(await this._getDisabledElement());\n }\n\n public async deleteFile(fileIndex = 0): Promise<void> {\n const deleteButtons = await this.locatorForAll('.file-picker__preview__delete')();\n\n return deleteButtons[fileIndex].click();\n }\n\n public async dropFiles(files: File[]): Promise<void> {\n const filePickerDropZone = await this.locatorFor('.file-picker')();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await filePickerDropZone.dispatchEvent('drop', { dataTransfer: { files } } as any);\n\n // Wait event is dispatched\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport * from './gio-form-file-picker.module';\nexport * from './gio-form-file-picker.component';\nexport * from './gio-form-file-picker.model';\nexport * from './gio-form-file-picker-add-button/gio-form-file-picker-add-button.component';\nexport * from './gio-form-file-picker-empty/gio-form-file-picker-empty.component';\nexport * from './gio-form-file-picker-label/gio-form-file-picker-label.component';\n\nexport * from './gio-form-file-picker.component.harness';\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, timer } from 'rxjs';\nimport { debounce, distinctUntilChanged } from 'rxjs/operators';\n\nexport interface OverlayOptions {\n top?: number;\n parent?: HTMLElement;\n open: boolean;\n focus?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GioMenuService {\n private reduceSource = new BehaviorSubject<boolean>(false);\n private overlaySource = new BehaviorSubject<OverlayOptions>({ open: false });\n public reduce = this.reduceSource.asObservable();\n public overlayObservable = this.overlaySource.asObservable().pipe(\n distinctUntilChanged((prev, curr) => prev.open === curr.open),\n debounce(overlayOptions => timer(overlayOptions.open ? 150 : 500)),\n );\n\n public reduced(reduced: boolean): void {\n this.reduceSource.next(reduced);\n }\n\n public overlay(overlayOptions: OverlayOptions): void {\n this.overlaySource.next(overlayOptions);\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, HostListener, Input, OnDestroy } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { GioMenuService } from '../gio-menu.service';\n\n@Component({\n selector: 'gio-menu-item',\n templateUrl: './gio-menu-item.component.html',\n styleUrls: ['./gio-menu-item.component.scss'],\n})\nexport class GioMenuItemComponent implements OnDestroy {\n @Input() public icon = '';\n @Input() public active = false;\n @Input() public outlined = false;\n\n private unsubscribe$ = new Subject();\n\n constructor(private readonly gioMenuService: GioMenuService) {}\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.unsubscribe();\n }\n\n public onMouseLeave(): void {\n if (this.active) {\n this.gioMenuService.overlay({ open: false });\n }\n }\n\n public onMouseEnter($event: MouseEvent): void {\n if (this.active) {\n const menuItem = $event.target as HTMLInputElement;\n this.gioMenuService.overlay({ open: true, top: menuItem.getBoundingClientRect().top, parent: menuItem });\n }\n }\n\n @HostListener('click', ['$event'])\n public onClick($event: MouseEvent): void {\n of(true)\n .pipe(\n takeUntil(this.unsubscribe$),\n delay(0),\n tap(() => this.onMouseEnter($event)),\n )\n .subscribe();\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydownHandler($event: KeyboardEvent): void {\n of($event.key === 'Enter' && $event.target)\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(enterKey => !!enterKey),\n switchMap(() => of($event.target as HTMLElement)),\n tap(menuItem => {\n this.gioMenuService.overlay({ open: false });\n if (this.active) {\n this.gioMenuService.overlay({ open: true, top: menuItem.getBoundingClientRect().top, parent: menuItem, focus: true });\n } else {\n menuItem.click();\n }\n }),\n )\n .subscribe();\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n class=\"gio-menu-item\"\n [class.gio-menu-item__active]=\"active\"\n [class.gio-menu-item__outlined]=\"outlined\"\n (click)=\"onClick($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <mat-icon *ngIf=\"icon\" class=\"gio-menu-item__icon\" [svgIcon]=\"icon\"></mat-icon>\n <span class=\"gio-menu-item__title\"><ng-content></ng-content></span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-menu-footer',\n templateUrl: './gio-menu-footer.component.html',\n styleUrls: ['./gio-menu-footer.component.scss'],\n})\nexport class GioMenuFooterComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-footer\">\n <div class=\"gio-menu-footer__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { GioMenuService } from './gio-menu.service';\n\n@Component({\n selector: 'gio-menu',\n templateUrl: './gio-menu.component.html',\n styleUrls: ['./gio-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class GioMenuComponent implements OnInit {\n @Input() public reduced = false;\n\n constructor(private readonly gioMenuService: GioMenuService) {}\n\n public ngOnInit(): void {\n this.gioMenuService.reduced(this.reduced);\n }\n\n public reduceMenu(): void {\n this.reduced = !this.reduced;\n this.gioMenuService.reduced(this.reduced);\n }\n\n public getCollapseButtonIcon(): string {\n return this.reduced ? 'gio:expande' : 'gio:collapse';\n }\n\n public onMouseLeave(): void {\n if (this.reduced) {\n this.gioMenuService.overlay({ open: false });\n }\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu\" [class.gio-menu__reduced]=\"reduced\" (mouseleave)=\"onMouseLeave()\">\n <ng-content select=\"gio-menu-header\"></ng-content>\n <ng-content select=\"gio-menu-list\"></ng-content>\n <ng-content select=\"gio-menu-footer\"></ng-content>\n <gio-menu-footer>\n <gio-menu-item\n tabIndex=\"1\"\n type=\"button\"\n class=\"gio-menu-footer__collapse\"\n [icon]=\"getCollapseButtonIcon()\"\n (click)=\"reduceMenu()\"\n [outlined]=\"true\"\n >Collapse menu</gio-menu-item\n >\n </gio-menu-footer>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-menu-list',\n templateUrl: './gio-menu-list.component.html',\n styleUrls: ['./gio-menu-list.component.scss'],\n})\nexport class GioMenuListComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-list\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\n\nexport type SelectorItem = {\n value: string;\n displayValue: string;\n};\n\n@Component({\n selector: 'gio-menu-selector',\n templateUrl: './gio-menu-selector.component.html',\n styleUrls: ['./gio-menu-selector.component.scss'],\n})\nexport class GioMenuSelectorComponent {\n @Input()\n public selectorTitle = '';\n\n @Input()\n public selectorItems: SelectorItem[] = [];\n\n @Input()\n public selectedItemValue = '';\n\n @Input()\n public tabIndex = 1;\n\n @Output()\n public selectChange: EventEmitter<string> = new EventEmitter<string>();\n\n public onSelectionChange($event: MatSelectChange): void {\n this.selectChange.emit($event.value);\n }\n\n public isDisabled(): boolean {\n return this.selectorItems.length <= 1;\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-selector\">\n <mat-form-field class=\"gio-menu-selector__mat-form-field\" appearance=\"legacy\">\n <mat-label>{{ selectorTitle }}</mat-label>\n <mat-select [tabIndex]=\"tabIndex\" [value]=\"selectedItemValue\" (selectionChange)=\"onSelectionChange($event)\" [disabled]=\"isDisabled()\">\n <mat-option *ngFor=\"let item of selectorItems\" [value]=\"item.value\">\n {{ item.displayValue }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-menu-header',\n templateUrl: './gio-menu-header.component.html',\n styleUrls: ['./gio-menu-header.component.scss'],\n})\nexport class GioMenuHeaderComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-header\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioMenuItemComponent } from './gio-menu-item/gio-menu-item.component';\nimport { GioMenuComponent } from './gio-menu.component';\nimport { GioMenuFooterComponent } from './gio-menu-footer/gio-menu-footer.component';\nimport { GioMenuListComponent } from './gio-menu-list/gio-menu-list.component';\nimport { GioMenuSelectorComponent } from './gio-menu-selector/gio-menu-selector.component';\nimport { GioMenuHeaderComponent } from './gio-menu-header/gio-menu-header.component';\n\n@NgModule({\n declarations: [\n GioMenuComponent,\n GioMenuItemComponent,\n GioMenuFooterComponent,\n GioMenuListComponent,\n GioMenuHeaderComponent,\n GioMenuSelectorComponent,\n ],\n exports: [\n GioMenuComponent,\n GioMenuItemComponent,\n GioMenuFooterComponent,\n GioMenuListComponent,\n GioMenuHeaderComponent,\n GioMenuSelectorComponent,\n ],\n imports: [CommonModule, MatIconModule, GioIconsModule, MatSelectModule],\n})\nexport class GioMenuModule {}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentHarness } from '@angular/cdk/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport class GioMenuSelectorHarness extends ComponentHarness {\n public static hostSelector = 'gio-menu-selector';\n\n private getSelect = this.locatorFor(MatSelectHarness);\n\n public async availableOptions(): Promise<string[]> {\n const select = await this.getSelect();\n await select.open();\n const options = await select.getOptions();\n\n return Promise.all(options.map(o => o.getText()));\n }\n\n public async selectedOption(): Promise<string> {\n const select = await this.getSelect();\n return select.getValueText();\n }\n\n public async selectOptionByIndex(index: number): Promise<void> {\n const select = await this.getSelect();\n await select.open();\n const options = await select.getOptions();\n\n return options[index].click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-menu.module';\nexport * from './gio-menu.service';\nexport * from './gio-menu.component';\nexport * from './gio-menu-item/gio-menu-item.component';\nexport * from './gio-menu-list/gio-menu-list.component';\nexport * from './gio-menu-footer/gio-menu-footer.component';\nexport * from './gio-menu-header/gio-menu-header.component';\nexport * from './gio-menu-selector/gio-menu-selector.component';\nexport * from './gio-menu-selector/gio-menu-selector.harness';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AfterViewInit, Component, Directive, ElementRef, HostListener, OnDestroy, ViewChild } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { GioMenuService, OverlayOptions } from '../gio-menu/gio-menu.service';\n\n@Directive({\n selector: '[gioSubmenuTitle]',\n})\nexport class GioSubmenuTitleDirective {}\n\n@Component({\n selector: 'gio-submenu',\n templateUrl: './gio-submenu.component.html',\n styleUrls: ['./gio-submenu.component.scss'],\n})\nexport class GioSubmenuComponent implements AfterViewInit, OnDestroy {\n public reduced = false;\n public loaded = false;\n public overlayOptions: OverlayOptions = { open: false };\n private hover = false;\n @ViewChild('gioSubmenu', { static: false })\n private gioSubmenu!: ElementRef<HTMLDivElement>;\n private unsubscribe$ = new Subject();\n\n constructor(private readonly gioMenuService: GioMenuService) {}\n\n public ngAfterViewInit(): void {\n this.gioMenuService.reduce\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(reduced => reduced),\n tap(() => {\n this.reduced = true;\n this.loaded = true;\n }),\n switchMap(() => this.gioMenuService.overlayObservable),\n tap(overlayOptions => {\n this.overlayOptions = overlayOptions;\n if (overlayOptions.open) {\n const top = overlayOptions.top || 0;\n this.gioSubmenu.nativeElement.style.top = `${top}px`;\n this.gioSubmenu.nativeElement.style.height = 'auto';\n this.gioSubmenu.nativeElement.style.maxHeight = `calc(100vh - ${top + 8}px)`;\n }\n }),\n filter(overlayOptions => !!overlayOptions.focus),\n delay(200),\n switchMap(() => of(this.gioSubmenu.nativeElement.querySelectorAll<HTMLElement>('gio-submenu-item'))),\n filter(submenuItems => submenuItems.length > 0),\n tap(submenuItems => submenuItems[0].focus()),\n )\n .subscribe();\n\n this.gioMenuService.reduce\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(reduced => !reduced),\n tap(() => {\n this.reduced = false;\n this.loaded = true;\n this.gioSubmenu.nativeElement.style.height = '100%';\n this.gioSubmenu.nativeElement.style.maxHeight = 'none';\n }),\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.unsubscribe();\n }\n\n public onMouseEnter(): void {\n this.hover = true;\n this.gioMenuService.overlay(this.overlayOptions);\n }\n\n public onMouseLeave(): void {\n this.hover = false;\n this.gioMenuService.overlay({ open: false });\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydownHandler(event: KeyboardEvent): void {\n of(this.reduced && event.key === 'Escape')\n .pipe(\n filter(reducedAndEscape => reducedAndEscape),\n tap(() => this.gioMenuService.overlay({ open: false })),\n delay(100),\n tap(() => this.overlayOptions.parent?.focus()),\n )\n .subscribe();\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n #gioSubmenu\n class=\"gio-submenu\"\n [class.gio-submenu__loaded]=\"loaded\"\n [class.gio-submenu__reduced]=\"reduced\"\n [class.gio-submenu__overlay]=\"overlayOptions.open\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <div #title class=\"gio-submenu__title\" [class.hide]=\"!title.children.length || reduced\">\n <ng-content select=\"[gioSubmenuTitle]\"></ng-content>\n </div>\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gio-submenu-group',\n templateUrl: './gio-submenu-group.component.html',\n styleUrls: ['./gio-submenu-group.component.scss'],\n})\nexport class GioSubmenuGroupComponent {\n @Input() public title = '';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-submenu-group\">\n <div class=\"gio-submenu-group__title\">{{ title }}</div>\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, ElementRef, HostListener, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'gio-submenu-item',\n templateUrl: './gio-submenu-item.component.html',\n styleUrls: ['./gio-submenu-item.component.scss'],\n})\nexport class GioSubmenuItemComponent {\n @Input() public active = false;\n\n @ViewChild('gioSubmenuItem', { static: false })\n private gioSubmenuItem: ElementRef<HTMLDivElement> | undefined;\n\n @HostListener('keydown', ['$event'])\n public onKeydownHandler(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.gioSubmenuItem?.nativeElement.click();\n }\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #gioSubmenuItem class=\"gio-submenu-item\" [class.gio-submenu-item__active]=\"active\">\n <span class=\"gio-submenu-item__title\"><ng-content></ng-content></span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioSubmenuGroupComponent } from './gio-submenu-group/gio-submenu-group.component';\nimport { GioSubmenuComponent, GioSubmenuTitleDirective } from './gio-submenu.component';\nimport { GioSubmenuItemComponent } from './gio-submenu-item/gio-submenu-item.component';\n\n@NgModule({\n declarations: [GioSubmenuComponent, GioSubmenuGroupComponent, GioSubmenuItemComponent, GioSubmenuTitleDirective],\n exports: [GioSubmenuComponent, GioSubmenuGroupComponent, GioSubmenuItemComponent, GioSubmenuTitleDirective],\n imports: [CommonModule, MatIconModule, GioIconsModule],\n})\nexport class GioSubmenuModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-submenu.component';\nexport * from './gio-submenu.module';\nexport * from './gio-submenu-group/gio-submenu-group.component';\nexport * from './gio-submenu-item/gio-submenu-item.component';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\nexport type GioTopBarTypes = 'am' | 'apim' | 'cockpit';\n\n@Component({\n selector: 'gio-top-bar',\n templateUrl: './gio-top-bar.component.html',\n styleUrls: ['./gio-top-bar.component.scss'],\n})\nexport class GioTopBarComponent {\n @Input() public type: GioTopBarTypes = 'am';\n\n @Input() public productName = '';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-top-bar\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\nexport type GioTopBarProductTypes = 'am' | 'apim' | 'cockpit';\n\n@Component({\n selector: 'gio-top-bar-content',\n templateUrl: './gio-top-bar-content.component.html',\n styleUrls: ['./gio-top-bar-content.component.scss'],\n})\nexport class GioTopBarContentComponent {\n @Input()\n public type: GioTopBarProductTypes = 'am';\n @Input()\n public productName = 'Access Management';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-top-bar-content\" [class]=\"type\">\n <mat-icon [svgIcon]=\"'gio:product-' + type\"></mat-icon>\n <span>{{ productName }}</span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioTopBarComponent } from './gio-top-bar.component';\nimport { GioTopBarContentComponent } from './gio-top-bar-content/gio-top-bar-content.component';\n\n@NgModule({\n declarations: [GioTopBarComponent, GioTopBarContentComponent],\n exports: [GioTopBarComponent, GioTopBarContentComponent],\n imports: [CommonModule, MatIconModule, GioIconsModule],\n})\nexport class GioTopBarModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-top-bar-menu',\n templateUrl: './gio-top-bar-menu.component.html',\n styleUrls: ['./gio-top-bar-menu.component.scss'],\n})\nexport class GioTopBarMenuComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-top-bar-menu\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GioTopBarMenuComponent } from './gio-top-bar-menu.component';\n\n@NgModule({\n declarations: [GioTopBarMenuComponent],\n exports: [GioTopBarMenuComponent],\n imports: [CommonModule],\n})\nexport class GioTopBarMenuModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gio-top-bar-link',\n templateUrl: './gio-top-bar-link.component.html',\n styleUrls: ['./gio-top-bar-link.component.scss'],\n})\nexport class GioTopBarLinkComponent {\n @Input() public url = '';\n @Input() public name = '';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<a mat-button [href]=\"url\" target=\"_blank\" class=\"gio-top-bar-link\">\n <div class=\"gio-top-bar-link__content\">\n <span>{{ name }}</span>\n <mat-icon svgIcon=\"gio:external-link\"></mat-icon>\n </div>\n</a>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../../gio-icons/gio-icons.module';\n\nimport { GioTopBarLinkComponent } from './gio-top-bar-link.component';\n\n@NgModule({\n declarations: [GioTopBarLinkComponent],\n exports: [GioTopBarLinkComponent],\n imports: [CommonModule, MatIconModule, GioIconsModule],\n})\nexport class GioTopBarLinkModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-top-bar.module';\nexport * from './gio-top-bar.component';\nexport * from './gio-top-bar-menu/gio-top-bar-menu.module';\nexport * from './gio-top-bar-menu/gio-top-bar-menu.component';\nexport * from './gio-top-bar-link/gio-top-bar-link.module';\nexport * from './gio-top-bar-link/gio-top-bar-link.component';\nexport * from './gio-top-bar-content/gio-top-bar-content.component';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AfterViewInit, Component, ElementRef, HostBinding, Input, OnChanges, ViewChild } from '@angular/core';\nimport { toSvg } from 'jdenticon';\n\n@Component({\n selector: 'gio-avatar',\n templateUrl: './gio-avatar.component.html',\n styleUrls: ['./gio-avatar.component.scss'],\n})\nexport class GioAvatarComponent implements AfterViewInit, OnChanges {\n public imgSrc: string | null = null;\n public defaultSize: number;\n public finalSize!: number;\n\n @Input()\n public set src(src: string | null) {\n this.imgSrc = src || null;\n }\n @Input()\n public name = '';\n @Input()\n public size!: number;\n @Input()\n public roundedBorder = false;\n\n @ViewChild('avatarContainer') public avatarContainerEleRef!: ElementRef;\n\n @HostBinding('style.width.px') public width = this.size;\n @HostBinding('style.height.px') public height = this.size;\n\n constructor(private hostEl: ElementRef) {\n this.defaultSize = Math.min(Number(this.hostEl.nativeElement.offsetWidth), Number(this.hostEl.nativeElement.offsetHeight)) || 110;\n }\n\n public ngOnChanges(): void {\n this.finalSize = this.size || this.defaultSize;\n }\n\n public ngAfterViewInit(): void {\n if (this.imgSrc != null) {\n return;\n }\n if (this.avatarContainerEleRef) {\n this.avatarContainerEleRef.nativeElement.innerHTML = toSvg(this.name, this.finalSize, { backColor: '#FFF', padding: 0 });\n }\n }\n\n public onImgError(): void {\n this.imgSrc = null;\n this.ngAfterViewInit();\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #avatarContainer class=\"gio-avatar\" [class.rounded]=\"roundedBorder\">\n <img *ngIf=\"imgSrc\" class=\"gio-avatar__img\" [src]=\"imgSrc\" alt=\"Avatar picture\" [width]=\"finalSize\" (error)=\"onImgError()\" />\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GioAvatarComponent } from './gio-avatar.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [GioAvatarComponent],\n exports: [GioAvatarComponent],\n})\nexport class GioAvatarModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-avatar.component';\nexport * from './gio-avatar.module';\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gioBreadcrumbItem]',\n})\nexport class GioBreadcrumbItemDirective {\n constructor(public templateRef: TemplateRef<unknown>) {}\n}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, ContentChildren, QueryList } from '@angular/core';\n\nimport { GioBreadcrumbItemDirective } from './gio-breadcrumb-item.directive';\n\n@Component({\n selector: 'gio-breadcrumb',\n templateUrl: './gio-breadcrumb.component.html',\n styleUrls: ['./gio-breadcrumb.component.scss'],\n})\nexport class GioBreadcrumbComponent {\n @ContentChildren(GioBreadcrumbItemDirective)\n public itemDirectives!: QueryList<GioBreadcrumbItemDirective>;\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-breadcrumb\">\n <ng-container *ngFor=\"let item of itemDirectives; let first = first\">\n <mat-icon *ngIf=\"!first\" svgIcon=\"gio:nav-arrow-right\" class=\"gio-breadcrumb__icon\"></mat-icon>\n <ng-container *ngTemplateOutlet=\"item.templateRef\"></ng-container>\n </ng-container>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioBreadcrumbComponent } from './gio-breadcrumb.component';\nimport { GioBreadcrumbItemDirective } from './gio-breadcrumb-item.directive';\n\n@NgModule({\n imports: [CommonModule, GioIconsModule],\n declarations: [GioBreadcrumbComponent, GioBreadcrumbItemDirective],\n exports: [GioBreadcrumbComponent, GioBreadcrumbItemDirective],\n})\nexport class GioBreadcrumbModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-breadcrumb.module';\nexport * from './gio-breadcrumb.component';\nexport * from './gio-breadcrumb-item.directive';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NgModule } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@NgModule({\n providers: [{ provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'outline' } }],\n})\nexport class GioMatConfigModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-mat-config.module';\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig } from '@ngx-formly/core';\nimport { FormlyJsonschema } from '@ngx-formly/core/json-schema';\nimport { cloneDeep, isObject } from 'lodash';\n\nimport { GioJsonSchema } from './model/GioJsonSchema';\n\n@Component({\n selector: 'gio-form-json-schema',\n template: `<formly-form [fields]=\"fields\" [options]=\"options\" [form]=\"formGroup\" [model]=\"model\"></formly-form>`,\n})\nexport class GioFormJsonSchemaComponent {\n @Input()\n public set jsonSchema(jsonSchema: GioJsonSchema) {\n if (isObject(jsonSchema)) {\n this.fields = [this.toFormlyFieldConfig(jsonSchema)];\n }\n }\n @Input()\n public formGroup: FormGroup = new FormGroup({});\n\n @Input()\n public options: FormlyFormOptions = {};\n\n public model = {};\n\n @Input()\n public set initialValue(initialValue: object) {\n if (initialValue) {\n this.model = cloneDeep(initialValue);\n }\n }\n\n public fields: FormlyFieldConfig[] = [];\n\n constructor(private readonly formlyJsonschema: FormlyJsonschema) {}\n\n private toFormlyFieldConfig(jsonSchema: GioJsonSchema): FormlyFieldConfig {\n return this.formlyJsonschema.toFieldConfig(jsonSchema);\n }\n}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'gio-fjs-object-type',\n template: ``,\n})\nexport class GioFjsNullTypeComponent extends FieldType {}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'gio-fjs-object-type',\n template: `\n <div>\n <legend *ngIf=\"to.label\">{{ to.label }}</legend>\n <p *ngIf=\"to.description\">{{ to.description }}</p>\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"showError && formControl.errors\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n </div>\n `,\n})\nexport class GioFjsObjectTypeComponent extends FieldType {\n public defaultOptions = {\n defaultValue: {},\n };\n}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\n\n@Component({\n selector: 'gio-fjs-array-type',\n template: `\n <div>\n <legend *ngIf=\"to.label\">{{ to.label }}</legend>\n <p *ngIf=\"to.description\">{{ to.description }}</p>\n\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"showError && formControl.errors\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let field of field.fieldGroup; let i = index\" class=\"row\">\n <formly-field [field]=\"field\"></formly-field>\n <div>\n <button class=\"btn btn-danger\" type=\"button\" (click)=\"remove(i)\">-</button>\n </div>\n </div>\n\n <div>\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"add()\">+</button>\n </div>\n </div>\n `,\n})\nexport class GioFjsArrayTypeComponent extends FieldArrayType {}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport function minItemsValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT have fewer than ${field.props?.minItems} items`;\n}\n\nexport function maxItemsValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT have more than ${field.props?.maxItems} items`;\n}\n\nexport function minLengthValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT be shorter than ${field.props?.minLength} characters`;\n}\n\nexport function maxLengthValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT be longer than ${field.props?.maxLength} characters`;\n}\n\nexport function minValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be >= ${field.props?.min}`;\n}\n\nexport function maxValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be <= ${field.props?.max}`;\n}\n\nexport function multipleOfValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be multiple of ${field.props?.step}`;\n}\n\nexport function exclusiveMinimumValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be > ${field.props?.step}`;\n}\n\nexport function exclusiveMaximumValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be < ${field.props?.step}`;\n}\n\nexport function constValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be equal to constant \"${field.props?.const}\"`;\n}\n\nexport function typeValidationMessage({ schemaType }: { schemaType: unknown[] }): string {\n return `Should be \"${schemaType[0]}\".`;\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\nimport { GioFjsNullTypeComponent } from './type-component/null-type.component';\nimport { GioFjsObjectTypeComponent } from './type-component/object-type.component';\nimport { GioFjsArrayTypeComponent } from './type-component/array-type.component';\nimport {\n typeValidationMessage,\n minLengthValidationMessage,\n maxLengthValidationMessage,\n minValidationMessage,\n maxValidationMessage,\n multipleOfValidationMessage,\n exclusiveMinimumValidationMessage,\n exclusiveMaximumValidationMessage,\n minItemsValidationMessage,\n maxItemsValidationMessage,\n constValidationMessage,\n} from './util/validation-message.util';\nimport { GioFormJsonSchemaComponent } from './gio-form-json-schema.component';\n\n@NgModule({\n declarations: [GioFormJsonSchemaComponent, GioFjsNullTypeComponent, GioFjsObjectTypeComponent, GioFjsArrayTypeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule.forRoot({\n validationMessages: [\n { name: 'required', message: 'This field is required' },\n { name: 'type', message: typeValidationMessage },\n { name: 'minLength', message: minLengthValidationMessage },\n { name: 'maxLength', message: maxLengthValidationMessage },\n { name: 'min', message: minValidationMessage },\n { name: 'max', message: maxValidationMessage },\n { name: 'multipleOf', message: multipleOfValidationMessage },\n { name: 'exclusiveMinimum', message: exclusiveMinimumValidationMessage },\n { name: 'exclusiveMaximum', message: exclusiveMaximumValidationMessage },\n { name: 'minItems', message: minItemsValidationMessage },\n { name: 'maxItems', message: maxItemsValidationMessage },\n { name: 'uniqueItems', message: 'Should NOT have duplicate items' },\n { name: 'const', message: constValidationMessage },\n ],\n types: [\n { name: 'null', component: GioFjsNullTypeComponent, wrappers: ['form-field'] },\n { name: 'array', component: GioFjsArrayTypeComponent },\n { name: 'object', component: GioFjsObjectTypeComponent },\n ],\n }),\n FormlyMaterialModule,\n ],\n exports: [GioFormJsonSchemaComponent, FormlyModule],\n})\nexport class GioFormJsonSchemaModule {}\n","/*\n * Copyright (C) 2021 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n * Public API Surface\n */\n\nexport * from './gio-save-bar/gio-save-bar.component';\nexport * from './gio-save-bar/gio-save-bar.module';\nexport * from './gio-save-bar/gio-save-bar.harness';\n\nexport * from './gio-form-tags-input/gio-form-tags-input.component';\nexport * from './gio-form-tags-input/gio-form-tags-input.module';\nexport * from './gio-form-tags-input/gio-form-tags-input.harness';\n\nexport * from './gio-banner/gio-banner.component';\nexport * from './gio-banner/gio-banner.module';\n\nexport * from './gio-confirm-dialog/gio-confirm-dialog.component';\nexport * from './gio-confirm-dialog/gio-confirm-dialog.module';\nexport * from './gio-confirm-dialog/gio-confirm-dialog.harness';\n\nexport * from './gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component';\nexport * from './gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module';\nexport * from './gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness';\n\nexport * from './gio-icons/gio-icons.module';\n\nexport * from './gio-form-headers/gio-form-headers.component';\nexport * from './gio-form-headers/gio-form-headers.module';\nexport * from './gio-form-headers/gio-form-headers.harness';\n\nexport * from './gio-form-file-picker';\n\nexport * from './gio-menu';\nexport * from './gio-submenu';\nexport * from './gio-top-bar';\nexport * from './gio-avatar';\n\nexport * from './gio-breadcrumb';\n\nexport * from './gio-mat-config';\n\nexport * from './gio-form-json-schema/gio-form-json-schema.component';\nexport * from './gio-form-json-schema/gio-form-json-schema.module';\nexport * from './gio-form-json-schema/model/GioJsonSchema';\n","/*\n * Copyright (C) 2021 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n * Public API Surface of ui-particles-angular\n */\n\nexport * from './lib/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;MAqCa,mBAAmB;IAjBhC;QAkBS,gBAAW,GAAG,KAAK,CAAC;QAQpB,WAAM,GAAG,KAAK,CAAC;;;;;QAOf,iBAAY,GAAa,KAAK,CAAC;QAG/B,iBAAY,GAAG,KAAK,CAAC;QAKpB,kBAAa,GAAG,IAAI,CAAC;QAMtB,iBAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;QAGxC,cAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;QAGrC,0BAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;KA4CnD;IA7EC,IACW,QAAQ;QACjB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;KAC3B;IAgCD,IACW,MAAM;QACf,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAEM,cAAc;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;IAGM,mBAAmB;QACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;IAEM,eAAe;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE;YACzD,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;SACR;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;SACzD;KACF;;iHA/EU,mBAAmB;qGAAnB,mBAAmB,0dCrChC,w/CAsCA,mnCDdc;QACV,OAAO,CAAC,aAAa,EAAE;YACrB,UAAU,CAAC,QAAQ,EAAE;gBACnB,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACtD,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;aACrG,CAAC;YACF,UAAU,CAAC,QAAQ,EAAE;gBACnB,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACnD,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;aACxG,CAAC;SACH,CAAC;KACH;4FAEU,mBAAmB;kBAjB/B,SAAS;+BACE,cAAc,cAGZ;wBACV,OAAO,CAAC,aAAa,EAAE;4BACrB,UAAU,CAAC,QAAQ,EAAE;gCACnB,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gCACtD,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACrG,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACnB,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gCACnD,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;6BACxG,CAAC;yBACH,CAAC;qBACH;8BAMU,QAAQ;sBADlB,WAAW;uBAAC,uBAAuB;gBAM7B,MAAM;sBADZ,KAAK;gBAQC,YAAY;sBADlB,KAAK;gBAIC,YAAY;sBADlB,KAAK;gBAIC,IAAI;sBADV,KAAK;gBAMC,iBAAiB;sBADvB,KAAK;gBAIC,YAAY;sBADlB,MAAM;gBAIA,SAAS;sBADf,MAAM;gBAIA,qBAAqB;sBAD3B,MAAM;gBAII,MAAM;sBADhB,WAAW;uBAAC,eAAe;gBAqBrB,mBAAmB;sBADzB,YAAY;uBAAC,qBAAqB;;;AE/FrC;;;;;;;;;;;;;;;MA2Ba,gBAAgB;;8GAAhB,gBAAgB;+GAAhB,gBAAgB,iBAHZ,mBAAmB,aADxB,YAAY,EAAE,aAAa,EAAE,eAAe,aAE5C,mBAAmB;+GAElB,gBAAgB,YAJlB,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC;4FAI5C,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC;oBACvD,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;iBAC/B;;;AC1BD;;;;;;;;;;;;;;;MAkBa,iBAAkB,SAAQ,gBAAgB;IAAvD;;QAGmB,wBAAmB,GAAG,kCAAkC,CAAC;QACzD,yBAAoB,GAAG,mCAAmC,CAAC;QAElE,oBAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7D,mBAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KA4BtE;IA1BQ,MAAM,SAAS;QACpB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAChF,OAAO,YAAY,KAAK,IAAI,CAAC;KAC9B;IAEM,MAAM,WAAW;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC;KAC7B;IAEM,MAAM,qBAAqB;QAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACzC;IAEM,MAAM,oBAAoB;QAC/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/E,OAAO,YAAY,KAAK,IAAI,CAAC;KAC9B;IAEM,MAAM,UAAU;QACrB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC;KAC5B;;AAjCa,8BAAY,GAAG,cAAc;;MCqBhC,yBAAyB;IAwIpC;;IAEsC,SAAoB,EACvC,KAAiB,EACjB,EAAgB,EACzB,iBAAoC;QAHR,cAAS,GAAT,SAAS,CAAW;QACvC,UAAK,GAAL,KAAK,CAAY;QACjB,OAAE,GAAF,EAAE,CAAc;QACzB,sBAAiB,GAAjB,iBAAiB,CAAmB;QA1IvC,cAAS,GAAiC,OAAO,EAAE,CAAC,CAAC;QAErD,eAAU,GAAe,OAAO,EAAE,CAAC,CAAC;QACnC,YAAO,GAAG,KAAK,CAAC;QAGjB,cAAS,GAAG,EAAE,CAAC;QAGf,cAAS,GAAG,IAAI,CAAC;;;;;;;;;;;QAajB,sBAAiB,GAAuF,SAAS,CAAC;QAcjH,cAAS,GAAwC,IAAI,CAAC;QAatD,WAAM,GAAgB,IAAI,CAAC;;QAG5B,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAInC,OAAE,GAAG,uBAAuB,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC;QAahE,iBAAY,GAAG,EAAE,CAAC;;QAKnB,YAAO,GAAG,KAAK,CAAC;QAwBf,cAAS,GAAG,KAAK,CAAC;QAalB,cAAS,GAAG,KAAK,CAAC;;QA0EnB,gBAAW,GAAG,EAAE,CAAC;;QA5CtB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;;;YAG1B,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;SACrC;QAED,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM;YACpD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B,CAAC,CAAC;KACJ;IAjID,IACW,mBAAmB,CAAC,CAAuB;QACpD,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAGD,IACW,QAAQ,CAAC,CAAsC;QACxD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;IAID,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAW,KAAK,CAAC,KAAkB;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;;IAYD,IACW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,IAAW,WAAW,CAAC,GAAW;QAChC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;;IAUD,IAAW,KAAK;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;KAC7E;;IAGD,IACW,gBAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACpC;;IAGD,IACW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAW,QAAQ,CAAC,GAAY;QAC9B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;;IAKD,IACW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;KAC/E;IAED,IAAW,QAAQ,CAAC,GAAY;QAC9B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;;IAKD,IAAW,UAAU;QACnB,QACE,IAAI,CAAC,OAAO;;aAEX,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK;;iBAE1B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EACjF;KACH;IAiCM,SAAS;;QAEd,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;KACF;IAEM,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KAClD;;IAGM,UAAU,CAAC,KAAe;QAC/B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;;IAGM,gBAAgB,CAAC,EAA+B;QACrD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;IAGM,iBAAiB,CAAC,EAAc;QACrC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;IAMM,iBAAiB,CAAC,GAAa;QACpC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClC;;;IAIM,gBAAgB,CAAC,MAAkB,KAAU;IAE7C,oBAAoB,CAAC,KAAwB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;QAC5C,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QAE5C,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,OAAO;SACR;;;QAID,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,KAAK,CAAC,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9F,MAAM,YAAY,GAAG,CAAC,YAAqB;;YAEzC,IAAI,YAAY,EAAE;;gBAEhB,MAAM,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC;gBAE7E,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,gBAAgB,EAAE,QAAQ,CAAC,CAAC;aAC9C;SACF,CAAC;;QAGF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SAClB;QAED,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC3C;IAEM,uBAAuB,CAAC,GAAW;QACxC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAC7D;IAEM,oBAAoB,CAAC,KAAmC;QAC7D,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;KAC1D;IAEM,iBAAiB;;QAEtB,UAAU,CAAC;YACT,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;SACjF,EAAE,GAAG,CAAC,CAAC;KACT;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;YAC9D,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CACvF,SAAS,CAAC,EAAc,CAAC,EACzB,GAAG,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,EAAE,MAAM,CAAC,aAAa,IAC3D,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAChG,CAAC;aACH,CAAC,EACF,oBAAoB,EAAE,CACvB,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC;KACF;;AA/Pc,gCAAM,GAAG,CAAE,CAAA;uHADf,yBAAyB;2GAAzB,yBAAyB,yZAPzB;QACT;YACE,OAAO,EAAE,mBAAmB;YAC5B,WAAW,EAAE,yBAAyB;SACvC;KACF,gICtCH,mhDAsCA;4FDEa,yBAAyB;kBAXrC,SAAS;+BACE,qBAAqB,aAGpB;wBACT;4BACE,OAAO,EAAE,mBAAmB;4BAC5B,WAAW,2BAA2B;yBACvC;qBACF;;0BA4IE,QAAQ;;0BAAI,IAAI;kIAjIZ,SAAS;sBADf,KAAK;uBAAC,YAAY;gBAIZ,SAAS;sBADf,KAAK;gBAcC,iBAAiB;sBADvB,KAAK;gBAIK,mBAAmB;sBAD7B,KAAK;gBAQK,QAAQ;sBADlB,SAAS;uBAAC,UAAU;gBAyBd,EAAE;sBADR,WAAW;uBAAC,IAAI;gBAKN,WAAW;sBADrB,KAAK;gBAwBK,gBAAgB;sBAD1B,WAAW;uBAAC,gBAAgB;gBAOlB,QAAQ;sBADlB,KAAK;gBAcK,QAAQ;sBADlB,KAAK;gBAoFC,WAAW;sBADjB,WAAW;uBAAC,uBAAuB;;;AEnOtC;;;;;;;;;;;;;;;MAgCa,sBAAsB;;oHAAtB,sBAAsB;qHAAtB,sBAAsB,iBAHlB,yBAAyB,aAD9B,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,aAE5H,yBAAyB;qHAExB,sBAAsB,YAJxB,CAAC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,CAAC;4FAI5H,sBAAsB;kBALlC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,CAAC;oBACvI,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;iBACrC;;;AC/BD;;;;;;;;;;;;;;;MAsBa,uBAAwB,SAAQ,gBAAgB;IAA7D;;QAcY,0BAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;KAyCvE;;;;;;;;IA7CQ,OAAO,IAAI,CAAC,UAA0C,EAAE;QAC7D,OAAO,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;KAC/D;IAIM,MAAM,UAAU;QACrB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvD,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;KACjC;IAEM,MAAM,OAAO;QAClB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEvD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;QAE3C,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,OAAM,IAAI,KAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACtE;IAEM,MAAM,MAAM,CAAC,GAAW,EAAE,eAAiC,OAAO,CAAC,KAAK;QAC7E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEvD,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,YAAY,KAAK,MAAM,EAAE;YAC3B,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;SACxB;aAAM;YACL,MAAM,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;SAChD;KACF;IAEM,MAAM,SAAS,CAAC,GAAW;QAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEvD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACzB;KACF;IAEM,MAAM,yBAAyB;QACpC,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAEvF,OAAO,sBAAsB,CAAC;KAC/B;;AArDa,oCAAY,GAAG,qBAAqB;;ACvBpD;;;;;;;;;;;;;;;MAwBa,kBAAkB;IAL/B;QAOS,SAAI,GAAmB,MAAM,CAAC;KACtC;;gHAHY,kBAAkB;oGAAlB,kBAAkB,4ECxB/B,sxDA4CA;4FDpBa,kBAAkB;kBAL9B,SAAS;+BACE,YAAY;8BAMf,IAAI;sBADV,KAAK;;MAOK,sBAAsB;;oHAAtB,sBAAsB;wGAAtB,sBAAsB;4FAAtB,sBAAsB;kBAHlC,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;iBAC5B;;MAMY,wBAAwB;;sHAAxB,wBAAwB;0GAAxB,wBAAwB;4FAAxB,wBAAwB;kBAHpC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;iBAC9B;;MAQY,uBAAwB,SAAQ,kBAAkB;IAL/D;;QAMS,SAAI,GAAG,OAAyB,CAAC;KACzC;;qHAFY,uBAAuB;yGAAvB,uBAAuB,+EC5CpC,sxDA4CA;4FDAa,uBAAuB;kBALnC,SAAS;+BACE,kBAAkB;;MAajB,sBAAuB,SAAQ,kBAAkB;IAL9D;;QAMS,SAAI,GAAG,MAAwB,CAAC;KACxC;;oHAFY,sBAAsB;wGAAtB,sBAAsB,8ECrDnC,sxDA4CA;4FDSa,sBAAsB;kBALlC,SAAS;+BACE,iBAAiB;;MAahB,yBAA0B,SAAQ,kBAAkB;IALjE;;QAMS,SAAI,GAAG,SAA2B,CAAC;KAC3C;;uHAFY,yBAAyB;2GAAzB,yBAAyB,iFC9DtC,sxDA4CA;4FDkBa,yBAAyB;kBALrC,SAAS;+BACE,oBAAoB;;MAanB,yBAA0B,SAAQ,kBAAkB;IALjE;;QAMS,SAAI,GAAG,SAA2B,CAAC;KAC3C;;uHAFY,yBAAyB;2GAAzB,yBAAyB,iFCvEtC,sxDA4CA;4FD2Ba,yBAAyB;kBALrC,SAAS;+BACE,oBAAoB;;;AEnEhC;;;;;;;;;;;;;;;MAyBa,cAAc;IACzB,YAAY,eAAgC,EAAE,SAAuB;QACnE,eAAe,CAAC,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,CAAC,CAAC;KACnH;;4GAHU,cAAc;6GAAd,cAAc,YAHf,YAAY,EAAE,gBAAgB,EAAE,aAAa,aAC7C,aAAa;6GAEZ,cAAc,YAHhB,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAC9C,aAAa;4FAEZ,cAAc;kBAJ1B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC;oBACxD,OAAO,EAAE,CAAC,aAAa,CAAC;iBACzB;;;ACxBD;;;;;;;;;;;;;;;MAoDa,eAAe;;6GAAf,eAAe;8GAAf,eAAe,iBAlBxB,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,yBAAyB;QACzB,yBAAyB;QACzB,sBAAsB;QACtB,wBAAwB,aARhB,YAAY,EAAE,aAAa,EAAE,cAAc,aAWnD,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,yBAAyB;QACzB,yBAAyB;QACzB,sBAAsB;QACtB,wBAAwB;8GAGf,eAAe,YApBjB,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;4FAoB3C,eAAe;kBArB3B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;oBACtD,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,uBAAuB;wBACvB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;wBACzB,sBAAsB;wBACtB,wBAAwB;qBACzB;oBACD,OAAO,EAAE;wBACP,kBAAkB;wBAClB,uBAAuB;wBACvB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;wBACzB,sBAAsB;wBACtB,wBAAwB;qBACzB;iBACF;;;ACnDD;;;;;;;;;;;;;;;MA8Ba,yBAAyB;IAMpC,YAAmB,SAAkD,EAA2B,iBAAuC;QAApH,cAAS,GAAT,SAAS,CAAyC;QACnE,IAAI,CAAC,KAAK,GAAG,iBAAiB,EAAE,KAAK,IAAI,eAAe,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,iBAAiB,EAAE,OAAO,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,iBAAiB,EAAE,aAAa,IAAI,SAAS,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,iBAAiB,EAAE,YAAY,IAAI,QAAQ,CAAC;KACjE;;uHAXU,yBAAyB,gDAM2C,eAAe;2GANnF,yBAAyB,0DC9BtC,gzCAsCA;4FDRa,yBAAyB;kBALrC,SAAS;+BACE,oBAAoB;;0BAU0C,MAAM;2BAAC,eAAe;;;AEpChG;;;;;;;;;;;;;;;MA4Ba,sBAAsB;;oHAAtB,sBAAsB;qHAAtB,sBAAsB,iBAHlB,yBAAyB,aAD9B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,aAE1D,yBAAyB;qHAExB,sBAAsB,YAJxB,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,CAAC;4FAI1D,sBAAsB;kBALlC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,CAAC;oBACrE,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;iBACrC;;;AC3BD;;;;;;;;;;;;;;;MAkBa,uBAAwB,SAAQ,gBAAgB;IAA7D;;QAGU,kBAAa,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACxG,iBAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC;KAW/G;IATQ,MAAM,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;KACtB;IAEM,MAAM,MAAM;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;KACtB;;AAba,oCAAY,GAAG,oBAAoB;;ACnBnD;;;;;;;;;;;;;;;MAkCa,oCAAoC;IAY/C,YACS,SAA6D,EAC3C,iBAAkD;QADpE,cAAS,GAAT,SAAS,CAAoD;QAH/D,YAAO,GAAG,KAAK,CAAC;QAMrB,IAAI,CAAC,KAAK,GAAG,iBAAiB,EAAE,KAAK,IAAI,eAAe,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,iBAAiB,EAAE,OAAO,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,iBAAiB,EAAE,OAAO,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAC9C,iBAAiB,EAAE,iBAAiB,IAAI,+CAA+C,CACxF,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,iBAAiB,EAAE,eAAe,IAAI,SAAS,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,iBAAiB,EAAE,aAAa,IAAI,SAAS,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,iBAAiB,EAAE,YAAY,IAAI,QAAQ,CAAC;KACjE;IAEM,eAAe,CAAC,YAAoB;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACxE;;kIA7BU,oCAAoC,gDAcrC,eAAe;sHAdd,oCAAoC,uEClCjD,k9DAqDA;4FDnBa,oCAAoC;kBALhD,SAAS;+BACE,iCAAiC;;0BAkBxC,MAAM;2BAAC,eAAe;;AAkB3B,MAAM,uBAAuB,GAAG,CAAC,iBAAyB;IACxD,OAAO,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAC;AACjF,CAAC;;AEpED;;;;;;;;;;;;;;;MAiCa,iCAAiC;;+HAAjC,iCAAiC;gIAAjC,iCAAiC,iBAH7B,oCAAoC,aADzC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,aAE5H,oCAAoC;gIAEnC,iCAAiC,YAJnC,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,CAAC;4FAI5H,iCAAiC;kBAL7C,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,CAAC;oBACvI,YAAY,EAAE,CAAC,oCAAoC,CAAC;oBACpD,OAAO,EAAE,CAAC,oCAAoC,CAAC;iBAChD;;;AChCD;;;;;;;;;;;;;;;MAmBa,kCAAmC,SAAQ,gBAAgB;IAAxE;;QAGU,kBAAa,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACxG,iBAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC;QACtG,oBAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;KAgB5D;IAdQ,MAAM,OAAO;QAClB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;YAChC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;SACtB;KACF;IAEM,MAAM,MAAM;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;KACtB;;AAnBa,+CAAY,GAAG,iCAAiC;;ACIhE,MAAM,YAAY,GAAG;IACnB,QAAQ;IACR,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,kCAAkC;IAClC,8BAA8B;IAC9B,8BAA8B;IAC9B,6BAA6B;IAC7B,+BAA+B;IAC/B,wBAAwB;IACxB,gCAAgC;IAChC,+BAA+B;IAC/B,KAAK;IACL,OAAO;IACP,eAAe;IACf,eAAe;IACf,YAAY;IACZ,qBAAqB;IACrB,kBAAkB;IAClB,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,eAAe;IACf,cAAc;IACd,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,WAAW;IACX,MAAM;IACN,MAAM;IACN,UAAU;IACV,mBAAmB;IACnB,eAAe;IACf,qBAAqB;IACrB,YAAY;IACZ,eAAe;IACf,UAAU;IACV,MAAM;IACN,cAAc;IACd,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,OAAO;IACP,SAAS;IACT,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,IAAI;IACJ,SAAS;IACT,mBAAmB;IACnB,SAAS;IACT,YAAY;IACZ,MAAM;IACN,KAAK;IACL,SAAS;IACT,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;CACrB,CAAC;MAcW,uBAAuB;IAoBlC,YAA6B,EAAgB,EAAmB,KAAiB;QAApD,OAAE,GAAF,EAAE,CAAc;QAAmB,UAAK,GAAL,KAAK,CAAY;QAlB1E,qBAAgB,GAAG,IAAI,SAAS,CAAC;YACtC,IAAI,SAAS,CAAC;gBACZ,GAAG,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;gBACxB,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;aAC3B,CAAC;SACH,CAAC,CAAC;QAGI,aAAQ,GAAG,KAAK,CAAC;QAEhB,YAAO,GAAa,EAAE,CAAC;QAEvB,cAAS,GAAwC,OAAO,EAAE,CAAC,CAAC;QAE5D,eAAU,GAAe,OAAO,EAAE,CAAC,CAAC;QAEpC,wBAAmB,GAA2B,EAAE,CAAC;QAGvD,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,gBAAgB;SAC/B,CAAC,CAAC;KACJ;;IAGM,UAAU,CAAC,KAAsB;QACtC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;IAGM,gBAAgB,CAAC,EAAsC;QAC5D,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;IAGM,iBAAiB,CAAC,EAAc;QACrC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;;IAGM,gBAAgB,CAAC,UAAmB;QACzC,IAAI,UAAU,KAAK,IAAI,CAAC,QAAQ,EAAE;;YAEhC,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO;SACR;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,QAAQ;;QAEb,IAAI,CAAC,gBAAgB,EAAE,YAAY;aAChC,IAAI,CACH,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EACpF,GAAG,CAAC,CAAC,OAAiB;YACpB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE;gBAC9G,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF,CAAC,CACH;aACA,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;YACxD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB,CAAC,CAAC;KACJ;IAEM,eAAe;;QAEpB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;;QAG9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,WAAW;YAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,SAAS,CAAC;gBACZ,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC;gBAC9C,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC3D,CAAC,EACF;gBACE,SAAS,EAAE,KAAK;aACjB,CACF,CAAC;SACH,CAAC,CAAC;;QAGH,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,sBAAsB,CAAC,WAAmB,EAAE,MAAc;QAC/D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;SAC9C;QACD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE;YAC1C,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/F,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;SAC9C;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;KACzB;IAEO,kBAAkB,CAAC,GAAW,EAAE,WAAmB;QACzD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAC5C,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAClC,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;KAChB;IAEM,cAAc,CAAC,WAAmB;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KAC7C;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,SAAS,CAAC;YACZ,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC9D,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;SAC3B,CAAC,EACF,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;KACH;IAEO,gBAAgB;QACtB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KACxF;IAEO,OAAO,CAAC,KAAa;QAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;KAClF;;qHArJU,uBAAuB;yGAAvB,uBAAuB,wGARvB;QACT;YACE,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;YACtD,KAAK,EAAE,IAAI;SACZ;KACF,0BC5GH,glFAgEA;4FD8Ca,uBAAuB;kBAZnC,SAAS;+BACE,kBAAkB,aAGjB;wBACT;4BACE,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;4BACtD,KAAK,EAAE,IAAI;yBACZ;qBACF;8HAYM,QAAQ;sBADd,WAAW;uBAAC,gBAAgB;;AA+I/B,MAAM,qBAAqB,GAAG,CAAC,OAAiB;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACtE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;KAC3B;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;;AE7QD;;;;;;;;;;;;;;;MA0Ca,oBAAoB;;kHAApB,oBAAoB;mHAApB,oBAAoB,iBAHhB,uBAAuB,aATpC,YAAY;QACZ,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,qBAAqB;QACrB,eAAe,aAGP,uBAAuB;mHAEtB,oBAAoB,YAbtB;YACP,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,mBAAmB;YACnB,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,eAAe;SAChB;4FAIU,oBAAoB;kBAdhC,QAAQ;mBAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,mBAAmB;wBACnB,cAAc;wBACd,eAAe;wBACf,qBAAqB;wBACrB,eAAe;qBAChB;oBACD,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;iBACnC;;;ACzCD;;;;;;;;;;;;;;;MAqBa,qBAAsB,SAAQ,gBAAgB;IAA3D;;QAcU,yBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC;QAEpF,yBAAoB,GAAG,CAAC,QAAgB,KAC9C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,qBAAqB,QAAQ,IAAI,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAEpH,qCAAgC,GAAG,CAAC,QAAgB,KAC1D,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,uBAAuB,QAAQ,IAAI,EAAE,QAAQ,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;QAEjI,2BAAsB,GAAG,CAAC,QAAgB,KAChD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,uBAAuB,QAAQ,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;QAExH,6BAAwB,GAAG,CAAC,QAAgB,KAClD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,uBAAuB,QAAQ,IAAI,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;KAyCxI;;;;;;;;IAzDQ,OAAO,IAAI,CAAC,UAA8B,EAAE;QACjD,OAAO,IAAI,gBAAgB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;KAC7D;IAgBM,MAAM,aAAa;QAQxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE/C,OAAO,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,MAAM;YAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE;YACrD,eAAe,EAAE,MAAM,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE;YACxE,UAAU,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE;YACzD,YAAY,EAAE,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE;SAC9D,CAAC,CAAC,CACJ,CAAC;KACH;IAEM,MAAM,gBAAgB;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE/C,OAAO;YACL,QAAQ,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YAC5D,UAAU,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;SACjE,CAAC;KACH;IAEM,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAkC;QACnE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE/D,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAClC;IAEM,MAAM,UAAU;QACrB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;KACjD;;AAjEa,kCAAY,GAAG,kBAAkB;;ACtBjD;;;;;;;;;;;;;;;MAuBa,mCAAmC;;iIAAnC,mCAAmC;qHAAnC,mCAAmC,uECvBhD,q8BAwBA;4FDDa,mCAAmC;kBAN/C,SAAS;+BACE,iCAAiC,mBAG1B,uBAAuB,CAAC,MAAM;;;AErBjD;;;;;;;;;;;;;;;MAsBa,+BAA+B;;6HAA/B,+BAA+B;iHAA/B,+BAA+B,kECtB5C,mxBAmBA;4FDGa,+BAA+B;kBAL3C,SAAS;+BACE,4BAA4B,mBAErB,uBAAuB,CAAC,MAAM;;;AEpBjD;;;;;;;;;;;;;;;MAuBa,+BAA+B;;6HAA/B,+BAA+B;iHAA/B,+BAA+B,kECvB5C,6tBAkBA;4FDKa,+BAA+B;kBAN3C,SAAS;+BACE,4BAA4B,mBAGrB,uBAAuB,CAAC,MAAM;;;AErBjD;;;;;;;;;;;;;;;MAgBa,OAAO;IAClB,YAA4B,IAAY,EAAkB,OAAe,EAAkB,IAAW;QAA1E,SAAI,GAAJ,IAAI,CAAQ;QAAkB,YAAO,GAAP,OAAO,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAO;KAAI;;;ACjB5G;;;;;;;;;;;;;;;MAqCa,0BAA0B;IAsBrC,YAAoB,iBAAoC,EAA6B,SAAqB;QAAtF,sBAAiB,GAAjB,iBAAiB,CAAmB;QAA6B,cAAS,GAAT,SAAS,CAAY;QApBnG,aAAQ,GAAG,KAAK,CAAC;QAGjB,WAAM,GAAG,GAAG,CAAC;QAOb,eAAU,GAAgB,EAAE,CAAC;QAC7B,aAAQ,GAAa,QAAQ,CAAC,OAAO,CAAC;QACtC,cAAS,GAAG,KAAK,CAAC;QAClB,eAAU,GAAG,KAAK,CAAC;;QAGlB,qBAAgB,GAA0C,SAAQ,CAAC;;QAEnE,sBAAiB,GAAG,SAAQ,CAAC;QAGnC,IAAI,SAAS,EAAE;;;YAGb,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;SAChC;KACF;IArBD,IACW,QAAQ,CAAC,QAAiB;QACnC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACjC;IAoBM,QAAQ;QACb,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;;YAElD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;SACjG;KACF;IAED,IAAW,UAAU;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,KAAK,CAAC;KAClE;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC3E;;IAGM,MAAM,UAAU,CAAC,MAAiB;QACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,MAAM,CAAC,GAAG,CAAC,OAAM,KAAK,MAAK;YACzB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC;SAC/B,CAAC,CAAC,CACJ,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;;IAGM,gBAAgB,CAAC,EAAwB;QAC9C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;;IAGM,iBAAiB,CAAC,EAAc;QACrC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC7B;;IAGM,gBAAgB,CAAC,UAAmB;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;IAEM,YAAY,CAAC,KAAe;QACjC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACrC;IAEM,aAAa,CAAC,KAAe;QAClC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACrC;IAEM,YAAY,CAAC,IAAe;QACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEM,SAAS;QACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEM,WAAW,CAAC,MAAiB;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,MAA4B,CAAC;QAC/C,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;IAEM,UAAU,CAAC,MAAiB;QACjC,MAAM,EAAE,GAAG,MAAM,CAAC,MAA4B,CAAC;QAE/C,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;IAEO,uBAAuB,CAAC,KAAe;QAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,cAAc;YAC1B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SACzC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,aAAa;QACnB,IAAI,CAAC,gBAAgB,CACnB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,IAC3B,SAAS,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CACrG,CACF,CAAC;KACH;;wHA/IU,0BAA0B;4GAA1B,0BAA0B,sICrCvC,+iGA6EA;4FDxCa,0BAA0B;kBANtC,SAAS;+BACE,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM;;0BAwBY,IAAI;;0BAAI,QAAQ;4CApBpE,QAAQ;sBADd,KAAK;gBAIC,MAAM;sBADZ,KAAK;gBAIK,QAAQ;sBADlB,KAAK;;AA2IR,MAAM,QAAQ,GAAG,CAAC,GAAW;IAC3B,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;QACd,OAAO,IAAI,OAAO,CAAC,OAAO;YACxB,GAAG,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;SAClC,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/B;AACH,CAAC;;AElMD;;;;;;;;;;;;;;;MA4Ca,uBAAuB;;qHAAvB,uBAAuB;sHAAvB,uBAAuB,iBAbhC,0BAA0B;QAC1B,mCAAmC;QACnC,+BAA+B;QAC/B,+BAA+B,aAQvB,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,aAL/G,0BAA0B;QAC1B,mCAAmC;QACnC,+BAA+B;QAC/B,+BAA+B;sHAItB,uBAAuB,YAFzB,CAAC,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC;4FAEvG,uBAAuB;kBAfnC,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,mCAAmC;wBACnC,+BAA+B;wBAC/B,+BAA+B;qBAChC;oBACD,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,mCAAmC;wBACnC,+BAA+B;wBAC/B,+BAA+B;qBAChC;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC;iBACnH;;;AC3CD;;;;;;;;;;;;;;;MAsBa,6BAA8B,SAAQ,gBAAgB;IAAnE;;QAwCY,aAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;QACvD,mBAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,yCAAyC,CAAC,CAAC;QACpF,eAAU,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACnD,wBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;KAoDtE;IA5FQ,OAAO,IAAI,CAAC,OAAwC;QACzD,OAAO,IAAI,gBAAgB,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC,SAAS,CAC3E,iBAAiB,EACjB,OAAO,CAAC,eAAe,EACvB,CAAC,OAAO,EAAE,IAAI,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,CACtF,CAAC;KACH;;;;;;;IAQM,OAAO,gBAAgB,CAAC,aAAuB,EAAE;QACtD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE;YACvC,GAAG,EAAE;gBACH,GAAG,EAAE;oBACH,OAAO,IAAI,CAAC,IAAI,CAAC;iBAClB;gBACD,GAAG,EAAE,UAAU,GAAG;oBAChB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;iBACjB;aACF;YACD,MAAM,EAAE;gBACN,GAAG,EAAE;oBACH,OAAO,IAAI,CAAC,OAAO,CAAC;iBACrB;gBACD,GAAG,EAAE,UAAU,EAAE;oBACf,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;oBAElB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjE;aACF;SACF,CAAC,CAAC;KACJ;IAOO,MAAM,kBAAkB;QAC9B,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO,sBAAsB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;KAC/D;IAEM,MAAM,aAAa;QACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;KACxC;IAEM,MAAM,WAAW;QACtB,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;KACvC;IAEM,MAAM,kBAAkB;QAC7B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;KAC/D;IAEM,MAAM,WAAW;QACtB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,EAAE,CAAC;QACjF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,EAAE,CAAC;QAE/E,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxE,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;SACvD,CAAC,CAAC;KACJ;IAEM,MAAM,kBAAkB;QAC7B,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,iCAAiC,CAAC,EAAE,MAAM,IAAI,CAAC;KACtF;IAEM,MAAM,UAAU;QACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;KAC7C;IAEM,MAAM,UAAU,CAAC,SAAS,GAAG,CAAC;QACnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,EAAE,CAAC;QAElF,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;KACzC;IAEM,MAAM,SAAS,CAAC,KAAa;QAClC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;;QAGnE,MAAM,kBAAkB,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAS,CAAC,CAAC;;QAGnF,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;KACvD;;AA7Fa,0CAAY,GAAG,sBAAsB;;ACvBrD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MA2Ba,cAAc;IAD3B;QAEU,iBAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACnD,kBAAa,GAAG,IAAI,eAAe,CAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,WAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAC1C,sBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/D,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAC7D,QAAQ,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CACnE,CAAC;KASH;IAPQ,OAAO,CAAC,OAAgB;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjC;IAEM,OAAO,CAAC,cAA8B;QAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACzC;;4GAfU,cAAc;gHAAd,cAAc,cADD,MAAM;4FACnB,cAAc;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC1BlC;;;;;;;;;;;;;;;MA0Ba,oBAAoB;IAO/B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAN3C,SAAI,GAAG,EAAE,CAAC;QACV,WAAM,GAAG,KAAK,CAAC;QACf,aAAQ,GAAG,KAAK,CAAC;QAEzB,iBAAY,GAAG,IAAI,OAAO,EAAE,CAAC;KAE0B;IAExD,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAEM,YAAY;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SAC9C;KACF;IAEM,YAAY,CAAC,MAAkB;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,CAAC,MAA0B,CAAC;YACnD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC1G;KACF;IAGM,OAAO,CAAC,MAAkB;QAC/B,EAAE,CAAC,IAAI,CAAC;aACL,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,KAAK,CAAC,CAAC,CAAC,EACR,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CACrC;aACA,SAAS,EAAE,CAAC;KAChB;IAGM,gBAAgB,CAAC,MAAqB;QAC3C,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC;aACxC,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAC9B,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAqB,CAAC,CAAC,EACjD,GAAG,CAAC,QAAQ;YACV,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACvH;iBAAM;gBACL,QAAQ,CAAC,KAAK,EAAE,CAAC;aAClB;SACF,CAAC,CACH;aACA,SAAS,EAAE,CAAC;KAChB;;kHAvDU,oBAAoB;sGAApB,oBAAoB,mNC1BjC,0iCA4BA;4FDFa,oBAAoB;kBALhC,SAAS;+BACE,eAAe;kGAKT,IAAI;sBAAnB,KAAK;gBACU,MAAM;sBAArB,KAAK;gBACU,QAAQ;sBAAvB,KAAK;gBAyBC,OAAO;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAY1B,gBAAgB;sBADtB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEhErC;;;;;;;;;;;;;;;MAsBa,sBAAsB;;oHAAtB,sBAAsB;wGAAtB,sBAAsB,uDCtBnC,+xBAsBA;4FDAa,sBAAsB;kBALlC,SAAS;+BACE,iBAAiB;;;AElB7B;;;;;;;;;;;;;;;MAyBa,gBAAgB;IAG3B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAF3C,YAAO,GAAG,KAAK,CAAC;KAE+B;IAExD,QAAQ;QACb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3C;IAEM,UAAU;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3C;IAEM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,OAAO,GAAG,aAAa,GAAG,cAAc,CAAC;KACtD;IAEM,YAAY;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SAC9C;KACF;;8GAtBU,gBAAgB;kGAAhB,gBAAgB,gFCzB7B,2sCAiCA;4FDRa,gBAAgB;kBAN5B,SAAS;+BACE,UAAU,iBAGL,iBAAiB,CAAC,IAAI;kGAGrB,OAAO;sBAAtB,KAAK;;;AE1BR;;;;;;;;;;;;;;;MAsBa,oBAAoB;;kHAApB,oBAAoB;sGAApB,oBAAoB,qDCtBjC,quBAoBA;4FDEa,oBAAoB;kBALhC,SAAS;+BACE,eAAe;;;AElB3B;;;;;;;;;;;;;;;MA4Ba,wBAAwB;IALrC;QAOS,kBAAa,GAAG,EAAE,CAAC;QAGnB,kBAAa,GAAmB,EAAE,CAAC;QAGnC,sBAAiB,GAAG,EAAE,CAAC;QAGvB,aAAQ,GAAG,CAAC,CAAC;QAGb,iBAAY,GAAyB,IAAI,YAAY,EAAU,CAAC;KASxE;IAPQ,iBAAiB,CAAC,MAAuB;QAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;KACvC;;sHAtBU,wBAAwB;0GAAxB,wBAAwB,8OC5BrC,woCA2BA;4FDCa,wBAAwB;kBALpC,SAAS;+BACE,mBAAmB;8BAMtB,aAAa;sBADnB,KAAK;gBAIC,aAAa;sBADnB,KAAK;gBAIC,iBAAiB;sBADvB,KAAK;gBAIC,QAAQ;sBADd,KAAK;gBAIC,YAAY;sBADlB,MAAM;;;AEzCT;;;;;;;;;;;;;;;MAsBa,sBAAsB;;oHAAtB,sBAAsB;wGAAtB,sBAAsB,uDCtBnC,uuBAoBA;4FDEa,sBAAsB;kBALlC,SAAS;+BACE,iBAAiB;;;AElB7B;;;;;;;;;;;;;;;MAgDa,aAAa;;2GAAb,aAAa;4GAAb,aAAa,iBAjBtB,gBAAgB;QAChB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,sBAAsB;QACtB,wBAAwB,aAUhB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,aAPpE,gBAAgB;QAChB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,sBAAsB;QACtB,wBAAwB;4GAIf,aAAa,YAFf,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC;4FAE5D,aAAa;kBAnBzB,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,gBAAgB;wBAChB,oBAAoB;wBACpB,sBAAsB;wBACtB,oBAAoB;wBACpB,sBAAsB;wBACtB,wBAAwB;qBACzB;oBACD,OAAO,EAAE;wBACP,gBAAgB;wBAChB,oBAAoB;wBACpB,sBAAsB;wBACtB,oBAAoB;wBACpB,sBAAsB;wBACtB,wBAAwB;qBACzB;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC;iBACxE;;;AC/CD;;;;;;;;;;;;;;;MAmBa,sBAAuB,SAAQ,gBAAgB;IAA5D;;QAGU,cAAS,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;KAsBvD;IApBQ,MAAM,gBAAgB;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1C,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACnD;IAEM,MAAM,cAAc;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;KAC9B;IAEM,MAAM,mBAAmB,CAAC,KAAa;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;KAC/B;;AAvBa,mCAAY,GAAG,mBAAmB;;ACpBlD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MAwBa,wBAAwB;;sHAAxB,wBAAwB;0GAAxB,wBAAwB;4FAAxB,wBAAwB;kBAHpC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;iBAC9B;;MAQY,mBAAmB;IAS9B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QARpD,YAAO,GAAG,KAAK,CAAC;QAChB,WAAM,GAAG,KAAK,CAAC;QACf,mBAAc,GAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChD,UAAK,GAAG,KAAK,CAAC;QAGd,iBAAY,GAAG,IAAI,OAAO,EAAE,CAAC;KAE0B;IAExD,eAAe;QACpB,IAAI,CAAC,cAAc,CAAC,MAAM;aACvB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,EAC1B,GAAG,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,EACtD,GAAG,CAAC,cAAc;YAChB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACrC,IAAI,cAAc,CAAC,IAAI,EAAE;gBACvB,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;gBACrD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC;aAC9E;SACF,CAAC,EACF,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EAChD,KAAK,CAAC,GAAG,CAAC,EACV,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAc,kBAAkB,CAAC,CAAC,CAAC,EACpG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAC/C,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAC7C;aACA,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,MAAM;aACvB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAC3B,GAAG,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;SACxD,CAAC,CACH;aACA,SAAS,EAAE,CAAC;KAChB;IAEM,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAEM,YAAY;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;IAEM,YAAY;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;KAC9C;IAGM,gBAAgB,CAAC,KAAoB;QAC1C,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC;aACvC,IAAI,CACH,MAAM,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,EAC5C,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EACvD,KAAK,CAAC,GAAG,CAAC,EACV,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAC/C;aACA,SAAS,EAAE,CAAC;KAChB;;iHA7EU,mBAAmB;qGAAnB,mBAAmB,6NC/BhC,qmCA+BA;4FDAa,mBAAmB;kBAL/B,SAAS;+BACE,aAAa;kGAUf,UAAU;sBADjB,SAAS;uBAAC,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBA+DnC,gBAAgB;sBADtB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AElGrC;;;;;;;;;;;;;;;MAsBa,wBAAwB;IALrC;QAMkB,UAAK,GAAG,EAAE,CAAC;KAC5B;;sHAFY,wBAAwB;0GAAxB,wBAAwB,qFCtBrC,syBAqBA;4FDCa,wBAAwB;kBALpC,SAAS;+BACE,mBAAmB;8BAKb,KAAK;sBAApB,KAAK;;;AEvBR;;;;;;;;;;;;;;;MAsBa,uBAAuB;IALpC;QAMkB,WAAM,GAAG,KAAK,CAAC;KAWhC;IALQ,gBAAgB,CAAC,KAAoB;QAC1C,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5C;KACF;;qHAXU,uBAAuB;yGAAvB,uBAAuB,wQCtBpC,u0BAoBA;4FDEa,uBAAuB;kBALnC,SAAS;+BACE,kBAAkB;8BAKZ,MAAM;sBAArB,KAAK;gBAGE,cAAc;sBADrB,SAAS;uBAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAIvC,gBAAgB;sBADtB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE5BrC;;;;;;;;;;;;;;;MA8Ba,gBAAgB;;8GAAhB,gBAAgB;+GAAhB,gBAAgB,iBAJZ,mBAAmB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,aAErG,YAAY,EAAE,aAAa,EAAE,cAAc,aAD3C,mBAAmB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB;+GAG/F,gBAAgB,YAFlB,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;4FAE3C,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,CAAC;oBAChH,OAAO,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,CAAC;oBAC3G,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;iBACvD;;;AC7BD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MAwBa,kBAAkB;IAL/B;QAMkB,SAAI,GAAmB,IAAI,CAAC;QAE5B,gBAAW,GAAG,EAAE,CAAC;KAClC;;gHAJY,kBAAkB;oGAAlB,kBAAkB,yGCxB/B,utBAoBA;4FDIa,kBAAkB;kBAL9B,SAAS;+BACE,aAAa;8BAKP,IAAI;sBAAnB,KAAK;gBAEU,WAAW;sBAA1B,KAAK;;;AE3BR;;;;;;;;;;;;;;;MAwBa,yBAAyB;IALtC;QAOS,SAAI,GAA0B,IAAI,CAAC;QAEnC,gBAAW,GAAG,mBAAmB,CAAC;KAC1C;;uHALY,yBAAyB;2GAAzB,yBAAyB,iHCxBtC,kzBAqBA;4FDGa,yBAAyB;kBALrC,SAAS;+BACE,qBAAqB;8BAMxB,IAAI;sBADV,KAAK;gBAGC,WAAW;sBADjB,KAAK;;;AE3BR;;;;;;;;;;;;;;;MA6Ba,eAAe;;6GAAf,eAAe;8GAAf,eAAe,iBAJX,kBAAkB,EAAE,yBAAyB,aAElD,YAAY,EAAE,aAAa,EAAE,cAAc,aAD3C,kBAAkB,EAAE,yBAAyB;8GAG5C,eAAe,YAFjB,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;4FAE3C,eAAe;kBAL3B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;oBAC7D,OAAO,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;oBACxD,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;iBACvD;;;AC5BD;;;;;;;;;;;;;;;MAsBa,sBAAsB;;oHAAtB,sBAAsB;wGAAtB,sBAAsB,wDCtBnC,wuBAoBA;4FDEa,sBAAsB;kBALlC,SAAS;+BACE,kBAAkB;;;AElB9B;;;;;;;;;;;;;;;MAyBa,mBAAmB;;iHAAnB,mBAAmB;kHAAnB,mBAAmB,iBAJf,sBAAsB,aAE3B,YAAY,aADZ,sBAAsB;kHAGrB,mBAAmB,YAFrB,CAAC,YAAY,CAAC;4FAEZ,mBAAmB;kBAL/B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,YAAY,CAAC;iBACxB;;;ACxBD;;;;;;;;;;;;;;;MAsBa,sBAAsB;IALnC;QAMkB,QAAG,GAAG,EAAE,CAAC;QACT,SAAI,GAAG,EAAE,CAAC;KAC3B;;oHAHY,sBAAsB;wGAAtB,sBAAsB,8FCtBnC,g4BAuBA;4FDDa,sBAAsB;kBALlC,SAAS;+BACE,kBAAkB;8BAKZ,GAAG;sBAAlB,KAAK;gBACU,IAAI;sBAAnB,KAAK;;;AExBR;;;;;;;;;;;;;;;MA4Ba,mBAAmB;;iHAAnB,mBAAmB;kHAAnB,mBAAmB,iBAJf,sBAAsB,aAE3B,YAAY,EAAE,aAAa,EAAE,cAAc,aAD3C,sBAAsB;kHAGrB,mBAAmB,YAFrB,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;4FAE3C,mBAAmB;kBAL/B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;iBACvD;;;AC3BD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MAuBa,kBAAkB;IAqB7B,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;QApB/B,WAAM,GAAkB,IAAI,CAAC;QAS7B,SAAI,GAAG,EAAE,CAAC;QAIV,kBAAa,GAAG,KAAK,CAAC;QAIS,UAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACjB,WAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QAGxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,CAAC;KACnI;IAlBD,IACW,GAAG,CAAC,GAAkB;QAC/B,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC;KAC3B;IAiBM,WAAW;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;KAChD;IAEM,eAAe;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACvB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1H;KACF;IAEM,UAAU;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;gHAzCU,kBAAkB;oGAAlB,kBAAkB,iXCvB/B,y3BAoBA;4FDGa,kBAAkB;kBAL9B,SAAS;+BACE,YAAY;iGAUX,GAAG;sBADb,KAAK;gBAKC,IAAI;sBADV,KAAK;gBAGC,IAAI;sBADV,KAAK;gBAGC,aAAa;sBADnB,KAAK;gBAG+B,qBAAqB;sBAAzD,SAAS;uBAAC,iBAAiB;gBAEU,KAAK;sBAA1C,WAAW;uBAAC,gBAAgB;gBACU,MAAM;sBAA5C,WAAW;uBAAC,iBAAiB;;;AE1ChC;;;;;;;;;;;;;;;MAyBa,eAAe;;6GAAf,eAAe;8GAAf,eAAe,iBAHX,kBAAkB,aADvB,YAAY,aAEZ,kBAAkB;8GAEjB,eAAe,YAJjB,CAAC,YAAY,CAAC;4FAIZ,eAAe;kBAL3B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B;;;ACxBD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MAoBa,0BAA0B;IACrC,YAAmB,WAAiC;QAAjC,gBAAW,GAAX,WAAW,CAAsB;KAAI;;wHAD7C,0BAA0B;4GAA1B,0BAA0B;4FAA1B,0BAA0B;kBAHtC,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;iBAChC;;;ACnBD;;;;;;;;;;;;;;;MAwBa,sBAAsB;;oHAAtB,sBAAsB;wGAAtB,sBAAsB,qFAChB,0BAA0B,6BCzB7C,g9BAuBA;4FDCa,sBAAsB;kBALlC,SAAS;+BACE,gBAAgB;8BAMnB,cAAc;sBADpB,eAAe;uBAAC,0BAA0B;;;AEzB7C;;;;;;;;;;;;;;;MA4Ba,mBAAmB;;iHAAnB,mBAAmB;kHAAnB,mBAAmB,iBAHf,sBAAsB,EAAE,0BAA0B,aADvD,YAAY,EAAE,cAAc,aAE5B,sBAAsB,EAAE,0BAA0B;kHAEjD,mBAAmB,YAJrB,CAAC,YAAY,EAAE,cAAc,CAAC;4FAI5B,mBAAmB;kBAL/B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBACvC,YAAY,EAAE,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;oBAClE,OAAO,EAAE,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;iBAC9D;;;AC3BD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MAqBa,kBAAkB;;gHAAlB,kBAAkB;iHAAlB,kBAAkB;iHAAlB,kBAAkB,aAFlB,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC;4FAElF,kBAAkB;kBAH9B,QAAQ;mBAAC;oBACR,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC;iBAC9F;;;ACpBD;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;MA2Ba,0BAA0B;IAwBrC,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAhBxD,cAAS,GAAc,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QAGzC,YAAO,GAAsB,EAAE,CAAC;QAEhC,UAAK,GAAG,EAAE,CAAC;QASX,WAAM,GAAwB,EAAE,CAAC;KAE2B;IAvBnE,IACW,UAAU,CAAC,UAAyB;QAC7C,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;SACtD;KACF;IASD,IACW,YAAY,CAAC,YAAoB;QAC1C,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;SACtC;KACF;IAMO,mBAAmB,CAAC,UAAyB;QACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;KACxD;;wHA5BU,0BAA0B;4GAA1B,0BAA0B,4KAF3B,sGAAsG;4FAErG,0BAA0B;kBAJtC,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE,sGAAsG;iBACjH;yGAGY,UAAU;sBADpB,KAAK;gBAOC,SAAS;sBADf,KAAK;gBAIC,OAAO;sBADb,KAAK;gBAMK,YAAY;sBADtB,KAAK;;;AC1CR;;;;;;;;;;;;;;;MAsBa,uBAAwB,SAAQ,SAAS;;qHAAzC,uBAAuB;yGAAvB,uBAAuB,kFAFxB,EAAE;4FAED,uBAAuB;kBAJnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,EAAE;iBACb;;;ACrBD;;;;;;;;;;;;;;;MA+Ba,yBAA0B,SAAQ,SAAS;IAbxD;;QAcS,mBAAc,GAAG;YACtB,YAAY,EAAE,EAAE;SACjB,CAAC;KACH;;uHAJY,yBAAyB;2GAAzB,yBAAyB,kFAX1B;;;;;;;;;GAST;4FAEU,yBAAyB;kBAbrC,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE;;;;;;;;;GAST;iBACF;;;AC9BD;;;;;;;;;;;;;;;MA0Ca,wBAAyB,SAAQ,cAAc;;sHAA/C,wBAAwB;0GAAxB,wBAAwB,iFAtBzB;;;;;;;;;;;;;;;;;;;;GAoBT;4FAEU,wBAAwB;kBAxBpC,SAAS;mBAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;GAoBT;iBACF;;;SCxBe,yBAAyB,CAAC,KAAc,EAAE,KAAwB;IAChF,OAAO,8BAA8B,KAAK,CAAC,KAAK,EAAE,QAAQ,QAAQ,CAAC;AACrE,CAAC;SAEe,yBAAyB,CAAC,KAAc,EAAE,KAAwB;IAChF,OAAO,6BAA6B,KAAK,CAAC,KAAK,EAAE,QAAQ,QAAQ,CAAC;AACpE,CAAC;SAEe,0BAA0B,CAAC,KAAc,EAAE,KAAwB;IACjF,OAAO,8BAA8B,KAAK,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC;AAC3E,CAAC;SAEe,0BAA0B,CAAC,KAAc,EAAE,KAAwB;IACjF,OAAO,6BAA6B,KAAK,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC;AAC1E,CAAC;SAEe,oBAAoB,CAAC,KAAc,EAAE,KAAwB;IAC3E,OAAO,gBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5C,CAAC;SAEe,oBAAoB,CAAC,KAAc,EAAE,KAAwB;IAC3E,OAAO,gBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5C,CAAC;SAEe,2BAA2B,CAAC,KAAc,EAAE,KAAwB;IAClF,OAAO,yBAAyB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC;SAEe,iCAAiC,CAAC,KAAc,EAAE,KAAwB;IACxF,OAAO,eAAe,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;SAEe,iCAAiC,CAAC,KAAc,EAAE,KAAwB;IACxF,OAAO,eAAe,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;SAEe,sBAAsB,CAAC,KAAc,EAAE,KAAwB;IAC7E,OAAO,gCAAgC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC;AAC/D,CAAC;SAEe,qBAAqB,CAAC,EAAE,UAAU,EAA6B;IAC7E,OAAO,cAAc,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC;;AC3DA;;;;;;;;;;;;;;;MAsEa,uBAAuB;;qHAAvB,uBAAuB;sHAAvB,uBAAuB,iBA9BnB,0BAA0B,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,wBAAwB,aAErH,YAAY;QACZ,mBAAmB,qBAuBnB,oBAAoB,aAEZ,0BAA0B,EAAE,YAAY;sHAEvC,uBAAuB,YA7BzB;YACP,YAAY;YACZ,mBAAmB;YACnB,YAAY,CAAC,OAAO,CAAC;gBACnB,kBAAkB,EAAE;oBAClB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,wBAAwB,EAAE;oBACvD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;oBAChD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBAC1D,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE;oBAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE;oBAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,2BAA2B,EAAE;oBAC5D,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAiC,EAAE;oBACxE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAiC,EAAE;oBACxE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE;oBACxD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE;oBACxD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE;oBACnE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE;iBACnD;gBACD,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;oBAC9E,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE;oBACtD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE;iBACzD;aACF,CAAC;YACF,oBAAoB;SACrB,EACqC,YAAY;4FAEvC,uBAAuB;kBA/BnC,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,0BAA0B,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,wBAAwB,CAAC;oBACxH,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY,CAAC,OAAO,CAAC;4BACnB,kBAAkB,EAAE;gCAClB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,wBAAwB,EAAE;gCACvD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;gCAChD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE;gCAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE;gCAC1D,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE;gCAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE;gCAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,2BAA2B,EAAE;gCAC5D,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAiC,EAAE;gCACxE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAiC,EAAE;gCACxE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE;gCACxD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE;gCACxD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE;gCACnE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE;6BACnD;4BACD,KAAK,EAAE;gCACL,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;gCAC9E,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE;gCACtD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE;6BACzD;yBACF,CAAC;wBACF,oBAAoB;qBACrB;oBACD,OAAO,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC;iBACpD;;;ACrED;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"gravitee-ui-particles-angular.mjs","sources":["../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.component.ts","../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.component.html","../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.module.ts","../../../projects/ui-particles-angular/src/lib/gio-save-bar/gio-save-bar.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.module.ts","../../../projects/ui-particles-angular/src/lib/gio-form-tags-input/gio-form-tags-input.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-banner/gio-banner.component.ts","../../../projects/ui-particles-angular/src/lib/gio-banner/gio-banner.component.html","../../../projects/ui-particles-angular/src/lib/gio-icons/gio-icons.module.ts","../../../projects/ui-particles-angular/src/lib/gio-banner/gio-banner.module.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.component.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.component.html","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.module.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-dialog/gio-confirm-dialog.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.html","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module.ts","../../../projects/ui-particles-angular/src/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.module.ts","../../../projects/ui-particles-angular/src/lib/gio-form-headers/gio-form-headers.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.model.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.module.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/gio-form-file-picker.component.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-form-file-picker/index.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.service.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-item/gio-menu-item.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-item/gio-menu-item.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-footer/gio-menu-footer.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-footer/gio-menu-footer.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-list/gio-menu-list.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-list/gio-menu-list.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-selector/gio-menu-selector.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-selector/gio-menu-selector.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-header/gio-menu-header.component.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-header/gio-menu-header.component.html","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu.module.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/gio-menu-selector/gio-menu-selector.harness.ts","../../../projects/ui-particles-angular/src/lib/gio-menu/index.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu.component.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu.component.html","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-group/gio-submenu-group.component.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-group/gio-submenu-group.component.html","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.html","../../../projects/ui-particles-angular/src/lib/gio-submenu/gio-submenu.module.ts","../../../projects/ui-particles-angular/src/lib/gio-submenu/index.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar.module.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.module.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.html","../../../projects/ui-particles-angular/src/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.module.ts","../../../projects/ui-particles-angular/src/lib/gio-top-bar/index.ts","../../../projects/ui-particles-angular/src/lib/gio-avatar/gio-avatar.component.ts","../../../projects/ui-particles-angular/src/lib/gio-avatar/gio-avatar.component.html","../../../projects/ui-particles-angular/src/lib/gio-avatar/gio-avatar.module.ts","../../../projects/ui-particles-angular/src/lib/gio-avatar/index.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb-item.directive.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb.component.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb.component.html","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/gio-breadcrumb.module.ts","../../../projects/ui-particles-angular/src/lib/gio-breadcrumb/index.ts","../../../projects/ui-particles-angular/src/lib/gio-mat-config/gio-mat-config.module.ts","../../../projects/ui-particles-angular/src/lib/gio-mat-config/index.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/gio-form-json-schema.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/type-component/null-type.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/type-component/object-type.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/type-component/array-type.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/util/validation-message.util.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/wrappers/gio-form-field-wrapper.component.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/wrappers/gio-form-field-wrapper.component.html","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/wrappers/gio-banner-extension.ts","../../../projects/ui-particles-angular/src/lib/gio-form-json-schema/gio-form-json-schema.module.ts","../../../projects/ui-particles-angular/src/lib/public-api.ts","../../../projects/ui-particles-angular/src/public-api.ts","../../../projects/ui-particles-angular/src/gravitee-ui-particles-angular.ts"],"sourcesContent":["/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'gio-save-bar',\n templateUrl: './gio-save-bar.component.html',\n styleUrls: ['./gio-save-bar.component.scss'],\n animations: [\n trigger('slideUpDown', [\n transition(':enter', [\n style({ transform: 'translateY(40vh)', opacity: '0' }),\n animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateY(0)', opacity: '1' })),\n ]),\n transition(':leave', [\n style({ transform: 'translateY(0)', opacity: '1' }),\n animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateY(40vh)', opacity: '0' })),\n ]),\n ]),\n ],\n})\nexport class GioSaveBarComponent {\n public isSubmitted = false;\n\n @HostBinding('class.save-bar-sticky')\n public get isSticky(): boolean {\n return !this.creationMode;\n }\n\n @Input()\n public opened = false;\n\n /**\n * When true, the submit button have invalidate display\n * And on submit clicked the output event is emit on submitInvalidState (and not on submit)\n */\n @Input()\n public invalidState?: boolean = false;\n\n @Input()\n public creationMode = false;\n\n @Input()\n public form?: FormGroup;\n\n private hasSubmitLock = true;\n\n @Input()\n public formInitialValues?: unknown;\n\n @Output()\n public resetClicked = new EventEmitter<void>();\n\n @Output()\n public submitted = new EventEmitter<void>();\n\n @Output()\n public submittedInvalidState = new EventEmitter();\n\n @HostBinding('class.is-open')\n public get isOpen(): boolean {\n if (this.creationMode) {\n return true;\n }\n\n if (this.form) {\n return this.form.dirty;\n }\n return this.opened;\n }\n\n public onResetClicked(): void {\n if (this.form) {\n this.form.reset(this.formInitialValues);\n this.form.markAsPristine();\n }\n this.resetClicked.emit();\n }\n\n @HostListener('disable-submit-lock')\n public onDisableSubmitLock(): void {\n this.hasSubmitLock = false;\n }\n\n public onSubmitClicked(): void {\n if ((this.form && this.form.invalid) || this.invalidState) {\n this.form?.markAllAsTouched();\n this.submittedInvalidState.emit();\n return;\n }\n\n if (this.isSubmitted) {\n return;\n }\n\n this.submitted.emit();\n if (this.hasSubmitLock) {\n this.isSubmitted = true;\n timer(2000).subscribe(() => (this.isSubmitted = false));\n }\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div *ngIf=\"isOpen\" [@slideUpDown] [@.disabled]=\"creationMode\">\n <mat-card class=\"save-bar__content\" [class.mat-elevation-z3]=\"creationMode\" [class.mat-elevation-z6]=\"!creationMode\">\n <div class=\"save-bar__content__label\">{{ creationMode ? '' : 'You have unsaved changes' }}</div>\n <div>\n <button *ngIf=\"!creationMode\" class=\"save-bar__content__reset-button\" mat-button type=\"button\" (click)=\"onResetClicked()\">\n Discard\n </button>\n <button\n class=\"save-bar__content__submit-button\"\n [class.invalid]=\"(form && form.invalid) || invalidState\"\n mat-flat-button\n color=\"primary\"\n [type]=\"form ? 'submit' : 'button'\"\n (click)=\"onSubmitClicked()\"\n >\n {{ creationMode ? 'Create' : 'Save' }}\n </button>\n </div>\n </mat-card>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { GioSaveBarComponent } from './gio-save-bar.component';\n\n@NgModule({\n imports: [CommonModule, MatCardModule, MatButtonModule],\n declarations: [GioSaveBarComponent],\n exports: [GioSaveBarComponent],\n})\nexport class GioSaveBarModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentHarness } from '@angular/cdk/testing';\n\nexport class GioSaveBarHarness extends ComponentHarness {\n public static hostSelector = 'gio-save-bar';\n\n private readonly resetButtonSelector = '.save-bar__content__reset-button';\n private readonly submitButtonSelector = '.save-bar__content__submit-button';\n\n protected getSubmitButton = this.locatorFor(this.submitButtonSelector);\n protected getResetButton = this.locatorFor(this.resetButtonSelector);\n\n public async isVisible(): Promise<boolean> {\n const submitButton = await this.locatorForOptional(this.submitButtonSelector)();\n return submitButton !== null;\n }\n\n public async clickSubmit(): Promise<void> {\n const host = await this.host();\n await host.dispatchEvent('disable-submit-lock');\n const submitButton = await this.getSubmitButton();\n return submitButton.click();\n }\n\n public async isSubmitButtonInvalid(): Promise<boolean> {\n const submitButton = await this.getSubmitButton();\n return submitButton.hasClass('invalid');\n }\n\n public async isResetButtonVisible(): Promise<boolean> {\n const submitButton = await this.locatorForOptional(this.resetButtonSelector)();\n return submitButton !== null;\n }\n\n public async clickReset(): Promise<void> {\n const resetButton = await this.getResetButton();\n return resetButton.click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, DoCheck, ElementRef, HostBinding, Input, OnDestroy, Optional, Self, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { isEmpty } from 'lodash';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\n\nexport type Tags = Array<string>;\n\n@Component({\n selector: 'gio-form-tags-input',\n templateUrl: './gio-form-tags-input.component.html',\n styleUrls: ['./gio-form-tags-input.component.scss'],\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: GioFormTagsInputComponent,\n },\n ],\n})\nexport class GioFormTagsInputComponent implements MatFormFieldControl<Tags>, ControlValueAccessor, DoCheck, OnDestroy {\n private static nextId = 0;\n\n public _onChange: (_tags: Tags | null) => void = () => ({});\n\n public _onTouched: () => void = () => ({});\n private touched = false;\n\n @Input('aria-label')\n public ariaLabel = '';\n\n @Input()\n public addOnBlur = true;\n\n /**\n * Function called each time a tag is added, it can be used to hook inside the\n * addition process to, for instance, have custom validation in the components\n * using `gio-form-tags-input`.\n *\n * Parameters are:\n * - `tag`: The value of the tag to add\n * - `validationCb`: The callback function to call when validation is done. If\n * called with `true` it will add the tag, otherwise it will just ignore it\n */\n @Input()\n public tagValidationHook: ((tag: string, validationCb: (shouldAddTag: boolean) => void) => void) | undefined = undefined;\n\n @Input()\n public set autocompleteOptions(v: string[] | undefined) {\n this._autocompleteOptions = v;\n this.initAutocomplete();\n }\n public _autocompleteOptions?: string[];\n\n @ViewChild('tagInput')\n public set tagInput(v: ElementRef<HTMLInputElement> | null) {\n this._tagInput = v;\n this.initAutocomplete();\n }\n private _tagInput: ElementRef<HTMLInputElement> | null = null;\n\n // From ControlValueAccessor interface\n public get value(): Tags | null {\n return this._value;\n }\n\n public set value(_tags: Tags | null) {\n this._value = _tags;\n this._onChange(_tags);\n this.stateChanges.next();\n }\n\n private _value: Tags | null = null;\n\n // From ControlValueAccessor interface\n public stateChanges = new Subject<void>();\n\n // From ControlValueAccessor interface\n @HostBinding('id')\n public id = `gio-form-tags-input-${GioFormTagsInputComponent.nextId++}`;\n\n // From ControlValueAccessor interface\n @Input()\n public get placeholder(): string {\n return this._placeholder;\n }\n\n public set placeholder(plh: string) {\n this._placeholder = plh;\n this.stateChanges.next();\n }\n\n private _placeholder = '';\n\n public autocompleteFilteredOptions$?: Observable<string[]>;\n\n // From ControlValueAccessor interface\n public focused = false;\n\n // From ControlValueAccessor interface\n public get empty(): boolean {\n return isEmpty(this.value) && isEmpty(this._tagInput?.nativeElement?.value);\n }\n\n // From ControlValueAccessor interface\n @HostBinding('class.floating')\n public get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n // From ControlValueAccessor interface\n @Input()\n public get required(): boolean {\n return this._required;\n }\n\n public set required(req: boolean) {\n this._required = coerceBooleanProperty(req);\n this.stateChanges.next();\n }\n\n private _required = false;\n\n // From ControlValueAccessor interface\n @Input()\n public get disabled(): boolean {\n return this._disabled || (this.ngControl && this.ngControl.disabled === true);\n }\n\n public set disabled(dis: boolean) {\n this._disabled = coerceBooleanProperty(dis);\n this.stateChanges.next();\n }\n\n private _disabled = false;\n\n // From ControlValueAccessor interface\n public get errorState(): boolean {\n return (\n this.touched &&\n // if required check if is empty\n ((this.required && this.empty) ||\n // if there is a touched control check if there is an error\n (this.ngControl && this.ngControl.touched === true && !!this.ngControl.errors))\n );\n }\n\n // From ControlValueAccessor interface\n public controlType?: string;\n\n // From ControlValueAccessor interface\n public autofilled?: boolean;\n\n // From ControlValueAccessor interface\n public userAriaDescribedBy?: string;\n\n constructor(\n // From ControlValueAccessor interface\n @Optional() @Self() public readonly ngControl: NgControl,\n private readonly elRef: ElementRef,\n private readonly fm: FocusMonitor,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n // Replace the provider from above with this.\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n fm.monitor(elRef.nativeElement, true).subscribe(origin => {\n this.focused = !!origin;\n this._onTouched();\n this.touched = true;\n this.stateChanges.next();\n });\n }\n\n public ngDoCheck(): void {\n // sync control touched with local touched\n if (this.ngControl != null && this.touched !== this.ngControl.touched) {\n this.touched = this.ngControl.touched === true;\n this.stateChanges.next();\n }\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n // From ControlValueAccessor interface\n public writeValue(value: string[]): void {\n this._value = value;\n }\n\n // From ControlValueAccessor interface\n public registerOnChange(fn: (tags: Tags | null) => void): void {\n this._onChange = fn;\n }\n\n // From ControlValueAccessor interface\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // From ControlValueAccessor interface\n @HostBinding('attr.aria-describedby')\n public describedBy = '';\n\n public setDescribedByIds(ids: string[]): void {\n this.describedBy = ids.join(' ');\n }\n\n // From ControlValueAccessor interface\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n public onContainerClick(_event: MouseEvent): void {}\n\n public addChipToFormControl(event: { value: string }): void {\n const input = this._tagInput?.nativeElement;\n const tagToAdd = (event.value ?? '').trim();\n\n if (isEmpty(tagToAdd)) {\n return;\n }\n\n // Add the tag only if shouldAddTag in validationCb return true\n // Set default callback if not defined\n const tagValidationHook = this.tagValidationHook ?? ((_, validationCb) => validationCb(true));\n\n const validationCb = (shouldAddTag: boolean) => {\n // Add new Tag in form control\n if (shouldAddTag) {\n // Delete Tag if already existing\n const formControlValue = [...(this.value ?? [])].filter(v => v !== tagToAdd);\n\n this.value = [...formControlValue, tagToAdd];\n }\n };\n\n // Reset the input value\n if (input) {\n input.value = '';\n }\n\n tagValidationHook(tagToAdd, validationCb);\n }\n\n public removeChipToFormControl(tag: string): void {\n this.value = [...(this.value ?? [])].filter(v => v !== tag);\n }\n\n public onAutocompleteSelect(event: MatAutocompleteSelectedEvent): void {\n this.addChipToFormControl({ value: event.option.value });\n }\n\n public onMatChipTokenEnd(): void {\n // Give priority to the `onAutocompleteSelect` when validating with the blur event\n setTimeout(() => {\n this.addChipToFormControl({ value: this._tagInput?.nativeElement.value ?? '' });\n }, 100);\n }\n\n private initAutocomplete(): void {\n if (this._autocompleteOptions && this._tagInput?.nativeElement) {\n this.autocompleteFilteredOptions$ = fromEvent(this._tagInput.nativeElement, 'keyup').pipe(\n startWith([] as string[]),\n map(() => {\n return (this._autocompleteOptions ?? []).filter(defaultHeader =>\n defaultHeader.toLowerCase().includes((this._tagInput?.nativeElement.value ?? '').toLowerCase()),\n );\n }),\n distinctUntilChanged(),\n );\n this.changeDetectorRef.detectChanges();\n }\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<mat-chip-list #tagChipList [attr.aria-label]=\"ariaLabel\" multiple [disabled]=\"disabled\">\n <mat-chip *ngFor=\"let tag of value\" [selectable]=\"false\" [removable]=\"!disabled\" (removed)=\"removeChipToFormControl(tag)\">\n {{ tag }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n *ngIf=\"!disabled\"\n #tagInput\n [matAutocompleteDisabled]=\"!_autocompleteOptions\"\n [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\"\n [matChipInputFor]=\"tagChipList\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"onMatChipTokenEnd()\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onAutocompleteSelect($event)\">\n <mat-option *ngFor=\"let value of autocompleteFilteredOptions$ | async\" [value]=\"value\">\n {{ value }}\n </mat-option>\n </mat-autocomplete>\n</mat-chip-list>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { GioFormTagsInputComponent } from './gio-form-tags-input.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, MatChipsModule, MatInputModule, FormsModule, MatIconModule, MatAutocompleteModule, MatSelectModule],\n declarations: [GioFormTagsInputComponent],\n exports: [GioFormTagsInputComponent],\n})\nexport class GioFormTagsInputModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate, parallel, TestKey } from '@angular/cdk/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\nimport { MatChipListHarness } from '@angular/material/chips/testing';\n\nexport type GioFormTagsInputHarnessFilters = BaseHarnessFilters;\n\nexport class GioFormTagsInputHarness extends ComponentHarness {\n public static hostSelector = 'gio-form-tags-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `GioFormColorInputHarness` that meets\n * certain criteria.\n *\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n public static with(options: GioFormTagsInputHarnessFilters = {}): HarnessPredicate<GioFormTagsInputHarness> {\n return new HarnessPredicate(GioFormTagsInputHarness, options);\n }\n\n protected getMatChipListHarness = this.locatorFor(MatChipListHarness);\n\n public async isDisabled(): Promise<boolean> {\n const matChipList = await this.getMatChipListHarness();\n return matChipList.isDisabled();\n }\n\n public async getTags(): Promise<string[]> {\n const matChipList = await this.getMatChipListHarness();\n\n const chips = await matChipList.getChips();\n\n return parallel(() => chips.map(async chip => await chip.getText()));\n }\n\n public async addTag(tag: string, separatorKey: TestKey | 'blur' = TestKey.ENTER): Promise<void> {\n const matChipList = await this.getMatChipListHarness();\n\n const chipInput = await matChipList.getInput();\n await chipInput.setValue(tag);\n if (separatorKey === 'blur') {\n await chipInput.blur();\n } else {\n await chipInput.sendSeparatorKey(separatorKey);\n }\n }\n\n public async removeTag(tag: string): Promise<void> {\n const matChipList = await this.getMatChipListHarness();\n\n const chips = await matChipList.getChips({ text: tag });\n if (chips[0]) {\n await chips[0].remove();\n }\n }\n\n public async getMatAutocompleteHarness(): Promise<MatAutocompleteHarness | null> {\n const matAutocompleteHarness = await this.locatorForOptional(MatAutocompleteHarness)();\n\n return matAutocompleteHarness;\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Directive, Input } from '@angular/core';\n\nexport type GioBannerTypes = 'error' | 'info' | 'success' | 'warning';\n\n@Component({\n selector: 'gio-banner',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerComponent {\n @Input()\n public type: GioBannerTypes = 'info';\n}\n\n@Directive({\n selector: '[gioBannerBody]',\n})\nexport class GioBannerBodyDirective {}\n\n@Directive({\n selector: '[gioBannerAction]',\n})\nexport class GioBannerActionDirective {}\n\n@Component({\n selector: 'gio-banner-error',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerErrorComponent extends GioBannerComponent {\n public type = 'error' as GioBannerTypes;\n}\n\n@Component({\n selector: 'gio-banner-info',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerInfoComponent extends GioBannerComponent {\n public type = 'info' as GioBannerTypes;\n}\n\n@Component({\n selector: 'gio-banner-success',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerSuccessComponent extends GioBannerComponent {\n public type = 'success' as GioBannerTypes;\n}\n\n@Component({\n selector: 'gio-banner-warning',\n templateUrl: './gio-banner.component.html',\n styleUrls: ['./gio-banner.component.scss'],\n})\nexport class GioBannerWarningComponent extends GioBannerComponent {\n public type = 'warning' as GioBannerTypes;\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n class=\"banner\"\n [class.info]=\"type === 'info'\"\n [class.error]=\"type === 'error'\"\n [class.warning]=\"type === 'warning'\"\n [class.success]=\"type === 'success'\"\n>\n <div class=\"banner__wrapper\">\n <div class=\"banner__wrapper__icon\" [ngSwitch]=\"type\">\n <mat-icon *ngSwitchCase=\"'info'\" svgIcon=\"gio:chat-lines\"></mat-icon>\n <mat-icon *ngSwitchCase=\"'error'\" svgIcon=\"gio:chat-bubble-error\"></mat-icon>\n <mat-icon *ngSwitchCase=\"'warning'\" svgIcon=\"gio:chat-bubble-warning\"></mat-icon>\n <mat-icon *ngSwitchCase=\"'success'\" svgIcon=\"gio:chat-bubble-check\"></mat-icon>\n </div>\n <div class=\"banner__wrapper__head\">\n <div class=\"banner__wrapper__title\">\n <ng-content></ng-content>\n </div>\n <div #body class=\"banner__wrapper__body\" [class.hide]=\"!body.children.length\">\n <ng-content select=\"[gioBannerBody]\"></ng-content>\n </div>\n </div>\n <div #action class=\"banner__wrapper__action\" [class.hide]=\"!action.children.length\">\n <ng-content select=\"[gioBannerAction]\"></ng-content>\n </div>\n </div>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule, MatIconModule],\n exports: [MatIconModule],\n})\nexport class GioIconsModule {\n constructor(matIconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {\n matIconRegistry.addSvgIconSetInNamespace('gio', sanitizer.bypassSecurityTrustResourceUrl('assets/gio-icons.svg'));\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport {\n GioBannerComponent,\n GioBannerBodyDirective,\n GioBannerErrorComponent,\n GioBannerInfoComponent,\n GioBannerSuccessComponent,\n GioBannerWarningComponent,\n GioBannerActionDirective,\n} from './gio-banner.component';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, GioIconsModule],\n declarations: [\n GioBannerComponent,\n GioBannerErrorComponent,\n GioBannerInfoComponent,\n GioBannerSuccessComponent,\n GioBannerWarningComponent,\n GioBannerBodyDirective,\n GioBannerActionDirective,\n ],\n exports: [\n GioBannerComponent,\n GioBannerErrorComponent,\n GioBannerInfoComponent,\n GioBannerSuccessComponent,\n GioBannerWarningComponent,\n GioBannerBodyDirective,\n GioBannerActionDirective,\n ],\n})\nexport class GioBannerModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport type GioConfirmDialogData = {\n title?: string;\n content?: string;\n confirmButton?: string;\n cancelButton?: string;\n};\n\n@Component({\n selector: 'gio-confirm-dialog',\n templateUrl: './gio-confirm-dialog.component.html',\n styleUrls: ['./gio-confirm-dialog.component.scss'],\n})\nexport class GioConfirmDialogComponent {\n public title: string;\n public content?: string;\n public confirmButton: string;\n public cancelButton: string;\n\n constructor(public dialogRef: MatDialogRef<GioConfirmDialogComponent>, @Inject(MAT_DIALOG_DATA) confirmDialogData: GioConfirmDialogData) {\n this.title = confirmDialogData?.title ?? 'Are you sure?';\n this.content = confirmDialogData?.content;\n this.confirmButton = confirmDialogData?.confirmButton ?? 'Confirm';\n this.cancelButton = confirmDialogData?.cancelButton ?? 'Cancel';\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"confirm-dialog__title\">{{ title }}</h2>\n\n<mat-dialog-content *ngIf=\"content\" class=\"confirm-dialog__content\">\n <p [innerHTML]=\"content\"></p>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\" class=\"confirm-dialog__actions\">\n <button class=\"confirm-dialog__cancel-button\" mat-flat-button [mat-dialog-close]=\"false\">\n {{ cancelButton }}\n </button>\n <button\n class=\"confirm-dialog__confirm-button\"\n color=\"warn\"\n mat-raised-button\n [mat-dialog-close]=\"true\"\n cdkFocusInitial\n data-testid=\"confirm-dialog\"\n >\n {{ confirmButton }}\n </button>\n</mat-dialog-actions>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { GioConfirmDialogComponent } from './gio-confirm-dialog.component';\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatDialogModule, A11yModule],\n declarations: [GioConfirmDialogComponent],\n exports: [GioConfirmDialogComponent],\n})\nexport class GioConfirmDialogModule {}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\n\nexport class GioConfirmDialogHarness extends ComponentHarness {\n public static hostSelector = 'gio-confirm-dialog';\n\n private getConfirmBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__confirm-button' }));\n private getCancelBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__cancel-button' }));\n\n public async confirm(): Promise<void> {\n const button = await this.getConfirmBtn();\n await button.click();\n }\n\n public async cancel(): Promise<void> {\n const button = await this.getCancelBtn();\n await button.click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { toLower } from 'lodash';\n\nexport type GioConfirmAndValidateDialogData = {\n title?: string;\n warning?: string;\n content?: string;\n validationMessage?: string;\n validationValue?: string;\n confirmButton?: string;\n cancelButton?: string;\n};\n\n@Component({\n selector: 'gio-confirm-and-validate-dialog',\n templateUrl: './gio-confirm-and-validate-dialog.component.html',\n styleUrls: ['./gio-confirm-and-validate-dialog.component.scss'],\n})\nexport class GioConfirmAndValidateDialogComponent {\n public title: string;\n public warning?: string;\n public content?: string;\n public validationMessage?: string;\n public validationValue: string;\n public confirmButton: string;\n public cancelButton: string;\n\n public confirmValue?: string;\n public isValid = false;\n\n constructor(\n public dialogRef: MatDialogRef<GioConfirmAndValidateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) confirmDialogData: GioConfirmAndValidateDialogData,\n ) {\n this.title = confirmDialogData?.title ?? 'Are you sure?';\n this.warning = confirmDialogData?.warning;\n this.content = confirmDialogData?.content;\n this.validationMessage = extendValidationMessage(\n confirmDialogData?.validationMessage ?? 'Please, type <code>confirm</code> to confirm.',\n );\n this.validationValue = confirmDialogData?.validationValue ?? 'confirm';\n this.confirmButton = confirmDialogData?.confirmButton ?? 'Confirm';\n this.cancelButton = confirmDialogData?.cancelButton ?? 'Cancel';\n }\n\n public onConfirmChange(confirmValue: string): void {\n this.isValid = toLower(confirmValue) === toLower(this.validationValue);\n }\n}\n\nconst extendValidationMessage = (validationMessage: string) => {\n return validationMessage.replace('<code>', '<code class=\"gio-badge-warning\">');\n};\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"confirm-dialog__title\">{{ title }}</h2>\n\n<mat-dialog-content class=\"confirm-dialog__body\">\n <gio-banner-warning *ngIf=\"warning\"><span [innerHTML]=\"warning\"></span></gio-banner-warning>\n <p class=\"confirm-dialog__body__content\" *ngIf=\"content\" [innerHTML]=\"content\"></p>\n <p class=\"confirm-dialog__body__validate-message\" [innerHTML]=\"validationMessage\"></p>\n <mat-form-field class=\"confirm-dialog__body__validate-input\" appearance=\"outline\" floatLabel=\"always\">\n <mat-label>Confirm</mat-label>\n <input\n matInput\n cdkFocusInitial\n type=\"text\"\n [placeholder]=\"validationValue\"\n [ngModel]=\"confirmValue\"\n (ngModelChange)=\"onConfirmChange($event)\"\n required\n data-testid=\"confirm-input-dialog\"\n />\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\" class=\"confirm-dialog__actions\">\n <button\n class=\"confirm-dialog__confirm-button\"\n [disabled]=\"!isValid\"\n color=\"warn\"\n mat-raised-button\n [mat-dialog-close]=\"true\"\n data-testid=\"confirm-dialog\"\n >\n {{ confirmButton }}\n </button>\n <button class=\"confirm-dialog__cancel-button\" mat-flat-button [mat-dialog-close]=\"false\">\n {{ cancelButton }}\n </button>\n</mat-dialog-actions>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { GioBannerModule } from '../public-api';\n\nimport { GioConfirmAndValidateDialogComponent } from './gio-confirm-and-validate-dialog.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatButtonModule, MatDialogModule, MatInputModule, MatFormFieldModule, A11yModule, GioBannerModule],\n declarations: [GioConfirmAndValidateDialogComponent],\n exports: [GioConfirmAndValidateDialogComponent],\n})\nexport class GioConfirmAndValidateDialogModule {}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nexport class GioConfirmAndValidateDialogHarness extends ComponentHarness {\n public static hostSelector = 'gio-confirm-and-validate-dialog';\n\n private getConfirmBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__confirm-button' }));\n private getCancelBtn = this.locatorFor(MatButtonHarness.with({ selector: '.confirm-dialog__cancel-button' }));\n private getConfirmInput = this.locatorFor(MatInputHarness);\n\n public async confirm(): Promise<void> {\n const confirmInput = await this.getConfirmInput();\n await confirmInput.setValue(await confirmInput.getPlaceholder());\n\n const button = await this.getConfirmBtn();\n if (!(await button.isDisabled())) {\n await button.click();\n }\n }\n\n public async cancel(): Promise<void> {\n const button = await this.getCancelBtn();\n await button.click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Component, ElementRef, forwardRef, HostBinding, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { dropRight, isEmpty } from 'lodash';\nimport { map, startWith, tap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\nexport type Header = { key: string; value: string };\nconst HEADER_NAMES = [\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-ID',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-MD5',\n 'Content-Range',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'ETag',\n 'Expires',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Location',\n 'Link',\n 'Max-Forwards',\n 'MIME-Version',\n 'Origin',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'Proxy-Connection',\n 'Range',\n 'Referer',\n 'Retry-After',\n 'Server',\n 'Set-Cookie',\n 'Set-Cookie2',\n 'TE',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'Warning',\n 'WWW-Authenticate',\n 'X-Forwarded-For',\n 'X-Forwarded-Proto',\n 'X-Forwarded-Server',\n 'X-Forwarded-Host',\n 'X-Forwarded-Port',\n 'X-Forwarded-Prefix',\n];\n\n@Component({\n selector: 'gio-form-headers',\n templateUrl: './gio-form-headers.component.html',\n styleUrls: ['./gio-form-headers.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GioFormHeadersComponent),\n multi: true,\n },\n ],\n})\nexport class GioFormHeadersComponent implements OnInit, ControlValueAccessor {\n public mainForm: FormGroup;\n public headersFormArray = new FormArray([\n new FormGroup({\n key: new FormControl(''),\n value: new FormControl(''),\n }),\n ]);\n\n @HostBinding('class.disabled')\n public disabled = false;\n\n private headers: Header[] = [];\n\n private _onChange: (_headers: Header[] | null) => void = () => ({});\n\n private _onTouched: () => void = () => ({});\n\n private filteredHeaderNames: Observable<string[]>[] = [];\n\n constructor(private readonly fm: FocusMonitor, private readonly elRef: ElementRef) {\n this.mainForm = new FormGroup({\n headers: this.headersFormArray,\n });\n }\n\n // From ControlValueAccessor interface\n public writeValue(value: Header[] | null): void {\n if (!value) {\n return;\n }\n\n this.headers = value ?? [];\n this.initHeadersForm();\n }\n\n // From ControlValueAccessor interface\n public registerOnChange(fn: (headers: Header[] | null) => void): void {\n this._onChange = fn;\n }\n\n // From ControlValueAccessor interface\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // From ControlValueAccessor interface\n public setDisabledState(isDisabled: boolean): void {\n if (isDisabled === this.disabled) {\n // do nothing if the disabled state is not changed\n return;\n }\n\n this.disabled = isDisabled;\n if (isDisabled) {\n this.headersFormArray.disable({ emitEvent: false });\n this.removeLastHeader();\n return;\n }\n this.headersFormArray.enable({ emitEvent: false });\n this.addEmptyHeader();\n }\n\n public ngOnInit(): void {\n // When user start to complete last header add new empty one a the end\n this.headersFormArray?.valueChanges\n .pipe(\n tap(headers => headers.length > 0 && this._onChange(removeLastEmptyHeader(headers))),\n tap((headers: Header[]) => {\n if (headers.length > 0 && (headers[headers.length - 1].key !== '' || headers[headers.length - 1].value !== '')) {\n this.addEmptyHeader();\n }\n }),\n )\n .subscribe();\n\n this.fm.monitor(this.elRef.nativeElement, true).subscribe(() => {\n this._onTouched();\n });\n }\n\n public initHeadersForm(): void {\n // Clear all previous headers\n this.headersFormArray.clear();\n\n // Populate headers array from headers\n this.headers.forEach(({ key, value }, headerIndex) => {\n this.headersFormArray.push(\n new FormGroup({\n key: this.initKeyFormControl(key, headerIndex),\n value: new FormControl({ value, disabled: this.disabled }),\n }),\n {\n emitEvent: false,\n },\n );\n });\n\n // add one empty header a the end\n this.addEmptyHeader();\n }\n\n public getFilteredHeaderNames(headerIndex: number, header: Header): Observable<string[]> {\n if (!this.filteredHeaderNames[headerIndex]) {\n return this.filteredHeaderNames[headerIndex];\n }\n if (header.key != null && header.key != '') {\n this.filteredHeaderNames[headerIndex] = of(header.key).pipe(map(value => this._filter(value)));\n return this.filteredHeaderNames[headerIndex];\n }\n return of(HEADER_NAMES);\n }\n\n private initKeyFormControl(key: string, headerIndex: number) {\n const control = new FormControl({ value: key, disabled: this.disabled });\n const filteredKeys = control.valueChanges.pipe(\n startWith(''),\n map(value => this._filter(value)),\n );\n this.filteredHeaderNames.splice(headerIndex, 0, filteredKeys);\n return control;\n }\n\n public onDeleteHeader(headerIndex: number): void {\n this._onTouched();\n this.headersFormArray.removeAt(headerIndex);\n }\n\n private addEmptyHeader() {\n if (this.disabled) {\n return;\n }\n\n this.headersFormArray.push(\n new FormGroup({\n key: this.initKeyFormControl('', this.headersFormArray.length),\n value: new FormControl(''),\n }),\n { emitEvent: false },\n );\n }\n\n private removeLastHeader() {\n this.headersFormArray.removeAt(this.headersFormArray.length - 1, { emitEvent: false });\n }\n\n private _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return HEADER_NAMES.filter(option => option.toLowerCase().includes(filterValue));\n }\n}\n\nconst removeLastEmptyHeader = (headers: Header[]) => {\n const lastHeader = headers[headers.length - 1];\n\n if (lastHeader && isEmpty(lastHeader.key) && isEmpty(lastHeader.value)) {\n return dropRight(headers);\n }\n return headers;\n};\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<table class=\"gio-form-headers__table gio-table-light\" [formGroup]=\"mainForm\">\n <thead>\n <tr>\n <th>KEY</th>\n <th>VALUE</th>\n </tr>\n </thead>\n <tbody formArrayName=\"headers\">\n <tr\n *ngFor=\"let control of headersFormArray.controls; index as headerIndex\"\n class=\"gio-form-headers__table__header-row\"\n [formGroupName]=\"headerIndex\"\n >\n <td class=\"gio-form-headers__table__header-row__td-key\">\n <mat-form-field class=\"gio-form-headers__table__header-row__td-key__field\" [floatLabel]=\"'never'\" appearance=\"standard\">\n <textarea\n formControlName=\"key\"\n matInput\n placeholder=\"Name...\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n [matAutocomplete]=\"headerNamesAutocomplete\"\n ></textarea>\n </mat-form-field>\n <mat-autocomplete #headerNamesAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let headerName of getFilteredHeaderNames(headerIndex, control.value) | async\" [value]=\"headerName\">{{\n headerName\n }}</mat-option>\n </mat-autocomplete>\n </td>\n <td class=\"gio-form-headers__table__header-row__td-value\">\n <mat-form-field class=\"gio-form-headers__table__header-row__td-value__field\" [floatLabel]=\"'never'\" appearance=\"standard\">\n <textarea formControlName=\"value\" matInput placeholder=\"Value...\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\"></textarea>\n </mat-form-field>\n <button\n class=\"gio-form-headers__table__header-row__td-value__button\"\n *ngIf=\"headersFormArray.controls.length - 1 !== headerIndex\"\n mat-icon-button\n aria-label=\"Delete\"\n (click)=\"onDeleteHeader(headerIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatOptionModule } from '@angular/material/core';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioFormHeadersComponent } from './gio-form-headers.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n GioIconsModule,\n MatButtonModule,\n MatAutocompleteModule,\n MatOptionModule,\n ],\n declarations: [GioFormHeadersComponent],\n exports: [GioFormHeadersComponent],\n})\nexport class GioFormHeadersModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncFactoryFn, BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\n\nexport class GioFormHeadersHarness extends ComponentHarness {\n public static hostSelector = 'gio-form-headers';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `GioFormColorInputHarness` that meets\n * certain criteria.\n *\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n public static with(options: BaseHarnessFilters = {}): HarnessPredicate<GioFormHeadersHarness> {\n return new HarnessPredicate(GioFormHeadersHarness, options);\n }\n\n private getHeaderRowsElement = this.locatorForAll('tr.gio-form-headers__table__header-row');\n\n private getHeaderRowInputKey = (rowIndex: number): AsyncFactoryFn<MatInputHarness> =>\n this.locatorFor(MatInputHarness.with({ ancestor: `[ng-reflect-name=\"${rowIndex}\"]`, selector: '[formControlName=key]' }));\n\n private getHeaderRowInputKeyAutocomplete = (rowIndex: number): AsyncFactoryFn<MatAutocompleteHarness> =>\n this.locatorFor(MatAutocompleteHarness.with({ ancestor: `tr[ng-reflect-name=\"${rowIndex}\"]`, selector: '.mat-autocomplete-trigger' }));\n\n private getHeaderRowInputValue = (rowIndex: number): AsyncFactoryFn<MatInputHarness> =>\n this.locatorFor(MatInputHarness.with({ ancestor: `tr[ng-reflect-name=\"${rowIndex}\"]`, selector: '[formControlName=value]' }));\n\n private getHeaderRowRemoveButton = (rowIndex: number): AsyncFactoryFn<MatButtonHarness | null> =>\n this.locatorForOptional(MatButtonHarness.with({ ancestor: `tr[ng-reflect-name=\"${rowIndex}\"]`, selector: '[aria-label=\"Delete\"]' }));\n\n public async getHeaderRows(): Promise<\n {\n keyInput: MatInputHarness;\n keyAutocomplete: MatAutocompleteHarness;\n valueInput: MatInputHarness;\n removeButton: MatButtonHarness | null;\n }[]\n > {\n const rows = await this.getHeaderRowsElement();\n\n return Promise.all(\n rows.map(async (_, rowIndex) => ({\n keyInput: await this.getHeaderRowInputKey(rowIndex)(),\n keyAutocomplete: await this.getHeaderRowInputKeyAutocomplete(rowIndex)(),\n valueInput: await this.getHeaderRowInputValue(rowIndex)(),\n removeButton: await this.getHeaderRowRemoveButton(rowIndex)(),\n })),\n );\n }\n\n public async getLastHeaderRow(): Promise<{ keyInput: MatInputHarness; valueInput: MatInputHarness }> {\n const rows = await this.getHeaderRowsElement();\n\n return {\n keyInput: await this.getHeaderRowInputKey(rows.length - 1)(),\n valueInput: await this.getHeaderRowInputValue(rows.length - 1)(),\n };\n }\n\n public async addHeader({ key, value }: { key: string; value: string }): Promise<void> {\n const { keyInput, valueInput } = await this.getLastHeaderRow();\n\n await keyInput.setValue(key);\n await valueInput.setValue(value);\n }\n\n public async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('disabled');\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-file-picker-add-button',\n templateUrl: './gio-form-file-picker-add-button.component.html',\n styleUrls: ['./gio-form-file-picker-add-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerAddButtonComponent {}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"add-button\" matRipple>\n <div #content><ng-content></ng-content></div>\n <span *ngIf=\"!content.children.length\">\n <mat-icon class=\"add-button__image\" svgIcon=\"gio:upload\"></mat-icon>\n <span class=\"add-button__content\">Drag your file</span>\n </span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-file-picker-empty',\n templateUrl: './gio-form-file-picker-empty.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerEmptyComponent {}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #content><ng-content></ng-content></div>\n<span *ngIf=\"!content.children.length\"> No file defined </span>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-file-picker-label',\n templateUrl: './gio-form-file-picker-label.component.html',\n styleUrls: ['./gio-form-file-picker-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerLabelComponent {}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"mat-caption\"><ng-content></ng-content></div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class NewFile {\n constructor(public readonly name: string, public readonly dataUrl: string, public readonly file?: File) {}\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, Optional, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { isArray, isNil, remove } from 'lodash';\nimport { ReadFile, ReadMode } from 'ngx-file-helpers';\nimport { tap } from 'rxjs/operators';\n\nimport { NewFile } from './gio-form-file-picker.model';\n\ntype FileValue = {\n name: string;\n isNew: boolean;\n dataUrl: string;\n file?: File;\n isImage: boolean;\n};\n\n@Component({\n selector: 'gio-form-file-picker',\n templateUrl: './gio-form-file-picker.component.html',\n styleUrls: ['./gio-form-file-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GioFormFilePickerComponent implements OnInit, ControlValueAccessor {\n @Input()\n public multiple = false;\n\n @Input()\n public accept = '*';\n\n @Input()\n public set disabled(disabled: boolean) {\n this.setDisabledState(disabled);\n }\n\n public fileValues: FileValue[] = [];\n public readMode: ReadMode = ReadMode.dataURL;\n public dragHover = false;\n public isDisabled = false;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeCallback: (files: (string | NewFile)[]) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedCallback = () => {};\n\n constructor(private changeDetectorRef: ChangeDetectorRef, @Self() @Optional() public ngControl?: NgControl) {\n if (ngControl) {\n // Setting the value accessor directly (instead of using\n // the providers `NG_VALUE_ACCESSOR`) to avoid running into a circular import.\n ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.ngControl && this.ngControl.statusChanges) {\n // As the change detection is OnPush we have to markForCheck the component after a validation change because no input/output or values have changed\n this.ngControl.statusChanges.pipe(tap(() => this.changeDetectorRef.markForCheck())).subscribe();\n }\n }\n\n public get isComplete(): boolean {\n return (!this.multiple && this.fileValues.length === 1) || false;\n }\n\n public get isValid(): boolean | null {\n return !this.ngControl || !this.ngControl.touched || this.ngControl.valid;\n }\n\n // implement by ControlValueAccessor\n public async writeValue(inputs?: string[]): Promise<void> {\n if (isNil(inputs) || !isArray(inputs)) {\n this.fileValues = [];\n return Promise.resolve();\n }\n\n this.fileValues = await Promise.all(\n inputs.map(async input => ({\n isNew: false,\n name: input,\n dataUrl: input,\n isImage: await isImgUrl(input),\n })),\n );\n this.changeDetectorRef.markForCheck();\n }\n\n // implement by ControlValueAccessor\n public registerOnChange(fn: (v: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n // implement by ControlValueAccessor\n public registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n // implement by ControlValueAccessor\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n public onFilePicked(event: ReadFile): void {\n this.handleReceivedFileEvent(event);\n }\n\n public onFileDropped(event: ReadFile): void {\n this.handleReceivedFileEvent(event);\n }\n\n public onRemoveFile(file: FileValue): void {\n this.onTouchedCallback();\n this.dragHover = false;\n\n remove(this.fileValues, { name: file.name });\n\n this.emitFileValue();\n }\n\n public onTouched(): void {\n this.onTouchedCallback();\n this.dragHover = false;\n }\n\n public onDragEnter($event: DragEvent): void {\n const el = $event.target as HTMLElement | null;\n if (el) {\n this.dragHover = true;\n this.onTouchedCallback();\n }\n }\n\n public onDragOver($event: DragEvent): void {\n const el = $event.target as HTMLElement | null;\n\n if (el) {\n this.dragHover = false;\n this.onTouchedCallback();\n }\n }\n\n private handleReceivedFileEvent(event: ReadFile) {\n this.onTouchedCallback();\n\n this.dragHover = false;\n\n if (!this.multiple) {\n this.fileValues = [];\n }\n\n this.fileValues.push({\n name: event.name,\n isNew: true,\n dataUrl: event.content,\n file: event.underlyingFile,\n isImage: event.type.startsWith('image/'),\n });\n\n this.emitFileValue();\n }\n\n private emitFileValue() {\n this.onChangeCallback(\n this.fileValues.map(fileValue =>\n fileValue.isNew ? new NewFile(fileValue.name, fileValue.dataUrl, fileValue.file) : fileValue.dataUrl,\n ),\n );\n }\n}\n\nconst isImgUrl = (url: string): Promise<boolean> => {\n try {\n const img = new Image();\n img.src = url;\n return new Promise(resolve => {\n img.onerror = () => resolve(false);\n img.onload = () => resolve(true);\n });\n } catch (error) {\n return Promise.resolve(false);\n }\n};\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-content select=\"gio-form-file-picker-label\"></ng-content>\n<div\n *ngIf=\"!isDisabled; else disabledTpl\"\n class=\"file-picker\"\n ngxFileDropzone\n [readMode]=\"readMode\"\n (fileDrop)=\"onFileDropped($event)\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragOver($event)\"\n (blur)=\"dragHover = false\"\n>\n <div\n *ngIf=\"!isComplete\"\n class=\"file-picker__add-button\"\n [class.complete]=\"isComplete\"\n [class.error]=\"!isValid\"\n [class.drag-hover]=\"dragHover\"\n ngxFilePicker\n [accept]=\"accept\"\n [readMode]=\"readMode\"\n [multiple]=\"multiple\"\n (filePick)=\"onFilePicked($event)\"\n (click)=\"onTouched()\"\n >\n <div #addButton class=\"file-picker__add-button__content\"><ng-content select=\"gio-form-file-picker-add-button\"></ng-content></div>\n <gio-form-file-picker-add-button *ngIf=\"addButton.children.length === 0\"></gio-form-file-picker-add-button>\n </div>\n <div *ngFor=\"let fileValue of fileValues\" class=\"file-picker__preview\" [class.drag-hover]=\"dragHover\" [class.error]=\"!isValid\">\n <a class=\"file-picker__preview__delete\" (click)=\"onRemoveFile(fileValue)\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </a>\n\n <ng-container *ngTemplateOutlet=\"filePreview; context: { fileValue: this.fileValue }\"></ng-container>\n </div>\n</div>\n\n<ng-template #disabledTpl>\n <div class=\"file-picker disabled\">\n <ng-container *ngIf=\"fileValues.length === 0\">\n <span #previewEmpty class=\"file-picker__preview-empty disabled\">\n <ng-content select=\"gio-form-file-picker-empty\"></ng-content>\n <gio-form-file-picker-empty\n *ngIf=\"previewEmpty.children.length === 0\"\n class=\"file-picker__preview-empty__default\"\n ></gio-form-file-picker-empty>\n </span>\n </ng-container>\n\n <div class=\"file-picker__preview disabled\" *ngFor=\"let fileValue of fileValues\">\n <ng-container *ngTemplateOutlet=\"filePreview; context: { fileValue: this.fileValue }\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #filePreview let-fileValue=\"fileValue\">\n <div class=\"file-picker__preview__image\" *ngIf=\"fileValue.isImage\" [style.background-image]=\"'url(' + fileValue.dataUrl + ')'\"></div>\n <div class=\"file-picker__preview__file\" *ngIf=\"!fileValue.isImage\">\n <p>{{ fileValue.name }}</p>\n </div>\n</ng-template>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgxFileHelpersModule } from 'ngx-file-helpers';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioFormFilePickerAddButtonComponent } from './gio-form-file-picker-add-button/gio-form-file-picker-add-button.component';\nimport { GioFormFilePickerEmptyComponent } from './gio-form-file-picker-empty/gio-form-file-picker-empty.component';\nimport { GioFormFilePickerLabelComponent } from './gio-form-file-picker-label/gio-form-file-picker-label.component';\nimport { GioFormFilePickerComponent } from './gio-form-file-picker.component';\n\n@NgModule({\n declarations: [\n GioFormFilePickerComponent,\n GioFormFilePickerAddButtonComponent,\n GioFormFilePickerEmptyComponent,\n GioFormFilePickerLabelComponent,\n ],\n exports: [\n GioFormFilePickerComponent,\n GioFormFilePickerAddButtonComponent,\n GioFormFilePickerEmptyComponent,\n GioFormFilePickerLabelComponent,\n ],\n imports: [CommonModule, ReactiveFormsModule, NgxFileHelpersModule, MatRippleModule, MatIconModule, GioIconsModule],\n})\nexport class GioFormFilePickerModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\ninterface GioFormFilePickerHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the formControlName */\n formControlName?: string;\n}\n\nexport class GioFormFilePickerInputHarness extends ComponentHarness {\n public static hostSelector = 'gio-form-file-picker';\n\n public static with(options: GioFormFilePickerHarnessFilters): HarnessPredicate<GioFormFilePickerInputHarness> {\n return new HarnessPredicate(GioFormFilePickerInputHarness, options).addOption(\n 'formControlName',\n options.formControlName,\n (harness, text) => HarnessPredicate.stringMatches(harness.getFormControlName(), text),\n );\n }\n\n /**\n * Hack force onload on Image Object\n * GioFormFilePickerComponent use a Image Object to check if the file is an image.\n * This method allow to force onload event on the Image Object.\n * @param excludeSrc call onerror instead of onload for this src\n */\n public static forceImageOnload(excludeSrc: string[] = []): void {\n Object.defineProperties(Image.prototype, {\n src: {\n get: function () {\n return this._src;\n },\n set: function (src) {\n this._src = src;\n },\n },\n onload: {\n get: function () {\n return this._onload;\n },\n set: function (fn) {\n this._onload = fn;\n\n excludeSrc.includes(this._src) ? this.onerror() : this.onload();\n },\n },\n });\n }\n\n protected _mainDiv = this.locatorFor('.file-picker__add-button');\n protected _hasErrorClass = this.locatorForOptional('[class=\"file-picker__add-button error\"]');\n protected _inputFile = this.locatorFor('input[type=\"file\"]');\n protected _getDisabledElement = this.locatorForOptional('.disabled');\n\n private async getFormControlName(): Promise<string | null> {\n const filePickerInputHarness = await this.host();\n return filePickerInputHarness.getAttribute('formControlName');\n }\n\n public async hasErrorClass(): Promise<boolean> {\n return !!(await this._hasErrorClass());\n }\n\n public async clickInside(): Promise<void> {\n await (await this._mainDiv()).click();\n }\n\n public async getInputFileAccept(): Promise<string | null> {\n return await (await this._inputFile()).getAttribute('accept');\n }\n\n public async getPreviews(): Promise<(string | null)[]> {\n const previewImages = await this.locatorForAll('.file-picker__preview__image')();\n const previewFiles = await this.locatorForAll('.file-picker__preview__file')();\n\n return Promise.all([\n ...previewImages.map(previewImage => previewImage.getAttribute('style')),\n ...previewFiles.map(previewFile => previewFile.text()),\n ]);\n }\n\n public async isAddButtonPresent(): Promise<boolean> {\n return (await this.locatorForOptional('gio-form-file-picker-add-button')()) !== null;\n }\n\n public async isDisabled(): Promise<boolean> {\n return !!(await this._getDisabledElement());\n }\n\n public async deleteFile(fileIndex = 0): Promise<void> {\n const deleteButtons = await this.locatorForAll('.file-picker__preview__delete')();\n\n return deleteButtons[fileIndex].click();\n }\n\n public async dropFiles(files: File[]): Promise<void> {\n const filePickerDropZone = await this.locatorFor('.file-picker')();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await filePickerDropZone.dispatchEvent('drop', { dataTransfer: { files } } as any);\n\n // Wait event is dispatched\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport * from './gio-form-file-picker.module';\nexport * from './gio-form-file-picker.component';\nexport * from './gio-form-file-picker.model';\nexport * from './gio-form-file-picker-add-button/gio-form-file-picker-add-button.component';\nexport * from './gio-form-file-picker-empty/gio-form-file-picker-empty.component';\nexport * from './gio-form-file-picker-label/gio-form-file-picker-label.component';\n\nexport * from './gio-form-file-picker.component.harness';\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, timer } from 'rxjs';\nimport { debounce, distinctUntilChanged } from 'rxjs/operators';\n\nexport interface OverlayOptions {\n top?: number;\n parent?: HTMLElement;\n open: boolean;\n focus?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GioMenuService {\n private reduceSource = new BehaviorSubject<boolean>(false);\n private overlaySource = new BehaviorSubject<OverlayOptions>({ open: false });\n public reduce = this.reduceSource.asObservable();\n public overlayObservable = this.overlaySource.asObservable().pipe(\n distinctUntilChanged((prev, curr) => prev.open === curr.open),\n debounce(overlayOptions => timer(overlayOptions.open ? 150 : 500)),\n );\n\n public reduced(reduced: boolean): void {\n this.reduceSource.next(reduced);\n }\n\n public overlay(overlayOptions: OverlayOptions): void {\n this.overlaySource.next(overlayOptions);\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, HostListener, Input, OnDestroy } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { GioMenuService } from '../gio-menu.service';\n\n@Component({\n selector: 'gio-menu-item',\n templateUrl: './gio-menu-item.component.html',\n styleUrls: ['./gio-menu-item.component.scss'],\n})\nexport class GioMenuItemComponent implements OnDestroy {\n @Input() public icon = '';\n @Input() public active = false;\n @Input() public outlined = false;\n\n private unsubscribe$ = new Subject();\n\n constructor(private readonly gioMenuService: GioMenuService) {}\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.unsubscribe();\n }\n\n public onMouseLeave(): void {\n if (this.active) {\n this.gioMenuService.overlay({ open: false });\n }\n }\n\n public onMouseEnter($event: MouseEvent): void {\n if (this.active) {\n const menuItem = $event.target as HTMLInputElement;\n this.gioMenuService.overlay({ open: true, top: menuItem.getBoundingClientRect().top, parent: menuItem });\n }\n }\n\n @HostListener('click', ['$event'])\n public onClick($event: MouseEvent): void {\n of(true)\n .pipe(\n takeUntil(this.unsubscribe$),\n delay(0),\n tap(() => this.onMouseEnter($event)),\n )\n .subscribe();\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydownHandler($event: KeyboardEvent): void {\n of($event.key === 'Enter' && $event.target)\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(enterKey => !!enterKey),\n switchMap(() => of($event.target as HTMLElement)),\n tap(menuItem => {\n this.gioMenuService.overlay({ open: false });\n if (this.active) {\n this.gioMenuService.overlay({ open: true, top: menuItem.getBoundingClientRect().top, parent: menuItem, focus: true });\n } else {\n menuItem.click();\n }\n }),\n )\n .subscribe();\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n class=\"gio-menu-item\"\n [class.gio-menu-item__active]=\"active\"\n [class.gio-menu-item__outlined]=\"outlined\"\n (click)=\"onClick($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <mat-icon *ngIf=\"icon\" class=\"gio-menu-item__icon\" [svgIcon]=\"icon\"></mat-icon>\n <span class=\"gio-menu-item__title\"><ng-content></ng-content></span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-menu-footer',\n templateUrl: './gio-menu-footer.component.html',\n styleUrls: ['./gio-menu-footer.component.scss'],\n})\nexport class GioMenuFooterComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-footer\">\n <div class=\"gio-menu-footer__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { GioMenuService } from './gio-menu.service';\n\n@Component({\n selector: 'gio-menu',\n templateUrl: './gio-menu.component.html',\n styleUrls: ['./gio-menu.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class GioMenuComponent implements OnInit {\n @Input() public reduced = false;\n\n constructor(private readonly gioMenuService: GioMenuService) {}\n\n public ngOnInit(): void {\n this.gioMenuService.reduced(this.reduced);\n }\n\n public reduceMenu(): void {\n this.reduced = !this.reduced;\n this.gioMenuService.reduced(this.reduced);\n }\n\n public getCollapseButtonIcon(): string {\n return this.reduced ? 'gio:expande' : 'gio:collapse';\n }\n\n public onMouseLeave(): void {\n if (this.reduced) {\n this.gioMenuService.overlay({ open: false });\n }\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu\" [class.gio-menu__reduced]=\"reduced\" (mouseleave)=\"onMouseLeave()\">\n <ng-content select=\"gio-menu-header\"></ng-content>\n <ng-content select=\"gio-menu-list\"></ng-content>\n <ng-content select=\"gio-menu-footer\"></ng-content>\n <gio-menu-footer>\n <gio-menu-item\n tabIndex=\"1\"\n type=\"button\"\n class=\"gio-menu-footer__collapse\"\n [icon]=\"getCollapseButtonIcon()\"\n (click)=\"reduceMenu()\"\n [outlined]=\"true\"\n >Collapse menu</gio-menu-item\n >\n </gio-menu-footer>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-menu-list',\n templateUrl: './gio-menu-list.component.html',\n styleUrls: ['./gio-menu-list.component.scss'],\n})\nexport class GioMenuListComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-list\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\n\nexport type SelectorItem = {\n value: string;\n displayValue: string;\n};\n\n@Component({\n selector: 'gio-menu-selector',\n templateUrl: './gio-menu-selector.component.html',\n styleUrls: ['./gio-menu-selector.component.scss'],\n})\nexport class GioMenuSelectorComponent {\n @Input()\n public selectorTitle = '';\n\n @Input()\n public selectorItems: SelectorItem[] = [];\n\n @Input()\n public selectedItemValue = '';\n\n @Input()\n public tabIndex = 1;\n\n @Output()\n public selectChange: EventEmitter<string> = new EventEmitter<string>();\n\n public onSelectionChange($event: MatSelectChange): void {\n this.selectChange.emit($event.value);\n }\n\n public isDisabled(): boolean {\n return this.selectorItems.length <= 1;\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-selector\">\n <mat-form-field class=\"gio-menu-selector__mat-form-field\" appearance=\"legacy\">\n <mat-label>{{ selectorTitle }}</mat-label>\n <mat-select [tabIndex]=\"tabIndex\" [value]=\"selectedItemValue\" (selectionChange)=\"onSelectionChange($event)\" [disabled]=\"isDisabled()\">\n <mat-option *ngFor=\"let item of selectorItems\" [value]=\"item.value\">\n {{ item.displayValue }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-menu-header',\n templateUrl: './gio-menu-header.component.html',\n styleUrls: ['./gio-menu-header.component.scss'],\n})\nexport class GioMenuHeaderComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-menu-header\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioMenuItemComponent } from './gio-menu-item/gio-menu-item.component';\nimport { GioMenuComponent } from './gio-menu.component';\nimport { GioMenuFooterComponent } from './gio-menu-footer/gio-menu-footer.component';\nimport { GioMenuListComponent } from './gio-menu-list/gio-menu-list.component';\nimport { GioMenuSelectorComponent } from './gio-menu-selector/gio-menu-selector.component';\nimport { GioMenuHeaderComponent } from './gio-menu-header/gio-menu-header.component';\n\n@NgModule({\n declarations: [\n GioMenuComponent,\n GioMenuItemComponent,\n GioMenuFooterComponent,\n GioMenuListComponent,\n GioMenuHeaderComponent,\n GioMenuSelectorComponent,\n ],\n exports: [\n GioMenuComponent,\n GioMenuItemComponent,\n GioMenuFooterComponent,\n GioMenuListComponent,\n GioMenuHeaderComponent,\n GioMenuSelectorComponent,\n ],\n imports: [CommonModule, MatIconModule, GioIconsModule, MatSelectModule],\n})\nexport class GioMenuModule {}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentHarness } from '@angular/cdk/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport class GioMenuSelectorHarness extends ComponentHarness {\n public static hostSelector = 'gio-menu-selector';\n\n private getSelect = this.locatorFor(MatSelectHarness);\n\n public async availableOptions(): Promise<string[]> {\n const select = await this.getSelect();\n await select.open();\n const options = await select.getOptions();\n\n return Promise.all(options.map(o => o.getText()));\n }\n\n public async selectedOption(): Promise<string> {\n const select = await this.getSelect();\n return select.getValueText();\n }\n\n public async selectOptionByIndex(index: number): Promise<void> {\n const select = await this.getSelect();\n await select.open();\n const options = await select.getOptions();\n\n return options[index].click();\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-menu.module';\nexport * from './gio-menu.service';\nexport * from './gio-menu.component';\nexport * from './gio-menu-item/gio-menu-item.component';\nexport * from './gio-menu-list/gio-menu-list.component';\nexport * from './gio-menu-footer/gio-menu-footer.component';\nexport * from './gio-menu-header/gio-menu-header.component';\nexport * from './gio-menu-selector/gio-menu-selector.component';\nexport * from './gio-menu-selector/gio-menu-selector.harness';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AfterViewInit, Component, Directive, ElementRef, HostListener, OnDestroy, ViewChild } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { GioMenuService, OverlayOptions } from '../gio-menu/gio-menu.service';\n\n@Directive({\n selector: '[gioSubmenuTitle]',\n})\nexport class GioSubmenuTitleDirective {}\n\n@Component({\n selector: 'gio-submenu',\n templateUrl: './gio-submenu.component.html',\n styleUrls: ['./gio-submenu.component.scss'],\n})\nexport class GioSubmenuComponent implements AfterViewInit, OnDestroy {\n public reduced = false;\n public loaded = false;\n public overlayOptions: OverlayOptions = { open: false };\n private hover = false;\n @ViewChild('gioSubmenu', { static: false })\n private gioSubmenu!: ElementRef<HTMLDivElement>;\n private unsubscribe$ = new Subject();\n\n constructor(private readonly gioMenuService: GioMenuService) {}\n\n public ngAfterViewInit(): void {\n this.gioMenuService.reduce\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(reduced => reduced),\n tap(() => {\n this.reduced = true;\n this.loaded = true;\n }),\n switchMap(() => this.gioMenuService.overlayObservable),\n tap(overlayOptions => {\n this.overlayOptions = overlayOptions;\n if (overlayOptions.open) {\n const top = overlayOptions.top || 0;\n this.gioSubmenu.nativeElement.style.top = `${top}px`;\n this.gioSubmenu.nativeElement.style.height = 'auto';\n this.gioSubmenu.nativeElement.style.maxHeight = `calc(100vh - ${top + 8}px)`;\n }\n }),\n filter(overlayOptions => !!overlayOptions.focus),\n delay(200),\n switchMap(() => of(this.gioSubmenu.nativeElement.querySelectorAll<HTMLElement>('gio-submenu-item'))),\n filter(submenuItems => submenuItems.length > 0),\n tap(submenuItems => submenuItems[0].focus()),\n )\n .subscribe();\n\n this.gioMenuService.reduce\n .pipe(\n takeUntil(this.unsubscribe$),\n filter(reduced => !reduced),\n tap(() => {\n this.reduced = false;\n this.loaded = true;\n this.gioSubmenu.nativeElement.style.height = '100%';\n this.gioSubmenu.nativeElement.style.maxHeight = 'none';\n }),\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.unsubscribe();\n }\n\n public onMouseEnter(): void {\n this.hover = true;\n this.gioMenuService.overlay(this.overlayOptions);\n }\n\n public onMouseLeave(): void {\n this.hover = false;\n this.gioMenuService.overlay({ open: false });\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydownHandler(event: KeyboardEvent): void {\n of(this.reduced && event.key === 'Escape')\n .pipe(\n filter(reducedAndEscape => reducedAndEscape),\n tap(() => this.gioMenuService.overlay({ open: false })),\n delay(100),\n tap(() => this.overlayOptions.parent?.focus()),\n )\n .subscribe();\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n #gioSubmenu\n class=\"gio-submenu\"\n [class.gio-submenu__loaded]=\"loaded\"\n [class.gio-submenu__reduced]=\"reduced\"\n [class.gio-submenu__overlay]=\"overlayOptions.open\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <div #title class=\"gio-submenu__title\" [class.hide]=\"!title.children.length || reduced\">\n <ng-content select=\"[gioSubmenuTitle]\"></ng-content>\n </div>\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gio-submenu-group',\n templateUrl: './gio-submenu-group.component.html',\n styleUrls: ['./gio-submenu-group.component.scss'],\n})\nexport class GioSubmenuGroupComponent {\n @Input() public title = '';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-submenu-group\">\n <div class=\"gio-submenu-group__title\">{{ title }}</div>\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, ElementRef, HostListener, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'gio-submenu-item',\n templateUrl: './gio-submenu-item.component.html',\n styleUrls: ['./gio-submenu-item.component.scss'],\n})\nexport class GioSubmenuItemComponent {\n @Input() public active = false;\n\n @ViewChild('gioSubmenuItem', { static: false })\n private gioSubmenuItem: ElementRef<HTMLDivElement> | undefined;\n\n @HostListener('keydown', ['$event'])\n public onKeydownHandler(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.gioSubmenuItem?.nativeElement.click();\n }\n }\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #gioSubmenuItem class=\"gio-submenu-item\" [class.gio-submenu-item__active]=\"active\">\n <span class=\"gio-submenu-item__title\"><ng-content></ng-content></span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioSubmenuGroupComponent } from './gio-submenu-group/gio-submenu-group.component';\nimport { GioSubmenuComponent, GioSubmenuTitleDirective } from './gio-submenu.component';\nimport { GioSubmenuItemComponent } from './gio-submenu-item/gio-submenu-item.component';\n\n@NgModule({\n declarations: [GioSubmenuComponent, GioSubmenuGroupComponent, GioSubmenuItemComponent, GioSubmenuTitleDirective],\n exports: [GioSubmenuComponent, GioSubmenuGroupComponent, GioSubmenuItemComponent, GioSubmenuTitleDirective],\n imports: [CommonModule, MatIconModule, GioIconsModule],\n})\nexport class GioSubmenuModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-submenu.component';\nexport * from './gio-submenu.module';\nexport * from './gio-submenu-group/gio-submenu-group.component';\nexport * from './gio-submenu-item/gio-submenu-item.component';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\nexport type GioTopBarTypes = 'am' | 'apim' | 'cockpit';\n\n@Component({\n selector: 'gio-top-bar',\n templateUrl: './gio-top-bar.component.html',\n styleUrls: ['./gio-top-bar.component.scss'],\n})\nexport class GioTopBarComponent {\n @Input() public type: GioTopBarTypes = 'am';\n\n @Input() public productName = '';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-top-bar\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\nexport type GioTopBarProductTypes = 'am' | 'apim' | 'cockpit';\n\n@Component({\n selector: 'gio-top-bar-content',\n templateUrl: './gio-top-bar-content.component.html',\n styleUrls: ['./gio-top-bar-content.component.scss'],\n})\nexport class GioTopBarContentComponent {\n @Input()\n public type: GioTopBarProductTypes = 'am';\n @Input()\n public productName = 'Access Management';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-top-bar-content\" [class]=\"type\">\n <mat-icon [svgIcon]=\"'gio:product-' + type\"></mat-icon>\n <span>{{ productName }}</span>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioTopBarComponent } from './gio-top-bar.component';\nimport { GioTopBarContentComponent } from './gio-top-bar-content/gio-top-bar-content.component';\n\n@NgModule({\n declarations: [GioTopBarComponent, GioTopBarContentComponent],\n exports: [GioTopBarComponent, GioTopBarContentComponent],\n imports: [CommonModule, MatIconModule, GioIconsModule],\n})\nexport class GioTopBarModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-top-bar-menu',\n templateUrl: './gio-top-bar-menu.component.html',\n styleUrls: ['./gio-top-bar-menu.component.scss'],\n})\nexport class GioTopBarMenuComponent {}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-top-bar-menu\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GioTopBarMenuComponent } from './gio-top-bar-menu.component';\n\n@NgModule({\n declarations: [GioTopBarMenuComponent],\n exports: [GioTopBarMenuComponent],\n imports: [CommonModule],\n})\nexport class GioTopBarMenuModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gio-top-bar-link',\n templateUrl: './gio-top-bar-link.component.html',\n styleUrls: ['./gio-top-bar-link.component.scss'],\n})\nexport class GioTopBarLinkComponent {\n @Input() public url = '';\n @Input() public name = '';\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<a mat-button [href]=\"url\" target=\"_blank\" class=\"gio-top-bar-link\">\n <div class=\"gio-top-bar-link__content\">\n <span>{{ name }}</span>\n <mat-icon svgIcon=\"gio:external-link\"></mat-icon>\n </div>\n</a>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { GioIconsModule } from '../../gio-icons/gio-icons.module';\n\nimport { GioTopBarLinkComponent } from './gio-top-bar-link.component';\n\n@NgModule({\n declarations: [GioTopBarLinkComponent],\n exports: [GioTopBarLinkComponent],\n imports: [CommonModule, MatIconModule, GioIconsModule],\n})\nexport class GioTopBarLinkModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-top-bar.module';\nexport * from './gio-top-bar.component';\nexport * from './gio-top-bar-menu/gio-top-bar-menu.module';\nexport * from './gio-top-bar-menu/gio-top-bar-menu.component';\nexport * from './gio-top-bar-link/gio-top-bar-link.module';\nexport * from './gio-top-bar-link/gio-top-bar-link.component';\nexport * from './gio-top-bar-content/gio-top-bar-content.component';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { AfterViewInit, Component, ElementRef, HostBinding, Input, OnChanges, ViewChild } from '@angular/core';\nimport { toSvg } from 'jdenticon';\n\n@Component({\n selector: 'gio-avatar',\n templateUrl: './gio-avatar.component.html',\n styleUrls: ['./gio-avatar.component.scss'],\n})\nexport class GioAvatarComponent implements AfterViewInit, OnChanges {\n public imgSrc: string | null = null;\n public defaultSize: number;\n public finalSize!: number;\n\n @Input()\n public set src(src: string | null) {\n this.imgSrc = src || null;\n }\n @Input()\n public name = '';\n @Input()\n public size!: number;\n @Input()\n public roundedBorder = false;\n\n @ViewChild('avatarContainer') public avatarContainerEleRef!: ElementRef;\n\n @HostBinding('style.width.px') public width = this.size;\n @HostBinding('style.height.px') public height = this.size;\n\n constructor(private hostEl: ElementRef) {\n this.defaultSize = Math.min(Number(this.hostEl.nativeElement.offsetWidth), Number(this.hostEl.nativeElement.offsetHeight)) || 110;\n }\n\n public ngOnChanges(): void {\n this.finalSize = this.size || this.defaultSize;\n }\n\n public ngAfterViewInit(): void {\n if (this.imgSrc != null) {\n return;\n }\n if (this.avatarContainerEleRef) {\n this.avatarContainerEleRef.nativeElement.innerHTML = toSvg(this.name, this.finalSize, { backColor: '#FFF', padding: 0 });\n }\n }\n\n public onImgError(): void {\n this.imgSrc = null;\n this.ngAfterViewInit();\n }\n}\n","<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #avatarContainer class=\"gio-avatar\" [class.rounded]=\"roundedBorder\">\n <img *ngIf=\"imgSrc\" class=\"gio-avatar__img\" [src]=\"imgSrc\" alt=\"Avatar picture\" [width]=\"finalSize\" (error)=\"onImgError()\" />\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GioAvatarComponent } from './gio-avatar.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [GioAvatarComponent],\n exports: [GioAvatarComponent],\n})\nexport class GioAvatarModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-avatar.component';\nexport * from './gio-avatar.module';\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gioBreadcrumbItem]',\n})\nexport class GioBreadcrumbItemDirective {\n constructor(public templateRef: TemplateRef<unknown>) {}\n}\n","/*\n * Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, ContentChildren, QueryList } from '@angular/core';\n\nimport { GioBreadcrumbItemDirective } from './gio-breadcrumb-item.directive';\n\n@Component({\n selector: 'gio-breadcrumb',\n templateUrl: './gio-breadcrumb.component.html',\n styleUrls: ['./gio-breadcrumb.component.scss'],\n})\nexport class GioBreadcrumbComponent {\n @ContentChildren(GioBreadcrumbItemDirective)\n public itemDirectives!: QueryList<GioBreadcrumbItemDirective>;\n}\n","<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-breadcrumb\">\n <ng-container *ngFor=\"let item of itemDirectives; let first = first\">\n <mat-icon *ngIf=\"!first\" svgIcon=\"gio:nav-arrow-right\" class=\"gio-breadcrumb__icon\"></mat-icon>\n <ng-container *ngTemplateOutlet=\"item.templateRef\"></ng-container>\n </ng-container>\n</div>\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioBreadcrumbComponent } from './gio-breadcrumb.component';\nimport { GioBreadcrumbItemDirective } from './gio-breadcrumb-item.directive';\n\n@NgModule({\n imports: [CommonModule, GioIconsModule],\n declarations: [GioBreadcrumbComponent, GioBreadcrumbItemDirective],\n exports: [GioBreadcrumbComponent, GioBreadcrumbItemDirective],\n})\nexport class GioBreadcrumbModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-breadcrumb.module';\nexport * from './gio-breadcrumb.component';\nexport * from './gio-breadcrumb-item.directive';\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NgModule } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@NgModule({\n providers: [{ provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'outline' } }],\n})\nexport class GioMatConfigModule {}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './gio-mat-config.module';\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\nimport { FormlyJsonschema } from '@ngx-formly/core/json-schema';\nimport { cloneDeep, isObject } from 'lodash';\nimport { JSONSchema7 } from 'json-schema';\n\nimport { GioJsonSchema } from './model/GioJsonSchema';\n\n@Component({\n selector: 'gio-form-json-schema',\n template: `<formly-form [fields]=\"fields\" [options]=\"options\" [form]=\"formGroup\" [model]=\"model\"></formly-form>`,\n})\nexport class GioFormJsonSchemaComponent {\n @Input()\n public set jsonSchema(jsonSchema: GioJsonSchema) {\n if (isObject(jsonSchema)) {\n this.fields = [this.toFormlyFieldConfig(jsonSchema)];\n }\n }\n @Input()\n public formGroup: FormGroup = new FormGroup({});\n\n @Input()\n public options: FormlyFormOptions = {};\n\n public model = {};\n\n @Input()\n public set initialValue(initialValue: object) {\n if (initialValue) {\n this.model = cloneDeep(initialValue);\n }\n }\n\n public fields: FormlyFieldConfig[] = [];\n\n constructor(private readonly formlyJsonschema: FormlyJsonschema) {}\n\n private toFormlyFieldConfig(jsonSchema: GioJsonSchema): FormlyFieldConfig {\n return this.formlyJsonschema.toFieldConfig(jsonSchema, {\n map: (mappedField: FormlyFieldConfig, mapSource: JSONSchema7) => {\n // Casting fields into our specific type\n const gioMapSource = mapSource as GioJsonSchema;\n mappedField.props = {\n ...mappedField.props,\n ...(gioMapSource.gioConfig?.banner ? this.getBannerProperties(gioMapSource.gioConfig.banner) : {}),\n };\n return mappedField;\n },\n });\n }\n\n private getBannerProperties(banner: { title: string; text: string } | { text: string }) {\n return {\n bannerText: banner.text,\n bannerTitle: 'title' in banner ? banner.title : undefined,\n };\n }\n}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'gio-fjs-null-type',\n template: ``,\n})\nexport class GioFjsNullTypeComponent extends FieldType {}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'gio-fjs-object-type',\n template: `\n <div>\n <legend *ngIf=\"to.label\">{{ to.label }}</legend>\n <p *ngIf=\"to.description\">{{ to.description }}</p>\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"showError && formControl.errors\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n </div>\n `,\n})\nexport class GioFjsObjectTypeComponent extends FieldType {\n public defaultOptions = {\n defaultValue: {},\n };\n}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Component } from '@angular/core';\nimport { FieldArrayType } from '@ngx-formly/core';\n\n@Component({\n selector: 'gio-fjs-array-type',\n template: `\n <div>\n <legend *ngIf=\"to.label\">{{ to.label }}</legend>\n <p *ngIf=\"to.description\">{{ to.description }}</p>\n\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"showError && formControl.errors\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let field of field.fieldGroup; let i = index\" class=\"row\">\n <formly-field [field]=\"field\"></formly-field>\n <div>\n <button class=\"btn btn-danger\" type=\"button\" (click)=\"remove(i)\">-</button>\n </div>\n </div>\n\n <div>\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"add()\">+</button>\n </div>\n </div>\n `,\n})\nexport class GioFjsArrayTypeComponent extends FieldArrayType {}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport function minItemsValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT have fewer than ${field.props?.minItems} items`;\n}\n\nexport function maxItemsValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT have more than ${field.props?.maxItems} items`;\n}\n\nexport function minLengthValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT be shorter than ${field.props?.minLength} characters`;\n}\n\nexport function maxLengthValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should NOT be longer than ${field.props?.maxLength} characters`;\n}\n\nexport function minValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be >= ${field.props?.min}`;\n}\n\nexport function maxValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be <= ${field.props?.max}`;\n}\n\nexport function multipleOfValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be multiple of ${field.props?.step}`;\n}\n\nexport function exclusiveMinimumValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be > ${field.props?.step}`;\n}\n\nexport function exclusiveMaximumValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be < ${field.props?.step}`;\n}\n\nexport function constValidationMessage(error: unknown, field: FormlyFieldConfig): string {\n return `Should be equal to constant \"${field.props?.const}\"`;\n}\n\nexport function typeValidationMessage({ schemaType }: { schemaType: unknown[] }): string {\n return `Should be \"${schemaType[0]}\".`;\n}\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'gio-form-field-wrapper',\n templateUrl: 'gio-form-field-wrapper.component.html',\n styleUrls: ['gio-form-field-wrapper.component.scss'],\n})\nexport class GioFormFieldWrapperComponent extends FieldWrapper {}\n","<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\">\n <div class=\"banner\">\n <div class=\"banner__icon\"><mat-icon svgIcon=\"gio:info\"></mat-icon></div>\n <div>\n <div class=\"banner__title\">{{ props.bannerTitle }}</div>\n <div class=\"banner__text\">{{ props.bannerText }}</div>\n </div>\n </div>\n <ng-container #fieldComponent></ng-container>\n</div>\n","/*\n * Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nexport function bannerExtension(field: FormlyFieldConfig) {\n if (!field.props || (field.wrappers && field.wrappers.indexOf('gio-with-banner') !== -1)) {\n return;\n }\n\n if (field.props.bannerTitle || field.props.bannerText) {\n // WARNING: 'gio-with-banner' must be placed before field wrappers in order to put banner before mat-form-field if exists\n field.wrappers = ['gio-with-banner', ...(field.wrappers || [])];\n }\n}\n","/*\n * Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\n\nimport { GioIconsModule } from '../gio-icons/gio-icons.module';\n\nimport { GioFjsNullTypeComponent } from './type-component/null-type.component';\nimport { GioFjsObjectTypeComponent } from './type-component/object-type.component';\nimport { GioFjsArrayTypeComponent } from './type-component/array-type.component';\nimport {\n typeValidationMessage,\n minLengthValidationMessage,\n maxLengthValidationMessage,\n minValidationMessage,\n maxValidationMessage,\n multipleOfValidationMessage,\n exclusiveMinimumValidationMessage,\n exclusiveMaximumValidationMessage,\n minItemsValidationMessage,\n maxItemsValidationMessage,\n constValidationMessage,\n} from './util/validation-message.util';\nimport { GioFormJsonSchemaComponent } from './gio-form-json-schema.component';\nimport { GioFormFieldWrapperComponent } from './wrappers/gio-form-field-wrapper.component';\nimport { bannerExtension } from './wrappers/gio-banner-extension';\n\n@NgModule({\n declarations: [\n GioFormJsonSchemaComponent,\n GioFjsNullTypeComponent,\n GioFjsObjectTypeComponent,\n GioFjsArrayTypeComponent,\n GioFormFieldWrapperComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormlyModule.forRoot({\n validationMessages: [\n { name: 'required', message: 'This field is required' },\n { name: 'type', message: typeValidationMessage },\n { name: 'minLength', message: minLengthValidationMessage },\n { name: 'maxLength', message: maxLengthValidationMessage },\n { name: 'min', message: minValidationMessage },\n { name: 'max', message: maxValidationMessage },\n { name: 'multipleOf', message: multipleOfValidationMessage },\n { name: 'exclusiveMinimum', message: exclusiveMinimumValidationMessage },\n { name: 'exclusiveMaximum', message: exclusiveMaximumValidationMessage },\n { name: 'minItems', message: minItemsValidationMessage },\n { name: 'maxItems', message: maxItemsValidationMessage },\n { name: 'uniqueItems', message: 'Should NOT have duplicate items' },\n { name: 'const', message: constValidationMessage },\n ],\n wrappers: [{ name: 'gio-with-banner', component: GioFormFieldWrapperComponent }],\n types: [\n { name: 'null', component: GioFjsNullTypeComponent, wrappers: ['form-field'] },\n { name: 'array', component: GioFjsArrayTypeComponent },\n { name: 'object', component: GioFjsObjectTypeComponent },\n ],\n extensions: [{ name: 'banner', extension: { onPopulate: bannerExtension } }],\n }),\n FormlyMaterialModule,\n GioIconsModule,\n ],\n exports: [GioFormJsonSchemaComponent, FormlyModule],\n})\nexport class GioFormJsonSchemaModule {}\n","/*\n * Copyright (C) 2021 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n * Public API Surface\n */\n\nexport * from './gio-save-bar/gio-save-bar.component';\nexport * from './gio-save-bar/gio-save-bar.module';\nexport * from './gio-save-bar/gio-save-bar.harness';\n\nexport * from './gio-form-tags-input/gio-form-tags-input.component';\nexport * from './gio-form-tags-input/gio-form-tags-input.module';\nexport * from './gio-form-tags-input/gio-form-tags-input.harness';\n\nexport * from './gio-banner/gio-banner.component';\nexport * from './gio-banner/gio-banner.module';\n\nexport * from './gio-confirm-dialog/gio-confirm-dialog.component';\nexport * from './gio-confirm-dialog/gio-confirm-dialog.module';\nexport * from './gio-confirm-dialog/gio-confirm-dialog.harness';\n\nexport * from './gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component';\nexport * from './gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module';\nexport * from './gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness';\n\nexport * from './gio-icons/gio-icons.module';\n\nexport * from './gio-form-headers/gio-form-headers.component';\nexport * from './gio-form-headers/gio-form-headers.module';\nexport * from './gio-form-headers/gio-form-headers.harness';\n\nexport * from './gio-form-file-picker';\n\nexport * from './gio-menu';\nexport * from './gio-submenu';\nexport * from './gio-top-bar';\nexport * from './gio-avatar';\n\nexport * from './gio-breadcrumb';\n\nexport * from './gio-mat-config';\n\nexport * from './gio-form-json-schema/gio-form-json-schema.component';\nexport * from './gio-form-json-schema/gio-form-json-schema.module';\nexport * from './gio-form-json-schema/model/GioJsonSchema';\n","/*\n * Copyright (C) 2021 The Gravitee team (http://gravitee.io)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n * Public API Surface of ui-particles-angular\n */\n\nexport * from './lib/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}